pax_global_header00006660000000000000000000000064150011202460014501gustar00rootroot0000000000000052 comment=b2f7f123b060ccc612b54a094c7a88f57cd5f94e redmine-6.0.5/000077500000000000000000000000001500112024600131345ustar00rootroot00000000000000redmine-6.0.5/.github/000077500000000000000000000000001500112024600144745ustar00rootroot00000000000000redmine-6.0.5/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000011411500112024600202720ustar00rootroot00000000000000 ____________________________________________________________________ Your contributions to Redmine are welcome! Please **open an issue on the [official website]** instead of sending pull requests. Since the development of Redmine is not conducted on GitHub but on the [official website] and core developers are not monitoring the GitHub repo, pull requests might not get reviewed. For more detail about how to contribute, please see the wiki page [Contribute] on the [official website]. [official website]: https://www.redmine.org/ [Contribute]: https://www.redmine.org/projects/redmine/wiki/Contribute redmine-6.0.5/.github/workflows/000077500000000000000000000000001500112024600165315ustar00rootroot00000000000000redmine-6.0.5/.github/workflows/linters.yml000066400000000000000000000020751500112024600207400ustar00rootroot00000000000000name: Lint on: push: jobs: lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2 bundler-cache: true - name: Lint code for consistent style run: bundle exec rubocop --parallel stylelint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '20' - name: Install dependencies run: yarn install - name: Lint CSS and SCSS files run: npx stylelint "app/assets/stylesheets/**/*.css" bundle-audit: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.2' bundler-cache: true - name: Run bundle-audit run: bundle exec bundle audit check --update redmine-6.0.5/.github/workflows/rubyonrails.yml000066400000000000000000000000001500112024600216130ustar00rootroot00000000000000redmine-6.0.5/.github/workflows/tests.yml000066400000000000000000000056711500112024600204270ustar00rootroot00000000000000name: Tests on: push: jobs: tests: name: test ${{matrix.db}} ruby-${{ matrix.ruby }} runs-on: ubuntu-latest strategy: matrix: ruby: ['3.1', '3.2', '3.3'] db: ['postgresql', 'mysql2', 'sqlite3'] fail-fast: false services: postgres: image: postgres:13 env: POSTGRES_DB: redmine_test POSTGRES_USER: root POSTGRES_PASSWORD: root ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 mysql: image: mysql:8.0 env: MYSQL_DATABASE: redmine_test MYSQL_ROOT_PASSWORD: 'root' ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies and configure environment run: | sudo apt-get update sudo apt-get install --yes --quiet ghostscript gsfonts locales bzr cvs sudo locale-gen en_US # for bazaar non ascii test - name: Allow imagemagick to read PDF files run: | echo '' > policy.xml echo '' >> policy.xml echo '' >> policy.xml sudo rm /etc/ImageMagick-6/policy.xml sudo mv policy.xml /etc/ImageMagick-6/policy.xml - if: ${{ matrix.db == 'sqlite3' }} name: Prepare test database for sqlite3 run: | cat > config/database.yml < config/database.yml <= 3.1.0', '< 3.4.0' gem 'rails', '7.2.2.1' gem 'rouge', '~> 4.5' gem 'mini_mime', '~> 1.1.0' gem "actionpack-xml_parser" gem 'roadie-rails', '~> 3.2.0' gem 'marcel' gem 'mail', '~> 2.8.1' gem 'nokogiri', '~> 1.18.3' gem 'i18n', '~> 1.14.1' gem 'rbpdf', '~> 1.21.3' gem 'addressable' gem 'rubyzip', '~> 2.3.0' gem 'propshaft', '~> 1.1.0' gem 'rack', '>= 3.1.3' # Ruby Standard Gems gem 'csv', '~> 3.2.8' gem 'net-imap', '~> 0.4.8' gem 'net-pop', '~> 0.1.2' gem 'net-smtp', '~> 0.4.0' # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :x64_mingw, :mswin] # TOTP-based 2-factor authentication gem 'rotp', '>= 5.0.0' gem 'rqrcode' # HTML pipeline and sanitization gem "html-pipeline", "~> 2.13.2" gem "sanitize", "~> 6.0" # Optional gem for LDAP authentication group :ldap do gem 'net-ldap', '~> 0.17.0' end # Optional gem for exporting the gantt to a PNG file group :minimagick do gem 'mini_magick', '~> 5.0.1' end # Optional CommonMark support, not for JRuby group :common_mark do gem "commonmarker", '~> 0.23.8' gem 'deckar01-task_list', '2.3.2' end # Include database gems for the adapters found in the database # configuration file database_file = File.join(File.dirname(__FILE__), "config/database.yml") if File.exist?(database_file) database_config = File.read(database_file) # Requiring libraries in a Gemfile may cause Bundler warnings or # unexpected behavior, especially if multiple gem versions are available. # So, process database.yml through ERB only if it contains ERB syntax # in the adapter setting. See https://www.redmine.org/issues/41749. if database_config.match?(/^ *adapter: *<%=/) require 'erb' database_config = ERB.new(database_config).result end adapters = database_config.scan(/^ *adapter: *(.*)/).flatten.uniq if adapters.any? adapters.each do |adapter| case adapter.strip when /mysql2/ gem 'mysql2', '~> 0.5.0' gem "with_advisory_lock" when /postgresql/ gem 'pg', '~> 1.5.3' when /sqlite3/ gem 'sqlite3', '~> 1.7.0' when /sqlserver/ gem 'tiny_tds', '~> 2.1.2' gem 'activerecord-sqlserver-adapter', '~> 7.2.0' else warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems") end end else warn("No adapter found in config/database.yml, please configure it first") end else warn("Please configure your config/database.yml first") end group :development, :test do gem 'debug' end group :development do gem 'listen', '~> 3.3' gem 'yard', require: false gem 'svg_sprite', require: false end group :test do gem "rails-dom-testing" gem 'mocha', '>= 2.0.1' gem 'simplecov', '~> 0.22.0', :require => false gem "ffi", platforms: [:mingw, :x64_mingw, :mswin] # For running system tests gem 'puma' gem "capybara", ">= 3.39" gem 'selenium-webdriver', '>= 4.11.0' # RuboCop gem 'rubocop', '~> 1.68.0', require: false gem 'rubocop-performance', '~> 1.22.0', require: false gem 'rubocop-rails', '~> 2.27.0', require: false gem 'bundle-audit', require: false end local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local") if File.exist?(local_gemfile) eval_gemfile local_gemfile end # Load plugins' Gemfiles Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", __FILE__) do |file| eval_gemfile file end redmine-6.0.5/LICENSE.txt000066400000000000000000000016261500112024600147640ustar00rootroot00000000000000Redmine - project management software Copyright (C) Jean-Philippe Lang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. For the full text of the license, please see the `COPYING` file located in the `doc` directory. You can also find the full text of the GPL version 2 at the Free Software Foundation's website at https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html or by writing to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. redmine-6.0.5/README.rdoc000066400000000000000000000003161500112024600147420ustar00rootroot00000000000000= Redmine Redmine is a flexible project management web application written using Ruby on Rails framework. More details can be found in the doc directory or on the official website https://www.redmine.org redmine-6.0.5/Rakefile000077500000000000000000000004231500112024600146030ustar00rootroot00000000000000#!/usr/bin/env rake # Add your own tasks in files placed in lib/tasks ending in .rake, # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require File.expand_path('../config/application', __FILE__) RedmineApp::Application.load_tasks redmine-6.0.5/app/000077500000000000000000000000001500112024600137145ustar00rootroot00000000000000redmine-6.0.5/app/assets/000077500000000000000000000000001500112024600152165ustar00rootroot00000000000000redmine-6.0.5/app/assets/fonts/000077500000000000000000000000001500112024600163475ustar00rootroot00000000000000redmine-6.0.5/app/assets/fonts/NotoSans-Bold.woff2000066400000000000000000006622641500112024600217560ustar00rootroot00000000000000wOF2d´ ¢|dMˆz…œFÝ8`ãX‚, œ  šê\—Ù6 ù46$ù0 Œ‚Ð ‚[ü›Øü¿¾lçv»m`÷,Œ‘Å©?P5~¿Fx·A=}mF“á_ÆhoàÄvRyeéÄ µT_/'A.‘}ho¨)ºi׈毶Jòù›ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿß]:"7›™Ý›Ùr{…;ª,Aì!6‚±%¾ŸDcâûù&ÄXã<£ØH†4Îå¶â l-¸‹†j­ÎP“Ôj5Ô¹šwL4¹µ$Ú.¶U´ u×qݲ`mü|ì=ôÑŠ]µÄòR±FÖËÖ°寍3nmö·Ô·™Üamïa"JNÛ®†&=0UÆd«Üò°íöÝ-#pè XFã#0°}œµÖŸìï|°ÐB³KIÐ>lAe§˜µOñÙôkJǨK_0œã$5<êÃ¥Q°p@²¶\% z檟”&Ô8ï¶]8ÇÂ0vŒ2o O¥Ù Î2ƒ3—ÛvË cN•Ai0Üsé‘Ò•.†–òçëÙ îÞÞíTÐ9Ü;ý»tGeA|0:Ç_é…)ÉÚê^F'”Û÷΀³Èþewr“Â_9äàoXµØM×°žKqÊ1¼#Ïø¬NÀVœkí¡#™If’™drù[¶t*&…òAÐ:gT` ÉEùsl®ìh€íú.õ™~"Ç<9¢$rOkÕ>H a30n³cn c#Œ̢í‘$3Ïa™ø©éeWE4—eªXˆ¬d!¬ef`ĨŸ®XìÊw`À{”O_áý"S&O™X©¨ÈtN Q¬ºÜ¡Æ®fœ‡öÀ,f¤0ÉLXõü7õ ÝÍ'r=©º‰À]#ê9n¢ó—îÚ¾à4.´1¹ÇÓ¶`¢hÉ·áqCßÒw‘¨ÕQû_´6ÈŽ© ˜ä’dQÎÉ⢳œþ˜fšQÀ¡œä/㛼B ¹ Oé%:WO&™tÕÊÈÔi[rp@N™£w»m-ýhÜ£×U˜vwè/tOÛÞ#Õ”Y ‡"’ÇŽ-Ü;gšóàÑ>oI‚@rËÖLvìa‚•Š£»¾³øÌ‚‹Üü#yyí«!ãÓaÐ÷B³¾Þpîð®¾#åP~@ŽNÕ}°Ú¢ïèÛȘ?ôº¸©^¡YRô’ö:r‘ëÑMúBýN¿]p½–¸ZÿÇØ1flDÝj©ÀYà>\ÿî#ƒƒ§f5˜í}5ýzYŸ× `5ÆŒ3fØ+ ý¬§…ßð ·±¨·q‹ WMUT1Ô£)ñ` úƒàRg÷Áëx×µ£­6æ8Çò“ú*B‰Á B‰áW_Iù¬eó8b¯*÷ê…ÿ4¯*Œ¦Ê¼=¦î‡ÙM :ðööm4äý+ÈHfò‡¬. ·ÈcÁFe¬ÁFà‰äOyB¢÷‰LI‚6bð‘LSÊm(ZzN~ŒÆ¡/´8í&¡Ëü[‚‡EtãFóKY& rÑ{ *!T èõÝ…B@.š'Ä¢æ½Ïà;½­ÿYÃú’ù)"ÓŒÃó `Û£¢¨Ó,ÑÒ¬ZÙT‹n‡8Å%nñèýPUñŠøúù«Mc~„4ùJ‡9'ˆ‹ü>:NrÝýy~›î}<|ˆ¢¢âlP¬£7£ &Ö"­U´kWÿ/kæ¦ôlcÁ€eÑ5Ý‚`` b`÷¯ýÛ7nÅõ¡7žù°àÿy~9í}Þ¼‰âA>$˜ÕpK¡¦ð[(3¡"Žx“¹”·›ØŸT¤„Š¿ôHå)}õËRzH#„yþ1ÏìÁüãŸùþ±™ožyžw cž±~¹ýÆ"òv»Û.¢ß»wï2w‹»u2XP#Ǩ´ TÁ@m¬þb}±ÙV¹ã$‚‚”¦ ³lè%:Œýü}¾¤çmìßsg“·?, M Q ”•U²JÕé²l×áU ŸÍ(OJOÜ"""E¤ˆ)"¥H¯ˆ-"E¤)"""ë8©þQcÌX›é)""RD¤‘""RDz""""EDDDDDÄ+"¥ˆH‘"¥)2áb™HªìüóþÄû~Ó.MjÝÌä†B#0 -ÁP(n8 ¥x_l›o3Ÿ¼òæŠÚMâö®<½§ÿ›ø é ‡\¹2…ka“¥ê^8_ ¹žœ7@ÉîG>@°”ãjöõ5®²ªF Ò…ˆùwgf/¥s',Ý¢ñˆç…0„ì¦r­Ç?ß/¶óþ2C!P)À ¡ƒ‰¦&­Åm —‚~úUYÒï/éI£éÙ8¸žsÐÜ; ø¢£¤Hϲj¦œ ’ w±‚DˆÕDŒcÆ£c E§Ò/-Õ´UZ%JiéÔ±¬Ñá+`›*Ú```ΠE“2QQ,¤™ÎhL@t¡ NçÜZW.e.]æ×w‘ÿ·C<öÓçHG|Ù±_b%lçãýTxÇ‹Uw»Ö÷»ï½“iÑR.a—íxеTàäë¾Î›ÉãlwŠIül&¨J¾Îÿ´¥ë@M¤ÀS~7@† i÷î¶Y?(ùÖWÔW”uÕ“ÌóÜïy…þlB£¨›Ñ¯~·'dÈ›ÿûះ6Ð[ù"ÓöÓúöº¯ÓŒŠŒŠŠŽP(…n·›r—™¡õªP_!ÑÁÃþ3K­úõMwÏìž±¤‡¥¼ 2ŒÝ7r €f±Š@¼\þ.‹2D`¬°$³·[fU]Ö¨X˜JT€FU)æGê%ƒú±ïÇZHõRº¹xYÓ%,ÿ!1úòCl[ı÷ŸjZþ÷¡ª«[D‚iÃÒîÆk–[[£0êbŸsŽÿß««î«’àœz.<cb+H*p¡v7´ ›ÝÝÞ`ÿ6¿L€Ž! aþs«ÿn5 @’1C‚\¤ÄºüuÑòÍ}+3³ØxWÏrΜ½!ঠür…Q1¥æóÿsö¿ÉĘD Í äsÀH”‘˜b 3'¹CœÂ-¼ÖÿJ©o½¯ÞZþ^/û{,Æ1¥•¸D?߃®ôÛÿükÇî+W`*ˆ’ý3Q7ž)¨½{ÕÒy}ßE Ϋ“I )[„–M g:4ÀW;þ¬$Ë;áññh&K2 žÿÕfô~ D”ˆ8=È*“¬ˆŽ{%MAÊž6§xPd‹Ö3›G#‘H ÆáQí埿òCýÿK–%›ã!€»œÝKó‹úw¿©ž‡û½çEÞ÷í'xå*h˜‡d‚6ɦtU¥LU•Š•(àDa7äÎÞYHóæ†ÿqÖyþÆ^ÏÖ½[ÿ~è'´Ž,»ÇÚ®]K{·ª_*¿{ªï±¨… J²ñ2™y2µÖM„h±Zêo²¦ç>ŠgZTÜPýB0R¢’K’-‡Ù ÄPUTð_ÔÏßZ²-Üy³Ÿh ÂTT9Ûéâÿÿ¿9ÿÿ{ï#Ì9WUI" ˆd#•í`ƒ}b0bù°u“®î …äí],…‹@/Dzí>ö6øÜg^þÊß÷ó|ü¼ÿàoÖßÓ«`Å$$PÓÛ'ß½ÎÒOÒ°Y’ao@ò̵)Ê4 P×g¾w³fÞݹó±HKï5 )¬¬˜% v²ÔYs¾~Vª&?ÿÍùÿkÍÀ•µfà(íóö(-W«È–$C ÁÒž\qÚ“ŸÉïÌ{ÉÄ€Ò#AŽ Ö:Õsÿh¬ xÜ»¤3ïŸ &I,n(ˆW•Ö4­‹Î÷nYrç3Šb¶¬/+ŠÕGØLK˜M[Þë”ãœëñõ{®•g«È»CyRùãï»Äc°DN­È–ýˆóqSZ h%"!¬´é]ÿ¤Y2܆Z|ÙñôIS¦+òç s¾ónBŠ”,T(0çÇ TaÊÆ!Õ¬ÕËŽ³ò@¡êDszlf!«Þ5¾´zçáÿO=ù÷½¤#c‚µb °€µÅR⢊nÇ‘› „Le~Ò¸{U_@€MúvŸ’'ɦÈáÏ ž*’)ð³Ø„?2¥–m{zryïI6ò櫸È6E–ST(²DµIF’íŒÜ#CJ;`8ÿÐÎ?”)OφÈ2aí@l™4ηq:©9ãtbH#ÖH~+ëub~)m¿˜Ízv¿–Õ”ÊÃ˾Ù~ÿîÓ£ŠXëXË*„‹Vô4©§¹6Ôü&„àø ‰CÊeR+¤åÀóü/ÿÎÌÙé'}TÖÆÿ6/ pé—ÒšB$ å›ÿÿm¦­+D P‡Ôæ¤"*ªt>©’îÍý0£™]Ÿ§¯‘¬Õ¾¿Ö í˜eÒh×XQ¬R®Ç•Ó¦£Óû¸r™šŠ²É}Ëü¤Û;·Ú;ç M˜WÙ9!ðU3=%iƒt!D䘷¦ªzfgfµ?ê;GvÈ!adžu~ÜuÏ:Hr’á=#CSsfÿû,µ~ dŠ2%WE‹ª‰= ÓbG¹†u÷nœû^â=™2“$’“Ô”¤Ê)É]”]…‡L*”:I¹;(©~„äªø!»*:ä?vÏ.z צyù+÷ÿónwË¿lþ™³ï¦1E,Š8p \µbw’=ÉËæåìP‹ä Ju¥ ¥i@⌆çãïýW[±mK0ÏíŽ ÿ“†¥ê³_\S: †1þ—ªÿ¶{ @I(üœK‹Ž\~åFó+ϯ*ñb/‰ÈŸcåÜj± ÈÑPrˆ]H•ÝT®]”k•KyxºLÞ[»´ÿìXtƒvºÍPjµ`¡8¶ø[ïl?¿wܬºå/$^V’uÜ:Ô“+I”Á¹‘“ªâŠÔÿ‘jß›¢ê~ÇnÜ7 ±?Élƒk؇aí3}TÉç± øÿoYJu¦þ-IvÕ"sdļ½yº»J©_CÿÙØë8’CˆLpd”²¡q ÌG˜"[,½ÂƒB(ÃVÏ…p 0„äåó .¾¤~Wb‘•üS«&ñ‚¨Géÿÿ™Zõû^d"3’”X XÝA=ÝÔXªj Õæ?3‘¬ö3ëŒAÞ÷n\0,‘È,f¤**‚¢¤L,/"E&@ BZŠj©ÌaÕ:JÕ݇¥ª^Ô!³MÊ´«³Æ9u×ÕZu­ûµÖžÿ6ó5¿û÷µµÀ"ý€ì²( äÿ–šô—™óª¸nÞIW•Z“™àB!hÿÝïñíÌ—®¸¼{ºg¥Ô&£5s˜ L_€Ø—ì+¡}õ¾Úן@Ç—‹¾AçÊst®?»ç–s'âì9÷@牓—Înè¼q_Ð}#‘É÷-ji$ßw«5$™ÅB¥zx\«òë„,k¿»<ª„¦ÓÔ„.@.Pðº)à †Þ ¾®ã×Àd¥@)"0å(µÞ£jÔâŽ%c%Ù¸1Ö³Íc Çq79œÇƒ&Äe´}\Çãqž×óixÏ‹}…³Ü·„›ù¾bK¿6lç+?CýéL÷O/Ëk¬·uès{ÝøeÒV·mš?®wë5ü¼µþa÷œO»ºõ²<¬'˜0iÊj†@ap…Æ`qx‘D¦PÙ.O*“«5F“Ùb³;ºø†pEJ•Z£Õý²·¬ìœ:­åæ5,î!¨£_—ŒŸÎ`²ü￱Iž6ap½ë tAJ’bròHg„ˆÂ„ÎH,U˜YÙ:Eq´~ùáÚZÏ6Þ,õ&Z Ú/)›uûNñzˉØëªfã3ã¿>ÿ¤€Ýd òŽ75õ…”ÿÕR@Ýw=š!Ÿó¼¤ ˆùؤƒºÏ¦ÊzôUÚÒA(ôŒÃÎ2 Íh“ͶØjÝ®{èµÏ€¸Ëqð\zFÀˆP&vx?jß]ø¥/Ž’Sú&FPÏYø™¯H‰ƒà(¸”‚jAVO-Ž“ÚYï_E¹é®‡ªÒý—±“Å´Ðê‡akqys?ú+P×?‹xøy$¿žRFb£ÊgÏ ù/<‚/q èJ ½lf…^µz÷ý³.„Т¬}øã@RKþè‹&/Ç O¼yßÿ ‡¾Y!@ðÛ†ŽñuÜûÈ)¯Vï:ôjÝ÷ó·TC÷ :^ ]é‡>·ö„Þµ^wòÏY >–ê:ì?’÷Ã÷mðá>×CðFú®“ÿô—Ð÷Vcµ~b±~8©>$¡D3‡Þ¢4ò}׿D»W_},LåW7Þ#íy9ü{{,_õ÷ØË߀ŸhWÏ{çF ®íà†?Û É¸ÎL F;=»ÿwâ†Ùï–¿ü«Ö 'ÑýËügh쥖nî6K¯ªü­ ¸Aû èÒ }¡8*´¿‹T÷Vöåmdüø[ìÒsÈí.ÑGU×£üxt í7,þkÚ‹uÎÃ嬣…Wñ“j•#žŒYú;ƒÔOA†ïÛ²†Ï¦ >çÂá-PÝÖR»Ç£ FÚ+ðÑU†€ÿ½%ªÇ\_‡úc¼lµŽË<¸‰ÜÏù?Ey͵=<ü=uïÀo:ÃÃÃXY œÄ Ÿb.„žâ_ê? ‹gÆÕ´Ê ÞÐU©ô.³O{†‡Ý’{>ÁóÇeXÏ%7ÈÌ£òÁ ãjϯ„°óÛ3vB”&k2{ó“:h»eês…Qfœ ñfj¤ÿ_R gþˆuJG_ˆ‰ü .îh^ÿ`žz¶Ó_|êèȸóI4áj¾A“·ÉÒä°}ô÷ Íã<ñ]µ7¨¾¾œYŽÓ8RSvsÿ…®¾«[þáAxRU§‚[ãôpWɲÜݶђg‚qè4ˆ_ÔݸÇ› |X]ñÅ’_¬AØ'…¢Íٟ锽˜ÑÔ¸WóE‰oº±¥JB¼_àcÓp‚¡h]ï*»I;ŽbÆw—Ož°%îóZ›Í`ÍYچ⭟³.$½DøÏüuh~Å·­Òg“K¦IÜõƒÝH/¥wØúã¬蜠ø…Á˾\yY¼èþ¥—«{õyd÷à†/ã5u_@‰o}›™R·½àX!úU{rñnïÕÓ³½Ž&ÃǹÛû?ïæ]mɸ÷þÌ«°D*ÊâBÿ-!¿9±xmW®# è / èƒý\³­ÎA –yÞ·_1ëó;ŽKÓ,È7Ÿ¬›êh¸çó²9”®ùC±÷`з Rª þx–ß"Ëï¬;åÛÚOl€ [žÙvØFí Û8œÏÑ›-ÜsºV Æ~á Ô<÷´ùcoF²O^ PÕÙh­Ó·BW6 M¬Ìßäã}gÁd0°‚‡§æhhƒa„'mxŸ*Å«h¶t|óÌÿŠ·Ü9¸±êyž{þe‘¯?'´=¼h¢ ó‡ÞÛÆë ¹6ëAÃÝFéiGC˹ÞÓ…vƒè" Íç;Vò€Ý]©b6bûÆfÿeM¹›ÿ5‘”…‚¶æ2ñ4ŠWž7dÿ›Ï¡÷¬ V?4.ô¤“ ´[§ÖdTxh ¡Â¡BÁä ¿¸ò-›É²˸òºÇ{úNü’)tâþœŒhÏÏ:†·â'ð‹&ú§ÿbŠ~.¶â;…Áj@Í«êÌðƒ ÇófóÿûrµòówuÌVÄâh<¸i0^W^Rà V}´âÛØÌKp!Ytqx<Ï’nòöŽRÚÍïLo„—úï]‘󪙸àá‘ëù§þî,Ÿ~:W=Ö3k”`ºóí“~Œ›n½Ðç5jÕpÝbø_ƒ{çñ>*—UÏ„k¦’²ôì‘«ö´÷ãy®œ+…Ÿ¨±ϲ«ýÍ"¤kéW‘ø\ÿx+]Ìø¬žÆ`þæ–ÐûÓ‡›úS9y²hPÒ’ þAP/“ç5CøK9 y¼þ…À¹~øÖ˜SOÆö„¼×ôWè+|?™(¯6+ÿ;-÷W¬ UVÔ_tÌô9¶†å\j6â.çj [ñ¼x†;X¸Ïe¢û؇½.¶oÞþÆØôë»­Œb9M.Ñ$Т\ÙJê´Å‚»ô“§JÍÓm&VÚ;ÂQ‘«êÁUöQ­r¯ßzæá̪+ïúá†Ì5suáÇAs/©ü×÷—ãgbþìÛ/˜x,| [Q»íkx‡©9>•Yž^§àc‚&ªF‰Ñ\Rn¯ÁCtBþ@S+·ÉãGwÈUÍO-EóÛœ}B‚sZ̹Ñð¿Šïý}î\ÙUá0m!6ÐõRþ÷ :ÍÞwÝ‘…ÐW¿‹!¾ú}ßïñeÿØA; M)¾Ö ŠüÓSr¾†’丯à«zpŽÇ$«sú ?±3 D¸ 4d2éûTñ‰!ƒFû˜… Æb²Q?Ö=;”ßÁQÒ\ (ÍMŠÒÜ¥(ÍCŠÒ”R”¦’"‡§Ü ^áNó÷Ñ-výŒ 8[[ŠrÚ¾þ§Â›ÂYðŠeTâ_øÊ)çüüºKa÷÷t B@_TÑÅ[ %ד;õgIV÷TšäîÅÏÒµ ñ×]õ¡Mí?ú«¦Bˆ™Zêóÿ°ûÖ†P8Œ€<§[>è4cnˆU&a±÷âÀ1îêø!Kw¸ÜJöê©›¸"Ľü ˜æž_뿼Bî<®Æ*azª¼»’gu-]£÷ð-6R:šéƒT¬€ *¢ …–¨è@ =ôeH 2æ°aËH ÇLE S‘$R¦(R¨ÐÒà*† øŠ%±â©¡VXd4Ë9=f¤ž0D¤ž2AÏØI†>2E¶L¦b¢d:·Î™Ïí3]s×̔՜™¹ú<ç&IÖóð,•MQŠ"N‰ªV¥ÕT8ý¨‰JTP¥Tš‚+½Ò…¨¬"*¬ ªJÑE.Šª¹Ú”R=Õ¯ôš¨ie×\-‹X¬ZSq±kOå ܰ„…%Ô¿dY¯—ò2ÒÛ¥±Lôq]ZÖ]z«N­àeÙumUøâz´ª­·W“õ×åÕã‡ëþšñËõy­Ûd}[6]?ÇfëßŵùÖ²€²Üº"ü«m,"±Þ¦"b›m±•œ¸Áç¤í¸ñÎÜ®›é¬Mß%îÞ?w“q³ÉÎÙ”Mqߦíq÷7àÄ «}¼iÀEõºp ›CX'uáÒDt]§¡Ýº‚ý¼iÜì¡îæv¿ï! úaaØO›ÅƒþÔlÞö÷Þ磣×ÚÑgO?ëó¢/ˆ}QbÔ—äØ¾¢Ä÷U†Õ׌ÜÒ÷"ø ú’„’õK‰%y£´JÍú;ÜɱµXtkÔÝó–î>ÀBÿ~=<?{”"%J•)P¡R•sÌ5ßK¬µÑV;íuÚYg])·LÄîùÁ}Opè8$ñ  1W¯L@…z †-³ÝmwÎ&÷_@)©¨‹|T,­xf6%*U©Q«N½FMš‡öÚjõMkÖ¨iݨƒl7[°ƒi-µJ„56ˆ³Õµ^Þã€t‡\’ãµn¨sK½{tÐ{¤¯'°={‘Ù‘#ìÌ+¹bWîØ{òÄÞÔØ—ÏÀþüÄâ@Áp¤P-ÇÒ²¢øe¥Oq¹j¾zȲk±°ÝØŒ-i[ý£!ÛÇŽf±³Õô´›]½cw?°§_wØÛyìsÝÅyŸ¼87MÈ4Áñ NNÜàÔ¦íNO™§ÎÏ×äÂôÄ¥™\žÍ+K x³$ðÃ:Œÿ­£øqIâÎ’ÂOë$~^Ò¿¬3aįëB¡ƒDÜœ€H&#¢XÆD™Lˆa߈˜2OMHÌ™çf5óÂÄq‰$qE¦Q+³¨û¥Ìãú¼>‹h™·fÿÍ=ÙFû¼/‡xlÈ1:çÆ¢—”£oH%ç¾Tã=]‰º_¾³k16Ïu=&çuoÄÚìj8ÿÆ•iJCŠP¢26IͰÉH›Ŧi´éHÃf l&Ž÷n.ˆrý4t³QvÛÄkc¶YÇ÷l‹.=ÛªßÀ&l¹çI¤í“ ûÓ+Z÷—[¬£‡ýí#‹ëäaá˜V×Û:öúãØÞ@{ö6ÏKn Ð @AÈE¥xªŒ3Ñýjœ7ªRÁ¨Î £f˸”w‡1‘2ilÎW†±=ß$}ìHSß9v¥e©ü’â1.Y7æÓq,ÿÇÓÓ¨I¸Q›>F]úä 0ê3Èhȃ’ƒšáFcF´Œ2š2ÆhNŒÑ’¸a´f\6Œ¶¤26’flf³ÁÉÖal%=ÛÇvv2v“ap³g{Ù—ýc? `;,@£Cð Œçt˜5T`>â À’!„V’Âÿ Qµ„˜;7BÈEþx×¾j*6Ñ 61H¼ŸK޼§rôM¦cï$ù>©/X¤å&Òê‹0)›âËÖÙ±ÄúØH(ë–Í1ØÐ›Úúˆ>eRó€-Þ hIŸ«ï‘êç½Ö}éQmi×S%Ó 6øá6rÃmÚ‰!*¨:‚ÜÈÐBvp ±0õ-@“X7çá,Ǧqß zóNõŸ 3ÂYÜF„0g8Å$ǽ±E_ÍÀ˜Ú ©Ÿ“%"µýHF”ÙØ¼ãžîë*sô«òšÄ¼MñeÜLA¡Ã+™IÆr ÖýœS9,RÐÙUýdømíÐG7 YОõŠ$ïlpLðó0ú•›_š–ÉŒ\¤1,6rßV×ä¯@‚LH!Ü´Ê5,qªÇ{ÔˆF ¤Ï¥ ÂÏ’˜N´‚ÄLô¾D ºÖÊd•Ý"YQ‘½3,户#Ð3‚k[!ÑoÛ.¨Æ3S/Òo‡¤zÅo2•Ðõˆ¹o¶qØzÔøcóYÐ÷,l÷ÕŽçì!¯MZÚ²¿EÁÊVµ†µ­‡kÚØ&ö²-ìÛ1îkNòõšºÙ 5l8dp6UdýÒß º¤Ñph82œÙî.bÞq™AiPW‡ÍÆŸ;ôœ+à ŽÁ¦x™Aoa¢CõOÔdŒÃUpT}It 6@߸Vwèµ£0îP‚•a*ñœfCæCs2#l(zÅkÁGÍ6½ãñò‹¿ú´z]Ò|¾ÿú§/8Ü¡vr\þœ 5èÁ¿mÀvÙH>Þ(4%Æ9vjÔõ_²êdï}­yoS¨2où6îàÑ‹Eb×ñVž*7y˜%Ƚ&žÇ×£Ý*ªƒa§·-¿˜ÅG|Uª*_È‚ñ“+™ðIL ezöj¾®/AŽ“b¹•Û˜v“—“È$6IM “ʘŒvim&Ä„š<éË`†AÍû|Èd¦ÁÍl²œÕldÌRšÕf­©L½6ÞF Ÿ¼Ã¾Ù¾LaªÖŠTëµQ›Öü;µWuh>2Ÿ˜eÖ±è(Èì2_Á f5ඨ¥¸“ŠT®¢U¬xU*E¹NÒ™ÎèÝÉAqw*ÉÔ’i&Óy GÂv2ÿK½‚\Óš×g-½Xà@ù1©‡bª+`Eóõß«¥@v5®ýÔŒ¦r9ÁÖ/ÏÏã̤œ(ÞPà צ]‡Îèúè#øSÍße ÿ®c¥ßsV9›Õ§sX“l¶ÅVÛÊ)vÚe·=öÚg¿ŽÄѳƒ¢ƒŽ4ÊK£ÉxÍZ¢µ„ÒvOíÁ8Ï¥{/Ý1uq7¿º×S,u½—T¹ã I¸]sûpø¯‰€×ûRð•…ß²Yyx‹wT€ßµÛ|`»J>ò¹ªöúB‚Jò•#êùÖ Í7ð³ã:YÌþy ç]”¥ËZ• Œ²ÅiðÛ(Ë£mÁ}s›ÎùÅpEm Њ‹øÙq¿PaÅ•šÓö.›ßUTžëZÍVRBxíºmþÓÃÙØ“º¼UO/½ÝHo¼ß»ÞÛÖh¿õ°¥Ø Æàs8 ¸ˆ¿ñ.¥Ë¡í•+A–«Ä@@¦4¶PÊc¯TÆQ©·Ú8G˜ñï®ä;]5yAS0;rœ]s(÷9À¨‚§šB)‚")Š¢«b¦išb%QÊ®Œ(‹Š³’é¬t^:•E{˧ö=ýèàüÚuìà;Ëûÿº)¿øãTI!ä÷Zw2Þw=Ës¿õ×ÀÝûU¸GU¾<9ÊðA8Ý/q&ÎD!×ꤷ,hŸ[õÙ¯…¯þÝ­'„Wé}Ÿ*u­Z†‡S×%™™JÒÍO3ÕÖïÁÜíý|ž˜ÉžšÅš==Û y–p¯àU´Žvt ]` =蕾¡ÐA a˜Ê~  „S7!QˆA8IHáNA2G²ç’¾dì_Ö8“7y~mÀÌ”÷·öB|¤ôAçê~œ®ŽúÁ5çm JVíHûN áG Ï¡ÃÁ:ñ¯8T•Àª£ e Îˆi¢)™Í¶ ‡žÉÙBzg¢â§ 9ï…÷q«Ûø>?³¹Où¶îßýÎEiùîêtp¾{SÎÇ]©í“Ê®ªRÇLÊ›Xù²ßžÆ¾æÞ4÷]O¥_Âéàf:úotÓÉ9 ð=¨°@¢hä $Áæ9N¢‘ç‘Æ «PÆ?ä?hÂÏ)’ž‹¼‚žË¼‡“WùJm>Æ•ÆdâO²ñ™›žBáƒFÏË×iG8 ¸Ä‰oá8 õ¯Ñâ¸ð ïR.ü" Tˆ-/D Z©”ByK)Uܪ.³åȉ+ éoÅ¡ÃÅŸ)xœmØ•”óZ/„éòÆŸ«³þºàb…ضï#®Á¿‘ÙÈé-#…Èm9)ë:…±µ™£0õ N¬¢xö Û·Ûfçÿ>¬ðŸ&ä+€~EqƒÏ# áóUĸ¡qΠ@Í•¼ê `±Âf³r¢a+[N§=ë5þûEª—~¬l¨Uööj~­÷ý»æÚ Mê/ç4ˆu'´åñþÚÑ.íù’tt¶µ›A­_ÑÄg˜M Ýì^q:‚'ILß3ŽV*àÞêX£ñF2õ|:ú~AùKm ­í€´öö'œ;QÕÎö+IfS°º AP4Ãg>C®` Át…fçJéª eOû2ƒ¥VcÂB}( RÜü\ÐMèɆä_9èÛÆY2Û=è–"ÁIß(JqJ݉güu/ʼx+„{ú›§ë¶ƒl‚:ôãlO'Œ¾a ÊQ‘*T+¦;;[GZ’]üjRçN´ç;9à<|'&C$š–^tTâþ鸮Õkm„Yýÿ| >Mi~­Ñ'-‡Xà@ùƒºsè›&Ø¥Rqîñ^|UÇ*‰J®:µ…‚Få…Þ›*@ °® ·êÞ·Jøýâ‘í ¡·Xu‡~oâ±h{OÈ£„çÅ>f¨3º`U«D&<º‹Í {£Lwo˜á_ø9>~{N­þWno\ÄR‡’ÿ>=#JsF)ÚÛvƨ­Ú~å–ül·x¯â:=œ‰ÎÄgÒ3Å™Ê^]ðpf<³!gè™§|¬pÝ×C%+]Ù*T¹ªÕ¨ö^%tÖ«akr®×{-ê› ®‘Ĉ®§X½>ÛÜØþ$n’Åîñ€‡ê#‹\ß>fŽ¥×u‚Á¿Ý¿¯§'¯ én’Š)±FzÔ“ò*éYuµÔÕ@#½i¦½6U}éÇ+Æ›hÊ·TCË‹wÙ[Þö®yÉÇ›E±µc©F¡QiQcÓ }y™{’lOé|W8#FM УáJ«Ó®Tí ›ˆ†®SÙ§ïýpÌœtÚY/®}iBöP¸|ö]uÃí3ÊŸÔGw]»ç¡.<9s~÷ÂßÁD„E]fí³z…CzR²žlrä9ø+;ÙËÁ¥øshòäH7ËÉ<ŒòúöùôÇõçêÏMü¹Md=?ßM<©d’K1•ÔÒ¼Ç-»zWÓ¿yùD7ë£5IuyÍtkÿÌW½Ùù̲±‰ÆÝã&4¹©Mof³›ÓÜæ·8$€84€p×Ç1àí@‡ú®c· Hôc?Épz•ïR?wýŒ_ ÝG·ºÛƒ-9ðÖ³^Wæ«Øx…ñLd Ó˜Á[¼ –H{«Æ»ÌcÁ,õ\|.=Wœ«Îsã¹í{蹇}ä0ßó'9ÍY.ö i”ïG®rƒÛÜã!yÂï¼àïûíQh1"kBÒ€¬Ë†ljLX²#{r ‡Ú#í‰V¦UjÕZ­Ö\kúÖ¥½ÒÞ€)~¹•ˆD%-I],­'þy7‘6#9)JEjÒ”ŽôåE^gU¦2—OY*VqJP²R•®Le+G¹ÊW!¬Ð›tÜ«~ªÓèô:Pëܺkõj@Cz÷x4¦ }Ô'Í3?ý¶JWéö(#½ÓkôÞ*é=üLˆºo9'Fª¤o“uÚŠ–èÆžm¡‚ŒÔ[âM0·ŽF-?Úq1gšGœAýÒ[1|xzF1š1l‹¡• 6– UTœU©\sô‘”oø¦³`ØkјkÒÃÁP@01å·§ç31Xz<»—žòÌIzŽU¹Q…=£i,''>ÕrßN#)±¸ŸvCç{PŽ7øŒÚ„'+••®¦õ¸Ñ¡§Èg«tɨ“QÖ`Eü§8jήT7™Di­8)n’–g§hC°•Xë*ͯ‹ÎÆù0¼ß¬$ñ4é›3•Ì^Í,€91Z¤öŠ•úíkyóëÙÛ ‡ð®i¯OàSaçô[˜U/î܄ڤZ•×ÔûX΄^À¢Æf …Æ~ì$‰ÅL¡Ø¾mĸV§ú¸&Z?U¤¾rªþ<ýÌëÐÂ\ð!´[$¹åÔ¢±è- ¶¸-×ð"€îCxB%H³+rÝkIÞŒ)ç®{=‰_f‰ñ&³x‡÷îí\‡òÖA'® ŠÆ JH i!3ôßÊ]A7ìç[Žl_Åq„Ýg¦Épw‡ÂÝ9NF’Œ<™ÓÆGr®ëÓ8ôÐ;ÜŽkñJ@Br'1{ÐêQž$/%y–z\Ê–te #yƒÍ1“ù’¬"( -lc<`‘Å‹a)¬€UW aŒÀ(ìA„q$‘F”QEmô0Ä“94f5L.{á©=ýˆ}%DcíÐVð¢â芟ÎK^+ñ iAacÆl¶Fš—2}&J%±.!‚V…Zqs²ùt)üDK k-¯ìôËjˆ”ˆfvÑ n¢ï=.8Ó‚êE‰rxq ñ9¤ÂÍÌ›‰ùÊ:?“k”í}tÖaZ’]è™±1yž—7óA„Í:¸Ô±ÐµÀ:×~НÀ›Y5úT}…쨟(‡Ë2ŠX®±wº^±«üJÙ€DOÑ’:Ét(l]`/‰-rU¶Cñ®Âè+¹zëzuÃ5Gt)å±;ò _AÔCAØ[Rƒ´x–ÐĤÈ5»€Ÿø‘ÒbR {¤è¾’ë™yõ‚^Ðr4XJN!©WzéÃŧmZ䥮¨ïZ xƒWôž½°„ààI½¢Åç½ÃåóÅÑN’ì Ê:4¶À–•½àv©C¸„Gë»B§7‚úô½A}ú¡'>Ë{ú'?eGà$Ç+ŽãZzM³79õ.ÆZ¢TœŽÖ…1ƤÝGêóà…ž÷0§P{¨cî÷°AâÅ_[‹í¨e”zåBÙݳƒªgɺ #!´J[q°;¢½‡ERؼûðœíc!ï“JG˵Ê9Oýäþ#f³}l¨óo,Ê\eqêic¨õÄöƒ¡Ti¶º´Î€h´ˆh]ŒÜ•Nqò‰ÔPJ‹#~¤`ÄDÉ©ˆ=é I}ŠIßшØ~Ç’£ÝµM·?‘+Bë黆Eö†ìÀš´‚çÍ,*“bôd_(¶ˆ¢„§ç&©õ} Ã-6’Å "¶ÅWO9Äzúg ƒ¶¿¼ˆSw#[ñ¹q?ÕpWÇ­ø<ÆMSw¹oÅç>|ÖÏV¤»çàoCòaÝL} #(å³Ùfip€i@Y#+|Dƒ\9´—¯]}•GduYYÔ¿D`ZiÉ-c'j˜OõˆsÊ.èå„ôüƒBó‘Ú6ÊXŒ9šfɱ:Ä Ë 1ÈÙ[û™B;[¾›­Æºæ°!Š +Æ:´ í¡©ÕíLÓˆ&„MGÀ(ˆö'ÇA#­;|!óû–4šâH\ôâŽ&&ì‘Ú¿‹÷!´$ˆÚvŠHvÎeìÄ¿"~¢¥´·'›¶Ñ†^¦[§ÆIQ î‘>3óVþ[ë j%³“aÚ¶¦/ø„ºoJVZ顤!j¡²¾ÊïaÓ-Xá~MLé$IKÁÕî\O å¸?¢&ûÌÝYRö*Ý& QÇp¥ï×]U9:ÈÀHͽèA óË{˜ê×È>1—£B´ëz:²VVž}ÂGëA*Œn‡ÐÚ,T¸,vPÀ”)®Sš– ÀŽz$x3°Û-,‘—!FSÊžôTÒœ,å0Ò6Ñ|œœ†H•ª*m‰(›•&‘°-cfiŒÓlʾÝ[¡Íãqˆ¹‚¥"¤–uJ³^i÷™ÃφTGßø«à'ó(Õ17 5 áYF Ë.±E/óÜDúãld6"·g3Ü.r›:Ñ2Wèm …¦'È)jp•@«ÚÈAUßÞÆ> ”j˜b£NÑô[lÚ}±ŠXÑÄÛ#ªÁÕ$Y±¾¢b°…ƒ°hòо£™IQÊ6y-´GJä8Å.Ò² 4"!ˆa{N®ûœP2 ìݰ¥›Â.D«³ú3È\ã ˆmzùçŸ X!˜Þ4\¯Ã+ø£yºÊú—G4^>®±1‰Œ¾_F8PYãùËÆa¨•0šm¥x¨¢ <˨Ñ㔞<?l'fÉ4xÜb9¥×J§$kR¥àrø2é£+â~ƒ‚ß±7äUøÕ7B6Us…; ÜCXý̼Or*ç_Äuž¿mŒÉå \gøI¦°mÖAw÷ëkO1ñ%8¯ÒUx@Yßõ¡F)TœÈÉ_¢„ŠX¼¦‘¢€UôØùÀ¦¾V9~ŽÓßIŒ²}3½ Bá €°¡Q¤+5xÑf >&q;`µ¢³‚ò΢Œ´´™J–„º¯Â Øl„.g‚ˆR«äˆÙˆŒù° ò3–Ó ‘ùLE"X„‹nÕ2´ƒÀ“¡YÞ[È••,àÛÒ­tìeþ‚¾ Z‡@ò…ëÌ*¦] zMôÆ 8 Oï‰ç–Þ™¹Tñ„€Û©¸iñ¬xA¢,m¨ØhÄg:=Ø,v§œL5™FíƒqCïmg«oÅ(Ñ5ÝPR¸ëºó«ÜÓMeiŽ|§óƒh}èç#êùjÆUf|%FÎ#‡»ª¨7W)>c˜>>à µÇ^¾º;&.FÍ&Fw?4ø­àtÇØL|$ÀW uÆÀsv3éÐcùƒ§Ýæ‹à?Š*é¶Îª‹cW¢W#KtñlŽ‘Qõ‹ü"ÉÕNe—Ëf®£“ꬲ4 ÆO:™zæþËC©tæ¯Âù‘ê¯-Ãì²ZÅe!R—ð+„^©•9ˆCìÊe…ƒ±„_…È1Γ òóNÍÑë7r]½ @Þ¬¡zWc¯‰úXŸjþãÏKõÙýnk«Ö%dÉnÔYÕ·A˜ü£í6ZýjøúÓV`±QVrë£my§mïçç5Á_Ñ_ñ_Õ_é_…kZ\Þ6ã_Û_„­Ð¿žæk÷-ØÂþü|hÉ–nÙVhåVmÖn=øk¶±§ÚÄoÚ{[´oñµ­ØE²uÛ˜tÛ4–µÞ±=;°CWÄ¢¾jãŽ.e®—¯^éR_t·—ÖevA.×?¢]¹nÏügóxÞóî%‹[Ê2–³¢U¬fMëXß^–ØõjS›çj>mÙ±× Ü©Þ™m/(Nçv~^_H.ä§š ý¸_/à ÷Åu÷ŽIôÐÚíw=Öý±?}ußó½Ô€0©nÖ‘”M³þQµt«wû ú[ŸõþÕl)÷ÊÀâ  ÚÚŒ•Û£:£Mè}ﻃ7nÑ%é.HAª¾ÍÖÀþt÷¶ý@•EáòÁ÷ã}<Œä(Œò:ŒÓém{RöPÃ->¹ª^Lúøv̨Ή¯9É× ïó¦³üÄÛñ½ÔTÞÀޘţîê½Ã¹îÍ\2Ù•ÒS_jóÚÍ—Ð¥ë²èW—7Þt¿wüÖ_=âÑéIõЫ§z»˜\Ó‡Nr¯þT2ÓdæÉ|âí‰æ5žÞë}ý¢Ìxîq W¼¶=Sîû‹Ü;d¡åÄNÜ$Lò¤ÚÑ–“9Ù“3¹“?…9ÿ1*A5è)šŸrtöªs5zDaÔ^Oï Ìм›1‡„û8Ÿ*¼„Öϳ>[³;s4ßnøê¿æÏ"®•….eÑp÷Œµµ¶×îâ-Á¿`:0‹ƒ‘_+ÿ DTM¯íÅ žœÂŽ/G9qÅ'%1k+RJOF&9Ùµ¹dO‘^è91´v¦Ã.L½ôez9¾ÿ-ÌR«E´ÖñuÛ¢wÛôHi7êÌ8)«ÓJ:«´óo—uÑeå]uOUi«nøRìØØ›ä¤¹º­¥ßÙCl+åß ¸ö×-`®J¿†¹)Wøê*ÃÄ£Äb´c$Kc¬††)B˜ª¦i‚éš ÌÐ\+fjm˜/g`òˆ×ǬR xFªÁq4ÃŒ!]ó~·¢É¦@2Í, Í1‡2óÝÍ“îõoxÅ:¾÷ºMüb‹ã[Ÿò¯þ¿÷ˆ¥zb'ßôÔn~¨Ç~k.œ !·H!g¥œŠÖÙd+'û¸Ú甼üòÓ§€ô-¸DýJÔÁi6baìm€w$Nˆd)Ž }"dÉž(yˆƒBR7h”Iרg2ô˜RC&¦Â´•![µ:­ØKzÚÖÙ¥=œ¥³tˆ¯[뉢õlÁP«}µó\ry&QqNI* åª:<ífjÀìÂñ.‡ŽO:.îx‰ñ¬HÏáó§•ñ‚£Éaê3n +aïUñÝÿ‰€ðý½Ð¸¢Q£ñAãÏ€n\æypXäbl„FlQxD×RbŠ ¯ Úž>A{ÄÓghOxúíO_“úƒÔŸ¸~‘ú—Ô½ßéMnä.V$X%N˜€µf,+%b)3‘ ‰T·çá˜Ù3OèŒs0"?&¥+]˜´¦/}QPE]ÒFR˜A’™[ÈCºèT2b,c^2a*SÞ2Ãմ/4d’,Q³„%V[06À¢Kld“qb+ÛFƒ_$¼¢ˆ ¯èbÁÅ/^7ìcÎ.§¼˜ 90ß ¬N¥p*_úܘ0œtOKGŸx”ÆÇ¼,Ë^òoí%Ì+€h V#lF …hŠÊI¯¢v¬Ú¡ôµ"l$ŠöRSŠö“^}ë†h<µõ¢èD“¨¯£¦@4•ò†0j:D36£fA4{1:©áˆ¸âúLdQÐÅmÆ¿Z\«Ã½ë¸Ôˆ_·°® »îà_+‘!²£¸Ö†{ív ëc_'®=îçuq½ƒ²4µ`:{AV?¶ ïåÇëÚé+ö„4\Oï^¯—moëÏ­úœúˆw£Øö yŸaz°GÙ×&ì>n’S?šîgpl ¦TõÛ& n ¦7Ø6CeÓÐ*Õ}DH‹`úˆàþ€é3¼[Ó7°‰áÐLZ/ùßÝü•› ÷ZâØÐ6°!Ôü˜„ÜÿÌxþTe¨¹ÿŸñ8üXµ­}(ÊP¢Lq&¾ÃųV´#„)cß×±²õ}1Ž—ÄæG ðS±~&?—Ì/ÅúµX¿‘ßÉÞ$ñG‰m¢A…Ù´:aá6'‰-$¶e‰•X>k޵–Øhm[ óIl'±ˆõOø—‚íX›ü6Ð0bí,k»H³«í.Öbí¥`Ãcœì+Öþb(ÖA’8Xb‡T%Th#ÈÕarr¸’mUžm%ÛEö²v´äF)ÆŠœŒ–½1R[‚ƒë8b¯x•êPÉa‰}”¬"¹ÓÄš (HæL±ÎëÙ;WJÅš$ÈÃ…%EŠR¬8%JºŒÄ.WogåáÊ’çTu5Y»Fr×ÊÎur4EŒOˆñIIÜ$±›KZ´¤UkÚ´5ìÜ.GwÈÝòvW #ݺӣ§{ÉÞ}Rz@¬‡Äø®<*kIîñ’ =I‰>—ØÓ%_šéYJòµr|Sò­…þŽ¢|/™WÄš)‰Yû¿l~Ûë‚™-‹ÿ‹àMEù›€þ®(¯"?K^FÞf>V¾v~NÿAbA!!ÈÈ** ŽÎÀ`b6 ›ƒSÄùO×q²U_bmD41]Â2e,9[ÁQrU<5_#Ð u"½Ø 1’ËLä¦ 3cs ÓåR¾2_·î亂[K++{?X¶ g°Cˆ+Ô1¬Ë}gzÈYÉ9*è\búŠW¹öÆ@rH²üëŠ9¶¼Fv¾W>r-zë¶¾l_$Yß(Ý¥lO9Œ,æíP‚bÉîjvÃîg·ì¡>;¶wY{íŽPMÛñ î?(:<ì¥;UµrgåL# ž¿ªžÚ•ÖŸ,õ™¥àÓ¢ñ]z—VÇ«!~Ë„ù3?Øu­º%ÿ Ñ7°]UQ»ªA¼b½Z†Ú˜•VÚÄk&ûç£às@ØËyUåÎþþ|懼À„Œ£à(du]„ÏB] ŽiÇtŠãô±œÑ‹ðÐ[`‰éñf•˜Ì`‚:þ’ b‚ˆ ˆ×˜0Ð]f î±b—¥‰Ë¶·Á,EQð×SždÉxUúlº×„º7çÞréÁ{äÆŽIäb@Ü꜖5´ÓôÿœÚ“ Á“F+¹ºË }Já‘Q¥¬ÏF¸8›³s(­§2ÓÙ¼íäãlþfàSÎÖ'žˆõBÞ$!µI”)Ñÿ‚ÅÉEq Ì êH׊(ªð;çùdù†+˜¤O ¥L9þ7Ö›€¿Ñ`‚™’ XÌN¶ɬå'Êj‰·›Àmæà)ß•ëI¶°0…‡ÂCÁ£0 X(´ú› o¸ˆù,ty˜qõàç~ùn»yðÙºßvðåºßuðñHA-GrC$¾—+ý´£ìè?;º·¦Uи%ÉQ”((³DÙu&3{NY/E*¶§T€…‹‹›åZMk#™3™Í<Á+‚T™›RSJTÂCáÃßg<šW­”’$„åe´ª®üô0-e©Mr3ä½ûó™<-õUIK©BJk²‘’«e†¥/Kt·©( 7Dh†G–°YÛ.;®S†&Šþh%f ÇüØMO }2·¹TÕÓ[?šxªxësÏ2A=½mi$aוý£ªmW•ßTßîÊ´›Š-’Ì_IB¼õÈ‹§xvt]Ò£ªL{R™ÖYõô°žžEÍŒ—Þƒ`ª*¦‹Ú/&dóa'Q—6Ç×! Á±¯ËÍúgÂh¨Ù…ÉÕq¢1\§‡/=<< שˆQÓh1<úm«¸ú¥ˆŒ}õu4"‚3–3–3¶Û¶©Á*Ú)Ü#üÈë"‡™/QMÒdIÓ‹§î1qG£ò‹€ˆXdϲÊu4žŠÑPöšIuèâ=¥-骂Él ,»6i˜ÓƽáÖåŽî¦á Ðí)iiŒB§oFd dפ8Ó\KYÖ¬ ª²Ò*«¬RÊ+­¢¥P£©©—]©v×hOkD[všHi™è¸¸¹¸)Ë2‘´ÌFÃFƒJ ã¡Ô +ãÐ¥IÞ¬J˜K˜Kö†{£•l @(ÚÌ€… @¸y¸y¸ŸJ·@Z“è°ô‘ÿ׺Z¦,KeV1U9U9ª~3g†ªvæüÊ^ $0<<<<<<¦^„žÒ‹ç†[7¤Ø¹!È–Ø Y¶¤nˆ³%wC¢-¥ 5ŠUù„ó„'<á O2M¦œÉÛÑ5§kNל®9(@ ÒU-õÊ×Fz1mœT,.|;qÈ®Ón^2¾É¼Ó¾QÙì´ÿÐåÀéà''O5ÔuÖùeª©ºò±r1%ɶf­bŸP#¢†,&”­&5’9ÒjäÙȳ‘g#½nP×—;ÎŽTh~4² [;Hí@[`ž)#{APÈBqêÙzúß6Rž4Ïe‹åï¨pÁFå a xJŠf½y¸ÓAoÝ ³¶Œ~Í"S˜iý$ãÂL´ Ë,ÈúåR)Ø‹pøÆMbaœzý*°~’“A•ßÍr>úÑë3‘È~è°ràјÈ7½&rÅýzÍø‡,Qæˆr0GÔ‘°¦“_Ÿµ_/7r;ø¹›’ûùÿJÃ|ï×󋢎¾ ºeè*ϾҮDAä~’"qR|@ shÍt¤%bK›øò“?‘ã9— ó%ãøïMÇhüü^º”wI6çúð6S1àÐ?$Ljsm`p§Ö±QˆŽtA‚øô'Štã©PBªôþ$}•Öв¼ZþjúÜ8)R(O ÅW‚ó¤pÇïø­8îœwMÿº)‹[é”ݘ?Ëwô“Thn í€>×ãíûÖýýðÅØ3\Š^q÷ÐÐÅïÀî½IiEß;‹ÿøþÚ°µ>QMQeGSfªÄu«Çº“Fÿ¦Ö •ÔŠm%ôˆQ¤ùªl\“(ë+s Õ‚f’v=vS‹Ì)åªTïì l[Þ“½ÞeæC\•ßø&L s]šÉEb,O¤nöªÉõq•ôRÁâj(¿48M—+å@H¢½ª! z÷–\©±70´Üó¤T›]Jñd /3þiçζX´;ôn#C)‘ÌoŽè:¨ì4xÌ«¨ö› ÒW•êv6.þ}Kf~'í1~òJùßÔÙ¿“*‹êÜÁ-ö4}ì†Þ;xE”2ŽíEr¥HaÅÕ ¹Ào"뮌Gþ0,$¶|ßéì{(F,{N-0dÑÓ”‘A+ð0”¡$d$å+c\‚ˆ€º=ÝÂÔnÁxR4à«ÿƒW¨GÈüëeÐÈŠWhDš¦ûÆÆÌÏú@ §õBP™bÏ|·®¼ñ$Q˃á $£(5få¢|î¦6_¹Ì÷¥âGÍ,)]˜\&ƒ£ÀÑ¡±c´N‚¤pŸAzˆ>ÒÝtïÑž×{¶?s{X&³{{¦ö(Ë}=+̸JéÔ3fêö¨È”îpíË=vfzW_ŽtwÓH ü¨ô-Õæ$ëtïZ ™áýukd9NûŠQ¼Ìĸu²*]¼X¥40×&5Írê©ÞÚ.$tNÊ»]Ãì½fBÔ‡Û54·PÚ¨OCj¦us°ŒålÑ0ÚÜUºoJfõ¬]E0é*ŠqYV#¸›Î'Œ‹Œä­“–]fÉÆ€J³%éd]éQ†³,DD+Ó¢«Ì•ߤk ß*¤\ Ü%†3±•G|iÌ`­Úg°_凞øMÆSžÊ*K/ökZ®>ÍšØvCNƒœ­­dHÃgEÙšùÜHë~õ3ö©y-Cu(íp9{°‰Eh¯JqΦ“fIR·Zv+HËæìHž<'FêÔ:=÷¤ë“Ônª(npΖ¸%loóªfÈ‹n»ÇIë”ù¥Ñš4“ÙòY ²¾Lv—)½uƇ$kg9Øÿƨ­ì(…+¤ÊÕÍ,E!˜F#Öá¬hX|sdºº0²M²OE`OŠ¥jÞÉov…Øi^tF‚ÀÊS!©‰1ä•2/[¯|B DIíI,*6Cªcº¢Ä–£…NWJDQ˜¿9ˆj2KY ×Ê B§ˆÕ´í¦1cɈ´£±†ZØI’{¨8´»õkŒ‡—»BL¥-{>sW­ªfp»]þ|¶×[¢ËhÍO¥c©¿w”~OªÐDwQ—jN“à@…Üe8np‰·Í²°Òœ&膷‘Û”·œH5—•缟¼ªÈÛªŸ…&•XÊ_¤Z‚¥¨ŒltFf”õ“xBÄÐé®Ôê†YªnÌ*+hQÚŸ7Á¬€%ŬË«[zâŒ\­@›#ÞtK*­€Éþ-^©$ÓÊ g™â1' ßb`¯úI’×JË³ìº `Ny9XEo¤)k$,Ù1$Áq™™;´Âì{ñ©R¦É¥Ä P“yWÆ”-vôDp|‹ Ö"äŽÉ—øŸ[Bj>ă@‡³¾m’¿ùˆ,q¼Ý°Ï˜ÅZìÈl¡.i[û®Bt½~S^”¢&ûl îÍðõá¶§w‘sºÿÆæÕ³#›6J™ìz¢Ô¢ºýzêl!›7ÑKÛÙÍù¬ØŸ0’ð]ì/"ê\¸ÏÙÆ³zÜ!Æ$Õ0Ë•Á¡OÕÎüI«ÓÑøàœêÎuOÈNÿü‘‘û2œa~¡…ðR¹ð²æ‚[⮆”ZÁ§j÷㇒±¼\k¹´ì«ùù©‡­wíã9¾íVcÏö[~S ‹gNu9I~|@{b‚²Ô4/¸I3-’+ä[´<ŠÑl¾Á£üO¹q»£}\µ÷züp]â0I ;y³02’Ü(Bc”1Q$qÍÄúÒž:(½ÄÓ ú^€Ð1'ÉC*ÙÐBö¬7÷Ý=LÎä]Õñ m dßD¡‹¤¹ÑxÆ=\±> aŸÃé-ÅLÞœ›‘òN¦Ÿ7ø'æãs÷8²!v&“õ¯}è|h½d{Q9óß0W),ò¤˜5ÈÐÙ®ÊRô›ä/§ñ-^ܯhŠÛeOÎf)~†^~in“‡²ˆÃ€/¯¦ñ2\‡Ôy*yC ³x¡ë’QLe€Ö&Þì<ž,»Ó©c Ê ’M”®2:°7“ptZ `Ã|õbc¡­ÚÓ<äa òQŒ,“Œ;Þ½ÐËàËÆqĬ ß‹e<Šg|hYg¾ :ý諆toÁÅ{RÁ ƒ”vO gs؆ÃvçŽi]‘T«‰"îW3ª-ÉO;àWöt¸Ü+{Ì,-nyçXÊnF©ïÛ“ùzc?1zävíx§ØË -c»‘‡y@X!s¹V?Ü˲“¬ªü#M/l<öÅ¥¬¦;0y*òo™ÉûS…(D¦vŠªÈsb/L—Ð!ÆÛ_Úm½¹XY¾iJ™Æe®¸kMÓ¨(Ä9ÑMYk—v+ÜTãËŠ|ÈFy¶S¸Ö™P¶úPŠr]l$Üû×ûB¯VGÝ(XÔyVi;J<϶ùsŸŒïI1U¥ÓTt+Ñùðö~†Gø””£î÷¥zY,Ÿƒ–”Ô•yÄnV¸ŽÂ –gk›¦2 W»±C/ºÅÐP7[ôp|vÆ^ÖæŸÊ÷·Ìy ƒbD¥u2ˆ ¢Ëbé&÷.ƒ@¸Ù2okÙݶsƒXg¨|‰~þ¾î#òÄ×Ð’VîÔ™-Eo×î^×Oó¥¿PâäLÍ”Hu½Q§‚·jÊûÝ7tÆ/ŒË{=ÈR´õ ¡ÚÚ™»PªÔ,Ý­̱bRѦBÒ©‰µ(ì…Ö5&‡¤—NÕ‡$÷PܬNQÏÚ²¾œÒ¬t L*wVAV°«B¬‰ƒ1ÞB‚´(è£’Ç B·ËÍ )†›»ÀƒÃ»ùÍsÇKEð̈hàýœÓ³4,ÚðƒkæV³ ,ïÔgÎç˜v©R„Åd!‰“®u\Nòkàw¢p&ªJ`e<ì?_î>q(°žd/JÆìàiϞꊶ ujr7vDbÝÐtA6ÛOªÙ†jOWŠ|7¸.¢¦Ç•B¯äß%ÓÁþn™°i–‚·Íÿ‡g¦ÿÙ‰A(üXå[ãv#Gý«5«dÓø3><_!| FD!fùÛ\ˆý… n™M±ÝÅ>¡ Ì >o® IWŒî$œØ›†ioñˆ§=W#šp/ cíͤ1SµËÑ/D½3‚Ë[E:¦tªARžÁ…0šèi¯úºtHdIã ª|A'û¡§U‹Âq¬„€H#š­˜¹zTB{5¤BRólv7ƒ¡BÊ·ÛN¤êƒæ”%RÀ`¡ÒIV'‚Ýض„ðô‘gX-<šï¼4 x#ìyfhT¼Af5£KÞ©«ÝŽop“'¥Á×=£»¦»;ÚÕä×÷‰ &¤¤yyßScl±‚­Üå5Š:ƒLšÆ…çù3ã»9*´í a*ÉMð`;tÙDNj±Ï`‹šÙܼP^幘Qæ`Þäæ›¿yGß{ g2CmGˆ£ë3Â6J—qò›Äû³‚K}y0•ñï†Ef»È]°œ,æ!+]°ÕfäÞÆ„ÚÓ~±ŽB œ6Ã_H¤³]RÀ“à€fP Ö;›z…Âjƒ åØŠøIEÉ&†¤AM :[5°‡ÒêÄ{ÉŒÅÎrºêlrå€ÍV‚ÍÎ58r¡Aü^¡½éâBJ´*EÀ½µ™Á"̼“biØ’¨Ä–˜>a’QVP(Œîën5 Š ï þ¤JiqñË@ú #]ÎLt¼E®0ò (Œè°W™H%`À{€â­&þQ(†Á•Æd¢€ËBBèPnxMþ¢×A U˜aÉp¶†™¦o'a§;×€üås€ÀÒ¤,/Ѷ² è¤ Ä8±eÌ ·Õ‚‹Y6c?09NOíäרr6ÖÎDÏTº=‹M£¤y“m‡9‘ àÉ4&{[Úô@1î_ÆÏ]ÞfDûyü×M|ØAwF,Ñ> ‹eü.fŸ,Z!úd¾'“b0èSHn­{nßX®$÷‰eýŽ+ºœh]‘â$¹`•ƒ§w<• íʇ=ˆ¹µ{çmÛ©?ï—¥!¥œ“ʤ<©h3CºÄJ‡RnvÊvÖEŽA%Zϱ®‚”i´tydP·Ëmg( eU4ÿ‘œ0i#R—èÇù§n°LÀ±¹…µŽÉ*‰$©T¬@@4<jH.ãl uæð]dž÷»2ÉÌN í¶èËÁÎcÙÓéÍßMf]šøC³“ctÊÑ‚ÐX1¶¢Ò«Óè‡â¤N$QkPù$®W¥O¯¾7©ïJ0¹ÜH\“r$ó– :&4’ôMo­‘6JɆMAS3×+õs®t2àQƒÃãUÞ'ªE¶jseµÒÅuPýΞK&¶æÔ©34©'X‡Æ%›†7³ç¥ŽÊÔ”f…•:;d$uêIlq¦-âyžá—:#µ×aÑOê"ššØäÎÌ"4q/⎠g÷þL™Kžoƒ£rϣÑnÜ—d²\)°5iLõ¡ÑܬýÌÔ¢–h'ü²í3Wà1 iQç|`êPrYjzØ“‚ü°lÃ&$›[›<E-¡ÓžO' [’¹>ÉCí¿§Ç/ayð& Åêtæ.‹'qN©a|ñ³ã{S†ê\,N:Ñ|°%f[À€Ã,}J…O½Òfã¥tìW;Ïa-RKÔ&¦u¥%Ú[DŸH(ºOc-Ñ­ïËps_ðÉ@ >?-«p¶–1ÌzÅJj ‰žH ô#ô;’v A'HÎæ6M,M·F t•#d/‰àEµÕÀ rW £ eš°0T)–Ô--¤N±ãÀzœÞ=#caµòÌn£œª%9M§à/E NCBD ólp­Ðdc±Ù:ŽÂKƒGÕ›wš"º·00ÊÅ $á-h~äP? Á"ßÀqCU•.õÈzƒæ‡8YÓ[É¡6`? • Â’ý¤>¯ƒš‡ðbí+ D6U>É—ª ùRUY¾Tõ'_ŠlqiËS‘ÚT¤6©MEb‰ "àèw¸ý­ðøKhÙÂ,QIjõ±«sÎn¤@ÉX6‹Ô 0– )âìPÅМ†*‚6¾:ñSš8Í"¦tD]µúcÛgˆ¨Cñ$Ï îV‹×éMäLJ'î.Z‡"ºõnáhl~ãN@4ˆ¬iÒ&„Ð#¡Ôx6¾‘ãÏ„ýä@X’+ƒ×‰ôqU7JtÉ[8;‚@Ã$fÝ£j ç.ë~Ü ¥a…̺žD „ƒŸ$ŽŠÄU‘¸˜×Ïò13\q\"ÖŠj“€¹r†ènÿž% ¡ N;±…n_19à÷ÄA‚8¶LyÂF“K' \ÑcÏ Nëp²áÎ/Î_¦Î¢BAZ \JS-œ‰ã’¨¤£¡•0Ê6:Æd’ξ52 ªýÆò×Àìe£¼0G©T^s:ÍÖ1Ó¢ódRÓPӇƟF/MNt$L¬üÀÇA\ÐYÃGºTV6’ÜWp†s±´rL“èÚš—ÕqA£IBîÎ1qbñ}ý"– ’ †´)8}Èâ.³CêËÈ¥·ÓLTÉ:`«ëKÚhk2ÈÁ¤]6b59¨Æ³µ ›„ErÓ1E SØÜDGðå¿óè%Ó*t>ø¶þ^F'ÎÄHs=ר•ºËR8Кn¥î°ªL[`ó&ä“`Õ–˜Xþ.‡R1´Ñ×YÌ–’LÒ=ÉÈ‹B»„aÓ ”B¹’ «â¨*3§Û\B ÈÞ"ÎÔØ…±tŒ Õ9-dÃeà”8å‘÷œRéØ+ºÄë\vß’:à6YdfÌ ü ßþJàôå¨KsMÚ—#îØF‘ɒ"ytoW‡Ä¡?¹†ÃàX~M8MƒOšørÎÄs‡Q¿¨#?=ª™+´7$®ŠÄÅÙç>ôsiÜMï±S'1é\,À„T(nÁ銗÷˜ í¿´?<d]Ýù¹íz^ªEÕãæÇ8ð`ª¡I°é ?W#–× ”&©´K0ÊFLÒJÝ‹ÃD©¡ûù_é è‚ò³µÛžÞ˜r’ÿÐå&QFƒ<>ÜZYFž‘D=ä…U8xѶ“Xß^ ®”ÄfBOª'Åã# qéLåü,×ìT˜;K#48l}FÚEmRX¼¯ïb¬ó–<íøü5g€¸²Õ£«Ÿì…ñwœŒÖ2Í+YððOx2§_ÒÊž—ä*­A5cKN|‘ÍÔä)“ /–ä3–Ã`h5”aC >FÒÀ†X÷Çâd¡Ì"²C‘A_ÁPÐ)«­­±Ö¿qHÃFÿµ==õ…ÃŽúÓ¿Æžq‰÷‹2 šh„nªá‡ï‡û#ë¶å–o¡Å–RN%íêP§ª®–FóK—*»'>n¾.÷üNTzÂrݪhïÒžô¼–'žvS>C3”çžùž×òÂ3?Œ»äÃ$74kÕ~Ö9Vü}Ùc ‡m<'Z}xι†òëó᪱ç!ëË™Žü}`t1Šÿ¼­ß*%¡¿V¨ìgÍVÉe¿ü¡÷`ÅgSü&ð_ý'Hÿ¢î*êl;¥¿r—׊ñGVýTYU öþŸÈ,ºÃ’8@E:©üÓuí¥ò Ê*êºÄ5ú7{êþcqwÊO9rñuÏe°³\AŒÎLÆS€]`‘Ìþ÷‚ˆ&Ò~æü«¨€Ç69;˜EÎU±²ÈT©›ª+ÞR”ƒñ½1ãä¿) Ü¿U‰éåGÔÐñGþ,öW ªßóï.”cOò$<×j¼›I €Ú س+%{òüËIœuŒaG‰r” CN'KÎE*ŽEð÷T&ú¤þŒ¢ -j$圪’à/Þ~€‰gœú!œo¹”ãà?å4õ=åh­9`H+ïÅl9`Ø€Ây×δؽ·÷öÁÝ–:nâŸÛsÛÜçîå);ò(¡V¿zß^òtÌHëÛf»fè'ãH÷æÙ~¯ø_éjõ?«Øú™etÖ—ÿˆðü>‚ïÁ{ðx ¾«ÿ—EëÇŠ[Š­Nþ‘nõÕV­qÜê3ñu–¬îBþ’?=YŸØð§øÎã““ñ9§È |ÃmSA~·¿¬ï¢ë©Œ™{¦‹q¦…Ü{[¤·E{[¼·%ÎÌ!FöÎ «®ûqòî“õñùÉæØsì=qúW«Ç Ôæ8×Ý”T{ n‚ýtW_Õpí©NuøÁŽÎµ+Ÿ-@u¯ZEÝ9ÀEÀ©’”:i”–ÓfÚ2Üê•ÇžwîÕ£ƒùS”¨GåhUέ ®ûÂÚúAŸ@¦ž(Pi„FÍ”PJåTPIÕÔP{`ñ7 ô&¹äA$RDñqQq¼âÏû\å¥3vòï0;<³æfZiƒN;tÒƒnzf,±ÄžI"ù ø‚%ð„Ê»¼ ^¡åS1å[~PTÁR¸B¦°å)ˆ?Åò®ºKv-\Ä ~ù]AWÃUü Áxð’xʈWÄ…º°Wü•tðÐÓÀ˜\ÛÁ’¾SóþÝâ®éþví†^ÛMíݾíßÜ¡vðГÀ+X¤õ¨UíêÔúÕ¦1Ô¢Q®bs­›7ÊUÑukL㢫C}¯¸Š9TeX]ÜÌ—?`䢈2ª¨£‰6ëg•ó–ÍîpºÜ¯ÏûË , Þ^¸âz}0‚b¸H,‘Êä ¥J­!HŠfä!iY9yE%eU5u„R…Æ`qZÚ:x‚®ž>‘D¦P÷†@ap…Æ`qx‘D¦Pit“Åæpy|P$î&Âÿ÷{ý\cª+_ÍNyúCîæB÷p™Cfœm¯ctžù\x÷u>ï:$—^v…•W]cíõ6Üx“½oÑûÊ¢ |Âïú#…jè8rBFIMË ârÕØ ¿[Qq)¹¦Š*jš:ú^¼šöa©Õš¢%\„Èü¦‹Ƙa‰ ö"ãS³ Ëk›;{å-P¨»b%zì©|¥§Ž'm ¨iC&”q!•6Öq=?£8I³¼(«ºi»~§yY·ý8¯ûy‰EÍO¤fUÏ¢(SVQUS×¢!Wh%i­ B0‚b_ûpÕ½ùJ•Z£Õé F“ÙbµÙN—Ûãõù­TöuBýŽöã†Ætu×¾X«3Û¼Aäýy¤sù‰Ú ÞË/ÅÓ\çýªµ©¹ý¾0O¦qT¹ÂÝît üH#QØT¦Õh¶ø¥è–Äâ² ûÔE-Ujd½ÑjñÖg‡—Þƒ ýØß‹O…ÁañX™ÎŠER…\Ʋ[“Ýähsp›*·°²¡ûIùX€¹óœî³>' 0 XÝ~C²Ø×䛸«çCáAðª$Á õf=ÿ­&oh¹÷ãÊ?yqQ³Ví:uëÕoаQã&$2…J£3˜,6—lj%R™\alj¦4·°´@…ÁH4O ’È*Ád±9\_ ËJ•Z£ÕL[a!´íIÞŒ N4‡Ëã „"±ýý,\´xÉÒeËW¬\µzÍÚ“~/í°Š{‹ÅËg÷Ç\ü¡Ú£d"÷™Y7¸ùYØuÏGKbÌìõ“›4ù×lC‡w-7ý„-Jï˜ÁZ¯Z£ò‰©Ì„[½4%šx[n)½cÚóÓKœxôa_Øîù ³VkJ¡÷‘ûÂíä6¥/Š­š·Ñ_1X,À*Ìl^À2ÀzX¯È™»>E Àœ“u 2Ë´ zãéÝr6´n¢ù%y߀rÅœ¹3ÒžT¡¤!Âmäw5¬A]ÎÖ á…ÛºÂØ»[#ºeŸîúðÿKF/}ô3À C 3Â(c3cÛÇí˜wÓ ñf¨ìZí?Ía>uY•xŸîhèOfNA̶b—öõöšKc9+oÅdQrªÚ2ò*þ/ëÎõ ¸ÿÒ\Ê®ñÃu?Rêšj%Q¸}¾z™rB”ÑG&× ¨˜Ÿ«Df+•¼šä·?纋&k°VI!mŽ7Yo®;×CšL9x Š3®>¶çÞžÛ]ñÒå«Ô¨ûžÂ××17å,¥PâÎIÒä”Ô“s?)WJ~eÝëKüÿ·§vÛ}‰2z®Y¯QÓCpûSï}¥*¥ö¬œue}Ø06Žt ÇpÛï»$ɘ)4 » ;ºnÒoÖÞœÜC¡©³zÝôÐSƒÞúêoàÏàoßi‡1/opdÕò`–˜ `ä=6VÁ=xŒ/û׺1eÐÛ‡VbÍg2R‘]¸7æÛ‚à&õføúþÔ¶š­¬ãËÅ $áµ×³íá?7ÇO´©ÎzhmÆ…Úk„GÆÄ§'IšœMy™u™}™s™{}z]/E‹d™³¹™@/¥€¶7¥é²d“ÝþßgA•j”Ú³6l/VÉú±alŒr*Z į ˆ˜dHhž|Cö êF@XTBZNIUS×Ы™…M¸f™²(+hø³î~å¯þµO_ÞYùUø†dPAÇ1)% #ˆ›‡_Ƚ¸GÙ#KÿJSkïé«?>·îWÒí5TÃ5R£5Vã5Q“5UÓKá˜LšÉãh±3®@`Ò\# üÃ䄯úwÏ †hœ}ÄÛ/ðIàß*ÐDã%9-’S îºÉYËþêJ¸êZ‚©6šCtÜhûÈM^â¡;á¢K)ämÏqÓŠºÞMpƒçíS>‡Ü( ûÞ9{à&—Ï!·RÙ)rË[0yq§Ð+ê¶D…¹Q¿.Ä×úu ’s³ÏÎh)deÔ+§A•PUѨššÔÒŒL®zò4@D!’F Ð(ÔDQ4S\€½'AïËÐjh›Ú®…>ÔAé¡w†£­7|òEGÙ2<9¾‚@ 4Bd”X‹D$5FvWÆþì˜Û1Œ…¦"ŽØBb%µ‘ÙÉA¬DU¸šÔÐ/µ¬'8üàûY4ùìùa²§€ šÇ|˜ L³§ÐÕé¨#' ŸæÖr`å*Ï*©šÃ¼«ž0Ÿ° P‰@›y"n›vDEoôñ£ÈÈ?ÂE–6¬‘mwäÚv æ)}}0”~´ðŒþ~ Ú~´òœ¾ ÚŠüd°?Æ‚vÆy~1Ô'cA»tˆ1†ûe,(#.0ÎHߌ펋L0Ú?cA{t˜IÆúhXÐVIð•ÞOEÒ2ä8"G6¡—•ìn?fæÿ5P–ɲŽqÂbÃÐ/¶ynò 0"Šoî?¸ÀP¿ùÄ(¯â„‰“5ÐÔ8³ {Dü‚ÃÞUæåum©HÅûܽìKAZ¤Ï b8ϦcÔƒìæó¥)Q®±$}7ÏžjZIHkÞ_L·–…¤¢ÐÔörî{è©ç^z±QR´ÓID#.âׇ„ÑV“ºpÒü[±ˆe"¯9Šh2$#™ÈL沬é±ô2ÊŒ-zŒ˜e•]¯ºù±*¨°¢ØW§ÒÊ*¯¢Ê¸UMsí~º#×ýYŪ1~WâûA«;ÝkÔCÙqÁÂ˾r£Ph §¥­ƒ'èêéId •f@g #(†$E3,‡Ëã „"±D*“Ûá,&³Åj³;œ.·Ç „2î©´±÷`4mv‡S,—[7€¹Ø|t “„H ¾Jˆ©‰÷‚4Ý,ÿDFz–¦d˱ºøsVJžgÕš!ÿ‰ŒN“?VÑeœœËx-— B.%é­d)R§©¸L—p™¡ß2S¼EÖ!Ÿf³rX’ËŠÙòÅ®Œ=^¼ ±B“ˆ±ôxÍ×¶ˆ‡BÐÚÛ$D…¸Œ+ ‰ à肋„´\ÈE_T‚Ï Üx° YñTš„ ¦ßBo!Nå.Ùn)ñÜóáyHµðÔiá%ÒÂÛLxàiðxk³Ègún ~§“€øÿh 6¦©MÉf}>6’±Ù˜‰½ÉónšÄVå‰tÖæÖë«Ü¥mKP‘éQ5xvñfÓé1Žë!ØnWM{9ÝSX.þ¬.‡>%&Œ¹8¬È» ü)álTܹNñg‹Î6%žJ:»ÔûìQŸS.rÉ0møp±bžNÚ.¦ÄÛT%[YQJ c—ie·" {úÝ\w½Yëaµ ”åo ¸U»Sê$¼z~«àÞõÈËO¼ÒÅ%ÿ8ÿx1E0ñÊøn’Ÿ~™êo0=.âÁüȆÙÉ”'ó•-Ó+ÁùŒ£»ÑûrÝÍ,¶GÙ$ð¢QŸVÛàKõû]ds¢E-ÉT½:®Ù”æ«OH,OµD‘‡²ýÒ÷G—“oË9ƒh¡DÄI“{œ‘GTI/¤RÏd ¯L—L³ …fi×!$ñ³´ Ȳ`KÌ‚@¯ÉºH±œç%P1y»ÍL÷úV' 9,’¥¹Øå”ñrE½Z‘’ÿÊt´áÓÑçÙûm›w«Å£"öà^c­¹*Žu3ìSûí~í/A´äèéù¡fõpNŤ?-OǨ»÷=mžTÈ]&ø¸10-Ž®ØÅ%i—”ä½ú)~¯EóaÉš½%q|zòPcJ¾£z¿ŒüíÚã8rFÍàçï)=.k¿–¢6Sï§éã }œ¥ë ±Â7â&C\¦+ôq•>®ÑÇr©¼«Ô—ÔÄÑ`U¢/bâKÙ㘞xê™ûxè‘»î¹Ý½sãÝ~N½× Ýɺ>ûa;p}1†žË®PE>ø“¿¶¼]kŠ:ä“Ú>oWDîø×y'Âÿ½¤ùðýÿ<ÍJºfXN¯gËØÿzP[K´¥Þ»2u@X$v*u<|B"R4†Œ{xä‰çZ§^†F,­8 t«þćA12³°²±sprq¤‚‚†…G@DBFECÇÀÄÂÆÜ”ñ ‰F‹Q㎣ƌ›Èäœâ¾i3æÌ[°hÉ &–ÿV­cÛ°ŽòžŠÉ–’ëV%øÌÌÞ_ÈÚÙûàJ.&)cò!>MÈy£ @¿YLÿxît^ $^½‡@¶p‚A×|lâ¢7ˆTÃáT}FK‚#, KUÛ&iø(2P =õÑó±½TŒZA«©ŽÎ½y7ïg{x tÅUïœU‰¢IŸQkÖõÖ×á ¤äâ5lÚz!Õ!£›ˆitñÎ_¨Ù;œˆÄ%mü®ŒUj+Ç*çk£]Þ~ê ÁgýGÀºklÇ}Ì.ð±ÊŸÈ §Ë6‡qáÁG€I(¤+ÜáŸI•(©RçI5j¸Æ¡(Å*[EªÕÿúüzW=°q¨ý6² ŸûG¿>y>m¾ðÁK›š¶ê„gB ŒÿÜ’u”U»{÷.¡4¤ô¿Ù¶ ¾¯,°8ÞÔhc­H<é%¯Øämøœ¸¨uÃø:†2 .Üz˜:Ò»¾ º°ÕQÊ8 />hb¦hv…ŽÌÕø®y9 –ó:„";'ÎTÏgT Ý_©yö7Ö<°Vð¡Ÿy½ô9ß îŽh ¿ˆ„X£Ž¢Çq¤LKÓFÅPée„ójW ¹°ÎÓjQ›‚®h%(GÅx8vÞçk6ê;÷pP̧̧?ŒNK¦M#ÀmW„¢KØíYû_Ì:ÞÅèµµÒò~ ßîî“™]lýêÚ<YâÓ}q& ï#AÑÞ÷)€ç-><½å¶<ÐyLOR7€-J€-,~,š›ŠÅ@ko¡·´µ´–wjiÙ_)]oA·pZ.›|c“@šƒåó–*.Y±²bùßóÝ#N÷wr‡SV·x·?·hç|2°ß@7§¤w–÷·<»à;k‰)KÊ€ò‘~n;@äóœ‘ÃÉçòƒHFÕïï9•̺|R–õÿ03+>ÙtýÀû;¼ÍÇHzª¤ÏuÖk­×ôô±™Ùà µ•Õ“O·5ÉúŸŽÖÍA»s=t¾Ïý°¶íÿœÏªXù';|~:×_/Åÿ ø7yäSø<Îñ-ìGí’L=Þ~>œ~Ïñ0 눜‹@¼ÿ˘$e/ƒ¿"àͳ>z §ðhØ/Ù%ÿïÈ[Îß ŠçP_é—üÏn>á##TÃ> ^Í|ü"•ÿ¼Îô°ÄKSI%•¥”Ró±ióÏÊYç·¶«ä,¾Ïžßϲ³¢2+»XÅ)n1+«ò«¸Êª²ªŠG,̰êôæ€ÝÉÏâ.üô«i¼enÆ,„nμic¨ÆÑL00ÉД‹~ûÃÈR3 ,3ajÅ*3 d0nÇ×±Q׊UVÅ.k·¦‰7ª‚ü„p|Y‰­b•ˆ£ÒûÞ;é^p/ô.çý— Þà¢%(­öUµjVݪm»4ý–f⩔ʩÒq]Ò¥Íéâsùl9{Tþγýdœõ'ý$×—óÜÙu¶Ý¥pJ©^Ô¢½UP9•‡{[aUj¥UI¥WF•WE±‹þ:wÎݳá¤Ä­°ÕŒVä¦gcðþO÷N©:½Õ?‡ë%Ú3_‚À( Ž@òXšèusus÷ðôòÀ]×üº©L®PªXkgdh¡H­ñ„'°9j Á]£ž™Ì«ÍîÀ¶k\Él±ÚìXF/q<Ãb>>÷©¯}éÿ6;m1Ot­“øBHª.½õ:¥à`ࡸKÿ·¾ãñÂßÞ$âÅ;>â &!ŽŽÐë ZGè a¼µ2÷µºíýý¸oïí³ÑöîJ‰ûå¿” K®—¤FkÒþJ5Ãå·Iû¯ÀÇ—–ž‘™EËí9ñƒÐNtèî/øaê5¦˜Û_öO»mÕ•>¶MYxû}ìÞÇ!…Ûn[î2`{¢Nn«íÏå48»È¶Ì›_>ü4¡ç$—r9Wýº\?«à«ÖKWEßàÊ­ƒ[ýý¿ ·ªá†?ôaFñ°#lþÇÓ«6W8ä.¬Å6¡"EýVÈ’Ý#É»“vfìŒülS$ÉS¬æ”I³]­ý=9Äø¾éiæ4ÉJò´Rå*OÆñ^8y§-I÷»9Gº ÄG©÷›ì_9¦¿vë/|ã_wôR—£Xf§¬_IL*²:ˆ—¿°#ÀNfè] ½ÔÇÆe_õ&ný¶³Æö¶÷kïàæNìh'?ÙÙS:ÿ<ÍhϬW8Ü«ñZa–×½îoxÃoúÔ‰>óµ¦þÆ]žãÛX^ùüŸL°r%qó5„rìþ˜gÛK€(à00{6  ¬û ÌÄ×s|LhbG˜°oDÈshX¦¸ôf‚éÇÝòËfO€ºh‘ ÑîuŒ;ýˆ+Tœ8QâÅJ P¢`I’DJ–,^ŠIʈö²Ä_Ë·NQ|‡±/ñ=„–¨«ì_>Ö&[[c´ÿ¬ßT²øQ[[½û8;ìsrœYآ϶¡É¹qCa7Å …ýúE7>á¥xw£¬ßKöÊÞ_ìûˇkIècŸøÇ§>õ§Ï|¦Ï}î_øB__úÒ¯¾ò•~¾öµß|ãý}ë[¿ûÎwøÞ÷þ°ÔŠÏ—³²F éUv¤½Ú:àwö·Œ¡¯­ÝQö™k}æ?ÍVk‘bƒþt9EUáÊ®^.§Qs ·ö<—ÓÙ,v,üÖ;¹œÁÎ1¿°ògÁïöšÉIqZù§ÇyŽVÇ…YÚ|áÁ¥mtªºPçèZùÝVŸ™=»ï’í¿·ôÛ==ýÒl€úh ƒ Òß`ƒ•zˆo}°ÙMÝY[bTçø´¶5Q›~õ³¥Ì}j\ôއîg"à‹Ÿ ù›A!+žvÞyϹà‚\tÑó”¤ò—ýIjÏwšf©y¦ÙœÙ›¹ÏjY³¶¨mÐ3m'{üm+m;[5ë«®ùü™µr¼ý̺ÙÞBVïc |€‚â=TTiÔè%44ïjÒäÅn¶}¤n±Gýi5Ú‡ÝÆx&}²¤Ûm··;5;W×LC3l·ñS¾úÊÖúõÛÅ€;4h¾!Cæ6bW£ÆlfܸÅ&LÚ”i{™1c‘Y³0Û{¤k×ÚkëìãÅ˹¾ì@0€ãðÅÍ*{¸µn3†.·ð ßÂZ~p~qUÿ:ñˈ£ááý !V‹«­Åz¡„Ûe3zÇ­G²k׸¸Ží=ÙF<»ý9s^Œ¼{@@nL.Ð+‚w©[íbGuõ¼úX¨¯!^7Ô&Ž2Âx_š`ª³ÌÐäWólãÛÙÎÒ³CF,³“,7ß|+,ˆÅõ¸Åî±_͵ö_Äl®ƒØÅÁ±·Cæ$‡;ÂŽt”kí÷8Þi¶pzœW{–ãþ½´H*x¤ˆpHcq´´I g==B__1¤r„LqˆJu¬µ%ݬœÞ}uÆö³¯™áxj‚P§N@“eü|öõ“4ø…Šê»Fþ¢EÓöÜj¦UG·Õ• ttnÚµóÔŒ ?½zùêÓ'H ”Ï4dªGlõ?£Fùg̸ñ˜ªH0mF¤Y³ðæÌI1 å›-a[¶ŒÕ+®|`bò;,ƒ ^s#ŸuëˆØØH6mÊÃÁQa+¶·÷X;>÷ˆì?R!ï~?«B—J!bUv‹ý”«fÌüƒÇ°MÚô¨%A$B$ ~«IG=ÑfXÒé4mHŸ˜³±–휋¸£$DOâ¹o‰d¥Å¸³$¹OòúSMgl¬¡'®~2YAÜ¥íQ{.!y³Øîci‰ge%²¡Ôï7ë-‹ÏÆ(_z+-|²›ÅÔa•¾;^'asN3íÌ™@çÎ9¹X—ñµŸ'-}r5qék©?on¶Ç>·F™+Sml.³³;ÄÁáàqM‹‹ËwnnÂ<< ¼¼ôøøñóÜè ¤à“Ð,žfÑA";™í±[k»<œöú‰Ž°ieàÚ;‡”ôéCmÕí°8¼¤_!µÍópää&G9ÊõŽv´kãX û8[¥–x¥ñ«-*]õDÎVNQJhF„A £ØÊkV7#ëc(P·îhîÝð° ÞºõKú¼7wå}Ó7wo<ºî‰GŠ=úQÛã­Ç¬ÇËùý„M›<éI{ÊS.ô´gœãYϹ¨Ÿ·WY/•ì_E(}×[NÍ®ŠÈ¾ùÞ  ‰.oåé{ž*Σ¶T¦Ì§Üht…«Ý©TiŠ*UƪVm޵ªSgªVZ§µÖ¦u‰ú·Ú¦zªÝÜפ½öºvÉOuœG=«“Î6=]Œ6C½zãuÕÕ¼îæúQºëîq=ôð¤ÿùŸ§»§šî%ýÌ[ ©Ížjœ3womO£\Ú}¥&¼Õïf³çgˆˆ^’Ñ"#3@A¡ÓT Ù§h³X£/F¼ÆÄô Ë[ll6ÍÉu \\<<ñøøpH„„2‰ˆ[ìÊ RRFddîB^N¤PPHo¥«—¨h}jëôôÐ ŠÃTTn³ë à°–ÖØÂ^Tåoi™/‚…3'dÌ,Zk‹ê½Î7-iÁ³8WÖûz5©YŸðê,—Dd’¸"Ä]–y*=ÆLéºUÃÀäÜ„iúßËš€sù,2?áúJÜoÍ0xnù€þ¤ƒ ic#$¸­-$©EAHcM‹†`ȲŽSS(ð<Q**•ž 8EUIò(Ëžu-yò^ÍvÛÓ…Óé|L¯71F#ßdVüø‘HwäŒð¢PÑè Le,¶G—ËŠÇãÍçãœ;”Zû^QZý\ñ$W""•²“ÉÈåraŠ—þöÄu(SSA¿Mê”JµæV¢AP½µµx[W\ÇmÍ…îâM®½ãúÛ`ŠxZ>gn€@H 7))QTTnQS£ihܦ¥Å¡£s‡ž—Á]FF<&&÷˜™1`°û,,ø¬¬°±9Ò„3Î9!LHIÀ$"1"SJ×Ú´1$¬5ãœyœ²··1*¾¾Æýø¡êׯ Œ©b’RÆLqN]ÓRÂ*eî´Qè&®š6}KT?Ÿ9öúC¾«»ü¯žǨ·rÌ>½›3`iBy†G (J Ã,â8AøM’´)Êš¦Ã0–X‘ñÌå"ñxVø|dÀªPHW$"‹éI$Ö¤Rú2™u¹E±Ê0V}þ«(\ïUd7åy>®]¨äƒg£góÖ ÁšF|``¬ÃÂò…ƒÃ†‡ç‡€`‘?’Mdd((8¨¨Ñ0lab ²‹-Wž=||¡ö !ˆˆðˆ‰…µDàÙÒ9NF@øÈÉE€@PPˆ¤¤ÄOE%Ššš hZZ`::(zz1ŒŒ LLÐÌÌ‚Á0,,YYaÙØ‰BŒÁqNX±R‡H”H¼RÄ´†7†¸µœ#aóövÙLJ²oü”ìϯ±ï ÆTŽå*¥TSË95!\“F)uÔµVo l¯­ÖŽÿpþü¹.âææÎXXȰ´tÖÊZ¦ ¹³5J¶s ÉCwŸË—/~üäñçOQ€Æ'ÔhÄF¸í?â7TëV v蘸õÄâ66 ÷-ªmÎâAJcßý6u[ÇõQIâYæ‰Þ–*N‘ ébïöstÑã~ëè¢k¬­73íy)h]+H¤”®Ã”5eDÇOõô²Á˜vÉògJ‘äÝ,ÙsØ‘ôK>,š¸¬^Ôªt5w~°ŒI˜g{DÈÓÚ˜p—çY' Xiu'¤Þ2D§4æyÒJ¡Ž$u¯U•çL!ºôöÞ éÀÝ·VCøV”Pp‘Hn?¥ Ñá4DôšÎÀzk(»òÐhkˆÂSùÓ1ªëp¼h:!B”f©íhŠâ·F¬Þ·4þ#v»cŒº4pÎèçÚê:dfpn…qWVÙ4,…’ziˆÔJ¤É^YRŒ/«>ËïNoÒ¨/Ó19°ä¿¬:ÆŽ~“X 2,´k¦qHÑQ‹ÊS²œËÉ ÒH©€„[¬¬»4å1ŸþoXޤ%+=}Ë”ÙE,ÕjóQe¢£Aajfš–šIûµÍ EéHJÔ bÎ/›)ª\ „UOcŒ­cdÉËÂ~½2CóÕ™Ê9§<‘ÌOŠ9Ž“õÊÇ™!CòÀß<˜  %,‰+¢@F4Xlˆ ¶Ä;qƒ˜þSTÙ—U¾^}xÊÎÐtß²RºŸa•ûýÛä¨xBT|“wT»0v {†CÁpdôb81œ. W¦1}%ÐX«¥º>°ÎÐJ¨Úöl’wmy¢Ð±QÚþ”x¡#3‰³ÔGß)â–šd9 Îövô*eŠ“¢ *oÝìawßx‰zÅŒ üz$Á1´(ƒtNvuÞÊlöáDMgç‹Ð`„]B¨D†¿'ÔšG ('"eyµúȘÒ[¨…Œ°ž¢ü”þd*Âošˆ«o]¹1'gïsÍ Rš?£¤{óËHrH!e ¶ÒÅM €<5-éSXE$ J≾æÆoKsܧòÇ×ÔEÙF‘*Kd¤Eí«Dˆt!çH¤†^Hiì%yn0 Êå «/EAã5^†qÖŒ)£Ãs«„Q÷ ˜H_²2´Äå¢-,‘RzjÎ'¢9> }F!fð‘éP¥™M?šÙÕ¢£°b’„Ù9ý¢{_£k¼C L!¹u^¹¨ôér kÁ¡ŽÎ;JZ{Âaxo.Ã…›By½ömi°ÉÚ€ŽýàJý¢YVFëìÉK çjù²YÑläÊßt$$ÌQ—ëÁ’ä'¸×«L·rNé¼Öôl¶¢H]3ðF_Œ '&77 Ô2K{=™iS®ü¶ç?#†:ˆaO72k¬«t¬b´bW¡üÀ ~\äÌ+WDÈoÇIŸG# ¼;“ƒýJ?’e"2pEÄ’Êxàô^¤Aa¢¡È>°fä‚÷­‘Œt(îÎ0…RÛˆ0Ò7Ž0ƒ2Ûˆ0‹ø³ÙØ"%Ìa†Ü"Ìc®ó«SA™ u!%,b®‹ûa  TŠÊ0Ôåy<¦ <¦J<¦*<ŽÕׄ®k XÇë ¨cŽzöeþ¤ª­ +w¨\#jë&— Fì7' 톸Õ#èw 5ŠØßÕ․„80-pÁ``ˆG·†>Wê8ÌÕq¸«c›«c»txÝê‚•Žp é8Ê5p´ŒñÆzôÆ8üó/Õþ+Õz!ƒk¬ª[¾ÎíSä§gÔÕOºþû“Nb  vàô¿uûÔ¼Œ‹g¸¹`Û—aÃà¿ýÏItv_@”±¿å\ÜŠünø¾à˜ßÝáWÈÙ3¡ò4(ãÒhóI‰Lïl•*­R1=ÑiÈœØO…»Og¾‘%žs8#¼³©p("íÿFÜY™Š€i\Á]`Iü+ܨ¦œ³·z‚ï$ŸûÇIàÎç‡<‹ú‚+á‡á­5ÓsÜÍñ mU€Ê¾ÇH¢m ØiÕâ}ŸM¸ñ´–ä™üŒmÌßšýz⓯*¶Økh?)YÂçöY œoôÖ6Cx¯ò­({y­PÆ…ãi÷ù&u‘·¤_ÿŒÙ‘à!Ï/#üiìèÖÔf iX ÞŸ×èGÞÄFNª•U<陼a\øÛ úb”í±–ÒÆÄƒ=uÌìs¨HtÜGÖÞ‘x³Å«¶¬1À´GD¶Fª¥¾ìÁ{E<`¢VŒ:nA­‚,H„#•ôr![Ð Q H5Rß½g‹ª*É£J\G즔[ö 5„{²½—2MÒ(?Ø€’è(ÛxU†#|X°«60WϸŠ\ƒ´µÿeúQ»ä“<«¨ÞHàrÙ€kXŒ¾ÅÆ D^‘ïœê%¾Ú&Á·Œræ¬=c»XSB ÃU=8#/ÒP0U—f…tÊáE,f,:ñß§ƒª±#ÈØ.élF2ë0’ZšÝs‰!­ô i¸™#ÍC<(ÈTÊ=s,²±˜QDè‡?dè%£¼+ôÍ“+¶L€¹ëIH¡53_*ú=8?¢©Ò˜;k剷¬—Ú¶â•SsÅ}<™_yâpb÷Œ‘F·‚šqŒ¶Â½H#¾Ý¸¹CA,Üd .⊓Ax•êLF€Æ ?5ˆ½”vй, ìôdÌ<;5ÀÍ+!Ô„o:2%s¯ zªB6•8Áò•Bqk¤„LÆmVí5Ê ŽÁ!##^Úäîèõ"–bÙͨ…xoX¶½VJÆÒ±ð€hζ É•ÎpÍEÂä…³h5;þôPfj¢Öêl'{Sz‡(æ ¥ËÚÚUA·~=—7S‚ 0˜„²µRRQ!(tÌÝnB›«®çä”*¯ÿ¡‰6Õ•RÇùi¯‚HÌT K%³¬ùžlÛ Cm_m·@Ò‚ŒÜ™¥"YrVùl“`A õ•”@JËšÚ§îÝIhLª¢+O·c9²­5 ®²J‰P],5oz½è-u,\ {È•ªµ14©¤B(QxЈs€º$b€Æ[¢çã)ràóµ¢´Ý Õ­ßý)å¶Û®÷¾obJ9|$âC¯†õmtWíYä3¯Åȼí+çökÎ_ÿR!¤`­÷Î]vïñÞ~à}ð ƒ9ŒÊÞ‡>㡃VŸõ¬ÀéºÙêÍB«t~óÕ¾mÛÌQl&%D‡öPìmÉ]µõ`&3™=†ŽvµYeu˹}1ckÞ˜zÿ`¨Øïާ×uõƸÆÅ{Ë–?‡aÐmÛÐ:º{ÏuK74MÓ•Ä1½d¢¶ƒ<Ùeéíæ­½Ù íª'þŒÏwÞXK´Ô{1.VÝzçRRš%ĦwÑj±G–$%)¶µÒk’:‘ñâaT"î˜,p( ×ÁIÇ5Ñ 5¢(ÀÒRptÇîjÓOœ”“$üúOPMK%KTzÓ›ÑÜÊ“()óòz]@8Ì@ç\6M wÈiÁ"FwQ<ìëC뉸^?¾v@/±¥lxQgœìõ=NñÃáŒÃ——ihîæl^íA}úrT§Óá:šö€ »¦^M ˆðTTòé8/Ûm¥ÔklÔRN×-uPj¢»5Fd5–°=…ÉèjŸLþwÜó‰ ®çå\LxêÁOŒÌRÒŽh‰ž„\{Ó€Ó™Þ$ŸD-dž ûmJÇ×fÃ%±øNwƼeÙ*Ù°x?¨>–†HðQ {hÄ —ãämÏ({Úôe$¼ÿ¸¢ÆÌ›¡±Ö™áy…sûà Ôv¢ Ø÷% ¨y¯8¥/Ï·Ðô‹ë™Ì¹á„oMUº5˜Ú˜hM00XMJ£vI©È#xÄ ùT¿Ïœ¹¸/æX¢ž0A®¡Óq¹Ä(d”ò¥:øÈˆ((™c`¦Ú6 Qâ¦î_9’(ã¥mÇo¬UYÞ¢iŒÖç³-ÌæfNf6æéû=¡Rj0˜pųÕÓ>í(ê¯xšÍ~±îel>™5šbíÄÍr•ª«eGA£z¨“9d~57á—QÉK“KÔ "H¥Ô#6Sóh™Z v`ùr&.öÖÜà­8<]ÓüÇ–à†3¼Vä ÁŠ‘ûŽ©Jã§ÏÇjM§¾Yn~«ËÛì¹&5Ÿ/ýŒ YA5E,@ü°½CL<Ômš¥F¾¼ßÇ´ïêÃÙ .iwÜ3G÷@7É Bm%ÃÏþ^>ÿ3þñåñÖvùs‘ÿa$„ЂÊÒ(%j«O{7’Rü ·_ü[2Wc[§K–#•1BSÉŒI„étÅ¡yŠÇùj×>…£Ü>5˜|¨öÕš+¥Þò^M_ìÙ¬´B]‰Ôª”:á…(¬l×=¿²ï1¦Fa¿ÇzÄÛhÐôu‡Í¾Y£Ø¿íç¼£Õ]žê½5t Ãß{cðÄêaUŽØˆíBËØR­w\;Px‹º²äP€ áJ©ÛyÆ&v-*%–o½Òÿ··@>g(LÓ,¹¦íÆF ‘¢F/€(³K«dv]B+Lk­SÇâÿ¥òÉîÿTYÉU樒Ün¦cú…Ó¿ ›_9ÍzV1éyâ]’ ' BÆ _[D$R…R&Š-ÒåP%ÃåÔ{ñp•¶mÎE¶.›ü8Ê´#Úx%T¯Ww“52Éy×ûƬ•”‚¸‰+ÁZEô-ríÓN¹!bÍ4 Ãï\d)ã%×mÛ˜š&_ô=­» g©FMNI6ï½ÕtÍè6(Xä ªi:¸åJCV'SƬ!eÓPb…Êe’ì{Tx1ÐõfÞhÍ äieEžv‚²ˆU®dørˆH¡Í+úÞ’ʨµ•bÃͤdöVuæ*õlxoîm6IN˜L ‘M~ 0!¤}t£ZE•®²GU‰ºªºsûÔ<>6w»ySµ^"ÀÓdà¤÷½„¥ÀqûR#•tÇ#³Òr›¥zóLt½•hp›R+‹uÁå2A5+Uüf5¸ïqÅK7ÏŸt—Ÿ÷v²=jØò4ñ›µØ5»’ƒt,+¥*”þƒ€l áMŽbFà/þ¨@R&37CwûùMÂŒ€;ž]¯MÒ|¹-…ñ°Ó æÍfsWƯ豹i$½Ùû#ñº¯Séý«ŸÍÓŒûþÊ›Š"4]û+e¢Ö„”±€©,õ‹ø;·Oʬ)EÑ<óovXBäç+¯ëA´G}Ðá;¶çw‡åüø†E?à=¿êÞl­ø³µñy_ÖSÁ#) æZr¼ÑCTØö@qÁ C¾q6Qè}ïw`WÝ5\†cYˆ"c[Š5˜…ÛÛ#I€€Ò[˜¤?¼ë‘ˆú$0™z÷$Õýˆ9.Ld 9Þã€@µ%7ä<òñ$X”4¼„€mè9¨Z¡1[åN Y×Ëõ3“WwÉ5ž]S¿È‘T®?ê¤Zg]nHªPo3nginU ŒPûíÁIÍRÔÿ*W?ý9'C‘GG‚N•’+V0Á5Ól×_2ÐÒÜ Û7€`í®îÀ“wK@i¿*Ö  Í3Q ®–Øþ©–jX°ÂU›ÕòñÊ÷D÷ }\`—þMô=HM%B¥,´dÝ o:Ô†•^`¦+¥Ò ûœô€¹“Ũ”näÔÿr3»5ìÍ»#©1^L&ìÐnêmUS´Ý Ý<É;`Ðd§÷²ÉÑù f i=K(òwÕÊ$ç]4ðÿŸQ SAb:½1Ð#ìû–¾m°V¬lžÔ%­ùwîHµ7;Wï2²1UÔÍ8êreAøï¸r§—ZœgJ»Ž"ú”:É^*‚|UIg+JP¨øtÞ=j¹œï‹­ª€KB„­æ,îpf(Ypsˆ*‹š²KdPÂñM½ÅÍŠx@y‡s*B1‹tÌ_ c@{6þ!¨«©rt©ÛºT;묣ͭ•Ô„|¢[d^ymœÞ¤fÎ[")ø©o›wûte!œiµpûö\€28QŽâ#jZT†e¬í•)h²àúþ¶ŸÏï:$”TäûâÄ€p$÷ æ$¸8ôDÒLxÆÄ…†þô$ÈR%ûLa3‹ÑŸ³Ù°¼¨8M‡‹1¥HSù9VLgj¡î–’iá[9Ÿf&× ƒÏ6ìÐSÃL|u³åæO|BQ"·9Yùjn=BBÏÛò9 R,Md죩‚¿ÈKªH{u0íbfÿá0 35ì5—j¬EýRLr±pÛ² %d0{¬ÙÃû¢'}ê8aÅ'®èà­d.VT‡G PÏ 4˜·‹©f·s¶P]N*i%ˆã†VÞ< “ÖÔÌ7‡žA5V°jŽïÛ¢@¤âÒƒÛ²îZ¬忥iÁ² \¶Å‡Jþ(¨ï-+ý(.{¹…þ0ÝXWòV×&¸[š€ý¯&Š¿ør\Xôð#yÂL±’Íò[!Ω^tÃbiñðÄø†Ò, DBžm ×/ÔÒ$']ø!®¡ØÐBMŠ˜âYª¢vë®u_>Ñ#;ó%øóÞÝ%ºK#à';UÏ\ÔÝߨ¶£aݱùÉG ·„”™¨GÉZ‚'¯«îï #:Ýv¯–~}zè̸M/ã³6º,Ñ"mI¶hò¯PZáH˜=…ZÚVs¬¿#ªÕÞj=˜ªPÁ¤ËЗk³Qît‡õÕü‚®ª/4Ð’6| ô‡øß†°÷&ç‰yžn“äºS¿¹ì"é`¦QR L·¤¤·™@¸Eþ’Þª•·UÀeGp÷S%#ÎQí’¦hçE‹Þ^¤Õ•{ áFóª‹Eße›²BùÒ”T´¼O¦A5 ä\Õ,wÖ`!„ÿ4¿·,µ¦ EýB9M7ÐÇJ'\åM‘ËP9,øРć«\óD¤ð[íëÖ,ÔT<:ø;TLý›é¢ÞÝgÂñÞÅýW9ÅywWŒ4l^iûÍOØ”âÓÃiØh¬¨ß,D·$]ÿ_É‘†ò‚ßd¡2T·Â‚½¹ô2KåzRËŒç<Äeö[ÑÏÜÊt䇜8/±ÏS†@\ô†+Ÿg€j¯ÝøýFÝÖÈ@PºÿÝØÚe¥(Æõßeqãâ±Éâ7!¦bä÷-·BA”¤Ë3«žeœ’Öù ášbض’–d;7/º1-Å6á-ÿ¨ÏìÙùP(]‘Íp¸°Øñ®¡ï™T½FSì&ï\?u£]u\”Œ¿š7Þ¯^pÛîu]ñàÔ¾(_9³'2çáÑÈšpÿ1Æ@’p#rñi'œ·Ôv@ „!btçPÉ}ÓM‚BZô®™ûtä[iÿFËŠÿ§Nä€p+šdá´Û°ÏBh³¹%55¢Î= ì³é –÷\ïƒÜ_7tŸåƒ: )›‰]ÙkÇß¾©´ÉÐR€×Óâ;Féõ‚†5+ô9í¯á؃Gz€ƒͺs–œÒ¦)üqXئ»k$M¬K_Û¬Lúhr~Ã;ˆÊÒ¦E£ùëÉ]KIÕPÚS~‡Ÿ£[Η¬Â¨ÖyZéÓNÐØÂ£§€d$8Ë*ÖûsÐc;»À aºÒZµ#êâ2ðô9s‘ø”Fú6 bW€Þ1`O“X¦,âoPRỲl]Šjð›ÅkªU›CÕÑÂp;޼{kX*CÍøÏž‹º`ý2áy²è«0Q‰ê™I5 ³ßQ¹B‹«_œß† ±ÊµÍ/îÔ•™M)‰­Qô ‘x¯TCÌQ›¿ý_µÔ× „)ò( ØE¡Ó¥äZ(ðÉ02ŠnP”ÛBQÔÚ|§ÍD¥„É+lB÷ì– –§0CMÖƒg­·(sÑN·ñ®ÛG²l.V#DÅÂëAabw=@ ‹áŽj\loR:ê¤<i®#\Å'ÐÚØp|©¤³d×,†}î– £´8•£Ç´«tKkìôÊâ"Œãšr1®ÝbKñÕÚžñ¾jk¦$ð‰OÖ”Ï#ë*Þ~B§…Íúü€g[¼é´‡'cÍÑA[ÊàâÔ35ö¶múˆÒRãlêYš$@×_9÷v3jzi ¸Ň'ÀU„Ù>G.O‡Ç™Zö’…ô{'E½™÷`ª¸gcó¼ÈÒ}×DqµK£·1mx­¶]¶À†¶˜ÙîŽü«q ( ’C—±úqi6L¬;<”±\éô+" 5ö;ÐeÆ÷ÕwiCŽJÑlSè(›‹Øƒád(·ÀÝã¨^1eSáÕ5D:jNfYUÇ*—Kñ&grZê»4XlϨP¬â—¶3Íœ¬T®IÍòo˜_e :oÃÙy¾€»úØ Ä/*˜ò @¡7þ¶†;ˆ¤J¾ˆlXK†?ĉ…ÏÙÂ…YïzåW0}ýßž#k‘v›t Yԣצj EЂ#2¡ˆìaYé0k©\Î7 i •åtmOÑ^NÎ˨MmˆSgÍ$+ÅÇ|HbM>ˆ¬Ð¢vÂ1ÁGcKµ ¸·L0m‡çÌž q¢*$l2‹!Š$_® *X›H\ưï¬äG™’FOUL'ˆÊ¤¥|?EIUA´)$Š÷ù!åÒ äŒ™Ð§QÚ¯m˜éOEz‘`#Z–zÀ1/Cºj»móȶ€d‰Ð»…ÌNéá»’ ¡¿âÐØ€=È!‰§µšg#Ý]‡/íÄ,;Ð#©>Iê j3^>¢¸ƒÒEíöj‘^†ƒàMz«›Âþ"6nŠÄ9;0}›Ê†wq$#z‹Ã¤6¬@(ìw}ƒGpÇ.‰—­~š˜b2KcPäÙ2’׳Ö9(œPÐn*®‚XÚŽE‹. ‰|-”¹øI=ó¬-ë~™Ó×å´ùÍ ˜>I Ãsª!6¤!zá¸QæaƒÉ±ÜèŽxZ¹ ±i“3å>äf˜^úÜÈgó$ÆŠóYŒaC*¡Øç…¦SŒUi c¼â'¤ÌÔÐß4 ަwø¿«ÒQ¦6ùL±Pä.‚±qżKwDÕê>Aʄ߿ÞÕÂJŽNÌžÉLbÞ ²$ßRû=¡rĈ©CÀ7Š5sõ~ýkLbbÎ-ÈÞ$õäFèvHŠÇÈ ”r~ZÑ(¡U"qÃð­#i4ÜöTSm(ñ@3Q)¾ pfö=šåIà§èlÉ1Ñsn€¾†Á=‰C~[)¢OQâ|$²¿’¸ Sh× $ù@+ép(œËï™·3m_µó¦-» sF¸UêHHJ`V%»0=ü–ß”ü>¾†Ó…2ª£þbIÁ“ lVz­SoAø[ƪ6ábÀy®߉‚D%Gj¢Â º®Ä€Å+ZÊ£¶/%DüªG£>[A[³¹µšPD¡”Ýë;'©>‘v:ÑÞI'|3Ä[GSì@RÓãÖZj–¢)3À:2>ýZÕ]È!–gœ Uæ¶K“¦©"äKÑ éŠÐ2"¥r1+“:L_Ñö•ý3¶Éê*÷ˆ(ØÉ-õ7ÄAª ÑÀln]µV×phÕPLú_S³­”ß±´×½ÕL­ƒAá)¦wôZ@‡4ƒL–è_…3õ1Ü›JÎêgëNº§¶‰ƒD\\ ´ÝÂ]Â;ãÍŒ”sÊN ´*ÕÄ1Q–g×o¦i4˜]ÖªãÓldóÔâV¨ý1ÂM*£ÝÒÎb)_'It›®óVvÿO&œ!âµf)sÛ¸ÄÌe说àzÐСL.‹&”"¹ÎCudÖŠû„Æ Ÿˆ«iAÄßq]O­ÕVªUk…-µùÃC#±uö’i¾?‹|ú< n½æ•ÿ—£÷?ˆ ) %ƒò[éœtƒöçOpÑté ‰|aܹ… A¾J$¨VHæ»ÏZÊZt=ã4ð#ñåéb:_åØö[ºp œºâ”ÿ¦Z¦³--èU~=`ÛÊ’'àS‹bÒ#GºÈ(u.^¥æ| }à y]«íå‡ñ/‡Œ‚Øv±$÷õ0kgÝé_<Áš@´‹Ö>ñ ÊM>j¹ÈQ}~héV66| üJ¿†!ðZ=‰x’8’e®ò»% Û|}‚îF6òßÏ ËJ7ê0Uem{æCQŸ¬k1x“; ‹óhœW‰p¹ºÿcì¾'kA~¼ºÌÕw…I$¹5ºN(›ÐÞ‰„˜óãó8‹QZúGkKÖéx)M:—¿A›mÕ?}lI/œôÌ¼Û T9räóf¯ÑÎ)Ì nÄKf°ß&rÛˆf¯×œ “ãèÄŸ­ðë€hØ™DR‰Æ.÷¡1+• _bQ‘–ÁèA%·&ÿŠ·H-%,â\‡¤èXñÑ@/agLRxø¿—ÑÈpJZ"zrû7N›ÿÈà R2€kü#=ÿ_ô'‚;=yV2ôˆ#¼i½š uó¯@s3Y¬D´Ñ $¡‚¿Ê.w$š¹\)Å—Àvc¶³ª<;~Õ;ØXàæ÷Óƒ=âmG•é‚!&_û‚Eç}¬ˆïiIôUñ¦1<†ra´WòT¿âmXA."ƒ•»Ï[$k ‰Üóh‡£íNSãá=¨WÇrÝì0•йc6`\wãh“’»f YNë¯]œ¯NUSœ¥]b4—<ñýpóòSeñ0tW´à`UØwÐbcuŒ ,TTNgˆŠeɯ…ì>¼1KºéJÒ¬äá©]¥_/¢‡j^H¯ñÛmlÄŠÇtD['_Áâ ™Ð<#ÔS]¦½ ¦¾Y®éqFž µ èØ=YL=*)Ï‹É5:…$ ;ê¢âV¢ÉšÛÄ-ÏL!ƒª*¯DP|¨.ÜE¶NµC™Æ·—à`áÀãÉGJ»ç¬ê¸_¹Ñ6éMnii@K!Ø~FíSÁ›zùânØ„qqÏÄâöÞÚý³— œ EDdSç›Ã<°dôBZ}¾`½ÉYð–ÄK‡H®B`ì>ue“EÏ‘Ù-™z£’¯çp}‚áu›ñVŸAyÖ SÍÙFÚ‚+ž4fµì˜Ö«½¼´xCø§¬½÷hd¦:è¸\¯²O`ÆÕ`Þ(•›ÝføžM}y*ç Ÿe8=µ±tõ˜f÷7?C!}îN†È7`†¸O_]°m€€)Ìç@oüŒ€MF›U.T ccèIƒ|Sá+{© ´²/êh:ÃÎñ —ŽSt²B†Ú’¼º×ŸRcPc˜ºªCŻѮúRà4<„”NÕÐPŸ)ø2 • åÜîy# m›[ªÙQÌ6ñÚÊèàw„&yÖÁií!ïÐ×U]6n~ž©ö2…”Ϙ3Uí3BÞ `Êþª¾—ž^& êŠèa"ê?¬Ú;‘éŽ4ANWÔþˆiJ(,7¹p¸½­í‰Œ)ÊLî\¸7¼ÊÒ€ä¸U¾*%PN®ñ=ù¶ t馉UA\¸B¦±ûø2Fñ©ª­ÒÁÏL\Ϥ›‚<>§ÊeÙÚ4N~¼UíéGIí¢&l‚j#uéT/žqžŽryÞÒ±M€xJ‹‹éHÊq‘\Q¦~üQ |ÐöÊ/X¨d_zÓßzg²™&oî­}Êù„-§Þ¦ €j‡+¦‘V#D“ºÿÒáUo¸ø^zªJÇé…Õë‘FôrÀ#]Å)©@eb•؃/lbSâ /v ®„àQ~tÒ ‰à5Û¶ö s&Ò•åßUdÜ(ÐâP(&yÌf S¾…fF\Þ#ü<Ï.mômˆŒƒ—‰#0š©´˜ÿß¹ #€ÀIÙs×¼OFª§-•±q¹ŠDÁ€'îÌ0„F}f‚$À7|“¿GdÂ,FÅ-ņv m²ð£¦`~£é' ˜äËà Uõ>û,ªõB~•ÝÒêé‰ÚŽ+ìéêÝÂr€U"îˆsbýÓŽUÉ PšÕgŠ^Õ+¶Ð$×CÑgˆÔ¬]ÒwVÊEÔøJ* !y&I¾`®=m ÷—T±U!gÉ¿BÍì°'@ ç¦‹ü®:ì4ê ‘‰°ëâê5¤ïï5ŽcS¦}$é#)ÜŒdñ› Ž ¥ƒÞˆ¹vZKþJSò„ sÏ]…ŽB¹-‹úzâU`ƒFjÂF{Ь yRNbÊQ…Mó’Ç75‹Îºmµ&‡Jr¥Ãzôî| ‚\Ã$úÃÌNÍ–Á¹nNvzèòˆƒ@vO ŒC{ÃJâüj‰éƒè1z×úÑþ¶®ŸA·f9v &–ß:uÈA« LáË}3s?ЈwkLíC åöÂ94D¶Ëµ?VÂE˜f~‘Á>GZ&2l&úº*Ñ E rz¦öùtV·˜áˆÏê ù–TM$²«íÈa-8×ß`ÌÌ›-„Ñ©U_U„feÙ%ÍÕ*:+Íâg͇Œú,íaƲì©~7ðÈêžk㡉G- s¦ÐÐý\Ï•@gw)t’T†Ü··6L´ çzg€d²ÌØq÷hŽװ¬·[vcp ò˜Ÿiä‰#5šCÐ~æñ³eo}sâšþ i¬ºCφ8@rupÖ“ôµÜéP^ƒ ß Ô‹¬½g¸‡oÜR/N*Xñ7~¿ ˆ½­{4]”ÞXŠB™APÑ)sÐQbß@²:Y6}¥–´Û·'ñ®Ôfà+_ŽÕ'uÂäBz‡¸ET–6û ¼ÃÑSid]¹µ%œ²Ü(Xüᢼïô°ou‡ÌÑab½dæjUbŠ,[Š1í’c»¯× ‹ ­$Wí}*¯~hçog“r¯ã-AXÿÚ‹ ­Æ£—úªC˜°å¯n¿‰øYäª4Iu‡¶zá݈Á—{ñäñØ­»6fþ´¢²òlÝqgq†XFT]Ñ u›F‰ @ž³6\öÃíÛ@£nCFÏ2*»‡€þÙ”’˜ɬL]Þ÷ðv>—©áÏ¢iw¾#¸-SäÔB™4#æƒ ð7ÓI¦}¸ßô4OÆ‹¼:AàEö1ýØ"^»Õý¹Y´DìbstòË(¡.)Ï\rÓöfö‰fG é ÿÁãW™7K¥Êã…—¿í'FØf‡÷–o¿9úfùHu*ûóð­ô LžÑu8Á·½ãÜÔøÊáYê™ß´4÷º¾¨Óݰa+2ÔÝ_à7 B÷Á­© 6ĉ^¾/ÆsªlíÜBùð¬DÎ"ÝUïÄÀE×þåM×Cé®”á ö]†’+Ö®7ºµOVÂö~ˆæ‚L·˜|ÎB2¶(+ólB}F|±hÃF=4tÇRý~”Æ ¿´ÆYÝ" ¥ÒθWÞ‘íÛXº¹JGÆo:¢¤?„®DRÁD>üFXª™¨jUO-=LÔ7vyByä.Ê=:è΄KþæÆeºí(Tüˆ¥Ž†NýÉäÄ(, *ý˜NókB—Xø6ivh>Yx‰ð]ßå-‡!“ôë)Ådm[?¡n0ü›OÐcùuêÆÑUŽH8Žo­m×¢Àc‰$|TU¾c³†-iä‰J? Fš´.¦j²ž ÉDhÁlT]Û¬ólA3£áE½4ÇdnÆ%«jµ0¼íVá"¼è¶ÍT‘W纸±YÙŽæµJU“Áô&¶h•,ÌÍ«$Ï»aØH‚rú|?Xས! 0j™!w¢wð 2\GM>hß Å!³ZSÖÃ4»w áø™@V<ÙÎèC„¹§ióÐ}ad6ú,Ÿg÷mß>×Öc-^øŠG`Ha+á±û1ÌÇO°8%˜ü0¢•añ œ«cU²\+þ¢x@Ì^iþËIkÀø-Æ7Ä€y÷Fæ,G;æ­æ†U1´QBägEßfËXOm;Ľ`ã+ø8`-î,šu±}1è¸Ñ­,ñ-ÂÖƒÛØd¡Kôõ7ƒ± ÁÑp–ð~B»`ÃpYC¦«Cè1Cm —æƒbZ€-ï/s:¿†‰d¯ˆzïˆ×¯r@uZ 0šŸ5Œ5í”»³ÑVvX&4 ¢Ÿé„?›´-b¶‡pÃAXÕæfK+~yWm«âlóV aç”d×ÇmÌwó‘ë3¿ÔÍ]X^í°¡Ÿ#>3Ø3³u¢Ë {­Ó|ø|"Wƒâ³ÂôzªÒÚöO=?+º;HçÕHvvLUuj Ê™¼ª|Òñ-u9K̪-å sµ7F߇ÐÝTÁ×x¥ÏV|œëÝ->7PZÉñPU›Í'\i à˜ñ`¤©ì\-. øGØ®°Y~3e1‘¾.Ù—ã!ižøYlب"bO–ÈcaT‘#ƒHÌÂb 8ÄúÛB%œî§rð2ÅxÞÕýýœEA^6J®ÇNòú˜ù=ùßž„h1r3îòYŒ]|³Ëvï ‘Ù !$®Ój¤x@V «K üòA tCrôâlfH3½vG3$A“¬¬6mõ¢Ã{õœ.ãäW$´3”À½Ý^Q—±<ÂôLY…œ·šªOt0Nv›g5ÙO—¥6X»h&^~„À¹zWÅ¥5Ššs—Ý%œ>æœ#ˆú¶·L, ¬O]¯¹OjvvÑçñ “Tì‚LLÜcr´%ÈGØöd#v¸þ¹øBÎch~?JU|÷z5/:¹wóID/kÕ$Œ¡PÝB.<Κ¦k¼Ù0EZM|9@Tz=ókv‹VÒz¹ͪJ × m kÜY'ÇI0·ƒTBÕò ©Â.Ójì/¸4§te|’ƒ\0Q(£¸´EZúÊ($ßj^zQ¡¡,[…!é¦Íë‹Ï•Wùè~à¡b«Î¥;°©uBk˜ÔîX ¿ëEm˜‡x%kDo]>2 Ýâ˜S?.ÖÆT AÄEnå(c¸'îdÒª1&™Àвªj4øj3æC ÎÛz_M$BKAƒqÑbKé¿u; õaÊ­¨·Û—úŠóÀ/â5…åé;Êšƒ‹? òz–P:«P 2¹RÌn‚J¿}ÄkK¥q+…Qf"õåZK5ÜàÔG’¨Àâ‹v аál×§/«E zpÕÜp¿ò§ =ÕÞ²JÖGfln%ñßí½qª¾Ud™2ë©€3ƒ*bIæ'f벂t5´U’›ñ -Ö2¿xæZßQòÙŠQxkËÀ¯+ÉUŒ¤ Q¾ÙËJÎæ:ÑÝ4Ñ颂³=/zt’–ÚcA;ó H‚<5c}^ŠÝê€êTÍÚÛÙ¬`ðÔh[ªÆ¶Ë½† Ü9AùrÛq4&ü<Àý>>‰Ë ¼Ë˜]i“#ïX¡\èCMµ(†59OÀbhÉ›wtã'ÔtÌmu¼x@9±AmÌÏ· „¡dNÓeP”Ð×`¨Ê¡»Tû[F]\Õò!‹BîÜXÔ vŒÓ\{Ðh®O'4ú„{_ä( 2LN_T{sw½ã ÚŒ~ÆÙêfR¸AqÎSë㌎)ÛšׯUg› ÁA´…g—%ê|(ãß¾ÄOó©KŒŒ¨ aÇy@ÓºTñm.zòj\ÓÞ-H;ŒWÞ¤å88‚wÊ\Ö_'@¾D3RrÈŸ´aÌrµêŠç¯»3w`6­RÃVm,º™A°»©DBë¦cýNºë Ù\E’6ÖÀˆÔJ1u¨<§÷På§I?ž WNõJ×R8UZ£ó—° `ÍQp§Òûvø{>ßíeɨÞäÉ–¾šY¾=Tsw‹ 3:¯B sfD”»Œí®¡O´•"A)»\Ú…ž#EÀÖ[KHEº´åí'¡yôoQîÙôéX×;š[¿Í82:ØäÄøx]È2fZ;q㿎†_@¬"PcC¼æå¼¹Æ=º· ¿ï„ÅíW¼´údìMÏóH&ΩaoåøXºÕL`¡+[‚—ßô´ÿÊ#‚äç°s.¤9®¿„ þ2I©{qq€þq—ð0ÁÚ‰‘¼"î¥ÿP¡ó»ðþ›÷¹ÿÆ’ñ 5Š‚ð‰õL×}Ø“w~JÒÏåC¤ì4ëÝçLÝO¿N"xéð8öÕÔÓãÚ‹‘¦TåUOCûþÂż’ixk¿¹L??-p¿Ìj¥ú6•bøèö–M@è0‰œIÂ9‚ ï1!&9§úi0ÞáJ^]ÉpÈ彚$uT©”óNó~zYNu ¯tƒ_*5Cr*r°#l›<ÄÚ2€™öj4¼"•ýóCꢊ–9ó¯a½Æ¶·%ÝôëƒßU)á3®.±±º+W‘ ›žŒóíÚGý¼‡™ÈåÚ«™n"*jŸ Èú =Jö` GˆZNŠKE=ì5=*Zx-Ã>ölè¿÷ÙåýsH¢¸=D‡ŠÊÏÅM–$ª;B¶‹²dè×þä‘U ÊÛݱgîYñúá Nä­=EI`\2õ‘¿?å×ß¾ë»?@ ózÃßp˜OˆUØSqú¼ÏlêZ&f=¦":ÒŒä˜& æ„'ïÑ?oé›°Þ¢oà‡è½!™ÿmÙÛÑÔL(„<Ìs=”ö&[VcŠ\ÍÊcÅW*}ꞀS ßIÖlAÅ%öý{Ür'•9#u/9íÎK'•u_zÈ5¨{ \ü°±à×ÊeQ£ §ÀF/ mú¼J¢[2çü0*òeÁÏ0ÓPà31•8à‚êÞ«˜(ßÿ‘¸ƒ3”N®„¸56no{¼‘֢Ń=ÉIëV΀”L^Øn0ŽàFsUüSm0«º\]m -Ã6\qW¥\HJŠ.¼Z^³~–¡(A‹¯Ÿ¾yY-ÕQÒA}§߇ô£Ö­Ô—ïEŸ’ËBÛŠ¢(LJ½;£«açõ ï2êUÆ´ ã†ã…Œå˳ã wNZÓé<™¨OÝ!•ÍQ’å쀺é~ž‹‘"yÁ©Ñ“RtžG×€,ò6b|ú™Ý©Ðöîhðý÷¤ÈbØ>ô°÷"Ïv“vÊ”-oßzüÖ÷æÄö‡Dpòƒ{Þ‰¢l÷‚Ò˜Sªú{˪ãcßG’ëX´‘½ûÄ4óð+R¼ÜC‰iVöE¥_œÔH€ÙFôÛ¦à%!þ-^­°h¬>ù-Öf3jÿåníç|&âÿ¤Å¤RÇæMìåRXr¦µžîNÿ´àåµnŽ[èØMo'] ¨ä}AS\*ìD¡zbrÖ¯å}¼ûõ½¢ûIô šTع_ßsjFæn3`”]׌¥cÙhIǕ细ûÐL ‹Êqhy©Â–ÅÀ*?A$¨¿ M¥pQF¤Z§·êñ‘УÁeLm,² Åéjl{nÆ4›ê ¡_Hœ'?ŸŽ°#ûÀ*ûR‘Ð2Ûƒ8üW(X]]ÿlÒµ9m÷(YÛŒ^A%W¢ühŽ•9à.ë!Må$¾Ù+ßù±Ádê_Ì&@ON‹c™KÚf†Yš¼Ú}ñŽ^ \QTùV×VÆ£ùnÜÐ FÝS8#º˜Ž(íU2hÒš—¤DXÖ™ô#ë¯q4a¹¨ÂK;¤…<òïý TÜ6•—7G®6Õgâ,Hþüµ­BÄu±ypB• ‰0ƒ,`PK6R­~ åª\b¸ÅêL;Z*¡>¸9X:¯w羕Â`íëÒdÄD,ž•"Få Jsš3ûK\`å >BÞ²³³‘\þbί c¥á8ÄÈßlW$8Û5J5qÒü»‰KœR–áÕã‚q{)3+r[æð²a˜€.û*ž>¢ü5ÆceÏÐzp÷ðÇȬòÞM0C‘κlÄðé8TÂ~ž+™9_Ì„óÿõª‘’¢;üZÖ®ã+>-Y”â=£Û°dmÇd˜^!’ã–SX0V$Òs]K ªñoB¬:êù~í=×ñâRÌj:dÚ®™º½@ó¿$-åÉô‹žÏ£kÐ8š-Xšô(g^òÉÏÒÃ"ÛE4T×,õžŽØ¢”\ŒÄô³û)7É Q5É*ÐìžñR5…  JKž®T{ò”öèŒfëB²¨xD‹ØÕ·òmú.r¥Qý¾AC>x&'¯“YÆ X"–×A:¨•ž—“Ü\«^¢+Vþ34ze~pðÀ…R4mm~S7SM &ê¯ßJÙ)IÊtL¢Ê[OG*8kÄhþgmÎéšBûSbø+£Ù8î£èÕʧa#û|õtíXüõ¬‹ j,NïHœµÓnºÖ|[’%pŸ\é¼h}§µ›B&.¯!GïÿHÚ¬ Š<€‰’B=k½hù87Riˆq#æ}?¢‘—7º4êÄ9fÑ¢¶¿Ÿþíryf– :ö9P°aFؘXwÚ IÑ•{/Õ&ÉçìspßB|P€ÓáÙO­Õ–‰ì°‚w˜ÞvéVƽ$bVoÁ¦lb7fµ,˜,`‘ü*,1&š­2Ráâ&jx¾ë3õ*>Iå ÆWù°aZqBœ…­êšb6ÍL©ùF 1`ky#‹ÅQæàóqµºx– (Ô^¢Àb°§kb!2Wô°„;gºŒÂº.S Ç_?ÌР›¶´"]ç¨Æ½½æ;ôL3…BÖ„r¨Ö%ªöÒC§Gµ;±\8LêšVî­ÍáL©S.ÀV¨ÞRiŽ,¸ËMõr—748ÐÇîç³×9Ë)ɬ!¯‹Îìu jó2. fcU{êËPÚûšÂ³s[МžXõáíË ü7Y\_­C<«À. ,9m·ºù&ì´·ˆÈ@q“Ïêå1UÝ‹xTèÚVL”χ‚öëlQU.çÚ{¦ön]AjYý²…ÙlK{Gû¡\qù]Ë¿Ú"*®¾ÎîëFµ­r-ãìPþàH^†æúÊ£üø·^<“óþL˵‡Z’¾¹~øeŠ/úKDk‚c …ªkvó>ÒÖª ïI-ÛY|IYykP欓Árïn “ìðP®bWŽƒÉ_¢Èiý†Ë´GŸ½‚BhtCú‚“ê„eLœß(äú µwÊÅê¥CxȧEèɽ¦×ÍnG‚Ys*ïáÕÔöâM½NQ)ÔqÌ´à³mD_ð€jÎÞ’Ìg&’'OåžëŠð×£iéðêð¸É$˜Q¥¾VdÆRG‡¯AÐà#á<îUX/Cê&ä©òØSÏ)´&ÉŒò{ãžJdS±µx¤¼gz‘Úd@D •wBÔ½oý ýÔ¸½+%GÂ6gÞÍ­Ò¡xõ=yu^¼ { Ÿmž ¦yfPj¶’6pºDŸÄÍisK_`€WÄÌ2Uk*-±–×ÉC¿å¥Ü~B6Jˆ ©k®Ÿu`®äJ=Ìⱎ‡=Ú÷åÙ ì®ê)êÊœVØ'›€Ø:ÓÚÔ‰>«Ó’Œ¤š×§=’Os•Ã[LÙ¹t^;FöF%aß­°â˜ˆIµï«Š¥‰úo®¶59ìz®v¶ºš©Y6t.|cÕz5\sëoE>æ±Q£"~ ?²©-m¶g2béÀyµ'üwòaxç~©šÚˇå×^^)yƒú7µ|©Pʃ\vÒÿ`Rã–éZ4æ™bh]GœG©qèt{böp( \€}j%¨‡©-Žv'0³G÷<Ï !~ƒMÖ‚[v€½oA‹0"›´BÔ(“¶~=Áb}¾qznç's´¡š¨&{Y#âú)¹m28–«šê6Æèe¥P´ Б|McK¯0ßs=O29µ’£Y…StÚ½†m^. žQ™b`Õž*r5Lö‰nmüݦ®î.¹8ºÜ¨¼ØÎ›ìéEÁ'pÀÇuŒ Ù)?†úÍ ²#…àB³fU&¾Á²ÈÁ'–Ÿ&¶}÷W"¢1L›’5Ñ^Ø™kö&üåF.,2QɯÔò=Ò1RUz~ =ËXËU–ÎqRÚø‡†¯&+šƒ<– "Þ &Ãü–œ……ÉOÀŒMT´Qjx_8Ó,oq‡Y—Ê$®ÿ.¦Ë†¾fl©µxÍ’puwˆÊfÇ3ž!ÊšÍÎrôG ÇxÝ+yÝÑiŒô~ÊF-KÂåÑõekW53``0p Ýg\Žmpor•£)½kö5=8@C;úÝ1åùk…õ X6 ›jY ¡Â‚ €k¿‡Ëzz[>—›]a\¾MVðËwÚRNV\‹øN0×EÕ‘:9xP¢u0ÔxPõ®ˆè¼± 5@ÍwhñZsõAê&åÙ{{Ø(Áò88޶ÔÚ Ýv¯X‰ÿ(ª·Ç‘ß z¸žØ`4+ÑJÈ—²±wÐ DæÁÛ6ârXæÜlZÝùX—Cbï}w… ¼å Ë À9d»ñ>.ŽpŠd år9™!oyËäH;Ã~|äËêòÜDï60ÑdµÃÎ6¤*r®.ÇxÞÒº5ó# %w½J3,¸{€FlÞá»Ež6)ñq¨NW©¢!Òšó˦$2" Ìö ͹<ðºŸ(©“ Õ·ñ¾†²>nè OG‚ÛËs5ºX«†kІú¼ÇÔN^>™ö…J6srœ\ ¢/¹Xp׌nTbH` Z»ŽQ¹Ñº5ÕÙ››¼áJp‹ÑŽ>dÆt äØËÈ »Êø5¹ mªQž/F¥8'•Èkß|¨HWo¤+{ïJtåP¾Y“iϵò«ðá=Iܮ޻½µLsH+_¼. TÂS±c –Iææ™Ëg)Z™iîæ¥&+õ¸~„÷CÙÏÉÊElÞ­^i²|m”¹³øÓµc)³CµÖ¯»·\ÍJ>rû­òªÑy¬D±§V }5–šèXgÝÈíHˆÍk\èAWªNÂ!uZGDkLB“Ø1¿ß¦wŸÒtI  –3ß Gã>v\j± 2.È'¢]×t´Åÿ”Ó!‚½¡yñ·½PV(LÁÌZi¯¶œRK?ƒD³Aã¡­ Ç"®’:o:_ eÿ¥=ñ¢»#¹#òÛ¦u…]¥cá7“w±e¨È rìºe,æV«ânF 6*O)oÄû1T L‡£“K¹¸"Žcé[:ãÏËDK¯KödθÞO_Ë­ÝI5VŒæ®à阿xuå]‚8éß SCó]ÙtÊ;‡êÖã®ïí¸;ô¤2:˜”ö÷åò>hÿ$…)àZ Î#=¬Ž×íkHOL5E†l<¯¸/‘ A8U¥ò?²§L?Oµçcƒßu—äý6¹h£Ñ ºíÿ}DY¢ Yîíå]ík֖Ƭ„©IQJ§X .å9¨^TÏGXJ(:™O:u×¹ÅÁsùçÐÚ<ÃI&·põà xGŽ b†½‚”à¤$¦M¸‘oºÝh&l^ª\Ú²öt$ÊerÍ߃q£ãVàø5ÀÞ]ÌYZ¨u<‹µ?‘´äÌ[Í{ú¯7Ýÿ.˳óý;Ë1viÅ" çëO/fOpQ:d$«ù6¸&޲U×s¤Q?ã‘Ás¼H„ áC»)å!ãÿð hÉ…÷ͧUƒä$·È}šëáÚXr²zƒ „Œôœ¾g—ÃôyÅ4^¤-©DCå¶ ªvn™=ëTZHi¸q3t”TgÒ¢<«IfÜMšù"Kï‡ÈSø§ÆÞ ],ù,°r\ƒ+»aåÜEÚS·q(·OÓŒéL‡bm¸ùKt2aËé*©5R g zµ„Ñiæøë˜ïÊà°Þâ®yäE~1~~Ï’Gœñ˜El\²Ì/òÚÐ÷Ÿ×÷’õ(¨JÉoœû)K]Cºæaæ+UÎ ƒ&"| †róÄh( (Y~ƒZé 2Ì“îNæYiR›Oæi¬XØÙœâˆ7ïøÏ8f'ý¥kj,E;LJ†h'h2)z”!?µ¿0 ÕÍcƒä«Åm?‡3)°º€ÝNj¶hSîùȼè†cîבQ£øóVtªcB•ºŒ%úÏÈÈ6¼r‹JèC+³(L—‹Ð=Μù”-–^H‚Ž;¢ƒeQ5 üGÊ¡; z ÏàÙ’ÿ¸¹)XŒ³˜Í@óÏ=½ÏЗtî’³À6=3“Âz¿ðù,9 >ì¨û¾ :ˆ“Åw‚@\äy¦£Y‘ž¼ðIJ]*âO¶«ŽúÐ9H'2ìŽq DP‘Ï skhŠçà὜¯$ßÀ­¯ª7‚àÖ9wI„oÜxq°Þ½ü–Ï•°è‰n†ž9™h2iâzÍ8ðȾ+ŸØÑêyx5¸7¶À Z›$mjüºåAù©[°pöûÜ(˜5yr dn®d^ÝùèfÂD> AÏù ›r¥'¢á¾E¼«ß Ó’³MsÖYÉ95‚Ùl̃ì ..ïÂz$*En(©"aH¬\áöÇ=Ø‹~˜‰*Ïåä•д cȽ/Ó¶ÜVK—¯yrÈ´:a³¦BFE îå°5A pK-úÄ'Lº÷ËŠð²$¨öß›óõîLÌ·”Œ] õZ”öÐ$JÀ9>l¯"÷%AèÉPܯ—ó ÐÍ÷ÀúVžgÑ>Pÿ1ÊÕ·önÛp®c(²»Š‚®Þåwaì÷ƒ ³JQI—¡½±Uó•˜çDó”ɤÚ=§ØÑºaâXô\›UÉa¾iè;_ž$SQ¸Öj^³62úQã/ØDÿf1dƒU°ÔÕ²P¿zâ8ë)Ò}1Hé[vÓÒ»!\²Á³¿˜Iî;Û‡ÉMûynÏÜšÆo6Wi)b¾zø\rÏyõÿœl§…¦[±ë‘ÈÐ]‚×AËØÛš¨>+fÓÙmÕ]ŠíéNìøÓˆ6‹ƒiºŠÔ2¸&æ1µÆ7ùlhý"=èÝ„—–|ñT– …üv©AÍS“ö <¦ùå‡ùôM˜éã|9>évhùÎ;müëq mŸ?—ÂGÂr0i«Êño» ¤JáûðmÜßíàåOºL¥wű¦‡5÷¾ÊÔÆœÈ½s"åì;†°ŒƒÎEšÈPƒ4ýÆA=ílˆþ»o„;x¸*ø÷£áE£J~5-œ_ìÆˆ³:MóË5L<ìpiåò¶o:§WV½ruîÁ¸•Óê%yoó`j1LµI«^¨â#z8.‡†ÅHÿ*óÏç¹¹ïñe …Þdå¯K(¤¿4è8˪nòtzÌû=4[FÜ3s£§¿s1•e“=/7÷°¯‡1’Ifož]™®C.{¼ÌéŽuŽÅ»Vf•·¹Øsb]¨.£tU8.÷6%¹¬¤Gï®,t™^àÆ–hKBÑÍ”ª»‘®Þý¼_uã;ù-åÉZê{Üø ÑT¼Žéú››wŽ…3÷~:«L.T_ËI9%qÚm!2‘á)²ÚÑúüóÜf„‰E^ud„3j‘³Ä ŸL-¦¹Ï”šs ƒÛh0rÿ­ý¿X›¥ììêìŸêîž®žd9ó«…ž3ê’ƒC…Û{¦‚Õ¥Le<44>ùÈááæ‡Ø|ˆ±2û „y‚h˜ ’ ÿ«¿èŸÅÒ£ÆÍ§ $èÉSãñÅ4¬ÈÀå¤ÿGÞv™ç=Zm˜ *«§ z°,‰>M«TeE\×ÂéÖ²×ÞÂÔ”L’J—è“ùt‘nþøŠe¾îêa*NSîýC%œkHFiêöù}XJBÀDÛi l½Rá×¾µWÞŒ-{ŠÙ~«i`åpiÓqîô™ŒÚ{sxÆ3_²ÃOŒ9K¦™Å;õx³ëWö)þl]–%ß^Ÿ¯Ñ€0ªà7sÞÄv[§Vh _„Á)foeA“¢× 5mïg1é&yòPãópZG1ãk9µbù~ÃoB§À_;d¦K¥À<4þG=hQ]J" #;MÐ,^Ø%]Ýc@‘ýh€*wüGåò+šDêõ£s®Q.i¤ÒRÆ `Èw  ЉWçUÑŠ–I¶ÅÏðõyäúÈn…oó¾,”øJ¢_åÀ7Î"©aå(3¢HÖà†ÍüL7‘d[¾ !++T·Ù§D2ç¶9¥Žº|„¬ßv) e-ñ jÃÓöè¨Ô0\ZÑï_ˆ Ì…è1Ü —“=nátî<ÙÂi¼|Æõ…Æxé’ˆÙ)_@W܉q÷<¢f€›¦ÐŠâ?e3ÕH܆©58{ò±n¼e¬wEÍ\mèÖ1Wy,¡ÊxÚ8IuoSºg« ±(~ì‡ì.ú·ûÒøI¦B»é^ÎÉ’\[¬‹õ#óR{a?;8ªÎåûÙÅ Àd¦æþ!íé”-V#Ø„•ÙˆtDh­MÊ’{M<:” œF[À&.Ò*Dý;sêqGà˜a‰S²‡-#EЩ,ýUÌ<58Á@½§?|™™cw}ÑVÕÃî.4Ì~VN¼[Wõþ¬þ6”$ÀºëuôTAl>žm‚Ó`­¶icñÍÆU ãéEŒêÒ»)`»nÆ\»©Y˜65ã´9c-¾*xšÛNU@ [âÐiãì÷ Fnœ‚‰ŠÕ/gQh îÔ—s:èõ ]Ý’2ôPz.©†¥ßøD7 ü”‰å¾*RàcxqË‚{Ð ˆ²×Ã`¬ž[¯°š«„£Å»Õ Ù-É‹.b‹¨<(‰ãD9º]ƒYq]Ý^6èû‰Kƒé‹aa9)*öŒù¤•·Êõ·“çM\H*qTzx1ú6Fv×|Ù“ÿÈ3Ꙙ® ²v=KàUпSÜÅ '”kT“µ¸Š óÉ)”j‡o¥Ó’§÷”ŽltFVUüfRúu®PuùÚbyü†Üû›IG¬(Èò“Z>ÿê\n0R€B'+`¸ý'”Ž…@ vYPèã<ºQ:©#×ÐBG£!SwbYÔÓУ4ê/Ës0v`qÖU1 &¹ l=UϤ #ßmO9îÁ°æMld¶=9Ç$Ñ´æ-ÚÔ¶@ÅúT‘rëð>Ó Kºjå§i„Ù¼6·ñ®0Úu©QŸI~q`T}5+æ„E]¦ãŸ 3Ä ‚l±¨]ÄDz9¡5_)Åàzñ)Y>r¼7uüTâ›XiðÝÆøø lNø×o›ͧŠÐ|^³’l9›ŠPÛ‚y‰ëÈìk„SÝ7ÀÀϪ¤;:«™©æ: nŠ2ž?&ãzå̶Ÿjù±FM|ÃÜ3ƒtõ§ñýÞï“SüûÄÄ ÙÌ]]Ý•L}Ša]qj$ R®ð[!·wã ÖyrGž,éÔ„à ìË&Íú¨õíB´¢X+†©l SN .082Þ1l}HœÆä£:ûâÈw㠯Įƒ(>Ëh‚_`ÁëuÓ—½¬7¸«Òœ¦ŽÙjŠOsçºÄ³µ\àÊ`-ÂoLõO˜ƒú»øT££Âfç ºäBÌq úÇÍ1ú²ÐœmÁ±n3Åñ°ûa€Õ€3žøvfÓd†#z«Æ7û˜¤èœÙ®&+éH{㟠¿¢˜à #¸åìœ-<»4ï «t5zæžx À ëäY˜œž`ïãØ˜Ëå0u&ÙB‚×ûRsùŠKÅ⾄b>ŸÙ0%˜† ­%Sîm€Û† ø¬Ä‡$8,L½LØ“ã­<YD`þ_‘”ôý Ý…N„ý§Ti06íª`0ºú-¦ïÚ°º@´ÞÚ:n3úiíèAz~“»'Nüb¦CÀªdÿC­)v EoD BæséÕJkÙäIV–àñ1¬[a2¦ö'‚õE¼œ‘½A ˜I\¬5ïÌÅvimÆÄ÷Î(ÂÆÑ Ä~Ø÷¿ ›Pƒ²?zšº¿³HÎè,ÃÇ`̦†iÐÄ÷Ì&ªVÑŽý~ïÝg]=Ÿtv}ÜÝùiÏ;¿À´F’²mÙ °ÊìÍÑë‘öCø‰jJ”¡ãÏíeÄ…ò‹GSÜ»‚Aw´`ŠwK‚ ›@zØZ±]“x$a¡ Áç©:ÓJʰ¡ 3¾ògÊ;™údÕ·_'8’€îàoNø©‡»ù–3…Wy·ÙŒŠf‹¿®/ÊóÛa(Ín)„{OE6±oÐAnÊpËÞ¬ü©øŸBVw"X]ÞUJ¢^– ñ û{—,òû.λàÆ½ Йk1ú˜Åq)ŽyûÍcÇ•>*rA.Sõä`q»®Ì[&)àW êÇ…¡.íÆ [¿…šõÕ’7ë¬F õä³›:ãvëK‡ZØóQZí÷ëCb¹ÖŽ ð¢‚<ïêÔïæ/ZÑÒ‹~•"* J ÆL±BÃìø¨vÞu^<â,ŠiWoÏÝã"‹aIòúíD_2Ϩ( $+6Ú” ÑZït,’ûAµÔù>nKiêœiÚ ]±Ì–…©3V(^TÚ‡%Íܘõ":ú³åõáÃÙ1U#d³žõ3ƒÚ5qùöaöðË­.[ ô0˜¿?›Ï¨h¿Dx›TmÅ”%h@QµZ+eù’v&»ôŸ“Ûøoú|^UÅ[ítã wKy}›²£fÏsyf ùqåš› †ŠèêCµVÙš‡ÒÞ><;~=9¨Ðis¹ÑÒr.ÒÖÖä|‘î`aOû¬úþœ\àŒì‚ÉŸËíž¾ïã˪ǻ¨ÞI¸-‹$á^÷"ïo¯<çÕþžû?çÙ9©0ÛèÎ$æG,H[õ³i1Ýj¦˜¿·ÞÍ*×Y¿Ih¯ h»Q#“o˜=Flj£¥1a>wŠ€¢ž_õÕL CFë,4A ¥EûfR^V}ãä§5üêhâf À-I¢»|NêH‹œk`98‹)Æ¿y§ _ß;ú˜9Øcz«êž@ oý@uª>Uê-ÐZæÂ”Ððð%¿SDn;å>L‹]©9(À'b‘ÿ¨?ÔBg3þ{E¾£c-‹±«Ð… F-hÌ>êƒáEaEñÀ™©ê¯3òíþ&Ê–7ÅUTKÛÿ§îp—ö)ç-ƒ4µ{‚\¶_Þ˜zˆž„ð;¶· }SI“åy\T̰A”"`¬1À>œ¶Ùr}ùØ@:,ñ€*_ÍS&÷Z$,ž¹Æ+7i¼ VÝÑÄv=wϹ•@¥:L±¨ýCÃjªùµ¶ˆAèòŠ»ŠJšÍúêlÙ —Ëjðšüqrz*LzÁO(Aá»sùLʼn Ag¢³ñÖb_ÜjÁÜ~”$Š8 -ïP?¹ÈYl_dz’ãz»?‘’äÙù$Dp[&¤Ö÷`üå‚;;Co®Ÿ}LáiÜ÷Vv³‰ÍÈáwWúù:Ïñ›i{Z¤Ø]pí`¬-1¹”×%r›(²u–Nñ¤Ï#ý(ÐËà×UÁ‹è>§”`OÁjáJ|ø1NY£œüè5ô;€¿KúE¼kû|‘ÉûÄ)ÓGÇ),-ôû{Ê×ÀƧšÑ0ŠRtÿ8ïêçrI.˾Ø*-p»kïw;Te„ G6¶ÎÝØ¡ æh`ûd°³ÓR0Ôy«ÿJ>½=¦œ°,u³ ,ɨÙqv•™±çÒ¿<óôð¿¬óíDC zÓ¯àžÚºÙýÐVö_ýV[uúÏ•~jìà•‹¼º$ä53wì’Ûø†›D%Ót:0RÙ/ëótP&ÌØÍm‘¢{×…°;üÎT½„cËp)+Õ‚7±"9áÏÇu'Á"-°Š :Òí®#þóoòÊ~ƒ‡w£É1ó®*b=SM òéÛPŸ Ï$©Ü/# äa DÅ%µ~sUÊéE3êÁàÕŽ8Q™ÚÌr Nf†ÏQ×$“g>…Ø8I¡¦£¡Ð¢ë‰öI¢ 8-ÙS=—ÙT>6\lcR%òîÓ‹ŽÉ,.ÕSnᬉ~ç­ rÁBÇö¥¼£ñŒw MûÚ¡@2^Tɳè“ÅL®\÷WPåtñëÞ½Û:•ƒ·»{\<ÐlÔ‚Gˆy§ók?úÈÒ®:úæªú™ÚÍ*_£L‚´20kHv(ÉläÊâÖr ôÒ¾éñ?ı3Ì…;÷½ü‘åâÜÇ^ZþêK5ÖÐk®ï¼ýÐÌÛ€.à›KTs.ö½Û#vv/t\¤ssFµÃ¶÷¶V®2ðÎFY²·CÆjÀaF]¼ö¢gº^Œ×W­GË©mˆ?Kü.fk÷ðü{bÕ~æë ›ÿ?ÉÝ žH|lêïhÿ"ªÛ\tQwuLÜC/P‘oË]ãÕ‘ Ë5ÿ¢$Ú8 H›ü;oŒûCíð@K•EMéç;[¥¯ªÜŽ#A2n½RÄl«ç{榱ùêgd»¾DïÉ8êß´ÁÄ¢Œ P+«Ã ¼lýcZ¥ÃYb5ÿ b*Vo„üÝz-[–ïi¬èß½o¡¥m#BRŒ„¯Öß`b'©!€²ÑÛf÷¢3$èð‚ œlÙ±B;Õ;z¢{þÑIoüõ'ø~×пzš™Ù˜8fnëçÞ»x’/#`ÓÜ'î+ì¡3·î‚ÎgšëNΩ¥C ÊýêÇ~ªYµë>Ñ=Ý«ÅTJróÑ?Íʾ°uæ–G`étPíß ÖN{$Í$¢`nµçÐ4=·ýaŠSܼėû»óf°Q¾4.û¸­?¼Ú–ÝÂǯW¿ô4o%JÅ=rÎz#e–Ž6ñ¡Ÿ— +ÈÌUVb±ë†È)hby|CuÌ~|µD&z)²Ro À¯ÉÚø€áäbØÇà89 ÔÖ •"<‚ՠ"†ŒIæ:Òû2ÚÐG½cLÛ!è“Ù“XšK'² ã;v“sfíÛÎnyöNDF®=Hêr팧dä`Vã-Ÿ7–êþQëNiº«˜|×b˜®îdû8@'ÛFþxm|èw¾|ÔzèäÂsn¼4p˜˜+å6zÌéÇ0mW§ÓM&eÈþZsâ¼2µl]„6ÝvÿÏFóõ§ƒ|.Æî­î““àÆ‰.(5‹Ör@²š2hÁcµVj¬HßÞ5¢Y–"¬Øú¥’8UaQ+ÃcúÙ©f¹ùfÒGîâ‰1òoÚìI[ñ³­çµÆjaù3¡-ÑÓÊéhæ‘hFQëõúP,ëQýF`Â!¹kr™Åµ[þ÷d S#“É{æTšWæOŒ\“A–^εKiÔŒBWç4…+ÉÜmìË-oe¢³ü׊áÛ©a¶ÒÛ6UF¼f×Zˆ‰{ ¹Á©edJ–K‘©á¥MÆ^Ê8‡Q¤ÂU“¸Õ?ÀrÂþ{nƒQ`ëZ½QÕÚ|êéœÇ3·V?)œ­xmý+…õíš%#<ç‰Õø%DOAi]Žª?©È›âî¶šè®Kˆ:! ©y­ªG ½KžJ`û1ÄÖñGÔ‘PÛ©ôÆ™._äš¹ 9JçÝðu3ë‚Û‹¡ã·X´´ŽTO«¼T¢îÛÏ€c‰JĉMÜàŠðF–³¬ 7ó³÷ ¸:î­¹ š XJí~/Št—¿¨¹a]‡Rx<(¦¿)ßoæ=ÏÍ•ï„Âü^ Ç Z»eöic˜Ò³úZ8ŽôŽÊN¹NP%H˜>g]ûñþB{ C~؂ϫ4ÿÐC½«×¤éæ“­<óv¨‚6’–7£Þß,ª”#‡$ËMôÜ¢wÒ#?Xr©WOwŽÞìÑÜÊê»yºwÇÐK5™£Bß;4¥Ñ¸Óq摳 ïWJ¬å®ÙvénýªPNÁ•mcó;ŠÓ¯¤‚÷K/° €ê°³b¨îÚкø13'™ }÷žmå½JªZ’r#pb<¾ßn_Ho–¥Êø(„5-8·½ƒ¹å§§¯ @»™Óˆ•ð¿«û+V£ÃñÇ5B|(˜Òçéàuuó“mYºïlݧ~RQKBFv'þ–u¦¶/ŽÐ$Ÿßø½:¾ª#õIŽ–hÿ?zSÂŒ´ÎÏSA°F'?b-7Wä±üb“0é² r×ÊÃÙžI§b’y/’ ÑçbÅþ¹.ª8ÓÒå ’ªÞr;ô¬kogÏ4–Kæ’Ž¦X›&ÆÐ8w»,ñuTÔ,”cÝM0e¹ï°'›ï[j”J+ßÌgWZ$Ê¾Šˆ&_ b¬§ s,eíâ-F DàB¶+øœ;PhɯDƒPd±^)‹ÈæJ” Ì­‡ß%·8̯rû4É[gKÚ^Zi£0`ÛÜ0êáaÄV ™©™Ú—MÜäü Íxb L5çíñ[¶ZçØ¨g²yœLñliž¼ÏÂ?¯¶¸auN3宲‹Ý…:¹‰m“²^ÊØDIÿ•¢b÷ÿC( …~T“œîÇQ2WÉ$í’¼;ºœ°à™ccàT|D˜CX®‘zÄ6\Æ”…õ?ܨŠÛX"*Zâ"¨cò’;”H cÕ¤g{¢âäXÁ•-õ&‘ iAœ¦©c¯iÓ[yS뜛×Ecº+Õ00*r¸tø•·'˜š CBä*?9Ä£‚[õ]*88á¹ìß U†üR@AÎaÉø¦ÞœªEoK|l[2JŒ8's1„ä ¼!7§0Ý5pà”ñ¤SÃÕ„p•ˆFšˆÈÙP2M0ÖÝTt"M ²÷9Xµ¦‡Ê{€øœ ,©PÄ{ò[&Ï¢*R^]"ïãLä8é×A/W$z¦‘"ÜÛT%»iQ²Î‹vÈœbg:¯'k=Ýõé¶*³îðâlŸj ¶XL¶U#›4?&Ðá—Íã"1|#Ðv(:íƒ=M^ØïU¢l¾8eá5â}l”–jþÛ°Iëù°JÑF ³®QíÿfÖo,?¼·)Ú8d$'ÁîzT~Æ J0­U©n†Âº ÷­RÒ*P§—Û"Ü®šízŒ¨ÖBŠþr˜úÂ{°fd.”“!ÏöÝ30Ä´@\ùpØx±`Âg„Íf{H×àÉ;ý9^l7Ç‹Þ9ÈI%;êlx˦Eœ Þ P{¾£ƒüÿs‡ºg@TQDÛ²U¤…ƒ¯a$ö¡gùôyÍ/â©éý2k‰éÓ_ù5iROËo ÕTK¿­žf“VD·˜tt1·5ABzôÉ<ÚjÇ~¼ %WÀC®€Ô<ß1Ò¸‡§:vFnéÅŠQî‰*w¼Žvi~d •3$µÇÔÆ·Ò+lÀ ia ݸ˜ ]¹"ñ!=)nÕݽœ2çêÎ6Òü˜Kï!s÷ iæGSÕ0Õ¥ýò„›â>˜hÿÆQá;™¥NþchÈ81ñåç5˜O·M500T2¶¡‹|õ8¨Âoà*Æó6 SÍ[=ÎV?œ2^ª¤¿ÔR¶`Ó0Þ²Éã\õƒJ®Öò¶žpyãSÿ7$—!¶ 4 )ÌÑÏÇ)ú·?ÃmÖv¥äp(½=pzKj1U¬iã‘D–ßÜùò°‰ 戹`ýÙ›)¹‰„cÈiò yuû€9kÎ’V®…Н%’ yMm%(•T‚ïÎSòªº:‡ ¶pmy1 \^{Þ’V77µÙ ,Si \èj &ê–Ç^EL½2(?,ÞYJ“Ž-Vå”Þ $=‰ÅÖq¢¾ª—éØMö%—œI£ZêI0™ÿ“„2Ý9i¯°ì¢1Õg‰9cP@õ©¤Eõ :wTïR}æ:dS…|ÊODíy¯0ùcz¯ê3°ï.xÿW!1ãÇŒ«çsµúô¸P j[A°Î'C–Ôô”åcåÇʹm~¼œõqÅ™ÀÞùòû3J‡!ø×z"zHe§|«gÉî«ÀÛÀÛv¨X?ýhM¦µäÔn‘øhm¦o¦ödöÎ:O#ó„qäþñ öÁ©+øAªQãýò _ókå¾ý4£îC7þ·®s$¹è;¬Ð[ ¨bL®“'¢FÜ¡o³Ò3ÔÂÿ¸.· (If¥ª¥âè?6àÁÎÜ)B“,U÷® qxrEåzë;µ\‡Þb ìç±M]3t=q{Æâ¡áàJþ«sNQ_Ô “œÌÐAäÍigwÃùWŒe aH=°¹¥7¼¤D>‹TS!WرÙñˆâ[\õšÆÿeƒN¹M• “°u‚ê)ëkm¼„Êóp±UÆp™‹&vv Ì6óœƒråzí4ÁÀþ[J­}Cʪ¬ÏqM'…¶V17tå©^h¬ ›‚MTÑERWM72ËÎÖ™=~£ÓL߆vbÒèLI=RŒkH„sùÓøš?n:wSBïJ€Žà`°N±ù¸¦ßËd¡)|ŒqEË;F;ýGŒò]£±¡‘Ji?³–^†ñ³Á)¥’Ë ”ßgnyo!%OnâŸ|ròîIÒç W=-{r¬üi¹˜øNŒœ±jŽ–|ª?ÏXFW4ðYçäO¹ñ8=ÿ¸(W´·¾å@li÷ý™>ì[@áÔ)¶Ð‚µB° sIQmþµyã?Ëçþ[¦ŸÒEýo úîZ¶çk¿¸«£­Ô\HeªNc½a›ùÑ]9ÿv2Òp„§õ‰÷ O°,*ΩQlÊȈÎðƒaš³ì‰iô®¾mLÛ1nù¸:§žÓQž!í¤Ã•¼ã ݾ£ÛS›ß׼߱0»iZXÖÕd¾wÏåÝ Í˜4tågéëÃîä˜F- =ôYúÚ­b‹CSßH™ñÐÔü~^ÆÑmŒAgÅEiG’M*‹Ø:¦Ý"–׿D›µ~g¯\TAð•+Ô2¥Ó‰{=ƒíüR¹úüëNÞÈÞx ª¶+ö¯ÏÖô43ñ»võûïKG£%<¹ûâäçôŸQÇ55™:…\Ü’’Ã4,h.ìƒ^¹Ø›F[•ì =Àºy…O……–ÁàÍ $*%(¤8ƺèüsY½æ˜"«u`g–ãxUÝÎP2Ÿp2íÇôëìSÁ°uª§Ç: Ù§‘쫳›•2VçÔ þ«ÖÜ“šn„ê5 1ý¨ìç²vûã Î#ßž•­Ö„PzV$Ñ®¢¯9¾øµÈÝ«,Ò‹w_¼-Ö¿¢Oúõ¸ÿφ†x}½nâ&fM#—ÿ¯|C0§?Žªd„W—5ðcU­ôÁ/’@z‡Â‚HrdÜÀ#è©»O®ÅO¿è°ê’ahë_ê—|¯:@·«Õ:¹ÑvRå0|ásÓñOK»[wDþ101ù†Ï>3·@ãû®XÚßFܰ^FÈ\ï[8øÈ©¢ æ *Èeeãs,Ñcëæ¾’ùqÑÆ‰lµ]Õ&|ùž Z’ú¡êgƶÁ/}_¦PøùlúcŸÍrè‡&ù%QÇwI½É®¬<.cÿŸœ?Kj÷T6]5 ¹øÌ$ÚZGÔ¿·¯ã_]œˆŠeï[¹ »ÚõÚ3;u@e¬þë‡F¬xRKG8Ô¯Õ¦ÆypJMÈærŒ;ÇRs‚¡ÒËl¦±&µçb• ur%«!Œ¢<6eüc<™Wšžì¤Š|½KÝ=‚ù¹ñ ¢'{¶è£ªÔ, «Å&ªIÂ`ØàC媬Ä6!8‰©§Æ…fš£$I¹÷ÓÎZ©Åj‘ùDcùªî×d$ïo w‰z…#¹Z5%’F 5à[úSDT¥Ôôކ*I˜i6ÁµÁ0×4Ìï›]Û¡ QT*ˆe+9ÑØì)-bõxp³¼OREYT_™"2è~²iN1—æ°àð*ªÁ‰‘UyYÌŽÔò%"mõÌ?¾qMX´¥ß³eN27¶4oãJR*¬‚h6)­ÔE⇺·vtðGåbÛa9RÏTêÊ­LøÀã\aЉ–¹5…Ét·㱕˜6Äð»’VþPÁÇ>BÁ|n•vÏæÿWs6NBùþEÏ71ú Ób ¶tø·ý–x©\É‘5X`:ï³õ.êª'ÿZºqÇ÷/;&|ÎTüT¸?ÿ©_à„‚ñØÎýN^Õn*ZÑ%Œ¥dv¢[Ê”iþT"_ZÓ¶dr:f|sZ+ms+èÛÝ(Õ¤+S‚@ÑâÈP½w„¦|›“©w€&‡½0Ë-Z.ØÂrˆD>DŽ‘‚]KÝ=¢ùÙñ*¢ ª«zsܲ»T•‘d§e·kÉêdGŒ™l“°:™vÊŽG§T±ß!Þ^Îω×R"© k¿å¸?OBWiËÌT»œÍtÁ‡kÚHðµà¹›¯[“ß›ƒ@®ÐšË|)¢ø+ãÉuþ~¡+¿¿á«"4–º±;W9:•Â0dŒ²}eŸóËasRƒ/°ØÑ•ssEòŽª÷ÊëGUù<©I6©2ìz ƒØØÍ[f@Ö2z X™µŒÁd»ÁxlWŒv½ÐB÷¹’àÁ+ÐUeFóW–¡ð_“òW Ô/¾ › †ƒ(U6¬ŸÙ2KIçÖŒBë^UDZX*¨`€ƒ’§mˆ KØ94DÛ+€Ÿ×C×Q£vGn-ÝY¶sç^£Ã6[›ŽŽìt¡,W7Ÿ÷e<*óóöý’NõµE"ÕŠ ’…_,D¥_}¿²‡ñOæ_Âe¬·äÿ½‹÷gæÕˆè{ÄZ%wÅ+$qþGWø=ŸE¹…é1¾m>? n¿ýz¯œ3½IZçôõµß –#¡gNrŽ ‘XQûâ¡G<ô˜¢-G<¹4|8þñ•D#ºQ‚6÷£wå[oH0lu¬œЇ?Ço¢¼Hj9žoäÑä%቟@ó\áp^õàº\Ù€_ürræJæMTQy˜Ü€ ‘õ_ˆ N—Ä+ÿ¿2ojÒèögvW»+¤¸Ãx;\ýÆþÇÿŽ„Ê®ýœ`½³ïš½rÏ÷û‡‘ œzá>Þþá[†U`±1,.†Å*„µGû=–©(t@#®‘Ž®QhÔ8]±<ô§·_GÊ•”Ç çùÕ[ŸÛ2eÓQ¾šW`Á`ñœŠªä2kÝ(bT¾ñÜÝÑïhâXKŠ›­ÁZ ¯§²èë-VV¢¾ƒ[×µRpŸ­ûÈŒN_'êyÔ­¾®æ zOê~Ç•>¨ÝL§n&§1I3%QÎ\’‡»¶Ô?î3¬Eú£ü¹¤$Î\IÉ2QfOJ\¤ëÉf[UæXHò.2² ‹mIeÚ–Ød+Dkñ !p¿£©Š$l:ß*¯Ø8ŒëD4_¾ç–É?À ]ú-ÖÆ0¯z%Xõÿß1gË= ŒúâÂ]`6±±Yø}òçríÂÖöå±'ü!|jýÏÜ© !cNÕOÕU³Zó*Û³­inHûýAÿɬ‚ûc¶Hg 42c}ÝûŸK?»ÞõI:&“¤7XœM"é1ݹŌ@cªa´3Ú€jXO„ wvoû—åRçÁ蔎Ä+¦8XS).;Îùw2š¤" C{̇$j4ÓiÒM†êÔ„E䇜MþµÜ;´AÇ,Ð80•L*/=Çý¼(ÈòUѨøõÃ;Y,r,ïu’òåNW ÝW¦É`§8‘ËouJĨ}ã–ãºV/8Ñ/>n‹)3Â…0oyþ¬óQ˜í¾0·#J‘ãYo€²Pá™åCã6Aþ#¢WN®³‰GíšK$V‰îÖ+‰H3ônÊ¥Ìk;‚w P’÷„µýÍœ×q˜»Iã™(¬óøpUÅêýA–·ˆL‰YÌF‡ŸÓǾ Ç9 CYýæ]:úGa,àG.gÙÏRº¢ÀºŽ ÆåYªŽ+«sš(þ{ñ°T`}ð/—+Hä0-ó›Uïݶë#qëhì…„ž’ýA=A‡À%qÕõd>ÉpaÇÂì/¸¢ïÀÌSñ‹²[cêâƒÃý-]2*Š=1.ÍŽáÁ!¢ó«çàѹ…5˜àŠÔ‡—%‡åu$f‘ÁBê–\¿°®¶"ÚÌ ÷„ó³„9®?¿|Ç~€/´O7w»æ?•bÎàŠ¬S⺿”lk—0â`L¿Y¥Qñ2×Öu5¾e·°Dœ7M o‹r¬è§Ú{4•RØ*¡½ÃóNTP0(ÜA|ÌÕÞ²‹¿ÉÏ6ÌÛ!ÏJU?©É+|»Ê?B11rÝ}¾Ö6°ÖDêTjYØCì_CƒP'}aG"B@35Ò "× u0%/˜K{œÅÖ”´è}¥XA׿ÿw$nœqÚuC[l蹌 Jd£ Hê» á¾_ÿÜ6Ô­2Ñu0S!7>"™Ó§¬ó äÝf³¨«¯ŒÕ1Æ÷8ºÁÁÊY9Ï„R¦^,b™ÍŽ’[{žÐ„#ôÔÖÌpÙ³ÑcåOË_߀ïÉ–iéL“ÎaÛ”‹½RãÈý ŠgBèe#}fù+&IĆ?Iav>µÁ‹ØV±º"x¢Ñ¼éD}áíñתãÎ2D†ÔåtPD0W@ €:ŒC±q$á†Q’òã¸g…ê:dë)£Áð¸çÐ[7ßÜU=-W«¥„Óø­fWñRÊRŠ'bÐLÔ©Ò“íÔŒ-H2€ÊÔèe4xŸ!0ÁEØŠ ßZD{ƒÂðA)=ywÀ>Zù–#IQÛV£ %ñŒmñÂíD¶ý(Zt͇tø¼! '2§ØÚ‡±¼­®³—…bX'0™•¢Ï><[ÎZä„:IYËR˜,O<W-CÛÜÓïú\AôD æD/žÔ·?Má¶-½‚ãƒÍÅV…b»öyÜozy8,¾µÝ¤žzyÀÛÛ?b~ª`@`Îß`UÈÍq¯ü‡ãñCS†ë°^²é[wTóp7… °:^®› ˜¼æò>d>XÁöU¥âC\ÁN|¸vC¢BAv̯CšÊÞˤ-+µýí°9Åìh÷Œ× ÝR¢ÌÚÊ`2Ýñ`ü`Íb¢f]·ìŸ¦m1¼÷¡ôÛöµ›²,Ç«êG{™µ“ótoi&“øç(ö‡/šm¾- GM«xžÒ/›G™0PÚÖè,‹`D&ÏVÑ5РŽÜ,Sê‡ãÔÓ®µ†ÇAq Øba[Ų†ïH¡uìK’÷°ÙpÒ±ë¬cräáSý'§¶Ù£iu?—èƒÊÜÁ‚AB•Dbµ¶™QŸbG‹ O ÝÜËxÈ=™‹œÂÊq.lj«þô¶©‰e&ík¢e™°„tÐvp¥Ï~ÌÎ èÏÖ·awãpûè‹ô¿B¦Þ0ðŒUzÐÂÜþòm+pźÏeþº+©Lž\Âek$\Œã7ù6ÔÄÿˆ‰´eV[‘¨ˆPÈQ`âéБŒ%.7mH •œÛ.|Ëôgß}Û2Ó‚°K¸<µ„Í•{ÄŠ9JzAEÙƒË?—Ç=jH5í:kñE þ¿;o?³ùWÙ.Ýrs¼D}|ö–÷†ü;gŸCA¥«ŽŽÞÛT‚¾IÜNÍ/x¢¸ê5!¡ŽJŸÍÙäIq¥’®¾?…ùË¥ŽÆ_rΚ<öB»‰²kªè`sa).¸=H‘Úó†65PŠüOÀö§y]v ! 9Ìp¦yÜZV5> ¬XñÁ·ÌštbbÞPäñÑSÀÜWnÈS£ì@žhb½QójI 1±Ù(°ú‚)a*ªaª¶v‰NÝ\L\ù#¢‡ßÜ=ʹØ*ý;9.;åyÝá7 ‰ÊD 3f6Wÿ¦µ!+1Þ×ñªFœÄü~áãòñ¦Å˜þbÙÞ¿6m1Ò§Ÿº%ÛnÓ·Vö-¢ïY™÷ZìÅq2Ô ­þàO×ç¼ ž?¬‚öÍõ¼6 [G{Ó›9šVT”4Cu™‘Q«>¢3Í&éN‘ò’¦@£å²ê£zó4-˜>y3Ö™d¢!”drÆDúpJ,ÌdX§%ëTf¢*I:pšÕ§’Τ¿—ÿ¡{åÐî5ÜXƒ“ “¿µ¨{%S¦—ãÙ†´"뎑ŒŠøJFÊöü,ýz wçTÖ:‡D0ahŠt;ì‘=ã¯Kþ=èkZê꩚ÏJP“{SAÖþzêpaLÚÓôŒ…ì&1²$šÖ¦£«Í¹‰"'À§;-‡û‰“ÿ;Œm]4¥¬/²Ë5ë€XšíU‰šZX eúG=>í! çgžÑ‡Ç- ‹,Ø"ÙÆ¼Gäã׳ZV(,QØR¥.Ê¥eõTÚRʇnœ,O+jÕ*è>£ðPšJÅcpUa¬ èB-ªKQæz,¹¤´þ(°Ví™pNo­kæ u¾@W9è¥b©BPšÕÑéÒŠAQ"íŸ%²5nëbÇKø¶9tL#呸?¹æ}HÑwP5¥»[–]ýÕt4X^övCESe8äPFƒÃfÈra¨4Â[›;0h 7˜±$H]øš…ñ4_eÇŸD)vó4]ÜKæV“á¸øÚGYÓeWÖÊiÌ ®mÔª•?Ö”wõÔ}fE—Çlj{9LÙœÜó£Ö ³VA>ЖFÇX˜ÃË,éVâ7xk©“ô50!/™7ýœS&>…£ùýç–3N»ÿ߇žX(¾1lk©‚;z’|ùQ7š„_sv'}t¦O4beœº0x£~®°SìõžüñÈOŸ‚öû»ôg²¶$§ ‰W­#v¨¯¦:>Ê‘³,’í£¾a-èi ÃÖÃÀ¨†µeLM[þH0oubmO—CÏ“ªÞ\mäÖQ*lûQ)Yn‹Å\}l¯r¯°ñi~sy ¢>[}cmÄdð̶!Qï‚¢“;Ñ"‡°ò’­‘ŒP'c]y§sù&vdWw¨¤f%6«¥æfÕØ4ßQÛ;9ˆvñÉŸÔ¥Ã"š•ÕnS Šæ Û²äIHšI•1Ì{È;e`-þ<ò|¥*3¿L†ïÖ°–5ö“AqlGXÜW`\bn(ìSíorO¹ó¾Çd©Bк4¬ÞìZé56oU ÿÙIK2Ý9J•Öûª)ž£Rj=@†(òï…5•÷ÀQèÈÓ€v¦¦N ’×ôƒ—<ë/¹h D%¿ÙV\ú©£QmÛô¨“¯Ó‚»¤òþb+UûÃ’‚¡þl¸Éé‘—L—(·[Ù‹§ä­Ú±i!œò"–å,VÒ'àwCÇ ‚rC‘“ìeR ´ †û#!BÙ«ÐÖïl½<«$‰>Qj›Ær„™Ÿ„«6*ÚKf£E!SjòjÖ/õ÷l‘!§ÞžD#µc]IñÌm†3›§w S«éÕ#M Îà) G]¹©²Qvz^Àï';‹/ö – T¿{²ˆ›®äã©aš×M~h‘§v\SkìÂäP­åZu“ÜÃrðMmÞ›#Ç5¨‚l$²qæf3ˆ]žj°d î4Þúþù]ólñðKòa@ ð€A °)³ãåvÌô* ÀT‚·˜U&ÑÑã Ä!9¿®c#oèu\´aÔ:_T¸€•Ÿól‘Á¦nNE8rXuƒI°›ãZ7 µ‰gàêL rtñŠL0¬h {ç\»$SmOîÜ(˜™Ñc™ˆÐÿgv3×Þ ¶Qs!µ©:Mõ˜³LñÕ›ƒ3u~"áiCÊûlÚá!s‘À{íH̵͈t_‡ŠìFUÆÊÇä¢âm‹¯Ó %¯Ÿs mñedºYŽk[¢&þiø|Àxª8óË”•ûm••;1ê“èU(¯kwž •±w*$äªT ¡¢èÍþñR$]©eQ™v²Í1[d ኂ CäÞ‘þJ w-+й¡Ü0/0%S#Bã<÷š*‹šìe…€áÇ.ªHød¿6=‚$z¯)!®s¶kžPþ«Ý­ µ±)îlÌ&ÆÔèh^yªQ•Ù Øèx¦M< hî7ðF5g´÷xLæ,d`ØK¥ B©\qoÏ!(lÜZàšÙS{ffOlŸ>>»gÏÉM²LÏØÐkÔé Œ úÆ)Þkø‹*2Æ€r\{ÒÙ"¨kŸk‘Ç’( ˆ-h›‰â/7ΜÜ-L9>F«ãµ•Wp‡Ö`è`ÓÄÐËð”â Þ~ *,cjŠÁl¸óNä˜TœO Kîì'íº±êžnh ècy…Ët·ô7¶lÕ͘G]¡»u yÝÎQí)…°·vë­Ýc8kyT¥Z­õCýOŒÍj­IG?fý]²sh#ˆU½}Øòâ8eX!>B$ÖØGÆ»:WÝG‡NPTŠW.¦_S“~$‹R–k}^kuFpÿ¥O’¬m©|àoÊ0e‹Á¶æ”‹iº×ej€Á˜–ë6?òÍÀ Tr´…oòÊÚÈ}C½M‰`¢V—•ÂI©}­l5-ó¤E¶E§wî˜=Ñ~¢ÇÞ f¹4дE àEa6DhÔŽghrZzDùÐøÔ0(âhôzË%s5:Ã5‡µè_ZjUJªß“: ­ç’Hê6’ßg0yx\“Çjc}D1†í=:øÅ´Kèœ?kjjÔleÚ,ÌÕ³Iÿw÷Ðçbÿ[ˆŽ M&qËtyöÔe½=YÆéAî›\#rk D¶–^jeÂOå\†È„#Ò´ÓλƒÇ{®ùߘ{=pîuÕÓÎÛ<ôûyî#Ÿ…?¡ž¥e}moÒ ÜF5!q·8:E5{Ä+ŠÐòE ‚ïÓ«"‰Š´­1fŽiÚ¡ƒÑ[ï9„XÝ䔫M»` ïF1S/¯eÀèå›ÑKoŒÕ¾à²cɃ¨Ÿ„ît„"µ-FÊiRsÃ;BÒ¶ÂÆwöëzÛ22K<î}c:ÿlN4'Ø-NY¸©jt v 3ÙIèåÛçn*`cÎ݇+²zæ)[i†©È6¹QÑÒÚ§¬ks-n7×,sÍn7ÏBÑßÑÆöœœ…&Þ±ì,Ue$9i"ïRwwõ‚ì8%Ñ›ÙÉú°¦€E·Ã‡‹µTu²3ÆLµw²{äí,Ûô„ÔÆ°’º¯¡Œ ›å`Ÿ³9‡Ô&¯ã=µoï)oË´ö¤õFÝ©} ÖKï»­÷+ŸðU\/+å$æÝ‰Gè†;¯ºcýMÃ}=†ß÷/7댬¢Æ¦ƒÓnàs‡ u½ÀLGª%ý~JC–6´>ôõî¨-ûË÷ïØkx²¹í[Ñ·ž“sz&aã;ç§UÓIAÜ¥}-9ìËÇö+ÆÇTØ»GÞ(`b½¼gzöQÆd{n(h •HúßÍ>%ÿ¸«oÔë?÷5©jÓ5¢y £gew §Žùç~hË4J7ÈþÎJSê¹Y~Ð~|Ï5"Òu $§ðõV¢¹€Ö]2ô.û.¸®÷=¯ÚÞà™•÷µuÉxnVÉ`¸%élìv*¨zš \Û¾Åö!a;—fµXh0ÏCpC[ûsÆï†ª`¥ÇÝ’F?—0õ%‰Ð²‘–‘¤€©˜ý?Bìå½73À‚ Ul—OÀr?R$$ÅaÕ2~Wé.³w2®˜ßKäù£ÍQ_,ÜsµÞ ™;ÅHRÇCá e]o±ïJ-Pý—P®@õP““¿PúŽDS¿¢ÐúSËWúÛ£·^cIƒW`]_ Rwúy»ý´;\Þ4ê<î½OûÑË4¾-&ÖêÄ"Ö)2^.u½ˆ¶BSÓa©i­ÖÒúÿÇÙ2×G¦ÑSÇ<þÀXdâýÙ&]oDW~f^’uµXת×ÅÅKI´åSÇ‹©vÏSoß~¬ú˜Z¯€¨×dNœÓXpÙ½*jIü7¸g6¶÷ä^lç\oÚçÅHÀ°[“:îñà€Þ'’ôóVÃÉû²WcW/ •OÔ/7¾ƒ1;ûÍÃàï¿ù9† \±$ÌHî—Ï,¥Ü*Ã>qáœ(#4©Z»ï nõÀÈÒ·ž;=aŠ»1üf›¶³p—†‘ƒ‚"(<,ÀZpPpÐ<^T]yËó[GåZ‡V‰p?2Í|«E#ÁšÊŸHYz-”)æ'S|bKÁÈ‹ðÛÌRÇí"øç#ý…ßÃHлðr}Ã…3Û}ª‰“ó·XßbÉwËKúWÒ|ïLB¦ö×i)æXxOxærÚòư̛¹_p¹ü£¯«Ïؾ;sýƒH± e¸´„ïrÚ½ŽçŽà½ÿ-mjWЪ2° Wÿ;_³§ŽúfV­â¥…kZV— ;-À¡ß;Wû:ÍnS‡v㕱ÿ‹öË!)%M´žº-”8£"Ûp–ú= ‰ØIÛhÛ6çiÊÿ¾á8,jÝ+C B.!¢0›æ&&öŽ‹Ã¯ò¼a‡ hfMûxµÞ½Þ’YB&%ÓIDœ…_’UàwŠ>žIwû *Ÿßápû J¿ïó é'4}4"Cߩָp}sJ~R¼ÙÕJ_™™ßú*êB~!ì‡}6]¤k4NïÃ?‹b®¨nDzìÑ-¿6ñý_`e˜%ÄAâÍ^ÿù'‚ê qX}sÄ<¿ÃáñÕŸÃáñëÍòhDÞp/–þÔq;[ã+âá` ¿œ[¼jHŠ õƒ•…ù¡tøuc^7[UN„Ø…ö~£pR£¡´ê ’ªCãŽ3To#Eë•5ÄMgØ.¹¹1l†Õ²èfÙ’KK•_™<™ÊNq¨ø„7&ƒ˜[,¢ÌÅåa–Nh'rù>­®œ0\–oC—9ó³bn/¡?N­Ügƒ:;8ñyJ;íQÑ œ—üKöHè‡*š¬iPNOÁ4XR½MÓYsû-зÿ¿ËÀ¸v¯…Ñ£«ü¦'\Pžé\’¼Ûš“N›ÓîÐlº½¬‡^InP‚•®}üÔMá@MÀ®G²hЧÔyî·a3™¸’‘— ’ò‡¹ÓZY•-?ž³Ûlcsø’&Ý;h\j‹:UàÞ“tPÊÙVðvÓk»ÍgÉ_ƒ[ò¶§³ð†ø¦5…á`iŠ/ý1}û‚}FR®˜Ü PNOáæbr^¥ë,«²>ú®ÉupGÆ]š]·ÅËyó:_ ˜ÌW¹´f7¬áR?˜\Ôf¨<<©‰…+9Ó•ý€5$@²œUùÅ@/ÿû7ý¸jñbdAwNeyT¬U¥Nú¨‚ ÷зÈéJ‡OŸµlŸ¡`¹"…$f_‡fÆ-ÌYÑ/FÅ U—NIó?vUv*»¡ÔÔ0¶žÚ\÷݈ÿkí¡â† Œ""IÙÃ}ª9•êÐ ¤)å¸ÒÝXYZ\ØPõH5=!šŽ„Ò´É)‹Q…AÎ'âì€Õà– þÙ«ÿÂxýáâU^–^b%™ëv›}Z˜è¨fãœE—ðäЄm@o8›ØÚ?çÖ‡¨Y¢37ቓÂ̵ŽýóLW.åVK9<•„vsv!»|TV¯>¦l**O\Ó¬Íp¾\c…š¿qô¤š !›¿Í"mhˆûêªðoŒ‹½\5ß5凵GÍmX˜e íM[Xf‘ˆi¦¨GiØÛ«6úd»Åpf¨TÐ)Š]Ñêtºó*/élå˜W¾0æ ‰`ÊìeL&³GÆ;#+2~ÌÞ‘üîc4ÜyŒzº`•^3ó ùŽzV´ï¥¨ƒ‹Š±BJi¯ªRÝé¢ZzÁ‘ +Ì‚ðθA½ÇÆlEâÙŸÑB ™¹vG—Ìm ¯(l¹Ú¢£ï—Ï'9–èf‘ðt¡•Øb¯™TMÙ™’ŒÝÄDXR9©Ô×#fxõþÓÐ0\É=Ä;„ož KˆÈEËõº­&OàhÐáÎë ›ëöqö•ùW×%YàžÀ#5#]w·ô 'Ñh ð°fa²gÉ °ì±æ3•yY«‰~AOuº¤ëO„cö,ŠÌ¥8- -X™.Ë6/àFuV}¬‚ߨ€´Îe×SÜÅaRBQ'å9šoðoÄRòõ%Ñ~”¶èØùeóïGÙr{N!‹±v@¾ÏΩúV,0ÔìŽòF‘_H–RŸQç;/{^¸ w¾Ö÷šî0#3Y˜5(–nb~VÞ"_I©ïªp2˜þUgkâ/®ž¸&}Ü—ûPù´ 6pã ý:5ÝTÿ'sIó¦0.ÕÔöÆöÈ‹¸«¯Æ©ýp$êhØŒpéN©c‡þ7¶ôP3ŽßO_`6|¨[ªG±—öˆ´Šøô 7Ÿ/|Ðô`èäAÀúà:¯|¡g/"/ö8µ–%ùì¢Ä¡’úwô{üÀÍhƒW£ÿèïë٤ĿF†2óLºRúÅB45U¼UìzË ó§$¹ ;Gª ¸4Ù!ÙÀ’,up¿x<øÓ(ükŽFŸÊd&Úzv¿±¦v¥$ø½  n%’óƒÒÄ<Ö85 ‰2A^¹Ûè_Gg®ŒÄYyåõöužûݘ›H¦v,ýyˆžÌ|ÈaÄЋð<ô² ÃÔVâCAX ©ñ‚ÓèEŸßµ¢ºRâóÍ‹ mÂ;åŸ8÷Fx:¸U-á|E3üÀ³'Ýi0PQ!㛼N‚Š§Í¤ç„23Ú232Cžïr²›Ó²ºÒ²r›y]¾BO½"ïàVþ‰L[a~í Úe(¯áGÓõ–dÂÇÿä}ìØzæ§gZ ¡+iÿ%s¯Q¾? ^ÜšÅäŽÙ6Ÿ   ÂË K¯B'J¥þƒsîïŠÚ Ów23³ëeÇæf5÷[‰þxýÎ::)ÚÀ<;{Ìu#ÚÕ) Ô¶ëõ ñ ™T#`5]Ñs´X68U•ÂÝUægzVB²ÙMUŠâµÏ-ÄmWºp«£ ÚÎmày§ý'A½FS[£™ØC'°EpÒ£ Ÿó“±ÈòÉÏkøì_¾RNKdC^0Ä,ÝX™¡>^3µAÒ6²¡Òª­& Z §Ö««ãáð–pÕ¡ºY"m°L ÃT= jùšmþÓ‡¿Û°4µ+£ r(¦––» ž–Mç™1ˆ<\5»>%YAî~^:«ÐðwüH+<qYQ‘ƒ%ŠÕ}}Cî9:z–trüTéqΉ›Ô}bDUŽ¢âr&7?ïÈf®á±¶Â*¾mW8ÐÓU¬íñ•Ù £çÆ47D>Ì‹½ùe”BZغÉv‘‚”ͨËlhÍbsðµfbQÕ¿‰sÃL,&Tñ›·|ó··‹ESM3ü%ëPyø/f yÍ ¾l[M¯¾÷ÖFZuú:AÛ›ü(ª£¨óÜ ûBÐ4±ÑTÍ¥=ÅÄ“#-«ùM¡‰Dƒ5[Õ¶ò—t5ÓsŒ[c=>ž£•|V,±Ç(/BJx›„yÄõKøc¯€-•æ‰1ï¹Ö›ôeÝ”¸u‰Åt¥ð×'fîzN[aø3V4À[áý£î;âµw¤bÔ‹$ÌÄ݇8&¾óG™˜ñ$þÆ*„ i;þ\0œ«bšMˆ½'‹è/Ýhv2S ³þ12FGÄSM™CÖ/ž]åã{¡pŨŸÕ}^) ÍìŠ)Ü6ÒÈ7#XõŒ‡ u„EàL¶øÓ¸ 9¾§üxÊŒ‹öçšÁ+•ì›±Q ¨S)ÒâVZKÝÈÃ1…[;]ÐëmåxûržhužƒWHO¢¼VKUJV ‘`äÌÙn"ø-ÐFlj&e™of]m§IÓ9©.ÚÓ;¢UÕÚ'ñ”c=5Ù ïÇtw—Ì4ÓäûïÙ uEõî‡-¸g+24üÝ·ÿÀ ^òÈßKºEÒEdëªw`îtÏõй“m>ÒÏ>Øbº_Ú7b¶˜»ƒ«÷7¥¡Ï\ÿEtJÊ»¼þ LÕUÔ ¦ƒqÝ&‰]ÅUdógü~ßÍ¡k³4õÆ>ì|£S±£‘jÇap¬C(G¾ÿŸgÖJ;¤²B*‹-£â€f_›¤nø8–¶èjÚ_¥U›Êþ*]÷[0Iø‹‘³‰ùŒ¡á¢ÑWB§ï”ªÎ`/[!·"¿Glºïø]èºc†À…Àã†JAkùÙ£ãùÐC¨üÝ SGos>w6C ñ¹åÊ/èƒ7@ÐbgruöûL0!½8"lõda+jhJ/L`ÉέKº{?ާ-ºÊ ®¬ZѨ˜_²¥ÿž¾„~`…\¡¯nº¥7gG­šÚåU?‘”Ø­Q3cÍ— %CÇwþ¡F7í–íówViVÚ,îžÊ›ú¹ÃŽÒ>Xõ€’åÍ•ôÐå;Ñ™.èËÏæ±æÖ¬ûÂaç+äΧÍHÞ¾ ›í{Äfq$WËTRŸ”z7ìw‡Õ?ÉöÍðbå±ùë®^Yá©cQšDsñŒòéÕ§ ØØ«×Úƒ%Þ-‰Ü©ƒärbŠ©0ÓðØœâ¹eý»2l«òx½WÏu‹ûB>HÃØ¸ Ábu9Ô˜ö?ãä7äq ´ÊÝB‰´¶H•n¢X€ŠgÆæÍÉϬ=Òßr™BÿÁÖ=!¿µ=E"ì*Ú‚@©ÜÂp*ß«:¿ÙÕ–‹f¤Ù¥ë׈:ZûàÔÊ&^‹ª·¥ÕÅr‘8áùLå>"þCy\µ7Dp˜I¤Ê‡Õ”®‹4¸ê²ÙÅjjvãïkd‹&iÐd¢ÙÿÏ»n¾ùÅæ´ݨ(¿áÄû’)‡…3ÓàúÅL©ÝàI‡»[+üÏ=ú|ÿ˜sêÈ™;k 5šüñ>!çsË_ÐGo€ ÉrRkåÿeÀš×ÖŽ!˜ó4âÉOtšÃ6¸¼ãúUù” ?uA3˜Æ+BõœÀÍ žyF1·Ç‹ßQ~\AmH7m‘¨IwÀÌû©ï¶¬@‰? Ž­]aöÇáÉAŸ1¸U¨hN@¥5FF•.Í:ª@Ãõ«é÷À˜­»WÆëe/ûÒÄ_ž>“ÔpFpxêÍ®Èí¥;8;¦fj׋Դ¿Ûiž2èԕˇ‚¥³I҆üèssä¶`éäÕ\u]UY=­@rb=a/nå_Ä›Xž­ˆðAÔ)Išë]XvÀÑìr¿¢¸@0‘´Åæ‡/hÔàá”õã„%¤f¤Ü¢Åíþ'ôqÿabKÞp\œ…^¹g¿¨µM™ø|bïEÕ¢‡!<¬ìYØö":íªü¤ Éb…Ü aSDÉvscnu-Î5?$¢g…e—4‡yÝUÞÆÍCGZ|ªÛw%g,’Í0$BÜØ/`ìˆ jJ‹¶4x"ö´Ä*“Ù9?îÛ´¦Qâ Ó ã±Ü÷ŒÃm{zŠÏB“–=<Ÿ]§Ë™«3bšÖ•”師2ò"Óë .€1¦]X®‡oÜhÔ{xåf ‚R mƒþd]Âãøוù5säxGütÎ[f0£$©ª @‚a¿×¶iFKÀ’ *¬)‡ÿ½å³J£¢¥œç_ï–àÂàd‡DN¨™r?ë(S(M&³Õˆ8½n¿6ö÷å;ûÞ׫âI{%K[¨Éd]U‘wçDWƒë %­¯ùdê(b\vÏéV3âŸÔ²ܨòÓJTÍ6¼dÉtZ1×i²Úç”; `´WVßÄå—=ܰa³o†lm›ËÊТ› .Jh‡-wÃÖæÛ³3t½<fï_ëgì$B Ù}1†E#×á˜8ÒEó|ñ-„+É–4{àÚpjÏö$§¹ÛB¸ÞhxÖ"ÆV’QèéKmÁ ‰Ž(ûÂd3¾HèàVVo¼.ÙŒÍ = $Ùó ½+éÛ–lâ-õÑØÍYüaþ¥A€ùT]wµ£±kÍ525^¦<•|¼ªÑxTE¯³”Ž µ Ÿ%9Ò|í¾…2€ˆ ¬jB;k‚R :^1ÄΠ+hRUõy²ÀÃê'ß©ßëÈ ¿³D,”V™BÖ¹&¦|ÜyÏES%PÃ5*³ÚŽ6/um3ORz¯xêH¯sÔ†/¢LÙ0Næý/’¬ßÚ›cLìþKÂ/OTpÛÈ|ͪgX¯¼´mK«X/a‡¨† ¾‹ Éëy”j7o´inY;>,iüyËI*ýio l£OLH‘5l­¢5R?÷ÁÑÃ. u¸,ì½à7謄‡_ô›'–êão–Y~³¬¡eÛýQ,çÜÀ}¶Ø¾§GT%“DV‡ùÅÅ+—êåçÙ.Gƒ€g"1 ö¹ÉÞ…±%}þ+Ø(5Ù$ý}3—°eTâïq÷b<$1»««Û˜€?Ã,&AÞØöõ%]þ¸T¼ðúßCûö5òîî|¦FC±¤) èÇǾae4;|¸PKÕ$i˜lÛök¥k=yðï°ÊgciœÝèõÇ{‡»d«¸Õ–°ššÛºÔ"·¸ýû«Ù›¿Dc£u×eWºí8Hèæoìô·µN«5l=UªoÕ(t¨êl ÓU“Zß,Cm¹)œÍN`jký«Î®'á‰W·æ_kLÌ…‘‡ÜþçjÙªB’¨¥îŽìÚ=!³‡l"-K u¦ëî ú´ ¥{Z'‰/üß‹"ŽÚTËca¶»QìÓŒ"XLEV`WýUŒå¨‘ÃRÁ Ø.+Ԍؒe9ˆ ˜ñ zãÜuE¹Å\Á§†wÔ²9ªˆ—)`³ôgÆëê§u¡q¶ïÁóûyiGÇð`íïòÎ$?A¹d„N¥ŠØîë%½Z›r Ôá(‚ªV)ÜIµÏÉ;z6 DVWô’{a HbˆX­gªDn=ó±Õöó墫}§=ŒD( }·¿MÑŠÚ”;e’3o“ŸöÑY|.Pý½'ÑßÌîB7Ý»óÈüYÑ(sˆ‡ ø8•=;€¹=sQ ·l¨£nOVˆ#2?SÃMÃ]ÿ¯¿‚q¨õµË½= T ®…”¶¼î—¡§HJ9_t|Õ ¢R•yI…¥ó˜Qåg =­¿Ÿè™Ù‘ÉõýÍÛ{t)µ›ý×áHÏ©3‰Œ`f§2¼? 47ÂÞ›ÿ5KASè)ƒ‘“Y_/¹ÿÛÇÌÛ×y&<Þ—¯±õúàqœUx`.¹5—ÙþåÏwA¼ä á®È>V¬n…»Â…¬Ý‚©v8Ã[)4PDÑkŠ–^–$ûœ}aþ$f·uà ÊÇA÷$Ú%Rd#JÃ,§„ÎYõ©cVŽ‚µTüËõç¡¶É¡ã8жXcoÞú¾)-—üy§ re;àDг¾tŽP²“ËÁÍJåÐå{œ1Ây.¿_ˆ¥_£:×ăN-­Œw¤XÓ,.»×–jödÙòI³òÐÔØ’²qMòzì›_ÓY«¬éýØ|¶Î»Šf¹ç£¯¿XkUÙÌôUûWµ4³7ÓV@êe§–aÛ=‡¾žfpó:‹,9l¿Z‘´þˈÅ^acÍí1w…äWLäKpd³„—ú°†tÞBO£RÍYì¯ç3ö5Æ•~Üa®p8Ò3 åžFO%9ÉK—wLœu!Æ4“Óæ…Ízp£7ŒµêMÆ’8”’Q€²eÇì–àÐ æ``2öÙºÿ‚˜wÑo_ßôXSi²eÛ ™,ØãèÑwi7õ1ˆ³æÁ°íƒMØÒîh7ðSû †˜Cž4¡`éñ¥Š“„Á¾¨‘ïÁ‹r>]p&¢-²Uog8cyî¹3‹ÅûSCg(Ò# µv¼ÎEK‘³jµ –l_ÆÜÎ>çæ—BFÑúÒ‡|® ‰kvzba‡7,ü|¾(GW¥)Œåý\>+†°æq;²—òxú}X/JqÙ[Ì=m­9à)øã¥ÆaãRÊÑœˆsâ,e¶É-›e…P2¬lÍÉ÷úwNõ#KP Ýì&I‚ަ¬Éð†A=À&kÖ×Cîza‰˜HÞ>H“ïtwm¦Áž#8rrÜ:7uˆIŠv˜« üû²~¢6v] 'I€æÐÐþ²ÉñšMœG)‚|{>m¤ÍŽxP6Å¿ÄÄêN¢þÓ60œ5þ’oÊ;/‚ûÔ<÷O¤¼\Üàd*"Žßž.yZýÔ¯Â,ÍdˆKÉÿy¦@^°'Ê´ó€ùÀô#†@¼|¬ V¬Gó©ä)||¡ÊÏÊSÏ ¯ïÁz€:3Q“=\m34Œ»’V²W‘i é ªDìçq†#aîdPÒ“þån äî~}ùàAé^‹íË5–cg ¿Fg#¼eAïE.ÔØ¬ˆ‚¿€ž–¥^ºr4(•HtTqzÁUdd¾öÓ¥%8i™ñL(I­¬¥Ã kŒËžoäBmZˆá3§©”|:Wí£(ëM(¹´uP«yìëèÆèå^ѤW(=+4®›´©ø0¶ÕM €DLmx†©€{`ûrFr…K}¦»½Xi±V~ÏFç­¨¿€Ùí¬'ò•Vkå|s­½,_Ñ|Š—ü­ÝmM©LXñÿ¹×˜[nÏX“)c;àÇÕŽœtÑú¬Ù G ÓF3–gŠÚ¸w°®£‚¦·-зIÿ~­P§j`Eýn…¸[oÂ[òòmÂ×ËTÇ}[™Öcü:å±Af“y2Âk¡Ê#}ß=““®Ç~o4O¸¼ÆÉž.Ý´ßcšpЇ†$Î>0Xìh˜ŠÌLÛ-Û¹}90nHsaÛž"†…når,—ÅB‡¹œŒX“èK-õÊÚ[IUv‰¢“`ý#ì–k˜¼Ø(ð:çíØå£bã ¸½ª¡”_ž^`§‰$~)g"âL$"±ÇÏÀrK?^ŠÍñ˜î#ÅR”ÉöÕ&aÐlf=Íòô›ÂMf‰;F5£Eñ[†KkÙ8Íõ¿¯¡š7‘OJþrHÏ07«ºZ2ºfnÁ+XÔ]µ*^[²fqV2=Ö‚=MŽFö…Åv„Y!ÇX~AØ•VƒãÝå è ZcB"NF‰ÓñÞ²ù¶V[!ïóMISƒ®L‰‚¦¡êåå=Ä®/óá¼Ìý:y¾m½£žíÀw1Öh .U­âX ÙðÃx ²ºJ›´u«rZ5ŽtºI›j7Â,rw¤`ù/¸¡®â=ûEšÕìø—lF¾ŽiÆ ñ¦J¨hƒ…ªØ%;EöÕþCàÝj[tÞVÅ¢Ôé‘jk›<ê|ŽØŒ åV†ŠB÷Ç,´¬¦åY‚å]›[§ËhèÛMM'ï"‡Ú³}±&kÎÅZ;m÷at&¦Oî‡çGˆÕñ]¤äù¬€cWãÉi‘³±jSY˜ñ5sPYME[ºŽ¨¦1 ‡»«‘ Q»2(/£¡w?´G`)F+èF=¨Ëm?X(Ë>È”öü®x-¯â¡³5Ü’|÷ ¢å[›Ì"ryÖa#:ÅÐnéuNò{Ë×î­i(Éçß¿?÷Àysv¨ÿ_tˆ‚´W±äTøÀtô¦ý¼µÄÿoÓæ½O ¶ÐÌ3sÔ—¨Åîkóþ”ºÿD{þue‡Hå? ,Y‹•¢¢Øtk_æ ¬[ {v–Å÷¹9d¦Žë¢õU¤÷ç°”à¼^©´]ÑÜ¿Z{í4û¾˜úü¡òظ’0•:˜ÙU}|psByoÒi1˜!·«5ÝzF*`El¹å‡àhþž¾fƒ©ä¡ ½mh[šìí -Uâ.é`…3íó½26×ÃÇäºæ-û/X›ï \™bÿ7| Êü—-±ÿ¹ò¡ÿh”Oššùl¡É!Ù½ !_ËÖN¯ÊîûQ6em»›#mR÷ìjŒTV!Çë•4ÈX‡FõŠÐÕŒ†Ë¼g,ˆ¥)Öˆmë ŒŸåUE÷¾ót<ˆ¨ü ùú)½Ÿœ,Š I¬çÍv#—,üz¹ˆ¢o&$_ßø° Þ´‘Ñ’ñëˆeO‰<Ãg§du«hJåóÌÈšJ?9äÿ£ü£êîÓ½¬TÛë¿åÿŒ²–SÅ/ ~8§…|1qÀyÇ$BZ‹¨C¼„Ÿ½ÁµÔ©¡|ÔMJ"éDf*ï›jvy:µ“¢,û|t¬;Њ: 7>Îó£aˆ"–(¨}ËË}Á寒CþÌ:Àäƒ!;~ò8É®\§y‰Ÿ¼BÓ3”[PÚÛ¦ÇåµÓ‚žæJ‡ƒ#´)7¬_"ßb©4å¿áñÔÈì5") v´1u`YÃÁ#ö‚D¿OA¥ƒ®®NÒˆQœŒú)áY[;U!\¨B²ˆ H0ñÎæ¬£<²UùæÿwðX“Sb=ÒŒ@Èõ²˜ ÓÙ|G}ÓM5§ä‚ÉÈ$}¡ÌX ®t”¹Sø2]ÃåÐhC¿‡Â)-ÓMê{„mùׄy¸N~;um0‰O=D¦Ó#]kúú×Éë¥lµr©TÙ&-HQÉŸ6ü‰ž<-ü·5XzÖ)\÷ Í4ôvޏ¿G”¹‘Ý4ߘŸòÔ®Þu^oÇ Ñ¾T`‘än«êŒþŽÁµ†D ˆ©êÈm ½µj§:UTb¯6õ¸+¾C×ZЇ*†ð¶ZAž1ú<\ƒkóý4–öU %Kè^ÿŽ}Ä“Y2rÈuAš sóŒpWÇM%.Œ¾¦!ÅQ—RHíó,4lÆb*Aã?Hk¡¦Qèp@A1&pü6À´ÙÞQÍ)d¹ò¶±M}·}P½¢åË"v–¡— æ§eJ ­#ús”“xÅ Ÿ]a¬Q%w%)F£ÑÝhBÈ7ûñߣÅÙfºá0\ܴ⣋ؚ™c–_Ø®¬ã½B ×"~ä–È ý `Ôj¤FžbFGhzO”·(ŽÈ·63J‘P£py´X¤Vˆ9Y®N‘ºÏ¦·Bˆ‡˜~MÛ®+FÅ 7*ñ=e6B󺦈Ñ4ëÀ˜È0ÂhW+sÉ-xúW[•Ò‰a´&¤§ì¬öJ•ðH†&“NY!£ F uŸá} 6Ö¼Ù$*L˜ÒŒøuš¡a’Ñï ÇÅ^,š–nÌõcer&ê·xq©„irNÝþ+i°_ØØ©sÛo<Ø~(HæòÊ  ÓìÖä†tú\v¼Éqš‡Œ\›ô”UŸ¨@|ž‡%&ɘoì•RëI•™ô݆Ežºž·Œ¼7ÇZ¯¥"³ &BùÅsß î¢‹ñ4ôýÜ— Éß¼ùÜÉïë1ˈۚ]ŸÔZ¢Ì¦2)Ž–@bè¥Z¤\©fK­F'årŒî«õ¨e‡ªzlͧËß~î>§§nñlgÒ3 ‘åjȦÂDó˜ š8ƒdC=µlÖÝŠÌ9©b±£^¥~‘vLä¿'bŽ1ØF§…fQ™V“iØʾ×%ËLÐtV7Kïõu÷H¤Sa?gÒ/‹µ4rÌ„~}Ù%wiIz‚ƒÆü‡çØSìÿ(O(dæHÐe,§ ‡Y –.PmnOý¥è-„ÎÅ®<ƒü¦óçQûÙ<ͲÁyuF½*ànâ…õÁ'ëöo8S„ «\"žS¡Š¡¢vü°ØˆL…üõ®iYE¦îÞ=ž¤Ê¢Þr\,JýŽ¢ö™Š­FÈq©Ðw»)è=J\W!½ñ:ûvíŒâfÖgk :¤RÒn~ûÄðqh¥s·»¦Ë±ÉjàäÚó éÛêô«ÿý)p*\w"¬X¢¢æ÷“/§už`cqdmYþS+$þ#ò ê£,_Iº ªG]Ž‘7æ…F¼™„8†1æjJ»ÞjwŒL}¦å§wË*:OV~pWçÿ3íOá’’)yBÃ?зTúéöð§èn$Vs„~‘Á²ºDž¶‚d¯0I‘r&Õnÿt¥áûJ*å=¾»Ãõ‹µ†Ùby`Ï8mÖÉ€H0×ws;(¥P‘Šug_ µffËU†ê4Ö[¶Uд±²«æI£‡;¥O<œ¯Q¨¨x·ÆOïôrlú Gʸ.Áb雉™fèæÝ‰¬§–óÿ%®¦b]ó5‡eÇ{ĸ})=}ÔÓûuå³K?¶§¦Û´-ÄA¦(јf…7µS³`v¸| Kû~BCŠTØ_‹†Ýâ=þCê<°É¯ìÉŒX}®(Ô83rÃiÓ“¦çÖÈŠÞíˆ3hô=t·7ú”ÛÝ̪ó!£Qu$"….\•ÚVÓ’Úúöñqy”·Üxkä¹Ü€dclºÖ| _J? vÏP£bžž&ùú0$5h ê©IA–Lcž°©J:4GRûf1©ãýƒ¶A•DÍE†€piþ÷Õii¡Tµ?›ê++:!¼gK°i}nb= vN_ÿROžz2(icÑ3ÝÂ2äÉ6$L·K=}Œ{J/M½ÄÞ$¨¥÷#Õ£„ríGAp#YÞq½`ëp7•‰îÉom–C§þX^Åb…î ,¼à±u¦^ ( rÐkÆC×LD­Qzþ¤6leø†¹e'Ó¿”ˆÀfªÃávʤô“\a3LÌæûXªUœéz¸-Éãé@ó¦ž^ÑH¾VAìLóu{Yò• «w1І;—­¼ £ˆÃµ›7V󛚻ôˆæC:ç#EpIw승ü)¼ÐÍ(|@;Ú›ÊþüqCuÉW`¡É-I×q,{È81GsYÙnáþD MìK£ØeBÌO›L/]÷õôñd£M1ùÔÄÄU—͆Z1tŽÌd³Ht|äS+}Û®g#x ’ÐZþ§ùƒYש»\l :ÛhÔŠx\Íe*.Œú´Ã/4ÿ–ŠqšT“âX+ªûë×®ä÷°ðoÒUwÒ<^O}%»(Ýk§J¼}K½=¢yYz%]’ÎPWŸ\êÇì¬(:¾ŸÿÔ˜Z d©uÅ&šYÊá8 0Ïls½c$GRa¦2‚ÅiT¡4—DMÿ 9ÖP‡ëý7`©¯/×>>!¶ÈÝÅý½'Òá,H¥¢„´#³kkÌ‚)WÔCf?yB¤…0ìÞXãxõ×Ôà.-v'Ñ&eÚ¼›°AªæI{B¼ 9 ´—B›2µbèÙ°89À`ÿW— z˶ «¥† f'«¨V)í¤® q?1,ÖÎäòÓ Ád™‰rMF}Ɖ¹øÄNìt@ š=EòºÔ;¼µP}†ûPO½3I‹ ÷ ïŽÜI è«ÿ°™Id÷øûÄ%W,QgðÉCj†"Jò®×†V"ø¼s:8 |ˆÌ G;—[Û£y¥}𬤠u¬"1vx¢Dµ1î㫯çñé¾±õ94˜á5G °Â§"Ï•âß@w`Ò‰M½=ëT*€«f“ýŠwq®ý¢Êù÷?ܲÅ<Á¥ì&žŠLib—ÅÒt ¢<µõñVs,ŠÑÝîVÔÏ9y,5/l>Šüõ2_Ï;¿P½H(×¾«º«@i¡Z'T­/Ô+«ÊZ-v)ç” cÐä´ëÙ©@IìrÀpÁ€¶Áä´XÙ ýÇT«tÕ²sJÒꨱöo´ñ©R¾œßP_²_÷qÒ›äs³wÉOà`§n ?Âù÷MšNÎÕž±ŸŠ[w4- RS€ù…ÁDSsnnÍn.ÜÙi‘{Ðf¥S¹¿ ÐéË’Y4±Û–7LgÒÁ`<¶Ûf1læâ_¤”Úˆ’ɯð¤ÝU–cpƒaMTšŠ&¶aÝV}~Ð7'HÄv£Õ‹B -àØMwÕÝ{ýûÛÌÐÛ©ydg[™Ìµ5ú,dÉ>á [¼ËäóÆQ~èq‚–‹(â®Iõ¤œÊú·}û k¿õ”×êÿ08Dò-n±é=ëyåsÞ{þ,&èzÙ„o±m Y âÛlV¶C(a¹Ív¶õžj%¯ãpJò–¼†Ä¶EÃÿ&ìÓ5íXÃ+rnÞšÒ4nް(n¾ˆ`HŠj×ó„_sYÇiÈž ºí>;jѰ°iI!7~Ù÷¡Ëdñ° uƒbÈðfŸ÷8!S©R9Á”ù_ð*¥Æy+‘ß š;±â·=½Ýþÿ¹»˜]Íôüø:*­-IÈ͹Á‹P¨òÊWÈÝézÉ}û…¼Láà»…[:œ åJ‹³ç5íÑŒíDâ€Ë2À‡SÖø‚eþŒ@’t2EHuÝoÑ}ó¦5ãAbÙîòʰ‡4'ÌŠxâ¾Ý™ÄÝLä[7Í»Wh| úÑÇ›QÕ±­”Ë¡—)2z2‹zGF]§IB-\=cʬþÖp÷Èãéí«»+TÙ*;IóÚÚôfwOaʾÖ/PpÚi¦¦Ôß®Ðþûÿ5&(ùÚµ—6˜–qW}ýÑñt›fu¸$Ë4*»ó[²@߯ÿ.abNŽ?Ypr/Ž|[u''œç"¡/—4/¿sö9ÍáSÐÈÌ}¯”w‚SÎ_ ™kUé«gP8•iI9–°›È-­ªº€€Ð×ö~ew/P?¦ÊóOšÝ¨rZ%àq™M¿cDnŠwε@Ê$ÇtmDsQ£Ò*t?ñ‡ØÌ•¨MWËMWyÖ¬´n±¼Cc„µƒýÙMOù J¡dJ­ZÆ ]šÇYMPßöä~¶º=œ0íÎÊkr—E3Mµ„ÐðÀÅ Ü = ”ßþh ~¥ {̉Öéó:?ã>’ý*£,€o«kl­@?ŽB£m•/ˆ;X®n¹îÊ|Xæçïû%ƒê%¡üÄ ŒÚ#õ¬íAßí£¤‰âï͸n÷&c“Lº¿‹ñ ÿïŒ÷,xã`™Hólä7—ŽÐÿ¥ý%XÁü'3žhq@.òqÐg\k8T>‰¬¯(­—²]V'U €Ú63?ð2‹p8ÀÓ1›^šqmz—uw>Pac¶‰(ƒªY±ˆÑµ.ZfWz:P.?E‰Á#ÒÑXáöþ{TÉáùEZÓL±‚¾§ÙVa”"åµø$U‚ÕÅíü¾”Ú¼êß[•¨ïUµ]št¾¶Nn’ª*ú÷•³M3 q<œÓü0¡uöt¯D@‚ÆžÃ{åôwNˆñÂ`'B¾3 ;~~·O’lØËž¶ƒ‘Ç«ÖÇM•ÿµN.æeùhgZkeZ&™ºøÞ¢Ÿ»Û-5P©5'·ü"(­®ÚÁÖ`h¤mK†ZåòÎu5Ù:|ÃÆ§€ß/†ØFÍý]AýîXr3JÒ@Z Ø.ùoêh}Éest¢"Bíú$ÁõX%_ϳKËNÐsšÚîÚ_-Ã+çzú;¨æ™&|^qñgª4«~[ mË•ó—û`óž_ZF½góþ£úª“¦-C«RQ¹BWƒ^¦Yª4{²·ÅR2ZWUÉ#aô‹ ÷åà¯Ã.RЛ÷ÜwFÂãŠÒ ÷D±ÐGÛµî:)Q§®'7¶4¥!0›˜Ê]e_=tõÊ4Î*Ý­Ý[ÆúÏ„’¡ƒkñáW±¯ L"€”[¢bÂ×êÛ2Ú_è4Ñ3Äx^0ÎÛpcIL!ÿÎnmd½!ÿ/"™kKË~ýðÍ—»wð¥Å‡+ð"“^#[í²èùÀúÔ\\h,̈¥kã4ëÆÅ²ˆÞÖˆQ>8ŽnåØ÷,'"¿¹%¨î õáVÓS,iÚòšÇÇn˜¤'§c¤šÿ˧Ûä ž†y05ãõÃ7ù #i)÷ÔWO…Õw1Twj¥ïýBÐÀP>Ì]îþ”FÑTŒJìÀé@‘eðSÝžÉd :«¾~±ž…œEHŽ«òØxoŸT/÷!ó]Z#òï‚’»È9â«_ËïÙ%ûÂHµ÷Òd<Ù¤†Û¦[ u©yÕu@ÙÖÎen¥ªÉI1ÌxŒoÂ$Ñy&Cl¬ ãSó]ÛŒ†$ÓöëŸ~j÷þmÇ­aK”ŒÕÝbWQö¤ÝO¬Ý32›æ°Õt“»^HQåg±»ë´'|N!ý†˜…›Ã÷·ïEÐl&ú½£mÀØü‚›öK?ŽäscTáedäÆ8ÐAš8Âv—ÖÂ`y½¨1û‰æ¯QË<®ù„ª[›‡J·ç~ |Dá®–'v ¿‰{Q[jŽ oÇÿT¥þH÷sIçöwq¿?¯I°$Ÿ÷êâï?ónõН½–,‘‘œ:«ooä‘…AŽOI·Ä-‰l! »ÏFó‹îkj:ªiI´¤ÛE7ô«sÔN#UOáÉø@—»: £B ”|à­‚o šÐN«x¾€M›U­–C/•˜)Ñ`0”^ˆ©h*’²×Jœó KòIÏâ¡P?ã°¿ PŸAa óö…–ÑÐAR~´Òúµ"2%)3­˜‘èÛᲩġû ðÑÈO­ÌN.ÎJ-B¥XG]6+ôo뽿$ý·<ŒÍ¯,¥T§>GÓ‹/„§­³F>Úe³¿œ€Ì…7*LŠ×8Ú:M,ífP#;x5›mRËe8²W¸;~\ Á,Ù9âCèikR‡ñ[uÎì¨ iw?ÚïÌ –w™[ ËÔqTk«ü,¹‘B˜ç1že/`—CBYál£–çþ^Âg'?v—«Ä®RÌÖ” •–ÎÃx+:…RÌc«Ä,MñPIéP1QKj.çV<„A>O š'B¼E¯ã‘9Ðg!æ÷ü²VægJ3™§×Yð?̓&’C¡B«˜ðWUôŸ;âîól†#½÷a7‘ã~î ÿ\$ÖýâÕðK´ã8a#<æ"T5œÖù‹qâtŠ, p¤‡>{n¯-"Ràg‘–À»g¯—¦×b®Q¾ñ›d‘¼ ³¡eºõ5›AÁ¤ýE ëÊg™P\U˜Ÿ¾²¡ænܺOaB“m%•¼\'NÓÔ<½¦XÿJ<‹È½ú0›#2Pô¹:£´Êü¿Ç:Hí~I°†kiS´uõ’lªtu뺻ü·”|B7~ƒÁ!Ààþµ">.;ˆ&1d¬Ôw]B‡ïñƒ]ešg¶¡÷ÁTÒÏ º:/JKGM® k,0qêP‹köÌ0š—<°*HÉœ£ÏHž÷ξ3ï~ðÈJæú œvç³ô¯*ë‘5ëtáY>àÖãJ¤Ù»"GèÉo€‰éøÌ3&Q'kºgÔ, €½å rÙN$ëÿ[ž!w.C ñãÁ‚ß1%|yõø¶ðRc“@kªÏãiw>û¿¯BQƒæD±y Vzñ›oõÉ(}žºít>£åE·à“6—Éíñ“—£¼Óç#;>AOäß•^ȹ ¿ý ¥ÿQ†ûd?­Õ2˜Ú¡Eǘì㥸Ä?édQwýv™è0à»nLüê튠ë‘Ôw””œˆ››B©ÌÓÚY¾¿p9Ê÷w&þB›W0go˜´ÿb­çä‹ËlìêFemH‰p„•ü »M:5®ò{¬ÔŽWO…‰ª—Ööt쇜©lj¡ØôC†ÙI£®èhîÚÔ=°ñ)"ŸýÅWÙú…Ü|ßšÐ_g§8d;<4C×sìÝÜÝ‚ãÞˆ,O}ù§üÀæ,N$¬FÁ:^«p¯‘n«‘ð£UÈq-j1¿Ê7PðÉÝœ4™ìN9I÷9”¶“ælFÿÇãýG£æóxùÜ­hó…Ò}ûÍ^Ó|¶‡êµãI*ôÂÛ~þÕÎÙ¡…ÏóãƒþT{æœÜècWàsÛ¾«¨›{ç |èS½£ºÓ†öÁzþ²2póB×7ôícW™w™é¨D&ƒÎy…Sªҹa9a!¯ñJg_z~»’?ew&†•à ’7é°ó&‡”v•Ð[„~¥Jâ·Àåµ3OWIQ6*µ>»M‚>ÿÉ«¤ÏUDqªD“v¢OÅ£$ Éë½àÐä[K½Àà$ä†Ý,±ÐÍ‚-–Hä`Éß&j‡ÆÁHlJ-7ÓJI½àkÑ$­Ejµ¥|b¹±~œVfÀkSãZÿ”g–j1uIr!V¹8Ð+5.Ô)´‚Ê€zæóÑmÎq0þ~û‘’…YÙØ¬î ¦[ep(AoTa*d…±9% wñn’8OôöÇ)>à½È»ÃT 4˜&sð}Ãñá¡‘¸·=BDB4å’ü“Xò‰À:x K¢R›$’(bqI¦A@>Ü•©°ˆEl‹cWOï {Bî”KýužAšHrŸÓ21Ì"Ëœd"fS›[VÁa[ gæÃÕñ6P¹hTó‘WœÓ÷ýÜ]æØÓ°¶[¤i+Ͷbþrœ‰Åd H±.³òÁMúªÕ–¦k¤bÚyq+Y‹Y$’,í’ · G8¯ä·ô õF\ †Áý#Á>ïü³ µ;¸~ºGšÒôeìs}Z‹²8k™G6ÛL|±€}ô–nÓï Щˆw)wmZ½I”@0Üå]™ú6¢ÈN3íÔ%,ðt~r¬Ï–ʲ4Ï*àÁôa¯ ÞëG¡ó‹¬à¨ Õ C‘jÓ<”úÈ\è4Yzj‹'Çx9ΔÖgLÓÿmd£wŽÆ˜‘³ó +L@ìúq'ð’-væ¬Üq­¤7Æý;c’·"ë}æ|ñQªóøhnHaªFÓêá°§£ b”8 ^×|9×qØÔƒù`Â×l~]B]æŠ-õAngN EÖ>”æ$q‹ò…8ö^4 DvÔ”· ÔIÓ±5¨—Ö36qP¨¤›¤<€B;˜=úÒû† H¨’1(zY °mYϤœ¶3]9àHÝ S«Þ¨FîÊ_ïî}“(]xJ-Ž:t옛¿ýÈtýúés¦èõÌÄQCF¨®´e_`Yìú”ÈõTîæÄÍÜ}=ÅzW¼¦ÉË`q …‡0»X"`~l÷Ø.Ÿ(ŒfÇ”¹°º²žÚ•q'~xœÈ¸ìúö5Vʆ]Ö¨ë–8£ÖvÅ|Íé¹Ó¸ K»G+;ã-­J9°Ëˆ›â­u9;Œ][sW&®än¥0ëôr¿›FîVRôêïf‡%úr¥Ý=̓ƒuÞ%W‡¶êÍrß ”]ØÇÈlzÚ¹äÌá#; ¶ÞQ`üÚù¦¢½l˜uSî*ÃËZ>½(qa!'¤m-Yž¬2=îÜ0z²[ÝÚDÎô„Oô,¨\»¡ª{¤´è9rܤzsJ”U~%sGk¥mU‹mnwÖ%+D]np»|˹÷*&„$È»HÛ!= Â.ÒU÷¼È¹e§Oþ.¦ïÆM}iÊwhÝíwVU#}}–+K ÷÷:´4A<ƒDÊ1@Ç#û{Fâß15­v%á૦yON ý˜X¼Då¶à±g›®ó±Æ “ð[íÛØØLýÛá FºB†©Mxˆ´«tG/‰?…&ü?ö’æ€Tð»~ð?p4|CéŽnïm¾“cºã=³“„ɳ¤ ¿5]®0+…‚÷-‚”*4…ö¦ÒPo1ñ;†:úÚ"8x-U¶I:LÆßwbR „dŒŠß±×ˆx ‡£ò³ÜôC£ÎnwèRìÕGºgSžXý™Ódf^Š¢¶œÜEÙíž\ÑÿlƒY Uxè†U{!ȧ°Ø¿«þYÀB˜¥<‚…l5ùËÐÞº­Û»|*Dçë aBˆÑÄ.ë)­ë­¯a-eàµo"†*BF 3í u"cJë>0<¡kUWõ›\»B{ë?……CÓòܰ>ä¶Z|.‹>äú5EZŠÅ–2è%Xl r±Æí5x=!›¡á»¼Dÿë.ô2éF"‘I°Ω/Ôx‚.G«‡+b5ÙýnùÀ ZæP§Yr&™còÉl,’&ûNí°ÙõN1€H~Ìdô]Ê}½›ïõí¬W"#ŧ8Ʀðìù¼˜·ž`žÞq”üPžÕ°RÄòâ-:k©¢i?¼Ä0Ô¢1\ l¢ÆZ4ú;=Q ÏÀÔÏ–ç9W¼Jî±ØM¹¥ª¿S¯ý`â_”Ñ£±@I ’s|K•Íd;ž‡ ;jæIøŽG|QÓµJk:˜i§þ0Pö¦•(?‘ë·°žðˆ$ 2Ys³ûåTß«Öbù,®‘/ùÞ› *$iªxA’-EùN%KµˆXÍJÃur qG±àpkñZ%ö?Öÿî¾?yã*ÔÊñ`gæzÓø^¹ŽkGlŽ+•c‰éQˆ4ˆªuÉ=Z½º!FËûß°ÅÊŸ7þÚ6ðu$‚ºÞ±o˜µ/]Q”¼dìoùè‘Xĵuø›_Yc6@X¶‚ýñŲ¶ìµŒ¬ø‹{d›ª‰j(o^¶asú:%s™Yx<<á¢Í!Sf Î67»‹õÓ-¹ƒ.Ž7¯UAhu–ˆìÿsY$»hŒdz‹VD±ü^o§I³± HjàW\7¡›ƒëÆ›ÝÝè©ÃåTH&ADm:YT¦€_ÔgLw¹¬:vÖÂàñàBÝbÇÒÔI¶ù\î!^š3bú5ÉN£žSüv Æ“€O".øuÀtÞf˜x½BQ1 ÌKÈmZ¥š ] Z Øô‚Ù©ýA ñ°Ç=£SlÓcÎð\<+»q¥û›œß_?r²LuE™Ï9rÝQb×®Ê]§ñŸ0JÓ€¦Â&/8âqç]Ð?÷œÅÖ¹\ù©-îP&OM®½`´Iþ3Í\Ö½Ù”1ý ™àí°ÑTœ€å=2dî|El:^ùz¶Ñs¯i7½ëþë&°#ܘhªö°-Áÿ >Ö­ú1BA­sâà=M7r?€Ïαȶtö'géï $i¢“s %›Ó(ïTÿëé²|‹©Ñ#\j¬÷²¡6c¬·¿5'CÅ8TÜôlgè/qj¶F,bkxB. G냩$HæêüÐ׿R…wïO*g24fee¢"ð£EÖüú#8dßf«ÿ#_öÓ³¿²nÆ'ظãä]dLÙ/¼9bÙŠAèX¹ÆV“åŽ×ù…Ÿ:[á^Q'KâRI°kƈ×9bŠ_;s2~î©F£¹ëŒX–곊­ûB‡î-óe §Å½Ê/0øc®0l÷vCµNà=4ÃÈãRéåNè¨-Èëac¤kdô¯?Ä ‹M—-0·I×ÃnçvH_Ÿ"CZtt â툦›­æØ#y™–{à´°tÚž¸xr¿±%½ê©È†­Q»™#÷æ`¨g’U~ E,{ÍiÕT-¾­\¤0ÃÌ"«©Fe­ùËW2?ºz™tB.¹^ü=ÅNJgUÞô-ÏV5]8ka1O÷r•¸hNP–a£§qâ›(DM™Pç:ôZÈdŠKí Ø€or嘶ø<Ó[^8·ŸûßÓªëX`JïDÚ00Õ/3ö®i”8ƒ‚.8ŽÒ·®¹.À¦q<ôÝ(Cñ³6î’ ]÷¦¶Ì°ÑâœD%ãZNÉ\¯Ú¤ºIÆ‚M¼mWø…Ýv)©âKl5 PÊáPLBhÓ©?Hc÷$(|Ã5PqXª€½ùeìÐù C¼ò„¯°ìV³Þ_.3Žp´i)]C)Zì³Vá‚뺖'¸cäÇx£@{œ±êö©¾mtzôìß®òžÞúHI¿†²·®Æ¾µ±WRù ÅbU˜…ÂY ÷2áÃü!ÞÛ j~Úó!̬mÒdÇv0§žï¸xq¥Å{–9Qî8‡¦n ݇p'_¦L¿lÅ®„ÊÌ`íÞñK;R+C©ªÍvÛÞš÷‚3¬ 5òJ©Ž1럤£?(^­ïî!>ãÙÙa›p ­‰Ã±$TˆUÐùª6ßmA ’u%à ´Ù’iU»!–ÍþŠo9¯‡ƒe{m›|Ï— ž¼|¯ð—Ë×üX7T_©y5B¾êÍ<"él±MK6¿b±Ÿ¡¿Ïí_Ä÷ñÔg$PuTM¦R„*9½]aà*&Ë£lœJÿpgäЦY7ø£ÏÚ\+Øw„„aéoB0‚Å|Y£¨ÓRFpä5 ïê? ¥èy›¢¸°©î-» û³¤+ Þq·Ø¡»ª÷ÑÏ9éàGTÛ[Û(>È"‡ÀPäßgx§øA‰]%Þø‡ÿµbEñ=–èï툫ð$¶Ž¾‘“i…_,Æ5þjTÏh7^Ónj©ÿÏ:¦0ûn1‹å}îI¾Ìïx‡p YÕ¿Nӳム½ËëèÞñÑ$5bܽåBZž Ö…]Ö?o&ô!×Ãf: q¾1á¢.Â<hŽå´y3 ³”J¿;1’=ˆ(ÎV¨|žPZ_žïº¯Þ¼›ë²­øp¿ˆäN3ulmY ¦B˜óV—YÇ8*î{%‚%l&>úÁ¿åŠ 8sEýÂ/ÏÝóô$Ñ|ðÕûR+ÈÎOAÌÊ´ÂÂ[{uŽÌůÊÙ*7ݰ.Þø 0ÿO N.èå ÛT É”1elÒTRp{¥Vññl]1ü±èØœ=]JßÒ’cÕEÒ7 l†rpÉ $%liîiƒòQìŸp6ñU.ï>SðªeεŞ«™9-»ÂÜj“Ή^Ï:ë ¡Ð?ažÍÄ×v©€`E¼\±\ ëN°¤ð_ì‚S* s~]‡[ïÞð}q'ñ{½D†D¶i¤º*ÎÑïGñÀ¸Ußmó–-quBÜ%õÚ‹j<@7qf+“ †Ú4£³úk”G/á¢Të.Ã×ôñî§Ê8ÓnÒ0³²¸¬ ý46¹E´¡#-Ó’Ì—¬Mð夗D1îyU¬ÇÓÝgqÆË ËxW‡aÌç°vvǃæk[ð 9fh#%éáQ-­B)þíáùZ q–cn¦Ül5{ Å¢Ë,×[üL–¶c£b³ â½èøo‰šL.K ÉGõåM–™B2БÛþ$»¹œwm¹.^©Ü ÈqV…` éÄfs?^ÛE¥ÏúA(¡2sLöoïFZÁ#F´…' -^F¶/ó)—Þ'GD¥u{™uú`Ìœþ{Žž Œöê%Ê¢£ƒ0Ñjé€ùodƒ~›®¼ô@=1)9;$E_QÖŠTΪOõËÙ @†ôKSb?_ë§ß‚!ë‚ó'úØ™‚d ­caX <éG?¤±Írt®IˆÑZ¨$áË[>ŒùD™œƒ*(EïÖ'Ñ强ҵ0d¿"¤ýè[/´’Œ…gŠ‘ R§s½Ýú$È­+ý>ép¨yRà¹8nûfyãIK´É齈r6Ò¬4ëmOñc­e39O²ÌYuÓ‚³Þ Ëm9òÜͱY1·¼ë϶äOlN0½Y˜Ø‡ï”Ûÿ¡wÙÖ|Y[kŶ­}åMû±Åéyâ8÷ͷź_9¾ûX±Žú&æŽÍÄ",xìû ’þyqµ;{Ž@»l»c§`•1ÃN´aæõ$ä_B}S'…¨ßxМÇ6ÃáÈÓÿúæÚ;e¥]7OmÂÁÈ'æ3hKúèù:’ã\->5`zÁ(d"\+OGØ z+Rðé¿Lü·«¼ÊܶþW{X{¨Ö ~°¦ª#ñP\ü‘_lLÿÏBÒôkô™ä~Ç7“_ÿ=äÞ“pþâ?VIá­×7òJ°S%üä¬Sž‘Ç ^lLÿú»Fí¡Ú¸Oþ½×{ñ<ç2›{‰Ãþ‚ËþŠuþ”àIVh!g3d{Q”Ã\Y5XH¨ÌÛ÷vŽjöHJŠÞæ’üÄ·²¹Ð=Ä)úKwÜуI8Èu»oìÃ:;––>”H˜Üvç@"arÅhãc4êØ8£åÈ/9EÛûÜÊÆÓn¾öÔ€¨vXô†h(L+ö25~RÆo.AÜur„¸îФº"Á° 7QºË·ï§Ï Ò³å i7/xhA¨rZ`›B“‹J·]—?Œ”MËøå£©7hSŒ‰ä6®’&ÊÏ/NŸUþZáx a6lðÃs8F9÷Ñ÷† y 3W /·Oé/[Ý$N1—ÚÞµÌÕTô±†]%ÙàÆ†,w6ÄíÈwÄ VA|ö"ÿïny4yS‚ÿþcÌXëLñ©';ó£ÀkSGÿÆÄïÌÄ´®†f8«j:#áhmöþ¾¼+\ú¶¤E®,i´zxß²¹B¡&ýùóÈÆü.f>muBñE—£§³cv1Й®ugÑÖ }ÏQé,Mm»ñ¾"ÕÐ7'°"]Buxw%ù}ö‡ª.æ!½»*1üÿ3¸áJîHü¡f=`—'Ûíš?ôRÊÉ´ ÕuMZóJÜ„J.Þtqºžú"]ñ¢Tþ×:¨X_liH|4è¬Âæ]–ÊþÃ/­Éb¨ .Õ]KÄ66T—ço(³Å_öqGmÇ;QNĤ–tV®S¥C,©L§ã›Â  Y¯Ä=»â¸Ýa±çŒÕa‘EC"€pY Þ1q6byñÔ‡Ö/ à¦inv¥ 6ö¦{l‚}½éWNÈSçY9Ò}Ó™ÙɾAÆC¦µ%{‹¡¯ÆÈŸKI‹·6ÑüÅ2r÷FÜ‘ÍiÚ“äÝ3À>´¯ y¡ d”ì,Hb$6ªI”F·U¤B±_ Y1á8¯¤§rhh4µzþFÊ&þ¤ ùv³æ¢½S¶=µ?Ôß¶Ç9q[t1;ÈŸ5XNžãð„Üܺݱœ->îM¹MíÌ2'»)4Öf•˜ ¯žw›ˆµÒÓc"€Á‰Mv¯tÄpÆÆå'¨$r‰R²ÿÛ }ËTÖÀAôj}X30AÅîÜš¨Ù`´äèŽaűkž«±'Qñ”´ã^ò‰³W“Eˆ§ì?Í1õ“ªÂןÚªŽÇ¯‚ž>•¼d‰9Bj­Pt ãg*ü¯—¿ªÈ¿b\þ õ€n32¥uäfšÕzsuº ¥>ˆeeuu´‡êZ:WiÉGH¾8ås.+!r{ªemc±0r‚¥ ¸Ÿø}E—©ÇðÙÜÖJöÔ±*tðĵ-é˜(}üµÉ³÷¿Üù§5Ê4g¦º)½?;á`¥_¾¿‰•ŸÅÊtÞ1÷Db²ae¾àÝþ—˜£¦î>M:Õ*™uI+=¦5ºº³œùVmþé K&­š ±í”ÚMäÐK­ûŸàéGØ6³ÒÝÚÛT¡í~«"£®NŽåÇf ~ÍER++ëK+-òƒSNÛhíU¦"ïï݇Ù|¹ž§–âÌï;ãÑ]Ù /.ÿ~PÅJî礆ošoðnPÀD{l;úžÿË/rej,+Õùð>z¤=ž{–âbVç¨`*Ì,½‚ú(È‚7ÔÐ4&ƒs ”}â½Ð!s’1â' •6“DØÅlù=)§&ç/ãÈIãÈ/‚9ÿ?€¾0%¹"ÆF ¾¶¾|è×No†YÙo–ó¬Ê2&¦ô·‘SíVúÉu]ïý™™áÕyíÞ?T?Ç2V 䤦MŠM¿$§™ 6¶xöß”_¡‹„e-tZõ¬Ô=ÁàÞ„SFŸ–º—s_J1|ñQ{{]‹RÐ;ÅDŸHs’B|  êˆtèÂÕE]¥5ŒFÍ…Àëª-[-’Íu·11æ.èöÉK0ûL½èE©`0XJ¢i;ÅI-þœæ`»F­£)‰†ÅÃëËazìé2¬ÐÛ­ÒÐi*¿£­V›Ê÷â™ ‡õ"Ë—øì3ˆ°„<â3û^I^ÿá3Ž>)”Ô·¼ïÑ"(j¨g„i³ßùžK'C5Û»Òù3lBT£­H[tÕo˜8ÎæÚÝ%h()UÅ«ÎÜ‹pØÎéÕ«M„·fãå(/žñ¢ËôäG¸R‹XȸvÏÖ4Œ™²dÓ˜Uu¤¶S}´>ehJåsõ«¬:—i»ŽE6ݲU^ê(nÈ„ôÄ>Òúš¤;ÒÉʲDSËR¿ºFŽB'¼ªˆ§‚)AÁ«ušyÛ£tÂH¡R«*8ÛêžX÷>ÏN?âýb…™îø„ò~&X¥¤sµÇ|Ôr!›nØÒ–ÄH¥î*c¸]Vü'Æßc+.úy«!AƒRGQ:öáì´Œ×cih³˜ªa7|L½ñKõ/÷U0ú pýlGfÂBµÒFhuâïüÚ¨£srS}¾kn‚À„ÒKô¤Bu]ó•XÂû³3êHMT}gÎÑ:ìÍ µ_:J•ÔÖÀ(”¥¦–AÎn¦uBêÀjçE¿ýo´”n1¿’(!¢»Ù-×)ú’PªF㬜·•÷Ù ò¡ÇÚב§µƒ_Çþ×ptε¥÷®Õ’IçÓ¤Ö˜{Ó¹´Š§0$›È¦ ïVÂÈž`E.kVô…1 áó´š÷ŸÄÌʧÇH"{8ˆœñ SÊš`Y-£51œ°µ·Ó¯½…anmg÷V»¶ØgV-º¤­¯æÌÖ+ + ÙÇ€î?_ÄÇüÛÃÒŠØ£ë+bD¤ÝÎo©N!iÏÇr>îª.”`ˆGà])êÈçr^$Î×l·¸ G#TÕÎÐi“µeµ)€X‰H¶+„øý9jWjß·@ÖCOÖãâÓ_K+"YCÓãDSN»'Å匈TîTGŽïDÏJÚ­ýDWnóytmÃôÏH†ÃŸ™-$r1q›ÇôÓNŒ«@iÓEÏáÁ8Ð͇+DëÍÁX÷úœ8œó8š¨ÙHÔÍž-s|W&~~äšá,Dúok¿j5'¿rÚËÖN€+ÿ ý7ù(o²tï„É:“ïªfßæÕƒë EM%«&h%Á™6×Á‡mÊöpñ΢æÅ7’NOn~ÓéÉûi¿Š÷DüQDP‹ÿ‘wC*¯yLñz¬ãÎhâéb®bgôØîiï »*¶[dÇ}Z¡£¸²P°˜R¬¥¨“›ÕÄUÔÄJ/Ÿ,²Ä™öºQ{|µquN{@iž{¿ÙΊÌQ²ÄÒ¨¿ëº³*GÙÐãèËÛúo—FP 4˨3ú¬M]Š–·ðE°6HV(¥\gù‰öfWqn8JÎS(?uõ¬Éã³+Q÷€”&œz[;Ôr·k9T»S«ùŽó34He|öÔz·R ÉöE//"'­±ô7ƒãÄÉ’v,Ê]O@²A……sÄ´)ㆤ×ÅÑÆY§›â[Ú[D± ¹EŸ¡È†Eï,‘Ù=9ÚS¦T‰³£ÑE@töîÞL„£–Vü¤} ½«—ϸépv¡^±áLÿžÅ=#°7û|Våoã¡ß!{5\[~‰~ÏÅQ‹}¤ Öò“gj8ÏtU;‡©}CLŒÛõo2÷<‰`3Ãõ®·@ú[í‘Eu+™t ãŒ~÷»*¡¶ \‡£Ï$•-F鯨/hÔdÚÉÑÙóÖÞ÷X|ó¥%< f¥4ÐfTvá­GI×ͺ…åPog\PTì‰ÍÔÍDeõ­¦e”aÔïŠ,˜ïîÿù=mèaágŽ‘5klX2SäûÇ”§Iߘ.àëå)ÒP˜Ð¥ŽûõŒHn²R¡`å•m,© 5([ùÂv³œoK­ˆ^;kÜÒíÕh‘†N¯Rާœ‚÷Ž«Œç<Ћ‹ŽÔ”Ü]ÿà§´Yu±zÖ˜'䡇}%&çYàÍ4/™’;MGGGs6й72¾¶±ˆ{·½o4áè*c!q»íàpU4PYÍ¿&Èùõæó¥‡þù x©:¼'³ãy ÷û?ˆºñ`eã¦7E,nŸQI!j¼$çkUžp ×l£E£Ä5Èa¼ÒšQÞ­IãSCcñº sen¦B‰9_ªGfØ» ¥F8XšeTr'ö·„}EG ‹?«±3½ˆ>N{Z.Dìç¼;0¹êÚOîI :ȧ×ËÖ·šLìjfœ1º¢re¹ˆa×›md®M.Y/]or+ÿIOÕËøæ%Ëë·ô"Äçè—wüˆŒê±ÈWЦ ùºæbÄg¾ E+0#!©z 6yªióÅfœPöžØã÷‹që­Ð–8Ò÷¶gçÌ÷Ҧ΄Víþ5‚ 9rÍ=|7:w·í£ðãÂŒüÄu}‰U·L‚æ†WòÒ‹¼[ú)µ[(ÞÍúÅ)«=”•V”™–²~DMmÎÈ)ÍÈIkV–i'd©™.NÈóMøt»I÷uØ..Pwø?—khh èë”Åð'ä»ÿ¹gr«¡àŸÚŽv9ÂXUÔÒ7ðåHŠi)J"B‰ Btÿ}Ï<7Ê‹œèí\UT¯©Gg ®œÑùReù4)÷Dð 9ÞÕ¿y¿gÙ‹Z÷7Ó i ÚãûëÍyU/e5iµJ‰‘ªcŽàÝVŒp¼Ã²±Dug·\œxj±A÷¡W‹#¨1GRJ¾Å‰¼µU çˆÉaWø[zzÚƒve{BÂleW\ü GÛX:ǰüºúǽ» k­®;[ž©S¦¸M=þð‚‘ZÂJ[Þ;¢Ù9žƒŠðœ‹f‡»g ؜űªnµ‚Χ}hJxÉ”v稚)Î,n‰ ñ?-Jwß½ñö+ÍnsÙ!‰Àô,MpbhD+±Ncü•XõW!rÕĦȔegÌl W…üSâ?QÉÕG;›d…Ï-E&pš³. ;ys¬fQx`d´½îxh1×ÌDzw•w3ù”aTãS’X)Ï)Éù,=« ÿU-°€ÛÒ3Ô¡–öƒNÓ´\·XV€ß›ß°gMÓˆ;! O·……-Ò­·vì<2ÇõܧÌiØÁt,qV/ïnïÊ)´Nu÷اü!û ·Î>=µk¹4ïéu[žªê¬,ûÙ‹C*µDé“Ù[sâÆ—N§‹Ìº®ÅÚNU7 ªõሾ2A««•N]©[âù'×‚í¢ªY¤û:ÿD'ðÉjê‡aÄï_¸qïFû¶8ìÂÄ Ü~°Á´a¸ZÏ1ÉíÆ¾„qE-D˜2õexuÏHÿLI’$·.[¹Ú‡þâüI¥lXŠvzè¦Ôêàüaëæ4Ï–œ€w.žÉ8:ŽØ·äF²Pòö¥(|*àIÎ¥Ui¶Áƒi=’¬ÜôõýIeX¨K×C9鋤‹ŒSó=À»SÚ³i‹éîn«A離}A†·s½âGw_(É2±ÝgzT_–/_‰ÉV¬ ËÎÈ-(Çþü’’}Åá{sÙùZ± {UnFNÉ·{‚ äEPzTvzŽÿÄlH?”ºÉˆº _›™±DP‘ìC[³ ·~a¿U÷S£r2r^{ç5‘™ãÊ"&>zýËY„ÚN]6ðëÙÆËVÍ G…;Yb¨­F¹ûþ5{¨ †§¯t›ñkATüÉ}¸‘xôxîòÄYÉ=%7¦þ•„0gÓ í\¦ÕýËEÓœwÞè|¡WÓì2e‡+²ÔÁ]b—û¾½pn¸V¶è+Q˜òü$~BžX˜ðH÷רw7¦fÐ~ o»‡U#“]ƒÃáv6ÊÅ®0ÇŒl¯!*“"#wOFÏäÒØ—T„€±õŒ¼ÐF‘zèÓç/’E?&p»ÂÐF"uýª©òÝÐÒ©:ñBNŽd~ª³)6¥Ímcf€­^q:¥QŒR.03%o^ #ºÁMŸwÀ¤qöOño$V*4È%“HõBN}ö^•Ùzg˜­¸$Ï2a‹^PL½zÂur¹Û'‚ÖŸ‹ïzˆ9O¿¸"ùµ&§³Æ>sŒ½ÒécÖcš«6‡¡W]k »0€R&áÛ4iªQª™ÙPÙ5ð“êèßö&žp˜t°æH¡ÅNƇ5z¶LÀ¿èÂn*ºmõG"ƒS” °¿‚Z“¥¦>G]þ¿ìAw£ô€w~úÒÜÑékö8\dÏÍîtÕÖRß1ý2z='¶§™EÊÔ¼Ú<盺ïsLhÚïr‹‹àŸ¡´óäD]A¬:!pÞrE>Äájêó³ÜàŸ¾³\×µ¥†7\L ŽËfMä¶á¢Œêar÷hãËÕ˜²‚ß\3#ónRˆ+ymF‰ 6«yf£¤"z+puUÁà¢ÍÛè_êf°íçÁ4õL³ÓçHäÆ"¥ª³)T°q8û‡PG¤OƉֈҼBYnÞˆQÇ.÷ñ«ËW#áWMÿã’%*NÍ2Õ…ûÉ*÷ú ÿçP› W’Ÿ‹¡î ²qÛ}ŠØÑL'87㊖!g ÃLŽŒw7DÐ{à‘â±ÛR¶at¸)¥[®šÉZ—Òª¦özıDä00/MŸðåMl X9¸†©(Û%™jVéû=1¶*AÒʉÚäÄcªšI:÷ÈΦÍÔn‹«ˆŽoÖ;«•5%p= çüµ ¸ïM7Œƒx¸˜ó†ûÊ=³S4¬øBм‰kêÕj9…ð ‰/­iÕ@¹¼8+’l1œ”Y«¹å°¼&^+hU&½ë`JT¼Òj[=IÊŒð%™”Aqe@Vïôuô›GeÐÓ~­@Rb6MÚXÓÚßî3Ç1é¡Èò¹Ûª;¶¡ PGPÄQ “ëH„ÚÑ-fº‚åh–{‘j/¨//,u-?­>Æ/þ 4c"[Fëª:c ¿\R¦5ØÑU®Rg£Æ+~ï»Q†T'ÅÒvµ/4!}[+ÃXìtUUKé`ÉoÒV)“ç?3/nÇîJÎÄ‹*¿CT7„lB­ÙNo¬^×âëi¸«ñKxƨ f¯·ŸkÙã¥Ê¸m\‰¯µ3Ì…Àð6O ”ÕôbêÞ®“;,>†½lš3É‹êëÿDbh»ÿÅY©rÓ¯¤DÔ],ÝШ¼žÌ“ÛšìîAï1 ‚1ü+œùÁµç™CÉòÒ7®ãLÙå~BÐT6z¢žð̘ /4DˆXè½Ç Ú¬rF«q€&}‹ò!©µ›ÛlÍg«‡Ó1îJ)†ŠÏréÆò^JóW•˜Êj˜å‰”M`±°Z7K^ß%кPô?eÂ{‘ ¥³)œ´9¥2bøÀìB¤æ¯ <¾ƒÐ.vâ%Öp¤V FÑßní³Ïƒ6´«$ìFg(‰ªò™ñè­Ljîç/  ƒ|6å« ¶¯¤o–Ñ‘›“OZ›@ ËøøNÕÚ—¹ÌÕûº¾ ^Z‰y 8…-´ß'`9-šg†FOë ÛÚ5:êlj_ÎFîRN ÐòmõËTuC¢s|¦Z,`–ám¹á³„¯¶È÷ïF¸”ÒçIÂev«ß=…àã ÊÿÆåÊÐUãŽljêϼBÑGd¨O+2ójg‹ê[7‰Àµ)m–܆ٵ mKµ †°»A±ƒïVÇRÍ Iü½Ò%+‹?Ç™¦v"³ß; tz—ƒPý/8:¸1lŠÃ¶|;]&«žªªè®ªVä?0=jŠ`´Àª_h3M¶‹V·T2’:žú%峬ŔOfáêÑuS] -ºã´eb˘µ¸ö4ªÎBV&ÏdTUáì6-]­;>#çk}‡ßXÁš°Îué%0:-:¶ä˜¡µøß&/®_µ•†Õý¥ ë²±^ƒiüH©Ù!ݯRØUÁ¬Ì< 5"ÅcÇzfÄ}ëûeýíÓ;9¬û³Ú¶ÇÔ ¸›!Ârg· "Uº½Îµ*÷”¨ö´¶@M”¨÷uémr +=!ãHëªZ9ñOaáA›_XÖ7èB LÏý„êŠ{¹ZZö£&J-®'Z|Öl¹~¸@¶›2k4o…B{ D{ìY'-ßEk)óf€ eÊ”æ(Ë^dW sÁ)ß™Hù“ç×xzMaÄ“ã{/kýº¡¯Ú•Qÿð?…¾oV¦Ú V±?ÜÝAAvzÙü(ÛXtcîfÄMt2£#ò®ƒþjŸÍtv°Ü{ãòðÕXg´qª§&±•K&ja² Vó•»äb)®ì;ÍO·Þ„«æúÚë½C¨ î§}6Í}€ûêøóñûy”L¯à³5K ‰Yz¹°dkô¼½+ÖÔ3Ýò#'D'>Æ€›Ê½sR4«¦Aî/Ïjnp¿§gˆµ‚«û²$ÀÇ«½ˆ¤Ø«Û+21¼žŸv¾$‹Édµ‚PüY‡ÝèÀ-Ñœ_†Û¶<(}«»©8)«uv]‹F3Ì /E~<)5 Y^~ïë¯ÒМýa$ö:5µ/`¡ƒfÇÎÓ†‰uíŠÌ—› ›N6ÑŸ#Nõ_$Æ|Îs–-+Ñ룪ÉJ¬sQIb/k•ôBÏP^<þK’ݵIì±&!Þ í«_Ìš(¨8Œä¼3‰Ð Ü0ÖDG^Eý)+ºûºã|ñí;N ¦1Sù¸ØüE‘AÖ“Òn¾Ö^ºmÇ…ûW³µÝÿê&ºà“$ ?bvV‘êfó1bÉçåš;ã§pÀä#åPªá‚CHE^&89`’<5aí‚„3öÙ—ík·Bjdc0Å— ‹Aˆ.ªú³ÃvÙ`æ“5ò¤®PÏ0¯âUi»aÍv-Š~ MèŸnjz‡IžÌ<›;7Ç,W<Ö ± ®×ý"Ô÷MºA¦®5ÓçÿDé¶äzILÇBEE‚²h¿ª%â¼.ˆ Õ×C@o˜eHZÑԌӥ‚&‹UjPÊJ&~ùŠ~¸: ã&TŽÂȃ­÷]Éú~Bº.BT¶viH 73 ^¿66œÎ×ëÝi¤rèi=½$#¦5>nJ«µ…áÍ==Âyý’šÃÉ*;GÄ0Kw4$q–¿Ô&+rˆšÄ4¾^ʧ[˜…s£ÜP!:68l—÷õ‰´3ÊîÍ“ïRù'±NµÆ¹g³ã¹S'ÂQw|Ñ\‘‡976ªˆdé×jŸS‡ËÞš2Èo@_½TEC©£8ÿI3ý1ùimXöRþ$UÚ"QÏ:Ã#lnòUcÇ\ðAÇÅQ70«=g:AÍ ;¡ãp°¥¤Eë 'óRHI­Ž—‰Ë={®{ö<Åö½±O½y} }`‹@·)PÀ’ú³¨îý¦Öø?W^\i~$l|#´èö0ªž-MTñ_u†0y{!±?Øþ-ñö[_)¢fš(Ó}¬m¡ª°Éoa!»Sé1à4EŒ) Ò›Ô ç³³ …u䢀Kø/ÆËhDÍÆù^tÑ9â…Áõý£½“ƒÈ "lp"ÁP•Ü_—;ÞJéP¸gqÒe[ûÅ™Vk¨ç:ï¤Qµ^ávšwlªž7Zù§žöºq«?j†Ëœ3ñ¶µìá #¨âR3­ï?l ž§ #-L§Î§*<¶¯¤¾ïŸ( ÞªÚòíöÿÃñ Ý~¯y |ë’×ç_+w†•ñ„;µßY74¯}•ò]J\&)M]PW9pB¼¼ÚŽÝêÆï³oþ\x㬹àWu'"Ùì#ã3 ö…N6Þvp½µá©ówã®wìW_×öiŽõ!#.¸ ðÛšsc~ƒ¨…x¿-Ù•Ÿ i:»Æï¾Õ¶Ödä‡Ì9ÔÖv@JXe#eôãO¶ÍèΞñ¬VªNÞ3¹ ~ü¡ÏÛtÂC²"Àt@MVÇ[»ãײ׀RnUÿD9P!@éõ14‹óåTafÝ+šïs5‹Èý óZ‚ÞÎÕP1÷sÛôÞ•Ø¿¶ì‡O³Û"Q—Bæ0 JàŸl·QÝÒˆ8ÓžX¹ƒQÕû÷ŠàʺGÂÚ’íè‚ñ ŠÄsþ”¡~¹$êpH"`5ÿwïóˆÏ‘ê¶®˜›KóÄ8ÖKKˆß‚Ø¡lzœÀÜ-û Ý1ž‹ß»¿¦ëëjúsgP€ÜxB"Ù'ªkÉ7i[W(›¦@{uÒÖ×Óñº·÷üï¸v~ß„ßPÄmØøf&Hb‹1ÍbSÁ´ÖsùÖW^%}p_œ 0m£Ž(ßW%#÷ÂÚ’zt&+kÀZ†š ¸™pãVÐiÖ&†¹Ö18îùÊŽwƒD~*–0…¶ÒÈ à_a7L']EæÙk„îåKŠKÃõÔw­Mû§rÁ òż@èáõq¦æžIë8F§GZ»¶äXÚØÂ¹³â´ÈÕøú4ÅÓg+U.cÇè­àüyÜÒ’\ë?aŽlS¹åŽú<{j« dë6{õñ%¸9x™ìÌE07×2Õåó6˜gÙ¸ {ÇÚ™Æq¡êñ¶ã;½7Õ);2u~ž¼“ŒW¿Xødäñ)ÎúòGeÜØÜôæ)£m9àNq& ø™1/ÌüRÇã6¬°Dr½€ÍÕ *·¬8çëïç9Ž[­7僞eoõÕGõïøŠˆÕ)‹¯ŒHõG%ñZ†ŒuCƾJ4sÆÐÄà\mþ®ÔUY|bþíCÇObRÑÕƒcNéÉï>wÕØÈÁI@ÖŒâšúH¿¨Ö@œm»FQäßDÊxi!zQ ‘škÕ¼ò"YÇ€Z|qv(…HVgýÐîQ{Æ vÏÙÚ]¾çmîReÏEÁ† _l~VÃÕy)'aëßásŒe%ôÁáX¯guY¥¶t<ÄáQ©U˜MY¼Þ©Ežhìá]x·Âí¨9Æô!+—ò«À<¶ÊZO5ã„ô- .%ŽÈFH®œB5<;:ž¤³T*½õðèáâÚÅr˜ŽûåÏ¥ÖîÙ³um¥%ÜÓ\þtÓBÝ Eº›vY––‡zr}—$Òd—òckÕÍÚËQ¢ö,ÂUÛØ6ç@ Œpè}Î}lßû .'ë8Àe yG>u6‹lâŒete`ˆ†löê3,tÛE¨du›‹Ë§sžÛ§Ã¹ð±p àzjMÊîØk^±¼ÊR÷DXz“ÞgÙqýøõó!Ó,Ú uåp[Í%†=mG+ñr›Ó3r7¼|½ñÑ“CqE›·±¼àηWå…àdŸØDØ^ÆYo’…þŽ¢e)|–±-…ŠxoY¤GíÀ¦äâä ßó’5ªlKoòŧ¸‡Ä¬¶pupLl¹™…dG‡…^¥©ý%Û^€Z&dÅ*.õ. µÍ]~ê†i¬Fé²®1ÒKƒóKj›û–¹mmñ¡®e?Òi.Çþ tù4L^èÊ•0ÊqIvð¯ÛåO„ îž—«Ea o‚éÒX™ÙxþÑÌK{r•É´Mf;)¬jú^4!q K*Ü]öùl`½°w·À|=fVc²ÕÒœEÒWè×Ês ÉLóñÎÕª¼¾ÐJÞþžBÓœV¯ÀlI”ƒ_ì•íÍöyvŠª"‘—Õ6k¨#Ë0Ñj[f êd²®c¥€[«J‡yÄO;qyŠÆ,gá*'|´Y^3ç÷ŽÃüa“ Ä95½ù­û»È=Ú”êþgÐæÈ_ð’/5Qü'K¾‘SSIèà½VVÐÒÙ©jfýgâî烰cÔN×h×µ«—ÿi¿~’ü+ôÇWìû ÚŸsçômLãˆg×ÙÕtÒ ò…~óm­¤ vö9-Í;j ÿ­ÿA5æ´ç™ãÒÜ%6Ìô(PËæôk{wª¦ì”°Ítž¶'PßóFÜcF""´3h½ÞpeŽ mû§N`ïÚÜ£™P<Þ¯@QÓ®’X- ¬ööJjUy¹¼Dâ÷ nthýœ>ïòIÿÔï0“MVÇxGa‚=nëªÚÐ`ª©6 BÕ5æ]®/@ÔmN9¬™œl;e·gþ„]v XÓ4Ú.ð•.4ÉÂ,õ'>¦Q’ Üj õt¶²|5œâ¯Ièzüj öè‚ï±z Lå{|”M믳Êukìíp_oÚq%ô¨Å8y1ò‡1UÖ:i$.C‹ìêo"Ê,!òP¼‚RQ‚D~?3 zÓÃ|3„ïê–ï¦s BîO§Wp€Ê¨+ÂùÑbé?xÔÏnâUÌwgæƒE\ÆFâêð¤iÊGö!¢r¸G˜¶Wq_Ѝ='`ÙugÌéùÈÔšžà'£pêâÐ3й9žóņÛyÿðŽ~ETL‹$Ý|¿3Ÿt¹sfóyzyß½9Åãå”B>šå¬v®”Ô¬kí;Áû‡·Žá=j9Ï_òß~'NT’Õ|©>O…{µÀbËDT™ë2—¥2™žD0/ûòÀö?­6!nˆæ_ M‡Ð_1Ï뽉‘ë$­xsŸ¦ü£Gj«0³®øI`MzñÌÞŒˆ†¬¢5IÓ¨Ð̆"9ãöÐÓêÇÕ1•á W®]¼¦rxÑ^†´êé ½a»+oWzþ%.䯷"F{,::V T( ô9Ö‡ê×Â<ÏÂZ2fä졨çÏÔž™xþy¥¼›c·½v@x2 µ½øMÌr÷'J¯=ÃjÔg‘S˜­²$°Mˆ¬šDɘmÓa µêAºÓÀ=Ð#caNõ%ï Q/›Gð<Ž! ]´¹Í­Ëç´~ýlÌ<ÉOÚKÂÔüð“ ¯ÛùBzÁ}‘_—U>~ù[6×µ­&”¦žžî­­€ÏÚo×Ã7éåŠÏ†ÁtÞLЭ¡ùå'ùVÑÝŸ²°2jiòG ;h{HCܿ էhm-ETct ÆCDšÇž|Òì›Ã,€·ÿ¹bU¤ÁÏ ¿Þu.„X^£ìÜÕy‡‹X4vk˘IjhrÄfôûMXyùÉ}.Ÿ0”–z«OË„Ïãfœ$¨ŒÜ|àêŒÂ²Æss%+™ßšÝnôŦ›½7$dmޱŽÉ,²Ò(Yy‘I¸%÷—ƒ³v¨¢¬n€/ÂGÀ–AÐÎ{û)ý;ÃÌ#ßÌ*?þÏRþy¾P[kÝÅËÏ+óéë[d0È+wíïdÞ‡@ï/÷ÝÿI©òa¿2rDˆX¶|ðŠ'WCd)ðS+ô Fƒ;U &Å<ŠâÎ"d“Ë’jR€Ó ‹˜·Ö×z…æÑŠ6ôÁª=ó\2§P_m– ¿={WÈ•W}5„ÅŸ^dŠ&j¥ï¯Ô'„%N}‡RÅEÓù¯çÞÌ‹EA@AÂ+(‰³åÊp‘• <~,ÀöÔüI%ÀÂÜ·ë Æè& «šÄÞˆÌc§Jÿ”±ë€_å¤ð¶ECÉϺëˆzÞÖüÔAôÚ?EþžP,XÏw²î÷­È/påõÇ)»÷´[ëB °c.¦b:„A5UÐd*ôe"‘áEX‰ãçßyå¶;=šÕFbã–²™Üiî®p»üBÚ–õ53ó³ùÒàlDÙ€»~æf‚䨨F˜€£{éK åǰâ¤Ó$Ç!”RÖôÛǤfÅeèܰ~½W¦Ÿ`å»W#Ÿ$ÀÔŽIO…ýÄ ÌtO+‘À«iÐQd|‡¬ ±¡Sgæ+MD:{»‚Õìn÷iØëŸ‹—gSð¿<ö4h\5Ìê݆IÝåÍ&Áj……€Cü±ß‹«rûGøÙkohæ¼2…¤©*ê.ˆüo¢¨šæ©]@åÃGæùøJwQEmGAtIF‚ØbÿûKÃ&$_Ø>WX‡ʧËy4ƒˆ§m!g™Ê»ª¾ãØ8õ@!PWþ Ð 1¾œW1ßýã=ôej¸÷ZóÆ’3UW”ÙFo<^œ¸H[gÁ5\g²lȵ@’(˜5®Jæ>ôÒNÉ yuD€ò²ô($ ( íÎ3‡!NwÙþ™¾BQ¯œ(Ë/„'‡D–ƒÀéQ]›çnÿ>c¢ï±ælÌÉÚI˜˜Õ‘{‘c–ƒ¤Ü¹²Æ=ËS±²Q+Š ŠO´³d(ÌKºZ;ª¶»¨™DŒ¶*ÏÛ` d,„ÿQ© Ч¼ÊÕÙæèÖ2Çy5¦ãêì:º?çu …ê éŠ?‘ýœÉuå.ú-=b2'Åz€ÂÛS|m:ò¥v§+õ2«<0YªÚäsoÞ"/zϾ}÷Qrû·%+rM·_Rã“‚ÁGÚD ؇é¤sN¸HîÄW[kdYË &'¹®£ƒYµí[³\ǸƒÌuDæÍÓ®Yדª4ÏÅX¾ U{ºî¼pZz:yõ=AÐ=¿Ô4òì=ä/=³N‹&Ì£äŸ\î¿ü(óôñh¾äœ…Þ@oT’ïãÕ»æbÒtYÞ~ôÀSÙ2q²”å¡ç3…3Rów^øí5Ð= -zñ(wÖi„y&Ϭ ùT¨žêUMj“ýl½ä8ñ$ÝùƒÖ‰ü“Nq=…°N — ‚o#Ä.%¯È\‘´ÆA…ĆÂ-\ƒJæ%f‹•o©µé)ÓÎaªðø^†W—Âa†ñ9‡IÛ²}A&¥k.%2b ¼þ/çMµ2ÔIÅ'Ǧä*§‰©òÿ® ™ÔËÀAˆÄ2£M+š£ªfù8~kúçLv€fˆCE¢mw¢P‰³Ðɪ҉¶~—E°åWUսĨ”ñy—Ȇ6 =~NÒÃ(r ^03³QþÐÓ†p3âŠù0Ü$ÙÔô(Èö¯=½Èuóýˆð×\DjáÚáÄñ`‚Ã)äñ8ÔzÖícÀpèJ†º >Ý£KïÞ^Q…û;@¶Ó¼$[2.6@ò’ÒP>Ï0?MW–Pzàh´Þ]f}!NQ–H ‘‡¨Nz*)Q`½:ëÂÃëb¯ªÑmÆÅL仪_xòBòíølWŒL«šÄéY;? (e*…γ­X«kÄV±Iš‘’íN˜ÛÞnMr¶¶@áuM#’CµzIFé9çb[8O¹†Ž©b'ü ¾XÃÌMŽJ*†X& ´_÷üÂÓº8¦B©£ÄÛ’’ÊK„Xš´j¦ÛÛAª {†ÿ¸‹#ìÞjT›ËL%û“ÍòƤôF·4`*‘$Š‘-ðŒ*¦L•,^ž LSÇÅÑŒÓÙÍ)ïÙ—ãŸ5ÍX¶YµÙ¨Ü¹öÇ£jþR‹`m¬yÎBtñŠ8)!®˜R'£ðÞ Sû ¾Òøtf‡‡Úï~¬m섞”–a‰ÏéL#¥+A¬ã¿‰„ùس¾uÙp‡|¯ÆÏØ#†¡7«»FôsÉìGׇ 3ìÜf·DôY&/öØY›Af¡È„ C¹<ÀCïjD×J̹Oš½cØ›¦Ò6͆Ûßáo¬j—íêÔ3œ:SA2\ªx+wݘ¬NEå½˜Â¾ë¨ Åf³Š±ßE>GæFeÐ`|<|å²¥ëëiÊ]A)Ÿd!+µ ¡²_w²m–úhj´ …' ÖÅUb»Y¿Ž„WL¸žßXP*ý€ž 2Æ¡ä]h;W8ãÃ2ñp ÆéËÄf2eÎLØX¨¡Jác2ŠPI S ._AûW™°Ün((òäûÆÀ¾å¢ØÄ˜A~¾i>dEÚnNX?}ÿûΈ° •a¦×Œ®ŽBW.+“úÀuãpø}(ÑËKvSQ÷’Ó}|Áªu‰q»C¢ñ8,TàbøôG€ÌÏá?¿:±à¦Ûhųø?òDBš,ñ晜±àý¶ë3×à3d)ÝÙ Tò7±‹Ï\&zò¸U¼;0ºCU˜S€ ?ƒwŒjë²I Ç]Þ~Õ ÿž©5ŸääÇj¹Eœ_Ú.ÊAÁ­ +·(Õá3nCiS]¹g>Õ¨Ò¦º“IN ‡†ü,Qi^W½¡—æ‘øú}ËJ~3²­²‹…Tò dÛ\JuIi)n¦¥«i ÿaãáÀŽ?‘0; ’¦ëœ†‚?M±Öôa¹_‚Èï¡ìñu~µ†ªÏi¾a,·ã¿PÄmiÎÔ$´TM,^îã.þ—íW¤LõRÉ.)Sã¶WO*¢Ï±Ðì©„ÊfA%Ò˜/T˜ß8–Ñ!ÌE66 ¸±grÛ’«€ø ¼I;š­¹Y†’šý™Ýw£º·=f»®Õi­«²‚¬$Û‹,ø—TacuIÄ:‹¨Åà*j©¿˜ŠÐ\³Ú¨E®‘Ù©uh7ÜÈKmPiµ£&žqÒ<‡Mi QHMA×c—ž¡vÄÇ[Kü<Ìüú-¨Âº:,üÐéQcø¢æÎkGKµ±Ô`¥µ&ç†ü‘—9åÅuÛÔìÔ¢¬°¨ÐàÙ‰) L›o£ãU:’…ÉQ Ñ.Œãl÷ŽÓÖ X_¿S=«¦ úó´xF8ÎÚ´´…ûíˆ PGqXGYä ¼ËfσÝÚÿÔÁ{Äcm¥=Mç¿íðc)±E×`{(õ¿wŸLEª©XŒ 69Á+I$œ³Ñ!H™z4‘)-®\èpSÛr• ž“} 4Ê:í}§@–¥—&ªâeCNêðë°ˆëà#l#1v¼* –‚ô 2é¡u¹þ§Èbð òRwç±häü(hõQ©Á¬ƘgŒÏ<‹b´Ã {æÕí·Žüÿ;ºëOÖ¥%ÆÛå Óé%7Ã_ºHMLpÈ£Ïü¸ÓàY¸l¾Î!‚œÉ(9x<ÔÛEàÓ·væ3Æï0 ùâxCæÌø©4KPª³Úè{I‹êOÕ/úQ[ > . ü ŒKŒK0¦JÞ»ìÊó­Õûªïâ¬0§âÖ«,“=æAÉ(´?1Ô;ñ‰Z]‚[w×®›#2K§‡D4H>²Té•Õè¹8ôêVÞ~µûAJ ‡B£‹‘pÚ¨òã5Ó‰aþY³UQ>F\!;nÍÞ$Ùý gU°ü_ËF4zV?éßï{w5$cL¾Ôçµlê"E\¸#¤[³=¶#1ôMø“¼¯×êEÔs™"¦óì¿ržï…óûíq¹ugr˜>çóMRNíapa#h1t^Á^jj~bz,—Ûºªsùó:&×…€õH=0µåÅ—EµÂèãºùƒõ¦wn9UîîSV-yŒÇiâÝúmÀV«¾´˜¥î½°#Ë<5šDÅLdFE£Î˜S<Úü4¡68•« 5šá…þ7íñòõƒãâ%õ®òûAj…qÊôà—HËn MlЄG<‘ʯuØ\ Õ£t/¹Ã¢Pê7c•ëF¾–WJ²áÕý1sWCKQv¢­3£ìâTqÙ0ÓGTêÇÛ³ùÞqަãÇÍ*u> 8”yÂï\?J•Æ/]\`çüù]ƒ]uøsoÙý,œ&>%Ù"7 ©KÖ[gΖù†äà”g~®¢¡I¥ MZyv"ÌʈÓ(ÓR|>³ž„§Q]›Mw4“ëœq±‡XJ 5ä7\ÁKç½N£^dÝ_qÒ³ÎÿŠ¿Wý¸©yWc™°ìê_¿”)©méÝÕÜÚÒŠæÅKÌúÐì¢b’eÜKc°’V‹Mj°þ\!,tÝ-šÁgÑpååÊh¤1E' Z9“ÅYu>~Ôõ£9Å)¨ŸÎÝîab²œLÔÚCBgªH}1JÁÏɪÖ3^¸.’eÅmW0. HóÕ! °Õ> “.!b¨ ²llqÌ“Ž¿±›Ù7ŸÆõ(~ta´D’ý§`|sÿ§ì¨(òý%@yýXRãÅ×»Éÿ†r¥âÜè?›1 Ÿë¸²š²·Q†¨´**m6…¼¥± UÚbâ°C¡S«/.é/1;J§N¯µ5¯Ä%Ìj]-À¾ÊbùhüÑ%Ä81ÑoþÔGÉ I£Ò¸jùM`m€ÿa(²ŸàRc°«^n)’ÂI4Lã+|¡ÖûUñ§0~?7qqÉãô‚Ó*eW(Ã8ͼÉÂÚRáÀnÂ{wPQ—&3â¼ùÕ#¼C7€ð¨Qfs+Öd`ŒÜº–ÏV]nTLO¢)<Ž[,fy’(ÀmÄžJ"ÂøÄ«˜Ék:.|p¯vÆ{í•3Þ·³Ögp’9ù¯°Ó?íüГûÑuî§Vfr)ËÜi–…ì¬o”ÿ„"F¯ð˜&Ÿ%ím¼I†¤ L=Ëàr•Œa¾Çáã°¿`ÑÿÖ_FßáEÅοVît«™T|J¥ðŠjA“p‡$éÏ•¿Çbˆ6¯Þáãƒ|¾ò6®-¹Ñɼõ‘Òÿ:²2JäÄꑌÞ,1Û £°®ó2ºŽ\XˆŽœï«/1ârûô¿H1Íïþ‡ÙfÞüå¼}GÂv;^¦Ó©,Úo”ë s}Îè0¨õ§Õænm¶S:kå!•tê0«b¨-±úÏüå ©$x€þE\·ugDý„tˆˆûV‚ –ì== jÈàôDDôÓ죬Èë_ü5`€)G½¤GÄ+¾;ÍU/!\¦F$]¬Ú¹•¨!}Z^„®K½—HºÚ«ë€ÿ“õk±~3M”¤ÉG­ß®è1C¯Yè °»Œα 3Ìîuör‡Ç®"íðïÀc°öÛŽ[ïau×Ùd?:5Y§,immS4ôÍŽµ¶6+ÚùÒ¤T'Ë£V˽éVf²°sy 5ÈHȤé…ßìl†ÿѰ³‘rlƒ9“”H)tÄŒ£ä”²^7¬Ôy ÔdiX¸ðýˆc²_W²µØ?^?¤ÍIŸz¹Í÷:˜ryª(KÕ¬ö¦2¥ì%®;¬ó3;h¶êwœ Î<¸äPHI‘ÙÛiö‘żÐE—1 «¶„¤@wG[÷RWÛ¿! #7:x±R“Š=x~§}ÕŒ~èyôgFžèÁAÍv-ŠÕ¶56PÝÚ®È,$†Ûû§çšzæ·ü/Qz < øþ2ž9ò^Ú½"XŸÜ÷«7£”gV)=屨üÓ«=ê"ë0¿„¬kkIk ÛéáÆV'zgf º×oÖ‰ tÊ( ‘û’ÈXõN„iÖ¯–îäN¡xCm†ouç I¿S£áuv»|Ü.ò‰‹“ãâ¸]>ê¦ÊµHÓÍSG­Î‹ö¹ ƒBƒ–ôŸÙ"ùÎìçhJ-›¦Îérbü••<ƒ¯UXb˜e3gí+t¢†+,l©³®ðU¢¸Àþî*ƒa½–òÒœâÜåXsÙ´Ó h­^HÁâ[$Y}ãÀñlZ“Fc©¥šz6Ç Nºs{˜Ë*V2Î&‡÷ܛ𰯿¶qÅÇr»ÏubBôÐð;9À»}`ÔxX ßXJQÕ†¹5Þ©‘ý~uT23™™ÁÏ–—PΊ¢·HÓÝë†`¦¢ªZ«ª®eaVžóíHªž°ÉqŒ|“9½í­âÛTä¤xÀ·±`„–Xò^ù4xnñÙ£Çr^`&ö[º 3‘ĺ»1lwc‰iû0V$uâŽÙøK³Wþsä"Õl§FŠÏÛc|oê1™ˆ\JÐR¢éY+/‘z*W¦\HñÞbÏÛ„r"â ¶•=d-ñ•v4¬¬\úÁÔy?ÎÖwûGf|®žE_adŸnˆ‚ÞÂò´›ÏÐ`m ÄO³?Ôp:ƒôü^ó¨DtÎø¡yk„ùe¨ý/,aö¬ƒl~'G!tw=çRnrxnÆró8 ÐXåéÁæ‡üŠVbïÓ ¿Imª¡7@ÝÅl1þ5fQx@˜0(<'ôÎÞn±ãÌXœ<*<ŠŒØÝÀšqàÜ Â ¹—¡‡x‡ `¤õ :ÇÀ‡þVçô;¼Nâ\ùscçÔ±E”ÿß[ÄG2ïøÄwÎ)’û…L2éoÄ·tLh7`2`¡·P,…B{L±î”œjX³€}ŽÃ~Ææ<}<ëfÛ¦°–×ö3Ï1Ãûu³[\åT\ v¤MY¡GDé‹;;†AË·+uý9†1ýù¿û0°rªëÕú¯8[¦Z=§Ý^°%ÖÌ0ùa:P ’”IJå˜?p*µ¾Ññöå¯ÙU‘TKE_“‘°BVsæ¿íjIJ¯;.p¯‰it~íL¿…Bù͹'=b·^Ε.ÓÿvxáxœÔWœ¨ØX šÝø‡ˆøŒ(¿O$>ÍJönwú,¯G_èö¤_€;ß Tlª†5Ð->1ùÂ~u^â¼+t`9ýˆäï˜”ß ‰†y&ïzl¼ò¿üò4üöðë£åÃö 'ÁÓÿˆ¡ûcå_ü~Æ|ÅnkËmË}§;æ3¨ÁßЕ±ÄëüÈ¿¬¥ :TÙê…ÇõLñÑV.Yí·L5O¹ \DZú¡óeB[E î¿ÚbŒ®‡õµ‹ü;‘àä)þê‰wá¥ü¹@ðuèßzåéNó|eÇ3z@û/k…îšÂÂ`àÖ¯ÅÁøˆd ~±kàêýSÃèIþoà›ˆ@Û?ØÿbU[!¯½ßÈn¯;áØéØïZ¸àŽ@ ~g{)ðq¾nÍbÊþ "l‰ã)—+pî õqg) …vº*P¤ËQ‰A`Nˆ àNÑþ.÷™rƒY_—[Ö~ÄåÏ/ÎÕŸï2|cxùû‚³»ox½KãcVçRtð'·ùy6‰“£m(äO1O·†§&$7…Ú”½¨HEÍ×ÉX÷qBΡÓ-È‚r&%!éL¤ìñ½ˆÅ ±ÆcЈM+ˆ»e8_¾…;„:Ž¥~@!#G¢îÛOÃ=B=‡° 8hSuÏåÄÔ"ñ> ù;‘ø‡¬:9É£/¯öx­Ü`—ñ+y¡àèñyÖQ¬êp«òpøñôc?AÒÞKºDÛq9g0›J˜´óf³Ë¢}‡……LS˜©³ä÷î/ʱ øÜXýl ÖCd¡ñI‘‹š«›GcÏ‹•Î@ fHcç±Ãù0*PÇ›çÒ÷‡’k†—’¡ðø‰N‰$1öP‘x66<Èyz¬äßcØDPJ?01º7záìVšehLnÎNøÇÏïüQ`Ùk° Yî$/ܪ(@䯸k“r“*&†öÕ†‡£ ¤9ö_¯kA¼!ûÊ‹k]µÑz1Ê[e­\YaœVfàQ@ °F†V¬jk¨+yóè÷«–ì?¿·žÌ”Ë\ì áý¥ÔW©Çi‹ûR¬§µ¢DéâEšúF¦G(¬vs“è‘×ëY".‹BÍÄá2©”,Ü%/%ÐeW+IïÄ®§”á}8S0ûÿŸúçqËÖš¶½Áy‹@m A<’ˆ:gAò"c$bT¥«7¿ ”aþÅñ4B3ï¢lÂ…Þ¤ôŽ_\"í£~Ì`³¨ì6ºVk‡Ç©$PÝŠõ„À-òºwáh<‡£ã 4áªÅ=O2ñd¢¤•@ æ– –vÅÈÉ¥3k‡rxƒ‰)ðæQ…Iy€–È>,\áî·-z“Ãó0aT¦g—®b4 ˜¸ò+jÍzc2㫇ŽÙ¤ †y™Ê>üÊeJyÄË “$$E ,• 3ÆÇKiµåaÊA"Î . ¡Ý<15í¤,G,‘ ?Ž®1‰0ÿyÖîB‹°è|ÖîÌþ–$â‚çY?pG]nâÂC´÷„Í àÈ…~í¢-AXQEÕºR܌߫gŠ{ï(¬J‰Ïýšoœ|·üDqó¸ÆÙ!±jŽ ÃrØñEÒÁsžEÅÌ%¬³a/ 9!Ä`Ù»™•¢Ï™µ©…–¦²: élèóÅ=ˆ%¬2ÅU%.g~ËØ·2¯2ËÅQ™øÔÊkciƒ8únèY¢´Ùd©¯HuÕFŠ*Y»ØIúùB_½¯ðe]ù{sèåŸ_%Jéö °¾Þ¢aîC*õ!—ýˆJ}Dþ®ßû JþÅqv¾ƒ÷ô¢[~cݽøŠFáI6d›Â¡”ŸSb–ÓùÖÿ?ï@F÷‚‡¹é”k\öu ý‘L1À}ô¸Îe)À×X÷:Ùñ0Ô숀¢ì|g¤TRk«×Ê Õò£ÆËë3k×?Ö¹R½ì¸Ñ²cúÈ3˜ì½%0l.J·ú¸zu2ÓÂ*Ø×Ž9V¨OÆ¿z}~Kã¾E!Û‹â–ÍÎiO=9tª3t8M³¤j×Èn2m·±ÿéÐËÁ8øÏ˜4ëc#þ9Õp6Á0ûÉlY}T(/ëTM{Š—WKÇ .’4·CùŒ)ý¥°¤·&å³í*õúBWÉàÖ.‚]í~ap1QÖÖ†jêšã—8,œ–©±„ž¹^e,Oýj­­ð¥\˜¯FIS´.êìñÜ%~YÌ“Ùj-ö:Y‘¨ÍaL?ZÔþ]d ³î ص#’œÍ;.ˆµûj¯“ ¯da¨y6–æÚ=¸°6õ8skÅ|ëÓæDŒÈÆfÛ„¯VšÉ®èÚúf¿ Ô³IIFÈ(7Ûì 'W˜HþÔ5ïóMËFòA‡„cãÍÚñ—å‘(¬6LâtäB˜^˜f…Zyºá”Ö‘ZðN·ì|Bïv×´œ5šÁ¬¿ø‹þÝyQȉwîy–» 캡>¦§Ë{-P5¯¢Ÿª0÷ß3˜Õ~êPع›5fÇSך£Y‘âsÔñ˜,›Ã½)#­î8"ULphîÍ^þä Õ< ‰­DZ}C÷%ýø1Ré®Ï•_2ùž$dʳ |n<9„ rŒH-L̆}[Ú ¿äHš2ßXíÇŠó£m§]ìÒ˜fmx‘÷™xÓ'CÓ»”ƒÀغÜ*À¿;Áµ±Óñ –Â{cI.LáÊÇמùŸëþCº®c/иñ¯¹áLJï]*d2¯Î(¨â› ¾ôf‘B¦ C™´P!/ŒÆ [ÕÀ¹Ðþ®¬tºÉ ¿ßÓQÝ´—”¬ëYÞÿ±€´Z ÊBi‘µ&M&˜x!Œ^ªûn*2%G€uúK—§j/”³vJwd 4y»Ê³7m9#-í®A§É;”H8,Ys.´1õ™4B^@9(–WmM%(5†Ï¦)÷˜ŸÒÑÌùs:û¯¬ð„˜ï6¼Qê ‹ÏRÞÃçœåV*âÝænwoë"pTF3ìvÆÞÑÇG蟪U¼Î¿ä>ÞG'?^8ÿ# qÊç‰Ob¶;ªø5}}£e†þ“• RQÑÚvO;6+¦-×Q0|âvÞÆ£¸Þ·Ûÿ½iÚÇû—¼RÍåÑ?/–…_¶>ìþÐ1xöEïn|^²;ƒãya÷ÙM²@Hkîò6b}×1bÎÎêïòVb]zCŸ=ž²öôL[C¡i»äÊu‚E-y×ôtž¤8<‘‡§¼‚2tåݯ¹ïyÑUÁy»îðÜŒ.Ä>@†íÅ%9í¾`Ønf·Âäkö¬±Ro«Iú?öçŒÇv?½[îT{,%)Ǭ`&?¸b2Zþ _ì(¾¬±Ï^i‹xˆ\sâ¡`ÑÍš9‹—çѽԳ3õ¯„RµV­éaÉ—VøYu¤Ã0|ÜΩon uhó s<ðÿþÅà '¬¯>® ¾<ö4‰ø½FÇöý¤ü™í±V·Ž9l]?³|xfù飸g¦gë:«²7›²ü´~˜a|³a좧çô¡mÒ7vDD;[¢9.oÕòÊ/°µÀï›8LÜ—8–˜€ Ëž «;/sðþ»ô¼Æƒ­Â¹³jDÊd§–ëkd.S¦CšVŸñ˜w÷†§ÉÂ{o¯[ž…òéÙTDx–定À¡lùÚŸ?Ý)6ò0°\$YN"‘ú>ç2çX‘@ú:8ø¸8$^Ó6Xmàò,t®/§þHèÞ‹'O#À§ýÃé‰;œ¡ì˸.÷ÒNIO°¸wßö<.“ Džø hÈR§!^? TxV¥{tƒT‚Àô#héàLv³©K±ø«–1ãmü{í~VÆi(‹ýë¬ög,H&=í•çïûbÖ¯ ÓbTç,œðÉ…x‰Î¬u¼´D’É$ûöùÔàïD8%€äËD â} FlÑ`\$=§3‹Îªff÷°{ó*y‘žçZšVóõ]mBä­þ$ûêºõñ¶&ÉxÝZ"i@ô@¼Â+«èX$>ZQº!Ò)ä’üNŠýÅW@åŽh"öñxT*(É!žT¥éØMµ›ÌÔ¿£.cc2r]I6˜°!Ù¼% ðQC§D"\ä‰èÓëeþ/ØØµ+‚‚Õ¿¯‡G+½áTpDj~Ó¡’æÝŽýç’’û%K ‹ƒ|5òÌs}¶x  55µD‘N¡V€HTÖ²Cô«Ë³²%¡&&ç´.o?J‰Î';»ù#òŒ±³3=cú†éÇ rà^çAéo43€YÜÅŒŸx=ÃÀÌõ¿;J»©chüظ>í$§ßö¤¤øtà´b­‹ìˆV–±Ú;ƒ< à3¢b©eFþËJ}ŸyûÃéRMð= ±æœ ž@µ ÔÎŒvÄ2(xÿÏ=ÖÉ9'J+¹ÿÂЀˆ!9¼ìeãñ© #Û‰§ñþ@â©ÚO=%Ü«↳0ù¤™CÑWkLaî']|G2)ùœšÆl_é§Då°Á€ˆA:<Í_,I§,ÎVo½¸|4Io¬ÂG¿âR·§ŽüÐÑ]tfÙäI…OÜ/($5ê}š×ù?q\fP>uè³=7hb«^†¨4TÀù´®Û&‚ÔÒ“xŠGj>fïö! º³óIßå4c ÕAèP„´©CuQº×Æ^nL#lo­Ä€E|GM$° Ilâ9DáïŸæ´TOï ¦V€Â"êB>ÕáP¦ñ…Á™!¡½ˆæi^ŒãRL†SOt鈺 ý݈ªdqâ”—ŒöÀÐË!* —CŠÄuD'…ôˆ±›}½~šÚh|©3Xýf§7ã#ý˜ì§‘芀“#?„JNi„~öVîá3’ŽŠ‹’ 1 Â|øÁÞTxŒrêBA‘ˆjˆkôÿfaô ‡"ð·;1^hEüí·Íp,Bf<Žô ^½°ŒÄ¸Œ'A#Òy¦ÖÅ*P£QËRE¬`D–œDƒ× 5Övv~¡ÉJ’6<¾J‹‰Aãã}!U¸­m‡¶öIýú†´ä".2!ó<ù0ùŽæ”\ü_ѽþ®8Ghü?“ºø(Ãû¹•éHA>)a%´ÿIÉ)’òIâžÐWù*>Å®q1j ëTRI €•ýQ‹É˜£^i%unÕá`”—’–à@x^&{9—=ù ‘c ¨jTp1LHiwÆœëÄ=-$Ñ7 1n·Q¢²X4„êpIx'ŸÉ)²á¬CRL\¡¶£äUo“¹Q.xÒ¦0ÏJùȺ”Ûá~h|‡ŒÁ¸ÝµÛú©£Ôõ Y¦’~O-ÃÀß-úÉëÕbªÚP9𫲝Z5 }ìhÇLˆÑÈ~¡ójÒÒðÉÓdË|uîH+Á‹iHÚ“'´¿5´ýY¶qqQnA'²pt æÎåÝ1´7¾O$ì é3l\ŽŒ™”4*F²Í>éK1êÔjÖ¯528~ÝhA«³Ç§ÅΠLC ‚q]–V8CõN+䇌#¤WMyµ†®ÐeiŒüš™áÐ2ÔiØÝX#c <“î4ã N/TÖÛ`q4šsÕ;}ñd[­<.BmÿèX8X .çãâó¸Ä†ŠÀeÌŠ‡þë duŠE·GÕÖÖEFV,ÆÕ5ÖŽx¹l“ª,ߌh]H£»X^ª¾rÄ×3ïò†ß‘XÏMŒXD "WÖE#ñQ+æ ²?Úõ #Š/ÔÂ]4ºÖƒ#k"ÙɵY?¯F^–]©Ÿ3ˆ!ÏKð;9ÅV•Rf´ËSŒ¾›Ýû9ßýý|™dL1™ìM#Ñçÿ%r/÷E±&ƒ~>Ó›èžÛcÚs]‡z@øÚÀ#ü!r ­sw Õ“µóË7Ô¦ÐwÆÁC9ü÷H=Õ“—½y»mO¤ú•ضàägbD&L!?tš7øjr{Ϫ9qçØ¬IôJqB?Ð]ÌÌëåÏ›Œ]ÄÌ¥æFx¿àpò+Ïœ–?ã²Ñª!If 7ˆ‰›T™â S¼ÊŠØŒ@´£y¿C|#Þá·Õ_•$–¶ý®‡M®Ò”“ œ7)TŒN7Á.¥öõL9ÕfþÐäQz`‹Ah/BŽ-ФÜè_Ú·¾Êîû·™ê>©3iŸ‹×þ Q-Z„’ÖªLjì$MbÒ8qð®r¿­¼a¹Ek ü`íú·OžÉÝ~í¢DV4’äã™e)Mq0ºãx{ˆ÷Ú>÷¸ë|—q[dA$ïØž¨{ ÔnÙƒåóS»ŽÎïÜuT=¥ò&¦Á"ÒʈgÁàÓÇìéfqœœxýêøÃ§¯žý¼™•wä+tLjJ,ƈËm~ @ºj$V¥SŽÞEG£1HKb•9ŸÄ É$O"‘‰×z¬±f!Þ†FMyŠ4«Æ,ÁªÙ(°ÙÓ³‰ˆ0aúNäBè ‚ž‘ ‘%ä·3TàJE‚Aj”Îéå=Ö×ã“úu_|„pådG\nq"ê`ú…¨òòPK+wMùSûتU*_}Í…v|—î 3>ýë¼V¢ß:8´µ²p¥r¥N¦±j¿j~¥mAdjŒçúûf µðѹr‰AÎÓ<Ï:žÅ[FéVFÇ.LÿªrúbСÿýSYÚ -ò„‘S|Æ®ÖìsSib"AO£ê£8-yRõG>{˜“ ˆäl;rRà´j" •Ø1ú*NOžù@ìÃÈxO”p=OÏúï /v>;›ž*¬ÇÖ’^¹ª·rÝ1¥ onC>'…µ‡ë°ïðq}âÙã‚>šºn™ëk–xã…’ÒDjpgI%² úÚFšÐ˜$“MÂþNøŠ5~¿híâ¹Ä@ôÍó¬çEþ&M¦!º÷ÃSƒSrÚLL 3< }N+šµ }IÆ[NMñõî 1ätÿf&9jù@øèR£ÈGô´S; ˆ‘“bæÏÒõWäFUúÓBå Š#³C“‰ õah—?&Ûí)GLU¸ *@¡jJ(ϤSY©Ziç¸âp‰E4z=‘Ø@£5\![,2¡_¿†CnC¢Ž ”ÏQÈÙé-fÌ̆ê]T•Õ"Rš|³Ä–?ŒUYlÚçÒt " ±×qèÓƒFÿ8éK<ƒÿO¢õmä ¥C*„ ReÛÁßcù¡©9 EdB?ÚO Õ¬g$‹\ DbÑ”v$÷HEbšÏ  FH¹ÛldéDarÁcOù0‚˜À|Ê–7Û{àè!ùàRwÆÒÁÐ¥(øùÑ/èð;ÀÖ¨C=Æ¢Î>?ßÀ¾7 ÎB ²à£÷Ø´{·_@a‡û̺<¯C'l(ŽÕ/ó„ËVljê#Õï¶k::»—íKyô–:Ÿ@˜J%CÈ7®×sYVŠ„ ·²8HdŒÊŽ%(V–éšÑ÷â<È¡Ž#.ÿA›RžD¦©€„ýÖßÉÇ=Ú®3¬^ Ú ˆHJiôñ¦à øTiT“š ¦ä7鹨ˆyPW£ÖÄòñgëmVH,¢œ‡AÖFƒ"ÞÍ’ÿ#"mà“¦É÷3x«ˆ±³‚9ÈMhÌZƒ±`,&4»j>+‰~®²©bc?)Øë$ÄU€I™j!j0žæ{އ=Æiw™w1 ‰1¼—Ä»Eòðhð•h°¶}½$,|©€J>†7ÒšB­Ø,E;Þ÷ÈðdZIh<÷§+îáÚ~PVãNð’Øªò^Šê³†mÔnQRšqøR ¥/S—îæcÕ'ÿp¶n8,2Í"RÏ bÀyˆá ^h4èS,! 4#Uz€ÄÑTœ(S)Õ¸7… áôé"öÛ(æ„îéC3 ¸>vlu]Ù|K¿˜MN£ôÔƒ˜Íã¶Áèñ͸ۡ|ÏŒ/L쨸)Ä€«6€éŽ Æö&ÖšTï9Ù¡©Só h,ˆŠ@ƒ¨~¿uI¡g›ørð+1’²—f®KYðA¡œpHîü{FL#o#aoÂ/މú³šmÒª+`„&´t*QX €хܼÅsÞñruÂÖ¬hùÐ"LŽ—Ö'jŸKþ DýóÿâìýÁ_ú ÉÚYk­•㿼›#œQi¡ÜÖÚcŒvu³:«Ä XIbÄW”¨hÈf;ªšS}?/vqÜâœû íxfq³Ì°%8 nSªß·¤úmŠ÷-Ù~§ÿ‡:Vð"ÖÛ*$;²vÔeYÌô5 (Jm¼M¥DV­6§š0"‹‰*ÔHÔ5h®Û ½oN»MeÁ0ᙜHœÔÊ.Þyù‘8u [@„€q?¿±µ¾g $CS´)0J²±õ½âØŸáSãú_ø¡rÂ`÷!0fs`qò¤mó~˜ T'{7ï¡­MímÒ) fΡ–X$ÁÔ²úÅ} лïbÈiŒêüÆ-hü4|¬ò¡W‚_‰#,"l¼òõûðn]7¦âñY„<™è$¨Ò/Ð'XL/:†P†ƒÚB“XÇ.(’l¡ÂýçA`l!íe²&X!£öÆqÏä'„?°T¸•x‰wQe[ä½É¬5`3“gŸ‰ÜX±ú’{ ‚ÊÂ8 /jé¯ÊåæMÈ•ÊüúÎЋûCÑ:`4:V™#ûS“šI—jZ³í©Ã¢ñ û¦úÃfÔ'õÕã´¹†÷Òj£".Á¢Pòxщ¾S$QÀÑ(ÑË¡ Ÿ£H‘U+¼÷õ% °z…2+ØR7.H¨åEѼÝ!ìј1A˜RŽ Çûñí3娠$‰á:™^g OÉVYIêëdÊû¸øŸh7MIçâA‚îùÕ÷-)ÕI2å™vXIî_ç´p<’Ò•…ü(mì{­›ÎÃãø4Mt© O/›¿oX(JŠÓ2èD–™Ïü1˜÷¬jeRÎ* éû-ˆnˆ¨E= –§âU±ªÐg‰—ù’3›Ùò£90óh8–½\ÌÍ%“qàMO–‡Ô<1Ɖ„ÿR ¡[æ8¡øcJšA6°W‡@xuR÷ä+Bmð^si+ËÈ7H²Í˜ÓuŸïO‚Ø]@)ÔKhÑ_ùq[švˆÌœEè¨2·,Î Ñ, cˆ`ÛtqåTÅÄöÂÌÿʶ;–ŒZgþ/\%w!g½³\(4qC¡nIÚ˃ذTŽ!P£2(Õ “\,ªÛwu#uI’`B» ŸGÕàd*L­:hÁ¶›AC$Ð:nT¹.ZÌt³Œ_m¡[(!ƒõ+Ñ/Ì¿ó^r·ýÛ›¢‰qó4®ÆÂ%QjÍÞM&AA/·| X\(WB,«RÝøg×À,çÒŸèy!±>Ÿc³*â‘!œDÈõ­‹µ8d]úØ}ä‚”j#—PðWXÆt /‰ÁaÂ烢H0¡™k–µ^8@¸°ÐxëóÔ­Îcä 0±™†8ΈGÆÛu½Ð=¹}½ÉAB8xyË_v“ÿôÙý^9ÛÆâg8 †c•_¦UøðP¼µ±Un =턵‘ô wg•OÁÿN³ÂÓù;¼Ðô\ñe'Ûcñ#”¹3îe wèX£÷©wòšQ£ÍTu°¾©ÓWÈ’žË=Ñ‚ÉÌ]³à…1ÖeˆÛ18]?W„Qs—%Mrÿ¡Ü¦°kгò$¬Q“® ¯¤9Ø…‡ÅF…Ô ?ìaJÂ\)ÁÜTÖK«'®Ä}¨5{í—ùvpªq¥°ëÉú ž^T:ýLc©m¶¯½Ü=C=Í“ææÊäe¢LfÉæ.ûÈü=V]@Zmé~X·wJ7±/ÌvX0c_v•:Q¡š³Ý ”Ñšöä¹yÉ¦Èø—If•Ä;Äã§N¦*`’L-^p‰nl.@Ô©J?ߌüŠ>¡$ûÁ›$¡Â‘xÔ’dGž:9`zG=÷áÇRcx>=ÁM‚líæ1šŒÃx™ÕãvsŸqòIê @Å»yu[Ý48Ý`åmvùïÙyFKr3þD~aÛMº–2 ŠIÈøv4ØÅ‹'YXX¢‰VþJ5ùð°¢O$bSþ¦J@1Äïí ¾ÖYíØºàÜ>¡çħ ¶kù‚?|1ËÔ"lS’Ó¥ÿ¥°r®‡=¶¦lí@;d¨ˆ„ï°G›Œr8ÏIN&)F ^Ïù’¼ê¥à3‚³?såÝõ!`ZqTAm¨ú˜ôB]÷…Fòý^¯éuÃwsh)ÆJ;Œˆ£éæ[™x¥)ï½›—·dI×~‰¤Ÿâ‹s%=IÝIPÞ¿¸Ó­Ñ/¼ û5¦¢Íý³¬^ÑO<óÒFíøÕúrïÃcƉÿRwÒ–<øeðbOú‹‘ŒRg²Ó¤gE5½ë/Ë o÷Iãb~0·P×Ùïª3[8,PñÊ>¼4›žSG~aöêXd\ÂCÖ¡èÉÓÏGœß1à3,*’‰oÆ ÓgYö¯gjæ–$¶-»msY-kV5[Îpÿpø`ØáõûÝ^vûl¼¡È챆lóÜxB ·ý^:Zl¨e–:–O„õÅæ½¶R 8ôþç²Á‘ê™sŸ(š¼šT†6Ü5ôjc­Ó1eýj»Á N´ó=0™O`ÅÌhª@-øãÌyŒ:pÚпßãOÚ³#²Â…² Òº8Ëü€þ,ƒZ©“,:µT 67½°AÞ5.RÆ´¹riˆv??`¤dUS ÖT¯)¨& ³Œgë˜L«še¶ Gë™_¿î:ó D¢OKíëï 6µdWdÓêÈuâ ÊWi²9› )†TöU>æ9’µí¯Ó3Ýä³_óŸ¥Ï@ UM—À¢'&9í­4C‚Q–*Ç?âg(æ¶—.¿¬Ê}‡"(N@€º³Ÿ =­áÑ^Šç‡wX?)"׋V€…ž ƒs餩²_x¿ÕHæÊß_pmÿ­¹Åý±ÏŽdªÐ%囨L?Æ“Ò/›‰: øéZa²3áå2eî7'&—­÷Sr´K…ÙÎü…—Ë”Ùú±_Âþ¤ÑçrýžçpAc!&V#Ãy¨FêrÁ6‡~_PY†+¨ (Ww%$ }Ð&^“o†œ ÎtRô•î×LŒM!ÃD8ò:h> p3xÿ”0S¼;7æ6«†ÑòÑöòW"Fµíý›Úk´:O ¦,J¼bQ“Ãè÷ùhû“Ô˜?Ÿ]zQ„ê•ß¾(t©4ØPRä£ò7ýŸÛlsŶý·Ç™äØe¸¢Yù‹ªí²€À?&ïØ9M3G†¤žr €¶/¶! 1éÌÉ3“•þKãeé~ûΔ_&T4\Å,) qxy¶²g÷œë^W™9±,Tã(Ã(þš\¶\Ú²úÏ—#ÍÎé;;ü¶º±­4¯+¨­Oª-„Ô‚cÓ!eŽ œÃ ‰ }É÷¸ñÁÉíªPw>ÆG½€oä„_'½‚Ý~„˜v4“rV÷yQÛLúÅüAZ} ¤oarG£é®bî1†Ì;XUÓQúgs©Ò–Gø}â&‘Dƒ£yþ›ÓM·>=QlÏtoåf•·º›Z»4'† ‹l.•P„K"9W¾™ySs˜Ú„B±¦À:¹4“™Õ€†ót¤¤O9~Ä#e¼ÙÀÌ—qŒ¬ØLANž933—JsqqIHÄepÔP #ëÄGù8Ÿ\G'¯Ùí£©¨Ðž 1ƒ±™/æ{r)¶ìµ¬/*ÙÞ# ',ÄNk`€ÿ'0Éê¢($‚.•˜ŸKEÍ–a‚ROu7œjèº*#fy³¢í櫃èÑ)ûö쥈‚'_A÷£Ûôm–¼«IV™Í’o5¦Ý÷W÷ÎŽùŠû÷ÅTytÊÁÕ–lÏj‹uPgVݘÆÿ<ò £Tåq;@Pç0r9ÅÎzÌi[euVÙß¾bY'É9ã]Ý•%Ä%Á Ïìm>fMÙÛGñ¤iì<áè3„ÿ rýõÝ?ͬחê¾öž ù—8˜ ³Çεñ&—˜á¥ÙJ•ßIš3íK/ÎR*ƒž`úHöåK;ô¹ü§3žò¹ïÓ™“Šä ·ÁâöØL67ÀT…ø¨ÓëdRSH5äÚ_Åw¯™ÇÍÊþIq¹Ôß–üž.N9Ù÷`d® Þ3æ3žc PïÙlÔ´Ÿ±Úáþh½3/Ij‹> Å—ÿbºRz%¼£¤ÁÛÎ-ûÏ[©p42Líí;†{ðÀöôΫÏã_?\Î1ä祛¢(NÆu4/½  ‘H‰l`\õçFnfL€Ð`Â|*ˆÛ0:ujÑ/TkØ!ÃÀŠü$Áp!Û‘/½Vç·¿Ê ˜K.q™åÜL™¦-‰b'ºeL™ÃÎmósY>@h¤ùkèv1ìÍéTј {¥§°“2ª§ÚY˦NùêlMvAئj—ê >åÖcí~‚¬þCÀݨÅà;ÚQÅfÀÜ'Sœaf|8h:)€#[UãäèÁðl¿1+¥?Ò• ºú)~£!5ۘѶ²E Ry¢‘Æh ´Æ}¤ä‰“D"ô§ XÃè»Êê–ê\Qˆ,¥3›H¤&&½ù+ 0K(åäòóÊm1Ú6æìŸË < ðDs?P7Šü7˜¨€@XØ›mÔœA•òXVžíÕ} ^¥J[Ï á3`Ƨ=îûv›”ìi\ŸŒódÁƒÅÀï_}úÃöêÐ^'"þæ©“·É¤Ý÷?¯0+Ìb»M ì™S[ÂK(¤ˆ&afðè3^þLÝŸ?äIåt¨"XÙn5Åæ Ó^žö|"ø&/.#½ÜZbäľÿ+;ÖJ„ËP{ö/Q°'ž®1x ‰KOšw(Ù¯éniY%¥<Íý?YÓ)U,'íº¶Ö­r¯²ÿôÎÁ­ØRß4m ­ ¶c¥¸Ñ¤n{·ãÓ´Gõ=ê@…µ·ÜZç¡xÞÌL„!~Ò+<bøé$Ax-Δ—›ÚÒ R&ñm9ÙkjÌ6£šô4ì>W·Åõ fÝÕÉ” Ô´‹Ø‡ÁýÑe-EYQ¥ˆ>Dz?ùg/ƒh´ŽâL­Œäè0¨±Rè`ðâ©¡CjˆþŽ” %«&Þ0¥ ™Iá%Ú÷ÿ½SbØÑ`$ŒzòO¼ÖnwmBîá+¯½qö®ÚsÌ?À²Ó\"T,!gYQÁ*aä Ø,çœq…¶TÌÇa«Î®þÄ}c!À1€×ÅÒQ8©`EŽ]Æÿ §þiœ9æzë¶È%3¶bVÔã±$¦²x¬Z™½§Ç‡ù\QÏAŸ¦…óO"þ•O•IŠ YyvÕ‹o€?WcÿÚÍcÔÖÄí6KEcd[ ÚÞÆ‡‚ÜÀ0c/$ÇŠi!S;ÔeMM¶ ­%®7ËÉ—”î%J ‡ˆ¡×ÿ!–gìŠbÎO'S THMéרG(X“eûûsC,¼ J<ɥхÒÄôM\;QBFÚ'B2m”K¢ø-Ò8$»sI>“ÐÌuòö*”%t 4W)PÎ$0kE¢<6¡¡{ÿFøB‰¹D‘O”#F:1UÁ•ÀáÞ7Žî[6$y<2ú«ø'5äíÇÙ[Ð2­Pr@DN0ëÇwÆDr’òìvSÔ§ü~§ÄFgDƒÉ1þù_y|¸ÿàž›QÊÐaA$Eoφ-:·ÔŸ‚÷F#J-W E&ŽV¹ âß‚ýÅØE$iIFîv »F&4q@Ô}*ƒnÍÖ%#D˜‘ë´˜"~_NÒBŠ<¿`û3±?Ά‰„T´X‹F¦x§¤cŸ-0ãdbƒœäÈŸ˜íÉ׿§µ¬ÿ º±Ä4F“ia(EHÄÎ_Æ'¡LOk³5 ©¤ r’u‹ý¼ÉT͈qâ+HR_I­Ò¹ñ«äˆg&~ã¿<5ØW2m"Ã<ü ÆÞ_›o“X—Aá5׈¯'¨|›DO[yÔÉØù‚…–^Ûó6ᡑΗôÇ|ö|Ô¬9¿6¢œ´-œN ¥ÑŸ×Dý¡éw·üˆ’h8Â~©g£]d7ït|Ü ¢ùiˆóY 1Ø|8 Žð–£·G«ê6-êñBì†7…âOxŽ #€$7l$é€÷¥D2²»§Ç…5ôR|¾¸_7§#ÝoeAŠûÀôv±ä>å+JO·XhŠd‹L÷Î[ @h_”mœyTÊ Eýº·áÍþ,RÀô¬·,pVŠ Ú4`/ïËNH0´Å«‚ŤéØ3~#MnƒY"Ë !H" àˆLSÎ pÈ[¶Äýu©&ú"¾Ð5¿ájSýëŸÁÙ1 %iñ¬ý–,¨þD5±ûäËî°vÜ4n^kùÙßî`ÏuZ-.—C¡‰1a,6B"ƒDW·'œÒ$'?Zª»õ¡À`3A®‰x¯ÖALÆ& Á„7eCµö]f¶¨3ÑÑX\èYi'°ëœbvÔãàáÔ{%†7ØŸ¹’_y´PI±Ùv¬@vÉy‹Ú~›“·1è;f%‹Ä¿Ir>€àÝŽŒFCFÚ^ê›ý. > žfÝðgSÖx¾}nµ[JÑíÀHþ5•Ž˜òìE4@‘»8Ù~«“ÏÁYT&Ø0_ôÑ(LjŸ§ß4aÿ0š\¿<m¼0ñ¤uIbOÃΊ1WYß7׆Įp™58Ðë/?gEÅzÆá-ð”Öt6˜öÙÑG©¨ø†×œl ‘%OïV‘©f²RV¯ž}òÊ ú¶Ÿ9sëiöJXùÅ»·o*n¿¨k‚Õ¾çÆÁú-Ymû×ãJ^ _w}Q:Ë^œ.YL "M+aù Ù¼Ìò‘Kƒ¹çÊLãòqԼߜIJŽ@æ5ÔÑ:GFÌ)ÒŹM¥ÿá*x¼ùÍxÍ·Z—Å î®áUþÓUKítAæ(“J»ut-øp4:ÿ¿Ä‘Î[Ï£q¿x D»ðl;®L^¦-·Žûµ~¹?Î?œ0mkr ¥¾~5! Ã%1è‘o¶-~SDJȆƒšW¯ïuqxú?¨¤æáY€ˆ¹`œøg¦È-4®^}öšŠZý%†ËÃo©=}ðZ~Dþú3±ÜZn …·{˜ú6÷ÉNxN’d£O‰k¢  O°8º…Ih»ÏøÊaréžB[F¼Øö„OÕïëë 4nê¨ZX¨qñKÃHìhˆÜ«Óå#oöï-ëçδ`ûA–ÐA/¼M/KJ)wɬñUë’åéY|2“Ÿ{Õ„ª«Û§\OÒÅõc—o|Þ7ºã¥âÞŸŒl³üü„Oä¡iìð:oW÷7}ߌÃ1Ä×-ÆÀ°ÜYD082ï›{J.W&Ý^K‹Ä 3”±êœFvV©Û_žUÁ´ A†ICÛ=¿Èõ?åÛðÃ+wb±ìÏÂoªËor¹8Ç“CI•ì¶LpøÚ=ºG+w©ë£Ó“e«+«‚.V6sY$ÜÚŒŸâ¢çYœíL*ºøíp*+Å9G;öÁxõE­´'ñ­n†¿ð?öùÎÌBÉå±ÂàS‚ òyb¿ÞdZ—X!añ*»\f— Éb‹Î‰'ٚتy"Y_ ‰ŠïOµ¶ò7;¸J^ºƒæz½‘FeÏmP.ÚO™}c¹ýE âYÞz>D‚\Ǩè¿wGöæÆÞè ¬Zf ƼÈ;ë–L³jÂòˆeœ–OÛ¬1¨ÂQÎ,–Ð#—㥳/;M,Ö8b™ã1—0ÉhŸ)r‡îõ±Tíš ù…åH‡-ßËàÏòªË¾lÓ†g9¿ú,@Ç]‰"¨ ZÈJ&gj³‹¾7 ƒŸ‰vOB1»þ¶>ÿ=öÓcßxO“û€áhXÝ:}.Ì¿¨Îø£Næpº ˜ó—FwHsfWƉ0W)O¥¡hæð $XŽÁCý·Z>ü®q½½À„ÛÈxí®ÿ¥:«*¨Î¥°¯àáF»åpP¨ãÅH/W{,YëÉk|Öm¯ÆþP®XAÖ]hv(^c$¬áÉ,*&—_îÌ‹~‚1zkl^‰×ÞLÎzœ~çý:ü€jæFŠE3‹Â6¯ˆJ摚g!±4×¹‚§¯£;± IÊE(")u±$¥"@ ¥ï”4G”/Ë {§båG,Š)ö0ÆXÈðÁù‰Ç3ÎãáZ@žH{L~¥)­>¬áȉDc¤ÈiÆŒÜlÖ½!™ê3ŒÏ|2~€&Võ†˜$_¨?4±ׂâ+P =Á!ÖË€%ÑÑXWãç$JÎ×dh*z9½© º]ã5•òyçÆµ>Ôõ²è-Bi´ –¶Ú–­GÐaªÊ/XsÑ•óМv¢’Ý9„·¹}¹Õ¹mK%îÔÁüœ’ü —*ï–8Áô.‰ï¬Š·U±)àQ[{Ô`Ö vÅ8ì×^¥ÙöÝ“l‹±à±13œB·`ØV+š ~Òr)<žŸ k ™ ½†I†Ï¬É \d\m³Ñg‰•ty5&[‹âˆØº'e.1¹œˆ×‘Ÿ‘sék÷rzûH¥âÀ¾¹ºk‘'ö½(ÒTW<.hÛ$ÃÑó†äaôx ŠlØ0Ê Ä(‰Åü°¼Ð§75~o&ÍWŒÆ–73â©ìŒæÄjɬαÝç™HʽD§Â¥Vc´*¶lXªDìŽÃå@úÐs’³Üß yÇÁ4» Nu¨Ôs|/kQ;"v(:ÀÛÎãdÛAŽœ¡c5-x%XÌÜ8Iòç¨seÜPäcˆ¢˜‹æÚ1P‘3vÆ`…a§ñãÓÞÅ?{«Ÿåw¿‰»k‘“5Â+ °#bqÏ¢EŒsI=‡ûÊñh\r[©&$X½¢bµÝ‹áþ^³Üa:èv ™„bŽ^ (Æ$· yL¡±G¤-²•kÜ÷¤í±³©{¶Cªq ÀÂÞ ¿²ÆÝ?Ê‘ûY²üäBÁó –ݲT$óS‘Éc±Doʉ‚Lå{EÙéî–Cã ži @Eƒ`báspQ´(RN-Á=¹Gþ©Ë ——TíÞè ZϼqøÝìÂãŸó¬çåØb± ëwZ¶*`à¢:ª©sR{†¹_y4f³ºÚ§"ÅÕHïð|®øp7ÁíR·+ ŒL†€:Þp˜%ƒÚú5{¥ À E\Ùh]:> }-å8¼W‰ûc‰ì±ìÅ!¥‡ä×KP(Fëfƶ´ãVŽÑÿ€ƒßò´ 8%-™(PDH‘¤I‚QdíÇ‹sû‡êv$ÁIÕuêù7$G­=å.»åÁA£'[u}ƒCT¬ <šÒ êÑÇ÷Ü€¢÷ÎFûi{T1|GÕ bòU6à¶M®Imù“hiƒ{Ò®öŸ&£žò7áÊ-øOt•4GD/«Ý9 iïpž8´ÂÇ…•„î,‡E_~ñ õü›ÓÀQ³\ë–¶•û“}7;W%¥V (ÄØ„,¯ iõ@íñ¶j‡J¥KŒcöëà}å=F…E¡»™ã¢™º8Mÿáù&¤RðGªp”NšÆлÏPQš »àhœkÕï‰$Óq9àÚþ]§)†«é áƨ`õŠãÜT}tP½”kÝË8¨Xà1ðŸ>Ú~#SK¢v¤©Ýù¾“Ƹäú4PO𴉜ºO6g˜á#³iŒ_ hQÍ—#æ²B[ð©qþDM‰5æÌ˜`‰º£]3¼è˜xë4ÀNÔà§çĪ'ãÌCëÕ>±]ëK'öé Úù¦YN)£ñËc )r©9šŒ TSÈ*|&z7…Ø@uØòw¸Ñp¤»wWšû»;´µ7à<‡ƒ½˜ƒÀé8—v…MQñ¨­†Ä›1å‡ÈºcàÄŒZ³Ÿôг~€pc}±ø›Âë±XüïmHmûH<(²à„ÇFÀwWüðj?€‡'ÚØqÞZ†7:sG^Ì(RBÅ%ó”0æ_ÚlL"[Û©©›ÏÓ­ÆtçXg¥™Æ{:7mÅ‹K\nÒ(#z0Êéâä‘I58 4™“TôÖ͘l¡1ÙdÞÕãÙI=ç+Ô›®Çû8Qö¡ÉÁIñÀõq' ¥b †”(”†-¤>€!öE7ʇ©ëѹ8½°ÆÎ©ÓE³È^L)7OÉÝð>:ä+¸ÐãÙc»Æ‘Mq…ó:a/¦¨ÏS Œ‹÷y+×yfLJy;{NŠSª˜ãù:)¸Ÿç§AZÑŒžÄ.BF0½'?mÖq1úLcpybút$öÖfͨôçkè±1¯ç ã˜ÎíäK9¾î+PÄ=P½ˆ›©C/Ö¢îIC@uÿY ²BÈØKC¯®MD°t¢›ô cþSêg㜬Ù!ýxH:1´"V³¨8DŽ•Õî _ÀÐØIDû7Õ$Ã0t2””bW}¦ s¬)&ÖçQŽ[3KÁ{œkUñ¦©,gÓ‡?ÃE‹ëç¦6¢glc’W³·Çq„Wƒe°?J±oTÅ<žu¼†ž©ßlî«€Æún•è î«4 Ls„Œ|ZJ›HCžÈuN×XÄü¢=“HSàI\0Õ— øŒA‚gH¤/ûŠÍû–£Ñ1ΣÌN×Ù…‰\ìÌØ ²÷Zù†Xì‹ vMˆsͤá{èOpbö=A´-ÓYZA“YešS;QgСçDµLçl¡øµWáUó-gÎRÒÞà5@R¥bTÝ:Ñé„‚ÁªysÎÖ“’îr@‹]óáig9p 4Enp– ˜@xüÒXDÇ&6Q']€}€$4Aì„ç„Ù\˜ä'¥F¦ ¤{ŽËœÐþ2hìç¤ß´Ýaܸœ<ìô\¾ãœ'¾xºgây`¼o&€ëVjÛMï58 Ôà ÆK–Ì–3ݬš\è¤ý°Þi5w˜t$Ìs¿½¯? K¢2€¹ÜLàMôÄ#eKk`Œ@æÙ_Oª^|íÊP8!PÞw¢Œ.X諈 j ¤÷–,&öà0 ,R4™š$*ÛYÀ˜<ÖBw†±@5Ÿ÷z„i9ßÄ¥ËqÃ’ tiW†[G`Ü ˜¨[ÑÒMÕÐGEBéŸ"<0‡^üҿLòÞI­ã«žJ9¹Hlqÿ:+] v@+“HfBÚ‹hÕal7ôÌêLt’óßiˆ[+håÛWñEÅ“†ì«4Zâ0ÞŒ·¸’A.÷és@0SpdÅÇ(ò1jC-KÁâ«C‡Ãk uqB#Œo­WüÛyóÕü‰˜e Šq$RC‘¥üKTe+\ Љôû!ÉymAÈVŒ”Æ{)’¤Í„p’<¶?õêÊRÑÂCªr5‰:5”hYê0–F+ú½¥šÁÔéCxv¸”ê\®d7#›Y5Ȧ½ - õ±ªÛR‡d)Bº×PQ»xûbe"9ÅþɪØ7™õ¢Éü‚VÆ–Z븇Çx‘ʲ8(Y î>˜,Áû}—€øøXMÔ¼$åHÌ6Zt”žÏ£-æq’Ðå;U^ °êÚã(À㟽R­Ã‹ƒd&¨g³__mäñ踒¿?Hô:Ä!c› *R¡*X×éÜk•1'3w}Ö©c«{‰¯Ž*¿ã a-]Ú\æz÷5õWÖsñ‚tyÿ°Ž<(þ~¼¯qtéNÕºÎÈCÓåÇÓo—Öd=Á¥Ëìx‰üÑ¢/êùHô”®Y¦öà ~ÇŠ³dÁ}ÿ´$»·­­^Iðàtƒù$ʛ͵ӿÆêÈ¢›R³ÉÛ¿Cg‰ñ@I,ì*+Õ`m«¦éLrdKì§:§;)3ÅîŠN¼“N@çxꜘp!‡6î«I:)Év÷?à(‘³¾U®-®ÐÌé •ÙÎJyêMÒ“žÿÿž8²U…r6Íþ³N܇–ÌU¾jüCSØÁ y4D3EûÈ£Õï³´NÕ(°¾‡KŸË^Ù‹SêÈ#\$EQdÄPªŸÚWÐv—«„u U´Iûjjp"GAw]2ûsíÜ®]XIÃ?{Å+‰úëÐ }àÖmbhNƒG9çÊíW­åõ)çæN•F,gg·OK»ÝÑØ¿Û*ÇË.’‹¡-Nㆴݷ+‚§O†a© •"´ ¼dƒ;RnIpÅ‘FI”:‡VqÚü8×R?¼gJßökå¤kaš„%I.l¥WaÕR6Ì“æœÑ·Z¿mýÐŲue®X€¡ôx¯Õ–¥?ñX xÍ %ךkKîžœ'-êcsñÿ1O¤ù yô¤D³x&¢B)ܬ²à8ðßBT»Çâׄ4ç/Ùòæy0WZÚ#ê] ð­E¯õ ˆ6éž "ÚÄû‡orÊÉ›˜œÉ´C €®R0†%ÑC€:²É!êaéù˜i½^ò<“Yäz yÆ¿ƒCSR4±Vºq²Ä«¯}:}4.hw¢Î.¥gkÏœâÁ]%¬—“÷/òaœ7,Om½I¶ï¤×!CF–lþÚ üÄô~'ɱÿºri°à¹Cñ§›i° œw))[@.ÀtÉ'˜&á«ýô‡AHOñSô’ˆ¿7t-­Æ£ãôg×k W&ÝÕJ Ÿ×Ô2¤ #ì‰$ùä!Wi‰3kI¹(orVõ u\#Z`™ØüBCR‚¡@ð)žÓŽMýÉQðbÛçV¥ÔExŸß€ãð¬7¹£t“z“z“z“4$øzÒIbj `ܱ;Hñ‘C+¢¢ 7–‹á;j#Æ÷/É/•(Àòàc6 µê=‹÷“ye?™·$«9ü“b!p>%—ŠËbäõ‡ÄÔWÂŒùqåŠVjÝÕ[¾kçGÍ1^¨Ss¯ÉÔÔY˜paHß߯³8Ýý7Ä|Ý®Á®,DTA¨Ÿ±‡)Ÿe¿X¢¡¸É÷™aºL¨|Å Žò0˜[ÕjuêÇ;S;f ßê£uz@Õ¶¨p&»&jœ Fc|ù  ðRÑ–«€ÙcQ Þ ”Kìõª~šÄi•‰a®-8ósÄÀ˜¯à‡™o †ÖÍäåáë÷à|}!,„Õ˜>©c8³šH¹A‡/%Õ­É(ǘN¼ò¦Ì—CD9ÁrT8«Pjý}ÃH„ÙN ãÌgðÃ̇QÞ²‚û¬RžM¶jÁ¸‰˜,4¡O ìb ïW\þºH²:ùlá=¬þˤ ææG˜µ)žÛ<x`<0gáxžFàé–¬­ñ¨Dô Æ 9›îOÃÜVßtÜî{åŠÙ !J,ùÙÞ;w¡ âl*ˆ}‹»Á"¸êˆ¿&5uß&¶Zà 5ì«%ŸÛ¥#¶+l„6¸Æ4è“÷†Õèk˜—€%(è ‡n—´ÂB}ß8.úTkü#_™á²nǫڑîk9uÅ –Jªœ9ÆÊ´5þ° ý%bìQ› R\Ä8›|”„‡`ø…ŠfÔ|z Ÿ»Rïm­¶-»Éˆ5EAÌv«X¯à¨Ú}À€=å3;9˜‘€¹,tŠC×&ä«´4rOüR:Ðè#K['mØiåíòôÒ~¹n¡|£†ãi&BVL£ô´eô×–ÆîÛÔmÛÄ“«ü­n5sJ=À/¾ ܈]ßÌ›_!™b=·åúèAŸÂ)evºÖË,¸!¶¤:ÞU•½]%³¡d‘Ð@O.g½NXÆ)Ï& R^OXC¸Y<J²IŒ%(N©{ˆÔÁH ï%£…5 ŠøkRSömb›„ïž’y*Œ_÷ÏGÔäŽÛâ/ðð+Ñ#¾d<î¨Vx$­_LÊh˜W'P®ð`ªh¯hg˜ÊÙ‡M¦C‚´XÎ7µc(z¤V>–5E{¬ßƒØ\;""ãÚâö„®M~`W–l4M(_üºfw.½ÓÇ Oð{#Ž•ÍµÃDÚíõ‘+ó ¬±¼‹“-Vñî#ü¡̃IçØ;Ë·U½©* L›Ñ›½Õµ—6Ós‡Iôök"÷˜SØY¥;Þ'Iùmàa¸<2)²§”£* 0{fãT+V¡¨öæ­Þš l@y7Ûۨ蹲?^I_ͳÎß2[²])P5V¼#9¨búÅ8œ¯Ð"Dj7$ùæXl‰Uë6Õª³ŽÜ£\fûÆ—üÜ«Ð'w™ …ÐoduLiÙäÛÈK¹HÂ;Š` ûKÓ[™T½%ö]U¨ÁЫ×Îu€›—¥;·mõeõøµÔÐÕiÕ[¨¾« TËÿ³¢ïD¿ï°þ_+Շſt_¸Fö3ÝE—Óx蘚âêPÚÉo's‘(õme?m#ÞÝrÜJOD†=1Ä c9ï—4ûµ:(zÔô(ù„óÅþ€ã†å™tX›Øqw¯ ’ê'·Ä“2á…¿>#véfzÏ)Rrf%òÍ13×,?쟀ýçä«ièmj”ŽØ®8°>ØàÓÎ'ï k£Zà\`˜—€sƒ(èoÝ®AÊ'BýM”ÅÎìðÖ¶b¡@šÀ~ ‹ ­ ‹t’À\în§¼çû—'¢Ü—M㬩[y?mÆÜ¨„öâ¹CÖäC[±î¤•ðŠâkÁÈ Ÿ›aëö{TâFjî­k~èå5JG¬+¬Ø+Ž-p>¹ ²S Òç#5élaPÎ b” >t[$Å´[7½1ƒ=ñ;¥£žFϰ~–=ôkJœ^]“YÖp†~Z©>|Ê"!/ƒi/0Êi›1´5Ê*Ø‚P-ú£1eÁAˆÈ¹%©Áw®t‰ØÚÅw·ÌXQ'+=°j¬8&´Àùä6©ûLió‘ÀèÔ0)ç1KÐ[ݘ9á-·¤.ð‚ ðÙ ð€?^€Ëynø¸Â”ã ‹,¨Påd@{º1kKÞÖ´w5fJjfMrpY‹1O}ãÙÜL×3xuûœÿ¸ÀƒT0 2(Âíg É{ÀF‚ðЙN53·r~‡à€A hþ^²SGRÎÛöIµåЯ8Éy0NTæßY~jbD]m²ÆÉ)‘Ë¡FR©=‚‰@09|øŠa†Ï¹'á ÃAU™o†iùtÈÄœ!¾‰²_œw,j^28•:Ï4[Ÿ¥/$Ú4ÓÆAÂ9d4äÕnþ…»9ºY!Oœò2 ‡¥ÆÀa=EŸä’||÷—`.‘\@B.$R´§b M¾‘43ɉ‰/tgY— °Æ„Çoÿ/ä¼£'è3¾½çѯ_ƒ9¥ÕÞ@EÞâZÿÿü8UŒù.ð/àë2 š ?èÞýCþ)r~´sÈœQ©5þ¯LÓo~~{ÝÛ×ùŸ’ò~ØßW>žû5qþMbÇ£“>ZkñãüÃô€ ƒnygI3€ñOzºÏÇ;ÓS¾|/ñ†ÔyŠO oÅã÷Žw<ˇ—Ž¢¼Û›¼OÖ_ d \ xüýÖñ^¾í îãþ$Þºûàã’ÿÝzH¼ï>?ôx$×媊Ï/ù÷ û—÷þ»`Â[ž¿ñúþ¿.æ®éùt~&½:öù¯ôÙ7`‚Dç9PŠ%¨M)¥æå£á~À ÿòÔW/ýÇÊ€òËÌe­£ŽNø“Ûë|WÏ|ò$¤ € öà3“<÷3¿ùµJOŽUüÒw›%›ß¾|ù2ÿxisx©­}B5ΗÆh»Z8/;˜Mý|}æ¡1¢p1ÛÎÇ.V÷†ÅK5RåR™Ä€b¦l™‰P%eþù.8æt+$€²œw¨Ò“Q ñÔñ‹æeì…*ÉábsìÚ¸C€|A%‘–‹-ãœDå BQ¢rÑßRø bAõƒ)ü2ï‘cE \>jÚ›AB‹¥`לªˆÍØ‹;Ñ©·…©Ûf A)_,µ¿Œ /H™¨¿4³Jô¦iÿåÏ5áÚ>–Ó°êû ¢’ÚB*ìhè ¸,»vÖŸA!!“»ô#Œ !—©k„¬sM6YÞ@œ ïsÔ±š E­]ΈÚ&ÜBTÇÊfpÄíkÀ¬µkœ"6`yÿ‡›ür¢·£û.­µÆ˜\ÝúÎÃp%ÈSD†\Šâ®ÅT0o˜\\ñDf”×£îf<ãxªŽ,¼&L9Á³kuÎ3ª‰½®ˆ=C Ž•*… !S¯¥8~£wÏ €^3æp?õ “±€“Á3ô]ª†]:²'<#90jѮ᰽¬$¡Ôhè )ÍI¼ÙuµXB™©±‹ÊzÊjݨÔØR Á•ºn+€ÎLéòÉkgЋ!Á½ì[)©&Ä0¥eêãr(È>²û¦§ìg<»¹0Óö÷-ywøJ!ÝáV»p«—üIûàbÏseó9¤c°ÜûãÖçž§»– î¸w¾Ñ50ñázwˆ‹Ö‹ù§lä¦õÆNE)’$é2L¿—­€…øŠméè#¡Î±=NŒZÛÈê 1SHL?“¨5„(‚a†ëÃ88Œ°~´@l˜ó’ÐîàHø2'æË*ƒX.Ä‘…+7Ïý€ÙGÇ ÐÕ޳vÁÙ°÷%ºV»[ah62„¾vˆé¨òC݇ žgˆ9›‘Ý™“O BŒ„)B6”I é2rÛ„BÏEÁ)—õ36rø 5$$˜>¦.%±EDñ™’.û×|ÈH @Ë%p\%*0@0 Ü%ìF X“ ²¡3ÄF ~YdE.Uë>H­’ ,ð¬Ä,0½'•¶M/“ll†’ÓσƒˆbÆØ»üdŒ"Òekͦ×Îf`ÇDÞ<éf ÒžÒåS¬,2HVDAœ$Ià°’a¯D*Rq)äâ…ÊÆky—&3]úPµpwZö¹lCñ¬ž¡õÅŸBHg2êê0¶³¼â@ÐxÌ™Ô\YŸðV÷žAÐ}°Þ¨q¤Z ÒtcïÔ.`ÙÙ2̪QŒ÷P7.ÅþX$.tÏEw’¼Ô~÷â\нc3 R`ë6Fx’g»¸‡VìN¼ø^Ýf¢ßjØ{î¾Ây¸ ‹)#©w–ù5.sâ“dv?ÁwÏ¢†YOýý„ìÁº¶÷ا€C52FFQ.9VFÞlÍ)WöºÖ+o`¸!™‰uŽÁÓÁÚk¨ýF«•á P~ï6áèÂF9Z° ÛK+që ˜&»¯…*Þa¾‰&âÑ+”ßÂbÐp’®Ãë =£&© ?Õ0­lì.Q%²„ àeÑ‹µ•”¨¿Ó4&=/¸«Š!rh˾™~Y"N8¯hƒ×->"òIãh Kx¹& Ž‘Pðb æá©¡ÂZ8¥ðHû ûúyô‰5ˆ dBÔ–Žk7#a3‹Ø—Ý¢nj‘1ò>†:+ß°yXøšSnºä£¸oýUƒX¹t³ëƒ§±G†D&9†|f9X؉b¦S-9Ê~cŠ´™’ÍÓ7Ç¡"6=¬’(]BùñýÅ6êÂì7>ʾ#z%2>`azyvF.>ÖÓ„î0Å#w«] 2`ùÈ<²y4Iu++, @ðc¬-ûSIx$@a!ªpn>A dô &¾?ÙÌR -ú€GÃ|Úçš=,®›#ízQ£8ûélòÕG QC…Ù¸ú4ûÊ ìõÚ nõOÑŸÒ°ª 顈ԎGXÞIpj2ñ£ ¢~<@R X‰æÆFXŸŸ²¯1„¦&„DŽ Ç@®Lµ3ÀÜ<€DKy†Ÿ‚höA8…ˆÙ”Çw`mÆÂt”©œ‰ $VH¸Ö”ZpôÑÞØ"&üþC‰:^d,ìn¡ïÀ4­`Z׃ÇzauT/Áaœ!œZ/Vá5±5˜ ÷5J4Û~H}˜/ÐFõâ;0ÍØ`ª{˜ú¨bˆ®ÀÜ’J\ Tó<@‡&hY!UÌ:ÔSh¥Nœ/ô…¯\ fKå(º Õ/ùà­˜ëÅag’:Êq|ä[ÓÏLý>ï•oØ–HDg¥‹?ÙfûºbW7 8³’Ï[Dȧ ݶ€ÆxO8EJ®I3É Žx÷ˆfùÜwOÜ—¶äZfo7Í“<’êTEß9 áöcmæVI¦þLm&@“éÜcVq/•wî¢¦çæ®=– Ÿ ι-‹¤§J|~ ®ÏüW©´0qxo°åµ,¸p^¿»4#܇™!1| 6,¦<O áþ*¹¯ Ýž(]<͉¼cí¥¢º¨½Ã\÷=óer¢¾ü8,Èáb·Tn?‹epf_^¯×³¶›Âá<ß1~Æ<æ[:O-qï=O§W8‡+Ñ \pµ)l» —Î(£úÖ™“CßÀ ¸zL?îP[¯Ÿå ®õQoÌ6•u¯?äþ]Άß>% Uæòþ¾gg‡lÆOš t·ß´{ïjà7|ßJ»ógÆ7[vuýIšqág‘ŒwÆzq½.²Ó0_Gš©î}i5b¨ê bg w!^xG€+8Lp·t=°÷å;ø€ºýtJf 2zÿ=ë‹c0ÂU† ݃ÁPʱÙݽª¨XÉ»§ |ÂEÔ£”Iï}“¬nÛGÐ]Í^帲¯K1+Œ’J1![<€5ÃÝu– ƒsŠÔI›R³UE Œª$[YêÃ3‹~YQÈŠl°:KWÌ{»ÛúiìÛ]ƪcêNÌìƒZÙÇÑ5û†š(*÷\UÈmÙ»P“,÷ÝÖX§} MWŠ¥€ç@ÃJ^™ 0†áBg…SÄ·¸+KææúÊF¤w;Á:Þ(ë+'6(M)'G¯Tý #¥4ŸÐª¤UIæR2#'öÛ#("±ªÆ‘¢n ºWѵ„ÕŒ’ÿeþ‚]ª”R {oÕÄ«Œp&$•’?çÀ¦î&JÏ8š˜˜0C—‘#™¬®®½ëº42S—ÍI÷BÃÝ’ÙLtWÇ’ÕÛüh¥ûUÿ~e7FC·ß›éº42+.×€¶«Ž%¡eÅøºƒ}EwÔýŒÆƒ—um0˜ÇªÒœ=á²ï÷#ýyÒŽ… V®ÂÖΞ¯½/Ë|gÈ*´Y}^*t]™©Ëf„üõŽ­Ÿ3\míÊõ:Ñ»®K#Ót™€I´ƒÍDwwqègÏ3RsóPïžØdÉÆ=––ûƒÇ÷Ø,åÛ~“þ¼_Ò Šêz”®ÿÕ¨¤µž˜ÝÄ7ý“<`à± «ét¶#«[ž™^V>úóŒÂŒªÆlr,ÉÐTÒ³Úò/gI¼“<ÏšXªŽ}†oâŽèß %Ö?ËÀé%³ ìâb°:(„VjG< ¤,©"E±áù~\ÿë¾0§Üpì8ökOóÈ9 Ôy¹oœÏtPX+~a#¼Å=@Jv‰öÚÿoÚÓñAjÿ?æùÅ~xþ@ÍÍñ÷þ¨äPê½Y©É€JÎ7Ó*’Ûuš@7¡ƒ"ŽÅµÎ®IãâªÍ4ÑMdõæƒèêE÷“–Þ¢(z¸T\§±ÒëÀŠM«36Wm¦±n<³QoŒ Ò+¨åÅ 5:9Z§™÷O˜‰Á»ùä·Ä6â¸>wäàà?·u“ëõÁiqNBØ^Ž]§ñ¾š–Ù—(£.º qBÜI“Ôàl<ËÅöÖÊušìº Tá´:csÕfšè&j8ê¶f–Í4ÑMÔp¸m 6ÓD7QÃá¶ØLÝDÎYåÊc¦ó‰3Ÿ«ßoLJåh”ÿÚ ïéÏÂgM”~â ¹¦€µ² ÓçÀyèát… Šþ”½Œ!æû:ÈèÂ;22¨G µ¿cDŽ9#6ÃØÓ²7F`%F«&šˆÿ3è&±1*û2³‘ Ç·Ï‚8ì*l˜L/ ç@c¼šëØ1žÔæÙâù2ôÕæ›?²Ó—}WiëçYhšiˆ×ôñjsö#ÝÇ ³XÒ7b$\5Ñå¹j•ÑA"¦x”»q8WÃ\1ˆ6+^ëÜíh‘ºµ0»iƒ½Ç“ÕõÔLÚê‡@ ņV)ú¸•(Ñ î¬œixNú(y&µÏ*Б¿å¢v¼ñ¡V´·v—0ö '`0CUÇÑB¹\Ú]Ä]£–OAÀÒ·&eÛÅ×ûU¾³:$,º!Yðý"læ˜ìyôté`º¤Æ6óÂ'¹°a¾´ÀiÒ_ëv2ÓÇ»†pd ºþFR«„|ƒÄ=Ñö/——Ðpa$LØa¸ÈïHDÂÃP†Œ“ôw©¤6”v­[ƒè7ë[cLgŒ^kÒ-îA­‘ó ™¼–4……çáÏJ¼XkmAëºX‹@•áŠ9!¬=P¼‚tΜ´åÖ4™(ó$Â)IÃ…ÏLwò†~VV“[C˼‚õ Ô’B•[xm6 Õp7K É½X«PaS~É–2%ï¹…ºº†ùœf‡#l„Li]tÞBcqû“¦LÞ%B¤{ ]54C5]lOl6ƨ𛓛ÍA©W}¦i“7¥°êU5Qz›Ó¥o´˜œ&€ëÑnÌÍÎ5Qä,[mÈÇÍä`öÖhUÔPÑÔDÆc©ªø ÖT‹ —†ôh-›½˜3Qݧ8^TðÂl@U¿k§£ŽŒí“5C>0Ë ~ k' ‚–~% óÿ)õMÛk:I­¼ž%@cw„sùÎÔ[ùž“6Ô¹y0d0¨¿k ;¢¸XWâ•óš@†c{¸™;®›’´Ð(4œª¾vÎbœp·aI ÃÖa·Ó›nž>h1Â\ ©”»“‹"# šþ4½®á€!ÖÃ>©¨ £ËpŒ8>×t¯S[k¶¼«õ¤Ä5~q~r6ˆq´nyülAùÚ_£‰ñ ¶Í);Ì!£~šZ¨¢ÙBæŠxù:o£W¸'™°j# Òi1œx`Åt%÷d€®Œ?]¾€"†ª78rI7u…-mÄp8[¸câæ”wÀÅ.“DXážíãæ¸Õ^/A?„^¡€—áfý*ªŠHÄc¢íRÖõ,hç5OÓ@1,¿u–5R%{s$Ô"´ï¥u\H¶tdœÃ‹˜Z_·¸Ûí”ÉÃoДX™ô5ë¶j à3âœlkú†{½ŠÑ-#KqFx**W™ ™>>¦IŠ: ÒãT— å[šYTÄûµðìMá ÜVHOÂÔÁgžÌ( ÀzcdgÈ=Ž€ Ëžê¸ãÒò'['W«µ‘:&¶DƒÈ%šO(ó¾(Bäk ¸ƒ=.M²'ݾ»êó¸Ÿaœc"&»ìÛæÓº…×`ÕO,±w“R3Ôjùx-iìNaàòd=³¼‹€@6ÉzU|zcŠ÷««áóÖ¨Dã­§øèùKÓ"Þák›ê0¼¬8Gñ5Lä·“±¬–8—䋜åŒ4¦ãýŽ 2ÄVÊ( + WL;öåe¿Ì²'±çq:¢ Q3¼øÉC’fØáŸBFX\e¾ÑÉ:÷FÝ|"0©j' Ɔ ØC/èôíÔ„RÌ÷@ …Yæ­áa_éŒA°Ev…—B#²ÿÛk¢Ì…°ï¼ÍÝP…YxvÇÑ칈!76åCno Ló9'kˆ^YmÕˆŒ.t¬Á­âå™4@›ù"§Ò±ñûž]™;\NÀ¹ªœËÆh Ué©Ä8PÐ@PRy¹%qÔ7µ‘}ãaaÍæî[€ìK%š˜¸PñÏÉy2{´D†7tIä$Ùktút¢PwRú·å•'%L§^Bœ6e,Ä ·Añ/å—)þàuXù‡D±B‚6`¸ŠèAWñ!ˆ­‰„4ãü~â Øó‡ëù0šöcU0Íõ¦£Ì…[«¾-¿Ì¯óœÇŸ^F&¿°ÖVö¸šêöåBÐcÁ2º{ ø£Éüâ •Ôâ>%àŸ’Á­F]lÐäºÐœ¢½CÝÝäÞì­ß3=¨ÏW§€wVºÚ·r‹ ƒOâîÍ?ì“*û®)RZpNóWO„æmèU¸¨9/ÏR%•Ï?š‡¯éåÓííþf®æz9ŸŽå`_œ˜aæf»†R.¥“s Û½*乜#Ó¤×ÍÿOZy–©÷eT"!¢ÞŽž¶j›ö‹í(ýµ–Ïx[ g±0QŒ13F.-牳ô¸ºªÎ9Äp ÒÌßj —{ bBLH½=É„gÅ[²öã]wU`€Ç"­Çbì žC’…Îô—88+½3Ÿ/Æ£¿ƒ‹²K'ÃÀLÄÔÜ“$Z75¿Ã7q¿Ò{ UøaýB•µÝ™³Ôª1ë>à¬ßµcOõæ[¹Tr­_½­»ÐŒl˜ø&­Ë¾ž)%íVzl¬Ð–ÿ= ÀÝ4°,mn‰˜ØõºkéêK¶—Ùn+­<¯¼„ ôÙO¯A÷4u°çÓãôøp¿]/çã¡»qèØÂ5îJ`ƇrŠÎð@¿‚ÎL0ÔîÆýÕggÝO# l²{;éìc6ò­ö/ãå#4Í=k¯6g€ªœ'î6KîëÂÚ|™>‚‡·7Ô‹B@™ìý/ ]ü‚6Ä}ÔâüÎmææ6,©bb° ë”øíô¸'j~nÛþ>¿÷¥ÈrÒQU £àWM¤åÓ’SŸÜ¸–ÅÌÕjDý a;À’¸#´ë¡Ë° W{MçB`n1x©ìÔÖèÎ#¯Ôûëüzš–© »ß ÐE ÆsÈ8L`‹Äí7C`å0èLÑã¥ÒãjÌDì'’ܤí÷°ýÞ[ÇÃЙã¿%âh¡0!sDñ¢§É½ÐvÃC,uòÏì»2‘†5bò۠㨚ÓyŒ£ct{­&V¥Îo­Aóåátöúåáóãçëåx?Ýý¢fUÄÜÝ·eà„¯g6ûÓÔÙ_²÷¼H·Æmè”QÃnr³jM3ŠÑŽi_I°Gþ¦‹²9v=¾yøÎÒjÌrªÖÞí4§Ø'ïMY*FÅ–‚³Áûã }—DÚ;“I-ŒQDü, bXÒr[K;ZªÏSŒÒõµ÷ ¸ ì&LëëOŒy-uùŒ©Ïãiˆ,ù-Þ׸믋›t#]5B.7X7›1½5“˜ͰºÚ¸í^4t½®á‚ý×ydlñÂÌ6u§ï‰íÜǪîn«ÕaÒ.4“m(<ÞuôÖÍHa¿¸¬N™Új¨‡'8èðä;ëÑßwîB£ôûd$ÁEBÅçQ&$¤æ: òfއá<ž%5ÖÈÕ€ž2Ù}‹&¶yOº‡ê52¯}=ZÄð>噘־Âú§e½òu…0_…‰ˆP,¾¶„ܬAö•×l~X­ÑùǧÁiDª~QY¾G±MõëÔd† ½ ˆSžóýšÖüÔ×ðЯÁϱÂy×G¶ìow³ …å†pË‹G«Óøø4>O¡Kïã`{´b”Æ0T÷fT-Z)í\‰å‡£Q±0ÿùá÷Õ=`0»%rBùMÑcý\ÛÖàž3%o6ì€ZUËü_ëìFqDÐúµ{ÝÐÕ„ÝijÁ$<1s"­Ž¬þ)]äwèGµomW©¼F+·!½-@Ü•î ÈôæÉ2ÙZ˜ö:æñknÔwê¼(Vì‹éx2I}i d1A n³²‚¢Ú·†´Y0§î·Ú¼%Áaz Zp“oToêÞÌqLBõ.HVAGDËÞzÂn’~FIQÞoä~yò·ÔI„‘ŒÒ)QiÇóÍÉjøíw:uZ5Uc´›XðéW÷-&Nh©>ÉRKÖ“¡7Ÿ*Uõ—ŽÙ‘Ý.º¾Ófǹát-Ò½1ú#ÿÞ}F•Øÿ@Î#¶=-ÑC>`H† ì)sÜFgäþhvžºÍe Â&{S–{ s¥îÁß« º¼Uoçß¼¿ú žN_ï×ãÔµê“þT±L$A›kÝ0Lmô±#¯ ÂxHˆ»›öÂ]à;û÷ºs#J„ꊻ·€E9îi%P’—©JÅ·‚9>ë*Id7/æ5‰*6ÜæÏ!ÔûuFÙßÞ„›T¹…ì€À2%2¬¨Æ#Zyì…Ì>éÆ=ÃÕ‘¶¿“¶ónGªI¤ Ös½F¾+(ÀÞvMÊúFüümɹÀº®H\t1¼| ;O¯ˆy ö0€4¯¾c²Û±[çAœ¸tŒ´=ÇŒû1å§å;õ¥œ±MO*LùÛkÉH Ð,!%-w3/¨³ZdÌÌ;ÿ˜Èôóµ¿;ø÷+ÃE!•2î@Ê`}¥cOÅŒtLÔ»ƒe¨Á6¿šV×^)(DU}þA ã ¸›|*sÑÀ"Å_á°N`ç™° Ì ÷ÔdÈÞßɈÙ×#çz¤&“PíŒë{@,+Õe,çœn’ÜG^[¿ˆ T?‰Í5÷ª×*)zTñÔq?~L|–Ç·^¼{Æmî ÚTG]ÓwÔÍߦ0°å[­¦šíIE‡mÓ¨K¨ÏÇp™ûGf’‰*×øôÈK ¥DÇ•ÙÓ˜á+œ1ûJæùaŽJ÷ ›(È{}39ÄEÅ +ì}½"-Þ`ßzäo´Êäÿo×õtbœàí¸q>MZB+|Ó°sÀúzugO»ê~ø\á쨴v|P1Be{êj¬¯ßú ?]›ãP¿ÜÏ€$ÂxVÍ¡|¢ŽŠÑ÷¼Õ`À‘e#j­ P²ðý…—¹‰wšà|M&H`O•DzgmU ](&(F‚ Ú³j"Ør"ëþȾîó,‰–Ê1bÛu;ÞÐvx<Âý*0ëù»@ž ðÓÚ„òþÓÕŸ}skûÆ£çQKQ§Çìè5ÔØëÕd;UJ˜°ph÷Ö·ìÝt_Å”ŒH½0Oà´^ºIQGµÖÄìk0™G\â3'Çû}Ü'ò®¤Û}Ò70‹^‡Û ’úB| °ò”Óý9˜¥W!4¥»­É×s†gC5vX²2‡=·ºYtÃÃ5îßÈm¶ÿQ+¶ÇÎñrAÙëk–w‚Š’Ú´˜ªÅ¸G 04u±kÈh€¾+®qò<Ê)O<^³žÕ«YÄ%‚­‡|fähÛ@©mÏ`CžÑ×Ó ´ûí¾Üµ©úú™y#ç2P;öú_S¿Z ÊØ/ó‰?Y=éèiÿÁoÐæàrMg Å»GMÞz´Hˆdo€¾]+HßwÜ‘ñýËüÆo÷YK©ÄËqs}w4[ÒЪ‘ì"¦ñpOùÛ†K#-†Y^x¼C¬•‚̉ôx4Z–º#4ú9»O¯pg¼ãD05²]´àÙ:µVšÖyÝüÑ1ÙSˆDè»—Î gØçâÀ†ËJã9:7h±çr"ØÏrº¸à›Z?+Û¿ë̾±Û6÷h‘±š×^YåÀ(ÅÖÆ} Øz–hé;p’‰²Ø°fõf´‚çj7•hŒ5 á€ôT“ò›:G…K‘mFƒ¢÷twk±•s}ï” a˜³mãê²o$®©øÑŠÊåpÀ£-EK¤¡EØ(ÆvK|”aÖ-ó~?ð8’]nœ3Š<†¸ÿ[=hì43zÒùÉ!š”m¯ç­‚ž>ñÛjÓq1 ;=Þcµ+Ó¸…oÐŽ*“7Ë$¢Ö#{ñ¥°º¤îáéœÞ%,Ë.SúIž'O3%x0‹…†`¢Ò­¶ ˆ;{|,´ ãG‘4Ý«¶2Ñpe7ÅXËL¯g·m;šÖH¿Ž™ãZà×—åöÇÝmUÝeufAª†b釮¦q„$eWµíéó›ðÒSq´(ÍÂÍÚÐìüélŠÏSºjD!D”àݬËm9 ž¥=’ºt±«DÑl‚u¥é|V?d²Òöð¾„Æ­ VWÓ¶ñ¨«5v6²¨ƒcÞÙL^‰"Ÿ­„…9*#õ‰øšS+ê4‰9AáÉþÀ?Ý.`eÆ`€ž>A—¿HUî›Ùg0K8õJ*ùZ`Œ×usu™ƒ°+D¨çÓLydãÑHׂ±j† GªËâ^ ÏwAß %`÷! L}특R¬jžý<-¨« VF¤&˵ ƒ}”g¶™ØTGɃol-(\÷Jó]Bœˆ [ݵE–Æ{å¨rN£Â/¯6í1x‘KúMýŽ®–N×£@ý-ÎFAÝ+ªÑõ¯ž¸Ç¤ˆñT‹>Ï3ÒJ²¿"s2˜sŠ"£ôΑªBÕüÞȦn¯î˜¡ˆ5Ü?çLÎn™yú!28»ù"`h®&µ¼u¨Šãy—Þë8pÎ$Tô9ªÚ˜mJÿÊYÕŠðHésã7œ.åZjàžLI²iÎÉ86Ò(©ßiÊFU#—)¥õd+ƒñÁEÁâZÍ£/Á”^"Þ¼D¿°Ö ûL¢±O¼`’ÀŒ£é‰Üb™Žˆª%FüxZ WKæC\e´º¯Zä=ä@vyæš8é§ë0‹¤ªÕ™Þv ¶ÜNá¤%°o–<À¶(É2”¡tÂ’ýJmø›bNZZOTÍpŽ%¶%›˜¡Ýür1»‰âyÛC¦Š=š±Þ“ÍÇ ‹îbx»[õˉ×P„÷i"9¯ˆÄTü3¿*^0Ë!’4ž)0ü"ÅhÍd…²'E%b8ÊHƒÓk‰ãsÇEQùg.iô/Ï*[+³¢yKòQ‘àÐÀß‹*bÐLLùú`Eg‡^Ä\òDž s¾ 'Ýd=ý)éùÉ𦈅1Û¥’MÝÝS6!µjËÒU㔽+]'ƒ¡q¶ÜCjÚh¨˜ã°N Œê£Y¦DšÎt®¹ýËÆw«s€œå˸m0KÜMš— ›yr)¬UdÚ»¦¡NìÇ圱)»ª‹ùÕå²£õ³˜úË}]eİV/­¨€yö«hÑi¡¸ý–ŽÎ. p]ÂÄ4ŒÉ[6Ø[˜1í%= =¶¨r¥:[T÷EqН–~;³EUÃ5Ø5áÝ9 –&WÍi¨ïtm-QíƒHiÓR¦"ªOJ0’bwRK¦Y\¨þr U‰1ÙGUdËvëÚôî6Þj[Ј])ê\$1P€.5·xf‚‹¥]¦]²Gì(’à ¸Ó- %÷®b£‰1Í0Áì WgíJáj±-«,c‡®ÓÄC‚Ð0wª3¿ÚüKøz³|çM5ïOQwÇ 7O »µ‡…Û"ŸO¸™Æl[aaY왤JG"Ñsm‘ÝGµÓ¡“¾)òõ¡" |„ÔGvú›¥¾?㨸 Ž.>(}¥ØVP "§9-¥*~·ô麙µUÆñ‚QOü /s‘Uþ¸'Z?a™_n²È·Qº+Üþ¾ñá"ßE¥wásX¶Û‹9‡Ï[¼¬0…‘ÌŠ¼?ˆ;I³€eÀbW“^4ºÝȹ06@šÿx‹G4]%ýš¸¢Ø–_‹fK>xÀ¯rײB+¶amKaÊ{pÔ\ëÒ´©¨ãøÉK¤ã#0-&Æ;ÇXnEÑiŒ˜bè)‰ˆšcÓTšô %#ÕQ¢m>„²3í* ÑÊÒ ¾Â@'±¥UÖGy‘‡JÙTÃÉ2àŒ“U¥)Æ6TÈÈÑk&qòË~ ¼@¤Ql¿ô©¥¨È޽ŰŽ^פb( %am@õM­º—҈ᱚ—áHç~æsB(ªÑ}ozK˜d˜ÖIzl€%˜Ñm#dÇzKeLP¤Á¢‹è0Yzmõ3sŽÓبXùŽärçl]gä™àC/¹ƒÈ§ŒmàC¤þB&^H´}Ÿ/>Ô@¬½Eb–g©.û‹t0»ðU|²&ÉNcLK~²èHO-/¡ÈdšB2ë…ÏÏRíÕbÇŠËkÖeåW0òœõï‰o~Ï×çåÛýóÃg/Zü \Ü»€{Ãbü䯆Ÿ{êéÈOðâ½ygD“à5Æ+iþL mà à<úcéÍ-3(Œs…ˆÔQ Y-µEéþœµ^·V÷Â}s`JVÒÝÙ‰WFz8r¦:aOfµHÑ¥ÁÊ"‰hÁ†Ü;ãCX7F_A~‡â]X ˆZCXgÒ΄ç„sè<²¤ÊDW×™žÑA §Æëy§iÊÕŠÙÚ¡ÊEòGØÂºX¤L¨qs½àûETw|ê;£ªbùlÃáº/Õ@÷f8^š¸ozîëኛTzÿ9ŸeB¦^ò’ŠÑ¸ò1NvF+)ÄúŒÜ‡æ}¾óEïÿóã* žºö–Š Z-«çÀ¾á­  ;¡•60žuÏTûÖZîÔ°GçÓ¡o•È«¼* Û$Ieç¼Îl¿¸'ái”ÔàîveÀAôš€Ò|pÀ†¢#{Ñþmeåô§¨Ä>CõŒ±‰ùRnÀ\“oº2TLÍaÁú ãn¯Œ­ÄÀÊÚ.Ûm6Ì‘»5{þèA4œyäí‡Ã4Õô¢—è=Êç‡bÜı¸…Ü›[(ô.'XàòÕ"Rë:°_m F%§Œ ^n£³×R ÓWÛPž?MhÐdíF¬Ðœñ•?[p.aØU…AqY]ǹYo\â—mÙ˜Ò§ÈCAƒ –öŒã¹š^âbF‚ƒM"sKØ®wÖ p{¢Ä£Õÿ“o’»¦",í¸“8¶ga·a×D`÷Öƒ?÷qñÇPôê9b¶îÎDB„— ¼xT¦oõæÙÉ¡OÌìOVýLSìêéYuŒáEÙ&*×ÔçG>ßø.z_Õóïß¾¹8›Ý¦ßøß>òâgàF ƒQ.ѽÒZ¡ºo^ØùSaŽ} Ykl¨‘©.äS ƒ›Ygœîøj>Ó,/ØAÖÿ–¡óã±ÚÏôå×Nî60ºÈWõZæXX± ¿+^]l^¼’ë +ì7ƒö[v}x©ÅëÁ{–CdXÛj…fôIî—Ò¹äÒj5 àY|\Äk÷ÑÎÓvúë‡ÇÎ&Ñæ•• 惘ֶ°¸? ÄS5»õ6„§&¶%ßFë™ÐDéùã¢yÛ¸nh%LH8ŠbU|gGÚXïØf 3ü!nI(÷–àiC@¿ÝO‰ãŽ+Š/+óG/„ûh²ÁÖ…ÇD~œ½ê|:oÐJÀìQ`ËR ÚQÛÓöß—€Kuz£Ž«3mhñD¶BW±ãö]1”d&ö FøH3nIq笶™ÊÝr±Cj.ßýZǸ8ÁõΗóöx= =‹Lâ4gÄÿáêHMÄ7лÉZós«…9âïéåÙ÷šF“ ~íò2Úžý:.àå6Ùûøf³ýÿeºû¼¬Óæ«@ðÐùOàG£¿+xñÏfоjôz¯®RüžÇnöþÞÚ¿ýÇ0½Ö¿-ï>?LoÃëêíýë¦?e?kÒ‰— æŸÕgˆ’P“‘Ž>Òþyâ`BUuCAÏøÿËÂØßÆàdò“ÅÆ¥”Üml޾ѹq˜Ù‹¶mY"ÄšÉ ŒŽ$ çqO§Ýpÿ§ÉÍõï<î{N1ü·Í<ûÇåŠÖ\à‚ ‡>WÐtØÌF­Z¤ëxÜ4öfþ̱ê AËÿeYê$ÊëÀþ *EÈ ; *µðósŸ·;NPüÕönÁK×q·wÐ]»®´¯d¾sR3Íucëùä˜lƒÈÑw.Í!'ÑûäéÃŽ[pç Õö­~#õ¶ðìž7òÝ3–¬¾F«óa!°Ìð{ 3ë[3£›É`§|+|å.ÒÏP·t,Þ×P9­wŒ'ֻǦ×Wqú‡Ã X ɹ‰¿Þþ q˜üù ú:eË]˜š¦Ü>jÒ0öd—¼͸Y ü·YJ¾àV7¥iØÎ‚£¥Žãñfo®ná!áîà`©*sE®ÚLMO³4«~’y:=œåªÐ$Yqaûz4@v‰ÈOèü Þ×=Œä¯íƼ’Í9§RêxlǾYe'ñ}y¥$QBzYÚ ¸Fƒî©aBÂ8î°y<åøíÌuϼÀ>L³ÓR¶‚Ná‹"IĵƒC^»Ý~ˆŒ³)‘p|),¯F]îÚ à;iË ¬`'-’·**^†5ôwwü“ïZÞ[³>j˜ˆˆ/ËP)*ðI¹Ïû£Rc—óÇâq™ÁPêÎ-Xõm¾÷Š÷Ð(2(³”W>µb]AZ‰€gDTÅ÷<϶vQ èv³ßOÔz%B•gÎ^ÔîK{ ƒ%µ–¼´©¾ö5>AU´\ â=Óœi1KM—h”ßç®óúêgœGk©† Møe(•>•–…ÿM*þR‰Ä—¶rTþ•´ºÌ,ŸýâieE á3Ѥ­oÝCÄÂZåS jÀ‘†‹²!; •ëÚ:Iù‘20#AºŒÉÞ{þLîT G]—ùîi‚„Ë­ýˆtZT6[Ò "ÑD\#Ó­“&ThÝY„ïÂBôð@PÑqZÁ2¾KH+°=Ôá®ì'3‘¦7ßU8×I¿€‡ž‰è•:qlú×dd@ƒÁÝXYû¹yŽ÷³2±±˜C㻲–öx9Ø3¡#U'ÆD§+É2 àç5NßÝ»0zÿµ­Ú’~Há)*ÅD•‚ôþ&¯½Ý¯F mhýÝ;Íx~ó³ùw‡~XÂÖwxéù|ÔJ¨Sƒ¨Ñ =",ð9°"´ò…¯BÒ?â>ï6s™ö»Ë¬ 9B²óíߦc£US°'@$l•(c5ˆ[C1E‹f|é#v£¸ÃAßQ?[À½3^¸{¶¿1÷b4s@Óï0‡¼ö,ha&ö CLF¥8ÿš›+˜bÜ&°ƒ¸¾"š°‚`˜±Ð ¾Er£ýõ2Ͻ¨ë_J™z¾ÙÓìj,Y¾eãâ5Å:-qº—ÀœaÈ›ÈÅ%fºÇ$,Q1¬!ô<ç_¾Ljv˜$p¿“+‚u†%ï'„8Ï• 0pTBP€Áö}𶦽ÐÇms@ÈYé§,ª„!¦åÞoÂÚØ/ç‚§°[Èÿ˜, v ‘Ê1N᤽‡#gùÖƒý9ã¸cÆ(cóB ñ?@ÆßÏ©roCŸ!ÿ„Ìì‰Î"+ óøî‰G/ tt;ä瞀=þxøt[ÓT#´ñ£Í­¢\sÎoLo’¶áûËÝž/óùìb^îqbÚô‹º™™O 7K 30©†éˆèW÷R0G“Ü‘—J“Xð!<\_¢ö4Çbùý]äS¤£¤%Mg.Š—ÖQ“Ž4Œ;ÒúŒK¼/Ó¼éÓl×L?êpuª„ŠÁÃVCnïºV¾Sz‘ž’ËkMšF¤In´ÎÈ ›Ž Tì炨>W3$ÍÓm›Ö#ò­ð0oÚ?ÓÁD^Ͱ`¼m#,í“äÒ÷ÀñѼ·mÄ~œÝÊjN:©ä!XG*Æ  !º•ê›þÈXe‰\$&¸2ëçwíG›öд, D 9¬5‡Ü€Í+L+ççÌx=UaŠ…ú¤¯;õ`†¦ÎRFýW5F¼¹ÎnÝårï}‘§¢ôÈ.‘ÖOTƒ!ÍßýCoÖòèþ4œ¬®e@I/ìšóñí}qF|«Ð$¾¡³¼+''Ìð ~hˆÔÅÙLa!é§_©E|› â[;ôvj'Ì%UœÓMÝR9ðÂ{uØ8Ú„-Q>YÀ+>“™îa~î5t¥#u\Ú(¹L9¿IŠ+Ôä ™õ›`rî1k€üò UÒŠÑ4«)¥1iôZDÎSÍ ¥XÏ|Š$à)VOlgp¿)¿#”36€bC†©[ Õ!ˆÃÀÁCÌ©r–fë›ÖDÎ/á#4HŠÖtdoË-çÌú.¢QÅ©ø”÷ÒiY%$—¸š =ýÆÓEUÒdžÇWÐã,Ú{£«Áv^ ‚×0fz!…G´À(HrV ,>URx¦x±ëó–ácY÷81ç¼VIk5šMZÐ1˜?ÙÔŒ‰6p…±gçGC€—¸¡Ë5IZFWà —ꄳÐæÛf©s?#A>"y­]]fNÕpL>÷†5€Óâo¥’¸zn ¬[eMÞøÊ“FXº.Ì'ÆG݇<®×™2úŽ{CÈÇñ€¹Épbö6Æ;{t €…Zцé9kI0¿žÐyÎOåkJ4qËgçIÀè™—XÝ/êºÆ2Õ–IÞ-*LüÙ8:q5Pbbãù®:T3䪖E&®n(”y̘U+C&Ln× ÜA2o™Ç2ëò|%ÄÂh2øzަEîlj›Ú¹blÀá4"‹•<Ä6cW‡§«‘ÚEº/ÓËå ²ûje§C]BCÀWÁ¡ýÝ`›GÝ{ z¿RŠj 7@%“ß{ ËÛÕâ!ðäM>õðkXðô€¾‡hq$ØZ‡Ì$%zê…K’DÕÍ|'޽u"/÷Î[ÒÓ™ ¢1¡9 ˆÕ0 ¬‰úú—s-˶j±ÑŠÊUÝ\?~ý-òeãUﯩÃ<Þ‚„#öÑ-ʺ·r-¶Ž`< Ccgú ŒªoÕQcmÃ‡Ž¾ªãp"“ØëK»%ÙC´!hÍç¾k„è¦j$ÜLºßc‰ä•ž1D]¡Pš8ákPþ‘‡ºðWø"]Ô߬%ôâáŸOF*Їßuæî:æ«™n«’0ì”Î,tf zÎ6}`5* à ”^²á¶^%GñƼ3Ò0¼s·Û=(Aþh/Ø£únìnru(¨õ¼ú¶ÈôO…7ôû¸!àÌ-·(!QXg+@ZÒ }<Ôêl$ šQîP®*¹&®¤¦˜8NÒ`Ê%tÄiúGÑCôé±ÊÍDÆÎ5ïˆr@yÍ·œhR{G¸.by{ÚìÃô#Çpóö§õC_(Üú†É膉…à ¹1D‘49)‚9¶ä©{lÊÿ:÷p]#lôèï™E.Œžox<úHxãAÿ";|¡q5lҮðŒ„ÀƒÅŠº'í•¶/$¡ p¥B§µ#±Ð«Úð +ôK‰/Ä>œJA+°\ç¬ùhM]&ÑÚ s7Ø"V|w»Œ¨§ìsÚÓ£´µ€JžòÞË þ« q$$›ÐÚߊ¢¦D]l€¶wÊjȾÎ0ãÅ 1äu¨>¶ß§&r XÚZµsq“^¾µ.*²ÄBŸ½º Ë/ï°Óî ">Îl=¶^Éen}c¼¾·÷MÌèöFÈiä/!¾ µ»h”*&rVâ a4[v£Ú ¡‰¹ÁöØï3«k ^n+.3ñ#'=‰àš¾¨ÞžŠ|=þä“§&_Å×i°º©óÇâ±öZ ñ ‘Z-×n½CSx¿Mš}Š ÒvßÍ#?Ko8÷ Âå‹_(>@9,xôµ|ŸeóÊÔ9ÐŒïÅ£póµü5ûpŒêÔ~ÁlÆC¹AdÃÙèoº»ôßJ_%ÀÅ9|•—ü+44Ð)‹°ñÊqòg¤-â6hêOˆ"`/žÚ#íu˜Æ¡ï" ªZíµöÀ€"—¯mAŒìÏ®Sþ”1Ú¢M«¶à%3lÍ9ã˜tãRûc•¹À<›¨ LÝ7u4{Š«øAæ\_Ûë‰(²voµÀ Ë¾uƒü9½[§Æ{âZVöäIÒ}Q˜…çJ÷†'ZÏÞ?ÆÎʦÈãkrÅ­¡Ü‡šž™$Û­¹Èò»«‚¦Vólˆ"¼iÑ!ÄkçÒ“Yú4j|jæõâó´wAÐTU@+ß%z èÚ Ñÿ-¤C©7}•Êóˆ8`Hµ9®õ™û"£p=°Œt¸÷ V’5ƯŠ'N>#\µ ÌEê’h÷ÿÁÂ?ÓY¡îXò¢`ù¹Ç*÷@Ûã \»P…'‡Æ3λú²óŸ?J½<ækï.~Xþ0~^>ŸÁñA~ÐŽH_ÆG#:Ù±Hó·6psÍâi©{Ém>\ûÿàh6GväÆ(t|y×£ŽÓ¯ÜZ©H‰º,²$qòzýœS÷G¬¥Ì•t¶„Km̽_²WÂvev¿Ç¶ÛßÐèÚ^x›ÿ:Ü8*(÷•›lÿã6¿î¶£¯ ®  äÙúlv{¸‰Ï«ïôgóY!Î#?ï1jÊ—ç^÷PK)à}Òï¢ðùW­Oج`aÎELÜŽ˜í°×<~Œøé8^¦‹¦ö»ÊR>Dƒ1l³Ö6ÑãbÏêÜZ%˼¼ï ŒÚ梡Ï«gØ0öó¼n°QÙ×¼‹|~÷•›/\¢/Mf,­ùW¿k¦uB =½ï?{ßTþ{yòÎåéú4öZŠo<gm_äÃÝÖHfÉ“7çµGß D>~)ü3\ÏM7Éù¾Ë¾GÂÔb¢Sk4ÆÍIÕê›ÞM µÔû$s7šûuv£þè ×™{Fëb^oPoΦ/6¬–ÒÖsóˆÝŸÓë£Í­Í ÊÜõq×-Ӄߧyzœ»½ÛçŒ×Yÿ™š¦ öDƒþçÒ–o/¾Y~#ãU^þx>t´2ýÙ‹ÙOÍ/ÖýñŽóñ§ƒìv<™sMÝŒ3WðضÛÒö ·x'Ýßý9³ûÂs¼yëfäµX¼óé«Ñ,=O^Óx¿pzÁÊÛ~²Óx:ˆª{yôJóèP8¥¶¾7-Öࢂ±‡æÒÝJ6æY•j„5žÉ­1†Vˆ„[Ô<÷dç’g8ì<%ëFö›Î? ‚µ^äl‡ÑKº/V‹—øÞ)p—ùº8… ãhg›ª`ÓÖ=o¢Œ‹ ŠN#¾"g­_¼y­®Ëó}QX¦ëñ»¹„Ë*Íö¼5.¶µÈºDD_f¢LÉï¬QÄ&OQÜ {OEßBø/3K.,Ì·”L/0 …± +žˆâ)ÝOEÎ Òù‡ §¿AÞ½¿<]Ïcï~°+: Ù[siž^ùØ©‡â‹ŽAô¥ÎCç{ôXbicÖ]¨[|µ†’ÊØFþÜ æ¼ØpeÆ$ÏK‡ø]$[XçÁÖêŠrÀ÷Ê)(Òß¼¨I´aMµbAF)µê9KCtägÔ¬ýÀ+{ÞÊâZI€˜n¤Ð#=øá󡯰õº… ç­“ò’ßm¡Âꔢè˜hˆäâ ÿµîÏÁžSÿrÝêëŸÖøó«—{l‡µdú¢};ŸÄsü6ÑwߢŸSñb·¡å½üÛŸÏ[ ƒ$üÅ'AÜÁƒa~¾¿ù”ù²M2= WvTî{5uRr¦10avǨ¯à)x¡U·… ׈‰ãµcb0_4³ôÈ«0Ë„þÝb±·_^7þÌÙ~~£ÐåÝ=^„cïuÊ„³rÐÇ&Ÿ^æä$ÖlD¦Íâé±moOËsЛ‚éZ·ëÑëÇþ:\[Ót¢ózê>p±YF7¤“ Á^¾±£ÉqBÌ&‹Ìƒ/oœ|Ï)‘Š®3fm ±{ÇUE× $¦fœ€8C¼GHÁ°aÌ”yÅYlÐd6·j9àήÕñ~ο©|y¨m<[Û¼‰7Ê÷`†ãrrìÁe4eqzœ… v… ÈÍD$öG8*\:WÈ4 ­ y< *b“8GÕšNÅŠénXÂcUÂØ( PlïU¢S`†JüAA|·iÁåMa×,ŸŽ0ý>f_9¸’H2{ìžéÝ`ÚÓúRÞ´6ˆ“ ÛQÂf¸ZâJfÏ>‘re#Wf¤NÖƒxY€H|£&k¼†ê\,3áÎàÄIwÒḴf(y!»úab.»'“«ÜŒ<Ðq•‘]£ë\3‹à)ÿ(küa›¥„N°ÔŒ/³ƒ«µ[v¸U¡oN¡Æ$Nb’@x­iS?Úö_ŽWÎA=Ò`3fŠ{Aõv-ñ0¿Ïo”p3›i¯Ûúu”ãvóÕ9Gb°7Ú2ÕG\–ò[p+d|M¥w>øX1p®û:²ìãO^ A¡)5–Ä5`ô–HÉèäKÐà _›ÓÃÝÉŽ¥ìÈ^ûØAŸ©`Yö(D&±¢IÃ;àÛ‘<Úü ¯ØÎÚÙlL®põ aŸx°pÇdGž(S˜C‘*˜/?ë]‰ùêzÙË;,4¢„y¯C8lÕâ¢&ØþÖ6±…žà~ú®˶‡Ž¦VT§‘G(«þ•q²ñ1…¤ëÃ3ˆ <›ÌÑJ9#ú6&÷Ž70Å8kàû0õ{Tà _©Ï8ÕRaøªÐÑBkd€(\aTOl;©éIAY,sÞTF¶<Ýq¶I75¡ îsürÕ“!£fwA«Ï‹Ò»yoFYèõUÖ˜  ¬Eܹ½}Ùδ‹õð{¤‡¤Dç}j*Öfù1)¾#E³¸¾:TDð$€` 8!7jvÖ¸ÚÑ¥Êàˆ)—’u’ÄÆ]аX±˜èÎÁ4Fà h…^ÆŒÅ{˜±C’[ŽOw:@)yçî’jËW[Áy#N Õ’B‘¨\;\Ÿ3«#®pkD!Ͼ|ð•Ža]ßV=¬1s¸tƒyA´¡*•×RkxäbÕw±Œþø%†Öñô›­e|Ó‚¨ ¾DHª€½–<† mézA¢f1ú®½æ½}{ënJæ)Åf«sfM/ÀŒ†ûtzÌçÁ݆“‹öˆpœî¬…{ÿuµÉcÂ.|"cúQŽ?l;PK³ƒÙГ.Ь)¦û5#;©:áì ´¥J7cb°·èåÁØ+¬ 2‡hÁwS;ûoáò¸K™y÷×Ìð·”dE‹œ™•jØ™É3z3$8,+ë)qÖœQ“'Ϻµlå2˜5dUò>¾åb±\*ÝøÎ º.v…ô¦[R>ç°£L9UÍF.Ê“;ò4ψ©ð”n•ÆA¹Žx£_B’‚à»y‡Zäf×tA“&É|A|Žë$gN}¼ ê…ó%ÜÂe¶¢©3‘sœW ™$¼¦F©9p\–Çö*ïˆ ,V:Õ—^©»P(Oƒn 1wXX_& øæãŽVI¨²Ðj4Ý-'C‘DYùèed“º†Áªoó]T!)ä`$¹æPת,nN[Ÿ—\ìÄ©»†ÍG1;¹(=•óýرñ¤¸Êh÷‘:i÷[é¨/4#§B+g©¢ò7Kq©zÊ©Š?ÔX!Ã)uÁÁ<—KIC5qÎdT â’o‡Õ€Ëã‘%ÆI“ä<¸"½&1ÔL:ï˱˜ïÊã'ÎÍ.,rVCBWrrZtƒÚæt ’3cZÔ߯¸é¾Ëfk9TÃ0®~Ǧ÷‡<±a“®6µv¢4²ì ’Äè,H‰§O›Sßå6˜…M–9]q.N¦å0v­–"§èƒáÅ”;­Üýã ßöyg*1Çh|'ï\NÓØY²;[ºu¾E#SÈ b›Ñç±I&ñ•6ć(ñôiqâ9þøú@!áÀ'ï›–ûõt{)˜ˆƒááåî¾Û+[¸Þæ|c³ê¦cjŽD¤^årN°Gï¾<=\/ÇÉÊØÖI„ Rxb¶_×Öï1R*ÙIÄ©~FmY2³N²H÷ ›©öY'Š+úAB(í%S¨OŸ .”kaVŽs÷ý¾x~7þës.QnÌr¼§»j%ó»ò([]ôx|#¾œ9ß"ûåð ”Ùk  G:(ñŽ0cÏäÝäžíó’}¨ôÖ5ñ· <7Ï ¥>\†Šç~1LSÑÛsyÐ-¾?™~ÍSíe·F4ÅSùtèZU¿äȘ•›¶)XjDÖKõ—F»é³5Å; ã(FCmá¸4¯£/ŸëSª®’¨–û4··l]inÐYÜošï÷ܧΈý¾”šÊ“ #oCvÃÓ˜užÒÀó ´ÖŽ_Vžr†F<ž}˳pžö,º†û}&Ý8kEc¡bPØÍµ E!(TSfŽhHÞ mZw´">Á’’c:l˜ÙU<öKáN K½Då!´HàQÔaI¤zÁ¾µgo쥽ˆº† d¡=¼”@èh©Ÿpy [ÀdræìF±%ñPĦNábÚz‘õ¥'‹Mœ’¯‡-ÑF†êfV}• -Ê~ØÀäor˜t6úN+‡YyhV,HÞEØYàY¸™”Žœ;œZëwþaßS*``ÿÐ*ÚÎ %ïÜÇò»6ŒÀµZ‘.þ\K¶îÉΠí NÔ9’)5ú6`èô±{K„)å¦<èêbÝ*Ž+g Díªµ~êxýAŠ·èöç(w8ényÄÒCÒ3?`ˆ<æ;sÒßbÞ^im åèAÇÔŸÞjg˜ã6)ü×ÚÈi'.äêœÅUâ…ïE(c§…÷—äBp_f_gÓóáÙ;Ò‘Ó‰é%Ö×OëñRO 9ÌG- d±mÒ+™ÆNRùÞ÷Üéc–"oâƒÀd}h†Uÿ JkúE1rŸè•……5˜ü^Gb«FhÎ0Ä 3*;h˜Š%Þ©‚u þ _ÞÎǾý<bÆXp¶”êµØ)ú¶²Ö3Ÿ„ÀÝéqí¥ÊscSÍâPUDÜh«§ñ¯ËÙ]†ƒzŒ®fŒ^<0/6PüB¸xŒ¸àì\?Lƒ9Û³¨@ä 2÷×w—*%ªÈT4•&ŠX©oÃî¡¶0çÅãõãíãa¬3Ì‘M–`´ªï"®ŸÉ–-È~Fqö¤ðƒÜU€â¯ÕS ð‘¼T‚#ËååÀ¼4yyû¼¿ðg}&XØýЊìªÚ;! ¢ÞåÜ ©‡Éӛ߬<ºEëõÔ‰î—}ÝÍå¨ÊáŸWÅËÐ-A¨õ¸¥²žN¾…A/ *M£/Åå2çˆø¨O³ñ"˜«À}|]wÝ!»§¼w!ÎÀò³jÈâÝȤG 8D …ÿz9ÉuÇ‘ÖÑù鿇Ya5xæ.sßP䚧˵%\xɳ Ü*†l¹‰C¥}Ä­K¼ÑCœržD¬›;% ª¿Ë(õ ‚´WHC´¯ÜfyQ´R¤ØUç&¸îÈ™Ezˆs*bÃØuô [%¢tn»ZDÜ# [QÕPEÆË¨ô**wï¾ý&’BÅ¢ÂÙu R»Â±ýc0œ<ã|D½òLmV¡Lƪ­Ôù«½mîÄm‰¸Žœê‘Œ°ãƒ3íiyÿ7Í«îÚ™cÖÃô‡=ñÉõÂMÞX¥ªèЍà ßa¿¸aŠB¯|YE¡|…Lõ1‰­È“þÒmSÊZ¶Ýõ˜ujë“heR¸C³‘wgN¦•Fyxð ¡õ;¹Š—Î f#aâû&¯7ÐD¼êþð˜ÍOŸÕ,2Sã‚Ø0cÌZø‰í†guuÇå(<»ÿuLzÅDN(>•f·öº—°f¥ŒìvçÛns½DbòÁ‘ “ÃþýhYq[‚©Z˱%sRj‰ó]Z~ƒJ%ŘãÈ!¥›½J¾H€<œ´”jÊYY)Íœ1‹Qžc¯#©{WÝíØú›Ñõé·èýù úSTtΨۥêˆ@íJÖ«äÀ|×ô7I…Œ»ïUà²öBû¶¬‰Ht-]ÄèßO±0 ’Ï'h;ÈTûTäW £Ž­cƒQêÃá6©¨mÞQ)Á8ÜTàJ>~*(¾ ±á!V*rÿ^꽘³ÅAŠ|PIJ&çVãßdɤˆÑ9 ;>Á§œar‰‚óTlú)øŽt¾Ók¥Ÿ%bã°³õF¢°»¤_Ál"a¹"Œ{ˆ`ɪ¬ÊfÏš»Éh!YyÚ\Áƒ<­ŽÒöw„ø ¨ô„ªˆÆx —³ø¬Aã§4B­‚¿5Ü:.#MlMíøúQzØ…QËÑê^îõÇu㘔׺}Ô 9\åúÝ©åñåôr~åÂ+«qÊ73{»//ÎeÊ.“b’žo×ü]&SO*!TÍÛîãÉ«¹ÙÒ'±¨ãMDPÅ¥ÜLäÁCJJg=»+‘gÙ:ÖÔ隘=‹}oµy½üD™£çÐzº§xøUåµp’…ؼ=öyP(fˆlkÿ53í\éH´ò‹Ý$>¢<5¸gwõ•å%ÊÓ;Æ\€5"O‘´9ÍP£K¤éæÜ+5²¸…Ë †“ UÕ¯ùL™³N±ýÒÅ»,á”àËsi ×Ú† ^Ȱ#“,.E#‡Êž±ôX‘+\1“¥¢«Ÿy¿ ȶûùâiˆ¿1#mô“ŒÖ‹*ZšŸëÎ Ý woÞ±–Vâ6ˆ@¯w="Ïë¤éҽɜ¹xDG­M(vNÅ­ŠW›a‘ ¿"düÆßEµî8dG€GkjåR…oôŽÐ;³­C&h³@¹a¦9íU,ýðÏ:±«v`[o¥|TçŸ8Rç³¹­]žS±ut2ðÌÑþxßO’­m*”J3›'»¡ë¹zl¬»Ç·®ñ½ÙD…à%ÜÒ2ø-Hê;Öøˆzq$ñAªï£¢¥…Ùöâ sn°ÏKUA¯`F¦En‰³Ø¼GFÿ2àØ]L(V°Q±PüêçJjÖÉ Âz£š4E»‡[<§Ù}&\ºŒ^ãB–éš©ôknS|ohñ¢Î/ŠŸðºˆk¨VÄã? N ã­! “^Ñ䆑0€®»ë9SM¿Õk e%Ñ ˆÄ”á5ØV]=Ø”9•¸Å V¸4z7§Û8[ ªÞqƒ8ö-´\ë2–‚ýEˢ؅‚³Û™ÔJJðô‹_PÝ ±C®†ÍšJSqxN)”bì¿_È­ y¼¯Ç@ãIn©ðõÔ-Ã"Z¥M€Ç–3ÒŸ,›øKz5Ô+²Õ¼Ý /U.ÎÅmàK\ ˜ †Uô(è VÀŽ;%X×MËZ¹¬Ù§'‡-cI4K¶ÊB{n( ]òÈêÇ^)÷°%¥GKÐ AÐ0cºàЬÑPAá ’&‹`¶v¿í‘žƒ˜W5Ýúºž£vÇ?k GuÇ7å(†ŽaWì úUy¼…öõOÆÔwX&u4Å9=3‡Ès‹à©id{W)Ô%‘&ÜeË•:› ò^_Å#-âÕ­´ÂUì™FasšD“9žßz0JÜD™#²ãÀ ŽÝ ®Ù>bþÉ£ê:Èž¦eÒt0²OF2†‘-ÿˆ£‰Ç*v<ß5Á#C0/Œ™Ò4CúdN³›,$Qȵ«Å¸ÖS9P×”DR/x¤(, %½"‡×MæfÑÁtu¢¸³–`áÄ dýÜ º®‹Ì««nà$û.Tx4@j†u:=–î ùÝ·°±aÜçïwMàwñSJFý8@AýSh4mQ]á`BÈ'{1Š‹à° àwKßIœ:a«“ V¬nÂÁqÅ—« 5ˆ+@ΰr²áy’ôåÁ[ùµ5Dç•yHi`ù…ü2É+˜=w!¯{Ôþ ÚÂ2ŽÕ¸ž´x œ{ò®NÉ–$¼¼ ¾=Ô›UŸgÚÜ7U1¨µMK‚ é3¼¦îk5¤mYFn.¿'“²¥IÂn[õ¾q‹}éÄ\Á‹Æ5ÉÈŠ-"Wˆ€>¨‡¶Çáa|à-²Ñb$;½Dø7opψ´E—–ŠÄ$¤ö.ùd‚~ÛâÒ‡Æ ˆâé­ÕFTºà[%2 á»ÐP‡L,Ø„¤àFÌVò"õ88#Þ‰Ùê3Bè èƒ<ãÞAÞÔ5bv™Ioެ—ÁW*Œ ò>Y®áñsš-QµJÕ‹ÎÖ,ée1&tKH&†É¿ûIàÙbßÞûoëót9O÷ÃÝ(L™1r“Ëœ¶ÑË­ïÐ8eÖ?ßZ9z‚ÙE¿| j±nÐD !ë%åëÝ)ñ³mi…€­z%^Vâ‡Q!…xJU¤©[TßžCëÓoÒûiàn‚‡KÌ÷cÏø5^W²=håz]cÔ-i3÷ô^·Æ 9Ý6+ˆZÃÃ~-nªí’.R«žl×eS|DŽŸjÚÍj<Åúº³„kœJúb…lpÃ*®AþeÃ5z7¤ßÔ´ ¶u×ô·; A©J=å=¥¨€l$)~äè6Ör—Ê—j×3É£“$¥‚Ç_8Ó 9ºYèàÜ?çín¾m‘ŸE½—àÿU9ª•P‰óì°)iíw öÁ(Žä ,&iYè¥÷Œé·páêYI-•HKææèbÚ}$Ñq‘`®ÁoY):1U_M\€Mh]§ˆ¹ÁŒÐ#¶MYC®{ Ä%OV]Z\Æþ¸²ˆXlwÔü ù(2E-µNHÐ SM6ä€"<ÝÊþ*3Ý}•9{N½/üÐs£ ¾+ÈÁpí ›Öšxï ûQA11ÃÐèíÆÌ Öûp‘‹-Çõr=Xü”6«E)´`­Ì|Ⱦ§¥‘HÛL­'Æ8§‹0Å5ëÓü÷™J{Ÿ÷aˆJÛ<Ö&üff=û>ï£vª4SPMB3‹¿W!7osò5ÇY‰ƒJ#çwŒZÓZï,Áéí{Öÿø¿æå;R”¨Fþû¾Ó¯2™´7¹çMŽlεçËÂHÿdqǽBQþ}¥}Ø–]Û…YwfHiç"¼}%¡u%‘žmYÄÙCE4  f?FÓ.`?ï~‘ì9d@¾~Irv™Þf[»ù²bäOwa»‰é[}a·Œ™tà!HgljhŸÇû¢¤¯"àÛ^7Ùóù_…táêä¹Ë+¤ýÙN:—ƒoL5 AWn˜DìgºÛÿìÝò+ùîŠ2 £‚ù;yE˜=å¢õ­i<ÙüOjgCHc9Äw€ÉØXer¹”œ ‹ZËZH„"ìù¶ ¾Ž "°hV)0Ÿô²Š°#Tý®Š»[ÇáãÄ6>ûm;†c´_þ ñÐó»ÕÛÒr'” O¢ ˜{QDºê†Ï²•ׯFжݱd%ö2 ßtðù ÌÙÆhÉ”QÒÓ>ÎÖ™±¹ànï²O¬_«Î²47³´’p«Eö3iPX”÷èÁ”¦2yÊ‹¨ð**ûl°»ñye%0¹ñJtè³?Žd¼ŸM‰°wffh—, –Èp$°§ÌÁ ÈÒòecl³wɉƒAãé튭õ)‘ ðéÊΗ¯Y‡>)v¢Iÿ[žo@ôJû·ûI Y^ž€ ÂÇx¸ù¸4Ø–ÈVꉶ Kmüøïšdì Z£"ì°e£—ðîL–ª[£‡x‡äs*©]BÓ|9Aõ"âåÄ/2 §µèÐZe[›Âˆ»]Jê­ì$Ãþ<ÞA fŸ§CkK¸Õné$s4ægYe8ËSH 3ÂvÌôÔ„Næ8F?_åSé]ö$õzÏ™­5_oŒmìs(›˜ÿ†œdÚ.£:çS专$(ÐäÍg ÐÄVVËörè…"Á ûðXˆËÑ|Ø1ÏÊ|Ùªñ!Æ1!NÝ:öEĶN2KËGÕĉwÛ‹õf¾H9ÏÉ¡Åéß²Pÿ‹þŒÀUÒïƒjßkÔ± èØÅ¸¼ßjÇiÒÙnˆ~%’h×âØ>öîD†=ÉÑãìзÅ}÷ϤÃd |Ì~ÜN7ڤοq¼?nªz[–Ûx=5 a„Y…ZFåW0-íÐ#ú¿J „áx€ÿ΢ žlSYTÆåàÜæØ6NA•mÃý!`Q%pÆ ­ÚS#Žm™®'ßKý–Ò÷±Þœ„b€z(s\WOAzÞoÙÄ#„Š‚÷MJàÛÆ¸ÜŽ@Þò[39Òwö·ì# L"ŠÉŸóäb´ê:¹Ì‹Ç®®¢ò¥õJ×õYnÊnç#n€ÜÍa‰o²Y¨âH8Æ:Õ ‘N"úÖT04H¼”/»-ç™qMõnâÔ¡ƒ¿êXã9^5 „ÛÕ Ø.%6 £äí¢ê=Ûë¾U¶Þ‹œB«ÿ.v`-•í’3Îl;ßÂØ[á¤3¤í_D»Q‰¤,Ëßrls;ÎnÔð¼Âñ†n2µÝª.‚þB+Ê <ä;em!¾ç.d©“æ±d +ÍŒîßFC€ó¯ÆÏh¼ú¶åÖ\ó(tæ;¿cyá®»˜¦‘a>é´]q4„8r9pv`KëW] lgãÅø*Í·X…òÈsr ‰\ Moteúy9^RÍé ÚY¡ëgºX¬.äR=Ø&rã½ìÛˆEjhâ;¹+.ô²ï½&ð’÷Y½âfŸq|¢swäÞè9ãÇ(ßyÊ0h«ÔÖu…ý(âwòÃüôEÄ{ôœW–òA+³øGôaôC†mn óÙPÒ›_í»ÆÕSvqø}SM]ûüŠyçˆ2v²¤Ÿ°:ß¶ÜVo°ý"žk5|n*2’¨[¥¾ ÊT}ïc"¡eþýmÕÚ5Ú<æÁK%¦fÞbñ] é¼ÇŸšêÜ‘v‹@»WícWŒ•DøÜØN,¡‘=òš¯Ï÷kbщ¶mÀ£;RÀŸ81/@¡nê|"ˆ. ã ®§Uf} š\ÞÕĶÏC¨îÓì?¥+5PöÄwæ¬qÏm»?zr2<ßFiæF£…{Jÿ*ré^ÞO t±Êw•á%ˆŠ?­ûz]ôj1Í–Ù™³ï;ÃBÉó3¦VŒr,²@"±g| (Y à¸J'Õüñ´{óŽb¡tõÄ(x|«¾Zk?¤}Œóüi³ÞÑ‹jºÌ|ÈOˆì.|m¡±oªÞ½O¡iÊÀã*ýήoñ–Öd§XFáÉCl[ñèÚ~Zgb¶]$Äú—‚ÚoʚΆl©}U—È '&aÁO½FF'¾ c÷Âçò #Éw£òÉÀ|K]—®i÷éýÙÂV(sÙ^Cȃ‡ú—]L³¥ö1ócö}L¿W¯Ž;ïHb¹ð}^¥½/øÀ«N±è©oñÝ´j²¥vdÏòb͇J·¹á¤Ç÷ËÀ>õÔ<öÊ;óX:¢qŠíñïå?ï§ÇþCÊ<⡾U«}¼nçr£ ܤíºÔ5åýÃtÌ)ZYø\ÖÍu̵T »b#rS\Ž?ù“MìGùåÅíYlÙS_° ÙPnV®ÓóȧS¤3ž5Z‰’.…ì<ËsͲ^41ʹ“²|gÈ©ÈVNGš%áç3.ô99¬:7@ëXJ[699nU¯nCÿÜ\ÂÄChÂdŽ7·Â1ÑP>ÒCw}/‘#ø‘ô®óHÌÀ4x³9=UL¹Õúôîz—TܳtÛ`j¶í€wÅN‡P‹)L¼J™%>&c%ÝO3OÍ$ICv”ŽxÚ„‰Øw#j,Áé\é4>Ï 4‰Íiñ·4"WðNâíg¹FcÚ en<ˆŒ`ߎ"ü óóÍÉÁx8&ªv„fõëqÎÓÛñõôÚw~ºmS€WpµÈ¸·~Å„–÷,«Â–A:íXó=úŒÜ¨’ è²MÒZ‚áŽ}°C/äÀᆖëqè[kζÍR‚Åö„p÷‡HN¯ÙXèíßOýÃ>O‘y„-5Š yÌš>¼¥qóñ‚# ›±+ZãþP?»©8yC¸e:4†ë9‡¥äÚ8Á6Á‚€é(é,„Ã}ˆ¯`ùöp¿ž9ÅŒÍèyx‹Ô  ŸN$<<òsV¤?aéÉé:ÃÒu{ÕxK#óõ2 „ȹÄ[„¨lƒîPÛ,å #—½g"ÂÈnÝËÔà œO§^¯–kY½&~}°MÖà5mn•ò/;Èq™  ï y=ޯǗÓËa’¸7šH,Š/ #/¶êŒ›YKo|5NÈ·+Ó9pò¬£÷Ä;x /MØßâf긤%t’N¼t—XgޝnRs’~ƒÌ–ç7¤»ôa½QöE¹·ÕK°\¥¯yJ¿…âA ™¿À%ÿ¾gO…"µ€ Ù9Á0žgJ5ÌãŸìTúßt™ízÂÏ_öG1мž³ZP|tƒS[X=Îx[Îã)¸¶™,±CWôalº Ÿv¸’¢®Æ ”ÃaÍT¢’ ܾ1E¨í¨"p)Ng‡Y™*­(–¨üËMf×·fŒXVÀOOk³,|/|Ë%ù1Žgç@Áûj}Cò¤\2ÂU¸Hóôµ˜ŠŠMÒà^!”Da*±Þ”O†5LKt.&T×µ„ÓfFc­’Uô°kh;Œ‰¾$ Õªuþ1&$ ._FØ°Š¾Dös¼åºTaFõžÑi¾¨#Jz£ôÊäiå‘Ó½šjY¸Ðñ•‹€¯B®ƒ¿½†Þá!,ÝW%û;¤øÄ¼Ù2\N-ªËø]A·ðYÍ${î÷åÔ3Ê‹242‡³°Ó ° GØÎ?°ÿ\˜’Ô££ÛjnÒ ¼¥ç÷Ó4ô’¶„bL¹ÚX3s-äuܼ7'xñEæö‰4d2Xe£«޹Y1ê0s3•‚Ì~©ðhcšI”6‡Ç-¾ß Z'~Ò ¡Oâ(¤ŽšKt‘ÿÙ/„ê:£‘]¦Ðš$‰/Ü ß^ƒæ¨ªØÔ©Nw¢)e%eS‚ug{°Ícþ‰KR+"È~ª'.JorVë”I“6¥t¤Ð9Cv®ð˜ÂϨM4jb'΃é1ß›ªm'ÿf5šG³±Â†F$DÎJ"¸x|*7ðº&¶™²4ã„L·dc”ãpž¯}…È«ÅC|¨0dš˜!cŽÆp¾‰,SçÌݵ§C{í®­Z±“F®×::ÛCå=LÞP¬+.ÉŠkw`ÔÉi,윪?ÔxXÝ)êsë&!À»üÛ ÿê[+‡4[¤8wMx^Ó¿‹ô5Ë´d?ºS몈ݑdµƒæ(¥HRa±)öéø©ž»©±‹]Gç;ÝY"ÛhÇôÉÀ«È|@¢{æ|´ÜßM ´OHÝ)`Ôe,·‘x_)ªh'VE§ÙYi½â,»6.⻯uô]Žk@–Âz¯Æ¤Zpħ«ŽÍ*-Ç€d¡îÇ“^’ƒ¥ï0-…Py¿šK’`!“ÌM²ÏÒàð·#¢tعl¤1Þ;‘$,³¡?4Н+ö^š X†xE%ëP«YÙO]µû‘zV‰Lš )éÏ“Vd-~F^c7ÀTŠ;Ib™+DûˆT9# 4ø˜ŸüçD/ðȼ«Ã+h¾‡jU{Ñ÷ܳ1Ç2屨56È´lÇ’{FI’U8ßµíшÈ7꽫Ü)jÞë'«à^ÑUÏwÛ ;ŽE!jä]d ]ëÏ,ÑaR§én ‡4ŽñVëf_©@k^!â &_ˆHôA.¥ߨ€?’Ùï6}§‘ŠAùô,²šÒ@h'zL LW4¬‹iãêÛ±ñ6 HËÄ ‘mòÌ„€lŠàœA301IÏN1”+VÕÑu©ÍG""|uz6î'Ê"ãzT0º\숻¶(˜bhRL€;ˆ%‚€£‰êat€Kö¬îdN)~Æ<°uãbú¤.Í«nkµ’±,’N8Òîú3­@Å!a‡&RÑï|à‰4XËDÍø|°€ë•­©.’>§ZÃÕ9Mô#׃ð¸ù»mdäýÓøyr|˜Th’bpÃï.üd­f÷¶HwXQDD"Ž3g£‘Ú‹b¯evéÒ +¬YA½”ß¼RÛ÷.vמÖ^ºKUhêœòÞÚLÿžôË”ÊóÉ-Ì4y“›åtKn¡&sU‡ö=Âß×ã…[;ŠÕèÀùƒ”æ©„VÎÆ=¾=”Ã2àºKñÓ\ƒ7ß(;‹(Ô̾k¡ÙÑø %òUZ¸0ŠÑ‹%¸(û– ›0| …“ù˜âÌ×>MXPxŽ6î:ì]PµÞç×ð¸ÆÇ^zx^Q1 BIû2ñ”_ÌÞD6zðçˆ_Âw˯â¥DÍ ¡|Ë#0šf•5ºé‰I™÷‹{²³êÞÑO0w«ëØ¢RÍdKM"J™KꆛPÂÄ|iÕ ‡›T4׿7ØbeF;6•21ç€[`9µ“ìl0V ,7h÷© žâž©jIp 2iåïâ¿Á75M<— Þõm•P¯C 1L`D#ÝçéP d‡…ú1n`+HR$–È– ¡‚„U‚C“¹í¯t^‰”JQWÈZ&—p- r±ZñÅôùÎÍŒ2Iö‘XREÛ½!ŠGÈ u¼Ðnèw„»­£¼ú[ʪØž¨Hýš‡ù Õ–BÖÈ,: ¢OZ<¤Î¤n€õ›WAÉM÷‡iRS­Ìà˜lKxìJÎ pïÛ$7Plîp¯Ñx–±¼r–ÕTŽÇáÛN/DZ±©r¥Tõ9ò.n|UCG Y#ó“²ÀD(Ĩrröüh2†ÄôïâKÏ<ˆW¬•y?e*ôƒ’tÝ·Â7·ßêsµ¥x¢|jêý›WØGIª~2'SæØ à;Hs©=È¢£È¬Æï”/#šñížvsžÊ›¢l`) yWð ùgæ÷\þu rÞ?hïù‡PLñ€§ÿO®¦2 G%]ÂQͼ¬å6A;…è©VñÁú`šÛE‘4æKØq_ù+8H7ýNÆ3ØûJ{÷™¤O<õ1&8¯rÂÉš†fZL¨Í$LPÒ ™—àËFòÞg«¿µ—|y, â$ÄwÏ¢OÞgÙ;Ó†+4ïñ¡Wz1Sg&ªÊ!$ç±DCüf§¥‚MЀ\‰C"xçý ¾k¨¶Üƒ¬²Á ˜öCöûQ8%T /¶~μCþ¾Oô&åô5ûÖ`DQÍ+•­ Ê{ß"±¬ö}B¢mtï_ºmºÆü™¦n¬±gëT×Åq.šÚ.·*M÷º(̹‹ß²a\…d^Âà¶'”ù1ó>&‘ô Þ É “b—yJ‚ „R?ÆÏ(®‹íô¡àÛG]¡pç ÞŽÄï\àaÕß÷¢wÇåsÂÃÓx%<»<ø¾Ö .\3žW#it[à€ðp¼ÊØizWâ(É³àŸ¹ãjñ=‚Þiƒö#öBnR5Xóp4J}T¼ùœ=óÃK ö¤"½ê17RaÉ âÆ³¬“9Âò&ÔÞ÷}4øuµÌÄ“=wƒÔß¡JÌËÆ×´ÌÅ™$÷y©1Èàœ<2?äCHL1Z|™l°C 炬Ɩó:‚}ªŸâ*6‰kÝÒ÷­K%åZ±yÞ{­*ã·B¬(å½è; JD#giç:Ï‹h¶Ì|̾WbbQ‘zŸä;îÏ”}ßwä»SåÙ÷y†:ñ]dM[$ïýœ£µ\K‹ùÎ-it5QF°„&|ö=;ÑæZ»™ê)~}ÿ@jѱE~(¿ôœ¶Ôcš²´‰&oR¼*ðJ´O\Q}•à7ŠU‰Šòz—ÍÐGgƒÃƒ£Gl·'oŽ"yGÙçÞõ.bîËçÈOôžÏâ²B§^ýYÈŸæ_ˆ~T«ôg´ÞÁ0™3ÙÝaMÂÆ‰É²ÑZǧé‰A#Ÿ¸ Yy¼|Þvïµ²T(9y@›3Ù±à7 òÀy1¯aXáÙeXùCsi4N#F|EÂê­uNÅ *ç\’ù.ó‘yaUð,p×Ý/•¶Fîw#qd š76…™”4`ü_‘Ñðm¡3ªÅ‹®j¡lÂ}‘/‹-W÷\½‚COe]„y9Õ¢ôHöIQ‚H”–â^ ƒ|·Ú/8äBªÞb Gð/;ƒ(q'¢…yô·øÍî,§~'˜˜~ÞRE_>ؼZ„c•G™¼ÀƒZÁbé½ú’‘a *rN6²„Ÿ ÝØÚ÷¶qUžŽ6³·(«þÑý–Œ)Úy“+çpOØWPò¼GYþðÇÛVo^ãhªÒÑk='µ„­kžà bÌ{ö¡t0ÿýÛ%joÎrï¯à²–|-¾Mϕן–Q”Cî½æ)7¹a]jã´ÞùP{íõêýùzN¦d:˙ݕ¹3È/ÈãLÛP6\›·Rpv~5Q §c ºl~ý½Õ'ÃæV¸³:»/¦{¼e ÂX¼ò¨D‘1ú¸µ¿ÑÁø”tÉyå)þ&ÀEÓXæñÕê 2Çòµ!WP ~‡Ú.½©Bû2šñUÈU¹$:çW&ÅâÓø#hŸøvø–5]Yñ^YˆõGhéHêßûçT~q€YnÔ+&,ÝóºˆãoÓ8T¥qN¸rÌMñ§˜‹ZÆ ›|ȲôÃi@,dUg:¾ŠZLþËÜçÇ¢ëê@b–!ZÞ]ÂHÀYœ¡@×_PáNòWgwÅÄXñœV[½¿ _¾s:Èæí;º ¾ ðŒV~o†ªwÉ h?oN@ ûÌᡯaç©^fšÁ‰™‘Ük¯EPf ><(2oÂYÎÚ>ø‡>ÂèÔg#eùøÓÜWKþ½ÞÞbVÒç”:#ƒÑ<™æÉKKƦ^¨5,>¹ðÔçĵH“×ÿeÏ%1¤q b¼¿R¾xëtú¼œo‹ŽoÍFÐÔö ïD6!{>c–xú ñ4J¹Y\Eú†éfÒZlæÝwÅÃõ|˜ú¶Êaxí8úzu§íØ„ àØ h…Ï _’q&™u ÉÍŠ,½…ä× #Ž'&ªJð¡sÀK\–žŽ_ ¼)ÌaÉyŸ䥆Û«<+f…øÊ“ÆX;¬ð}ó'æîY„O‰€zAK‚l;@ñµÄ2àÜCãe ›µàó·Ý{iòR‘ÚyK;~1§Jd´oª âŠóí5'¡P!œ¯|D(–"Þ˜ÇÀ†@»çf±Œ¡A”ëãáµ¢-Þ&]Ø`W‹és[±Pú¤R¨Õ’ò&<+üA:ûÜ%¿vš†ä1¦µj Ë”¥c¹f–½%©—ÜyXÛT'íø˜íEê2Q©:ÊùÜ:£ÀßãÎm8ï)ƒÕNª½I– {ƒ÷ƒÚ¸kÍ!h—óÄQ6Ƭ+¡Ï£n$ +`íÐË$J>ì ᎃ@¾ R.2Êüìœõ‹ ùDÈØ8dVéxGÇ™—ðe±÷ˆó¢° òÞ-=•‹ûäßTYFÏ!Âñä4¸Ôµ}˜JàŒ” ÀÊþé‰+ñvìºI2*dÕuc+ñ¢S&H”èÆN*%¶=²ŽC¼ÂBèÆ:éÝà .{Ó¥Ûk–ôò1ÓçòÛNS(õwU/_JBËE©Œ»ÛrÚ_úâÕ±©‹<³såm<1æ=Aqá\yh‘ÚÐ6â  çØ;믌6¥ú‡>[–D¤ e€-ÿj랦«¤Mïºbó:i6³O^ĵŽû7Phò0¤¦«RµÉ‡¥<¼adŒkP‘ö%z˜ذûÒµò‰Ò‚Tæûƒý(wA×¾¡Œª¿"éï $uð¤‹Oû¥ª5‡;kÃE† z˧|Q}mÙlPB•¡ƒ%E€äKÍýƒõR ÷)¼ -Ì.KM/ç¤/ùaHˆí¿CÀä7;€fÉwBô¤Æ“-¨t…ç¹?§ëg …AÊ ÂŒw«ˆ:ãÙŽcÞ‰º©G8‹«zQX)ŸÆ奴ªužˆç+Öeü9ùlN¯Vøä&nÍľkaÎ-3׈O>+‘Ûè-ª#ûónš²H¯®•Ôž›ëËL†Ÿ»$üØ'?hõÆ|XÜ­Zyï¦'“ ¤½"Ÿ•r$‘«0Ïaf¥ž‘|vCðÏh|HTïÒb–cУ!!{ÚüÀ,‘kŠ&@׫LæNÇ:ü"óCUòÌW½VöñêÑÛZèüË€ÕL¯¥æ`„Z£Ê*Ÿf¤|b*÷¡É˜6/Úsÿt‡HVå²ùûŒR Î/?“,BYJÙr±9Oh,û0Óè°žŽ‚M°°™ÄYuß]ðÿƒ?BÍ£SE¹‰pÒ«÷t<´VOf’¢V*‹CÜ߯]Eйz÷ûü¼Û$®GšîÏ›EZ/œÏ8·„ð&Êt6ÈüÜH» ܶ^C é­Dæm­;SÈvQÀË¡K%¤2ÒY‚ôXùà³WÆø£ñ-¼¢(s•ˆ_0ùK,që°¸ê‰dìç˜u¢³©ºËxq¢ÔÞ*k\©i÷EúûL7ÄÔRñÊÛÅÚø}ªkŸÈLjX°{ÖL~OÄbØ^7DÊ?Ö•BúEc­[ÎGkû?´Õm&$à0ë:Wæù–&•SI’ÖC0'³Êq"®â… áë¥]£•#õ3¢<ûOÝĆ¥½5 ÿ/b´ÎÛpœÑ(uàxëö8£í³£íØ<Þ#Ž%åÂvüÏOÒüZÚ’%_»™eÎ_¢—äXžÙzà‚¨’{T8. »ú+ט¾<Ç…³XÃŒÖ6ðúsT.“y DÊ=~¼€H­ÖK ñK9P`´$ž¹—êóDTÈ&+£EÐ ö’îðÿ¯ ˆ±êwr¿á “ÿH®Ì?Àà`§/ðîií6Uo‘¥ôÏù¬rì‹âÊ[H Ö¨;D3­ÉæËÌjr€èŠÐÃŽub9x]b ®šbÜÅðŸžu°«Y^íø`½®3ت͋$ñ(×ücßY%ŠùoÒõâœP×mxú½ò #Jàx+_™ÔöÏ‹(K—eètŽ–ºÑ0ÑéûbÜà ·à¢#ô+M×#¸9FñWžïêêïµNù÷ðpÊòß_åXÿ;ø^׳G- d#—Mwý^U$AïêÓàI¾RÊ9"Œ5`¡0øòÁÀ6Ш4ªS…\*q8د/ÇÀ¥4G8jcÒj¹ ™˜Â†Ù3`%‚½Ý‡H(íÞ곦.óçûbä¾°z"ÜÜU=o£yÒ$Àè’<ìæx%]Êúú'·Å _P\nZpÏ(ÍaÕ^/ªŽ9`+euËýa' šcÂc®àÜ|TÎÞ^$>Šîp¢HëmC.\m'ï‰Û œa^™âЦº¸ 6á3Ú“^%ñ´°ädM."‘0 ûU(ŽÃ%Þ£{ƒbU·~`$î¸1M0P/4ôR€¤`<1À¬ÆŒî¸÷~¹Å`ú‹‚ø°›Þ“8•N (&M5ßøpœjÎûr~8mU*E9ŠÐ/Öö§‰!¤Œ„ H'|§Û®Ã$çãÜ `#*ÝÿѤ¾žºÄKÕ¾•LÓ-ÂnCÿçû}§ªºÝ öâ '¡¡à™hA6dŽï UQÈn6ßËȺ™2¼0{ ¦úEÈÔä]‚¿àí”ã­5¢¹h—Fë­vä’b0Š m %—,¡ª°ôØ¡^éYÓHx]\ã €¼¿Ð •°Âˆ¡(˜¥÷i8 JVçö«2ÇV”¹r$äOÑFvº<ùÒÅ"48=eæS‘¹”8®ìðÁX<6¬žèÑ)çS7 †¡Õù Ê<§3´ëá]Çc¡ý%i0d:б»n¿b”Üj½Èjòë.hK‚¤Ñmí¥v¨6Ñúø¾Å˜[p nÓýt¬Ñ®ça¾ž¨d9(œÞŽ -å4¢Eò˜^gâˆb§Bïð® ³FÒ屬ƒÂ DXËoV¯¾K»L±*“ã`Åa`hPµ6úÒÒÞu›F”žG·HÎqN›ɼåã]Ä=9xc²”Õq¢²¿…wf™\â8ÛBHyÀ¢=±TøP8·¬M¼Ç­£Úeòj¼ 0ì’Ì‹E»š[&†Bõ¶E lШ!73©qp•Ú—Rj&6RGqÔhÐý¡ñ!í•¶ç~cÁ…Eœ°ËMd©ZÅp½¤Å‘à ¶Dïªl„sñ%øk|u›ÝëXŒ±Ö†_[ç%g¾É[C Bàå\}5G<¢&÷L¹ýòàRÀBMÇl–ªù ãpýˆ$ ëÚÿ€ÖTžûf{‘Dð\ኡ¸n´àóoÉk ‹r˜-$d®DÀ)¿}HgUå‹¢}Ä»ŽÔzg»Ïî§½Ïk0ÐF» {>š©¬m‡ÌÁ%/U(ˆ­íÝG…s´®”Ÿ%óiW‰3â3—å“;ºH¸µ)q ÔÁö eĞ˗p°é4‰K9·ÃS·8„ÔŒy'aæ3 Ð1P¯"ÏNßFWzXƒ;7¾î¬àZ¶¡¨ ¢š»´ì€¯F¬Vº~l}™éuOÅî+]ò¨ùÇì|Ÿ"u½K›¾­,AèÊEýÌX£µJB1:mÝPÈ ogFV‘zk¤ªƒEmð8G+¥äH(ý8£Ƽ-´àý$-!ªµ:3LaÏðËǰ‹Oþ†tŽQæ† Þ™%ȤÁÀ¬H¨„'MýXd.Î0!yì*Sœ”QgC‰bS¿,­h§Œîö˜äVÕ3dÀøÅ}yKŸw]´Òů  \Ù8&¹œ:‡Ãôi¬ULÏçЙ…ä³R–› LpŸ¬Ó ØGªÙ#w·"†û3|Ð$nØü÷~C>k‰‘ž -3~) ?%ŒÑ“‘np÷bˆË4vYE 0hTpY6AÂ<ô­ëÔÌë\«g%&FšÕñµ@éÎ.¿xÎXm!Ô8¡Á¬$ûNÓmmÇ­ÂÔ.DSËPxI8D$—º«+(E.X’¨tˆ’°M¯1d!EšóE™¬\…Ÿ/æ#îÕP>£Íê¼À#²sRÄé¾¹™jß±xû!!áì­(¯Î)M"°ò¤ÒüMé 1B™¡UX½Æ\`Å68îc¸N3vÌ‘Hڥ߇ Qì´Ò¯+VCŠ<qý¹æ@6±­ú8yLB4¿mò‹‰‘$²„6N>ÁÓ\·ŸlõÍÜ€®nÀ@ûzªðz–îƒLЬ¡;Ã0+‡ÍørT0¼« ¼*‡H¡@~šL&êDóõrg\´ÖZeÏXÒÀ:­~ë1¼§.Hóvô!I,Eû#ïKl@ðFBó₨w`ýŒqÜPË}ün ºŸ•Lš¼ÞƒÄ éX‰ Šßj4mÛUËÝ^ã5@o˜+HB¯–¼ú5ÜI=¥gEÐÈca™hÓÝ‚dônpÞ1 ¬m E€0:à"ÈmG$ýQ §…¡Õ3±kˆ§Öàç)lø¤f ¥+«ß”…+ú¦¢m%Ìf‹š“„D#ÉÈV$$ì\S]_bªKišGÞFaÀ £Å9äVò‰LêÈc%» -úÀÌÐó6<¤¹ç’Õæ™LV«76"ÀÛMËæýô,}¬™S>B-X |ÅÀNPÇÁ#,`ðZ¨ijµÝPÂi~•ßãöQÙDìk{‰±u‹}ù/ï°&µGÁ[–&ÙEÕÈðd_ð»y§—mÔÝsJð:Šñ³§Ì73Á*`…K“غus²³ž#"]68æ­¶ú‰y…ˆëxP'Ú¦xêšZTúõ™c¡ÅàC Ö@NúªEŒO)ÞÇ<‹È‡„B—îÑ:Òî­J®ˆd0D˜«äã§‚¦wA6BÅ´«P¹aR"(™eÙ˜ñÁ«<ÿƒ§‹Ö¨pþ•?Ò|HD¯j8|x‹W“™â" .cš/ÊÀñ]{S9rS™9îx\«•ãûµXê~Åëtä¼ÚÝÍW6öÖ/Œ}§Ý~¶?éÅOýÅcÒRZAÔáÅFÔÍû’PršÒºèÃH—-óÎuh+ÃrÀPÈ}9~ÊÒT9%Bvœñ´¶¦qVã ·‹¶ü ß—¯`<)ŸñÓßxþþ`5‡4ù̘-…sù©3b†@‹Q¢“ý{Qúiû{õoíÄéë o€û5K™VŸ`YÀQžPì„wˆt—ìšFä‹&Y¨ï   ¼ïö7£Ó+.¼¸Æ¡wÐ5Ã0©__‰øƒ5¸r9W…N¬éµú©6Å Aq zA¸$þtExz< íJñÓx Á¿?7Ø™8¿^^Ÿ„Ôò³¶# #Þô8ê½7À•+‘Æ•„?2&CRá&)æíš×)ÒöM¡!+®(œ¡ë€ÀU‡8aYÑÖÌùÌ-²¼q,ü·¥+‰†ËÖïã½¶ ¬" >¾hÁ§/¯Žå€v è•$ÒXâ%OeåÍ,&äšØæq›5Vðä‚×&¹µžÛ¯|nÏÞD“Â(­×6]êd~]Â9fÚãu¡F å±}y(h>ìÊr^˜ÑÁʺ|¥Dr[‚&þµ½~4É⇉éõj5ÌÎ̵Ò} áèlnÕ!%8®ØàÏ/•eÓæ«ží¡:ñ©;'ž·Ìǰ§› õ£ö &n+Ùy!i%®†ÕD¾Ã÷%I.RÃjÓÒ8Öæ!!Ù# Ÿ£8±¯i½°Ä¢,ãx’U¢T¤˜ßìÙAD d·}claY(¦quZ€Xx@ž…¤uVË’ÐÄR EY€8…L\Òd©qѸeZîIÄâ[nA!øÏ ºÂnÔ ¸kËØéN7VE62îØRÄ·*¬¼ˆ7N{˜ˆ«‘0SÑÉ LB²×¨P)ér‰ÏÆñÁ ²êÆ—•‡ó«Ä“d,ÖºàOÝz…[¬XÒ¬¯¿$Ùà4K)ó7¶PÂ]:ªoh¹ñrÒž¯µaþc¬Ê1¯8Œ¤wÁÄ·^.pfîï0 E\¡Ùºq³&pi˜8$bZù{‡i›ièV¬:‘Ÿ:èélb1>äÐ~«ç¾|§5ÆFÙ÷éJ²Ši[¤íýº¾åÀèÄÓC"ìbøñÞ=˜éögáè5(LP¹ìh¹)ó~¤§™¾µ›vYd‡:VèöÔ8@ùt‚é!Æ`¤×©ÂÝl2Zö-OlT¸dö¸iý£BN:`%@:cZuã—Ó¡ÌÆ[Óæ–ûALkc8E©A,Ñ4 Àß6yûMFªæ„\e~'©O¦»«q¬E³‡¡¿(ÎX ¯øÒ÷×[ ¢÷Pç5ÖXD¬*×k;ޱè9¯íU㆑ûÝÙÅ!Í`•íÅ0¯ÝB¡Ü¼¾ú¶ukçù#רI–úgÚœHD róeR×1Ä}_$];ô Ë2šÖˆ Ì]Ê=P€QÁEÿèsã Ê(ºŽê¡8©BËJÆýTi3ÔÙà…»IäÎy9—êQ½–P‰ø^QØ‹¨4B!.¼Ô)+ª ŸlKU©D kóØã~Ø¿Ÿ‡ôr«€®õûaÙ‰8b¨Ñ7+ØnšÇ¦Y`÷J8‡÷hYv'±BᎨÕ_ˆàó$tÉy1¨ÌdUóWõëQÒT/m„üÈH‡^Âߎß 2¤‹)#¶D=Ö±˜ (V㇠6Ÿ†Êž‰€?Ók«ÝSed)ÿõ¦IH˜ºÜ\•ê’&R¤Jß>0uÉQI탷mYµ\•4nÔN,aQ™ÿÉîˆÛõ˜†‡@wÁev·•9˜´`j# q®Låøà¾Rƒ6¾#Éúq sÌcÎ&k’ñRËþ¾f¨X* ÜÐÆ 5†»¬†|¤}Uó¾¨QE©Á‹¸’EñƒðîPa‚?tÚÏ þ+:ÌïO@^ ¸‰5o±”ZÔšJ•Hr)°HYÂs®øDB)ê¨A`7û$ ¤¿7Úsk™Ô¾TÊB  x@€äeU;4ÿ6iOv8¾ÝäõóƘ™XÿÇ„eëÔ¿=o(ubÀ ë§/ÈêØª`+•¹"ì x»#¹Õ¨Ð‹âGz¬…;“¥ü©è³‰±'Z…zýÏ–¹d¼uÙ6ûe±¯ìV݉5Ò„Ûìcþrï Ô¬ÙSr?5Ýîà+îÄ$ØOE–¯‚ÜD!¹Þ«:­ãt4²'²ËÃæõãÂNšØè“ì‘(o£“È¢*¨âÙ€ ‡q½÷e³ ¶*ÿ]ʰ½u\ͰGQÏÛüxëñR¯VÌígå•¢s! l;#0GšG™•£`ú$g1+sK‡ÛÑ:ÅÐbŸŠòž¤oœÏØuá7Úc*ÇÄñîç3¡Ò–©ˆ=éßÎ[ƒ8¬§z†OUÈykøH]'À¥µˆo²»í/[ÈG.Zºm¡?éVõ€Cζ‚«ÃMß•3ØC-BF]Þ ®HM7ã/–òˆ!}þXŽ&TxY£Í]uj æj]`_MÚ+ÿàN§FväÝ )ÇÙ/ùÊŸìçe¸&ÅâGjh_ÔP{ |ï÷/ñ‡æE÷çaºÑ4â—´Ë_¦ž”"ùËÞ#,¡»ðÄ—q_‰uÆI,û$õ•Šþ}ñµÃ.Tˆ(¿÷ÒȬš}ËjLÛ(ðö¸ØÖâ»b&ûeê+&R-Î#`©(õD2…Á —b£Kf¸.,Ù/ùÊ?š=yzcfØeýMùªý €Fý;æ‰%­"gá«*ÒÇ …‹jhA ×Úz¶ÖÚØ3¥DàWšP‹[3ìñ–ð¬­"Ý“gE¼!†ž5\+Ô ™}œZшˆzĘ¡;¤ß@ÐÍvK‡ˆP²¯|Þ"#_RP8"5röí9hÐá„zþX0€šÛ#½H4?šñIcv¿ö![©¹×u)ýX,œ =o37ð(PçÞõȤÛàYÐÏhP>;RˆAäOž`°Gljú$_ª[±Q¸Ñp‚ä²H2ÄŽ„*B±ì¥ºËm{¸HoX¤L¦wI„ßÌk8tÞ?Ëu½‡î_Ü`N¤™pC†7ª|¨¾š ˆ,ªCÕ;%äéœJà_9[¯0v$†ÚVý†[Êv«ì§„Àm.3Ø&îoê gƒ>‰TªñÏÙ˜ý 4K¬Þ“´ƒb2]ßTíD~gÍ1ârá¢ð+Ȇ¬º)_F<[;ASw‹IÝâ&á[˜É7Qº1…Æ‚¯7þšØä(—À ' ÚÏY-jÌ"¯WÀ1…ˆÕkµØ ëAß»êD0õLŠGÛžÉs{¯™Û:kú®ècT¬¦6ÙôV¥¯8–V¸·dÍÒÚŒ@Ã&ÀÓÓ©¡|\ß7¥zÞzM¢ƒnZólY™?ÙUy `ý`çYòž5¢^¦…Ôºê›ìxn3ãý¾|!D®8ˆHÎU؇­ˆ¥‚ËLJž\[Œ‚⇻ß5(ܶð1ÕÆêú.ñ$‡þ.’N±öFHîÃEu¯„NLT†³<7é#AyÛ¡µ‹ëO’à2> 1Ag¬EVBPmîÈÙ$kã¼® }Wˆ± n¸ ¥½¬5„̽ºÂ¿â§‘:´f&Ñýí«êªpd¤©U±ÉZ…~B¹å&Ï´uÁ×ô3™¶nzUX* \Vå—gK2êÖ5 äYwÄ—BR—AÝ!À]µ>F)Zgô-Ò¨ÿÕl2RUBâS\[Ǻ¹´…q]§˜E$Š’Ã¸/SƒHMüØŠ¤ºëE(O I§G!)ŒÐùà3~Í'ü„ºEIZÆÕEBy Ž|37WT+ŠÒÞÛ€ˆBË‹Ð.xWŠ`[[§e“"Åïã±s1gn<Ú³NtÚ›R÷YD(ý8®ZŸ! ýåŒÅõß^»EÝSѲ*¿®ØDËï?iAq t‹”ºîA’ݨ ±7—òœ\ÆãNŸ·Q<à5k-P$ßDRÉà È_Ø›çR7–¨tb’£Ýxh¼ó­©“3NŠ ™^Š“0\/@°™ekÝCŸml/¤u+¤®ŸA¨MÀZ ñ„@‚YY5Ô)ŠËjvjÞ×L%R ñªd.ôÓXꜷòXYU<ÖWiú’ÉPLµÂƒ >º3'…äÝÜÖgV)Š,2ˆ=ìö-BMUf âˆ!R¡AbðR½T¦(d'ÑxüÀ|€¥ Šv†Ñ÷rÓ`.oÕ“Pc×|Š8Bò;ž'œaq^G§ŽÔÃ]׳x`óôwáGÏð>:â õ‚„€×cŒƒ·r(·›ðVس߱ϗÃj×YºGóÍ¿7*™ðjªÈ\ìÞÄ'É2/fñPú?•Z/ã3aª#^dzÉ£`f"BÎ(Å-DÆÕ˜}çãÐV€Y”O$ `+b>ná‹Ûuë?Ž'ýh´?n±ÊûäãÔŸº È«¼7r?Ì:dÀÑÇÄmuí?_{P8,غóx Šæv™\£ Ý6Ãá—œ&˜«¹šäç¦S‚ad6þIñmÁ;p°ž*Œ>ådù×zÂYû4w­-åóâ[д 0¦—˜½–ù®ÇüT]®!Ÿ¯nÕñZ¿éµ ¼bn™‹N.z·DÂØ=3ÂÊ!7é%Nn”á`O•Ã$½¦Igý´ò/ 7Ä1›Ô‰°TN9[ö&“nMÌX½5§3Ãð”JMFBy÷>%íëz$å7N*“<8ÙŠ;М-Û÷foµQ„ÝbG¥"CC8£DÄb[cðŸ}ˆn6 ‰q[˜ ÿgÆ=™Ë¨÷"˜9È+ž ¯d}^zig^÷:á:g’êv–J<¸—Í£—:¹JšÏ£I?­DÑó(1ò[}S7…uo3pÚZP@Üdò2‘;^<ž£¬6K¸¤8Š&²ZW<Ò£² Áw¹´Ð.SkP ¡9}T¿ÈçÚLöÞ ¤i0i2ã#ïŠN‡QŠ˜¯/*&缡¹ø lø¥¤ŠL1*Ý9|6•y Üž3Þ‚’• 7Zi@Z4™S5íè[!ˆa”¼£²ŽR›þX;‘™üìÖ˜¦+Í„{'øDNqXm6¢–ʺǸô8‚ð½bÌÍÜ•ç-°ˆýÝFæwKŸ¦Ô$˹Mîº*Ìô–…?ûx0rV×k<4¿çoƒC•辉Q£DbÊ©¨“öÜâ®pŠ”³¹ûåVtÔYúÂÀ›Ê@5+LUüØ#~ì}kÀ©¥áC¡4Aª$j„·ýRÇTxØ0®>ÝeäyÏÚ‡TQ‘÷%gñ©˜¦?JÎÂ)À"ˆáÿ7kÙE ¤v?âùØ“ã¿<§ËÄKÒ»óÓ×xTá¼MúE<.m*Fˆ $vjÔ*zD§#r@´BˆÁSM_þÈ»±úšK½”6ÅêßeòŠ+¾ZÂÕì”°i÷ Âé­ èàb8W%ke0GI}ÖÔ—^M·°‹¼ŽP—-<¾ó£<5Œ÷7òìüÂtÍR‰S|R6EcÊ;¯•ïïE3…È…Ä*§ëI4¹ùý „ë”Qjt«]âð”¾Bq¨TŠ‚jb¼«ÝN¹;ýt¨`©ýMó öóá{Ÿ!§ÍPj•ùÎüä•ñ›¥7“²t4PöùŽ£Wºç):­Ü¶zá݈û8›Iù£Kî¸áJG¼›â\q_ Ó ü °2t5‡Z(f:–Œmä2†Øiá7Þaê_æÿTH}ÚÀh"oŽ  ñõß9áÄ/fë⟅Èñ¥‘nïþŒÕ›×6ìrxÞsxáÏë¯u~ƒ»ýìî7Oài(ʯ Ý4t“þ½ÿP d絘ŒŒAlÓÐTYx–¡HC`ð u!ÍlÔj•R!“žˆ¯¦û[ã‡ôP³ËܸY(«þdÊ|#ûçp{î[~ƒƒd®½pˆýj…ãu,<•“„Æ£ÔWìi¢öƒ?d§ô´­M‚‘ÇYñ¬eÞ ¶÷µ:J=Áð{âûá=±µ[Ší©H•z*~X¢\j%‹ðvU“Ýá² åÔŸ¼O“Z|ûëÖÚ Õ©æ÷Ì£ 8»¾ˆ~Ìøh ZalPw§`*V¥()äø7+˜ˆËŒJ‘B#3ÛnÝ·¢f«z¤ÐN¶aê[*·"Ømí¢ýí“VHýmCvGp;ÅZ0Ñ¡–ªXóéæ*Î%|õÝò=xÂûL¾EÄ\—~|t<Ÿ­ÐgËÀÝs2³ÍŸñœˆÜ6lÉ*tÎ:¥*ßÞ›ŸŠSÆóÖÞô†2©«?®TD[¹¹Ê E”%lùþ×·‹ª<Ä£±{¯å/©nôÐOH¼|†´3ƒþÉ|NxCÉg¸ìLC…¡ ùšnáçžû÷ ?¬zsÈo.燱üá'u£L ò‰ÿux ŸIχÏuÿ‡ï«4®`>ú5›a‰­)Ú‚žjyN5e=g¨ÊsXb9§Á…ÿlp—í‘&ß#]û™\;ÿùÿóëŸüøë—÷Ï/Ö­y´j£÷韮^Qýtô˶›Ññþ¥Ø·ÙVÛ)]–nÁˆìâ{†ŸÈnŠ©%PÒ®ù'ø(‰ƒ:þ£;¬øC¢¼Ûn!à·`wºX®ì9;-hÈd¬2Êâsç ’ûI)oáÆå½<þºüv°0{úX_÷šJÈÿkúã;3xù-k ZÁH.Ìg¤)‡×ªøþãë]bÕ|Ë?zRïðã…}v€ô¿ú÷?-ýÈÎ;Ò¤^`÷ÁÜnFÄÉnè†d­?PîÓí;œïÕAØüèÕÇ_üÅÃÉÑêÓùØTyšT¼÷sù®¯g& ;$)¦“¤ïÞ>Ÿ“è|Ê•á9^_é§ã¾ý­ƒ6:ÿû7.«£|ß1þ;ÿcŽˆüh¦à´`Â÷QÐÄAìµHØì1pKdVØäi»Ý݆„ÿýùõÓŸüÐß¼º¹Ú®ËwlÏæ°pâÿòÆô1ÛT”Úî‘&¾,ÕÊd´¼Ö]@¼³‹ ÞŠ¬ù¸Ñ§p`­ÀãÚzn…ðM¶#Ô ³ÜTaLY&\DbM)læ²ÔLÄe–NÝ54)wêžo̱yÃ䣑@µ1  ÖÈA¨ó¨?™–jøŽÙƒ,¨„}ÂÒýQ$¤hãäXÖ[gŠÝŽwœ³èÓq’‡–ã±AKÅÝÜ<оíàȪ•Iã$ü®5u($޹9a€lÊ 8»:å©!K©˜Î8­«zàîMoÆøÛ€`Ùü™0˜÷ þjU&…–€ WŽÍ3€Ò3¼ T‡-ú*Hyì+,fãÜV9ÃÆHš ‡u¸•=|ñ½ >î!#~ü*¿ŠZh­–Ž­ QÝ‹}òO±Œ/ìÁwôEqÝ+G1Ý£.­úó8Ðo„dÄhèup½ËAQt£A·Bû?ç¿øèAøõo>ú…}áÍ«çG»Ùív=ŒV§1ÚÛÏåÏŸ£½ÿ²©að¯Ãß‹²Ø?—Öýçí±ÒË35û_„¿Èªg\ Å‚12që@!®&¡¶`÷d’º!2áXehÏl{lWW}ë-w^¹Ûÿ;ûÜ›×7W§'8ù׋ÿfW©N:Åf®›-~T=ܽ7áæÎN+ù§Þiö+696ðìÜ{qk³Ïï×húSã2—5 ¾æ ê”ðêZ¢F\¨’Ãè²0Í`3>x3OÜtã^TcÜbáe —ûÇ «`±(®@•~ÓdNvåˆaEx[ÍOÓ©kÍ`Mˆ±£tZ‹08æm±åG˜"tÙHê¥/ÂÄvÕBÒr4wŽHN¢sbn-ÈùÜâ+·ãØë×çO/Ÿn—ÃÓñ©5Rä@"ƒÇ|•¿.7”yFçÁ§(ªo<:ƒU|õÍä9BT‰À®q½ë–­jɸîF ²ÙûÖÈ8f”]&Ê”æWÈú}‹'½oâCp´¹ àáçÍ£¨=ãl7a0ŽI~é:X|;täð}놛ø‡2Â>Ñ1âz *LP‰¥1ç" _ÁC™Í)¶'KdM/îƒ.¸Ñ£‹Ïc|«U2gšaÒö3äN íÌ«4þ™¥v)øè,ë°’Ün=Ç‚•1g€ˆŠõÆÀ#TÞm‘áÄgGòö‡Š3G?¼œqûèÜff2Óf±¹›~Dãƒ;T$I-ô4m2Ýfq·aª?tŽuÈqkÌ ‰•Rö^ý [Ê O·MÇN_ب"ÜîaªWUô3ë“N€½ {|ØÉñûæ¨ßì›ñ‡l̓DšM–pŽ£ÎÏ‹r’«6uÏÇöÓt+ì:v‹èøˆÞ©?»£Í=Ó1;×î'°Ö(ˆMVõ™±«"¬A þ°]Cü0 øÐ}*G¶¡þxmyz¿¾Þ^;E±ʰ×}:d‹(¼Uª™d^‰k±µˆ©ª¦‹ˆ—MIâ,$Þe.ŸÅ§äÂzÑÓGõ¸ù¨&=Å\Q±×hŽy£~„jgXõÓ„ðŽÐßæpêAHá:ëx8Åkvž}–­“O¯†c`ÑQˆà¶°~» C÷„ÛúWûïííz*!-µ «ßœEj{újÎe.þ¸pÌíÙrmO¿o ý¹ápàñÒ¬ÚUÒôeä°éØv%’,¥ÊÊ||o ºÑzü,§«ÄDBL퇌þàEeÜxªí!VLâøH¾ ·‹/¼Î£uά¢m®j3®¨Ä¼Ù6e_¾²qê«VËwØxfÞûSòí;²¥×9_~¦„T‘åUÌJ!Ø÷£”bõ4*£x¹^ÞàÍÛËç×Ï—çëóé ê¿úç|Œ·Ê6M½cWmµRçJòØc:àˆ­J½¯4zs)ÑÓçpfKIÂ.C= ß{¶®{âüŸJx„©´9DÒ8Šº*oÞ<}º]™€äÁ˜{wꜺ¯ê£Ëéáü0ݱ?vQ]X^?çŸSûƒ?ò ±€uJ}w©ÿ+]'s¡ËžOx®&NȤôŠg>áÉÄÿu< H NN)ÍгëwkÒ²*V!þñ'× _ËôàEë¯èÉ ÂöÃD$tÄ“ïqx‰I›¤@ ÝJSßC)p9ŸðÄôÛSóÙÇó'ð’#äoLq'9¬OÇ ¡z•ÛÂîîÓÜš'¦)ÓD:¸ôºÄÑå²ùíÚ(ÑË^`k¤ø9‡•Á˺®m%‡s¸,7Û£{ˆü@ÍÁrîÓÑ!üwRØV)' ³Æ+$ÁYôRààZ•7 ËÚ@J„™÷;û“—8Ã-±¥O¢†‡;WÈ|€« =`ƒ\Ÿõ,Ê ÆB ‹TŽv JqÓH’±˜öÄ!P’2Ö®°†“×Þí Ï“ñƒfœ¬3¹J}æ|ú´5r'Né‹%r*úYè.¶ŽV%­œ†à6W­lªT'Ø^ŒÚäÙýr;­Ê|›Ý›|KZGpЪ¾<èc|Iõ/È qÑŽÀŒ˜‰·­–—Ûû~ˆºX‘sj¨ñ{ JÀz`férmÎI¡"ñ²„*ø„ä}îzg¸Ves`?wx Câ”ñ4ìòC cÇ€™ìŸö×P ¹&µš1휑†Ì¿KU±^¦ ­$èò±…»œ¹7*Â%‹;¡èmeGpƒ&)ò¤J«8úKCÍß÷ &È&c‹NL“’‡Jp¦RÛ"“ÄAä«ǼV¢y}ö Õ$xNôª«®ôËÑQ9ÞJ;–Ñö›ð èÍc¿oЖ”êña8øÈGÐîgÝ0.‚–8žO ßÜSm¿C¶©ë…SZo–/±aa‰CØ*hjˆDÀáÖ“!!§–’yèz¹vôSÊUºBg)W » Z؉°{‰16LÏ&^–UiÎÝVkݾBÎcOˆ{ÆNÊÉ–öúZ-4àúÅbÖ¯U‹Ïá}å=ñê@àefƒDÊ*7·¥¼æEE[û÷ÐÀÒú¨±·6-t5—¯œõëÝbnÿýÔòÊ‘Cß=>ÑÆhî°Ë´ã‰ÈQ-Dlµ D#,g¤4f®~;»E-Gö$ôp ([ÝPn˜‹jU§¨“”’õ­tÉYç´ÝëõˆWnñ’Ÿ´„h‚ॵuÖæíM6àÐìC;°×ø¶YÝÇ-3¢ ’ÌÍ*Å"x|Ò( 'iöcfe»y­Ym<û0ð:3Œ!ÁÛþK1B [j3#¾›Ù»Nà8ÿ]BËnä=;`ZâÌ“©ä‡+ÌXÖds<58ž\Xà!Nòh£}€þðÐ8­È¦ló#e\Y€1“ôô&Áh6ºÃ ”Ôhóí£-­Øhy-çËùN2ž ÛKf%â|IÆd{úW"Ηœ§ÿ`BÆEž*ö·8ßÈS%ïJÅÔŸa{éþ÷¹§9Áø˜švlK¾ø­”^ÌÅÄ”CÜE‘!hÈÚÂô$úKºÜÈü£°È„ ŽÔ·(‚†Œôˆ‘ÌÙK a2c•/'œ¨\#ÿ˜ ý7Ùðç/• ÒO%„n?¬-FÔsÏè .[áÎÝ ‚¨*nЄë3eEo£A–odÉ׸í.ú³tĨj4Sp…vÇ.¼ÙC›êMÂàþlnµ ÁúÏñvy3ºš¶§¨ÉÕ}xˆuR–f¨ì•ÂCtÏ™­+î®i7}¤c!ª¶Š2šg}Ç'ž‚Œ^È _‰`\C¢m1"óä‰ßž{ !àÈO¦ñnb¬ÃmÃI¥õ/Øn'&&¶™€ ¾ê ´%ö6 «ï¾|vñc¦hÿ3Ì!•Kµ¼áÑré”gïÚr·`œ™qÊû8þá5ïWÕǶ\ÛK^à¼Æä'ðº—-e?·¸îyôÓˆª™_ÎÓWœø¼Öi>;¿ãtá÷À”îçîóY–YÖô3_ÀøMT"g IËŠÏÎêXÖó I{¼n!iív6$¼ì/±»L¿âtÀ6V‹Á¼úhšŒ:­; ~¬¦ë‹B>«L¾¬Pd›*5à<Ò™‚ÓÆPL…‘Á¬RâAíH$HK“r\Q"‚Z ³ÖFNõV÷Þ¬Sw ýäýÝ–æ?ðæÊuæd{ßXÈt§n"#»¾d(4böâ,ßqïþnu Òc¸c¥äÞ¤.”e!@—0~j,Í• ØyWVŽi¨e›:É1ƒ53S•.,­#"ÚÀecßí‹‹½·ƒ²~šc7 ?Lû|¡«ãfz¢„‚–{ ^»ð“\¿ÀˆÞ]eW)a` É©à»Ûþ»²\Æó°µ+ Ùª K¢)kOñYŒ{©3‡0qÆWÙ»uwnçëñá^ ðoM„³.kä6¬ŸUwuMõ?O¡tѵm‘kâ«`]¨ ¶F…i ó<ñžȱø}¢ }[ FwsÞmAõÈxîÝ"®"=•¡¦)]䕼¡ä¢ˆHhS­R¥cŠO›Ø«Èör> Ei˜0&<ŸËÁåsžgb_ø¼ ægÕÿát¾©¨ýo«©Z_ZŠÁQuÞLú²APÖ 7ëÏS^ó‹J<ƒvŒÛgÆ‹· žIÿ?¦ê[¾u3e»0M‡§rÉÆ}Êul\(?øÁgÓ.:~¡îlÎ3­ÌÕ¸†^Ä•ãóh«ŽQL‘ëmç@©¼Øã—* ™áÙ ­óñ«Ð'# Ø2²Ì¼V›+“A¥aUî88ônCÈ%E»Y+kðirµ>a¶’C¯ÁÒ(j²ì3-NDÐÃÁ{e­ŠEý8È6þF­*²¼ç•Ÿ_l¨0½vôú´yÒãU¸Î£î»wY¾ãpúéC‘øˆ¯¾3ÿañÃñ->OǼ¸ãÎ=r[¸'÷rUž•óA)Û×—ßêæ V»ÑQ4‹ôž…ÏV³„*}̃€Ao¬ßQ¼zÓêó‡ç/3v÷êI?aRŒ¶+lJO²`Ýl#O¤ã¸*ÊKë9ÿ îw>¬ -!ôBP¿%8¤¢:°‘½l]€ îÆ‚/¥Èb“×,–€¬‘ÆHžöPÎÉw;Lðn}>æf6,…á'£äŽÿ\*Àò‚j¯ËP¨'¦Pì•ѨþÚVße½ã=¸É‚~QÙ7àL*ŠO(®±Ø5J¿jU¢ð”®ý¯sqØšaß`(R踪oÛ€e ãp=´I»—fD_œò^‚¤N.‰–MWâ†_ªÀjÑï1ád垫沜fâ¢Ú¹A{H<ê7!Á}î¤1cߌˆ‹§¶/Ž!ÎûŠ}íØŸßQQ„Ý܃ý¢ÈmƒIY2ÇHìPravRq¶ük/ëVkñºè¼;°ß¼ KƦz7P=YÕÍmà®ÉyƒUq¬üïÄL{ Duz:׃«b‘:¤J¡ =ç›æÄ3/—Û)¼§ßž1‰&N×@Á×õûj”¿°NâÚȲOüÖ±×k³ìˤAöAGA’§ÚÒHHì£X’IË­‘Q•m,Ên䜒ÂÃv•ðíÏÐþa烊‰ë‘UØ•‚ Sw9z†d³v›A+vU&uZCL[¼1}ÌÃË¡“#LнÍÕÐeÇJ˜T5³àAq)âÉ/šE;``9ä5b<,?eQØg˜ž45üôwg”=Û_¿7¥ÈQô}/ïLÈl;k#„£.6C® ?óråà—¾Þ_¿¸yñüüÏÿï®áüÃ+ï¸$­mhÒT¸ö.f¨ j~TBr»ÛÞ:ݼÝÐ- [}p)@¸Ý'Ý{âÕTõMj{ÓàÁPÜ›•Ò¦ÓÒ˜ërØP¬Á¶{ðÓ©Ìf¢j1«uE[œÅ׳"F‘Z,‘uBš²t1[ýZr|Ú,ÔÉH$cDfÚc´ö–ª†"¤sˆ35·Û"Q¡W–×zÝ«Kuu4XÛoˆÎD‡áwfØË3„»p‰Ÿ¦¿ ¡ð[8MZyܦÛé0tjÔc«Revvñ®0z·1©ÉZæôs¹!òJZ èù?ì’É’v8^’4;Z1¢LÙvŠô=‰„žåÜ!-„dîÁw)Þv8Öãö½óÁUaüÃ;¸Ç(ô0oÅéŸï`Ò@$Å‹,yz ¹*¶Øj8âŒûå}ëý\®u ,chVZчõTˆ„’Y&FßK¤>õÌŠá˜ä¾Š”‘­t »ôÅèAk?<®Œ4#ü£|é"ƒµfD“(»Æ¹ æ”ìØØåf@±Ú“-öÄ6:Í•ý’9ë^§±uÄ1Z›±áÉE2l£%Xþ§P­¯õ•Ðõ"Ýߊƒ9>ÄÀ&8œP8Ò8O²up2Ñ~ÅîºZâ¼Wk3å.¼Ðã3Â0--ðâŠÒÏq¾¼¼ ¥ôß—ÖßüðþÃw7/._TÊoÐâ¬:Û^Å$å4T¦Jy¥Œ?"±.ÓÖÚÓ™î°Ûe"Û´»Ì"Ÿ-yi 57ÎLÛ=4 ˆxÈJ#Q¶rz‚ó–H›•È·¢ãä­èÕ\óúŒiÚQÊõJÆtܱ˜36½aŒ)HÇ+Á ¸ƒ¶dˆcVÅ…T˜²ûpVÇäYpa&“‚Ì ŸqIUéÖEcŒ\¹¿l+¼ã_2»?~ £?!ÇÙ ç Ëv]%ç6޶¨vˆåÇœ°T+GxT v+qjÖ7Þã6·ý‰ú¸í<²«Ê4fÁC‡ÎÙlœ¸ÞZ-šä­ÕÜkp[.à¤ßÓ<.ëè/ž´ÆxëqÝÝÛn´Î79Ð9 Z#é? ßxõ Úé½úŠ'}µEa4ù±ïÍûÎú¥ˆÕSQ_伕æ…S2A¤âöž,Å^v.F›îœLæ0Úôt°®Fjè]N£2t?ûÝs†ÛÕ„áÖ<+ž3Ê÷h¥a‡ X¼0‡h]¸ñzð5Zav—'£ŽÈ¸cÖy—Ù4¶!ôø‚|7}É‚À}yKâIÝœûŒìnA¨‘µ™ ÒfÃ1L… =9JL6oË¡ )ŒØŒ¤ÑÎ #§Êâí ³Ÿá¬%#Ò î‹M¨EFÈþ“»r²qÚœˆú{Z&ZDvhMŽÅ¹;cV]ÈѨŒBt»ra= ›ŸÖª[»€y|ê (¦-=T¸S-jä-çFüóu…!ÞÄõ‡ïÁY>œâ¹úïk/N›ëä¾Diçå± zÒYÝ6BhÒÇÌš”Ñ$¦Ÿ,-·¥ãâ¨rO¸Vùêêmdç29œé@¾—‡…N ÎºÐi éD–ÉðÂésr ÂÂÜ`ŽN¿~ÚÙ¾x®¯«­ ù\ö¾Ö4U–0â]Éï7êzu—MÎz•¤•«‡»EضÎòœ†°ßQzî5ƒw‰ôçªr·„Äb-%*e‹-ˆ æ7xV#"Ã1dy.m÷Ð,£‡žƒyV3ÌáÂÊÙúïò‡QŽn•úécfÜÍÉôÞ7ÇÊ*1;˾/B¤½_ypyÓ9K2òùõ*âÀú¦‘I̳(ÛQÃŽV³‹‘U;'þ €s øn¡hâæFX \ßèâYÞÏÛ~šçZÆÅ¥ yŽh‡áò¦Q?q{ÉÀ¦;îÛh¤£œî·ä±ÄžTnŽu*_í§Ž™“gãß®M£ù­ÍP#D\›¿ùÜnOæ/ƒNV1:PÞ¶ZŸšb2ÖÈc4äžæ ±~œåHmä’7gò–þò·O|ìåãÅÙv=»]NmªˆÕº÷ ù~¬çÜ Y Éî¼ÿÀø–e^T³º[Ôj³q]j“°jÏOòe 3¶S¹xy¡·vܳhèý4*†—iXYšÆšvà·J3y&áýñ¤VÑä—ÂJ"ño°P §”¬íܯ·ó½—Þ¾×íÈÁ+&œ8tîðü敱}#â)à‘¥2wp·nà ‰Ç_oõ‚îEƒ†ä¸O=Ų‚â}dÊÂðXIˆóx îòã9×i1ìPQ~£B8áʲ XwK]RÏJ¼ã…‰3Ò8*¶FûLŸ\§H Ua‘?Þ†¿:Y²¹Òí¯!º~Ù¦Hðùö·ùH·lïã×èh/x #¼ï7Ab_‹¡U›º\QÚ¬Pf«#Ü\âÄ ¥f•ÒË~™j“@F¼ò^´ëM¥SÞ{j{KœÈšžG ª-Ý¢ •û£‹H)ÈÆ#s)C$ìSð Å'hÛ¯£é™ó^iE².ÄÊœ’Äå®ãÿCþ:Ž%xav9L: ý£ þÐ=×U_ºÄwø„´CšÖ£ìC ¨ðŠ‘ëj|,¼H† Ü±#þhç6 o__¶™\¾Å=V}ÒVı»Ö”~N¢²`eÀ’‹Î;¿F׈٭ Rá_on~’ pòb[¶'«Ãè¹Þý.J}XRû _etª“u–/¯5´‚!{ŒaƺW߆/[˜ã±3ÐûƒÞ3Ÿ,Ø.þ|-¹Ç?J¾«~)5¥àUÒ£p§ô<ëï-Õ‚²Ü¶¨;¸%Ô¥%é­ñ"[R¯ÎÏCô»ß±A°L>’µ i)œSDçî*az9wQîo›_—Ʊ!sM¹ä]?†=džz¥äÌ—`g©î`.21çfƒ£¾«íÝIçSj‰ôPoN½¶­{”×çS¦î~]äÌb.¯H‚PÿÅŽ°ÏÃTÚÒ±®HÆ4Y5Sò6¾Æ¹´+¡e£ïD‘HÍqY)…2~T)Ë_’¯)'lùèÀÅCP\Ì_IÍh§šÂšÂLf‹ß}­–ú¨89?ý㮌¢xdZ˜ÅTzMÍ”›øx‡­”úÃZhˆ–@¨íà:•cüöy%þm\Û•e“è¥ÏXF›­'î–øåQ2O­cf½7æWù$ãn34l…º²‡l•”’¼â¤Ò:Ór=Ñ…Ã\=lMF`G×éfu‘ÇÑnêUê4³yîF–ìÌN²q‘£ṟª¯-4 ²Ó¶ínOâƒÊÅÕà£äãIÝIJ½[´®Í@‰¼¤û’MÍœ”yo_ "ªÊ›„¼;žyÃßõÍœ%öŒú˜bó±³¹T ¡êûn$Žr‘¯éµ›Ôƒ6~ÇD, íK»Ø˜ Æ¢ «v©í£Qlìp¹¨Ïô†ÖU¬n‘T_"IòUµi(/Î0ÌmzÓŒé¬JXÀVDÿÒtïO+… OK¡ª‹uô,mler´'\È|þ2¿dÒ xlùc‘2éK)¯$** º(+EÒG&ŠLð”%b"zéÉÝØ‹qÆ ÷EØ]³*Ñ¢s(þ"—>b³ZİW‡‘ ûPÝdz[h°3åR"Õ˜y¹DÊ庉­é'—þ‘iÎô f\úFœ_‰ïláuއâEËÈd]„#í¨1É^š»O"ø²4<Ž‹hóÚzѳïáN5a›ú¡ù¼sO ä”gŸ]ñ^ÈÈrnÏ›kL±ý£!þ¿ÑÀòš9¬…DxÁ!°iÍ]5÷Š%²ñ¯»Í¡o»,,IBW­bí¡Å„kVAq!¡]¤1*<†Q¿ª7ˆõ¶ôÒ ½PÏtª¦;œjÈ¿ëþb„o­uûÊ¿:•¹Æotd(˜$oÆå  Áñ‹†„ÇöŠ:nö ÃF;e—ÿäA làh¦–&€#ŽÈ: Š˜»â`™.‹ør[èåê3œ1Y«õwÞ_¿ùz¶Óáçzžþpc/¹?‹Ÿ—›vûEí÷ýoéXjÝ0ÓþÃâÕ?]ÊOÖ.>eüó%_yzø’ãÊõ)Ï´ì¾åóô“ÿô5ÿI¦_K_Wî—ºúªÓ›’Ôʰ„ЄtZ%ŸÌvðì[KÀfUÊ$Á‘Hùó½E‘›å’:ÃD4L÷Ö?0†ÿ–hBVÔÆÒ1;i ð &Ï&êimøWsƒØÃCCX¼Ÿq±0˜ïâ ø¼ 4¸Ÿèqe˜"$8  èÛkƒ:©¡éɆ“ø?Q$ä³øBÖÃtScQ.úêꆭ7ŽŒ ôwv45ÖvôöÄÛ"aÛ  4R —C¥ˆ„Õ‹ŽŸÂï~Ùܶq ׿‰ñM#êiýبZ1Ô¯Põvwôuöµ67¶7µ7tLNö÷ ÷w¶·uÇ»››Â­‘Ö€Ïò„¶û[Bxå‰4z†òË+7 Õ’8>V¯”KÔRµÏsżEõYæ÷ø°8EëPÛq¹î‡s”£Îéݎݯ¯÷‚X:ó7šõŽJ†ÉÕÏ*Ôos¬\ ú ð³5÷T÷€þï¶Ò—+ê8fëCïyz^è±¥= ݧ=M¥Õ®úgé›$­ÔÀü¢hL“NP]NcUæA/AÝDûþ£%ÀZ 9¹XP™š.º’iE“SôÂi•…@fKW/]p ‡ƒ3?ˆ|+²„„Ð#U×ì0”¹0ÍìÏTËt ˆø½2Òv•_@ñWSÔÞ–†ìÖaVžÈšŽ”&@~R¹8z&âì`µåP,Û>ð_ì‹¢“©Íž:½×Ìó¢-z’(1W±Ê…Ô±–§¸žfÒ´($﹜’ìf^kô¯ Y™¦¤‡Eð¡œGqn‚€VѬ=-ãO#KöÆžý3u|ÖÏ4nrÁ‹‘Ó@š¾% ðpvÁލ0k] „í!ËÂv”6[ý‚ä„ía°A¿Sz€3Š»¨?9%l™âh몃A€ZÇ(ßà ÊYÊÕ+kÝò£Ø_4øOÌ‚lm‘Ø^l“®6úO&¤›ô ”Ý#U“W´<„”õgÆâvz@‚§lj"[ðÊxÜ´§Á@Hˆ"ÞæÊfÊw«ÆÖ×,/ö°÷¾ ÿù°Öñ2*:/ mgQkVätTLð³©fIÑV,ë¸fSîâçÑvâ|žÖ–+–½ðœ.Üx÷hÏE ¹Ï 51UpòǾB%åwí)Ã΂þ¾ÕÖ+£.Ó_ ᛕ®€1K nåDÅQ$ëÅüx­ª}sÛ=7‚Q y©!×Vîz{mÒ°3¾•4Ivü UaåPVJú´D—ëã)E£¹ÁùFÀ¶%Å[ª&¼“µˆ¸§üËMjußl")ÄMIˆÓ˜Œà^sÔÀC}cÆÀ§ü|{Éw›bºÞ…óÉ–{˜4ún#WƒKf+º˜ O!ÑH!Õ †3ë#ú`ku+r¬0¢€L³Õ½A®:Ei.M8a>à yøÿ^G—ëÖ™7Ï[ >Oo[’(»Z–Mz÷NÌ!ˆ¯¯ã‚sü¹þض²ÊwŸ˜Ö*VrwWÈòq¢2 Ïî ϪLLK>­ ½=ÖŸsõ*‚è–D-Útâq÷TsAD^ðÚ§+ûw5MHÐm{ðŠ(˜iA(Ι¸3íÄO·á…ÙJ¶:¿¡ù9mÈ;ç™2W;´‹;_ÆžÖ: ÛÜ@µWZpeÀr§,©Ù©N»¶]ÊîV»Ý6†÷=eŽàoox]jG­4×:FÒ„ps¸˜änlŠæ*^ù –))d ¿ r2ãž“çÀÃÇaSdåÞoˆrÈk® ?Þtˆ,ðz@Fsø}ƒ:ˆ€·é›e5‹ù"ú ñÀ>®&¯§c›‘3‰¤„hÒ†>-‡ÏMAÞª€)“Ñ{ý‰ÃhozIÀFË.¶U`¡0øþj~Å6=¦® ç¤zFã 5Cã‹ø–I€EÍÐYxÇM¤Í±p<±SlÛFì iY}ÓWf¡‹“‚û.àîßç&#uZÛÑ7iþ3” !á¿'œµø¦XË9§Gëb‘‹¯„w5º7õôv0ÕJû'ßǽ®9¾q¤ŸIz]¤ƒÚL<^Óäåéúáö‹ €^¯~I/‡§®Ý^Ëöû¡…o¬…P¤hy-æÏÏô¡ãtKjÆ Daß#O!Ç‹ékià>&ŸèŽÿ'§zd¤¦¤šö­é¼èNÿsþ|£~Q{ŽŒÇ_üu^ÀݱÐ-ÐEk%ùqĉ÷öýÂ…ÝFñòè¥ä³…°}Iõ”‡ ˜û¼T „eˆ|ü·Ð¶Hó“Mêokâ¶xÇeµUζ®ï*ëáЂ› …ᆇÐñæ“ozmt)(“ß`ˆ±üjŽ]„ƒÌ|Ÿ7þ•¸ ÛÛ›f(žÑË×µZ1ÝéLˆíe'øîñœ-3øWWЛ{f<&¿Ã]³ÈšC  BЇu™çŠú˜´]džK¸ŽGÁÀèØç5)(þ,׃±z³chGì‘¿ˆJ{.'C™Æ—ÉÊKW짨Z@DÔí•°®„\UTF²$ÑÕŽÌãÒo®E²ð™R¡Õ/ŠƒI~%ÇøÁu®P˜ú®ôlñ+m¸Š7¸µç×âÊ·ë[¡hçµ»v 6nA¢©¾âíØàú´(ÛMΓV/6X¡®®ù»Š>{0kA¿¥²“]:ú>ÍàÖÌ1ƒÜmrü%]厶•6¥:9’ õ°¹ ~ÓVX%˜ˆC×LÙàõInKéï^BV5ß©`©†áÜÞŽây†¦n`7F/Ôp2Ëë”9c¿;,+ó[`[b ˜QX‰—âÄ¿¿}¶c>]܆³ÈNVÔ¢¥*Á‡gŠÔàsl/&ÂbóU9Mü< ; ò²‹$ Ö×?µšpK )ØÙã…Rb ]JáaÂí‚« ›(¼¸Ãè{!¥dÅ›§ÛZ³í ¨õ† ¸sÌ& æ_SÊŸƒiâÕT[2¾8D|Å'<±†h9n‚¨¿!ñYj DuN5üÍŒ±iÒ`QÛMãuÕu„ãðFÐá«hû Xkôz[h¦0Yùƒ×.JObžrg9Õrsáu’w ƒEepe,R.å±Q„/±o,{$ª²%!y‡ÕAXèfÞ Š¤äÔ­—lfᣊ8Oy´³.çOqú€¨Eýüä%ûœÖ¡O±Öq#V¡é>OùTÌ8t>¯þë´Å;RkóÀ`dGnç~ñý¡/T×÷êŸv[‚Ë[GU×hÚçu³ˆü̇µøÕ…5ï}¾/sê¶UJã&˜¼²¦s1vwáÀ eû<{\Œ â.<ÏÒƒ£V|újÛCÜý…NÉ,ó‹B¾çþ|ßò|è÷ÃÓ¨•̯€§?rÊYåE ²p5o­9—1ÛTƒ{3Òñêéázšz»<–þé—/wëú}÷OgKqyü×ý{•Û&ø× 5lË,–­†ùRú|cB_ºPì|¼ù=oŠêoÙ6ö¯Ç„û—ûˆuhµŽ9ÿÊÓ㱸À¯‚®ƒ°îrØ­xÉ ×jT¸.dȦã"c™ï:–â7°¬x‡9ù×ÔÅY¼¸n— ˆ?”'í˲¿l-+Ÿ6@™#:è*!k½×QÉPVʹé êv-]ÄÄCö݆!ìÁÜ<`ê…ôïÓÛž´"oÒ¹ŽïƒsËÁI+^P}uâŠYçšX$‘OV ‰ó¢ÏrŸ}œ1 £js8•?ytG‰ˆÌ¯i"y<ãáIÀUæž&⇗½0íË%4ßåŸwwªŸ±-æ{d5+¾”ºD÷"$¨pƒHÛ;¸ŽíH€3D\qE ­.¼µ~Nº-òÚc¤jŒiþú”ÌÀ•#§ÔDÌ.-UäzÎÚ=QJ òb˜Ãï;Y!{ý²ŸK‘¿°m[ ‰‡§¶í/:šžºÍq!Ût[3çÞVíÃr=¼^êú@å0&sq«“ÿjÜËÄ»4ïNCÈ$<ŸŸ§Q»¿ØêªË$,—Ÿª”N˜šH :]u¼P2ôÛkª&òqÕ%{ìp: ±²¨µ4 Eææ|†ë¢Óα²¥›&Û™ÖAÜ8”þÄï¢"¦$!æx0¼}ìc~ 3ù¯ ó Iæ^š—â‚´ ¹×ÜgÄÞ†|d§¥·á(7]¹Í÷Y”"GåU³è÷†ªiP2}Cï+Y×' û42|ÊHƒÎ»6'ì5„ò´%£cÐ?‘ÈA—smøOä³ëÓñà"‚’=þÙ¢ü±'©h9%¶´ã)ÇUsOë¶ê©Ã«§¿ô‹ VXyÆ_ƆóTvçFN^áãÔÈ8MƒùææôµN¥ #ažÄ¿ÊäÕ+;ñj‘*{vú†ùÝ1êÐG¶…†:3—¾Ëùejf?WÖh/¸‰P¬Ë®Qª‹½4¼M—Ö”Ö[ü2\ÉÌß+öåM‡öxñéçCæ+=”<˜SË6RœŽ…é­,œPVâ³Ú¬„J\šÅ#x­M½Mýð؃0CÈyCIŒà^G¥PÛupPôÝ9VuVð \9¡¹aÇÖšè­n¸e-Ë(&ÑëІ~¡îdJ¿ ã²GTz½Á† GÒ®TŽÝ$lyt_W磦ð’VÄã1r-$ÇžÕvSËŠL¢x…½Ù…ÁÏLž€›˜˜³~ÿ¸ˆW=ÕÐÿ®h?ÿöu³T–"ÀW‘ò p%Š« D§0]†k³Ež_[`Z«ƒ^m˜„­Äú] Ó”s´ßFúÆÌË< q‹çºÜ€6ͺ¼:­ÆÀÊð­í"MqÞMnâÜd¨“ÐCVñŸDVŠ^E4°­‰äf ãEÐúE …¹ôÐ@]T‡†Ýjž0L¸‘å„uZuœItC^ç$‰P8ðt9â!:œ¨çãâá£5<]O.$‡‰Zç™5‡oè éç ‹ÔUÖ»[º4©àÜâ~ƒÎ‹˜3þÀ™cT ·^ ¿¥Å}E¦‚Ø‹9±è%Iƒaq$Ž*@ÃbYœ|qWu`xŸðù=2uØÎÏä)L˜Àîÿšî[ƒŒ3¸9ÂG \ö’îö¡ØÙ·tì4ŽN2È›D»š Ç4šBjaRDÿãaåRZ0þ4¦óºË„±½\Θ{¦ ÚÉÓñ\¶^ÙQ‚¡Ì~˜X´ñ?0·bóu7±´’Y:¾O—9ßÓéUDjZ£ß±3–¿-/ .ˆT ‘AL4ØIS:LXþ[-Ö™„DŽ´¡I Äv]<àX'™·‹Áý Éø\µþ5ò~§ù·=z®|Ë ÐEíŽ 5çŽþ°ÖdGÙSa³TÝ„º›6Ð Ùzùиà¢x ¯B:M™ì¥#F] ö!Õ­i‰rù‡<ÜÞÜ¿IM?‡Ìc’ñå$kŒEd ï%ŒžC¶fRÅm¯ˆïÚ ¹É 1sçm§÷ú;Ù$bá©,øÄÚ° Î[’{‘’ч=C,SÿŒ>u`÷^ªãŽ1v÷.ÖÉ )œ7*ùÞìï”®U¦?‡¿yßGøÝˆùæŽh žžð½Ý XÖòâ‡?^Ëšê¸J!ë!ŻͩiI>(G@¿ä·ÑÎ÷ç#âK~÷#É çßgñL¢>½Œí%{u…¡}}IBÅ% †º¶úh4æUŽLp×€WG|®Už9K¨*JIgGg¦¼–…½-$Ëב¯ Ü@Ãvû#ÚÄûÚIëH%æÿh âÄ ®àA›SО>ðž\^Ty=<’§Z­ò;h?õ‡ù0z=XŘÇl¡\ѯ0Òc! Õ`e_S yç}ä!B»Z¶‚[hWË]^[^nÛ”m¨(•9£{àL¯}ìP¿hW£S ±þ)OíËV—LºÑ£A§ÉMÀÏ~+r/ïé`;Ý|/YZä¢&i`ãù@ÙÿŒo—ã¡{4ûì(H²6Ù™c6îä@é{3Œ§íIœ»Êh0Ä< hÞN8X «þši¬‡¾5ñ ÚÕ2•vµÌåÕ•£r{ïÔ_سõ«Ñ©ÖãC ©þÏ=I[?'¿½ô—ºÃQ¡ 7¼÷…%ƃ^‡W¶e;ƒ&º‘¨!­cƒÂÚ¥/ÏÓö©ÿôhËÞÎu¼ÔÓ° NQcîVt›?«¯Ëèª"-Û±?NÎù(†UΡó7|><\@Î:NÚÒ—kÀ>R¨ÄâcάÐé±dùg×j|¤dtâWXïkßû‹Q#-Ð×!'†Å)µµª&V _7'Ý>Jµ×»¬óz8Œ´t¿Ô®Ù3,v¡N”ÿæ<óyÿ ­0‚NÀÇ[Ú›qúʾ@Åû„¡\rp¿7tÙ:º® ìèc‡¦¦CÔ7 ¸¨pî÷2XÍòEŸp᜕žò…[ŒWy¦£; €ƒ‹ÈÎ}Þà¥W`ÏþsùV[t´o±²néxÊ/>˜<"É87jLñÂ>öDQXˆ·«ÍK´.k;ííõÃÐh¬“Ppbì–ø‚h)fC&c¬QC—uAÛB»ÏXô WP”ÎÔ!¦T{æŸDd–l®ëÌ+\N÷£`†į̂lÄŒY¯pE4³<ÕR{É3pd0;Ѩ’&IbJMѧ¢ARà·¡æNyœÇ{aÞ¿©ïÙßÇ 7g§y•ÿ_ù{všúžot^]¶{ý½·fþÛ³§BJf§XgÔþ JMLLàô ¸±?ĺâëðÿjÍ`ZV7Æ3¡·~«e39u(öcáøm$£v±‰‹Ð@‰¯w榻ةÓ~ Ñc›œ5qÔñ(‰“Šaì›°¯)Îß!¡dˆѱÓÃ¥wˆ°wáÁ 8T­@ÞçËü¿5°ÍZ|Çߖ2ã—^|JŸœ>ž2üÍA)ø4#\t0#‡Âκȥ•þðK…Ù7'èç¹£:×:_0ô  MkèFAØüÿœ:U>|9nVRÝ4¿™¢þ’l‰(Iq‚í'N©VUñ뻈"¨næ³¼ æ­"Á/‚È/óÌô>cÕ@†[F9èÛü¡JÁsÒ\Ž`žÇLÆä’¦¨&!6 rº§BIºmOÕ Ì:t3 ïpŠß£.oVˆñÛÑ"7DĬ‡&B£oE¢›rcÍé´™_Ñà|ü`¢9¯œÌe.uy‰†vÕ/{xóƒ(^ŸfÑ–ûZ~~ÓØy?ºP„tÁË‘)ãÜ›N­GùzM¾ˆ`qÕKîÅnTGµWQ%íÕ3 {2FÕ¦ƒ9ØÁµúÒBa϶„‡‚h(›ç€H Ùà…Æ¤¦S]žƒàq&¨iœçPƒÝ°Æ“zíü#6LP-áÛÉó˜Ø»áòš¶%9¦Hê^U[n!Ÿ‡MtŠ1f¾®A¤Ü¢3í5Ä¥E毳å£H”ú»Wá #†ïëî$ܱÃm›4ÜœNj£¶äKé Å¿8ׄ4—Ër‘ ²±Ã6ãT`¹:;>´„»6){Þüj BÎåEw/—Ùv«òäªç#\Quü@æ÷6mÞ‰–~×»Žùêµî+œË,±ÓúÚ@ê9@ a »©ÆòÄýT䨖mu²§¦Êu¡½¦š{ÍáÝ@À0iªm¸]‚Õ’¡²X}ÐÞœ.oÇ .ÐI±''>Ô{øHl4Kìtoµ$E!rF±c2ÃðùC\Í¥¾ âæÙs”‚çd+娮YÝiJ¬v:ý¬Å±ávqq«XøÕc¯So£ ÆÆé9võxaFɇ±€ûpÖ+†îmäò ]HˆÛiŸ+‘5Ÿ?)œï¥ ¿eˆû­¼›ÞÔÝþáa£ÕœÁ‚Њž¦–«àŸ·ç7³y~qX<Œošç£+½ÉÍûÝ´pC0,âœ[¬þ¸laqj‘¯}y.BñÚqZc¾dr­õ6«iIÍÚíº|D˜CÞ;mïà>h̡ŋ”V>5çÕžŒÂ]ûúq˜xþx=ßä\§E 9˜\ð),4¢¼9ÿËá\!ôE1ñŒÅâŽa#8Ð×5±éB(,zMÙƒD„Üà(ß›oÏ„Ý7SSÂÌZE‰º÷ˆ/ÞîÂ…‹}Rݘۻ"8~ëܵçÓqaOAuZóÌmÇñº/J÷#ܹ«ÌSÕ]gPöºNäî(ØQaB®s$W@£´¼|ázÑ ‚Ò¯P%Y&wxQW©TT,ÅUuƶ‰EaZFúpl 7äO8Pøƒêýz*íÑ9Y¢`$Ô›YŒª¸Šå£¹Žî¥­·Œ´r &ˆ¯?I| ºÀ#¥)×gµXe‘s«·$"Xr” :RŽ›ç&BaT!>"øÔ+5Â67Ôqßî{R&éY*†}F¥,¤ðÎ|%£x—õ$墰cŒZ]|öæbæ;“'éûWÁÆô.D‚vÙ61Ió<žO7t¦Ÿ…û§H[§ñSfý£æèX=Ià*1÷ˆ£Õ8' üÝá[{¨±ÚFÑŒýIWø’nýÓýÒ×äªâ‡kǯÅk]õÃ. jçLºkE¦qÎ<µÛ¶Žݬ€mš“8.,Ø`ç¶ï£f÷î! =} lðöÚ–#ÁwìèVËž@´›UÝyêìÅÓñãéÃÐ] bð„¯Ã/à‡UŠü”,WñøÍ&t’“EÈ%Âl(C¥Úæ# 1õ5?žOª ksÍôƒvk”K,­ Ñ–ègÚÓ™àsŒ[ã»"OÃÅ,«ÆRRÀŒË(¥W¦­Ý†%¡é/œ©ž°ì…EM¤3wLâî¶uêyö*¤Ö.íÙm*²hIiá§¿tºxG°eÞá4 !êCÒ¶f”ü‹ã+L7eº‰ÛÔ`—-fv¤ZG=ÿ#eà˱™Â(˜O‰ÃHkpÈ5ðÐ%W¿þsäØ}ìGV ï;uÝöù«;÷xêýãdË‹ÜýEÞ’pAçöªZõá<ùmÚlÝyÿ”úݵü™,“?eŒ¢W…Ϙ‚oØO9'HÅ y£l!¬ôv,d [®Ñö™¤™º€Ÿù÷e¹\Ÿì6‹7|ÓÚhm1žîe?”Þȼ y×i@ü¢HÜ÷L °Ü êÜõÀWD2¢Sœyã+j-Q1!Ï—ƒVè³#ß ‚61éž?‰ gÙ¶BŠ×pP|Ò²X\/ÌœÀhwøe~‰–z°€‘ªÓö}‚~,÷ÁžµrÛßxuf»‹` Å!á·3‚³ ¥k]Ÿ¶¿mªH?8+›Ñ_†Kk_ÆœáÆœÁ+\ñ$¿…9syPŠÏ='#ÃsñÏpë‹<-ðÊ­ßoåüY¾²ª¯[W~Íëûæ Ú/0èƒ`Kyî)3^`äÄÃQWÇâ\ZFÓKn t]ÚV/)½ýeü¸Qˆy¸tí)ÃîûÜŽ ™ßªD»9ü•ì"ÁKeîYGoæ‡ÑöìVô(Ì7Õ ìÌ™#yÌ÷äƒcÞ÷¢å¾÷õ2©G)=îàýùS.º¸^Tó¢GDZ×c†Ñê²G–ì÷µÑ`{Ð+°Ë~}šà)·ê±_eÅ—);i± ›œ&ä”KÅJ7egz4ŸO´`ÓäMÍ 1tâ H™¨ü÷6¾>jó|û|õY^úz:5>È××?¢ãuª®¡rZ†ÛèÞ‹Jµ ªó1ÄBy/eâSLBÿ®¯Œn`Qqê\«§[ïè“u»O£‘zÕø ˆPÒ2tN+5Ѓ֊ÍaVB›©T‘V‘‘'¸!»¾ÃÉæ·~¬¢î 3ÂÝP$Ÿ²ª,Yþ‡, ñX„% ™òå ,­Íö¥M*»Sfè1—;Á wÌæÇ¶mà–$³³šêú>ö;ÿ\ÖÿÈFõ‰b§Çt&Ú)Ûð1d™Í™Æà1>õÑú•â>œmðÖç7ËïWß/>ZöÓ¥¶±7ÃcÊôûuR±©vû¥ŒÔÅô°xΚQJp#Çv±/ |³7Ñ ¹h$Ü›êFèȬ Ø|ï‹â^0ÚW;è~‡-QQˆ¸‘pE»ìë䎙§7ŠxSGZ8s¹ &'B‘ê^p»!ÖsŒàÆ(¿Ú°¡z›˜Ó9PzÜx`±»ó{Ã$aÑïEp_>yôÅûËŸW?ƒzs¿ÇZcbïZ-ËC£(²´Ä“±¬luÁEP®?Öçˆ:pì¦j¡¬jgŽ_4ÚQ{êýþÉ8à ÜTðz±¦ƒDrE4ÔRïsy«§Qä„áu "ï‘å _Ñ­£š“úå+°ñs,j}Õ o¶Þ_V+߬þlð…䌙ذÚÝÓ°1£Š?]eÊÏ”XR¡È^ôxø }o©¬dÑ <s·>M0ãI ÇV†r_Ÿ¥µÌ»‰p#W3º^WÄ\“¼MÚà´‹éñЂp”ØÎ4‰õ˜˜nS=„×ÅÓËU3ÝÑ€8fžGF¦µ:ÿPñàë¯ïÌøñœ8Üs+W¬Tp,ÀòAï!PÙáåÖ²I^ô˜úŒ¯¸ž¸k•ý×åêl̘]ýhêèçÇ’‰ »!±”aÚ[ ÍF—Ô<ï’Ctù¶§a¶ÀµÛ»å¸¢ú÷m«d„B ÁWÈ…‹ö˜ºByF»%î±J|9<ªØs Õäå)R¡VR¬½$üù¨¢@=5Ùrƒ ^_Kpx²¤à-(QS:¸ö±G|C¢3&?„:“WE¼©ÇZƒ0”s±u2.bµc¶¬¿\-æB©Yë¦Ý ©7 ¶%;‚¨ÛêoAªvòó‹ä^ÉP7Su¯ÙÂ9ÎJ/<)][¸kkÍsGÚµ÷ÃìöHQëJÇM+ÑPÌ4ª]Ôºa¸oÛnѲ£õÄ&#TÊ›mr<ŽeÐJ`( ¼ qä6obÙaõä1- êØß± Q}°ÂZŒò¦ªX4_Íñ ”âÊNhmOœ±Ù Ó£ZG߯¨nB+—}#WŒ7ÝŽycì™)ä§pF°®¯FÍé¼Âìg&rù4òüÝ¿à ðÑ(nuBðÊ0Nœìâhá¸64~æ§+8ªm•j®qѱ!—f~¿ªµpòŠ]>¤pzuò¯%•ˈ”N¯«Û$u¡µ‡ügJšYA=~ÙÖ*ÖË´ŠÕïIu¾-v&keeõŽ57í~t}O!pgƒÞÝP(ülÞwNµçé_èÁ ÷GI][Ùé$[(¨Ë‡ À Gëüj˜³¶À¬ ûÇ™ÿ¬H¹”PfIƒ âÅØI“Ìz™Ûd‘ÕéÓàÖ/Ô²¼,Ÿ¦âüŒRGدYkoÃi‰ÍæT7VÊ-äÒŽeý S™zNj&‚¯TŠŠä0ÁÇCü­ÈOÖ9ª?È™—¢Ÿ2©*©F£¼‡Òvâ¶ýØ…>’E »-6G¸º’ª ªŒ¹©…j.´¼Z¾ˆéŠÎÊüG×ßC¹K%j”%¸OÞOX@ÜÞ~h\ål^š˜qr¿bñuTò=ðc3ÎÉÒW¸)ÛÏŠ\d„Äp´çÕPU sˆŒ3vøuôHr,=ÉI.Û9#{M³o¤1"ïHý¾—ã)luÅæI5Õþ»ÂPY†$ß·Ô¾›õ>ȼf4Üt…+izñàÕ³©…½öci˜;`¢¤ýûŒ’C¹iWû›KÑ4©Qh'¢ÞTÝ~_ZÛsÔP0*k+*MpÛ¿àf ñ’°9 •û7Gá!)QŰîþÛÏ Þ)VAÖFQ©,Y‰1¨›TGéè«Äë ÉW¥ íÕæô“‚N%Ž}zU~Ëf¬ J'ÖÞ1ÅñXS«gT·óQ‘òë|~Êh‘‘™GÒä±nø0·àa<ÚM&ÎÍØüT¸Ž•Æ–É9§s©?MU·ÃEQ¶vB,¯KƔ;”ívµGø?,7’?H›Í‡<•˜lÓµ‘”ˆºd!îþ˜iûy>ë6äÍFIm‘O׎¸CÍÞV‡µe;×¼—Ek5åðÿÿ|ŸY×ç]µµÕ×P‰Çª®¿dȹ»Šî.? 9a|¤åÛ$ßÏÂ<åY˵ÀÖY±Ÿ‘ÛìlßVQŠ^¶‘rÕ5Èd ‘䲺«ÖÆ£®•4 ÷ÜIAJ\B²ËqÞM¸œeD¹rZ(ÞØzof¸jbÊ];N`šÇñN¡ÁÜÐoìªV)„Ö¼GÐ\²6MÇ‹À§m"篟o8Ó¥úìâÝP7F\ÐØîÖÐÍJGªåC\H1x‰Ÿ½\0^!eÑt>¨>|!ø ç=u§v¶P{šâúÚ…Ú—Tq=Wï5iÈ©IúáG¤ — (pk=«¦«ò渗 fXøh:o¼­ÑÔän½£Iª†ÊSmÏènm¢°ñ`ÃVªéVDhä¹!OÚîêJô‰ÑSËÉ÷¼Ë«­p¢zÔ·)ä¸ÊὄL·Rí>%9òhÇv½îÝGÖ¨9b8R½IuA1ß9w(Õù^QÙìJ«ÍŸ—dÿ£„9¡aÛÂ6¤Þ¼öVÚä>nöpƤj¬½âmƒxX­×X¯Ðrez‚÷#Ç™&%Ä Aˆæ~E­@ÛFu'êº?¬5`𙥰¤{n‚lwºéÔöÒÚv¥ F ÑK-¹ƒNkÃ?Øw6Õó€Î1-;]U%ÏK¨æ†­£]¡Ì™ vÅõz¡áCeçkøF/C|f×¹¸é)î“mÜòŠÂÖ#†ï¦`ʆU$»6¯Ä?<u=s<”è`t-îz‡N'‰v쳾黭˜õÉ¢²9¼é‡ÓÄàÁ–H\Ð5×ñNYÊ´ªâYß…¸Sý«;[¨k‰¿™ºb^â3B¨@'ÜO£- ãéžæÌDˆéýh±™¨µ­umTÝôÞÊkAÐ ­QÎüì¦Nçîú ünÝ *–芑„yŒû¥TŸ½¼eSš³›èˆ"m†ÊªKÿÜ€1GNy>mŒ¨cfÓX…÷ñµÜnh/äßò`Å ˆ)6çé3™NÀÃÍØAhRh/1ÓŽdPÊRi€ôº¨} Ÿª"¿R²ÌШ9ªG„÷¤à Ç›QHcÉXNË€ ™äúÖï(óÀ“BT“h¹½,†ìÔI±RU”í¸Õ™ ‚VÎ>‹™Úã­Ýt:é*÷ ›êYСÎÑõ.~ïó¨`0ß¾düû×6ÇìQÖæ8NpÝÁm ÿýÉׇIÄà6\£´ûïûvƒÈÂÝ«<Ø}ê„ËYº~w@Dè"¦ªÇ@TœíoãCé.áâŠþÎÀ5ZôéÖ•tꘚßJm=)"êEšû ¾3 «ÖQò¨¥`r‘ì¾;Œö^¤Ü'»Zò­DUÙ®èPt%–Ó¶Ô=S~g œYù OÁg6Êî?ô²ÔOt’I ¶¯YB|»sëg>á|ïÞÏ(§ª\¡ýC(…+2+£$1<4Fäc÷yÈ®B '?‹#½1 ñápp”Õúø¢P"ªRiðÂ]o+k+$=ùcÍš¥PŠy²ÿ¹+»M-äÚE%¶ƒÊñœÍ˜¶—D"ùZÆ2Í& -ãbµƒÿþ²Àx >#žõb {iß| ¯âzW•8SÂw”èJ•eÜŠcÃq«7G>AE[Ò+T˜òjêÂDÕá\%ÕG çËÆ Ç8Y¾C òÍ;£½š—óQ´¤¯*޵à *Uy‚ÜM‰Ë$û{g¼’®ÁGøžDÖpuùV¹/êP‹d%í›ÛNrì—³¤1°‰tÓø@îá òV¹¥²óœHžd'‚ Áf"r$å<ãš(»VíEtdþ`6a ¤qNƒ#ɧYLÓI*DLIŽ®Î¬U*…ÒIcYƒ×ðn•[L Ù±él´: ¥JCÆ.‘MTœG”B¦jž`š'€ø™1’óX’¹Î‘9ƒsžYo)| ¹”XâuÐbñzk=l´ëËþ qyæÊVqž-OY¡Í3n¾JÖ/²ßnÒMø!œ¸±Y®à^‰½×*v wf`Wt¤ýÞdÍ}ú®þª"4*4Á4ÌA;tÖ¹nÂ$_L|mM¯Õ7*ÏN²½=»;˶vUø^©jèu»âÜqMmÖwÅHa8/Ù^d ÚÏ…G)»}‡X¶¯{]ÐüžWÕ ·ÁcÊ¡²~î¨çV3ÊV©+oZu§ÃÔëÖI×Ã7E×Ù÷ÁŠ |‚"»~²ýG»ºˆËÙï8:“~»¡fKµfÍSŽæœø»ÄÛ¤ÙïÚ-˜ñö ˜ÍÚS˜Œë´™ëuž‚h¿ðÞÏ™ >c.Uæ§P8C|Ĥx©¦#37KLÃGX*œb¡¢š¡KÄrhøb;Ër¯Ä»_$x{ûBúî¶ §Ðû™jŽŸ÷%nî2—gö]lTÛ¶cy¼².Ú[±5å]/Ú°àù½˜›ÿôjô ¯VMö"¨\¼ŠeyGA=d&»÷ÇËžÿÌÿÓ–8‹†Îæ?ŒeèÀvÈtƒÆëu†Ö?]j€a?ù, W ƒ‹·sÇØ§ Ýa÷»´ï±ÆžCÁÐP1¦e³|y®y—ƒ‹®2c¹^¨q™˜>½áK×ÐäûÒa¢Á×Ù˜5 cq½&Øg­#<ç©lblYzbcn¥¨§Ì¿c›r‹¸WˆÒ|2t1µãAèŠSáCp± ´ù)"ÓP,Ûš'qŠi›\)ïùëÍ"‘©“Šô £õÈe‚b‘ŽÓrÛ¤‹æ7 %†Ô òo=ž 2{«"„!z!Su"©]W{êåH $If8e #?ªÚTëÀt#ÛAóIr#(RÕºó1L±6å¹Îüˆ‹‘¥ØO½B%>_ÇÀ²X¸š[ð:\eZuБ1¾ZˮՖ4åQW¼vU8µ>í›8vuu±IÆôT«tåAp´›Nû/š` =D{€³þµæ ÍhØl¿MúÚ)´ñºðx±§a\'<½$ †’‘#še8¢êÂåÚ@ó®ý0JÆ_ØTA dzÄ({¯¯ß%N ˜‹7 è·UÀ`ù~O€å "50¨I­j5ZÈ1Ñ11Õ³«QIΤA‹r°& êT*wÃî‚Z½XMšÉáýÛµ0h„†¦Uíie«2JM?‡õTº‚¹U–òÆ7SéPÊkëyhÕ¤R¥zšRãºß¯Y«œK*®MéÔmQž~ jTt l"jÉ’Å †që÷@³ ò»—¥2#Q›ÞÉò°¢>Ãr•R­ß¢&eÑ’½;Äk䣪ÏCÁûÂG¹$!â ˆHx·I©Æ*é•~…êɡЫ]nPMWšzƒ$‘”ŒÑš1R{¬J륪³«}­Ç—;õ*ó¬Wûöò`)½åúJä¢ãqrßscSÊ=ÊÕ“sX•³eµ•’)ü¦†Ž(µf–çË™V•yÞìGåYêLK÷öûß´UE1ÁkNr âÊb]©þD[•ì”sé‡ÍøƒË®°›Â 9Î&^93ƒ›´lð¶Ý ™e1°ñŠ3Ï ¿_¨Zòâ‡Ã†Äìi¥ÎnÖc¯_y5)CÕõ”ú)eÿÁ¨¦b#É£WE÷¦j3ÚÙo ½2~«Œô"]”Ž#~SU¥¿ÈLiS±gäthœ`ÝSœ«HK°å½R†hª2eærµ™V9}v œ#u[¡r©HòU e¨3&Ùá^ þ›Ã÷¾µö||[“4!÷†‰ûïLcEŠ•0lºíþL–hEˆôkèňݩàý{†LY²åÈ•'_BEŠ•( ËtaŸ™^i¢qXcyŒ†NÓâ .Lˆ£q?AXh­/>ûj© N9a£2å&«pF¥“N»à¬sÎ{¥Ê]²Iµ÷¦¸îªkj¼ñŸ1êÔª§§Ó×b 4iÖªE?ý½6À  6Ô=~â'òÐÕãeSyŒ'É)´¿á0ŠmSšõвª›¶ë†#îGz2ÍËÕz³ÝíÇ“ènE–_øã¯æû‚h*(‰Æâ‰dŠÄÍ·C“_·  _Wüøí©™ì  =–÷³Ä¥¹ÖÛýñ|½½|‚‰^† 1nÀ˜²ü CáH4O$SéL6—/KåJµVo4[í®!$Ó§¶X<™Îæ ¼¤Pó–¿åñt¾\owŇǧç—×· Œâ$Íò¢¬ê¦ít{ýÁp4žLgóÅrµÞlwûÃñt¾\o÷Çóõþ|CL¹Ô†^öëd(3Æ lôn‚…X„IàzºuŒ¤ã¤œpÒ)Òdœ& ²¦@ž 앤”(·ÅÖQ¡Ú;µ¶Ù²ÎñQ§Ñ~F³½s©o.ÓrÅU×\oüh»AÇM·Ü¦ $QPRQÓÐÒÑ3021ƒYXÙØ98¹¸yxùø…„ED5‰iÖ¢U›¸„vú7ÿaÖ€AC†5fÜ„IS¦Íðç͇/?þ ,D(„0á"DŠ %N¬8ñð$J’,Eª4é2dÊ’-G®ý 2lĨ1ã&Lš2mƬ9ó,Z²l˫֬cÛ°‰cKßçâòêúæ(©ÖØÙ;8juzƒQ‘b%J•)W¡R•j5j!ÔAª‡‚Ö    Ÿ€ˆ˜„” $QPRQó 5M2`Ä¥”íÿpprqóðòñ  ‹ˆjÓ¬E«6q í:têÒ­G¯>ý 2lĨ1ã&Lš2m†8o>|ùñ P`!B!„ ‡!R”h(1Ð0°pbʼn‡— Q’d)R¥!H—!S–l9rå!ÊGR P‘b%J•)W¡R•j5jÕ!«×€‚ªM“f-Zµ¡kסS†n=zõé7`Ða#F7aÒ”i3fÍ™·`Ñ’e+˜Xþˆ0¡Œ;B*mlUo,‰I‚$IФIÉ%y$CòIiD Ii    €ˆ„Œ‚Іމ…ƒ‹‡O@HDLBJFNAIEM#–Vœx tô @r%5 -=#3˜…•ƒ“‹›‡—_@PHXDT“˜f-Zµ‰KhסS—n=zõé7`Ða#F7aÒ”i3¼ÀyóáË¿‚  !L8¤‘¢D›=zŽÂ‰'^‚DI’¥H•† ]†LY²åÈ•‡èEç§µ"ÅJ”*S®B¥*ÕjÔªCV¯U#š&ÍZ´jC×®C§. ÝzôêÓoÀ !ÃFŒ3n¤)ÓfÌš3oÁ¢%ËV0±ü·jMÀëˆ ›Ì-ãìØÅEýþrÌÈ[Þ3Sé$gžY¹rgËÓù7FL(ãB*m¬óƒ0Š“4Ë‹²ª›¶ë‡qš—uÛóºŸ÷û‚à ’¢–ãQ’UÓ Ó²×óƒ0Š“4Ë‹²ª›¶ë‡qš—uÛóºÝÏ×W„`Åp‚¤h†åxA”dEÕtôlÇõü Œâ$Íò¢¬ê¦íúaœæeÝöÃñt¾\o"L(ãB*m¬ãz~Fq’fyQVuÓvý0Nó²nûq^÷󋚟P¦ó­È.9é|Öì†Î@„ e\ƒZÐÁVáa'i–_¾¬ì漂j»~§yY·ý8¯ûy¿¿?lœ )ša9^%¿8 ŽŽÖè{ñƒ0‚¾ó/«ºi»~'©Ï˺íÇyÝîçË!A1\õë?£ͰœsËã „"±D*“+”*µF«ÓËEµV'd“¢–kµ;¼ÐíõEIVTm "L(ãB*m¬ãz~Fq’fyQV5-¦Rתy ó"Iª¸@x¬[ì‹ß%%%µ¿WËòáðÍw§eOŸ./o·/?@FP 癣¤T%K:ä ¨¿ µF«ÓŒ¶r~—ÚN—Ûãå!Õœ.ê0œ ÜÚ—ÝáÄÛô§gðöˆ’L€ªr’ݦ&p›Ma Üé–pmg”P$–Her…’ny0šä7ýjZmvG'a¸WAR4Ãr¸<¾@(K¤2¹B©Rk´:½Áh2[¬6­¨§Köü°D˜PÆ!•&ð.u9nÜI„ÉI±Ø4DXôZFIuÞ:c·Ua+»¥Y©(+רW\ÛõÃ8Í˺íÇ©0×ý¼ß€Œ NͰ/ˆ’¬(àQ»¥aZ¶ã~GˆÔð”Ó,·¬3±ª›¶ãS;2NÌEǶ†óºÝÏ×ÈH¥ø'e\H¥u\ÏÂ(NÒ,—@õ‰Ã-i̧O2SHŸ®BDÕ‰ÓYÛõÃ8Í˺í;] OFŒô –žI¡reU«á¹”:>=ó%|ûñÇ_¿þù Âä-θJP=?qü Œâ$Íò¢¬ê¦íúaœæeÝöã¼îçý~„`v<OͰ/ˆ’¬¨šn¨¦B¥<(•'ìë“4Ë‹²ª›¶ë©Eå§y‹lûq^žJç‹tÏ-@FlöIJ\ÅÊëÉêzíª¦¦ ¥ Žëù”–#D=¥,/(ötÔÿ­’®Æi^Öm?OçËõ „2.¤ÒÆ:®ça'i–eU7m×ã4/ë¶çu?/€ʸ#¤ÒÆ.Ž8A”dEÕt Ó²׊U5ª:®¡©¥Í`²Øk\]=žuÄ_ß&*Ø2Ù62»l"±cjמ}@r%5 -=#3˜…•ƒ“‹›‡—_@PHXDT“˜fIÏH¯>ý 2lĨ1¼Ä_”Ófø°‹ ÃÄçòB‘X"™¸\(U˜‰ouzhb±Î<@M.0ŠÆ›g}’¢–ÃåñB6@ß{"•ÉÚ‰Ÿ½½Áh2[¬6»Ãér{¼"L(ófñëÚK5Æúg^¯ÿ©5LËvp=ùü0‚b¸H,‘R„˜£Ó£±:- MêáæîÁ£'Î@}p|Ö‚À( Ž@ ñAY=ž%Ö€¢(cz ¾¹£Öã „TB‰´œ+”Ë7ZF¥ö—ɳ݃°{ú÷Ü¿ÃRºí[S*“+”*æAGvzƒtЧo…põy@fAšš Á2yêþf•È*Î`²Ø./ŠÄ©L®PªÔ­No`ôi:i΂`A HƒÅ™ Ò`µ“)TÁdé p¥Íù ªPk´Ÿ÷7­» q#Ä/øÍ‹B0‚b8AR4Ãr¸<¾@(K¤2¹B©Rk´:½R¡Í«Íî€*¤>šB•BßXw„3ª¹Œc¶f¢½{»ž³Ô?²fÿQ÷ 9X*¨¼*ذ\©Û|[·(!YÁ¨ª1ÂLÜñ…ÿ‚ÅAÆQÇI&­ˆÅ1°š¹¦ª+J ‰%R™\¡T©5ZÞ`4™-V›ÝÁÑÉÙÅÕ ›„`•t‡IÑ ËáöŠÄ©L®PªÔ­No0šÌ«ÍîpºÜ/€š])¹¼Æ!•6–›éšÌ«ÍÝát¹q»®è1€Á†HÔ(†s[I ’È*NÜõÇ‹Íáòø¡H,‘Êä cS3¥¹…¥h¬x1•õùŸŸ.«?%{ú"\ñQMQ´cPt tÇ`"H,¹ƒaZ¬ªáÎi&‹âpGaÆg‘Ïìñ& >uW©r}*³Ë§èìêöue91蓶エ D—)ƒûÿ3µ IŠØv´ˆä<¸i0˜„v þßív)jvÝù®ËõŒDôM^¾mÙèßZ¿] Ôýó“B&rN\ʬƒ&,-¤áO–òÇ»½üÆÐ'ï¬tbݨ^åaçŒ8‚É Å4.ë•Øižó¦·ÖGË©žž“8oÑ\’¸{E'ç°Üa·ÀÆ1Þ¬„Ÿ+ð³TyƒLú_ƒZ²Ÿ!äÕAN “¸%Ú\“Ó{MnaÄ=X»Ý½lö 3a¤Ó4y„bq¯>*gM£aÓ?Öè@~nø¿[]G±K]‰âW}ó3©]5¿6ò$¾.l;úÛax~[ž›4û96íÂ|ÓEf¤OÏ,Çdñ m78³SÑA\¦y„;Çñ¬æù¾•mÙsaÀHQ°´êê –·¡Œç„ z±ErìÝÆ[‘6J^4{µ’„2.¤§´É¶aBÒSÚØ\ „2.¤§´±¹@„ e\HOi›ëD˜¼£_ížÉ­Ýî1‚IOics=D˜PÆÅš@„ e\HOicsE€ʸ66Wˆ0¡Œ é)ml® aB™žÒÆæþ_€.¾yæ”ÀÅÄ›ˆöô`Û 0#”q!=¥ÍU"L(ãB*›«D˜PÆÅå÷HÇÍa»îwÓ´‚66Wˆ0¡Œ é)ml®aBÒSÚØ\ „2.¤§´±¹>€ʸžÒÆæZ&”q!=el® aB_‰ošõ>zïfÏïÎæ»ç^8­µ1ÆcÌ͹¹@aBÒSÚØ\ "”q!=¥}ùVYÙ¢Ó#¾ª°t³âc½˜ûp^@fÎ ªh ëË „Ði eƒ?p3‘W·åïâ ½ÄUáÄãÔÛ9o¹a¨³rvn´ýŠÛq[()ýE²x‡#‹vÍ0¶½U|«%Œó×ÑÍ(ñ¶€»v¤ï1´«Â¾íÏnlêoÛ}9yÇDgyΣÍùôTºòÍ4/¾³øÍÄûÒºÃç‡7 àÓÎdÐ:‡Ÿ’svRF½¯¿,ÄË(Ñ÷»ýqÉî 4ã‡ÈÍ—×À†b8A~Ïû8GD3¬ „Nù;S.—¢¹­è÷œr"Èã÷ Tôªêæ³ÃëKÛ|ç|‡Ñع3}C—‡Eå—ÍKp5ÂâãXU,æäŠI©Á”l¸!±@„ UÚØ\ „2.äïßÏîC.êèî¹g‚s>"L(ãBzJ›kD˜PÆ…ô”6¯ìOÆ_¯óƒ“×ÝËù<ìoßìô§äñ‚(É£šÖ‚/ñ{߯s}»awf„£ŒDIVÔcg BÒSÚØ\ „2.¤§´±¹@„ e\HOicse€ʸžÒ™ @„ e\HOicsU€ʸžÒÆæj&”q!=¥ÍÕ"L(ãBzJ›kÒSÚØ\ „2.¤·ÔÚØWï;Ûá“»ÍáûDC®ô”66W–,­=¥ÍÕ%›ŽüéÁ¢ŸsaãÓãfÿÑÊ„46׈0¡É½2Ù*G¼Ê}íÞÚ"L(ãBzJgêˆ0¡lõ‹·£ é)ml®ÁFHO-}h•¢ÿàoÄò°þã¿q¾„ ùü“GÄG3 0sB,ó%Ú×侫( Œ is%€ʆv?z_¶¿ï¿¶¯Ü“‹ßµ^Û«îçVlnn^¦Q°Çê@CžÎ–‰0áélaÂÓÙ* ÂÄÏÞw7~ÙÇ×¼ÛØ÷ðÓ€žÎÖS™la™&„ú&<¥ÿ0Ky>'×F€³Ñ, ˆ0Á›³Ÿ\ë‡ûÏþù§ø­øQÈ/ðçõsüû\“E´?‘ÚKLc*÷,å“5\‰f•Ž»®ÄtÙÅï‡C‡6ì"ˆê™lÌ Ù=¸´ìÜè%žŽvLJ4å)®]>êÔsºaúr†pn,Îm¾0BÑ{<ŒíԕɾCþáYØnI=¬xѺ牵yŸ³Ä{;;¹4íî·GÐYþ>÷^íjRÖp1j8åR™\ ¦\*“« ¦\*“«"¦\*“«!åR½6_(;Æt„2.ª_~Þç¡ïkçÛ“G±œÕb¦á ÿ¦–[xžY…i`Ù“¡VÎêy°ž°`ÌkC0Ñ!À€Ã¿;ÓМЪ+ÔHø¹55àâ±½6o½2â‹o€`Åh¢A­ïŠ/*`xíõ¸*ñÝ@Aßñ(¯©!DÓ±¾15]Üì×ÍGnkÊ–³ÈÎí¬AKΦB[¬Ñ 1wMi9èsð­v š’£H…¢Œ’«Œ r€QÔ ú  ¼5뼦:ƒv–v@Ÿ˜n_'¥à½)‡gA¼Š9ÖJÁUF;ƒâ”pÚÆßþTP‹V؆ ÄÞ‡PÁh+¿(µzL}¶U>ÕÔ„È™´iìæÙ”C¸Ä±¸sðÙ¬“šZêYr¢ü<#<œjŠjxd€"”!‘RwŸwx¤~U‘höø-Ä€¬×"þÜûm|@6¬˜?òµ¦ÖÊ=V5,§'-dƒ\XÁN£ #%’§IM¼#Áž30ð×™qóòê8Š‹üØJ÷‡ªÀlù¦Ô"ê’„”0¼(–*¬A‰åç vv Ü™a·ï-ªÉ-×Î8ŸŒvI5nK aBÒSÚØ\ „2.¤§´±¹:€ʸË;¤2.¤§ö y޲õfo!fK×l’«ZØjÐJ‘JùÑqŒ×–<Îóxç¨ßÑø É8•îRqŒ¿´¹z×gÔÛÇ×u!Ÿü O9E¸õÃoŽ·‡x‹x>ðÿ{¾ãýÁïp¶œxJŽp›öqó¸µ{‚—æ¿ÃsgO&^"L(ãë;Kùö—ÿ_L 2B<„€È! ÿÿñÿ/{ùÍ 2B<„€È!Äsô†³tUÂp‚ä` =šAÍG40].›ÜËÚ‘aæ0¹ötšm•L Áˆ*YÉä5‰@KàQÀ$ƒÐ• šƒçdLýÎ{åÁ¢¬SEAêüÊ)ÄrYŒ38¦J+e˜¤œVÔL•`{‰Ðze[..§JÚÞÄÉ²ŽˆÒM·ÅÇ4–Ù4-=90sâ°j0Z²;Dóªe¸½Ù%o)‡Ûóõ }¶Gâßsß{~ÚìÇ ôϦw'´Žïomˆ~ÑõËüòZS+vÓÉß‘åtøÜ˜ZÅÀ¥}›{§[<‘cauï?ö1ÐæÐÂs—!Ø7þm·nÞ7÷̼Eî|±{"¤ÙËïÛNÄ_&ÔØçŽ"L(ãBzJ›+üš>Õ§r‚Ð$‡žÒÆæÊ&”q!=¥ÍU2.¤§´±¹*@„ e\zJ›«\è€Ó!Ö«i×;Z%#CÍA2 ðqsD¦£­¼½ˆ0á(ãQ’•µn³Æ ¢$+jZ ¤)“µëF!jxܬ—gêð:~brœÄK¯ß¶‰)7T_ÉŸ[GM¨Ø.ψ’ˆ¾¢“¯Ûæ µ5Gûœž©n±Gw~7äöÀÅÕ¼Kš¹GìA 戩‡3c‚ÑnTØp¹ÛF3¹®[Jã-Ä„1bÀwuîÃÎÖçlÏ·hç ÉwÊyœZ›boø‘³{£oh¶ŒÌºñù—¾ŽL”É ’GÑšºb˜‡dµ~1;—ܽî™!‰ZæQ^çNwáR¶ÏJŽÂ›÷¢ÁÓ[Å&«nL(Þuí"BÒS:ÓÜtêFl"\÷I•¬åEÑiÕØG€CeA % ˆ¡Š'×ÓŽT"`–;Zû2 ᬳ~­[“;ñ=¾? ~fÅg½lZ32bÔð[ý¼¼5ð Ó†}Õ]kî­Ú÷ýöÊó»O–jo5à„ÁTÂía‡HQ¥ýÖ1š£ppì1¨lÉ8FÍêO{c«“sÒÍ™+ÛÉ\9-[ðó ‹ÍpÇÁgCì"“ž‹ ôÜ̹ÃéÄÍíò”}m¶Ò=Q“ë˜ctØ'=s8ϳÛyï'W\³ œëM;½`·=iöëèÈ/|˾÷ÍÁKf¢Ã”v_ú MÉ4 zîS/̇žwׂN÷–íÓû÷Ò ›šÊhsƒ”Žk¡1ЏîíØø\l`ê¡W,½'œ{?'ÈN// –x'º~Ö~Ø  aöÞí/»ÄÑ%ãîªÏŸR=Y¡HA5]zJ›kE‰’!=¥ÍCzJgÚ>¡ÒSÚØ\;JÉÍžÒÆæÊ!=¥Íu¢Ä'TBzJgz>áææj*“ëF‰O¨…ô”66׋RrŸDIVÔٯ͇<¬ÿø3ˆ”'%-#ëÎw2$åIIËȺó—ƒç%H”$YŠÔB›\W÷~„Ú Ogo.tG.—ž±óº¤Ñr}ƒ~ŽÃ‚ÄC¡1X½h"|)”¦ô6"L(‹×!ØR1Š4"L(‹«"@„I´Ná@„ eñºDÛŠQ¤ aBY\—"L(‹7¹éD86"L¢õHv%® aBY¼þR]áX „²coqóéˆ0áh,· Ù¹?Ĥ:o¸›ù‹÷ëΑ͂T‡$½ gI«^ÒKtB©b¬ ..>­½²WöÊ^Ù+{eW_Ošä­š}©S|t"ð¡Ã|èÐE¥,œ^¤3T&ws±ãÒX ÂT¨ÙKÙ-¼ùÃõrGU­_èªÚïGÂó÷’­IS˜@¨Mø8±…"X;.£e‰lÃW'J™´%7]h4/üç¼àÆMà”§Kb]Øï©Lªý‚%¸»/3áp_øÿ„=í£jß|Bï̽OáÁ~—ýSQøàÑzlê!¿MøÂ,6y.<¨!B ²Á* މ²êW_þõst'ÁŠåãN)ÂP2 #(–SƒB0’ŽS< #(–K:­0”LÁŠåô0€Œ X>nùŒ g#B0’ŽG9+¹Q!A±|üU³ €œÁŠåãÝÌ) %ó„`‡fOhñžVç§ãú1I8€H"S¨48+n&Aâ"‰L¡Òàìø˜‰Id f÷ry™õ.~µkûÌ¿<ã7½êOqö:?›Ùo®2½ H±ýù@bŸÞ$á>ý5ß~ú×B­Rèÿ®>Q(K¤2x9«T ‹  ‰%R\UB‘X-'pEb‰T/hµŠEJŠÄ© ®.¡H,‘Êàå¯QP$†•€P$–@ËY+p¥ ‰%R¼ü¡jU ‰ae ‰%R¼¼1u*AêP$–ÈIas÷ç÷›Ë4¨åA`ÖŽ:Í –“!PX;úƒZÎ  ƒ¶Í%²øz3F<œ´¨ÃDGr_Bi`×è>$dzzöÝ-ëöϘCY¹jCãäÍãL4hË<ÍÛŸ:ð'tó—?†‹ºtpüÀ‰ =ã!³ýøp•[ÖÿøçáxöYìSê]þ9øõz„«ËïÙÞZÿùoç½|bÎJþïwñdÔ¯nÂ÷Ãüç«sRu½Q4/{UzÅ·òÚQ¥/ˆ’¬|U¿ ôbx9èiêB!„ú4ZCìÄ”q‘ìþ‰{ò¿€L „r!=¥í–&”q!=¥íö"L(ãBzJÛ­aB2 ãó#EŽ5Zô1ã‹;·‡1Rä(Q£Eo\ñ1WÇ—RöÎaÒ͚׫Ty˜¡ƒË€Ä8ùÒ7#4ñDÿ‡ºyò³8Ïzè Žªð© 溶jß1`å¬õŠ_#sÓL·(Ëlöàvo»®l[ò5aas%ŒŸ5ù° Ÿà<•»¢rÖµ›.¾„¤9jiÞñxâg,O7åWñ_û^é»5ÿsVA…Ÿ³¬‡ ? [ß­þ»¹¿GHËòÕè‰×‰t-»E¿¯ÑÃúY¡ëãÛ¿S¸2áØí?ªâªuredmine-6.0.5/app/assets/fonts/NotoSans-BoldItalic.woff2000066400000000000000000006703001500112024600230720ustar00rootroot00000000000000wOF2pÀ ÞLp[‰:…›FÐ`ׂ, œ  ›ø,˜Ú{ ùh6$ùd ~‚Ñf ‚[‰ÑØô¯ÈvöÓ•Q `·G‚ŠÑMA5QÿOÛ­€§Šêj&Ä#ÒŠ¹oÛtŒQ ˜¤VQÿ@&TÆáÌâ_ä muŽ­Õ: xZ'ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ËäÇSn¾™¿;óÿÞÙlÈIHÂa8"‡!®pk©r‰hk[­-DjálFq’f±qI|£,¤@¹2“e$ð]µ(„Ôê µMA8sb[E[Tù®“0èõCbãUÔÊPKº°U]ÄR² $.õeM!¨;‹<Ò xeá\,Aଜs%‡² Ä"’ØVÔBˆ VzÕ«e$]¬­³™°"l[=[Ë›¢x½áPnšÃÆfm‹8Ä܆¦¬ ¸m}ÓÑÑm‘J³™V "ãÆîv7ÃÞl»=Ù?ÀFž 2‹ÃT¤  'C­pGŠ#Û;ƒcLONð´K,œ;Kz™ …¸s¨Íµ®‚ÐYËÙÅMÁ…L¦^È C ¤'ܥѕa‹ˆPñ^Íßjɲ0 Îëú»ÁÒˆéé.É©#½"â»°KÙ.˜ßV¹k20ÍÞ{}üþž}åCeç>Ü$·ä¡ñ>Ïs£{þÁü£y™mœžâX„,xWãÅxo.Ò¿½cÛþ{œÛLRÜõ‚"¸¹G¹ŽaEÌÅüíga ðÉ?Â_Ó)Éãè>ÑõÙ$xZM©‹>q) J§åéÔ²0ÂËØ¾xƒI6ên[+_}ôÈf›dQh³Ófœ+QÒS+î…s\*J‹¡5nyôÒÁ¼°Öó ß/ò´AnÍ_x1²†û¬ŽÛµ8ŒIäßN–…aH¾ùov©wM·Ò4M"ÿÝÌcÒÇrúlázÝýv‚ÊÜòr)(ÉÛaQ» A]µŠAL¾ífÕÉr]©¾cFUò%Jþd„ùŽÐ°çÅ_|¤ý牰â¼>ãwÌ'; ˜NŠ0–߃p1_j¡…ŽíÊk} gpÁŠx~ý÷þäòáðnP”OÈì³ïNŸÆ2=¨ÂÂN•>éÚSBƒJCjq{ÖóvÍ6„)KOh¡!gKÊÞ)wfÔâCš ñ8® ºBÙù;ÞòÂW< Pú݇‹ÜÑÒe"óŸžÿËtÏŸ³Õîã³ãœXˆP+P^XËX\)U‘DGB%ºMfرt¯¯›“:BÿöË9ÂKâüû+˜Y@#CÀÏñâ]äA¹ÝÓ–yÁ‹gÇv¿T]BÆGÞ¼÷˜„4ùUó{ëÙï§nB• *Tг–¿öFžÈg*ô‚‹L缞Œ¸Ï;¾ÍâBþ§(„ÔØ­“*ô“73GíþhŒ-ÖåÊí@ØKáZ+tB˜D"ô0Šûí#zÌÃQAˆ1b#¦Z¶k24[1øùÕ ãûmÕ`qÏôœtø¡×ö`?Lgk(±7‚*^ÅŒz6‡·ò=àβ“Qn˜{ÏJeܯ4¦çFbžñâÁ ;; E³zqé]Äeã—v;ÝE‚ȧ°LœÇqœç)ÎÍïy1ÏøK6{β,Ë2Äþ½Œ¢(ŠHÝ¿ á>÷ËÇ}þŠùá;姬ˆõÉÔ@rìü€ª¥ªNDÑC­F™fÅ"V±YËîópwñOÑÄK®"b×ôÞ"â£ùºüTýç¿iå9ß{U2`¹‡€´ñjÈ[!—äî°¢€þÊï|îÏã¦ÿçÞ@BBŠÑ¢/¥Å;Zê£Ôaâ´3íìIŸÛä‹éäKŸhŸ©ló¯Óÿº‰Y²%K¶ÀB[2\;Ž'Ï>g¹ž]®—»íèãL;Ý6ÕvXïYø\óËÍË4Ã'EžöÿEά±kÑÈX°»_X ÔÙíþñd”±úÇ“Wì²Æ#kÆ~û1#*kfŽì”•±ßžQV™{æÔR¤ u! C½¥´T‡Tmªß¿}kׯëD¼›ß;J½ñæ÷^ïKƒ¿_½¿m/ff3hµ©1M8’ùÀ®Nå²(e  Q€‰¢’ í²ÝÝÓyÀ8ÑûÚ÷ÿþ³îy<}¶žß­ÙYyÒûܾˆ7âur r e8ìšK0Àó¼mñÎyvŸŽ2,,,+Æ5æÿˆXQ%•ö^¦JQ¦kc*ºÆö“¦ùs‘…‚ÀŒéPßÏøß侪ÌÜNæäýER~Ù$¢p zY…¤0 ¡0 £±¾ïïÙÚß×l{î4ß Ä0à&J0á0â¦V8ì÷¯³¾[–ElË ·fºùÔðç$Ú 7É6úñðóŸSû+~åœk‹dp` )¥º§4×sï¹âb°dã5ñ–ª]ý ßáw` ²„d9±dÉe£·’dY ª~ß‹æTvÖýýF›4X°‡Âx”F"ü²Z„Â8üÿìð'ž“3Ù@%KQ_ÜàÝÙO²dÉ ¬ˆQtå þ7]ü»ÝQ”_:±.%ÔŸÇq'ØŽÏ]s_÷u_×\×áKs_÷ÛNú’Nfºˆ ý)dIèH»ugAxìO,P ŠuLûó^’^Ï4 í°©µWßíñá¹ÕÙäZ%6ñâRÌ–>Hƒ4 4DÒ„€Uþ”oº—žd’?s\9Éoþ·¥8é§KK—–.]"MI$Ò‰þÇŸð'PHüB"‘HÌH$éÌifîÿ©VÝs®y/3R¢Œ#R"¡ò2ãU=ê)²rC­îŽàrVUƒ ‰ˆù[MŽ!?jvý×Ï|N ŒæÒȹì•ós÷às?»ðà{ïø”Щb).º•}X0–Ƀ€ÿ{þ·ÖÚ÷[ãÍDpYX€%PЉhÐ;‡:ó$(dHâÈ÷z=´u“¦¸výV]•7ôäþoÎLºJ»ü¥ÿmy«‚í`è¶@7»I_†ÒÌ2Ÿöp/Á`)ø&Sàoºù›êëB{Éöï™2L¥î­M¹ì¹g%Ît€\Lœ/¼”°÷ÝVÓob'±%[wº†ÃÙû³fQÂHâ«V×$S&;ÍlöÓ U/5š ‘§Bh ÓózU{7¾€!FÝér$²⨢€E;OÆê*×¾JçæÊ«½ÙÆé…¾ÿ~o‰°1n!Ú§­ò»&EŠ`„$$%ɨgfü·²®óÑh´ &=¨Oã.〣0†ŠÈåO~§àÔÒ2„–k9ÿˆr.ãÀЇo_èà¼P'¤?æ¾a’x€þë:´ðšÃŸãâ `—Ø…Tà<æ/Â?f+XxQ‰‘É·êË‘ªKUVÂÍUž}uŸròS¾¶–¶­€Šoß‹p. Vy=ÄÒ 8wØ`S×óÍÍê9’,C'q`7°Y ‡+À¢½«j,›»ã_“´ü_„Î, ¤Û‚qªºòñ­hª4! ø<Íú!I‘Wì‚“ÿ¿×™'£ã¿-²5xE ¨¶³& ɲýÎ\‚6ÖѲ©$¯—¯¿Ôʦ?óŠ yö‰Ôf`t£À,¿1ÍL¸ûr[Tˆ-bòtzhJº§X$ÇîZ‹ÐҲƼ““Rëxhˆ¶aZ.0TSüˆ3¢LG‚踱òÚR®C À* ».´÷°Í»AÉþ¢þ¢VWd†°sf(ã`ÖæŸ÷7¶=pþU±ZB¶9¯r¥¶“,JÇŸ÷VÓtÏ<9ȯÔ‘¼dâùooº?µ€;Á0Hô aý/}¥s]õ ûŠY€™Â•¾ÛX;>^—RXë¨ÔTÈb”JPp' …÷ãÕ6=%ºÅTVcJV¼¤ün9&%…¨À«Ž% ðrB¸i;ŸÞT«ôr Àuì±ÖµË-a´ëâ=c}flôû5èß º$Ý-Óhj´0£+ÔÌ‚àäh)³Îzí,ÆÇÑ:’ç4:§™sÖdÖ†¹ð² /Šœ\vA\nx6:ž§Ÿ~Ê¥{ܯ»ç#n ·i]Ÿ»Öîiµƒ–0ƒYüÿÏR«-¡pJ¶ë”X£\+WVUOÓbE«Çå0®–À}ÿãÿˆˆ#PAj iY J¶›Ê*ÁP6I)³%ÚYG’óäQ§ÒÕóÊc ªÙîi\÷fSüÊZ÷nÓÿ•jßö½ˆ %¢ª>DÕñ§ô'HªªiÛ‘‰¤J5L®úÓ¸š›Ä}ïÆ""#Ɉ`"ÒJ€à jÀ@©@JŒ Ef‚HB>$%÷§¦$»êRvõ‘\îÁI“’ý[c·üg÷0 ²þ$WO.ÿy×ãfo»'w¯j±ìÓ‹Õßþͦ·ûöûTý·…G§T¥¦rÑ)Yú)—ßM+ ¼ï$Î+Ÿ³3³+ ¥RèÜÍt ãÿ©ªuxtíSj¦ƒ‹Êä9ÓBþ+ p8!†p„äR)f°;¡)¥Î˜-c+»Ö!÷©ökg, ·û¿üžÎK gâ侓gw´–åµ3Á:ìŸ"Ç'ä ¤\ýGGSBRhé!˜.´œ+µ3vBˆ’w_&HÏ÷©.ë\ê„n:®ë<ú'4øO©˜¤fƒ9¥$”S VT:ÿ½Nûí}N$HNS:žªt2óÿ_§ÔimõW•ó—ýùIXW¢ ¶"{2Ï’íáNÔÌ  6© ·öG02.¢˜â†pŠqæpI!“›É¡%CK뤴²üËY.gâä÷¾\Ìòo–³ü‹e¯ðoYVºþ®$2ú:I­a9;Yœ5^•B;­‰æùï/ÆîDI\·]«.ÐãW$Õ€ úø½¾Ò¯3N»›¢e€ èwÛwRߦÉF6 ¡ÿÿö{µtwñNTÿòÆ=š ½3)ÝPÙEWÙY`dÂùiöþ2Õ·}›$àp,‚á‡z’N,oĆšqUPo÷aIì.NAr†Pø9VN8¢¹X@ú?¦ÖǥǥëÊuù›Ò<ŸNÈè«O«d@tvf¥" Ž'ö“…4VóÞ1…û1‰‚ ¨ÉbkÚ†m<ôí¨óÔîljÕX¡iaì…vÙ†JaJ=;‡ ¼mšÚò¼yr XôOu·Î†žÕF…Þ䳪ƒXâ¯y‘!7ï(‡Áì€: Ìk+ omÕ‘MF/ ?‘B"…H"sæ4ûÎÊ¿¤’é’@†Ç`c„F!„ëv?½S÷[}'«žDhþ53ë^ç‘RŠH‘PBB: {ÒÚ̓†`L¶ýìù7€XV7W]A©:sK{Õïü¾çVåœs¯¡]ùh±µ-"ZDD‰¥´±?~Çšiå°¨^{ñ•“Ѥ>9 „ñ$ÑÅ¡Œ¢1bFŒhsm¦Å$òf!ÚÞïÿ—Â|Åó^÷%šÐ䊈H!H 2ð߯ûöïN²»©nk/ý¥‹ˆ r§Ë@é]Zî{þŸ“ð>þòOUTETUUÕU׳»‹Ì1æK4É Y7Cü(†Ç`2ˆˆ ñ9ÿ=„Gµí˧ì„pY$$'ðþóð§úFÔé˜îv¼ƒ4ÖétÈùz‡?5ú#ÁÙÓ®ÔlÊÚ´bcH ¡6#Áß•÷™«ÿï®li÷Û½æ (*((!¥Í$ä©þ?œÎ¼?Úí¸ËÞl $ݸ¶þwBâÍîVUíÓÿEåÈ ˆ‚åJîÉô1#&K³1lL”æmÌ3ß+õÙ‡~Îè3ˆÉžÆäþjŠÁÀ‚‚‚Jê” ñîÕ?±Ùß22y“„ô¬¿Súv'`³ ^Á‹dk;’U“]® Ý2ÄŸBK„)ó?Ú›#üšl‡ôë‚(¦—°n‹—ÍN>~é?u0œ:䇛Ì}^:¬ÜòP›Ûj_ûBêP¨yG ŽùÔ‰v…6>Wh“û_Â#,è#XäÆœJ{u’é’Ù ?d‹|„mó},?Œ ìöÁÁ Nit©ƒ[<Þ‰wÈ^ ­½ï€ÚM~ v—ߨ½â/Aí›^€Ò¢EIV×ùP’õõ7(ɆºJ²•îV¶Õƒ¥C¯(“ô6€r„ÞPŽÒ{€•ãtm€¤Ù™+-Îãôd¾„¤¯ûgHXÙ7Á›÷™löÞÉæíó!Ùƒ$Ÿyè†äGG!ùÃ$w¥àHa 0)Œ¤°Ha? Eåè…UcVñ\dRÖEm”uKY·®JYÏ#ëMýÄêUI¾SLËTNËT¥¾^ÌM“,æè¤KÏÉi“žÿM¯ôÜ1b1Oμ˜çÇ,C¯çs¡Íä 5Ó2 ŸF¬ €3â(¢ ÚÀóÛbFß1¸ätOóíñƒÈÄL,hjv;[Ø @û{¼jÜ-F<€H0ì²°FØÅijŠAü‡STmÙÊV¸µ$l<•ƒö?‹‘ÉÃÎàˆˆJ¥äUJšzÌ[î[)íx˜ÚÑGyÎ'vœñ$%RÉÛL`_Ö˜6<÷ñv¼èéþŠ‘äΔ°»ëæ,†C V3(kB2%•‹žÎÇÊàæ EÔÕb† kïm8âà*{ϸ1è¯,¦9<®…rX-ß?¼¿¹6•`cù2›/–žâröxª„R–åÉN?g ´<¡H,•«4vnè„„¿}’„¨)$e2ý•meþŸW1É!&ÃaÉG§GW#ÑIÂÊrmeûf¾a§ç €f(bäK®Ž@›ïõ<`Øh»8â@/pÉw)iÉ}\í¢¡®–vÀñQfîŽ ( Þk…½8ŽNè…A…I˜…(S玧@es³²B%T r˜äçJ>Èr­äŸ”H¿;|Õxí7ÿ£gølÄ`˜Ö÷Ë0?è¨!åUX&á5yˆ Ðp$Âét¾\ûxõJš# ÜB_N¾ƒ9ù¶Xƒ`»SslâxS0(Õ\pÒZ‹é‘R®²"ã"µ^ËK­/J¡6k&©ÃEy°—„³ ™÷øB¢æôÉͽjd±宩¹ûŽ[ïÞ*49îK7”ö¼vt]ª¼øÓ›švšø8¨ì”ÿu~–”¸Û{®^—ò*€äï{\:;2ÃþÞîNú/½åæÒФçyິ3Û쳦EéCë¡ÊfžÜS“4ÜÜž;à -7ozÁKH;`Ï QqœŒ·¸œÔ¼_9æô¬Õ¬s­éݶUF×ëîùoz±“Êí|µ•.´êËz¿Éo›ÖéÉBx«€²éÍ™27ûj"ÚWz«F˜Á+êÝ;µZÀ8*Cè%_ô˜ÇÖI_€š¾!CÓ¿l‰uÚD`9v•Nên—Áˆ®$6mMi ´OÅç’›ýñuÕ“-w[WŒ}R+} ¯€ü²nU³ãƒûïÚ“ºËüÿгXÞ0o­~ܯ|ç›4÷Ý fX2”ªê¤WvùZ[s’§8Ǹâ¯>m²=þsÌ_M 7åÚ,Y€¿¬¨¯þó¾Ð ÏG£Öl_ºô LµÓ\nóêEZ»W(Šý^mT ÍhdÏ«ûêßZ1vμíλr­ 9Öè•É‹i¦³û "R”éÏ&o"N"õ¸â‘Ãt¼|y¡Õ^Û09 úD_5[öšúÖÚ„ÏŸ!½0þÿJ$ï oúâ¯Úº^;–ž¬-gvlµòf9ºô® –ß;[Ü:±}2¾©Åo¾ðqãZѶFhžôóhK¢Ò.Ü-pÅŽîâ*™¸öĸÔëV®;8Þµ•ÈÑI€*JQUg ¥¯ìô©ïâG>¨¤çY? ¹;Øù¾èvÑ[FrüÉ=Ñ/ш•²¬‰\É» ’‡¼#™ÇØËç:loÌŽ¦Hó@_ä„Ü,ì/¯`Ê„0¥û¸ ‡™#TÍ´jm¼“;äB{D×ûŒeé@oŸol¯ˆ(dr@4;œÁÿhWÙ³Ö á‡ÀÁ¼*›ïö½•vݾ¨¹uŒ6Ptò¤~§)U9p;>1‚(‹ÏbYÀ‹Bbþ·´¬•%ï¶øo«‡ôƒÕ 6 ЧV}Y{iÔ—_A±‹˜ð*$ÖÓØ…¥tÇ+®áˆïÅD”¯nNÄ.>í²í¶Üzå}Zôìƒr‡Ý‹ØÕc´!Pb Û‡VÎY<85È_/˜t§Š’/>‘ÝUïÍ%^Ö8ÏhøÈ˜BÓ4¾H7¦ìú»s_*àc†×üª±X0fÞ‹ò>»02‹ôxãõ3Ù Ó†ª8 ƒžÐ/ÏP5ê©=ˆT+yÖ ËJ+mŒïŠ(½nMj¨¸èûàÖT4Âv Å.˜olZövSÞkAæ<Òˆèýaß³…;뀎!Hò/ÙZ9=¦ÞUº&ÜVíÑ,⛓bebÉýEGÉOÔ9‰øH´žÖ'Ô¿‚c8u4Û\FVR·‰nŽæ¥ h!47ù´³±­ß¨©ŠcJåü-¶ Å9¨esœZ‹âTº-‰ i$Oô9«lÈQŸWq!Œ%˜»I¿ÑJFØqšo펴‚~$Cï'Š]*þsB½4“)h[æ*à:•UK¼Lyiêº6zî”WíôVæ5“¹Lò4/õÛó2{NªêÏaE†rÁ££7s…O ü-G«»¦J]KÿñnÒ mاþ¦°ŸtÈ—¯A~IŸçäØˆtµ`â·r³àk7â°×Ú«ÿ†úI£@ˆ¨Ôuê‚§ÔøÁ ÄJ³S®Ɉ¢×Ú`9Ç7UÎÌÄ‹fðDï.æþ®töŠÆ?gÑ3¾Ï¤ f «·È®Ô^«ˆg?¦ãÿÁƒÂâošÉäÅ™€ÿ_inx]9þ&Ñ÷8òò¿U >~q(â†+±-çå{“íå_8zý™f|;vÊùÞé¢Üûÿ {§o@¬8àÌß< “gÌ eÍÚ?ÑG5ÂK%L7•ä‹úϱ¸ñ;^— ]ÑGbcðãπʸ‡ˆvgµ¹%iÞwùŸÔ¤ïúŸrÝimVvngãs¤›7w÷ïæÏ¼=ûîºÃ²v•ȵ|1íÿ÷‹!¢T„]TZŸñg~ëÒX´'ÄÂ×7ê.ý m5|óÇ0ú§ñb¡*õñ/ýñÈýŽ¥|Ißü#‚Wð9Þ â9µÙˆêÍ\‹Ÿ½$J^v>þŒò<þP •f•¿ëGÏJd ?Ò«ðûEVLÖâ+7Rî Œw¿_æ–~õhÆ×öGÌšŠ@"Õè@ÏžNéú}A%Z!Þ§/.›ð»vü¯Ù*¹ñ'ÓâKpŸ­ø6_&­=½àaúä-ÿ D#°a•m@ðTôY…„pY(èÉ\t;žm¦*ÈÎÑ.(ÑOЦf->ÑÑìÝžË Ð<&^˜7½¸Öü‹ÅŸ„Ëêûþ[òSõ¨LKf­ï¨Ù±ÿ±ýZäOø#ûñ‰oКR3ÍßWÕÊðÒÕ6>¡!Å%i‹,„蜻 ìL¾3Ù?q— ì+¬%*+bÜÀ-k_®»*'¸­Møel’Ô]¶Õõ—ffîóÂ’s»Æ|­·ú7á_ö{XXXT`‘~nŒ7Ü2ák½mH»ùV$âO`—BP[¾±]ä¼0XÓ.}Ë®‘Û(o‰4N ÔöÜM:B·üµÆç±/\îùgéGwm(þ©ý•AéI%“\u8þV6ýow®E§¡Þ¼¢Ñ+ùú‹¢1þŠc³ÑÖîþÈ-™Êfýù̾þ GÔm­«j²ºX+JMØÍ»,|jνc´.þF|Õ~­ß€vjÆëx÷w Ë Ž ‰­÷§7Û^2ììO»Í7ÇÖÍ*ªÎ'ÇrÞ K?µšüãÁ– mãðÜw;y¤Ü‚é|ï uîÓ!I]@ò3¸±·õpš¾¶o<Šy•+¡ÈÈO*Ú¿iUch ‘16ÆÇ,Þ³½ ؘtjEt×?ê n(6fÈ&h‰Bö!ñ[3dHûœiè€^Í °P"ýÀïFi8¥É;3rÿúÞçGâ\OÝN4Âß-Òh3q%çÈ%¥”Eˆ´riÀà!‘@ÞKÔ©†™ËðŒé´œEšéƒ XìÉ\a¿Ö#]’«!é†|¡4rªOøÒ#椕“¨SÃŽA÷“ŸÁöã'…94G¸cbE9]jUœ­UuþG«æ"ºêíÄ¿¿¸/_­ÛÒÅ_®&_ ‰Q±“ãÜŸõúÿÍÑ-ýcýQ’à0ôRó Ÿ-{ùŽïôή^X‹VíºDÅPˆrÔ¢èÇLƒ `>–b56b;öâ0Nâ<®â¶myû Nœ»rãgÒ€0D³ÿ…;Dú;"p›ádëÒV^VøB˜Ž —׬¯Ü6G翇éî ¬ sŽi‘šÛ’ «Õ—ñH³³‡·ø°…Øw?$—¾±ÓˆŸ4Ruy\UݘP“UÇÐTŽó‚ýÑâb.ƒü%…|¡…‘vGµ¯¾†j5ÕSÍ­Dá•.²òE]L±Õ¨vñÕ/¡&5¯UmJ*™Á9Øã¼Ç5ˆD≃”A%œd rp.så²¼VîæAžÄ3x„-^ÈËy-o漟òiÌv‘¯ó]0(xŸù¹ì>$,•Y~‡7¶Ì…#àä+éxû+;!uܹ¯…ºsR§Q³ˆ6V¬ù(E5ÑŽ^Œ“¹S0K—_\Ë×c+vã`”mdQjVÐMËF_ËÚ`‚mZkkb²Úµª¥3ñèTµyå8c¦¯¡'\!5B©çu$Ѧs| 9ÛT¶ûôðë¨`o}É`;‹ª„­äA ²É”=U¡X·©“ Á›AødÒIâ#2A ÞŽ@&º ˆ6‰QÝò,DÕF¸ H¶GþÀTTo°¨Yê £_foÒÒ¬†BüÐAœƒ@êNù`ÈÆ·=, 0ò,8D3²ŠRÁÚV¤.ÂXA{ûS1¸Ù$»¼f ¸“´4$¬ŽM"›gÜ0¥÷æi /‡MÈÎ4vb AdËܳ>¨£5ÜñcÄç3éÿ ÒÖ¥˜ïgtÌ"v¹ðwýÚÛ¸kû3ÄHJK,à nP”¼ ‘pZÔV¡‚ †“ ’ö@RS LêÎ  Ò [@%\%Z¸8\p¹\îv—; Ò ;†A²ý“Ñí`ŽÍ [ŸeOÁ5ß"îZQ H9Õì^á=„ñÂ=+‰O×DýÁHÙS˜¢]¬ âb"=f£ Ã~7)Ho]äÝô»…Š”CínÌÂ:$g×8ó›°ÑP|Iöœ°uMðƒü»™‚Í·y1óŠë›!A/½ôòö5ÌÀ|Ž`ÌØð‚p®G­Xî©+èiÒeÈôU–l9råa÷å/·Da©H gWÚJ~9îP3\Ö¯ì×ÞÐ[rwìOý3 ð0sia¬"“£áá\Z›…e}ór{št2}•%[Ž\yù ô‚Í•pº„ðU›z1•(U¦\³­Úü²jͺß6lúã¯-ÛvìÆÿJ3åësA1gÁ’khv>ùì‹Ía 6bÔ[ÅÙl÷Ý 51ãÆp„PÎ K×FaÙ»vh_z‘ E–令ÊñùBÛtóÞ`0"Š1W«ò {31æ[`¡E+WUÇ”ZpÐS|ÍK¸vë>[Á‚ׇ Dºc7i×YÁNr8Ø•ØîÅTNK8Öàáu&Sžð£ ,s$?»öw†á>s'fž«Îø Î¥Rˆ1ßR½³QX—h/®ëõ½rÕÚŸZ8=ÃKÍ,Çõ8ö­šµå¬÷£VÁƒÚ¥·Q\†”Ïœ²89q<³²sAùÝ€µì0尿Ès=Àø4óØW¾wéw!n‘ST.”G¡1X†~,yõúrµñÕÂWšX}[­Ã+Þ÷rË êKÛí»ßÿD†Â#@ˆ rZkÔF7Új§½ÎºèN÷zÐ'}Öã¯e7Öò«ý®}•j˜¶ýB0‚b8AR4³Þîö‡ãYVæch2áE3DÙñÙ¢LM1¤"C2/OBEê5˜©Ñ,MZ´éҤŠ¸Û“ž²Ú /½òÚo½ó~Äu„ ,Á$–a w'EIE/,*ãU¬¼åRÏì Ûì¦ÓíÅ”Km£$+ª¦¦e;¾!A1œ )šayápƒãÇÓù"ˆ’¬¨†iÙŽëùAµ]?ŒÓû4Ã)¥² 5½R5LÛqk^݇†iÙ(^¨¿h Š6\ø#EN“¶O{²nÏÄ[`¶&¡…M›=_¯?ÿ¤4å?•›Ú^›‹«uè?½…lE+E”¢ÕbÊÐZIåhƒ”mhF¯J´I¿*´MA5ÚiP ÚkT-š3®4¥kNƒ‰–€™l)¸éF Ì6 m 8‹LÃ[ê?ÛF0qq3š´„™M^Ҷϰ„•U¬Ÿ4Êç$ËsD¸JJ° 7=ô ÆS¨µØbýn#?l¶…&1f™pLš)§ÛF©´_fgÓûáׄKMRô÷EL‘¹¬Iæ…';ï/[ bvÙSûË‘vø¯XbïOEÂý™ÓP¿\Šî½Áó{Ö÷4N˜€G ´ŽÀàÓ¢Ó—¥C–t E± 2CØ•1š±ƒÍxÎ’“éÜÏ^<Äμä2oy3%jÂb2ƒX’G:ÊèGdc¥AEn¼'(Æ“6D.Nɸse~Ž7!3:TFÆ?|^šÆóòü=v^™—ã'bÞÌI>Îû9OÔ|œËDÏ—¹Ï'»f¿}P’i'*É^—(Ï)W›˜ÓnTŸ6w(ŸÏV1]ž«rº½Pôx‰Zéó2uÒïêeÀë5É 7‰ Æ[´Ì·‹Îˆ÷ê˜ Ð%S>j`f|]AÚü´£ò]ÿ\¥…—CeÙË£ªØÈÒ”,·éå—'³`E°-n™ÜÂí3áp ¦1ùn±i ù^!´Œ|¿Oh9ùa iùQŸÒšóã’U~VêZίû²óì˧!ƒÿuÛèŽvÓÙfMÐ¥: ¡{t =аÓèf; ¥onމû§ö™¦/tÏÜý¨'í§=³ø@ Ò%{GË¿{\Ëû@ìîØÙ¯‹Wìº%änÔ¤ÉÛoÙú>îYéû¤×q÷)o÷i*ßg|Á¼Ïû–{_ò‹Î}ö¿¸¿,´~‚¤&k¨n™†ÒÜi4 ¹nZNrnœ¶“‘›¦ãdåÖé4y¹mj¦0wN÷)ÍÝÓwfä¾85¹†L}€Á£¥(¸Z‡²€0á€@¢D‹c”K6lÑ­“þ(fÃɘSвXÃÏî`¬®«;\; }jÒâ¼?0Q0±°qðH=õÌÏþòÏæ:~*ã—µU›œ_†L™³äHÍùÛ=Û™6¼q¶‹mvãYŠ„ÉJ+‡ð[X®Êx?möî{$ ˆIÉàävÒs)VbȨq&M›1kμKÖü¶é?¯ÝóH°‘¢û(Êg_Ĉ“P’žùH„ŵe4ô Hi,¬ÒÙØ90\ÜX9¼|.ºº^ÿƒ¸  R•ÛjÔò«S¯I¤ÿkÒL?…-‘L"Á5¡*µ•Dþ9Iæ4QÐ0°pÐ0±“ DE[yâr”(U¯+g¢¢Dû"^’lyаË×öûÆ·ŽøÞq?H`%Nóº°ÿº-Fð…ÛÖUs³<#ÎOƒÔZ1ìŸ{ZŽ“ô½Óÿð2¿”ÃÎk(é|Hþ™øç ÎÇMaÞ6äBÿ5pϊ³y$Œm^’¿Ÿ,gTãÀª wFnͽÙh ›*t‰CÝ#ä *1UÀûA•ü…˜3ààÈå%r~ÛFùnñÎZi½ ZÛ?‹ƒ³H:ÀÒ“¢ï¾²äÍzd\ôÐN”稆 îåÛ6·V‰¨ì“Äp 9#z/›@Ý„c8$0œ JFd¥¬|y$ü”×܉vÏà›ÐÅÎlÕù0épÕ$hõ%‰Òá¨G{W¢sÙCá5šeý±—ûW…;¯ŸÔÀ?Ý‘n¼È“^û²Å”Ô‹^•Õ›Š*ë}­ª g7ýð¤:E§®iªÅ6¶RQ;fr?t•¬³Ñf#¶Ùi½8‹5¬ã"60ÀÐ~áÇ—rÊ„3‹;çBd笻eÎ=ÃÓ4V²àB^?“¸ÓxdÅ[Æ)ߢ¡|ߊíéÓ¬~a…Y×¾®ýÝß1?ço÷ ~Ù¯­_}ȧ¾ð[½ qU³mý $ØC&)¦/K:"káIÑ Ëñ‚(ÉŠªé.ã–=MßÔÏöA”4Ý0-ÛÍ‹²ª›~§—©tËâ9‚DÚµW)•U¨é•ªÑX›} ·I‘H†($G*D#5b €‚Іމ…ƒ‹¸##!%#§ ”AEMCKGÏÌÊÎIKÇÅÃËÇ/ "–B"AÌç.´bÚ)/ÿ®Hv,?í3ÿbI •Öké ¦w-JÁ41”Ãå9®ánáîáùçó¤]o¶/ÑÄÜæE’UÓ Ó²×³¼¨ê¦§y‰£Ét&K3,—ç @%¹T6-Ç­yuÇØÔ]#Й&‰%R•#Š@¢W£Ó,þ³µSyKD5ž¦IùÝò.Œ˜ÄX£ÆoRˆeBicçQœUÝ´ý0Nó²nï÷’Qï÷ózÿARë½ J²¢jºaZ¶ãz~FIVTMÛõÃ8ÍK4G) 'h6_¢\TJejz¥j˜–íÔê>޹6±¨ydɾ (""PB–”yJaáà¨è˜XxDÄä2ƒU.Á+©4ù“[©5ZÝõMf #ÂÔâÆèœzƒÑ7 &KŒfÇ'¢SŽÃÊËF>ŠË=šós²Æ;þÇÉ«unævîæ^,Ä ,©0á"DŠ-F¬8ñäÊS¤øÉÕê‰ÒZmsP·>úêo Q&™¬@š¿+mÒÚuÈèÔ¥[VÏé3ߌ9 @sÖÓ—· @ôäoÉ^zå·Þy_û7O¶¯¡Ÿúó~ÑçÙ/+)3ƒ—4 ÿ±+¾äiØGe[H®2 ¨ò“&šýbŒŽŸdŽnɽіèg+ÌJ<°(yb9Ú «ìâR¸}éƒC)Âqôlgø„4×Òn¥,B'eC\ÌND2¬!¹p”4 øËÆãñWŠBˆ…DgäÖÄuP‘”FªB‹šfIS+·îËú•oq»Lîé«¡>Çžåb3/ÀÖÃë oj—ò¶®ã›Ðþ†&(û|‰É¿² /‚‚>ö‰â¾„”Û ¢ø¨,¥4¨*½*ª«)ÒÛZék½ô·±Á@›ë%Sªt=‡ˆ"E‹+ÅòÒû…’59‡z_³ÍßmUþF„"dJe@õH±*@÷ BTmJÕ«*µ-B«v]£èM_a£îÕ«0XºKŽÎ€ð–‰-”B$Ê¡<*£:j¢6¡1š¢ Þ>paŸ Ÿša8§áhi8ŽÞN&¶”L:•Ó4ùt 3±4¬¥5ÖcKò×{³¾ÈäuK_âR ‡¡|LL¨^þx¡±;õ{7ŠV®tPã–¾ªs¦uz7ú†‡×FCåíb®î±ŠfŒ’0™a¢pÚئ€VÔ eÉ VádHjåE¬Ñ²áÒr”{¼Jõ©“·Ì¾òhI4”(mƒÔQ—¨è¡o4ô§½*_÷{r”1”“æÏ˜SjÉi«õåŠ]%”§œ#O;"™gœ0Ÿç§‰——mÆ5(¯Új7‘~ñ>ùíÅÞ\ë°"s¤£JËÑN+7§;§â¼×EUg®ÃÕäznrnöÄ"3Ñ3*Ÿ¹9bfÞ‘PËb/ªvV{yu³Ñ+k’ÍÞTóìõÖZåï¨[úh=rS¯úåä:p¹c…‡£«Éu׫ôþ”¢ß.ÃÔ óþ‰2ìæ8¡cå8¹³-pf—ªrv·Ú@£§=Ÿç„æ"¥D ßg(ïÒÉ÷xËÂYš0 ³ M©LÊ©‡þ¿c…Ѹ€M¾=ayÊa û»òSþéœñ™…+PÝ—ÎÞ®"°R®´½T÷}#ê°ðkÑãñ=bxoo©† ÜRüúÌßZ„œÞy£¸Åw>]àTë\ÈýÓJççÉÞ]DãÎq8í޿΢˜¬@IàG)òʹ}9Wi¿u ÕUz€R}#à¹RŒÆéÑ_ê÷‡µTg9™³ þ"Y¥è‡ðM¼1y¥c«Ø„ò‡lÝh{™Nl.)ý|é‹1âêQC¹†q±ÐÔ«U91~|^LŒÉ`uEPb*Ú54x¸ÇÀ¼·`aãÜöqÉP¢Ö‹¬v9Fˆ‹ »i·Ð*C+)ð“ùbÎ:Œ{óçˆ{;… '¼è7Î*Z#aë½R¬æ¿\W üfÁ WXEU:Ä÷þ"“‚ Cîý°[‚;’¯ó¯o*×RzÅ*wR¥N ŽCÆÌX²f˾p€ hÒ’‡Ã=`X`…. ÀÐaeû<ÓÑ?œa~ûŽßÑ0á 3¢À‘hNdº´¼µZ tG†?gÝ X4g<ú0Á+l Õ“Ÿ­¸³<­r¤2Õ©MCšÎãœ~Šgì(ËÏÁ7§ÂQ~Ó]í®Û?åŸÝ¿F§y×-a_>e,“ù’¯™Í·,šü›å|ÿÈgµlf'»¥ÊAŽrš‹ýê}¤˜»J©>Š éÒ•±Ì…”­œå)¯‘54|½y+“¦#i÷F×gp˜¢i­^ìK¿þ6È´£Ž{ǸŽ_÷†šã¶F§â•*¢2?ACOþœ¨\ªT•ªžjÕ«õ’‹«^ k\³Z¾=µ~ µ­ýo¸QTþã55Ô߇yC ­´7-]D‰±ã‚KîÙs`ãÄ'ÎŒ2Aœé"É<©G}o }ºáß#L– ¶É³GÀ ç#Ã7”Ø:ü«M”€Lþ›z,¿R%¤ï¦† d!C0y(@ÊPª´óZºŒõè•Ïy¦,Ùrä*£’ç¬<-j]»×çYѱ.u¯WÉy'@Ì”—2ÓÒÉ(³Ùät]y5®êÌÔ¬5¿kW•Ó…3ÅZ¹ i˜À„æ“ ›ÌTfÇ{ŕڶ"þËÊ(§‚Jߤ*G»ª:fäÔÓPãåÖüLK­•šm_XJ!ðØ$ô‚c9Ye—K¨0uZh©½z jšJÉ“fEGÑÄ%Å•©¼¨£W¿bÄô¯F‘q´ðê šh®•6’$·Vn3e`³;œ.sý¦ÝH7ƒXÄ¡J  HD2¦¬ ÕÚþ˃aÓ–m;vqÉ {^ôºw}ìKßûÕ²Û0iël´ÙˆmvÚc/È è  0 @Çq§L8㜠.­®˜‡h"E)4ÔÓ^Ê#S)Ò>Š/ÞùŸ¬“]îE'(Ò®¥ƒ%P4¥ %°Œm½w9«^„—Å×ÿ"ö«ö)”}eÈë Ûbù°žÕv»Œs7»I¯ÿS/½wïÁÍ“Ÿ<;ê„q§÷÷‚[´Û¤?ž¼)ÓÃÁ2cÖ ·Í»oÁÏ]²ÚA$ñ­"ÝŠ,—1›²Õ­mC›ú¸OÚ¿:u÷©•±òÖN«ËªZu«Ë¶"KZm“ëd¿˜ê×Îö[»Üï]ëfwºÛƒõ´ýÑbï.p]Õ=ººk¼æ%×vì^ÏõÚY[CïÝ »h6°¡Mlf+»sã7u‰›™åÍÝÂ-ÝÊ­Þúm]î«¿½;¼ã;;¬ÜZº»Å¹ý/ÎQ M>=ßFxìÇkìqµQóç,fÉòò–ïÓgHË´}ŸÆßö¹}Éœh§×‘§rð³œtÈäC…6´Ã§qGÈ$󬲉”Öü?m¯ÏP±x"™ áó…Nc»a1‡C8EÌcáY¨Œœ‰úöåŽ#f¬ØqR˜ùù”Ò°¯¬÷™ÍbÖ³›ãÃGþ2÷y­~JË~à¶LÁôMœðQ5Æäx­Š-^¸.³üKõ¶sv’æWïê° Ø·Ï2¨`'ñ¤B$“\ )¥’jêi…Ko-g˜qfYfíÁE½± ô€av¸€ssø5|êÚ`ºe~zÔ\ËE.u…ÛB àHƒDdÐ`À¢6xô!`‚9VØT¶Ã*ÍSݬ5ÃÏÑšxÌ“];zè ›§(ƒòÿ¬Tª¢:j Œ"$Q›1&ùÂWfùÆ"Ëìð56ïÞmŽ8傹 RéH:e"›œòÈëe=ÍÓ½¢gxÀƒñ˜§¼Ž)Å•¡Œr*¨¤Šª±ÐºZâÔÓPcÍ´ÔZ[í­(Ë Yc½a[lµÝ.£Æpçðv\àRkØÂS,pËQ'Œ;mÒyrè|œ¡‹åÎY¥Úô?} žxî•7–ܪþ·­TA­Þh¶JÕ–ô2+…$³œdµò„ÄK‚$®ÜÙ‡Ú(wž¿›¨ƒÚ‹ý(ûi¸'{mµš·¾·Ýî&ÞI_¦¥“?˽.v½»=îeïûÚoù(’"éêj¬¹HmuÖS/Éè¤H $„0¢H§ñ¦J4Ó\ -µÒjëm•k¯ÃŽ;ë²ën»?Áð`ï`Ì©?áËûô™êÌn?¢žÒÇc¶úıÖY"ôÆs·ÜëdæàÛ>loõã>ŸÖ xaŒ=,…ÐÀ3Å·÷ÇáåÓ‡<÷ @ªð†l¶ØB|­$÷3ß~$<¡ŒÐ'vÚÆ~rß#ÛW ©¬÷ â«qÛ¸ùÝ`P{nOûu¸[¸…o÷Åt)»Ut²Sæ ˆ9h:¤3F1ÆMÕò&ôƒA S@1G¤ž‡=úvÚ ûÕØÂšeI¿7´]('³Ï+òÙóÞ½òyáÈüŒ£N β2n9U7èN—¬mí HŒt3Ðøë¸6ˆ#ñ,cèü¬ Ä&~Fuyh¸s@qWTñÉýo/¸´¡x±3 L/gw`Æ'erWÀI—Ǩ”àÒ.ö´CÞ2ŸÐ+í÷ªï®AÂ&í/±]â¤4}_øê̬ª„’u½„@vÝ‹Ù/€ä[öoIÆjP›) üxªâ%£ ({ÛϨÞk¬}ß7ÞÁ4âÒLßÉŠ€“ /¯»*ÒËg­~´¦äéFÝF)ä³ß…ׂ‰åÛG*‹>ãì;a,a§ÚûÂ’Ãq%![»JÏ&ÆP¼GÄzŒõO”gÖ£­>9ƒZV9wëœ:€eÔAlàå`ЦüœùíO€ZÛÙ…^à–Å”ôjåVCiGZ×6†¯‰Y›5,‘õå˜büí³þløËKãëÆnÅ%Ø„Ì\Å€5øÅYeÙÍ$ÒÄ„¼}õóýOü6>ŸÆŒ=ë¾Òª®–i°¬e׃j­Ê.P𪱕Íç,`ÙžØ.Š.‹ÔêcCË¥Àî S¤_æHfû”‘KøÑªí ôL(ºl럎 n%sæ÷õHˆUddT ìÁÃÈ+PÛ,®;¢Md˜B/ëH„æ *„¨¸Œ»F V‚Võ¨BüMVȃ-(«Dbp´9ê›%˰ЮI‘Õã~\yùUugí­Å$̪eI°ST²òJ …L.ãoH3÷y½s…¢´ÝFSá§_toE€˜[YT^¼Có€>e]IÍ hÊð&è-(1 ÝI«‚a½*£ƒ¡¨~è’i–Üßp…vá6¦ûÊ_smÑ÷|7Ãè!éM¾™X“­óoˆ âš‚Bž»ºë´eæ~ `gsŒv†b[Ö^Œß{gÓˆyf{–êg ކ¼ßƒïÞäp¯WLo~%áª8 W: ysö`×±:¤óàHwY:K6€aR=&X£PPâl^ô?5¢`C¿Kz ¥vBPý$WCŠíôvÓè‹þÒy0eÈ*¶|ÆbI+|CA`Ä™…Y„O „T/Lì¸Ma˜Û€¾`H I†8‰„P\  fÕýÐï^Ñ-à»5}3IJۻ«£ ra1³œßŸwÁö ”ƒZ˜:|#ùÂWfíÏü¤þ{pôA mJúmÐêbÜ[SØy ;>zOt<%®™±§;Ùóbì›/¸5Ê¢ÚÙÎhîFow¾÷»`Å¿¡>±w(SdÛ>ï+» ~é’§¢å›Õ’¦4µiÍ@?eÇ/)KרI/qÛ)ÍÐcó´‹VÃkï»Ê/ÁÌ´A1¨¤m‹Yòn§J_ìÕ²V¬MÂLÑÞ­fo3„¶•KØä•È¿f½Û­i0‘³np6 =ŠÂ§䋞ùˆe§âÌ;ü²«ü ×Ñnt³#l~®s{Ãl0噽=Œë€ ù…héÁÐ/ôëÊí‡\Nÿë(ß4Sù þìqO9QåÝBaÈ ¼à%¯xÕë}ì=ouÊñá2óÌ—¾ö­ï‡b@š&3R?àa–ÖöñU´a ‹rÑö™)‹ÞÚr\FV„"‰¨UZG3ò#1ð‘dµ©A¿JÙÑѦ<8ß`c…1›1«Ö\2›Ó0¦z*M†Ðþ™3Íãyòl^žŽéž§Í|3Ó|É”\ºS\=¿iV!+úiÞ4ëͨÙ`àrm›Éù2_gqfç¢ËóýpÖfse:³;s4§s1?¦8wÄa¨ÂG ]Ãly[8y³Ñsk^–eÓY‘”¥ 0Èû*U¬©ˆw¶qhŠÐµ%°I-c¸Ï ò”Ý•¨F=ZÁE/†ô³bËXÇ`ìCP=²èÃ+•°ÃÏñí¼À˼Æ-Ž8å‚·E8Ò ‘¬`šâ ´6xô—„ñãmAÀó²æ_a 2¨¤šZ®¿t'tÐÍS‘y±St‰ª¨‹Æ¸@HÑfŒÉ;6¨ò8º<ßá‹C þlpñæ5iç­oð–YÄžŠ—Ñðéö]ó·®îÃ7âÔ¿x~Pä.]\ÆA#&/öÒÛÑ–n®Þ 0ÝŸ§7nû¬g<—QF. O hbÙ† é’ŸÈR;s¡‘¢õ/M¸Œ[ À%¢9-–ì'„ÉczüÁ¨)ÖSYì9ã¥w匉„R?W>e³çÀ©˜v‰³ø¿ý´œ¦šñØ]@‘|ýÎï6¿DHZ ©§Pt=ÓjK³ \­t<= yó#^Òo;wšÚ’Ð÷ëÃ×¢=Okü³ÙÕÜÙ¬û;XôOËAÓ …t‰pÙ\ÀòG¡ Íi<43üÄw–Ï+Ì’Û²Ï.É]?G{/!½–n^á=³¤üÑú'o¾™Llëšâ˜!˜¤KöÜì*Ì+‚€d¯þˆªVM¾i{…Üï²Vo„f½j>¼=ž*g–¾ØXK *Òé¨ÇÕq¾ëw÷ÿª Ž4øžªê{ÌqŠUÛfÕpÌ«©õ@íq\z”#§*„¢VªÍÏï·s6Eïa»môhô¯Ø¿ñ𤗰úš½à'V?;íôžÜŸë7øÖá×ý•©á­*êg¡Þ•ëÓ¶BwÒe¬o©ÈƒíZs\³ÁÁRŒ#Œ[ÇWÙ8èm|±êü씺«u(zu»øЪÕr‚×u ×{cig´=Þzô³/9‚{´½IÕéh¦â>¡ ýƒ* dN ES|O[ƲI¡v.$èóžãŸ¿îibiœìz³ÆU_F}™t+¾òÅK4acWƒ—<ì~É ¶#záp C˜€„nÁ ×=İcvÌ#ÄM»ýÈO."÷¿ÈGK—d/+ÿx°’Õ*êÚG‰׃å¡ aP)MÝØ"ƒß­Á9YÔ-—<æˆ}Øž7|ÉéHB¾[žÝ²wLÚ5þ"<«Ó=¢FcphnR ¨;ißvmZ> ˜b ƒEÀ ¬(žomÜÖâm„á!^ ²E¢ä>T}¬Ïm:ãkí%á“·ÎW?9IƒmÁ` à3+ŽŒœ JG*cÆZV­³Ù®ã¾¹æ€A‰àe–uFD¢û”Â'¶U‡Õ‚È"CëŠëšA2tÖ®¡X‰×Žš‘ñ1öéY—  ¶®G¢L9O?‹JïǬ ¡Òç¬ý,ßi×rž,9t7cÆb\Ëüþ#—[ ®’Õ±wyǻ֊ÿOAšÄþ2¶áô©EìÚx ´™.G⪠‚—Á˃YÌnc€Õê²VÿµÚ0 ~Îf?‡+ƒ_¾V#YFO„u ”Õ£(ì‰ÉöNÿ¾ÁÏ>§ã: ‡5Ö ²éw°Ã¼â×±¢}ƒ$òËýË:ØsÜ)Ž8–š&ƒqŸ¨x£©ážgDfŒµ·þ:lÑ‹hcY i,ë¢L›æ³-ìÃDx1 ÄØ—Æ%Îw µPWk.‚ÐèPŸÏEeC¾ÿ’@K,YR¨ýt‰A‹%ð,ó$nŠèŠ:pi¨j˜:3*Ðè¯Æ/ñøvÀ‰.ñŽ ;Aº H= àâÀ¼xœê(¿ŸJeиœ+äéJ‹Ä"¤û2y”j‹Ç$!„$•‡Ç–Œi«Ì‘PYØ0…:S(ß°@ÝC5¾Ýù¾Eð«tóÊI\èwFâAq/?ƒ;¯Fß³S¬ ÈêE RX|28+JO€4½•›CàB«¸ãZ»Öí®u·sîΕÖŽ¹ËØ-ë¤Hø œ þõjaÚëå¹|ëJ…·|“ª­C6ü”o.[åö ½aïG·úã“3Œç˜,0]b¶õù~-ê'>ëàLý÷ÛðÅz[†_‹¸^€zÓ‚ÔÛV@ï ¨½Gô@ÖGEŸ$2ú,£î‹‚¶¯*¦êD–-[ß Í6Ó47•£ùé\-Èä©?G …Añ—H¶²LºUUú·v'ÜKûn› d_Ó9:ë[FŒñºj…°["’n[¯èކîÚjé¾´‡’ìžpGcX„.ÆX‚œ ˜B­ˆ‘Œ l/‰“ÕHä™G£Æ9.î‰èñMÌPߤ Fg1ne‡ì–´ËöîŠýˆ]s’nœg\¸K¨Eº“u\4ûøîÅòð,Q¦ü½¡ ¿Õ÷½fp?éàm¹7Æþ½Ÿ©ÖS5b¸'ŽË¸‚$‰«®¡Jå:ºtn`Êä&žfn±jå•sxmÕèì‰ß?‰½©³CôôfŸæS2g'jÂðh:fAN‡6¢Î&`‡RçÆ‘Î3üÆ8£hX¾nptúÆ>¸4Á“zH»! >ø”~gÀ·žr?U{*üÙôã—–?eÍSÕ58Ç^ažÌÿI^4VS±iÒJ͘Qz¦L2òç—YQE²j¬QvÃ.§Ñ–ÛÔ.ÒÕ§¾Ñ½Ëu™`Wë*á®×u¢/ÍÿóÕÎ^aÚpÜ¢¢sµäœc”Ÿ‡8Õç1^›ó,IðØR¥=Žôé's©ãm³ø<Ó5ÎG6ÏOÿ¸ xÐÛç¶EÊÁ3Rà@¤Ã‡€# üÌ3RÄ7 ÖÅÌOÃ*ä‹Dé^)ï3M:^m1Ÿ.`¦ÎhÄe™ÄfsXĶZb¶l<²²`òò` Æ**²š`ÚÚH]]¡¸>q™¬¡!q¥±²ƒƒ™—Ž€Th$®¨(æ ø’ÒðedàËÌ&]“Ãôe®n~ žÒR°òo`µµ°=u` ?Áš›ÁÚÛ‰v€uvïÂÕݧ§Wo/ž¾>\ýýx˜Ïa˜f¾8Ê|ißÄ„Ñä$¾™°¹9°…°¥%°•°ÿ`/öaïÿ´¼ú—ró_óo³æ½æ3J=[ÔaxHDÃQ#5 ƒ8˜(6Å#DézÜ è1µÇ¼r>~·åBÂn‰ˆÊÅÄÝ’ÊÈ …2 ÕÔ…ZÚB=}h`¨›)³…‘±n–¬&¦öB–öb¶öròÒ,¡ª›*êÒUhå(Õ8W©&y"—òçT•l…p©VŠÔ­-&¹F¼Ò¤dŽ”TEiéRmÔ¹UŽœ\%yùJ u†È1h°æ!CuŒ a´ûŒEi<˜ý&JvÀdpM•âé†Î˜©jÖl`çš‹>Á@Ó–X’Ÿ ,\h¨ñ;,+eÙòºï´¢)ÆS.³²ÔÝFR®´z›ûÆ 1ƒ±ÁSpEøº«à¨u`̦d±mp‰]`©}p™C`¹Sê/œS}é’æ+B-€\»†šúZCôôð?1bŒ±ÊXÌ®ÑÌI»”›j/ì Aø•´IøõŠU²ê4›5©¶hcŒëjÍÒ‡Ÿ4„Ýj;m:uL,u!)ºD*d©tÆŒLL 5+‡ÇÊÉe$¡Ÿ£ÒÓØÐ5¸µòÅüøu ±P¬W$†l"¥—ÉÕ¶PB·)UÛ®œT¥†þLªÑCv¨„~¡Ó`Ôý'3¦ÅŠe³ñ/·‰?«52 žÔ9^ÃXM#xˬþ•þ½åt]ær\ÊÕ¤Ë\OK¹™u™Ûy)w‹v¹_–òàÞ° ÂÆèRe ÂÃti@Ü) ’~V(/I£t‘ç!MQ e^²T…ÉÓf¥@£Ÿ> E†ÊŒŒM31 Â\œkêlm`g/B“£ œœ-ãæn/o ïùJ3Œg$m…p&"•EE³0«,.‘“…d£F[eÜxU&Êó5YŠŸ©üM—`¦¼@³¥™K+Xt6!¸i…âe†ŸV¸˜l>ˆ!.A¤øú¬Hh©Ý’ªÚCí*Ââb¥ÔïQ‚xH ·@[o VÃ:qëm”—BZJ*Y¬4x‚tòXˆÙÔUsš&«<ÚÆœ¥Ëª!­"ÆlJÙ”2Ç*C%¨d‰õ5A :V-{‚zL œ zˆ«ˆFî=Ê“U³Ì¬ZdÅk•í´œx¿x£ý—/­ÓÉ:EËu‰µ4(ÓÖĽ²Í ÛX”knÑÄÈæÆQM<„N4‰I3…M4K3#ŸhŸf÷¡ï{á}r¸ç;ûÒg|¤ÔÖºr•ßÔf6À*UÚÙR­¶Íhg‡Ym—aç§ÿÜjûjíðª=rn×wZ¸ÄE_’r_Ñ¢¯Y¹oxÑ·¢Üw²èŒ*w=¤ » ±Æb­gñÖC°D!ÙD²ÍPl!í ·=ì£ÉòsëslÓØÏâ0‡]Ç%\ÔÕeWMuÝÂM[Ývp×U÷=<ôÕãOCõ<ÂËX½Nð65ÙÌæsS,l¹4ÕÊÖk³¼´«+Óll»u77îî΃¥Ú}™ìP®½©+µ·U²Sµö®Fv_«=×ñêÇþ³FàÒÄÞ ¼l5¿jsþyÿ{ƒ×á÷ðé}ºLÏ”ôEkân˃h)D(˜. tik<%ëüØ…IˆÔ!›Ü»n,v¨9áœrI!6œ#§.°s7Ä…êš—R©Q|î3©ðU¥æ£sj…ߪÄùŸxf$Ãp0!#!±L&ƒj¸Œq,\ßáó©Ñ—:V“¯u¢FßèTM‘PØäÀ¶(•ƒ!ÌúqÒz²\ùmªTw“Þõ5›úz®]ÌÃ뙽$)©~øÿ¬ú^Žt—W¹P˜/s§6ßm\[4lmJˆž4%'#ìdzy‚(° S0„VÐ Bhm.CwP϶²S%ˆÂ¾ÿI ”\¨„J¨Þ³è¦3ë ·•sUIU$ª8Ù­Ò©ZÆ,•ùÄúÒÒ!g ›Nv¢,#Éö—'vöד#Ó¾G VƒØS/Êâ;„ §™wÉ ÓάÄO<”Ö´Ä/¹sXQc+Š!áI$‘F"Œˆt5Z}º©šÙ´œeHE:X§¦#2Yÿvßè,:Ð ‹Îtá†I˜ªÀVMÌ,§ôkÚ¤s4é2r,t,-Ÿðá/FÏŸà‹|”@†ÝØ7ŸGP¬°ggp‚Y5IL",òÈ"lxÔZÙ—Å<®bq ëXÜÄâ6w±¸ÿbåºb˧Àã¼ˆÇ þxWüñ*oøã«[×L?ÉTYõì{tÂT,3v9éŠQyfÅÇnÔÊ¢¼=QIeTSÝ9HRtN©c­†¸i3hˆ;£‰¦xDs´ÐOh6ÚâíÑAGŽq2y2™«ÂÕ9ãšÅ ƒñC†–ŽýðY>à;v€š?bpîzäÖ…ÔÆù›9p©uËœ6Õ¬ËT­¹çšÀÎ<ö6Îè¯5±àLσ ¡gì& yBƒ'žà‰¼BÍ'ÅR9´„ë¼Í]^Bl<æamå:?)æ“+wJó€gQ9áe½âM=æÝ(F›ä|~;W²Ý/* _„ç´v“ nGã|¹ð'Š¢­âËö œÏ6Ó¨µ‘à+¸“œ/ù.º©UÁ[z/Ù-m,‚åä ”ÁÉ`:”æ{<¦¬5¢9›!óù—c˜n™2Ò×15ÄáÕvÓ§ºœ\+6Q»r@ £M‰>*Á€B†B¨íÔewuó™wËPBm·à²]\(?È é+%“h)–¨_P¾ÆmnñJT.èD]#jËŒp÷‹ õÂǽðq2Õ­-}F2­1¾RvÅ Î^9{E¦B=̵ ŽÐLÔý¨éªGdPŽg™ñÛ-sB¸\Hd*mJú¬B­PÑP… Q…r¡\¸Øå9:j-Ÿ>gd*yª6­zü3ëá™'Ï¥m¾ç ]7gï`„F &˜`‚ &˜`AAA„ùV£˜6Cìĺqܼ ŠEƒ¢9™:™;™Ã3¶i\#K‹hÔ$hSÎòÜ25£¤,E±4„¥à3qâ'—+—l, ïcŠYå¯DÝvè»xùÆÇËü$úʯ_’s"¿”³a­²˜Q}Çí*gf‹-“zh+]3®Tmâ\æå¾¨ ìÁªòNTeöê!3a­{ï¡ÌFvܽR~¬šÖIVýÂö,(T‘U¸¡*ÔpÕ®f !¿>dk\èÒjçH¶­CLÓ‰³•Ôú7×UPHWæöúL¸Í:¿ÚŒfuÔ4xn{g'ñHW_¾Ó}¡›ÞŠßd>íy?˾8Œ:'$ ‚ð)dáþ4ŽBÙ9^Ѷµ¹½’(ôÛÑߘìNñ(@¼E‘]}Fì]¼ùp›g§ì¼¤qsAL¿*”­5OiÊÀ.Þ¿I³ÔÚ²‡ï0GlþkBGè³2{Yñãr¯AOÞ½O*Õ'yò'*ÖéMT›Û\‹è¿¦(eðîæ);ÝÝrÉí§_µÓ¦Z#â󜡺Ëð9ý»¿Y‘íT}nz×éY~_>¢GÙ—œŠUc±ÒÝ ‰ò?Wi¯àÖ¢›tp¬!›ó?wYìŽð–Õ rF^òÒêð+.\òþ—§˜Ä{Œªh÷|T'(õS&œuþ˜Œ¥ßBönÚ´Ú(‚†î$[IŠLòS€Õ—Zd¼ê)¤Œt£ ÞGzr÷V `g½Zµ)±\øÀQ†G«A¨€HLÕí%øý<¦‰'°&Þ’¦œ™v¡WÛ‹´Á&–¡l_¬áW¡F.åG¯F|'7ù¡ß‹T‚Íé¦âBìD_$¦ŒHKiˆîÁì•a¿À‡œïJ¹²Š çLˆžƒQ ãxŠƒ¿õŽ$Ò;ùEmLŒJ_òýM_akûãšo¿œèTlΔLé¤;I›p,Û£àöø…:ÈkG¶JÏF¹7L©Ú†©öÆÒåàÐNâjHm“)ºY7 õü¤oÉom6‚µŒª2t=⳿ £,Õwc»{ÌÙÔs‘Ÿœò’ôˆÉíŒ-ŸdûŽÏÈu‡*¯ IZt£Q0ñn4 ‚š‡X3]q`ÛeÚ8\a Åú¢˜–ÃR:$dE[zÐ6‡D6Õß P&}3”Û$ |p£©H÷q ÔUoþ˜?xB[éBèƒÀÙô÷­ùÝuÞŽÚ÷:ÆMÍ;«"›*6³k É¢k˜Qì#­xQ‘'-M©i(5½ÏÍ©š8ˆ‡¶^ž{HL-j •HÈaûÓP¾:lªÉ˜Òv#Aµ®5ȉTC˜T+ڤⓋ©26%ì³ÆQn%aÓJÑo¿-ö~ÍŽà_k} ^ QSZ¥Øª…ôW ŽŒ;IZMúÈ–«ì…ŽyÄFtÇX€tô‰§Ê[ 'ZHŠ&I¥‡ô wo ~8Dš4|s“4­ìSq¡Ët2{i‘%_,I¼OaŠŠ}PnØ^'ÀqÇÇfÓñŸ'JQ=Cºª•e%ÀÈ´H»ÍŠPå”­S"E¿!Ëá xi›×ì,êü)CåT+”ÙËjš{eÔ¶%è%jЖì‘{Í{I˜m,îÆ*oóÅW©ÅŠ)¢Sá\Ld„/Aä!JļyvÈ8™³‰@°æˆpè\` +ÿÉLñg°;Cé}†„ù¶½¬æí*׋¹5ÓE “wzt4:¼MQò•Z, ß\ü2ükëÙŸê±sž^Úâ«”pô!gÓúÌVûFr lü.‚»­O:}Ân[l\_H\¼h akp •YÌgH¨é *z¾óUX¦f“XU$ö<‹Yf¶®:hVzL] Q\?‹[[59ÍuëÈŒåH&’pQ–æ~ "~З²ið×k$À9ç“fdÄàxŸLg%|€Õ¡tLé!» å››G÷ ¬G¤ª9E¼Ÿ%ÿ‰›b°´ñg,9û«ñÁÁpìNË·oèðÓ´®.­ ÜÅc7"Ÿd1<ܯo¶ÕÎm8YX£HrÍãpyhb=wfµQAˆèˆ1›!/‹èÜÈ~PxRD`ZI!W@Ä=9”ÕÖØ>j€/ôú÷ »¼Ï 9˜C"LêXB^ Áæ’Ð<’QZ «}.Ò4À¹ªƒ= ƒ,<Ñ­Ê9MV"WùoÈ’¼ƒ;ÓÈy#ˆ_|ýðÿX' îüÊ“ó~Ú»8•}f ž±ë3ʰ^¯`,ÔWÎiCk{Õ€ïszGϲ¢3¡±zØz/¡wñÀ V°ÂB„oÖký “'ÒÂhä0Ôæ|g^ŒÊ] ½nÆ~ÑMö±Ê-×çÍÙXi¸ÝøÅnøžEú™³…vÉ“sÓ!Îõú½×þÜ2l7l9ôVŒ)f/(&ò¼Ež¤p5`Òz&/þp«H”0ìAR ÒÞÜ0·#;ÿŒ>×Uà5¥õ¬„Ÿ/ [Wæ°ü¢«}%W*­z‘¬ªO›Cæ|&´Ò2ˉŽ$º×ºeG¿+;ÀÐ ½,èßÝG»œ‘÷×Ç=;ðÞ˜¢A˜‚ó7y‚’U6™JOM Î0,c«úÊÐÖ¸C!¼ãý¡Ù‡TrÍYQM7Ç5ɈYf8­åtú* c´“šÆ¢Û¦— VÊ£E!‡˜²Ðr}ÙråŽIŸ< 1%Zí²=†uxòžò´$šcÉïy:‘ ÃÙ7‡4v˜Q ʹÖQErQÉζã“§¡„Mê9ÝXmaºÑY¬®7K‹ßWlÒv IÞ#Ó¡ÛfêB{Ýå?ßsð{ ÈÑûÆÅeAYŽ•Vøºd&rAA=ºí7í;u‹qéÌÂ4n˜]vH¢?SB3ÆvX-j.Gt±qA;vØwžÁ-þ‹Ì@aQ~³½ @Ÿ²Ll·;¥"Ãa'îˆ?œ Sœ!];ï]>=xÛ‰=ABødååÜÍÑ…K7!ûHßE ׈Ðò\¹HvÆîVÓ‹í¶K‚I/,i®œ˜…:5ùÓî^ºôWˆ±€¬D¶ßH‚À``üè ¸‚°Y)µ qXCºnFŸˆ6T+ùCyÎ\ÙÏWx(½‡ &!!U¤ÓÃAg‡á¨­L¡{Cñ¡¼ÀZ_¡ÙeÆœŠJÉÛŠ”ZÚªwä…š´trhudIó ³‘¸Í¾½²¼x‚±Äx8@CÁˆ”²#.à êhœÌ¥¥L²ïΦã×D'‡#;a\)òT‰Ú¬)2§çù®Z“X5V XÓÖœ—´j âO ro"à„b{Gí+ð[VtJ­¿šE2¦p’1X àGjÍSz+ OÅzQ£èÀÑWVb:’“}i ¿U1d” cƒžy‰ìcè$]—ƒy©ßJ—úPE¬m³³kd˜´'ˆEõáåšž%c²L÷ò"øhbØü*é¦ü°:£µŒx?ß…ˆªaR¢NLÃ:°›A j“Eªü9ÒwLžùŸäÂQÁ¤‰ZE$…냳¡ F‚¼$*GK`³ýÂúèü€|d쯘.Y¼Â3Áox06äTpOÛÿ‹,º¹–íîÛ·ÉöWÚ„|±Ax:£›ïsð §ààÎ èG ‘<7難"3K@SŽ' Ã]’YJiÚ<&¨ª+ô=Ÿ´‚ñgÕ¾fd}GggZD·^Fæ£í_Í ‰ˆ72>J´n xÛq~ñE‹‡ÅcßN‰ŸRƒ®×€­°¤luLâù)øù/LkÈÎøI•RlûaYÔò¥2Iíñ¼“^" 5iû‘Ä,rp(£šÝÖ „ ïºõÐ ²Ø¯e3?]U0抛Û:ÕÉKØ?¿ x‘ýnÖߥü}ö #²KÏ>µœë÷AL°5D¸ï/ÙíÃí#àHZ ¹O¨më¸ùÒ.^]ýu¥Íÿ¹½ý’²ôÎþ°Wäxê !hz±™ÇQWúª% C¼9‚œn•]A°¯ tÅÆµ~¾ù›Ëˆ ¿¤']3þú÷yØHõÍr°¡>çøšp–¸Žw“½ßAâ})ù±^5¯-î÷áÑSó¥èMÞLÓ¼{ËrOižm_Å%-ÁXÎQÿر^87ÙæÑ+'މ6”ÉqK·Ãåíµ*¶¯½”åoË7ªÔŸ¥Lsï‘BWN&U÷»“#6 <.”ù¢ãÅ׳Fú@ªÖjÀ0á=™58ùUZL«Àòp¿ªY)W ½×T1ÚcÊWšáx´¡?Nî+ÃÁû×Ú×w™Wx2…?÷qŸšƒŽlz¡ee&Á°‰Q(CªR6Í9‘* Õ†xÁ„}E<¨tŸi`i”º$E4( ­IËh÷@ý 壮¹¬ûy*íÃÂØÛ™m~?š»ãCfÕ¼åY¹ç[‚#qåa¨83[€áMgªåkù4ü ÌÚ…¹ Ì÷-_cÒ5}ûÁù"î³¹ˆö¡̱z—DDhO¼ç|ùŠFo6íI¶3j¸–OF Å2 ùž]ë2“üðïÔû¾Œ³¡EÂUmGõ€vОsSEÄzÕ—¶ q,òÖˆx¿ à¹÷Å£wCKÊ3±DìÓמ²Â¸(å ìTŠÄÕ‘Q„®ú³â'ËîÐÿ"º³þb€ é»:çóœÆ®ºÑ;FϾù%{ºÍ•X1½2C¨f‚Ó+ï%®òÜN@(¯¹Î(”ÖÚ£\špôú£uE4z+‘ÒƒâpÏ©Qœê§}¥Ëƒœ04‘„–* ?¡?Á !2kôì’;±¯oVwt¤6ˆÚ¢êر>&ö åAR¡1hQÏêæÜ8%¥ÜNëa&“9(nw”H‘ÃópƒÍÏ<sõX4+Fª’#dN Ô€ Ò}ø[È%K¼”óWxKÚ¾8Àëïõw;ùFå!ýkàó\Ä ¸wäákzòðJ£~WæJƒ°¥ßßË„o4تÊd<Ž×§Ž»™_,™$Ï?Zdwþøn•ó+À¯  =‹Å,Þgrèlí>>sùµíWÅ{  '¢ Š($%gu¡H.`EÒÁÒS§ô´Æz¢$"âÁ±¦xŒžÞç3âæj59#[DØd»öœ?œDØ&x*oL7ã‡*S±MrÄÂUò²0˜¢ ^BIüEËÙþ€¼aSxU8ÑGø’I9T*5׿[á51.|&l¡yaJ̸qØLWžÄKˆ²K¤¼”Ð_kÞ{{Й— œx¿=X¬/Ž¥ž5…ªK!˜0¨Â]C,þ0ÍŸ_y¸~”6”üFjê”+0>ÙˆõàµòE:ì€8Oá*F_¨@§ÌàáRVúµ[ꯑ£ôtêýñJÍÑ¡$¸„ôÌN–$še$fÈ"lH •R4(‰MW¸qÁ²*–Q¾¸£æ„XÉ%ý]|°åC'­Öîì8ö JÍCérÇö‹\¼r+OȦ(šw+¤[¿1ï‚ ¶eý›ýhø7Ûp`Í•r@˜T»6Í"Ìz·Û`µ4]Z'Ò3ÁÀÀŒøú¶åU¶DÄ £\‚¸Ò¹ÿm÷ áN9“/;®^*Öô•D¼áþÇåÞ÷Ò_³9ËOXïx²K{Ú ̦/sü^k³­ããõq_sÛ1È‘‚ñö9©¯ÔÈ+Qêž$‹8è±VÞóÌÿ»¨/Ó$«ó „¬ÝwaiÓ.(”š0»¤ê¤fbÛá—º/ë;*ΠçÝGå¡¿à<,},6+/’%Eý.C˜Î÷mem{yï¸"'*xô®€ ê亄šh£Ô {WŠúš#³ÝçóI£Ý¬(OÆWJ¶lå:ä]©j{ˆnèE’Þê“C$‘4œ­HÏZJi·–¨žØ¢Tî“tjê6‰V¥2£`îSÐ×ü¤,r@–`d\'EžE¥Ÿ,çÈ/¿SY¬®Æ¸¶• C-)D+T-œ¸¡$¦DQžs–xÐë£Ì´*?=GxVEÿЧ‘§kHö ºµàké\ôùƽ¤{ˆ=NÄD[g@'ee?pÁ‘„OûV§d‡Váeü°¢ýt0nýž¯.r8…)±î5Z›ÄsC.uå%è°æü þÌ>î¢Sº’²½_H}+MMå:pÑ©`-6®¤0I|Z 8åú±N𾉥‘zNVö/þ~T”ªÂªQæ-7åC×´ UP»mE'ìQÏzºòA­6^d³\SrtÈPâÁGð«úßÅ3ˆ4`¤7½ £• ¡¿ià›Ã¿•ÔL ‡Ø§½'’»ùH{My.\ìb[ä’Ф´‚DBŸpJ¶Å1PÍñ y ï K#˜mº»/vüM’Ãú?yD%½ h{Tøux {šçIù 3­‰õÇ峚·ì‚Sôs@ÀÔB;Ø!å–·£Ê,:»UBƒû¢oåVCWÈ™4¼Õ ›mÊY>Ç}ÏaëÁÝ&Uª\y˜w4ÖP¬ÃN¦;ák.¾gMΠÂn²I¥8èN²6M‚dÊ]¹=4«AiïH9aîl¤ƒàd ¸;†ÌµHÃ×ÎØôÇ'ÎvãB¢¶',ãiPL%íº·ýáÆû9nZºtrŒÐTêxÔjE[ÌÓŒWGϼï.TÍ6¡õ´PQ‡ Éæxþ@^5;\žÏ=Ç8gߨB™ÔAßÃüWË^†¡4¯ÔÃo¹I×âC/Ɉ;Ç ¤áÆ¢¶ŸHh åQò”ey>ÿ×BñO•4C]DÒ€°è¤þ)?ö+¤‚À~#VKNbh&…Ds¬àýÖ!``Ÿù 6uè")›3p ö’ÆŸÈ»ùžºhˆ`þ€8fY]NžÖŸAåàSöƒ'wD‚°Ä–D7.^#¬Ѳ]ý=\èW<¤£Wj`„߃ÕÃtÇ33À=å¿K¾„/þäšVƒ8Añ”¬“i’5K€d}¨£°¦UÈa…[e`Ø gµä…(J”å«[ç§Ö й! ^–„ãàm¢ÉÖ ÖžÉcW|£<ÚåÇø Éuç®—®T¿Hˆ¡€›Ô_é¨#_G8ö\­óhXdŸá‡¤ùOÕs íF¯Vѵ¡±*ýwaiq’ђŹÃäºRJÂáZ!z`çY5ýŠ*dz¬¹“LÉiû1à±!BYl}<:’wÝQx):QícÝ"×Nvyü6…î•ØÆúù¹O´»SÿÒØÍ:0©ëˆH`ãù/4->©5íΈŽÁd¿Ç!.À’v±>\À.ƒ—Ð{ê ™ªBԸЃaŸ»'ŽÈüùË›t"öM¼[]³‹¬’+åC±PÐuÝèÔtƒ}ØÓP¹¸A8ªMVý+®1¢HÒE±Ÿ]®Ö˜„pùk˜­àÄ‹òVNæò¢'ïw­¼¸A„’°å>ò8XïŠö‚#Zèõž?÷ÜSOÇÝää½ÀrÚÅW"k¢¿˜ñ†(ù“ b¡`…“l”nèôëóµåNéó{dSã`3ì¯pÚ;±ö =$7‚G º%¸(D“>T/¦D @_ùu,®> Ïü^ Rž£ä;+vûpÿÿÐdÕäš^œ §'þsü¼|÷Rô”ËdmŽÄ-átMð)G.ÞTŒ0ȺÓ6µXþÇ8…Î^…_^ÑÒâÓ¾¡„;;›Baƒ¶­ C’³Ûb„3èˆÎ"<ý(Cùr‹§Ô?ƒ "5gOûNP„Ú(^gÔ6;É%)˜ÒßðѾk½hÄtò½.êWAF ^+”ÍO0 š‚ ·„ÝQÄÝIrt¶*oLT†EÀ‰EwXú?€&kªé ¸´ÌÂnIVLpù÷×ûr< ½ 3ýRy5ß½÷§~=}sOîý ƒÑÜ]%ƒ6ULÚ`ã'—8(g£‹T÷ëi°åJj/IïŽä±¬QFš¬2öJ˜‡ŠD‡)"Mö5•…ßëDÕè6w_oª'äZéÏ»ƒx’4–Ÿ ‡Ù׿x?±'œÃÎÕ6 µ£pœS0BzuLoòª‚AVhJöÌV‹¬1ö¼Ä"¨’œB_TãšÛ%ñ ŽŒÔð";üj]POý&'g¢” ®àø¬„³EvÀ<ß­þHÒWT3Ì´‹°ŽÙcÅÂåž0FV›Æ”,éJËÀ'£a@B°¿Š@ÐF¦_!ú¹Ïï‰oú-×éFOÓN ä%…$7SS·'!Gÿ¸üªƒŸeÜ’üûkçíÜ·Û§qœD«ß¿0ê(%˜áþü¿I¹ç¤˜ö8Ú=m¨t¢t«‹ÿÀ¾OÁóµ¹JlV‰}•ø«<öóª[L(p’_ôÅm2Ë*[gî¶l©ݽ^}ë;Ï3\Ë£Ý×þeþ% ï}壘•úÍJµT`/Døv6Ö¶" ¥"t&üÖ™ó>Ãyñ¼Ëé¼ÃtÞf>z†2H¹úúµp;9GYn8q¡U_&“̃ÿ±„jâY4Ϥ“¾ cSb¼Îl“CN¹˜Œñ¡í޳qä0¶?ù±«î‘“BÛlÇîÓüœ:žcÿó#½ Lºq¤á”ü@Òÿ¥yéj¨N8ÏÞƒOËÎ/6~ù…ä˜ù•TUÿÅÇþÃÓü¸§dhmÞá^ȉ¨`j.`j?ýW$l>8f¿%ÿðõ':ôRFí³r{nÚ£«æš»çEž®É•IHb’Ô»düII$Ô¤P“JɨÃSáuxce$!YD<…æ úî5ÝûfÞ Ì«×{ƺ·ôáãûñ·Ùëh¾ÑÜò¿ù#Û#ï{ÅÎ&÷Šý¼MÞ&ü·‰àm"z›@o5|ôáÁr½–,¤ƒÚ­=K°</ïò9Â7‹\¸?ÒN\¸iŃ~è1`DÀ„ VlØ“tæ{­P+…-<-è¤MJïáÏ4Þsó/þa;§4q‚– ¬ &B”q$iãkâŸ#Þ‹Š'Þ=‰Òx*ºª &‹Íáªé›5'ß„ó(è_(f‘î–WA°Ð5é P`¼Ó¥‹$ég’áÒÇXÃdàšA?ª0ó¼^·9Æ83Ì4BÒëwVÒߘ5kÑ‹a>>aµÖ`?^´¯yœÜ#[ 2lĨ1ãÀ·¯»Vß?ªIÔ)SEµ øzÕ4S «tÅÌFcƒñÄ„«?ê¯ú§þC ‘qõX¯Ñ.^¶Ûž«Ì‰mhЬM§¾R¬TùÊ…5ëµ]›?ñ$|I‘;LøHç€^ .Ê’F:É @1RÔ„g€†CDAÇB€‚ŽCŒ1Åì|½Y•·a8^å;~ýˆYB$§¦¥gdfeç„iAJWºLXÙðr‘QÑ1±qåã+“’+¦p,/ÐýŠ 2lĨ1ã&ê÷ŽS¦Í˜5g! ËuýR¯ÿé??wõ0Á$ LÒ ‘w4x£eGP£Užè-ǹâ†Vx¡×€Ç˜eŠiæï$bÌF¿—P«B N³nižéµ,5n¤+lQ³¤ª)´Úmñ¯@‰Sòkåª5ÑP R¼…³íʸôè0Û,½æ˜ç´¸˜¨YS”S.q²Íx%Ee+”ëZXzúÚôÜ3O½óÆëâr„ÿÅ!Nt\2¨b|ŒÛÔû‡¯aË9Ï—öÜ·wŒ"(4‹Ã[Y+Ëaó¡þòÅý˜[-¯z>7k°ù3ߎâ$Íò¢¬ê±¸À….rÆ‘‹;q‰³Ny¤mÍ`-px‘D¦Pit“Åæpy|P$–Her…R¥¶´Òh­mئÿc-=#3 +;'7/¿€ °ˆ¨˜¸„¤)i½úôËÊÉ[ñ}5[þ†­v¿ÕÎìÝË:Ýu¿ÆÝ¿­ïåïÐCé3dLž&œGì•aQq‰ì…²ªÚ TS+»¶uðßfS¤–¦R±Yû&gÎ’5[ö9s±uÿP*6Ð`C 7ÒhËaá‘QÑ1ÜÝk¡¤¦¥gdfe—”–•WTVU÷HVïÑc·/ŽÓûKª“[SÛ£EŠ+^¢d=Í4Û\óAÁMÍ-E‹-Ñ•ù (”·”»:u×›lº‰vˆ¥òV­Û´o'‘)ò ‹øÀ¿÷ôŠ•*MC}c]¯Ù"ú7Õýfӟû6¥±È¼FœÚÔ˜øVÑüÅ©˜tJaÊÖ¼{ éô;¨P[´tº9Õ­T&n`2øDÄÓÆØQz‰IÚýèÇ.K ó%Oª+ƒÅY›(©ž”\êÞî÷Ïõ*vf•ï'¹U<ç3B£Yˆ“±a†ö{drÆsÉÝ•¤Ïî2TY¼ïJÏ)f¡Ö} k’óéïfÐNš:É%GžÂ%Ox%ÓŠK­gc×àZ\@ø¤ùÇQº¤ õç‘$?Wâ MXxzì‚W' â‡RæIœ¿}v¨¿–Ù²£R󽫣žŽf Aï*]Árä(›,ý84ó!é§6îk“=ŽEº"Ž2:`“A ¿ñü ×!sæ$jƒBöÙƒ&-"­i<™î}ñÌç½öç~ïHáH4i Ìä“Lä 1*Œ8T_’ÁÃÈìQä !J Øð‘Fª D):–=¯å›ñ’¨Œ_ˆ€A@ÁÀ+àpÈ踴‰1L0ûT˜Ó`ZL×Ó#F !U;xØcÒí6kß¾—Ô)dÿtB“ÿ+hïÂJâ ñ5·!ýI–|Z‚g1´½2M¿¿MûâÉB½YÜþ.cÎd¢g½ÿú/ùy êm˜ú¨õårWÈÜ|·‡ÈyFBý H©å ûBížPö¶üýj†–;Câîë« "ÕЊ€²§¸iz\ìèr øžï,”òµ1"ú b¼\]â(7HÙ´ =9ªuõj(̙ˎZæõF‰ë×)án9âI …„]g¢d)ÒdÈ’#"‰”0é2T«Uo¦˜]Ò¦vr¼ Ò’—gFÕècp`ÔxÅ(Èþ½Qæ>Cü»]¬%Ññ©Ú3W£…—¨})ö`/öa?à }M½ZË¦ÓØye.*¶ðÚ¦]5Ù›Ýv×}<òÄ™3—}ü;|òÅ·þÔ>SVH;FæÌéÒðº¨è˜Ø¸ø„Ĥä”T4t Œâ,º›¦&H·ÚNn!£ÆŒ›0iÊ´³æÌ[bÐRC–Yn…a+x%Ëþ+û¨µÆŒ›0iÊ´³^ýkÒ­‡~·?ºÿ»[5 -=;B¢Ð,O`²Ø./ ¹ª«ÍîpºÜ?À( ŽðïG@@@@@½µJ£3˜,6¯Ù©L®PªÔQ1q¨„¤ ÁâäñdŠ’2¤ÑU8\5ž:&¡Œ ©|&Ê:é,Y³ù×¾>'¹‘›¹/ÿnI ßä 7$bG"næwiÛúa}¥ O说ŽW}Yïð.®èHÜ0(?òœç­˜k«x«÷¶Vp;ˆÛwí|®"¬ã±2¿ý‹®àv«w—§lÙ³Þr.ÏJ,+»J¬cVã§u®Ý:¯ÊàÙ-„›HPÁ.­æÀÈI ¥íÜž¤vnØ©ð@}zò8#y’‰<ÍRžå*Ïs¿’æX¶›—¸–÷Å»™¦²Ì–¡j<áäî÷]0ãQ}~Bï3>}Êôå,!ýö^"ÆD‰¡RR ¨eìQ«ÂjH)œÂ•Zµ+KÔ¾¬T‡rAËOÊTa’S(·–*£v*³~£šzDÝêù¾˜UÅ› *݆©`› ÞÛ”Ðg™ _Q)„joÓPC¢p`ò9Ð]M'Ü&Z±£ip>~ª&¶ÇQÍhOñ™íS‚)?©!1QõD6S+;Dªêp=Ý_=JÊÓZkmï꣎îTÐ;;ÞÝ#ôÉÞ>-Eµ2­úpàp.}}cØÿctŒ{:ÖŠ^Œ}½œ¼ ?8ÀÊÙ.zŽ1B’0ÖÑJ¶Âš{ÂôfÖ‰4¡™uþ׉mÞKmßa5,2’9zh%L-Ír|È+»à½cðs¦ÇÔˆzï-ÜÈLMÞ›y\àlƒIó¹›K˜êKYi§Ý­%ìØzržElŸj÷WÉ1Lr›Åmg€PÅéF4¡ C˜Âq‰G|ÏÚ?‚U7 ($"J  ¡h8Zë Òé96ºDU;…“ÁÉTÔ3ØãÐ -=#’%UÚHüVÔ¦]‡NÝzôêÓo‰AK Yf¹†ÇJËVYmѱÖ{I´’é膘˜YÙØ98¹yx‡Ïs~©Ò¤ËКd¦õEX08¦]œC`Yt[ Øk™”G ÃI8Ã=‡O v„&á 4€[mUå@ÛÁ^œÏÿ@ä*ÀÙ€ΟL$ØiI?MoæZ‚p"y¯&¯a_“HÀ @kÌÉ¡2¥ˆJ‰þüéÚ•m®û=ècW<ôÈk·µ Z"3⌳q6*c0æb5Nâ4Y,%–d²é¦*¯ *ºÏ%–TžTÔ¿ý´ÔÚh³ýîØï°‰°UŸÚ3|&/ôÅÈÞ8.›hË8ç;Ûa–ð£¡=l…YbÞÈ´3Çã2‘ƒcq¤`1X^*S—ïi@#°=d)±Î¶£¡¶°_”‹‚¥%é«*õ]í:rêÞoD5I?ŽïM}¥¦ªS©ÑëÈâ‰Å9Å%’â£ÅuÅg‹Ï_-þZ".õ­xT ¼å0fCèÖˆh 5~„c8Nj¬±Ä×¹Þó<à!Ÿ¸ê‘ÇÞÀX=2Ã¥‘çâ\T&æc-N㬬ŠM,–’U²Kqé*ýe¨¬(«Ê†²±ä—Ý¥´œ-çÊõ2WŽ*À§â ¸vÕ_ƒµ .­ë6³¹‰ÏÙeÛm¯Mù‘XÊ‚z̼‰é@0"ð¹8q„ÍŠÅf¨†Ð«¦& f#ûȳÈÃB?ªaW²_–»‚­8%+WßÔˆã±ÜÆŽ“õé¢pÒTmªùÚ´xTñ¤[–4K>‹ß(á‹ÅïJšÂóŠç-è@›«g–¶bÅÑÎWÔƒÿÃÞäZM7É£ël¤«MΛ¤ÓuFW_ÜŽì|n=Û9À§^çuhå®Ù/ö©Þ8²¥é~ßk{õ­Ö ïå7IWçÝ  Oêÿ©ºÍz!ï&ÝÕüÇÀîì~Vƒ¿·F±ü¦Öœÿ»fà×ø|¿/?ÞŸò>€Ï“16†Fßè£m´Œ¦!ƒ o8£nÔà`}}ŸO‡ŸvàÓ||½/ÿ¼èîÜk_÷àÝé–íÎà¡/÷÷öPp»€G|ùV^CpGmöÛ- šfƒ&žûâcˆ¹sºœ³Vâ½»_’n•'Þ'w¨ÒNÓw•4ç-0Ø·#ZEQ¦˜˜Ñéši9M³tBjÒI{j—bÝV y[a_ÛÐ{òï;ñ‹ê± *µs;ÏÎ:h+ÝzôêÓoÊ‘žo ‘-h8Ý®ÞT’kMVÁ‚Ûhd,ƒ4Au!%‹@‰†t_¬¬üâ×q™ÆTÞØ›qÖœiÖEÝì³îØßNÞN7}‰U¬rUë´¯Óq:ÎÇ帷ãþvöv>%cjR'm,ºb+!õ´ºU®î•¯GŠÚê;J-“(âÆÿ‘µ¹Hé·¼^ƒ•n@2$3ýÂÐb'Ö-¬×ãÈIb\%ïû–Ãðо}•"MÐ'Ât|{Ü+Ù~Šø`Ø|*ž>/“m°Ñw2`ÚãÌñx°ùh!uܤoÉ,KŽX©ø¾|¹[ø…u3Øf»vÚµh%ÂjÌÈÜ,2Ìú ³X.Z¤l·€Ÿž,2 ÍqdJ¼(ˆ•t‘tèòÅHŽ+äÊV²Q÷°‘ÇŽ©ÌXýÌ¢Òi Š*ƒ‰ªáöÙÚ†‹Ö*.Bq†Û‹Újù…ßqsÁØ_ðæwÊí«eéœvÇÒ»ÓÞ{Q]osÀ¡e}€#þñŸcž"4¦èáÛ€îù„ôotXg¨X*b¤fš1ámŸ±§v°1èFD>ôv7l}¶äTÄ%•žr&8ÅEñ(YïןռþeRzo'äcuïèlïòãå+ŽÖ88Ïùü¢p¯ƒ1 r˜ÙäKÑÅZöåXNb·cšËþ}Çñ1ã1Ó1”/”(”¢xoN¨ÞÍS,7Ÿ… eÎKœpbX €Á‰ ?¡2çÂ_ŸÏ¸û"E*oñ~iתM—¸iQ?ð“ÈÚGø®ÉW!‚e3f"KŒŒŸ+QjÈRϱŸK,8I€"B“`Ȱ8*< ŽÈ@b"³Pب4.:ƒ)Àb‹pÄf ¡-¶ZìàJð¤ø29¡‚HI¬"Q“ʑɓ+P(R 2h~sYhN«édŸvªÏ¦¡íœˆžSíæLû9×AGAXºSËm~ù-,XaÅÜÇüJ+ §e_ÛjèI£oÅÐUåâ'ŒG}à½ûÙQb0–몛îz4cÛW}í¬¬¢ ön‡*Û¢«<[Ñ´ŒÇxŽWNW #8ãÔÕ 0PàD‰e…Ô'àao»æÉï‰U/1Ôæ°pÅSÏÝýóbÇîò²Ø?ÿq€­£Àôôÿð8J»âA²hh×Ú¥Ãï:¬_Ù ’“ÜB¢<ûwÀAÉylN?qÔ•§¾)íá|÷ÏYÿ[üÄe™TX¬¥³‰m± »„VyÒa޶ \wõЃ¦{Úµ>½z‡³>ΰý=έJ¦«Juq¦5æ©U«•:÷ÍWï‰ÖýÔ Gž¥±êÚß$ø¹D)<B#j®Â›Mm¼#̵͑}}™l!(7N=ÅÍÜ*Dº»UO÷=ÑÜÏ‹]½VƒwÕÞnŒÔªåÄ[@U ¤UMtðò.»øøØøåz*(È.O¾ç rXše×¶V­±ŒWæE&Ê Òz Rp#Þ[¿H„ý§~9X-ξv7,õZy<5‘'Oi¼x™Ä›·t>|LæËWFûù˦€ƒsþŒá\PFוÎTFµk¹xkeÉ¿ÕäÂTƒ#egôAµ‹.òVî’P*ªTÉ_•*ÁªUsU£†ŸZµ\ºŽq¹\´pÅA®ºÊ×5ׄ¸îºÅn¸!ÀM·,tÛmÜqß õê]òÀç=ôP™G9ä±'*<õÌaÏ=Wã…—Žzåµ+Þx£Ê[oÝòÎ?išèô 'BŒæÌ:ˆƒIL­vˆM\!F|²jUO›…Å¿-Êö¬ìÈÎRÏÞeÈékÎ~µœ|/üјÅÍ~¾Ï^2Ì/MrÌMCݯ¹ù‰³tt¦ÐÓ;G$fêÙ†˜Á·¶­–} J¦–"SºÖÆi§«)ºënŽžzÊÒ[oZ}Í6—ÖQ9Ž«pW•Û^»ç‘FO|ó—ƒÞ¿óóˆ‚ßô18 ÅÊ–X2Šqyõgâ^l™Æ¼XÏ‚;–q(GŽì©9“µ‹áWs}Î 9íf@yµÏÍ}yÄ3žñ+qhÿLP-ขŽAgK\‡~õj¡O]&ÌuáÂõ‘È‚QG™|!hÑcé“-vK?gxþÕ€‘>•KF&@N.‚B]+Q•ª¥^²h–6飣SFOo=ƒŒL2˜™u²°XÉÊ*ÈÆf+;»¿88LqrjââRÉÍmš‡Ç‡¼¼jøøTðóÛ.  ZPPΊٻ2RñÍ:ç11ÅÅ=–ð¤¤GRz=ÑÇ}¤X1§Æ2œ‘ Xߨû'6–ñM PÚÓ3‰ÐfLÁmæö]ùf¹«ÉlsTt–3´YZîÝËLÁmùq+¬ðßJ«œ¶&JümÌŽ²f9É+ ‘Ÿ‚‚¹Â•„w±^%Öî%²KMþ´=Si ÚÞÑØ—c%Ñ}ÜñœX'ëëw*w¤ôi[¬ïŒû48ëœOλà{7’Z‰Ð ™a{*ÙÅ--q` §j©cG¬?™»Œ[nXÍ•Š‡JJ;©¨ìeÀP#F 3¶‹ Emj‚ f;ÒÏÜýÛǂ۶4IH«XǦlÿgë®vìd³gï`;ØáÛŽvxµÚŽV8qb×Î6¸]ì@»šìHÍŽÚÍpñÊOýlw“å€ô˜¢¤ç°cWz=”òæ-Ÿ;Ú×FígXU¥ÿ 8Ç ´[ ' VÝ!Žÿ"T¨?„i.Ü¿Ž0ÂäÊȹ(QŒ:Ú±KĈQ.V¬#âÄ)ŸÄ ‰$I8É’ âØaRe8ß™¦°²åä¿A¶a^Ù:m&IÙv„me»tà•W§_¦Îï ~ëWϤOÁ±ûŽíè¶ —š¼%8j2M[À‰+CZ×ù~ B®<òòN+(8«¨è=Æäö¸&HLš$4e Å´iâžqì1f%kÈ…sá¹ˆÓØ\Äñåèd„,Ã`LÁb­ÆáL$!±7Ÿ”Ô™ !s„xa,ަ…ƒaİ,KŽÀóÐr¹A&¬×¤I!ÍšÒ¢EQƒ½q»ZµjÔ¦Mˆ@A­Ó®]‹ÖèÔeF·n``ÆÁ!¼ å4ŒK°p.ÀÃÛq ÎéFD4‰„¤Ù0 ŠHTThhN££Û„a &¦,,[°qäáâÚŒ‡g>¾ëæ Iì&%uƒŒÌ~rrw(X` {Ú7ZnþMj˜†ŒŒ‡œ‚‚—’ƒŠŠš“††Ÿ–‹ŽN ==6ƒTFF&&iÌ̸,,ÒYYñØØd°³ãspÈää$àâ’ÅÍMÈÃ#›——ˆOΣ  ’ É&%sÀX£ÁCQLh/„LµZ| ÃŒeñ#¥ÓÐë™sAƒÏ ÄòÙÍ~â,Jióûö%+×2Þ×Jñc–„xK)+BŒ±æœ°lT•ˆ¦±Õu¢†mšÄ,‹mwöÒì sÐAµnq ½5kê¬[g°aC½M›Œ9¤Áa‡™qD££Ž2;æ˜&Ç0àdœZöÐ\ß"ZÞÀ˸ÜÅFXîëÈZ.AA‘AC›ƒ!‡…uŽÞJDD !Q!#»Š‚FŽî &¦y,,ñØØ®ãàHÀÅuO">¾›’ Ý""¢}¶ìëÒâ69¹;ô””îRQ1PSûˆ††‘–ÖÇttLôô>a``fdt‰‰…™Ù}VVVŸ²±±±³ûŒƒƒ“Óç\\Üܾàááäåõ%?¿¯¸}-$Ä#,ì^QQߊ‰ñ‰G"yû=0µó[‡úmó›ah°¬ „hêt6õzZçÁ@›çýŘNfØÜº§Û³é‹ÅYÖÄå²-IL‘ÛŽ,3S{Câ¥ÌügŒçö…`©šœ`}Ë]½mŒ´ÁÔ×õçùz½¬¿Ÿ{9òùØø¿'2ƒ,Zÿé9¥ÿôwmy‘ÓúOaÛ‹œÑú‹Þ1&; úÎmøv¹ëœlÙ/uN&ùzîÖ5øòÜ‹FùòP À… T¤ÈOÅŠR¢Ä/»í6Z©£~;æ˜1÷¸S䄯:ɱ¹Pãme¹XÓ婪ñ‘êÔÕšq#7kºç¶ÛêÝõÀ~zêW~ךï?&³úßÉ%@ÿ·Í·ÿ:®zSÄÉlg¾Ã×âÿÞM¹iy1âR-½Ò÷/ç¥_M:,ƒ‡m«eÈûM2Ï-c9£É¿ß0òßê7-Q’”ßiÚ'mLù‚8õ÷ YUüÎ:cÕŸØØøØ“œ]x´Mýhp’»ÜÿÅu!}Ê3•ÿ]³mñضü3 RY¯,·ÕíŸW©ø‘UÀê—õ›ÿE8Ã9ê¦îÈíú qR±Vˆ›-ÑÿξÉá€Hˆ¾Ø©Õ5±È«—«´«1X@göz›µùÜ›¬‡÷ûî×ä‹DžÆ(&ðë×Ç^óU@z}Ø{ö6¦ð(òö0¶|eA:ôr¶=ëÇèšv^òvæð¨]ózbB@Ú7¢¯Ç¹ý sÿKñ°ç5Œ)½ùâ‰#}RŽxÇyð {* Rá P²q…k°g_¡êöäÔ…)i‘’B,¦ZÉcç7nLcÇ5ÛØAÝLŠèè`,êk>§¼L§§¿^£¾Œ¥¤šÆYåxp£»V ‘nY'¢"«'´ZXê¨#üæ3Å_e«û£>Ì¡úÊ|°µßŠ—ÞÉš/oÎJ Ë·g,_2dc‡­TOX®+Ñ“Zä7%4¦ô»ù— <\t%_GÞvU¤Ê³²9p0æ¸Sàü–{_s²kV)ÇãHF¥Þ±–¢¶¤‹J«ŠžØ%@A«Ðõ Ý»ÅpEÑsƒ¶ó¾\Ë’¢¯k†$²-„ kÒõ/ÇÂÍú#è¶—WŠ””¿w5å¤{D7®jXqq͔͛¶á½¶º3‰ÚU#>* ÃÆd8ûÈ… À%BcP9d`ÛÆ–c+)Òòèpf½õkBPF#¾<ôNCÐz'JŽ9ØW‰cTÞδʩӴ­ÁöÙµ• ÙdýþLššX? ˜4%¤™i/’ÎÃõ޽=ôT…#_wâ?5Ù SÀÁù¥±¼e\,‚z'¦CE¶+™‰Ž»R¦UŽ˜Òg´F$ ÏHâë†fUõì6&5O.d¶}U¿®ß›Î›îÙ†sd0ÑnjÉRÊq2y "H74ªÍ0¡=ë΀:;é_ë2µ=߉¿Oº2"d«ìr†Ã– 9ÒÀRS±ß¼rÊ=ír¥º]5 SyªãpC‘¸PSŽQ&Žª¹iŒO›åɼ9(ÏYß¿—o™,¡‘Áô£QcÖ®+Âv]“EW‡p]]ÂwõˆÐÕ'b×€H]C"w¶ú`ÓWÃd_7”©>ôÏ@aíô àøâ˜Ÿ;ßóû|S0…SIÅí üàP§Ú‰Qу1‹±‡q±ÔHjœ•ÄåUF-»¢µ§F£~öW#AFKFkïÏ—DCHŸãGõ©—êNq’Åîü<í9ô¶NHÛ¹§Ó}}j Š\7ç£|¤½B½¥ÄìãPœ J8&ÍóÁÌ>8Ö”w¼ ÍÕ|¾T ††Ø35k_A5êKM…e5•K«WÈ×2s‡jå(¹Ïéßc"éŽ#Üj—ò¤4}þ¡,o0æeªÀJ•LžˆÛÔç£Ýtv¢&-áÍi©æe ‰×dŽþ:©†·º§l~pK!Î7&$[DHI¯áAÐ{åXÕÑÅ&¤&]†ŽÑcì´ì˜Ñ¡H®a};2U–DÄg„ƒÉ*PÀý ”ê œ£z°„Ý Ñ6¬à@ÅtÞYT F³×ÀÚ œ"C½nÂÇoÒ@Ê´ C àÀ6_‘$fdv‰zКö.~¯¦T·Ð4ÁÛãó²%fÁI=](ÝÝ}`w€áã;=ÌnÊ·¯±ëµ™¹¤®¸5Sj¬Î‰f2ovÿn×Üʾí¦\û龚ÔYíhSR¬ñ¯û3=U+CŸ5)nå…o&£Ñ3“.&7ögfj¨æÞÞ ©R}7»óï‹¡CPØ“7¼à¼¯ yÃHî¶‚õGá÷뇃šêMéd·±q éh \;¶¢‹{èI\Ü`(‘ä­1² ë¹ÉÉ%8­œ2·;Ó¸N˜·3Êa¡K¬erdkiºM¢Ám×úíèö 8(v¯Ó;I‹¥Å.ÒbW¸)à®Ø}Ài›=¥Í^Òfoi³|ðS<÷§ ÿè¢yF˜ÅÒíèþÌÑ­SR>øLçsjcTϽª˜Hêhz»Õ$N5>`•äÀIêµA˜èi¤Wu[‡êBqWÅŒ³Šï¡j]zÜ3xèS›Êç$ È/ËÅÝÙ¾WÆh‚8ßù6Œhð…‚&ã“¶+oZŽ—Àç!ØAuúä™ÐT·gáGò h5ÿpCäoä)8!— [­¾©ŠÖøƒ'ƒ€¬ÛÄHëV:Ý•› ˆ¼#¼qwùž° ”•½ârÛkÎÉoFS³×ÐUu¾MïÉhŒI¤z&_³HA7Þí²©r?€rÇ?Ÿ|x?+S@ÓYøá;%Ý 4zÙ·Œl¥¹'⟄•þ؃ Ÿ;lä#¾0â/}§“߯Ð5”äPâZ®*3Ú0•qå°bS‘/í4&–tt$ï­æ=ä®´™µ˜&Y@qàpÄ'Ä^òåÑ’[i|ЭŒ±Hí_kåPŠeávô‚u¾å€›G!_Pd­‡ÊxLJÃñjæ9³ù[]]•hjaµ Ê’¤s~tÛ°ZÓ¨·~ëwn8ëK7G'e™^ÜÜê+oŽáûE­/¤š.¯íŽ¡±U[ÅR̾täð­~YÖÜ÷-íNvßQßñQ§ªr¤²~ñìÕÉÃàV¯»G·â%ÞôûúÓ ­ŒA|x§;ˆ av¸íœ­ªlîX5E©)6ë”ÂŒ*Gñ%ÊNâ*¢ua‚mO"—û!=žÜvLEïP{xô\"­™¬• ˆw¶ŠÞnr;4"GÇ“”QÈ¢E¬ÛVäâ&n¯%¸î=äˆ%"“ÈH‰ùª(¼ýšh‚M§Òzr7Gµ}ZZ‰Ói6 þ4[ÓEe»¦9Ù}]…nõ"룽¦>ñ£{¶o¿°žõ“;ßxÙ/Nû^ì'¤†vttG÷òšßon~ýÚwõ«òè_õ÷üöÛÏ,éùr?¹~Ï“=.Õlz‘‚¢V›Š ^®ÛCn‘JÄWÛ¥¥©ÞYn[î"ÓšoŽAzÖ ú•­µØ>Е÷ÙÜŠŒ¦ `0 Õ]Ú¨ç[Hä´yAµ¼x4ŠH)”ãr=‚Ê2°ÎnÌZJÛ’5ÒÒ|ÔÙÓcMŸ¥}ZÝv™úhŽÒ+¯C•Ê¿™^[Ss€¸g«TÅu.ìÇÕ”G‘:t×çI“¦AG@DâÉ|’ÏÚý™Pžm…riíöip5½áÉÿ|ëËQÖëi jÙ#ïk®Ã»]1í ®XGãk´º,ׯ&¢Q»7xõ;»rW=×X“¿z|=™É¨[ÑsZNeTªTê¾»}i$Zƒ¥^ $Т/O|zóDàãëÛ9wî—b—"/Ž¯î£®4óîèýÎÛ³Ÿ|ëõƒOii¶ƒ»ú7õ课ÚU/s>çnÔ‡ÅÙW·MKgÞJcëÆÂ¡è&³Þ_ˆêÛ³œÍÂ{;ø]M'õü$é£>‚kÐèùe'‰Ïbe´þ¢ML²­£ý}í&!0ÂBIîa¹ÖSáÞïÉÖ”œ× ¡Z¡hØHžU­w"Ev{ûúJ¶¤}·Þýfw͘mÓör·òöbsЃmìÆƒ@½B؈W1åN¼ˆäêüúÓkê”vÝx8çw*»k5aVõfqpy6†Ù¼èâ.”Тø]mÌWnÿŒ¿¿¿ýÏ1óo­A€1Jš–*×Y¦,@vÇ—7}P)ø«¼ñí?f¤°i›ú¡ƒI«Lk­ƒªdÅYŽõ+…;ߎþÚUç™ áÍ›^Oô§'§_}5*õ6Ÿø¬;·%½ÍvÎ<ó‘ˆìDéÈfÜò#»Þõm‹r¹Èi+IKÒM×y8¥Ê.Ý6Âî¥=Öà‚7ý¼Î÷H¬À’¡å ¢P‘ɳÔv–¼ÛÀÊq8áÛ˜B3kY¥¾þœ§ÿÁc”„è‘J©{ásDÛ>”$›d!¿•ô$»’Ò¯v%eTÊY\nsÉ}o$[‚Š eé´­íÕ†ÞÞ_!ë+±¶ËÒ¢‹_8À›õ×i»¬'––@œ6 &d–4ö¬h)+M¶SWfé Yg(LG·ü=E¡Æ2«ïÔVðïoÌ‚¢ÊlNÌœÊ^$êFÂ4“2¤á(_”Ú@´¢T¬§qµH,4“(ÓÌ{xº HJÓŸt¦#øÛ²¶îä³…q <á—n¥F5J)mË™R€G7î¸Rˆ–´‹Ù$›E\< ÇZXJP•*]wÐ:Hï÷,Ø£]ƒ©MU54ÞçR™¦™ãh˽07˜§Ô›"ÓK/otWŠ‘TPÒ“l»ó+éýhÚlt‘Õº·¢Òj³b¶??ú›ŠcBð²P#u…OôM.¢éq¬Vcà m!9˜Üª:"Dì *o(šÙÙÊÆÞšÚ44êÉt*í¡9%#y—®±Â}¶VgšŽ  ¤ÐÞ¯oÍÃ[Õ³[½“g IK6qð ì0Û$ttÖ^Oˆ¾rL¦ð|äxBlZÿ"$š'ÉQÌxþy˜G¡%ïáÊ[dð%]:ý’”U™»…ç°PIÑĸRy\ñçP „Ÿ>>4¬N!jR¸Øn þÖøÊÄܧíô’ßè„c•7»ýN³4;# €Kؽ-î—‘*䥥,Yl“Šç_ Ĺ7w¹Ï†ÍúиUu3ãÆuo—æî,g¶¦*¼‹˜ÁM}HëE¥nülOƒÄMkë3yñsÖxß5G‘¬6íÅUõ­¬dÙ”î}¨iÍùŽ:j…<ü„yLäâa{:ÑÕ*,8¯ÍRbð®õMGIˆú LûɯkvX$—)¡ÎþÇ KxdPüÈjÅ@Ð&t,¦I´«ƒ'yiŽœò¬N¸#äMö¥F–§Î;Ø\aM…Ïâ½R<*Ó]ƒÛj™ÏP¡Æå¿I³–l)AäÎrÜêÉ죃™^÷aƱ!HFx–ø2;‚ùfïQ'±'`‚¢„ª¼ Né¡ÎʳÇl¢ $È ‰a¿J¿äÐÁPA: ,*õ)uuñsiNš,Hˆ_ÿÒÿ¼ Lל3}S·kÇ Áà^ÿFeà°MÚÅ@ƒÌœ4ûœyÓͼôÅßôö›kÏZŸa £œÙZªˆ¢á”Rª$’_êåNà“ȰK\4¼Ê£™ 4ªQö ?£Ö’¹äu…®”ùg“]ðrg‰rÍà Jû? 9–ÙC«÷éBw0>Û16 «ÆkÂg’Qü5ƒ[0BÕ?Scä—Ê‹¨"âzïAÿ¶úçØÜ‚~Q³«× äûÃe…å] ì3•‡TcôæP×£7=oŽÄ‹ÖJ;oÁÉ_ç¡MG=6g„h*„ïVT#£ë}’½?§©óÕÖõëfK¤Ïð=Æ+~³;™Ô #=ƒûƒÃñ®Ói*êobÇ=UûY÷ãì©Q—AÃù¡“…Óµo"Ée:äï" ún°Cß°Jå_¸š–Ø#È:­'±Œ3P¾úѱó+Î䳜ù>ÁÇ-ê³UÔ›mÍ?á\ª›ý¥x-ñéï82<~/ù#$ ¶'\rñžù“%Q—i‚ªv‡9Q~_zpM.‰$ú”Aäz L¦YàPSõ-@x¼™5ÂhñKý¹ë;htÒC¨Þ%‰s†/2¶`cœæQVñJÔ³9áë«Xß’rèœ'uQsÎÁ ·–ÿu]]ÿÜÁ)dàÝx¥ãÀ™Æ¶‰gË]÷š2sVpVþ处° íD@ÞËÎøì2ù×H×<- ê çmò-¼¿¯»•Í©æ¦ä‹N„q€ò?}Y¸lëÊ͇½šôêŠâ³;Ê ¢‘`¤Øq˜®b¦Rõ'[þ©èôgÀÍŒØ`{ÞODiu®gùþ¼bÔ | þ §õ\’z¹”«/yøMa¥öàªÍnjìn #%¢*’`O’}ª³üb s2ow-΀§ÞÃÊûŒ°*°}èÜK‘-$¼›S˜3‰ n_ÇA•¦œÓÁdgëÄkólt‚óÆU`V@˜¤ÿÎÓ²(º¨¾]Ø­Ý×5gk¦óHâ­±øù3qŒØò%Ñ„™…Žû«Æã»ìuç„Æì¦AÒ ¼ü!Ž1Š9¥oýð† ð$1úê}Z_X:C:€ PMÃ$¥ªýWQs¹ãŒœÆ«°E‚üƒÓѰ?ð—ké¡/¹õÝœ!y¥åE&–D·Hüø4ÏExÍL”ôië”êÉûd¿ˆã2|Ä—€ÐväÑ%Íæø;|ñbdI0aæjZÀ×_ŸØð`„$¶sÁ2,^˜ÔqÛÍW{(2U³í¨¢»@¥|úè:‰Wqê¸E{Àùþ´¸=¢*Ømékñß›õ('§i¡5ŸÛ™¯¸Ð8&¦0»¹iM¶Hê†]`Wyþ ƒ™UwÊÿ+„t! t-Þ¨¡@š’Žëqk>‹Ë¸ˆH¶ßgÁ8ŒÜÙ%³UHbGï8*éâtsÊÎBšf[·Éê-pÏœ†ø ÚZȯ¤ïâûï²pË)Jç4*½’™py›épž'þŽ•&cdÅ|c-ÑvØÊd“ý‘|56³&HêÄê€]•¸¬ôz`Ï?x#¨]_ †88É@IZž„žïÖˆ4–l¤­Ð¢ ­¬k²ùÓ +ĬÚ/B× j;ƒ Ø ;%õ­à,‘$QC·¦4Q¢A}*М묮ý_ú§_µ¦ëì[èžÒ9Åð«5 ô“Ï[¢«õ×Ü~ˆ4qŒ3“ÒU"¦²ÒÁ/CRn`æY[FT…À8¯'ñÌèNÙ‹{ߜơRÞ TÖX.#nþÆF_†Þ/)ý xw9ÚÀB¡A&9u‘5:7¢²õ2䬶î]DdJïËìoù+ê²4—wÕ5'!b;°5ûünŸ¨Gw³…ÛãѺÈ(DÁ1IøwÔè°¹˜8œm ùÖÝpé!`¸yÁm:(ºûf¼F|± æeó–kƒÝi¡¡Wƒ…’IpåjÀ0³ ‹wC>_¼+¥¬Å_ƘñcU)cH ]ôÁ‡c²¶,Qà/Nû† îø­%þ‰W^™˜2j}Qê§áÈwÕƒÒÄ•øòø0BQÁ5t£›ßuûšK×®{óžé×Lá/ )Ï)*ËÚX~høŠ„jx“+Rb/]ÎÿáýPX­åÕüAká²Qi”p¶ÍG@t©"?o@ @o|_DRé´ë¾` íPÑêX†Õg˜l°?Žá 4±èeGFu|PU«î”¦ÚÎò,ïF5&ݯÊ{›ëm‹:É«Å?-#-®#˜ÂŒ8ŠÙ åSàöÝuæ½tþr^r’8/æ†û°Ý$eZô`º¬»'6å1í…§˜yôH±¤Óûݶo¼¼ Œ÷§¿Ê^A.6‰±Ä_P&ôtß­Ú(’bPœ—Gkí’D˜J(Ž€®W¬ÑA™pcšÈñæ¦bB­g<‹¤æ­ù 7—CW³3z4ò¤€x¾Æy*Wª·[T¢äp½Tu\ôú«Ø·=¢¡Z9åÆˆwÜ…¨SVDµj1‰~æÀœÁq'r4ø-Õãæ_¡À¾ð,ÙÅ3°:ç%²‘?‹þÎD°Ò¹ã±üçŠØ*f‹­qÔÄ‚1Û™)äU›7¤ñÃAŽ›nÞæ™ÛYKëÓ÷kN»‘Ÿå)Ä©¯ ÖüKäIìºJ¾H8FÀa]À¼ÈkŠîÿ¥£¥IÓÚIË5ÏœàÎKsOá1:ÔXôl7äx{zô³¸xq‡%K¨´ì¥@Prê¼oüHê…½üǺÚ`À°ü§©,åÖ˜²Yì½Æœv}³]è¦9Ó}#ÎÈÄ8»j« s ÒäubdÛdÀ^ù{{ÿ4S¿ 鵯!@:×G4ïØ„FŠhåß³”g±J4 h4Þ}öJ¢ý[nȬµ_ ªS–tsž0g®wï¾µàÉ¡m~ªóó€óx„ŽÚéreÒ…àDˆ;;C¤@DŒ³0pÂ{S"‡Y2T¤f¥> —º°çªÁT€+”âêšmž_8FËv¼9Jõ†a›á’‰åU×/„MUþC wᨵ-û‹?€M„?Ú¿¨‹tÀõ#wÛ,%äC7¸VHï÷)ky%öˆº#2YÉx›Y/²Ò…‘*ùËÖé|îÉÎÚ¿8wÊÄ¿ vd-¯ÉÏûå:Ó»nÆük5qÑîw·˜¤kÍH,B:”±ì°èâƒùIäD€¥i¾o¼J˜¦ Eý*¤ÔyÜ$?H_ЛU0‡NèYe³‘š—ÄÍ­t“*ÔýÂ:q€I0׺ÿ!ZÀE¿ƒfȪÕZC6E"ãcJ]bà``ŠÒ0Y1G¶¹HX‘ß »õ*Ù23#˘¦ÕNá¼}e«ç©üd¶ÅX°ƒ39@ SÙ©Q½:e72„} þPU˽5>hÓ‰øùK‘oÁiœ!Â[$ÒOÚ]äñ·‹‡ÍhàõÔ&+Øð˜€[ÆJžbƉ;>h>ÙM–JAÏ_ðP¯í ¼²N÷æÜ4^  ˆcDE,Û¹Ê<Œ ¨ÑχRo”ÜOtqϧÏEñÉ\5Kcà%óÄ—);IçQúX—Ö}ÞlÒGº˜¬\2?¬q( ÇªXTÝÂ^z ”VYê4ú7‘ì£ö?Z½è›á]ݯ£&~¥RªŸsß(…ª}üDÆlRÖé-„AÎ¥œuG ÌAbÊÖ*·{WmÛ¯òé7/IÉ•«¤cüZ–°,ü-Ñ$ež+ PA0D›­Z^J¾ÍŽ²Ç¯RQô)H¥×¬h|6èW¹ª÷Œíþ3*ǬvDyzCr9ÀÙPY7ÐåC¢Û÷šCÐìÕ-¸á5…ÞXôAÝg²2ÆC¿¾ªëµÀœÜ5´{c­†Þ½¨jÝpá†ÕQSgæ iëk£óa$n$©ËÂô ÌôiÙ¢r>ò'±” ©793e5ÓÅè(R€µ/Á¸óÚ-2¯½ :£ÆÉ7//³4Ûo8¶²3v…ÏÑl×|ٵ߳Êðg™°ãÀÎå—g\ë§ó§|™26@e«13&®™z(¯@ ’ª¨3Û|·ö±Ü#–ŸýœÄN™ Ïøh˜æùa/»öÊ-‹ÕßÙõ~9=^kº¿˜)þO4€ÂÖ:qGQéÀÖÓ¸ü5¨Š\$Íñ+¨bxÇqcbÕo¸jª|ð.^8üÅÁãoÇŸ3ªAfà {s$;¥Ë¥Lþ£Ç cë  g¬œ³Í•¯§ýTØq¥R24“U¿Ë†I¦a‹—ïÆ6ƒíè½D²Ùïv¼Ç—ù¥uf]†Êè¶DA™ñdHò®¥Çƒ2r˜ É?Aâ¸6ŒEˆ-¹ç`ø4à7‰!¼GÑôpËK izLC梟C_,WO]ÅI£PD‡Ô‰…˜YøŠ„6…\’äY°hcx÷~TÕ¦VP–öËñuM{VQ›bçR¼/£âø2E[’€¥ÒÁÚ$“ìëôóÄ r*1ãN©D,X²U‰Šüd’å‘+û¨…5\¨ž¨g2 q T f 5wzÀéW/gXySöËŠûíååÈ3¬ «áß,†¾–(I #ÿ‹èÚÚIÙÿnfŠ®e7'™¥|"[ •+Aw¿@'hób`öâ¤hÃêÛ>çU4YN~x±¡Kf€ U¿}æ®7Lµà®"²X ž ›å'ÖwaU'ŽR|AôsÇ8AÊëMù0[’¤ÜÁ4ê±Õ,®J…F0 nL-2!Ñ ¹œ„ÙxB2’ö‰OH¤¹(Ì:!ÖZ®ÙõÛƒìf ž¦u{ ¹Õ0š.]øøYñ@]Ô)—Å1,ëǰ°žÊŠøÛ¦hÐc¥dÝ÷tií!t8—zV“<ÿíÜȾä÷ËØ§/ÇÍÊŒŸéï×Òí½Ä¶¼/g§=ŸØÇÌ•W~Öb(ÞhºkTd™ s lnšíËt9I¾·À3¢”V½6 ݬʋÔ‘vxÕB i# Á©=Ñ_ ó0 uï «àíúS :$¯iX/F^©õ2ŠÌ ëÍ­ÌÊÒV¶\Id#ñ¡nŠg¤Ê&Ê d"#M@üâù3wÄ¡Üö †T÷ϲ6€^¿oò4ÕKy\×¼Y}Û1ä‡gÍxŒck½, dÍ4 {O ™‡öe–šÞ3ùom¼8œpOØ/ŸàŽ3pôáë®é€`\ôG¾jŠÏù씵ôìñ*æþ{Ü;?RÚïÒùõЉ[Ç€aàT¶"_‚c§=8e³S Yõ«£­¬ÎòCþTûišÕÜò!ÃézÐßk/±áµš ùû§P[_Íäu­æ¥ë²íæ.òHOƒ“|1vW×B¥òñy¯‡MU°Da“kïnÏ›«ˆ¶É”xñ÷zóBÿ¢¸y§@mÇóÛZÉþ,{RöòešP‡jÈÔÀî bxbùëÙ€½ö¤>žp’Ä8êY¦2o›˜8FÅÆ?¿à B4@.uÿ±V' x“tjžq¤<ô ¾6z¢›ëU!¥H£-¥²&ä‘ Ê GÛüb.}¾ß“¨¹AæcWh‡ënF_™àôÖ*ûÀ“-XöJe_C¹/–\¨É^&çoµ¡µþ9ËÈ»Q̱㸧ß žÓ¢PÙÙO]⺘ÈäÚ3 Ê(ó=¹Î2Œ!/Ð5åŸò*ÚdE«*‹ùC\„ð\ŒR{êÑFIÿ&:@–+dçÐorÓ‰¾9‰G7x,{µfnÈ „ ¨ÇŒ?G7=å[Ñ”tè~"Þ>äÉYÝQ¦£pl¯m$¡ø ò¬éCb…2!vmª±î€6ؾ(\üÍ’»Ù5wq¼òYŠÕ±âÛ"î~MÍ¡j·Lö–Qî†ÐËÉ-fóX‰ÆÌi·í{ÓÇ™µ‹©bC0œ²^[♂{ ¢ ©­f‰@QéýËõmäó-&jÈ“>ä`&8çÄsKiT¤› I©¬û^š #—’äE=ÃéGÃ#ÕóÓŠ”·.<>$ÉÕR†ëë,è´»{N6pxì—ƒ ÿjLü­mNºoÁ˜ mq……û Ó¼D"ãÝJ©~­%€]X¢…uÂ$½<¾yš2püµŠdËÀ8eõŽÑ ÞTK;„ê8ŽÒZv<CÇó⤞_»H\ öfî•àMhá6Ákö{ÚÖX–©{×ëÍï,NÞ§‰ )8u,#ãêŸ0æŸ%"ä÷6›òíyüIÚŒ!ššT¼ÞJ7lm+л­Ó*<âu8zl¼ì9a«óÓ÷DÔ÷Ñh±*ŠG„Íœƒ™œž'‹¾‰õo#ž«¹‘ã 0>"DkÉÑÍÜmå9,ºòÖ寉x‹yÃäs~ÉcóëZÇÌ xÑ¥¹dï“ 2¦Ú[ujÞ•ëÅQê™Î t™µqf+ÿWoîµVù¹‡JF«Y–fçö'îÑÙ¿®þ'ïË=¯ùQêǃ»&_æHì]“0éž#aˆ©ìáKKrXô™ LÀ„*v=P[m¨ÿÌÚá}VãJòîÓIxY·øÏáÅ_>De†Ðïö{ÒC™Ñ?d`±Æ>Ýϼ6ù•Lû…Ád©?—HýÙ– ^™‚è‡Èß²SȆYœÕ\ø¶UdÓéfRyË'¹C«C/ErÇ @Ýc%[ªÓmk5ìElMÎˈ¨ÅQx$Ý °AàÓùŠ€b·z¡Õ8û/VƤówSÖŽ%ó÷HrOëö‰ tOëw¤‹f/ûŒ9|ÅM(±:Óüô,&Ãm»0sòì%ïm’ižcTíH"ˆ›l­ï?ð;¢ …aqÉÔªUÃ.È„鬜7ZÉP,1“&3Rv½T–A,`ËmKìÕNÓkþ!¶2!$öDÛ,))-­E™“.|¥ Ø!óW—ð$D"XÏqµÀß yQð])Éÿ âÖWÓ,¥UkžÇxÙAºð\—{é³/Pø—Ýg¤Ò•›¥@€ý`°«—•¬i.Uï‰YgAÖÅ‚ÿ/WLóa9©wRyJi§"XÙÜy´¤‰ÍL6W.Ò‹Üï-æƒP™l´}øw.2û^Ö¹òšÁ$Ñ(u)ür˜!×!•\”†É~¹™â>mx¸OwU÷½¢ð|sÚ­à2¥ œxyºUçU˶zEXtF,®Rî¡»îÔ4:§Ý0Ï­'êU+‰˜.ÆÉ¸w 1õ©Ï &f¦ãhU%Q1K0úX=[(„S2»ÕåûD¹(D*cÖM©–fà‰âÍÀÙN¥Ïá²e Ý؈ÀòÀt¢½~“ûQoç‘#õø.O4‡ña„mǪ<ߧǶJðÝý5¸LaÃ^!³½s½G©ô´§£tƒø4õkc;|× ]1S­€@§V½8ìÑáÏt¦ŸØMÓ^u ‹·®)Vmn¿Ù~ÉNGæU‚jb:Ò’ vÅøƒÈ(IÔ= ü­å`t5ý/’Îà,ϳ¤³~‚zdÌ{ÙË ‹¼¡ ¸›äíQô³,{3;¨ÆFB±»iX¨ ãØÓ3¸ÜàyŒ\9O›¤0v—^ZÜÅPÀ=L]ßÐæ…,}%…¶æµ–ÙoªŠ+5>`âA®r¬ª­3&Ï6£Á(êƒÒ ö¡k~2ü˜t9„\^·¥Q•›0lm+À¸E [NVÒ‘¯Œ"õÌhǽX0wÊQ)ı éÒLßí¼W;ï:‚É3‡S×g¯(8ñÖ@ÅÅågÆ3Áw6ágÑÊPA€³6¡}Œ$§qäöÛš%)J“ÀĬùþèæZ„åc»6Ázå&f¦(•nGÁRMB)¾&Ò¬ ŽOÁå5£ƒØ´ªzK*s¹Ü—,²žÝH?ßådÎŒ¹IA¨¬_{GsQ<>’Ô‡\³-±Fêe‚Ô>̆§H0µ½'2΀·iA†ÓÙŠ43›£7P„Œ:$W%Ðà(.,Æj¥q/¨î/ô¬-›Í˜Û%í.¸Úg­–©Í;îJ©¸ë819g¡×¸‘¸‰¦âjD‘¥‘;r­#|´ywnj+ ¯±K‘Z©\¨äÎçg ô9i^¹Ê1IçÄ?޶®œk®eÉ—¾@CH‚V€ 2ˆüï-ä¥É ‡WK8(ì›M€áv½NK<ÁB'œZÈò¤Nþø)Ip¶óîý»ø=ÚõÙnÞP§™6êà¥ÂFŸkæJ±¨ä¤Ɗ[7Æ\èž ±AÀòÅæ/Ï;/§ƒñ³§ï×ùw–å“êñ[ì íØr—K–§Ã.O÷íWºÎ÷aAðX° ÔBÎY^N |š>Kj³)sB ¸+Ðì!¶ÄYê•“oeÕ'%ý ñ¬IãÂ1&i¤EbZµWù™#¯Z¹й–a} ¶}µÔË]-çoHmC6|Lˆå/Ò•™Õþ•e`Jæöñæ&>·4²dªšÖTö$ÕÂæS­'N.6V}'©ÁoiO, Ó•F—–Ñ{âSò\ûâéA.K6)ðHB^†ò ÙšaM-LÚóè–h”ÔÒ Ò³ñWÿ$ɪû݂ޠÞ40~¸±IW+rä•ûQÓl ÆMh!Ü1XÊòîçyéƒH©9ì‚Ñ%}rP½wÒ^´ ýÓfõÝ+èâù|ºè²ÞŠV–ƒ¹— ãìuÉv >d ŠÄ6¨9Ô&_‚RÃ#B=ÒŠÙ¡‹†@9Ê#ì™øHÇ%!õêÙRK~XvÀ^¦ó´¡ )œÉðÌ FÂXbÑxd%X1 èO\~Ñu•tl(8ë y}§w`ŽÂ¯Y1F’‰9Va¼\áö·)„ÔªèUô¬®A!/Tkš~z¤‡RçœÙÀ ÍAª KogóÓÉ …€æ-Á2ãw| a •)ÆŸ`Gyƨßo¶£€2å¬nX8‡èö.Ç°ÂÆº¢ Åe'^ Nã€Å½‡­[ïѾë©qVYø„ÿ€ãEµ|*¸0º?Ï–ÞKç¥j·;Þ‡X˶7]¨ŠËNTÇnWy “m÷U÷P ÁŒ‹ìBøû²­ïhš ^¾1ºõ"”é„xU^A£†|çcCîäGJ~©küKn×b9ÌTRÀˆ ©Ú úŽäçœÛü¨™…2þ·^\•æ)C7ПWæ?+°`ÅJP',,‘u0ùŽŒ±ðÔ—·-þÃÌûŒò¸5d«Žçîö1ÓmÉå¿îÚìhâÜBÀÂbüå*OA@±T„V‡O6üzáu'—ÅuÈZ>>ènŸæœo-ŽXµ;¬ïw]r[W¨À†ÓÍv#gàZdÔ×(Z’P›ÒŸc¾‘:;u{–`âµHµ»zhê’NÌ;¤Hçæn»k#‚‡FÒTu¡Ð%×îÍQ‰1­»[«k‹¬šÖäzAåøÝ®5óè¼sÔ²OªÙêÔ§úí&?R'‰º&+[Ÿ$˰°Íd¼s².ãöïa¬À$:&Ù:*$Q~³úm‰ ‹úˆ¥)dœö4­÷ÍC%¦”p9å ƒü£Š÷+)p ]{)öí‘ KÚê3QeBGèCŠÊ­“‹0‘3*£Þ¦øq´äWÁ zŸ w&“s–ŸÌÅɨ(Q=*œ‰í`TA„'¼Ê$Ⱥø½¸‹jãУ9æOê£AÂ%À¢=Õ{/+žò•G\¸S3šˆ§.ä*ÇŠf!øýÕâ«Å‰{»•ц‰Š©Ûæ$Öš…Ý×:o‘fáX ¨«»ºHø(ÉÀs-BíB0Œ< ‰Ö­t|÷0y+І^y½µ>Œ·ª¦JL€Œ˜BBqF ¬(–Ýš@[ ý¹q0­8äæwí¨~'™qÜ2ìj³ÍX‡¨+•u¸jÞ¨&™Š«°âö±M¾XawªÀ¦T«¸òô„¯ì æOï0c"£·â ØÏˆí^Íl°­rá^nÅ8Ô¼;ŬéÕdÓRÔAmKrz nòýôSyà þÜgtDWø4©BAá©ÑIZ‹ÄZ¥&¦DÙÏs#y³áÜUãœdDyÝ d‹+¯2*¾E!wh¤âˉ¢núÕÖ‹ YÍókkZ/ל :—ʰ”°ß=HÀ ©K¼…eˆÅÓ©Õ…šùjÔ"€›i“ȳœý©A‚j¯¼ÐI MÁI]W ×Ô”_)W´±ÔY­q ƒD ãb™8AH¬<øÔVŽhk'ÿL9Y.p\ÍÖ„ Äû±m†ýü"´W/5ùg¸L­;&D§N-W7.Eý&])Ä­¢„– L ðÁ{læåó^£»uä‹a1´à>Ôä‘~ž]©îš‹ºšµè)±Lã’ì)¯ /¦÷Ý¢ê4ïb›þ‡ÀW’(ì‰n·h ŽOÁ–ËKoŸÄÑ l1 ÚÀÅ(\†·[xlÜõ·o¾ 1´8ƒÑQå¾XübÛvËš²eÞúÎâÚÞÍ—S¶3^F廪ÔË“w¥M®48ãFÞPÐE#gUiø‰6¹·p•6&M¬£ù5•ƒâÕÛ SèöËVþ!?)mÆGÏzú0<À›¡~RòS„DèyrP`bë/·NAœÄÐwñÓyx ͪzrÅx§ÑC1]ò|¹Ó¢‰™DúM{±tM² <øÐäôdº8(u>_X“N/bp^ú˜0ä€{|5èdžÿ¤ˆ3PÐçÀ“H÷ˆ' T¼ÃX p‡ˆO>§` ס†É vz£©N$=¸? XU»©©R?»îS9©U[a:Èûiø€ ×^;UÊ(S=×qgçÚÒ£UºÕƒQ5Ö­l¥¶MÁÓÌ<)æH'A^;­g§E¸ éþ¸èiæÝgôü‰7ŽÙsJ!Wšã‚·¹eÖ}þW@؉ÿÅמ±bàP±6|å…yS_cz™­µ›缋f¤æÈã ¸=N?Ô§T-NZ—˜Ù{è³ñ/êÑJoLŒ”z•>¹“µø|+µó…¤´o Z8°(%!ls?$üúqª²ÀkÂÏr¢¢í@<«š3J`üÊø~«J¨®ëç8 ½½^´ÈeÙ#)‰ÎÆsÕ ßµâ™“‹ƒ®›_ŽµÛ‚=>”5ðÄ«c”o쇗0T«Ä¯iÐzd'͵ØuZÕ<çås焾j0䊸gÉ‹‹=œ$²7•Oøææo|A1m• g ÚÉZÔ\ñjá0“/&_h’ËY´X,룯õÒìÿëUŠ1«0IÇÿÄ Ãu™ù†˜£Ë`Ž*°È; ãêNMXma Ú¡®=X µy¯¬8ÆžŠÂ–¾„ç¾Èí,b™­®u§¨Äý¦€8ËÝH©Óù`«;¯ÆØÂ&~ö³€8õxOuå4%[~ç4ð–ÈXOƈsÑõ gëðÀ‘¼Ã$xB! ›…SרwXGÝ#òô4™@¹—vÄlºÅÜ í¿nv…/6°Z¸qèÞo,ŽÔæ…çâÌ½Šœé .Ød©•ãŸ3OŽ‹Ä<O׫ïÝ5fŸÌ÷aánÑEÏSE,YäÉ‹AdÚŠtµcÞ¦3#/H0IYE#½¬ˆË.ç>1¥aÿʬ!³GÍ iJ2ZÈ“@8•›ÿ[DpÐ3Sýa‚±û*zló„¥g‘«Y·ïÊï mó-°Sz7ÖW¡éÅû;@[¤$RÙp ùÇÄÚˆBׂK›AÄ“- $¹ø *gæÇ+‘lqD|Eêâ[SȲ•‘|G‚, ™ÄGr15É~÷ù†Ä ßRý,¸Úµµª$J KgCMUÉkÕ³RüYÏuâ*ä$æìt=´çôí~ÐAÕS¤JH/º¦YšÏ€0ÛÎy&¤ƒ¤pá±® –€]Ï¡ kaòØd–µÃ¹Ù¸¤'ø²_/]êÚt,Øð!»À'¬¡D2YgŽÛ=Ûô®Ãw÷9å¦`B„ì½aÛOŽ:k`ÞWì±’½§]­!Š€Ÿ ¶'~`M/=uDxÜSw¹d¦‰¡5YÑÿ˜/ác³O§Œƒg ƒQΓRQ"2"ö@²ªàGN ©0IšÄ#ÁïPuº\TÊúBÞM#Eqoå²ÚöF+³ºNFµ(èáÍåÅ·¶Ã™õ½[ž°Q†Žâà rP@*²€ÿ!]¦,÷¨uÃ(M-ùôÎò{*ŒœBš5¬W¯ ÔW£åI!Å®r{x šKËm^Es§éÉ ‚lÆ'3Lvã¢cJ 81k~𱂆ðð§c#²$=xZ6ÐA‘klÏ25°IŒiðIJúŠÄ vL\¹2i6ë›Wu²¼x×§èôþ3˜x òS ±]F`Ís®Äe‰Œªn‘µ‡ïö¯ÀÕ«Äê-›NìåD f˜ù½¹¶·Ãs†Ê ÂÀÞ‚é`‰‘¨tÍËšR¦~„“ gJéR‹7¤Ê²Ÿslç±*0ã7À!˜1Ð,{qx"ŸÕ¥Qô™ŸÑ/FCK1]F$ „°U.gðØÅZô¡ÕcW‚Äæ"¥7c’»ÙÎÔì8Rî=õT™4ž/ J¥*Ùp_Ô™¯Y˜ºÂKV°ÕY_î/¬÷>:’wÂàp Ö•écŒb>ÜŒš¬M]è}&‹„¨2Ñ4VôÀÅÝ[=Z-N0Uñ3蹞¼%b¬é Cüsø—ÉëÜFš¯Û6ˆË«Rìko箇þ8õ¸—?Lô­ÖFi¤1œ3ž˜µ2ûç©CQz‰Zêv–rì˜e©½²MÄap†ÑÞô¨hßÑêE˜„‘ ߦ[Þ.=ªZ áæ–b¢ŸžùÕ÷k_8ó¾mMÏ­û'ÌñEš[㟢çÑ:¹T,«CAÌ4op|d=‹Û/ ¯S/0턚ù7 nÌÈaûy49HßÜÏù Ö®Kލî™|P¾ï`¦ölñöщ(­T5‹òiçø*nä@#Ý;`RšÆ˜p2àé”}Ü\·mtÂAþPâgòÏïN&o3l&=×Ç¡eµúÆ3 ögµ@& ©úav¢22›oÜÓ14¤4Ôö¬sàýPÎ\©rVÑYg`h<º³¨Ž•WǼEh„L½¡°Îù᩸Íf´Ws+e¯†£st†¦–cªH‘·xc²ÔØfXó¦%­,û=–z6”ž©«„ m”¶Š\±ÇéHLìØíÊÝn‹Ëå³õìß´/éÅH1ñ]xŠ–Û¶¿`Ø =í¹Ð¸Qw½´eI<_`_jà>T˜»²б¢Kûê}±ò ñîSSóJ™tHj4-“ÛýêåÛSÖ ‹Uþp“:Æ#«@)É0òIgë`B†d%–xä¦N6"±výH°™0ØrUòmÉF}s£ #šUx^4‹´5m¹É=`¹ÒÏÇuWËBd™õªŠRy%Î'ø Kb³êrÁÓ×ã•ó˜kTÝ@^iœq{YìŠ-™¹v‚D²/‹7ì¸W'6œÓÝcR µ%ñE¯b¸rJr1†ÈeJ\@F4[ŸÙ/I+7 5ÅÌÛåýIS%;á!õtƒBåpÔõ¨È&9Ï{-"n ¨O§àŒ NuºÛÂõ-#Fýß´w‹¬,SûM£r­+·l‹t–Ó í—O‡ÛØŽY ÜJÔêÅ|îè¦=pÁ“qËWXõªRÊ„A¼‰ª9ëþUãDRQË£Þy;ûYNÉŠårGêV(w€ßfÉtúU×Åȹ0Bã§zbeÝü(` ,)×gÖ¿ìµEÁˆDƒÊŠx°>}|ŠÓdšl2M—zÎpükr0‰œÍI¦œsTÉû&â»Jí {¬Ñ@üoAÍ#«Y4¶…˜P-^<ƒÕAfʪ¾ë“6îÚ¯âkâ`­&OȧQwƒ}’X< /óÍ  ?µH*ÿ§Ú¢¯ÿcó>E»:oL¶- ¶×†-áúüZëß•{C*pNäÞ=YèÿFïâ ® ö"²‘;£s³¶Š1ƒ öŒÞ‘Ñ®ð¾»Ï§›˜"ºûP§å$´Né" (çP K.cá¶:ŒR–¢t²ž’Ë.Ô´ºD¢ ,zÈ6Ã@¢þð¢ä7fj»b”ªùUøl—§\йú£&ù|QßdTØ@ɈžÛÈ3¼—?ÅRÇF4îÏP»°¦ïÅÒ˜U‚•3hB^]º§böiS†ÓÞEŒ!53ŽÁ'=& G·|ɲ›$Ø TÌy Üg¥÷ôCÆ*øç·„Ž#G`h¨þ¾û Ó>úǯdƒ23" q&µ/ò+ '˜Y Ëtsrí ~u§B㬶®RñÎŒyi@hç!(Åc 1qÅ÷àÜ׋9°Á0¡rjõ×%#E¹tÍäZ䳕Æ8ž.26½u‚d­À‰ÿâÇÈ©KU#¨°EÎmüó^ÛžÒu’>Ü…¯±¨f|ÚXQ´‡”ð=W ÷Ìî™i£=ÖX°ì§„+í\vúñ¨©Ai }LÁdû€€n× ÀRম$àU5”3ösùM„…Ò˜QXA`D@|8Ró¨Â~s! ª†‰}{¾_wðk{>ßù]71ïë\ØâÙÍ’øxÜš(´‰x¸‚{‘,¯eX„태“–4»"…ÓTSî¼~n"‚NÕî̉ܯ›7®%g+ßxÀQGË\›¢bã´ràUœ,¼1Ïøˆ[P”4rU؉M÷cÊ$T‰nÜCÌ`–cª¸ÿâ*`>ö‰°uµ•UëÏ…XÝÌÞâÜX½’Êü|p÷ìëRÅ<›®vå4I+A–Ȧø@l,Ñw M +Ńjo Fø{ºp jÔìü@߫ڮïQ$ú?{a?ö(ãÅ0fŠ5&"£ãm‚w”A¢ÅUbhê+rÁ£–¦R¼é̋ࢲûpev×iˆWû‚v>V.Þâ=#Q:²ñˆ¾’œƒÉŸ5‚t¾ßn†¯TþFF˺í4h ÇÙT6Ð$íe+—f“Ä·œŠÕ«G=%4~¿è¤xÕ¹ÊL­à^Û[®Xf>#gü€G-)šC4ÇP#@-î|T›®üe@V!Ñ#F•¶`,o÷<ÙUŸ,¿h*ÈFß´NØf_É!”%ðÇòË¡®¸¶JTˆ0´O)]#p5ŠxžÜjŒÔLWÓ”8Üõá®éœ»qêºp¶Å0¿JòÂÒrÛý€´Ó2ÛÌ^€ Ë(þ@ÇÍ>?؃õå 7æv\CMrQie7ôÆŸ»¾x[‹bFkPÚ‰…&O%oÀe0M.´„úÚtò2ÖR"]þ¾ øVC’ê£IÇài0X°2µw—ËÆEþKÉB^` á“D¥Öph¥ ŒÑ$nà+`‰”;ÖF‰k ÂJ»“²—\ŽI™¹ÃR‚4{/˜È^J[.òmj½=žSMûÈÖ÷8CÐÍ2rÕžC^¸GJSIðèÖƒâ,9‡)¢ýs¤÷gà’¡|€o!Ìæçeº=%mjÆÏNt(;1€×êÂ#((® @žjéŸý•u³©¸¥ GP;+m¹WÃijQe4T¤ÀM?0êTog ÖVÑ.ŠÜ³X‡ÃŽc6þ4h\,„ŠÛžDm“ÙSQçqd³+=‹nœQà’»#LYž¾É^–Cu–N¨ݶO׺ØDÏÖ²‡ncí¬ŠTõO]§‹—íë ïíÆúÏiŒûé/úàYîá-bW”n³‰årW{J¥ÐëZÙ’ÛŸ\é,Âñ¬¾Å}4ºÕ|V¯:¿ZZÖ® w§ÈôÖÑÀä°°ÞU¡?Ä€ä½Ï$©EX+V!ûãì@Æ$†Â©¢PiA…@Ý­VC]ª¬è7üZh\‹;llyËÚlÉ% <ƒðûÎF“LI7÷nÒºAIì׺Қ„ òCÝÔµÃõóp:oxÀ¯m³ëžäŸjÛñÉåJ§ªŠ·yÒ\“i5Ѧ\Póº)½Û ]9¹ çÜî*`_¹5ÜFÍn[s¥ z¶¸ÿï]†µJÇ)¥€æWÙU?ØÑSß;ÏvY³µ,‘ò2jMu(ñØ ê§öõ§?,ÊÜ»}dUÐ\í½ _-ÔG ©åîã‹XJ¨(YÒþÛÖ÷KªC®¼ ?ÛÊþ™Ìùêò‘|„þôÜÖQ™…k6Ö_“¦ã*Ï!mõõÙ®ÖÕ~ê3Í­åOeÐ1<škvÎ Rx>£çéÓa«‰ÈS¾y2yõûŒn»ýVož™žxi®Òg.I_õ¦>ÅäB²ÐñdÐ&yvéó<9nIK g cE6Y=ŸÒFúÊÃé‡1ôÙ©i~7·rÛ>ª®¯Ï1MŽÝÙ?Íýc^ ¹‰;f÷¿½ >Ï1[~7ñT“µü÷£§H¯™7”‹<ªÀ{’z†'Ù‘¹gï­ÏŸ/mõŽ<Ôi¯6„Wj–\²Û»¾ð´©9//xŸ59SZ;8Æ¥ÌÏOó‚*7fÛ·yq'Û¨•†ËÕc\«›¤¸ys[S€ö7Ëd™ãºÆ¢ä€#-Û7;«¤¯3Ã#/GgÊL59²WäæýËס°5œº~äØì8³Cr¿ßêe.@Kí]ÿæîjb‚dÐ, a`-sÂÎV‰vÉ1kJ¾`Ù ñà‹VVI`fžºÎlÉ‹CöókT«ÿ±¨¯GjÁÂÁ5æÓÍ«b9ê.ŸÏˆ…U—ªzB„dmMv΄@­h3¾Ùœ˜ç ¢ŒÎkh}Ï%nÖ»Äõ)ŒÄfl–>ˆ’pybýþ²gß%ÿE›ÔÎ_—÷±ÀÖ<»ñR.Šö²ñ h;ê3ÞKÞVªþVØqÛi\À|Å•GSȇˆ‡·'†ö•·~ä4É)Æ5æÇ¿&éÓiÜÂwãÇ+«õ2zÆÙì÷kÈŽA|B½ˆá«÷À  L¹W–m¶q3:¦/b‰ÅY¹W9ã^3»iÔóͳxë«ÜøÍ:üh2ricY”^BñJ^¾7ãêL7d™ýpÂ6ŽbÚv?Ø¡GŠ1çnÇFã&ø¼HÀŠÑ—¦Ê ^äkKvÒÄ F¬Y4ýùØã­éW jÙË ƒÐk "pʱzÔR  ¨ZHÙÕ´ë*õ‚+×60CùØà:>¨³¼®I,*§Íb+ãFæÊï¯kàZßwç6ùr۴Ͼ×à%kOø ô³”Éœö-!sh Ž»]G÷Þ€œÂkCYpó€bo:Þ½ÇÈÁ–©/xß»j÷ô—»?íÿücn1èäË,“mw°c̰6Üü`z9ÔÝØi}€Á΂ç'Í4Áî«\ÛÊþöH%êåÝYtßéàNì¤ÐÆ, ›cŽ’Ý”FÇñ:r·1Æ?•I³Ef&Zºº"Fí ú³~UŸºtIU‘¢¦…J¹©q!]‡'tú|E/Ù»V[jA²¢‡5+9¶çy ²èúbUçrD·“ª”³ò‘FåÆ0ŠÇ*˜Þ{аáµ?Ý~˜ cçì“`—Ä$‰ÙI*qÊÏ2§;™šxÄöE“QéÌ=uJ HtäZŒû“[ø¤9ø›ï£†cÅ&Œäýž+ðÈ¢ô tËέ¡^F_Ç‘‘§B,~ AéœÌ$ÞÆŽ÷Z¾E¦äjá 9Eã?UEÒý¾òÔÅ»6ó: »¨dÊIë¯tëlïŠZ–=éj¹¨±ö*|âZ“¿;’[׉»ÞUËòcsz=Å—)kÆîtŠ ÕWF8ók›ìIž:cv¢ãwÄ®B“óÞU5ú*,CÀØx7wµ©€°A‡ÖLî1FA±f¨ ?4x[ÞÜ g°Ùé)jÕRCáðÇDp… Ãóé1 ÅÓ¥æôVïgÅ‹’µ›¥X/«Ï»¶ù¢U6v‰ÑÒ|ŠlËÙIÃPtvdÅaè*¼Ûhs±U+…Yè=ªî‰•Ïd‘­D¾ÀœëÚ,&RàУÊèÐÿp™§¤mÙLd‘)ÜÐI]Û±“VIAfÞlb•؉ɳ&—±£ßg(³÷…¨)n§n­J,Ïû¬°ˆ1熨Ъä*gôÔ\½©ø±/~¦ºêº2öÉ»& }C)ÍÞXûò¹6[ü@£j}63™Ñ±ÏH}puöp:Àe ]P? {ÝÅ|ð}Eè;2öýFŽIÒ…Ç‚o?ù„Ú¦®ŽjiF(}þІ÷÷§µ5ZdLìžÁ2)ÿÚzmŽ©XÝûQKz²@Ž_ÿ¬Òqd!­;½;.[‹ªég9ô†ÑmNñD­'9ýorÁ+UÞ}sÓùaüöžÙ‰ÞPJ+~‹¾”åmp9©µÚJ>îÍC{¾ øFBRÒ!Ôøb@à÷í8ø®¼„ÃT ¹ªÙãKð2+ëüwÉWÊÛˆô¨’‹/ˆg红äP÷o·4œåÈä6•€ê /· æž)"&Z¤ŽãNSQ¤û‚ ˜,޽žï8Û)ÛTô’¾Éž·¼úÁ Ÿ?ûÓ±dÏÊN=À± ŽÆI…±^¸œ5Îe$aª£\ELp¡.©§ïi*þzý’ïÓ2€ò@y£uÝŒg¥I7 !5µT9¨-¡-®ˆ9i~HuöžþÂë*«¾§±ÌºËKŽ¢6÷=©AT €Ï¢+C,\M ‚!L­&?èŸ7Ë?ü­š“ƒ‰Ç¹.Ã5io|¢†” ÿ«%Um*QÔEÕˆo’ïšZøL‚ñ-¾',z’Æ¥G ‚|¡×¸—¼{láà©—ÅîcÙŀ|.Àÿiæ)˜n9¶ŸÁo·ØVx¹É¬óV•påé1‹QÓlÓí4ùâqi8 ­ÊHïùÉ'r„ê÷»wá[âÚÿlÿÇ;Eš\†€äCÊ÷PþªAS\‰«÷¶p؇¾¯MKdÉC¨¾¸`k8É8©„ɉòù’· ³†ÞÞ ÈZ}R=Í[?8Ûg9» ËÖ¦Åd¯\ÅIº´`Z1öûqfO*KxBkϨÅß$yÓ©þ´{8^p­¹dï*m{‚Áuœú¾Œ›2Ÿ¸ÉÌ8•¶‘ƒPèH–ôUÉ­Á'Ïxù^°áa;×òÉÌò)cÆõ Ñ M„Ó†/Ì~QsxÑ2íúmú`VëWâÐyÑŒ]ØÏyd÷[ö-&Ý …AÒæêù«R[Îíé²6} 0sJÎpÅÄ—P·ÑÉÑô3u8Q]S±ÿI|¿‘6[•‰(RÓU§¿w}!%²h6@TŸhU~:AÈÛs°·}Ýþ Áö:. øQ)rò°ˆ}XÀ!_Ëâ™3]g,X 6®ûrîl±igÒæ$»¤+¥•±‰• €9R|ܲ\¤v$¶¿e]\í½8¡?gíQ¡#ä ‹«A‘{h¿[—×ÚK]k“ý¸Q|êt•²Q³–q¨>¶ã¢ROÁ°´*3íh ž þàe§Éê–î{[÷l`yÑ<*êòœkGÚVH^Xè´é‘®$?šV(ðÑù¦„ñAœŒrZ!÷®s6Д M6A€Öº¾Î’,<–ÝqY*ÕUdIGÔƒS¥ÞJj#l®5Ùhjf—¢§7ó„Ã9¤!õ7Ëç_&î}åÈ<¯áö.éyý¥ÖœAl®,Ù:ÞÇân¬Záåá¦öDrvš† Võ]Qk:š1U·À´Aûk,‡6¢¹DÅ‘–±}1gäÒÒÌè­¼òJ¼¢Bê:$Ÿ*bVÏãÎô‡þ¨qôÿ1Ýþ£Ð6/^K¦ªê_±2[ë@ƒ!£Bªü”«#â!àñg†kÉR^Ї/Ô¹ì]‚Η…¼ úªå„‹ñáãN¡ì¬ (¾Gé‚:oR+¶Ó'¡/«ûÌæDgÚq³~ØèbYí¹=á'^Þ ,Q­ì°7cUêeÛlƒaÃqÛÆàí¦k7e*Kª¥b© øß`B=yD«&gƒrä¤Ò.ãEúoŠâ²9Ýq³ê Úññg_$˜®st𢖙~ ýÉܳíVJ oc~ƒ¨O¾×y´äÕ³$±!!|QÈžÆÜ7hùJ6SÝ’+Ä=3g[úybÁùl7Hx5[2á{‚(hp 8i~ÿF²³˜ÀùEv~¾¼ð³üˆî:C’®i¢_jÁ¤^Ÿ1÷À5äk3k‡óVȨýô¯,ÝÅRŸ;‚›“ØÌºÜ·7 ßã1p»®b¹C0áĸØ+„}Sd³;Žu MGh6ûuéU‹Í 8*„€Aòþ‡Ë°ÿ…ôþ|qÿo“€}Ÿ‰ lÌé–ÓOzèVHhßÅÐ+!Á¶³Í rXv9šÔD6ob3cª ‚¦849kÍYƒ[››(„)“ñ$ÜÍÆ]•ÞmÚ’¶³ü8£6 ÷Ê ›Þž»Éïé>Aú^>u]¶q·ë»=q·Œ6Bô°âÝl0°rUкÜ܃8gÉíLD²l+v!@¸—m ç#ë7ƒ°¢îX­4\ -н M¾ovÏ1ç8•É'Zuö:Èwâ`žh·‡)^I'Á>°-ì›}Ay—wS,¨µÏÆ>·Ïí›bÔ€IFp® Îbó-Sýy7ÿÓv¦Š6{ñ%"`žÕ¿÷Ñë~K‚mb‰8·ÁBØ?ä~à4ÄŒ'AÝ3@> #ȧwçvÍ} cú`¦Ò|vDZ»ij6H"69ó³f4ÌÕð±êE‚‘Þ™° íÏ––ùÞ™ê{é6‡ü;Æ·Ÿ´uZÞ–SÙÀr‰d¥Ý‰,éw¾1 ƒU2Ö¼á]cÒW¤¶ÝmË&1¤@ÏÚ&LuÁ¸{}%­ 5r‡]Ñ ‘ñ›àé&módýà…ÊëÈн€ì |°8ÛcE—,«†m‘#ã+µÜïC]nÈê1T{ÑŠÿ(Т¦09Aοl«ákfb†ÎÈqalòv¥… %¨,0º0¦V4°u7¥ía›‰Fèw„m¥pÛ¾b¨FƒŒ¡|üQî')GÅÈŽ0‘´*G`›Þ󥯩† öÍ@{A¤% r¤·•!ÞZÒî?´Îfƒœ·÷ˆÑ¨™üü•·vž•2Çq?¥'ˆ†Éh}´„‡Éƒj¹u±–0Â/õ”g4’¢hË„+?HrS‚R@¬4½K'Õy€þ‰0¤äV¯¢§?Z …Z¹Y=ËèÙ úmô»Yäþ¸“n§g}*ÔÔR[š[øõ§:m%1+‡s¶<ÊäÇ¡ é ·¡­epÿ_9t`ûáC;~ïÀA1kç̶}’G£)üÖ00` U>ƒC±­a}â`ûœfãоýøQŸK¤ý‚>ÿìe5…DÁº^Ö ß·¡.ùC£DÛÞ"Ê—¸ŸN¶B[¶pÏ-Ô“œ›Æéµ[ÂÜR·eÖŽ$Û#õ°Dí±sZûuŸÃ•*ž¸&]³Š ø€–úÏ~cË Ã2_jI}c{4ËÔè©‘´˜Æ«°<‡RÚõ_·Éü‹çqÍëøŠÕ8ǨIþÐhä%ðÊ™]Lnq\Dz¾¢f‡M,TN©¯‡×uü ÖTgýô‘6.õ÷1Sgù½ý¾”4žîW”äG8¥Bº0~éà¡ú?1×C%ê÷¼þê¢~$®¢á]£È-½öHQÖÎŽ#Š_˜—¹A#i™þle8RÛ©VK1&¢oJ®y…¶ÝNd‚‰ñÊ»êb‘üa¦A®«ÕÔó`½¾8ƒ2p :‚•ÊÍå1r­võéua宓ۃæv¾Ð¨¾Xïq3!òš46@‡¶h•ë¥ÚÅæÇ#3*ß]ýÊ-3pÉ a^ö³à¸Æ„$ ;á0[o€'Ù¢`|ÖáÔ i QÃDI}f”…žm¡ÙB+ øë+Ãz†Ï¤+Z’d –9äxKðfâb…\Zªï7WHd8ú-ÜÈÑVQ1Ý+Q—Uã7bïDêbòÙ²ùCv0¨#,Êq*Tj‰ßBªÃÅvüWFÃ,yÆÃß$ú‚¸Žf`žnîÔG_9INóá`‡ø¼bz$—öu¨Iø‚US‡ÙßÐIñ˜@s×ÞÎa‰¢pLš®³Ÿ€€Àȸ œf¡îÉ6ø5ÞΦ›±À=œ¥n¯ÄÕ+œÕ¡Kþa[qÀylIu$шfûªÃ2Jë­GPZ>Tt‰§!g{‰#ÕÙêIÒ9”<÷Ûĸ91—Uº²8²Æi"ÛŠ™ á“5q$Ö%‚LÞÆ/»oAªw,y *wÀ’f­%ËFž”pÁÂI, 齇J íÙ•¢hË|âÍpØÝNh©B0+›¦/Ù #à UžŽ»É¨ ‚ ¹ÕšZ$‡ÁÆ””­†•ŒßÌà‰±‚:Ýk½g0]ñ°]*ÚÖ‹†^OA«¯ï9£›¶‚8–ÌnÉîš²MÕ±‰tj³†œ8WÃÿÛ¥ß8 /ùàYV£}VNKÌîÖr‚5"(‚eÎì^"GB‰ßÖ… G.8~Öoæ9iÄi%þ[ìX<Õ• ÜX¼}¨Îä>D¤æ• ñù#I…c¦‹GD†TUX¶,?ýç¼çYrI%wääN¶g´±{ø\ä0<„òV‰†ëzg 2˜kqˆ^F^Råq|]ÈTùéWXñäxწI±éâQܪ½&³ÏC"Ý®Ä!Þ¢ŸˆyF y‡jÉšKDÂEz7Î@IiÝ D|&b'¡}æSr5£ƒgÃ!“1ŒR+í< TmC›ì€ ÷ݽiÜMžÁï8ƒiÔ«÷Cv ¸ž †ej»9ÞolI•¸ˆ¯°IxŘ„ˆ1oÒÌ”UŠÍvà”zdp»ÈÃÝ#ãÕ»‰&WYYÔ¾©=ÖDÊwmÈ3^öíý­ZúûG©Gò.ž¼Ÿh:{•Ö롇,¶é­á(”ÕŽ©§ø–0²{=»X¼e±šç—«æÙ†<©+ão¡q?è·uGOÔ•/ئ~˜9þ£ÙGM‰z Y‘†ÜT+èçŸkäAW}_DäŽ×Ñ&b¼ó­‰¢”fµá“•bãê› tËáºè­Ïè{ åÚwŠƒŸ“W™œcÝéÎ*îcëvC„ë;&oâ+ÕÒÊÏüT .93Ñ!С°•…$àÇ^ArÎ/MÔÅ=·síQ‡@7[Žl3tùâP91Ó¿Œâ‘MÁªŽI 'M;68Ó Ó\´ƒW÷?ö¤³¢¿2qÅü¦ ¢ªpïkù™—‚y,ªG‰—[F‚i† ù^û•áPÑw®mÔe´ ሲ #¡O¢¾â\q|•Š‚ Æ™ØÔ`\ÀÌ2OÓv×)ùp.«Roå`ÐgΨû(éÝðRìÁÏ< Éð™YíÑ|™ø¥ºœO<ºËAi+VÑDÜ=ß‘ØF:Ýg–3ú£§ß)'õ ­ûŸ>õæ\ÍA0 ²7ˆšßŒø÷’ÓÕ Ç†©ÂÅð ÕŠs.U‘Uq¾£èwuçy÷ÓRKý{MoѬ‹†“' ¿ð(9¨–“Iñ׺qhoW•¦šš°ö\s¾•,«úŸíüIæð\ï±¶J\±ð<˘†³5÷°—E•à êK÷!ªïd/`¼–S@„3Y)&Gj¢ˆ2 k=œ(¨:qâ]‡x„ø ¼ÍãÀŽƒzv‡ö(“„Š¿ž¶ª'ª-æÃ<:GüÚÞ¤ÒßÀô“¢ç6ª@º_±ùŽƒCwŸç^Š7÷ÉoxwÅŠI –«vš `9ýÀG‚ÙõRy‚á_?†‡{ì ˜x,n¯˜+±W£~/PCdºÿmP0ÊHŠ$^uÅ«kYÄ@aó¡ÂõVÏF‹Ü߀h°+jæMþ%™ŸŒxõ¨5Üá ›šQ_Ä îÁàtr£?êŠÙ¡=ÄãÉëþüyÏ$öâ÷HD¸cÛ›ˆÖç|@Jp:cÀ2@&QokÙž‹Ñ#ÈÑ'©àRõ èä¶n ](¶¦ C;òîÄüòJ:GþIRW[6D%ËÓ ÁÁ'5F ë¹rrƒ\‹é«T™‰.ò©cÑ_‚{H”MO£ \åkJtoN§¼rb\Ï Ç2ÌO|Xû<4€]Ò=­p±å€…z.E\ç²ÒÔQ»»Ä×9ÐóWȸón÷™µ–›ìü] LŒRæE—j'THä‰Pð&ËîÈNj¨·×s½iæeÆ‹€±4·È¢)’Æ*QîV–:dwk«³+ΰ`±í™îçJòh„oñq¢e ~5¢W" ……É¢¡ ‚ßD(½¦éI%œ<¥I?[ÉKÙé—éŒÚþþ ÎH}iNŸeõÃù~ Nz ölè(¦ijÝK*<[kdÛkrÕ µ9$ОiV|ñps W¯¡´ˆS{vû¦è²ñ)L.¢ôú¯3ê••DrÕ…K.ÜçàöÝjª¼Ø”EJ3}fÙÙ$A_b â!£U˜–  ©“VOÜ)¡âV2É*;˜\–ÊÕuo—i[î0™kxlè{¦ö©3-œ˜¨#úü¡_á7v Z\;è8•»Ð Žßû5âÛs3ÖýîÛ±»yþX‹cG<ÈýtX³/ý¤Ç½²åéTeF›¾÷Kà.Þ¯<>ù…ÔbL¦¸‹?~œ&1Þsßðàò¢5Cön÷gÙ ¬y´EöÙ9ñýÒ<–|-Œ GÆ8͈g=é2w®9ÐØîÙ¡ˆèµ½šÍ/×jõñ»ëW?ÊÅ˾*y ¼šæµ{^z¹»+„å @x:Y'/ð§±:wqË÷Ë1Ï9ä3/–)ÙÔïÏ壻µÊ—'˜…yºh0º0ÃçÆôÆ'ç:Þà ¸è%›Æ¦ûmÐöÞ(±3éÓÖiRÐYŸÓÆw¡ëka¥V›4¡žyFàl‹þ ¸åõO¼YæKç“K½ûË2Ø\gð^ª…{þªh\tCJ¯yÚCóºß,Á*É+¢6’{ô£û®®œ,=`ü 63§õÛª•à:Q‘áØ=Hv•!ÊÖ¿®s$*‹DìÉ0êÛ ,Ö˜ˆ¾ˆJH”[˜Ô ÎÑ‚î”HŒ¨×—:$|qˆ–)‘iXêð–Û‚,!„먠H6D ¿Ï%¨ÿbÃÂc{œ‚Ç&½Ú¿Q¿Ì5‡Ý„Y[9ûè<*D™HI@í>ú˜•ŠÌéFǸHî£é_GpPž;!Ãçd‘q«LŒ\_Qþ\5±Üyo"5è+ ïU%dAæÜ2\4-*!u¶­|TmlVîì>ÝÓ §Ðy®b6}ŸéÖm1ª%i yf#k§Ê0ãØŒôÇPsBºfqÈ¿‰M—d 06HÔ{±’ƒxVV ex…hhtö q¥ T M7TUŽÙ®¤5*.Y' 1FÆ¥BätÃ{vX‚®’î…„g¤óЖdÐÌ‹ 3cœñ„$Íd¸´æ” =7@-c=y©— HZáÕûÜn Â-«ÈH5kþ£‡t<Û©æ¯N¿€s$Ä;×ìGh}òÀopt®î÷ÝaÎÍ̃ôOµerf‰ox渿çaÅ >›À'(ÅTrº}•±h…}›þÓ&¦_}µX²‚ÖÐ]YºFóAUÜÕB•°Õ¥¦5ôU–Œƒj\~ìÕTATÿ-Uæ=AL+¤oÚfá RaBjE µ›êíCF\Ñp~î"sü‚U€Ó)ì …¹Jxi©n°–†®£ƒ#éÁ›tJŽ?Ÿ$LvóF®>/a‡…ûï§™^M0,¶‰Ÿ‹g”TæuÕ_od¯!éúœ4@µr§BÒ¦õ…W‡¨ô¸šÍLcÃw¸3Ö=oqåî×~ØîêXÃëqªÍwî¾'pŠÕTB=ã;ÒSv]ä0–¸»`¸Ð³£s«ˆÛ°+z/†wð\tDÇn¤{)wú|õùsÕç–ßc}¯šMØ [ÆXßbœawBoáºáºÉ–hZ6%¤5Йøg¦î­œ¼‡{ ªÏŸŒcî÷Ž´úLÁTn"‚xÀ±¶-M=Ñþ+›Œ©’°ï’ÉaÌ l2ºˆÅÙ/‚OÙQ¶­Ës_癥M·uÍÌO°Èòï?ì7ÚŸ#°ZéH#ã KdTc´xi8H¢.Ÿ¬Cáú$—A™…úàŠ|,ÉšÅ0½vEs?“àEÑø¤L>ÑL9Tü¦Êc)ŽÕz_ÊQÈvj”\QùRãwò$ÝØ~y]Þ…TìpjçÚ¯À¥„Žìï™ÃvPâ@¦ôÇK™j¢™ý.…ýDKîB¢JJ s üÑãêL.=U¯OÚLÿ¥+§†Ì¨Ã–¥ÑQ;åÛŽDcKšó9À ]Är¤|øÖ’ _Õº‰±s@ñ¿ŸÔxt/ÝŠN;¾¯yu}]ÿëÓ&“'iëxSn“sT9,“ÑM$Ø…L¾ÍDƒ b¦*¯žßt~ì-‚ÙBg@ˆAÅ¿˜¼½¨Ö"¬Ú¢½Võ²ï¤©ÌŠ{ÐhÆÓÓýývlkA‚·’gÍÍågÔ‡V|»¡Y†ê =q^u-`1ÿǘx§õÖ!Z•¾TD]KW ¶¦h·8L8Š‚Ç=¾ç{ü{köQ÷p¸reÕ“ªÇ竟TK˜Ÿúè¶F¡%÷kòÔq?G{TþwCZ»ß0ƒÂêk5 IV‘ËHGY œc—¨êšâññxæÍXZ gN^Îi:’å>”×d¸{°}_bpã±­c ”:­'›ÁãL …é–Kb+^ 7…Iµò…⦹¯¡ñÿh謋“hœHÏœo0цj•>qÅ.-–›KL4˜­‚ñI_ÍÁÏÌŸ_:5²rYÁåw«὎>3wW¶Ok”° ?¼,~ ßóuã÷Kÿß³ßz드Áhå}Åzû)¾÷™˳‚ºÇG‡s”çÊú7íEÒ¾Ö‡5]!f 997N$Æë Vt‡’:ÓŸ€x[n6êÄø™ùY úQÊÐXv¹5ã Z¢SUF¤´|xº/“r.8¸Æœ_1ÝŸI<X2âJ™%é¬iÔ¨‘X4T—š$Žè´2 23µ¸‚Aj]þª:ÛÅüßêQF›ŒïÍW¯KݠЈÐþå-"yä¼Ù2È¡]*´Ó&/ͤR] v€8bÔŠq’üæFÀ"5ÐI|¬­+ìÿºÕÝ+o™–^(„)4ÀZ{’3/ñ¯Ç]²0Ÿ-?•N Éõ,,ïÿÀõV†V&MˆÖqôq!Ì#ÊF'BÆå³Ø_mÜL6ØbãÎ’.Ç„¾_ }»0<¨¡-là*óάË;ÝFÆ~%NÔYŒyOÌÞ„¥Z‡ÇEÈuIócØÃä½lÞòûÝÃjæi ¨k«/c-ÎU—ݧe}xríhmøŒžwwÛÐlÂüþSP à¼DÙæ<ÛÕl>eÿóÈ߇`¹ƒ5{R¢ß‹fOi M§Öi©ïP÷ŠNi t2¼°ë[¥gQÔû ×ÃnŽÚYñ UV¹w}%*E/¬ó^wÓ8ÃfTYÅ;Ö³Üo­è ÿ‰nÛ–ß®Mc^Vrr6ƒã`#»"h¼Þ¶'rÔÊ6D‹æ@2“iv÷'ç‚ ý[:€hk‚E8;­ÒŠB;˾i˜Î“˜ñfz6ÑÕ‡(u‚&ÁÜxúÕ$cµâ“ű»r®™MȰ) úª ÄÞý–nF¸n²‰âûIÏàK/ då;u˜Yg¤%›¡Rq±ržDÏdJáf6û‡¡C5tÂ,HÎÈÂ&dØåˆE}eP—õÒÊB™>òÈä¶W P `Î.¬lc”‘=` £¥žëd0TОéS¡g]‰¾!×ï¹–oŅ„ ±ÀŒø½~}&Òcvé™±‚à_µÂ¿}ú¢ýêÛfÖpÑýt°%{YgµÂ¥1Ù¬Ì= U¸¾[¨Î|õe'Î[ˆKÿ·/9C.ÇīɛÀ˜AD×ùaW¿6THè3†° ±€~g$‹‹þÍ´ <ô‡4â÷ Ü)tmo{5I[ªzý2¹gÒ¬f§yN§^3h1B-‹™—<=+¡ÝIåþ/ n¤rÞ$wµÐH?”P.¿Ú‹ø.óÇãöÓDò#Ý–þÀQŠ—*nÛvжIª+ûêÙ¦çî–íʺ¹ƒ±ŸÛþj:ÞJ8x3­*ü–båÅ}1 xžÄ3Ï?””–É Ÿ?Zc\zÆ)1¸ÞGšë_(OΠ굈ykQ–£Ë/ ¤T°K,˵ó¸zR&÷”C#R¬?Ë/ê^ˆì‚#RN ‹kñZɃ²2Hß ¿°%W–€ëYƒ×Ë^(Œ¥ ¦Að$|Ùç­¢9#UÍðµE¹Œ2’|¼â;àƒ´ Pw(¹ÑãƒÔ±“oA5î@ƒYñkåNÊý±ÇdnÆÒ³ˆõWxð\¹Zi¨ô§™ŒKÜsÔˆ…_cQ˪ã5ªHoóÃÍÖàB±Žk>VÒ”ÁÔĆ‹£ -3ß'«+»ò™œÚFo®Í-º9Í™LR؃_‰„[å°(ä˵L‰"½HDBßZ¥µÈh*ó é1¢\eÊCˆd>´ƒ:jÄ(åDPÿD«"Ë3©ºHêxg«ü@"\_»ê Ùœr B"”Ô•ü.>Š.f__¢pñ 9]àt‡»€à„Žk½iAf††èd :° Mð$ûgkÎ@õÕ2Ψo¨ê%”ˆ\ ãc¤®+‘•dI¢ð~œ;úb3¢P~m†ewç½|‰Ë ’àÃ-Ô-ÄýHD¢Ñê8Z¶ETœ;BP|t0L Êj3ÛM ½« iE燆 ¢2J÷Bädø¤AûØ?\©¹±¹Güþ¤·%Æiˆ`H±-ÍÏÂäÎy*Yo$¶’Ãw…‚ª¶È¨ó oó´½:eg‹I2Θ·Ù†²ðøLÛΔá09ö$U¬Ï_kgÑmFþÛuŸë–”ü)ó]ê(õßÑA}³F/×Éù¸Â¾È’`Nì†9¸r ŽèÅþ"§0YبŽÌö9AçÎúí²øÐî‡/¸Pø¼¨±B>ŽÀüJMk¥á•–×ÑJ•ïTHK7Âp¿ZÃÜÌmsÁÕÚÊb‰/ÎÓpÝS7ý€ïþýî߸žµŒýwªöŸánLbr’ÿÍ*|"ÝŠŸ¶ŠqAºˆy¨)Ñ?ŸX×̭ö>51i³ÿxLŒÛì(vÇšÞÍÓÇòíE•“x.wÙ¨¯Ð÷ Äǵ‚ì2àbÎòÕž"ÏÓ&ÁÛÕXšOÅÍ#O˜«¹Ñ}E¢h÷p0<‚Rq±{ ¼ÿ®g8K˜¤@ü̾¥ãrÒšâH½K(çVK…‚”ÒøG|Ž'ïÝÒíjé(íMztŽ­~ekT¢—›S…@hä .¿€CÏÍ=–w^û=ÞYÌÃþ:Ûm¿ IM!Ÿ¼r§&cZÄ’¡< àÈOe„̹«•.(ΛèÜ’À0Îç ¬ì–BÔ¦ªLølo°Â6gâAÏË/øC6ó—ÃbÎÿtâ43Ì% Ǿ)þ$)àsv±Þk¦_‰H‰ÃzÎ4$ã­…ìÛŸc59àºf Òd ‘Ƕîý–ÚœXU‹Ô‘|b„˜Å­Ä{Ę\-ú±‰ƒk BxœÁèéê'ÕÏßÛZŸMS*yV† ¡oQ-þá k»ž2Sýᦴ¶Zfø$-w•Áÿù+ÔF.‹ùÌØ&è^ˆq?MÙ„vµ—MèDdsj2¢†/é+ƒ"ð @™Gé;6åߦ™`N¡+Jb;6ɘp6Ø Hß :KÞg¦o‰„&xY' ÃÍ7\yrb=œÎÖÄd®X,߀ ª©1DÁÔ3 õ8›¢®IM¾Â8j‘–·Q¾£¡*âoû(¥@Apl€µ¥ÅÆëé$pÉ\Ò¥O Dâî;‚±dg÷F-ïÇ7vÌÏŒô­#aFHµå= _ Ê@Ä2@¡Yxð!"¸ŽU2›bY9À:V]ÊÀ‰ï àÝV (êi0OB<È‚‰Í(GqÙ=[XÛ-;™HuWÒ*‚yseƒï4¼™¶†oÏîœ|ó#@…¬(»Ê™#4°ÔTò>#ýèš ÑÈæš d?¾'+ªæ©}늗&£hÖÏ»zs%ó»$ßÝVÕðíËÆ“ÅE By<,ºK¹ÿ¢ ?ŠbÏÿvƒËÝ©³«-Ë3óÛO?ムю:I§«Š®*I¬ZPt·ÏÕGq˜Kmì Þ$uá®ús¢%M ÁåSÝvå$×-« [§§™ñLÔ8d~ïõ:@ìQrƒ”q³F¦»iüä«-$µ°9s¬—£U9#ŒOŠb¦'PåЗøYÿÕik·8j=!“€{ɦ~I²€3áÄä__5²…=Áã…AkÃK©Í¸©&ä]ØÝÄ­ø©æ€·$èUŠ&h!V}S”µ„Ú@}Ø£¹ÎÚ’Á ð«/£Û¡zd¼Øl…ïébgï}O †×/ïù=Ô‰´Ÿ “®»qG#+[W# ÃVV<ñ-YØTQQõŠDçûÁ…êþï`þ‚žÓ˜æüÁ‡X{äoÝîª4]}—ª6$±•Ö$Ñv6o{’²mÓÝõÈ}hô>äÏ'ø«:·DÏ„`Û á‡ ØCÙÿ]Zxë@„ô©ŽÖ[¨TÙ±¦$–ҜĎ5'2LÈÇèSHä)4råÚuø9‰Q,—åÚP)O¸Ë÷<’¥ºjJÀ'ÿøàÐ¥JþÁ֫ŹKÑ)ÅìfY]“4²±A›M'­Ã§'[Y„™`¡uãz õvºàižÎÙÆ ÍU+9jsSiIdÇZ’®’‹Bb©+5ÚßS|Y¼ñ«bá‘Ór)éŽËçÖy,ZfÇû,…fµ¨™&²ç”IÕŠÒŸ™ˆ\½"!Vè¹óº©~2ë´:Bœ¶[7íÄMoe‰ªM{q+·^Ó!M‰â¦‚›…–·D’°Jþ•N•ǽ¯ºÃ‚d’´á1lû.ŠVXss¯ñæq–¼8±x7Í¿çÎáø 7nj¢ñØ‹Åw[̾¯ÄöœÆõ”B6çaÍJžír|Úíw¢Ûžü_p]ÿ6¶û-äøŽÌ[Á› ÜKô ¸žt:Yœ]^/çyc Šƒ¤P–y¯¬tÔ= u‡>KÁót/³úŽI×WZ굺[:Ò‹íKR†ß+ú¯±…†~§°N ›‡¥)~Õÿw¯ß/LŸMŸäX°LÝiõ›Qí° ÷üˆ¥ý°<Ò¥GRä’±<(äI B€hi0«TØelË®Y˜Ø@/>ŒÍÅŽò¸–§›ðœß¤h¸ºAYØòž£Ï¦iÆ`ÞiuyS¦ÚýÖ”¦2åÓ *ÖWu 7‘ç ­Ñõdfœ.W‚G,›Ò–¿ÎwQ^Uþ+¹![d èÚ+à9S‘•ñ5ìÊM!½Gÿ¤Ï§“2cÕªÁb‹²áÑR)GíÌÊõ¥]Óñ}|Æ~€!ØßƧLÉ|Ã:÷S´ϰ©­Ôbšw@EU:µÂ¤øà…ÝüÄ8Kn'+. ÕÄ©~p_Ī¡¶w0x¨*-¡ M")­ø¿wüžJÐ_šÿºÕЙìg«ªÓ@Fûhº?°½¶s,fS¿ܱýkWJ“.¸÷ïPéÍ!Ø8{´>†LÏê[÷ ¥ú ôß:7±×êy¯ð¢›Æ•;6›R<¡Ð@?¡ªìkd±ýXk¶Oíà!‹Þ¡+­‡£·†Fiwš"L®Çž;yÏŠízn[–wtÃQ ©§pHÛÂLñÏ’é£ÔÛ2¡Q4[}ÏÛ;E¤ä¼L pnÛúÑ.œÆŠÃè7%¯Ùü *êÑLÓ•áUU±0žÿz"á¡æýù™üëóS¯Ñ!Å'ýLKšÚË™Ae_ìå(46°™Ð…©ß„©$KêP 5ƒ-F¥Rc6%½Ëú‹Ï"pdd¸l1Hg b$*àòÀñéÜã­èÂ:t}+s[¸$ŒÁ‚}ÿ²Êtj»—_oW Ê\éÔXLÙ9“Ëæ …ùòhçqxZš‡cìwÀ ;è<®j'l_©þbþ«|Üý•wƒam…û貌TŠÖ ® ¡Ç•˜ RúÇv'=¶ó~é Œè…h4™1² ÷Ecꇮè–ÉkÓ%ˆØv%'¤; òǵÅ:-µ‘f¢KZžR`ê/°–.é¿cªžmÙ¢¶ªQºfvœ/æs< ½\T˜°&-–—o_ż¼ ù13ª¡¥'ºäWERvé–XU»#Tÿ ò3c~Q@ÁêÒŽcësÊËÄO­y+'¢?=€'n‰ÿ ¾RùÑÒ³˜Èï@›J‹fýÕ±ì]‡[£¼Õð.1ªñls¸[Hyï}|íæÿÊo-¨žZWÊqÍÈDbûd"õ]ïªÉ‘ÑÑ‘5o=âÙ¿;ÃûCÍ“aæð=ª§|z—Æ>•>y|ÈrŒ•pevX Èüþ-æï(¼7ó̵ýäýóý,zbæmD nÏæeï¦1Ë`¯T)UóRaŠ‰Êø§A4ÜËîÔ—ò1ÿW ¿7™8Ýã¼ß Â÷^£îd>ÅW”gƒ"J}¾æÐÊiPp£{Œ.n,;<Çqizpok:Z<)Ö'aûž‡µu/ M±E,(baà«|Œ:©®$üµ®6xab¸l˜èÔ•PWo VÜséÀ¼`ðòÀ;ÊŒˆÔÖGŽ’ƒœŸ™ÇE‡"é׋bôØ-1º’[š†Ó&>jãüÆÓšµ|Aºnê~ö¬ú !§MDm„šÏÿóE·óXyoG¶)ýÌ`l#"¶{¥–ñjf~66êN\Ôl\3­ALl€8xOÿõ¹A÷ŠQ·ØÇúpÃH%QôÎrÙuÕ„Ì–ŒÒüë3¼°ÍÕMW-ÉDtx#mãÙ™ùÙnÇ[ mÒÓ”<Œ*Ù:\wyR>йÓ€ŒŽ7©¦ät÷îÒxš,CUv£ÛrMáS6½¬ð­ºbcÝý x‡]5P2þ„ÈQôJ–äÏöâ |›¦°ü×àºÿîÉîr¯Ó`Ì£†ÖfkÐy¹Çョ(ëvR×MbžÞØ©ùåS)šgæ×â2PgÿŽÈѬY“0ÖƒAÇcÖÆc˜cöDeÖï.V`tŠý:E÷3…ú6(³fí[ÊG‘’2y'7õÛIzìH<Þ lL›bÁ³Póüzö–“ÒȤçÇèpÓÛbŸê´Àôð´µ¹Сù³c®üm€sñ™ÙùUfë lùY€ÄÄÌÌOÇc4Ÿbö@³WÔï.Wu RR¶ôrS4¿ .ë{õò"<»Ï—÷væ«“Eðl6}¢xôwÌšÝ9±"»@UËKDâ:è'N®,>Œë¢<¹oIŸ-QlîuÄ »ýÖV©¥;•°"B N„ç‡ï. ,ï Žç´K¨MP26^ÖngÞô”ö5Ev%ÆIÊ0§äÌ$vÙMl«aw"\rœF6¶|IåN¨ªIºûß™‚°1^³W¹“õ’guÄC4ª„È+(_âSî€eH¿waiðôS·A¯j¾"@Dðé2¨ÛêsV4áÐÝP³Õã*7j"¡ú¼ÜÕd>eÿëȇ¼Ð*óǼþ²‘¶ñ“ÙùÙÇ[=ŽÍnGBᵪ+lÆŠ;‹ zZGÄïO‹ïǸ~ŒG·_37fæ(Šëü 3~v?+°~¤Lþµ‹ø0öF¥ÛãÕ‹ºÕ!BϺIׯœÍÈÄTY/}*qݳRË—M4šÙzÏp½ !v«Ž»2Ô1;yÅ >éÊá7sÙÁŒ” ÇuÀÇ×3ŒÐû˜mËÑŒª¡BáCø>Úé“{-ru©f¯œí.KàÆõÐNÜ»4§ÛÄß^P/eüµÅ*4÷á¦âv;‡Å_áºÕ+›¤/’J]Ð%x`U^ó³ó³qÑÚ ÑåÂÛ–ü&Ï.©!îQP’ÛѲž³ZFãžÄÌCå øC°(=ç—>IC›P–^ë»È^Ñð÷Jº)ž¾› ‰4"Å‹†Uí¤mœyw ›ÈìSZ¢^tä 0t«WÁ·™[¦¡VÌÀð@° ËsD›bL +—àŽ2FèVU5ÈWÌ gFÔž[íÃc*§<@Â{w ûâËVj®U§Ÿgͺ éà£ÌÕm%ÿ(¢™Ê63WrliWq>)ã÷-ÿÖÆŸj½A.k†m6Ó³%ÔÙâP žr¨%Ÿ:JÝ×¶á1:oò ›]ŸÜv£Ë¾EÌÄþñ¤ýÏHò•‘.Ëf _^ææ¹|nÖ*ïº4˜z!Þ%™õƒÉ È4ï©f'œ‘m9pYšcªwŽt ó П²F5¿ÏtÑ6¹Gy§ùs©úuêé¶~ãü[LÛ–ÒžÆ+KëS¶LþÑ l°½ŠÑ7œeÓžÐßÅheÀÏÌ/fÍ¬Ô ÿ죛hï“'VÅïä´g)âLÃ6Í&ÿFÆìW§®x%–óm±i†S|¨-2BþÉù2Äšø³Ó&Xtw€ÙZçÄ'—ˆ½\ÿRJÈ"«§1Ï¢ó#ò$«¾Ž\ab>yO\¥¦}Ÿ¹o`¡¦+æŠïè~e*×¾6z}µùú–Fyl»Ëê×=¼ùÀ·ÍF‡Œ’%ÄFÄ1Ñï¬FúÁÈ1¥ÂìæhlÛºî/E¤·ïš}6»Óª`~eãì~m×+Zõ¡íÓzü•®Ú–­·Ú íÕÉEÃo- €N|Wé^Þ¡Ûž›Ísxj|¾z §#ë­ºlib)‹|Iˆªãý%Ÿÿ„9†I§ ísäN¤ßt[zÁ-|úNJ[ ÏXã‚âúcí›_ʃ¹ò˃;ƒ/#˺Cž9öÜL/¶ì?O;pú,ýàMÿM½Þ¸Ùˆ‡æ766÷\ú‘ .뿊Qb‡^m Áˆï^ïÒˆ0+IÃêÎXAmZëP[sO[׆ –ŠhúÑV®³| j¨œÕÝZˆ'IO7f·-+Q™°ÚÄìƒ$‰Û‘€§Óæne¬Œ?'g¡}ßäÝ®7•|‰O  œ^Ip?Å¡ˆIѸ$9FÀóÅ×­åÅU¥("Þf‘а%~¾Hg2H¼"?ŸáÃþ÷ã`~ꈜ6JeJA<.FÞ\VÐú‚z>˜mõܽ”èÏTþÔ+ ¶ý- ºzw)U÷päcJmôÌüdïb¤z^¯^ZýîÕ¢ÐH+ØW(¥ç–%ØŒRt“[ 3c V»rÞ6³p^ÔG”~hK4}Ú¥N܃¨ ²7Õ€Ò€Ì(@ X•@0áw£¤¥ê*u_ôMlàŒFçFçäìŸM­èsÐDçDçfìq Öñ}˜ö‰Vb8¯¶8i0ì-ÉÛ¤YªÚwúâÒšMü›–”v(]dG‹\1åZ?’áF’ì‚rFÉáTæKIŒ‹)³ÐFMp¸b/š{Öiž_ŒÏ>Œ46.!âLÉ,•Ü‘‰Öž|èÿž­¯³=*b~6e÷Ȩäú3dÎn3k3óˆ‚çïÿ•ÏW”*Ú[âÖ£cþDÂÚ‘ Â]ü‡(”“ïn€‚Öi4Eþp„½>•dïP›,ìÅê¼¼ÃFi»CR m[Í}ð»Áj5(Dƒ\c9Zë·´~./xÙØ€»’tITl%§© ¼ÖzcYê—tŽS\+¦?‰žÓsc÷¢» )ùaß2õ2ÕåúP,eàèÎáKÝÏåÞ-}~>k}Û”:?õXÇ´D3øÿBžo<3?ü:àÜYlW9¸- ¸ãÌÐYñ.<““»B |‰!N€ÜáœØÇ„Qk ÔËBô黯l„ j)6eª‰Äȶ¡ÊðQ¦ŠÁÃNÕÍÖb®Sc3Û:d4ÌLi¸£'ª÷J±yk%<ÂŽ)èklâgõdìBT”FH¡þÍ`, ®I€6ŸÚ(ytÈC'!÷<Á4蚪ÀbÂû¸xX=`O³@—c¼›ñ¶˜.LámL}ûè–ÐÆ‡u0'ÕÑXæž:4¸få4®{%^+JyerQFÚý`‚ksˆùg;ÐÂâè“Øj½–£´®0Ööc˜‘·¢4hÅIÕ¡±ºÀÔϼ9Æ7¬;±ö¼¸¢mY`Øw:c–Iá*3͉¶7­|èZ󬿍˜ÞÚÎOD^'ï™*&Ží±$ªi 4À¤ù—¦ó.´`=¹B•£Þž÷ä4<û<ÓR´î|©«L añˆÓ12£ ýä³8µãˆ0Ù;?Ñœý±)i¡0m”—Ü(›©¬¯û‡1KÖGzASF  µ§lÙº3»³ßBd®o›†ø ÜÝ `¸±¼¿œshZx{kaÏæJ‡?fèm',ÇY9ÏT ·¥­ŠÈ㉢K²K÷s¢¬mÈmž‰õÀr5"§¦LlɼÊèÇä;îª:ê(ž'ã›&^ãjkþ©%jCÓðà Lý °‘6Û÷Ÿj_ êV¾8NJÍcaß×úAýKgz£ BcC~¯À\´)wi­¯HœÄ~£éDðøX¯Œéø4”Ò½˜Žqš |¢nïÿ4~},.—ËʲU./–|2õ¬r7˜¬+êã*¹6:°+Cþ÷„£èÚ£aÑaâÛà®gO03òtâÈÍw7G¨ l’b¥^Þ¦x°·Ü‰­pÂ7šƒ9ªHG»/@[!Ü‚³o ‰o!oEhªÑó4ý¨ ?3?9¸Ÿ9íÍû:ÅF’C´»ºïTãÈ¢%†äÀcÌ,}°Dò Ï«­«·FP-© eMÍÓ—¡Æ|ÿÇËÚ@˜òÙDä×(¨šMVÓÚ¼ß9Ü·ùç­Ú·sÕ‘ã;M:y‡á©뉜f€ ¿”}í;{ݽ{¨Àé/6L‡þUz­ÐŸ°#’`MÊO³6úhcù7ûÎ}3¨S¼¸wóS“¹_¸%ÿÃÁ)*ÞíŽæYÊÇã•ü­—qðQ¹ 1,ú—jå ¶Fl Ú2S¦ð4?ConÑRÓ 9ħbqåeé†t–§‘¦ö—£*²l<Éjø%ªéN¥¾Þ–Éö6ú¼å;Ðå‹D>?­pÕ± ÏŒ—|¦á+Þ€PÚ¼7Tìõäú¤#[횉XuFFsJ'|›…òi>T‘Þ÷ÅG„Ýß&þì”5´}s®J!°%†ÂF“C?Oó‡( ™nPh Ê7Q&Ç;ØÞQáV½C¤(ˆµ™«4‡œ‘õÔZé4[ÅxÖ<*½uB ‡«Ñ¿‰ý‚{ô÷Ò¢Âz-2Üc3*ÄÊÊ7ų§þǯÙv*c½×9ÙC|ûíó éùeD0¼qÒ0¼TjúNÌ:Ô¡o |Ø'¬ô%Š4ˆü¦6j§cÜn¯®Œ¢$ ËáÙu-.äWǸÍQó¯ðœëÛÔš€M)|ò!š÷üwM!fÜ,'Ø žx€âÄ ¾LS¯Ö5ŸHDS)¼Ž¹«&×Y›ñ9 ÿEx4Ú¼–ãxûÈûHÖ¯W”µ&8²ÖŠÃÝ{(ÒÁÍ’ö£ç-qL®‘ "à£?‰ÆžÜ¡¡#k¨#Ë0ÀÙ¦©(SB„ÜÝ]ÿü×ܬgÎzBسÞÞqµ…a$2Uµ?¾¤1/ 3qƒzϬh-Šá^˜à^8z «p$Њ°Z^ô9½kGÀ“sµôFWtGÖŠAo:ÓÃ= ó±fòþyÎÇäUNúþŒ$½Êl[Šîë¶MZDd}ºp§!¥'¹%4Jy¾+ÍB<'Õ9`V"Ùã¢0› eÈàqiú §ŽÔ«#ˆˆˆÓ5„Þm-|f ši’žoË´q<’îZ7|7OY3›J¿OûËñœ‹¢ºÉÍrã…}Ý®ÑáiÜ—ÛÂ:';[Žîö2ø]a%Ê#'m®%9¢³üS‡¥×®ˆ@YH‹š·õsU23¬KÜPYì$'i™ØH: ãïØäï\ü]æú•^ª·àÖ¯p·7ëðÇYë=˜p……-É'°)|`óPbü‚LB»Hfúä˜=Èsê}¿Ê%²ã¬WØ‘„¯瓱¤P|¹…qW’æ M,½HbÖÓ™‹X…¸R/±ÇCìž}"àÎíègØÓUÆwxå1tCÀîý+§2)2p@›?±n BÒCbPeòµ¸aÐòRÉ' ‹„ô…”e7*8ŸÅ5hž¯ä\×D5 J‘5–KRäñƒÚüñ•ÌJ`[Y%«}xž-ñWN…–wÝc·u(þLB·™]Œˆ c¾Ï•ŸXv9ÎS†/_úIÿí6‹e‘y\ÚþîÌüJ«¤%:ÖòßÛc¬³þ‘Ê`ƺUñ½r.” øÑ¯f-ö/¹ouIß°ñµ‘ì ¥Þ9 uö·ö=ô‰º¬³¸¹d*ªC«‰ã2¯‹¥œ÷µƒ4é8”MÛ˜`BD=-ÙILÍ¢`ZúĤ‚ed8%TYv#ßPFþJøG?•í¬Ã½èvÉÉÐlê»s_§Ëzç˜5"¦`] ç©Ú;G—•ß´E•L!j=t²k›ï,@Ê5xé¸TlD†Ï·ÞÒ-øi³·ßû'ãàÔ§.ÖEpÁ fÐDù´7~]9‹9À¿! {Í·Åìïÿé_V¬'_a´ªr cI\ä¤u̱¼«¼MfT:\Æ©FípWIFÏ¿ ¾vL9â ²ÿÂçÈX›…h4ûÌd3­PÔ\E›P͹Áé8Ò’œ¬é–ÞÞf,˳‡÷ÛƒuÁ½¢ž®©%n‹i¿Å]îÞF(Èÿ©Ì«aýxßYâkqŠß[#þÒ•YÒ} ªô8ºe %N2Qú51úîãöÇ{Iþ²¾Ì¶˜0¿ôÓ5ÒGn¨ÂÚ—ÅÜÛ2»ÛÐOΧ·rb º•#oÿ†Ïø$´ä“· øïIà“ÒÅŠ=®‘ ¶:_ª*c]ŸÊ‰mÎ3õ2Ýׇ+>˜m¶V•í/FuïmáíÌ¡<{X`s”ŽͽPPðÓ¨×J.̉çL=€8Ðd mMõßýÿö=…Ù§; "2øµ”ÖKõ li\Þ[t°l»i=ØnE=ÄɶG˜ÄÄvoc­×ïή8ÿl²=±jÓ#ﮫR;?c©ÕÍ2Ômvè:×¢R1‹Ö—í[™o0{”Sˆ·»@!x2‰QnÐrÈSÐ4¥?AèShRnlÍ(Z…ɽo;¦^YGf²¡ÜÞ^­S|)ŽÂ§ÆŽé^ÿªÙJ=1Ç›ë¼[ò`Zó8Ç;»„w¦³÷6DT|"E!®w]·s#­€çHEw'iýÞÀñÉ{`ÿ€¢Ö×|s促$y28õqóÇÛçzœo[ݤ‹ÜÆë÷&$àú:ôoåˆhò÷õ‘s|kàøT íªâ÷GKFÖ[w3¡kttéçÖ­ñ žá¶üÙAá¦Æs # 8¤ù úÝÅ…‚Åb½Ðæv¸ô§ôꇰ0tXûKU÷µS<ÆÃÿኪ3 'r¿ 3®6³ŒxÅHFŸ´Ä <#ö—^õ Ëa¡&µýØÜè +×Åh=5êùåÄ(ìÊɲǖº‹»i),àÉhNÏVùÀ?á3./.y¼ Šûž„=i5O¶ºaÖÊØ® O_OÓ§r4ï ëÉ…K|ù«·4è<Ö÷½?м‡2²Ülº5þbšÛ¡¢W™­øwN/‘ ÉkþMLH§—ÞÞ;Ã-*OˆsÄq•:aHZ)4Ý/˜]ud$"`e÷—G;O‹>EXº ×»Zì½Çùp<%Õ øþ>p¡/™DrÛ8å°å˜úåø~É©ÛÂÛŽÔÊ ÀØ–fçqÇ¿ÇþÝ+̸±Äl¥xç¤sv/ž>GŸb*={ú×MwDÙÎ×-,Ð7¸Þ-·ö:×»­)öŹÑêùÆœ]ÏA?Ò…),ã¡;ñ/5áyrF…ma¸Kâ7v½SKΑ„>ÝÉSWO+ÿÁ3@:'Zƒè2&O—Œ˜»çÄsýä5Å-³¹D`´Ïi¼Ö‘¡8>x„eï­3ˆ˜oAy·[h'm”µ`Àh…DTÕëÿâé õrÚfõhÚ‘l½äðôü¬´hÒ|0pG†ë4¶¤Ý–ü,’˜zcK/”˜5ÚaDkBuY§J³±ô´t»VV¯Wü#€ƒtv”A1$n€ª[ôÌguh¤+43‰KRýÙ=‡j°aÜáwv®*+M:Šõ]U†E]:§êFÎõ-"zÇ N IPÏ%ä¹ÿø¨œ}£[³HjÓ“iïVT¿‚B-‚\ýó‹áM0ÿ$ì‚]ç~0%úè¸Ý ëMjŽ‘1M¹Á:/¡@ˆEöÙaá•‹þb[­ ¾8T£e1)¯Y¶ÈûÏÿ,V{•F£ÆjjI”ÿÑ~ûÀžWfNuŠ ±è¬—¥zÝ{ˆMY–yÃ×߀¾Ì:v+*Võß§ÿí»ðD»«}X³Å›eÈ&n÷ß^ÚãÜwr°:"©i†  ÎEª?é9Y F–©! ÓW‚ý»z„§ËÑ‘À\å\{àžÂߨF6Z¾ˆš)?‘ðêä´àÉ÷“¤'YVØ­—û¡ÉÜÑ3$}ðšnŒ>3°ò+²É©k Ä–?ÒÉùS·öø1d‘c|˜Ý÷ìwÒÏÝWåÊMÿe¿Þšh­]m£²Ã·ûoÍ t®n‚Õž¹Š¹– ®÷¯JR_ºí·®P×k3ó«·c'æìIc9ªû´xÐLi¦íæÎźn÷ßî°Ø´õº7—$bK¤îh¶ï2l†Q/Jí\%fnF4`ŒS¢ôõŽ\ÑDÙ:×{7øöÐT | ÊU'tTz¶l“Ù ,‘ÙLV5˃Ü?Ô-ˆ ÛuìŸ:@™[v’eêÕ'¢P“3Ó¨£ÆÛ ²‘’¬àÔ¯ÏBò ÚÓý. вÊvÙ¦6ô(ê¬uÚÏ‚b àŽž'ºh¼3[ àùm†æÄ©ýð=;‘ùoåsV‹±E¥[õ{l)l €á N.ÒÄ¥Ü4š3—Îþ‚iÜŽÈÿñ‹Âð`™Ñc˜_iÑU¾ûµÝÞ…òÅ×W™­ØØ*ÚpͰ vü~²¸Î Â…çýit”‘Ÿë4·~ù¤ûämɶ6WßϘ§¶ž¸‚¢µMÓÚ@œc¬sðü Óµ¥ÝÅÔ2×õqþo§ÓÈ)¼8°çà˜ZÐæØm;Ó®M¶¢t¼5øÙ®xç)kè±ÐC_’; ³-ý„‹~Ô“(•ìÔ—AL¡ÐûÆÕ÷ 1…’è{[ï¿QE7ô&{lÆÌ²"SÎ…MÏÌoéfbßgiÜR!Ÿ+IR(b‚™ÆÎÍOØ]¦ÑÚ, 6UýŸ<†ø3Þø÷â¬ä;TYSprºãìJ\7^š"‘±ä¶O@e9ý1~gob6W!¦}MÄ„éêwO¶p LáG~×9M݈*« ú% <Ü•ªl£~OµAÒ80ƒô#Í w O(·ÌamT¡ÿÆ7 ûÜú KHieÜ´Ó±eç[9ú¼¾°Î ËÜ£*$¢IdvevÿÏ ’ £Dtª4]U'þš…ù^HKýýŸR¨b…1[•õG¾ãÅ{±e:R…8ñІ~tUïBDR #q#H78}à.|o„½aÙÞìamØ^ï­\}94MUE€ÐR*>´†Ôy•ܹNù›žé)°`§Äµ:ôy Ù-ÀKÀhT†#en³è®©ýQS£¾Ãßõz€n‹® }I¥p ,ú:Æ_“óÚ€Ð7a ¡_Úê97¾Ë¾^cÜ¿öF‘cç:æ#‚;’ÏPÊ«É÷¹ ñtðOÔ¬±8•2÷»c…ëß(g0,»j¬ 4©[ÐQþƒ:tNöòº:8ÓÇ@·n Errbؿ•æHÓcÿ­-î;ÇñR$ÉMêmöÙ¹1iCOââ±Ü@^m¨5Hë*öœ… Òï𞯎Ä̧ûüžAhVAz;ØÁǯ<†Â  l‘eà>Ft’ja¶d–䱎ö~¯$Káo.3 ")XÑ×Ô æ[Ãؤûo<™¨ùÈ/^ïé‹e>>‹ ýë/ÜTàÎâÝD°ç½Ã2áåÆ$ç`れ÷0šq©1Å´Ëy§/4é„(qõÓ³l帳¼Gçl±óÅi É%,NŸ¢sÜ<'÷³3D’ær¿¶¤¬¸E–[yãr¼%‘€Ð’‘1þxL”r¯ö,ÅRçÃF$U'‚Ší¿‘ܨãð±©1óéˆÆâ‚³Pû¸\w,ê¿IvVÛÝ6Çáæ®À?Ø}BŠ„OQû¼j’Z ¥ôd{sŠÐœ¢ÍD¢ñqi NW3¿ãÞQú)åÑWpÉùb—‚§Ü8€änÈÝŽú“¤ÊAqFpuåªðºúg¡9zá¨3ÈsÑíI®G’Ü8€àîçñA'ó©XÛÿ£Œ ê*¥¬ˆÆ¸ìýà”b¶bÙ&¦ ü‘i‰*(§¿ƒs>ºm)œ“Ã¼Š ®£`>ò®Ç¡ðï+„›˜•½°Ô¿ß3LëòDÍca—4¸âH¤=®7©àÆVGaà0$ÖgéígчÝ(ôrî¸äDª¬ý|Jµ±ZƒKr ub=µQÏqßp6nºÙ?né™H8¤VãéO$«uîwPŠ~`òþÚvìGy*Xšÿýl&åjò!U!o@ßÓtX¶ÔH4iùø3pXXÛÁÙH ’Ïc§*8†AÕ3¹­ØÍdšhÅø-Àìmˆ™ÎÌ Žû¦„§›¾A~Å•Æø€bÀ ;`’¹v <¹§¦—'¾Ï]œ‡½8fÑ|ÿ‹|ZÜ<ñÇÌHO\pÿ!NâìÈ$»^žóÜÜüxƒ1½RäܵÐÙ4å~Xo)1ІޑÞE×Õ±¯t¶%Pà½O·T0ÞNà²e¤G˜°Qå VüEÐ}F[9©™:¤%ȶݙ£9€cSi l7Ÿ|8FÖ¼ÇÚ3mKÙÛ8¢ß¸ñ³ "Ph<…1~>á“YÁ¹[c~ÑF놬rH3Ä^,ß ’"Ý0¬*ç&ÕêE½ÙÎ,^ÜIƧ457?Ç»ìÙg`ßj䥼XƒFYl¶hü åH“uP-<Ç7¨±ûúî w¢ËŸOÁj§DyPaâ7ìèea.Ö<¦*”6½X”…”¶jT%Æ‚Ð)ÆÐÞ~\btçªU8¯«ii®”¬hxÐ/ØÇ»©»ÖèüyÍ•r|¤Ê™]¦4à$³"è(«ÄÉf²ƒ˜|¾2˸:«s›^}îû™1–™Ey5®|¤Èž8æƒ4 !whº,X?do†Ä_|8ÉoÉ…’€>µ #㘛a¯AÖü¬‘&Ja-?ÔrÿÚ;Håîå?5|i*íûKÇF–®È½z¢f ¼'¥×ÍØ›âÕê¥Üø ¸§ŠNËI°¥öî•gH;gÁ¸®Ý3ó{:ùØK4³‡Ãåi4W@žôh>§ë øâk¤°0›ç£(rÝ6}׺#ÕØe–”wkYV¤…ú‡Åˆ3PzÜ£¡E>BîÒqÊ)ÇõüÅyï¾ç{òøk|ßÚ™y 4¸¬"#0ÍVæ½f!_æö“¢rFö3})ÞEfud<Ë)NhZ[uÅI¦Hìâ+e½˜òîǵH}ÃÏZ·R†©}…'Ç`éè¶ ¸x#P7ŒïþØ]uN––E`¤æ-o®lÔ{Elpªag äœÃ5€L 2õjj¿½¥70yº6ªªÑxP& Wd‚ž¤ùè—$›ÒýGer¼î¤ÒÛ¦e5ÙMÕ/&ÓƒJjœv GL—Š¢ñ$DÓTþëä¶W“ì õhc[YBJ®ÄâÑCC¨¼Tm2)ˆ39‘¬Äõ¶O> v2Y]]åt=, o@€°–è¶ È°ôœNÔÉlüx&꘡ºs»¿ýçƳPxRÞ ˆÖ™R¡¡¶;u4úû·:&KÀÈØÐõï¶¶‹´/R`Ît· 21ÔT´ Cÿ“Ë» ¾ÑìdL¦2arncƒYæ u«&æ8(>ÎÒÇj¶šP{ÿmÿe?Œ ´¸ƒÐO(1K·ÃÚÏȵ.y·Óìñ€i͇Ñ¿O {yí³{0ÀeéÈWþ2]÷UÎàé†U9Gšû×´Æ‚·Ó[37OÍÌ×»*ñ9|†Ò,i ç犳Èè}Ÿ4ø7ÁÄŸë#@ðXªej¡c²Ðcä µrï44Ê¿ö”ÉJ;ŸæÕÔ'[JÞ/ýÚÜæRoÏÈï“ ë¿S+Š‹dçQ!—c,dÔH>ÚG=[ßn†ÓÅn:ŪiÌ’ ÖDA•ÝhÚ²žŸ‚Öv°õkSaÎt— :1ÔP´ E_ÈþâEŸ2˜–ExÈk¦ åÀ¿ƒv ±8ÙÈeY73?‹,¦Ù‹èøŒ8Wv¿ <+.Y•lÑð}ùìœîP[mʦå‚<Åù1¡Ÿ‰0 å5eFÚÄI9BšO¥Žsód¸{ôdv¯HÅ&{®c8÷@µ%­>b³AêÌ–Fl"Ó†­e–ÂÁ¨QÉ!rP¥? RU ^i»]„#[üHé/}9ᩘüYtÝCT!$P­ÓDwWÚîÉ `÷´ÝNÃãku ÜàÒ!I”Ö, ÖT;–7 kà ¿O<ù˜¯ûÊ))š"Ürº­F ÏœõI©óEµìyU¢¯lÙ·-ìLf3…Ÿ9àg^U³YܸòŸ „ü °´ ˆÅ¼ìiôËÈü°´ˆF¢ú§úC|¼ž«õDœ% Œ4F«Š@SO/›¢NÆúÛë Ü”DæCÂÔäú-ò&Ž1Ù%×êO˜KÞÈS®àþ$ØÌ-Ízë[a©¢à0Û-×d²å{K\ADæÃhÊÆãcœq\M•7úÇE{¦/dGJƒÞÆ{Gñ¬’1dO-F¹”ò´~ÑØâª¼Ñ?,Þ;};;29èmÊÍë›1£ZaÍæGÂäð/zóÖÈ5KÈ:Z̥͑=5ýâ´”D®Y²@Ï#Ú·ƒ©êõ)ÜX›°“p+¡«O-âSþ?Gv¿¼N•¸²&lø¿°â­RßÞý“ª¤¢cóòßÿìžìû‘™Ê¤¡‰~g— ú ˆÂ_}¬z—:b:Õ ÷µíÆCQup_rÇð›Fõ½…$/ÜRïp6S(ÏÃ!®á]0îâ18Ö«— ºõÉ€€«ºÞ2Š*õ(EqyaöYMå[ªj #â)ħ„›ƒ±¼ü÷œV€Jë=ŽÎ<Ìõ•HùꙢôa²0Jg¥t‚ÍÉÄ)­š’\¬âöboDï=ÓÜKÓ X~))+©PùüGk¶ˆø&<®vXãÄBa“l)j0:*gƒ NK;t 7þï‡iØT>´cQ¨n »ŠÒ&,Ñcް…ƒ½Rï}"LnWêŒcîcº“Ò\RØa©í¡Çdl³ŒRð£9^õÿ2Þuy–Æu"C„þûe–&›Æ0*Z—ì,S/VÄ'Ê´K² ¦=† â/¶à<™T§N”ñ™ùÞè&ÀT™MÏvˆ)éñ°•“gfœ'”º£ÞË·&}rêf 4X‡í§‰“Æ@ãÿ̰Hµ×ä¶Y÷¾¯ûç-οa°_bh|êSÆñíE†Žh_Tf|ôm³ç$ä!®I°‹À‰ä&9|º—!áˆ3Ædê“¶‡âzKÝ;¶êsgÃA¿…¦ŠÓ+=4†-nOˆbµKšKt”tŠ´£L"3¥È¢ d‘ÒqØ$Ø‚LL¡Ácôë |,C¹¸Ôš:F{!'Ñübà·yqbËtƽŠ,iþÛZ ÿõÄ9϶éû*QЫիSc.†ÀÉKˆï³›A¢ýRÀî ™Bž<¼»¦åÇß3hI¤+iˆ¦¬FCµÑÀ#w©àÈ ÞÅÅÈ5ú.–!å}CÍåR8(»àºÍ ç“ »Mð¦ýºÅeï'ST‰lîhNÓðÈæðƒr54²+öÖ”×#j9P¿›küÛ‹ÑÙŠ€‰Ä…9)ýÅC¢Çû„u{ªý7º1L l‰ì9E'`ªÙçÒ¤^t¤Pû+–r/©Ò«8öb•«FHÎ_»vv &/B ª°Â-‹rÒxƒ<°ê¯ܺçOS¤žŸA¥e™˜±`(‰øü3Jd t­M±ŽTúK[Y7¨s ¹¦T®úeµ×Ó•Ø6F=ÉNg“DÊsª â%þÏbêd +%û!Y¬.¥o ë®ó† òA£›%dbÛQ¥ÅßBt@í!­û2M±½Žìô0ºŸS\}¤Í¦îXFñíJ™ßÌußoÚ_Òú[ÞˆßØ·•ݱk¾]œ†rÎt!nŸ¹GOM,Ñt§²‹ÈFÅ¥~õJÓúÿÏæÎPÖý\ Ã0ý㣾ÎÑÐVÌÑô㙿‰[Tübb_®úàãûʆ¦–¥iu=ô¢Zn™LlÀÐú¦4&r,’D×ã§tbüt2¿?Õ¿ð7®GôŸ9CåAB_ÃXI7²¡}ù¹óY»×Á³³v¨ÿYˆKÕ7º‡”â密|Ü2¾¶Hªdÿ7ÒµGHàÝ'«/¯pSo¸mÆfãõ j<²õ”å ñß(·è1m'CîMZk^T [%øSLŠ‹àˆi𢼧גY­³þ›åUn‚媄V î:ƒjŪ$yb‚"/Kf¬O}YsÍ0ðŒýljzÂ3­ëÑú=©@uà>ñ•7áã”®cðheΪCSq© füôøÊö~‘ÜÚ`ŒÑ}wc{NßœG¹ LPHF½Ñ‹Ÿ®³?x×wƒæ(€é×».$?¡]-íÏ^Fì•än‹¥K{Ú•óÊ…Yblªe ¨f ÝÛôÄݬëžóQQÈøåŸ%Ûw­Ž¿ŒÃý;Oõ£qïæëäÂ!*kÍ[‡ÈÛ“·W—ÇÞö— Ú—XÊ ÛË£¤#¢ ð¶1è¶.÷éméÛâ™O×r՛˸ì@:j‰Ëù_P Ñhªf%™ ;å “ÜnUj9·¿4°Ø*®WÙÙ&Ô<½ø^¾SæXü\ŒçâÅÆØó«ºÝÝ´3}œÀ¤R"þú‡®á%×6…ïrHË`{£ìðÍL¦mk·Ú·Œ0‚–ÈÑ(@áÁm7†ï¤l4ªIÿ‘©&z.a8æ»æ «oò£žUúÿlu¤SÒ30‘* TÍ“V– nâ°Žq˜:dCÍŒdrµAÀ‚èr$‘Ϲ“»(Ö¢½´Ÿ§²Ÿ~Ìc]àø*¢Ã_[èd½QÅ¢°ôßÛáÈÒ§»>ûv e„›Á³žË¬ç,n…°5§A ±N$tއÍ4£¤oØÈ“œ,0ƒ‹n|‰¹ãwEgšWŸ yVr½;Ýg†VÂ$…bþ®ë5Á­¿Ü¾¸²{Ð%u4 †¦q'~MË(EÌWk,©ðÈÅ:)|ÒàiL°b5ƒ"§RTZ#P3P[—ÑÍ( ÍJ¡,ñÀgHQ’Ñ3Œ’ÔóÏ2ÉY<0ª •KnuRø6,›È_›Ì[¸†‡èö.vu‘3 -+Qgb$ûsz¯» ðYyz›ÏljgÁû#ëTü¿YæòÑßÐÿ‰µå ̤?2Åqʼ¨Ÿ½¯Óbí<‚n ‹õ²¦ÏQåyÍ™o“x‡ƒ0ñÄB¼Ö ÄS}rÓ`É‘5ü¯mÙÝ¥룖?Ü̘›ö3í¾Ò  XIx¼[öS´#Q%§+R¾“—F‚M5åV!Ëðí(àØãoO\>-eÔ„dß‚Û:O7NŠänŸÂÛ‚ÄPݬƒÁŒ ç;§è»ˆJ“bn,ŒpÖÖñYõ:g²å¼pÏìñ(^“KÀÖõïÍ… ¾®í—Iüè—T8éÝYq׋ºV“9¯ ª±üÉC×ûœ;ün,}-g"ÑÝ®Ú| Zõ¸^³æ,“ÞNcÒóm%­n‡V4)ËOB 4‰,qTÌõwb#§S–çƒ]"D°LÀ‚ t“ÕN.ØíJq}Ð\Õ ßˆ\Š8b`H$¤d.¤ŽÄÇ+»ósŽÊ"Œ)'çy䚉ÆœÅr dxœ!•§vEä÷ÿ>ú¼l°óf(Ž= 15–ŠÞó\4çIâ ôì“&ÿÃP %0ç;ªN$# ¶Üs >—D­²8ÓaGiG3רZø íL_kwlH.ÿ±·ù˜×rPPŸEû–ùwD¸¡²Ïµ£Õ?è¾G掮ÿüå4¦±»-Fãqu¤ôàýo1¼¿Ýågõx ‰ÛNå÷ÇvšmS¶°t¡Þ ]í¼çŒE4 æN#òW!ò•v0¾“عvb?Þœ û‡4ì!£AñÿÐTTu— «w…gDþ0ÁÝÕ‚Jb*;ƒ4h¥%:§ˆÄOG×îuÈÑ;){›¦ ±@—â×ɱ¾ž3í5] wµáK?«\»`p‰$ôºÇÆê­.K.s¹à’“õÚÅœòæžÂHî_Nm=¹Á\¹Âž·ÉØ–'ªÇlÄÃ?îÙ«a˜SLÚÚDI¯{h¢­” ´n=û¹à“)ã¼€?Ÿ£@ùàó4"q0΄TpÝ´çúû®Ó“ª›R“ÉY@)W°¥L‚Ûݾ+.k!ɘȅIE‚›>ºÖ ¢?? Ð"^HLÉ\™ÐT#Ï´jêI»õðgŒ4A‰Í3¤Å81ë߉T´¿¸È—“Ôïì–&»$±9þ#@Æ”ìjo‡¢µ;”uTYêH ¦®6R¼x!É %ès”¶æÙôìîˆzMº£ã#‘ÍSú;T]à!&æMÞeÞå«YÅ•÷“וÍ,NŒT|õcà‹ ¯nŽ˜pW'™³û;vS2ÿÍI¬)´‰*n‚7é´µir׳¹‰r¡_'|­SˆÄÔ^òÔšÏ*xF.Ö£¡ApîOL}÷’-¬÷Ì.½ò¿ÀD0í'NÅFeå5!ºˆ¬²¦¶19/†Ã+OV¯°‘%b“Œj͉Á,34Bň³x‘ ´¤ôs´hsmïêÌòRaißÈ(&|E¼º1”j„•cˆß®ÔÕØmˆ³BNŠ®ç»ðnÜÞô“ûЋšÕ™Ñ°è - m3±>!…6›µKÚÜû«z/4비m¬Å&y\«Ö!ñò<™½Íܧ¼²î³×ÀëCQXƒÙ•xF¼¦ì8Û¬÷À˜ÊÃÊ.¬Ä”ÌëÒÍí¦ÚìC }¶j(/¨‚Š7ñLËÚ°¡SȸâJ‹Yžå’.ƒ"NmaûTÚ†%9YÃÅ«”Üé¢Íb7¶6,« :³"9 \ ý‘¿‚ÅM0ö—ñfÙÉñîR¤„ãáˈøx:¦<ü!ï)?Ïd;Œ?‚ê[ljû›2@Ï[„ûì&is뮦¢ Gˆ]”¿eaD^-èa UOþ€Ê@ñ?4ˆóÑÛh«ü›ø7W5Óv‹®“>äPi÷aséZUôEõ?oëÿicì™ç û·t¤ÚIW'ǦL°<·¹W\÷õl×uâ"ë»±àóîQý‚jR—¶^Y¥Ao‡}þ6T8ƒƒnô\Ô‘ÓW `fc…±êª<Íö.šXº£YœN1ÉJ#ÁÞd—hRSÊúÒÛ#(?øÂ(êû3µ ýêÃϰ2[s#òƒlo(fï;~´<¹Ói5{·æAXðÈŒFx }”6^©iô+tL¶ZùdTŒe‚“¢âCcAäÆNDš+ˆ¹t'm¢ÀŸPxh˜©C.ôW.Ñö a¶3»´råe"ï’ M c÷b˜ 9,¥0ÛYoÍÞr !,ö|r‹`ß\± âÒjŠªƒ…{­•%³< °LÝ`?ÁQÂR5ÀjrýkÖ ð‚_œ÷êšsŧmÇÝbjÝZòaÂø¬øŽÇ“´é[p¬ÏœËlB‘3Y 6cÞÅÁ˜w™£‚ê34D+ܛݪÿzAhÑ+h<£EÓp¦XúÀ_cçxº\‹{¦‡iHáˆ:Bûû¨žbZâç*ÞÏæ‹®=¦ðf÷EÓW‚@M!ªRSI¹çœ¦ç ŽÝæÝôìX2ÊXˆ‡•h€ìÄ›šÇy@ }«5#Çé˜Ö‘øá³8ÄxvÊ,Öð ÚçSÿ^q^+¬ø®/nÜfѬ ïò¿gAlñßi¾_8Ê^Aa‹¬kõ‹s ;êY[Ç 3w–‡d äÖ˰+pteN]$R–L®¸ZXñÜ,ÝgÀ1ÑbXŒ<¤B™Ô ú¾Õ?cßC³IQºCÔ…ç‹å ÉÓ{M[+)Gjèà.ÇŽ*V_Júï÷bb‡5®7â·=ÿý ù 0I“}Q¨kÌ_6„Âçuÿ—wŽIáMà"{‘«Ð 'tï®2`ÏôGÖzx¹NIA ûBþ×NÍŽÖe)g¿æ˜Î})ÍÿÒ·Ô¶”óÖ£–1hÄz$y*1¼aÜóbô^8hÎ=°ïÄËUë/ Y'.îU}õRH©º¸^%Œ ÊË{w\±;Á»àÿŸÒrƒçý…CjÞÀæ¥F¯Ð²Ô$k¨¨›¾Ì“LL;¶·î$.iëÂ*ñÞGN\(…Ú¡ÖçjpBm'-±TU?;Ø,h›-ytº¸Ð SÐØùP:û÷:f·oÕí,9#=¿ÇíÒÌ-ZD^Æ* vMº¤ù⫪o™34“÷-ƒ¯cñ9QY ê1_¦Ð-È¢Ï ,K ÅO\ŒÔ7Þo'b«²6åÞ$Ô[ÊÅ$–å™0é‘uaÁv£yÜ0Í,*Ç÷OþŸÓ”ŠIt>“ÆÍAÔr›Á|0©-q*³ödž¯+ÊåVæZE¹±NöËôºl&Ï@Ë›P[™šO&ºÙÍ«3…¦¤‘9›Z{´1ÂEMçC;§ ÄÑ %™™õÿ´ÿ-ü dC쌄Ãßùõ]ú|#ÞfK„Æ8#,#ç2bC<"GŠ-|uÞf”D—d+çãTüÞCª3üå8 ›ª¾Š©ÿ‹yà±äQv°Æ¾ÔtzÁ£ÒEoxKÑùO~• ÝÐÊeS¡¥b­ZéÙg!LzöeÃ=‘ ‡N¢*æ^™ 7¸FDó˜4ýƒM1qZDð uàV²8 Ü}« ˆ-Vq]Jþ¼÷3u"ØÎ" X?¤½þV+q‘Èê½ñmI#˜.W@aðtçõ6’y¾æßD÷2¿)-Ú.]¾zËêF÷º"«ÿ†@çºE±à¸è$š¦‚z[¯ºI–9gl´‡z sÛŠüÛËVüïjïn -„“Jʾ†œTæ Sø8¶Ãl‚ö<ù”Ä3æbiHý:yi|H•¥õ‰»$F·õ¾>s z}ãˆN)Ž ª §pƒ™ëºuÖdq¸?.8ږ奩t@ˆÅ^Ó“Wɰƒ]y~Œª{˜=.ìÛŽ¯}¾ÅòÄͰ‚Nj ®º4ð+*¥Ýxc,ñ(ªôp8(‚·OÂÚó{3Ö‚T¯1 àœŽ½c µ9éëcÈÒC0å·l¸‡„ºÐ´¢ªb¯>m9jçü¥ÏK+ý9íÊÌüJ£i¦éL-ûÁÙ4–±£½àF³Óêßöã¢ã“=ŸÜFÛoq©î(=ñ´"íVµeBî|Qo™÷H%MŽ4”.ç&xÅ©éSL–Wª‡½’Sh'Դሚ㪚Ê÷:"ÚÑݨÐ-á”)Q¬¶È=‹í<ŠÌ=BZ{@–nò.]õ¨Eü )y‹À”âUõ“ÜW¶­4ZÞæI5‚¢NüИ ÅÈèM¯‘¾`‚ṳ̂·)¥ŸQ!# ž­ƒ 6â‡þÈ—E¤ˆ){rP`VûpiežñUfIF•jXÏEtd{ˆÇüH,²™v±ª;×ÓgÙ˜ô”7 ;}CQCD5Ɖ’gvDÐNz¬¶µ?—P¬­ö×—Ýn¢7^©òù¸þ®¦`tW"¾æA|€Ì=…m<ƒ­»Šm”< !Ôfî»DSl¤àÿàP)-Òµ…DÔI詘ùε™`]õ„CIxÑF?ÏæÛú<úÁí¿Õò÷(g©ì "Ú* ?†ÇÝĵ‡¯>Á3ï¿Sµ0R·lRØSؘ&Úù' [Z»óó× ¢ã®/—q¯°ˆ¬£–Þ‡g‡×sŸN`ÛESgáA~Gí/ÑË/Ÿo¡Í&Ô¶ÂÕé¥WÆ£ÇBýl@xÌì^ÑçÊ'¿×ÈešTý+l˜ü% êgo¨©‹‰à]öä°È^Q‰I‘SŽä @ÞŠ—iÑÉä&.²“­DX¹QѾ¹ççlN£“ô"œáæŠI±”oªªÐ5ÑŠŠ†BX§9Õ/âˆâµò`)³Í3 ­Ü¬=2PH©gà13'Û.Âêã2d¯Ž¿`¥Ø ¬-‰¥òYû,&âdõI @ƒx3‚ÄhÕ!Íp´:ŠÃ@éwÂA^ƶÇJ“•G·ÛæEVNÖ.½{»Ê•8Í3°˜…›ut½õΦoÌåµÌ‚ÿmèE¾èð2|ÿ¯6è'º(ÀgG”åÙÓ$O¢Tî0"#(¯Yv˜vKOÌ$àÂYÞC ­·šñº:ÏUD à ¯¶ )ø°î= HÙ%Ž{wë͆[;åž0 ßÜ´¿¬.²§ÉãèQq>ª'‘ JÓÏ7XmÙ¡b ˆ€Í¦°qòÞå€Á«¾“¡3©4¿*D¦A.ãì¨ m¢íwdá±6qlyi u*‡'²ßPI¤!麗¨L±©:–½¯V\Ì~¼L!á§déð„û‚j‹La†Ÿv:_ îÖ5ÀFs¡]3d©S$NÈȹk ¦y ¦y0ç0í;`a ¤¬Æ í«ÖT(+J©áþúŽÕ³jÏÅÛûš)KšRÛ¸ã ;iRkàù7jCùœc%“´æ†$ œ”¢¥KÇZ[…z¶½Eh"£ÚmÅdÄŽ‡ïƒãÇŽJÕpkÖLÒ5Ê4…ÉWë8 %¥·æ¡ïx$>aðýýEu‰6 ņ*C(¥=XÙàjɆFËĆB(»™ye›o Ñ;C¹h#¾t )åB}äÈ´€oˆžÐíÂO8 h&ÚuÓ¼žw|…nfí¥.8ìAu°uÈ ¥ûª)®Þ±ié9dÐ]g=¿e:º?°Ôý TRìÔÙry¬N'vpZxƒ“EÏ rUùNAI•KÁ¥§gH5õ:È*ÿE¤rh¬ÏøuUÃûÑë÷À³'W@p–ÎG™¹bž2˜ÏK-,ŒŽÃd™õ}²FÐÓË¥Ÿ#iÐMåwéÕàfžûAÞeJœÖ+ƒÕ yb÷†Ñ†ÍZK3íx­˜ù|þíÅ–’l£¢ZÇ:PÃyÌ‚@iYZTüÀiî™ZÁ?ÐÅ-îî“•¬KÝ;ƒK‘Я¯}P¨Þ¥öeÁ ù—?£4£·ûeÊ/bÈÏŽß‘Q:£.Í»¯ XÇÛ`ŒIN¼œŸƒdò·Vb‚„Š%˜ÐR }‚ëû¼õ£v׉wR‡x™Õ[ûܹ2­ÜÿÏâÇ%lõùt-Ä[ÆTÄJÔÞ.–ʤ£t¶{™ÒÃ:¤Û ÜRw–eÜ•#ÝúÄŒ=Œ­Ýc ùùy¶îG<ÈoÈSý'áÙ‘ü\@0¡u„ò%ØÐ m&\”É<‘)CÝŠ!$íà"WY ZÆ I¼¨#ü`©’ið›x%Jù—rÜ‚ãÄÒžÞª¤;ZPô®•à s·çíoµÈ±gâ·••AU1™[Õ‰ ;vnGby²]™¤b ¬Ö õá´ÑòíVx Åóc™È­eI»$2 <¢pâð—E)/QidÐô¦ÉMOj~ÜÚ9ž M¡… W\{ÉŸ‘8ψٽ?€dÙavDxPÏÎÉa¹™èäiÇÝÌA…ž¡ºa²€‹Â"±Rj-ÎÌOÞ­`ì }së]7à¯-tt–¹»£t<_»T×0©xBÊn•kØI¬ý8€€‹“ Ó³kø„'mòr“I\°©8%ÀKüÿ)h¨HWgmĦ¤‘s€Ê kæj–kwØb nü´É‹Zèä ã]×°e ‘\Fròt“î¶l›#Sž(&󞾚ŠbÒÏýç>´Òx"E¤shôaÞC€ywB;ÆùŸ]ÛV [ÊvÒh](´Í¡Ç£W&‹—€DßSø¡=<~odMÖXŠFÀV ~áÑ\xL5žû’¶EyÃïMâ8p˜çxÙ=.oËcr:–7”úrÔÑó Ј$j¯|]dç\A¨8RºŠáþ(u×_âHŠl|BDìº%æ”>ɲsb˜`yá ¦prÈ2PJtð´«mÌ¿&äŒ'E/‰kq”Oa¶fLµˆòœø4ôŬöUýñ½-Y£ Èõ0Qù“+Á–n|#Ê5!”ÅQö1ú~ s¥œ/ú}.§Á¯ÇâOg«®1« ùå ˆ'™«…úî–Õí·KÈm2‰1“ÝðX3EUù&£ŸæWò(* £ëd‹FÖ(¦çQž¹´‚Å>L%¯ŒJ-cÄê1)+cÆÌØ÷°Haež/䶦ÓktdÊYdϺÔéXŽ`È`MëITÈÂÙrknëÍ ñD§ôúzAâÈ&À¼ŒTÛp©îThÛ~@Š‘¡Õ¼•ªY7%ÚSŠvÇù+4ÙýÀõn_Ãn@q\W«E»²ï=(>—£íeö%ÂeæÀì‚Ê]=Ò‘J„›û=?þ“8†±X¹’™ è%5^·#üûî@¾GF*O,-£Ó íeUÛ¯·³ëü®J°uJÛ¦Ô_ÜšÅ@rÞUWloüÞÏñœ¾ŽBÒ1¤eä:G|™›1‘—a ´N†#µ“ SÖ#9Óëbknãؼ\OÈâר´sDE¿Š‰WÄ÷d¼ïNñ×t\UqPY 4Êçú8ÀT,ù¿é™Ïf)cc_r—°åЯQ´MÙ +Lt Ú‚5»“̓ؠۥ¶g—¹PŒ uDo‘ºpó;SR´(ÌÈS²rI ¼:êáê+ÿPçTì›Ëž=-àµ:Íuy—’){‡»øìL³9èɪÙUfÎT^1!;9äÿ°8XÜŒš³ûÎØB :Õ9€ñ¯Gsço µ­¨Ùÿ'wŒ›KûkÚ{¿€ Kß‚u6,ͪAsF9„ïxOgØ_ò+ÄUüÐxêÏßÉx*ÉUeè—øn!Ü{P3¶’ã}ëvùM™Ü*¯Iˬýž76Ž‹VŸº‚ÿ5Ea’¨×bs>¨Ã/+îSÿ«3ƒ…K5’˜§ÕXEý6yIÖ#ë\H—M1£Ô¾ž‹"öPE`g¾øå\펦[Ü)ÃTkN\ÝÉ™¯ÿÄpÈÊCj‰'Ï÷ÚÆ{ró’™aT6Ýç¨àjÏÞxg}¹é“ |3ò>rÝh¯:Yý@Ì*‡.´°ù&'§ÙRtFÒLj\€È┦Ï'Ö‡—¹ wîô£Y<…ë>>Æ·GSCe5ÙéŠ1ÏjOÿÚM Æ+ÃpÎ@?w#>9MttRqgE6’ ¡füvfãÿ­î á, ¡9hFB¦#[–âÔÏGZ£©¹e•Þ4ÉI}˜âö·ESs**]iœ5ýü£"”¸òî™}ÜReÐOÎê¼;æXļ“KÀØÜ©×øª?wJóûÕ±x©åü ?;? l¾öö@op̤W?T_‡Ï›„Êĉ´]öÊþE™ç'¶)XúüƒÄúêD'ÞÇñÃz¼“‡¯Ø1óËÈBûôlš„ô+N‚@“v”ú–(–:Šp©0ÿ.l}DËônÕ…G“°ü1åU²µ>èÀžô]Ÿ|>®LÔvÆŒÉè“Ö(Õ°´†Œ)žµE•ænßv°|wþÃép¹*@‰glp¤¿½ý+wÜäcß_÷Ü ]%ƒi¶6BèÁ#'Zag¢Mì2F±Èq¸b’¢¨.³/¶B¾P¤ä—6•`‚­½ÒS>Šþ„îÁÈ ÍÔ|/±@"¼°AªóüC5­·•Þ[òW3¦µ2§I¼ô4(%Ökw—;/Ùo˜·­éoìЈµúÓÒì !-»Ö“×¢rµI¿ ‡¥’¢Œï¨!¹p®*(ΩŠ;¸!nê§MVºÖ|ÕuþÊš²žœö݈1*u•(HÀ`›ãwÕº¡¨£l„„ܪ`‡î0áÃDäèçè\ía3zîðð° òö¤âv!Q9§ Á“V.ΚüˆPå P3ëS@£Ì„*=Æéj«pšØØ_{uA¬w>ßGMðóŒ^ðN¶Éy ©ÐHc:$•$$нp.|Çvºj”Û^Û¦÷ôHÚN¹ò11'æwdÂR´o­nË€ž%ܧº%©-bôô…þÄ` h8Ú<ÑS„Y5¡=£ÐæXo‡|ë¶ó™¤ÊoäM"“\H68k‘í oþ·€_‹óHÐ/©·lÆL=û§‰þ|)÷èþ*áÅú0™ÓðQt(ÇNûa Æare¹ÞS8„(Z‡ò˜Öù§M¿Óyg=ìàLÅ7dS jla¨¦Y*gýI bb‘E×s8AèsMÈ<Ê›.ñÙÄ•BŠ¿³Þ-2Zÿ‹ðnùä:p°übÞÚ÷ÓÓÆ˜„q%Á`ÝÂêJåˆË¦§(”œ­Â¸Çs‰±î!3¹®=~2"‚²yÝ—WÃÑ FaBK†ßhNŸì)*É€™ÂoŽ˜wms¥$¤]:Ëþ,'ã?í[)äù¾æŠ1lË8"Á~„ð”Bì rå°]gã^LÓ½âóvs-mÙóFc6_¤h‚$TR‘0ª]Ècßqê Ã€ÌK[„Óå—åümJW„˜ÒßdQq6º%p!åa#‚¥¹Ò´vÎøXňu—ó¥*2çsüp£ˆmgD3¨×0!ÿ«P|Tt0cg´ùL;?<ªVɳ¨«h(Uåc¤”NE|(ÊåÒš›É0 £ýfZ¯Ò¼ÿOS‡8N?6$M&@v±x÷h±€ÙÓ_6lxuOÐç+öøáÄ[‘Åîkbší ¢[ÞÊöäÒ^¶:á"6²<<^V‘)šTùN†ëÔ‚¢_¬‹©ËÎùKIZUɧ¯±øˆ NƒƒÂ%ßâp pÕ¼¶äF’ÍXB5©ÆpÀ¥äâÜÉõ}êM÷”04‰òoz»g¹¤8³ÐˆÄÛ´>˜ñaêk ˆ´±Ñ¾"LðÂ_ðÂGõ¬-és>ãŽh'¤?rÉÓŽtqúË÷é›CA&UþbqZ4H«\üC·+âó­'°·É%h‰¢B¸Ó7*ah$ Y°§éÁ†. À~¢C×ÌÇ*Ý:LÉ®4½v`a‡þ}r0ÞÍJ}²4æGv þûJR]|Š›·ãƒ½%¦/öE±ù›G>†î!$Œ #œC–®¨WÝN'Ÿ›îmc×ü{ö>°,’AV»÷å8&"ABx ÉÁ¸Œ®§ob˜šî‡!Üèû·™—Ùߘ¤µ1‹…- ÒÝ©0"?c4$ bû$=Gn¿Ïr=šõ÷èüRB.àSnßÞ¬9&—RÈвGl“Ѭ€àÛ_Bë}»o„„½Wãr§°-ßau’¹±  r tòLÛ>@ô‡&0ú"‡õšˆ)îòy; (…Ü:“ä|æFŠ3|¹-Ú®SÅ,=¢¹èû “¸0r_‰ƒb\~«øö/:Ò’s'{‡»Ä‡vûÜ¢[GQæªÍ(ñ¿ÔÞ’3&Wó7Œê–D´}åÎFˬø÷w;$~dS•ãm¿Y%:?JʱgªÏH™;v°ú–”5sÙA ë_.Ê®ýµPuÃE0(×n´w¿ˆÆ\Ã5ü&ž[2öö¶Eâ¹£ôŸ¡6î5D·D Ñi¯%÷hT3K9ÈÂ­ÏØ92{¯2ÆAW,õ.éÍ¡;ÐO³ M¾DïÔ¨ô{6*PóVaÍ{h ƒ=4®d®#ªµþG f+3sµ0sÝZ÷vT ;hAAiØH¹0J˰¢€H6O´¬ ù¼# ²÷léºð»P¬i49I`EhÒ‹Ò¼jÞ*ÃFÁ»&̲¦HZsjÖ7qCÙ‡æÕæí¡Ø¨$駨ᓠ%oj5íDÖFí;cÿ˜Ü¤ïÞãwhzí߆;3Ä]«™ªà ó@šÉÜÈXŠ/ÝÚ ˆÕ}A4†›,'3Wd %ô ³úmF§“òY WFÉÍÝH9F“÷ž ”܆&¼=ɬåÌÑ#XB—.O}UØxq}- H*wWÁ9«GZå*cµ){yþXÎÌ(!SûR§Ø!ÿ˜Ë¼ŠàÛ~w&Ê“T4/·@ƪ cÐ1é;útô.ÓÕÇ„ãû/WŠ”‡na*6æþß 1†è[éRIg# »LIÞ…8·BŒ¾ï4‡ù,.ö]^#½•#~>BNeáj=¼úEv2ò3¬îC5¡Žq²yºÓüÎ0˜êmiµèâ ÀBÈ(DˆGûpRn;¤Jñ5Áºƒ‘ÐÐà³*ÖKËcÉo¿u³ªüíˬ‚˜XÐQîI:X¼éвï?è¼pc8 F&•ëvüŸ½Zݲë[}Ó¯_ì¹F .áQU$¹[¬îy5Z×8ˆÃÀ»ÿˆ_»†y¶Ësü<:>ÕÞÌ'|Ó×pl‚ÌÏ–|-òÖ¥–c8 iê?iŽƒÆMJ4ê!Ù¡/%A‹oŠ5´=Ù¬R#ÁQpßÈ{GDy¨²ù„mÉ%Þ6Ú\O6UÖgF\åªÝÉZÑ;)›J&ôÓ2®;åĤ¦¹…u~té(f”Џ}ýã‰MmËHÈ„eôa°Ñ«–_¤ëu5¯—¹_ô/¶­87üæ—5€¶Ë]ºN–˜/ò lóñbn¤Ë¨‹1tr…t.7š‰Žÿw†Ïlýd•Ñf­úLºN«¿ò€æ.@ÔÒ<¹J†E³eã‡$p™Aø–L_úR7¡¾{plÎ €]áð÷øþ þ=£ÕÒ‚ Æ‘ý{§q,…Åÿ[Õ黢où*×·xÂ))hClÖ1âÝPð=èydâ”ùM›,üOH ?φún)º¥#š²~nø$ân%¹>¥ºö_7ðT…ý1Ÿ:][@¢ý“äßÃNþö èß¾—W`ý|µÉ¿ydšºnŒFÆ–ôzGc¿H¯½ö ɤƒæd–“÷ÑÂ2.¬ˆ„ÿÞ2èJ°üTä^æ¦ ˜¸–Æ%’ú°þ‚gVÇ×´~ex°9MÚ)f‹í»tC†-‚ïï´È.ƒ8ä˜g§ˆ¡o·ÿ{ µêmý¶;*‘C§:uÂÛjª²}·¯-vö[%ƒ®ÿ ]OÎ~òˆÖkó/é n#3›†¾ý^ôþ)æ­/¿Ïùþ[1XQþëß_«*B_KEW\d{* ­ØœÑ×{ê÷*‡w™ËyÌã@ñhýþìK‚¿ëÈUNŒ/§tv£šÚX.x¸BŒ h§,¼¼«7“ÈfŒ~· ÝŒs•²-È;‘©a¢(eg%àÎkZl½œÆ÷¸‰Œ4j'3‚Ä9ƒ :—Óœ:›Ú+Yê°¹›¶ï \þ#;O_úf›«ÖÉè|·‡ØùOÁ1B*fÄáèÉ×ç·ôC“šXXˆ=ÆBOìaÕ“©ùåÈÁ^šþ.eüíj ØãÃZá^®V¦‚Ÿ5æÖâã}å1 ÿûS¿l[©_ K_‡i$ʇ Š«·+£uÑ›UI´;Úu HÄÅïÀ¦Ñ¸Žâ·ŠfzK^éìßeA•’œŽƒüQz¦s±t{8 ¤Û2yÿ &zäÓÄtrLŒß`$;g’ ñ-™Áq¦ÑnýÖÏ=X“’ÀÊÇT<¼í7*Ì «™cƒh~Âô}nÓ­%ˆÀ®‚ý_ãÖ@oÖaóƒÖ%®áQ\δGJÖ•¼j_ÎÑÂ#œòeÄ[oý‡âMø—9뙫»ü:«EÃx¹™ð2Û|ÞrD5@øŸb•Þ"ÞÛk­&à?Àe_ÌÌüúê¦p¦ï»#Y2#…©4°²Õq¦x·Dä^ØÁ:_˜H(Ê¿däу‡~QºKb^‚é•dVÐáÄqÕ鼸p}䬒lØê“k}‡d’¬k‘[%"ˆÝ>"Y%'v'¯¯äGïúecü!öêÏ„—ˆíȨ]ÆÛ0jÀÏO§{®é@F‹Ãä 6êSÊÿƒØÖTÆ¿—Çàž,vÕê Þ?Zâ|§Fä¸Uk³ážAÕT@ü‘ÛL;½/Â[câîH‰c¦å‘%‚UXŸ:5mrûwç ”ž>QÔ²g²¤ÔØüj"2+…§¦#oÒ"M›Hkz£“é(1ý ‰>¶+wòž˜ÚgÍo7ƒY4Cl7Èv`ÍAI¿-‘|…,óäCu¸ •šøÓED[¼v•€Tj߇6à·k—×Ô5÷ÉåL°ŠY¥§ KŸAüëIÊ3bݦ:‹©Ñmä§50Ìm®„¦°¼*Ï|K ¢š×Äœl¯”4­Dê´Åý@´àžOݬ¥$x*~¨û§ýË}¸•ímÀñÖ˜žq] üðÛÈž9ÞK¶½7ÉôPM/<àt,.Â߯H¯ü/±û¾!ŽJ $Ó›ÝAêåK=©äçW}†u™™ï MèÎdTõ¹cs­ù:¾I¨Öi™žDV a,Aª1¼Ûf”Ñäwt*ëø„Í"lÛ÷'¡©ñS òðçö=.oÃîÜÅÙ[‘Ó_`ø"·ìsjáÝš7U'F4Î…ÞôÉó°üˆ6”p†õÉœ¬ì­Yö9ÅEIST“¤¹ò1¡Iÿ °fÕôæô-“—]…™™ß+¾ÃÃü°Oïj³B¾ÙØŽVéu,®1mb¯ê°b½>FÛ¡mäÇ=ƒ<ŠÁPЩ >X°(„þpócx|[w^ò€a®î¯èžH3…\˺6s%Bõ2¿ æÆ¢iûéÃõø°Õ ëEKñˆð#’Ø×ð3QõÕg»€ Ö„æJÁJƒù í2M*ûú£žÚU@êȧvç/:o1õÔk£¾^Ô ÷ÂòVÔ±Öª‹–Ÿ¬ƒ+ËV ’ š? ËoqÄòhqæÚ¢LÓB…ÝÁh³P‘ ²Ÿ=•Éé¢ÌÙ£˜n›š¢¨Æ ¥ÃñÂׄXθ`\QÀ2 Ó–£{kØcò<ªª¦ÊHTÏ<÷÷?Äå7b<+s3ÛV²ôÍàHXAXé¤ü¶ùZ 'Z\‹k+àLŒÔ@LÁz{„»X¯õƒqÜo»ªD,þ¸ÒV ²`úq=J»K™Eö„–b©×o­Çú,n®®ÞŒ ÐÚ3€LŠ%1™µ*“µÖÈ~Dê¹ šƒ˜„žæ¹ªàC¨×9²˜Ü½Ë…(CœÇVãFMÜ+:Äl¦ÔWí°ûþ)àëWHmmàÕÕ¤÷rëö’_×åÞ}`A"ÞÊñäjHèµ,å’0Ùtê)eK¦éØV°p09‘@|Ä!>Ú2‹þxnšIsY'lÚ¬îFä:9ˆ3ELèJ$ª?|˜WôyÚk÷)5Ì%á/oî¡åbõý™»Âÿ6ÖÀ0å–û'­ã®ˆ§§ÍÂí]±Çæ—p¢yéj+ |8l)PÝÄFüC§‰3D-÷Š%úË@îLø.Š’Sùl·Ý/æFsS1›³ óWÞ$ÿ©ýæY “š“YOÞ£ý~$fÏŽ}xNÌ.(àë:æ“0òHL|²+±‚ËÓžW¸¡ƒå;ÜãŽi{³ÖÏ©©ùÓn0CIÎ!׸¡m­îrÏ”¼Îw<Âæ=i?3$«ŠIÉÑT†»~<S¾¼pOƒÑ®>¤PþÛ5Jf”‹Ð7¥áG ùLÝ!Ý@%8’Û–Îz6˜ÎªuÙ.&Sß=ÓݔەÉé>~ôkGâ÷|Ü·LÓ\‡_¿ZŽ`H’Ų…h¥ ’†LI1L»¥×¾¯~ÙÙ„¬FÎl]Ÿu-æk‰>ÙV’Þ©{y‘ššÉÅÌ+!U mÉ5æÓÑ"âJ-ó›@}sš Æ]Ê[öÇæ{¨8³Ë{ëñë¦& ••­7ÜZ±{sž=Lj¤XpGÖ9–¢wѵ#û6íÐæ{ètwçyÈî  8¨›\èšç6a6boøø_ý}ì@žKj ~WŽnd ÜÑÉÇ]þ£e0¬íH‰ð¿‚Ý÷8?AgÀ‰‚µŸ ø#s¢¹>ÁûÜ‹|±ï­ÔÊ@Ó˜4 k\Ò–OZ3•Ï .†•fÖÙÛ@K˜B/ò`€YàZƒe5®Ê¨«KNÈ` ŽÑŸBŽ'e’G^@eFst„<õÎîäûj|†q³6™ ücBì‹Þ«"9À(ƒG²osâÏ‚'ÞÆtVäg@ezäÌŸ~"&Þªáð­r]tHïÙÝg™‚d³¯Þxp6Ž82>´Ì_ÅãçN.k~èÌÖ íkûx^¥·k<äÙ‚Ørw Uþ‚áÑ•C¹”Ñ8‡h²T¾¯Ê$±Ç3_ÒdÔj¥jÕ^ñÒ›ÕŸ’ãǼË×Ht&(l_y¤fœ`_ 9F{ÂÏL Áˆ‘È‘žEû-ò??Ñ’iÍîåöÜ*уôÜêïÝ ˆ×ÿtEzjó˜ šcêëÄW«tTªìº ýP¥ËTÈ$Ñ:–FÇnªZœX¤ìCµ&äÚ2ÃÞÞÜR †®xµìj'¥©ì¦êŲ`ò7V¯¾Uum­ÜR•{%þo“Òp´‘QNc›ÿ|’Ø=µ+RõZ§oηÈåBVœ4³˜nj\ß#:#Q'3ùrñj…”ãÏ¤é Ømž<!]aLî–…Ý™X‡Ë*c<¢‚BL,û]Ò»»æžà+À¦Ø*ðûkÉØ |OE¿@õ6d¨å¡>êýaËó±‡Mçu}é’›†hÐi@÷©x™ðz¡È,æK³Ð¬Þï ÖOôw_ô\}‚çÔžËÀoi(-.ýÛS™I.C½õoo ‹ „¶ V~@xžPWíAtóDøZ|ðÌòê`f;.]å%9S„#7߉êøq…9«í[>¯o!íø1ù(ï¢v€¡áhsNˆ–ù¼zžxäÛºA%5ž*7éFf›Zo¾£ 1*ã!Åp…· aãH÷Õ¯å;£„SäÒÄ¡ù›”«ä½j¼ø›«Ë«çÏ÷ÿš²-÷ð`ÑG Ã"6PmóJ†5¾–µ¶œ¡q»'㞺¶A§(Š˜{ÎeÂáÌM›e;BÄ Sª×›Õ;,þã{¸ ؉6”ãØ+­¸d- L#¿%5¸²Ö_0¿b¦/&Z…i4eæìK/Î˸m @U4Y~¢Õ ¯Ž±&[V=0ôµ8b›P6½IËiùi#øOŠ X²ly?K, ZxèÒ°Èpx]ðüt@ö*i“cGvq YÓ¥)­‡E<Øf„L³¥Çši?ÄOçÖÙö4¦0 X ‰å§¨z„Ú{bší´þ?,%‚¾óÞIM’«þk’vÔ¶#‚Lˆi/ì}«.Î6(y`¯ÊâÁ·ÿ¡›A  n•?»Œå…TÌ{2áÜœ£Šv·7Þv í>BB$ļ±–t ù‹ôÏŽÀÔNü$‰ÕŒ”':£÷T.ñϱiÆÓøùSX¢ÀQìH^~E©¬·íÁ¶N4ýç¬eJJ!þ >I\1Å´q¸>MûðTc´td?áÿ6†Z4i8;È€Äß²;åê¢ûد„åƒU˜fÞÇ„À ü£³1¿uõù"±?^åEKH×RéÍöéš]óï3£3û,Vе€LHÓXœé¹ÏÒ`Îx2É‘Èóe²±WtøÝȸ{» õIK ÕìJÍW´í`"žÿA³A¬KäÞæÇr. 1à3ÓiÕy¨o‡tW¨ò;ZÛ1ßÇÒ'´G `A“|à³4Õ‘ËÉülØK£%` 3]п¡ÃgÙ-Ú!î¿ K¶/Ûu3¾´T¤ÏOœG•OwóãJPIyiñªE9‚ç­n=mŸ®Ñ¦Æ4üžÊX”Q†°|ì Ú>U|SFò{=véÌ„Ö9ZØÝ»®æÎ•–e \K߯ ÐöøüøY_aâxlõFk×WÓg¶¹fì>‚ï=’ûN÷_ VÏ÷iøŠÜ€ü ¢‹ð}ØŽ›Ø„ëì…!oÆ HiFQ:Q?ܬÜ÷g–ÂWٻ땇÷ŒÊ¿èôâ‘bŠ.~ÈÛÙvs~Á7XU)d6Ëùƒv9i>P#G.ãû¿Ä÷Ó}Ëc³ƒ¤¢Fk0êpvÔþlÿc²¦’åé›´²ˆ2L»75¥Rm o÷ÒepŽÔ(ÂwIš½¹+c)%]:ë,‰·iWºV€Á·ìþ«x‰Ya‰sÂ*vc¦µÍZ6³i+ì¶$Ks±ú‹ë„ï Ë\¬2<®cûqˆ-]I…gþãA³¬‚§eѵe‡ŸIªê*ž}†Ö‘ðõQN㎄g¹ªEwI† "òÊ87 ž-¸ŽÒËs Å0TH/Á6FzµUâñ³Á¼h™ºJˆO[ë‰Bd»«ÄvVtYjܾjxö5ßØÑ†?›ó¡ý­'»Þ=Љò¿–;Xn&ï¶ÒpŸÝ{ wël2k.?b‘q’ß|JË„·4Ï äÐFDS½~0Ȇ*£EQZ•3Î=B”âkÈþdn~^0µ– aÊH w€Zo^a›k”¿‘&0mÄX…fa3µwÔhZ¹a¬üÆóOBÜÏêA4¬‘Ø“é%ø¢Œ.7+N5Û¯V©Õòõ¬&Ý/ÁœÀÀ¬—}Úd Õ»òÐþëI[ÄŠG„1èÐ|D}_Úw ÿ¨j¯§Çf^}DKëTF‰Ù؆§Ò*ÔvOõÕ»v;‡=B¥S0Ñžá3p-h(7=OþBéø|—ã|߯üœÿ`·vòKÏ¡Y#oNdÆš<*Ø»ãǦ×ßY ,þµ5„PRfV=ÚkìèëMLÓÎ_#ìõ_Ö(JÜm5 Ss¦ füê6÷Þ)}Ø…è3òþϾŠ~ãþêÎI;†—üÛ'÷ÇU²Ò5»5|43_t‘åÞGã28î6ë­Ä/ëj|*=ÔÒ%­LÜa'|?€[ ’ý¾±wå–ôúíÚϧ+~Åuuö*£ÁwÈcá¹qo#ryC4 Úò[pQy/.ˆ€¢‚á‹äÃoyù]-ç | ¶ëë²Ïæ`¦BÔÇíþ`kõçvèx ”Y€ú°’ƒg)í$œ&^Fõ°”á·,u+ÄèÆs×X)KÞaHžõtÞ¸2 0¢¤,)<*Xd\…uA@¬Ä„<üËú©t$/³É¿-0Æ'©ƒí@Mó^ÌÛÆH—c±Ë­é…¢ØúŠŠ5$½À/·”Ro@„9¬SkF%=@Ç4sFÿA· ]ñf—vŸP£ ÷n²ÁR°ÉiÏ!¤ =h=£ŒÔ=Ÿ:Oša†>Xƒû¼–¢nÛٟѼdF_$~)Èì“>.ÆÙQÑðµö”e/Ì–“$šfÇê"p mëÑôd"[AGäS¹³ƒÏf’~3( XÂT Ï¥káê,J.Ñ#¬‰Ñ±ZbyƳ…H_eë• ¬‹] ¿­O}‚rCa[ý+ÏgS—„·y)Ç&w£‡–7 cŸ–ÓDÄq½Âåo`ŸY®$uOX+›°¥±ùžuÏCjºÝÊExwÃPWË&²ÔþõsØ 03þä Z(î³Nc[§ö]Gš,ÝD7Øß¾Pw “PU‹>¢¼5„+U¹ÁiiAš]èQÒrO{ŒuÇš³$ÁÙ“HtÏá©XžaES)c³k ˜Þu)ÜZ©§R”>9¹À¤‚Íc)®J&%ô;ÁÒc[Qþ%ë\'t¶V˜šÄc·xÔ³QÆbâ ¨¡MûaÝ”Üû4¦»Ê4LÍ!n£í ·æÂò¶ÛøŒ\ ~.Ú¦z]ü›’º O¸ô$*ðƒWÉòóíáêç€Ñcw·}À:x{¹ÄP­áCzﶘA1· pØ·¥Ð;Ó¯ÖXª&¹éÐ멃›§Ý¼‹d>+ÒÛXGktË¢‰¹ûŠHÞºr³,b›8©×—í 1:D‡u[ Â„Ï4Ô*ÔLY0[>ªT¤¶TާOËÃ\'Öé-½y‘y·¹T5Q¨9ÁN&ƒxO ÌØ¹ßOÁ£sÌÿ&jò‰öï»åVò¤&O'¹ã9—‹‹niªTpIöÒœàÿ)„çI&ê,™üVÎà,Ì݆,p-ÖCV˜¿@ô-· jíyúFâê '3¡„üK‘To¬ß”O+Uˆé2Mµ®µ¹o2Ñа”(rXàío’œÊuë:gFïi§ÃOOþ¼ }þšfOêqCzŠÔ``SÖœ½º–{J£“$ìy-®—Úµc:;[¸¼Î¢¸”Sº[%OjáÈÞEº_Kø‘(W¤®Ú¸ UÐÝßbYMZE´PhÎsŒ i ^[lVÎvýxñuNÀÿíÊ”íOÔO±¨›Ù©Ó2Ço{–õkÔYúåÈ*ÅQBúõJd¢¡µþÎË–tW|QfИ,–ë_KÈ‚­“_—„ÝéÚf`IDA-÷ºcMÀ±§ Ä&ÚsÜzÁ5‘ëMwcº¥Î¢.ù[©^Ö¶Ñ»!‡…å˜è´^S2¡Ó߯v[9xGžžN—9™'—I“ÇÆÇOÐmÖ XS¤I†ØZ?’›v¨6×áš^˜7˜Rz`é;7C(õ¥` vÜ̇þ¹©H÷Ê”ºøÃì`6‡>¢Ç XrTö$R ãujîl³ÓWÎ7ÿ¨Ïx[l»¤ï?GO‘¹¬«}~åRM²qŸp™Ô9jµTq4 ƒsÊi°`öËúÑçà~Ê™ZSÒh“¶e¹Ý<îÑ!ÀnâHà‚†­xÄfäR.ÿtÄw*߯pÅWË5€²aÝ­pŸÝ8(¶Ø¡äE7uT"1—VÙê¨y6Ë£uæ®88s˜ÁIž[”'YàVá<ŠÏ ¼4ÒpHŽèõãh³–6äówã"'S–ç7½ò ÏÎ|ÎÀ}¬8šÖîݨ¦Ïy?ÅÀßÍ› ¬MóÉxŠ,Ð4œ©O%‚—Y±ƒø5©í¯ý»;»Ñ*@¾³&Ú 9 Ïz½TT’hK¡0)sˆ‘w[ÁÔú%‹T8é#çÚQt òOv‚ãåîâö‡ƶ7“ß>FŒJ? ç¾oÁ³…aÉ×_þâûŸíÇ"vaê;4`‰jà)ãTlÄ’‚øæe¶ê°IÙ¯û°¢{gÞbÇÛ5ç0¹a°ZtÁI¨5ª_GÄBcœ¼Eãgq 'ú´Q’†´iÅ%âprþê)…”vÞÔæŽÀkM¢’…ÒDÉ{j4ÿ⿨ƃl)8¸MX+­…!ù¦Öj)R¡’E2¦› jNÅu>eˆÇYñIĸì¸&*¡VߤÊO2ðô”7°#÷´j¢J$»ú“àMø(f+ßtQŽðtoCèµ!ùÉ0Q‰³×ŽÐYÕ=\3½ZFzú ¥þ2ŒÞ‘º‹Öųãa0¨ºm¡9d°ê¹“[{Äl!s¼S<Îò%§8äq.z79:})ºðoõG}AÉj‹›Ñ¶«× ©g!íË7¸2n×HUeÀ½ó~$úÕ‘V1ñÕo´crÖÖÑ»©ÁŒJäÆßT1?…µPQDpË¥L¦Q¬óo^Q½ ç¿!±Âè(qŒ)>—fšòýº ™ðɺ³¦y¦†Ä—¿Cjñ2’ ŠtÖoZçï¶>Ͳeª) Åàn¸k§,8býYXB3þÚ¾û§x‚Ÿsœ¥Õ¸îSI½Ðã©–0¼T¨‰ƒö¼øúÝ3!&å|—Qk]°¨š÷wÝÍŽéHo]Øöj’ÏÃ7/p<:´NÖÞ\ü¾nPÑÍçãÍãÍç5Í ßDôaØÐ1l·‚)ÛÌ_`:n  Ïã:ÞõßÄv´q7ù­Gù)Öm¾\¡á “­Û9×I‰6{5ZÁO‡È$-W¾ À#ÿåpÈFPDSýlZ†\tUOÈœü~gl«òw¦ÊaÄô'q9R–z&Ä]$„u™omh¬+ØN­Ï¨MªŒ|™‰Å³ì>"Pú,×Ky’þMõG„©ö¤T=àl"ÞeŽÎûn‹Ïc;Þǵ²%øªVL—%žœ'ôŸÁuåßáÅDTôŽk å Y5F§ýˆ‰Œs (”•)ݧAÌÝ%Uƒ‹?ëî,‹A@x—y]ôù.ÑçS›Uùo;µ¿qàÙlPŸ£V7Åœ]·bÐg0ÆÙâj=ÿᮚæî0æÊ»Ò¹’çëúÊ:Ò耻•o£î1{¾C£8¸/›ð‡ÚDõޏ@ƒMˆ[|Cýúc€pÕú#Ï@= ý?¾+øˆÓe9TtýÐM¡ŸdãϺ8*·b†sNÇŽ•Q8ÀYΙ1®ð€‡¼W—Øe¾½.ôÖŽë=æådÊ0Ü^^úÑU1BíÑæBn+'™îËFÓJg•ê×ËÆ8•ÛB#«€¦Ö¿™ å[è!ÿ³ ´ÞÉ}›C£z"-úoËF›Ï—†Ò‡±%CæÆ@¥— 8÷=Kîê1‰*Ó{N"*%ÿ÷ÓÏ*\è4ÎõÁæìÛîîàò?"Ó>ü;‰$ür×B(Ͷð¯œÖJpD}ódRŠÜTzÀ롅؉ t­å­71]vݦ‰0']à Äv3~ØLûñM4öæ‘ðnYzmM;{¹@KòrZÊj)¬ËºKtæ’ðyzeu?\ïþZ”%€P™Ò¨¯mZ<'$Žº¡é”µà©~¢tÏAý"‰ÕˆÕýQŸâJl†í½ŽöªÖe>Q^cµ2áæÊïŠ_lÜ‹îXq£¢Öo$òª8àÞˆàåE}‹3HXZ%œøPåP³T¾|’DšR(Ï¿ ‘#ÑØŸ«T‡ÂÓãTë#RšF}B¢‹ƒ*#s¦“Lª@{ËYºž2„*éJëB4š³"㾩uÆ%›\[‰ëÙï.˜§qŸ`†s;¾FA\®"þ!L\²‚ÐS³îªô‚9I|ØuWñº§©¹w  ø[óëåªq©APCûñÊ©iã¾™îũք°Á;®ýkè‚à0®‰¼r¿V9¿=|ù!]¨²ÿ}$žÔ+üÍö×½œ9œçïrõ»ì«ÖòxÂom4ÛTw/ŒŽ\[‹¯½›ýîòé D‡åòòa;Çáy¢ì˜NôQ»à«á%Ñòø“ädƒ¤×ã9òOå‰^_ñ¦Ùèjv÷ðÝ©ÑYäúŸ°Ïð½ÏXo¿Â÷¬šç%«þMö–°ÈYÊ¥ýËÇ¿¾(wy ¯˜µf½>‹/¥±†ë<'öm4Áu½[¡¢¬ ²[îßå¶WK]óƒ1‹²e÷©YY;)ØìšL˜?܉€®lwvíZ<S#×èy÷tò£§ÛhmØò"Õ£hi …@î¶³mÿ´”Ñ&©{=–¢¹§1l¼ÌRT“T§‘ÅÍ»«`õ¶Ž¶™Î:ë8Þí{ëÝæF]¹®&e™f‚ôC„Œ;¦å© ŒA¥=_êËÎ = –7G>$èÂ"Å讵Ÿß¥t?c t‰.¿VEíØxÐO!^û)‚(ŽÀĽˆÉUhj¹zM#‘¢*PÜÿÖñ‹dR1*\)H‰xñzˆ£‘Áô Wñ}WÁ~xXâ«Õo¡§>:€¶× tõìÌÆ^JrçNÎOu#Vã1«N1ÿ¥²Ñï`‰{y*%=H7kx:%#=…¾Yn`™·ãfç'’¨ ëïZnŽ#¸;Ƹ›7p¯j¹÷÷åb·ÆÆÞÛ•¶›©p𢒄×u­çhSö㎙¼™X@Ó–Ë ð;ú;Zâvl| Êt-Þ.©‹â$ÊzŒÓÓÞ:¥Ué¿-e_þ¾ä–´ÇD?¥—XÆæôˆ:7.ǵ«k±âÀŸÛ³æ'C?†ù*kêbºÌ/[mÑ-3ÑÍÊšã[ŸÿBvÛÍš$ÍGpÝ^¼Ýâi‘’?¸­*ÉWÝnR"[ CåÎá{~évÝn4"h˜‘6Hzǘ$€¹Ó©XïD*cµörÇÛKD®Ãs¯ö#o=¦÷. qŠÀ}j‡Ï·x áÅ~ÖÇDûäI>Íí ºRÌ›ËøE<ª¤ +åv=ø8¿”if†æ ‰ÅäîhS4¨îçð-›rqê¾ëbÁ.7ê&F4ö'3NËÖ¿¹j&:QÙÐǾZ r¶B9™75òg7Ï€z(Ç1Ø ±ô¦:ìÓÅ‚#IÒhc·ò¢üÛf·ÄX»LL¾ÐÖcð¦*ñ™ÅÎZ|ßGbf$å¹4ótê#S­ŽÑ±1õè:/$E oϸoÝ*B˵§];ûµtM&¢ÏÑøíâ*³–ù ÏÛÂP]~Äcn¿•ÛS•Õ:—ÜAaÊ‚´I™ƒDÓlg‹ï‹#b _è1Ò×ú¿¸ŒÙøì™ù5nY†Z+d˜C!/ ZM®gÄ,¡\h²`\5‘¶„ÈD#J5ÏüÌ™û”ƒ·ãºWHo¢Qpz÷µ1ð›B\U¬¦ ‹K-ÖîÞö)ÖN<;~ØF bè)6CU®X´Nö»8dp"ôÈÿëí‡ʘ âb£`=ø çè?Í#ñÕÏ{•œ«žy»È‘ƒ’¢ÂÕ,{2|÷[ì]èwêA‹MÄaî‡<"Ôï„ØÝ'®à9 ['/–ÇöJ}jù¥^ô¨>¬ŒÉŒ(‘ü=G·&¼úö»k:{líPÈwÇ™×-âªû4òÝ®¿D)0MjÓºðv¿ðeQ,]þ5k‘ e‚}…´&> þÀO÷¬°êõ÷ª4Õ¾5Ûzþ€¨|æ:•2Å`Láqêk°l´«‰U›F™˜Ál“Ü ¤‰òPRTaË3A—&šö`®1^Øê«š´_•d[•ª€ß»þJäÑ èyD5Ú y2¥…ÍîF¡# ˆ·q´Üu\÷˜¬7¢ÒU9}ݪ 2|aìæ…Ëš?Á•ÜY‡îÃuKéprf“_e9ø#[b*’³ÏHê@%-ûмµT¨î¾w˜‰rÙ•,mü›à²…™iLv)ò ‡<·÷çTFË*õ#lî{>(é—¸L@#±6@Lm…º–gôR1É²ÝØ¤ý¬ œ5&#ïòAL½îV©­mgÿ"XÆ4“Èà4¦A£&bŸØ|ŒŸw©4poQîlt¾U!@Vº(Sðj—[@üÀ 6˜{ "Ùù!vóªÁ¥WBu†lHš#È,ªõŸs´81ИàÖÚšÁÛå@¢žvw ¤¨°oËôÔú·U²Œ«ã«_ÅôÇ‚€Ç…•ø@ÉrŽp”HÊ~g²¤]`Š}ç)Æù¨Ý–åäÐ /¶^Ì “·ó/UÁG*Úo´¾ˆ¶1wmĬZnuÙKlË"¾fì^Ï„‘¶0¥Š.¡±ÍédÚÜÖ޽86ÞL;ƛ㽵‚OJ)ü’Ù‰734>\ˆA½ ÈxiF;ýÆÓ*f,i ´ßÏÞw»é)¸>šâµœ}ôUÎXse#!KZ+gåÐä'M¦ø4~7³-›†É×R@}K–´–¸öŽ»²my¯Î.B7ºý#,a§Ç™÷²«×Ùã)µ%ˆo–[çî«~Fà‚uö%l"µ=çyF­ü§Añ…_ÊO^?‰¤i]xc¹èÄ£5½$ÉÈLž´jãU4e¬ •–õŒµÒ¨¯x´ˆÈÜ£D·‡OIPâ8YMA U9ÔúR QÌÅÖkl9oH3ÖÕ [0¾ÒàIíÖŽ¯Þ Óï“ì“vúLg¾[™Eåлp,Wâ"ŽAú”ŒÕ{ÑŽmÂ4\Ç4l!¯ýÍɦ9ŒrëØŽFA¡ËÉL¡ëo0»Z±½ ÉØâ—Ê;1®x_ †ôNÂçbÒòXM3í@àØ‰À±±ü/¬ÆîFKL[óíU)1ÛÑIwþÄ O¼9p,WH-Ç0 [y¨å¹M`±IkZ r"Îke:Ÿëð»Õã¹eŠ5Žó_ušmyñ¢‘‚îÇ!‘Ø Ì”Ì)'~æ'ZÁ,gí?ñXñdžr¯øêëØÔ/Þi¯ ¥òÆð9&˜ô U2ø!ª¸,9pÔªgÍóæì¼Ë¯íP¼ªôm`­/¯Ã6ïrG4E©@6Go[“)Ãܹ”Û*xü(Þ”ö¤ó3îÎ7ãdIFëò¬ <ª{&zEE6£7%ôvõÔ¼Ñ<†"á-,bñÉjSHŒ­e±n•.¢R!üu°¤Ñ¬¬]þ¡>´&ãe± fÐÆgî£+XA;ŸËöÞp\àÅ%â0›³(Å1¹Vg?uåÚxÌ™oÄïD¸]'ðÄõ"–‚8˜íµ=ƒ“!·ûF`^ZX°_åS¨ïl/þwÜ!©±n [ýÞ|IÇZ–ó¢4É„–†zãmʲ=ü¸A6ñ¥ƒ[Kú KÁWí¸›LBÌÆ·±Ö˼h·ÿN!eé£ç°¤IVlJ²:z 1ã S"e½ZÖ8Éú9BÿY½\þq·Ó‰¼§7™¤bØ»Á7®m ºztð]»¾i´÷Jª`|\סŒÒ¨m?í5Íç3k÷+-1I€@H rgë[0õ[% Ÿ­è·ÁŽö%4²ömÐãÎÅ_ÒLÛ#üxò»ûðA#º¿åÿL mQgŸ¯­Ì€{z·>Çœg ‚‰2a@'¸ÞFxÀGî.ð7sÇÿEb d(Dò³Àë MÐqÝF¦7ÕÁ))í­ÉË&Y?RÊ #í@£;9ÉÚ6»ÛHD»õå©”ÿzùù˜9_}-KE¶„{ ®ã̽Ž1×È û¸ÃN¤éöËG³£ÎÉ£s­ÛÀ9­_=Z Z¼Ðª%~þšÅ¯OG}«ØóYÕÁ›£Z•u¿üG xâŽ]SÖⲓ‡7µl¯A,Zïu#ö&+LwÚЈØE«BŒ˜=×$Ì‚?¿Q€ôè¡P öà·¶ÔR(&?5uàY™‹åãw² Z™ r:‹gWü;EY+\Y}à9 M0×^‚ý1±ñþÎÑ©DH"iâ§­&EË['(¯wpíBifäíséˆÆåøeŒNÄ›fEÚš–ߌ<·º}ókÈBç?‘7­2…†nê;érXŠ„Êôá«U¼çïîÜu="eÔÈÒ8o>)¾ |ý'(þíÿ‰ÔáÕȳsµöTvª¾"ÕÐJ^Å¢®~JÁu³Pɸ^ºð;ц€¬ù†Õ}ܱþæ;·Ù<ŸaÚw„ºèw#  “¡ûb¢ø“+¬ÙÄæ'KA€Hp˜éËVxÝGëî¬i6N},Å— TÖ9?·Á‰·$—œÔ«Þ¬çÉq_›L€1$; ôÅÆ‰ðEW÷K huekÉ1$dͳ?œ-!5FCbQBJ ¬ýhG„ƒ¢J׫ÛÍ÷ωu>è¿hÄù2`tqq-3º ä¨&°ÆÃ#ƒôKšìµœCÖ}ô‚!óM\ª¾ÑÞEBB4†3dËXžÊX>¹ÐäBÏ/+À­Y¿Ï­hJœØIòI1©r²'-â9PÔÊg—‘Ü„ô<ñëˆà£¹|PnÀœ;4ôÎèB½>ßÌd*;Û)oJD&z„h»(ÞØïÇt`X×€:ú‡œ-|?¿Þògèãëm)‡âá—óÔn8]ºBý'åË1<•pŽ©Íòvs3sqö8ïÕã$¸5!jÀøé÷~ob›ù¸XÃ!’ø¹ÙäzoC;ŠìSyðTå¤RÀ¶­_ÁoØ( på‘§6N74~Ñô[Ç£¨­>ÆÀ„1õ0#ðY•6†ô×ILäÁ›!Çóшûbð»h_lçùô§ÂRJ$-Ösôtyó  ”àæÄ©Ã(©÷ë†osÊgE;Ö4:öCu n8¹'î÷÷4*kÊqvƒh”a|êÕ­~ý¼×G˜ÞI1xöj]­÷ìçAQ#ȘÌ3ùa‹• ¤^dðÈß ö_Çâ”j@¤;üåVhdddŒA¦OÐhßÛô»ÐH³Pâ©ãÃ×Lc`±¸*&!Ð 4¨"Pó 1Ö¶QâPETØ!0äÀ«³àrd/çãD!жÁÀÃw1”5°R òQBUVpœ[µý“ë‡Äîd¥‹ Åë!‘,’ºgé[ŽÕž]óO`T s¿vƒ¤hn|õ²â:¬=‡æ@èºJ¥ä%ËÓ’Ç}˵¨€<ÍAŸ餦kù‹úî¿p-ñöGž[º¥ür½Ë§g¤ÈÝ…Ö= úq›ÅN¥l‘­|Þ F¿ØÏ»ýœJ‘Ÿ£ÆKEÏÊ®ñâ‹DZ7&¦"¾¢ÔÞ‘Øc,|IMAŠËÒú‹y+k°x§·<ÒJ³²dÆé ¸ÎådÐÙ&ìÏ{‹à2½ úàÚ AR A°Œ²¢dÏŠvá§JKÃTt‚¨ªð9ëõÃÓ¿L·+Š#ùƨ‚5 ¢XÁUÕÓ\—( nˆ§GDuí=ñé4ƒ(üfS€.åÎz°v„ ™Ò¸LõdÓ? Š<ãP’óLÖ MÎY }:åÇN¹ ǺyÒºt¶mÍA«$aíXºvWd4ˆóW>þŸ•:â—}äk3ó£8ºá—,¡÷i¿§+úú¿baìzè„öš€X–×ÇK\®ŽcÔUÙª éBbu TÒÚ±éÒž:ǹ‰@mÿÁ€ã|ÝÒœ6Öõ9vÖmw•öoº¶§GÝ_¡½&LO'.|Ö´è3á’Ô4ââgªo{Vôε=°O#ó¢€\¼úMáÜ{‰‚¤[ |•Q©`ÒŸc×­6¦éï†ß{xW¨ªÍ7³ª²üëS¥½2¢á gæÿ[2ÕxOÁSgêVÌ)ùF}$ †ñ[Uóù2Ž.ÛšW cÈ)UÔf𯓈Ÿ„[³”@‚ÈT^TÉ+oÍIEñþ¦Dzžt‰éü‹E#‘í’µ}‚®.¾‡”8Tø#غÍF«‡ž†!–šxR5ÝMòIX/hD®‹üËÊE© „^¦IR†!à\¦þ—E?q<&ž‡:¹š± DPŸÿ7üTI«#i¿ÆPÍáŠÿÝùšË¢ÝMvÄÙFŒœªÂ`Õ5"¯‡•T£‡þ¶Âß¡ëZ"1–ûÑwh$¬Q¤c÷iÉ€?ÊSÚߊUÕ=ÚUÂà]›üé8ÛN~í´ºÄ–’¯Y>t0§3"_2ž†@dK¬ZvqÊ:»VHB<ç‘Só¶¯t®[J²Ùùx>—V„ÜÚ›üà…*P8l336/ÑUâž¹¡Mï^«¨Âü˯.“d—WN6‘h³kŒëÔö$%Þ9›èA/K½!IQÅeÔ{œl^Œìž‰†÷jUã§±ÏÈ_Ãém¶ŽVË"ÐW?ùÑßc¼¢ûz~Z~ŠcNtem2¿"ÑæÔ­áöË‚Ô,–Ë<)ÙÞ>KæÍVߨ;’ÊŽëÕ]"71¥3j”|ð´î0cWIÞ>l†:š~Fè}ª”ÿ’WâÄÂ9í“VÀ˜’0@›­@÷æõ‚ª¾IdÖéùR´pã6Ý'¢@MËss£¹í¸œ”’V?d‹_ÌòŽçlqÎH FÕžš¥ÃÄQ„àñŸÉhPb‡ëÇÄz Éÿ¨?¡aí¶æÌ4¶SA„Ë]B§ÇùªŠ`Ÿ,‚ßeåTÏ5œ=1üû3?•(¦×u¾@@[Ô×Ä¥R¦B}I¯ºkû«ÃÄ’bïŒÆ¸jÜPxHâKRóònþŸ"À€Î¦³Æ]äÉDÃ3P{c6$ÅM§¤ÆDf[D 6ŒoŽaŸÿA, âžñìÈFh÷Å•0ï•‚Â0{c»F“WS8ïò‡uËmœ@3ëO/÷Ÿ qYBúÐ*Òk ÞZÒ€¹»““*÷Ý.®Âð?š£qçï]Å>Ú²¢ïH‡´ÀÔiå¹ý‹™D¹jpœozk(¾ò’Žˆ‘ÊŸ$}blZ;„ jœ)¬†fŽ|L,ƒqq2~Õ—OÇãI‹·¨èj:Ì’ç1êMÈéõ¿o¯ÿ½Kõ¾Í„ÔEà¸qXj3eŒðÀצ=Ó‡¾E]™WQ?%’§e!f’v4Y(*; ¦ÜŠ¡LÙ÷ÇoißëFnwiŠùZl œÜ¼¬^ƒê_ú-‰‘-†•¤ì5.ƒËZ½.lÞ FШ¤çB¯(jÿ&øüouV] ñŲ»|"ƒ^ ‰Þ‡u¿|ã;ØÂë=îáX`ê~_¢X¢-öÓ‘÷w“0²+cêXLÁµ¥Öºgüí¸¢h®ÿðdÛÀ>$yiâ—Üꛎs\Ü­+–뫳 Ä« ¦NJÄIÊ{Òó!Ÿ-š&·WØã*+Öªj¹™²÷†ü¾yÁfîã5…=¶ç¿ƒB “SΪÔeVéп²ùæ­æ?‹MäcBÃÂHÚáB œnvåáJŒ¨þÈòÔ{0ù\“(‘—esÿ_òTbY×ëöH•zû÷¡cp÷ý­ð È{]èÎ1”L&âè Œƒ™ù®¬c–D’ — ìÍås5B‘òžël*2—Rä0w.z3©êB›kñá·€ð…[jÝQ#4^FŒ<¾sš#Î좌U൚¢ I–ÆM7Õ ª^-‡Éžj¦Cà)Ú#Ÿƒ‘¶Y,¾Üc™CN|±i(©j./3%õà‰~8~šÐöIÕ¼¯Ò{Ûà—Ê(dà>Ø!鎔µëüÕH³. ®¡ÊqÑ_s~\;¤¸«0½ø»oK\,ŽXÉóeÙr:”Ì™F †fòÍ[¤¾hLK¢¶âhq:©ƒÜ“Æ‚ÝXQq&ÉÅÓñÕU¹öÌøòenŽ5Ó”ïjƒìXmÅåÞƒÌiÕký(‹ Ë]ÏÔ^[?¾#,''Öê ESœOpNc>ù㡱öóù›¸¥:YÈ­4äïÆrHO„‡—«âöäC‡,ÞŽDÖµŽÞ‹LÚ] *\õ¬Ã»(©™)‹l²X‚9 ŒŸ2¦y‚0‘»-_(1 >/äUNar‚¾ äïNltâÚW-‹»*ý}ÚˆžãðCè+¬Àã±ù/å×òò7+•Zµ$/ ¿É=²Hy·RÓª$y~ÃMö7£¥k».ÑÄsùÛøu îÀPþ®'ÙÁ·¥Çp%ù¹“èÕÜs°ö¢5 j}=AÕwÒÕDä3*†3¢ú˜µéÈÍÜɨmÜ_úÁ{D—mu[uzo®±Éåhê™ÅeßOyÆ·|N!ß ·ÎKp¤ÍÝ×HiÐõ[æµÁV"ÀC´=¿ñÕ̱QK,SçdGçŒfW¦uJJAðä¿Ú©Ç¤_¯õ*¯×ó´üæ²€¿=9HºÌ´Ç2ý”_+ç'ó“#_YÆc å|S×®)óÂõü= ­–ù)˜c÷¯ :=DɤOWuŠíwðë-‚\/w¬¯ºÕ²ÀFVˆæ0ë ®|pÒžm…Ä«-ØŽ+%Fs·7@4Ì£ãv!?ó¿_ä«(A!0' ÷æ—tÔ3N,s"$ô»  dMõªÑR‡Îû¸1%ÃÖBÔôÉ€´¬ÀüâhZšÜ¾ò¡$U Ñù/í†oIw†Æÿ 2)´qç—[{£ì-¶µ9¾„qý|'.W¬›Ï¦~g"ö¼þL„†³c¥}~blºCTQ¾ä¿â·ùPßâ–žooŽ•Jþ¸›²ìŤã7“AÒÓV¼~«(GùHÏÉ®ä$ûq.á—2RŸ4CgœUJ&»8/š‚e çÆÖ–ùëJ?„û™ÍÅ"ré3r¶­¤,}Wɘ¹ÍCù´oxo‹L(ÌRó÷«sÊ3•éùQÎüã lêGûô;tb™ÊtT…ík€m{Æí2‰g*(ÂB¶ü€‚ÒϤæjÑNkË'@èìQNHmz$÷Ÿ±ðÖ')Šüô1ä!³cyq¥[6Ï6VQXæá~-Ø?á–R=á"Ev¤$ž™ÕÈÌeR‡0à'®5›P@ݰ,¥z«t› d=¾¬˜h…àÈêþPµíÝ>Þ R¨sêÊ_&ÙÉ]ý6B½My¥Õ4yíª•íÇ­,Kn´dCÇ ‹*·ûn›0Ä7¶«MöäuY»æ¤F!$æjû¼ÞÀ^>[ÿ“–ª}3f*ÓÙìô‚þz€¡u²äá,<-O÷2s/e]acºü&ªÕêIÏA”¬ø}y¾7GÃõ¢– QAžÎ-ÈOà§¢N-a0èäN CÆ ÎùŒåöRvÉÒ§¥¦ýÚ¼þ/òñîõf"U±ìñ:bçªn 1½<Üw†awzÓÂéMÑ=·þÔ|F¼ Ó•éèaøØutMîsÎ+ \›+dñ²}ÊJêS<1B¦~ j‡x9Ú]e];díöŸCÁk²æ¥OŽÐŸi,0°‚› ÎyÂø/Ìõ i²aÐ_«þÈ ÍâÔÉÑÔ]«~¸µ–~A âgÇñé@U@ƒ—Aªšº{Úý€Iu$,¬‰ó) Ž²&E9(R(tuûþ¡õ̾*)²7Þ¢*¾© ¼Tº>DA=/(S´ ±ºÈ)½@‰"Ðz®¢™™ÙõÊÙWf÷U}\­k-uñ8c%œ•˜´ÝQ×ú"d¦Õ¥–D´º|OevÜ;cRNi©—é3ÏiNXpºöôuëD­ä@¿ä€Ò¿·¿I­ýˆ+š©Ú¾&{†1³þ¥'àhØPÔ M‚ºÉg $p˜oeµxï4áQæ÷ô¦!ÿþz†/¼ËHò¨ŸZøg5”´CµËÈNKHU©n4¥‘¾Wí’°Ó£â} õ·€r ÎQãóT<1íJÔò ϙϥEy P|GÞÁöÁ•l-§½¤ïEc½Mf=u |˜èâ –ÜÏc>w |IÔpPpÍêD™ °g¦†þîl˜ ƒVíc9vq ,»Áªmve+z£e-*‹­P¤w‘£²zߊ űŽ0Ú7ÉyA® áš¶dŸoHjÛÓ|§´u£‡Ë©‰ï¿ùïYiùžëÊ|á^ÇÌ÷}ÀæPŸ9ާ¥K"Ü4à—á¾Gú̾ý«HÏHŒgh¿šã:•U, 98aX*¶b·Sô'–N¾7y²EO¹Í`÷§'f7S™j:²$Œ«‘î—Z'KOñ³çHoð[SÜTTÙYÉÙŠê¦PµÔT+ñäÑšJÕB&Ä¢9(=H¨uð²Í$¯¼ðæ—}*”öK—ÜàБr¬HF¹2%ûü6ãâ¥2"Ÿÿ·Lúw¶X‘Ê!Þ[¹ô-ô@ºBÒù|>/ª¬È fþþz†E"•AdÞÌ+ÏÐ+°ÈNÓ½«S-k“‚éUIñ¿6:= ýU Ú}¹Ý  <çWÍ·Ç㬯/ç”~ø±ï…ã‰c4³®QðŽóÜwßð_놰é"‰ìïÏk€ˆ¤$]»Á2'›Ù%Þ~†>ÑЇýp(éGL÷GL7³v;ðoÈÔ©hÔÔöýîS£nÊ[©Ã8ºêx©ßa-tËWV S›}̳Ô}úî!"q®{E«N‚Ô%W_¸ÞUãõ¸¼“£oÊsì¡A÷Ø-ERaé­çà —ö~{Yn#ðºSKÚ¾jEÎIøÄ`|$n“wä}ÑH„§öeG˜p$ub 8 6Ä:°Áæ`\ùòIÁOsÂs.ò`ë-k o·ÿüŠŸÂøØÕkWÛ?‹–Fx\ó?ëþýDíßÝqüƒ·ès×cÎÙ~¼•AfŠ·ö«ªÿ§ŸîÅûH†`áI–|ߺ‘}M3©÷òw‚¬ï$~®l£óO&&å‡ÿa§,u?ÔÉ¢‰ÜCOK¾û›pÛ§äüÆ4¿÷„¿ÿö†®˜ÿev¼ÜA_˺éÿþÑö™| ªÍ_kêµÀ ð¬ýÀ¢C‹¼øH{è&¾§'/k…†RaîãÎíúkK›ÿ@ ПƀŠ~KNfŒù/ìÏåŽ'&zß±7°=°·cüÀVì«&æ˜sÆÌÿyîù¼¡p€Çé û-Ù¡ A£Cô] H£QÁ ž™Tá"G|ŒÆÚ-íŽ=ƒc¥=–¥å­ŠÖñ8 D ,ÕeᣣO/žõ1c˜y¦¡xõˆœ5ŠÌ¶D™¦µLa“H¼ +Sµ2‹ÇsȬæD«1`KpZBmB7…'þ(¦Ïð=k»:>…Åpï”X—²52s¢2Õ¬êÁï‡wÌØKºMb¢‰OÉŒg™C.ÂÈÁ–ÜÐÚ{j¢îJé‰qM|Fb<—·F“”œèÔÖlt$’»¨L€ P-™I§¼ë™þ @sã‰çO- !ipÌî3*GЦ§½Ÿ9ò߀çîÛBb!HÔ•Œú—Î Ïù©à ¹ÜP¢Õ–2µÅ+Õ`(ÖR3 Ú¼>.¿ ”ÿÈàî÷øç?Õêõ»¡øð¢©Í½¦Is6Ëœ_#³fN OaŽ&«´×æ,ùÕ2«~"ys Y©}2šØ¦:$¾ ?ˆšMçg‚[ Î¥Q«Ä‚˜`·<ô ÈC&:Kp ƒ’òDÕÓ › ߟßú0Œ¼!HÿÕX RxerÐ1‘îÌ®VÇH:QéOŠ˜3 ¾dßÑøUjqn2³Œ%&Óg¼©0ѨyÃççò…r%ŸÏå+åB¶¦·½€ÏPù*¾¡«žÏýJÃÍ®-*Äœ!k÷{þı5.üÚS4CæŒ?¡6#+Ýås# ‚”¸)ŠoWŸ±ó0tG{Ù–î{™š •žÅäVïàP1½‚#=˜;âé•Ôõï|¦³/]™.ãó?o§Âð¾P¶XHPÊHœÓ$…ÀŸ¨ x<á$æf¤¢\?+Mÿ=rËÄT‹ëJº³9[º ×aÈé¢ÎãÎæÎÂMlº¤ç$Ë×nK”ùï©ëKªî¢9RU´‡™©º›Ã:XQtm6f5w³½öx^Ùl¯^µýháöϱ”Äÿ•q¥î4þô>¬@¿–ŠÐ—úÜŽ`@‡Ôf8}GûmO‰Ø¿ìAW„¯àl¥ $Åå H\)Â}JåN»j2ÜËt*bb‚d¼Y½0~Š`WÞ6÷µPŸíYýÏÊ/iý(ò§«I¸Î„#»ÀØÖ-`@îL ®u4†žû²WØúááŸkqîT ªÇïóBÐ<·w–0Nc_Š=j\o1…e"©WO9»ŽÌ9‰þOT²iœ6aKm‚!TÔqÂÚCcÞñ#§‰mĦ´—‘ ²/vcXöýPsù¸vc˪©]9¾ºB¹¶fîP­8Dw>Ù&¶ç& ]¿VÈ—"X:´úµ0—ðë7à™–ožÁ|÷Âa wóûU«éÌÖÍé««òŸdz#ßÿ)}Uå|dÕêôŸÞ§üyAY–J¤ë…2}Z{*LE–’%™‹Mð}BᨠîY,!K_JV•ùê*×§æž»?½¢%$Ïzîq¸lr­ëþFIcî_`šÈä 0h-o O² >ÁÔ  äׯùåYùåÕ¹‹V”/ÂåÈHYà|᮪G%¥³w×*÷%´­ês²r¿šLÄ |ÓŸ”5†•eÉ+u ùÉ›“Ί¤z¬ªNü$Ãwj^F¬þ.\R믺RãªýëÁ&:nö©àø5ä¤A±ovÝï 6Í:½d¢Óˆ®s#•o·’rv%¹ôÀ†¥2b‡3…˜X5*@µ¡Õ¸é+½F¨‰wQKñ5>Ãô Cx-TŸöœ¶wCcï–%‚2Žƒ!—K%oE³tÜ\¦Uî²ðíï‡{{­½ª¦s=‹·è}Z®‰Nñ¤Õ U ]~•ß!ûÇxùwé§XÞ5וO%ûç$oá‹P½6mš sÉÍs£¬¦>ÁÔÆ*|Ù.ýNƒç{À?ÈÊÇò+Úâà°o§OjÏŒ ö /;¬,=§GJÃpmÅgR’I/þÁÇ~å[`Tߢ4Œôì*ÙÙ±¼Ôê,Y‰cï”]Sþ&²" ÿ×ÎÓ>Y¥}rlÝR×÷ǵ||…_éA½Ô^¯Ç{ÙS¬–ä©´JWÞpM< ìÃWöá+FO6G­®@~–ä´áÎü¸øÆÑ¶ˆW\y¤·ò(®ÄÛ=,«øè’³½E™’¸N¾OóG_fš›ƒÒPÔ£'T´³É ½€»HK9Tž‚$G5ô92[*„â(4•$vA£7¿Ê6-âÃù(·àÊEgCÒp¥þ'äßðì4 ·†¹3òæÕk¥‚üÅÀ_h¶SJC-‡aøWSBÔqhã¾ åÍØH÷6nCÞ ]kÚrÚ‚K}‰ éDGà&ØÂ§F~К·ëPVÖES”ÃÍb <ÜßövZé—fŠÇdãÛ—ývO‰páh.y— ï1‚mÃéóÞ‚zD¼¨Æ ¸TÇÍÄà{“ùúÒê"`K”ER– ÊŒàBV2ë€52ï”!tÆA#ù`¤N – y™Èæ|6*ilNFP'Ñƶñmb£Zg)ê›ä&U¢Me’•®ÃiÓÝ¡¡5¸¾4W\rQm}ÇŸß·ö~qƒáŠÍ7k–}m¶ž/ Æ388 h˜• /p?šhxíª}›úÇGz;¢$<„Ÿa'Gi=~ØCÉM H«óÜ:<"†X*̹ ª—ÿ{ªÛlYÈX’WÅ"5ç}áÎ"øä¨°Ó{\X‡;ßβ{p>š²òÿò_®æþBͺ›åþ ên”#äôQ#B!)óåüL(³—fø4ÚÌâìº!ÐÑÔøke커ޣ£i@­´Ž£’Š•Óš>~Û±€aØYá=’ÇÅø?ðÓÃÿÎÁ7…±»lÝDzh¢Ç|T²Ô†Rþè£ò2Ý78ÐÃùÎEq@1ðZ"ßûº'|xvž‰[HN,”~«Ž­ý{Tê>¼ç·kÞ‡C>»<Ö´­ù¸glÍp@ÁÎÀÝV,1×bÈÚÜXQ^ã¡ÑëmJ¶™ð 2~‚ú”¬EødX—ç ûÔ@jÌžÃ|÷ߣí±ìXéÃÄÂäè5Ôiç«áWÏ9h.lñ%ZÊs¸ûŠJ–”ÎþݹTÛÝC¼Ë»ûÃ"¨õçŽnkêìíáRô©í¬ææd̛Ш!T~.¥Á]¥ŽH¢®ü sºÜZaúŸü¶áI`Ø;èY?“ˆÁç!U öØE•]£ÔâÊ}båŸlºúÕkiid ”˜>»Áÿß‘èÈ̼¯mv}'GÃ1òßr¨*S¬ˆvî}’¿ é…Dë6/t1øÞÄÝŸTMYp¸%ôTN¸p—(Š!gŸ òž5ƒÙ4*ßýyM®Í­—&©ß$~rÐÔn‰&EYcmIqäc× ´gåêjQtGê9Bc*ÐÙÒ´ÀÔ+ÙLÃZsæ³»£÷õÆßø¤NâÙ€þ¢á‹ƒ_gÆå· ¾«ûî›5È =9'×{×h1¸YQ@¡vä§Çá7 X·M %+Χ½Á2 ñŽ#óÆ‚ÇF°4Ù±>½6“œðY¢åpÌäq$ ½B†9Xn]×wTTCÂxvüÊ8òãÔü²¼¡œwd2“Cä#]‚Ù4Px–éO«KÝ÷ P]äEp‹Ë‹àýäyrÝÁõ×ôG Z~æß‘»þ.þ§¿RêüŸüÓŒÚù¾°ÒSM_†~u[îªÔ Ÿzï>‘y0‡ÿì·b<í²N}® VŒåÄñWÏ»JÈt¨£ù¾¨d§–ïI`Oí†a‡¤mNÇÀ0_îJÙðº=µ‹Ì«•â߬_}Ÿšvnö²zã¾ )ÁA1yêdPYvÿuñYš­l”æù2¿¢O°Üõå\ÅØI“VK‡å@vw”ØQ{±œõ}´:Šš>¶©Úb¨iªMêçÄØ-e B³Ï³V$ÉAxœ3±óŽö?¢T³œ¹DÛF×ÒÈ­Âf{Í:a6¿O¢<òlYž $ÝkYp¦®ÀŽ˜<µ‚$.i«'¦RG'AP·5ä‡ðù¢Ñ‡SÌã'Ï›h¡LÈì‰WMÈ ÎlàÜZÇ즱&ÑñSæÖýÏN·3¶!¢ Dƒ˜L¸¬Èæé‚ª^«ù¿#SQeÍ‚þpK‹âyPÍ¿q‹‘¥¢.[›mܯBT ¯ÒìÇð¹>Tü7N²LôkïØk»)彪ôÇ}N1¢é˲”W”wcx(-*³€ðTH0<‚"’¡°¸ÉQ¢~kóÏŒX”WÀŽ ÌheäŒ`þLÌNïgEù|Ö¶ôœ³© +´ »™ý=eZâ¤aZ¼W×Û8Í MØ¥Ó UóuûLæáÜÍÍ·ìLáÎ|AqÊ»ÐPé|åàoê<µ¢€å4ìœÉ.×éyUÆ<§õòŸS5¹Ä„“þÃéîxùШw¦YdÏw‰Û]™¼Noyc¦7¿<ß­ùJÜÆ°—/Ã%ÄZ§V”‹ËOqÂQE¥ƒ"e“>ü>»Ö[¨ dø™‘ÃõKÈóY^Ž>ïÛRr>/CàÌ/ñ•êqo\>h![£Ñâê«3κ1‚ªj¨f\HQR(APˆž WxtñÍDT÷±vïù {–é+€`]ý%,È;ˆ¶ö-5Ókx±® ´A5P;ã?S­WxÃ-/ZLlÈüäŸÊÔc/=>PVãZòx߃ ë:£”j²é’õTdÒ@„l¡§Ã€¤$ç)ÉØt*l.Êgí•E7^¾†fÓà2ãø€Ô¹½ð=°»¨ü^MßÕrèIé„K'>x;—ÞÖN x-1± >“Öi5›&:L3iÌ€ïUùß5š¿.Ù8 ù$¸ˆXÞi y’¹‡d³™°Ñ^ö†Ì.å—Aëùð4¾~$ët'Å.Ž×˜ël\Oõîíj¡¶åe~Ð[*®Â¢EÓѸ2ÅZ}¬‚/m"† 9µ‹±XÊÇî÷ Yõv³wûÝ»frgAn~PÇ‚|Xþ–všƒSòº9Ô±§x míP Ú&®’î,%+*¤¾KDR/ý¿Ê@B"DÏ,8vüj mϺхª?W-ÈîÈìyQ„’‰ ×mRT¡„"ȺUçíï½c“ÇÌÆ6ý©¸w‹cìÆÙw„Ö¥3"ˆï$|Lü8Y3д"k_x±üÜðwˆdå€ygÌ_®©ÓO+Yœ;žCZa;v 2–cÏgÍE¡¦¯•=fÈÓ’œvàbOåÜ›»ï­$”zõWZ˜”íÆé(jæÀKV>°6ê„è)œ»oÙ0o¡·ô¡uDWáÂÚcÌË+mòú/ìÏØÞãx¤üx¥%†Êžz{C9ËÂA}q !†Ž?u÷‰óæYM“í SšªR¶_ìdø¦T«yét¼£§ÁÎüÛgžý!­õ[¬Ä«‘pžÛ $Ò¨™ðÝŒòØG¼0b€ sQkÔh»—L=˜Iö´ 6yß~¿?%ÛÅuºKÎÀ.Àv8½°þ>p2”ß M:àýá¹ËRÅòxh36vP¹‡îÇ7Õ2 ƒ²b:5j5žoõ #¦6K $>•ªÄS[è)p°ä7òd󌣢‰VúU•Ä_?ëhÚO† ÁÆÊt.>l<ì‡g#S y*ÇIžy[TµVEíKÂÇÇk¥Ï b·6 Á€âò—ÉpÚÔU°¸´?·²òÊÓ*󀢊€êX#º|ù¡5OI=¨Þ^Zàú†hRgá¸9pŠŸ­xeèÈû“%¯:²Æ7‰{"òof$íI1†¶ô•NoXåöimÂ÷50|X˜#~C<¨huï±>MŸ;_.Š`óÂ]ŸXEZåÍ’<ÐglóÜàŒö“@´²&`ÔÛ- 'EÑ+Ñ•²YªJGÉ6A×ã—vª,AZ©ZmH¯h$¯RR?ª\ûânþ•ó,‘ ùÂaýMñÄ|ë’SæÜt,ϰÑ]ƒçjÚ¯¾©•*"ŠiÐbL©Çy_›xÿ—!¨@¹PfêZ!Ò!ãíeO*ƒxÞëïÚLºRZcó™L`±ø6– ׂ_)fÁÀÅ«Ê_Ǭyrûå¢nËT*qx’/°Ú4¹±P¨öšÜˆ'¦yóòHid{ù»³ZÆÆMðûõ­cÉê·A‡ü¾ÕSñ¡ ¾7B "&ÏYëµ(ê£Ôgqð?jñË!÷ïH?CGMžÓ:ø.•ºÛR8þ?`Ýoqi¦$¥e_pú±îšN]ŸvPT––Wþw™%c‡âg·¢Æ9}=o¬R۾хY›CLWÃÀêiIǹèiSrsó0,«ME¾¤£…ÆWç}À?ÛÉ·“ Œ.hm‰¶-{èðÓŒý›V‰¶[¤ùÙyˆglk&ÝnƒJð™–ª!·áPnÐåâ}mþ¿ç¤ªExJý±)7YQy~ÿ=ŠIgh¡Y­’Ȭrå,m6ÇáôÏÒçp³7¶…&8{nÕ³å?´ÉØDµIfª~ o÷¾‚3»«EI,cE'³ÄŸÄoàQWƦ0×>ü‘ÝyfÖ&£r¦T~àäâ<êÊØæÚ‡Çz³¢Ô£’'”µö(¦d.¬å¸dž‘yd7)-üdꮫô#`èüZpç§k«ßxÄ_`)¾QUo·ÈM6u‹ñc¬RnË@1­r1ßí•uIü´¶L ¦BÊš¹-ð­Qß¿aš5Ã[o⣶Ñè¸{™Í—$X㇄f9lk69”‰e >B–M1 ;“м«@òS¸K>T\o{'ru#Ñ„¨‰0>_è£&!ø¥VI5QÚp2‹ß›b°òjH–{¥»Éîhp,ªd¨Þ_`ukíºå0‹ßá<ŸÇ8ꞯý¡1`ÿ–sîs‰!FWû²¬³ËÜýò<#.FÈëPýmët§ÈËómaÐÛçÈ„”°=Ÿ:xUl{üîY’ú—¿{5´I¶þXs(¬\@YwVLš¡mŸœ1t––bà¶@‹Bû°žÖ!ØP–¸SÏÐQ|òi³òØ%ܾÉK?º:–à[œÍ ?gì/fª“û6—þKÇD\ §Eñ„¸üB 1š'Z3b+,E ^zJ6Ç/Ol¨î{d颱'Ö+3÷)ÓÃq’B^DRÈ»@°Ïû èÜ·gâ6?ô3þÕTGAtß!‚ßÉAÇÎ8â¨jøóXÞ÷¼V­W·y ©5úضüÂL¶jâ·ˆµ<~ ‡6ÑP0$Aÿ܈€m§h ÑàP4׫‘ó˽ŒÛfâOB´T€sÛÞþüiöIŒ{=¾è; ±ú`Ü×½øùÕ÷×ûЕèÊóšÿâõ¢Æÿ>3F4+!ßã©”Ö5vaÙ7I:A'Ý™wšÖŸ ­>€Du,èuŠÐ}ÿŽ £ýë~w²yFóòÖÚ]…2ïJ_Þ Zûê~Oôûp~àž¬ô3Ç¿¨ìÜ*¾U8ð±]:½€kO(ä©Ã‚ÖvVRt|“º¬,’J³õ`'KÕ'ÕžzèßRuôŽ«þ©(Òßä6{úѻÛ՛ó7«6kå[êEïêui0(\€‘BÑ´˜!J׫ÓåŠ{}ó§äeìIõIõdèáÓsçßI”Giì+ÊL=˶øj>0íØ–Qz³Ýè´è·Ø*ÜM¶ ½­•@a‘µ*ªÑPñ -äG?r×·¸ÀËö×DÙ¼jáþùsï&Ê¥Ýç¢ÔõÃÜqðÄQŒÞ±ÑÝ,Ûº#Zñdõ¦ƒkç ÀÊ…N‰ Êw£½–ó]”.2Iç}ã‚ì]¹üYÜžåÙ;rù»²¸Ùw q?àñÿa±ÿáñ·.ÐnÙü’QáÊ»acŠùαݘFpÎ:ôÅ^-bÁÀÙ0 J¾û7ñ/–Ð…MD¬$Ïïc'ªMs—V¸fLºÃœ-tæ ‡ò{ï{(WÇ!èìÔCv"''A·„qòÓJ ãíbÙŽ•6ÿ—Ê/çˆ~Úó¨L_£éBÔã´83Ûô ¸V"°([’3Ì:ñpű¦:cs"äøÇÜ2ըד¯½®v=ƒ~ß@ì#à¼[º…È&sÍëñÜ=±á¶XÙœÇ*‘¨ 'þ^ÖÍO öO6XÈ>|AÊbÝMçg*úŒ«™LøŠÅÔþ%éðÃ[R )nê‡b´ Ì„¾TH]Þ\—Ñ1¦çRNQb9eá"÷EA­MÃW¦rç7T* r„xÑ5'¥œYÌ.QG0ù-ÇÏ!­!¤”LÖÕð´[ˆfz½&;”åVùÛ{™O÷Ÿa|ÁÔ‰åËin•N€×àêë$¼ÄQ~#ðMÿVÜc›2ßdö;˜ý”%EÍ+$ä«CpnÚ> ¾¨—âCÂg>;wËcLxŒÏçnÿ`öÁ ‹÷¯µÏ 1œ˜_ã·ùO?(lÁZ‹Ï Egg-xlKá©§|£Ï"¨ 'ډˊ¾¾-={›Äaƒ¤¯Ÿ‰·ß.ZF´#'ºék8iª© _BᦠK„/w‘ v‘Y¤¿8óÔCÄÒ‚¡{Ê0ìì/kvÓóÄX_ÄÙVŒ3r.Û¼8-zß9Ÿ™-Åy³5üšÃô|ÙÄ k{á£ð²ChsyÖ¶?²,C°G-k˜92¬?âx­ué~1£‘Q'cSÜJ>éD/肞3B QiÕr§!Ÿ>‚ÏÀ=ª²¡Ñ¿#)4>7?Ñë×ø3\§eë Ã{I´~æ–ý[ùœÌ£“úc0¯z9~ÅÉZ­ËæŽô'AM˜¯ÀÓ!JKdm™0”˜¾E^NÄ2á˜X«`Eaw‰«Q2‘ÊõJüpŠPŽœ¥õPå%2Áçgñ ?LAágP;Io3òާ2òC¶y¹ÓvòÙqXþïPrI®z»*ã‡ú¾/ø­äúh ¦Ž;N‚EÑôpÎ8ZM(õPÚTt7÷¬zˆ ‚Îy· Áœ+òùëÈP“3æ”Ñ%‚ï§É 3\“óhOØkpªó¾‡ÞÊÒª@Û…u@Ƨ¹d<ò°Ù F+Ú韅Yù Ãc×Á`’C¼Nüß Ì±r±-µ³–‡À«•ªui¤"+xÚ<[±/ЈVѺ]Œq þFŒ»´ƒ ?øJ€"~~È%nM´&u‡²± œ·(Mc  Eg"œUžáƒ$Ëè4$¸âZ©¦Ù¾·ñÁâÀ? ØÝˆ,îÿÂÝŸHÃ?Ì®Ò^[µ·U Б7Ü»R; }ÐøÜúôÉ÷ÿ Pdg|’FD+@½sÑS,L˜Ò,ð}¢þFJR¦j•Á‚ƒuöÍVe;½¼Ý/þö´|Wîòê~NQ¨ª´3ÄjKÏr¶Á<¬„rZ«Â‰¶ÓPØÅèHGÚ|ÁõÙ‘ŽZ5Ž|8ô.*±£³»ÜpCàÿy¶ˆÍm”±Ôß­4â!b¼/»qáe1kK Ï]õSÙ¯èhcŒ‹1Þ òoMĸîôQvò@ëß„+ôÍJ;È Ž”4TÓ(2*LÞ|‹ˆ‘½~*’xî{¢D€9óRõ>ÓUÓºi-tµ˜Bݯ]m¤°.ÑúLؤõϧô¼º’Æ-ŠÖ¦NUKìÑyrëÚµmAªÏèÓ}Ñ^B/¢°ÿ¢c´QF¯ I$£9ÓÈuάJ ™Ïfô:õÃh1øÐ_kVºV¾ÇýµE$áþ˜êÖšÊHVK:VBãfŒK‘C $Üë)äzZR"#…DÄ —unÝ Ú :! ©f‚®û®¶'wX´‡Ûr( 7"2…— Ç„+MG×”‰Ú¬+þNüÔTÜC8nY-P„ÛTWNIô•´J¶G&(ž¬Á£N¿S}Æò™Áï2/x‰FýʺZDe]%cíôÑÆ8;ŒD">«!Õ»éãHÔTØ8éf?¹>GÛ¸ÙÈKeq©€é8­L ò¼b?”"’ãßäâáD!…#ãÅ3eK?¡ÔÒiÒbg±t±Ä£Ô!dË»Ii4†hÇ §%Ü(ò)îí “a ¥CAO¡<-3Mṉ̃•”Éa_È‚]D#*·!(‚§M²=k«‘Pè&ænÍí£vSYÏ4%ƒ,àž¸>£Qñœ’ãîÍö½FzúW¥üŽ€îØh>ŠøLÜìÉ‚pE«nÐH,µîo“öÎkuƒ2è–Lë—AÀN|t¯Œð! Ä¡^¡0Ûþ sKB­_ 打àQ(6j&DaÚèˆÑl| 6†»÷ùÃáRŸ{Ðí÷ý¯k KŽ!ŠÍ¤’¤"å4¯ž2ÛÑÖÒªLÀÇU.öÄ›¦\&}—‘xŽ ³ñ}u Ÿ8ÇY·§_SŸ’H™ùcsºàŠ X5¦¾oãA+ò?vãálì-Ðþ£fœ P¶“Hs«æ_}†Í¡×8²T¬ãxÊquàñêUÙÓµæH8DˆQðÏ0˜kLj-Æ÷‰.ðªEe¯8NwÔÜ:©µÝ”þ€écè11]½™=ª«ãæxK*ûe¤‘^ÃXí“´×Z÷§/Jð‚ws5¦DÎ 6íÑ"w|KÍ"Eñ1¸Ýêüás51_ÊW¿kbD5êätÃñî³Áë’!Ô¢$8ÉäÞ¥áå…Ö°0}h9"§¼PŸ¨¯úñ:c¦ÏªóÅëß©{'¢r|~-ûi¥-Àäú|:ö™lûªpÙ$bƒ’ØÀ„Å2ȳItëfÉA€ÒL¤âÜ,þfÓÜ \%‚7vüy 3鳤ƒe¥©P¨M0È X4£ò])ƒB TÓažG"®]#ãÇpéç&=@ãð!{!GtÃͼ-|Šä¸ÄF„.Áâ+¨Êå[Šø¤¼OË\MhÂé@€gÜ0³G\/h’ßÉ©É 4mvƒ UMÎ5æB«‡èÚk›ú®Jèj‰q¼92ø€O³¯AÍóUÏ‹IíYÄvì›nõóbr[©­Vó|Pî¡ö¶£üíÔqn긔¿ƒÚÛ¸åg¢üX”Ÿ…òûß ýL´‹ö³Ð~Þ7£qºµ»=.s*o‰UäϬ¢F¡_!øe¯”(|ÈïÂ?ìÈé˧a„DìÒÇÊ÷™s2P‚íé'ö„´p÷kŽÊ¯¸mäÊ‘Ü åT¦î†¿Zç êàut4”µå cS`á¶#«¹Qµ€åSpáÀ¶Y„"¦×¹f‹ð:("Êy¥ÿPG3 ;¢1Ä2#†û¨^~ÞB2•7„ ×ÉwÖ AñDָͿesî¿â3¾ùP„Ùñ±ë¿ò©ÍwÊvÔü;?  ®}àî 'Á©W7 e)i;ÚŠÐ  1é©;J’ðQÂÞ"4~ÿМ¹àT{ð‘ê1g‘y3™6%è£lôA77z^^iúØüétß8¦hk&99Χô%×ý±Õ”Û$-SðPVþ9ûÕ4§ü1è"A&–I—ÕÑF6LIiÕ &‹·m—›Zµƒ©)+“‹Vj5ÔVÛqr|)eM²2$#7ëe¹ÜÙ )N©’§Ž")j‰ táÕ4hר(þx–Çc`WÞ%ãÿ߆ld–tÄÅ[³|Hªê¹KäÝå vIIçp¤fð…ß2ð{šÊݘ˜ Uô[°‹‚Ÿs(¬2­1.yì¼Ô:¤%×Kú͘’ôïŠÛ³ †eɰ„'YJ*…Yù/†›—ß Ç98Žß¡$Lê­äÈ€·êðWªæ,4!}~H¶´Ô9æ–òHç$ƒ2Œ×åÏКA’íÄGÐl°ðZ+Ú(m+M=éÈ(kç9ŠåkÏ®þ;9FÄzÂ/dÕ¿b+p™ˆ|¡IãF¼ßCÍ£BÆ©"tø ™î‘²R@ž¿tA¯ÿýØ;ð,Ìv8 }Ùúà.b¶ú3\ûäû Ÿ“I¡ê4pƒ¾†¥|drl¤vŸ4fõ3‰Éµeá¶j[OHÝŽvëù­ ·?ƒ“Þf\BÙUæ¦ýÄg4§W_…!^Ê-ÿµ·£¸c ÕÛÛy”ö¶ZºŸBE{²Iåw«M°Ö/ìŒiæeôi°ÂI\ú¨ZÑ="Ë~ £d¨§0\—sxèèÝ–1­Dæ y4pò6†JH»#½(î©ldèé2 ™ÛúåéjÛVÐL„ °× äý×»Ís‡Àie êaCÓÒá ¬Í>G—Ê  Ð ÓÚ5vzñö KFOIlWaG7Õ?P\·F£áÅG–€¿išÐë²Ø…-Ï, 5þLîúëÇvÅáWÄücø­,@F=sˆ·©_ù5¢§¡p¡ÓYÉ2PûËDæˆyñ„åš+AÖz\†›K8·ª,~›Cî¯*±ÔT0AM&¢ZàÙÍgOܵ RÜ–Y>[Ó»Ë_¦è¾_>K?e9‘zÓ†+ó”°Õ OÞ©®©ˆÃ(‚`üuÅìiâÖî””S–©¬Ü ñ³K$;Ò),œy°3æ3Z½Äíè…ùeŽkþá#Kƒº¬H]Æ{P>4žë ä×ÏÒå%Ç®Û.„{ÓhÑF»I^ÌÏ“Rº)¦rb•…Ueµ°³é~t°3Õ1o,«‚°¦€P¬edŒ LzV–r–1,Tdï³?h`* ×ÖÀž ÈMY•”rcÈí@‚·îÑf9ò:¥G¿P5d>Áé³ùC=‰Øž™Cç“Êl€ô “8/l'ÌU7¹óðI“—L°Ó'˜†ÇË{u¹Àüh,EæÌ*jQWnÕüîRÆ#iaìlîg×EÖ,¸¦yÝZ 9‚ÔŽDœh¢g3£6ñÈüo&#CAXgªfÃÛ¢„SW¢PžÄÆ¿—Ûó‰S%æg4á¨8΃Qú â¤{©Só¹ yÉ"¹MƒLËŽê„!ɤh›ÝHˆ‚íüSm¯¬¸ …À¬ª|ñ^ÎYu_žúBœ6´…|ÓÞÉÙ«ÈS^H&¹ªÃM¿ûý“zû”wE„ Qö·sýÅâámÄø3É©$bzö}Ç5z°;±è Qá§/x²f_´ÄÊÌ?ݼIì»ÌLm¢$'_ÇD†âÜZ"Ý+Ï,¾Õû¶ÀåT¢òŽ”õ±[`ª§¤rˆü¥Ó¤Qǧ™HKŸå­Íøõ<©ã;ùå©á^cá$8~e#?Ý õŸ§0ðG‚›Õ.¶çù‡¯­ t%¤Ê™'Ï7¾yÈ"Ø›?}Ôÿ/³PðéïÖŠÊl“1dq©r¥¤ñ®›¦¦"NN×"§Žêô“±Á­ ×»Åého}Vûs2a¨UÿÈW r´/Lýuõy¥¾9â} Í«ízÀÄ`rÒÁ˃BlÇuKëtZ‰^ê Ô}hºq]2š:šÑF³±pR®^HvbC²"y7qשeU•ØÐ±×w§7æn$›Ï³Íã„Ú{˜úöèÿSÏÌþÙˆ4©±ËüB)€º^ôÑ®+& ÏüànõÛèÒ#˜º ˆ%¿;ç zWÚ8†úS¯ø¨Áï.ÉmþÔÛôù‹‰U‹¾]ý­cQ.—bŒLér¢ 6É Ç±ê/½/6ÜjÔ-¤Æè€§Ù[õ›þs?<ìú‡2ÕV0ŠŠß[*úìÝíj“a©¡¥ª$ˆ¿|A/m¤L `˜†:¿œeI)î4äú†UÔ‰feµeÓð7®ÝŒeöÖ¥$xõ2‹£Út]²×.Ù¶UòeœžÎYHù3†øéT·e=nÑÇç9óŸDv'À²ŽVuª*ð*´ÊÊ'ݺ†7a”ÌØã­å‘m® ·Yá ‘£fæ$ߢgࣤÃT jT{W? Eµ{ލ¡—=Ýr:2&P§%ÈB 7Nž­¢*°«PDæ{‡Ä2›ÁQ~Z˜ÞZ²‰^zH>?ØÙ¼¹¶«apY áßfŸÃ Ê2öã{^±ßÙ@èžµçÔ„K—„˜Y‚h †’Þ£2JÛ¦ºŽ¹äž°€+ó,Ãm‡€³ “ÑÌ;'+è„1 ÃÖQ¿~˜>=ÉY‚hñI`¼J]±p“[sCoÿÚ.àþÙ2Lóê•å’ÊWŠI«^YŽøN ÁõÊ,ñaF7.èÆly|$ÿY2abÉ*âg8:‹ú. 3‘´”÷†ññ]'7|‚†Gïý‰§ð±‘øŸD ,ó{“ü±mör´œ›¡h6¿sÆA2ØÐkOUÏbãº3‚ïli;?5 -À#EÁsçxz¢Eè÷ ³Lô³ˆaMWipÅ=«ÅÒm_/׉›,›ÛfM’ÎB Þú[¦9Vžðزb8²·íͼÂùÔÀÔÛè%¸mØh“Ã(²ótÜ£ªÙ,bíò™O 凙Ã!ÙÁ§&ßA ÝDZ;?`ÎÖΨ³ágßOçŸHXâÍ,ÃÔd‹%ÀÌh]:étÎ’åžìRD0«9lŠ–½ zé>{ƒ˜jêž2Æ2<Í"D¡”6Õ§VÚÂEþ2hªè±×¦Ö6‰dô­=ÓÐÈ”f&»hðà²F³é\xB\Aþð‘'O\¶½Ð3„mÿÛ^ðó‘Îz–íµ6F÷ŒÍɦ”Êî#ò•EQ,QòÕBÕÀԦܺá8Á'D'Ä”¯fyt˜?Œ7²[ìÂÖÿŠ­/øíê$srw؆'E¤'ÛV/®1ÞÒ7nfI(ZL{Rùêl4½‡Ð*%ÉSn9ÎÏ ÀÃñ6,wíW衸ª‹ŒŒ?³)Úß·ž·.%¢l£ó£ßëŠwÞª Þ­©‰¿j&E!¬ŠÓ ½OZkÆQÉÆŠzýn¥ïb.ŒÌ—[¹¬kií⬈«5FíÅjŒªý¹í{Þ%Õä~zûâ_Ù·¿›2Þ#ѧ˜€öÜ$ðVAKÕöÒæe¤«ÊúŒV"wP*ÀÍËØ¶O)ÏAlpê‚üîê÷%JªÎT_Û¤5shUPǹ¹Ò®ÅCøƒûÏPn}¶sF­Ð °¬Sc–—†)?5—¥® ÃË$€mb°o½ZE6xUØÛåbQ{™„ÿé1¼.((ˆGTô„9¯B唸0?±ü³ÿ¤©FN‰Jq”O ?‹ì×i™Õ[Á˜ÐZrÛ"lx±`c.§ÄŠˆæ ²-ß²]gÏ~ë>,k›ôÔu™ÏáK®Óã™ÒUª4æ·þ.à÷߇óü%)Ž.®cÄÑÅsx&ç@üHz*hÅlj?ìû® :)ÏR„ ÖuØÎæ3ÚÉÒwòrì¯LZ5”Ò—Â0š&LJ*p¬[EÈ=s•k™Ù÷RÀëÈ®^ú”…­tr˜„ N½ç³ßÊ û{Ì~6·É®ÿ’œSÛ(gˆ]XŠô¸úŽÎ ¸€ÿ–³ù+0%­ÛCV¯@pæX™ãË<–#¼®7ˆë‚N' %Ø>V|/)¢Î,Áÿú‹=gf¡ÜN>6]ÉŸÅ,B_wØp¼ãä¤?‹ û¹©(ò´—!PÞ‡ú€Vx/d‰€ð&äz “ ƒ]zo ¿ûé³yŽÜÊí‹ìTù ¿øpµïÛ)éâòÂɉ1þíõ½g8ÙóÅCÁ~isÓ‡³ÄQ=”²ëôä=ßÁÖÇ!¿~óF¾LÄ­H–[­l¬L à ¾B>»L¸Ðzyq݈d¹Ïæü¹ 1¿õh0ø‡ÙÂé¶ üŽû¨ÕöÄ#—_"=„D«ÆËëPp½XÝ­ÅBCÈ«æ½3B²ô‰çÍUή\ÀG¸äýûdzq}À©f›®…Âõ6Ï"—»ÈåQƒÓ9ÊÇ*A³3§Íü¨Ööʽ€ØrÆ_°sð^RK+ÕF²œO(K'ª,23އÁ˜ëÉ„nž$öÝ|1§«¢mX5˜!áÔžé3Z‡‹V@Â)©è{(¿= ø‡èäñ"nÕ\vË{ytPtË—ßù_Gòÿuöë¸"zµ¡â ¶ø1-œ")}îŠàÞ« œïn[Óqœ$Ådbõˆ)ý¸s  É _£î­7ë—]äõÐÈBò0Ìj¢Ã}Ÿ/&îCíGØÏ£þ«kÄåÖ++*öÊÇý¡›¨j)§ ,$vþ=ëŸãâÝÏ9w ÆßaÓóŒÞ²y¡]•ÝrÌîR­ÈìÜÀ0yîX†|*z4àÚÌL¬N5ÏP®Ïn–•—ëðÝó¾_ôUPãu¾‰b ÝJw‰nãF¨’MàÁ´óO¹o¯¬?ÿ"ê`æUèn+vT­®º]Õr× |b)WÉÑÂMU¢m+¢ÍP»»\Ì ¿Œ6ºŽ6º4ä/eöÕ²úÆÿç^Àc'™Fb+—CÙí…ÖZŠX˜Œ„6(a‘ŸŽx·íRq#’¿pæ«Q.h÷Ù]¹@F3Š«›NWGëó‰Er1í;nvð> z>0ldÖ…ÐÇÀù^ýÿRï;?-ÞÌí@&ÒyW(hRMB÷L»Ý*Þa¹ !CR d2ÇdÍ$( ­íxøM„âáúÀv?Ú1ÚΔ¸(¼kŒtaDˆ¾ŸÖc‡nàMÔ@A© " ž”}? (ÑtºŠ1"<œ;+e|[[oÖ„€fˆºÚ[ kq(l7B.…Ü& ÏÿÎNÂÛOIÿ}˜s'¿ƒÅ†ú†ààÌÄJŒnAwp†aøÄÚOÁY‰[s ÞU:1ÈÃâ/%4ïƒSÏ?æÎX»“,L'’(D؇DkÒX¨RŽóYQz)ûåŽÅmÉ„ÌÇcïfq¬Œ ‚‚L#¥‚‡Nä¾±ÿŒ³\Ø Ñ’ômÒSÒw(÷’[sP®9sæh÷»°åX?ÍgãQ0¡W¹¾h; _©s;ê{²b•MåÂò¸Gœ(Ñ1$/}Ѱ3¥gä:(‹K}ù!Q²ÔbIy^±bÔ_¿g@b ðÎ.‡/ªO·flÔß¡”`ëÍDÒÎíR)ðëEÕ\8_¸Ó†­i:S®ülûpT™"Lì·™iØuÄçëHŽvÀ†K´ÿìN'3 x—Ì•„M´Þ»š ”Ǽ  bþv 4¼ûù©…$}ÃÀÅ—WŠÄ.fÈŸ°9 ù…S– ÙH:m¤é À§"±$.ÛöG$Eì·[H“Œ!ƒ5¾ƒ £L!K¿ÍjÕ ÷UØ›KþèpæxîܾÓL)FˆVóVDõàάù]ÖìJVÑsPǶÿ×sŒyZÄE’àš$¨#z|¿H%ѧœ§¬HüK‡›to &šüýª«;<á‹…Ïö„ÁÙ“W>\BYRabì× ßa¦*Z.Q¨’‰ÅÞ²q®×8naÂø{„òY£<:ØÖÇ”û+éU9påß5YÍÿÿ-œœÀzöÀ‹t­§£˜ŒqÖ3Ajo¬·aÙú8vËŒÃf9;G8‡cèÞý™´E^GFVn¡—¸Ä3èÆÅÚæ´Xðzúb±@uðäàw÷RY'i´uXl¶q0ë@E%ñ°žAÌC±ŸÀ¨b,«+‹ÙtÚÇ=ɜګÈÜILî⺳u{LÄšá—^Ïkoñ°ÚÍzv{›J í “À0G%A‡?ñÓè먭ÑõïóM{oñíÏiÌ£\&Þ™DèJ9*¿ÆÁœýÝÿ¼ÕÌGwIói~ž³'+ÒfÒ0'N³H!^Ùî|”¿TÔƒòÚ#å,3!ó¡õo<õ)'øž¬* OòµÝý-<¸«Ч™–)ŽÊò–W?bw {L]û,üóB_óZ_;¥SÓ€ˆ®ð‘ ¦Æ eÄåR$¦üºw×ÕŒŸcëIæâ/ÀA<3®¬Ç9­"݆?ÖvuåöB­·Ã[´öý4ƒûÇÛâNÕcоzmÀ¢§Ù˜ –˜°˜H©õ<0ƨ£ÌðÑùUšöl2Ö‹ ¿þ)¾êÙ¦ÂÔŠŠ°ÛÒÐa Û}Mebá±›ÏàW_¢l­¥ŠNð„yZÑ‘\ÛNNÁ²‡;ÅÅ`u‚t¼€Œæß#d!3 œÎ¥‘˜ñÒéVa£ó‹W“šFVÆAÁÓHŽwxg‰á30ƒ\nŠ[²[×î¦`ö½ÅŽ ¢¶Ø—,«”P½Ç-’P!œ9æ 5¹EØÂÄÙþô~–J”z£æ¥}Ì0™ÅgJãÑ0@îѵLr˜öæL~ÄíÝ5$]PD™L®u"ìüÓønÌð2Þ«U(ü&¿$À˜A9Y]ÌKù6Ï›ÂDÂ'øYÎ(©Á%ñå‚¿†= …l‚ë+v¨3 Ymè.#ô'IÌYvPq€ô °ø uEV±–+äá4VÊÐëלGC7{wJ‰ça*o®$vä Íd',”Û:Ñ´‡™®>LÀC„û»iÏ †F5ðX©1&k²²K¯â"}p Õ^N;Ÿ•‡mœlI(àß iëQ”Ím¿ia‡”~BBÉ¿, Óµ×ýcåúŒý<»É6<|G=?’ÚÕÿG#?1“ÿß»$Â?oE“ œnÒ˜)ÔIw}Š©L,ñ)³xĦõýïòüÜã@x––ެ°à $e OáðÜ)îhÌb‘ž2e”–fÎÑÍÿ‚’¿µùaþ€Í%›†þ~ûRú!]ClPì†ñcrâng2Ÿ˜Ò_y¸iÊÊ•KX>ëä$B(‹ýíî^Sn0M¾g¬N25^ƒUá A„ÏP‘Á™×Q±Ò}fǵŸ+ÍXJýÖ n0*À(²>啽¾ŒãT³å$ð¥&ÈÈ €`Jþ'²Ò8„¼ Tºkûs ;mÑ›*0"Û‰jÏt®|’Þ¬…@û€4R•”'6·’ VuÕFC&‰Å7@?FÅ—¸Ø°êÂUaE¯Â‚¬… æ@”JE(Iœ•¿ ¥;Ð,ж@Wí’^#œ¤€$Y]’ á¸(J%·†[ÅõþH(LƒD(?  €«g+ÑVæÜ1  -óÆójwkèôZMÞAiE¾ÔBU´˜XÙ…Ãçœg©³Ú~CGÛ>ò6C]'r{‚t¬íe«‰¶J†½ª~„&ïò.Ê+ª¥×UGƒ ÿ$°ÎxŽ9¯¡/#q 2¬73ŽžÕ´îug èö8j@… tPâ© õ²!И,è÷®‘Š!‚´á‘Ý0Èü.C°¿KB¥pßZž¨°E}Ss֢ĢCiEŽÇ6‹£Èi;#{dÀ/"Eê ábÚ‰Š ÎF-a)¥(àøåñ_ÁB0†K{¶ŸÙ6¹åÔž¼kî-Ä´ÔgÊN½r¢éÇÙ¼4Ìê† &Ž{Œ §A„±¡L2p eæÆãöàáY`™Ï;{³ç‘r^„E°8'W˜§h¸›·øl—þ¾äÂÔï\»ö«í@»@Lc5$mE´éíP¡ªc¶á+XŸùP=q _Øg &íDÉgýtË@ƒ&ˆª-eè`ØB.Ô§t JÛ!Ù?ú•H5jf·bà²2õGå6Qp.Æ_jhôìês#ïö_Àï#_jäyZþÔi8hþk`yáÒÅòe-!Mä‡4K)¡Ø·=^²V·f;A5˜ŸS`Y€ ,D @ð \`à Á+…÷(É×ÿ9¬ú%öžæ¿OAä‚T4{ç¸tc>"æR»ëÏ<×’ilc’ÃÜ6œoÛ¥EL¨À€eBâ¼bþô¿!ݲ<Ûþ{0ó5A…À€5ý›æÿK—ð…9”Pþ‚ø”UÁUuôÙDpâÇ Eþ ƒ¥;~›_¨T¢_PgÑ'| ¤ ÓFMVN{RmÚ“RZh ˜úœþ†4ì¢"9l$»øPÒXG$Á.ÆSl%ü?K”Y$û¥ #g6D=ŠÃ)[oëÞcíGļN?ô¦¶›¢|@°Ê¯ Öê %¡w}Ô¿&ÿ$²ñ¼×þ'pc•] –,bÊ e'ÍJÄ ‚Ÿ}¤h–üsá´OUí¡ìå&–ñÐ}>}xÓ‘è;/BÄÆK– Œl…MvÕöè!«.e ù¶²÷‚WÄYÃ\Dåm¿@n8Ïݦ¹†ÛÈÆ=yÜ7ßqäÆÃ†;E©Äò.RˆԹ…KÄÜê^gC"̸¾ƒýý>Prá ´1o?²ƒßU`m‡oVöè€KþI<ŸèÒŒ®@¯ CÅa„÷â¾Ý"+c¥Mþ_hÊ‚`2èª@Gîñlõéx„DñQª V°ºÒøpè´¢]þ†±Ã¹½…Égqeâ †‡Ü¾ŽþQáE¦Ô»*½YáÌÙ\eöj¬‡} 阎dÂÛî®3騆ZÜzKdÇ€{ÒÚ£’µ2RšB~î·À“ˆ€åÙ®«%s®³äªßb¹À˜b0à yá#NÀîH¥Œ +$”VIbDk±‰u–2i]Š¡†I?dƒ"Ì.\¢/ˆc °ö€LºtÑÓ©áPqÁHï€á‚ȼÀ Èñвã6üQˆÏ€s¾àÂ:ÚBÉ-¿‚/Ö˜·g½å"$íÙAØ×qnomÔ÷%7þ·q=ÛðR˜ÞŒq£p ö;@"=1n…rºB°óÙÉ=Nõ¬xv¦ž-gó„Ùûh)ÒÈM¦¾Çòk6Ôà?i».f?²Þ9lÑVç£gFn³¾°â¿wÝIX¸è!òêP+Š—AS6b>+\cð_¥ªSÁÀÂô´zú@9³‚:vÐ…ì|Î Êñ.5äŠ`ýª›Jx+»•D$ñpA•ù#øöVÐq!ó ¿µ¾PÙu¨ŽŠdjàA Eå=·;dÕÏ\P^œù<#\ΗÂÝÁh®âxµ¥¬À'Ä(SF̱§±ÇÄö”¹êû@QÁ[pÁòŒ#Ë¡Š-ms(FrÏ% {40À[„ØE·´\4¬ÓÃÝB.ÊE|IGyÁ Bvíß‚‹xú•ÆÈ¤‚D„‚¢ÊžÛ`þ·g¨È4B9Â_„,d‚Qi7œŠ9Ð`ŸNò-ä ׎bç^ùö\CÊ Lªºø¡XÊTÄ+—û¡æˆ E\*—“¼;­(”î~Wˆ„`–î ó„Ü. ¬‹ÍövŠùà «jt‰X!;DH¸Õ${É¢÷RÚxY×Äöå1q¡Šy^käJLX Šø;nwHy„‹¼‰Ç9aðÀ ìpjOò;xÐyõ\’/P†Ž"ÀBRÁÀ{¦ ƒÕ¾ÀËWHŸ)Ò¾b.¸¨ ñ ™T°†eÁ¸C áæ Û OZÚ…Æ×ÈWÍ´ o÷loEJ ì@lwÜîïÝíøîP7%ëÃ| èÜsXŒÙ Ú±Mpå½´º¢}’X®Djz'|3íÖ>ÉÀžèšmõÎ[iÆëVRÞbeVÜÎÓƒÿ>Ò>ñÈ?rÂI\Oö6·5ôîóìú†xà}…”(v)ñàSo%ežúì_èXýMäA$õûIUþ»`[wø’ûÊÆ  |E5uêwã „ê .uey FÞXqÞ6oÑð*xÏka­•õ"ª…õ‡Ü'b6ÃZrN¬©ø"lŠ:˜Ä'8Ô¯ Û¹`œ|?G4ÞÒ >˜Ò¾Ýa3Å]3îÃ!”¿–ðiÛOÁt¿œ°.„i!f3‚e2Œÿ“aäõî=ñÚzÎ\f%)%X´0µ H–º$I¹º8~Û?»,7â¼ií0uJy¯Eä)¾ïÜD§ÐM›¿0›mÙŒhÅfD“ÏI´­Ó'mãED‚[2Ë»û=ÄuÊŒòVRriTÃRÏÓCX߇¼6i:i:;6£´Ý›Ñõ8']KèS„b@Xù³W´F$•F4>‚_?ìš5\ÆAhâ`j–·ÏÀ' =˜èË1vŠ›æýhc*THsŸê¬7dÒ‡ÚÞš*ó5Ï€pÚG쨜 %!*vB*¢‚§†¨2ÆùB>¥ˆ’ ˆäWˆ}ʉ­)gÌU•3Õ•3UVbåk‹)ž30eÕ†©¯­&2¤Q…é*õ„EçkŽF‰™^sw!Ñô\–¯´¡ÀÆÖzŒžÁ±ñÀ·Sïè,¼žqD»U=ןc7ŽÖÛ‰=>çÖPɱ Mæ§AùYc«˜/^@xlæD+ÌnÖÐh¾·^p#÷A±r_ŸX¸ro€o¾¬ÖS®¥æµY²Â;ÑØ¡Àÿ)›1Ó49™l®Šàw“šõ7††?³Ñ¶»kε|ÍqYJ“±ÏNà€†ÕÄî,]ª`÷ÅŸÙ¿üŒ ~Öf¤äg‚ðœQÎ|¸ž”~2( @Æðš2†w•1‘ì±S8¸„è‡%S°R{î@OÇ+5 >/‰Šñ„ó,¤%”}ÌÓ ŒNë+ ¡v—Þ<ò7E> Ûdý8–žŽÝ6öâ ™ä'¬žzü)[ìɉ™×ÌîqÆ"èÎÆ¡6ú~SßN0—.A´úà¹?ÈÈwÒÆ9˜jïñ MB’¯rõáûÚe₾×äÚÆ3çée-^ªz5_ð(ó`¦9:PªsvYàó”f¢^ƒýnäÁCj$|.)Ÿêà œ´,Áá…äªGøa+¥ÃVÔ–Ë…®rßßP¥#‰aÇö.evNÿù Ñ!zĹ³iÝ|õê®.ObÎ’gÒO›«ÄÂCõÚÊ"—^!Æ¢åù>&Žs'öš¢avÄŠV.ëë”Ú—Ö¯Ùrm¯ƒJÓ•:ü øx¥ŸÆ}Ä ¼5–ù®^ºz äØkœ,ÃãÖ.]»„åàâ-ÙºÖR0ŒëÓ%ûä)ml¹hD5Ò°}z«ý ïÇV£i ‹0û'?R³SVM—žËFã ŠO ª¤²³î54,,ÌÎJ—*O›ò‘¨ãµ{i’p6úEœ©[É)Ëi»t·l²A#l´Òh©l¹ OCÖIl…´Ü_w Ñ[`™ì¡dÞ“"qËjÇ5IäíK/„Ò\Æ/ÚKša§W㤑pÙT;ÝÖР‚%¥ÜÚsÂaà •hyügH¡î¦#JT¼7;8]Æ´¡T_-È=ÜœÇieÐBÖ}êiá’ôG]¸ %ó?ìè5˜š£ÚÇ'Yv£§¨ûÞ‚²Ù¾]Q‰ïʳÔ\©d¶WÛ¶²–nO§LŒ‰®ÆI2±šx~¹¦)EóNÁÈÅK‰Óä*ÇxŸÈÈ•z# –nŠfæ—éç¬Z¸$»_´ºÐIŠæõõ« KE‹e2+"ɲ ³"êMp ?ú¦9ßu'oÅkϳÀïK};ŒÉË1ÆÀýñ¶kô†~ý@§>Y1κ¤wòOþJÍ«+ˆGc¼ÁßÇwÞ”Ë܉8+HÃDœñKÃZµùñtö תã¹îºøJXö÷' 10©úƒf1vF:`ñ,Îü£µ‡Ì£§ÝÐðÓ’œä•ìÆŽýÇé(cfu†LÄú*ÌþÆ5 ù¦z››É„|»º 1•J_òÜŽ¢–ŸõŠoå\Öxß+y¾¬£›.£ý¬Çõ8™¤Ú²Dh^Ÿá1îÒÈèà/­0L¬T‘+u¥®Ô•º<õ®’,Ÿhëü{ÒWö('¿½Èödã¿~& ÏÀÃ0è+ŸY=³V²þŸïÛ›lýa;{ÚY¥]?’¾ æ€ÿŠø$ŸRÈÞ‘Š¢î-väÖ«ì°øÕçà'ÿNÜ%mÞC>-sˆˆçCE¶¯W ‡a’‚ ôj:Vbbº[d·Èn g£*M—¢Îa.\‹f× ÄýÚ-Ùïû²ùoYæùÛ…vU€Xö_F~…4‚Áoìy/‘±kÀCêÊP’¶q(•CêX —X ·bboÓ«R”cârYA¿½åBX£­µ õÖLm˜Œ¤œ–|Ì£ˆÖq‹š NbÙå>ˆÊæP𕽪'I ÉÛ1gp›ÔûFpƒíÙÁ3®¢ýçv±+± q.|Ý„•Ú”•Ì“ïV áÏR9¤T<»¸û7ãÙØ`> ¢ŸÚAQôaTs¢/ ÒF5ÂõA_†;fS7ðoÏÝɼqÁä0ò}L6\Ÿp¢³S ôó8¯³m¯†Ži8¬Ê0³»\»˜9<àå¿ßã:]š¿IꓪÙük|£,¶\ZÔ&CÊ`Ö)«ÖžŠ]å|Aiö¤e„Sìƒ6ÂÖ­ÿOè [d¦k–~!íŸix¥W/ìÆ&Æ.ÄÆ)L&VŒÛ»X9DäNÒÓŽÍ‚-ûÔÏŸÞö5#£bôð4~8—jÙòpm®~çU>31©#^¥–÷ åú¦«Ä·•X›&Öz{ Ù {gÊJÛsAŽôI ñŒ˜nGNì>ÕH÷=Hf²EJ»¿†l±œá÷çP:v²µøð}èºä{ðñ<;j³þsËyñë@´T3 Z !I·–Áã&\kœYR0*HR9½yõÍ$$Þjmø/ç» ‹6ÿÑŽâ96YJksQ¶ºp-÷ðe¹Pã0ÿ;êÚtÉësý¤­3X©ðËĸÛ5¸TœÑ5ü/ç½.òaò;h™ÿåHw}Ì2¯Á–¡?¶GÙ}]¯ì4"vV»<¾¼ý¼H9ºöçÛMÆ;èÝÐJq]®aNXÈïà{“­¢ÔCœ BEM(Ÿ–nûŠdmùÞaôîJ¬‰þk ßÁ÷&çhiãn'0‡8™ÈTQ,ÌòÊ‚¾P>~ÐãÉ)ø{yþJ?ŽµÇ H¦¶²Ï¥Ñ+Ú§ Eœ d|B(×é>…m¦çÁžMÿ)áç±ÖŠ?Ý Àͯh™ö°Ó\抷Ì~æ¿.ÐàÎ~&?øùGˆ÷”0#ðà öù“˜ìf›3Â*ŸÁÜ{u6ÝOAY¼Ý¢N1\áRÿ®* pBã[†Ê—g3Í4|†ëùòÈW(–Ý— £Zÿ\Mö²ü?ëû˜Äíø³øU?‘ü¹Jùe_¿<=ƒ_1qÔ|Ùæë`^:(È]ܵÛVÃ#„¤0ìšD æP-C¡ ƒT°ÓQ}Å÷:‚›õ@\Á&)Ô½Sfl'IÙü: а™ç‘‡|~Êcÿ•rÌSù½cᦤÄu•¬ßfn”\‰ËänaÓÈÃÎø¿`þ¸ÖÔ]œ ´vÄ;Þa%Æ€Éc+ “—m…"`òØJEÀä°3¬ç±•‹ÁX—¯` æØ˜X/½¾úuî Ïè[z`¢Îíҕלyb#)/îG‘GÖxŽfÿà¼ÿúÔ:Æ€÷cÏ ž:øJÒ; "MzÝkD”»ÿ4¾+%.ÞEFE€ 9DÝÓsÖ ¾& ™íض©³o”õeÖ4{x¼Ã‚Ç€…籈„Éɶ†µÿlE"`Æîñ.³ÛV(“wT)b•‹TwuUû®Óu`î|¢–4DË]Öp•$åÏŤm¸µ‡Ìç¯YºuN<¼ªÔX|¸=µ‡qù&{3˜ãœÈ¤«q“ί¼™—t“q/wO“Æ‘ ;3;“ý~+ëKÚc Vô@\0¹z«kÔ\£ñ)íkØàóÈC*ß %×%ݰiH3ô½Ê»©Þp0blx2:6Ñ;›dîjý³I«FR^3¾£ obÙŠuÞo]ZÂ'Xvbql „É}Ò›–Ç0‡Â"„}&Ï—j"™f#<’ˆþ-×öH@Dï$ˆ4îu­Yº´¥ñ}(IðJxÖ]n¼æG2#(S]ü„èNšÙ¶§#›¥È¨ï±&cö1©W rý €ò¿& “QÇÎ-ÔãkÀˆ{&³S€ú|9;·±»éxU)LûÈík YÈ '@±nÿþ|FÂáÀ YH 'À¤C}Ú žî¸dXsàà È@È ܺ=ä¤#—¢…Þ™ßÕJŽžŽ£yçXMqgÞÑÞB[Å­6þe¾™”ƒ^ª×9–Í>R3¦ý!º À)ŸB¦™Ù%¾dΕV&Ë /õ».S‹Ÿ÷ÜÚôÀia6ƒ+Ìó‰\>Iì™ÏU橪<1 p‹Î*iŠP}Ý›I‹ÀÕ é4âæý Î?0{þ$Gb/ú$¯Œœì_?<@ªóòIMë7*ôDÞbÿúáâ# qn+öã%/a@gŒa$]˜¼šü82“|kŠ“³×ß½ûŸ‹¢aY>>ö¶Ý‚/̵ $-€ö…;­Lí¯àíõüLþ2C¤p1Ã`‹™ö,Ü¥mš¯ÿúõ³v™Ñ ÑÀ#ÊŠøÊÿ¾~±p— Q˜¨”û¹aÿ&­!¢ú ªø£lKÄoˆ²æ#à&§çßêëû…ðšÓ®`ëu^ಓåu0AŠÑÿß=Ù?ÅoúÞì|?ÿ|Ôcô% B !ú# ¡3Ö›ДIJ R@ôLþöÿüaÜ\Á–uÂF í¸nÅ3è„”€_¤(Fâ÷eÆn è¸è•ÈèÌ„HsÑ8j ˆ¢K‹ HÄøî­Áâ·â¯Þ¿ÊMŸôj–·÷‡0D"ñ½FÒÿÈ§Ê £råóEªá¦B\ÿŠMKIÔÇLºì¹ûÒ4·/sHŸ7C(c¡VÐR¤õiiÚe¡ûôðè™Kc´;»l™ lÝ~ëÂ4å]šÏEñý¥öÀ\qÄGúd¯C<"kÌ‹HëpŠ´ào¤bº³b 5åŽÚ¯B¯á¾­I¡âîa]‡$,Py?wžF航[Vªm¸×Bã!< Ÿ½Ü½`-ï w [ˆà‹ßxKÍ€g bz¹…`€I‹òàzp!Š$ Ô ïz%8Í’T—ÕçYKí!HÖp/rUÄMghæ½l¼‚þÙ…9q6fú:Ìý+K—è ¢]Ã$yÌ®³YäíÒýš²½ÀqÐMë:ǯ¸íqá†êlÊvW4=\ct„AÙ­ëÊ›Ïô/­.ãbùÞè=PÝhÏ>D »­<Çe^¼zW Ã4ˆ§!%*ì Ü”Þ[ Uiéð¦õÀ’S¼\ÛJ¾7ÐDbØôqÄþ!Z±ª÷Ï ßPÃßß–bdÀg±ÌÎð\eÙ\¤¸Ž¸¬~ ÚdÍá¯ì¡2= „î2¨ú@Ýh檵̼›OUZ0›ÙnÍÐ[Á(ÏÜÞu·[Ks  ™;/uªŸ;ÞËÓr„‚^ÐP4Tˆxâ’a4ø+”•*eøWÅË™–™o¦/ªÅVx¸)|x+Uf$ô> ÆY•öº¬z°‡R£]vò¬ÈŒ´ûÒEÑØ€¹ºlñ«W<ò¡)zx0V8Ê4ûh. ¸¾Ž ç²î7hKDËDï(_¥A€‹Rí†qާ· ¸Á¢Ò÷´™Óë.§dó‡aðÅñ V‹NkáäQ¹ÃÆ#xü²Ž8Y¹nF>dñC’=pöB”öêGYù5ü»Ê‡DIË%Ç)0°² %Kõ+í”>öf²Ü´à52A{褰+J0ó`‘¸©™š|‰+9 âE(5Ö5 …6‡NÞ† Ñf8†ô°«†|:»pK~È`«7 ž]ê Ï[ì¸1Ûæ½¢Ê|¡ºxE¹7ÓØlÏÍR¯°e\Ã|Æç³ÑB2ŒpGè JC8(<@#€$Gœ–õ!v:"vÉ4°+¹«ç!JëÍx?¥—}¯¹³•d4ï;èé¥`ÓÒÐA”æÎBsËÑâHmÀKY§gÀõ¸'ש”KcŸFÞË3Ç]Ýí, záÙ a²DÔd×ÂCÉØ@^;“tÙ•è.΂ìUd[ÒrVræ…ðÝ) a‰e)ÙiŽÜÿú–BÊÆ ë]a8uWNÂíné2 ©âÞ Q6^@Xï é›÷žÔ:@GŒ²³mS&7YÚî23jˆ—¶—&›áž»‡h}Î<ú#9¡Å¬Ö®Fs‚بiÂDÛ%±ÆÏ|ö¥ûM¿•G"SØ5v¶+Æá#7Q?À©åØÞ™µM‘)›g)ä¹Rä ä½ôÄT_{v›Õ¡Eâ€òvéý[„Pk)„¡`–w}ºâÄÝž\þêD{‰6c$?ðqïJJm—‘K{7Ò¾¬³dô^¤¯sräÞ!`.c„k’ l¯ Ðo—(>5Æsl8Ðî*¼Ø^CPÜQì,ùÎõ z'Êc©!…˜yïÈÐK/zn°Wçe6Â]½Ê#îj(³íeò³Î¶à~3WìIÏõE2x‡idƒ-ÚWwÝ¡ñ ÙƒëÀü»‹x*ë¯r‡ðÏc/q‡òXÜôûŸßX(¶ÿòÿW¶}J«zGê‘°­jŽýsœ=ícx-l¤~˜×$g¿;ô×$rÉÝöDv_pMCHû"\vÏCüƒµnãÆüû¥ÅØYv¾ô®¥DÙ@Bn"±õ¯~©ù›QeÓa¸¬§S$I7{ëäP¦ôtP©c%~·\XšKâ"ÜñŠ.«]˳ŽWÃ^ÅY(’#F 9†+Cº9:¤a¼áAýØ^irÔ²ÎN±‚{IV›äH“ËîôïÙ„Ž¥¼r¬ìDØåŒÒ®í reÂ!ÓÛ+¶Ükv›/ïê‘;|ìÄÛS—¶WéêpQ8Û=K‚<ÌèÙ¬Ö\JyÍYcÉ]³¬sÃhÜÃ"a(ÏÖ6“Ë•áW{¦9Œ²ÒÄáé]éèÊhبd˜ï}¹§X‚‰«åq/gPžÍmWÓ¸° ÷ŸÍêò:ÊkÎLä.c2 —·Ú¿k ¯„ÉaLÆð'–ŠücÝÕZXV›4Oø|;##žaQxf¼kÃË îæ+Ro¸ßðRùNŸµ¦õN¯²wŒá1Å6” ³Ô3k.»øAPϤ†Qö+åu®ÏÜˆí»°“ú™T²„qš—À”÷׫’º°F_¸€Š®¬]%--¯j±9p6%LN6U;’Ÿ7pbâÌÕ­¯ŸH½¯|ÔïÆ]I§l´$+³ZÑ”±šÕÙTxf¦ö0ÐÅqû;ñz]<GQN›êü™Þå!=+²2½~BG&}ƒ£¨»†sÅi5înm :ZˆMê×M Dk¦µ@yñZæ DCÊŽÂ:`Uˠʸnt§sOx^ê)­-¥S6 §žd‡‘2ë_›Ð/y¢+ÌnH}3¦Pšú c=‰^ÈJùú ‰lûÖGQwa—Œý`jªM®!ÅC’¬ªo&¡» ÛÖÆŒÛL1hN´!a]…I8…°‚ ©"+¸'Û£»¬äžJG‹ýŠîœ8¿‚ﲊ qD^?!H”Ý(ÆH"HrHrHrHrHrȾCŒIÊHìȤopÝ2*œ‹>Z¨CÔ!Z$‡¨Cl«kÈ‹éWº¡é¢q¡Ã"9$9„ღ먩´äî!œœÕ.Øçš¯×‚‹.±&„˜—MãCVÔß{M:ç±M£áóG7å0®+©!à¹+÷ƒƒ çŸcf š £i1Ñüµ¤‹Í¡Fi=ráñ À)UúÐŒ\Gï®%tJ%ý©îé•hµ^Ã…™·ó më‘tÆ}„þe‚9¤·» º| ÏÓ¬†RPç$1á‚BÉ ì•­öŽô7.dîàÅm3Þ(ºÖ‹û !ñ×®Å7£ý1urÉÑ0KE¾i›ÆÏòð°ìþæÐε'}ðŸ·ÞËqœA×ûÄÏMßuRócM7›Çf¤ýQál”ßëÞ?%ßtèí¯fÄøµƒÃá=EwͽW´¢ÚžþŒB® î¢éºpUéÕRq½EKø~¥}/iM¼=)‚½œEµ½ÐX¡‘âüªÁ%ý7àÜ+Gp‰Ú ,„Û?-þ‰¿ÉxÜíRP‘þŠ?@c#ReGçÒVfÛj£^ê@I‹æ7Õó»µ–²Þr«#·¼f]/¸¿Å€Î^±9qeá~XÜÉ0Õß—†cƒ/¯žt—«Ôƒò¾ëlr.t–;‹­O.»‘;䨚½@óçºûhø­‡´Øýê»mUÔ¹t·Xbvd ­ “øUÀ"úA8ƒ¯”¡•i+; Õó&çØÂŸ¡Y|¦ñÑw¢Žnq““û´ìíU¸…LGþ9šj·[¹–5îÞCÛmøš A€‰Á–ÅT;˜ ?x AGQ§iÑíª M‡<ŠÐUä¥Ò÷7;šð ?ßu}¥ÂÇnï^ªÑ&û±“»ÛøÝA)s^6yܬÐÁhI/^ "ähþå(Ð{µmu¡ñ©çb÷ÈC’›kÊ)›‰­ ¹Ö™;̺£˜O;:lËå§É!]²]u¡ñáWŸ>ê½³ð?vì e…FÙz04W9¹n^ ¼@âKh,$ =“šçºªŒN쯤8»0ü zÛ¨ª])™R…J9ºKÒÞ7UÒåšýêÕ±GjFCkòòjŸIO.j·m6õÕWÐ2ÅY/ÿ¨º]퉀vO¥–(ÏÁ{FAP:äzPÐ*)ÊÇ>èsôîèVÕ@¥½@+Rý%³Ô¡0àâä€Û!RNÛš)rä­µMjG«·Wþ—ìýðU4,ûy6LÊtwN½RÈ€:}ðz8`A̯c¾óÑ ¿Õ@µ‚ Ä–û쓬ø“5f-íY%­â-êÄ1D‰ ñä±sŽC3Á”thœÍŒ}>ÁØ»’mÏ.ÜâpTàÎãdP^ç_o†lâ¼r”žð¿3w¡vÜw“Ÿ‡i\ÁÐÍ>Í ³Øó':#²þ 10(t)°|xåÉÈó”Û=RŸOÞO删’¯ý@$0[ÎHKy,qX¼.åx*#ß@ý¸iÜ@SìßGÉãYM\ØI÷Ï"ùå­×Áçà#$'ûm×_O;¤‡þô#óƒ/É…<ƒ ß#\Èê²%>˜yîd?Ò½h¹Æ>X½ñÛ%ÇŒÓaÊþÀI2P»’ʰcîPÔÂÝ^wéËy;aåÕï°»~æûòv‘c¸é;xB¼Å?í‚Qº ±øCˆú5/Ã\yàK˜­4·§ì˶#¾ú²+.û¥tû¿å¼ ^äkkçÀÙw0÷Z|ý…ÝöÛt{¢ÿš÷Ž—Oấ¤±Ëz€!=RÞ—÷‚\y¿»Cé;¸‹2}'oú>ÃûÄI¾‰Ã5þîÝYáë@c³ åd¿éú ØÌ5þQ1ßôúã«…þ3¾œ~ͦk^”q?̹«NñäB¿¬®«µ4æõ÷†Þü0ߣ÷@~Þš áð³ ˜ò~;–ÑøwUÇßF(÷hüBOž>„¶›¾3~™7 2ƒZ,zÆä.¢C‹ !lj“E/ÈМ¬.5HM'ï’åTÝiÚP7©òéÆÄì&„á_%þüØÿ´†ªÒg¥ˆ?•OÕ K3Òð4¦Á›ãÏrýó[aX RÈö¬Ï©¬á.’»/Ò‘óÈl ' E'ôñê+,0èO-¼DÞ-ÈU.é:qEN)3Ü5••jä;1sGA©+Õ/r ¦ä¢T”ˆ£´ý_¦ /Ü)"þâ8ñuDš@%ôÇÈÅz@/'+<ŠÑ¨$†#§‰r´¿¢E§‰Œû U^T£¯h%Òõê«¢wŸfû!ZÇQ‚b˜uº¬}œ´­*ÕmÃKüT•ÝÄîTWÊ\¤j”Z¯Ö&É· 9ѸN"é~lŸàÚ×íÊsæ ””»ªPe˜¡r0—ѦrS}UÛ¬åÙ$ÎZœœ‹Ôìl&‰ín*¨–9|¬ç‰s9ÊӯΥ"³ÛÞ˜š´Ž2©¥òh̨“‘üsÛðž®”½uåÒIh,‚íµåÛkµÖÒCô] CÚÅtn¯4TrÖãìMÙ۲^Ó_~\PͲ¦nÒ6ÖC( ÉöÕíÕ@–†FåäÜNeg4iëq–$¸ÎåéWçV1*Úó"‡Š6\w¢Càöä*܆کt¢CÐíÉU¸}†›'p*ÝžÜÅvŽ–°Œ€«¬¤52½ûóQ=–ZKCWtö |טù|þòë1€á‹3ÞÔáY)hIÕ\œšr e%Rñ'h‘Е±Ÿ§cq“çG˜0YQh‘%e‘OTŠ{C.ʹ¼¹ßgèHö›ã8saË Z±öêK›p3©¿~ùôC¶éïï¡‘»‰Øaš1êùnØejð1~7VÏE×t|Wá·& Hð Fï;Ü„ÁÛ6î«È¢UŽ=ä¹™½ð«­ûzÙ-™ªÕ´‡rË3P Ì.FZ ¿ K]Ï$”gc z%%¤\̦m°ªf݌̛²ðZµEšÄœQ‚ŽUÄ¿?:&ÔÛ¿zÌã­L!hͯïÒWÿ€ ÀºMh1”Ìt„êÜÍ•å.žfV…H·ŒQ¢ͺ{üïâ«w` [§=VBœÉ î€eÃÈYǃ«TufçZè%á”ik¤“4a\Tç¡”Ñ× ¾9Dœ‡YŸ S’Ñ(òüòöýþ}ìåU]‹Œ &"Œv)®¯÷o+Ó&IÚWÏ䔬œ÷Õ¦^@”Á®VÝo@Y÷_P$¶Žº pÿà…|VV«cVf» þ*dÎÕùüÚÙ²HbH—¿n-¼mRfÄm˜–¯\klk#}p¾¿ñîþ«wà¸äU+# Àß+Djj‡ïÂqn¥0ÙŽ¥ç¦D– ïió¥èÐ ?v\àÎt¾÷»7­×îÑñ¡ì ó.ùñ¤·Ë<¾„èbP‹ —ʺ„¬Tj1 ¿mfÉ~RMé÷0¹ëZ^`Š€Ô³H 1¤<6p¬“ªœrr@zù©†kóè‚‚=(T  Nà𻵘¨›M·Z[GwÇ“ù6jO @… 7(ˆÊ3ã¾lÊäÂå:uÂQ¸õrÈ‚¯Ïa~ 4¾ù?‡"r 8m}ÌfnF‚NÛF›µ}t{&ôë†Â˜rçŽc³ÝüFv‡ ¶öxì:N–®AyWÅÛ«¦>L‘ùÀ³í:€LÇæ".iŒ£C“÷~èHoÖœ™¹`ÁlwKm¾bvakU¢bkTûÝÆ³Óá¡e0¥Éëï5ƒd{"FÜ®w×qár×ÅRôY­åMÝj(TN¹POaø4WQ9“!C æx^ÎÝŠÓ²!Jý©A Ÿ}ÕD{ù´ ³ú]+|üèÀðý¾T屃Ð[ëxÑÑ®¡ÕÖ®5mE@ÖùX73pná¨ó°¶E[¶ää»&W ½ÍÞ‰-nBÿK’…Xo~}·~õtü¢+˜œ-Ù DðÓŽ¹Uc¶Èse Þ­h«Ûf…ò×ýUµùqÿâð¢}¾_Ç^Ô¶ßý¾ä­¼ÓKÜDŒÁáœSpOóÖ"â±°ÛZJAà'šE>Aõš9à3ŒBHÛ}XcäaѤ"1C N¼HáQñú;…Ê]„Õ£ÔAÊ—Ê vß³´¸µjn7Ô¤‹›WÂÿû“tR¹pG×^'°Q'Lèó6óQÀ}æg|„$'Ú¬ÔaUåËÆël\øJöz·NëƒèÁÉ@}¡¨Ûy^¡]y£ ¥Õz¢°3û½}ËX¤"镽fDkD’PÃÙÏ ©†4àõepejf©¢.G„Ô¬Kó8}!ÛÛÕÙóD;¢>O ÏUü8ò¿Ã„žfÄ~ûÁåtÁ@eŠˆQžY ”BnŠ”š¸‰èþG­¥QêW TPÌ,"8î‹`Ã?­OUî>„ÔW'@˜ ­aFQéFÛ¼*˜â*¶ÎY¹Râ„Jßñ_Ç¢HÂàЪ©íIlÛ\¤¨€rËJÙ“& ùîÍ‚ÓmÈ„÷Õ>I€`é*„ãJÀ˜*‘/ HÂà… \9I…óÕ*“­Yå"Ü8CkÕq3r°+-M–&Ÿ²î¥Ánoå#Üéñ3Ê ìê79p;}U›4"'׃.üNÇ¢a1™ÆV«Èl9Í8taü1)þ¿ü œ.ƒöXER¦®ÉߢúX%ùb…6 Í1rŠ­ø!~_.7D2ˆHS?`äŠóÈêbÑ\YMÃÊÒqBÈb® e˜ü(3£ä—í6\ÇEáVf)q¶BÁ¬\¥Š¤‡ˆ2o“­%¼@Ô²' m¶´ße]Þáh;ŽÕ¸„d^ÂêÚ6wa™o¸×k†Dz+uNÐ=°e”` pàèBXF>ÓÖ–qð:µ¯P˜Òp®"IƒëÕdLoã‹üìO“*”í.xÑú>Â}xd•[?q£J¥Í›dŸÚˆ"é¶U™%EþS<;ÇK‘탎ѩ Í2ù &tìp„É!î”Öî·‚E«µRÒ…‹Q/è. oæVWY‚#dNØOZ(&7»4ûhÏÄ 9uŽuD¥ÌÙŒ§cä¼îù›½õµþú=·P[•ob˜ ’#ºŸf»+‰¾îº\kéVÐC‰ê4pA‹Ïë ³3Å«þÊÆÏ®¹’Ú hã"ߣÚPü3¾>‡ ÄŠ ´Ù¢pú„öŽjf4Ú­»ÇOE:3÷äRUƪWf¸Å˜±üâ“ECUŽéUˆ˜‚»çxTáj_’e¿º¢áR€FÁ¡ÆÚ}¦ê'¥t•B)®|}…ó&õ°lÓ6kQ N“*ƾÈ[ü.4HZ S½oó‰yþÝQŠqóšøæL‰¬Ï{DÛv³¶EîˆiPB*/Ume,Bð}ÎÀ4 !²wH¦èg]Ü¢p Ǧ‚}ÚWyLü°R’6ôåÕ" S4(l-_ð@ŽƒŸW¹ß*)š˜Q­×ÅëM-ˆ¨Ðt&ô‚ ¿1c>å7ýp¹Ör¹¶˜¸x™-âmê†Ó ÒøKbWÊÈ£Ââ&SëvÅÊ"”ÚDGqM\ÃýµŒ¦MVñÎÅ‹)”뀲q¤(ÓWú_óˆ4"sç)CÄ(D·ëÞÑmª˜EÁ Žómº I³ ‰£CÙ8(@qê]]ÉÎgCkšQŒ³\­ÍXîp54M iïŸ@ ”îï‡R–³‚s¡¯"¦(q_'Žëþ”Ž2j¥ÔxÞV烪ŽsG2U|1²Ê7OTdéf•Ü£9¾°èH‘y’&¾N¿ËÓmÈ)?нœu ÁRóWè•© þJ¯Pˆü¥~,¢ð?{fü9–´`‡¶8LzГµ Ð!{–þœ ½òôüv™FóÍ~« ª™>4)p’ÎPžŽaZóé•h Ó .\®_%/ÙðÕEˆ¼˜€1|•¿6­ìCÐAï &¢ràm^ý«( ÿ±:5ÛÍÿì¢B[Y‚;K¦Á·”.EÓr¨/ûù"£é… çEûÚ&tx¹À@ã9&ÝÀé^êïÝ›ÅWõüòþåñÅÜÌíz9Ï@V/+æ±£Ësqýùt¯;@çß§G9Ê¥éh‰ÒÇ6îÙ(j(ý>›©/vaz]ìÃm‰Ùs@)7´›î¦†ªRÝ®æ÷ÀßBê¥ÚR´Bx‘N„Ï甪]Å,=[™‚¾j¤8„šØ¦!ñÿÕШõ_ZÀN=foÛ€ˆw!Äð%zívÇÛO—«¸6Þ¢Ð¶í¦˜ý³`ƒ0Q¡ù/PÅpngô­0…Gü&ümþ÷˵ž‡Ó=’—÷ÙXöëîôdœ.rjF%%Rã4í6lÁTùyTóÌ5h°ì×'[™—‚Y…³( Ö¹j³mHšk!þ×±9¿¯{†êßõ¨?¡-†fÊEbŠ›Íwmh[°ëŠaì `Ñ?M&óãðZ|ÒïÉïç9§pZõÿ­„%û]¨|·þò«P¨ ÆrL2)‰",Q€"Àù¸±Ãº{7ÐFÜoM5wìbne€Êœ d¼ü„¿“BA9‰ÙÀ/Dƒëæº uh¿¶ºYžû ~7Šû ¯¦«RÊÊA如Bµé‘mÛ@à%“£¿Þ¹Ì×£™í¬Ç¹‘åéé°K guOË4öF}¿õ®ZB.ùCAè´í¾ F–­!‚¦:%Í·Cñ³=sD¯luS3¹¼á?ù¸xÄäÁƒZd ËÁœå¨%mçû.}ªäŶŒ9æs‹c«ˆ.…EºK]O}:G5}JÞ4]#n¦%„»òD†ÿ ˆ²—1ÀošíD›Æ(˲‹ðö˨OOÐ~ý¸^€|øºù½ý½z¸¼_ßÇ¡5M•Æ«HrÂwM”Îü/4»6K9Ã( ;Ž¬ŽŠI«õ’åJ_Íu—ÉQÜ‚¾£‘PWå·åf~‚»æöaŠŽÓi)PV+Ü¥B¬a +úú7]ìÅ ¹ã4¦’Gº—ݵÖ6‹ÑkÔŒísŒ® ~ëDyü<¸¢”I}C©[ܳ9:·7œIÕôŽˆØã=5$ :Û5ö÷Y5?Ád2çêC¿tYP¼NÏ ²_›¸}{B]î¬<±¸ÛÖÐÙS˜ÍŒ1´èÉYâ%1íÖšø‚¢­ ò†½‚4/%/ ³©™Åü˜l—¹M–“ èˆ{+ økt&CܬɄ[2“ZòÚLðkòóëÈ£“óÛå­³¢N ö®ù6&ÃèÌ×bLù,­A­ª7uoaX<\ Þ¸BÜW !¥¹A÷œâÊäS+'UÇ#õWƒQîá/óŸÁ«ç¯ç¯}§e‘áhÿMúF³ƒÚ~ïu»¥V¢ J@¹¦Ãe™'—V>2&Bî0¶e€îù\$Wi-Q%`Í! ô³hâÒEyFÌ–%=×aÃS›ŒžËÒ%¬{³¿,˜¹{ÍýÃwšâÔ ñJ¿˜ ¯‡~(û„‰jÔbHËù©ÎFYˆþ|=åL-¶ >䕪"ø·ê4Sö7äD¦n};¯=ÜÙn%%"#U¡êQ6ímÔDJbLËϱ*¤Zë¯T ~A\:°¢’†T­j|ùÛ²hnl‚¦€2¥¥[$ÄÆ­kûÙ¬,~;L!D:O÷Ö¹ÉcúL’‰93Ÿ·˜#Þ>‡ óI ¶d£f0²ŽmÂx6!¼#W“‚ëN.Q]a¥)„ÜrÕ­†Ç Â5sž*TúKò~¹Iº©£PþÍ/’T¹È¡­ËÊú ÷0}º‡"ÀoÙ‚€Ë0|„°…¶™”´±ccÏCßQÕ(YŠjŸ$CÀ«Ø%–½ä®n r³úý­ï€ar9GÇîÚk&Fèsï„÷²¼‹ïÛp¤† Ú#RÃ$¦å@Ý.¬Xô-;ÍHæÒ Ä{nv‡²¸›òûƒÝBVVó÷¯éuAvȦÃ5K¡¯ˆ’²62)¼wcÈÞuD¼Úø«³¡Üma bRùêVÉŒY墺„…B ¡¼˜¤¶Ïª,rï—ÔìêáÑWk©û:¼ò34£,+½*©ÊU(þÓÿÿYü ÓÜRT£ßäÈ) B›ùC¦|G¹ÛèÀÚ?'Á¥ŒH9Eî °ÁÔRÍvfD{;ÇýÐkYvU‡7Œì×®0w›gé%QŠ,ó†A¥,ž©<û¬&cËèÒ8‘Òªá”eŒsM瓯¼É2YeÑRÚ„ûA«³Ô•º.t_?ŒN¾ûVÆxÕòá~›Oúݼ×e¢R¥±iÄ«dÉÔËW¨ôÊAI¬…ÿÛŒ.Ö–JlŸöåï˜Id'й…BÇô'a %ÂÃY X¢b±@%üZs|И“â2\yM›,“«ƒX¾®¸;ªwZP e ¡6›Ö6£/~ßÂÄ5„¤¡nºýJ¤Ju)$ϱÉògå‚Lqb0TdÔq°TèxÑL/‘”È)J>«§~‚*0Ü ßpЭ¿ÍoØÎlÿ1LèŽn<_IeçQ@OüÒ?“Lb|[ý¡F DÕKŠ<õðÆr)Þ„@šâ’”þˆërTI6€Žì*±«›þåá[Ì?WÆßKÓŒGÌ3ÎÎàÆÞ]™ xuLUT?ÍÚ×B8yŒMª ~ÛbÛû§ƒ:ø<Ý¡QRÀ¶Œ¢>K·*«v'åÞOx+Ô3ÑŒz½®…”Œï(«yn#xR'(ÿ­·*ÑyQ˘ÿ(ð½sN™ 8]®ÊÂÐÝ+K`dEòéêšÙäû>âê´cÌ·„5bí½»©§„„B¢oKÑ]LÆCööŒ•gÀ'¶#›ðØÙ•æ(Óª*ý¶Ó”˜ ¢)7Pþ¦!­vTåo|, -/Ïòp¼Ò*“Ô[ä^ý‘ !š8¶û«@ñ¡!rëçoDöö3­Ì:Hb×g+‚HØq¬6¢QÊZäòFôí [³±‹°®¬â'ÌT¿ –ŒÃါÌÌÃaZ¢ˆ!Áa!ó$ùM‹Ó‘ð}d2<Ô»Ç}¸‡°x^i±@‹¸ÈK–P¬™º±ËChìü^Ì÷Q» TM A„jè;Ÿ¶¡óv\¼îwf>¨<à(›ºL¦tòJ•½K5Ùbè| QÍ ‡ ·§8ãmn•âÙ0ÏT ¢Jÿ±f{ãrÕìôl>O®Ž}î"6®À€é·Q7s·òñ­ÿâ¸DªÑP—E¦±˜‘9_J0k„lÞ^¡µ)|ü{>MÀƒŽ-Ûmiýj¡€†“¡Ã5†«0ÌÞ¹>â‘áz˜¡ªD–ê)Ÿ£dxw}úu½FT­,—@ÆòªCy\*ó¼6¤³kÃÊvˆK“‚"Èß´N[é>…I ”]Aš]ÀC9(29Ø¥ïÕÚ•lZ dL-îqWUΞƒ Ê÷$øâ( Âïw­¹þ” ïîJžIŠ!bÐ-“‚÷Û:È\(?Ú6qã—Cy‹ð¸’ g-èL÷{1òEx;…°ÒX€Ëºµ…úlG· §·}M`›ë'΂9ÌÚ³‘öT‰t\«xvœò6A*^¹/BŒÈ!—j åWbiU®,Àà˷ _½8*€|NyÖz“Òac›×%ê÷FnÕºÍX€ŒšQ6ó ÌVlàOc²*.’ÓŸ†ï¬Õ듚և^$És,/K³ n!’«BÒ”jRªüÿúÛç5\“˜ßìo(ÁŒ9´p¹Ü¶Ï‡TÒ$ðŠ#²8¡Ü.õ™B6½#Y@Pš#Ы3m¸1Þ_UˆBx5¨}¦²¬S’©ãTÅiÂPtBlØhí55z3BgÃpRFÞ¸|ß.D´b^ëãþkßw®y’pÊ[Pï(H€¶f¸“$†ÖOááM|]¥1%QPIV|CŒÏÃV0)©Zê®H”+° &¶³õSfoŽõd×Ñ8?®:Hâ'B€‘N“4 Ù¶L×”U!_GÜ»·Çî£,ú››˜ö™„†(ˆIBT¹iß,ÎøÂ¦7•ÎMžÈ%*âñçìÍ—ØÏuvèbJc΢ÀobŽ3ñ,.'‰gAáKr(9HþSÎòôM3úÀ¢¦O‰®@ÂRSkøœÜ;õiÞ,¢£—YCe¿–OÂNÌ ª7R®ï6y:ù£,Â&˜¸h#‘K3<Á§†îü| ÓFÙÑl`>‘Ÿ‡x‰£BhŸ»j pTáuEøþÁ½žÒp¨§'j?ÚæîpA.ß®ã,]³Ü Ðö,S¼BxV¢™pVŒƒÉ˜6ðýÖŒDb³-·òÔIR,e›%0‰9’FêHMU(\ÌFl@²O;· Dæ…ÎôºZ¶t@wJéþ“Q´Ëw/2àyX>hzcI8âÌ)¦‘4ñÞD9«ò¯vw'ùjOýøLûšÃd€#¯º—|-¹O ÃíÁåV}p}O±a øenŠGO†ëƒ›DÛ=Kœ(Ìl6µ>pÅq1Å@ÙÀE*•³iþ$±¦œg„\,àt¹T}v²¼pÀ³³Ñðè[Apaó>“c‹6ýí—Í¥€ýr]Iv«&‡ÉO71 Ihö£ ¸ÅLÐå!£´°O`H§*Qä¹mnRæ0tûŠ»ƒDû$:š»VïJ\ÔËqt7,:†ñÓåÉnbÄðCÅ 8oÎ?—/“‡þ @oÈ ¥pOŠÎtüçW[Ò@‹?¡IW¹É«”€rÅVG÷¬ûv ø”3WϦXŽ&S³D]¶H\gþs„¨n8b¡a š´âNqe®o9RjÖŠîžü•_ÀÉ ÿLÅÓY´V6btY+Üo§AÄ b•§.À è·±„cšd‡îÑÏgýçQV–¦~Ì&]ƒù¼‹¬ùbU¹Ôs¿$ÂË6÷)ÿ¼ªGˆð¦Ù\uüH»O8ÝÕŽ jéSµ:Ìú@z=öN˜€þÑ\ç Œ3ºRŒ!˰Im”söðZË^lÖø"Ü1ØzxÜð|7£\[;†±!J›ŽªR(ØâåVï˧Oû Aæ×ĸbÃkJáuu®úÇÊ‘7Ëc¿CbÙ ¶c%+ùëc ³<‹zAø?8kÎì^Ž¥+vh)T<ÿÚù0x†ngPŠ1­Rx^ªÌ4ä• â2ej> "gÂX'`9š° ÖsŲLÊëÙŠÛÃy:ˆûrÒÑ8O\`ˆe|žJçYÊ ŠÀÑæÛ°vD’©zÄeI®¤ñ%n¤,H+íŸÖªýÔ,›¢¦JN¥’xò›.Ÿè$€gUz*þÃYñ\EAkN¸mðét˜úÔ÷NKˆçûTV!˵-·ÏÈaž»ŽÊܪ­6±@Ã*鳫¹•L‰Dc;êBBKëÊ86P·%Ê‹D8={Ö ûu¹H}Tb»é’l è»Ï|r¢{Ï3;Gnç/«@ê*>àãåÆ×nœJô«…§ö=/5 l>…\hßß‚ºYC¶^+·(,ž\¯ ðc”ù­Hqx”Q„28%’Cõ îlÞáa¾‰ÎµŸ=ª5"ÍOØÈØ:Pɧ]ôrJö-Í]£:ó,uÃ_‘öü½¸[‚Ü6P'Ÿ±iRÇŸ-á¿á·b!ç_Z55âtxnãK8ä :†°¬å|-b8g=*Ø­¤¤È\lm–ãÁV›,ÊãcËýìFiŸÌ¸Ÿwx~v+XË–r·Œóõù9õ§ÏúP=^€žÙGÇ“rÒÎÛ¬?NRø ,jž!¡5ËPšN2,Š˜!ŒÏ]®÷Ç.dVØi”Cð X¹QÖyÜ÷hµ6d1ü’xŽìÑ [´A¬Ê _î¬G>dP²þïMŽϧ¦Îs §·ù­5õ©9åU^•E“ϯ£÷µÏa:T2Í8?D4R/šÓé–þM÷c•UïggÊn.êò‡MǪÌÓ( Àç±ýc(.c\íU‹Ãÿ<öDËa-%ÌÇTáh¥3ß¿^¥ÀÈÃùÉå~»8Ës– 7^¤È0ÄÖÑA<©ÒÑ_˜:W<uÙ(`Î#.z¼É=$áËò‹$£Cl?Ÿ¡È€aeDe½F€Íƒ%µTƒOƒ’ Âêsþk­&Ä-:r¯uÐüöRÌ`wœ ëá¡À†Žµ:ã¯ìŒMÊ2$F*Óž gªüM3åÈùë†͸bŒ­«?'‡G€íÇG YÙR¬"ˆŸv)§;ˆþ¸‘•£e'æ„g'Ó™9ÍnÛCpñeøqxÞw÷­¦~Ò}nü¥²´ñd²v‰Y[Éç–#åש’Oâ+c±¡jÊ,µ¹sjN¥3•“JÁ>‚_äv±¹ßU"w¯ÍÀsI}Ï\wëkðnÂ0®2-7_iꌽ/ë38¹˜Áaûg/³ºö aõ)à_ô~Дtû–Þ.±Šˆ«á»T߸M Q®Fz×Ë<æ(ò¾GÑéYò µkgáÿÿ3º¬†0m~ˆtýVõmq3åů ZÂÿÉnþ%^ž¼Šßû‰~èôø®ÁË[!Oc¿|½kÍ?ùÓ û·§äGô=øæ}ÝÝ´÷îiµ› Ö[ÔÑ6ó5ßúWx}%Ø]ÿ ³tôÀüO:›50QöU}|õêáá¡¡¾¾ññááb1“N$"¯ÇhDBõ!é4E"ÁàÈÈððìÙï¡Ñ5ëB#+‡V„–/ë[ºÁà’þŽ™ ¦§&'†ÇB£#Å¡&ƒùlº)$R«PO2­bÑPÀö†íVƒÛèètZ!GÏóõ~=}LâQŒ¢F¨*“|0K‰DÜà¤ÆbÕÆôE9ÑÿJ_ß’/†oh¨ì0àˆ¼»–Î%¨é0ºCEg+d&ˆÅ7=]—.£>6%ãz7÷’aXÐ:ÐÔ "0 ¥WŒs1ùC»-d_òѧ/^±{¿ß®—J†ÕT,eò„ßr3®xÝq%2¨’x *ÅIßñ·òt"BÞVú»«ïÌÊùÍbe^c1lôÅDÙt„w‚&%˜3àºÞ’¸À÷c Æ‹‡ÔUvÉ/·õÖ¸LÔL{dhîÇ¿ªýÞäG,=DÈÆtHº_=ÜŠÝÚòJ¾“¼,²2ví›w…¨`[”·nX eÎOVŒC!ï ýê!p²>pGpNŠv)…êjïZ„õãî³MЍ«©N“Ĩ…0†—èζÀG>•áú`Ý#í¼MÌÙ:e¯îêL~ÎÚGYÅ{%ZÛŽ‰I—ž‰ÏídŒ2]WZ§FÉiî%ŠíËÞCî ïãÙŽ·°ÐPs¹†€ÖÛVà çL8‘î«Ö¨‰¤Ui IlÆ*u»}Ä5²u eÀÆ%̱]ˆ1&ÛÆõÄr g_õšJϘk[×pà%?\5P±E“¤ŒÚØõq…EU:¨Rîf±kSlXjG•?v‘:\'X6dÁW³Wua BpJˆà=ô¿ K¹‘ú»´m…«Õ‰¹ ê³@°“}ðÝÏKÐtnÞrúÆFÛ˱•‡)óšá˜îýaK›ê’(žjã˜uW;€ ã&û–îs úÑg‚?o;QqJAtˆ ÑÁöë%s*0álÓu¡LÃÅÕ7èäÏ¥Wt­Þ#]`1Î×DsƒûÄÊûÓЇ­8x‘Sz“ýQ.E¸÷VZE»ŽñÛ Ì¬¸  Õ»‘¶‹Ì ÞëÂû+Kƒj‡`ã+ŒßãbHÛ+Ø›ç'«V þ!CþWùÙÀ¦²tÌ!|o<‘ö_‹VÀ„¡'Ó Ñf²€3dr–=âà—J¼]Í| y|Ž-î(×>`ÝI‹‹`¼†H’úž#þ¢¯…}í÷a©MjÄéß#r?º´õß=Ý‹ŠßýsÀ÷’ɫωХAµDBÌó!ƒAÚëØ»ˆ ËuÏIÀ)HÚN‚>ÊÃ-ÐN¢Ì¢}€×qù"/îäç2 zO¿>ÜÏfZô¿7u¢µ 2©àÙoÔ&ŠJ’ d:×Q¥1k£'.`‘aïaÐ[U*3‰”p*dS€_!ÚC)|eåDçÞ@ÌdžÓZ ¶ÔøÏn (ù°h9”ƒçî€FR‰^¹›P‰Eail…kÑYÜÛÉùGʹu]°3P¥S°ö$®ècå$’KnwƒY‰ÿéý™–Ãäï^D¥÷¯¢ç·Ê‘¸Â\©Î­¹,:˜ `Óȶ=9§ñ@Jû'”¢ˆÓ±UîóråÉYeN»É RH%Âx¥\$`2cäöÆ-ÛqÔåw¹%\wûæ,ä:ÓKìVƒN)—ˆeìßOÈgæ±Âø L+¾äP¯šlÙ¢ûîÝk¾«‚A\  ¡EFìÆ‘E1ô_Õ!ÖÝüÁ …é&Ð~Æxþvž¦¤oqÂØÏ=³'Ù¼dÊ×Èiš2F}1«ä§³óµ©öž^¶?[ÿþÂý÷ £FèO`+§r•2Ôa(l=³çæs5ê6Z¡.ØH…Dôàùð=ÑÞÂ®ŠØmí÷{¯ðq¬»ÿk“ Ö9§öPÜ£Þë\¤Bï¯Ý¬×Í?¿mR¯Î¦‚³â¼ïáí®ü V"Ü¢]ÒÜ`ë÷ÖÚ}:=‡‘ò঩Šnªêß»ªBÆ_w:Õj.—Ï'9w~§{Êõ÷fRIgÌS$ð{Ýj‡'›ÅdÔk¹*OF™DœÏõ¤RȤb!÷ޢ緦Ä ®ái3Š#/8ãÍ^vÎf’ÿ|Ÿ¸ >óÂiìZUW9gþ\Syys½,©Ú8 À(W¨P[ºW¾Gžüpsè1l Éy7m¶°‚³çwcýyTXdëV\AĈÜF"T¡‚‰m[MB‚°£àë”×|ú® ^ïcÔæ »r¼Ä2wÕmQs»-Ý*“’ú§1Ky×(=M?k¤çuÐÓÊzbx^ñЗcÁ‘qš= qg³PÏ맸¸R·£ÆŽ›Áç;½ÑU±bå‘l–Œq‘99f¶•[:èÀÁÙ`p¹-ô3{N¡¬9ˆ—^€%~CÙUú!#ì^Ýê\¥ì˜vUÌj½‚Ъ$¡M€–œ»N¢åi‰+Zy±âµØ¼ÈX “ž‚ ZºÝéC¥_o¡Ò(Ç£ìqßÒìc»“ú’;Ý9ÝÛY¯«¬A«'Ù‰ùÝA2#yòˆÄB–Vû’ËcX‡ +¨ ñ‘Â9àEòª‚PCrú¨ˆp,)ŠùI¤ mC^üñ'f‘»*^Á‡ÌˆDûz³$œEh„¢! R¤Ÿ½aSsñ5È4<ê¤oH8xŇzÜ£ü{1’eŠ·)údÜÇÓÚQ…ð¬ÏëÀˆ¹fZï…scœ…e:œUfë 8K…;Hf}Bµq‡@‹@­?ÿ~·ÏÏÛÅÆ Üí¡~ò"Ÿr(үșV¿id-µ$w1K€ÛXt/™ž41g¹2ª*¨_„ÈÏÆkþ «‹|ʤHOðø"ôþ_å&¥ ÈlR¢Ì³dëKþžõýR¥Þ""=ȺÞ£Ò÷ƒ6Ò;=ÂIKª/’Ƒߓ†AŠ7_­‰MýPç~¥}'p&‰ƒ¡ÍuyïãîX‰8hânpþXKqHR®JVˆõB ΈmƒÂ'Ç…ž[Tt;u0ßyÂunÕTƒH+†Ã8»–Æò¸ñ<IPK¬+ÞP´ÉD'v·˜œ)²¤û;+š¶°<õ˜…Äh™KU&@ ,.sv»J“—mcÞ‚q^˜Räîú«‘ªU&ñ;*·à<‰&zc¸ÞÃÒ0Œ@|‰`änÄà‚·“äÜU‡eÊú|Jõâj*óvìy®rÊÛíº¯¶é×OÖ üÒ÷ÀPÁ<ž qk³¯n.s«Éä6Éå¿ø|Õã‚”õ4ÝX*ì/Ga 5t”„Å9ïpå&`zºz³ƒ"O“B]i—……Ëü“AÀ8 –ÝÉ+ò›À[ÊM¬ Pƒ¾èpo4¢šö»¼/´hžÎsÐÛAæ"Ï= I¬?ýÚRž‹þs¸ÖÁ¨-îY+þÙ½ØA¸b»ßötÑq"Ø’ê…‘ƒdéq,s@ ;OÆç…¼½ûo1è‚ZH {Äö25Qx7$”ìÊFɶ¸ß:èpM5BÜniš¿+•À|tÅapúOŽ ±d¢ÎÃU‚ ´—fLuÏ\óë4o7‡Å ÑHŽv€Ï>ÇÀ~NyÌ]§Cÿ¸œ ­þºbê]½Ö?ÂÓ6ã=ËbºD¿ØN¨«Ñ#U9ãƒ|«{¦Þ$%ÏnäÞ¼g²Øýwù3„ÛRËKªA•Vq¶/–#š$üäøÉeÿ'ô]¢,ÝñïÓV4S»w„¦¡1ñt"™YrzNO«ë’" ¬œ:ßµ4ï9IŽ=9&Ž´ ¿ð€w.l®-9Ȩ͹ÿ°ïŽZw¸w-ËV.O^ÏÏ—óÇåÃhÅXB÷ìWt`Éq€iÅE^úø– sÜçóé~U6{˜Ñ}A·¹Ó»¥Ñyñõi…ª%¡“ÔšA.L.@Qˆ*0ج¼¶\`pú¶b» _mëmË~À€’—›‡t¸—ì~W¶·(Ö9‹ºàR-”“I ‚˜ŠWuø¾XM…kÙÜÕìÀò ?v”$À *€™f†›öþŒùáÅð `šŠë’ÔoL%P¢ÌÇÅ‡Ü‡Ô 3åAŒö˜ËÞ®Â.1h±`ñZ«°Umîè!çÆ~gdJì: ñ DOØh ‰‡!¢Ý9Hm÷¢„ß(¤ óËäRæŽÌa(rJea¨É1ÙäJ¬Ý¢ ‘Rr èàÀà*˜²†ñ~ÌuÌûœ¼<–úKè<29Gƒ÷#Sõß’äç“ޒªÞÄ9©=x 8#ê •ó&rŠÚìsñúgCµ¬Ñô¢'¥”‚´%'ë ¢^óŸk †Šæ¼²€T}á°´"BÄèÛD¾+\½)D60¥B‰5âÍ(œœ—øvP$}Ú jªMâªÑDòE¦Z¡%þoжØaj?!9«)Š*Y–1(ýÖ°o¹Íygšª¸%MýWHÀÃÔ®5i¡(¼Eø¹¤ a¯²¹“‘~MÂ˦Ԃ¥-/`xŸ²u7ˆq†¬?ʾ­ÅmzÉF¾…%ÿÂ0Z°+5F;„•¢øh`n¡`æh ÜNõû˜Y€×!üœjäD¬íá·d>J­S1¥nMöHd´½ŸIÏàF’ý;o–ÓØr<ñt×mÌsIô$—U3¸õ…À™ƒ’ˆ'_<܈»ê>vå™^K6wqµã#J„‘PçÔdÚ‰¯·‡[2T³Þ¸Û.¹¿ïžýS6T5 EG®M¨Ý‚z°,S¾8±à—qÙ@d<«êC¼€R€ðgÙè% ÉÕ¦o…£27¹GÁj÷-~~É6;b¥ŸáY©Á~† ²ô»£7Í{‡$°yÉäIñ°ZMÂ'g½ÿ`¡}ÆŒÆÛ‡p‰€OpX¬©S8¼»1ZØ2 µ#3 „QhàÍ:¼†…¹dc26Uª)3t8¼|p`!¬‘ßd½†)&îg®ÀPÚa/UaM‹ñNâXþ‹–þÉNyo ‚ö y`œN,Šz”,×êi˜þ*Õa –Ðn-l#ŒS@ Z»iÐA”zÄ,b5&PÔfut0¸š&»ýêäªÈMûÅäséó$‹ %GbÒ|¹ š·®ƒ&\ð£fU¶Iâ£X <ŠàëðnNÄ-”¦û¸ˆ·Œ—­æÏ&)œ@‚™]˜²Óì°\J˜ËϨô‹©µÆÃú4l~:l^mÝÁé™ÿÜ8¼7\ÈÜaªC^ pOÆ!ÚªˆGUf Rþ +¹êÉ‹Ïìå«…éu¿×ySmÎëeúHº‹§,â_u1 —C¥Æ˜ˆ^°”+–õŽŽ>V]“rgà‚‡&ð¤ÕÁ Œ»–ëÎÖ1@!¸ö„ïÞ¹»!X„Dz¤jÁ íTÏ-L¨%?“¡8*®|Ð:+ šÓ÷b®ÌNzuÒ’.e{hÊêÌyxzÄhíªVE!†T½2«ãh)Â+§hRâ;@Û¸ûAÄÌGq×WÈF·ám|¿NUОõ\™ƒŽ¢7ð €ÜDñœæÚ ôý!Jh1Iƒ´¢‹ÔKñÒ´!Þš]sÔ[SjÇ©ßL#‡uï%&··ë=¾À‹…±ÆJvñÅtºCÅ©Ç`tÈ`F"49Ü\>N‰Lfó¬Ð7eku®ÊÌgÒá~Z…Âý*¿}¹ÿ¹âKt:­)oÕíð3í\a9#<£Ô6}(Ù Tg¹>Cég4ÒþvÍ®3ºPNIp>U{IÊ®šæ/°\߬°“½òv!4A*j<âúzhÙ0733H®­çûZ•¿TbnÂÇR…üý­,¾~hºX'<ŽƒÕŵ¼FÔ>r»ö!]€ùáx„ë7Œd9Ê—7… Ð·Ì%êÂ?pˆ¡'Ñ3|©Š32§mÉÕ¸·r¬{ðñã9ò…Ò{žíd§Ó˜ŽiùëþK }`ï÷×Ìü𬼩kYÁ;ÞuÛ¬ÛQF(¡Hrñ/,d䱟³Æ2Ð#ph)Lé<æD©]Øæ8–7ðㄟãІÀÆÝlïoÁp!¿zkÒfm[§ãúaóPWe‘DVk·ÉcãŠ;nóIó*V/аÜû¡m=©(ïâšo”îàÅuï:@ë5<3}µº÷X½Ôý$¾ 湎¦Š'ë¡ahÓI‰$UØÁaˆ³¯að sÜ"H×{ÏîÌуbo|Ð@ØlµÃÚy#®ÔCµoÔŒ Dzó;îÆ0¸»d³¿ÚòÊ=ܦãç¶©Wˆë¯7g}€£ |¾Þ6«e‘y;+œ´âáß”àŸ—·¨{ô`ƒ0= ½ —° ãTÙÐÚ‡:¨ãÑ!mÜúr{›ËòšÙªÍ|qò6ãÂ>ì)#í%À/,³V°¡³E¦°*2„,69¶õ4««zÅŸqZ6p µ÷„Ü5½6å’{}ózÎÒãxóòùÛå©Öy”HçlŽ ^Ì!ʧ4g»ãåÿÜÍW.ц~µœÊ @úOkç¥; ªäÐ^$urQì”,îÁ*ï¤ó«ãº *‡=¡Çs¼ø…%^XÈiM»Aƒ9JµÌDÏÖÅèTúˆ/ÖôI¦·ë; lÊ3p¤q™ÓäÐ_¿¤Ë­ÑZÙ§5^ËaÁ€ÉŠ‘´„°Ë/A«ëù­”{ò²ÞC“k›çg&À(äcàŸçë+T††à¾kÚ¦e‡Ûò³„3\“š+˜à‘]²dæ¯É QÖ°‚w,.Xý¯á§Ÿ–º¤°—~ÿt½›óSé0¾¨ÀPFFÊ›D‰Iá4Юo=¾Š†`·ýüëïåÂy‡®y/ Ì£_=÷•œ¶M&iÖ”»{¯–ÞbmeŽ– Q·Ö;£·i# [ò¯7âÓ¬’®| E=o‘'&5÷ZdýºÍsìª×ô5ñõøBn÷ßbÛ¼JȾóv›ÕøŠUµj3ÚÖÊÓ¡W½<§·äëc½ñ?>ûÅ6lÜý`MfÛ©ÍäŽò)1‡ÕT(pKÚQÙÉYþÇ%‘M‹¤,«–+MöT—AÝëé‰Aû3óH0EŸuFkZË&ÕO„ô>. ¢aM-ä#…ôðÔHÞΩ²ëíº–j^ý¡£Ñ8#Ö:ïµúÁŠØùHÂ±š»…­;ÃåHýþG}Ù•]k±1`Ä}1ÄÏä;*½Ä³…|—²DíºµºSR£aOV’¸Û¬Ílÿ–!.¥å›~jOë ‡*Ñ¥t›ÖÑî…÷ªP.ôó¼[°‰ÈŽ-tÔu> &|N¤yh¶EÓ;ËvÝáû„éïúx¹þ¢Ûõr¿Úg‰ïšºP‹õà B NF"v÷Þ^0êÔ T¢ûÚÜ©P\´1Ý@› ˜Û“<ô̧µ,c ‰ï×­ÔÂ9+ÄÒ6Œ~‡·¼#¶Ò-8|vGî ‹—SW‡\|üLÆÍ᫺?o×M™Ç¡µ·÷OÚZ(6^|·®“l¹¬íP^ÂÕ¿%”—A¬–-gžÂ²+NÈ*ø%»O2Y…îoó2Ó•7½Ã¥Õjp¸]rK¡D¤ês™Ýw§9§íôâî}맘§Þ­ ²VÛœåSܯY¦µ¾Œpµµó¦IšÖMй¸Ë‘óðCÌœ!‹Ü3a²a‚vü!Fϸñþe\†¾‘›¹ÈÏuJïðy¶Â)2ï¾6§ÌÌʬ1°ÀŠ_ä~š LåJΤ…‡I¹4žÃ «"\GkË)¸'ièJ^mMÉépUdÞý½‡¨[ÛC)|êp|ãÒ"N§pÌnÊ‹Œ§`Ý2Ú°5uÁý|ˆ!‘¹¥’§a(EæÝÏá+„MÔX†ˆÁS…|`ó»ZVôk:€Vq&­$\a=&äfÍÿ…‹º²­Ý¦º­oãÐ*í2'ëënfÝk¹i—¶=×ñÇìÔër.ÓrùüA ¿¬ò"õqyL"«²«ÜJ›ÿdÁÒlÍëÝ™`‹å!3úŸ6¤"÷ä©gV]ÎGacîd.;­Z>î£pJm›ˆX|€»ëöý}nï×÷Eæ5~óDMyÊ‘(gÊ¿>Ésg‡´?LM¸gVÌ-0•À9Wx >µ[ɱ>± ›b[Ù7=ߢí/€³3Ó›(²2^/7>_Î_/ߣ*èÌfŠðJwù‘´-ï p×Ó{QÙ>Gk•(r:²ÑøÛ/)ŒÆu |㉠£¾ƒìÂó×mÑY)á¼Ô]=87ÙõŠ8k¿³2AÅpÇ'ø™aÖ”FføTsir¬ ùº{DuÜ÷M™âö­Ùé^ÔrkX´ÚóÖÆ>ú«S8†r¸Jä2£÷ßo§ñeË“=‹í5>ß>S5†^|ú޹´l À]-0QáTÏ`jÔ& ‰éí-ƒOaÈL5î§XVÉÒŸ¶Õa5Ön3Ð’Bœõ¡=4ýçÞa-—•ùHO€«îé¨ ˆŽ„ƒI‡XXBà‡kÅÑvñŒ‰ K€È>ÈçÑê ÿËp,€w!lÛ¦öpºiÏÝÙ¨Ú6Ö›©?Ó¢Þ£ªÇTh³UýH-FÈö¡Û4SˆZ8Œj(×-ÜC_LK,›-HFDò"èYô…,¶‡)NÀm ®C%Òl™°'—Š•H=%.ý/$-†Q–ñ(N=Ê1ª#ºMbSúϱ#ëú¨ô¡ö’ uaµZàcÜ›¹Ÿ‘ò&Ð Ï6Ðíù°p‚IÝdfZjº6ñ¦ûöülÏ(Þ÷Ðú *2Dãj©¸-óŠ¡”4o*t«bUšûiݘÜIEÎÈáTYª0ç”Þ$Ûþf‹&©/δak-=e¦Úž]ËpAÁ„çm,`ûlIsͱí Û\­i˶Vˆ0\ š\,Ä3€Æ}ímóÖÚX‰™=Ö£‰TŽh@ŠQ¤Y}¢Ø'a¥Ïó‚_<is´²M¾ì²ª!¬ñ¯MÀ¬<çN"êæäuÑgñ©t^øe¾Sr¶´A8ñ£$tT5˜`D*º<ß7±&Þ‹lýR Û¤ÙÍñâÆSLn’\‚V;+-J»=´0ÍýÐLjv‚D#Ú6<¬Ô†La´MQ|dXÔ6û— ñ< B¡ý³[¡j²‚g¦wáàVàºÔà­Ì¥’Ãk—_Ž£U*œ&1T9+,«C£i¾J—8Ip£ƒ.4µD‚ V´foˆ< ç•&”Jä«i&«Îdmíu¨Ë‚t¶ñGtú¤ª#cùê35€Ø»±9¢…záóX{²#ÛTf’AÏÖ*ùC ·¤vˆÍ»ü=NMZ›Ìt-®ßÁIEŽ9Éú '”÷”>44ŽªìæRÉ[8çÁ­O„´Â nÜ}pâ´„°¥´L4'-’¼Eß;m»Áɶ}é^ª"æDÔãcÞð’ªp¡i@¿¯³"î‘å0ì×Ã'7ßï®çþuxUÛ›íÚ)£¸ÆÕbÜ9nJ"4ËÕ!ÖèÝ®l0¡åVË6—…l¼h±»NräÌu‚*ó¸2™ÈƒQgzµ*Þ6y39ä2„å÷øtÛ&êLl{#c¥ÇmBG5B¬»‚¸Ætù0 .WP,1¼d.¥É['iÉù9è ¢V`i1åÈhÐè  ¼„G]›ÂGÅV~§¦¹¦~imÚÛ¡¸°#“32M·¶ô¯jŒOMª×Ó~ê-´#SΩ@•6o2$TµôZ%йsmóæcu›¦Å+¾‚´ået [¸m7‚B´#Ïw5ÿŒw‚Sºˆ–Ôu'ñÓÇ?Œ´"¯›©ÜÂt‘yy‡שéî}B4ñ4l2"ùqÃSŽP”ÃDGÔïw|)sV%ÞÔ¡{¨kŒØœ‹H>.¸ ƒRdÞ\8à¸SÕU³qcbX2ÅeÉâ N<õ šöª¬6îú#Müû&††{©Äçm`j#P©¸•M!˜pòøRÒL—òUƒòV—¤à÷%ú©Á! \Ó¤íŠ^×B¡6ôB®ÅEŸ4õ"EOrµ6nD&Þ ,!žrÕŽ4ÒÇ »r–C²p¾B–%EÁ¢÷ ’€\Lã°¢ÛW€Ïë¸ PÁóyXÏ*eRRˆÁa"ŽšÔ¡heÂý°@«â^Þí” [Íj¬9m "oû‘ž±Ü«ÁßKc0=M{Žo„ýd£¥¦[û_®#H .‘Nu$öòœÓ‘d%¹Œö/€7#î¥DdÊ< ZY™Pæi¦ÿûr¾ˆùq|ûüeî;ñ&ߊŒ7qƒÂq+ŸQÔݵB”'#}âc,åïíÉ(Mµ4•„ðý/Lj”dùÁÕOl×Ëc×yú0òƒǹ'CTÞ0Ž4^òXß{ªÙtZÈ™h‚è}Þôþ®öp÷öýy»Îÿb®ª¾îm‘¶«TÃdsÇ¡7ÞŠKúÈ.Ýp¿zß0°}åR’mð°çÌbU×ÐN%öÑÿòñqŠ:>º¨.hi=÷4wÝ¿]o¯?Ç_ð¿ñh¿{c¨S^ó7iŸ³³C_÷ÊñyêÚæ)žyª“÷•¢ ßL§• ¿ˆn×}œúèo97¬ujÒˆšüáßÅ»˜ÙïÐüâê'™ØÃP@%ƒÍb•ÝÝ@ÑKå/KÛï¹g¤ÆæðûÜ žXâ;=e4ýxSH`µéoçfeRêr-¼„£yÅ`ÕØÝßî‚‘TùѧmwqzÓE¤²Œ;m ýQX²¨³|=˜fQµõ…·•ÊÉx›-ÍaY|`Á 3žßñìà†82=#ˆõQêòd\¢Æs4è“l_ÖqëÆÆÞœó}´,ó¢²$2È”ŒÔ'ê^xÙx²:4?i ˜èœ+‚¾¶K¼qP]á ë/³Ý¯c…ñ´°¦ ¼†7A!¢…µÍÆ« ÷3Kò:Ü¿S)ÛâÎ(T£à”ÙñãôÑQÆ6ê’ÓJòpGñ¦2µ»‡Ÿ´/4C­Eá@”ꟈ©1¾Ž†÷>ÊŒS‘Z½ÔsN_…¦—–€ý¶"E¾(\^3ÊÂU.¦ÔãÂÏ…ˆEm>èFN-€ ›Û9KÜêÆÂoŸÏ†ä>¸noîºÌ)¿Š> þl!øA,õ,ØöCíL`8K~Ú²ô¨ë¯GÓXøúóþ4MGxþ!¨ä ±Ö¼’lP8×Üöÿa…ÚµÿiNБ‘ѯïk˜Ýþå#|Ø?4O×ï·ïº‹Ûlÿyãè$Z 3™­`P¨šÔ ¿ßt«vÔuo†ŒAÚ3"ÝÅC›Sòد™çŒ[¦ŽÕÖEˆP`Ôäd0´ß+,EgÅ(G­"ñÓä…òÙ[SQœð– ”“¨”š‹º¡hô?zìIY÷ÍÝó/-$çöµ{5󧆢þ-¯s1È¥ô‹ˆmN^O¿ûqŸ‹ó%¸ ­, N1±+¹gr(“ž‘^ˆr´>rÌÑîsP{HK'{L@óá•D8ÕeX2¼¤?Ø‚¾Æ `³¯"Wƒ© ZÚÁÉ[házÜcàâËQg( ‚Ò€zøÆñ\øÌÂóMþ wëv^ëûÜc‰˜ 8æëÞ<„‹¥C„B'΢/Á°Çr[WQàà_/")ïEB ^âö Q7¼Ù2qÔ½œªí“¥¼7¦<ãÙÈ5S€w0lvB†;OgoR yèY8)ÅðYÂ#РÂOy;ÚÅÚòή²›%/Ç$CÓÑ&1¢ÑVcJjL™wÜsæ[|=²ì«>OYÁ /SjòûÔÖY$"³r§\9ûò'΋DŒ^'¥ÌÁ}o-( •ùJŽ­õhaÒH‡i³{ŠØWÙY=üqhÞg¿ò0,<Ú8H~@GÜvºÔcÈØ±µËב²—âbÄc~T:ÞÅà9\$BY®0ÝèÇ]v$¦ÇϺTU(Vhz)Oì|V…Á@‡æSÓÃ¥Fu®él„øU¦2Òi– :>—gý]¼B\y{‚¥ír7ù€¬)TÒ%JPݶ‡kUÎá ¤Î¸43ƒ¤«õµ´wÀWóÈVƒ`xç<XS ”ˆ]&ÙE<d4öÚ¿R¸6bÌW˜íèV²Éã0¨0μ9*É@WÑ‚a‚S’šu#¬¬%¾hGÔѰ;Gx„éÔ5ª‚=†éëžžÐà@È+j°p¥´¶½Øh« ÇRBÎ>ßk"Êž3o4dS‹Ã iûCîÕþ`–ivAÄѲY9è¨÷rþ!ÇKÊAsb?ëŽ]Lï2ÁâÞꡯžYh&Ž%<´˜2¼WƒOsf,šyß b1^™"m(EhžÄý5”þ(>em$ZvÅ „XÛáâ¾µš³Þ¨›¾Q Õu§öyrn»_C•ˆúÄH@±9­\("þ¹ÌTª%#cÓ³‹”k0Ý$e¹†"Â9¥õéKJ$Ih¹© —<4°½“±Kf:ôY²Z›»½—¹©>Ø:äÅ)„†µÉâ›j;.Jõ±Âù5;b@2$¾Á|OSÍš;ÒCª[K#à­ÊˆûëyxŒÛ™áÉ{•{ñ^ã _’¼'‡Zc€ÔGÜyNóåäåöM ½Íx¹fE®KrñHñ ˆ…xRÀ t¯7~S›Ô9º/‚EæêÈXVè"Ø]Ûxä˜QtìÚ²m¿bkP”MÌÂfõŽ’~kÛܤ…EÆzÞÛ=-œÎM¡My^.Òj_™|îrÆÓͨï’&È… m,ÙCí/lé¡3)×ä/_è iqÎÃÈËkI7 §WÐ{Ê1¹p¯c\MTä@4øIÞYdaÔÔŸ xWÖÝÿÚ@% øÕàÇ@6FûùÏåÙôrñ@¶ÆiÞ5,: +øÜ‹MÕì”iÞvx¥0Нª‘Fšy¢;oíÑGæù8ïľ!™ç׬7rR<—¦à¶CøSæzpçœ6/ß…Ϙ,›mi#o&‡l>D‹lÇŸÏ”íÒ4H ò– ñW´IcbÀÊ„´¬{õaÆd”•Q#RéWíMaDã™,¹ÁÂf ™‹Šð7š—Ha‰ÅvÝK›n’qþªV‘Úì¨Q•Û¦6r²Ø©Íe“¤¢ÕË.D¢½¿ü®OT}šØû§Ïµ l†ƒ®;nÆÝ#'6o̘ Þ®@•1 )Ì#òE¯NÛ¨ikb &ÝaA+š8Ì÷ÂlÌ€É/Ä5Ñ›ù)¢ 0"9_$~€ +|Çd…ì"ä–JÿxŒzµ$ø`p L]ž E·BÓzË0yÄ/ñl¬ÀÝÐHäͯĬïr‘Þ²-V(®ŽCç#;Úqô Χ&­G®Q]І«ÎÉ¥’«ÀØ“DÙî MžI( B&3ÐB\;Û#w¸)Ÿe-KëK2º)ÎDáþVý›iU|ñxy‰o_pØNàŸ‡Íì°ƒ­9—…†i‡/=_ÉΚWÝ+€,%òŒŸãs(ÃT= Ákµd÷Æ ¡ïä¼ÁŃšñ¡SƒâåÚÆÇ¿¿¸®t°O”ŸWšô#ÖÄ„K¯¡Ì̦ŽM÷Þ<Çv9wÒï|ççÛÉо+| úà ÙViäj^’çúiB‹‰æ?‚cÖ(éSÑOÄ8¹Åýš>h Þ¹GxjðGg3ÚáLD«] I¾)3ùeCÐÇ`ÕÒ8ä6âÈÌ.Ä@äáºÐZa„IŸÛÆT¨û‘OÕT ¦ÎI6Vۺʴ…hUÏ»(0uz6ZXmÑ Ii=^p²ínýꩄ PEbð–X5E½É²¦¦…~ÊÍcàöëÓG­ÿæ= ÂO¡RÍSôŽÀÖñÆœêEþH10ÏWXƒÜcóh˜Ñ;¯„¹Éí£§–ko'5µ¶ðަ"p"°kâãQUÁF>† 8Xy8·m“Æ“çP~%c´ÖÆo jIóå ‹*xj:ÅÄ´h¦€Všzßî{hF$in¬s”zü£îÅïµJVd[¾2¡%­w3ÅKUALlBàb,D)Ŭr-Æ€V¢ú@ä(½IÀ Lv±†˜üXYú¼ÉÉÙxßß.ýÛðFLß¶¬ôtN¤…ºÎçÑ/ýËxþã¼óóä¾[B­>±i‡¨ÙøNåV›;éÐi%äâ}«J©Ð¡)v]—°S>Ë^˜jNÂõÑŠÒò2’¡C q–Ùã·‘.Qr Ë,xê¼Y@/_?N¤ Ü PÅMç "\©0Îê‡ÜÛw¶žšÉ6açF!*Í Ð#Ðøê-¢LÍ?fÜ`ÎY‡µýtŠ –ÎÓBYt’f|QôÕ$±\Jqo‘hâÎ:í|Ù¸ðÏÙ<¢ÊÉZ¡`ihzXYØü+¨7žžþÛ/H@ÀÜ.%FjÇ:ë1¿–æã#Qöbo"?䌾dœ?K<D½œ@­(¨·Ê˜ÅR?[A‹Üj§=² ÿ”%´l€ÖGì=™Äjð*p÷Þ\Ï’²ßDfšóí^ÿÚ€¿%{¸z¼ürý¥2›´š„bîyF†¼eÛ8þAž\?Þ-»œdÅžïñDyud<99 ‡îî…ûóÉ@#fãV2ÅâÄ#\[›ƨçÜ?ÔOó*îññú€'çÒôX<ÆSæÚwžfr¨Hãð3³Ý¸h# ˆC”‰ÖÂlþ¦ÃR7ßéyŒŸ½€Î*ã<qz4=çgkÌÅaÔ˜ÛTî‹»ô@SøAlõçOQkX@<âân@!ô\µÑœ?=¸“ѳd³ºjkµ8oWV^vïx“Ë Á·NYº4Æ…ËðŽäów»ßáyõx=35·„Bðjí¼96¦7q» ý…&Ê¡â½×:~š„€—TìÈA é&ͼè òNÏMlÿD\BÊxB_káŠÉOÌ!yûåÇ·˜òOƒ¸-¸„5|>ÊÃÌÆ ÆE»žêªÇQùÆÀF '(#ëkU¼ˆÍ´pgwÚ`K0ŽÙ¯‰çæN)dÄr>ðÛ R±|'Ô©ªTÃhQΦ:ÈûðÈ£{uA®ö}†"кèµ%W‘&q‡–UÈ];è&°io./¤cqòÎf>ªF˜yÆ~É\€­ªÅ+l¥‰W&sÕ'›åpÄ$Õ²·²ùÈ:3Ø~á”åö]ôfh×K†ÙE÷—ÝÅXö†ÀŸ!fý†¡ÅÝŠ‰g KÈ„t«#N%™³ÝÍiàA®cª»l" ßæ<=¿^N¤ærž”üex†î^~0í3¡[ϺkXˈÉß,ÈóƒÜBŠWH*w˜wÉ€ºÐFj»5ñ¼Z°äÓ˜§»qÅ+,lͯ1/î?Λ9''{Fx6k:#îÞ#Zøû°uá[7|Û6çâÎ!±ÙõÄVO+12í+µ>£Äµ\¢*K°HäÌ7 ãô‘_­ê:tµàH%2‘1Á»J(æE ¸ðºóÉônâÙfíÝ !:Ð?œãŒ’B]U#9”‚ÕæjfQÒ\;fÐlP¶©œÙ8p¶‹ õ‰O¸€ÃÉ?zÊm3‚× qõ AE³±1#ƒ¼V­s%pϵ" zyˆa¢C&öž?&À³y€0®«aý¯-žryÎ ßO Ó@Ì4ÎΔìGâ¹úgj××Ãô“CRJêß· mñA}{ ,ë³pàd ŸÃUD‘˜¼‘áÙ?ÜM}yÕ{'°Pµ:ý%(Î#4,zûɋцHO‰ŠCëcf¸^Qù~ñ.i¢—ãÐi.xLY›ŒOÅ ˜.£ 5…F(r6Y¡# mfs–çWᢠ×n¡×Ù Yy=z¬ˆ¤éΔeµnö1ž“b ±‹J¨û›Äk-mIó)²•N޳o=@`ˆÑ&DE‰âÀ@ÃŒ7Š>gº´ ÿuüb[_T‹ž­ÂÂ\¸ù”C ³ÙüM•7…0adË¿6 ¢Ši™º®Ç,oâM`ù“qù?y¾oCV@òo ¶H'î®ÌLU™8á0ˆ*z^á{9~ÊèŒþù:´Á©Ó”m®ˆ‡‰õ-Ôe¹O²9ùU¥(@ÜPâM@˜¤í¿¨é®BÁâýI)Ûÿ‡Ö×ùÓ±CëïÄ76#Ál‘s»i¦HK„ò§£aB#‡Ÿ3°—Q ‹Ñ9´yn¥le†Ëbô ±ÆÛ8Ôƒ=ݘsȯ¨·l¯&$›ÏýM{ZÇ‹ãÏÑ"Lߺð}޾2ÈEF5ܱYc>‹&þþ®ZF• ú‰>µmî¦~ÐÃù|÷;—öýsxz[m}_zì1¿_ôA<å”ÑV)ê}ž„CíÐ’£{6j{ Vâ…`ÍþƒèWÄnÜØáDÏð¥¡ð‰•h»ô„k§ý±¥¨ 8ä/2܃-©‚ª ŒòV¡’á×éî\ʼ‹ø ¹H§ [ÁÀãÐðYþà·à®Ê¡œç3«Ñ¡í芞>‘ó‚Nߥ¨ÄüwR¡Ra›`8¸¡KóõŠ(TpÌP½Ê[6i ¿Íæª2&|¯P( +ÛÁs,ç0ÂÑsé%ò²´sòE=B¢,ÓD{‚2óm5ñisã/ ® °¡é$cBã „s¹[àyÿL—ï×ï‚úŽqäóüÂ(®F›³àD6é£Â‡†9-K\ñ”{¤Ñ—èÁjˆËüWQYZ€êRY«ô›¾4•©QzÍvª,³•o³ƒÆ–¥ÏÐä†åy?ê{õþõtO¤òvXÄÑÑÐTÂv¼‰„h,Üü\«­È’Õ}¤E™»‡[*™.Y¬ž e%˜äáY¥k7u·[TФ÷sV™&i-Fµ¼¶R@w4¶JT Þ9ä¦ÕŠl^ÖrB‚wõLÍ’í´ÑƒUÌ_þ” >T¼’‡¦ÀÌ‹­2uä¼G°wŠÞpâÆØ›¦ªÈ™†ý¯¡zmŽ A«`Ïl'·°2§ mnÜÿ5b˜\IG‘è*Ì¢«Ûlç~ZÊ]¶Wè-ó ž‚'z§zŽ+äh2ÿó:m²†í`‰0Ìü¯xTÛ5ØãS «BžøÇ¹¶¥®4ÛɽU™c!¬AŽR:£B²BHo+avÙÆŠò€K¡yE·aPäÚJª_²¿Ò‘k¹:Z«€a}ˆ NÜz$Ÿ®éWöÀ¡r°…R¼Hö2äX;f;+µBtª7ØËŠm¶è…kcÕñ€âÂǪç¨2îþÄ ã!Ì¡|§Jjã“Cd$«´¿0@®ýÙäåj¦Ë kéà”¬Ó“)I±õÊ¿xîÀÇ8Mê›që—«èz’éQ(€‡e¨r ¾àûÏ$8ªcæc»ÓþØç½fðÁM³šÁñv9PušížËÏ©y؆p¼)Tb8ý½\§L>Ó1ð˜ŠzþWÌpí¨éÚPZ‹ÆáÙúÄÏk+1Ð ,ÆødÏ8÷3AX¥²›Û8üØK–¦{U>;õX(Ó3¥5T½®c’±ù·ùJ H –“ŽGŽ'*‹ ­ :s®àÑ›Á1b¾}kÉU|}îòg2U&«Œ×ý‘tö÷’` V™·a CÌ;ÆQÐ ;Æ-ˆ€€QŠ!U{"hË4ؾ˜ ¹j ²³–„¬î»úi /gõ ØÓP`:EÞe6É*%ä9¬P3„³q.•«‚ï,‹nù³‚ФÛ5j|Gxi¬”6ŸËÚ%)Ñc·Õ“B5 Œ˜“ÄÀôSe©d{mÜ_Óº*âSrò W\W;V¯ýŒ4 Sþqµói‚ê ‘¥rºÆl=Hk«‰·IwL‰~ÌUZuÕ¨.ëj¹8îrRšà¾àyš˜¦ºiìïF";ƒs‡JÆI3Ì¥íŠ/Ó=¨¥6‡&jë«¿´÷Tÿ( z!ê”Ë<éS,5ñæÊ¡yå¡-Sö‹6²³Nædb2f¿¾Iô‡Snë·ÝoZ†ðVd鸀>¡“i(Bœ?‰kA¥U9Eäm3·±ÉÊ|9¿ ܨõ¶•=µ¯úçbÿ°“[柋üÛpðÎGg0Ï_<@! | OÒ¾,*ÙlýqŒ\w¹ÓÏí¢Æ^µápØMÛìÚ8Cª×âq üÒòÝÈ“³ëÇící3­GA3Ç/•Y¤n;ö0ì1£àúÁ)L¡SIk#á1$ÜßblÓE2x5‰¾€3_^ßáoëþÓsVN°Íϳh¿c£ÌáäùúJ³¡„a({¨ð‚å¯}ý7õJÃÕ )7‹þ U`ÜßüW6¨1†Nh·_W£E’6·Ýç‡úé9Èx@¥}zÕø6«>ièËôŠR[~Êš;ÿ°œ™‡äþJ›/ëΈAÙ'1WÝ?OÆA/U…ëp˜&Ïùó(ß>—˜ñË¿ùju9õ(‘»q1×›Ùo¥ˆ39³ˆ.ûPiÎuûE‹†H(uK;IÄ¿„µÄTÒâKR(||{Ü=ÜýØþÊß_½;ÝÅ41šR›:^Ô7MIAˆl¦7BŒ†.#D– 9ÉKµ°ílÔƒOÂf ªŒÆJ®·Ú¨“·Ð"Šõ(àÙÎ%§¨ô^>&øÄÄhdÅ/QºŠñðÅB¢ŸÞÿ”óˆ8h€èyEÌb®BúîúþT3÷r–¨oµHG2ê ìæ®·¡ïÎÓfCz4½‹ãÔÖè ï=Ì]*WdGq³;"®{¸¿!eˆïç»uLoüÂ=N¥P ÏÓ²CB­`”¼ß|‡´ÑKµû òF–ô+Eüý%=á··1ë@éž#ñƒ_"¡Úߣbè_æÎäÕÀ*Ò’XIc`’æøêêÛçR°Ä‚Ѷš$ÅÏ×qú›<åÇ\2Iâ{9QøM|D‚S'>©ç\µˆ¦ÕLj3ü(³C ]°ì7‘>ίl«1Tø†ˆÄúÖΠ\”MkÐÌSWIB‘Ö ïxÛ)Bz‰ü2ÛÅÂ’HVµXû|ûØíBCm‘ÃiÎFà јݠ/HÆRH #4ëdµ0åËâרm ñê¥Çxê^1pÏ‹5¤ƒÿJÈH\ôT©º’XŸ56ÔTá¢ÑË@í€ú ìæ»yÙÆB‹Â¹´Å¿ˆHOX†bCuY€»z¿~¿]5“4VÄùIR£ JZ4š „83fÂææ§ªçZv:„ª$}¸ßÏ"c /9^Ås•öI­9$!só4v_¬G|ÒȤBÚ ²¼«Ç,Þ¥BeßKáádÓ_‡«Ñ¢“7hHbZ»­£`!S†ß®Å+©rÏÂÒ:é ‡ÕShZm2ÐȪœ¯Ñyš¹î[o­õ€¢”«³¤¯dtå9ôO…F1êÞªÍmÍê(iãÄek;€gUÇÌóä#gÏØu’­VS‘ò“ñ>rÞ”U86u¦ä¸N¥ŽLâÚ‹O+3+ÌíT h?€º€›Î©GÖŒÛ.S¢ WOÉ~<èÅ©å“7—qX­‰r ¸ŠYÇ3鈌“™åHÌ‚>:>%ùp9|<êØ _y ‹€©œø„W‘ª+Ÿ’ljäUÀrâ¼JéIÀì.Ô‰ò#  Ô3—>óèºö@ß7ŸOÒ5Ÿ ±®ÀxTuR1#^{$?þ8HtØý“ÿ xzCøæmBl¦#_)ðŒÒvb<ìf2LPh>ø·q£‚ˆ»yåÓŒâ´Zú °Hí.a]#º¡^Ïc£ràÆ!]ë]ˆÖ)û Ž” ”jì¤ÑÕqKžý &(×ÌHù@=Ï18'þx5æ/ó<¥–O1“ÆÙ“Ï`_ßÐ)Ö!ª ðvéÅ/FÙ… Øb?ŽÉ_–<:=OU˜ #èFgò)¿gi|lÕÖÞ3mmK°Kª›;&Ï…”·=ÉÌŠƒe óÿtŒ2cÀD§‘˜G–ìܸÄL"I¯„ùzV‹cœä"E*)¿“‡‘,Ì©¸’h ;„M´!ÂM<—n6aDƒ ÑĶõlôxIo£Ó½ÖNäÒM©‘ðŒY±šV–V=¨4¦[E©cY Ë,î9h‘5-B¥[«˜Ùéâ½b4H)¾2õ“&ЯŒ]·'-T_/9ô(#­„c)4L¤Û3üZ#rðD åÅ›©`Ñ#C¤‡¹rÌ:æ±ÊZjf²Ôq´žšï\9ñHq 1à1ìAý! ùû” |5]‚|ýÄQe,Ë ©KB²\åb-®w^Ož4ODREãFëÌ„\3™•B|lÞFä8œ–rª˜Í1Y‰?ÓhGù;o£¡j·TΗ`FÊdo§Eñ…_JˤõPjóhKÌ/þ"wâ2"ÜY?” ©®ÍgWx”‚7TBÀÕfphµ8mvàn:Äð–V€n³?<>[TÍ…åÎï’³{bÎ}}ÆãO+ßå~Ñu³äÅUœ\:»B. ù9ÏúÌ,„ q¼@ì;®øú¢ú!—T`» ´ÈÛÌo¸g†ìØ÷:z,¸<>Ó*#Yt~žw”}èO‡ˆâò8 mþ9x~ÉI8ÞK¡·ÚÀy¬;nM)òh[$ ¾Âñ5¢šŽ¨:œìÀ"‚ßÙù²„N\ø%¯o_þbõ=9›ö º¶à¢ókodšÛÇqð„•‰ªûàIh-à’(3BÃøítîÊÃq­_‡ÍÏó³oEmLݘÍE4þ¥(ïbz·/ Ï@¼&ñ±%ÏÑÎV:îã2óm‚«ey¸g*lˆI9ð3’m: ÏC„o+­á)>ᎉúžhÆhCm#jFÊ_øR4–n/¥AqÉÜJTwy³$tÍ˳” ùâ¢B .}PÕÅûÛ£GúÈ—û—è·6BУ ƒ*<Á31B †U!Ô¦6=„ïЯÚrOO“{ÏBCÿÿ„nÛ–C¡öÓ­å5‡T~Š™3yº/c; ãÍ gêÛ{â¨7B»kw ”2пáºcòFµž#ļÂr¦üy:‡Ÿ·ÚþŠY&˹íÁÔxEËNn F“@d Sü½i%4C#÷-D“-vˉ°Z7`¡Õ`²œçÑ6¼ üD&èÀÇA ÍŒùAö°Ðj0YÎóhÞ|¹K‚ÝQˆ›¬Îvˆ•‰Ô©Ì‰…Hm¾Ñœ”e.ÊÿÔ$Ã8É‘U\ãvÁDqæ¡û‘Os¹iàj®X®z„ Fñl§˜²sø.Õã7Û'#_¶üßcýÐðYRÏ$šöVy¢†%m'Ê×ï=ªk£ºŠó@¬6¨÷AU噣Št}N×É•ýSƒÉ8›p4ŠÅ&h„j»q$â ŒElI„b©Ý÷›ÉdE>µZEX&䘇)².ÐÒnÔêzì•ÖºÓa6Éq0¡À4¨*=u[•‡òy–”dçY ;Ø]•$p”´|w\Ål>u¦r¥å/ÎÚ7Œ{Œ )— ­P í¶¥±[²ƒÜÓŽ™d®ÐÊ÷-Á%°Z3Æÿæ®3ä7-ƒ{î­¡•žÕ¥Ûá^·ÏÉ>¥UÓT…© ¨œ³)=;°F»[uc'iâ‘ôôIe)‡Âë†dTZ ^UöIïä'ÒYU2«Lcžd 8ÀûÀyæŒäæ¤ë=±üÙ|w³˜~B…íøCœD°¯36Þôe»¢L,@4iƒGû@«XN°¶·¹N‡gÏ ÃŽ‚ƒ­‹¥`¤z÷E^SZMIü-ã´•Q}Â…SèV\áJ_kÛ¼î‹±Žžt¥¼fôK8&&fÖYØ3‡vbzñ7[sð0Ÿß*–ÓDkw›Ï+‘ûBz"×+ãdËêeœÝ_¸9QXMÜݧGÌýáÕ4,÷ƒß´îá&Èdù&'èÅ(Gíî*,ÉêøRDÖ{Ã+~J»$ñg0^5z‹b4ëkGy8¯‚½lgÂ/¶kﺟ µÈÅøÁý¹!`¥Æ”KÜÐQ>C[Qç¦àÎæátÿÈÐJª«‚=7ß®½3¤‰ížòbüŠÆ(Y1ÞOì>¾=„õd¦é]2æ2ÏW)Õãã«Ëœ×é¬çB‡]µ;H,#l!¢#…«GºûåfÔs—¸ÆHë_]Hft:í4‰5üFˆIaºÈ}´“º‹_hç“F^áuv' ó._nãˆe'–’o-·—Ý¥.£M¼aC6ô)Š'pÌ¥ùÊjøõÙ(ᘂfͨÈü_í>º{Ÿá¹DÛx+ª¯íæsk•œ%Pm¨v€ïùäTMõ³`Ízç–ó3:"!š0Ü 4F®ÃzÅJÔo>lJÆeSÇ\òÖQ 6lÄÉÜe×ÍJË”ú>CþX§k==×s3'<ܤ*Mc‡ð¶Ï+",øA«"uòÜ*ÜÇ÷—-t [Í|¿‡fS‡ÛTÿJhb7Ï^*;ˆŽÝt!–Á»nz"ű+Y˜j{ƒ"Óñ ,v'Ô^=1L³ñý~ ¾¸ûá|šBÀU_øQ¿T•›fÉÑ’íœú™À 3‹z_ÓRãMûÞ2?bCËS0¿ ¬¾È]~]År;ÖÃOê°†2M IŽ]IIØZ"´†H Çj:£û> ,ÞWyއr‡daÉõ86Y’„ÈïcÇBíÆ™$ âîX„DÎlv:R:Þð,ì~¸@Hù—6¶]?OdÛæcé%8G”6Z¢J›ãØã2¿ôØû&«Î]}ï>²·ÊˆÞîЯBô5.ˆ›ñx•Ôw*Dô¢Q {§½ƒïi=ÅÉÓ/ˆ4ΤHÙͼÿiA•ƒ3¦ÐŠ T RúcûóC›E², Ù¼¡â‚ƒEférB¦<+®Ps·“'x‡Y3ÿPv©‡€M»H~›•åZðpŸ™Ü˜âõˆjâ$î\.,ˆhJÖ8Εz-#8‘À5•‹Á`3¸ÁNøðuNÔ±žÂÈù‚®~QÁ±LÖ[˜fqB„f,ì÷Ñy®gqÕ â” æwøû.Ÿ£ztd®Ç6)!F˦® hz’$6f[+侓E x'æ‡äEqñ¿–VË‘H„¡rƒo²¨Œ‹N „™±lâza ; ¿yA9qôx)t¯ñm•ñÿ+(I8Š­'-ѨòŠ(ŽãCZý öÞ@iZ–G»½ßwï¡HQ|YcpÖ7nV /r¤WÑBú*Xœ“>ÍrX ¢F¸Â2}¡w”[†“êÈfàí¸ìŰhþ09Ú-Æ9-X1§Ç±Ø%c¬/"‘$ÿoj¤-4pŸŽÃæ±™:M˜Fœ`ÏV¶ ¦ètäyž’1Ô~æ˜Ýß›iæ0K€1倾ä *P3Üæ5;r¿ÌÓ¸Njô7eͯó†¨h¶ ò·ªâ»šÂ{ReŒ9¸¥Q%ILü"Ö´÷5 mÕl¼> èÊg³Œ~~Ã'ÞÛ‹6$’éëÌpî)‡Û©äZÂÍÁ!"y#ì“ð.xû㣳±«°Þ¯ûÕÓ?}»?ÎÛ·7·b–©~SIGñÃ[¬îjr¯(N®• o*I8ŠwÙ/ ý»O€ù!£+jsõÌÞÔ¡ÇÞ.Pdb»iî^Mÿ°Ñ>ôlUÁèºî~›#ìy%©¬I‚8Ö¸ P³Ö?M|HKžñGLk¾†ÒXºAÙW0?"øpQY&«{ü"óqiCZZÅ[B!âßûèd>ݪ©b†Ñµ/øëE:l‡ú¤8— ‘¤I¸%L5’+mMwuДÜË#&¡ ;%b}ΗÖñ¯ÄÄN»¿ZÈ ðp© ¥\Õ!ŒA%"κ÷sÔŒ Vv'53÷j?ó:š¯õ¡ ×+>ÔÕÂH#f“$Ýú¦y‘ÞoJ"†2^C#êENIíñ´×¹cWIÃLDFÄ©*F+õðÅ5êO¼#ŽÈЛ‡Á¸þ«ªåÀØÒ?ϲ'¡R¯ £ˆúrÓšTš«a$y$¬gh¶Òb]µ·«o™ªÐp \åŒ:gÅMT1gõh³0@a}Ä«üÀx  8êŒ3‰£ðv¸h.ûP.îQ³ôb¶mæûÆbªÓÉK¶ß©Û;€yÐìþ8HjÀ…c`וó %²:F»s¿Üa†õ0INo4ŠŒ’΀,-˜ÔSÆbÞ!ö=b“ÈâØÉÉ­Öþ&eº×O¤v3…ƒ­/ù;·2ØBA“C/3MxçïpšÅ‚SP Cûñ±6…sèô‰‡0B÷Š0âÅŠ¬ûq=æð¹#YˆäÒdì‚£j3bõ®¡MÙ,ž‚€,¤äÔ på­E´3èCÜqù¢äS…Ä}Š?ìæ§,+`ÍÛ-EÄt©t/â$Í0A’k/x™40?ÛcŸõQÚ ¡à³¸_0_ŒŽùÖª?²wD¶¤0=YZÛÕàðF^H.ÆÒ`43à Þ“N¦+h‹Cm/Ô‘˜hwZzƒµ$øËZ™’ÇB#° 1Ø=ÇÏÛ5 eÐr¯ZШ9ÎŒëbyå/ª,A—?•@›t´e §•᪦!Œ L ¾ºª^èQàÅjPж×- PÀ2lr”€>Œ*ùÒ˜Õi"±‹¾ó샿Ôk§Ó!Dúš¸(];$È'T±ÑzE: 1EɞĖ÷a,3O˜$¡žn2S}ö¼XY@ª¦:Þæ!òüO¬Õ… @×,Â]*:÷kÕ,ðÛ5,†ÌËk‚™ày[€ho9™m¬(Šo®š…±·Tb3ØrŸÐrå6[§†WÎUÈç^¸màÐø•\˜p˜¶‘‚FÂ…ëZ5p‘Â>ÈtKŠbfŽ£hñ–ñ÷Ó;w(—Z”ó´ÞöxjÒ ZÑÑ*¹îBB€0˜‰,ng»ƒuèH™£éb†k>²Ò»‰“™WÀ~—׫³®•†ÍËb¤¼Fö[Jßh%t#ý5¸’q\˜,Ûpï-ã‰ô1A’™î<ž‘*¶è(…å/0Ql 66zƒÔÂ8OW¼r4=æ‡wÔq½éÅJX²É^_Ñ•ÐäŠBœ^’^Ø„zÜ[]ŽÕ˜ÿm -T»ð}÷V-)<½ <õ°¿_MÈ÷l3Ò:$ŒÕ`PÇS~‡ï+³Z\ˆ¡b1t±¥wçB‰gŸ#@êhÂ?&pAnõÒ,¢”+Tz;¶ÑúÓ2Þ™N·Í‹) Î+ŽÔÇGpî4ˆ´oêÍbNÀ &M†qï%Ö›pÌ0º Ù™õoœ$„HC˜í—^ñT„›W¨ ³ÞÁ¾h1íÈ"Ì6áŒÁ¯HÂôgU ØnDEœNw/ ƒþé»:È\ò.—9ƒZÎ#ÞxI.u‰Œ\_ÓÉÏnCÿDjE&…TØK£Uzz ëŠËK(²ÇoÖzŒ`D  Ë›Ñ~ä§QVQP$޹tè¼] ^;Åß‘R)Òȱ âÐr’G¥ÜáN +WX§øîAØæ/jŒÊ±bJ#Àû6NŒcñ~;§q„‰Ñ¥C¿ÖÈØÚSÁ:ƒ'…;hG ¡*¾\ÝÕ6â¸Ã–A¤81Tï–x±IÚ&½ÞöÈzIjÇãêW0ÛK"j-QÅhJWD—ôVRǵ—³º­^´¹Z¹zHÄJù©>-Y [T%Iõ“Ü€­¹ŠfNLí:Ñ€Qóbyo Ú©? Õ[¨Â²âeEú‹“%„0„^„pk,âø•Bÿ[K¶‰Þ­6j£ç€3çÎ-œ³x\®5C]£øJXŸ-+ W/é°hkLY;¯ö ãhë¿ü͑Ҙlx”J¾oDr[?Q¬$ÚÎDDüœc»–}íÏe,½vSjìÿ j: ¬oM‰£Ðòkq}·É’­+¾ñrJȪtz‚ÑLëË«Ù2T·ZüþÆÙ¥O8¡kKù¼èož’PÕ¶íÒvKEUc¼8p^Z° Ä6étÅŠèÈ‚}BžI@ Ëq jHÅ¡)Ä0£NÛµ®7²‰|•M1ÁÅžÜ ˆh‘¶¶¸µvaH¼º ¸ Ô¡‹šbCyf©ÆE§Ç£ÇòãvB§9Íj‚ª°¥ä”ßþOD>¨ÎÝCµ›/c’1ë’zÌ»Øb­Wé–×8„S§ÀpB[Q«ÀwØã» &*¶B3Iˆtº*›[ÆÀÌ"&’Þ ¥±…ù²OÑC‘µ®Ó§ ”¬"@swðíߨµ”¨4Þž«B¥cÍÒÇ_ÜFìצـ›5—z‹z ·ìÂÝ$ÉÖuǃ¦N”ÐÔ_iÍôÛ0T’ççÁr_Ò³U|w)'½Ÿ‡C:0#»ÜžÈ1Cœ§c:; ÌTdåà»ÿ4TMa{ó¡ªHYšlÉHbÊ*çÜ„M²ë`«¦¦`1ì K^ày¸Û¬P0 0Á.flç´ú7«_x®ŒyŠ$˜5ož{Þ¤ëµrám0ÃW&ùÒ'C*¢ýÓ"®ü"5c) •Œ?ævû¨Ü¥Ò7ÖW÷Ž2Oæ/î’EØ×÷0Ãê°I†Yl¢'4—–…N¢ èªJ ïä|rÎYP¡î ©!éœ^sã~4ÂùD@OZ—%ecX‰F­A¦…V©(ÎÚ\¼¹ZÍørôGr1( ÙäÈBÉ ÉVFO£N Žú€¨.2°—Ï-ä~gçË:æ†Ô ÀÿEÆ#m<æ×Øs~E0Ú#)v Š*N11H•–gîhLa™ÄÇaúô«õ£1Kº½LÛM´s,ÍÓZøö¡_³{Ø z½ÇcïàAÊ ¬ß&NSùûx¡2~YÜùC†.KPk½Ò‰C^×ÓôÏ>Hñ·á|÷¨>ÔÔŒ:±XaqÌ’[ÿV¢MÊD5ʦì7áVe.{OþTVꥎ‰è5¹Ü™ù£V#åHÅb/èíjmCüœˆ—ž=ì09b|XÝ€?êÒßüh<Å©ëyè=ݤŽý&ßè­r-Øb‚Q¬ý“鿳ˆ»ÑÖ8Œi¶_o¢ü{¡×¨«ª±ìç*e/T¡N,œ“ˆNBC¹e–ßiÖg™{'Iüâ÷bû¶øD)41VéL4Ye|9Tïl´ÅÇÚBšç‡X•{.åÒÐåöob|êY¿‰ðËÛ¤C¾¢âkÄ]Â¥†¹+äFLàçfDî—“ž +ZáîßÙ‘ýè\ºidíd Ò¦³r¤äèëøvJÄíí›+búˆQ1[¡¡­ª“IrP7}Ä·ÁžIG^²/鉰>X|.áìW™&[=:SAƒ÷‡‹qÌ•©¶ÔE+Z1?ÀM)ÊÉTÔp-gL4æÕ£CP14¼q2Û„qþðfh'‡|¡±|¥‘9u .!5œ¦& ¨ ô,ItÞ³žët˜,]X¨ Tg.éçP(ÛŸßúÈû¯–¿V¿ŽÍ ýIÈyÀ^Ï„w+~ƒc.aÂÃc‹ANîø`KŸúDéèÅ!‰7¥ÆÌ·` (l`[žF\ÛõÏ/Ö¬ûêæåÏW_££yØŸ+'è§ŠXœP`ïªÐh. j䎖+â–ÐÕ,ꩺÂreÆ´]Ŷ*‰pÖUˆÄÕã Æ¬~×¹æ‰'û%3ökóLú“õ®z/–Yº‹{k¨¾,T»Ã©kL¯ßÙ•iU|Õ»ï›ZR¼_dTÝ5Ý)o@5ùß«À-4¯g+HôÕGŽõ{;JÎzÕ”ïI>…ƒgPÈV<½Û Öê\Øêo›ñ†”&*í™ÐEh£ñ:L¥.û¥…ZO™Ý·O½Êøl®㽌ætòócf§yíy«ñË!o‚Ûå¦[ïèaÒb%^›ÉUw÷J;tQaZé¸,º†:c ¹&àÁWí‹÷¤§I×fÞéÖEò{ð‘ d´³¾cXûQ†Ÿøc¨’G#‹†H)|ŠÊ² ÑÖJUs—±-"9Ä<]~ñêYF´,6J}¨ Ä§Ÿjj œksbo£ì¸QÒÖ8w°ßZ;èºÎ‹QLÛŽ•ÌɃ¬ Ô¼ø-‰rkL»ø¼Íb«ÐM6ea™Ü*f©®Ô¼Ëw[šù´¨$S8MœSo0¥L‰»Ðô²fK_Ììi·ÐbŠ0ç]†¼³3­'ÈÎ2Ù¶ ˜þ­C[ iVÛÚH_Œc¯ÞF͉Œ=&™s¿ òGЬ¸úRð¸ÿüŠ}2ö6º¡…ž8—ÏL® °¢ª:æ™TMKcní‡]ãÁú¦¸TpU•óä*å’ÁýW>XÀ|Ëÿ¾¤³LÒ`«{\ytI£ëõçþQªêúû:ýÓJ6:Ö" ì£1øŠÍØÄ\¼ ¦õªE¼XÀÁ7]Z+@zS±ü‹ÖÈå^×5éÒ*iVghMM%­ìà2e|HÉò²0oÏÃ¥4šÇûSJH`cTO0™²V£aé^ÐoZó~µ2¢¾-®6£ñª¸×fÖÝ7:]7*÷ÀË"›æ…¬ÔÌýkrÚøÙ”Šw ÜCÌY•º3æýö5Â0U½ìÈÜ*C›ä¤Ø–´x˜â%ÛoîxŽ Ù•ôÁsr;<é >E5M¥FŽ‹!VXŽúÅV¿ËV£Çüf=¸<»¼ÎC¸¥ðÇXl£¶e†1­Pæ~Äb›dZReûº„†œ„ôµ20ðztåOÓøøúòu¼Ÿîé¨ýñÙó2n%‘ò··ê«ˆ9û"¸À¤™ "hdSVDf·œ°šl0~ ·"Èys°pQ~J¦Ùz¥%”r~ëc9U>|¤t¦Ô“ªÖYWSýãõôJ¦Q°,kNi´UãO¦ º¹"q<àŽcàãÏÿ]ŽÈ=ú€ô*å¤iUU8vÏ+cb›QŽºÂ++°çu|•üõ9þ$Ë“n³Ât 7ë7–€8]X÷‹¨A§$,Þµ÷‹@ űŽ*ŠãŽì÷盵åVdj9âfÝQþR_RFHÇhäIS’"CíÏçžqJ5K¢2j.iÔ•$¾Õ™›´q¼ÛKgšX&ÁÅ}¨ì[ÈÒ݇w@<Á–*úi1µ>0[JI”õ‰„Élͺ«pÀ®BJ€ò9ª ©x¼ï™54ã€êYŒÆøm›&îHj¢6›„+£+fêrYd~.*8ª ÛgäŒI Œš5s’?ƒ7]T™ §‰Ÿé-PÈ™Ây'§®@fÄÝ@··­FD.·™g}/pßBò‚í=FÆ®ÜMÕÍ,³üxdžvØ6ºŠ¤—ÉðŸjZ Pe¤Ó+Ex —:2÷ ECÞÑãá½`3Ô% Bp,‘—ÉÛ ¶ËáÌ×ÔY?–±'ƈ¯½"Ðôɺ½Ô¿SÌÍßk[\”·ñÝzgmLÉO8.ª}zV¨H_u[ú ùP æš0Àƒ_dL¼€J:Ð èÝ‘G´ºfÝ:´xÀ£w=c£cÎ~òJýÍÕØÂ3çžÙUÚ~=n-ÝB«Á ·Ãొ ™_aÀ_r¨¶YÃʃÓçÏoWÕ_·–_¾8ß.7—ÞÏZ7EB;?”D&bCô»º~¢ùkiV±`çv4›sà LÖ %eò;J¾ÝîÁv}lék>Þ$Ÿ. w<0º›Î %(>«cY˜ã5ì»mû+נݰÍ>ñ8>ଡ2ˆŽ5˜(OŒ+“Û kÚ¥7Ó/2$c4h¦DdHÆyÀ”Љu=D!f:àÅ®[„9–„JrÆ!0Qwa§'‹2×ìÈ¡ÌWœ¯SˆÕwt™vSÒ$Ñ~Vpø† r.¢Øf(‚ ´ L,hz tLÈ@îš}JôÃ[ä¢èæ'´™D±>ÈP€ü¼w&ÌÈÑÖ¿A.çað},ƒ ÚXêç3KÕ¶½üAÑ¡“h . Y ÑÃåËY °™æxaI¡ÂmR‡¤E† åGÂQ?&‚²™„”O˜S'qR`FÙåÔþM¯p3w›KÉôÑ«™ïÄþ6L;{yó MótÏb°Â¤ËTZ˜ëZç®HJÊ!Ø”:E\ÝÙ¥hÅCß#fìŽÖOÄR³$â}‘0£®æø wßþ#þâVéô‹'‰‰ ÒgJ¶5È«²\›ôQÂ(CGä§ÞxP{ú\2Sž“”bû½ƒTMžF–0•²AoUÑ/šK´uœ¸)ž›Q¼Ì-e‘Öù"‰ •Chà¬ôX€ ñ—XHE‘“ ñ˜bN›À0ÄîúWÆ_ÇɃ"¦¬Ä¡82˜Å;Ò‰KcIpœYîf¦Iì`APìB€ L±b 1覻¨> Fb2Yðz‘òxAÄëÌþ&øäå9ããT3='_J››C;¡^Ù5¡ñ“µß Ç? ”cLĘÓq/@ 4aØ N3³;vÿ’. !y¥æNª•"9™WPòí-Ií°‘ûšÓƉN¹ _#^3–wÿþLæI^Z$X0?é Á@¦åA ù/€aüì£<¾&òíók!7y÷øûWôS¶J:a=‚² BoO­:Ù0ä™ñŒËŸ1´%ï³ÓU°X¦sȇ8YzÆ»Åù‰iO“À-…–çH<¥µñ<…ñŽt„h%„Ôî«u‚FÎÖ@ —¨ß“Ðõd÷äëV)‚%"O£ÈF…áùÏÛ‹pBâ Ðxµ¿@ØL”¦‰qØgÁDÔµÕ¤ÿü²>:B¼y˰gyÍ¿«\-+uX¨FI¿Ï‹ƒÓ8ê”`•å£ÚØvue@¤š@†DX›e›ÕûÌX ¤BïÝsTµa>ƒåŒÛIà®ÝØÙAõ²5ðZã1ê47Ù¾Ý×âg€|·Ò::Dƒ>¡~«4³½Ày¦'ÑLøì^ »~PÑÊ`\Ú<€Yݽ–`ýæY;µ’Âî}6(õ{€ºd8»ö9^xhJ Þ-‡pH}1°FêÓuÚ%YŠúæi9R3ŸŠÈœöíÔê(ôïx•e”3»wý:8*€2ÓÒºŽÌoÓ!žØ+=­(„Á笻r›JDÐú­bæž@…·2x’Ò;T]¶(ø¡"g‘9 „Ãj‡¯ '•ßÒ%EF$14q÷8ÇÁýG€¬ç¨¸šç+dnÐD>J€uzÚ@Sq«|ܼ¸H‡'é]}®(S“Ù침¼\í\‹ð1‘Í6³¬’ÚQ—ä´—†j†M$ б¶>KU³L _HJi¬Ý§ ð–ÉĉÄg·öqU|úÚdx”ßÜKŽ€û^ŒÚ(3F‡:Ê|˜c''ðºW'OB2¸ÚãÇl{ΟÍáM ˆgWPÊôaÊ#Ê Û—h¨zAC¾J¨ÂÝTìô®Ž(vßþƒu@\ÇpRÜ VóX‹—.rû…ÙŸ† Te®/7÷É %´ZŸKï•”&Á )}˜ÁËz÷º?¾j¡Ì(AAj!u{îÑ+®É4ÉÃü+Dl’`úL V'Ó^F:GW žÛ÷"YXá‘ÕÕ"b9ÙcMh©NéÎÒÈï9×ç¾8n)~5²‹±ä``êˆT"ærH‰£Ç'‰o®.ŽQ„¢ë‘ͯT,›KöôÇd&CáKî³Ûd£’^¯þDizÃ+׸~šD(Ú hujky-Í<3p§GÖPK4kÞ Ÿò;_«Í¿Üé/oϺXýcnåÜ$àãæXO¦£ɸ&é½#q$WÿŒyŒ绂nLaÝ'v^<Õê†$–È}ty^׳ÄwKy]|ÜJŒGbvs£áãRƒÖmõÒW&$^ V±¿X €7Ròû‹3‹W¬¤Ã¥®G!u%OجOÌÙ@1#Jé®S‘V;– Š(Á‡ö…ïÂÙ:(9{®0”˜›qb¾Ž[·ÎÓècv`UÇ‘… Íú]#ޠij2ðì0v´~IÃw@ ™S£²MfäÏV6Ì ñ³|Ýï°ÌP!+â±YæÁHhïzÉad޼W…)ˆ3Z•½Uø‹lTÄ5áîù>|Ë,«îá™Hl—ƒ1¯|yp ÐN†Q’LU!ËHjCE¼÷“ñ–ÇÁÃÇA¡èhÜýÄØ%ó½ÈÈY¢ˆ ¡f%;?GØDÊÕfœûâûU®ÊxQî)Uç®RÅR«™'iZ Œ´Öù¦æ2FÅjõj A\çÈu ,¨)5ʯa!E”!*Jø(Ë~ÃÌå8ÉCýXI`Bl+h¡óºº ßñÒ5äôÙ€‘àA«Ó˜ò˯"Cç2+ÑÞ{üÞß5F+ò3¼ŒW’lÖ±Õ™Ô„:ç4 Íb|ÆŽ^ñ;ü×+>£HÒJëÃ\e*ÈG•ˆG£Îåëþ‡v‘ÚV™º› "sEÆäðÐuì6ÏØc~ÓsR˜¦°yfv§¢ ®·Är-+½òz»X‰x~±5œ*nȃ`棵ÎíDA‰Ë÷l¹®fbbŸTcþgçj¿5èäÇ÷>eÑÉÐ{Ï1[°ò@ù¶ßrR)/L2T¼xÅn—úç?ä¹ôº 3OMØ;×lÊê.ÌrïQÇ“d Ol_‡}ˆ‡ ô9f—ðÕQ²BOºýë-eCÚ!‹”Û⓱*yÎsŒâ¸Äèv©Åí`ò£9IxŽ­;Šæ2LýÖw¹Éâ?.8VÁä ðCµ7S…£,ù XÑú6b±Æ4\•åšr¡øJôgë7æÔd+"U¬ÆÚI)V7‘Óê¯NÀ†%Ë#œ¶ Bq´Ü”uúo°Í¹ì¼–k“š†5 M9‘­“yJŒ¼„êäÆã5¤Á;/D«T¯—"A"½R³oº?ûJ­ÝÁœ= ª <ù‰¢Ï©Ú„ÕS`HqÒ^Øo“”<ƒJãn±Š/¸¹àöï¥Ïâôëú]Oö{íµ÷êÝyk€GKxô;¾†çOeSrZÚ˜ÿð³÷«ý¾\+¶àÿ¯³óâF^”4õߎ¢Ø_pÿ¤Óã¡ùwÙòºx¸h›#¤åKKÁ…û®úûÜ»«úØ9Œã//eÔóEb~úºÆ?‘õ?µÄÎò²\ã0• Iˆ ÍçbQÛd”J–ÒK:¹º¬ª¼ª¨ÀWš[šéqx¯5Íh7Ùµ@aPd„@ ar¼(AÄ‹ ‹{p/7‘ŸÈ¤¢ÙX6èwG<»Õè2¹4*ÉžMþ*º˜!î.pÓhMÿnÝŸIö¹ëùM ­6¼\é‚/`?«v1&™4ÄŽ”>Rä`·Mt‘R ¡–„Ü ï=è^NwB0étIä8›é©H…HKÞVõ?¬˜¾£Æ ²ºÊ”¶Ð€Î=•àhÃ3¥:…E®@fàKhz'Ä®ü4´„ŠbËevúk«Šj‹Waí…®%G‡z`Ó["² þZî«Û¸vìQê2q+œISHþ¸J†EÚ;!™¿©ùŠ_±JÂ2î —|¸½;ùzÿ¯¥²‘©tGW‚QƒKEs0ì I@ajDq[maŠzSD9<«Nr¸ dDÿòÈ6V‰:4„Á¾—úÖãF"Ó³ ûÓù~é6Èá&Îh¬ûV¯½Ê{ÐpÒ;ä§f˜y;ÝßKœ0 “»Q»¾K–Ö}Ù‚Ïß ¿?Ø>lx¤OGÆy9Úb(E¹Ô#d¬¹ž"<ÞÌ•")&áAÄeGPœóá÷e’ç§A/EIܧüYv†³îâÅH½†Ë]×Ðܦäü€®ò|ª«øêÂvq[ÌþB¨Wÿ:;Ÿ§úotÿ‰Ø)½‰KG7n—mµòÀ#DYü3Y*ÜBÒ¦ÿÚæïÁ¥Š×ZH%Q$Ê’B)\Âæ’„$–ÔP00“Ó‚˜Ìþ»%rv!zÜV³F%~›[yˆ‹G·ÔC¢Üu iû©«R µé'ϰ½O-õ-²­Ð=š/q ·%&a²DÂ%Ô .Q„bÙÔ¨ˆ2PJœ%fRÍŽ•r™äÓý:·V6iøeþ¸wG×Ò:µåÞÌ3Æò)4ãÆç…JèHRÕcbŸE¾\Ž01ż¾i,ò·Èòˆ³€ÛÓzÏÓ"e•Ìê¸hZ  Œ­ ¸°­òõ¿j‹ãÈ”ø¤ƒ©Ã~QRÿÍ¿·*îÒŧ„õý ³³¾[Ò¹u¾¤À¢´îîMz6iç/k«Û “ŒñZÄ]÷Ïÿ4†÷hrºÇdK¡=–2`ÏÛþ›ÿmŠ/ó”³Äõ/ÞÁô°\¶v ¶og¡S…MV(ôQz„ZÎKÓVÎÕÍ×Z={ÝŠ_Çü7jÆÄð`Ь±Íx“–/‘ÕßþõÃIý½ñX(`³(d‚—Çí4pü;ÿ}ÿ:9Îy}r€Uö>Pýk¨&£Å761FÇ0PbÓw èº7^âÊÆÅ„¨L"Ú£ºà"ªq’ˆèEéžÐcã =óp‚l¯ÒEß0WlæXV»tRXSX8Á ¸ŸÇAuêå"ˆ¸´ Yi°k¾Çå˦”lլɜ ˆáŠ.â'š ¿âŸçqH8Êq›hÛE/ç#«· /˜{Òò§VÕ©5õ¸ ±IèȨ S„ÒS¦T+ Žžj5<úE JT¼,!ËB¬éeW•‘ ž®C4˜ˆçøŒ²Þ/°kà;\=øàPaÅV{dFÐ"È´ÌCш€_Ž4º¸ðxQqœ5góÖË‘7;ûù!©8ˆYE\¨9Rïh kÕ ;_|&z÷‰H±C–Æ·Ñ5ïJõæ j‹q5ge-£þKÞíi³Ÿö”T_}ÞSLC³Q­ä?ÝoÓhõõkR~Ì_žMÿ mäFÐøèÓP凒ôW¥òODÚo«·ÔçJNÿURñ:uí|…‰†þšÚ›hÙ L6ìfíDOˆÞ1*{x3uàÖ—65f?ùýe1 Ú,:­\Êýª/¶UåÅ`¶Îgy¼¦ø‡í\È鿽¬ÙÒØ8®2DÃ-Äd1#øÕÿæ6Ir²qü‡¦¶æ–B š‹þÛpDÝ ýïÉz»3{%=ê+3·ñÖYr|G{õÀZ-ŽðUQ\­{’#åÔ‘Š¨ç¢g¬hßèr 1†d¦º;.pf\â&þÈWD6l±Ì”޽\@÷Œ!¢4;Ž›Pc^­óøáyêÛêY?KÈæàÈ»Ë-JäK‘oýKuøZ#êôœU†$Ô•˜&Áßì@!ðé˜nÕÑ;[p¨ß¼¨µTðCKȬF–`DR8 µ„蠖ŸŒö"B0{­‘PÄ€Aaºx8,oCµm%¬û9³Ãqˆ—£.]AC5ßio‰¸ “¬{È £]6ˆúŽŸ95CèaE×Y“'DˆÒ»0üx[G¸1žòŠ‚ËÕùâhl]2~BžAWS †GØP¶zqöÐûüÐFŠªàmÜþ˜C^¤{³¯ÔãÚš@Ah¬ÍQ¼ÂÒqáÝÒ­œ­bª/³BAN±®¸ø Ð2Ú8Pu !HY ÔzAbÕ¸ci?,]JðP€ÿAò­j– ޳î:f¨UjÚ å¤ŸÚ³Èê]eB€= A™ÕŸ1y`Ovr5¶ÆWÌ¡ð†)g¡ÔêuÎ¥û¥ÿ¥ oÛ€wÿy“ˆZܽ>¨ÛT„ñf*!o<<ÌW Â$ÆŒƒé c¿àêåu¼«a=yç­KüöøË¬Ÿ„ýFß2 ä ~J/§“é]+èÖÜè&æD†+Z(’+‘»W‡B&8Í6‚]4Ȱ=<ÄW @3ƒ}ç 10AiHvæ´ âŽÅ:*:Tö{‘´‰ÆS\÷Hày#§ª‹×p(* “Jy“ø7›y«à4’‡:w±e%ˆ*¤ÂÏ”¬Aø6†ú>è»Ð’.?ö|]ÆðÞ¼Û.«Yy/m¾|¡KòÖ#G ùMGN]ðÍã{›\Ä:›¸ì—¾Ê/JX]¾Îj=tFå—âëùáJþ†éÕÜÒA9@ð·Øx[›ê‹¢1Í TÃ~nŸÊ(Žáªoº¿ñÔEÂÎMmá>¡?³EƉľÿÿ·DŸÖÕA,ÿ/C]•ÀãÇK«ó<.n½+Ú‹5ÿÏüŸ¼ÌÖÔ™:òãü1öf²“*>üU«ËŽ—¤[5 À?t#dÛ)š£{A$âl,J·W|y‰§Zð«øtW¥×Nà1….ªu€<½x|yùržÉTÂ,“°Yên}^l‚Ìú… ·q{v Å)Š æC=È[–Z†ÿÖ Å$/+ö4Ê"]"Ü­_ãΙÏÕÆ‚/âó{«¹Ä3õÀªaŒåÜŠ†ÕùªCiz¤aãÞoótãÇo6¿oh+=ƒÎÖ%_&lDž‘²•£8Ôxt÷}[sêýÂál:²œ´ h¨ý8­Nœ/<# ÂNÛW˜t5•Ö·ú‡4¾!õ>–¾Eä.:% ¥·ZÖ²™«”ˆC)d¡@¨%/¯_¿?¿ß.—rÙeß+g• ÈÑ÷Rö­Šâa(éì(Õú‡þçÍ„¤)‰ØL‹R¯ÏÊÞ û§Ùª0uø$äCJ%·8Ýö·á6¾šµšh?ð´´/oa¤gŠb´Ö%Òö­I†ˆ س}Äêf˜|ÁóáèÕ“Q£èd¯>Uds³1áÖ÷„£3ã þœPÉ)ôŸw q•Þ6ÆKÑEßW=ÜriÛBæ¼w?­®%ZnmÓXU€7!Ê^}ò‰ÓëôZW‹pþþlë„/kÝ-©ô TmöG$¸C¢Ay¹R½îsRy—ð.Q±{T5°¨qú+“Ès~óð"]ê°#ZKÂc«PÆ”h # [¾SàdÎG£ÞOk¼¸z¸’•r‰ $Y{—âÆ¨*YQï¾"ó—†0±Ö\’­{BY¯Î*ÖΚÕAb¶{Š#òÑ€´€Wz« WÕP€Q®ýzŒeoÍÌuªÿæýqÌnÿúýñr{ÛÛ÷Ûû¨Ñö¸v¸PB.^™ª‹[ºV²ÈZ´Ã“žá¢‰V–øÜªLî8ºtë=Í›njNiÔk£ï~UÞ~ñòÚoËÇ—ûiì.ýE• -‚cˆÞ@­JÈ‚*#\ô,=‚H%g8hØ2GßÜëöFøá#¡üîùÛe)¬ÍáèdX(Æ7{à[åÀæõ<¡­Oø ÉÈŸ \ ³óÓ%»w7²’ʰŠÂÀ „â #;¤”‚òœŽr¡“ÚZèpk€ûõ2<]$]eÓ-_Óü,‚ŸËüŒò' LCÔæŠ¡ Ä(Ä]SÝø„f ³¬cxÞajT‰„ Î3×ÜMÀxcʃbw…®Îû"v&e uQqÔç4i(ÐZºRíb*’o’ #¤é*ozžµ†MŽoתmŽ™H@^'K\/^x}úªIÏ×e«^ÿŠÔú½»+_½>—;Öù\Ój½cð:öJ‚ÁTØŽˆò…øµ 騗\½?†I€\ ƒ6êvÀØ©ÿØLæÔe s“ËüäÑéÔ"ê-=Ïc¯£×[ÕN¦ëL? \l•ç–Yä¢ö«Ž‰£š²øf"-ƒ¥û‰±¶gxuëÝØunµÌ¥?V4†SSãRßx–°U7úSѪµyÛÉ4ï—"µŒ0_5« õ›æýþ$ÏB ¿O ÐzÁDƒ;ì­מ¼Ä}3™aÁs²ž•lG=nA?8¨è/ìÒ&ŠQüÔ•ÒM"?Ó­®Qø~¬òWNS‚6éMKä± ÊiJÐ&1°D« cT)Ý\DGÉq¬ =ZÌnÑݦYTø~ §A„ðÍ~ ØbX*¥Mz®¸Jðp-&]¬|ÚmQh'vçˆÅØH¢¦U—± ¤¬G*noýµ‘`³Â×h"/Œ¹ß†ÝA_Ô閭Cƒ åÌÀØlM*æð]…²pÚóu.ü/B²á:UÛEXt.è"]ó; ¤h©è°ðµ®ª|¤»We;B/(˜{òk¿D‘Îã 6=.°ñú{…ÑíE>ÁBú|¹~‘Ò€ö"'Xp*(P0T¦Bx‘( N[¤$‰^Ї øÃ©åàrGC=¬…Ùu_|·«D4ýqâDÀX°™³V (ä3<8–œyrKiFΞ¡ ¢dJuÀsóÌÏ.nßîߟ”MòѤEGáô¬lgL8’^£±IÜÐWŸîAë£ –²ýç;×ËO kßaiåü‡rÒŠè_Ó.§¼ž:;òºÏ%çIüÿ„¡‚ú$—'Gӡŵ̼^ä G-8þœtàt$ôWpfÁaÉø¯éÓcˆ‡”Û ©Àw•¿î®ÿÑU¾æs*ûE·Ä!ïüSSz¬XIôgžÄN§Õj4Êel6FÃá`ð¢þUN÷º]VG¯Ýf´üS˜MµÌ 7°¥+?‘OePŠ =…WT5VwÁQ¡†DP‡…“˜ÓeJ䃣Ʌuj?zV9 e[ŽÀÑV•€Œz5™2@M6Ѝ ª¿5²ëeºäâäÅ/2+éžr–’‡ÇbJ|ºÈ„‚µõ-®ä`·gô})™OU÷4pYüëô¿øÿXò¹òš›s¼vÉ Þ™ØR‚ÉR—’|žIjÂÀ¶TYÔÓŠðÉ Í™=â ®B-€„DHQò›bœŠÇŽèhhi…"œ«IÒÕH9VfÞŠ\Œ²*ï†âU™Ý¼ŒôÍ$Xa±eZñ/ˆÇr¬¸>¦JíÊb4O͘áð j-ôÆHŸ´²¦•óôWCG¢û”ãQ¿Ì²PÓÌa@ Í;>™)>ܱ½¼¾L²‹B¥‚£GÒ°xL"Ö(Þ æËsíÕã—ä‘Ewlø÷¬èDkP»ÔòÊ:ìc« WB9\£ê׋ƒmâZò4~–ê¶¡K´tYôG/2!ň0bŒræð¢¢œ÷&“î@xŒè0OUþ¢Ëcˆß–-›ÿ}ñÚøÒkmÿA”^Æß¼_‚߬áÄ×HôÿTËÿÖÃâ¨ýÿ ½Ñíþwáq ?Z6>-â•s¤£döƒ†Å…q]ŸwPKß9Oõ:9ý ¤§Ky`5ÿͤGô:=¡^¾/´Hzɶ¥¶k{÷ÝG<êÿ %pü«¡£û=ñÀ ‡:¬Â}¬€´"xî|dV^ÿAö&ÈH—øÉÛ·ÇÓàÕUBçjþ´‡hÿ€¨b?/ƒ/ûÿ"ë ]1“å\ÑÊ.ÒÿŸ/¾2ñ}±ï®ƒfj¥vЗ"ŸÖg}{B‰å±ù¼T~)úý>VÊlåö¦¹Ôq­yÕ™ü#›!Åö˜ÿt…lspýmû´)˲ڪþûÿ©Z¥Ý%}¹^m2è´¸TŒ%%D„MŒSøÖfÇS5Ä¿¿ÉCZ€­¦_u—m¨†eP ÇVÉ^ 3É7ÂÉõÊÛr0Ö"þ[Aq¹|­ !#-H¡þÆLp•â_Rï¼=úâ¨|ûX2I¦^cÇ!çI8Þ¦,9]¨ì3€=SÇ^ÀG³s™¯[Îvæ­cÉ+ïíáÂ@ëž"äÊÄÙài„ MŸœ ï‰$:,wè"y‚n'ÖsØ–¨Ùâ^N«[@®ò3$¡Í,=…%îf¡%ùR8ôûMbM :Hz0”ÁËf TÆ,¶N‡“ŸåÄζ- ¶ˆ¶# J¡Ÿ-ºÌ¹¦_ê(ÍŸÇÑ<ÅíoË•*ÇôöJù¡dP­¥[ ßÒë̹ÍXÞ©½MªzPX)ü U¥&œ¨Ä!IÛÑF,¤ù˜¹¥+ߪ;I¤RÀô>NmfòCBÝkâvÒ œz3nj%KŠ–¼ƒÅ€ hº G,|ÛÀ鶉¨jÕíÒZÆ7k»ã*îXsšú j­øóq 1è6Šˆát¦¹GOìg1Ÿóy¼wAè:†±P’.évq@n§ùNÎë‚@Æ Rš m5«šb¶ 8Õç­ Y[Bt€yR¶¸_B/P=íf„°˜“]0jOÒ^ù\r눡sì7r–)=f»UMþt¤l"‚~ãšj±”A„xH‡f²Báþ¨®³¹‰(è’ >v3t>|)ª#K/«Ÿ zÔaÆnZã“¨Š¼¨Èø¾Ôf7£í‰«ò—`w¥–D¤ P‚AÂâ”üýk1Ï/ǯ׿6¿ {´§2£'°ÇÌÏ÷Æ ~ºÞ/‡.(+ðw?À&’=›Qþ¬j"=Üår¥ðæ3êø‘ªe‘K2,,Ƨ"Ö°¶RÅ’ÎÐîdŽ-U?»Œ?}±ÆÃý»?ß~éEdÎ4šwûNw«OPc‘† u7­ïMñzçb\È|œJ§UQ6žQWJ $dßwþ;¦ ^ÐGe´™§úCP±˜êÉjÿ‰òƒ3-j﹩ÙZôû¦ŽdN çiÇò¤Ù‰FCŒ#ëBôªôT9¼ çn¹9¨< + ßÆúƘ4z[™Ã§º¼I\é–º¿ÍÆjkÏW¢ a8õ3aݱÜìý‹úb@4Š×Aø×h(…ƒ,„EÀ®©¸¬óuðyì9Cò…hšs‘úÒ½è– vbìçÞ ’I„c‚—ˆ6›‹bw[fý«ãò²ƒ§Ï±—OkãE—Þ+ŸÛ~Šöm}¹N¦— £fH5cË)ìÛî‡]/§ÓEÛŒƒ—+w+RŠÝ©Tyá8t¯ˆ|»1hÚ «¦ b=¦?¡‰ÌT²Z>Á`Xþt¸õ‚“”czÃþlâ¸÷ÄŸû^§Î÷›Â‹Ø/ˆ¶m+$¢Án« 2íÔùýÒïu ¦ —ÏÞV#¥VF´ä:º ¥No¿ á!÷ÖoœØý]5Düî¤ ˆ9€5÷¯1‘ÃV<­Õ.ñIÙ˜~Êl¸]w´]!}ÄŽ+I&¾s ^YCÒ(§‰|Þ½èÜu’fH®}»Iã…)lØnR¶ |õ|·E“‰\ø­x’ˆ¯A¤x2ð©ÅNä×ëYr3[¬Yi˜L-|ª³ÁqØîoº¨¥_äM‘Ú=Êñ¥ˆ'`ú‘†Bvy*´Åo¿»Ò¡?¶eÖdŽ^Ì_§B_ WÜJ-*ñƒ’*I«4„„5;8ºøHñÁ´Ò`ùË]”U‡Úü¿+…ZÖ¿xûõìæîß%Î9È5oÓ¤±ÉJ¯fy36ŒGTCî,T!g·H”<3’luùõÖ¾øp¾¿ëz<>¬Ôòók¹¤»êk€n¢æÃ™¼Ó²Ñ"è¸säÍ’"’ÿ|Jt6¶o¯m€ `¨T›ìpØ8@ç£M—æ¶Š­Z)ˆª÷ˆš$"‚u06—WÓLÉ=¡«uŽu˜°Œñ5ùA}ÇèƒÓ‚D«|/nçY–+XÜ\Ô¿è3ÎnÜèx™‚¬âÈ÷ã´+ …„ñÄÁ-̵ÆÂï±KˆÛL¸…Vy­—vû„òUˆYPRy.^“ª¯¡„ˆÊFØ YÜÓ tåÍã±KѱiˆzdàMäR“óúï°¯ÃPZÀI Ñpe’ã"û ?©=æøç>çé¡ä`ãB<<ç6XD-;ÞâÞª«( û È”¡q•FM²3"ÞZ¤™»\Ù×ü©£YÒGg°ˆ=“Z†IÓ‚h²uâÍñŽø¼À¼8tlÉ"‡îÞd n'Ù5VÙ Ù‡ ûQÎí‰DQØfdØ®ÏÏ‹*P™”#ÝàÔm;µ?p„‰Jd.×w±N‚ Y¸©ç×ÅÒoL×öÅN¦k² $27ûƒ¸( .ììÅ—ÙóþÌÈSÇõ¼ê$ñüŸaP{¶•B&<[Wà|©ÛPÈÇ¢» Úÿ¶1ex~ª0•IEs±œßk8"ܦ°™£w ¿L‡ Ê §èrRå‹»¨æ¥¥6›ÑI|}ž?æq!U­’ÝŸT?ˆV$™_ÝUItžCçuª¢¢yËõ݆!žÞõ ¥f‚¶*“¶ 3£•ÿÎ"¹%ÃІîíPP^õµsï]ñbÖaòú  ¶/’IçË ×É$~ 0›®|A>óÝ^gº n­kÍ4©äžÆA.YP6öu'§.Ðg§eÊÎÛÇéõ•çáh¯Ší|ê&%W*Xš\º§t^V´/–ŽDOÔéÌÞÖÕÖÛyéÖíºrº tev·­þ$€Mz±ñ?ûª‹$$ÉGD¦µÝˆŠí¥#lÝý«ꇯ¥jÍoHw°ÑóúJÚ‚œ¿ _{ååm>u÷ç™`mm2…ûì“x1tð㢌õL,¿‹ß+YV­“ºg»‘â´³ý—Ù‰ðqÝGrÅ` @Ff½…0¯éEÅU¿àJ¹ƒ°ëßúªéòørÜÓ=M𒼆Ê럋‘ÿø 1üðÞÖÊ<ù¿ÿ8-5›=tÖX»76çÜgä$»IŸ¶¹±Y7¦ ÍihORŒwpxâ×4>ŸþµÄfí7Ç™6 =Ì´màt‹d—ÎIH®_¿|Ó;ko7_Ã~}´ö­¦ð»¾=OcßÞ=šõþÄ_¯HçN06~ü1™Â° ­Š«ŠÉv ÇLÐbÈDØ ;æ|N€q"öiSWٻ <œgý’JÁˆgñ‘Ȥʳž‘”F~ÃkLPÒfWß” @àz=6¨¾ Ô¦2R¼Öûi„*JYòÇW!åFê‚'Çyó0‹óë6 ™öT2?`=ªÍMñ…d¯cÔŸJ©`!OÔ£  òä3]lé9â´ÇOM¦EœW:å§»´ ç³´êK̛Ϩ⟠iô1p¹¢FQ­"k­×c»& ¸Ïh€ÜuåþýÖx™°¥’2¡ Qze{¯¼ t|/‘ )?¾ò¤—ìÆ`D‘‰áýÝÁ>c-–Èx}«'áqmù9|ï= rÑþûX'ÂîemUFè"“vÕrBÉ닼Q'®Eãš}qNc™IŒi´èaר’ö:¶ªœPýu¡UÇJ¼òùOa÷hÁÖL9Åäû¨›ÇøÌ™KaÑêc‚j½Ÿpý5fÖ’ÊÞ|…¬O d½È{Ï/³+}ÇOM?ßù4å' y cOëtýF”†bŒxØH-ËädoÈËN‡ÅÊè é—#"C•Og-‡Z7X0{/…zpÀÁ”5²ëÒyß´ŠÄ÷r ªøÃÒÃ\Î5%|²;›;Ï/-n¼Ä0ü°¦¸V-vÃdÃîŸWôJùô9pïP5†ü2þù:ã]“Ûè&kb3ÂŒívUö ÔaàÍh³ÅuöCþ}[RvÙïÖ5 t$+?Uewf=ãu¾ÖTœQÒ»3óKHA³£Bô£éèâ=ºxžÜÅ‹òϨ{²È§oÖŸ¥idÞ!º¹}Éú%ÛŸ7²¸Ç·á?åï\äÏ' ð~ª`ºMu˜Ñ¥]þ¾÷v‘çµì£æc}Jñ·#äÎs&KCÀáöCp”FÕ$u‰eñüyÛH-$í|V¼Wæ‘üì&ž§ìVå³Ásôü…ñŒT5M™‘TÅê¼d«Ïj‹à³ºÎÇψ uÙÒ><UÝŽ[‘ ì¿­[TßžÝð¬áJ˜*~ Cãâ*ßOOÀáò!^HÝUb¢Kvޏ©Ñì"Ò®¸J¯²†t0ãaË¥ZXK߀ÎÄ »œ–T{ùÖÅ;/—žP 3ªÞu bÓZôY¤í´yá±úi²##î~YŒä®y ‹-'»ÂI½2?í¤¸ÄR6dè§‚á`=ÐæÎo=£¶ú%ªï¹\ËñÜ5:ø¿ùß÷Ò|µy\ÓnòÇZ݈PóŸˆîü„œ1ÈâØå˜?q¶†Ü+©ßפ S½¦È.eõ3ûÔËnž9íd¼Â²[¶Û¦ª-LJ¹Sò/Ÿ± …–ÒØ~œŽ)bÿzbÿ„ÒB¯i^çÉe’MJ|ä‚W@Ǧ‰Ô]ÿç·LB*ï+Bh:EGQ ž8Á2)g3~©ó¤•X¯×npç%Y4Naèw²]˜4šÞ—ÓÈq2m½ëøàÐPΫQ9ïS¸Š¹Ys}#[‘*FLJPÚÞËã!±HÅ‡ÃÆÃè$»·Šð[«>løNËóS°–ÁÀ.ª˜÷rúxEÙÆÎ‡—ò›X¹$Q·‰wÿçW¾¹´§éOû†òø›* ÁŇÎ/ögËõ‚ÇùŸ˜7ùwÝ׊²h÷çíÇb»Ñlí†NÞ¤_Ç‚ˆtý®À³}žý`éðvúËâ|Çã_Uº_ùÚÙ]ÕÕ“ž?4¾w.ŸTò‡¿ƒïŸx¿œŸ½Û'Zû#»Â¯ŸšOÿäWYôoó?Òß{Oiåïv}âüÅþ¿’œìÿp5¨k¶ŠöT1å3«þçÇ=.½¯·tnÿ*Oð«O®Ÿ‡ äú¾þåŸýY³Ês·¶6tÿ¯ß®éjþ«Mü‡¢ßí8Ùѱ± ™óî*Ñk…µÇQb7:$x Ø›‰E}^›ÕhÔj™%£Qq`ÔÛ­0îÃóØ ¶÷šŒj}VpÕ¿†J!—`""KòkV ¯]¹vÙÒKVôvÏMÌ ÇÆrý™Bo¡'MÇÒ¡€7⋸VÍCr—Ö€Ëêu*…T#ÓˆqÉšäp3z¹C¢ñ¦§±;÷g£šV´ežÔiÍH£¸ È®¨¤ZlŽ–¿yùTå`†Š¦tîxPg†_ ÖF 7‡uˆ²:â$§¡Gd5øÚC9Lõr«Éþ&Ñ0ã`à$0ºl •ä˹‘”/˜œ¶Ä·æZê?«ì§užësšXðP³ˆq€.…¦¼‚þzY¯ÖÎ^É©*LC¶ûs{¹‚ÜVÌ}Z~X¯iÒà-ìà À®¬üõl`”ÿ2ÙÂD;.ù€SrX"!¨˜P†~' Ô QRê×5Ç–ˆ=J}ìØgS†]:Ò¦CHƒ{ºÄ 5ÛÖ•­OÙƒØ.Û@É«¦xÀ-8)áX»zJ–ý(¦c³X\<ž¤%éŽYE÷*ož€—p7{óÅàdˆ!†ó4^¯í(ÊâùÞeGç…¾-ÍL“‰ßï×⬠Âs¯ á•cå½)¡U↡z xH»c"ÚŠG²©¹CàK!¦cÑG*¸Ìµ©d’ºÅõU 7›y ŽSöŠCE,ŽgùŒ^/èÐϲÑ^xL•齜-b;ÓË(¡FXúÝMèî+ ] !LB“C2É?ç64%–'ÊfŠÃÝ)g¯Q:—º?Ü6ŒJ†dGm^‰VÛ¦èDç:’IJpJQ’õ‰³Õ7ˆ²ú½)»V ×uó®úÉzÎåÐÈõ-Âo D€¦0Ë0\ ÕiŒ"¿ÐÞCƒ$ÖMSÌ@ŽËªÎ(š§‘K!þãê7lkæ¸ÄƒÌJ6èkfÒSUôÆ„Æ2zJ…óâ‹‘‚žL=’¡"Õ(S]Ó§ŒMKQ hÔ¤R&=Ó¦Š^±[Á(Œ[F³;cTÿð“%”^hNsYVŠÖ‡Q6—-¼ž)¬W/ÿ ß!év&)?‡ ÝÊד%—!%ÂÄ8_p:Öc3f Áþd^‰‰¨³).dZYvÛ3¹'V£†R%RqöÏT‰RV{Å ‚ù3ÔnÕ&’vÁ)ÞØ¶ÄMÀ&ñ„ÀñOìžip¿>Æ£—+_«]´P ÊùƒØÐ4ÑÛ´e71ÌÍ?„ïP;ûÒÛšä» [×Õ¤B5<ýN¯rá8$àºJCwZ›Ï¥Ôi¸¨ó„ö3^tÀפšwîùÙ•jQ)…*DßïÞáÞ»]l¯ú£üýõ1BD_ø >áÆ;‡§¢púƹø²À¨…ºHö@I‰üïÙôÙ_y ëêI;4jÁ¥í2@ø[ÂZè ŸqUGàq…ëÝΚ%߯HÔˆŒ¨D$Œ¶¯B@YLtILÁ˜ã‘aiËiÞl"HjךÊûÓ¤Š"¸3‚ÝÂNξSÆRI'Vs ÜªŠ †ÑJ‘ChK!v~M€TvW¥ Éà šý˜VÅIëõYèï‘’ ? M7«üŽùuy_€CLJß{—Z@ÁOsÌû˜DÍŸp%jÿÅu~ÀÅò1]fdÊÊó}¸Û2zèöN<ú‡—§µ¬µŸ¦Öµ›Ú‚(˜Ãµ„à :@‘ 8Îîûp¾Õ2ÍÆShÚ zÁKƾ˜ÁF_W²`ñì0?V¹ÄXJt1ÜÊdç3Ø Qîâjæ¿OB”x|ê¡Ds9Š?¼«h ¢ Ýv¢¹ £ìí Å!-²›dàt†Ÿ˜ëyŽ˜òøpùïÂlhÚ¦6Vø ë¯E+T˜Û•§û6æBiá„“WÏ¡Q"(;yÿjl΢áÎ#ÇßÚ Æ.!àHGê\'œ¤4…üõ¸ç ÷ñA­Å,êP9†ý(¿]]pÅH™Û{&±Ë'+à¸?`â9Òƒ}c1º …Vº@aÞù% þ÷/ÓøÕq¡¨­IД'«D~-µ ZM2 ?o=Fòü¯=½PÁÙÁ¡3¢æ‚yAŒ"Œçhå´±”Pþ(>´ù7x!ð*!>‘ã†%wM8MwÒC°Óp#Ï -÷&i&“[帵tr5T²ÌŸË‹Žƒ^³:+jEQz1©Ë.q­Åx¾»&y‰gOYÙ×gÙ¼¥wc‘Ô¥uê¨[<éJèOnËqˆ©oNBðÉœ=µƒ_¦[ÊÛœ|ÌUÉœ•´KÓA&âúŠW•É$®®Ú_)ËÐצ^hc2š¨hÄ€RNÒqü؆™‚„åRáô÷ë|9§¬s÷²µõát‚‚raª‚1[h´÷•…'•ƒû2úk4³«o½ÖnŒ'.xâ6¢Ëꆇz ÷^Ø\¡}™C€ šy?ÌÄ©Üþ¹óˆ’ü~•¿¼(¦Í.ïÿó(–Éí¨ ó‘u×ãˆ]ÔÕ§4&Ñ>O5. vgQá<²ä¥ZNû(‹n¤ +›e*Ü¡HT¹ „q€ÏQ+ﺇvöž>nÞŠçkmÄq‹æÃ­ǵìFòÁiço²Ë¤d2TØÁFyl«‰|œIXŠ‹DŒŒ üÚÜ©á’*‚Ü”ÿhYQj …“1pýf²o^s¤ }’Õ:ÅkN¤i¾;qÞ¯Š'¿3Z¯EÜ´F†´dç‚¡ôUùY O· £•=3N>Oež;´t®XÑÇŒ—þ¡jÕTF<Üø#S í n÷=Ö4µ¦6usCr5 ^ŒýR Å} Í0y‚˜YË#²ÔS˜¸ffz„RI”ŒÖŠÕ•ÔÌÖðõÛ(;WKöþ¨ó°оì½V­ËxD¼¢èr‘`Õp>TL—Ûü‹-ýŸÝ~¬9>C…ãwò~33¹!Ø“úv>º±¡e{mèš*Çõ »ªY®ÚCœáY“ÊÎê*Æ Çqp‰ ¦\Žçéål½>°`îa3‘/Ç5l æ îznp)~@iŒ1?xÿï+ë^Ö¨Wx=…3`Ñz½úüGñ‚õ°BñJc ©PYPï´»,T¬xÂ:–¤G°8;Y!¹<3y$ €†DĬõŠðhL sò—V‡Þ§¢YGc£‰)`¥@–d”åÐh{‚Pˆ pÀ÷Þ-gÚ©?[ÇÍÐÇ™ªßžÛËc3},'®YÓÖ¨¹‡Øã!`kµz¬~ÑN „¹«f;«eäh¬ÓÀ†Jàz°¼Œ¶ŠÃòòØø«¤ËxA'ª,£^‹V©¼^X…ª5Ù`ÔÛBJðp2Üác[†Bu3ãƒãÐK Ý•ì¶I5¨·œÙ!?Ŭôü‘jÏ´H*SmÊlßsEIMM†J¸™ .›Ayõ§ôBJ$¿ìӱ¸¥Úˆ½w˜Oˆ;,·€ÍŒAÿÉýjÒ©Rù=¡ =š`ðÏ^~\ç±3Û­÷þ·ó ܘ›Å?}óµSwÚþë_ï¦Íÿé~"Ch‘½«=Jý¡xô,&SäkïÉ€Uèk7ó69¢›©*þÉ¢b‹ÓÛ<3ñê°£ü£FÛêߨsˆ™Hö¦9µZ¡P*e2±ØèèL¬òBA¿ÏãÖ:v°YÍ&ƒ^¨ñÍJB­»¤ ØA§V)äL‰/’»Ù…å¦`‹2ØýÙñÄê¾}}„w^.’' ˜V7øn’½©å&½áÿKþs3#"àU­³ª‡(•ÇŠ“bt¶7üÈ[_Ž>—àî šÖ N‚ǵL–U³QÍ—ºªÚÌ¡ÏÎö•åvÄ‹rj!ÒÏgnö8ý¡„ÎeÐN5×q†Ê–Ÿ5ೋFûø^qàŸÕgl}”%™—M2†àéóÇoÅ4[~™ïKÌDÖ%8P)âBe Úzˆ÷$pÛìÿ»$äÎUWVh?¾Î×·¯¡þ–ß6>‹ÑP†²™üõÉ„{éa9A*)‚©²!ɪHô‡üúvU²Bè,ô ,qÁ¿[Çr™[„Àu<¶Õ'gÒMñHÜIWUýwÄÄWc=¦Ém&jNô19P>š éãB·AnfHdxô \ã(>ƒNO¨; ìלӔ7©Ä=æ!{,w“G´dܼªm`™]ÒHgì—~§®AºÖ ôÍ^Ši^Û÷#p%ëßO¶ÄQ6$¶¬kÐêÎ¥¶ tŸe;<¿€”f~¢~üõŸçQ$Š„· üÁ#ÑF©…0¾NÙŠÓ©Ôûco9¸bcÀo¸šWÚm0Ü/`XÉqÚ>…&rÔKgâŽ`Œ.¤¢µ~¯J¢º¯ž}î5îi¯ˆ½@±«ÎZ/ËêDˆì"Ô+ƒŒ³s¸zgj¾ •S«ßªÙPšâ)²9쑺ƒÄÖòÞ=ãkùÔ™ûmbãHˆçº -‘èÈ;ú]=Òs½à£‚Éá …(`ˆüÛ3N¼—áSض>N.K—ô*«Äž±WqðøÎ´cÄ<ùÁTxóQÑY貇LúpÍ(5Tø…àŒÛrâ#n‡hþ¿„3cYõy WžÐ¼ži”Åz¤iÊe¾wi^“bUL·T} òûξòg%>šJãJe3‘lÕÊbg=y½e —ƒ8:º0Ëeã&ü¢šÇ!²ÖÆOÑ2ü?ÁÇhæaõÙ—²’›X2ï,S ÖÐ N3ª:÷Î"{æŒ8Åî"‚Îe”G‰ÿÕP•"§þÆ‚':)¯Îð¿©‘ÌæçRûÌcì›>Îvs ¾ëîˆ(—ËêIgá–´›ÉË{w&Á+¶p¡/΂«øÂ£ðGó5.-\óv$ËÍ" ÉÞEÒ¶º³Â ø–äø)|X{ày÷YŠ{Ò®F6Ú¶í°`ùHÃjEÃÍ,FRÜ¥/È›ðGF˜¶ÅÚï»›*?áHÆï{£YñX7&ø´mÜ'ÂN(á½Ü~äSâØÁ oýË€£ V@Ú\Ay°²Ðd¿ôòyM#𠸘çã+å_ž+Øœ‘ñò¾ÃçïW5f×ÕZjòY?å÷¢aSÝ¿à”R BæSS(V[Fþƒ)ÏfI°5ì„t=yBÆÈ6·Ò¢ñß »¾ãZ~ Á¸ê=ôÍÚAÿÓTs,&° ØÞU²ïôc“x÷°ò9‘j$ª¦Hü-¥¨bµ ,G ëÕJëPøïäy¢—hwL®Už1“:9ê±R jhÀ¨Š‘s¾7¬@7F©3¹%)­ËéÊ_a‚ÃF,†³;³U¸’9EžŒqÅ‚ERU32`ò ïî0nã\ƒºÆNØ¡úÁY·0E;8€Aô›t¡áVMy,WN"Vwœþ;ú8üEu2f¤·zý†!œ† “‹q¾ 5u~•õÆP$¤‘Î\“c>)TÛU­'I6›ƒœë+·üÙ‹S¢Õ*vùûM*æÎ7ýŠÃº2cyœìÜSº¢TnñeìeȺËXÅÙS£ù5»Õ}<;OÛV¢©…ÏæÅ^ÇÊP@¾ðu®éŸ)NuDÅØJ£)g/ „FV!#žeò‚—¼R‰­3ž€Í>Xe#AÎo)=b‚6eÉŒú·ÚKÝ«ÈS®ŠWHû Ì0ÑÝ‘ ¹:õ€“E½y¦ŒP¯T×±Ú9¦FS¤tÞ>P’M„œÃs ">PÁ’˜¹ ƒY^§„Y`ØD}Öi¢ö-{é_æºK”±ÿæŠõ]2êÆWÈb%„ÇX¡Äï*´fÂ7©%/Ó›Xz,I&tt…ǘPâwÚfÔ¾-ýßA†zfVçµvwÕ,Å¡–ñð-Ñ“oØYa\q#ÅÍì7Ÿ¥o+ì›z¶¿ÕD"áR×Aj .œ¥~gÿ–åC"~ ¹ ]ÒÈ´cÿ¾]â2wr âý%jÅÚšGüÆÍ†· Ýh–¼V-ƒ‘ ’¿çE!ÔFÀ.ô*Ò¦§5éÏ(­–CÑÁ^¦xûl`1á#Óž&aöeá’(hcп÷çc%7Á(‚Ò>…ãI"9éû£Š¿r¸%M ¾;´:R25ý¢ùäÑ–Lª2ùþtÞ)–ãÙÊ1Àç[ÜC.VJ,3ãy·4`ŸÙø¶A0ü®T¿fÓ´çú9†9’@Æ'Îg‚79ïGp¼V‚´{W¾~–ÅÃÜ‚ PêÄØ+$¤òB4DÝYÄ€¦ÂÓÃ,€D”ÂFâ©ÃÖêôÝ•}0ÐþdYUU»”œšU§ËHS¥,™šð·o…wq2óG.IBqŒÜY˜­&` Sƒ³Ð9“AÙÒÆ'É[ís%Aˆñ˜ÎtvÅû¢î"¶ ¼¨Xîf¾Ë†ÝmÝóQrAŠ0Σ‹ æ« — äA™˜E—SÞ"Ó;TÁÏGŸË´]ȾB‘Ob¦æËdÉšãfQÛ}µÂ—wi ˆa¿±Î͘ÒÅÈ–.í|ú³MD¾ýÎ9séD†Åã[Òr±­q6Vä< éw±8#rÛR*ê-*¬¡E¢š>>~é^ùzk{©¥¨»í-JM™ HœWRí=…YËÍP`qê1åV¨ ÜÝûÀ Tú,#ç²@ãæð¬6°Žú¤Ü cžò*Bš<Æ#1,ñšÒ-ÂZä6éðĪÊz XkÍoÃl«¾žŸÅÅÚâE<[J]¹Tõ=Ÿô6ʲÀÈFT‡êóþ+w6Ý“ ô¤r;bMÃx€´áAÍ\ãñA…¢ŸpAð9¥ŽüQoÂbĹí HH• ¹ë5æóô(µ"0©þfª"Sï‘X²ÅÑ_<ÂÓˆ‡˜~aß¾]MhašæçʼnÁa¾ÐB¶¸Úãâ<šÿ·ˆ,ÌE1-g…pÄÀ\¤x+/,F÷qÊù2õtôEíÁ55ÈoÈÇ@pÞVÓ®[VäÑÀ/KŸdK”úÒ}x0u Õ’ù "¾zÕo¬áõóÞK€\ÔÓ Ù+žDmª—›K·ðvÖS(e ¬c3TRÀœ»¿j5æW õEþyåþíõi¶o¥¨yîusnz˜oKèLºÈÖÊWÌ’-‘^¬ýÓ‡ Ó¹bUlƒ˜YæÃ–†Å^¿S;¸ O0ï j“©ÛpU;§ç!,Ød–¶±ýÂ}#ÓË»dˆ:nߦÓ_”‹~Š __î§÷é]KŒb£I×~¼-K åA¨{†í.ßÉH¿=Qkõ‘ EIKÝžV½š¯Ec 4ªý¼§ÂY=s‹oUž`+’†± Moj#¥ž,fó‘Y 8ÆBÆ4Ù߀aXÒ½TcqfgÛ0ƒ” /”’NÿÖjËÍgŠÔ„¨(<:1h°þAW Ϭ7wýb8°¤Ù„Lt„ É·ë{ýC|ÈÊyIsîì%2Ö5}€r6ì>…Þlm6ç© H“ìxQ‹GA¨ã}›%?XŒ8§à\­wZÖóSä#=è¡ÑR?À &pã£|ïãeJû¾‚r;1ÔÂЄ¿ä˜Ðµ‚[Ýl°ªßl˜C aLÞIËZN2Ãl·,…5(r©w^Jf˜ø7¤C~iBRjéä=¼gq/̦‚ûP9P ŒÖaS9בn6¹à|aAßvhºß@ Há€Tf¯¤•]í%ˆ\¨ÏŽ@j;§éT u#©äPKC·(—7‚…ªÝ†cŒÞŸs!{>4)<ô?Hî jco,cUšXP%hpn„¥wYåœÂZâñ4ÀnYàЃ ÒëiŒ·5ê_iÖ¯W¢NLjµVáVVÀ1~ žAÛh@Uûß<ºäµ]}ò+­WÓ‡‰Š•ý˹xóR6á «êìå ëj£]£r/Ê6Ç,¢v¥Ðý&!¦Dƒx׿‘ª›+äÖ^ ÒCLU›w8êÖ<æ5z$º\íž±[¬À³ûpÁP¹3”–&,Ê3-¶¿7¼Á‡xƒVü‚†¼PC–w®rÚ‹xý?K*¤wUU4™„Ö9Ýu¦æq3žÉÚ{ˆ&JX±z¢1y;*:¸ëcÓþаò\îõ‹y°ˆl>"1ãš n©o–į==u•{ÒÀ©ñ*ÏnË™÷cPþÌÞªå dµêø~ëMÞüßy¼O- `qϦGzž¥£ä¡lÀŽÅõ¬£@Ô¤‘Þ@²4ýrÍÒIqAw…rÂŒ³ŒÚ†˜-ߦ٭wa5-,ü{ ˆ²’º[¥ìˆíéŽýW*F;ÝÄT[„†9¹à6jz·6ÆiÂ@ªÙ„!éìÈa`‡-ðrÕa­®ó ÉÍN„¶L´›5žd9à qyEçzEIÉÛ¼ŠXĶèg¹øìNWÓÙÏ4A´àQÁ)gAú–rãåºëQ/’‡oçþÖ^×8n8ɰ˜ï$L¯»vX3­üÓóî©»Üí}e íš½Û\.Ó@hòvNè|üIh~¿"̧$ïívëö耫à#žº¿žÍ¨ï…¿é Õx×>]”=Œä+ôþeZ+JŠ™Y0’¥"¥ýìpñ€’\¾•7€äíN:AŸX ÕÚZ«§ÔVS•+àÌ · ޼âGd• ”7 çøpfµ˜õZ¹Tôª‰ÖFkËZÃVAd7îòë˜íP)2bÚw®,#"¸jufÔÍ2qÄèbâs¿h8”¡âèæî›U¤hÈ-ù)F;ÞNãp°F…ÿ‡'¨Ëb‘¦ŸN…ê‹‹Xdæ™éíÆLg¬f7´õÜ‘‡É·CHûîzíH‚žoî 0Ù@§øÒ¶ ç<°Ìõ®C=Þf>îôZªŸüÚø¤"¿ºó×6_) :èl‚‡Rˆ˜ó4/ôŒ¼;<|iWÿ6Çr#®ÑOµHós`ùhÑÈo¤šB޽‚¯…Ì÷Q“žj÷B‹KeùÀ;y÷ŠC•ŒDáAÞ±¥ßÄî ‡²P‰YE" C²mhÁfG¿hHA³§'™Å»dÁ(îó”ÙlÂ&‡646ŠÀ?÷‚ÚÓ¼ÚbI+³É’¢íý)Äéf¹ú£§] ­kthH%¼¨o€uÅa¿ÔŸãø{j§Æ)—IÞcû»åL¾Å§"ί²šÆËd¹D¤NÉ©×:º Àº®t1 ë<Ã4ª·8šÄIžjN©Ÿµîǵh¹í>M꽊#½5ªÔlœW© -+>W‚9&R’ˆ„¡€µJ4ƒ™Ä0~‡Þ2(×U"öqìaîÙIâ‚Áù2`N°Rnƒ}©H¡5Kˆ‰8G;˜zÍ"‘&\–ÈÇö}"†‡ÛuÁh]©Ö!^°QWž0¤<®YŸxÒ^œ2gÞÃ5•ÉëX,è!ìe,¬ïû‰Ó#'%I¥/ÿÜBœÙ×_Ó³å.Þžî2ƒx‘¿Û“  6îxñ‚{¾ÈÏxF{£“°JRfrjÇ#\°Ä!Û7FXâ£ûʼnˆ«ºX¦Á˹)ißNœ/8±#úó[©!³<õ‚§u/Òü/D¯oJÕbzþ²Žus¬cg<zþ<ž?ÒÁkw—l^m¬#¹lìOÀ¡Ós€:<¦­.s½‘Á©«-.–ê¦jG´"Sá¸ÿVHi’mÕ³ie ;ˆÑ`]G,(µ–‰÷j¥Â¬6ø€CWïímuÉ{2HÒk‘C=:µ1XfûQ‹&Ãko¸HÞãúN›bŒ?ÈX܃ç&¥Rž¦•gç@Vf©ùø\¨*¥.hÖñåÏ6IÖz2Øžü4xDB€Ÿ6"¯í¿|÷ø:óî:=¬§£ÕUãàø"o¡è=îÅͤ#_11жùRÁ9.%ㄸL“Vu.â±íªDÙ'uçæa/èQ¾g”r#$ûÛ}¿¤N(op6­Jÿ‰Nß‚Q`”H³ld×¥ÿ@°ZüÇò2èBäÿqÕÜüýÄ$¸ÿ+©u×|ù}ù'VH`  Uù$`~ƒ‘ƒñÿÌ öXè©ÑÈ€èéY¹!Ò¾9œå(é 5Fà…3¦'mÇΧhr£Ý¸PãŠhƒ1 i,Œ(Z›åvi3sPm:(H=Ô$è” “Çi JOH÷Pí ZÊXdœ”‚×­¤m Ai¨tÓ©WÌ9|ÁèA)Dí¯¹¤xÉØ ¬Šzê¢Jɧ!UÅr‰’~^^JjF.'e„¸2ÁLæ 8ÌóCäFŸ @AÉÂU…7’ƶ_ÏGº÷$ÄðÓ§|×[WZO)ß?iûò÷"e‡Á•ŒÕ £®-ö%~8•¨f*ù©d"ÂDUÏãv£ g$(0m DÃ|}.ŠÅ Àü÷{Áó84²؆FàŸê¸™’\Y…ˆ¯= ZN-)dÄà«UéÀ˜èÕ1öýË@>E èšØoîAND–‘§)!r>¤CÅãý„dSLwtp³¡ä“»Ý‘7 9Y×ILù•zŒ’µñ¡gC<£‹ÁSˆž6¤ ú ›+fùá]*•~&¦†nQÃóÂpìLNÕî@¿ê³†lóNfçªQö[5²žÎfË‹j+K÷ìè‡ã:ƒm£Ú5|œç;— ‹aØ6nìj›nÛ: ¯•KAÞY¹Pa”#ÄñôJ:¬5äV3|(±izç¡\W›Ë…ð˜ÿbÅa,?{©µ&±A†QWÂ>Fqx h"¬9Ÿ¨Ê<ˆ*£µ5Bu´îN¹ VÒçÞ8w 憄”¿i+"šp±IÔ2Ö Ò)…pò=~ÒäÚAR-ö«r™e½}%¯9|xøéïú•jq^U7zU1¼L‹î%U¥×š “&[Ú¹¥¨2¾ÅÚ‚ßÁÏ7¥dɺUiqTØB-*Ó«©]|Tըᚖ° o’Z‹„6èmQÍ^ zQ -Ñ‹ŽR†^~~ÙYkAq6 `«%—c59U㔋Š{T 4;(8š^ *îR‰º‚¨¸Xq·Y}" -8•ÖShñ¢ºòÆÄ.œeºX©84ZØÔÆÐé˜aa¦ŠTDAå{2ýªÉRp{ GêÃι¸'0ŒËâaßhva_ÇE\Ÿí)éÖ ¨"ö„-ÔJÿ¢“GÆÊÕuâ­œ$JÛ' ­‚ @r!¸%ÝR”’p0¿Ö¥Ç\ÎF–3¯Ô•òër–vR9©ôQ¤DÁÞòcÔý qÞ]Ãßt: "ξZXC‘+ Xõ½JG –à@Ü©­ßu¨c¼m™qRf¶:î‹B9"ld #†‹nû%û ½… Åך8œ… Lú+„Lïõè²ZνÑdjeãúÉ fHë²ÎnX_J@²j– ù_Ý U‹~݆–Éú•V“)ÞÂhc¼æµ Ϋ ‰i¼èÚâÊ"YóÔmW«ט,Ý5«•‘G ÂâZ³=͸v‹3cWà+§h77FMI=ÜÕ` Ç1Ó±°·FÔ¨®)I‡È²£ «ÄL»²ûòZ—%Æ+j`²©`ÁiÍ Ź.«Ñ5ó8÷½8Ʊç)~¯… j>ù2sk”бó ü¡søÒ·iÉ•Nš8·T'ìù9UêÁ-›—‰·¯‰L\ ÖÑé2’öâh-¼¥­•~ã%ÖäÕˆÔ‰°j”“Ü0¶ œ‹¾ôaÙ“Ì_”uQŒ’¥Ó"5— ¢©¥(%+ߊ<`¸^[ueä¥F(@YX^B|W”¤C\ºâI€Â\Ø&No×ïl"•8EÉëcNˆÆbh—Œ´*¬ç£°÷lnªä.$£‡HÎ]ëÈ¡“¬ÀÙ¾ÈÃÅœñ¶8¯²zIÖm¯gM•ß&GU ¾âé]!A]Qä}j/ñMU´5‘÷\_VHì&ðˆ6aõƒÉEèc'°Ææ°¡`‡|ÍÈyDm!©"5ÏmÅ_Iº¢ŠÂÒMŽž–r-÷/Vïï„ÏŒo¶z»%:c…uû“zôáï'8 ™*H•€¡ylÛ½ô»[Œ§p‹vüð³AÉ í¨êÙ‚"|²há­-ä~mÜGoTeÓVyige+<Á»˜È d r4öFˆáPîyvçb äíhöf宂Å@ƒcþb "‰í›GÐàZƒÍ(S¥¯jÒoŒwD «KŒŒËhmKÙYÁ® qUΩ8ŒY1#,Ì£1ˆ?ú\«ìÎV·a¤ A™QŸ­N½Í÷Š'KHï„þsm(.“ ­x Ø ¿²xt“ ¡táÈ»×¹­E糘ӂŸ•šÆ o‡7¥FЫ®¼¨ DªÈ_­”‰*$¡sfüéºÞ9IÿËÓ}?r½õX+`'ŠDzú‹+FÇ"“!–øª*Ô܆šè!QŽ&=˜a!i:5è׳o瞊 †°¢Å¢÷uóOKÅmÃD^]\ú6ÒeµJ¶b_c¾LA%Â}³P5,¤nTmÑé@Å-ð⪤rß·$X aaüŒ‰×î‡ÃÎŒeŠ0•M¢jq:’ØQ5†¯!nŒaÁBHiUÕj$µ)’C8½édÝXa:ÕDŒê‘ôèã¢Z¥aëÔìŠZŽo?³”GF“ôg©…%^Qh\cX pªÓ•nÍX‘*(à’ gú6Þ\ Q×ä©t6/»OûHR»Ð¾Ù¦çT̂Πh%N°—vÞ-ª°÷Êó!†6‚”.ѕ٧>gpÔiÖ-ˆî=Õ½Ì æ™'¿»¦v/k:¢FJÍS u¯¾VƒiÿŸTj ‡Hš J,S‘¡pþ­3Æ ªêà}DzUK;6 T tÕç$ïxŠ#iÐnã55ÕÁZB(ˆ©=RIŠ0ÈÖ(°%]Òñî_3-¼H€cSÍwÅ7D:[»¼šÕÝŠ0ã®u¥VpðVžå^,Jªˆ~EŠÔ`Íþ#‡r%‘6uRàšˆCõ:ж’oï¶É+jTe¶zS¥k¥ž³Ji*ºW,`þÝ¡t–÷…4BC›²3 { ä¶Áó3ûÜÏ<ð´Jž¨Ê³R&†@s÷NÒA& þK@™ÛNÃlº¦r›qÖ+SIÄ »Ìœ¶Ä$ðôÏÄ|ª!ÐÞ¦ìÌžíú`¦ºö*:ÝÔ)ï­ZÛ5ïv5õ„‰~¼æ‰ª5aîáH”«æŽ§ )j ?°Æ)›¥%ñï¬"X(#8~¢Ë–}ä®Ñ‡Ç“f|Ì¢›ÊÕ8EoF;ö[8Y Ù^Áå^í_©ïûÝ@»ßX1~’OérñjÔCÊI[o69­XIº`´hðsÔ\Ǭ4¯¥9¶¬¯ð:°1îòÿòênà¡Pà駇QØX50¼r;0<Àha)TqxÍÒ‡(×âc9‰Xµ.¸èÿá߸ïÒ—ôWÏü€e“¿üG3?uç·ìVâ/k &ž–&!öJ½)ž~Ö pøFlƒ"‡Æy 1ÇÞï„“«ÒöðÁwñº[e•.ušñ¿¥´¥R‡8ÕñZFRFc•Œ”{‘j ¡;´‡¢žI{¯ÊûMåÓ4…h-‡é“}ßeDUu ¡R¬qI{ò2rØ"*S;ºÓ{UmÍ×FÕÕÁ´Ä«¾¶’`o‚¦Ëù@ºmr¡Ü’Ö:LvÎ'åÛ»EútÁÛÙ#µHo{ô;s ¸õº-}¥}FçJe#•ÂUªµ‹y^†4¡}ïÒÛ^H\¯ÞD\7GÙ #ün‡Ô6áM3RY[¤V ˆ“óc*MV#%a±Ÿ]ëE£XaÁês£ÄBOR”” "E.+aÍ*‡/œzjÏišâ…ÒõyÔÙ±á³(•1æoPÝ!Óª;ÖˆË'ªÕn”ψ_ûàÙ/í.••©"pö¯$Q$+{¹œi m‹F1š‹{°ó'°O:òGƒõ’6aIëúN┽݆#ÂSö3óÍ—¾V^Ý>ñ€âvù¾©«aZY…fu¨œµ`0BÚ¸„pQ”&¥%Q$Q\ùŽhpªYæV­Õàñ‚ ë†ÙÓ¼SR¢Oû¸× Íî“›òwrC³Þ[^—]YxZJnÞ·’v@é_ tÇ>ò‹hŽå;Å÷°ò}3þ§ÃÓ£X/'öý§ý‰û·VØ`ÍJec¸;èö"%Š–ÉöIŸiLô2B…oã8:£“QQbê?xÔÖö‰ÁB6bùÈ>Ѿˆà\éÝ ¦,zŸ<õ¹/$©nÍŒæÊÈ-àUåÛ¼èP¥:Ån—kÌN6×Äì¯E Ð¼ZŠ„äëgÔ#ÔbSöË’˜åVã9µ4Í”GÇôäÄνú,u´¥2d¼Ql'êÅôÕôï¥4Õ•¬™$5Íaê€ÀÙ¸šoíÍ÷ßnþŸÂ_=Å»31Û\ ´8 hKÏ6‹]·d³TJŠ1b8C-A®u®î—I†¶Éßm _ªå¢9h†hõD­ÚÄFòƒÑd`(¥6¹¬âs½êÁ厸£Âwn(#Gq…ÊÛöü«Ü 4Dueu•Ø=r:FRº©Âçøu®C½óÀkTÃÞ8&‘V˜¶ p2 -ð=êéî&âb–#uô&¼§éb¾SÅݺ[I3Ò)×ésS†sÍé ñ¤lÃ,1WÎUˆ«±§Îà;J-/[ù°V±¾Ûõ“¤T~X7%kNF§Å–ãcµ±V)'&ÚŸÇEnÙ0?…›4èlî þ…Õ÷£íå—h©è y¥É)¿·#»ÕýŒ¯üãIÐŒ1°î)Óò£Î—­#¸hÚ/ía;w!ߨi‰Ðî;’£SÎzîÕáȃi è5åäP) ïĶõ M&Ç8 KD/™êm¸ò–Zâ‹ìKªÛÒ£Ï}°—àphÔÙ¢$ªœáþ<²Mvp/$ú-í#%ë z†8بþÕ&™†$R‘¡‡ß:†0EÉ%ZΙ}›ó©Êá¾Cö©Ý›º¤~‘æ2© C‚!z^θ\1› G®ò!ÖóCõ†£ÔœÛ×Þô…_GgY™òK!ákÉ»$¶µ WàDj0d FjÊUE…%ËBMÚ™ „WFZå%rZzŒÊÓ‹Yãtä_GÚ¡¯ñìt74P£lvΘåÄÓÓðÀ¨uíj¼Ðçh©zÀOynZ4ÞŽGn×£~ˆ[È©9vƒïá¿ÕÃ^"CÐR–»‚Û”^b¨3¥áj.Lñ²Z_fgòÇUiФ¹EÒGúîžœðZê æ^×Y;3«r$áãÓ•²¨%œ ¼†›–¨Çe°ôì#è)L ¨ˆ>D)­·º™%ªÒ7éÎ1ÅÜ¥8pcå(g,Q‚­&4#hV:LWšá€}ŠûU‘Øç£2F– 2 jb` [¸åD²VTΞ–`çÂVa¼6P…_«èaÅN]aÒ›¸ÈbÒC²ÊÈY˜KÉSáÀ ·yä™[yg1SB¶ŸÒrJ³ÉµŠ$ ÚÊ¢¸¬m|§ø¶0WÛ»m€v÷üVJžG»«¥†cùÔÎsíýž<×}>üNÉ7üOÛ—ÎË IãDÒ0€/À0;¬ÔÈä/OuîÌTô/Xó×—hÕlj¡ã€o"‚z—FÈdö` Å”?îž20„ò Wy\…¤”sî–÷¹H>MÞ)W<ãÚ; ´âS]¶üÈòÅ €ì äaŒ9ž›øè@AÇ×,E.œDÝ^ÍИY‡´„³ð <Ž^wºÇ¸©weRS[³ù=-¯¼ÆCrI¨Ûh:ŸóŒê5³WéL­JÅÄ7c¿Z1rê‡oWV$+áˆ* «WÉît€ñ¯ÂôI›Vç9®Ç²£ Z®Cr¬“Á¨Þ'Í(Î#ÈöK€œ:©›ôBØ5X?ò9¬ßy˜dÕd›Üª¬â˜úêß|ý¦÷•¡L¾ïÙÀ¶äï®áþúî«c&aâI¸°Àgð d=À"ܘ8À¯€Ôªç’}B!uûø¥•KŸ®îªüªÄÀÛ®Uí«ény¡}c ëÚêªÂjeœÆöÚ^3.)d|úѾzM×?绪^?@™«©>¹.âj¥~çê¿!Z«µ~Ç‹ï ¼<–®S d©ÒÚqë¡õÙÕf­}Oö?áþ7×rERÏJ½qín“4 ;©ðÉGѺÚç5¾d Ùt¤¯;Î9œøŠGlÆÅèi7­o••RˆuW[Ë­0PR®g4Êú­®8ÐÌZ „`Ìäw·$¦UrÀZ Ë) ¯¯=w$äOáHíŒèoè£mî‘ÖøÐ˜ý0šú@Ð|—êoKåÝ«¼—„whöÍ«–5?¿C'h—]¦rØ=ŒÌúàæ.M}ü›ì?«¼²;¯?¨HïèCs·,=ÇLÑmNpâSt˜­¸’Õ[|uåœvg/yS4hΕ ~ñü¯lRum§NËP®k)7ß×T9•TŽPÝr™ôfÒ´þBµ@QƒX°¹ Áâ§Æ¹RÑ–q«=2ª[Oåán¡óêÖþÜöƒv;#n]âzó Ã*|'j-W¿.'Ý5[ã ˰üšTÛp,ø@kQ¡y)úJv@å,C;@¦Pk 0oyç!¸"Ò/ßïü,Îõ[Üf†î‹tq¼bo½4ÿYUÙ{éç’—Á+Ö¶b‡«ö6¶F)Ä V´4d_ÓÍý튌EX );â+I&‘È8°b™aãˇz!)ŸŠZ5‚Iï.N¡)‚š=áž5N_Nãô§°Ýò¨Ê†Ëõ©d=þC¡'šžÇENkMc")V‹FáþíY¯šªØÉS®d†ªíV¸iÂ6ãTYJµIª f yúõheüõS¥@Š¥J[B™âÞi†iQºu@„4Árà!αNñÅZ àkÓR*išj`¨ŒÌ>RDZ¢¡†4͈֡$$ 3Q‡ƒˆ´å‚°z§èÄ’¿¾Õtí5EäxòáR¥¾šôZ—œ½®s-º*FNA”T§àïBêÚ$C¢ÂQѼQ"ÉØ`8 ÈZظvøà®ë;¢Â’¹T£î Ú# Û0Gø¸  ô„Pƒìý ™ÑýØõvòé@šßש)µýtý:^õÈ"Ó/A€à~)Æ(ï'áá¡_†²ÌýÚôËá3¡_.›û•È{ׯB6¡~š*žçÍÕH½´[!@Ðí'ðï?Cøý {?4ýœ×ŒÏ·û®Yá@þwÿN Æ›mäÍ9M1®èsØ„÷aß¹Ÿù$Á2â1ëIJV’ì 7Ö­5dùù»ºoƒJ¤£ÌS-žu¡_¹gþ‚‹¹øªÀà_®lÖ?!³jÔºü­ÿ$¢mÇ…èR'“ ¤QóÁ‚Ç=²7/HµBþ Èl %ð<Â=z‘Ág&“œG¨ Þ/PÐ:$3°åý`ÃlqÓDnË\µxq%Dj÷ØTdA"‡< â©êg\i5`pqm »ÁKÜ7šyÍ_ 1ÂL1…8˜[Öq4ǘ¾œ¿—«+n¸ã±uèEùp}?²ú~3Òîv¯_ìF\g?:9»(yæ§œÐíúRKr¸º_4+ëKeò€r¤5b_»ÓsF‚Ñ ¨”pSÒš¶D³¯M é4QL|bÊU‘Dý 1YЈ KŸróUL›ÃUóíK}i˜{õ–çd˜c.ª.¶O%¶röç.8’‘Žlä£åžjÔ£íèF?WTþ`cN…ùcßKP]7Œc÷¶q²êšëvó,¸„ßrÇ^íu¿ëË©¸}æïøÆ? Zmr>pœ×ý¼ß€Œ NͰ/ˆ’¬¨šn˜–í¸ž„Qœ¤Y^”Um¿j•—uÛóºŸ×û‚À( Ž@¢´Ž±«Å[YÛØÚÙ;8:9»ˆ$2…J£ã ²4‡Ïãç‹Äe¥…R¥ÔŠÞ Öe™Ì–h,Ž&’).Ã9dñAR4Ãry¾Q’‹J©¬BM¯T Ó²·æÕ}smbQóÈêYð¬hºØ »2NeÃüÁNp† \áÆ Æy~nøò ã4/ë¶'½áógªYç˜}AèoPª¯¬/™†iÙŽëùAÅIšåEYÕMÛõÃ8Í˺íÇyÝÏëýaQ˜Gm}̵¿A8~µÞØÇúÖ¶?Oç‹ ’æ8s')ìáMe¢c›Ç=ìFc¼‡y‚HÅ1/? ‚á‚ûö.‰dIA#l´ŠTÒð?ôtl@ÂvzÈ SrñC÷âƒöÍ•&Fœ$˜°¯þ ™"›°„øâÉì„©8Ǧâ'Ì ““&Áx¯‰(L!a\@0‚,.Ië9Ð KFë¹K¤ø³îªÕ1NÎâ³à= [€Ûãõù@ø4 8³~Ø 1Xž@$‘)TÁdñÌúN‰%R™\¡T©5Z£Xª'¬Ïp»Ãér{¼¼}‚à ’¢–ãWëÍv·?¨%û.»¢$+ª¦¦eeëFq’fyQVuÓvý0Nó"*&•”’–ÉÂåHƒÅ‘.QzHAÊ\e*H£«¨2œd±X,VšGÜø¢Ñ0-aB­wTºXÊ@Zyã{¼% r´‚—_à}Ë/.aÞ¦ø7.–UÕŽÜÕ7465·Îb±X,‹Å a±X,‹Åb±X,‹BÎÁ$®ÔÈh‹UQPXdÈy¨”Íq±¬ª˜õ`]=°¬Ó[ÛóË~>(ÑMÇ ügµ¢MSØ7ëŒCõØœÒçÚñõ…V¦˜;žN%ø@DJûS¤wÌ-ûë4 }—Tµ–NO?ô6¥ãðxrØÒÛéñx-/ŠÄ©L®PªÔ­No0š”;« ÚpÐù†Ü¯Ï‚À( Ž@ì¶Z,O ’È*Î`²Ø./p7Ü#ÊœB â¹B£Õ‘xŸýl±Úd©/o![P8Ü‚y?n¨Þ-nþx1G'g‘D¦ð×Z"Ád±9\_ ÔÃÕ)‘Êä %.Ö¹[Þ`Â%¯ˆóâ*&¥¤Ñk±X,–Nza°Aù‹/"‰¬HQbƒü3›®¢Ê`²Ø®O Ó²&”Vdš·FbìkY"’Õ&7é&'ü¶ÏJܤvÔ¾«ý  Âà$Ÿ\1ª\ÅR—‚ªk´ÉbsxqÍî „"±D*“?©Tz£Õé F“ÙbµÙN—Û¯k-?  Âà$ ÁâðVÖ6¶v\¹rtrv!Id u¶ê Ÿ\rWÕã „"±D*“+”*µFk¯ œ¹@š »,Iø]óÊÀdár$Š€›ÃâšS IdEÊs.*H£ îa±]vé5Ÿ]ßf.‚‡66„JH» B*}Io5míÚº¶_é7ŒÙàÙ«»ÿ? D˜PÆ…TÚXçùAÅIšåEYÕMÛõÃ8Í˺íÇyÝÏûýÁŠáIÑ Ëñ‚(ÉŠªé†iÙŽëùAÅIšåEYÕMÛõÃ8Í˺íÇyÝÏëý@FP 'HŠfXŽ_­7ÛÝþp®=S[¥$–ßVZ4$7¤Ü1uÓÆÈÉ-úžÛ/Ö¶¡€ö!ÉmmS—#Y¸ ìm/~¢É¦šÞÖQâ&¸UyÑmwh—#¥¸ nUw[ûXŒÛž¦ö}⾡Q†Û·ER£Üÿ¦ 9kmlíìœ]D™B¥ÑL›Ãuû¶”@(¿E¤2¹B¸›V»š´:½Áh2[DÅÄ¡’RÒ20Y¸‰Bc°¾¿ŠWDYqG˜ Òè*ª &‹ÍáªñÔùÐ0-aBRiÜÌ#¸ã{/W+‘œ‚’Šš†HaBRicça‹BfZ¡¢ªTÈŸçúaœæeÝöã¼îçý~™\¡T©5ZÞ`4™•Èêë‹úÏŸÕúš‹÷¯ ‚CVÙ2BQä#r}a±‰àrÅ)ÏŽ…i>¨¾HÜÉò&»“c0iÞy ÷)º£`uµVUS”JÀ3 Ôú ¹Ö©â¥R*~˜mF—꿚GMÃÊ‹Ä(z…‹²ˆ$@Ë‹,xX°"6 ªm† ÛÀðBWHD_äå‹À^J^4˜‰îdeòÁ:Fß,/óNÉ+Sª,Zzô³«r·¢NíâHß²Ò¬u½ú !•#¤ßéØtsuÌMäf“X;ßÅwÝ¥äL§JÜKÁ.B@¿RÜNÑÉ…ë—¨>¡?\{<+«ÁõßÛ¡7—þ)9ÆŠt ãˆ<ýäíéøÓto· ™.•žÂ4!;ƒqoqu.« Y½&žêV—´¾¶‰ÞP?âz3ÏÁ%ëKë×ëç—/£×eê¦Ý¨ÄRB¡k‹ê£Oöv¬· .8c4•8',Çâ8 A79äöžòíûµÇŸ­ƒˆ¶øH¦obH¢BF¢Z‡9åÚ­i*Cjš›&$ó”*y Y-„2.¤ÒÆË"L(ãB*m¬—+D˜PÆ…TÚX/Wˆ0¡Œ ©´±^®aBRic½\&”q!•6^® ø¿ŒØL^I>4sŽM“ôU{ìNxuØt`Zì'=ÿ…1œ|èúÙØ ©#vŒÔB!U!ŠÂ2ʼn"eòÅ¥€÷]À±A„û-k_;ÊÈF,oG ÉÉvÁÑ*dQìÃ\µ¢8ìâD19hå„B¬ß(ª¥ÓZÑDM„þ½ ½š³Áw§:™ ØCE#Dy¢aBRM}£ÕÖ–ÖòTn\£ž…Ñd;|ür8òûotüµÊŽ›×ox6דà,Èe«­D˜PÆ…TÚX/Wˆ0¡Œ Ñt~‰™âLñðõçŽ ÌOD#oÞîûøe¼™uë,VǵtÆk­µÖÚ {Û‚ʸJëåz¡Œ ©´±Þ“ë´%¦ŒßKA9‡oÙ…Q¥Íë&” ©´±^®‚=€ʸJë_=+m2ênµ8ŠÿF3@Õ=ã-ú¸Áœ¹L™!]ŒàGnV¤ÁÖÚ2Ê §µä4ΤvtæËÁÅÍï»™¶¨báæXÒÍ@y9#3KÜ6}– _ŒIþ1º§4 Š% \KöepÍr}®7}‹‰æó\´Îvß¹¯x§–= ?šmE?ZåD›õMÜ!Úª­»á+a޺ߦhìBÀãôMF]î>]”¯êó5Â×âcGi+ÖCzY§5`õÈÎú©aBRic½\ „2.äûõƒË£6`u\sÁ9OìÍaBRic½\ „2.¤ÒÆ>}ß߉ÿø Ú D˜TS夋9Ü•¤×r6‘¸\ŽŒ«LåNrÂ?êëün A†„°|0†oˆaè{ç‡p  ã`°Ï\S…~tó!ˆŒËßÎZÚ,»ˆw^Íé“1é‰MÈmN‚Ÿ,ø~L(‡vÕäÄ fq‡Ft–0ì%ŸÄ†8Ä»4Bîˆ)IÚæšˆéþ-ÞÎøVÓJ=–]n¢må?– ÂXýùGYÌÆ­’û¼RÜ^õÒ0eô°€ 3Ÿ›ø}¼`F˜t“Ëá Nãpüpuûw3’¢–7¿°‘„C+y!Áò+…ÐO#ªõ¥¿s„´ä0 ѦRG $vÒ„¡£àƒ5,€eR")-L\Ôù¸›Ub²ï3róã6¤9û2ð“±t¿„O)à4¡Zî¨sRÂð  X¨°9Ë× vjÄ€C{™â ¶†šÜÑ6€€CrDšÑ.ÉxKb€ʸJëå*&”q!•6ÖËÕD˜PÆ…œjGʸJ¯7u8ŽÛŒe–>Ì>ºÃxòJƒk Ý fçܵËA°w‹ iJZ~< Ÿ' ۖȉ¥“Ÿ‘.?i¯‹ÍKcÆÓá)ŠÿÂÊ·yxˆ[à¹Çn‰óü÷|ÇØ_ñ…-øÊ/çÑJÜ®ðxñ…Wòïöy(ù#ð2"L(ã‚ðÎJ>ÿüßñÅ4ÀÀpˆß0àðÿïÿ_6ñ[˜ñæ€ïé o] §¥„áIà,Í0,jæIÐÀtòØäN6 ³€€IÀ‹kLmX%IQÒR3 ’°(¯ZÑ¢*Ëä8;²ጼïòà S»Aµ4É›ÔQ:¯ršÉc1Nà˜:«´¡DLôtÓÀE!ØÊ ƒš*3ôÀ©Ó¶ªÜ$¶Áĩ۶øÝ4U¶´Ê"‰OTÃX=²ÛDÿdÜI÷èê<Õ9¿gY1Ò‰ÏfñéêÿÒöéòt}Îò‰×½ÕÙÎÏ-]€aÙ?ÌöêFƒV¶l¼mØTO^hcÂîè¬ÚèÓ½4¬W‘NÎåNÛ÷7‚Ÿ‚³Ø÷.›á–ØÑWÕ¯cšá–v”ØÕy¿ î„OÝ\9ú2\M ²Ñ‰òùoÙƒ¥dk™Ë ;>fÔÌ($6ëðÕ›æmá ‘¶’¸™†ºf~LèC:û隦»±Ð7Ø:v¨k¤¶“bßk3ÇŸnwßth,óüZ¶vkýÑ›ñcQ‘ÈN:ÿeWºW¹åN1ÐÕ†^Îí‚‚,“!CN©±õªÔNм÷xµhwcº\®›;«K—F %ÑB‘lø8á´uoÄt~ç³&( €PÈ/”è®®9:gùO©…çøþ±I=Çb°Ä/m)†£Tª…«ó1†ÛÏSïÎ69¡„§ähk‰ð?üiÂáv³Ým.·Ûé'€ýJ÷ßÅþ²”)–ú’U¶nPÊS7M&“Éd …B¡H—ËåòôÊÖë<¡R¦H¯”ÊÓVšL&“ýe( …"].—ËÓËZ/:‘R†˜˜Ù9@)S¤—I•ŠåŸ¾ ¢uƒR†˜.—ËåéÛâsžH)CLÊT*•JešL&k^!U¦­t¹\.§Î}žJ¥ 1)S©T*•i2™L&ËPt )ÒË¥JÙMl]µ†n&”q!•6ÖË"Lhª®Ýž\Àðþv#ÇûÈáDƒ½C°Ü¿5,É_-¢ç}’¸”Φ‰¹‘aOê[è¿óM¨õî+D˜PÆ…TÚX/Wø }hÞÉ *¿) íq!•6ÖË•"L(ãB*m¬—«d\H¥õrU€ʸTÚX/W8ÑwB¬WÓ¶IÏ 9ÎÛ?Pø¸ëFä¡PÑÌK5@„ G/ˆ’¬ÌuÙg¼ J²¢¦õ"LÞsØv{¸ùðy7îwÖÍà“/ZÍU¼øìã`»Ž‰w¥?l{omEwÍÙÉM*mÈ©è3ý"š7ªóÝUÜMO€±æzçR¤æÐíÌçYŒˆ9 Ä”Ð-œ€SÜ¡V!º,¨mí¾]-ÕÉyŒÕ%@÷(ݹ|b+Û¾ü˜ÑŸ¡zöYjÛï.‡y\çü^Ô õ†zëñ5›á©r€ÇwpBIÍhô”n#„Ö1„\ϺSÎc½ËÃC½)ÓÁzÂÒ Èæã‰dûfø ÂdÖE‚ eÃÝÝ@D(ãB*m²ÍWQÆ+£±Ëv ©’µô0—}Úz7 á2? ÄP…âɥݑƒZÌÒD›x DK8O‡Ü¢ÒoÔÈ\¼Æß—H´YþZÌŽ€…_úä×TÊW£öªcÎ9 êu¿õ$½ȆoÏÜß|±þàÝŸ]Âûʸݘ»m"Gÿ6÷.¥»ªM3vRšŠ¦+œÙ›Çq)M±>X›Õì·cr溪mõ|HZêwCâ±{WÜë]véîNNÞrKs²ÉÏì*u‡9Í£„f÷þ®ïw{Ì9[W<pl­Âl›°ïOù»³±mñ}ÜÄßÅò‚‘~Žãê UÌ€¢ŒN?†æšïn¤*û]{\tûX_¥œ.1‹ÍÇ×cÅ&ÝVÑ™ k½ž jD<íM5{Âáè1⨫fsšÈnÝh!|ЉRÕlÒ!Ùe×Ånãƒ7ˆ0™;ü(0L{bZ¢uΤÁˆ¾­ÝÃ׬Þ_ã$RŸ{qy³¦î @ƒ ^pk&Ë 4°à·æò°ò €È €Jš†!þ),<®´ ’:NQG©£o1Ì_‘¬6ljMø)YˆôøÖHy†zù³¸§‘ÅÔçt4`Á&¯LZ|–Ú· ‡ÐÑÒ,Ü«pÁ‰ZŒäwuwúúòuK_k×·bìAF«Ýu‡1úº,„‚69ˆ^µ±¿Ç`VaãBÿÍõ©ªÖW/<‚ËÇ!œV„¡d@FP,§„`$§x@FP,—tFa(™‚Ë™a!A±Á±üìBp6 #éx”ó$7 #(–W=O‚³1!A±^™öÜ %SB0‚C³ç^Ú§{ºVø³.!1@”dEÕp;KHL%YQ5܉Ç DIVt*6]w|œ_FGôvjßløÅ×zÒo¸=Ío³é×/bigÇ/й”`Ÿµÿý%{ßÿK©îß+õ€(‰%R¼9[«@(AZ€P$–HepuCŠÄhs7¡H,‘ÊàÍÚFÅ"HKŠÄ© ®i B‘X"•Á›¼­ „"1¬ Eb ´y Û¸¦ ‰%R¼y¡ÛSP$†5¡H,‘Ê~–]ƒî ±Ò „"±DN ›oûÃËÍ/=e0Pà AƒÙC†Y 4˜=Ìà8eP0Pà Áµ-îóu9ì×½üõÆGçž+©¢ëÑ}ôù±¡W÷ï8-ÜõmÕ¥š’8=ó§?lo;Ôº`~uø–×ìÇ‘J+¯Tÿsäqa`eçìÜúçÑÙü¹(ؾ”5W×L¡+ôØTÐhãeеn‚®1÷Cò'kåÿÿ8‹rìËÿþïUf¤IOÙDlÆ-ø¸Ckv܇©f¢_ÞüÛ8b¼ þ8u†^·ûçËÁæ¿tÁps:ð:èÕí!„B}m€‚]€˜2.’=ÂÿÌ“¯Ë!xÀ"L(Ric½\ „2.¤ÒÆz¹@„ e\H¥õrm@˜PÆ…\õû æâ†ʸJ—aB¯wØÚf‡ãzËþ³øYO3¼·ù-O¢fM¨%ZõX ý¿ÿ˜—qµ&ÞB0ùõD 72"8aIž–‚‘ÌLë½(2š§j»¦ñ&·ÏC\JÛÆµRzq)aiqU¶ýT £Ä5ýHX‰ZGyº8í8vìÈ ˆˆµÑø_éÈñÃ׃¦?ªWÓôc‚ÂC~š`’Ãõî´µ½o¸f“âZü{kÙb¿Y‚<:5£Uµ³ª/tMY…ÌÀóçH|å ·ò'¦FþˆÏ ’œ redmine-6.0.5/app/assets/fonts/NotoSans-Italic.woff2000066400000000000000000006560641500112024600223040ustar00rootroot00000000000000wOF2\4 Ã[ω6…±nÐ`ׂ, œ  ›«`˜Ž" ùh6$ùd Z‚Ñf ‚[0¶Ø€¥Èv÷ßŒŽ´Ý`í*Q¦q¡(£ 1ñS¤’Òm÷ÁáÈhüÃ!bKÇl€³—ý@ñﻇ ñm›F¥Í£7RY¸ÞÑ”ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßcòŸ§ßÖ¹÷ÍÜûÞ|¿‘pü¢`X)¢˜Y™n¦ÙöÙjÛ/„Sk­Dˆ“ÔWªµz’À£‘y‡ÄBò¥¦u‚¢%h»¦å|«!²¬ŠBZtW:«H£¼·æâþz’ û8ŸÔbékåV†Mç²ÑV”åæVÛý-_ wL»4²ØãFæÊï“rõãl’U³,39äÓà„}ºõ¤ÑíhŠþÙ4uôúnHGÛiRežm™½¨OЧ99f:Ä1"ûrÂÌŸ%§s¤dx6ÞMéÁšSfÿ\SË, Ø¥UH@'O·KI»½Ô¨ç ÄØwj¡qÄØe¶jþ’}NöÓK"TØWBÇœÕ85qŽ^‘XÍ6$\BNiA.L 2'VñºpœbHQË÷zƒõÁ¡¾Ùˆ7PžØz„jÉ(Þ^3‘eEÌ+ì¼1{—ÜÜbÓº—W8&ºð¸%StÑF‰šÆç£ß˜›÷\„éÂlJî>PKÔðq „Ó Î.Éù={#A{;â7Øœ’CÜ£,¸ªÌô Dãñ˜\î(µT¨P¡å¿ýE–©Ð+.™$ÜCÐý·óDw Ž¿¬17·jÜ¡bvÍÉôý*wôÞ7•œÐÿèû`¤Éý9}gz¿nppf23ñÿADAo¡Á¬ëËäpõhqø*lztë½÷ÏÂãÍ/j¬†yb*aܘj(+ý`4Dÿ†¹ òcVĆdj 9v~ÀTU5"ŠHÛéÛÎ F1©jf‹XÅf/‡8Å%nñ°yŠ—ê-ò)Ê÷ç¯ÿ<¿ßúµ÷¹ïœsï}…"b!c56Ÿ~€Se  Óa5~gÚ¬ÉV§#xgˆŸÛß{‹blƒƒE²„±‚1ôèI‰¤  ŠñÁúØ_> ò1 ± mŒˆ“¨v#5Ìiß{’,Sœ˜8‰c‡ 4ÐvÚ?*ͶŸ—¼-TT‘Õ‹“¬'ˆŸ5=@k3ò¿h¾Šž>àø'ÿŸ|Z¢$„ÁLÒÂh¬ž›‰¹MÝ\¹9ç˜ÎéÊ9€sÛOJE¨X¨(œˆ>´GZÈ:)%Q§úD¦TKÔûûæÎ̹|$ÎâÐ]a}mS¡U² Õì½Á”CCR¿1„ä…Áa‘|ËZq ½³s(‘…Í£AY”À˜Á¢ ³É rJpÓçâý‡·üj”1Õ#ÇNÝÛO/âQ9À%Ýæ. 8—ÀbŽ,JÓ0ìawŸú÷¼Û9÷§ª¢ù‚T*BŠ J”«>ëéîCŸM‘¸TiÃmàóniŨ±³ºP¼H0¦Z|qùú¤KôÎr:·a¡ÍÉJXù)¢cÁ¬¸€°ôlÄÁíÒ ©ŸoÎþÇ­¾eº3Ý$SkÞ¯¯V˯e±}Ëd;³µW¬”* £@åpï/þ—_Ô™ìªéa„Ýy¡»J¿²­ê!Èþ¦Ž Ì~ý=P§ý?úô@ß?I+¨+—ÑÀÎd’¶Öud( GÔ²á¡JµO •¸·©½Ÿ½§½œ|üÕÛÚ‰ØØ‹Sˆ [ú Ò€¤!*!ÿä;ýîY¢T–‰%CM øõf!´I9cÛYorÉQúÒ“ŠKÊXi¬ÞWË™÷Þÿ HÆ­±ÙÝÉØ Zœ±(DXÊ¡ hÉÊ÷,QŠ”¤J7”ÿßÚï#39oäl&“l"LÄ&b±‡}¹+öo?ìßn°ÿ@~ƒT,DF˜mãù²nž¨û÷½3sgnxïñ„)*æÕ¢Í°Iâ­œ¬õªìÜíÁ9Ä:–)tîì_ôΦÇPŽë`¦Ù$BŠš1òmÓ-!ûžŸš’®dRW=Ÿ¥¶-°d@‘Í̓;³útÇÑ«­Ë®rÀ,õþôÆ÷÷uåF>Â8%Õ>‰zãžñ¢Wæ-bžùÏI’$I’$I’$I’$ÉLögff’ÉÌ•ÙÛÝíö»»­ížZÿìH’$I’$I’$I’$IúI’$I’äH’$Y5‡—ðßî_RÇ®²JUùÇØwæK¤…Aÿß6‘¶Gfšýz‡JH›/·þ¿‚FS!!q¢ !ñ¤¦Å¯6ןØÿ#jg?«Ù™|ѳ·Õjö:À/·ÛX_õîU/."w·[cD´€€&(‚`}à‹J¨X_E´¿|¿›âG5¦¹sA„9í¶ Àgêç´¿°wfÎP0m°˜à¶»ËSu°‹ ;>xàuJþ§O$Y–Œ±c'¬$ëîÚ‰xX»áÜm(µ±™ßÇ» Å UÛ !àŸm½/‚­˜„,ä{¾¥ßôTÓ#l†Rföpé¹·Ò?c²?ƒ°{Cîæ,ú¾SL’ãt­ x HoŒȱéøK¹'*Ô¥Ogkeæ‰*„*ISáºLÛ%'qË‚f<< ié®Ï{ð<ÕÔz¿Zj‘å”@Nx ¸–èH罞w(ϯ´³ £}þ…{Éåàå'•GËË›âññ‡R¹\*”kÁJEçW]~gDÚ¥„ÃÞe¸²¥¼[²¥ø&’S†d)›–ÙÉ®Šþó¦¤hmëpéÆhJC ³­äÊ7e å Wcük’–ÿ+‚Й”·T0AõªT«nqÖev“kHìbŒ'¥Y'DÎxyfu6Y‚Nj­0:cµËøíþ6Ð 4D@" ºÑ€¤ÜÎH~ÆCÂ,Ò}×½Úü=<üÍkMÄë!„$„B!†·ÎÌÎÎÎîNÛݸÏÿyˆW›×¼ækÍ«M>^)Í+]^/¸-nTKñÃý=Ë5³¸Ÿì¾×žsÉ‚ ñ¢€šÌ~ŸÖ0 ÀÔl‹ÏœJù_NÔRwëÉh£UZèæÉ†(9¡ŠŠae¼ßïY ¡jTEóòïMN:Øu®þÿ÷ªÖŸ½O¸÷¾€%1‹J‰‚£L§J²+‘z½TrU/6‚@—|€°H ?D& “q{2ùÚêy»ªQÒhö~]dâÌQì, X'Z)ûA— ‰VeGø¡îÕ)ÌD*œzt.É]QŠ?̘µMO Ö—9þýaë0Ìm;=h0¨W@MN }ùËð‘b÷…]jG™L ñLúßœ–t•fùK_¶ÜxÀšád€N‹g»N×}us[ÀËu‹”–§ÀƒzØOsÞMÝ&Š!W³`ÉV›1j(¤Ô ÀÿŸN{i{u¼K xψ"è p;A1¸ôWÊ1#“Lé)ÓV›Ò ¿¸013yXPådÑò'{©N?Yc@ï;ôíÛpdÙ7³È¡Õ”-ÁR]tߣ[’-c ˜8ÀD&ï¾C{!í]U§_6­Òqó´ÜXTìÿÛÿïÿWuñ÷UûXýª`cDŽCº-)IQÉ ¥T„!©: ·püx'VÓ@|ýéô+)$Àön®¶¨Bì÷Bìn®¿y–žAÃCb$Á?®rZ‡F)üy»š¦{æÉ‡üJ¹oN!ŰèdCÍ´ª€§  ö©éê~b â:ÔPîÖÙTÊJu©P;˜% nøÏâG]Ó/òã²™†4 ‘ï2Õ\â%Ì+U3ÒŒ˜ð—þxû—ÒØ%Ý¥œÒŠRÚ÷üõE¼Ú:T°6¾>1‘Å›j”F†¤:·K,ÀÿËšš·„\wÛT9<ª…[+§zcÏgé“r³¤Þq¬ÂE+XIÈB ( 'åPiR#Ï-¿Ù}u–$‡Ø½ÆŒ•ò%·éªfƒüB(B–YH–ü½©Véÿ”4ÛàhkɱÆ[Ë*b,©¹ÚK5ñšèüï÷aú÷'¤î†¨itË420ÒTÔÌ IG€¤ü:g#tC£! !8Žâ:Qg5k¥³»^çuÎäÆGSÞ¥6M­ Âø*¿‹ÎÇÑñüÿ/ë•jMŸ­XG¹á .QÖª”æ*?IŽ™9Ã/C£o–™3û}ªþÛ£cî\µ/ð[ß96µ4ÀâõS¬»|zÌÎÌ..©Bî7•ÛHÇÀóÿ¿7•žíú.a(fjhˆ¾ÔßÌ\¯|Y“Òaí¼4Ø B!8‘Àóýò…¾ïDíª]–n R\JÛ›tµƒZj[-Ð7îõ‰ *ƒÊ 2È!1ïñÿ¿L+g‘I «{Ëš‘)Y»X‘¬–óK­6÷}“ñDdfDfˆH&@—Ù$@×`›ø‘ vd ÉI‚èHÖ¨œ «ºçiÛTÉVI~eV›š–üjF+iµÓrŽVüÿïÔb}Ý÷)„RÎ:qªéxbàöÿWåêÛ¾gæîá’ @d•5ꂬþG䟶æ!~ò³ þ4¯¦UÏî÷½kW237Gfîà!2=e…„”’Èöì™î!:BÕ’ N‹Ì¬<"ÿ$Õ­¦ÐÀ/‘¿P¦aÛ™¢þœüyß½ïÅ’ìaZýŲOov½ïõ¢— _¥UŸjEøî’©Àÿ(R‘¨kc@ïÅ1cÆî”æ·DíRy¯jùí €ñ‚»Ô{ÚƒSX9†¢‹E鮘#)ÖÉ¢.QºD‡”×!Ū ±³Ës÷C*ÿoÊO”N éΫÀÄ*äIíÜK/^€`-,@¬…€<ÿuòj!/à³ó£’6ߊþ²ÔÄëô½Îêú>†é/G9әɶ'yj—ÒiŽ3·ÝÓ÷Ç6‰øXr["t¯!LHF ü„À)á&ÚëÔ]"¶$ƒÓ4Âw:±‰`wÑØÝCê-çNÉÝâuö¶·ëÞ¦Ìl ×½Ý縧ãŽSÝ÷vX¿o¥I«ëwí1#½•=Úëd9.Àd&ØP‹˜Õ3öÓTY‰d{ßZÎq\èÖ¢ñ"A…ððÿø'ý\,êÁ8ânI Z,åÀi©òç–N$‘ýÜ3 æ…²ÇîSH¹,>o¾Ûl—e¾‡µÍ ,£¤Füë†ñ („2åݯ€Ö2»;‚Üýa`^­¨=µ·k €—æöõ]•!ÙÆ‘ ¡WD‚de¾ŽwøÎ÷íë‘—ö>:0Át³C !7c„®B“ Ýçç|î×úmè×jÀwµe[!HXD$ žëù{® ÃðïÄþÿï´Oû·CÞ²VUQ#ÆcDT}ŠlÃÙôIi*FUÈö® „ÿ¦2lÀÌå¦Nr8‘P>ŸŽá_¥i¿#Ù£¶ËèÆ§(£ŒßÐwóŸè÷$E*…H‘pf÷}¾o:‘¼éשQ•ÉtÙOŸÄQm8­¨ Dï›ãkµi™ Ä-§4%¾&ƒT¿§ûÃÙ½öDtRq*P’\¿ˆþŒ­ús7úîGmªÌ (ñà73Õ¼àP!cõ’Rråõ¿¹Ÿ1õÿ©Þ‘6·oŽ6QŒ+j" ”ÃöyÈfõôàD䫨R(^#ÉÌd÷§õÉ9í 73}j9è91d‹VÚµdSúÖg½íîÿ™´ÅÔ„)@òîýi™.¹5×ÇM Di.‡ëQÚf_>~r’ÿ·ÿþϨsß«Ï}_I¦eJ’LÉ’$Y²}·üÿÿ³âôýËÅÁF¥”^‘ ABÒ÷Œßÿýšõ]fމÉüuÏ[: ".+(UÔz«4™>|õ+c²5»ïïZª-QšºÁ¸¨fÆ~÷2×ÿ_÷–úû{}¯Ò\k¥$I2™äœÅÍ;(4lƒ;…Ó¥~©ƒ€±ðÔï &q‚ù "xS‘¿üA­hK¶de¶‚Øîˆ‹ 9pé ï#(‘G¥Þ1Air|Pšž"Δ.çJï+屫À2ˆ ÂÁsë-åQA֯І¬ªJ‚¬ƒõ²NV%Â:SõÕTÍu¥†!«»ã!O±ÉÇÇcH>=ÞAòÓñHŽ. €CRŠ¥RžËHé—H…, „ _ÒŠZÆÊ^?!59BjáúPÅ+R{VBZuº°6!õbÊ!ýï$ÁzËv‡ì¥Û ²Ë¶?d¯>q䔞îs欜ïç DzhiᢠXQ¢áârÑxɹh»ô\œT„ÓŒ!ðlgŽqBp…ÄU/Á3Ê >Žü㣎Ǿî¼Ncà0/[ª²¯Öœ‚âפxdÿQ–Ëì °Üã£Ë¾DmxxSM¿ˆELú1{?@ 2rï[*õ;àoý¥å^;Ì@´¾ØE›öœâ%Á0|`Àè lMcñcö]Áiò°ŒYH«–^¸RäÞ*ÐþÓ*Ñ1ª4j 0±#\‚”ˆ¬–‚º‰–© igt`±zäÚvô„A‹½®Ô;œ–øº'¶yß§0;º{•Ùÿ‘ƒvaXÊûaÆ^êNáß°´ª¨²‚d%x¤RÔJõê«5h4kqp"rò˜†&a5`‡6•f6“å4·Øãy[cX ×l ò6¬`¿€Ì`üøñý?¼°Jbã+NÒÌ¡·ƒeˆ]M• TRuupÊ"ZÛ© ”ՙìn®¼õîýËc ÌUb¥RïÚìŽQÎE&<øpp V Â$èFIü〯àôß'%Mm”ýHË8÷úsþ| CC|AB–5Õ^y‚Ç3¯¼û[Ÿ``“)Ûñ³4—!Aö2ç!øü ἿÀj/° idñ lp×-T`P¹d`O¢æà üA&@í"Avå¿ÃA„§wƒƒÞë„Júð;ÝSúAú¾~«o%æþÿ™°2˜$sû¨%°ÊÄ4Eä&…«‹ Å3«ÞìQjõá(vÞ„,kÜ«¦ŠŸãUó! G|+Q=Û/>wh¯ߊ($:¦ójsgùÆÛ>´qN©ö…fJ}Oš“/»žãoRÜ—xnŒëd§¤iê<|¤a†{V_‰0ó~wqÝ2Û,cø…Žð&ÎÎÉb®AI¥÷ÕáÁmk£lnnps1Hë> ©?˜UzØ]«¤T¸·B%2ÐDAši¤i>Õ->y½÷±ŠãßìÑ1[ÌÝÚ»>~’{+«Æ¼[X+£“à  Å!–Š¥úIåIA]oÍHû™8¡§/Ì ú\¬«âÀZ‰[µP¸ÍuÞA2.Äïä$[§æìiE!é£-áŹG V…¦}3$§³m‹ »æÑã³Ú{«¢Ž ´ÓÌ}¶×’MØpœnÍ3-¨’¡ˆwÖi(LÅ«¥ÞZŠmjî $f²-ÉòRÖ¥˜[‘b÷O3ï™x™ü{4~ÃC¸R>ÔŸ£jî½ÊàÎøËÐE í¡£Ê¸B—wý;ëÐåòîuï{ðƒ•dƒ-~-K>Ž?„/jü õL#{`ϽzoГðQjꈾ~î” B~ÔE/µ¾çŸë>{´7èÝÌÿ>Wº‹'þ•f|÷¤¸˜)TÌšÇÙY¯µýÉÞÎÜ …ÅZû˜ˆ&+g2ü»²»]À“>ºÉ¤7´\ä‹kùz†òpq¨¼ã)!ÊŒaãìǨiÆïbÇŽ¹YŒ¢¼Æß¡¿36@k°ã'þDŒ„ÉÓ2ùktíãn¸ˆ^vSJ¾¨· ø[s9Ò±øëÊ!±S°uŦÜáÞUZÔ‹z yÆ'ÜQ© ïv È}e®Ë´ó¼˜â‘´ªîÕŸÝ÷kGÖ¥ž0TT‰TË•éø»‡Ž¥*ª9šCûãÆüö¡¨-X€¾Ž‹¹ ¶óM|F?/Ö¦Ò?ôCÇÅ;Í4³ò[,Ø3ZÁ}¼‡Ddv`¸‘µ¨¾› _þ>J¢äÑgtû3~6EÉã7Å#Cdòo•|v#(ð]Ø=l|ÁüV|MOAhï1v ÿª_Ýšñ­„ÙÂF¨*vÒ¤²!܆ÎÊyêØjÒø*kzÛ1lЃ9’ÏLÛמàŒ{ü>_±ïµõôpÃ}nˆ=bÄ;cná½²Ð'¨ø#ÖñáúœÁN梻Ø0¶ÙWAvê„zz—uêvzôÝ…ö\­òÐ o­ª^„u`û-\v_÷ Hÿ¨z\¢¥Þjõ,v˜ÝÌš‘ï:ð!{ޏã´¤4ÙÇç•Ç_ †Of·êxé›j‹;4´àPê" !:Ò‡V4%çLaŠ÷AÊ ü†•¨|+`OwÖÞœ•œà^›‘¤nl+u_Âl±-}šGi×9žzkRÜâæë¸/[kVFriŒc&üSoR¼+Âߨ(·Ù†œ·&OÚõ³{ÄåH#%¹[:Â4ü§Æ7é.¼ë&q­¡ø)“ùö¤}&ùÑáø½lòàpõyÌ&ì†Æ¨Èõ‡EA„¿áè6Úàê3ÏÞÀYÏÔP w@'ÒØ{1×ü8…/&rV•ØËÊ“yåisõj›Ü럛«è)ò$áö¯ìâµîB†¥A¢P©DXj’)«<Ùû>§®ié-YšL9ò)Í Õj¼òV|1›´Â삽pÃ18™Ì2—ઠÛö:qîÊ{OAb(¡‡n÷É¢ÌY.r;/"’~±3¢@!¾KÂV&‰‰Ì¼ÖÁ&QµT§ër‹õ?ÔE«óã¡0‚ÓDŽ0‹rŒ,(L¶vurã±0ÂÔ‹CöNåÔÌ nþ—©ø”V‘/±Z·\›JÐÿ#Ùà‡Ÿ`W÷õz¡†bPÊ@y¨U§1íéÍp&3ŸÕlf?§9 tXp F†’3.¸æŽ{yÂ÷ýŠ+öoøÛ½¼kð;òÿN}g¿ ßåïM:ô)‹g!l9È0ÒÌ0Ç›FKÚOQ­¸I¨£V¸À¶Òò„ } ‰rUž;óÒµêýá³FßüÔ;aì¯ð(œøkò\D¿nË®ôǧ3„×mÏ3ɼ&§³?­à,l⮵{§‰ØV¿éK 8Ħla‰ìFtA¸»]ÌÄ-¥3®Ýu?»÷èÉ+3kÛùÛ ¾¶7—’…((ÿ²M¥$úå‰ÑÜ|¡wÁU ïyî‰TkÑ;’ p†àa÷—½W+…¥HßíÜg<“dªsòPÁ(ØÔ 'n•ðÁ•J(î%‹¨»ŠÃcĹŸ '€„žá1¸@ˆ‹ÇEÈ ¢ÐßÖ½¦, 2 ï aèçŒàâöÌ?Ø4áÈÏޱܥ^D Òát+FÂÆjIb¿Vl2PØÄvÁ¹‚ï§#Þ^æ×»ÇT~޶½ªƒ i¼ñ=üêü1b4cµIÈ(lbû·@(:Wÿ¬à ØØbX…MlOÀ§;é6]Ë"âCâ6±}¿ÙSûÍnïÍ9&ÿ%9Mí:uÈXe¸HÆ#Ÿ­6 Ó£ø!oÅöÃÄÕŽÈO °‰íwPVô¾êtë¼0õóf >g¢÷lEK:¿æ0lƪ.’11Ÿu®Ë^q{­=/é?g{ŽÁÀ™èÆ=¼/tóל·ÜÝwÉáp8ô½4 K¤Æû‰ýâÙ[jâpõl-²4\b²?!ÎyþOpá:wkă{ž¼2³²OøLÈÍ'(".%; xX~ò{5nMî“ÑýéËáaqù™‘CE­K¾øêóá÷úL†¾ r¦ã¾Ðýwäß‘îgÕ`èÚ̡֙ƒ,ý€²ð@Öu|-;êD~qGÌj¾NÃ_Z!ÂЋ…Iœ'r®е¸º@ü¾„„™>4‘2ËYi J¡ X¹Þúáò_?âÖò“æ»Øp$z®Õÿ;F±r¨T޽ü"s ;³õ¦ûòÆøb4Ù›‰t•N@v,(U×xø|ñ~ç‹UãôÔé÷§ÿwê2½}Øšjû¨í¨?ˆ˜ªkÑåIò¾-vf²Þç¸÷»Šîƒ®ãú¨—½ÚÇ}œ}Ö­#ÞçÜVTá'+Uù£ÿå©þNÒ‰yî¶S4s÷ž¹÷ðAí9´GOòˆ?Ùc{òï™S>©gO픞?³záôØ«gh¯ñôú™^Úgq]oÝ=_Ö%¢s£eL‚vµà]›°í¶éØwùüf챸‰SÓ¦qfÌä.XÈ_¾B¸zxÃFÒM¶’o³c¢ß“Kb¿w;füV´bþ«Y­À5®IðºW³~ƒClÜð0›6:Âæ¶eÓlÛü;·:ßž,wdç[eßà Wo?lÇ«¶>÷·ñ­÷ÿ­xú^Þüä¢v¡öâ,^À‹X@G(‡¯Â¯êêb¥®OìKð£cnË•zå«ܪV=„Õn‡´údÈkZóPÖj—¡-¸¾©ßÀUõã†rì‚{nµ w}>ì…ÏÉ3¶—>Ï_‡]ÞÁbd7~ÓûŒZ aÝ:–îÅT Gl¸ðà#D„ 5t ² £2„{·ŠÄKÖèJüéi×g ëÙO‡u±šs8¸ºôCÈY²(T¬—ù{³üЀ…'üË.ÜòŸb«}ZÛoP9ê”ÓÎøU&!19…4Zé 2åjÔ¤]§‘zŒÖg¬q&›bª~æø‚†žQ†| !lìœÜ¼åßÇ–ÆW•j]FêÑ«ÏXãŒ7Á$us ô'.[ÄÈRPÃTÀVÁ•š¬ù³ãÀÍÿ;‰xêgüŠßñþÂßSþÁ Š€÷ ú¿éýC\|ÅK0E ó•«I=±f®œA€’¯õg5 Êsžp¢‰'™tò¹M5õ4sŸÇ´ÓÍkÞÓÏg¾ \È’—²Ë‘Îêêé†FÆ&¦fæ6 0 C`q(«@…Æà$ Mª˜rå‘©t6—Ç76153·°’ÛB`Þ¥I=FD˜PFô•Æ`²øUa‹ ÿ"1ZZÄ&–ÝéòÆà:d*›ËŠõô MÍfcçàäâæáåãJ“fì‘FD¡1XždG¦Pit“Å–ÉJ•Úsh ŽÁd±9\_ I¤2u¹†BSË¢%ËÚý„Õf‡€„‚†!#÷o¤(WUò‚ùY¶)³vöëmåµöˆXC¢wØ1 ;í‚”]Òlڮꓳ¯íݰÁÊ}úRÿúâ§ ¿ «62j†$»gE՘݄ŽN2?ÿ/`±Ì [¼;uA÷âý¥Ï¾x‚!¼Â¼Å»âCßèãÖ¥ÏûO_öW_×0ðm×{òB%Ð;ù•Ì‹}‚Ç…‰ x¡Døßˆ®¤èðnÅ€÷>u¾‚›¢I<¸M"9ÚÃ$%ú(5Ô.î¨}¼Ø¿ñ;ÙÒ’› R8}MéTP=•RYݤú Uƒ4QÃô>\¡›éef–iUÙ¨g¶$ÒÕÙ•þ“cÙí9‘¬Éµ².wó‡ûó>Ç|8ýœž-ô:WøHŠç‹Œ^,šÄKEWl/ý¿x›‹¯”¶”‡±Þ¨à’°§ÂKÖþŠ¥C• Ã•ª#•®£U0¡c5·ì¯…åäTm®DgêœÄù2ÕmïW/}Xw6}TŸÒC×ÇúäÓúVß}^jÔ—Ea¡7GÙû¶iMóW;5×ßÍog-3’–Œ’µ<(Ekƒòí€ÀwJ— m4‚,‚\h]¼“ ê%íÔ½NôýOGCW96ÁÜ5,½³ûCئ­Ž÷ôÔ]Ö}Ï È¾ãvf?ò[³~å?é}}ì§OÝÕô-‘ZÛWI<ø)1s‡ÒÌ7CÐ2ÈN;7%0yšlþ– ÿ ‘’3¸Âü'bd( a *$Í/²ÂµÿÔlOnËkè®â& D‘j|2ƒ´S½Wñ›Âæm]o)»¬r_Z^¿R ËZ3íž;}˾¾ÓH­It³õ o¹NÜ%«©VæöÓ|×ÑiîIât×ë ÷ŽÎq_oû#Ýlœ‡ó;í‘tòž §ø-NmªÞ†·wÞ±7xçÞ9Á»ðê=û$ñþýù£¼û+ >•üÐ,|öà[ÜÜ‹¾|¿©øFoúÖýgtãþn©eþøx)J±E0ŒQŒc“¿ÈtÊ¥É]4ù.™b¼ºy,ÍËË"?:GñgæüÙoröñ.Ö9ÀWã9Ìž#ì4þ?± W•}HûѶ;a[Im£"·ƒÖ.>Û#JÚ«GÔ>#¶ßäu ngÁ©]Vç:¨ÑWWÇÈèœÇ'zÁ“ˆg>ñz¤.¬Ë>Û/7 #v_vLÎÂb÷”Ýnl–Àwl…KÙ:•OrÌÌåÑÛ \Á˧OÁ5:7ˆzÑñ²‚)±QˆØÍ 1¡>`ˆî"¤Z!ž¥`µwÄÙ÷Úåê\Ö`£»‘¤ØŒÌiÒØÑV’î.Æ œîÅñ€ºé̾œ ./]×èg¶>.†\î+hÁyÚÔ)ˆŽúB¼†|x¶)îå¹Ã‡x /1»4u%q–ÈÔ! h9ÖT½žjrW#Gvg|f@Òt²®…~P†”=ê…Igï·*£~xÂh> E Y”»Ä9ËùÔ!‚È¢ û¬Ïî…–³H®3³›a¨à`-°+E!1×VÑ ne¹Â!”ÜÎ4=&4E¨ˆY±œÅrQ"Wö`\ÄY,Ê1kIÕ©¡«;Ešñ&Ú»n·ì®m!™ÜY\ìb‡8×9Kl‚,ÖåÒ)PUáîSRm”‡©ÒîÝP[= 5Ñ\!æ*Ëî½Ü“qLd ??ó½ñ̼ì_â‹YV[¬t NI Åg ðz| δûJîà™W+ˆ±¶Ÿ×À@œãq«‡qí߸¯öSèêR$~`иÕ ® JýÜÀ´‰³6œ©däx¤ øf×DÖÚ7Uwo·Ó<:GÿÓcѧ¿åˆƒÈ‚(càÄœø“tROÆÓ˜ýA›•w¸ó€ô1èˆû<â)/á-cLJ3ø­º­ë¶ƒ±kmcH£j<ö u¡Qo“‡Á°èöðF8’‘ æ`–ǃ2Zª£¿qÿ€š#¤-àx°âY¯æaoœ3°vàݦâÐ î×y†WM¨"®rmÌ;ìÛɤ}rW”´&7EúØ §>­ƒ,›Üý60ꇳ‡0“%ÆGZê³׋:Š¥¬{±6ë#.yJf‰†Ú»ÌÏËY>}&Ñ^Œ.؇3qóãuFФË!àó>Íj.ÁÃQ}ↄ0‚Fñq+çÕqXÇÃy]d]‚‹˜.<#»&¸…¼BƒÒ#wú֫ýðDeqá-aòä=´ù-muO¾½½nQOåæ»Ú s'»w?Z¡k¢)¦›e.ü[f¥“u ãä:U§áøÑÑà‡¹Ønx8ƒSà@r¹àˆãN ºWsÏÚ„#ä‘úЫrƒÿ->Ã?O.Ü’Ã}P¢°råЛî-ïª×t:sû%‚ô€ónÕðMÁjÉôü ¥•hI'—b*RßNìng–å^–]Ž 0ò_jÜáWC$iƒ/Am“¸M“ŠÛg~ºƒc²¾3™:$|M§Oȯè?š!W÷ysYˆùœ˜d4Ÿþ7ë>z­;Æ&‘/ÝÛVËKº0)’fá«åµQ›=MûËR­ÛËèDö'$Ëh-+c²÷Ñ ¢Ç¦X¸øÚw›ídrþ¾°õþ²TŸ„OËh¦4Z—Ѧ,®˜É~z¹—/מ¦Íx°$óâ÷Ü-Þ2Ú5Z˜²wH&h¸u)©eÜ®¡mÖJ>ÿæÖ;Ø€6 Aª¦Fj§^VA-¸9VýK“4oAmÕ|ðUÜ­¦ ´_Ó©>ñiAqƒ©Ÿä˯£ø*«JàfÍNýèþ½Æì ]í†fÈô¡º¡O8ü l¿D)N"ƒ  Óÿܘ¿Læ\!ÖÌê‚,®q‚ÒDôÚ_­Ñ4ÕÐ5ÈN]–•—F¾W?Ó zI¯ê©ÑÖµfmj™ªd®¶Q«½tð5'MjH£Ümü”àï¼üªE‹íÚc¥Ucú9¬ÌT^ŠÍ»ïål×a¥ø³ÆMÙ§%'Gô8çæ”W{czV/4ôX\‰ d&}·©{ýñÎþ:ææ R£ñ=°)Îb¾ÌŠÞÝ©Þ蹓ûy”§‰¶É &Ĺ~™Lff"‹Yÿ&oýöÆ0yû8zç/àYˆÖ÷ÏÆ>Âì§»OŸä™¨G‘ÄxðÅNe‰'¡$6ÜÜ*#ljQ4ÊêÑ,uþ,¨ècP¨ÂèN×”‹„á1üQè¹+Qc¾û¦œQ”WÆ¢êjÝÒ^Êèj ñØjši©õp¸ÑÎdb6V¡K"˜}ÝâŸD_QT™ƒb·`þ÷‘ô+a*ù!2oãŒÝÐ5¤6gDÈÔ˜™WN^ÖÍŠ"P¤ã>ðI‡þsÓsKz0»¦åô“‰Ï©#{ õ˜ˆµÙEMÈt™^3`†Í˜™dûþi>¤s@y³t˜*5Ê…ù"õ& irf…æ´¢ íéTÐü­øÌU(…^X…ÛË]³N+â"+J+ ,VɪZ «mi°&-r†ùfí3®äå<î;éÍ<¾<‘[îÄWrR'û¼°¶Nù”ïÝS;ÍU¯žŽ¶úéËÏiƒÅA„iÎ`Ñøñ` f !†p6U ±Å“P’T*—ÊÎÙÅÐÚvÙ®…2û‘ýÓ۽б ¥Rj »'gÜ2öú¹€û*…UBi{›|”SQÕaµÔÕÖÉø.Ñly/@K­µ+øf†P²©;‡ŽåÛJ/Ã’Œ±LØ3y¯“ÀÞ«¸iïJ ìx½JÙ'&ƒ…=ÊÒÝ#ã»ýŒ°šÔA>º[òù T@ kŽ ùOF+sÍ:Ðò¿gƒ¸¼  \À  b 2 ¯” ÛPë BS.*÷xÈ nÏæ„ç¹tÅM€ýh³?i7§Dn\%VJ¥WÖ¦]ÅorPACÐ4…áÍaèŒ.U6 ÂŒ#Ûçö`Ù®µÃÔA¦6kg šÓºÈf¿ŽæãƒÔ­à¸Ø ø¥ Ò J>ÏÈ_,T'¤Æ„;ÇC’ÑØ ¡CÝ<@Òˆ4@òTPñ¹˜0Ë8‘óàÏßU‘€¹i32ØŽ.£¥ÏX™àˆjˆ–ºé£wøá”ÐL§ ÏѪðʹCŒTÚ𹀎1ºê 8„Kd…‚¿wEmEã›30ãè“ýš#äDžÍi‹bÔ"$*YE ”F9TDêܢˀq:3NŽõ›Ç¾#»+ŽFû¨þ¸e‚ÉÎg_é¯DoýGöƒPïï§ßÌ/+-:æ¿EÖÖR++«¼3§âÔŸ|Ëé:Ö@&©ò£9MÿÅÁì[eÈ.{ï€_dÛŽ9‰%·¢3Åy—\u#Éõ<ô¤NÎÞ›[Å{Ÿ‚Ž;8OCL÷b…›E²dú6>Š<21øÏœI–)Œ(qp Wq·±†Á9aT̘áX×Ê[ÿ5‹â¾S‚YÈ#•lŸo¦rj¬ÓÃûeš…É60 êÿ’\¢¾*l9ïVGˆ•;Lp¼Ÿé–k±­ÛGÀչȥ®p{8ñ¼Müü„f $6QQÜ—ºÛ©Ð§ß“´è>† ó±äbÍŽË™ÂïXT±%”\ÚaŸ)³Z«&yØ•V±´É(©Œ™X†áCG} ]bL¢^ÎP¨.oø6ÐpcM6Óüñáƒtž‘VÛh»½¿‚kø¾’­ÿ­“-Ùõe´¿]Ÿò^ç]uskuÿ8úa½ñ”6°À-×òúÊxâ“ì ô½¸ ú<”úƒzVpCp„˜`ß~c†Bée½‚÷2L¼Ð:^ Û“égR²ëò<]ÜyFfÞr‹¯^•„¾ }@úSé†ÍÚñÈpÆ2™™Ìgé9«êÈ2ý9Ödß¿0  ,¦•íì1òR¥N9Éùkœ«©}c_È€.VîóĆ÷e¡ WÄ¢½Jt*îëHÔ}pZ‰KVÊ ‚RPݦÓ´$þYÁr—5ˆ æ[¦ŽT¼R•­B•«Yµê4QökT‹šN±æ¿……Ô¶ˆ™ ñÛ,I"• ²É£ðŸv¬ž·ö¼ ‡©’Oó¼¥Êa N}Ø yo·ø"£ªò¡•§ƒÎ·±‡þubŽ!&5<½9[deÐ]œ¹.ëlIhÆÇàúr•DãÚˆ,wÂòhªkcš˜âˆ/…D’â(¯êP¤a—Ë¥‘wèŠUXµX—Y ¯Üw²hýïGA#“K-¯ë’…¿ll”LæZ`Öh£Œò*©ªÆ?={±Ÿ¶†ïM4×JíßQ:ýM0ÎSÄ×àÆ ˜ôØ^bˬäY^à¥~Wª¼ÁÛ\ã€ÎxlØnûtd1Íó›ìø;¶CN½fqÖ—]ãЦ;î{äióE¯xëÃhdÀ˜ÁÛo’©f˜mÞïìó K,·JäDQ”EM4EG ­úGiO8…GøïŸé‹3–çDQTNBVʮ˭UQ•® ªø=óÒkï| aÁÜ×Å+“,8>bð!‚ ¨e~¼!‹°î@k#'Ë9bcZù+’Þð”'C£¤NDÕè»Ôèâdm°Ó*Mj¢³Ý÷Òsª¥CÞ¸Êé­†ž‰Rô1i‡Ã,¬Y¸3 ±ó=ÿ©›´üÿéax¹g…ÍG(܃3"ˆ›LübÂ-ž¥ºÌ‚°VÁ8«Ú € ŒÕ¤šÞÞ®S·¨95¯ÔVµ[=nMëXßF6µ…!¶µllü`Âñ¡†vxn¢MIäQÙr¶¢­l«Ùš¶ŽÍ°!µ [Ïæ´yl~[ȵ%l馶¢­’zZéfðªÀ–íÝu—ãUïwªÓ^Tže®|f ØÙÞÛ1¯µ}ÌÚÂËd2e]’bõíwTa¬âsõñ±žq‚rNÆøûÙ†ú«ÔïØ­Ì©C}ųçÞyºP?õG«™.wÜÛ»X[ÍN¾T@A@TÙ@“.»Ï‹Ç˜ü͘£ YŒEéÍÅ|­E*ŒY÷®³G7Š™‹ìG·ðIAì2FÂcàðšœjëØëo‰Ÿ<Æç•õ‘åc È7êü[T$áV]‡Ú`ïW$XïÈ»4z¸~öñ–-çôoOlû"û|q†P¶Ñ6¦£ÎáA<É:¸â»qŠ„pœ{+º0hÕ°Þø}ßúÓàýL›h“šÝÇ ¨ñ¼í2Ç„1Æë.iÛëŽÆ:„E€¢õ}ÙÒrÌA¤Áè?rÞœL´Øå„pxã˜mùÊÙ¿)º¿š>ž·“+ÙÙ4C¨Q9°c!»ËKBvW—¾àf&×A:ø¹u%vå¹[ž³ëz$­ð ÎaâKÇ „œìÁ ªVC€ÿ2!T‡yøNF¾›/?Ô?­s‡› þ6‹‡à_}B^µ†˜×1¼ÑÔ«yÒ½m¸ËùknǨ"¦ÑǾ©™f|ÁÙ¤`å•À7c–"ðmtÝ7x¶Ì–ßJ's«^×ê(¶k÷ÙÖM.´m16V¾dí|ã\ì0õÆÇŒŽa.7Àmø4ª® úªì›WúÀè}´_ƒjx¤ÏAƒŠ#¦GtÑïîݧòÜ#œ ‰¢%ÚÆa}${=ÉlÄfæÝ£úpÂÊÂü¡Íh0¥pØî&xPvtqPžƒ‡¤ƒÊáÁPWC"Ä]¬tÒˆ ὯéƒD‹ÍÊT·áGb„ºÙ¸¯¦0ê¸9¬¥ë×:«àúÃ?rݸ¬Ù€XíÀéeÇ5M;Š„JUÓÍÁê?Z¶. iüZâ8᤺vâEÛÞva ÿ,Ïa,>Öš]€Æøû€Z²ªB‚¹N¬Ê#OÜzW\Jtä²N#Ó8—àGdon:ýÉ9EiFÌyaÔmw*NˆM5Ê“¦QG-1pi¸Ü¸QcÚ>‡çK©Ùm)aB@‹|Rû PU±1µ±Ú‹i„²‚ˆ}Á>ÃY®IJžFæ‰ÇNZ½Oôœd€Æô¨BS()40pönGG/Y÷³–ßísô†+ ªù¹çJTòÜœ½ ZÛ,§Y²Ñ9`x™b¨¸æ1®Æ™ØÊïŸ(¡G’G)U¦¿÷a• ä/Ö¨Xösþûœì/ÙP3 Nr¥âs)ÕÕ…Wp¡}lÜ»KWŸs®ë*`lR½¥ÛâGx=òcçf‹‚Ü\Vƒ.¹­ä ^‘e'ÙÈÓ×ÂO—W-SóD\$¹zU PIñBkÉýèÕ‰]aâ[Û‰6n¾Æ•ˆ››¯Ç\ÚµÖÝ„$Už˜^’f|8'¸ke¡ä¦T×Õä¹K¼æÉk«…O òªòYMÉ’7™PB¢íW’ËÈgCŽóøÏA‰¿» %Ä­{9â‰!«èDõ ~धà²:ÖQ8%Dˆ¼žl€…ðôüC ßy1áÀGÄ‹[éC/@ñ¾a^B—»ywWœu7p[n7k%NøWZGâÂK€01’džçîfJTiЦw¸ß,C&ÌY±aÏ©h»Š+±”Ò]iÿ:~œŽ×fÊ­`öWV%É’&ˆIÓ^“*i6Ñø¥Yä§ÁH|@Øu×–SJ®k¤ñ¦šmÁí`(dH™–[¹’;ñ·ÛïhŽ=ḗZ8ТH·Å!p 0Øø Ezô( A Æqe¬ ÞÀ… ñ€Ãßy¨f‹çŽd%Ø7qIÓ©¡ën¹ëÇóö|™/¢x¸¯æ5½ŽgxO^<½ó±QmB“Ÿ/€FNaô¨'*jŒñy£? ÖÕ2<áPD¹œ‚qüID:r±»x6§ù-ji+ZýÈyÙ d´„Z(›T“êc’¼5ŒU+*íµ±íÞP+º1ˆ±×zÀIwc—bÖ§ËNgi—Ûœñ¼ß2É(`Ah&È  øÙlK°щ’ø­ÒUH¡€šæé(­Ð:mÑnvJ­§Å4  'êTWùº©¸àEaÄDy”N&Ü«†˜`…ùcn°?ãM…N\“’ôdqÒ–¯i±“Xur=HAŠÕq;¦Ì@*Žöþl²wÛµ7•ü¶<ó £¾,¯Ùïý­zë#ûÛXêíð”ä“|rkØ&Ÿ©_iãÇ_Ýú;›0IRäé^ŠƒÉfÆÙ“jHü[KÐþ~_ðff³0o.gÍž×™FþËÙ7#G5îúë²áåÆòeðÑçâ?ç"‘ܾdxø¿P˜ÂQ÷dL j’Øx ö¯$ !˜ê¢d?¤Ë"äøOǨºa‡Vë*kÏÁÏ¥–^ð÷s€D=¸a¨õ†ü§h‰.ÒA¯œ±ÏËÓ`ù[µÉJ€E%Ÿ®\¿À¶W…¿¼žÖv½Æ%m7-¼¦|¶5&T3ûkén»Tkû©ŽD9J, $“Fæ?¯ú~ ýü#¤ˆÒÑ¿œø³áhX˜º¶Ânh…8 B5Æ÷ôQ?«Æ½5´Öë¦6ðUƘd¦ò,±º¥?ÍvMg¯¯”7n'}b£{Žó}Εn¸gñ^¡…± ¥ˆ.–¸O±õlHJ–eVbUÖ`m¦1Àc,,·| *¢øj*¥l3UPY55Õù]œËº¬‘¦Z ïØ‰>Ý€ýÆo’{US½—aIŽmž…ߑʭâ9^”ßø†×x“w¸Á‘:ÿ=ë7.xï ƒƒc€£N8ý .º2ô„©×cî‘6s°U‰@Œ Õ·žâ:·ÜÐLúEÜÔaœMâ‡Q;E²X‘©Ò¡ïµLJÅAŽKysÀ ÇÅH’d@þ_Ð’Éàœ5»Gµ¬hkO‡@ãQ¼§s]é×âW=m³Ã¡"( ƒ.C¥ÌÊ‚,Éj.Ý×[ÊYù$$’ÉXÂÒ½²`o‘q™’YYeYCb'#L±‚-ÀÞH¯È:cÏŒà&1¹©ÀXË`íȱÀh„'îÿ/òçåWä©$ÓïÚ㟷ÜnŠ¦ÖŠ½¦ñÿŸÖ3óû¯­RêðþæM˜Ú)Üúg9ÏòCìB²IÉt¨ê›Výhóc!áJ!Ù(“i.똶]y €ž‡ss¶M3Q‡T‹ìò¼bRÉ*Ët41mŒ]î×lúÇV#N×1)‹ƒˆ~æ'ä‹)Ö³.kôT²ð ]’‘Ãç{ ÊŸ·j¯€ÑÝIœþ(!)ý<˜üj6ÏòHTûX0]Ì”T÷÷ß·`?~<)n$jßüX >©Í|ÒøØJtÝZ*¥·òëiŽš•d2™vy‹Ž™Zûæ>ZÕ•¼1Sg¶ðIÆ4ħÕ.3b~Æ/ù«Ñ{€%½@ŠV}óaG5ãšþW_múKø|’]ù7­X÷qXÞ껸Q‚éç²iQÙU!Ð2@T –™’~fŠ_5%T©–ÄS–Ýž¤ÄÉWBù¨ößNVEÚ”?7Z87ÿ÷"°›ÇI'»õÏJ2™ÃìmE5K§9Üå[„Ì@WJa™ïæ·£!Õ”ÿ^\‚¥,…#¼ÞÖÚ[z¨¼s#B*à†ùØ Ô¥LNÛBÉ-Ö™ót¹ð>ÇÂȼ^ò¬è¶¿W"DZ®ù³åN]îé>O.YKdWÄ-y‹_Ò`”]x#Å_%ÙjΤñqâÖ=s£`•‡¨•¾Ögj•‰×Â}f#rEð”#.rzúŸÇš9Éo®œP’#ó®$¶=¶ß¾d\‘§›!‡X¹CÏC)Û–ÍÌÃ1àb¸`0}‹'î6(@¸*`€¼6Ù¹x³ž  ácøõ/Á³ÐËÞŽŒ]D3•!®`>‹X:/ß~Æ éü–ÍãB/^q¸°Cú0W¢Fз¹†bŠ€®Êžé-{ <€.°ÂEHæ.|ø˜ðøh£2(k$±!#>¶aä­÷ÙÃcZ ±·<Ïé4CU¶j gÁ6sµðÔ›&$#ªMoÖ˜ÓŠ(:£½_ °P€òKÍÉLHâô`™_¿Ö¤ÎÔ@Ó:W㸹7=nB×ð%(è6£À’‚Ù±à!A¥jäê»ÂÉä"G…rñfãeÂþ¥è&È EMÔA›¡»Ó`Dˆª‚Q Þ¼#뺓~¼ «ÒÝiŒB€leúxØ)š¡lJt,(¯¸­„¯w„–LoAkwíüθ0*+91:Èdì0'⃧`)¾[ÙØâ«'¤[7&³ér8Âç“ôn/-¥î4c91/¥šëÁbGâuÒúkè¬)±€ˆ€Û†rÆÎjÓ“2ªOå#n?3áÞgÑŠ3²_ˆÀÊX|ÊÚ–ŒEÁ[Áf" ?Fç‹MÈLH(&ýP09€Ãápáƒ= ã"þÕòèëÏìnwsîÕûÔ›zÁ9ë2I8#\Ö·(íÃê¥N_Æ\Ót·"~b`Æ)dä$N§³àZ-%…@XŽT‘û@ũž€ƒ)„*Á%Á•íMüÚì< , $én/‘Âþ¼lò$eÊ Þ4ä B­¡JEÊMxL‚Á åÖZïi E¨Õ¡[dHÊÐÑöÇ|ÄÄ}= 5m4Ëž ”gÿ $ÌzG0ʽŽï$–’u¸ó ;3xÖ.þ5:Oµâ£þ`]!v‘*M2)ÄJü~²È…µ4A³à»SëY‘Ö.c¨3½Õ»X ‹‹‡‹®pš8.²Ä’æ¢IÑ ò á bްÁ|À%*Só Êûïe¯üŠ_oà è6rª° m²ýWùáŠ$Ъ°57´Ï'GéŠ*£ÚaY™ZhŸæ\ÑÎäá QmløVœnéyQB@[ÊÓ²GéÖ˜Ù"÷Ú\·ßêöGýÝ–/Wp’ чӺHÜóÅÉîMïxßG>õ…#ž¶:À¢@•ëK-£ìÞŠWa%•WåÈ9ŠŽò3Óšc±zGÇa8ž¯Ñ±Ô7Ç;]÷³à+=ŽYýŽeC`Ñdë„#íÈ9vu-O6[¥Ê¨¬º”I]µÊ]2pÆj–—κ¼Çš¨ßäX¸1/Ýpƒx 2ÚÙo~Pj5W·ºËÉ‚˜ À$ Ä B§XAÖA÷èÀ1(AVpC ïÅ! %”… P ªB ¨ i€Ä 8L§ÓÙ—…Ò¹t>]H·¦»ÓÇ£èë1¦±$¶IPÔý£QÂv~ñóÖʬ˜*¬Ò¨Æë¶VŸmˆƒ .Hƒ^§Bª FZ$ëtHCôhƒƒ°`V,2¶_g q#ÐÛgÕ ;±‰8(nWK£N=o Ž tÒ)!θ ÌŧnÔ¬Ý$&’t¬«ž¢GŸTfÒÝ%Ã}¦yH¦ÇdyÏt­mé¯ñ­™Yáñàž`Ï'€õႈ²9’Qb¿ŽÌœŽÂœ*é÷1ãÌ帙÷ñš~ó%h~Þ$ùò©ŸY˜¯c 'J¬â$‹¢Êb©[Íÿ€V<º%Ðg\S¦¥3gQ«²Xs,›ß ù «V„äZÁ¥7 K^#þ*nJ©²æ! ZT£¦%uZZÖÙ?ºÛÖë =G@ã€Á`TÓÐÁ˜ ÖŒǘnjk"û†{¢Ç;©)œÒÔ|˜Æ4|™Ö´}Þ`¾ÍvÎ粚 [ËE,ÒE/•Õ2—ã÷ò–Ïc+âµÒ•ñb•üW½:kXƒÐ5­SØ6+~ó[”½åmÊÛöN”ì‚¿ÑÙ] kPÝѼ`dzÀ³¡2*}ÐÙÓøœ0#Æàr,îbäÍ=Ú|øêÛ$nÊ Éˆ]­ÓBôørø#/ß~%êÖ6;’F¶’ÊŒ•Ãd&»H˜œËé,×s'wq†l‘7y¡ì‘y‰|*_ó:yU~çbY¡/S® ð[jšj„ö–bŸæéãþYÍæõ¤½øzÊiv½Š&”ÅU Ó®¦îdmrý¦=¯/ ÊPéèRÏÀ:'<IÐr±ny.1ašKÍZç2«€œâO’¾Y:oíõ²y[ß)Ÿ·Óþþ¯»¾w |ÇB‰dçn‘îÂ톻t·é®Ük½kC¡ˆÉ(Ôtœl†79ûƒ?j”=òk É`×÷rŸZn@Aq‡ç‚€Àˆ„$Y Š@BB""xrr‘ܸq¦¢‚§¦–HCOKKÓ':^ļy‹¤§ÇáÃG_¾Œ‚Ã20€…  .Ý$“ĉK D¢D^’¥ K•Ê M²téŒ ÈT¤ÊRKe)³Æzë T©‚Wm+¼í¶ÃÛa7{ìÁQ«V¢:‡`Õ«kp 줓øN9vư‹.‚5kFÖ¢쪫Ȯ¹ãºë°n¸£U+¬6m0nº «];ºtèѯW¯©úôÁ33ƒÝuì¾û`={ì1Ø{ïñ}ôßoàÌ0r`£&¸ ž§:‡—b“ÎO~¨à‚¡Ê"Â`ª…+‹ŒTíëa„™i•e„m“c„›k—‡ÆÏG¢‰‹Ñ¤¥hòr4e¥€ªJ›ºš!|¸6M CÄQ£lD¶¡¯§ôi õkÄú7q hÆr¦’N' ž©&w·$Y³DË™ƒŒšK=Ïòç{†§GM S´H’’%)]Jzj¹š*VHRµÊÕ« S³Æój׊V·N’úõž4ÿ|ÏiÜ(ZÓ&S7«kÁlÓ· 3¶rÍÜÆcÖv/êØa´Î„ü]êêþe:;p^Ùyußb‹%údX|h…Ñ„yÇJ-9°ðÌRËÏ-³âAñ%„’+ Œ\#X|aÉ-ÈÒ‚eaË#VD!¬ŠSOP˜HR™L™eCVyJ› MÙÚR´­ÌÍöŠ™vT©í¬QØUG±§ÉÖÞµý]¶QKplBåø”Â‰¦“s³Z°uz‰‚Û™?Y¸` ¼l ²ŠÀ (dÓ 4JƒÅèð¸"‰D¥ŒÑY$.§…Ï{ꦠE,ÒI%OÝ•Y”еjL«ùÄSÉlúÄkKÄn#9·§Åï#špèǵG4ñ˜.™ø œùeõu?%Ý)þ÷T1kÍ,‹ ÒÒêR³¹£»@'hëF^ÒÖσ¢mXFMÛ¸à…“XÀ…[t+¸b@€6t!X#—c¤õ“‘¨¡7(\,’Ï-aA¤‰GFJA¥²¢Ûc0±Ø"I¸2vB}bŸ“Hõ¥’ûœBé Ö£!³™lN¬n-£x©òøí‚Ta{‘8K‘$V±´–Çd±Jåµ<¡H5OÙ^¥*S£RkHRgÔÑØ¸È|“ž›šÖ2Ŭ só>XZvoeU®Õº‰6›†Úm›é°+×ißD—CŒn¤ Ñpz°ô’Ãé£Ô`5Œ~ZT‹é¹=Í(èYf!ϳC(ä¤0ÄËãe~T#‚²^Öé5QY¯‹ëô†$‹µÒ4ÖÉ•G5¦c\Õzm!éŠùXÃ&C1ŸcxéÕ)RÌi»ô³”ôsԨ󴤋̨K¬¤«Ü¨k¼¤‚ú7…]ßÕ¿-îú®4í¾—µ†m½U¤.,õPêãÒ€¤!-XóÒ„Ü 'Ð ¨°`è! b :áŠ:J(¨h¡¡c *Žp ã *^á…ŽOø â~胧Z°àDNTˆàD‡ NíPÁ©›zpê‡N“0áÓ4,pb†Ol8àÄ… ŸøðÀi>|"§y„ði8-#†O«HÀIŒ>DNëÈ £ˆ‚,Ê( £ŠŠ,ê¨ £‰†,Úh £‹Ž,úè cˆ,ÆÙÄ3›Xc% @0 ?P IàÀüØb“Ä;?Ž8$qÆÉ+.IÜq3â‰G;ÞxñŧüŒÐN(!£„¶ÈЪy#”Ýís·Kêηw`»Jª†j‡š¡Û£0¥¶º õ4¬ÙaÍ+õ©;i^Óe2]Þ1ÕÅÝ’.-,×ÝE¹®,»º$Õµ¥ù]_–jiÒwëÐÝÜ„ëႼ¿TPõªbOÔW÷lCó~ßE¥V4 Ö)†{%}T*…!G­ °Ï™¼¹§S§Ó§S³é×ÍØUP#Qcf†²ÂWŠ…¡®=ÇÇþÝá;súŸ·Ïú¦?¦ú¹Üêm«p†ÝîêÍïSi9Ÿ u|S…n#¶|l›$ Aáž@-cŒk|Š6¾ñïb×ǃ6¡kþ [E“j$V+UX-ëù›†5Ê^“hùš…ÜžZ¸{~níëÜÖ’Qª¾|éáë—½ðûÖÉüê¬ßØðk«ýDÿ«ó®®kò¾dù,%šç5@‰ò™vÃÄç¶„w´„ZÐÚÖžFöV \•ëøÓÎ0ÝÔß¹?åO]²žŠñ !›94ärb ƒð$2d ·e´ÏrÚT²ñÁÎHÏåê…{æ‚~Û4¤¥·ÅÚ:L+oû3÷÷öj³KjZÙ翬ϲ4RV­¬ZYµGߊ9yô=p?ýˆû‰ègܯ¸ßqGqŒÝsíárwe :ÎÛÑ ÞžâíÑÞþD&C/ƒ„DA¡ƒN㤥¤%¥G“[ì6^LRÎ ‡;=‰-epÅ7Ü4îL§ºÒ©®tª«!Ϙ„Ãý2yÁ †¼ä¯øˆ×¼á Ÿð–w¼ã3ÞóƒÓ¸0^Ÿ¸ã;—|\~ò“øµö›v·x:}4þ¿tvšÊCtù;™$_X“>ÎC¾8¸¤wË׿Áÿ:ðÅ¿û,ç~Íj2÷þž9?ù^þK'â\ÏcSrÁ̦Çü?3×eþ¬Ëôt™.˧fÞÌÎÛúpƒ%ôhz ™ ý¤Uªœ'Ê΋٠õ¼z©µ7v Ù„¥®Æ*õtï]É'W¤B7ÿŤ‘K9£-K“ ”´€B¢’|Qò]]RZ%WþÄ™§ÿâ2ÛJŠ/IóÉç~øè«Å^YÚj Šad9hš3§Ñõd0.®tÖÚ%®š½ÓÊrdž^˱õ(›/³iª9ÑÖ ‘M#.+ö² +/6 <˜ta¬¡•uÐØeÝ:2ÊTaZÅëy29ÛæËp(ÊT±à±U@ 8 G&öb ÆŠæÂý(¶pšÜyz.p@xAï8B-sŠºÅæ¿„ ;¯ÝyMg:•³GRN“•SúQ›]xpáÎ]ŽU¹„Ä€ðÇhìrE—82Pà Xæôü’Í—9 ÜÐÜÐèLÖSíŸ8s Ü!УáP8Åbêêê-òx®w¶SK 9±;£3éÃ,ÿ“æj´£Øʵ£kG—Yñ€ð56\ù¬¡ÊçÍér“—/;Ê»‰¬Î0 †a†aŽ€B!„BŒÓ£m|Ö9ùæ»ù8'®£8Š£8Š›«¹Ÿ{Þ%ÏðkÒôŒ2àÎÒû20G–Ô‹Å\XÒy “ÒsÜ–\ ‡¨U®C0؇B¯Ÿ0†°œÃšS7¹dù¯3¯¾8mãmצƒèéœ.Ë·xãu[DTi¸WàPáÑV’òÀ›ØhN‡wI8£¤¯ •®gæ u]ØíõÏEÛ™®·Gœ¥Ûwg›µ&ÚƒñIn °ô2 Ÿ ö¹ ä“Ëÿ ÿš%ý³oè'­þ'à$$Ÿç óæ¥œég|¢7rdòŒ?{Ýû"oyèǯ2™y'6NMQçñݼûôßOÖßß!ï&Ô˜ô3Yaüqÿl~,Û`?ÉÚÈÓ) ê<þ¹céÓ~åô€ú¢ö@’Ÿhà ØÆ¶ï¡ ŸM,øð›£løZÀª?œ«¿ùӵР"Ê Kr-ìÚR\ú/jT¿^KE&Qõ×Ùõ²á·Ó»ÌÊbÿ©œD؆¿;ºŸ¯j'gù¿*Lp¼X¶ $1ƒ ýÊÈ4Ò­-FuBÌ!³Â¯ D)ÄüÚ˜ÆÎ‰U×”öÞ÷ñ•1>ývkçºþ‹fÔ•½ƒWcxö‘ µ`S·%CÆÌ¶mÑšu—9/írPÔ+YJ³Ú ²6È$,á 0 ^óc²7àC°ñáSž×ÕHª†‰sjö~õå(РîÉÚ(îN.¿ ¥>T?z8%ñS’¾c@b—\ŠÎ¡"oî°ÿ Ó˜²æôEßóõì¶ú%÷MÆæ¾WH`òV•ˆòëìâx@RâDæ©“>qs³Ã”.Sh›–p±è®ä„«K¦Bz-¨$$+˜tSª‘¡¤îNá 7(ŽíŒ¿ñ éýK¼³ÿƒz½$ }Ê-æ–³Öôñá8ÐoSÝÒ&Ó0&Á#h·xNïΟԑºg÷t·ûº±—ÀÖ­¶õ¢§»‘jWb ;<3ĺñŒñö³l4‚ÄâÒX‚ÛIøà§:.»„[°ÒŒŠUF˜›"8øP{£¼•êÕ ƒlÇ“|–øboNÌršÖˆAäL!¡3!ÌOÓY-fÉ ]ÆífΜ¶æØnˆ-"6pÔ‘Ó¬Á~,Áý£Kå)OvÛ|Æù0»2Ž©õv@ZgD»Ó£G‰FÚtrgU)] “yÀdn… ªM̪R¤ú–êœh¤w7e–¾>½§‚ í¨ƒ£l…Ò¤‚ñ‰D&rUfä®z›âJÒýŠËhà_'El¡í’F3MkÄo¦]J’=@®4Ã1ᱯTg+¥†VpŠ–ÁR¤#Û£ŒU«‹iäüpÖ…ªƒ¦áÚjLPv›¤Ï †¨D€‚¡Ö’OS…¥‘´žÑÒþ›z ^p {7™4ò­GÐ5ØÊîZ<Ž g¦—ôŠ&U¡2Í‹ pª µ.Ûí–þÒôn*?VÍØy¤þVÛß™†aãÆR Kå–Æò–7îªçŽÄÌÑã$¹i3Z†M*í=»jnét«rhZ®j84l$úà¬Å÷q¤Aó´g '™^:Rå©ð î’iëÞJêø¯¤P†Ì¦#s‰é{þlïçV«˜AÓVºN‡8$ϬJO¢¸Aà\èB°œÔMVáÄÎøþ›óŒ)álÄÎÉ"±ò:7Ï#>¯ôˆiK¶úœÔ´Ôaâ»èiÙÚZŠíüÙÄy8ZøP¿(¥Y;Xê$Úyô ²vƒŠÔ›.ó£¿å€@OBŠ¥“­¹½ V|Ž`a‚ÇRÿ>?œs±Î¾¥qF\€%µÐļ×ÿ¶È>$ÖôÓŽË÷îÅ¡¿ˆkõÍVËP†Ìü j–Ƕô y0Þ\qW¾Ù*:™vE¯˜âV_%w2 Õrö0p÷ø6œtü$” ¸ôÚªBþ#×è\©û˜ÄX¹óh¶‰IL ò…àÃêE„ï¦ (U 9ôÔü~pOîcPZ:e»6.Ä>¥ÏùÄ÷º—8v9,œ3xA°‰©^ LWãšð%¾«vÈ!²ƒËì<Ö·C:>2 ‰PDȪjÒræUDмóð.é1Ù25úÔ¾ƒ«#¨Oœ÷”­ÆwkêÊ|j´ç$+N  !ayÄ%é#ÍïmSLš(N›W¬–óÏqù 'Ð!¾$BÁ'€YOâHd,l»êVõ­žŒàqë®SOw5Þó‡œ;>œy6îü`uÖ9Ršmç{KúöË”²rrR½¼iÉS@ ®ï€uê Òs7ƒgˆÁíÊ ¶²ÎåM_JæqÄ™ÛA‹©œ« ¥ã0¥ B B !˜R<ÅT)Ï&''€ÙÜü|0Ö#D‚à˜Š%-ÎÅÝŠ¸Å‰¯óÝ„:µÕÑCD׉áè‚B?Çä×y@ö€P?_µåx‹Â‚[‰¦Wˆ\’U½¦Áa³mèNŽü¿]²¦"&eIVÿX ¤MZ› KȽø …ÿšÖÌîÓoê!>h&3ÜÇÃq+¢Šðr˜Ì'÷~j°Á‹_|’†¼™rYmá >"T®7ƒÇr ^1(!t”2˜[šzäi6¡Œv+x  h†_±z÷l5ƒßyœ]°$E&;§nN”çÔM„¢‡ ÿV˜©I.qÍSLa(N0qÊWžÚ×7éhž' C"E¸?˜è›Õ†º¿l¢>£@6´dÐö¸å6 ? €ÀN§æÉm£ŽbÄG³xM0¿ü˜UfWÂ|C«6ë1˜]õß©y 4Œmz:›{Mµç š"ëðî`Þ:n'Å+×/”j‡änËP®–t2JúÄ(cªžºiÓØ4cÀ"3ºðÚå[sEÕäîçK‹c,E—Ôï‹Bó”8ÞEL¶–yÃÍÌö?{2 3œß»tÈ[šØî"ËÇX\>^R‡L º*@yC "ОÂbÌë°î=× Õy0 ÙƒŠºžJ‡ ço!"ÚÕ‚²)RÉ’^¯Í៪÷Ž¿GKžŒ<%H Ãü5ß ]§Î;V÷ß›3$Þƒ@üQ 4&a¤›€©§ß²Ç¿T|@x‡ü†€!ZÐv"‡Å32“‰¢$,î|êzÅÚsn¸¥j¥9#52r'OQh ç—âŒK-§N¦Å#zŒKHáe„ówH I,DG?ÈMñΑÂÊP`Æý”æyzÐ4KŒ{ |!*© ¡8t†4Ëny1Õ‘"!YR…6ƒdÓYÛ’Ä*Q¯ºR/®$u0&D´ÅŠRlzc¶Õ¥3¡œ8f„ö j?Ó^9È þ>Š@šF6>Jœ.@™Ï…û`A7Î ðÛÅçŽA® fªÜr‹5·²ŒNçœçò¸›jM—êLêf‘ÅnûQ¿îë0wÚ”-kðb˜ Oƒ~_YÁWÞ‡u0áoÀ /ùiçé^Ü‹[ˆ¹Êø¯lã+„¾½ÑH“²üU1â–%£5*·iF« |UJ+û©Ìú[žT›¸/Õ*d:‰wªp:æ ^dÈîǤˆTCÜF´f|ÄPÁ»‚XÈfÁ`ž&ô… „‘fÄÆÁôÏ Ns‹ì`·C¡Nt«I6?2rfÖ€ª3í'->/Ȭ´úÁ#Ó²âY<£ dÈTƒ9$)'Ü×]Ê–ªãý½ÌipÒâ_!âµüiF]FúªÏi1­U,xçÀè(š¨V¸ä;;¿“ø©Äñ{Ç¡p,·|o¶ˆú˜µÆ¿NÆ„àæè315§I:±ìèx ‡³äëM BT®Èes܇#Œáÿ˯nÉž$ÆŸH:uÓüë¿lŒþ<$­Ùe¼Œ´¸p$¼Ê@]1U¢–üÑáÌ«Ê÷âfíöŒ¶$@è1Â"%DÀ©’‡b固ŒfoìSAðòï¿?ŠŽ@L¼«S_?y; ÀÅ HÒoFM‚âG ªL. ˆPL/ÉÕ’m$n¥ÉRAÌ6v„ãöb¿5â`‹¤bƒÅÉ æ$.x2D#œÔ¼ë:O’Ço4ݹ$d4—’{8djÈaÞeàmQFjQ‘>ðÞ” .Ux09j¾iyÀÛ ¨c)4Y’HqÑdƒÃOyÞS€Ž§$Î1ÙHâAt¤4Ùc)¨Vž2ù÷ŠáªÆ®WÈ»f‹¸ˆÕžm²™¯’àG wïÄûÏ\b•´5 ›·GÂÆ~Ãb @Iû3IÐåó-ô´½?7¹ý†ˆuêb¼NRSê?iãµÓÁÛmÏߨ{rùªïŽf  ªeÞÿÒ)‚Š—‰·.‰À(`ñ¾ê:k«.4r¿C¸ÛÚC7ÿdë~Cí¦T؈¥ÊÁ½OçQô[ÁÏܳorrj'’ÔÞ)|é§ïCzð]Š¥ïTr©ð;ø@yÀ]Ïáš…ýËîWDăyµ–~’$Œ+Ù&ž½EO寿{é ΛòÂÊ%•Ñ«CGÍ,¸e+q³¯“MÕ°V,‘t††˜h.àG^Ø©ŒiWHî+äèd=;¦Ò×K7šÑÑiüÃwãx{+ ¤¼ŒÚµ }|=j†­b‹ÇS7ÎêlJÅ}/¬–„´ô¤qø ¬ Ûšæ˜ái)³Ãyš2€3Ѷ‹Ÿú>sLÀõÂÁ˜J`’}`=ˆn…ˆGðWT‚É«¨Õo3A窕c0â?‚rY3c[²U O_PrK(dm¼‡7é©·G.x <èÌûGCÏ} †­êýàO©65R8š@Tìüwm˜V±×ˆh®ÜVFù’ÝlÞ@?ÁËq§5—"*Óò”mÙ¸^h°5iöz†ÅØDcÇ ¤]¹ÁÆŠi"¦ÐÙ¨µÉ"A? ÍeN“zðEØù{‚de¾i>·‹ãAMúX+*a½-mXœ2šµþÐlrÀIS 5  µ†)uj<Eæÿ)¨ÏBbÄ6¶õàj@ª3TaÆè"[/Yðqе;Û+˨„BK ’à4`Z• _­Vd¹D*|Iƒ°A6ÕP0@NøHRv*Ú³éÒSIÎpnò v4Ù9wQñÍ“šæ¹32Á™Á ¸ã` ±öŸreCG¨ïÞ]ÏBã‰|•_‰P¦Ÿ¹Ê£)fà¥;ŸÚ¢“bʦY¨Fh Ô.Nª©hi÷GÀûùC rôÖ¯áþB€df 6-‰‡¬7R†¬É5pÉÙXT ¼Y;©!˜Ð–D20i¤ Ñrs©ÓÐwFU†úœŸ¦DÚÒ™®³~ÆU2T¦IØ ¯%P½¦ŠÖ©†^ oA´é 0"-¨V‹Y×@·ÈJI­»¸V$RÌÁõÅcàÆ2ª*¤ˆÓëö M…ÕLôGíõ¼F-f —d$QDLõSmÒTž7HÝúhp~‡®Ù:›P;kµB v° ¾µß ÒïSÞÊG¦lF}Ñœì•w7û¦¬¿žgÆ"ø±t0Š¿ÉðûC5`Ê;çÖäñåúX¼½'«‡JpT•:ÿ½`,5ý~0sUþñý91E–s}D³ùWM¼Œ µw˜jPÕº”øA¥uØo¢S ¤Y~b•>ûE‹LAQh÷àg\áÙ'oÝÏÝ~„ÇÞŒ²0.ªD̃×.0PVúüö xiÚXO姨@Vùéæ©‰Î—™¤øT€½—û½ø@•Pô Á„‰5CEùm‡ËqæÁ-/:SÒ e›‘­“yã½Xi¢ú™íë¯ò4–´“;m¨–iH•c°˜}v c›`ÈI‘WYêÛûz¹¼›å‹ œ¯¥ØSú§KÿW^BÔ bљ̵%#A·}? §*_h¬¬ñÃÔ_èŸÙÛc [L z:(ßä^ r®2ü»¸3pQ æ¦ÁÉÚP-¤u nº«ˆ)$ ã­³ÿPO¬êûªÉ0’b°ÿü>³qÝsB¤œŠº•¥NesR™¸.%¡uäA‹ µ®uŠC#Ù:­4¹È9³§ôjÈÂ7ÉDF1IWfŽ'‡‚+_·JÕŠ”t$D¦ ñfÚäÿÞú ò´EÛWØÛv·9Ú³‘*ôsc$•z¢ 15Q¨êd5A1¡f¡\ Í*3Z­$õꉿ,?ù`È1çZdXD*’±C¬‰ê²àÒUP¼¡!S%•ªx}‚Œ­º {ðÝ#J·lhRGÄ%Áœ§ó’É™!qM E$«42¨ûø(aÛÇ.6P[x2ý)7סÿ"Їf6BÄ6Ü'•ž A¾¸7˜‹›/“ög 0:kl9t¥M‡e…&¶T`86V…cÝRl ê8†ZÇBÄlÚÊ#ñµœ)`ðð€å¡è¥"T¢½ó—Ì7{ÁA1ü^ùº”lDÂ¥<ÕjIž<Ènƒ•gW"Ðý±[VPGƒeÇÜ_•[ÂH´gÿ.´‹í-¸QA¿W{oÓùë­³¦K«AOMZ]Z >RkÓ »Ñ0°T©Ê†ròuÏ-Y ôBÔ¨àg¼Zç5”Šni‘®÷0ÎbTb÷‹;/0S5É€²Ô©ni02Åðl&HRqåM¶°.+­™Š[ 4GÊŸ rG_îEùV‡gv CyÅB*Ùå°‡¸Ð½è;‹RzØfYPG>ü_ìäd…ë3פ0ã=—(vîÊ0AG*´YÇ4¤—°ËEÂË©ãqFnæm*a‹ÂAøÚlÞxT±Šërg¸ T3(ïÕVlÎ’µæei-¢ëØÅXiÌ«0<²K9…xŒò¤ÚC }cív(}8…5֯פ ¹")zW ²í"eÿ—ïºØƒ ÀXO]ƒ¯#Þ(wBX£LÎô‰rWÙlŒ€ñþŒ ‚­„S 3ì:ó6S_¡":Db«Á‘Çrª$aXÍOr®EÏn, XÀÖ’Y¤ K@’ºá‰-_,‰›þ‘!œ÷Ù CNÃÁk­à  Î®RjËQ…I“RHM²¦qÎÆ½z ,Aà0±ö[·#Á`WQKS8,«p3_·,¤Ò‘ÇARRLg¾o¡äh¾vy ¬›Î1ÁÜÊ2¹š¥‰®•£UpÙlUáÂ6Ñøx¨ëý3ÍóáÚÚLØ•:ÌT%cA6Ê^ô­16Õ¼¥ 9+˜m¾¥º îz §ÀW!’DŸLÚ†¢+õìž•vjMù™€¥š2U‹ÃZu°ßˆÀd>I¼.„ íg"’Û(´Óf!•™ÍóWZc:©2NÎÖ%ì ¹êþ “}r«S–äžo×Ò’iícª&N}¸ÉÝ(l›ÏE„õ£yÝhI=t È$+¢Q† ÚØžð¹7”Á+B]6„†¹‘…zÈhuˆ#Qbmk ¾?ÂU 7ÿãbÞ< ☾ڿï˃/&Àüðô”ËrÛÝû8¸l›GJqBæà\˜~ãê†#^*Ìð;˜&G)Që/mœT^Ä4é`¦¬ˆ#ätû>lE'qù5LCª["Ü›VÞ‰@ _vöþä` ‡¸Ooñg|¿)=Gæ¤ Z‰¨¦:V³}õS5¥’ʘêЖ͞ð@”+!¥¿5I+²½­òÔW;ÂÅÃò©Òu:ÐB‡™ÉýÆ ÕÄ\$ÙÎQjºàh.‚:Á´FHe(M½Ͷ™¥ËU¿E¯ kPýüÏ–¾ø%,Š$›^¨[ã*S ·ÐT>ïÎeß \ùò“O–|± û+9LuŽi½ºôG™ÐtvÏ$)GÞò¤Õ˜Ew(X¦2&²¦z!wž5»1§—kâRùH ÷ÇwIÚ–ŸÓjç¼ä qÐCކe5XHwÊ™–ˆÚu~‰ eæf8êc¶Îg:ð%kÇ[8Xj燎ɱ^‰ùVÅ›ñ÷0±t)B .<4…¬ Û¯Pp͸f°#àç´ØöÖ÷-þ> ¨‹õ¸ÚÀÖ=Þ–ƒáncµ tšXc ÷#°ñqT$_IP`U¶÷îG;jŸbùYΔÕ\¢8{}]oÛQAòVcbuPŒƒ… Üç=®šV,lÐþøÍc¹šZB¶mfˆÕy꜎EÈKGÎW¿tB ynX Ön†è…Z"ÁäXoa®`>0KÀ0Æ"X‹5m».^ W›lº4å >Î`¬,Ò{ÜRVªŒòÞé‚“‡»v°i H~šKU¿ú=¡ ‡÷V€«™jè"vÝÄ·TÀkƒµæ¦ýå²£íJ“è5<Âcý‚ë„"rVܬ5o6%/ÍseÀJ?î¾/ÍPò*@ØqèE+lÑöAÍ n.e^bŠÉpÌ †‡H›„[åŒBwl¢Þ£óéÔåvɸ¾ÆÞkˆ8En¯£-¸îÂvZ”cÜ`SB7Å…I6©Fü-šaÞ:+‘š-Û<­rVBSŠùP òõÇããFÚ‡Å!OºwÀ>7ÍxÀí‹àŽ4tš‡ú?e#>VB÷@ø/ñíÁ|V!€s­ ¦ÒÐ'Ï]tIClVé•Eµ´U»ƒ‘T‰`ºÍŠ‘gÑetÓÐ…B›†KjMF}È}gŽ… {@‡á>Ó0$#›ÙUãð°¥ËþsçÀ;HVðïÔg0@þX_òx* m+ו@?!ö1•û™‡عڥR™ùj†ÏÇ›!øÆóÅ¡Ç]–lÇ{ènaˆD¬ÞÑ f’LÏ9ERM-2ȾXh{ó|á{… £Pߺ̗ε0¥2ø "EÀtE;”W05ùdÊ´…EÒç ˜ÊÀ™H¥Oü}ÑéøËjÛïŽáB‚IÖ KÜï{>?ÄFV2ŒÖÃÃ{uqÇßžC¥ü“¡Õ lÞ¥¢ötžîgÙNYU& ÎÁ®ðÕ€Oâ’·öÈkiŠÒ ÏŠ…ó"òÁEXùf›yO Å ÓWÊd`¬.X…xSæ HÜ™+žqò 1¥ÉEjÒ³}wAeC»˜o`ïT€Ù¼£u¦¤9®žïhÖœë‡ÂŰ ;~2mr|œóQ7_·½óq.è``¤zÆÙ‰ìÔ„ ^v±óXŸEÙ¢â¶'5/ï{[õßHÛà\xÓe~kºE÷f\Ÿ‘€»g´\–%çgeªXÁ \A´Ÿ ³•¨^ ŠËÖYººÌ­ÙêÔ©,eDÿ1Ü e ZÅã<yŠ1ï᪃zÒx„^ª6 LVk>ñb"/h/ŽËs’¢dÎ)DúɆI{äñN‡ŒÂn¶O•MÃÞ¬ÃÝÑp&£—Ĵ˯Ç9ù}²Æ–³É»Ù·f0£Ûc<•“l{C{¿0Û š—Ín‰â§ŽÊÃS C;ù¶¸Yq‚á¥ajãÒ(úr¾PêŒtªËu½îýkl”µÔ5Ý*;7û©à~Úž³•¢ÁòW(‚O èþ®c>º@ €E Wû@GŸ®¼OðóTi‰òøíß|'…Z9U¨Ô’¥ÑL?CªŽ  ƒI¯Æÿ€1 Šåÿjì`9üœ<$N'"•«[Ûú7©MoäüŒ](IüuY& ¼Ï§áSƒø©aý©AþÔ |òlÞó`? HγõB`\)ÅdLaÖ.yˆB¼ÜÎÑ ûj9+AVTM7LËv¼Ͱ/ˆR~q`@ 'H—Ûóø¬ñ…þˆGãÿ»ð!wûyNj>°v“’‘SPúg:›/´ ±áD?—mÎæú‚Õóu}ŠÄ©LÝaòïçYgZ¤;eø^š×ð³z !Hµ‚•Q¢jh!ªR]™¸•M¢ŽàHÈB•UEBUÚKÍÌ-,­¬mÀ[PGꬫî:uëÕ4hØèÞovbËåZÏÉaP¿^ üÿc2ЯÄ5^×47ÛÜm‚YíÖ¼lÀÁFs/ÂÜžmÛ‰±‚€Û‹í6L|RjB@Ã!"g‰þ‰YǧXÉ2 Û=C•QêÍY´lͦ ‘Taω+)UmCs[1% = Û— èå±7| Gyáér{(ša9^eEÕtôɆ@ap…Æ`qx‘D¦Pit“Åæpy|P$–ô2B˜‹ðP¾@ˆáI¡™B¥Ñ8“Åæpy|°9~šZs¯]ÕÐa"ÛK²cpdráH4‘ÄÈÔ5uú ¬6·ån„°á"Í®¼é Gb T1W ô¸ŠÀEïp™lGÐõ뜽WÃ1dÂbKx")_©P«<`Q…Á‡ÅÈT Ïâ‰å -Ë–,êëõãæþ¤ƒáèÝF¢Ï´ûY‹“ëòƒƒ·MLÍÌ-,­¬mlƒŸf«>T_ÉÔå IVTMaB0‹-±Ô2Ë­°Òœ©ÁhÞÌ*«£¢cbãâë$%§¤¦¥gdfeçäæå×­WR¿´AYÃF›4mÖ¼EËV­Ë+BAÁ!¡aá‘QÑ1±qñ ‰IÉ)©ié™YÙ9¹yù…EÅ%¥eå•UÕ5µuTü2tŸ·­v>£Vu©=Ì:ö±ú| »ÞÔvô.#Ô (4Wž’ëš”X·T1DÀ$9Âor'‚a|(’ØOsÈ$2…*W(UjÞ`dlbjfîIC#cS3sG qx‘dG¦py|P$–¸›®ÕYXzÑ…¦Ò¤2÷ðB‘X"µ³wpÔÑÕÓWk´JÊ*ªj~Ââ°¹ Y_Î,/ñ/k[+OääXÛØ‚¬À¹ù… &‹Í!¢Ðõ—È¢âR¥B%÷h÷R±òÉu;Pæ)•°ÕPn)®–RÒ4´ôa195=3—.Cz»ÎmÝŽêÞuŸîۉg4‹5ÑçÉù$¯¯É–ls ÿD÷…‰†|MÍÏ»01’3rŽ&äë䬯 –ΡÇòiLöØ4g-œkQ4ÙŸn&¦7Zæï&,ѫٰ_#;œuûØr}ð´‘¶!ÄîV (ì•Ò1Ž˜Æ>ÞBò¾˜ÛYß ·G×0€±*}8\œ)l.‡áYcp(-sn®dÿ¸ý2ñgtx6n¹_¥ UŒ†ÕqÞ$XD›äa BEigL’åb»ãñä"/Th˜[BGä‰IŒi‚,I4nê†Ðº­:½oß>çK§ÖNÕ Ö>€#õü´Ôßk”«•j•Z­ÿ}c>3o¶:Ð3ù «?Sþ Þ’$fÚV–¤1Ó¾£©–L%UµdÃådtÕR—¢¬–ÚJ¹­[Š-aï#ú¡ç‡Z*-F¬”ÊeES¢ÉšùË 3͊ܨJúäfu&gzŽdwSÚ¦ÛºãAý¶¸¤´¬¼¢²¿·–ʸýÙU®ÚÐù|È¡‡±p¨óUçjD eP!Ö€í7% úaZôVÐòÀϧHOV:Jk&ÊÏ©À æ vâ/ë2òD€"×9ÖCb9‡Â]N5Öòê"‘åãÿÖSa‘•„& Fÿ›âÍþë;R?{Éë[ã†ÿTÞ"ðêê×h*œÎtb[¦sEÌÐ]nˆx)ú»=fØŸh¦p—ñ4éiY Øs¿‚RÞ¨'~)ý1 c0/¾‘«|ÿbKTêm^c­uÖ«ÕËSªgº-e”s’Ól5‰"Ôë‘»>éX$I“«aO‘nyßBÔDKôĨhÏÕÿQœÄM¼ÄO‚ô†„è½®=/Œý‡Wr5¡¤.º_¹7Ýv÷–kÒ®»`}œ¤””!~J% ‰D²µ\VOÅR5¨¯­Öâš·uëú)ó~Û¿í›w‘dG¦Pit“ÅæpÅÙÃýH,‘ÚÿÜJ•Z£URQ‚¡p$‹'’©t&›ËŠ¥êšª ÌÅ“(´h,žH¢Ð,O Ò•HeF&f–Ö ;(I¦Ð¸æ–VÖ6¶vöŽ:ºzú€¡‘±‰©™¹…¥•µ- ú Ö•=üÛÛòœ¯/5ËF¡1Xž@d±9\_ T©5ZÞÜÂÒÊÚÆÖΣzú€¡‘±- Âà$ Áâð"ÉŽLáòø¡H,Ñ*)«¨ª€(4‹Ãh &‹ÍáòøR™º\C!É D˜PÆ((©VV£Vz¡éµzçP’ævÈ€³eÅëTÎ-§[ËÛÌOÝiÑüQ—{ÚyJ=3zÊì4¦öšD½'îëtûn¿×÷l"Á©{•g Ò¶|ÉX|Ã_<‹¹@¾|z‘kB±Û¶‰ns䃕2JµpjbZ vÛÞXÔfTÅéBúÑj€ÒüB§–¿¬×à“»üëTùÏ )3GŽ;_Ê]¸/N¸HwNºÔhÎ[i2î2K0tó™Cµî3h±ÆB÷jô¦ÆCïkôñA+è—ãaµ ÅŠöZO ÉNtLnòtÊêGir‹ÒæN¥ËNeg·r 'Ä-gåUŠ2×\e©&e­+ÊV·CQ5ë·/TÚó•»W(O¯ yë\(a*¹|ÃÂ+*EF@ÉPŸÅw Ùwh-žýqCçæc¹wn?V±‹;ŽÃCû&†]"Qçõu‘Ú3h¡¶éÍ‘Ï* )‹u`®M—]›ÖTЇÛIí5º²/†«¯"áàkZçÆ…âXèýÕvuøáêºzü~ >úëú¨¿¿êÄáSì]*h\ÄbŠŽ!ƒ(K´Ž<®WJÇA¢¥×Äkð.ÝwõF‹5Ç40º(bñ4ÂFf`—=Ö<½ïÌI>%†OBŽŠ,ç)Om©ZÃZk“Úl P«ºmI©¢Ì´2[‘¥¤H%å5Ú\¢Ïc”S`µÁ•±©šÀ©FqçÇñJår„_§ø|B>Ÿ˜O*G&G.G!G)G-+\–FV„¬HY.^»{Õ•%[Ž<ù †@að!¤#Ñ,O$‘)T€Xi•ÕÖXgÔ˜q¦¬?m¸p6’M¦m±Õ6Ûí°Ó.»‡9:9»I £™B¥Ñì dK-³ÜŠÒžV´:±ôc€8FfñX%J’ó’*9ßí"È¥"à±g2ùÿ›>8«uÖ¹)§ZÖŠÖÝn–Ö®n'vRîRé¾ì|÷·*þŒÓžç¥\î¾+lŠÀwïïû]>ÀÀÁÆ`Š­P»²Wê}q8aŸ?FeW¾J¤<ÿ„x-zïÃÆ*Çî1ÍûnÊN¤‡ÉŸï}úwìõ½WLðÖ1–9B&™†Þ/ëôi±Ð÷C  =€¶¾—*þrÇOÇôO  .füŸûÝŠu¸'ÿN5v à,Ͽ½¬Æ†Ÿ‡Põ ¨úp1¸qzö-£ÿïÏl=¶pu{àÜ•§L¸òTÞ¹àôfÀ¹y : CS$¡TÈ¥‘pm.Ü œ½þÂãÀÙó€³›g^hsùÄK_m¡ìàßÝʶËó€ÇZLø°ŒI<.-Ú¢0¶áõãÏ€6 öEßGȺÛÝ™³ÑÞ{°XÇñ¸÷žÙ£8w÷õqéCúN€}kC.Œ»9Oå‚Kv+TE.“ïÐÍnkPÁZ <3ÄXôEê§þ¤Ã÷Ä6ÕÍqœËixÃ7BÙòSNyTTIeUhs/Þ³áè £ßã ¼×î³!an«<FšVzE ÐߊƒžÞÁ¦?ƒÓ?ø3W£âäŽf9®îç¯OñD)´ÙqÚ÷þä+ÑÈß4a‹oI%×r#·rGî²O&3…Mת/šÀMfHÆtîF"Z 2*,Rc¯Á­$¡¶ÆEÇ`[j$R™ÜCæ´ö«ía5×wSäi8ã§lŽ+q†uûº-\Ï퟿ž×ù3»ß.=þrôôëÜ3ïïbŠ-®x—õ—úóÿ'Òjoõ½ÃþUT´k æfcp´ËCë¥+¥ÔÒJ/#`D±ÅUÑî†act Ì¢©-Ë4=YÒUÁÉ¥S—c‚iÈÔb¾ n=ç`ž5FýTf+ù&Êæ}¶ü³iÛŽ]{e/·¼†•_A…ÃnZ+9_ý'›Ú\!9ýÃÆþvªªê ‚nx5Á4¢‘^ÿ(ë'N+ÞcÎürä\¾YÐͪ¸éÀnã(¶+Ë[ÆJ×½žå/sCuˆí uÍGÞ¾U¬pYCÙaÄ´Gâ“zo¯gµ+^îÒC·K«[ýŠÖ°>W€¢[¹`Ô;¿ÎU¯àУ@ŠÒ­­míC®ãȽ¿õZ)R¥5¡V6‰’$³s„jh¡Kè‰6·­zÍinóš_O ^Ú+~/å}÷·½HáÂ8âh~L4ÀÉ f:”ëgË£ÈqÆ-T§Ý%)~Y.I2#Ú´kѪS¤9Ü­ba–k”ΗLòLI5h@¾¿ Rdü#·ŠÓŒÇ$`±I8d\ ŸF@'d1‰Y$lR—œGÁ§P ©E4bZ‰Ås‹Ã¿ÉûŽ ”^Æ gT0)™U,jV À ÐÈ0Ø›Qvc–ž“Å[*‘)“«P¨RªQ¨4÷ñûˆÌa„2Á˜á,V$À8ÐÈ$Ø›iv3f9Íq™ç¶Àc‘ןe~+V­ -{'XÂ6DlŠú'fKܶÄCÍǧuÚ§sº§wúg`G»]9{ßoä(8ÔáHѱN¶ìØsàèD×(5t;3!nù9Ä=O¹ïiÓž1ãY³žæû#r¡õ_ç’qÅžÍò¹Áú5O ’Ȕ㎧Òè æà!syôÏÌò˜NNÙµß|û—ûóï‡ï1G9Ú±õ‹7¾ÉMo¶w¿õÏþ?á³}ŽÏÕ…s±uÑÇy†$^k¶ækáZ<‹utõôÙœ¬Út0ý¿yôy21ÎçëTLïXåzÛñGöX òh9ÿíöèƒÑ‚ÙaðëqGÙiÔúåÎŽ3‹ãד ]È .Z×±³ësCeE7º×îs¿•=àÇö§Îè™ùÌî쟜,ÎÏþö´Ò~£XÄš,òìÈä•)¬nÊLUÎdê,Zõi/挞Åmá/[ÚÒ,½•Ýê³õÉ6aFÛzÊT¿žKxf=ËžËóåš^ð‚½èEk{ÉûNòO­ÓŸ9cMÇçù¥Ú¿~e¿­.·œBc½pUžö²2ÂëFÉÑ~9¾ãsŸ¦ù ¸ûïË݇ïî¹ç§õÌÏóªŽ^{ãðÖ[¼SE(Ô æw…@xD"½£ÐŽ1—X¬{Î3ï@ôÑ’#A&P(R*Õ½Zƒö`jŒqòU‡=\áÈ[íáï8÷äT'çÌr£ïlwÚÒ¹.²U_ìd&.É ånr»}û'Ópgž*î§md¼æµ-g¿žÓ§Ô§=Á›y«²¤·ónµ'û='Kó~¾Ü­ÕúÉëµ×ÃÍjdÕjfìÉËÚ8#YO²o)Nò(Q"E™žúôI3`è”þ ®.D4k1‰-¼L\ qœŽå0%T‹ö$ó‹ÎbOeÍa8‰K8Ÿæˆ Iܸýƒ‡^¼œðá#œO–!®ÊÜáæ-xêšcH@D:NëÿdÝàiµ=ù)]6CÛÂ!/%%<Ê*Þ©ªz­¦FðÄáƒ17¯6ôóLJ@B"£PÑX¬vQ=‰¤‹LÖF¡@R©*itÝ ¦*K?›£†Ë3ÌçëLJ±Îy`€ U† 3‰9×!t´'œîµ½Vô,í.iåOþT×Jîz=kÊ¢­Íºšz}îeƒ *ÍÒ{næVI¥Ûï±—ÿ¹þÒÄÝÀõŠ1Ç_×+Ÿ°_•*yÂÂ0L¦žÃZÕèU¯õÕP?)’¥{A–Áò 5Ôà —o¤‘ Œ6ÛK lWj§/õ•ßvÌ?núÏ5÷ßenºÜÎìf} ÈÀ£ðEíPå7?Ú=¡c•Làñ„h¥ŽÉ`Áµmøþ«8O*árÕ¶g¨ÕUü'VEéYƤD´28"[ÃdÝ£Øäë±áW™<­ÃÔT·™™ó,Jɽ4ùj ¬¶êÒk“%ßì§ ÃsœÜ«~\… Ñ–%"âVTT‚˜qq?$$$JJ•’òSZš¥ŒŒlYYVZ´€jÕ*­Ûb¶«Ôþ„Õ/çNûòò6léÐ២¢M]zmëËHöu™,bý¦Ü'ã3TÁ´­¥==&&¢¤Ì˜²PfnÊ7ËÝ*Ì6Çïh$™WÞ¢ç›2( ŽW±ÐB*²WI–±,k+U*Í[ÅöÞÎ;¥5lÌÿ‹z“­^ïZïMºôû&¿ |0M™Ê‡[µñQv»õNÇ/²kínW¿=q‡~½×æÞ·Ï®Ûï€K:äF_7Ø¿*BSvT郪bY{­…$ùZ9i;šVë³Ý-¢'}ƒËõ/¯u||>äð…  "DX¯šjþßÕMZ%5rçu×0¥€5i”Ôš¨Ñ'×÷J^µÏêã¯NÞí]uÕµA=õlîúvnÛ ìܪÚYŠF©ÛmMÝÄÎ覦´¨1;÷ᆛ«Æ=ívÇ›R)P›MùK5a¤W…¦ð¡˜ˆH.1±ô–ØÔÃ'uOzÉ–¼ÕQP(¢¤Ô@E¥¯Õq¼+44nhi=Òѹk½á]eÃ##‚69® 3³NÕ¬¬ ÊGƒ¡²±Ál»ãªppkkiÌ Õ«Éõzd»ª7¹Ô»‘éUïó„W}ºž,Âów¿õëuä])»ß¯¶£Í&ú·M ìÒÓñ­ÀÁ¿ +Ð.j Š¢ÑfÓŒ±6U£×ÝécdøÝn<z¯_‹s8 FâóйY.fÚ àŽ/€ùË#Å,–I<<’¤W(ÊË4m<›m*‡£„Ëõ*/¯\‚„(HHfPP<¡¡Á``Á²…ƒcÏA""ã&ÙF.22{¨¨zÑФ¨Wï:ºH ’4jä¢I“X͘ڰ°µààêÄÇ$ ó ÝɈH<11 !¤¤°ÈÈÄ‘“k¤ NIÉ—ŠŠ5µLZtt2èé¥20dd4ÀÄ*0*Œƒ %RÁ‹hZG8ðû?Ç1b0(0™˜X,Šl6f‡—‹…Ç£Ìçc¨…ØD"ªb1v‰„šTŠC&£.—ãT(h(•¸T*šj5n†–V‹G§£­×ã5èüôÀg2Ñ5›ñ[,ô¬V6}» "ƒˆ „Á”áp¡‚D‚Q(U4‚Á¨a±PN‡b”šy«N÷Ñâ×X¯O™‚ÿÀ6 tm#÷ ¨ÃÜK&Ë(÷Q©rÍýtº‚ÁðŽ+™L²X*6ÛCŽšËõ0§áóV(ŠD:±$‘è¥R°LfË! …‘R U©ŒÕGmºú¥³]¼Òeûp PÆÔÑa®?ÁϤ!…ê‚Á¼†Ãu#Þ ‘zP(oÑh½ !,VŸ»§w8œ~<ÞGÁ‘è‰dL&L¡¢R}¦Ñ Óé¾xyñööõ§‡Ñþb¯?ýÆ ߘLã,–ïl¶ ‡(—k’Ç#Æç›@„BÓ"q±ØŒDBB*5+“‘”ËÍ)¤”Jó*iµÚ‚FCF«µ¨Ó‘Õë- äŒFË&y³ÙŠÅBÁjµj³Q´Û­)0X´¬>Ì}²/8\ó#Üé‰ÔB¡ü ÑÚŒ_,V‡ó‡Çëþ‰D½–œYúm;gí`aaèÝ»]VVP>íùç# лàƺºõô˜èë;¦Ž ™™±ýæîvÒ »Ô´—†£¼Âê9Ù©µ5‹oãžœÙÚ²½#2ÂFáGxc {‘&áGxx‘fáGxÑÔjr-^èíð1î֊žÔ\LÅ9ߥ>Á=¹ ÁH$ÿíìX‘É.)?©TW4kºÐµHÄæ‹Ý $‘°•¦)Nió@Ù´óhqÉcy²<Øóy¡lÖK^2ïoX𣟭ú%)ôÝ:&ûž)ÕFÉ—û“{|y°SÛ~hÏþ^b¦T%ßZ ÿ·–GÞsS~µ¼ùóZFdôŸ\XÆdÂ4¿`yt¤Õµ<öþdÊ-cyzÓ¿c.¬#з(PAƒ¦Y£›æ–(éÀÙ™ C˜‹“±„µvšaÃ&;^sðá÷q¿Ú¾Æcžþ¤0Oüõš:~Â6;gköާöfkË”%ã8ê¸oÕþøë˜W`Õ÷¿ˆ_Y@úéùß²$é¹²ÞÙ/9žü 6:UÔ¼›< 6tz`ÿ>(\©d Kƒªy>‘q¹>0_TfèÈ×q¹¼Yí‰~GÛãc[Æ,øa1'çÖEP‹ª“í¼Lž-‘Òì„À2ñ)×n߇ÌäY$¡ÞÖÙ3ó>P~7‚¬à[ ÑÚ„;kÐw?-v6Ñzq Ÿ<ƒÜÿ·2–õ:>VZ®¹J€™¥2ÀkÖS*Pª–d¦ÄÉøòàHK¥‰õÁ—bî Aê–¾_ °Ë£Ü¦KŠS¸<òüŒ†"6iN“Ÿ8Uþ™Z°îjè«™9—Ý_uÞÕóë#ëH §Í/BÒ¾GKF/H©kCÞh…>wЀÂOëyÌäR¹ìºöОîDêÚ€;@ß^n™ÞKJvJ gþ*&]­u%Òp·ë½CDz$·i²‘9¨&°ûÞ[†Û­d`1¥´®—Ê%צ&ˆ"Mc¨TV¢ÃJ¸Rw®–³'…Òß¿5âÆðÎ;Öm+¿+–E ¡sgQV6‰Šq 9Àq&¹ÙÖ.&@ÕxP3ö¦k ’´8dwÅÒ\‹£Ñ)IW­oÌCr3ÂÚLë A~m Rœ³Àîv[BµRoh A6òYÑ1–åÅájøý‰tUQ{€aÜ… ÌT§‘)¬·­V¬eZ«²(" ૜ôb°åjgqÑ“‘ \à>ù ÅÉJ RFW,½P­G‹Ž‘@.O™ÀÚ¾ü]É("}žÐÜú»¶·W•¶ æ&!QH ïVƒxˆ:yr£+®0Aù GÓ)à£~j,Ó±®æ;±bXÕ!=fQ¶-b¦Ž£&â¾CF€{\ 8M¨šÌ[ Y̨޷H$C5ÂdIpŻ̬`>»—c´GÉÆÀ“c'øYl¾éH#Bjf”æÃe’…J6[,rµ|£Ð*v¯]ÛÞ]ÖömlçÀ‰BÚÒzW*Ò™ëê@#óûª•áVè8 ¬ç{E· SVRaªL©3 ¦É´˜6³Ä”ŸYÁŠÖ‹2…JŽyéN Gy ¯Ê RX©»¾Z6AÔ’'möó<«O¼VVš£­ÈÎŽáÈÚša³E—kûF4äÛ¦™D}fôQê5»È`üL`È1n™ é3È\ÕWž;šéùjÙÔÊ®Òf÷‘?*>ÑA3˜kËIVÆ(× :Q²+á§Gé÷dÕ‚[žL:P.ߟ–ÅG¤1ÿRÙ‰6Ñc qCŸ3'a-á>ã•”ÓR O±–$’¯—“òÎ=e»¹R>ŸoÖbÙ‚G ÕÖ:7Îì•cUv ]ä©Óõ ¡ï©^¡ì¹ºíSž‰éÈÜøye Í«U–Æ9ÜÓQ¤<Î*çˆ9qïò)&à,@Å=åù"šáS“Wxb2mÉ0ÇÅ|úЃ^]­0„ÃÓrR„YÙ9ý Ûœ ÖJìÉpeSûndå} sà@¤sO©îáÃGX^•{s“«®po£ƒUåtÜ·ž§ÝV»b©Ž#”¬À×ÃA³Ë ™cCê§ê›~¶úœGÐ1µ‘^ÍTPÎó´—Ÿ!zÚhñc…ðÉ: ~ªô¾—8ÈJ…ï4ÂÕ]€¶>qÚ(*×x@_ŸüðM…¸ùˆ5lJz¯ÓEeÈ"¹&2á«.qtÅ)Ô†ØCl:ô†{ÜH8/Ž3­™ÐœÌ÷­jI&êaEè5›=BЏ5Äa܃Àƒ<À‘€QŸ_k‹^ðf„wxð$ê¬߯ø1Ư1þ@ ø=p?ÿÿ®öW¡7 XÖJ‹˜áá¶µ·=|¡þ»Ï}­0ü†΀՟ nĤŒa ý~™@9Ž»|gx¦h›gÖµà…Õ"wš¦ÎJ¹ÇÛ¦Êl]È8ò#†ã õ%jó^ÍÒBNÔ9Û¾?¸mVm#ýûƒ¨àAy¥HÀ^ÕÿýP.®HM“Dºzk¬åŸwx~ÏÑ5©ZÞù’çâÆRÓc4ÕÂØÆ®—­QS6Á@U„T ¬ine!h§©ýASVæT)åZ±SÖ?>¦4Xï>˜'pÓÏÜU¾/¢ ò×]’[¿töMªñòR·i”²ŸxU(tiŸ È.úP—x‘`‚Pæ‘ ?ëø¹j7Ik{ª`™õ nÉöÄþùS^ÂÉÌ™ AÕ½¾ñ—ÈWMíftÝ”½JÑd†»m×ît ÎîfŒšøè+«Ks›aËñ/XxyH¦¦xM,^«r ²2òr³–'7±C“,(#°9“ ê–Ü@h¤šµS:`ªãr½m]%I ý Pí\.S|‰ŸWg•‰ÞøßÜŽÇâË©,Ÿâ-­ÔõB¨jF’æ Ú1ÊAxä „þ§%E»ö ”u—‘]G:ŸuÌñEh¯ú¡ ´ [€`ÞùïóÜNÒ¸H $”ÆÇõqá ªW£h\ Ë‹Ÿ‚Újò__¶uǾ,YQMcð’ÿ{``AÖ¿ŸI•å%ç¼-—bã@Kÿ+q=àüªJO»­¬ È:xîœDü—y8ôÛpW¸E‚iÚpð 3‡¼’¦IÈ­f†æÈŒµiJ½k¹!6ú£gòÇÀ5Rë8Ê(ÏÄ[ °w 3XŽÑ,d¹wû~!ÏHÌ…÷2b%s’0'Î¥š/c˜Ìe×áèßêJ·ó¶.{Ú­ÏópDNU±Ñ6U‰¤\ƒ [V¤Û:¤)³gg4&ÝÌ*pÏ…ÖË, ½}*M(ÙbQ™féC’ðº]^ Å)U·þˆ@(#z,Ÿ”ÐÄà’EÔQË M¡õÖÝ¥k6ʉBí'\§s@•ÀâXèÄß  ã·9Ô%sëj™vç%×çkNƒ«õª[íVóê÷ßÛ„±mÚØV¹ûÀû·íÙ.}l¶Hÿ öѯsÝZ‘.·v»-¿~û]‘òÜç¬Ýïß4¯›Çƒ?̲Ò9w6ï|¦;ßhšæmŒÎusÛŒÔS? }ÛzÏz £¼òr>=¿²·cÛ^·÷RaYxò ÉÃ凊w³"ˆƒì ¡R)ŠÿPrÙy&A˜B‘(>—Céý%ã-ow QüÏ—­+k)ë²+§rWê²e@-ªo.ç nd2|k¿”¡îørZïÜV¢>ˆèóyæc~,»°x? ËÔõÇÌ@æNG€xŸ7B`Û@ §\ëÓÉ­=]Ní+B;³³± 9÷=%P,¬@Lˆ*#?xäE„ÞvW3ÎÊf«·Ú:hjsš¨ŠÊ%_$Ó­_õ<"ò†l¥?ðE¶Ò™¢,_‘uc¼>¿NÌ}nÊùùÕw—›o¥ªƒÒ!,aç‚h«Þi7û^÷}GÓÉmz=4¸§XU“hŠ;“Ó.9ȸîeõº\e…»üÂïñ7g½2F©ÇÇý‘lž¬š;k‹2Å€•¦Ô\à€=—‰‚%I¢RœíÄÇ2IÜd² t$—úÌ|¹ õõ(óXæ½SèàÙS¡õ€h-/À"¶ô™ Núi±´å²`e•EUwó³±]Î «¡êÛë´&h2³"én­·vbÒF«j²æµÜ…*óZ:çec€ÝuoM›‡Êôm{“}Qú‘[Üä­DÂ6|¡»<Ë{¯²]Lx¯¾ß|}·Žö³0Œ #íôAòúk²Î?¼ìeóÆeÝVoš»Sîôþ{¯Åûùq[K;ÓlÛrcâÀœ.|òÆãpÉ,bPêÍzßâXí»ÛLᯂÀ=0E)fv! Â9]˜U—9dQS)EM¬«cµ3:fÛ&´NÅÙTNA’¦`EZÓQðYÃX±]´z¼Þè3xˆ«©ËØsäþ)IZ•Ä §L÷!' Jï‘¡]&1k= oV›,\¹ãõ6³R Ï„[àIçX9H$*ìᆖY;ë?7C’í^RᛨóüÝ÷O Oýf ɼ(ËŽŽ2øc‹§ê²5õgŸAø nhGïÇŠ‡½pbÇRÖF­khªŒ*¬Ñûƒr廂# 0ŒFW|ݵž ÷Á  èZµ¨i£!®#¬9KË: ¦öéõµÇ+jSïša¿¸'%ÞœrL×*óé8ÏôöV<ÐZ¢ô°kÏÀÎŽN—å™>½ùòHwq:ssþ—àS¹N†DÅÁlž_³"dYñô„ˆE¶B â­âP+öSeÍ×Ö¯ÿ x¾ÿ_#fßY£þýê„ É(M >! ¨$¿ñ›ßýSGí‡&ÆkFEJR""Ÿ”<@~âcõj.çÛ’]Ûæº'sD¼zÛñ̯S}~~#¤é‡xÁµ²Ñ´Õ;k_´¦EkºÊ뛣¶ão(ƒ´Ý@ôòB×™Ÿ+æŠcß;¸¶•Ù÷»‡{s.Áeδ¢÷ty¯””¯O•Å „AOùEÊöÈ»De½Q1V0…&rºM°Ø¼ÿÏû ÎI‰‰0y‡E«Èé*)S#§³-KúÍi »š²ú·‡’¯h¯ámE3¶®3”®ñ€r¶Œ'›Fœ åËf£#ï˜;»ÛD%ù÷ÄêÁùeÖz»_ÏÄ-¬ß.ALN Ë>'Ú÷‚ ­žõÚºI£^dûoí Ò*M¦}ñƒµVqRýh3ˆ©V•ÖR )©ÒeUu9Õò€z‰ˆÖýj k"L©¤šòA¢<Ã9øú(€#úÚ7*Ë&ư¬I´‰I»R–À¬ÆÅNRàh¸Tɨ¶ã1Mð¯˜eb"—[âh/ÃB|Ë+ư€ªÈ$Q2&‰?V¾ËDẨ[>06kØKeBQëÍÝÓjÄf_Ä –Ho»ûñ7Ï»ž?ÙS[°¥¦2Í7ÝòŠEýaZåª2pÚ¬¦. ûQ1¿ÙÞg¼8JMXãg+Åð^3ÖˆÐz°™ì}¥êˆh»¤tV¹¢ÌBƒ\›ÊÔz4³é";h¥,+ö}m»tP™Â¬ðgÕYwéoÍùýê.«·òÒiÛ¡½™lš¹>a£s]ZÞ4ŸØiÒ:E•F­¥.³R& :ûé£EÓ´Þ6LIÚø¤8‹?ïýï#Õ¤ŒU])W{•šL‰x:íÜh{Ì­ ®V«;‰(=›Î¬®fu6+|1'3›×M4yøòÂó¹mùy:éUÎv¼~tGªP5&•ɧXõmó7ò÷•^ÖN´÷¤ýEÿ>Ë ze¡is„á¤Oì>—Ù¼½ßçÛçBãNÞåûGz2ðgóÄß¿ÛE d{¨*Ù"´¾Dw!Йˆg"@²¼Ûj%ÔmwŽŸH&ö›×sßpãTÑ*ô,$oÂ!(×m + o92{Ei·"&©d%‘íÿÇŸ¤#-Tßkßx&aöãÛÄ~“|%*e¤*Å|1åäÿ8-±‹®Á¼wÜ*É™lɲƒëFÃJLW"‹/%óÿŸ"$ïW¨e_&*á?CòE,ƒÎ±Á‚1ÂB¥•Qoà2v­Á23¢°Öׂ;ì }‡ª¾ÍæCûr›Œ q•µ>öñ;}žHHÑQب¦n»GêÚ-²ÕÔnJ”û7θF²W>l©€ý¸)v¸7ç~~;(õëN•– «ö¹^ò‚2c&3‹D»Zü®Ü,q³Éï4ÒQI²ûÁŠcûñϰ#㿵„·ë;J´¶CÉ;µç µ|¦$æ°€±d´œ½‹kãBALGÂGËÚÏÙ’ð†žúï“ê„2>!ÕÆ]ƒ§öÖØ•\ ÷ëuËýK`{kC˜²Ý÷4É(ñ6îÜ2N~VLcNfA ³ž«+è|V9gê"ov‡#à¦ÆwÀÍ¡ä!‹ W%P l¬‚a×Nðnî Q…zÏRÖßz³n–³Öµp>¯£†èœÀ WH.7©Ò r!:ONaÍtþC°.@4†œFc4*bdpzÄë Í&Oa '‡Á“‰ÇÃ:&#Øët»m¨8±fÞ«m¸cI~-$0P„Xª$t9 `©ýÜ·¬ËC‰€-¬¸|ZízE-»ŠIÙÎUºjFx$Ý<¿íØ?Y !L\YÑÙ/ÚØãÛ‡7J‡ÅUWÃ.Hìn§ [ö¡àçŒjp„ÎÒFúRtM Qò:Ò "Dlã1ç>ö¥Ä–?QbQ¹Tq›S„âQ†”à¬Ñæô b¦Öÿc¹g£”ˆyxðŽ}yT0ƒ=+€±š/"ß«'•Ò[9K…нÍÒJ(7¼EÌ&-¾ÒðŽ«'d×¥š®ñTõ´8=>»ˆ&‰p0¦=Ÿè¡_ 7´UÍüŒ²_ˆ>¨Xw¶¯p+¤P «æ6±©¾1NM¾Óœ7 hërˆ†ÇOÁ‹&’èß hÇtÒ&J –830”RþòÜ‘³U@^*1N”Ú caÚÙ?Ë[·®ŽB¨øbbÍ ]‡pÖi¿õy Œ¹“(c^™à-²J^!)ý6ä¸ah«‡œÇøny’éÖ€ÔnN¼ÍÛ”@+{ŽTÅž %,`㡌_DI‡ebø¶¨4?رk†ÎàmÑ€ŒÍ|WªØì”DzS€j$òYÙZò,‰3|÷š!!NñÊÐ\ ñIZÀ«$œ\ì}Ì[-¢·úysº¼„"áÉ¿»¸(Ihõ»fHð¸Øž–. ÚrŽõ.ì(=rÛßµX'Û˜(D Ô ï«ˆpbŽÞÙ_!‡á¸Ç´”ª]§ÝûÍ£«´Ÿ3œ7X¾Hñ>ºe€íáëàŠ¾ÍQònFY¤û§ÃSüeÍ.~>tòL¶{¢/,²ÃŽU€ Ÿ–fzý?–<¨ÛMœWê˜þŠEÅÕ†\¤ç/cPÑqàIÚ-õç‰kƒƒUÏ(nø±¦L§^òñÿeOzê(ƒŠ{=«à ‘³jzÕÀ>W¤NÚ2öxÌž>ƲM¾_DZÖ*&oâ=¤÷3º„÷?ŽåÄ=ë´;¶ÇRæ>n Ö6¿.6ñˆj4"ò¨qDc‹/\íÚ­T­s˜Ød«Ù®Þ[î+ûJK¶ 7ŠB³IC{oßš¸--¾Kdl:5R²Í”lÒS¿p£Íì’—êØ*nÖÇ1 E UçIÐ ôœ6÷›.Mˆf‚àg£/ {NŠ«ï@=þ÷Ò­:CxÕM)°]ÌÖ s(­â¶I¦neP)‰‰J•ä¹Ä;>*il"ÇIŠ÷Ã1pKÂÔ¸ˆ’y_RûÅõÚ‹¸ï­ñ&U’(ŠÆíæDˆq1%Ïû†Mè@zÊgø|ª©Ûm… “býЉeàŸT*S£`úô÷ÇRPj É‘H[V¼]fûæš×éù<£0œÌ{38˰0¤ob\£ÙŸ¿V,–ÇÁj®*™êJá./ÿ0P(¶_KñøµˆîöÌ™™×F£‰/L½™6C;(1 F¾Èš¹àR6 k/f‚ff ! ¶c«rt“@ðê7•ù¬¤bmµ%Mu;%¥ÒN¸!ŽÁ [²žQWC^z­ø¼;?Äe›úðÁzFM„Vté³Έ%^Ÿ»nh#fùX®w]}ƒ:÷Û.eª­î†^m¹ùÉ¥šl"eäл&ÏAϘ3ù½*°Í$t8;®.g÷*ŸŒ›EÔAï‡'êòó¬Ðéõ4éRG'ç&ZžM}m^ŸGïoûU^6&lSvüA Ô&9zé>. ±ç²ÓšëúMÃŒÝÓó¾ìª¢ïï§\b³·ÇNVKõk´v%ðÇï   @d6aw`ÄèÁ! Ö°Á°×º. )Æ™ËT[/{¦Oq«ó+uX*Q!TÛSˆñ‰¹ÔŽ+²Þ&aÙ@@ŠÂv1Ô‰i8‰a¶#óÒÂÓ—–‚`^2ÅÍ‘bH*oåŸÂR®]îñY–dNŒ&dH@K"d’…Ô-c[à®n]‰ ²Ä`|æ]p±§?,8ÎÝp@ºÁÚ[˜PC$¡Iåži…×¼–˜i@M3ÐfÄH—%Ij5h‰nÈß–þο~J0X°žæoŠ‹Ï(q§Éï$ÝÖFkê1Õ–þ’®œuœ*S°xjÌæ >ßTvdÜœ…ÒºHB—¿Íã9uî‘GêäãUl‰uˆ ˜Úd‡YÊSIå~à¼-Ü´szA¤ – µRÙªßzjT0ïÒ˜±u†ËÜd>BË_èf$¢.‹‰åj½AoÕfã"Ü8ª:·êÃ7›…«-Z[Är»Î:ð|†ñ{û€Ë# …_UYxgu÷©2®˜ÁVò¹p ­²‘¢‚" ¡ÕzJ< »1}GA–J '¾ˆµÆ@T׃\ ¶ …ø!± G§ÁÓU€³²Š„òõ•!¯™ ­5&BÈ—¾RP“Ä1_mgVÂUèµÀZ8äœat²Z[Î ’XïdáK;Q‘ªŽ1bUN÷ãU†Gà.°¹ù¸ØÝE"&ö~´>ß¼|ckÅË5¾6 4oÌ÷¢!O”o|.BV.9¤ ±öÀø9ª×±g±›V¤Uc«_í /dÄóëtˆ â„ÚМ· cÙZÄ–³£lŒ)7Ä×ŃùqÀóº°X\yÓß’Ž0iƱ[ÉòEK\—WSl*cÆí9²åKÍÜ zkÞ· ɇM Õ﮺‚çwwB«eÿ!Lì‹ ~“é~u烠Q?µí–Æâ§ ¤Ý„Ô( Bṑ´ŸðC¸;ç3€œV®9 C¢GV즮§-ÄÏ3ë¹ËC×cãîȸ¡2ØÒß_*¯£hSîl~¹Qð ”‹OQˆ£31‘þ«óM¿Ù*úòxnËg>•žQšr-Gý!ìKAMÿ ‰Ö-%'„€â¾CLn¯Ô$è·„ús.P{ÄÆl–<{(žºÊ…¹ó¶Š·¬æ‚o&ÃJëƒpMAl¤…Áùw¾Ê*/0RëíJFn¿½ óÆ¿¥`äÊ&?[=Уäç”­”£Vi¿bêL·¿ÄÒ1ÌŠžG¢Á¤Œ‚oÀ2ô¿?J¢¯ŠŒœ‚€ñ¿+Cƒˆ"˜ÿ€ VæHi±V)@¤AïV”R]÷l$Mqê: żË.L“ KzkãÀ’-:ºÚMóÏc@<‰#±IÝgò=üJXß0öÞ¶O¹ 9|8f@RPÐns ¤}Í2Ì©Wu^ç¼Økp Ë·dªGÌQ#‹(8ClÕ®švª–ån 3Á†ômDoÝÿU­ L:[³?ûX5ðŸö¯‹R¾¤go©éØvc›)ý° ?g)‰;JOáÔ!)‡SÞwÓâ4x¥ ã,õ›Òn°˜¨rá²jþ9Š Úo/œ¸`ÿ Õí‹wT÷~Å»:¶x“z®!KÛámΆ ÝZ&uPð:îZUpäWžK›¹ó,zÞúËí€kR×Ë” ß; LÆ«–×ÈÊkæM“\Ž/-ÿ†`‹›f÷ôçQD[Ú£õuIÀFÈ@H²¨Å%Wv±Ž]ö!$[0L0, QíxÕc–ñÎfH·•î”íq†ƒ“*н_(ž`ð&È4ì£Ér¼ºÌKq¥8Áøgåš$žÀ ¼´6`T‘Z‘\iã)».ãÿÆmã«ðð9̦Hè¸èNlBÎXIko@aÙñvÙtðlž±ÙÁ×׋Ÿ§qÈÂŒ ‹F/†ðÿl–!çæ2|F1pè£6„äÜÑb£oE kaXÜ/' -¸%«O¯çE\€kÉÞ5¥KϳÐÚÑ8U8ƒî‡+[ˆÚ˜n²tíaD©/•j%T3,=–ÀÜP$Þ†®6üÝž %e0tò8Áù-ÂD ¥~ã8³þü6ªÂ÷J\Óö„óñ ñ™ÄP‰ÝGèOMÀÂeÖºëårØ_¦$’æï÷±Ÿ48‹Ü!,&®‘ÑBÒÔ×—aG²"ÇJ5©ÄŠ;&±J‹#dáR".c¾ª'§-0Q 5Ôì\yï¢7#ÔÖIjcþÖTÑ5®Ý‚©Æ µ¡ÿwÄÂ=ÂÑö:üöÖÈ6áäÑ%êé(ÒøIÇ-¿ÂEÿÞˆü¾#Ô\ñÂm<µcužÔY7®(ÛÎ,&_ÄóÔœÈaÊ!il<*oiÏmhk.¿xÂWËŠ³¥ëÌS¢<áÙó¾”:.nûMä8ǬbuÛË:W0øn[ ¨61´œ@²ä5@!ñÏ­Ø.`ÈÝí2‡54ø;x-x? ¦°/k?ƒ"[£Ó’kªÕ@†¥®¿8‚SU’˜ñÿ™Ãìø§í¡‚Ñ‘ô %¥Jí[zŸVEWËJ×—g”_Hñ›¡Í¸s\«ï’ÔN®ª‚p¨0gzo‹G[¯NŒµÖÔIÎç:H1·µ¨?h.Õwgït½±´–¦Ï|·WM3C>p9,&0èNaÎ[t‡dø?fDŸ½£×1eÒ„çÖ‰µYoÃ9V ÅÓ¤ [œú¹Ý…‘Œà™9öù£0Í/±ª‰HÏë q"®Ý 3~ƒ]sTGr,[OE†©oiˆÖÚ2ßAk³zæ'Þ¾RˆÌdẠƒm‰ž ÉÈæn;ôŠ«îâ2ÏC4‹4 ¼!›¸9(»· Láìpoëq§ ±µütê³n&¼}jûÀn–0õ©ÅTÌ Ï¬º /‡ˆÊÔ­à0Ë©Žlj(„q—oHö.ˆ#5Í‹h„Àð( çQΙ׉Þ×lçX³ˆ “7бq#IQYSrJ 3f(ŠÈ=kŽ=‰Àõ‰êJüƒöj¾3xÑBøº§ó:ø&Ü‘CD±‰­œ^‹~;¶šËÄ!ƒh­s䖢е[ŠÅÿ ç€j¦‹²8â"ÿ "íYCK‘Ü)qÜ[Ç7ªÀå±l¡‹õ».ÝFo¯ÄÑâ+¼îô¨R8肪¾É’™Ìp}í¤IúÒçOGCh$,>QØ|ñ1va}Ô4õLâÞ-×ê֙ϔå ÃÄœ½b\Õgpc®ãŒr×ÖÖÁ4Ú|·ö—G£Ôßž2ÝŒè•j*…à8²ÿ©}Oµ#¤RÿÍ9­5©Ò–ß—‚§‰GŸ$Ø Ÿ%Æ8ò³Ü! Ô³i„ì ÞÁ¨É¦¦Û/”—ìlY­òvÖ3 Ô"Ü‹Û ,ïtá¹)¦uÕ!£Ú¢8ì߸C™±wq[¸ôÉÔ¯-ûa‘òâ‡Þ>#J#gêÒ,ÛF4uÄ‹ve$oRKfNX’ãå1'îQ’ØÒé§|®çeê2à‹~ܹîsÆÕ T„¨:" ·rqÃ¥W»ÎŸ…­0d%¥É[`†P¥m-†©ÎÈËR·Y¿0¾5Üe ïXýÀwðÍ3!æðA…CáËùgŠøMéõçùcóÁóÙÂ[å–ÉzÅ‚Ã5Rv'–oýeAcŽp1Þ vr&‚`<ÈU,vTû}Fq,Gö߇ÆrÒ0²åÝ=Ø5ÚJª^¦Ï­uPKŒíç™ã>É #ÇäeiW"¾©z²î”ÚsµYÀa•:ÃÌ£ÈlgK;’r”9¦íì¹ãŽ æH]qÓÐHZz)Â7=0b É›—¾q B\Å †{ ‚ SU¥t—¨u5“)k®›²®sqýÁêÒcvð§!›eoܘÇí?çr­Ñè% å‹#HÃ!jzàýkb% #"m‘5ƒ.‡&‚žsò3ö½5|Uó¥6ãXA¸ù£¯LýÆÚ,pag¢É«‡ÚX§Û½çʦߙUß‘&Z2ŠH¢ kFýtÎøl_sŸ§Íߦå‡öµê›H¦k²Š(,4Ô”WËû,3^1H<|¯lƒÚÅúåL.dnY1EL.0@š¯Û”È阈èÀ4© á-çœh}—y‰iOjöf°?—®6ÀbH–ËBcdWý-3ú­hì·Gý°>|eû{³©ëA7°Óƒ½­¹Ulè íuÅ8ÀMµçzñóãÝb˜¡V²pŸj­š¼“M%Ãu`¯Ó SÛ‹–ô9+= F‰©ZLØw¯á %D­X³0n w÷¤|ô׃’.1Ê ÁïGÆhÜîÁL ·ÀÔ­ xÑ òc[ߪèMÁ{”•‡êàô›b†E“5G7’€±Á!ÀÕÜ@¹ÍsX?¥È~cŒ.%û—ɼL÷>óŸ¨YS©ò>aæg‡6£r^î4O[;bŽtG¥å¥Ïš‰M"à–ÈqšrüsÓ–àþ‰…Æ+‰Âe$`Ã%…,Ÿæ- ñh¦Â8úhœb­Ä¾Éš·NPÿ)ÄàSð9ô.E_+zÿ¿Ÿ»ŽC´ðc#¯øÏ„§´¤ò´œ1ðªÇ™>"Æ)=Ì>f„ßd`Îk~÷Ì+Õ½ç!D+ž&Ø{?*¹hdÅ—Ý[½­ãé®q"GÈÆ8ò3w¯7ð×}*YÖe:9–:º¨Ñ¨ŒL˜»ƒ K­×Y&‘ERæÝËÍ­‡¬}Qßbæá8?Sæ.WëI³¡cˆyCc` ˜Í¼íbtéÔAß] p7K*ƒ\PðÜ m³j70ElÂÍgu‹cjÛÞ¤< $݇·.±';5°•i?h©Eì°“¦ªÔ¶—å_ODhÂ@IɘœJ{Rçì5 E~Ÿ+Ÿ,¿^ôÂQ †uïÍ‹:­Ã«ÂGZji"qéÕ8”æüéBÇ¡}I5”ÿÌwÃK™¼ŠyÜîoËMïÇfd—áRsîžãÀ7†°RÒ¬Eº¯,l å¶W¶=iÁZñùmàÈü]*YÇæOy2×,„GIãÛß.*4æ=o:–p¢6PÞ2ZJ¤±Ø¸›2$éBi#ÈH“ÃA}ٜΠ"6§†*I­¢#F!d™D6×€£Q¯p·ÀŽbU9OtKkr"  ŽŒ˜2ñ[6ºZ ŽÚÐ|:š*mwì—æ UGÃ^ã\ŸÄ|™”A¿‚åî’ÑemÞÿýà j2uÆðN­óCKSXˆI +RuKÀ¢¤Â xiå®ÀÐ6—æ?Ÿ€’mâ¶ŽÝ4ŽÆ™Ï(—åÊtõØ<šCn üꔵï%òCå A¶a H´wºG\8ùÔT z~yJreZ­SÒÒ›À¾ðÀeà]W˜ÊÄ‹T¸š»–°NK†Ö•Áë²—t÷‰Š}pìñY>XSF[ö¥eZ Ç&4Ö\:QcÏ•€Ô Šõa½È÷{1ü®ù^˜í­è+m+âa~Ô‰¢ç›žï ¥îx‘jnA·צ5¢û~ÔeæfÛÝÓå1EÙ`m›WuU.~Ýǘ{î¹k’—ÍÀ«…â Ç;àjÆÅž#Àm9èÌAKÚÌÕ‘Njt‰ÄÒœ Ëú‚Y¬(%?ÎåWu<Þšxç‚‘w°ÎÛxv¯Öt6ûW¦_„ùnØUÆ\ùViƪç¿ñ€»háœÈj&ìð€LG ¿I4¡¢µÒ5®j*ñŠ ¤Ë@iª—³ë§-œ|-ƒ‰Eú25•WŠ@꽇3Ç¥×LqšØöÞŠs‹j^ÿ‹‡• ¤¬eok²„Çýn—ÖÒ¡L£oYj…€:ô¢ýffârk*4¦šv¤ßI_iеÖRÑcͪŽj¤º£x¨óÉß/õz„šm‡gœ  Î{y1Eýµ;ìíö!áUZùA4®“ßsÌ–-ûà™I°Ëkçåú“MÁŽD:±_öUqwËo20L¶óaæe KÅXˆC¹y yAõÕy7 Ä]¬¹9VGŸØM7ëÔó»põ‘Þ â~гL ժƿ1eï󊡎)ï+ <…”ÎÝóÔ5¨ñRˆ›«éÜ}iægazˆøÜ y`ÏÔ$4Ü«ŽÝ\pYXâ¡ ¨›ñå®ÅÁÀÉ7Ëš™E,¢vغû;~€Ëw¸7Ÿ›a¸”Ùžv@2ôî…~Dª‘¬hüsÚå‚Ó§ ñC/ Ô¹t¸i#ê%x¶jøÃ(›Â-ð"¿µ@Kž )ЫÒ Æ)š¹„ÖÏ¢ŠŸF‰ó—ðÎ7׌¦“™ñLíMNö9¾~ü·v¬œÂï|™Ž4œµÍtŠüÇ( » Ô8Ž‘ˆÑ£s¶ˆPL#Åk½¶0ŒÍ–Õy½=î+„8o0âW#œI²öV«´˜dæ±1ïòNxQñz.Ç’ˆ‹§ü½=ZÓ»(”®F¤Cí(/·Ðð“À˜;¹M¶;€EŒ¶WI¡~ëã8¾®‘xð¼L3Qœ«ÒÓãß}cÜ€ëxuýÐÒ.WÊø´Ìm_Ÿ…Uå/á—¼ô_o°CE»ó¢™B£h¿9`ÀÇ«‘ÊkΫ6d¼)úöø ee-$\ íš‹„—ÓEyÜí'þR'=§´W÷x|ãBuìT$©äÑ‹•WòÚå©Ò<ž…ՋךqG¥Q•[¦ù·ÇW'7G¼àÍ ]a±É©*oîõjŒ–©íVuE“ïŠ?¬Í[ñ­àî ßCQº‡²hÚúÞø“$–53én‡™:Fƒ™zÑUUºÕª¬S›«¦•*Rå”àsâM0…¶•ÉYØ(ÅÃáù2;¢=ƒA /5=¹\© P@Ûfí°e•™']×þQ(™nfMX×Ä-.]\‹"Úä°iÓCšÉ£)½¹*Ã2',ýËÆ,–'èI?0?'ÜL/\Ê+ÌÉ`’gh¿xšW ]ï}Ì혫úŦ‰3GµÛ{ªÙt+'²F¨0ÌÒÛ¼xЗZüšÿ,µE„Šv¯…ðÈÿ˜&ØL –¨·ù.ë"@¡8÷öm î·šÔ˜¡¿4Œ0‹6·ÏÜv 9¯j^ׂÃ3Ά&­XzN”?dÚ0°«ý¸÷þ³Â#¡?…ÿ &ý‹ØîÙ0É!ij)¦úx.…+N[ƒMš7 ƒƒbÍ`ÅR®Z~SjRŸâ‹Ž;§9‘—+«S߇³h0Ö¡v¸@-EÒ4/´÷°b*$uEs¸RxTë4Ýd>G€íòÙuE¤ щ&Yì›PøWŽe}ȦÜâoƒ¢Þòö؇ó7ˆø,n+%!¡Ô¯†ÁÁo4o@Ç7ÜÓ‡”g ·oð´Ò¬WËñOΫ—ãÈúHcâ¡+(²LŒ(GKjb7UUxg$–jWŒjÕu t*nƒap™|²p™@ä3¡¨0MnkTf?rÂK^·Åœ6Ú vî0/¦×OŸGÁÒ` ToÖÝÙŠnq֑ߺä´~hv>Q~/A•UR·H¿”’óØvc>Y_l§àPšŽÈ ̹eîãYG€¾5Æܦü™±Íaß踼ƒÕr‹°nª;‡¼UwÅhÒ·ÉÐ×öË¡Ê(øQñ7êúlY×[ß°Cmoì]);¹Y¥Ž¾Õu UM÷`Új‹:ö(8·âzLtÝ+ÉÁj{¡Á¡èZ6Tc#Çí"ÿ£“=QbñÆ)qªÿMªvégæó7½>5ü™¶¯üam6¶¼DX×Bøéò4+óMþ³Ï}µ-(©/-ö+}VÙtEÈóµZ•NâZDbã²cA¸4tîL|z^—>"ýð‘¼G¶÷c>ëãýE,î? —ƒÿ¯Güt]ðÔ,P@U{´¬}{šˆÛ—äóc t1XîrûB‰?aÁZsßÀ£qC}ø##ÐöÞ9ƨ4oÙ=0·,–@•>!èÝÇ7Ì…òQ»x ºùƒšª*dàT ”`òɽ䇣‹0é´¿ìGÉ„NÈgv_ GþÂ-P¢ mZ·œB ž¯€\ÏÍâyqD±F` ¯Âù… l¦ª¹ø‚*2G&ë#ÄïXËx…”'ñ~þBš`ñiE‹1QÕʦÕ]íÑ®( .œ^¸ƒâ,Žv['ñ­áŠÔøÙàŒ+ÅÈý¨Ò&ª˜ÈxrÉP¼úžc«ÖÙQ½xE¯Ä—8Â+¯¨é¹¢êÇ]¼®åz—ÀkæÏÕ å÷i¥:Qxô¬úˆôh£ ¼·l)òQ]zâxݽ¢Ç \-•‡È¿…DÐŽàïm±¿âO#b¹„ÅÅþßìy".ìàLœ+îô<›°_÷¥]vWº²G!i–Z¶0Ååd"øs6%BUÊ‚S­§‹ ©óá/Ÿ~YäÄüÞ¦2íÐ7Ÿ“]Š•sy ^¯Õ“u„Dê(Ú RUe¦Éh´­\#N¹tº„ßL»¹ÿæY<ª³ç—˘O›voK¶™hÂq|òhxŽÏ&ÿ] Ô (£¤zO iüciö•þô Ýß0Õ³>Vâþä1Ř˜TßS¦&Þ8€¸ ¼¾Dªà–þì_̸S ÏPÉõÅk± ¥O¯ýì1˜FÅWqÅ›óXÒâŽE| QèG>𯃌¨IhlI½Îšm\µN¬tcÇ8ăïþÏvN¸ýAH” [ÓŽ"ûPeêÿ\U(ÿ¯KF"Fïö!ÌTQ Sè@æÑ/ÌTÍõwœ·+©$— c`ì–^ÀƒíŒ\ßxAŒL7– µq>'7®†¿’¹ö´÷q„dÄK¥ä1$!âxOŒ‘\|¼è%[)V²õãjmÚüìžýÄ{žŒ‚4çKÙ!®±qzf@µÙÿ«Gˆì?4.øöðþ‡Û5ü ,4‹ >l6• §ü$¤9#%Þ÷v´´“‡Ú~ÀpKŒÛ¼ c¦p"‰½ÈUÙÅÓ12êbáW\i™=›œÎU.&úâ4ke­5˨E.—•;zÙ4ÒXaèKÀÓ烠ݥ‹ó‚(›Š¥·ð±mB/úðE© çÞ %[oM¡·Ñå³&küíhæ0òóì—Q‡DÖ“ÑÛl½ÄPþ#=‘¨Na£Ao« Ê—!pÀDý¥ôL¦s;tÒ ˆ1¿è!ÞÛÙDÆy$,VÿüZW]-XøÑõÊŸ1ýÕŋո­ÐYOÎ+p©#LbÚXñ¨êƒ”Ò í˜¨æÙ†aä))O·pË2bP”ž•%õý*5k­îù¥`xcñÞnµGµos“2+NÌ….j„ÚHíìÂÃ}ª…íY†r¬á¶ÞgºfTéÃá” 4ýÈjø¦©¶Õ™ªIv˜%±ƒ¶Q!qš6pÈÆ§\›'Uºlo¿õnüSïG¦bãE0H¤oáÐ '9VÖXx‘̪˜‰¢©LO†ÙØ¿zôˆâ(Íÿƙбw›°Ä×,ÒnDxš™­Ú]‡9ƒ-ŽÁ1í¦Dœ—öÎoY$uíòRêÃÂÇß]ZÞ Á0£a¡Ê˨ã#½N¢Óô‘@|ŒOçC­ß!ûXó,“õžvwMÌ]­Á. pqÓ†üÎr¨J=ë\ ’#sZ?önDE)xâÚ©ÈÂO覤ló—dvÿ Mf5wUNBF@¹(”°øx{£æØoɲQЉY(¿£bÿJz÷½‚‚E„ªìp…:‰ÏúHdÒ4×þà-î§èìŽåª±ÃÒŒA`ðeƒb  ”Oî˜ÞÉÝjÞó@%@Âx˧Œ:´©í½–˜gœ…ÏôYTæsX˜ÑTP¹ì«‹;UšPÖ…?ëÅ I€ %ÔAÕÏŒ.˜y{Úvÿá×—<&ç1óÈXV851U¶Æ'SÎðÆ”Ï|ÏÌØbõ^ǘ2&y ö(›;ŠÑayüEr×]*‚ÆAº]µ2âæpËi¾™¤"¸$ø”â%Ë`Ÿ*ª£ðÖ¢ójti§€?eëZuð¢žP¯Z¤FµŠ^Í—35‚ &2’]í¶¦Èû­Ã­’sˆßëPsg>•„ÚÕÕfe­ÈŸPíü$3M&ÈQ2›&ÃA¹>z‰<¨<ϱ'âëó •]Ê•ƒ'¥ó©€iÌRØÍâBzƒÇè¤J®ØHBã¨M4ÐÜ%©„çš®zèÛS”çYÞ•z+ìﯾ's½(¥}¶œªÆ4u¯€œïà€sçøîø„›lÛÍ–î‹/ŠÚ ïУÔ[ºk@Ê눆ۥåóIQü°€)Z^Ï(}&]ÊR`øt¹¨±e¡UU·Be`–\"ÊIôì5Ða2HT$s‘ âß• ‡¡¿U Ñ¶‰p ^>»uKFåQë%é{³$äPf-|È,NŒ@Bgž™‡tŽïºV›QÒtŽow³µ&6¨ôÕ©i*t‡Ý-ƒí;ù§/L–ÝÔBcÞ ãKt°á =5¥0*Ws6¾ÝVH]ú’÷¡î?ö+ ±XhÊ‚_ õ´„øl£EL“JSb=× XÃÔ½q±0cø;ÿ–•ðÍz°Á¨¬žõXƸψÿ%™_‰`°ä·òp0fð”wXiÖÇ[I^÷qD¬†ü"[ï¾x‚feí;pì]"y±zŒl…|ÄqŒrtÞì1E§L_Y8•­Ä­pY¸ƒº3D‹a;ÂÇ;mÆÝ¶¥„CÖÝ ÖÓ`wõûëu=+Q¥ß%½â#'‰‡RÑ^.›@ÇS´É÷í³JÙZPÏØV$ì9Œ’÷½»1i¾÷òUÞd·R-—"TD^æA67çIÞŸ{üi;W›GÆ•¾g±;|KÅÊ ‚¾Æ7(¼j3˜ÖÄW¯CáY=ÐÇøèx)Èâooñˆ»}Ý2{mˆ¸;‡BUiô¦£<‡Ì»qs]_{Ç'šïØ;¯0`.^øŽ[×Âç4š˜BóæFpÍå&$!ç)Xë Z':©c¶³Îç}B@€Gfñ–¬);°½[LÆ$fÓËÝHm|Ñ$^¼]¿‡%Lwe¼$ÿÐòh8Ûõ0í¢šLÍ Y®_,xÏÉÙH¦+³×d83‚ývÎôÿ2HÐ]µmIþ€*5RNkäd)V9–ŽnHV^¥ðž‚©ßâØØœÖ$éZ&Lt­I©ÆZ `ñĺ®ˆ¦ÅCˆtÚT&ĪÀ`±¸Â.ni´}+X3 xÖœþ3»¯ÊÚç\GFI"-¤¶†”›jÚ|2ÜÅbމ†éA:j÷Æ(Ð*r欋Ü`N‘¿ó]ƒ1”ó SIgß^zÑ<áÚÁÄ_0‘r[Ti30 Œö,¬ÛlW+ó…®#ʵà ¯œæz@ œÓôŒòX½¨¥~#TFx™žÎ–p;I½„ƒíë¸ð´n;,X’I6ÀÍoè6‘jFÒÏ´zGá“¶'Ú;O šüpêÞãfÇTò-ïdìuvÞEi§§f«p«D‹Ê;ñ›¦Ùçì~ªo|!¡×¼ÜL¶´‰§töäO¹« Õß%k·0Ó¥Ði‚ _[u—†Ñ7ᑸ¼‰€Zؽ*ŠW¸$¹…ëÔÛFj¶–"1›ÏžHüA[d ÞÓQ³LÍAsa® s%QÎÔ-ã'&šÔ…G|Ž(Í¢ržR0#p|3=äÌrý¥[k&‡ÔYøÙ5S©Ž¡ÃLòø†€ÛÀ'Ò” 9Ƥ±SI22I¹v„WfÝÈä›Ùu‡Òþ´Á<÷-²áT>Õ¤ ,”²A@ã`”OE¦¢¯B1'Ö ì+ÓíÄFø²aꦫ¼õ£jFþ°›+SÞ@ÄhFâ }‘Ä;ƒ<f›ªÈsž†§ Š´ë¡äÕšX¥,«mñ9tŠ{$Ϧt„¸=Ù‡¨2;AlqQ$…LæQJ[n^V;»üÜæá€V»p]„OÑZ/LnÁü‘"O¾í;i­ nÑ-°×±É2‘¥ùnÕ…°j]¤µ}Ë€øÅí÷iŒ*ñhv ÑÃÁ›“ñDv»ç¦¢¯º7°©.Ä<˜üqrª<°:,¹ºø¬´…9d¹sı‹\Š·¬ˆÑ˜Š¾(¿Ù’hÈFÏ ”¡Èéí{`ú2j*ÅÙ6õ&%c'@Ø F•ï±ùŒ¦ß­Æ‹bîŽþÐ=…‚ö‡¢zàã®G&>Æ¡AJ°å}þoÝ ÖŒ®© ®¸|ñ sjCí£]kWügíüõ}uÖs°T}ù”¿sÉ¡·]%ퟂ·íFKWÙÞq=´©:{=ôEXš>fÃݨ ¬ÍË0~h‚M„:×~K0оЌV)˜BÊA<ßÑÇW©èP0e âT’î!HG!;Ћ ù‚ëú /"Ù”%òF¼î?DXÛ†¾›½–÷s{•AœÂÇ4E¶Œfe\%µWx‹,ê ’Rµni~"HæßéÂp­nÕX¥ÐtŠ©\·N“¯UuÿôrötZ8‡=.CátãŒYbˆA‘gso•¯P¢oƒaÁ¦6¤kü­^•(‘Ë£œm}Lö\Ì{³§F: ´h‚µ×ÌDÍ„¼õ9Ç>©——z¸½Iìú>oNN®%Œg¿ç<éÍ_ë£fc¯Þ”d›è¡5³5fcÖ¸J~#™­ô„µh¯‡uʪÕ9´^ëÑÕ…ß^7Wu5ù9byÑx”ëïP)#‚<S½ß8üýxQ$’ÌŽrcþ¦Ûá?ø2xj"É´Ä‹¡1s†½-¼"`õš®Ô5ÀÁw2²©ØÓ¾ìéɪ£Ï.¬·:ÔrŒµU·Þðúoê/®1Ȭº²­_Î>bÃô^;ýí‘ÕgNÍåFw`ùVh[­ã#¸~E¹yˆåîºsƒ·´nö´ß,èº?'™®¥mw·h?™‘zv”§¹IX¬¶=÷]ag{8³>'7 õâÆsÞÈÜFYuÅTч8¸Êj«ü *âq7÷Î'î€*{’–¯H¶œóïg-…sßß.Íbç¼,Õ¶§ýII¿AµŽ ^Ÿë¾½ŸôExójûþ¿qø®ªõ»ØÞ–ná¥%.ÂZú­&µML6ÝtôÌË{y¤lΫéD×Ü2£¿Äôk›{WßQUŠíê-©4"ï^*ª0D„q­9ýŒ„#ÌQåq,tïßi‰WÿÂíÊ$v¹òd<ÕW…Wðt?"³ö Å*ôAi¯‡?3‘1í3:ÖÑY¹g5å]2½gBVt–ñÙ¹cwÝ®*3<±]ÖqÛלóåÏX¯kŸ½pky§„ßÜÃ5è\ ¶¢Zõ½œ§_¥ò)úRÕž¦æÁE&±g›ÄÑ–0âDßFaêÖxÈ´Û eHtFÊgéõƒ*_­w•„øsZ¦ò«¸ÎËÊg¿a&-½2 Û–)èSE¼¨h°-Z÷DÚ±å-dk±ÍÍ,`œTõKÍñ¾ä OE1B4€Ä#ZôÒfháþMDÛÖþL9Ê|/iÚ7žÔuDñ¯^FÝÀ3E tvnÅë´,‘„Rûƒ3.ªiùœFu%Ìè‚ûOS­þÄÂW^úÉÉ—jͬߩ·Á.)tÕäñÏŠ±çF—FÓÏ´5sËKvnco@Ïa^ÿK5Ö²ï‚c)¥oW±ýÆyíz—,4ìp› W»ì´'¦[îÔÝíRÓl% ï6"ʨ[‡à:û¬ØÆNõ<É™·õ%lÐ%Gôõªq&Q½GùëŒ(9ínX«žœŸ±`ý{ìÅ…é]nWÄëì>ÀÎb]Â"Ý^æ®Ó£'çAHÇ#õØì鈶L†þlµÁR!+ò¹‡Tš¢ÀT»»×0¢´6 5T¨o:ÚH“èIflÔm¼Ì}Aüâý 5·„µè*Ážzô¶óà$\僚~þ8óÿ¦€©ÎÎØ¬-ÒŸËÄÃ[›7ÒVD°×mq†R¬ v5ˆ­‰ßMéî;¸p'›~öBÞÅ£ËèÚ¢E‰©u¸ªÞ_©/—Ùeä×5J0éñ+p2¬R±ŽÏ¶vò鮘óMMeQ³–j5Ü›–p Ž}njå6ê­ÏÉ/vßAÁw(Çf'ƒ¼¬3Ô^OsÁÃ|P)n+<¶Ô†[¹ÙZ‘ÞKGPÔ¤2û÷Ì/ÿ=ê\£}?&§Ä:V&!ή!Ù—\k€ÚÕÈ÷2 Ú™Ûž /ÿ§K’Õ6.„ÓRŠ‚¬îù1}9T1Ïu >£U‰M|M™ÞÅÃË“F)yK‘ÇyÙÙ÷lè1íZ½väÐê‰'ÚE*ýßjÕç.6|lb¸µð#µܦÊní×\½Õj»ß©"d³»æ¶jàŠY­;z&‡¨j®H¦:zuÖ´8“q¸°/‘ËÂÀ:×Üó»cýpÅîàdÝÓÐ{€äþ,F ¾O4i$uêòºMg{¥7²å(fõ.-×D¦.ëäß g¢þ”Ó·{/aàØÊö}×ÙÇBÓÜžI+Ç~c3αþçRßoO¶†í¼¢zêVðÊ©žÎlW,›5ï½ÊN»ÇŸ<˜ë™ݳ͆++]—N >@+>2\Q*œ‰K£‡×sj<ºÓZ¹É1ªQ ¯a6M1³ôÌ×C‡ÏTð7|cÍî™ ‰Ò$=8>ìZZ²…lƃ¯ßÌíó£sXîÚy¬´(WBì¿eÿóDdÍáݪ0ì¿`*œtµ2+³äîýCCÜexÞ¼sàè~?ÙQÿÁw2[ à©;²ÒåÝÏK³Ió³àÉp ”\‚Ã.å©„ÖÝ¥M›xkp“ÖÀ¸^1Œëú¿”ÌãYlç1ï‘+¦Ô0&ª‰Öõ½P,Wz{ oìû‰â\a\aaéÎ(ðû²·ÀÊÎM ¸Ÿ½ã‘'‘ƒ‘5¶z‘އ˜„Z8ƒí¡‚Û,ÁiúÅ&\?Ú^¥ÓIRzúÝXJ߉éÿ^Vî~öª%œ°É¼iÁ• Þ0ÆδʄivK|ÕX˜g“0™Þ.™M¿ýÐbÔØÔ¸:d„d …'ZÊ Õ¶»«4KšV$y'ËKO•üMàÕh2ø ‹p'2·C íþ–¡«eQG`EçÉ,´æw¡›¤»ò*(5 šòÁÊ£AÕGéGcMméDÁêí…Ï/.Ø‚ÑJŸ$ª/èdR…èpLÿÊ*8C¶ŒÁ¶Óm‰c±ýämC*M”‚-7¹Qüâ}œÖYò;ìÊÏŦññ帤ö“ÄØDojnzPì¡+*2­\Ù5›þ¤%È,)A&#Ëd™|É}ªõæâmó„G‡ýK&¬×¦¿ÉF‡3ÍÌQeD† ¤WSøLã‰àµmMMÿ×R"ûfÐmeŒ µz€qŽˆ[ ,8ìyVúŪzš°>RÎí£¤ía^ìýw\’9kJ>YÚÉöþ·o¿¯âƒ2îˆP ðaB{È~›A-PÚ/£q†Ëcfß4œwì-df(QŽ#ÏK6j”êÔqý^[Ï„7 ª’íÂÙUÚ BÓßV›t©v»Ùv·+¢Ün½E{®ì© GÎ[ŽÍºÅá ¢¿°Æ×è$§6¦RkKÜÍÒëë\y`›˜¸Ó3ú2yŽ˜J|¼<º-¼Ú˜¾ÞÍåÄ•4G¥ö >`­iñÔqûAÐ;²bs9A?8÷šªjydÓxÓiŒ¾ßÔ]š];ôʤV# Þt`ùùcìU>ÞÏÕÀeœñÕX¸|îâËõ1Ïæi ‰—×ÿâ»~œ4×ã¡uìã­ÃÓç]óUr~ο“íjÖÚ3ŒˆÙ—ÒÁÉ®ô‘ ?“]qèúÊÎü§âæè-‡i°4dö˜E;´3îÞÛis}ÂüO-š‡¥c3{Ûü¶rÙ † 7êQÓ ^èdóª]zÏkÜ®®úÔ³Û81g‚ Íi+‹é›>õab·¿oE“²õâ/­:+°ÕÀ9­»ÚZŒšZ)ÿ8A¿?ÆéÏ!Ùè¦+M¥0}èÃö»9V‹¯ô¹ŒXÃXâ8¥wat¶º75’&“¡Øäè0ùCa49&˜Šõ﹩ØÔ0>Äÿú¬1¦X®ù h€96tøÌ±CÇgÌ5~yÞu]+I´¶¦ìÿ°õõÉ1Ü*¥0ð*Cð]ÕÆ~]™hƒ!i@ïc¯7Ìö{ª:3ê†Øˆ¯¦ËsÁRï±bÁÙ¿jÖåßÀµ{_¾j«S¡¶“@¿@òÝYž²pOUªË‡(²¸èšS³re¡Ál¼0f¨ =GòoþàùŠg\G9jUº[ BÍô|‰œo‘jz‘¿ÅÈ—ì6=î}HvXC$Í®&Õùéh+€¿Øü4"VµZ!žâ\6¡'…ѾêñPo–d+a«ˆ)óÌ ¬µÄóe›äïXØ23|Ð/ÐK¤ž>XŒÊÛvÓPù&örsÔáKëÇR7- b 5® b±èñËaC³ŽZ˜zvÏt`§ÒUoa"bY+Hp_Ár;·ËÅ«/ò]-W¬tøÅ·Ía~°‘nØi^]Ïwœ®ó,ÅŠ)ƒ³ÂH»0ÀÜ™Êl¤§N?R*”ËhjoíšTÏŠîG‡fB¹0 ‚Ãå@¦)S“¦Ž™µ xQ9«›$´5ÿGÞý4S;‘]l²5?]r£2G•¹_7òwBªÙfŸd\>‹ßÄ(ÔÙÝ€7¦‹ìnéËRA®í ½Íó­óè°Ãѱó¥bc/I‰nÓ¹E&¨ÜCõoµ-vµ+lQH¼ÆÀOë÷Ùò~]ÉúÆ Ú|iOÇ |ÂG–lÂr¶8Øvù)ÎGÛL—Ðì¾* Þ=nšÉ×åè*μD° ß<Kñë(—bÒô f~n/)ïž=Ø/ßFé¡ô4½£dgRkËÿŒ…äs Êo½u£™Ôü’0nù¯AZþ# Ùé_W¡v.¨ó@+¦u¾®†‰,Öx£™J\Í®laÀ™VÒ„Åû—”BM§¥¦æÁôyå‚lêŸkHgT$ò`hçÀ8@0æ yÊÚ¢(n‰ofKÂÅ…ìŽèJ»Òü@Ô¨\ME ñh¯Ja½Sx£ôÂb/ƒêDŒ9m÷TPmQJ?9Ne¨$*•Lsj[ªýN@kRQ–\§ÓvÍÏÇÀëWLï&8×fè—æ…âPß(ô©’±á’G)¶AEŒfÀ§E÷6ûì­†þƒŠêI%c¯X-— QŒËmzüV?Ñ‘N¢­`°tu¸pÂXkÓ 6¢‚~Dà2¥µ¦TäòÔìq$ÇÁüǧŸ4 «Á‚WÝbE‹"ß{9ø*)<~ìÈ‘ÁGžÖÓ`Å|1¼¥ù²û•y'ÏÚó-±óŸI¯Ç½N½O¢.¥LÅć+,[åÒè5·$põê¡6¿ãx‰ãL±ð÷Œ¯¼„ôC– 瞤v‘.·?Ô6n´–—+51sDø¢üÒ¡<þon¯À6Ë3(©ÚìÓop ŒUkâmÝßNùÄ´?Ùá§%›:6 ŸbBB5nrÛZQžSó~BLzh&Z¡Sû^ Ö®¼YBtLQ™.ŠŸB5fº{ <®öUʑ丂S?«¢ä¦Ủ?<Œ´<öuG¬>n¨‡Â=3H&¬Mú±lã}œŒÜ˜ÜÅçöîJÔ-å€àÝKð8[ C¹ÚkÇ<Ü•ƒ¼eäVIæÓcpáe+#øÈùU/hnraj¡ÆÀ…)é‹Ôû¦ÏˆÃŒ?–º³Üóȉ»r0o "78(~ªAàJ8 ­¶yñ]6ÜE3§©S¶žÂC§œµ*V”±‚;pmpª'¦û÷áqþa¤&O?CÑ% 0ä@÷Oã)ÊgÛÄÙ&Fä­í ŽúÓÃî‡.ŒñlÏå A:yÜ:VOqI8{€RåÓtúÈùÍUÉ= Kp›3œUŰW…B ³òÉ)ƒ‡ùÇRø €hKД¯~•Â/,öù-ÄϦ‰©µ««ø|˯x¹Ô«|EDiØ…ŸSV ¦“RA(®]kE”×@Féвù½MЉ£:ª€m¦ë,2BÙÃëaÃW<<ÜônGŒ¦õ Ìën7&«Ë)®+·Çý__ò`?Òu…±>åà-kŒAš„žšèƒb1{`-â’Z•ˆ˜ÿ™\7ǨYŸ„e0O,Kï{d'PV)3FOFÑd•èƒq²!>­®ñn–·ÿSyÃÏ gÞÇË'¹ã|l|ûãeJø½l Fç¡ý`µÝ.‚Öyögãæ„ÃcЛÑd7ƒÛVy€nÿ¾v:o¥ÄÁA˧çkâG¿ðÈdÄ §1;½‚*Š…c5à jÖ³ Ža\PˆáÕ›xI/tôd" n_0óßTâ”4•\¶ýÝ/^‡ þm¤üw;[£)T–¸O-Õ·t{ ¯¿¢ÊûÎ{ɶåq\)ý9ŠAørÚŠˆƒL´ouîÌÀй#g‡Ÿ9+*ÚɃתúi2ÏN™uÚÌ ¯=È*RÓ›o vM €N6ø¤xZÐÉû ‡ÂëXy«.ýЃ‰"÷2x0ž0ªÿè€ö?M½Œ”Q­`„ ¨]ñÝæÂO¸‚‚!¼ê:éÕ-‘ÿ¬$.¸ÓÕNx®5^„*3üD5þë"ŒóP[S‚ÐA$ûØož‘ Ý”S £DÝëŠñ!7S†7FÛåðæ´öz'z¨ýýŠÜDwQ“Èñ-R-i8Nл½¬ÓHg3¶µæiZdžõžÑäìÛKð“¹Ò¸S~Ž&lJ £™µ‹æÜP1¦#Ù®¿šmC]%$D„$^ x`ý:Vs¤6? N1+Eeöª,Ô%aHJÑÀÿa•d•þl£/`Â:nWhlJkõ‹PÉfͰì/½œ`~8e~JÃ@y!a5v¾̼/7£ÀE/´‹õÈë2ñìè“Âë—§…‡Ä@bɦĿ )8ÏÈMʬdÏLNtù¦Ì×õ—)/4°ÇC™¶t?Äe˜öÎŒh³Y@S2m*G²áÑ¢Äe2$LVÍØ]˜-‘¯%Á¹´nÃpëÈS k§5Ô’°Ž8èˆÓPs†Lê£llLzB£; $À0õx?v3¿"I±Ò³(Rýã+ Û¾G?¹ÜS‚ؽV—ǘîÞŠ£å\f¹*—t­På$¯ì8Øy=YÍÂµŠ†ÌE±ËÏ–˜þÕÐV|2Ðbu/Yì樓R%GÑ5{«7í»­š°(é'è Z“OÇD8sËa™?PøIÁÉðb»[æÁ9‹ˆmшƭ½Õ£êOo\¢—Ï8ã§;fÇÃNÒ?^ظ¿Ï©¾Ð9±&8ÊRÀÄr¼vâRn¢Š 5Ômu+¢¦¤!+…UIÔ ¼¡Ù7#Y¼¸”~Tx›ÔWüÇ— Íjí•ï ká,IT<^†ª)—¿^’@‚ÒËÒbŽLÃU*2¶z— mgŠæZfbºþ*øLR¹ú>>[CîS^: †%>›[±dKÁÇ2ëEòS‡ù1ZÕ<Ýšˆ‹ho:·™ˆ¯r>½gûa¶ä´~5¾5ÖêöB/F1‚aO+Ùaˆî©Ç¨d–‘tÑö®BVc’ÙU‡5¢lãé½Gžs·Ö$" C#wë#Úììµ9Ù6ôo],*Ý‘"¡/VÐÏ£ÎI ÊÃ+á“që$ìÂGà\ZúM ø³F/†©ÜêLˆsõá¾®ª˜a³ƒ ±í £x‰}Ÿ{½EðT»KC±üsJÑ”u+£Ð^mТŒä>àM)B³*LЪ¡µNÈîëX<–Ž•„3^öªçœÙFT¡Ü´2ÿ7Ü@ó‡)xòd~qœAihˆ^¢‹„ÅRŸm(¯÷¡jvǹ²Îf%¼ÿ×>_è|‡4Y ÆÌ.\| ÷Pj‡2•Í^ŽN@×Çlœmó¾´í{­ùÍD_œx?¾ýxsœß̧}êRÿ„NQ;^Ù{®˜p@}þ³¨é€Ò+ÿemÊt %ˆ,a:ëÇï±äÜopA‰³´¯z ôOåÈ"Ö˜íÄÐ(C‹Øè×…eDÎÕñó/ZG…Òãø¸Ëôµ£†\;r„y®ö5èµqpîƒ^íßÌO|V—MJ ®%î2ê¤ßÅÈ ïè¢Íˆ‚î¤Q$Æ.jÁ·¯š.Ò‰Ð)´€ÅhûÍfáZÆÔ4ê9{Bc—fûú*8X¡àE1.SZ¢’TJ|”ÐC5Ú³^ï—RZ¦‡Ùa¿m¤ºû7íÞ|Î)s³ßSLwÃÏ’¥Äª>¹ ÚB½]†Œër½Ü]f«•EÙ‰Ànvå‡Uy•OùôïDöUļù—¡ž®Ϲ·qQ”ÅCþ}§ò#¶6ð³ùì‡{?ɼ‘®‰Oz>ÌÖW'5‡G²‡“© ­êPàÏ5Œs¾/o°=«M ¸ "-ÊV)d ÔáxÇóîß{æ+é–H³ä§ - ©´ç`³IÂÒŽè¯d“.SU7Ê|Ú~Ùf¸ŠÕ¥1{¹‚TvlÈ*+ÿ‹2JŠ·c¼þ¼¤:"Ø0K{4nd|±ª±âC‹ÒµÝJú0ÖüánåQ623‹ƒ‹H«ŒT»7ÖË_ƒõ·8góøY°9L&FÆdЧáæõÂüj!Üñ„`ÀÊ‘¢½º…l hY@ç7þxþi€Ÿ¬íðÒ䲞¿òP–¬4¬3gÕK‰ÁAYocñ,£Ñ_±”¯wÚCx´¦r*ôW@¯`%ÍVYZ-cÏjCÌΤ×6nà%qóWµNêŸIÊ ·åZX:ë°´·Àrs®½º§uo¿²WÎO-R rK¬•¾DŠ˜!‘Eä›í;zU{íÕðýÑ&8‚³òßÈýmŸÒ_ uÿ6SÄîv`šC !‹à2]²®á?Ž GQŒËc1‰…,¬¥t‰áøßFR+— V§%;(Üê~»›èð ›~rb γâÅ.ksGþ:€ÚWOhp‹:0Ã:éU÷ ´_$d4³”²–«IÓÑKÕv*\4&á‡Æ¢vÕvFÊB}ùì/Ͼһt£· «çQÄxŽ%,[¾ŽÏVV¨4ÝqÛÄÊb dháä¡åþ Õ" ^Hç*ÚsÖ#³eËRŒšàj ¸sFËûk€&¾xøHðît¨~­…±ri6–LÊB¬Þ6A”¾ä î8r«m+6¸<2ÝXÒº«¢ìŒŠË¤“sŽUŒÑ¼A5›NkEŸxºéÕZ8…ßWt¥§±×zJ_¦d2ªöLëóã ü|GFN@gLYL6uÃèE" ÓÁ™$Λ՗4㻟{33öJ˶žS£Gtð²Ôæ!ê@F0¯|í"8ò§Ö5¦_§Ž˜íÕ¾öË6¡ V^góÞÑ3ÿÌí0°Ú(òcÝÔ4ºj*ÝæAµoØ®ŠÈ ñ€dõÅ`ïÞÍíªLÏžU-ÿgÁ^|]Gzäð %.J!ÈÛo8Ÿ#«ü»ß_º0LñUWËËb£aü>¥‡ÀL\î#²0Ô~zâ#Ì{4öˆ&f½ÃG’ƒÖ‚ô=~(媼üæ`òÐÿÝä2º»åCn½rë[½« ’µºÆªÒC+Ú\zàç6Ï?Ý ê´Âõ¾ý»øúêÆË»8”³HN–ÕQûB§Z™„|e–Pü`@ÒqGØ?ó³…S •{¬Ð„þû*Ü}„dŠøª5•ßÝÜýÆòeúg»<Ü»ÿ­ïI9Î,S+½Î®u±bªÑÓ\çÕ¯§iƒKgËŸ¦ÐEæòV{¨ßƪãrƒ•CgØ×ûæL¡ÝÉ%üÄÂ%æ¶],WIïAŽRk  ûï–Á¥(ˆ×Ë2 OØA$ºƒ7©ë&/~-8À^Øa@¤Æ b.mp6T¶èA-‡žæÉ"CÓˆU¤\#‡¶"1|Ëн·3ø½ŽÀ¥¬yM5QîÙÄŽ?Cˆ“Ðùߨv1—Óñ¦rd-E{áø)Åi^ÿ’Ä1†È›t°$å·Ì¼¼$•§›-–Ö‘<ÜÀ/C¿·í¾a0‘RtõÌáCM%Â5ƒA˜gA;å¥mX©´âVóŽötÀ=×á‰nQÛѰ1üçk®÷¿â²îÚÖNK1¬ ‰‰Æžÿ0¥‡°ª%U51O¡Üë ëM âB>þm «ÖìwP° ‹ü̓­ÝáL<ÓîÁ#‹·ûŠ;}¥syYë.Û6'5]OR ‘Šž*y{o‰9FËÎÔÏwúÕ›°ö Ý߯ÕSû ‚—¥ðz‚ŒüŒßÕA+mI¤¯d“lî qÙŒAÉ ö@ åma²«úPèï:z†@ÒëDÞ¦‹‰éÿ^ƒF¸\„‘iCÿö·½Îêƒf«:jÀVdò ¢+È-–5è]`Ny~ùäi›‘OÇta’ â IÛ· ÿÊ:¶ŸZŽ-|›Òl"Z‘¤y;ÆÂb:4îEŸƒÞú5ôŠ_ld“õvÛfk“‘Ö‰WäûÚÙj3ã´%·×ˆÄ°×ï=êv[wrÌ ¿×°J«Jÿƒã'÷@xLšo Ù_r6È qÈDûé9è žteĽRs‰àЏ¹5.0¨ ð>Ž•à­ *`ë¼6Î7‚´^¿FS|°»OéM…Jà &­ô%9é¶<Íz[ËñOrÉäý>}1n¹1lÅ¿3vP³Ý-’”® Yä„C÷Éçñ7›+fÀVè´…»®PÊnwFXIàýXÕ¯­âÌaé‰ A ¹øyËðËpâ>è„›Op•@#y™î§œ,ê]HS·÷Š¿›ö9Aމ¼›lúÍG\œVCÖYØvwFßÙ?Ì€ÊÓ9'è1Õ óü(jráNp©xC¿?°2òŠ%êú°öJœ=GwËE–øƒë"/Z¢ßŽº˜ ß*Ø0d>#’ ÿÞ^˜%æ$ï^2ÅYõ™ö¬`%<bâ;æ&x›¦¹hÀÚ £!ÇÕ*zÓny6-åb±’kïżǹ=_ r lzµ8@$¯h5.\LäÄ‹q˜SI°WƒKñ]÷à<”z1ŽçßøÐÞ<µÑê`T»°a¡Hò VëÂÅ„PÌw‡ÊÌ×Ô¸oAÞ’L2TèɤB›@©ñÄ¥fkÜ)ThRãYq,Tk»ã\f,>SÐW¦ò9O:oÿ§}!Ç‘·(ìO•ë Ù»vò][¥ån®ÜŽDÅ¢”C]ØÉ™°Ã?ø´ölCfýæ½8ÇSÒÀIí¹ù´­{∬E©;±S3”q¡ú‡Ö-×WRð'ˆ—2 †}×@qÞ3èàiR`Åeóå›–›ò·Ý²°“Ç•ŒjÃJs‡Äýæùæa8™™RGü/6òtͺ—Î➀ÂîE“FÜ@Ød㼂lIN »[SŒEy½ÊÆû\nFõEx$ç…$ØÔ™Ð„¥ 1oßzttã܇¨†Þ\ž8:ë"”‘mO®ÇFF£\¯TܬY™üUÝ…| ›Ë¸ ªBoÄùàˆ¸o‚òËðùxs'Cå‰û@‹Çj–XE¬YK%“…:{CzÓò"œiM8}ùÞ*~–% Ô©ëG-žÆæ Z’{å·Åÿ©†ú‡›ï÷zÎø¢Â;åãW-ÕÄrâêM„Ä¥—Ä‚ÂFÞ[[~Ðþy±„é)¦Äõe€wHlû(íq4ÜkÖïnû5Œ÷—~Btk/}©ß±TÊ–lM(赦P«Lc•ÃZf™BW˜•|xy_ϪºcvL,Ì¢œÇBÍ +(¯Af§Là‘û;ºSMY‰]kÌñçDF((b¢|µÎ╟ˆ.ôjEE¿ù‰ç€ÔB¯D ˜ÔÚ}Ø‘Š_¾§ê ¨÷Š…{Pœ ÔƒD?­sìØC¯ŸZGôŸš&ó¥óY—qvØãOå‡U˜ž¦1YÇO_×ò%©WîSVeS(ÌJVPm(Aw¯WdÈ@q3AlìyÔýBÚ»„§”`)žTÐýîMÙ¿$-xjÁT€}ƒùªyöÒØþò‚É“²ˆ½ßÜ ˜x¥|æEäßUŽæÛBF‰¡U‚ÔÝê®»²ÿÁŠzÛ»¬þàX2Ù]¼3Ù±»<Ëú`KÏ[eßÊ”èÕv—fC^²EwL0(9  ÛfÇ`›ìÇqÑŽŽ&LÃ7H1WfÂÆ„¤¿H'ÖGÕ ¨·¤v­YÙ§j#?«&ãôÅ,Ô¸pÇ7H]-,׋Þkúgs3_uâo¼™½ðd‰2±Ü'îµ$Ø/â/=QXëO¸“"šMnGaVö -´Ó‚ô¦bég*g<ëuÈÌ gDS«G÷téè+¢Fµ´,TŠn.Óú˜)²@ΡæUqY-=~U‘4@娗Îî\8²t¤=ÿå“Õ‹ýe›râV÷ä’ñ))kíåÐFrçà÷Òüß(Òë;6ÄW}ðªJ¬bu°zÒÐò®ÍC%M`žp’æâ$¥o¹ÇúHš+έ á[Ë Î/­Ù× ‘–Ô¥³®q~‰6¼{Öiôì>.~~bÕ‹ÝöÏH:|Õ‡ÛJw?/[åãxªdh`íµ5ç\k¯¢ê’<þMCâ3fCnWë?*XâJ1Š{Üý-p´»·–½3ÎQ^ˆ¬[5ëv=°½[|BõNïh9 …Ú 2rÊYå}Ÿè ÇîOHŸ^øþ˜ìËÀÁ€³!¼‚驞<°º;[r,§s•%mvõšÞÁgû sjÀÔj{š×ØòÒ=S»îb®MÊÍöŠùKg75xº¢ uë"ˆ3=ù#‘”RÙ|Fª¾ºJ‰® —jNTw©«ö×/ø^[ezšöâ÷°S?I´æ¨“†B'gÒÌYU_”IØÍ°ÔæÓUåîeºPéá›)8ÖNûHeX‰û¨€²¶ôI]ŒmòHÄò‹\Vƒ(ür³NÊåý›«Ô÷,j½u}q]èo¥ ±•]í˜p6û¸+û¤ÉÖ™¬¶t"‹M®¹ ß…8ãFÇM¬Í¶Y§à¼ÅÏï{ŸåZüõ…m¯Òf‘N9Á;°q!LÙœzïùé,Äý¢˜¿¸käˆð¹™<ëY¨×¡16JÙš)Ï×W8™²1‹ƒ™ú:´áïoÌíT}­P.Õà»Ï¸Ò:¿).–¿¤ÂÈpDóiyÅý@(rZæF¹YUkB6•}A«÷~[ AéïΛµÓz¸±ýüêœOg㮜—ý~>éPɆNö/`öÝú±ÌÕÁU[Øyò;`oÉx9«%íFC¨ýÅ_ìƒGIŽºZ?~9@u±j}ùÛui&”ÉÔ~£fwi(6Òüâ/ñB÷}p²Nz ÀsÞñ@…²7s•¡¬Ý»x BRJî× Ä›l2} ¹ß(ã/~ŠTu]œ¥O·`Ú°Ýp£¾Ô']â3[ -óþ¯ gâ`Z¹´g³æÊ¸²œÑœ hšs)¸|>óñÌ,Áµ~…¥VŠ¥ –éýÍý&Ù¥ PHK)ýº]o@•E­kÎÞU0[>Шâëd#0Uq˜¢ÄÌ cÞ‹°*¼°ÿ'QèÃ)B–ÞF¼>Ÿp{-4yì©*PeQGã“ÈgosmwÐÐÛAŒ”3÷Î…æã0>oëô™9©{Õ±Á‰»(ó"ÓOz?~С 솸²œÉœ jñ“øàRçl»A"ƒåº@S¿AvF©ÅÝ·K‰ë?8Ã.äÀ€%óU¨IXl±ÙpI‡Ýžr7¢¤ñ ™Kõb“²¯ìwjQ¡y‰:­Øx®¶Ž”"ÿõZä-¤Ý7´EÖº„Cß@‹5KZ’ËŠ 6K²“vß—NŒv“þÒpóóç+¤5#˜Ã¹ß› ÷p®—ºH®šZN @ãç|™éWÔ7ó‹a §6{ÚtXQ¢8¹Ä"µÔ£CŠ¥z« ‰Ub­Ì ì5PSë­’ÂMBÐåHÃr‡­Ír@\“O uc“ò¯l+ˇÚ-Mc Ž¢ jëÊ™‹Šë0™-2?$Y”b¸~áæx<Â9¯Å‹ CÁp%¤Î/-èÀ`6ZÍ‘3š²AMy¹O*{tA„2k4á7§k!(ÔãŒnÙ,ÈÃYðçƒjüA¡IÓ4ÝUØçíP›í_n`“~=wà²ó¨üUá8È`Á¾àØ„Üa ƒ¦-Xi+D£òñÁ¼ÿ M%á)¸äçlïHT{”mU‚«£dþé4ÛìÓ¢âÁBƒHƒöÓ­Ú²ço-/%ÉÙ¢ƒÅl5À^ßV&—ÄWNWxÏð˰ƒ©Wê(²¸hÇîÇctIIqÉhÁ¥I¿XHno0JÈ—8%>µeüË.à’Vá…ò[öE^±é¹·,ù¡ŒqOu‘§†ìÁx/|½èt ’¬0ù¾uÏíàID5ÐRj=aˆA€¨Î,h~óûÔò4ÓL¨¦î;¢ê/óîæAƒ×Õs®äêètoÛ÷ÿô呞Í=¨Ž¥ÓÁ¶ïÿÿí.K(b<¼ÿÛ¶|™–» l 9ŒÌÇOÚ@Ë ŽQWUa*í¼Uœ?¯· ±!Èja’¥ll‡k‘³«µïQ?£Ûï=„å—@ûcgèô°ãí¡OóÈšpVÄÜÞþŸ G|†çíP¡6‹&£ØU5â_:Ò—šÇ}ŽWˆ5'_®áÉ4ågšà“xÒ×8FMðß%D3ÚŸÉ×<‹”µõ*»Ý!Óz|+•õÝ¥Ñn0,ŽÇ¤£vP<‰Èl™öäÙžQY$Ý‘ŸíÄ-¦u xà:.­ˆz|ºDÚ8¨k¡w>ÜÉâåä%79AU£¶»œ¯59¤Ýeê—~‚©‡¿Ç 7%¿`üæu»Ç”Ü5´Áqª×|Øuåùà~ë® ~¿zfÈÌ’ò9ÒÖöLwŠÕ Jûaþç…Fo“þÁù†"Ÿ$’VÝ@K¡ç–Œ˜Í»É¸Í–ŒÙ ²#ašû"ÃAêM`õ{{ë­Ú¥æ÷ÌRÇ¡£ÝU‡Ô0—rŽ˜þæ·ŸõX^ªp¥©)ûNiÆ‹×eGFi_VļM2â@LrJ¤ëm6þ5|.é3,(Ü+ÐÿòKš >¿¬»¢ønQðÅy÷FÔUø»r$>} (En£±Éng:ï¯æb0tàæ|,F™¬L‰Õq1÷ýb, îWŽD¿Ï+.+Ú²9Í@A a§ üF¾Á[2D`d. %ù”Døº8¤»TÒÍÒZM†c ÐT<-ývyVtæ¸w­Sa «ÊeÒ–ä¢:¥´Úa›Ï¡P.?Y(¿‰6óx¹žŸ”_ ­wœž­ùsðÙà>ëžÙ²‹ FK—¸yCœwËgîÚ>Tc8iÏ]ÍUð7ð@e¥êu‡óOÎ~qÁ¥w¼y/õ?0Š«_rã›%÷Ïwšl|+æÇºRC/ÚçA³®üeª4þ^ÙÓ(Únii›wîØ ÿbǶ²Ï¿ùË?ßÐÅÝëØŽ-W›¤y¶BJ‹ë€9sˆœQé»3s€¸W™@²uO¦®Ìj3€–ÚŸŽ™¢-Õ¾Ï)¸…®ñŽÎØ‚ûº&b$+«_äÕ…S&Hió)™%CÌYÖ%$ÉœéÅÈüp.h…A•Ñìý*’On½».ï¡ІÒlµÄÃAÖ\¸?Lzƒ¿N)–m?\ —KŒ©ù®÷5Ã"ž¶ñ'AùHkÊÇYWÚbÐè—þé/ñ馕É|M–Û¨¬Æ9Þ`+ÛDÊùG}XQ¦›­&‚‘µµ~vã?¦Ð·úk\‰ƒª-KCèÛL“Z[þÿ6Aº…­x.ñSûÚ¬=¿€"%Å¿eE=`€e·©Iüæ# Í뢿 +|Rãì°ÿR#ÒŒŠºê·Ä6:½.,â™1îzz',´Z›ëÔ*½É";‡!HdX6ûºä½÷|ó·æWç?Šu°]j0@GUp£hÇ0L7Kƃ]ÈΘ·y‘—ãóˆfœ‚±¡ ,JÄ0”—ân-aœñ›“ubn]X^P è  AvþJ}Y{º`My©EsÈ‹éÖ«þ·W¨Ç·sÕ׃hÑ}‡Rk¢¨3éÒƒc”úŒ‹jÖÍ;ÒüìO­VŸ= E’Ø´Æ/É>G»*aÈß)»et:4G]«m3…¯ ºõ&N“oœ¬>ò TªÓ Ç@}š.eSÏ~jÐ4 ž‹“"Ö^ܘV™á2dµ„Q¯.Ð,Êtš€;CžÎ"МµÌ±5Ibk¸Á(˜œeE‚ñØt —~·_ÁT¤ç«dP“°uè¾9¦”ݱ%g*¤nMÈ]üqCêÇï$¥é«‹p´ôB“ÅXy«×…«š7R‡¿”’7‹´»™æn¥Äƒ°ªÌ×Úß ÃC‹3vÛ°åë Y¢›0Š[@+T¿[¬®v½ÛŽ–jÝ)s¦ò4féç[SÉ_šìg‚ Ÿrô¦¹ÍC›|[£G’›Û…¬LšæÁžO¸}ZȨï0%#Åt…Ì)1æÌ4•ÔÈç@ )í(¯ÄjIVa0Ž6ÓõHžì3ƒx]ý¸NL ù¡FAŸúÅûù·‘yu‰áŽ.“Í2J2êõ0lT–Ò5²þ0!Dõù0¢’°:ú}^øT… „7ÃØ÷(9•1b¬öi¤ËÍ[Ô©aþíÖléªW!Ñä)Û™×ió80gZ± Èþ°«‘…µ°,OØI âú¢L2|Œ ”™ 8©:°™ÐS ajЫ‘%Cˆ‡‡ί…ŠOììïL"Ÿ£AÎsÏübiª[7m³öÿnƒõKÌh#™û-Z’2¿éÐu;ð%Tgë‡îÖš2CÕgÛ_oˆÎ<¦x#Ðÿ(Ž7{;’”oîìîÅ=ÅñžâØðÜsCég )­ÄÿL‡¯D÷háKy~ÑŠ^I÷H·0ý˜Ìxüy`ùýÈm}½v÷ÇÕ•ÿ~k;„YŽê¶¼“þBê!rÄó"nÞŽßϹ(u‹Y%“·lÔI=æ¯x­HLBØ•*»N›€OÈ–ht+Ô(4Õ¬øªyÚ‰Ô—ò*GrJf|-Гfüøx`àOèý4ÚŸØJuú¶kZÝž 2¥ÀðŽÖPHç­‚±Æ<¯ü°¦¾Û…fŽ;®àë*½ÝÁßÅ}ú€énðÒÂÊqK7P WÈY„©CÍX\Øå® ÓÝ.ò·‹1ÿÍu´úu¸–Ä«Z#A(õˆO¥‰Ö÷_És^r*·'„‘¥¯…¥‡^ŸXÚ ln¬ ÈÎΙDˆëÈŽÓ)Ø=û,Ý‹Z#öQt ÉúIÒ\F¶m‚º¯ºù!íá‡Ø€·„÷2Äm·`#éÒN‰Á…¨_Ó%iÏø×‹kpfƒdÞNRµ~Õ±Œ5=¾ýå@é:teJ÷¤ïò(º¢4éy­rîþþ€¶•äEâ{ÙâOa¥ä¼›«¾œ%¹Õe\(‰'‹}rÅÚ¹r0 Î#)sh;ùK{u\I›A¯Vânû«†ø6A6–xšôKýÃù\4óùÿÄx ÃH²°ì]ä×ö4‚”oHeR?¥ß¨=V†¾ì¼#oÊYBñöTèðnV¾%àµiû,~ƒ½y¹–A˜ƒH›mS‰3Ј€Xi_Õd¤¯¦XÖ»w×›‰>Õ›Â+2f×ÈŽý@L¹96¹I²Tí®iŒ~ºyGA†ð ã9r*…AÕèÜ®zµMçQc‚yR´ÎD~f)/uiœÝ!·anÂçs©\jN¹Ö¨ pø‘™œÙhÒ_Rý&gȹ×÷v/?;Ž3$3ö2,ü#í­X4#,Ÿ)YתYÍßJ5NÜÝ„åpϳÉB“¨ï9§f­XÑ_˜´9×,óû+Ð[Ö‡€Žž¸d¶{X¡dAzÈ.Òî C°áX²)ˆ”i%r§èÁÆå_å¢ÿ¸Á'„xËi%Ϫ[Ç$縚)|ŸïáZWÐÊO²kjŽa:üÇjÜ`¬kÂ7¿&ÀD\“nÈlˆ.w `±-¹6'°/ÀÂ{ìsÊÃËœ)+Å$q"‘ðÒyVÂÙþG|›ƒkðå÷Å•ÎÍ@Ÿ‚‡*jõ´›ómÃéñ!J¿+Î…`îëÀÀáo e¤©ÿCìÉÆíùiÆOfµÿT¸–EOΈdW" Mj0À{ο’Ÿ>½äù̺Mº‘U_Á«¼•(¶qf¹F;Jêí²?»€tj€€úi£{‚AûHGV±çè4g ¯» /WAl:¤­ D<ŒDB¨¯·]WoÈØHö*€ ÛP‘èÒ×6t¥¬Fƒ©élF¨i4''IžÏõàÛ%V•U'²1ϰw*«Í&kÙò™¾ù^J<_’(úù‚Þ"w#¶`-ºk•I(·ÒZä¦&:Hkê+ôAþ· S–ƒ¹\ -ÆF– ½ŸClÕ_ ZjÑÔ<>›\îpg­ µTj0šÕþZ{3²Â(ûsóù_¤˜Q§¶bÄ6±mǬ'³ç©¬,ø~Ö]P¥«‡U2V7¾`ÀEŒD² ~‚±èXúÊ£¦ÀÖ"R/ÊäÝãkÎ,‡¼¦ÝÙ¶hÖ•ë‰~Áñ.ü„ÑæYìÉd<‹ðytŽ6 Wd[Ÿ¥­O£Ýwƒ‹5¦:‡n#mîvW‘vA+ð3SkrÔÂ3¿QføD@{¿RS‹Mmƒ°eH8½ºuÔuêº,º1º˜íëOªÑvÛÖ ;¨¡7_x7¶ù¾s3+˜–·ÄãÔ¬n%©Q.zBûê¶%pׇQjß"…²£ƒÇwÇ™ö^”g‹Þœcé~9Û*;ÐÇU›x á^õ¬q¨›–ͺ‰‡Iå€ÙÃÜǔܑqŒ,IT¡“›Ä»0Ædz?BÕÄØª—mb±§ÛÈkGZáíëóž^ÔúUã>rW6w,%1˜´ @À›éKg]‘ ÂBqÄܲ‡2ðZQ("»ŽuÂâfPV[÷áÆ#ÌzoRÎNеvó»ÅÔ¦îa|‡ø†Kô!Ž´9õO›’•UØ“S´5³kgÝý­âU­.ɹHYÓ}ÊÚ 4 ÎFMnè$ ãZ×åW'}WÆtb÷',òby®éoªÆe©‹6ñ‹¹ÜùÐw3koýbX+nú!s“lv;²·¶¸‚mzæÞ͇*Z)±²?㔑u„Æ–èºþÖÅ·´hk–ü3JxÓäÇotn”Ë]ý ‰ÿT}•eå`\êR®D²Št1šFavWUÖšD‘ßtøÅD§æP­ƒß–‹oÄN¸j²…ZP¶(¬Ø}ÊdvÂÍÊb%¶n•¤âõP0?`/‹wÃàÒ oÙ–eg#Ǿ(‡ ½‚åûâJÞf53bì–ò&æÕ&¸bD–2M?±¿>om¢ÍáÏ_[0­×Ã×ËþÖ Û=ÒøºÒòC ÖGYè !.4‘¦ÓŒ­îèœÄn>°ï@wAÛN”¦éÀÞƒI­³ëðSÈsíÛJÜ³ë “Éóí[„²[¶Ï-}Q«œliÑCÁ¨½ÌÈoCYy/¿ÌÖl…@(i®!Vc0 ½Õ =ù¢u‘Oó†åø©¤9ë«×#ÇRݯJ»G‘…ôo,ùßíÐ- †íý{ÊVl!6ŒÅe 8z4YÞc¯„‡( žlYíKgqéDÙ(›äcéfN´­òeT½Ó‡ª‹´Ï­,óãü¸]ˆÊwP¹Ð@ø©Ÿ¯¿Éß“)Úš×ë–"XPxßò¦j%ïœ#tŠÿã¾K]¾ ÕàPWf÷,_fu±>.jqøsÅ~Yúçëik móú‡â;á¸UâPôß#X%î¿eå¾ô2Á&Ͱ'”—†”˜žîqýÒÏYÄÆùÇš° ]ÌŠ·âX­Á¼] Ÿ ƒ•1þ ©¡Šî¥½„I\”‹Iyz•nAÞCÛ·z`’å}—èÈŸ»=êO 0¸*sã O»àŽë5è"bïÉ‚QR´2· óߺª:¸…û Ý‹Ëvä°Y\‘5©B^6­NGD‚˂ۋe_§I¾öFgçb4d{Gî`Mi}°Ê´* ®^Ô€Ôç¨Büøì¢»°QPª}Å&öb¹YVÖÚ¦Y­ íVY¾+jý^&€‘Oq°¯)† Ö{aÞRééºòÌëÕVÏi/fˆÐåð¦\Q$L¤l»èÅxu¸N¥ÈBä,gÉ'º‹ ò‚¨îûÖ"ýV¨$×;üó)š¹=#¥;®ìNÂaÍŠ0Üœbÿ±gÊ÷°ÏÿEþ5˜8 ˜Äy—”‘šç} HžF³,…ÝEJ‰?~)¾ã¬%¥å·_ʆ8¯@¯y-¢Œ2µva~bÞÝ´YN™ZÓ—m^Ì{ݪq-á?‡nÑNˆI#©ÎšZïe©b•%ö:à´3ˆ€ˆ ÎE¤AùW6üí`8ÈRç7Ã)W‚Nz5"„ñ9Ç fc=??Ÿ<^*ûí¢¨(ÜMh'xzªÔT|Œ¬âöôüã9HœŽë]½¬ŠnGÀZu9¦;Ök!ö™»\ÍÿzpFÓ²½‘NÃ~@è w2Ü$ö˜‡ËÛf³¥$‚¤ÚÆ~ÊŒòG§90f9Å’Z$–æ dƒÀoÃЧ­wÞCS×M…±Pà3:Ù?zjNúÄRéh^Œ†÷u6Who8E7Ž”¿©¼L F¨Òá ú›ŒA€ý=.™éEë0šç’¥„þ÷¼üú2dÊy7Oû’غ—a:tÍH^p 'ÀÇvñ¯(, »ëa`Oùõ ¹Ît+°î$aš‹¸!_ô_̶F±‰gu$án[;JèµÙÓŽ ÒL€$º†ÁA[óÈLšÔÊOæÎBرIrgø*¡æÖç»"ìóElHʪjÉ N_¦Ðiç"­Õ]ËqãÄï­ƒØæ„âU…Ö^le+À8Ò’"T/?aïFU"­?ƒÚÓWàÆ™›Â¢+ELbM[76ƒr”ûŸuzª‹ç«e”‰ƒ¢ØŠiÝ£îüÔ•±¬0ÿöM“UÛÖ‹M¡¬åŽ4P„êãÅݨ ønHc+]:†É”ta3åñë#«&b¥_Ç›nXàbGÒÀŽ–Œ½ÓÜgvÔ’’âƒKf2®¬‡±^FžYÞ›ãéXÜÕ¬¸]¢µØÛqmÄ^ù0<Å9j‘MÞKýî…<=tæf™5{¹“^ÍÜyó8.Ì>Ñ‹²ô…' ¡CO[ï¼€&¯vt"a* itˆánlRô–³+ëA2umÛTðÿÿ½™zÀü ¸î~‡úà³}ñ-¨·ð a×»j9߃[-Ÿf‚¡Áó Äú($¬‹ƒÍo}L¸a€9¼ÌËÚ•S9}uê©Öu[n´;Ý1%Éêž<×aà˜¼øFEŒöj-aÄ»]È[g[ù". H;j±Myý\¶§E³ÞƒÝGØìè×e¿!{:Od\ ‚ý‰õ$I2g8j˜ÂJ ’{Eo4‰Ö€Œzêry‡’«p}’÷7ˤ§ú ;+@èá%á6LÛNs;‘çÉsÌœü“zÞîY¸hAºäSð@ «¾‹t¶Ò%þèRÁ]SÐÌǽóì€zAã¾=é›Ënëm‹©.¸Û`^Ä׫Õ8ãÕqõ€ouÄ1ž†¢ÕÔ±ôÎsÄDÕlÜX69œû‚â õ¼ÙÕÏ_ “~Æ”gV¡è?ÊY¶*Å@þ¬W0vÅÛÕjh³ó<[f¼¼þ[Æ{÷›è À³S-¸Hš+>¡…ö@{çéN¯o|ßI˜.Ÿ»þêoòîßÄßú]ü>îŽ8ýmœþÿ”ØÛ±´œÂï­«³I7—‹-8šotÀVmì3†ËÞÕÛ¼¹+”ï‡OïÚì8`þ“w¶ú.8ñ9åT2ÕFœ‰á†”}ó˜ƒa©ÿpHv¼ø­ö”ЀUjX¼/ÏS­‰Ô%1˜6XY ²>üuý‰i[ &iK­V£ä ¡\¤Ãƒ‚òIc˜p1ÛªH’Ÿ¤™yHÌœ-[P'èÔq ¼ÈƒVùöÿºš…°gv^U±õXÆ–Ç4RŒ¬Š| ®hrr&Vàòx“ú5_ry§X_Ç7‡Øò2 ±¡PðžUâRR¨ÏÞŸ¸oÕ4/\‘ &à6h­(Q¸`ßp…ÌF¾ÎEÚº˜Ð@[sëåPèŽnñ îɱD`æ÷×w›¡mwºÕf+¤àVDy†ÛüËHÎãAÜ H2•„|Õ㛀F•<ê6 ‡Y¯,÷¨ÊäS`&:çY¶nj Üå ±js£ÀŽ&ÿnŒÜý cŽ'€¾Vä›|PÖ&ÖÈZL‡^çMHmmn±nÍŽâŒä´Ý³E;`û¤Ø×Îzv§eáF§ô-\Ø-jE¥Ç¨Íƒ\æz²™üWi+‘P³ßÜðd²¯w} ¯ HŽ­7×ÖŠ¬ÊóËA"||=EƓى—BR45Ù¸í:ðJ LTÙBj2÷®q–õÍ%…{Á5 [Ìd,v|=ÔUFBsÁâpm°3±…CÝ6ít•#¸.b/€Ú­èÀ¸ß°Èåw{àlƒÄ6Á ã;÷e$²ÄÖ¸‘ ¯,•yU+ŸÁ°³U´©Ë†ÅÒhºër‹÷Œ\±7N\ô²“û¿Óý’cÌúauXãW,õÌÅv”áôýw¢úÄô/8Ô€-ú"†^½i¢‘M,U ÊgòG#÷68ˆ Ÿ ùòÊÿÓȳwÎL›—‚sŸªR‹Oê¹ïií¹«¡ëž¶1ß GtŠð oôÃh·Â†½\•õæ×1Šœ€‹Z¶–Ìþ+5ðxß²Rx)m>>“ïÒë¡p[»fçê”Í*•I³JE«Ü¹ZUÕvOŽj¥Š-˜¦œ¶±O5íÒ½6Áæ ™ƒ0d —¿u~Lë¤\Ðþ ­T–Šêa>¹.÷ÿ@O±K:ù¯Bí¯ Ù ¡ö{ E§ K~é\¤P(Æ|9 …ΓÙ×~Q}wo(£íêW«¢mê3TÓoHÁ×ß®·³óïüWgac»I”"ÌÆ=R8ë ’4\J°äšøF°ä HÉy@˜ËPÌ!'°™ÁË _BPÏÔ/8%= Áí]íä±Uã›ë_=!HrSµ°Bîijç%ó&eѹö`6¹¬*AH7L‘ 9³íc/0x²_‰6 €Œ"½+‚Ô}Ò™^•ýs¦môÓ:F¶„‹ú›J—E‚í¬éiÇœ°VÖÓÓä<Ûzw"•Áe W]Èö¤ ª†ò h×h>„„4(§atÔ³M`ƒñѯ7ËÛ ãÍ…Q¡)KµÎ¹µ ³ÓO^+ø½?Ó;ž3Ø>Aû7Ô4ÿ,ÇÑ}OÛ6”³:p¸j¢á:ÊQ^Ú´.<õP®èòþš–mvCÓJô̈ëíܵ ÷\E*298?– l}â{£(¬w§wRs·³£²BäÇnþà‡¦~Ëœ•ÉÜ6ØÙa6Luï|õ’§Pö&B1C,žƒØOÆÃã…\hìЂµ`Göˆ;¤¤6§æn´³zLÏpƒ¹ÜhK/þØ2pQG&9-÷ux¹,ëR„ö[=RÙ)l¤Ñ*[;Ãüª=iqùñsP¤*ßEáSÜv*›9µð¼«‹#nÙ–Ý4Ì‘8Ñý)Ôz“‡Ï/1ë8;¯'ì5ÀŽjÖ_±7_rÊ}Z›/êôé_´½žè±ÄTÂ!gC3ôº\vG–”dßæë‡R”»BfÍÑ3'Ô¸ ¢@\ͯâåfÞ©Ì ò“Êð‚-÷¼íѶdÿ"RáD¥®¾‹”’|<ºðAu)ɺfJQÜœËZ6×.»-Éî$ /¹½Váñ‹Ï·þ†Hð³ß¦7¢Ü¸ºŸÝ!w¢¬êjKzÚ¯HN ät˜½jË¥»2ƒj;c¯žeë?¾òòæÃ»/}¨0¥£ŽæÏ“ªÿw(ïJÌÛ2·f· ÿ*¯§Ñy}߀á"üì·Õ3(«ögWðÁX *_îÊä7…¶î}îùütÜhûbËÅ»²‘µ¾üïŠÝ=Wò'“Žeü'j§Tó¿]~W¬Þ˜±%;÷É®º¿zdCK"¿Ží¸ögˆB,3BN“4ÓÞNÿ--ù­J[ìÕz»–c¥:ç$›™‹“>ã ’Õ¦2½aÍVIj‹CfváþÏ•·¢¬Ò&±”#)jÐ9 tã¼ï8,¢ˆžÊ>ÒÌEeÖèóoÓ‹ÑfŽ+>c8âbÐ>À„ª›ŽyiÖrçÓ¬Õk^;&Añqp4,y3<ˆvHŒÉCÐ8Ò²>LXÕÒkù=°²‚7°:º†“¹ÆÃ]E˰µš„ˈt&k/ÜQG²Ø0š€/*4YlÙÿ*ã‚ÙÏç/ÙÈ U‹!yôY mçy˪>ˆäú3Ð]m!Eè\[¹Û;ލŽ~lÝœ_.ä±ãϧ!ìû¨o‡˜âBÁ}PYØ\“!ÜÒ<ésÕl儃ƒ¨Â†Æùž—·Õ®¶D­ÑA*J÷8SômÌ“2çb(§X¹ÛmÓv:ÅÊÜôóJ^«¶%-\H r¡¤<à“lÊ+v¡’(Ü­K½*T±M®03%«ÞP&l¨÷ßD(¿ .€9ýRZÆÜ3¦p• ¦ÙiÂyPÊüç_X¸vêä* fYýêHJrº`X½aÃoÿU®®Š£®—Oðò:S©‘o^rŸfR©BÌ>Ì 4hÎÀüé{ÃNfq/ï‘«´V¾‚;Œ›Pz”.)õêz ‚éìT¿½~‹jª½¤×˜]TÞîºP%ôý‡ vªQEÍ N”Ãl»ÐA„ñ¯õPÇÁ¶X`xbµÇ+ÿ†L¶]¢¯í»`½²CÂssß9®-§†å†@}Ÿ!žèJbš6èÔi”ØsüŸ?èTÿ€M3å=<œÝtôõ½5Å÷9× &<6ƒO‡ºòLô‹³ŽÔL¶]¥®ýãÂè“ɪ]cµ­Cãž;Ë> ÚZ˜Ð‘ðtè:<Ó9ò§š£ gTí³u®G”ëj³vÙýíÙÚXœ_ú­]ömò$7dq&ø:RÜ‘P´„"åb1'5¤ÙU¨M_[¾VÒƒñ|ul’OòµCúuòbVÀäLˆôT:ƒŒl>NåB¡]jP;TøàyUl顊{ðM+×ÖÒÑQrÛ_Šà7ýê-Î*æ{ó2ïl)ÏíJLì´ ™Ûøá4³³z’—ygÕ†“œýôëžø|f÷¬;>Ê äŠ"º]ð {wsp.\KJªÿþëciPRÿE—ºL—êJW ZsÔ9hòÀæJ6ŸÝuNØ8üì’8üœ:éÎkë;ˆ)õßëhktÐàÜt÷_¯¶nyW”¹Q 0bçàsÔÝL7Úïêùþ2(§›ót™Œ‹Jj¡MY?)ëEB ØTr­g)ê6ÿï="³h©ŠKõü51´¢ÔA èýâ‡r—wBlÞY>|,%í†ÔïâùK{rŠ} ÚÒ1í<¸U-iºZý‚œ}ñÒÛÿ©£ùý'¾ãô\IP—éÕ©üÿqmêouÒº‰ëSø÷!Ûvå_wѹýLÜsŠ6X"Ñ™Àb<²«Z+Ôy<2YÊdÿ MýlÕúÍ;Úí·1m!úÕñ=§çò«üëÎ:Ò>éïøÑ3¼Ÿÿ–^Ðød<LîXs„Ô»ihi⨧e•ÞÞøú.¢ÝõzŽ´gú‚5d‘›ù½š\H¯¼±<À\n­y`Ëa€‘ø:o¹—¶X?¡-h2ÑÆi7aÎøQÔ¹Ìt62FùNƒ“@dRÑ l¶Ñ,å»°mÀ0Ô^Ê£*P¶!³'´ò'4õ©yUqé¢ïäõ4!K¢——þÉ +Z£ª­ëX>]ZW‘ùK·77óNóêÅÝÚó|^çe€qç¿ÉF¹tÕm°ŠRcXH[›z7`F·®@›vjÚlChÙl81Žß"¼'v.iç½( b(4©t•jX*Ç~[úÔŒK5T(ìêø×Š ÛNP•ŒbxJ_Êø¬âãyt+ îôÏÄíÛZÀàéÉ%†¤4—”4v½ñ#žzŠs@¼º,Tëôh`;®«M÷Ÿá]Ûz«øbdYı¥rK¹¾˜¬.K·?ÇÙ¿¿åÄý ê¾ØÀ´¸Wµ¦h« ÿ<þˆçHÀFa‘† )µúÝÀÖ ±­OÈ*ÁËârçäÄp¦oi¦¯£ŒìüIÎþ msQu½Övˆâ¬Ü¤ˆªÂ˜‡•uKTaü<4+³ª%E_“Ù|†³ÏJÙS¶iJÛí0nØI™MS—¹ô(ÕˆfæVõ(3Mæú¬iñRiKŠÃ“[ ˜ˆcÁ°ŠåŸÅÑï¿0ü‹9K$ªîÜÝH™-·ó&YÈ}ÖYvYìÔ.Ò¦A´ù3ò`´ ÆRDÈvÖ‘2Ý‚úN'ŠY¥k=a‡ÜªG—éÑ,sª03ŒÿÑâùkmúÙJ+ÒCR…ndpá¿`Ô&ž[×»u$)­³7íW J;ÌS'*…œ–|>`ÉPK}os1gÇK£œÜ*¹ö¬,²½2½6T^<ÐZ•ÿ#§î;“ØöL‘Níƒ] àŒ˜¹©tr$ôüQÍ<ÄÂ1ÃÞ1?n±N߀dÁÄFY8E …VRç§ ïg|íb=ívn©ª—,©N÷hkþ"ŠAØü¤‹yêQ\±¯r2~¹T1o_õ£¿9"ÎjaDjðÕ÷êãñ|MX%©ÖSÆÞðx'ªº–V×Ê*}áÕ‘øÞ Û×7˜í^I‘ ýyù;ãëß¶%%AÔ0mÍÔàÂçOfô·=Géišiº•+ÏzdFæ£UI«¶‚E'¹€÷oæhöjæô û[]³Õýaû<'2Š®z¤µj¥º²>VV¹ FbÀá{!¹Á+'{ˆ?¯ü Ùßëò>O«+k~ö7@¬H‹…$7w“g´5SBk¯_K[7±¬üÁ;º¦5æÏ1¬¦B—ðúäÐàÕU‚ÁªàS§2ï)?ßì…µÙug<'ÒQy/P¶p¿ç¼5†Â0º-s!Š…ÉOç>§þã„*Î qxÞ9à÷0Cª+±ÚløîÏÔ%½ÉÃ$fÖ’<Ü3Š¢vC-vââú¹«Ãvc¢}+z[ݳÕÙÇŽ{Ž[tŠUpû’Òw7ŒQç} ˆ[à·\çqLûÏ;Úò/ÛkJ³1oqÖ,‘À.ñƺ_Rn”Sã(ùÉe•¡°‘r>eS!Ö±ë†Ût”t®3;‚­›:hš%›Ø¹&1†Ÿ9lA Ä0|Åùf Û„w&TºfÐtŒµqq«çJá* ækPj%¾9ÏÒ$HTÌByF› Ìï^`(îµâó×dïé)ÐÒ·4º¸ê¶Ú†¹í؂הøå¼Rµ+úد¿|ëO¶V\{ó7Â-‘ú->pz¡ ¨úÚ'xŠs ]ÁÌ~BÑÕª ÷±÷YêHÒiÆ= ê2FŽ5X:d¥Þ ê¤"Êóã…²WT?ŒWœÿCFN©Ÿ?ÌTró¡o´‘·¡í)UiP¼ÅÕ¹æq¼Œ=À@4…‹ÂÝ"*q@¥E.å”Û1“¢Ô»ê^YÍ¡¦ßâL½q_Ûê°GÊ%Kqöv0ÐZüŒÆùìá¾°ê5w=JLwiGŠKô¹âznYi‹×”ú²²AÐìR)˜Ø\PXþ6ž£sæã‰ohƒ¦²ŠËF‰2ªb:+@앟%ùl-,X,ÐtÓ½êªñ@VØ ¾ ‚“PC”§w“¹§J™f6 Å…DÕžÊ}²,ƒ²ÙØÞ’¦#þÅQéj‚¥³³Ì…Ǭô—u€TíÎvE0nª|WJ!Òâ‘§ê—h_ÊÒ‚ŒÞ º¯ Nä.o®+Š)Cu9´d¦®œ¯Ì½ ¼ë–|‡j,D¶œy’m "«¹#v!­*ÖÝ ½AÜ b-<èd RèH[-Y%èw~ap8(/kà)ÝW)Ë3+÷üä›;Ë9Á|LZˆO`nBZJñF¤”Ž*ƒŒ}Éá 8Ó–r„й¦ôq ¢AúÄØHDW ÐN³÷&`ÇÅ>„ò¼Ø´*YwKôQ"&Pìa±˜^úé;­Ž6áÕ”ß ¹cTú•'®ÖáPêïï:¥ÿC5vÄbŽ6§•=˜¶bŸ¼SþÙÒ\.¤DŸ›$•Ñ–%CšnQ–9éǶ ýÉâÕ $ÏéC+,ä)±VXÙ@‰ÄŒw¤(ÝW…w]²j°óŠj{qñK2z9^KJ¬Á{ê»´e.ú±£yþrT_2ÔŸ§>ZܾɔGhN HÒùWä'qA…@üqg|Hj!`[æOvÛx3á–)U@Å2%æ—b‘G—C1㠈ÈÕc€åÝ ±a}t®ÉwúP %ýÀ¨ës¨ëböz£mHÊ”xcêÒ2 +T±K[Ķ&œ¨ÍÁ»šïÖøIOMÇ:ò¥bŸ"Ñß›¯ŠÓØ59Ý#Àfèc¼‰!Í@€â®Í‰²d˜Ûëµ€Nmš4u4hÉ“=ö– ,î´ñG'“³ÛqúèÕÊt> PŸ¼å¼¯=ËÿÂFÞ Eû½ÏÞÃ0nሠkå'¿†f<â©FÜ:¯^ôÖOLÂNðXrÕ÷&ý]»êyFðÙ»ÌvníÄ\¯‰ÞË–kî†?N´4*+¨i6öu¦™ðeeîÁÞcw¥q*xè¸#Áéâåº?¢ŠþýiÇ' è)¿X:É‚¨‘zyËêB”O(â~N;Êà‚èÕšßc(y|Ñ]LJÙ׺ㄶ¾þï ÿˆÌ†KrQ[ßFù}7ÀØáÞaë5UÇÙò´;áÍõ\HýˆŒÄ\¢¥®óÑb.âIJ/c)àcs`Õ«Cþy¨­Jœñ¨ß­‚R©ç¯ê-Ý•Q3„¼O¢þ$;ÿŒÀþ½fãJõJ)üØUAýõKÊç ~"¿¨’I9T{EÀδªó± ŠtŸÑe¿}ëŸMí6B›‘hi©†Ÿq•†þ´*àQ•¢2ciX%å<,u&Ic6áë¥Tü_MeHg edðÊMôç‡_4ïkg«:Ñ_UE=(£·Ö*=ˆT|T³¨êIÙ]窱g¾§ÎªU$Vt­$ß6Îf¼Ö|d«¸u5U6úWÐA@¸6ÊOKÖ\†»¨èk¦ÀrSE I3.–ŒMAXzµd,{›<(z_dâ)G¢AÌÞ*CÞ%-h¦Rtu¸/À½ï¡ =¸¿qQ;œ5’qyÙ,ˆ¾ Mú˜¶tv4€ÒÝ1¥µJ9nyØÙ½Xõy3OF‚RcP޳¸RõC¬"BË«ïo‚cÛ= 7R[ÒzÇ#n ¤bÊe˜0}®\ ¬ (]]Ô9‰‘ý ò—´´á=ß:Ù§÷ÎEħHfŽÍ×Öâl^WZ4.¬‡‰ÝÊá8סU‡R-¿Vp_õõV²²=Q 5;ýå|0 “ ©ÇÔkËZÞEXð˜/gaÇŽ ‰¼üz8ÔI¦F>÷ù3¹4,IÑ$ÙŒWmùŠ‘…ùàøÁæu:‹‰_Ø<Œ«m6ͼâŠawXãéq)¯’©BTQ‚²ö½*ô¨R %•¢ jdnw=IPŽƒp¡!ÁúWwã¹=AXé~ß2ŸrŠ £þ "I?þ¢o÷¬ƒõ–Ȥ^…]m^ò}ç…è`K¦_ ‹AÄ!îG õšb?l“Á†@eËé]茩œF‡¢‡öeÊÝ"„GüƒÎäU7?³‰Zk=N<úêúw×ÿÂ;¿B]ßÚ"ªc#¬í*y@õ‰~øÔfÉ%Î}áF£ÜÖ”ÈÃs"—DQУu´µ¥•#É*¯ïe®7ñ^}I_‘Tpºá¼Ñ /ÃЭ–æ 3 JlÈå·Õæ DKÌÚ:é†Ô*±èñlà2‡ãUÒ ÌÉëW¹á±v£Õ‚rÅi›ƒ<=X¸°”‰(AT@1BH’En$'JǼQ i »A41~¨?¢¸ÍÆ! –OSÏs ¶Ê‘u7þÞeNrIù~•vîÜy”Ýv8X 6iVLROüø3Pƾ棛w—ƒæÍP猦\Qê=y×JPêmâ\L¼‡õòYð’JiÝÄÒZ{Óø¿±¤©›‚Í_ÇÁgä“ët/¸xJ¢l$´#àËç $+` õýßUþ7Zx˜ïKvàZÛÏˇ˜, ÿ+~žE-®¾š5ã\;èõ+.¦u”×ÊZÙ·¡˜Ûü$Bà;܃ü­xØÕÐy0뼆@õ¤Å«»s¤Gs:—[R€‚øÌB™Æ‰¸P:}Ë®ò?²1©”ØÍ9³,1Gt$³}‰3ÐgŒÖ{è[¦zÜúV=ÜÍjéîUÎjЬ×eûú)fé°#oÓÅYŠ;"uü’Ää–N€Þ>çKdZ$^”b§1n›i«aãĪvØ–è,Èð´Í‡j$ÒÖ)É?P³a L:“€"j%Õù™Å^TXÌ™âý˹vÖ…ì°Á;~ <üKد­ž‚¢u騞g‡å±æ/Z96`¾L‰à¥<{¾• t¶y C¼¨»cÀÆ8!¾T²üø`Ái÷ƒ|¹>;ŸÒÿ;ôK-ޱ'qt–)Áñq‡Yc’œ¥¼“qÔæÇR…Œr~ЇkÍõêV *–Dh†v¡ €ÚE²oîÆ¾á˜MYT‘¯V0CX\×àÐmí:Ãçå6¥Ä©‰ÓY©'Áà§žöE­Ùì\SWÀ$ %a›¶‹,çc¨Ãîsã“;ã{TŒB" ‹!Bå1úç9Åß*fxÏÿ~•¯•QÒõ¬ˆoW“2YSÖì2. Ä´ëóªŽí„¸¨³žÛ?dÞäTsÂ!…Å=ÐnIÍÑ,ølÆ¢\‡Ò"æ’ ÎÊ¥ÚÌS pøR¬ü+®ü ¨B\,®•¶÷ÁÉôbˆaú‹{Þh½„üsÞŒlÆ=/,ÈÁY¾Wx|à€—ÜBDgÃÛU•Õ€ª›ßþÌ¢,] Hß ¤ä=A~`)r-ÖÍ_&ÈŽƒOàš7ñä«FY?û)â–£¬>š˜;'ñSñö=ÿüÞÿ©Ê˰£ªº#&I ¨*RÂþ cP·öÑ_oÑ‹Û)lÕ:tnI‘öeêÝ8tbΔ§’•RÑeö²uÜj¬èûÞ^W×s ~ð9M'¹Á‰ !-í·•J`ºk¼¡• €½&H3n½¸ùOÀZqíËñþÕÉžÖÅ-›'g±ôÍÂtþ²ít2 @£lÔm€ùǃìR9ç‡àÛ>ߘëâò`¾JYsИ ŠGwÑó C5Ú‰çÈ’ª®L ò›ÁNC ¼êþ•ÿ¢} 79½}IìFP»>ø¢§P ¤¯ÅivžÕÄ;C²ºÖY\ò ›ÍÜôô¸¤ña·$o°á…¶Ó8Žï·°alf˜~D…I{ý¡ÈèOv-õ»–ëýV¥Åš½®6¿Û²¬¦t—>£Jÿ0ÆTŽPE#╤]*´꾫 Ñ÷H"­’ ḕtQµðtå‡$6¡;WôѹhL‹ø÷4PªàFÕÄBë¬{"BóÞg¡<©vÏy weÕTù k.A§Œ¨ãKô.Ą̃ý“Œ>è‹°X ”kWñ;'ÑÈZ5||ïrwRµD¿É/È¥üº÷!±ní¸ÆÄ•]ø(%Ìko×xé¡wò‰Æ®MÌ»°—CMC/áÉŸLõˆÚÌW°+%"l\§ °[%­>ôûqgÂ^ų*ÖQ+ð¦~é‡ ÓN:uqÌ–z mò­Bd®=/ã§øy2µ/f¨í”|í }Iθ)‹ì ±1€~=3WI´Þ¦n˜Ëä?¹W§Ù>ô1¿È‘ìƒ)ƒô-h½2`å¬(Cñ““uzådDŸ0è€,çôÖ …î¬&mÀ›ŽèÇeưÆt’BºQò5eÒÿ=ÓU6›¯L{4t;*ã+Q"‘ìCw²E ËÔLÅdù}–/œ¡f1gìðºM)œ»ÙÜTF©›P¡ŠuR-öŠ\RNàË Sì<îáPUbGxà¬MËSc”$U—ŠÌ^(Ø~ãáÄö½Xº€õœ~o/%¯o¾é³ðx°Éoœ³jóÁ×¾—$DDZâTh~o2 I–1þ5%Em!—ù¸¯ÅXÖamà¸6ÏÍXdN™ÌGî5È €bD =Ï/­O¢÷5÷U NÓ,‘L d00ú{ã—`X3ÿæRÿéö)š(ñ­øŸŠ£>‚ (Q¡¾×ãø)ê…ã\x?Wwëñ§íû •F ›0¼-t¬nv"áçB®§ RÂjh+ï9Ãúµ0™/Œ.å‹d¤Ù:¿­¤ê§| Ü0?ÿØ¢M)sÚ¼.ˆ—;¶éSø½¡YV8¿¸Ò5ÃV0åÈÏê î‰q³Ÿ;ìô‘?½Dt‘gö†ˆÔ¤!Í™R¼ƒSÜâFîRUüQ¨«Û”t™’J”˵÷Aæ„[ôñþO¿&Tâì»5gÒyʽˆÂâݪO}Mì…¬¢BЇâ]g#jÒQËgâsÖ¨@…3Ò!f{løA8ËÖû<¸°ÞaÐ~º¸L»:¶#Òì MùjY²›Ê– ë<$mE±+ê´uŽÙí$©ŒÑ²¥#‰ È9°Xþ•Xõ‚+3mHGkCÅb´{ÉòJ:¶"ÉäË¿°BœÖÂÞ™èØÄº“UQÂ:‰?±âM”túˆ‘â@9‰C“+Z80Ýò!t;Qvökƒüݳh³œâ‚Ú?öΆÁÎ@]×(6g£'³?3ÿãÁF>røÿÆ>·âXºñ¯$XJçØ{–ö[µf0_@‡÷^’FH¥ˆoøÐróƯÎmê`γ©YEcn{Á×ø¤Uq"s ¯NâCû}0˜&Ôå   ‚Yx!“‰ÅïgJô'n³¡Âœå[fš“š”Ff˜Ð%ß)‰ÿ-?Ê19½·Ë%=œÝµ2>Í–µ>î'¯s×ôãx2 g‚`^e[“S—éŒÕ¯ãFg"‹3ä1·[¡¾¦•FO´éá9É=-¯êc yœÿ“ý,O Ãñô=ó  üê å _Ê+RzPv»+A¼Ô@…‚Ì·&1‰ß§My §\t§@šTwÚÖjðÅCÙP¿¶qRš¾äJjWgb‰íl?öV…áÖö,VˆÛ†¦¥xˆŠ²Ý‰~rGÎþܼ'cÄu¹EÄvY§ÀÝ; 9ò3 Ëç mËp•îV³¯Ü”ž‡“n‡Nކ9Et“§´Ã‚ДJ ±B)2WøW¢ `½aç…!['n¥:=5`YÁ `Ь‡ùß_µ¨Y±þýŠÇö€ aÜ 4˜ ÉFDBÇ“ˆÊ~¾Ù³É8ÕóªPÃ,ÔÞ©ÒUÆ%Z»Px–aðñüp9fxéx{Á±±+?Ôâ4«Šà³>ƒhmA‘«‡c²pÂSøu¤š„’0G!9"¶¶ºE³žu1%C#[¼™$ ­­(Ÿ¬Ë²µ0û¾ïlwÿ˜++yçÞw¾ÌKxžˆˆE4YÚ\’ž5óUWÈ ËäTeRm™üZ\)Ô=ã±KYœ’@¯ò5A@ºõ÷Ì¥Ý`7ƒËGr,× (Û{醄M{.ݤU¤føí±Ó5 lÒ±± ©Å>qÓØïÒ¸ß>Κ7{K öAég4äá3dÈ<”Aw‘]DÜ¢Ÿ C†\µF*Ô#ÐJ*{QLr8‡úþ:ÍœlõWIÁFR,Î,¼ýðöˆëÍt±ÅÆÓÖü}+ȵL§¸c³ø}§èýIPÞ™‡?bƒÆ6š`G^N[a±FèúÒùBaÏQ8ô|põQ)_Wá|(ú.ưÍîT&láÑòÆð¥ç5Ô-ë4Ôptµ@=^Jg9OM Ñè$qË2en]Šš#ìp;”á*dýÝ" `5Wœ›>8Å7›íÜWÑw‘zÕ8‚ê,E-ÐA¥¹’F mÔev=Æüü¬,rkÿÔÙD‘¸[\;hÄf¤…Zœ}ª…&›Þ†aºG‡šê…žhCò¾–p·{44ëtðìœä¹VÔáÁ&ý/Ä6 rñ×+UÄR×C3¤Ž%4Pß óÁ}¡SVŧ%ã°Ü/Õ.nÒ´| /übù™±ù`‰?t"–D·(üvÑ¢H£ûÅß¾9²[ ‘ rMaÉ–ðòÄd÷*ÈÍêTBmŒø3‹y±Þü:aj:~yžhä¢ `‡m+´D–[¬kòçÁß•…Ô4b¶mY…¥Úëá{ΆšbƳcЙ["ûÚ±ö’Ñ'œÀ2;-AU8âK-ĸÐmõ2»ö—oÓ›hu¶¯6l~uáç¦ø"¯ë>‘_rGD®‰dg!ÜÍVPô0óâƒ<ª±Kž6vɼ#–æî”ÒG¶Ãͱ½xJœŽz {Ås„õÈß8› .H37X˜¬ Vóëzqñ5^¤ZèbÖw‘.&e:AÏ öyåd¾]-x{#©Ä¡ÐJÊZ8O†–¤%oÏ;r§ò⣶jMj²µuž%ÒË‘î ö“á–ÛbP`LZÅ6ŸoƶSv1HÞ[-XŒ"íYeض ÑrñÚcű(aw­é†º9ް+þ¨lűþn¨ÏךڿFV‘ ‰ÄéêbáªØ‹hââÓ³M¶¸xDÛ9a=ÛaÖÁÙóðͤoka£Ì€ùœ7»§%Ö‡B­H@âþ‹2¨»øâ×tÕ¨M4zX}ù$:61‹Ù¸z.ÆûV)PòmdzÁ q¢ë.¿Lô4ÜÔ­ªrj5^!2³­>‚íG–4üØP6ÓîW.û,°<›,dßšâh“Ó,s+¥#Rj·aºXêîæ¤™6/ÈP½è°¤üŸËÔ65­g§]¥Ãnx1Úoü ØGBùX Ÿ^ ÃgC¹¢®µH¢ÔëoòùŒÞ8ÑÆ¢7NŒÊëË>Á°1þ]¯®ÏSt$ˆóàŽù¼Mµ@[ÔGŸ`w‹~¶ìâ•@²HüÑ‚ˆÖè'Þ”|Òñߥ‡W<’)Ô·žT ÿ¤®ëÖ.¹Õ¾vçCš-Îàø‚gä‚9K<~ÏŠucüíXb6•Oüϳâ¶Õ¶äW'™ŠÃLë±;JÀl¹ùÛ…Ÿ%í%×4PŽ‹t.66 _Ë—•?+ˆÕ¥4â~ƒ…R!ÓYº<Жu)mÅ–ddJ›ßÒšùÚÈm,ö¨l:oÃ7gûÆ™ù¾Û`©„ë=Å´e%(Ç‘ê¶z Ùh©àñö¦aÈÁ×úþâÔ¼!H¦+BDS$w—(`ÜÍ _1z‘Øô‘§XÿÚãõbÕ9É´ôN]-{Epæ}ó™í2…»½mñÜi|ø5["¹—Tâg;ns?}gü2-ëôÝ%ˆPLÁò­]¡ÉOÔ¤™'¶ÑÞŒÑSÅÃK©Ñ 3¨.ȹ'ƒ¬±D+{ë0é–G]ñ|aIì%Ðb¾Ý惗ÿn@d)#_Z<ý]Áƒ‹èµŽÛ3å ÒÛPCïÄÊ0úö¾Oi[@ ÂÈ÷eÿÅ!ÿnþhÙ™l&üÑóÏèž…ÿÄw?’ü6L–NÊîGBgþ’S/êÈa~vƒ–Çzœûq­‰­º’‰€äÏŽ’öŸ­;W op1n"÷¼¢á’?âÇ SÿÆ#äh´G4ÚSîÐT-;íð!Ê põêÁV^­I/‚°5‚î1óbâXcÚí;͸Ö€EDJ6]ȧ÷¼Ày-èbÖªN§”ëcÃ÷>+51Ü ´¿Ìò k˜zA‘¤:š¶Éqÿ)·|m5å‚ûÊпJ~XA™ÃÄ ‹_…ýT× ³=þ’$‘B ^¥xÐß‹è“l“KKV/VH³ìZ3^ñ59ö’{óÝ ^¾Å URj¼®'ëH4n+ËŽíÝûÈ:¥ÝW½ ƒÆøÿ—rˆ›<jœÊŸªå9ëê=qm¢/‚(ÍcæŽï|R{»yÏ2Ië$bà›q‡™ŒÔ<»A›z6:9Yk7é6à&2‰£°‚AN?ÁIºKBe{ ?d¢NîH¤~¯_ìaVÏîh<)ø £ÚLúæ7Ê»iÿ+Åý¯sÎy:)`†þtÒi''Fl – §ußÂõÜâ„Ï&â°üˆ't;<ÉMLeÁ™¼0,ûù2Íà:{ÔúˆAA¡ŽÅò_‹CvXÄbö×S}gÀ¥Ù?Øý=uAü ì‰9’j1üOs3`æ%™'ýr…ŠVÀ/õ—ÆNý⋜aínxË”|öR؈¸ïê^$ÓˆDܱp+°’±Œž¯GÂôb ƒÿB-®ÔQ’V…I r#mÞnºÁ*× DK·Z'"²z;§à­ë“7GäïŸã<ÿâ1Ì– uc8!sÆÉ5M;tA°]@;uAa«~¿„†,f\è3è2æÔ šKàýƒ$ú¡5|ES/g÷Ü“òah+ ݳ8*±ž8ÁŒsv.>fÒÁ÷7•+>hv|¾Wùë{üòû1¥&qÀ”»¸¶†×ù;ôÇ'žÕú¤sÿôI¯”è ˆì7$›‚+â¤ÈÂÇYë+­´Ò§Êq+á CÞ6r÷CV˜œ!nn &¸)\ÅÈ=gzþ”b± lUÎø³Ê?Îÿvߌ؈Eg|f'*U6Êi¹²æŸj™ÎæÉúÕõM¦X»Âj%Ÿ½c$'Ãüw(»\^¼=LãaŠGKU¥²— ‡Ö•ªÆ ýÌÛ¸êúÇd¤ÒTP3ìß8·´ø¼xñ¶¶’iZYîUÝv€» š_¦)‹‚†q_|׊äÌ2î„tÏå”b»tÒlm‰XÓ-BMI:Û3Ó¿›KýYkg`ô˜ YëéoβìµÂv•øoé+fîÙ9ÏÁ)åÖOô0¡c‚ÆÜÑTd@(¹›åxæ"+_iqð›²+È/c1òdVƒIÖãÈõè@"Ú"L)"–؈I¾²qÅt¤pwGUø ¸¼+øÅÇ->¤B´ßÀò;ÿÒ-áOé䭭Σ2Ouîªãéÿ1šŽ þÔ¯Xˆª5ôâ¢=*9=ªÿ¼•ü#1ýI`™„ä·­2Û³Ù;Ò6⺽Œû@ÿ«V X_™îŒ ÿÊ¡»^ª:Qi9sÜHKÙo€-›ž½Wçk,Ž€P‡‡/Æà'7ÜhbW›3Ö°ôúE–ùÞB 0»b|ÉÓ[QõÁsØ»_ò±·û\< z/™R‡Ž~Œ†¯$±¼³™¤H¿ÖÝïôq44Öbs ›[IÝÒzþ¹KÀÇ'DB¯Y%°Û%¡÷dí‰ÄnyÒ%Ò¹øiÆ·Ù;B‡*Bð/°ÌÍL—ß Yr´Ý]èë±7ÏÁmE ¬pñÕ xQ\4ÆW?fàëÕ Dj–ˆÄœÒ³IVâÏ*ö£Y¿F©q;™ŸLêíµº¿Y¡« BŸB­Ÿ„$³ó¬fî¦l5½ŽÕ ŒJrÿøÍd‘^íÿ∴¿šÀA7ⲆüX'@_´÷è¼Ý³ÕKÊ%“æv̺³Ÿ™&4nñ“OŽïZæWLl:žu ¹ˆØÉ+Z\ûsHc-)a•Wþ3uñ7“ë[ÊkÊtí› c[­˜iIiÜ6ï†ù“$·òfUf7~kÌâz”é¾}Y{_vÂVëˆqùgÌm”4ŽDo‘ Ÿ3¶ÜPnÓúáòë^ÖK¾-™FÍGZÒv|»/{×w¡]Ð_m ô/.0¿Æf¹*fÅRqïûVØsÈŠªÇßäJ*(ÕûæpŠ—ñÊ69$7~K­KàpØ”Vò5fx6Êø1 ±t¨æ,ôåGôž ýÙ|`%Ã!U¹¨ír‚MM?GXêáÚa'iIóh±+¼eu^’ØkÑv¸Ýa—CY'ž&h‚ôÓéN+»ZŠÖ4?%è$IIè]Êâ+r…±å.€ŠÔÛ4.ÈFn6Þä)ø&’•Ì«¥ÉYi æ¶}O285š ^·¯.~9ÏÝïóÔR#$ÿEÄ7ÞC";Œo©Ájzöó¿TöÆÔeNLjËî:*GÅ7½Ÿ>PþïŸ+i £ÿû%”~ëh<Ï( ˾ʔ\ZOÙõ-` c–߸f“ïýåMµ¤ŒÃI……å—ëÔ“åür*qi#I «8kG±OhYÎv[X¦S­~¥K™ïjçMåL ½öü°!hͨeÕ Ìœqµª`‡!î’Íz@½K'·J¥.R› 4ºÄË–öû¿wõìb¨&m£¥ÍÐVõµ[4u@¦"Ô6Ô›3wjJ‡Ë,ƒü‹$)ÆÊd®Îœz-°±Y‹‹]KÙ5.]ÈD˜N[°+ÞSóñ%RŸ2ëäÅç~€™˜¸+}z%Æ(b+Áýù†o» YÑøÆ.ÐÒÙ?Ýé=ø9>מ9\÷ ÎJ£˜õâŸ'·iÇ3lÔö37:h2gÔé@¤¯Ú¡OÇn“U±ø CÐÍ[ª”¶‡Î]UÝßE5Þà³ïQr+c„Xúz€Ï“pÃöÔ¯ùë©—„f"Qƒ:ÞêD¢#rËÑOšš³ý2+bó¸-|­öØMBPÕáØ¹A¿ïËȺ‰Rç~M®CT’²{hi¼¾0LjY”#nÂZSE¢:k‚Wi1KÐIÚ–a÷[¶Ø  NçÀÀ¨pçäÜo%ëæÎü­öM'zî«Å¤DïYv~;OH/TìÐA|_t%-Íg†œ‘O²òØßK¾ôtÖ’Všðûá‘’#UVBAWþÚ€.ÐQÏ-Ú+P¸ ê¨+Ì2»Ò®˜I›,)†\§-Δ«õŒ:Ô&g÷haH\]h²§CÎÓ ÀnNwõÂIìW’iÔU¨I˜ —BÙóIG…-}á‰i\†[?t ñ 3}ãŸÕŽ ÿ“û¨àkÿhô»’A‡¥ô¿^Ud´¥ƒÎŽ_ "½\šŽ-!ô²pÐq %u2›t–^ ‰ùJ’=ÕˆI³M*j\B­ö?3º|>IF±¢óä‚X3±l5ÞÕÏwW¦Ñ‡ÙÈekñè=ÍôžoÑmó_Œ÷‘qgc@ cª׀¥à¬måGÀÂÚj—‡_J"ÈSÒ^ È2€×ö¯þ §ÔûGa»63Y•½je ì¡n!J]ÕÙ’b(•¤Ê"Ù˜#ÞÓl¼Æ‹Ô€°uˆí¤$ðLk}ŠÉþ@—€9 âÑëŒ:©ÑLI´Ú·4ˆ/Õù]ÞñÑ=pòõÛæK0Êwg;&oJ³…$ÉrÏs“’“Êö;Hiމ™Ëo߯£¥±{,+¿öœ:qÚŸSOlÜ&K³Oº˜O% „o¼YP¼uµÓÍ:6E$;ùÁÆ™¬÷_— 8_®ÀÃúÓ”Ã0)“¿¶òkBóà5ªÇ Dïvks·h(Ó¦úJ·GÐBé§Ó/€HµEüåAòÀ¶ÛéËž}Eš¶ÔÕ×z¸Aô ¡'ÈÈ_ sK”š¥?ù¾m`‚EØÏÿ•#.†k'ÔÄ£å.æþªd†øTÔl­z·Ûu˜}.zvü?tvŸR/v+ªSÛ¢Ie|J‰mY­4j‚`½.×ôMÑõjßòÀ¶õÛËîËP3v0}9y;y{Õ™4Aö·Ä|AË¢·Gð×µÜÁjº: —5 l¥L¿Mš˜}|ôÒ]hS@¬Õ®ë4hDíqöÄõбpíýtMåtUk Mk1–< ¼!M™|½([DÍ£?˜^?…§_h>°ÝtåTÕœÎ}-ŽýHÌ_¡…'f"]+OŠ ¥ì\¶+÷2$ïúÿS|î4‹ä£KixSµ¡š˜Uô‚Vkn©#§yù!æZÕ£k©Òø0n —(ÛL¹ãªŒÇÕP X"oµ 8þTÊïÑÎõxÝÁT:èQ-ìt»$*«…ÛhÖ)Ë´›xVÝW‰Ï±@4ë§©å2I¿3bS °ÊwŠ81ø÷äEl÷h0.±ÚL*…&5ßiQËoÆÞà2Û_2k¯Ègê¼m‘«“¿•›SÛÿ¾¸d¨R¬‚oÛNëbŸ´qž,z;ÍS“׿¬#ç–<®ù²+sÎtku˜õì.ã¼üÂxmNz\ß{1†™PPæô0¸‰LÛ¢ÁÄ'1رÓ'¿ëü7Šð• !vºòÔŸâË»#‰t:ëõ{:3=…U£SZƒÏ¬mØê < x¶´e!²® qBÄKÁîKØÎÊ~‰£‹;“¶š§Ã<+“ฯpܧNÌìAÜ–G­Ñ Ö#œâ£½Ù]BÛ¢ú7¬8‘ÉÀmdûе1¡•!!TÞà{Åì÷”Ei ³TìÝåëe®óË—Ë“•ú*°OP´ðÉçEƒaYöñÅìÖÒ­r¼¼Äüs–;qCmŸqÀÚñXüdhò'sožbåÛ×øzø=¯h8mC¿z‘%l!¢1ª¼–ýŒLW jéÙ^)ýeù¬ÑÕõ>‹J>«¯<`'÷èz^µ–µ6Ö °}Rú†ÌäÞÀþ7±…  SªküV‘-×GÁÚ„Ø—G>;.œõ_Æ)T7‹®#7,yX·[6K·H4d©pì_´BÔ)ÕÕ~«P¼øK?ÇUW÷46§Š%Ì ÎKù 'ÍÉh¸‘s¼S?ƒH[FTÌ Ë+›ñ¨‚T«è÷%Íð só,FÒG!)ù)«0ÿ“P,Çö¾äS ÁÒÕ̬¨ˆÛ½ «AľÇVPËxrÌ:¢*cs†`YD\¤‰-@5uƒ×ª–oØêãåb(8YÇÞMZÄòJèGèò¥,•ú`z»»äS!‰’M'ß ¥×óŒîW"Ô»f|U±OVf‹±î~‚ëæ§>Îlã1ä¥ù¹ª½’ªP“†ejÍDjD”…º5Bw*!”¡`3ßm8DÌx°ÍÔLAàSN«_ŒXZ‰˜vAÖe-ˆW1NÀû›CÊÕ\<ñ®ê.®Ð éåÊ*¿E_dZ!EåõKÁTˆz—ÃtÐÂ|Ó ZÐÛXÃÄd²Í,î…ÁȾ×)e)çÎûJ<®¬¥Ÿ™º@^°~j,Èkì:²+õÞÀöÕþ²=Xùzˆû˜ ÝÍ…šÐ–ÔZ'çqŒKza‹÷ŸçvW4Î`U¿qˆ¹ÍÑÝéx€n&Ó.¦ jl ¤¯L1hßÓÊ:Ë'mzr›—u3l„9’„Çݰ†˜Y õí|½«ÚË&çj4G"t§ˆXš™Ôˆ‚(”¶mYûÓ•l&anpÖÒ¾?z3ËxÌQ²Ò¼ƒ9í ¨Çí ¨éØØOþŸ.Ù¯=Kȵu…û ž‚ÈÛN†µÑÕ³&žœ8†¿;‚“/ä÷ÏåÎ,[ÌËVÌ-ÿré¡"硸v˜@|&,öD¼ì·ÿálî?¬Ô(“çÊ™3py,ï>]7vÒXò‡¾#c#ib# ¯ÛæøÅÁæàPÄ oÀ_ü™8Îô&`)N»1¡åÕ}•r”°Xu™(¹‰f?íÁ=•h”6˜fÌ1+X—«–Y,zvóÂGWP‘°ÍhÉj´64‹â2ÙÁ/x{g2åRLffj] ì)Íäí–?!¸Y¬`Nš»ûwnÉ5(qÑXþ×ç³UŒ±Kž‰ÙþgFù5,æû@¼Zùl5¥söiy)QÊ ‰yUSŽ È¤([‰a¹‚:½ªüÆÅ>u»ñˆð†SzëdâdŠ\öèõ·¬Rs£å|¬o¸\r ^éñ+÷ó°€"Ps.Áæ̵*,’â ^Ãd:´«¸Eš‰EÓýœ¹œ3 Œ4¸Þe‘ýy‡[4z{@@ãQ}8ƒeÝ l³ônuBŠƒ -Ùe¬™4$Aq–$þ´¹çV×/}RH%¸ÁaUÖžŒÝä'&mÄönçɇ,¨«Ð g£.Y5Æâ‹ŠÔðÈu¾à«fÅž\ӫ̬¬’pÊ«j¶3F>®Ü­²õ¡Ã#Ñîü¼±0xÌY³8+wÈ90›ñ T5´­ƒØ|Ùñ&ýÕΛSF‚,öíuƒ£±æè3€sà†’XŠqš{7~*€ñ5Øl@[ „‘“Gg-èHvѰñgé´R!£`w¶³@?µýKþl}` y@c ó¦ióŽÍU÷fТöHlødQ\x뿱²D¼¸Ú¢ÕáN伿æ:­ù?%2³jÔV‰žÎ¾¬4c³CÅ$$2< S‚ â©’wAðwÏޣ銅“E5]}Ôºlü²TâmwsŠaï0ˆ™±½ ²°¬bKL2BÈÍ àHXÁ…Kô¾Sø~¶FaNÊæ-b•ü˜ã.Âl¡u#âóIfÊb˜(Ú@û&¥–Åë¡ßQìö§F¹‰üç}z92þÂw p^ÊA€‘fƒø}—èý·Â¨0}L‹½š"€ƒŽ‚õŸxëÉF¦ÉÁÚg€YzNâR©IEjÝ"%¤Ñ÷=Õ-T“Ìü“~xô¿a£‘!šÒMGkªŠ Ë(8äŒÝ_ЉÔïÀË$$XØ¢=bÀ/¿y2"¾O¼–ˆ|˜™çns¢ØÚŽì‹ß<¹Ë/É‹¥Ï […p¥ßä¿yR©¾o i<©‹½á\ÉIÝ+BAL‹ÔIÁœÚ#rVÂEeµºÊ—*Ñ¢›'›¡ýJïÿà\9#øð}r;f•Ø,HÉPÿÅ[™RK2‚ƒ%ލ©F24ïù¾DwT­’FVw?ƒ7m…,í µ’ž[ÐÈ`¯b0·B$Œ:L¢›[ˆ`¬Öy*ùªùêI«žÜ¼K;ª8!µáQ ÅìÃaÅùó«&Ò¶{RZ¢qA†®)²yx/Ë¥ø`Zä [~U³µû@{ÈÃ+9îyå>Uò‚®›-Ü\†‘ äõúìÿ„‚D±Œ´¤>~†®[+ÆÊ¹$€Xâõ;àà±IH¦w¬ËO.ír“`qÓ©{Ÿ.NgÜJ±–h\[ò@˜.VÌø‘po9€¨j_NúÉê5çʸîîšÍŽÈú‡¡91hóøÊ^Ž\4‚¢}ö²k] Nóì»júk:¹MüŒÆÀÁ…å{¥$+ä,¢”Ã途ÅÄ”ÏTL‹Éû¤?Þh…‰ÛP !ƒ3aÝ Æy­|øsMÇW˜ ùW–ŸVòYHÀ!’ÿ,ž´–ÒüЦê^"=Œ²(Õ„K)ëV #p3’)KviÔÇ”óXh:R*­w1©{µ2‘˜p%)Ãâ\mØ@ÃMë›{®ºÖbµü®Ô²*š×•‚Õ¨‚㣭ó⛩s˜4cÊ–\óLÙ ~¾äU·l14X&è¤ ö©- 4PšT™Çãídþˆ+Jûzi„ µ<¥Ú^ À&ÊR)õgb3?=p8€¤hû4ÆlTj‚) 0O8E)œÒ¯×›4úpZõePYóÈç“xˆ%œç“õËzÄÎñ.ªÛLÞÂÁI8ì&E£33eÇÁqIõ=@{ÃÅ:Cæb4]¸5 v.y)%ÔGËp©d8céÌè¹ÍèãüšÏ‚ÈO ßCϳ%coÌþŒÐ·z²‡»L´W ˜d °?ž>I²N,[vÙIšÒpv2ìôï­?xÁ.½Dê°îüMê5±'r%&G¨á¥–ÁቄµêŒ”R¿Ru›÷‚GF#tg1øž£·¿@|U£»tؤc½ˆ3¼óÚ8F¤l«ÄPÓYÒÕ|ûã1¹8¡ˆòš»³ª<Š¡FåO‡WF ­õ9.¨Çî äÆcb?ùsÉ~íX‚@ÔýþŸkß^rû·­Í,ü\Êj$ÌÜ7‡ù––%H4-°à¯ø¡Ì‚ w,i±‡×‘¹¯Õ9Iï³²ëO@’Î…PÿµFmfâr Ã\Ê„½ rÿº‘]{~íŸ\óV©5·¦íÑøH?e 5î3¡ûFIÅô´¯Ï;ó Ó«åùùo¾!krƒ„øq‹u² ‹Å¸‘P+§«²>5ÒP޹ =MÐ Hmn¢ð'Ý|1±ÁB\3à…Ì;Ìý&$½Ä˜°Ü+÷„Û¸ònÔXw©Þ€z²Rlt8¶ÂMGªܤY¸ðÇPý“ëåæpgÍEŸ) Ã+G’Cú<Â’ ßtgÂmçc Ùa•'í4 ¤'Ç;VÞ>m.ˆ†k?v]PµÁGÞzñîo[¹@0ø#ù“6˜„P­wœ‘‰Äµq2öˆº&æ'GÙ±‰ƒ^ ˆˆüî•'áö{ú±‡—?¡¡¾“†SË(/Ùþ*{Ú GB[ñ÷Q¯Zèy⎊Ø{vk§€;†B}²É”åö¦²/!”’q‹Ê«ÝÝ„.ˆ)ÎTö:OœD„ß¡¼bêÁñâbù³¦eeÞ¸”JY‰õ$þÐ_€ÜÊÊÆ9ã䜆K¯ÿSª;¬xÏÝX3F\à®HsÁ.ŒH¦–†YÜb?n3vNNÚ¡àVÖЃXú^o‚þ)žûù¯E#m{›“{IJ¶ç=Éc÷¹†Ú˜Fmuò+Á¤5hêˆ}ÚÃMÿíª(ïï{ø¿–ã Æ´ã-:ÓÕå}è¢?TäHËÀB†ß~Ž™h›S+&‡?yfÉcîgÎáãÌ[éÏ8¿= Ûä½ýó¼Î6Ëù~ñçì]Wœq´Ì)ÿi¿Ç†·&+‹x¼"er ÷dº÷´¯É“8^\¯)´0ÒókÆßRflõæü…Ô^rRÏŸxWêùôov~^j¢ˆ·Æñ;¿éÖ^çH¤¯Û·¹£¤?\§)røÄØFAÚ¡WŽÙªf´‰RÕó¤Ux ¢”ÖQgMH/O´Vú˨‚mÅúŠ´(ó½_ùÑ ~¤ÉoÛ+}œZ uÚåÿç¥úv’¼î#°ð¶"UAöˆ¦Þ¨Pó+1»JRPÌ5ÇJ±¹Ý8U̇û…ÍJn¥u[(f›«ó¨¨ª§3¿<±†Êbö®\o{!wY²Úÿ­Àðçc·+ž›Æ­éV¥)ùün‘Ô«r­øŒXŸœz֛ΧÁà4mí ò†[^hwÛï[XïÄ³ÊÆH¨&‘ôõ­à¯—o¥™ Ý/=–šP<ÔÀhd!€Õ‚­}$ l©¥Ö0iûn­Ê”¾ë²´±Æ[h´©zDã¶.u…zT¬eLíiµs™ÖMxæ"5¬ŠÓ±Ó WÖTíð«y+â–bÝÛdxÕ¤&ÿ~‚¸Ì.ÔFਲ਼vööžk¦¬Ía[°Ã5 ™¡äSh9eÀ]´¬a®‡hø‡Kþ[ õ·…%ÑÈ·¯²¤“V2¨,É}Í!÷ù¥ãBÁÞÈM-Ú›nšÏèæ¥©»g{މO˜´“-… NÄ̬—€ÂF„o&§çäbzÛ…v³#¦²ŒÅ áéö™¹)uìøMD“Ôõ5RGš^äaûÚS‡ãÁ6ÃM µØ…³8XbµÅÎ!KpÌ¢½»À“®³9f=Û–h©÷þüÔ{ þÿÉù“ ßá#A;¨OCzò=D¾;¼‡–%¬JDA2£À¸œº²Þtt}"7ê8:åÝ0úW´5Í G§‹‘¹)÷ÓÓÅÂdº±`¢ïWPã Ë´¯À¤ïìÓy„홑  ;¬öu¹Ý%'5<2 u·Â!oØ"Q—%MjùY¿œž{ÉsÒ^ðµldæÈTÆÓ;êöü5g]IøD£÷¡A¶ W ŸMOk òIŸ]µb ®-ÊŽ:ÕfP-””)S¦È xq¯¤:4JôŽª"Ì´H¯}昘 =c‡§BÇì¤Mµvö°Ó},*~c~Ô3Fºwi¬G/ûM[€‡Ë$|`Åü=˜Ëð0~:Í`Ã…è²*xïêª\ÅáœöåÖäùݱãPjòÓ½ä'Ãñ­ÙcEŒždŽÝû¥)tx±åP±ÑPüé=ût†ð­¦fýÒ_·²øáÉkK‡ƒ£ÔšÁ[ ¯ëZé['áÛŸ;~M ðø¼W+Œ3R_R÷Ò·o*L*ëÚø­³‘ÊÄKË-i¸lQD1Å(0ƒÕFÙlpÜk‰0~ÏÙ¦)²ïËqÂBùVØ_w6S'NšjkªÕùЮ$P¥,©` ׂs»©Õ g)†Ô(ÎßÀë!ƒ™WIR½ý.ˆgQz¿sÄ3µ~ù, ý‘ùÅ—ú¥è¶³Ž$¡ÑT|ü³ÜPî¬ÚÿÂa/Oõœ ‹sÀ¿& ƒºï ‹‚}ïéw®U2¸ °Q(2‡Å+ì첯ót?ë鱩[.MyD]¾Ú2&áá6?iœâ6Ñ2ßêtÁ±©6ÝHS¨—HúL$¿6nóg‚Ӫᠰò{OŒ$âi=ŠîUžS€Âš—ó…ïÂ)î>9?z)â´³O d¦:W_5K?ªZ='5ÉŒ¸-®¯{iÊÀ4‡am4E\\ ‡i®s ÜüÂK¦êžÑÝÆTýÕËÏ×?3ö‡~×gd3ÈÐÓÞ†Í`9þ¨è©û­((Ø_o¿~ÄÝ2üã2L =•ß4ÒôÞDuª‚¾›-Úà˜;”eÖuçOp÷9òO#o87õŸvuYõªSœTmêB0ÓËtY[£³Ÿáî£f•ù®ø)^]’…J4-zzuÕiW‚à,ŽwÖ;¾^ë/…t³‘„ðhfߢ$·' m0ªe²Ý³æÀZ?m•Eç´guÇQt«kI„=¶‚Í2L_©Ó0ËìÊMè{OÀƒ"‹J_ÉôÝm[é¯J.oØwÿ0Œü¯Uvìʈ5.ñ›KxÝËG’ŽÚ.Áï[2ãÊåƒdûJË‚aaRÍeÕME_Òš˜èÄÅà˜ròôñé*@ʉ AâKšj6ðCÉ;Ÿ¿Á¸’75N¼Óît"0ž9•¨©‚*JÊ !¤§8UM¤>FèïË,ʨ8YJÔä[‚gñ(.j½õ å7éÇo ÖßeÏ줺‰|Oä^»u²‚+ìªïøGtR´;Øp¹ÚseråòX™ç{¤4„/ˆÍé|9ò¬ ジ—(­ç-Œ1NÆY)O¦£?$ o¢™O¤§¿yµÿOeÇ/ÑSqïéÄßÐ%›‰¨ß©S>`":—/Þsæíµ¸‡èï0Û~Õˆõd¹;cw¢cøó§ÊeÇ·Ñ(1«ªM·âêsì5†sÅ+#çxž3,ÎgŒÛÆ 7–ê\„DâˆVýÊݵ%Ž\JóêïóÂ-Ø*ÈmJè(ý 4h<¼‡œú·îÒ¨Veh-û„d0ÇFXÓÖog1µ «/œ\!¯…³.]'–ªúþí+ l“S/–rI育˪xþuP¡›ß­¬î®éjÇ8I‡š‹Z-Ù,6%zËkt¹m ˆ<åÉ÷ø…7 NÓè”i.\Sà`ÛŒ·-I9ûì¶”ÝáÐÛ5Zé®0ùg5ÙQû©&D+ Æ’+íªú ÞÌ+`xÑþÎÈKxÃ`î‡%hóEûqx:•>êr® ½yd[^dÜFá’"´N‡|]¡/¾ æ†Â ]-ºP$dJ\–倢ÿþðÇÏ~ ^¦[Å$ÞÍ^¢bù?C«¢þˆ½µ^?w·«ZùËØöI§gÄzÏChFóx—œ³Ÿ ªÚÔa T‰æÄ3¿y\€‰nmÌ]œA÷Ú*(ÉGÇJó÷NP ™ <]òsà4H$ÿß|¸-«Ög¡7ÃÆÛÆFµˆº;fE®7ä‡Ô>PrxûÒþ!$ R¿Weƒ…Œ-ô«ez¼Yú|ÇYÏ#ÂÇa€G«¼=Bü …îÞ\ß¿6OÆËû Óß>Žƒ|{}cØï†Y7(· ´ÁÑ ëÄ1kÙzcnßàÀûm¥ûV×}@v@\ßIJjæMˆ°ÿ¢4¹}Ck¢ì¿©ÑXl¨ €Ÿ0¬©Ïat•Ѱ)|P/¿a‘öK©*é1ZXý±ÜrŠLÉÏà<ç™Å𬨋‚Á2¼¿þÚÌt™ôö»ÃЃ ÒoþHCøŠƒÑá{Á-€BEA8P_#èš:-ʪtõ;Û€W\÷:€pZ€W¯Xõò³i3âÓÜYùg¯5{y ÂTjÒ÷6!ç‰r•5ÕœÝnÊîGæPà±üÔòôG’ý3’`&Âä[·O%Çì.8,p+%üB˦ÜÌõÈåÓÀÍ¿XFÕ¤ŒÝÕzz¾Ïßåé½ÍrD­B-®Æàð¶ %Šx¾€‰å¯8=× óÄ4˜léÌ¢¬Ó«L `NÀõM¶Ïš1‡TµN$ÆzÊÕ¸o™û‹±Ž,â¡úÅ·VË„^Hª†[ò1ÔÛøiG³ÿr\¶G-¬ÐÛx3¡Ö µ²·ÚàK ,å½=gÜéºeP8ôщlÅ.’±‡Áfg‹$3€¹y{­Ìßßþ¦ÒsA¸ßjÿº¨Yë´™?= v÷Ž`FîÜß>”¢™¦{‰âÀ¿çC¢?*ÍÕÏ 'v·þ8C`|Î$›ßõ˜oÊîÚ~f ˆL?´¾~¾´RQ¹Æ§¢¿@¬×äv Ü& „P+Ñ•l±ã³.¤ ‡IÒ¦à ]à3?!²Óa%J§¤Ra?Ò»¢gTŽœÚÁxˆ1GDÝ<Õ,ZŠšsœtÞóÙp÷2[ Q¨sA,ôú¤¿ŒZ‹ÆÔK“› ÛÅsõvr– ìÎ_Å“.ÿƒžÅJÉn|‰ü¡9Z`ýJÌ AÓ îôúuÍ“;îùÏNZô‰låGÂhäYæØhë¸M|}x¬‚aËT~Â%ž1ɦ…p”Ð×éì “[`U·—FÙ(4—C˜Æ$NX –f_áŸÍéîz1ÇvþM;H^èJ>q¨u,fC(¸Ùð^µ/êhoêPPÀ˜¾ß™u؃€·ÉK:>Än¬ñ¹*}@; ™Ä‰«úêµP”ÏyP©¦ê±¥­Mv\ #QQý²Nt˜¬u‹žo¡#>vßLzj3’|µb]8 usAÐoãcñ´Jþ'ª±¯õçÅÙ Þ|¬0fÏT|;àï“ØüœL[™'aÙhB¨i *´@Ža¿ŠÕ¹îHoPE¯5Z$Öšþ¹Q=fš¤ß]±5¶\Ù:„è[L-Ý[ Ns.á¯ðµPxLÐàÿ"=ÊM? ñˆì5Eb¡óÄz³àËù¿ *Eª€Ñ¬.·ƒ ÁkG§(â3}k?ĺ@3ëã‹F[z¡8; ¿p^ ™Í:“ŠÑÉÕDoQË/Yö°57H\0ûM-"•ß$rTo«o»4[ÄŒ•~0ËÙâL©äB|ž1 2À[®†#1ŸŸÎr “«'‡Œïcr¬ ¤¶TÚ5Ćž–¾bïÊŠây¼Öt{¬Õeµvõ8ÜcÝ[QÒ€:oBm}Gss¬q¶öÆéAäù¤6 ëѶÃÞÎGC‹ƪû;c ôà’™ ÆÆ„ì|²]Œ¢¦[Zªƒ¶ëî¶;ÆÑð)ˆý–kÃGå^3ñ³-—:Eî;—…u.[aÉ´çÒ¨þ•…Œø÷•×ßW4V%XÃì|‹ªŒpÅòÒï[·`œv&÷Uäٟו¬IEÂr£@­*{‘瀣¢}\w„TÈ+ÕÕ¸Áç’Ážî¼6Ï^B‰Î»Â´€à»¼4ºhwfÃBŒV]öDfèÙL°îÖÔ5ÈÊ+7’G[œdø¼}No#,ùžÁ½¸±—ó­1šÀÚ•ýtÑÞ°¤ÄN•«Q³Ä@fžæP­Š?ÍE5›ý™_,¡r˜ÐúXÌÑ9kS’'TÎHdv-ôxeÿLß÷—7xw' ®mLè•dM¾É ³Ñ÷k’VK[ójs¼É5L8ÆÚÖJ¹·Öñ/¸âlíM!yŠoá·f%%AK Åý÷ Q® ülŽg üª¤¶Úénw¹µdÈàì^Ðãç¯K)y¿jMuÚŠn{T2 Yžh†ýFs$ [–d¶ûu’“\G¤¦Ï’÷x‘?}^±~…ž*L?.J«ÿ†¥~±ú”kÕÙæ‡CAÐ\1€"tëÖRD©îä÷^zÛy".k!†%£§¦^ý[à|A ­þ–E\<¢·£es¬£¼?¹ë‚†B7´m¬õ²¡ƒ^9VÞžY'Ñp˜P¶ÂŒ3ñZº®ÂŸ™‚gˆ¸INuj”ŒOT…‰7/EÓ:ƒTÙa]ÁÒñÿ÷qX„õ¼jÀ‘ZR:‘a–„Þdnù@¾ /6/ƒäb,…ßvæIv…¸˜až/ ±Øƒ×Ú]e¥7þ‹k÷P€eh1·¾æÂ<ŠÐ‚°ª í f-¬¥?N—«瀭óS–ÛÃv´êR¸›ÖŒ4Š­$4†Ôó‹™  ÝÍšdÓÌ;Vez,9&9Bëôö cîM¸ nÂ]ÁÇÄÆTßÀ¢A—LG~ãnS¾ˆt`Kœ…miwX‹Ÿwm„úýEÕƒÊ MµfFMNGk”ŽišÞl­‚—ŒåKgñ¦’q¨ 05Íj䛩®jçKÓÖb³2R³-*n-fK·ØÜ[‰:ŽfÈÒv‹8“] ~Í÷´FÖü°ÒíAÙ5©TÜopi̤9ñþCŒÍÖ]M”o²Õ”T'eP¾H¡±Ï¢=õ“¡­Nûß:7ª_SÄfHŧtšªùýï¡ÇX}à7{Ï{e†°whÎè*ýtå‰ç-D‘û$~ámsÖgÛ¯«Í½|£Çø\&“Ö`GU`|<”»ý•’Ê¿¼„x.Ž zÜ\ç3_3œ±hêy!ñuá,¡g‡ßGß/X57žÊ÷özžW; ÎNâ­Ë³JÌœMåɪäìàIù5nILD¾al™… WD·y³@* î\ÚrNœµŽÏcÿqbJ‘žŽF¸ïçdó‹#„T‚RBÎÜw÷'µä°ë ß\È®Jå¬÷6‚’IXA>ÕÂPA|õ‰C¸2ñŦlW¿¹q ÐÑn²vîÚ;¯bZžªû®ÀGîäö/íÕÏffˆI²À"…T§VÔã•uLÎ’#¡ˆ`G Â#{]Ùɨü]‡85NÒ‚ïï¸}¹„—JZ.y£ý,>DQòÚiˆ½÷¢]i“\³q:¡íÛ*ì½Üî«Ó»þ’Qs´glâè‚ֺğ”u#A 6¦ >€;È *NÇ]Æ~e7ôR¥ÑsÈ#‰ižti8¥ŽÄØEEуÉË¢r©­%þêdlk<äåÞÉŸœc¼f‚§SØ´ãš¹;ÇRó’Fþ­/ï²ÚL:‚·ç“#@ýX¯Ãu<=>HDÜ/Q¥i¬S‚cX~)]nÁÄñ\nq!lOpªŠbñNNÖªð\4  ‚ù<<¬ŸésWJõ6Ðna„•tb'™QLqï‹–e%¥™éHóÆ2k#"š$¹•ç3ëäpp~LRšÔæ–˜h—ÒGj1JyÜ vejY“JîU¬Ýç•ÈöMˆ¸> ¤ì¸<'Ýoa«ƒ¾Å…MÁ„Jgì*…¦3àê‡RFÀ²-£ižäÆÊr£äYŠÖ F®û¹«Ó‹Wi¢OI—üÌÚó»W5ÞR¬I­ŒK¼VeÆñ§Á‰›F_^Ó‚Ì%q¹¶+•e^ÃË/€gmž§‹ïÈvXû®£Ò§V*tkÞﮄ¯7» ,*ñ}[6¥Ø¾‘¦u.§óþ§Óf4•ÚpɯĬs«—ÌÆé‡š­Ýx|2ÇÂÔ›E¬°yýË Üeß’>J§ÁÒ –4úú–ÐS[æîðǧȿÎd+>ÜËáyÝLÝ]iI;&¡r©è+ë0 71if}StÁÊÓF+ahòç.Må³w; +ÏæB,.iëÿ,aÄq¶o¾a¡[ux#щCnå9ø4LEÿ,Ièx¥™úo7úCRëÃÚjj>’à·¡üëXù_ÕR}bMÍGl°ÓèèLu*ËÉÎÌá'‰LÅ^‡Ý;6Ðâ~0²WÜ1h:7”éT¾!%ÄC’à‘á2Wk狃6uS˜Ê«–‘ái%b4c¡y´-½JQ¦,EÀ52C.ßKq]œ5©Ï¾×jnÁý.•pj®­Œ¡{%€H‰Ý|Šèê¿Yu,}Öþ* @l Oâ×O¯ˆ©yO™Iá²-zh!Ž’Õuþ¶’Î ÇšÇnjw3ÙãI5/éò_¸ê.ÃeÕÏU‘1›~41kÆ€^´Çb†8Ç·š6òj`Njq\: ÐÍS o¹ Þ¾ü¦Sð7+¯â©y Þ˜Çk’Ð!«Ãi`¿Øº–´v9,Ý¥ µg>‡Û,CÄt¾_gÊŽöh=4™œszçQÈ&qRT'¤/«Š‡szF ë—ûPÞS/;á»xë’AZPlIéHwªt $Xp¶ÎÉm1§ÁºV’ËQùâ¶S<Æüê`:$jAWÕW÷´Ä¡Å lá­ï]®ƒ­>R­®¤X·mgPØQ¹¡„›ñV2În¬“žŠ§mÐSŒT¿²ËùóëÈR¸Ç¶CIa+€÷ úÂá’Lnj“±‰V Q%TX í À jšô?VCý°H ÈMŒ JpÁîÐË¿T°n-~(Š­÷€að-HÀ9¤O|á-'ò¿¢pâdñ*%ÝŒÁyWídkªýOš‹õñÎk·®k.ó}C”ÈÝÛk‚u¸ÖÕ\–ÆÛO£‘¾¾× Ѕ檭þ öVWØeé9ÌàÍ2ÙSðË£*‰ÈWCjYäÈ ÂëϬeY úÚA&$¾})!í¼*¸Ý߸tb$Œ GO̽+»wïKáùSÜ1å5•?*¸/۰³Fðy#8´ˆ[…ÒiºóÿÅȪô¨çnú»Þ!CL³‹~/Š]àt× /8`WS`Ú5ÓLi&™ÂýíUÁù›Âôû¿‘Ð|k–w¾»k½\z©¸¯~ù2ì|;nç–w$jæu³Åkg ne^;C˜+nª2ëÉññj\u¬YåB¹›§bìvß /™èª‡]6…ÈŸ•CNË_$1rãë³m¨´/»°9É™Û ˜ç­Ví7¨| m2w¼â6^7Êœ·>—Xíð ³çl{Ëü5Ùh°£ÝªKÔýžÊê |sØÞÞÝÅwåk>“±| ÍÈ:`úÅcÕÿ šŠ±~·pþš‰îjÑ'˜è÷ŽñGÐíM€Ê (l&f£E³-Œ~| `½sšiQpJÕ ËššDÙü!É%¾i²³ çúH‡l5ª6ä/`B¢ÞÌrÚQa‹ˆ(YZ̾ÅgH#ãšäïʪ ³-nƒ¯%(xÔàyyåè_vVXi]REÿdÚš¼¾ˆÎÓ;·¡Æ’³Ê»(yŒý:Na?š1ær‡2¡Y'`@`¾Ûø…· l G¥>ŽORôý-ŸAàÂè*—0ŲõyZÝœu ‡ŽBE;nV[{ø‘ܨ‡ò¤Q0U»I@=B¿)ïEÄX6·‘‚Ž¢ŸÌJ¤ý´Y–á²Åœ{aÿÑ—^£É¯w’ØÃçÓ7·ÿ¶:¤/j> Ä]¦%¢* UßeØ Ø ¯»¶Ý`ó=Ä.oÞ¸¯lóØÜråÔFŸáPš v×q¿±áÒ©¹i´Ï'Z™R4©s«Ã™ÄzÃçÃ~ݲäX[ÄEÏOº¼b½¤:âh Ãì3¤ä·~¥A3› )MéŸÚR˜á£ñ`(I5à[VqÄLsòè$'$ù\PàÛHŒp¾ ÞòÔ“‘#æÀ~;LÇÜèG§x³¼mçïÀö£üô´z?£ðbiPJØzîÖõ[óþüo‘¶¦¯úÑÖG«éý‚ûŒ—Ãøeñ¤ÕŒÔ3•÷J”FAXþM¶ä· ¬S®XÆYÙEßW­=M »c-³Ì'é×å§¾’¿vqqwå¹èSH 5‚ÈŒ!ÿÈU_Ñèdz£¹Éúž°}Þ¶óHªþÕȱ›Ùúªáãç`¢g-D‘ÅñÆýáÉüZºXË-Ez8Už"žû©”ÕðCYÿ=«Ö¹üääŠÆªð/@lÿ+{.½OD¤Â} l )ŽjM’J& ¾f,^ã•ÀgvWØ‘‘²ÐûÞÚ,K2»ü/ û k Sã¶üŠÒv¹øz9Í5YýZÑyÉÊ¥“Fe(©£¸]AhÈê“«cõI'¾ãwOÊ—i’/›….»E•ÆÌÈQ ÇÌ ô·Åî5c„FT$m ¹­µê kŠ«ÑY0?PÐìÏ´ô‰Ü¦†½ÉZ@ŸHk«0æ@ÁÉY§Ë$²J¤ß*°¾žìúóâ’íóv¦cÄž®NKT(Dië³Í^ ¢ò­UeßO@ì+ûÄ’m¸â‡*©âœz‹«@êÇ c~ ,wǽŒ5ñY)OëD=_˜0NL&qíC¬ª›ïðÇj ¡¦tcB(Ý:ç½#7_jÖP ¥5.¯yä²mdÇã–t¤VÛ†³}6”]ž_…Õ ±qcKûmœªì?Dµe oM]ð=¬ƒ×üßÁWìÉ{ùiù5Pÿ¡HðÃ>ìÞ÷b/¨Ü‘¬*ÌÉ5w*¸ÝGÖØ,É4k6=ðEùZ“ëÉö«ºg†©[1º¡®?”ïƒÉ®¢Ý³¼¬|¦9Ð"ãy¤^ÃÄb¨ûñµ³ &#×YŒ·„ N¹,Óxšã` ,j÷ÀÞ” ¯é†;qGÞL'!Öç,ö=|µØçK~W¾“V8·97ä40,ƒT¾•d»çêݼ˜W‹ƒï‚A‰ËÇ}ûs¾×‘ǰ,|þZPpzO˜ýH;<=GFÏ?fòÅlÅ™öÇ-áó¢Smü”bz¾—?^ÏSÀ!$ù•Ä6_:ºÌq¸˜BÈÇ_ÍOhòª·Ç<ü²„;µmIíÛ§jÿ?0»¾ÀÉ0E4V<òþ/!z ;jí’.zÕû ²:ƒÏ=±ïEÖG•óÒüýänæ£98{ÂÌtåpmì'ÝòÁêÚa¹+éõÑÅ@wU?®j–ð3ª¥„QÄæ‡ £wLg`ÉPÒ)w;£Õüinâj‡o O ÁEv'©]ó1ˆ|Ž)#4üÂbVU ͼz§ÅeÅW¸0qNQ¿'O[5¯¦4Òê¶=Pg9µ’)•Žh?@ ]<Ïq‰Ð¯ õD=倰O ž²@±Õ½=«åHޏ;æ¾–a¯bÎWMÃlŒÖÙ]ã2y÷næ'ôŽ€o(g|¤*¼!âP›óˬæö†U&O¼ë~*˜Ûò¤rîr¦Ü÷áy›ç’-Èl{wb3´Y c¬[¡ ÈyTxÎÇÁ}áUåˆòÔà`÷+î™døê’Û.7Ë÷q® ‡é»ÈkYâ–ìßõx¹*|‰¼A{ß”>D1KÃÚç'×ü?Æù/æê¾^²,>£öÂ" C¹ b]"'*ÌÔ»¹%¯:yVo¹/;­¦Õ{6çXÔê^Õ"i¹wÍ~Ë9À#“áQ”ëe#ÿ\„\"6ÀŠów+¥—ž‚L9uPV´sÚ4¹[X¾º;[v,¯s­%sñ†5^=‹èHVûjszÀ’7Â=¬56¯¶Üžˆ¥Ãà詳ñ|/ó6ò34÷‘â¨kÏq¤V쌯“lPôf:ÿŠ‚7Í3nšysºâ[.t CZèQñƒJñÜé“'U+aò™Œ9ƒ–(í+¥â7¦Î*xd°::ùÝãÍÂË[ã´jÒ Ø¶ŸUP¢áK;¼¯Zø&J5ÇÅ'ü­Õî€1»êw—ü7¹§VÑ+Si Ìûñ /Y Jö—“¶ùN*ÁX›íìe›ýÏ©qç²§Òöè·Ã,ÌU-Êﳩ²VNÃX×¼N…Òe€éƒÕM+k§jëµ'Xvy“šeKÕ¦ìo¦ŽâÍT.L·/÷¤ß&6|îëü‹£ÙxCñ¾Ÿîí\e-¡žß¡‹¼£½î4Ÿ“vªJ0‰¶œË\g·Áë²æìïÎì#"'‘Q"&{šð~­²í=Å¿ Eµ‚ô±7OJÄ¡Þ1×qäÒ£a»g·º-Z¿29!Ø{Yœ©.*u=ØnW(‚@‡6 u„W^›¾£ /Dû¯ó9ÆçKâmùù ®!¸ü¶…ùˆ|ñGôðŽî$¹üãä§HFv:†§Eša*-êXšYbk”£dòò¢ÆU‰e¿£–q£1w³7¬¨MŒ«d °ŸßÞLîýåuõõ€â .mÇüþ¶È|HõÛ–°õø­ÊÿV¹ãÌð<3;~Â/5íØNˆ#>rB.0œhš·¯&ëÃ^>©Ù/„BUeO†gRr¥‘Öã¸4Œ¨h´¤-|BLo‹/Ò¹/ì£ãPŒÝžýAC¬EÙ¡CÇÌE7ËùñÒuŠHæ¸v»®–¯7}iPÂüK™‚O8ÂßY¢]QÛKt5«Ãíwh¡Ç)þ•ÀøçD¾+k¬=ïo +<•ÞväqƒVµLIL¼ŸÃ[MMq~”¹Û"QHçŠû#õï;1 mˆú"Ôýb L©iâ½xÂÒ‘ A})Â7ƒÿ¬g-Í–ÉV'¾ƒÊÂÿ‹¶ú!$ŠìH).€J·Å7œ1ý&¨Râ›ó©!¡–8Œž”zÍbÆMY 6Ŭ N¼0Ðæ–NªíV»]¥¶q8¿«î0¢»Eì²%¹ôYyèÛ;ÑPR »mr‘¯E:-Ã<¡4ƒß“mGªç›ÍLO®Jɇ[óÿ^â2Ûžñõk:ѽ÷H§ñ`:Iß”beïŠIzd& ¿nÒJ¯ÄV]ðªÃõŠn”‘hDù5`@?Òc‡ |8ßO¼n`Åo§!ÓD² ¡èä:™AÄ/¼>-¯9±»5r±“L$- õ(jÌIJãlø›ôµŽ%"Ö  ?dt7vt˜˜³Öi ü¹|Mh™…ÅP?<#7É_Ö}(*&ãú¿½!¼ÞŒßbRÕÀIJãI¡Ÿ3ÒÙKÏ• Î-L ÚפÐ4r½ ¤¨>2  óç%ñ|Œ}ùÙädý׿hv\êRÇ U¬ÉsÕé¹òZð8kI9ûxÎsâÒÂmÓ?Æ!H¦?R’Te¥9¬QÔ¿Ì÷uü@3¶nµ÷*ɤр4_-üŠdÎy-˜k>Á÷ù_]Ç¢–ÎiMqo“èÅBc&V@.ŽOª©™)é‰`Ž´·uéìÝãã%Å(Ö(g®Ï¹Ôq«jLIÌë޿ذ‹ÇJì^ÎX?n?2B¤ô5¿MŸõün$Ô:õaŒè-{ØkW=7†ä*ßçô&ïaæ™.óÖäMïíîe2Bå›ÂAPÁ†Ÿ»Æ"RKfE^iSº •J °‹Úý:™ž|í'"ª6gÖuµ$€–>0;(ºMêg[²†š;³¯W[ïÂF×ÀÁžòorõ(t±ü§Æˆ*ú½—hi2³QLøoP4Ђ¢M¼Â¨ù+’ÃWòÄÖ{å§–:˜”Ôë)*ÖbÑ›ÙH®-¶3ðšk®‚·6æµ€y={o¸½Q^ì†\ŒaÑ{g9úJª!ZHE™¼zúWߣ.#Ó#’÷2žïW¶Ùõ{}Ë‹¹•]äTþ·äí*ûn·þsÙ¬òÄ.ÊßZ¼‚¯mNáeÀ<"]&®/üëqA(­¥‡ÌIÔ‘´zÅ+㢗yhN:n¿[pK¯*õp±lÑÚ/ÅùØÕ«JI“;`Ç›ÛõOýÊv$ X¼eY”wRÐqdøÙ =߃Êk ùž±ÍÅÄßT€@ ZF·A]‰6]ÅÈà -ä¦{`¾¯ÛŽ;¼.[Ë.W« öKnTûXÚh0³ôr>}_é+)ëÆ»°©S¸%z¨÷äô N£¨pj11›éÛ•â1é'»2ð¨ˆ0€­¬Ì®QÆÇ® ·Jªö¼ ýš¥“kyv±`b3«o— æ¾æ磫âE{ûб$rÉ&½éïddC¼÷0ütéðYg(a.pŸ·ƒ«ÓYtE:ü7‘J ErÍkž"c©q|©1±Ñ‘ŽßFçu;_..}¸7k§í—SºCa^o¿p„ì”OsäOlM›'ÇïÕØ™gÅÄbh zruö-ÛÎ $àgqyt)ååci–{Ðð6ç¶„à"òvDHf{×£Œ:¥A°”B8ɦÃ?ÖÀˆ_E'ÿÕ±êzÎhƒÞ]Ü6$ºkÝcD‹ÙlE,ËQIYÁ4Bí(úœ!¿Éƒr¼Ié­ýîÆ¤9U~>Öw°©¬Z#• “-¦{IJA6¤¿ºòP!ýˆMzëa¶+ˆ¾¥–ŠÙ´k·´á—*ëHQÈh=ò… øb4 z%m$=ŽO¹©@×µE°Ô3Èð´JèþïˆÄtlAˆ¥ "C:` m{]Žº,¯”Ïw¯7 Òk«Døù 8¡wÆÀýH-¢ëV› ËwîlØT‰Xn¾Û†Ø“az£ ÍÌ™ì=Û+‡ÜyéQ¾Ñxç>ˆ‹³æîñM¡RïýþÈ’ZFaG£ÝÝx:Oa“ÇÙiC Y@—o÷`ÑôØe‹ÿ¿•¢˜O­YW±ë’LÈâ›ïYˆ}IHZ8ñÍôD¨ßÏ8¬7zÁÿ6Äɉ»RþÙL·Š€$ºût:;?Àƒ{×(/Tc×¥åX—5Oý ™Òòoðÿmªý¾qrb #Õ'c+‚=øÚ,õ‹cû{v¢°ã‚\."‡ ëÁ˜öÝç™—ƒ^ü„ tÏÿo ˜¹ B~|º¥*Ò5°Õœêmì²nÀ2O|‹ãŽc³KØ4P¶ì Ñ‚£ÎyÀ÷‚±6pÅõ£·Øj‹@izh5æ/‰<\žEQ>ãS-6»D„a/ž±ñ8R‚é‡F8òòè—ËçˆÒløÃ9¼â ƒ‹¶SƒÖy;c•ïÖð ÊWq„gWl¡•Ž¿9±2 &ÞÑvµíè%ÏÛŽ$ÏùéàËSE$ì64™#y‚ÔCì-h[¥b{õwO‹€\šöšàÔb)†PWˆH&ŒÙ*„ê¸J1ç Íð,E¼õŽaðlÿ"H'ú’CŒXIÉK†­œ^þ‡øñ“žJ8ÌÊhVc’¥–‘àd7‰VÄIÕœ’^ƒ'þGÊþì9©{×A‘užNÝà°ø+w/ñ#ínŸJ ©tÒ-¼ÕA×Ñé™f¹O²¸÷FO z h¸6a+@þâÃ)ß&d/÷“( SºRÏŒeÚšÊØŒ_#[S-3ºš w®ž9­6ŸÐEÁt p¿šôbG?¸x1þ]{¤òK^¬2U|Ó†ˆºü¶U…Õ<€¸„¨%Ë£´Eº•‡(·¸ˆ£fRX©DÖ^ ñ_Ê+[Ûöý÷ú…É]¹Ñ×z×—^¨±% Šëy#H¶1ϼÀRúV‚D¨@?U–zy¼ÆeeD3ž  ¾$=É˯»üܼZô–Òž?5ñ¦£JqZ¤¥kŒõd!r3r¤æJž½IQ6ÏUÐ_L©PšÈ?nÏ€ƒ H{ú—è °(# "°|Dºqq³`£Uéjâó³ø¬mkþ5óÕ½k^¯iVÀ9xož!«W‹ÑÏ`|¶©Ñ>G@Fóâð˜•`Ri ~ìöƒß~¤Aâ¶»»×K²Ÿ®©vdr_ÖyK7Î} PbÖžìÝ1€Èß_šÆØ>é?( ¨|`¨{€²#V%äXÉ0ñq0›òwâ÷y Ñ­ÎïféÈï3f¨c•Ër¬¶2pl,»ZÖRûbK2-.ô`?‘ÝÉä%ëVFþž8”“9˜Ì½'ºæµ½O#¶ù8Y¯³V fMm³íÒË_”§/þòê¾¢öÆÇBvþ5ßÉÍ•Y ØÖ§¶ÔIVÇiÙéìsýPT[„fí©^¸ú‹mÕ GVfUõoËJ8ZÝëÞla]?O _K,w=¯+]sŽþŠâ“©éé¢e÷ê½LIM-¿§¼Û¾¸ã|Ó£ø0r/ÈBPË¿¤Ÿ?•VtNnÞÀ¸ŸÀôO¢r–/3¤y‡_{ü#;kx{@]ÕØÞªþLaímwjYKg?âüÜþó xižÁÓžu4PKíåKó¤N@ÊÍwZò¯WâwƒŸ$ú4 (¬”–ͦî;Tuî|˜6ß[TYõ‡Hß#Ùc~gÉr…´ïãÅÃõË²Ä Mì5dºM-¨†I¡û,4eŒÞÇ4 '=-U¿¢ TÆ—,”ÇÎæó'°üÒ BÝ@§©’Á¯¹ ÙV@›â²é“³©¸¤YhR|’äÅdž— iK9,å{õ‘¬}‰ ªüûËût…ô¨?,RÂ$¨ÑNâe·‹SuQÙöO‡¶‡‰86ònè-š‹Ýœ>‹ä‹ ?d í³µú"GcV›*? SaYËÿ°­Œ·N¨êÃm€äU+M,–‰õ‡‘W '`¤É ¢uÈ؈r „ô<‘¿må ut!¨Èâ6RUÒZ|鄘§Ï•ƒ©k˜9U¦x1±èvtéÂeåÜÿ;¤Ã¢"ÃÎÓ71üŒ1à›ÖÅ,æŽS§¢\¸{KRŸ€$¥ûÔy;áCN„Ÿg$v‡Ò&XìÛN`“†Ëz]t²zú_üú l€^ÏKZ¨ ˜â©ÝÌÛË-M´^ÈZBЛ%LëÔ¹Ù•5™+%‡ôÀ Åqívœѻ7¨xì?vš–ÇV@kŒU>¶éÃ^T}GX¿Þ0¢÷ì{ÌÆšÆ!Ecêkaüd]ÞTÊžñIfMÞ¯AÃëZþ\¤kÚpµ-ÐæÂ)°òÐK‘¶’r1i³ áR>^ÏzR‚M`¦»9æ#JÊ/_1gêú-œì¸úN2ý"+•Ÿîp*x ™K6 Zrna-æñ:Ì  Î>eHtP‹i/ë‘Sº£w/Ãø—×/îÜ·@2Ìr[ ¾Òq]¼^öNŸùÖ‘àG·ü× ölGàp?^lÓvMUÞ‰àǨòÚ ›Æ§¯Ùh‹úºgí.‰À ÀzlFübe>qfñ“½ÅOæKÍ ŽVF 2µ´‰j e!çÙ#Ýçû„ç€ËÃE~†ß‰ìé"IÌK⤔Ÿ)q{wC›úÿú8ð°¢ï1½,ÉR*°ëBØ-{‹¥ä¢Ñ“h¡SöJˆÎCz•£¹aífkä¾>õD`憭Ïÿúÿ§s¾N`òÒn‡1…‚€"ÿùXA ¿_¹cßWˆ™oa ƒG#Öþ6BÈ^-š>®o~YjÕ4Ú>Ex.^›ÑµÉ—ÓÆ»I,–å=4½öéÚð,+~™[©7¨«y7›n”–€ú·'‘vIÔ• ì`À©.Ëè¨1ø½óDÖFžŒù¯Ä$ 6û="ûãºOXš4Vð2–cW¼–Gk¸_Êý¿ãး¿²¼h+o㌘ë½K}¡ÙySf#ÈŸ•æož`æ-}œóM%(XjêNÀ¬êì‰Ö}Ëù¡´Ê?|f¸ÙC“ÿé~`à v.(MÓ@[Vk¨Àê“=™ÏŸ:×§rI0 „ù]àÚp=?Sy&ÌFj‘ƒ–°›ç7Õ>im*³ãŒ­7³ +”á‚wÝÃZSPym¶S w’õ™:èÓMa¦ viËäÑFmqéD.KK‚!qvÃg–¦A•Òª9xgø „ØÝ°dà‡8ß¾4y ƒÇlJºhl¬ú®ÎÍhwRWžl H>Ïë·<è} —¯Ó¶&¤T,ÆôŒ3ºfNª‰#«û‘ñ„E„G94&Z‰–¾hûjùIX7G‚‘¬žì]¡)¨v5ñÉš[ÈkÞX$2_̿£Ž¾œÙ(YO¿ô³¸qÈ<‚2mÎOU,Áñ7™OlŽ€9£t“Të+ÿ/­Ù=~rÖ#è]2Gšb%¼l{dÀ b ÎMž›ùáh2fôr—ƒ¡Tß —{QŸeiœ²Nd"11ƒÔ~tºÐq9k;KúÈôåÐÞ:¤f.;)¡©èÊ*kª A« ]Tïêó¥Å(ÛkŸ'9)3ŒÒƒGÃZxý¶x›Üä‚ Z}‰uuØp 8jà “âì#’þìš(î*ã5QøäÕ¤y âqI±Ííd\ˆ…öN(xÛŠ®¦6n ±Æ’ñ´Ý+¿ùU —r¨° †`(G1p3=cs§T•¼Ý‚;›º¤GeÖ5F™Z>™(Ø´êÉ[€Ö·›QôV’gìUñw´ª7RÐh¸ë\ME­æ¨RJ¤JA=@¹Ë_­ûÃ@à§ïGÒv}íÎ>1Ç*†ˆØÌœC‰týÏë³›1mUXÛhÂ6| á2‘AIFã.Ïa÷Zqä¾.‹•+zxÉËÞ†'Îâµ`ä\³%²†uq†˜¤°9_z«Aê—‰Ô¨Ct¿ðG§ô›"±W*T¡6ñvÑ„ú}¹a¯–Ø>æ Ö&‡]*¸ê­Ÿñ“Çáo¶m½è<ˆëP2 O¨‹ª!ÿ<^_9ŒÆùWΘ’koáH–MkÍ…Ü ÿ'H«(0ŽQ.¯Üv/þô¡óKÿV𨴩sD‡×ó‹¿?ÿüA?ä×|H›ûb-•§ó6: cÃ?G¾º„µÅ‘Ú_}³uI‡ƒ ñ„—?¼©•ÚVÙÁcëÖ‹ÿÉ>۽ɜ.v¹ìv׫ŸlŽÌºœƒóüdI®|ÌÏšö(wÄ;9Æà¢º ö÷Lýü'û†­fòNþ Ni1IPúëœÏÿ« ž˜N3B¼ªÅIã „çàçÈó™àÆyOŒ‘µød¡n5Àõææ"Ëu)ÞÆJE¡„æåßòŠâÁðbn¤j]ÒÃ{ep­!o¼|®[B0 (ü÷æ˜ïŒ¨|˜C¦SŸÃMÈ™õÈßò#šéã{>w‚ôJ2æ„YÒ>Ôh!{0šÅ¸ H d°}…]Ñ@¢pˆOªÅñÄ'&Tö?jY!°¬†›‚2óÞÖ nMV»)U¶¸Øs‰›ZwôÍ+ToǹÊe_½5(ªÝ”×e%?et4õ]Æ/‡Â),~ÛÞš‘-È¿"õ¼“ÿf^ø«éå)ò$Ë¢,‘¡©¦ÇçT•Z%m©¤„ɽí¬#½]i³>ÿàë¾étG†2S¥K2hðôEÆeûÀ§>û¤ý®2Œ‹U¢=ï˜ôâÜýòW AÙ]SçŸâTó¨·¯ÿQOi$î8ˆ÷m7 p9+éͨÄPƒrȾ;i–Pµ,Xw*GHÅ#ˆÔ5U€nÂn{*u£ŸÞÅÕ` bÃ+оìÔ €ž!·éòÓúXеNC2[(ÞÆ@ÝÙùô´¥¥±ç˔ܜd¸ü¥â8Ü69ÛPhPÑnšTNàsâã<ŸÿÒ¦áûKî£eŒÃ ‹°4A>±­Q&m›ŽíNxD&§ºã"?sœ¬ÐjiiÉ ´^u€ ³)sË´äЃ™2 ´¼}ÇWZÚ®û¨²`†|ÂIÞdŒ©û¤,@³SûiÚãQß$St䫸äûóê3 ÷GR\4ßs (rÕ[œ]š¹Í[N¼¯œ‹ÁÄwA€»f˜^õbž§TÖMÆlçä§?•ÞÅd²W¹‘~¯™¨§Hâ„…ñk×mÎ>%Å•Ea¿¹ºé½ˆãŽúWF?Ÿ1EMW¿¬2ž¬Øÿøß`ùɱ Ý¡&é¸õÈcœVóm%U´Y\dö0¨×IÜhîßXÁé¦ûsG~ª×fÎgac"òGÕ‰EŠDŒ"€»ÿd޳OAqe˜ÅÑÄÚùó‚Êî¹JX(”Öo5=ÞˆÀQb'8æåTó£À“rd¬ø»TDQ!ÁÆšÿ‡©Q¦£#hRÙboW¥¯ s'ô!åàN›ûû´æ ÛI@îHBÚ×ÄJãA,È€jXͽƒ×ü­MSú=Z]¡r±azÒâÊ‹Ê Ã¡3®Œ¤ ‚B— ³¹> Õ4'®Ãªß\ÀëeV`´‰Ì”3ê!¡1)UÇJ;|2Sƒ;aëNÛÎ&_öŒ¥/iK¨“ïâjÆøËÁœBj‚@>'sD(âÔ)øË̵š”­_„2lXD¸­{:ˆ˜ÆÕå/‡¿Xû±'ô<ƒŽ±ë Ãi ?®$ýoO'84µ i {°)sˆ¹V=I’D~O$ÐA^µX2‡I7²›Ó•ÿÅ¡4V .à=zòŠõÅgø´¦ò¦òÖ:4uß&Ò–¼¶â£Úã¸2ÝEº@no² à#“‚÷¥kùµV«b¼³«Ë¶·N ™YcìE£Å*€?©CfÔºu²à—DþSÝ¡û­`ïqÅ»«µå”!_$Bª‰úu>‹Mª;hÚ@Ù`ý*_ˆÚHªo^F+:Ÿ†Q4õO,ï¯mè'ü´A_8ØÁN²BµíV÷äðîOFެ&áØ]CØ{{†P¨à"ˆÝ=„4WÛœ5-ò$!HÞ~ªãføóž?h·-Œ¸ìVròd—ýDgõã*û[Hm» nV$Ê‚ó3£Û²8¬n9Ç“ßDVœ„Q¼=ªš&| ôQ_òA±ùRÞªô=ž÷'Mòt›þÂç»køÿ(q\ñ³)(ñÛÙÙèóðÕèC8Þ!4ûž{Hÿý-”òÛ_7ê^,g5Šý–óÑóÙÈþ]½'"/=aǪ˜«–ûŒ}êìƒØÎuŸ‡îqšŸØõRãçK>²‹1E¹6ó=û6çø ”hD#ùî@ó{œd°w×Iä*µŸ‰çͲ_J¹ÍMµsšhJ»€WD݆Ë:ÒÛ{¿·7*‹{“!YÔ…ûŒè¤6zëá ,wr!ÿ¿¨ŸœïÜÄÿ‘ßú5ÎDA–ÏòOe<˜BÍà%2ð  “¸™ñSÃH2IF¢îE6üäæ#Ê+bЮ”ãƒìèþŠob‰ˆp6×§þJt ÒÞ\¯1æåÔèŸìŸGoØm}!\Vlg¯$®òû®µ–µƒp­ÕPvï`Gç¹ŽŽ“1;eï³fN'brpÇëGSMC7¿ïûGñ›¢Ÿ Pÿ¦J>àyO©’§¯c*¸® ¾ŒÅÄ -R"ìãÏZÅ}u~u2:Îj OþÌð´äx»Ÿ._ ßÉÄi|‰˜KH3›Í#»ºøÎž§½eP¿ðÒΑ_¦?6Ïw} Ô¸Þ¯8µëÏ!¢™Ì ºò“Lá]Š:‚ ÷\p†mSgËIËú#_qFæìGjŽD*r‡I brùGòûKõíQéòõ ùFrý§Ö&ö ò?uåþäûõÿÕsußú<ý.4ÑŒiÇ&.v2ï»ÒJ¬ÂL ÌŸ´7ÅtQ<ÚV-'$‘q#Ê©‰+PúþlWžZ^ A oúa4Iì‹^Bófó¬_ƒIí<ªOÂ}DH$çxW8>kîyúè\^lâñ”/ÓB~º˜¸ D±ØQWò×ÌÅ}‹ÑÝ(„í«ÆàÃ>ØáÇž¡%âüÙ!é¡u‡³¢²…g$bá/b÷*¯öÎû5”@Ä\hó >öŽŽûÛŸµXñ›B„ÁÜAL9­Ü¦<¸°~;r …:Ÿ…çÎRÜcÑ \ g²]…áN^“CÜBä›û«pA°ÎšsCše̼#ÏÌÌøYžiÈþY–•Gäܤˆoa¹·(â›Y1C٫𼨗-–“½Šßÿ¾ï#Cè­Â5,Çf4*ˆ5í¹¬¢?+¶¨½ç®ø±ãÚ±®…_°Q`LuJ,Ù>Ú/+ Ïró«4íÄsÕòŠÛÞè4aj¹f'¦RC&ûŽÍj. x%زѸS~Y6Föa\gf~Pg Œ£.Ÿú®-âT_òd©Ç¡ŠDàŠ;‡Œ %ýK¨Ü7ͱ’‰ ÂÄÓÅ@äïƒkUÊÄ¢æ¿]²à>RE({¾àˆ÷B ߆[ØÂt¨דÊýr¹_©2ø‚¥2Ã'·T) ~¡¼‹Ì”³»<3‘3%ìÜ®h¿²ã·KZ¤áÂûÁŽª€×8C›bŽÒÔ¹¿V`Õ~¯~m†9NSæ¼Ü"Xrè;<=ä˜bí%Ôl²hÅXI¬¡.lÉÎäÔþ%j6Y<ˆb¬" Ö˜@ë™×z ÕÒ_X ŽâÕ4InºWH¢³¢j™¤5èÜs¹}2nI²¢ˆËs²YnJÓ‹·fÄé~f>çi H³?ô †uÜVRvT% ¨z„ó8úÞ¸:Gá±ÛBH®1Àùyzs·ÏåT´’ZwAÝ9?.?NãŒèö,šámò“«æ¢ ÍΕ}ï¢^­ÞÜ€ÝVá^t¾¨Ð‘ÞJ ÀÃg²Ï=}©ÂwWpæS!uÑ_lÜ=¼sýŸÈ"#cXj®uu]ØYGé\íîèê !ñWç…E—]Ó3iܼëT$¦o²ozwºµ’dx õêìNÇ.V϶(Ëg\aÞzššâÄÓlü ç&ŒYÛpêá¬}³ü³ŸL’èßwåYÅ;ÇIJÑ5\R=f—Ãá6q.4ƺ̚䕢”ë—ÔüR·f a7»=y;­;÷µgnL†9ŸÀ'¶ätó¯ˆi;Ñ|œˆº Ã}Ç«ñ™'Ñr|›8à6ctßX5H¡øè¢ìQµš ¯?ÂáNÔíÛ¦Ž„ù£¡ÔÀŽPíÀ.àµ/̪âðý{¿ž¸‰´Ç®PýüNË€1+“—~Ã#)óœ6ýT“Q¥Ï-8x\²Ó†ã0åhbU+ïßs‹ ŸRßËUiÔF¼.ÎLº¦¾Êp/¥nþF°n´“CŒ|ö}L[¬žØ×l›Ù0Èè2.°OoÐóEÎy\žè²È_DÆýQ÷ð~îííIÏ…™SÍ2I/Æù/ØÉ­Àb±î©ãºÎ£Éœ5wêN3ݘÓÏÄhÊ9Xæ¡äÁqÊësЦù~¢4™ `¬¾k~–H/J•šà›š¹qðdiºH?ãö¹žQV£§âM›ž' ut»Û’ì{6Ÿ-fI%=‹žFÀ ò»]$&‘ªI•yD2Œ^9>òäcé«.]Nô‰çq˽Do,}—ˆ· ±Ô€‰PL <7 ˆac׺eÅóó(';Ú³Õ­²Ûx)&ׇ4‹‡§ñ÷þQRˆ&ÆÔ8ez­÷#Ÿ¿?Pq(푬ÿ Fm•zz=~f-ìGÌ-*.'ê$7&±ÜSЄl„UˆñPåØ?Ò,™Æµþ›ø“cÀLZsfºfôiH×MBôX$¸#U%é%ŸÇŽ”ÎÛVÛGÄÊY30®„;F°N/‘ˆ82ö¿ï«y#1à6EãCE©™w*õ\:-Y´ó&lŠx¦Йíö/E”ãI\Ε3Œ.öÌ®k=/!G½3-5ýU…Á|ä,À˜ó¿F‡íW²$b›šï[drFG}Uru’Ruó¾gb’ _\¨!"Lù†–&úøg;ö^–¸‘Å`+¾áþ'З£ãF¢o¸ÇsøodÇ£&, ÊúàVühJK}§¤Or<ÁŒL0‰M%QöLwö\mE$ôLmՕŰ©c``+qÆêªÊIoKÏ.·}]‹ç¯$dÛ±É_¨¶³K:¶nö›¬ÜLÆT/ ÏÕ»Â?è‹ÅÈÓO(Ô{I¢‹ÄؘaG.Q„W(q¿Ÿ ÂólØôÄá0Xdâz ým8´[‰BR8ÕH³ e[E˜‰¬ãÿÏç:n˜Ì€åRkQ¿üWŠ?|Œ(IRI'Róêq¢K} g´´,Dû/C{ÛŠožxÄÎàïK²³«ÂîH•Ó¢jqSQ(z£‡M:ÔíSÕ+È*ªÅñu8,¡£¼”°áw6¹’eᔳÔþ¿¸6‚âû/¨¢±pEF- XvS5º¦Ÿ’ª|þ¦CAuº¨§³šâ|±6n2™¶ÏOH&B#Ë&bû´åÈIˆÞÒýü;”Û-þ J}bÜêaÍ{Í¢ýsüݳéÈ¢ _Ï Ð˜M&rï¨Ø©sG20"á`jÊtõGÑ„f®¦“C¯Á89¶@Òè”~†u†^‡LÚ#š²åx9ŒÜ]ß鹞ÚÑXgBS>Õð­ë$‡[7t~ØPx·\þÙU¨ëÀ?òR烯vÎë[˜‘ƒmÑïdp=µ…ÞL7Si®ØW9²n mqÏꚘ¤òŒ¯;¾´R=© ãrý•ª3mÛªO”õ’»x sœuúWÉ•ɳ;ý¤/˜ïÉ -»@¡ñƤ–Ö J’ÒêÉ!ZûESÆ¢‡³-—,ê  uë ý«æ}z`ÔÔÝÖ³ßbÊÇq¥ÑßlÎV‡mîÌ2í”´B°!Íð›…àw Nš“üj"¿ß¯Åô*IÑ­³J‰mmUÖeà;u™é9Xê¹ÀYM‹¾šJ°-æ¡øЇߗñ–™s’îØºÂ©nÕ³¨YÃ\Ã&ÆDd‡Ä6!¡øoFÞßOy2 Q3¡\8iPܰ"›ÉýÌ ²¼GOÇ|†ø}o‚~¼]S©VÝÞßD\Š»ºÅ½g–ÉŠ)¬‘}ªÎÎþÇŠ0çcÛ~¿rîÀÕëóà³è-–†·»W,ëæO Ñ#+ýËú„sBÄo2 Æ €æõÕ°7ÎJ:+#¡mÛæücE•Z“£ÿ%ªÆš»„Úgý0°òâ³å»EôM[ºzºêOÌæöôn* m¼» ?ùì ?ɱpûa³«­oL`q[ûrgÃ}Ç— åv»#O×sma'“}Y´õó0$ålbÌ¢š^Ë¿™Ðô›&+ :¸a:~U¹Fÿç’-™/}»üŠãÔ†@k„dÕ’ã~iÂÓ5€J%¯&Çȃtb?œ”yáí†ѬwxU"¦5lÞê¸459O£–?&øWÝ€B.t€±1Îè3Šc_{ž=j»*²™pŸ½®]ßλæSö˰ÉVà £E¦üøn ß0Úû/;Õ— Agnx®mûP—œ,êê¶„Ö¼ÊÈë¶6 Ì[7Eq|®üÿ 鸢?ý$øbœ%@ìß[AÔÎÊÍÁ,eý~ÿOß6tc˜U¥eˆŸ7ûæþõY@ÒéecÅhú}>1¾”;‚­¢xäóbáýƒéÔ¦è.[°}Õš¸­Y¼¾–¾¶ûE£¦áÝ›Ä,ûEÏ|Ħ÷QV¶—;Ö4Œx=£€ÔмcÌ›w;…5AˆÖÛOÈß?5ˆG³ü {¥~Γï={íé;Ü·‡.¾GDXÉ­ûŸ1¤ÄÓzMà$–'áµ=ˆ}b”‹SGò§ôƤ¬eõçÚž5½.Ι½Ã‰ñ ˆ®Ê,åp:w,‰2fÑLW¦G¤FQªåîYœYA™Ñ!í)Ê5µ Pžy÷ä$¹ Ùò˜B”qÆ-–ÅŸ°IaF¼¼ÅŒfÉdä1-ˆ(ç|ÒÑ‘¬Œžøqž ˜¬žÒBua¨Ó(b#1/b@3I¤œþ'ŸR¤æáìÒ²z{Qê-ó\Õ^F¬1Ìf‹¼1f•—˜b|LtU½^Ùf±Äˆi[ËB<&6Ù[/¥][µØ= šY´Z嬂yªÀüùCÚrßn:Y´ÄPŸ•CI‚:CC¤Â†{eã—Óû–ªÐ˜ =©B‹è7T~¬Ë²ò‹º.Tµþà-iî$y}My^æÍ¼‹Ìå:d°¨•ñKp'|„²^I€ ß8{N.½7;7Wò¶„žWHÉ/@¯ïÖ‹½ æâ2*Y¹„úìó°2N*d…6Û ðaö†E*í)ø6B4È‘V¶w-%ka]¡Géµf¦àYlN4“š®X†(^§fnv39+'#8½ø•Ç¢ÎN¤¢§»àHÄ$_:ðä6sÌ[–{}IÒNMk/}„¶$üpÈ¿žÃáT­êP–CŠ v‹³—¥–ØXXRÙôYÁfÜ+1/¸ƒ/H÷úo1¥…m¢Ä÷³\cGkB÷ÈsrÏ8n†5GŒRw[i Ì+¿¨/lK5ü¤ïRA‹GëïkýHv§ÃÜq^‡M½¶|™:ªG’ÿ%¥Å¢ˆ0xýðòÜL}:QÝÜaÎ’E aØ©sbÊ¡Ò}ŽÊ\h"7Ì/N%ˆÆ{U¯tO†*êwq¡Vx›L·{®¢uvh+Rs›»øÜ—AƧ.î¯#h`ƒo¨©úJœš{év®#ilÖaŽ61΃¦¸'‹…á€CÕÕÀßiÝ…axáàK×t»£ßi&±a%ÚºþW_RKˆË4÷Œ~ik€d¼ YUKp1’³ h£Ô¬»DÿŽeƒ¶®¥Šv;i®oÜëôæ }MŸ™bºRhh cúU¼Ó}9?š”Á<] 64pVïx¾ûŠbTtž÷ÆetÿtSEР;Kdh›/ç<qÄá6ÚV¿Œb§4ûzðŠF²34ïòFæ]¤¬¿}<5õ5~„×Û}¥;½òɺÙy91ñ£Ÿa¥deU•œÀS(*b||Æ?}j |P.Ñ™[û—&Ö^Àª0^º+®Y:<¢ùRAßÙZ:ÿsøW3¿ª¼ 9¥¢óL*“¯²ò’™B»‚yŽäçy.æ/²¡¶}}©¶ºNx„Mx{}‡‡C[8šS©ú‚4ÙIÎ×¥ê‘ ‰¸ ¥F‰ñúx(Ì›PïEK{“9„i Zú¨X„{l$kõò)¨§îO›€gièìÞqȉÖ¸ñ Ÿwʪ™”rÍ»Tå,+£#O$^š’5HçZ‡}˜ Ìo_µje¤e™îЈ¥!ÑÜÉël[»EiãF¬àPývÛX©ãƒ½Œ¿óaðíGT4(•è&ŸÒcþ.ãëÑ>ÁUé&Õ§ ;Óe™ yŸeV…Ä”—-\.j@„ê2ª€eµ&exÁ¶ý6uʯ×/=œÙ£:!„ë+3òE_lB¶a&£ç< v.!a}&¦iAC~ÌØLc_‘ q1e"%Ü-=¤ÏD-öVæYHz~ ¦DFºJjjRņ4ÿ?dS_ú~jÚP¿K‰6F l)¤b“Þ1ÛPbébuîV3_6#Óô—hm^18Åd,ÿ8"5üHˆ^º‰ìˆ¯ñAO«î@®øº—l]•˜8¬qÚÒmV‹¶\^ ô1݉ øË%E%º?JjnéHŒEÌs‰‹!daL´`ô¼£\Ï8úFï›Iáîtr­æPÚWFë˘a%·¹Ÿº¿(à1¸lè„l‹‹Û3ÙöϾ„·¹ÛV"0a±)ŸnNÑb›AóúÈ‹ššúO¶]ÖÒ}ùXÚvýþ¯¢ÙXßæ¢weYgLiiJɡޯ{¡kÏPÌö)Â?P¬›¤œ+êZgLiiJÉ¡Þá.)¦0ðè5¬y3Р•°ù­ªçn&sþ ~hñ(*žeõrM£=BV1:9¿kS£Ñˆ<hqy\Ö`ÔŨ®"[üá€ÅcÖªfG zE}›©0¡Þ®Uþæ²Æ¶ÚDï.I1†-¢¡ÜG§kFW)+úiÀCrvE­î¨Ä^z||¶I8¿Î7”w"öP´ùH2ñŸÏ%»’C?fÞ\½…å×ýúŒ£ùp]F͇`á»®­“)&Ì,2 _žà ·Æz/Ö9i ©ÆZ¿Õ¯Wý ÐóžwûÎÖƒª×7îªø]xé«kˆ|¢†ÝÂäpƒÝ±6öø­kdˆïp½žÚy Uç:ûÕ©>^þ0Û˜cï‘ySAõÀkÌb ,I¡¸y2ó™Õó‰:H»PW=~n÷ãH{·MÁbm·†é9-“4b©7› )¨Ç Þœfø¾ýBŒ Cáfkj 7š—Šð©ÚÐL£ªËPÙÞ¥>#@W+nMÜbc±Þ¿ æ5¢{àTä‡Q[)O˜¡w)Y,’´Mä`ˆù°úy؉Ôù‚dÞGT~.Ãn?™.˦½P«ã%Q9ÙPEqçeu šÍ÷Ô€ä^p £ë{TÀ˜‘¤ù½Iè H HL­6¥ ©1;5™ñðÚ¸Ã8b ªK†°£§_?ÁÞ™¤Òލý<¨@{pÌË®t£«z©c?Ü3nÒÀoQäÁ’¦4"VºÐ,+ò¿ì^K^¥qÖ™#ß—emɺQxc^ÖÖOÑ%s·q£ÃmŽ6#y4»(¾wRÕØÕÞÕ­1Ó*VT¹†iŸí¿B‹®×…ľd9íLy}30¥Z“7¥\mœZ¬uøžÝ~ 8ô»³˨ûeã!g[ª»[WÈÕ)US—fVsPõß}ßÉ„ë§Ï2âó¬kJâ:W["jS1™G¸‹ M †NmÙ?´%wýêàLFÐÀú€;´aß—À÷þð®À ñ"Γ‹W›ÁÿñÌécQFý¸s<ÅýnÀõ5°pFELÀC›C3p¥ûv—ßj™kÛ«÷ÍP³©Îü „=–>æ6}Õœô™q4÷Ó~aÌø4wÙ1î;<ï–óÏ;wŽpn’ÃÓŒ²(ZØ4­ü±é™Ð—ý3¹ÈÛê.íHa›zu|Tî‚[ZýÅX'ebW“«à@ÎbSf0qr£Ê]pMÅZL*{éºæl:¡HZ¥­>ïnöÄØ­ê­¢YßG7¿ž=—•NY¢k´2æ[¶F¢ÂÏXŸ°É<Ä\›ÈKOOÙ&§Rè}ðx#èL`÷O&,Ü€»þÄ\¸#ö –W‚<°¡$ªào}öwæÖsGu‡î¾à 6äzN IL…ÔÊïì4u‰žÞè_L‰ÏK ØhúO+°Ž×=˜gwð’¼ÛE‡ÜÒ!õŠÉ†Û%zg'<"òâŒRŠo«•:!pÐZëÕIßúgúhnš¦L±&žˆ_ø ×WX^é@uX¯TX.¤gd¤›„¨”ï6ÈLRçëëWÿ Ø‡±¬õß{}Ž6ûZ´"KÖÃ’ŽÃf‡³·© Á2»`é¢j?ô¹‚¸dèã7nù{ì:µz£fÖ3yÕ fµzyìïÝÔ´>$Â&ª‹C<3ö²\5?Õãñ唽?æC?z9v ­Z*Lå—‚‡ô‘†QçÀµÍÇ$ˆ~à,;ƒq=¿y§ÈSŒ »’:Ncpb£ä«×Ì!ýüUÔó×¥…s¶19Ê–J|ö¹,¿öíu‹J¾u«íÜ<Õ„ÖG‘Ÿ2øSRN]•¬Â.&ùX§ÏEJòŠèD2)i$þ(L¥Šy¾hîÎH$Co“ÀD£Ðê&Yís„Jy4¶ÃËç<Ç0±¸X?GVäˆÒ”Œ)Û¨ô;ìV¯º«Rî¤~T7D¤îUQ?l'tµÌ°u\Îy© Æ•ó©!Rã§Nî#µN°Û®h„„ž*Lw ‘ú8P”øÖ!õ&K&{EÄîC¾êXŽ›:Œ>Iöž¤°Íò7´çô;rhµ={O@4}8¦J+Wë1e?¥¿$ìOÀþÀÁzw{?èEhãQGÊ)K°¿²“FN`ï¥Øû£2¿¹L‘²xéW®àGÒn›1¬ólˆ–ÜTÒ¢4N* V™1Ãnu#ZúWŽ®oýÜ,òµNŸD›YžšQÝÃÉÆ\¸&êÿ®åÈÙ­»Ž %áþ2Žh W< Å Äìò ¨ržò-=ßN} )´U_cÇuùÓq±vÿ¶˜Ae$‘ó}–¢‡?ôŽ$±B¤ÅVž˜Ž­©¹RÇ`…Ð(øÛ.ÄNÿ®AÆ5J¨ô¯õ§É®­©+k…RÿìhºXðÒwlf+Ï(­¹ßÚî+ä)s$ÿ‚yX‰:•檶}Wó°V7¼¾eÐÉ;u8š<±r*žæÜܾêÓlm)ç–è¡`‘Œ^vqŒ=ɳ=©7EÿQB¶ôÊã#æn·ã«@Àï¡I¼‘nþûàî3m¾øÕšºÈ~ô¹~‚Œ)“´³}ÔOo tJîœ=&­néV\ãæ>sXCæ-–OC±¨Ç3Þ@$,ñ‘.E;ãDœŸ‹ÿaOínø†()>¹NÁß‚ÓTW'ž âD´ú?g_J Mý†òF 9»¹³Ì†ÙïJ•7¾&ªvñª±-lŠñN”ˆ ÁéiÀ‚ÈÃ(Ñ£ ììFÎî åd\v1›p™TýcPJ+·<1NÁ,gÊ™±G_Ó1÷ê*·/z¤lÓ²( )ÙÔ3PÆŒ™€ÍeE¹!l¸æÆ^VÚ6–ìKŽF´ZÎn%Q(/ðìñ^7ÂódÕÄŸàq®UûÜ#kØœ03›BÆOc¹w6ñu½ýïÊÔ׸”(Že“¢8sty›4H¿?zí|ø‰ $£Þ_–{mדÔÕ »d40Ù lRaÉI6È?Ô«ïë³÷+Þá2Ã#R›òŠÁn»ƒ9uV(&§E"g! êÇŠ"‰Ñ§êËÒÿô@¬iË®ˆÖù p»;ÂXKÇ#»Ù¡SZm;#æ1±“ˆ¡½ Gû‚Ëþ˜¥–ßâ©s?sÏòìH•^’Šâ‚¿ð¼_zÃiYúY™á†X'Ü#ðžã †›RýYVëÅ¥ô1$ADg‘èŸn”í ‘|+Ì*A¤bzVª°ÔðU„ûDhP;-a@ƒšé̩޻‹Ã¿4@_o*q¤¯ùsÆáG×Fœi3–€òXg³’Åç˺^#¡úÌwi©Š&‚1?Z5‘­ÿuë"8Ø­bÈÕQ >„6Âow„Š"¸äºjyβ‚³þ©&Ü­IDÑ*QòSù»²ÉHn‘3_¯Ó,ÍžÙΊÅL?ù~_Ïñ ÎlÌ”ùتÏë·(ÉéÂaõìåûpðP V§yã/³1?ûåùi·ˆ™{eó5ôþŒÃ„-°ÝXz'·Ì×_Ü+ŒÄ‡ÙZ½Û¤;¸Cõô28CÏ î`OÞÃymqËÛªxlž°Ää¾0l•Þ,#K iݽˠòáO˜EjKâØê×.Ú°ˆ8K"Ð{ß37­Ù¹®°Ü=3ùUá»×™.—æÒ }„LRמúí.ë¨gˆá¤-å Eè«öô.¸ëfŠ;Še¸æí³ ¤ÕE7CI0¢æ¾ 'y'»v]-^Ã!—ÄЛ ZÿÁ¿?qÈ-t)!Æ’3gŸÞó7iŽfx7ëq &3‰ö/𠶬Ĩõô[?gB©ÃIµÞMaâŠÜÍíf¤ÐAÚPQ¤¸uŒ3q¾y;cY}híÄéD‰ÉÞd7ûñ`SˆOmÔé\!þ6y9”\Â#.Èè!ÁöŸƒÙ…M^^”Ù¼"Í'‚šý;“ÛÍi˜YâóB]õç_ms3»çsŒ#§õ~‹Lnk1__“}ÇZ´h½R̪[ç›Ïb38?Þ.?;91Ví“Ùýð§-`‹”þ•Œ¯‹›íËsÍþeo1~†0¶›BÏ©GvAl¿SÊ£»h LOÀ–Vÿ/“Ž…«úKÐ8Ü0“F –ÿí²•åê|ÄM¯EÞ9ÿºÅïîuÒÖ‰[péͨzÁj%Jz8šâaý)OØ7|ÓU"íÊZˆäuó©Nµr!b'5Äã)Å{ÖQ}zmOýÃŽ'A4 e.ëB2Û(ÉíHKuÚw¨bÛÝ`yC×çÁ²5˜¼ß¶àû 3ýMqi–ݰI-'0ßYX ëIb—›ÝÄÊcÔÝ4þ×yì²q;›¾pêУÿ¯´â}ŒD õv“ËyÄb^[:÷f»6b¦õÌ×$à¶€1¿.$€Å °îm´w8Ä^Š3¼¼ß1)\~—'éKTÕ–¹kºÌµ£bå†ù.ÙĪÊ͸±&®/ΊZ2ŒíN—›TÌs·J˜\¬æ^’<ª()¹Y i›IßYo~`­X5"IÞ½¯¢(uÿ Qž¦P˜ö߯PY‰ü/öC{->c=ÓmD€à9¥í¿rÇÊóýæx&¬¹”·ÆGŒìžV(œòLçÜÐ~Ë©ÚqÚl¨m‚ÒëJ¹¾Ë“5{S~wéÕ¿N,þŽ¢jµññ゚l׫ÙÑ—CB±¶ÍÍ7UHC²xØlˆÍ‡ŒÊèž4„¸¾#aŽw´ÖÅZƒ]6“ÇÓ³R6taÕ1Úëi¨À­8°°œ«D庨"­AÙ@€äb@¬GõözÊ  ;£°Ynò)¥«Lº «c])R‹Ø¢(•cb Gämäwxó˃åNŒÄÝU°íoß¶~YN‰s€÷Úo‚åËyT0®SØ5#Q¨Ø†{•*Õi¡¢ùO(x0õ¢I°ƒFEÓ~æ×Ä©67o¹eŒóÄh–-d厇©`ˆd™¦ô&Äð,<ë«3cˆ«_Q>ŒäTG eyŸêù&ßHÚ3 ¶œ¿ëöï©îÓ‰, ! ›WDM<¶übçÃê‰ßM-+f§Ø,*£"/¦.—6°ƒ»$&Z±›¦¤û/"RæËCÍ‹Å+D„‡£ÖЅߌ۷Ó(ÆŠ°õM‹–X¨sÕƒ™u3p0hƒe¼(Áu«#èÈ@ã6´”¨}~Š'­ö]‹ª±`‰i‹ï{ð›T3«Ö»LÖqlÖû<,)|,)!7FHO^˜HŒßÀv6ºq²­ñìÛ„|óG È¡e×Z­Òñ`WÁ¶''†P#PòfÆ}ÆóãJ÷,ÌCÄïjSmrAÒø¥}M‘ÍmžØ¬<1~¤Y7åQ¥Fa½%™ÏÄ-9òwÁî“9͸oÛ|ÉÎòêSLAéÕù˜tÇåG×—,¾6aÛÞÝ«oÕ©ÂÒlôôæ'HÔÇ|e>ÜËz$"T¸Ú±4Ho:Å7wB,;É Ü¨q ¬=ß(‰jmš±¢FôÒ=ÈÓ@ËO,ÄÚèyžp‡Ä`3FL¢­ vktA¬º¶vXê©0’…ïÇcñ1“ãalPÁF]Œ‰á·u..)k½{¸mŒåÿ„J¡íïðm¿”{!§;.[rÓÕRÈ1mÒò U”€ý· TÿOPù›°»uï`M^᡺r;«æOýŠÇËo™À¤Þ¡¹DšX†Æ6›ú®¶VBµÀŸªý9¼ón¹iÜ•£TP¤uaÿÒÑÎAƒYèk` ^ÝÃIv¾èû ô®»ÎW¢m¸;Ò/_bNJìI|ðÏq04/Uˆl_¹ÙïκnãÆ1ÎÉžAIÞˆî8ëHÌ’ô® æäQÅ9 (³?‚ÆáˆöªÚ#Ò þ=‰¹„ ù4»z,^ùE‰q½S¿“¦û5Y<ã4ØTôz`ŠâKYÞóâÆ1ørSI{ªÕ¥U KEªsà„ÃÝ!ûúR©M¤D—aˆñ«Q’,å÷I†"cýáÝŸ.2ú t’ýRÙoþFQR}jù'u¶ÒÁrãʪ½bWcš-å$Ôù)ÔiÁ5™J­èê~øfGA^³¡^aÕOü .²*ü0ƒ¬:擞?²h }†ýÍ©Þ_—½¡qI¦¯~õ\ÀAz ]r/÷dܹÙßq7C,’!¨y^HÀ7WºÓîÑå,4JNuGã¼lXãi[]½ÐÚ9Œ†¯‹UµÎ [j¡stûQŸO…­Ö«³‘yÅo)K*üjÉSì“™ì§o"­/¬-Iw ÔîµqžÎdÄönjl*/áÇ,+„¾ótĦÁNï°÷Èxéâ:¸,¥;2´ü†ã°Ù5º_åÖ¾ï•ËBøB½Ü,®cåmîPÓìÕÕŠrVb» ß‹w´•Tæ&´œÂ_¸Ý´iwÂ8ÁŸ±Kô[d™=>ÌÍ2rIM;g±„3±•·Xęմ0rm3'åoåÎ)æs­F­¯—}tz˜4¹ã;îš8¶‰áõ|½ÌNœ{ñ2#Ó¥] Ã2ëŸä’{o=¿DÉžYÂ$ÓÏgïìDûŠŸa`²úÃî~ÄÑóÛ\¶j*ŒuBý°G¨è<+múBû\†Ñ§ÄÐXçù¿~Í®à*óŽPÑñ3j:ÉÔû)õ؇þÔ~ÂS@º|8iȽ9ŒŽ÷/ŠÀÙ7¼½(xõ5G:µ&‡÷¢xKšÖ… ½èuyjª±4˰˜¢ÈM# êê•“îÇuæï÷Hý±ËøYRÎ)¬¦´‘rÈø_ 蟤çŠv ÇÅIÙ”XI£'m ìBiS°<š‹,JäKØåø¦ì¥â˾Ê>º®ýH%†W²ÏÛ‡%_»K¾žÜ‹Vò¯…^–]ÏG߸0Û¬ƒDŠ¿‚Ñ|ê'™¬_¥=ý¦ðΫǥñ©>mÎiØy 3hŒIÓïfç…£-³ 'RvÃj+lìæÖ“X‹4Î.?{¾96®0³fõ¦dͼ‡— ,šz+;—¤ÜtÒí©+ÑFdmi$‡éÞ\“-;–ݹ’Šk…6t÷ÖzPQa|ÝQ}@GÞÌcÔ„^e/ ™Gƒ930V àº`¤½¬"j€ï¬K5Î]-S•/‚(ÐÁÜÏ€Úm³GŒ1ó娒Ò'áÈi³çÅ_«Àðe0\ðådžI‹ IõµH+4º$ß©Uô·ïË<•s–Íãä”\œ (ÿ%¡îÓ_5ÖÇ,G_÷³ý4™j²i©|4&ÒÒžl‡×tíߪD††ƃ¯)áÔŸfšìûTŠ’í&¸:80¦ôÛ]æWžÞ6oáÐmá:’´V#XfÞŒçüùO4|,~—b@ ñ¨Àä¶8«W´W¨ÖÝ®ü¯ ±I}6ÛOãîÌâò˜cKšÿ$œšPUN¥V7t}Šéº¿«£eZVW|ºÒ ˜ñÆ|ÆõJÙ·³³@g=«¬†ëz”$8A»>sº‰M+êËc1DWÖ©RS;³RX3¤z¥èÛוÙìR:³²uˆæ1]]˃Sa\v°Â÷ä,׊І×FÑ+¦AîoýNknTöïo;þÓ‘yJ„òšø‹¼cÜÐ3t°êPQ©€å8¼Õ¨ùrLC@°²NnhðÉÌø’%Ì:‰û©ðE,Ç•HúdŒs¨U€wÚ‚ W‚|Ía%_=C<3<³˜"Q3¬?H_¶}f;wW2"Ib tWÍì6—Ošèõ6+­s Š“$‰Nꂸ ¾™YU]gÌÙ‘Õõ†\lCJ°;€–«œÄº’–Rû¬Ÿ5  UøÇÏÅÚ"ì}°µXÍz¬â1KžÖr?2UTF¤sc¢•VùãƒÆ–­6l=EŠçáæî¹ýCœy`SÒ9ïî<“@vý¦5t €.}¼šå’gãUè«ô Fc¯ŸD_L/æ4;oð鑎OòÔTûI$³ž÷—²T¯^;ÆÀƒñÛ¿m[Œâ×£ïU¯oٸı1‰‰’BM•í½ñ®†áåR,½f}}Æd ™¿}ú¿ø æá3àåä‡ê\yãîK|Í4æ¤C¡ï»{²ëté|nˆaèÄ»>nBj>—¶4óÁø[)$ 3…lE>e÷Kû‰‰¡¨ÍmY«Ö¯ß–ZWΫ[7l®áw%g9 É"ŒØ{r :CÍ¡¿´•<ŽM9/ì;GÎŒœ ­ˆÓpSw©K íjµ¢ÂoÐðÃ'¤Œ©¯?ƒ†Ž8¶éÚŠ¤Æšy† ±ŸüNÈ*_cOh¤Ôsh+©ƒ_˜~†dEá&ý©tõ—)fóÈ Háû'±´R2ÑÈ!; ñöG4bNDæJk¦4C®cþ S¨)oaÄö®ïݼØ×¡g?¡\ßFâ¿]]×Êlè2 ~ã"wÃq›M7p9V‹5_WžÒX$Ž:i:ýÉ" {™¯ Bö}­ì#c<ðÔþQY±ø]ÙMþîÐM˾‡+°X-yšÊ˜ÖBÙtbêŸ$§ñ@úõìDê¶-BNwA¹öu°îß…÷ÚÑ^ùÉnͱêu• _ÄÄ1g‡©ÿàáQ’èF{$¬Ñ1 /" Ì7Ð=!vÝçašudxûå —û*Æš“DW8! ü>mÞÓ‚‚ä èïõÓ÷‹VˆÔû`Ühr:Œ<Ÿ©1§ÈŠrN¬œ¡N7çx ÐôÁ[‹àh¯‰Áy¬øäã§?7ºŠ¼¯C¥~»6±žuD“õGÌÊÕ׸ÛÈföÍÄFdhÏÄ:tÃ}w³)÷GJ*<ôZÐ?wcõT-E0_YÓÊ{ÁJí7OuãöÊÖ´~\ð ý×#ìútÁí?îε¹ЖW#¢báLF¡jTmÈ>à£=î&‹®Ï+€ÐƒXª"Xë}‡à™Š½ê¿Þ×14¨ç?{VÐw¸,Ù¬—uKc37}Èä]øý÷?¹Í«aE+§š´€9³”yÜÍ€ }„)?@X¢L¯ö+=ƒo¨r³ýÞéÍí·Þœ»¹RTe̪èT¹Z~Í6FTæ8[YB \DéäŒÄV¨ÞþóäÍùç®ÝÅ“ž×dÄAŽk/)ÅxÎáU©zøv‚<†²e=†jni“yxÿ÷Xœ£¤”‘H¯¢zÀ‚Ü ?!Ò®Ý ¦øæÄßE ;˜G¿5ƨ‰;Î#\“d©TÄÞœÌy‰6Ï…Á|:ß Z»À¸Š#4T©&âxŸZ½£éºÙÄSaÅYãé:azÁìÄ´aM%Œ\M’\¥CrsÉWü¤…X•N-Øš µâì~¹ %½Z,ÇVÔ±+Ä¿ÑÕë=ÿä©A´¤{£ˆëîĶ[÷,‚·8‘|ÓTm#j”Ú™Ë .¼*_ÔZ‡|K^ÀK§ñy›+ ðürs\ÿ´y+u ¶PN_Rz³„¼“Ÿ4ÁA=VËk¯V½úîÕ™b,@û÷ߨ…«/xSáÐ.Lî/qqŒ¼ˆ Ño Tze;bõåÿÞU^ÛURÄ’ßôV6âíß2¯`v|‹ÊàÂYýûµ¹Ã0œ0 bãê¦nÒW·Pê6‚ÚÎ^½O¿³«Ë•6²äë9ËK³Ïas ç¾¥Þ@ò%tÃØ•†7ö´¸ÜZ‹<öo,hPz~ "Ö 7„Æ(“¬¼#aŠ·C K ý æçkŠZ6qYÜseÔ‚í¾¶Î/bêò™ ˉ·Qj™!5kIÞ’Îø(ÀÄÞ‚yM6 ] ³û0¯|eH/ ”ˆ!ÌÄ .“š ã]Ž!þðXÊ.xÔ-ü¢üŸ`Òì¯; ŠÜ)¿„¶,ç5C¶ÎX›¤Øm‡`Í aà­2‘Lœ7€p#”/:„‡á,£‚ÝD! ,½hÓÜ¡‚™:“çˆfSDÀ¢W”äæG@ª2ÚZÁàg:…nÑÁQtZ¬’ÂO5¡DÙ~ƒØã°‘¼ÖlQJ:®„R®æìRæduˆ[¢J]19M\Èö®NÆeص#ÍÆîü`¯87ºF)[£ ;¶Έ³YŠåª” E>b]Ù# Ø=Mò³’B§OYŽŠŠƒhÙpžŠ÷`_¢áiˆÈÒl¤=I†éðì§#<Ê¢ÉÒ85ßyuàô]JAMe'áÚÊ ^À$e %LEC‘ÚʸpEgq$•‚ ïâ áu«±ôž×30Ã?±ba›xŠ¦Â¦Hí`‚ ýÞÓù¦c¦L” †‡xP?8·ÝKH0ad™÷Ñ^[Çú ™ëÜxï…>¦t,í§0è½ôCEVgõÙŽÍdÀ¢…y^‚€o O0é¡8³:.Ø‹”m,Ùu/õÖ€å8“>n˜Xд …©”Ãñ´óÅüRF‡&$sÃ9ÜÓ&o?¸JÝ*çI¶ÜÞäUE§? .ã3WÐÛª4,kDL$Šî9–> ÌÆQ‘ý˜ªs,°ÝGÁ^Í}}œ—‰n>>« ÓDB£KÍŸÅ¥@¦¢”pꔑòÉa*ŠTVm.ìÕ¤åMˆ†éÆäžô^( d˜†Þ±´çÃtÔ¥ 311–9#ÌÆl™ß˜K¸ŒXïQl¸M)„p™¨ÚXˆ ¾e®õmÀ@lf±1î[)?a‚20PÆœ0fEj¤­mXdù‡Jò²}fÇÇüs%†T#>û5aüšÕ I9þkÓÎ MǽÁÃÎG?[ÞV8P„ggcƒâEr’ WÁ¥L‹=›¹³‘¿hS®qÝ%X>Xqø‚>½öÆ{Ÿ_;‚^ŸJž)þ’ÜÏrĘ.â<ñE—ó'›õÿQ‹ÜŠøîî= •û˜ä‰3fmåØM—“ëŽ+)žKnû ˜ŠHôÐÔtD”p¿–þUOÜ&•V«ðIÒËïõ‚Fí.7ÌC»þƒS1PšåƉ©H]`Ïû6øĈyb(ÉtèLóCgCz:Í¿%»g1€Xã•$3櫆@±N äÞd<û½…rì@ýŒ‰I|Ò&¯WpÁ3'$‰&]0º«ŽÈK0ä!/w‰¼„)(/´a*~©!‘…yêi6Þéik¡pѡܧx0Ön¥QÆ$w›Ò°k‚ {§›D!ÊÙ¼»…õ‡1AYMPþ6+Ésè~ÖV“¿°Ž¹+z«Ü µ;ía¸VžÙ}qjPî©©YÛ‡‡úó|áùó¢ßwðš¨7¦ƒ¾~Œü"ZŒ‚âB˜ð ó®7"bRO³mR;†ÇП_Qð"›ƒá1ÚØ $œ¨Q.qÈE}h@DjÓ-’Bžè°Ø§6‰·RQ–ÚdíyªÍ¯g`5:æn‰@§*BJ’K…fŒ{âçòãxÂûÇÖ©„ z¥ä‘/bÿ „ÄEÜóØ”P`ö”pV±T¨ñ[ê£¦ÙØu6ª/°f˜¦ù™?qOcÉã¼¥®÷ç&Ì”{ä:pÕœV™O½ÂûFõtÿ<Mmÿh!Â[ [‘f7˜„û2,l›Kfõ£FƒnÊ<Æ[KÐû_~ÆB¦QNÀ”`ù’Gà̶C„Ž?cZú¶L+üv µ>±ŽZˬ±³k/êàìÑÑs: ÊOˆÐp$9é("9˜'αs^ßá5Äþ\ßå·Eض' Œ› ³ÍéÀ`\àΜÀ6¸SÌNåŒ8wú+…‡qm!´<—Ü2ÉZOx®]ÓlýžCíî#o…¿tùäVÙÆqyjzlyOçÑG8Ì ‡eæu\P ¹ Ìkœ˜ Äák-¯h; ҟŌʸO©ÐŽÄ?{¸YZ6C3cždð" H«1¤D‹d;~ô}À€ýì×ñf {##o³¦Àh™$SJrH0fƒÖ ¤Š×­¤jÛðfƒL4ä >ÉLDÉ”sËšA-Çô-ÓAöäþ©,›$Ùk*jÜAËþ|•ƒ8øCEöÀµeŽkóå`CpîšVÉ-L AGkz7´Î¿ÏőϬs*êb_à f$§{ϙ Ù~œÁ×ü6?Ê©Í_Ù³¼£¾ÿ£a(t ýwé‡ûŒâ5ˆ›ÔF$é½9Í{Ó?d6Ë‹—?U÷ë >DÆ‹[Ûhv ‹‡ícìpY<ŠGJÊ#Ø Ë’ŒY_ã錯÷°3Íó5æ}Äñº¢ï^[ôÝÂXiF÷„Ï„a¯_,N8¼pxaI!šx(!¹fü “ñ¯^µOƒS_¦q_»Ì™Ï–ƒ€õ>{ïîT½3áþ)GÞ$DŒwÉwÛ$z g(ÂÃ."÷‡QðC‰ÈôADdLFƒ‡QdÆU|¿ß¬¢&ËTžhž‡þmŠÌåãÄñúª¾ÿp»éæ…Ðÿîk=¥“9­ÞáHëßäÊ81j_èh0;“f„ÍÛQŒèçÓD`†Žë= K´Ñ„`†.ÄKPŧ41l"]åV–×r‚Àº‚Ÿ9è:—÷ ø^u¢(€MЛ¨€&‹ `—&»&ŒA°#²OÒ¤ 0óquâ„CJÃkU漕‰2&ÏêÙ¹õIíÛ5øZÇ,\'t›KpJ#u^ŸšwÁkö?è-6sù-,4)ÛsÍ‚€±y÷óM¦`RÏÃõ`±™P}¸Èd€64Ö¢ðS)Ø}r䛕W,u\(ÇKDñ0"$!ƒT“ ´JK2,>¯ × ÅØÜ‹ýù’T‹¯šã—®mÄ“’ϵ·÷,­½·àŽÇM±è˜æ¤æIš¯%¤*ªȧ™¼RhÝöÎÃZ”ü¬È2ºn[­ˆf·l,ÌO¨ŠÎê"ù_Ñ9Á­æ=ƒ]Ì?û :Ý ?å#ÝÝ5N¶* ê£ïE ²Å»ÚÎà°væÉK}'4:6ÚÆôØÜ—«y>·¹PˆÎÁä˜Í“ů…^£¬¸Ød;yàÙH LÕ±|9Z'²²ù6R¨HcÇ?®ó ×6j’ª(&¾âÈÔÎ"í×U®ku,ÕÕM¨ Ý@}¹ ýù>’ja#O]7~þN¼Å"yé1Åp<,ºÈús;fã=}›t·¼²psÆÇõ–Ë?ú[›¡â=ŸÒ§ØÖÐÆRÙëŸø¡b¿²JDpÐ?QDDn½LV%×¼uáîNÏ~å^ˆ:&r)nTB1?Mñ¹ü‡Çç}Ÿ¿ôø¼Í“ð)EG•¤5iÄߥÈ;,ZñÓ§¶¾£x©à£O¸‰«ƒZ«k¯ÔuÈ:l½êØÆTèìqêHÀ#2§}_ó% xÊQ3F;@ïÔèh1û”D4¾¾HŽy=;3Úƒ¸…Þ‹ >¦Æü˜ócjÌ¥1 (PVãûiLÝAc]ýúõt)Æ})bÈÊ/&\¬ÁÛF%ŸÆ©y›èvÔRÔ&꜡î%êݧ¾Cƒ»¥¡uÄ(IŽ P“^†dçrØ ¸(¯Au ê[AscMºÞÒDxµÑî&ʸ_&´q¢Næ2Çš ST+™âîºxƒ˜èr,W¨+ƒáª5ÿ cM¹G,ІÇW¥k¸Û«}½˜­€McÆB¬]ûp0oþÀ~½­:±ë°+±J²ÉQ¨­K±Z ÈE‹Á¬ÚØ[U+ ƒ4J— [Î0Æó$R8Ü6JÚnÉGw3ºVù§Ë•{×®u¢…Nn#º#ºY>ÎDh|[†+¬Õ„Ób¶š©œ½LfófTúx?>è°%èðìE,òâp9cØB R¶¶££uð'€ˆ¶CAŠi/~äˆ/ÜËq7ç éMãËJ¡]‹E¾‹Ö¬spü)ºÃŒiM‚/åå§€˜báAá|ÂAêËMl%n¢´£` (“€{b3†¤qËt7»ï9xÜ–ãQ½ÿQN…Ùâ£x|ØlóYÆõˆuWô°a,ë!©–NÇIòù‚ÜþI¹³Ym}[ž´ÞDÀ—ç*“ü#bUG¨Îá²S(Û(»óÑ¥—nÄ]¦±r¡ª‹.ÍÈõ¤ìåCû™7]Z,<ïX^kÚpÃÑêFøq4Ó@µ.GI‰¡%§ò1´XãêpSe;$Ü>Ñ®µ e½lè<›RÃé­J g Ÿ.¨Ü_’lc®½UG‡iFT¡ƒÉxSBõ,Æn”û«‰õËÁ¬l«„ xâhñA–ÜŒ€®Ð´û»Ñ,äÐÖL‡:ðŒb o]l­-_ß™èØ|Ix‘ÕéU[bjï€X\u7gɽ’áì =(2@G=ß)o£ )÷$ÂxØEósøÇÜË0rMeÂg™­Ó eJåø”‡ºŒ„½ÜI¡Î‡ nᆴžÞô½ ò}#}B¥Žý°8Îk²îxt4 .©îžÏX.ñ"†kög“ÿ±êü~ÿ©$EB’Þ·&ÿ0í$Y#<~Ï™¾í~aÝ8x« –¿hSYVÏÿÏ*Nî6¢$ßšüÏ"ÑNµLæ2ígƽ·1íÃ\iþ÷V’À2ŒdéD– äNH@p’ ŽN3\~7½¢¿}?ÏwÊ~ûÃŽœú>ÓÏúCª,/¶¯+ò~Ûà9÷‡ñ%¶bñ9 ±oõõÊÎåE9¯'Ÿ¬•÷É7ãä øPú8e±eê?Ti4h|Í ²hÍPú²‹Ÿm; ?Y»'O×e³X”úÿ¬Êz,ÿw¦?ã9ØØŽÿSÿØäûþVKÐÞñsRNn“½åå¾Òd¿ôrå M~“ þå&½ÊÏ t؆¨Ÿ{d¼±ff¶½çëY†Z|³ŠÂQ1âm›¼i’¿Y‘u]CàðÉ¿åß{Y¥ûAÌÏA'߬Èpö—ØÈ¤*Ä&ï P›då±â8ØSXœ0˜œ'…|/âÅBD 3W¥I Àý $Ô ¸ÚïUJIÂm—Œ*àFpcc‚\èÓÎ~Z– Öím*ª¿ÈmÏÑ&ÛÍNÞ˜"û¯XN„Á¢ä¡EÔx~?71ô-(›®šîHøÈÔö›}€Ùx v9Þpôááå oÊÅ€ìZ_—¤÷{$à€:ynòxw?…|/Âb ”«”­‚Ê„«Ð$ƒDñ.É1®6ÄËQÅ4’g#¸E&i,º8M”(Ûël,×é4*3æ‚Z o³"[Ò;äžÿð@Ê™é}ÑT<”Œ{¶r“CÆ{àç†!ª±“:/‡¬%Û o™½ËgªìbhÉÍÚP©CƒÅ¦ÍSh èÈØÐfQvÕ¼'³š‰3û3«™Ä¾KŽ÷úàï (*={ÔõðÆ³™>¢nãSÕL 0{ÈdîòמóÆÙÑœx*1ðióV2žôû†àÅW€oÜ®z#ðdîi÷LJ¬ ¯£oCñ§òr¿°c ET  eÒÝ>ñb©à üud¢ýFiØ·Íñ†¢ /„>{x“ÊdücX "«-ŠOï3¼ÁÅŸÔÍNã÷“‡ÛñÊÕÊVAåÂUh’A¢x›äWâ…T±=ɳ\‚"“4mÙiø“ß#~“´QÏ_æ$†E1 fI¬ç§xïW/I ‡`. …dYÏïžc/I ‡`. f!#b1ÚwñßòaÇÂ~‰nu.gØÍàÌ6"Ál6˜W$iqŽ9ç°Ø[ÙÃÚ:à…+­4€÷¯æÛi°V˜½­F~^ÌJð8•j† úÇ;–JõÆÙx9<àųùŽØ|ÿœóªxÈ:] `(d %îu`êátL{CÖ„L(E`;40­§I‡©ÂÍÀ}¯¡‡%;¦}¸üµpy~l…¡lØO6 m-xN4KìÖêƒU êUÀb‡ò×6ôüµ’ò_*¾ -×¹sæ1¾àV–E÷'åzEƒÒÚø€hÁøG»!­øuÒ¸x>g¬þ%eÅ«‚h•"§ÑŸÞÃÁ$®(Ðl,Hág²¦åî•+axË€%bÀt¸Î*ˆ7«FtþúgÉÞù:a:zš}0@]¡0½x3íd@*0dƒ Ì/3ªÈ&êÕ¹€0LÁ_ÍŸÇL5™û}é”'ÿƒ]Íç'1˜Ý’€‰ï…e(^‡3†±¹ö3ãG‹-˜ð®/t­)ˆD  ¼x~Km¡‡ BŒçþ+¼µ£Ÿ‘tcUÂRážn¬P•eËÕA‰¯y@ãÉšÁJ,˜øh‰#oSáî¯}{7»Vú¥Õ7“ÅœuÄá±ZC´dpÆI3’fGí«j:f& Ï{ª²žT÷i*–¦‚#ã4ŠªIücÀ§üZ\cµA¼æ;üëW|祵ĠŬ55X˃Yj ªTÎÅRüÓÁßJ×ÿåÍxè¡X„_u€ö#8pM'K©çH—†Â ó,ýB  <þÀôagŒÓ0­ÚXý/‹Þwì¾](ú’3·vß1®jtÇXW…KÔ9z‰[GçÆ[ð‚Ž·ëšÃÞ_ßwAÔû’7ŽÈ÷×—ŠÿZ`k³3}Ðþ[ÞÓÿh¯ÏÇžžœ]ù^eŸ&r¹–Öl櫓á[¿ÙþH¶KÓ^NO ‘aõ4EÚÈëֈʹⰠçôR%<Å% ”$IÊ×¢c¡ã+æJ§,åäp–:Ï¥õjžmmö­Þ®.Õ2s”˜p”ªªÃ´HZ‚\Qù™{׉|òLÈE•jbáêvwm¨–¯‚ç—n7 Ý%%¹"ûWÉõvØ(qÿÚVßõWîÙÙp눠a¨ªZ- ­H<‰¡*%–FQ!$I’ЂC§­‘S+{'HW%›V]iË1ÐÙMbx%n¶x Ê+w‰ VF/ÞÜéÑ‘ _19NcûЏ+O5¥®‚Ë!òK¸øÖHa÷Õ‡²ˆ¯x–«–$]Š pÎ6Œ‘´à™œ¬ZÝ'~µÂ*)ÂQÕCÌF3¶Ž‚ÖŸ¼dWÔ”—˜ªžÇ Á…1íG¾•HR;&I%-u™£¾ËòâjhsË5‰3ÙíÏAJVGÛf1ÞJB<¦á;ÖÄ?®÷BF.öbZzœÒE¼Ð&x¤ýý#€î˜?VŒÏEÝMsî¼ÊE»R*b±LoÜD› Ïôû•|.Šmrçg»8v)Ñh ÊdÏÙKwÇŽtB F¡s*>K;€‡9*¬9nçVÉÃdîÓ…ƒ½5ƒ6¼X¿7îâNÜè|TΚ  §ôš¾St‰¥|ã"îÔíL7TøБA¿›>ØÆÅª¾•2 2:ç­¹’Á§f|p8ó*ëÅ+Œ°G*-¸@¸¹%Ž5Þ¢zV ØÆŠ ¸â­$DÕf1GΑs° )]ôðA™í>ÍÄ '¢M…gø¾ÌJ9äC9xR¦;Ï£ÙDsúG2Ž$ökíEÔÈ#AíÞ®_»ÎÞµ’óðýKÚ ž)”’ãÉ‹f}FL)×1Åÿ”‡!9d¥SqgÎÀ*LÖŠ£0ó×”]ÇÈcÑœãXwrä±àê8ÕG4‹ÞOoår½i…Uma•c¸ïöõÕ4ã Û—âž #$R¸Á4ÚÃç|öð†[œ„23Õt×*iDXØD>âÝpÜI<ÝI‚ˆ”°´lN™žãyÙîœùçÛyOxøòäÿzdg‹qX–j5å|Õ•d-Üò¿_pÜZЊTžRΌƨMXyCh€Ë"¥ô•o”ÜÏ¥ ÙmÃn„FŒûîw¢˜·Vd¥S“â F(W8=À€ŠõˆwCå%¹£pC‚ H£1½Q|Ûæ ˆÇÁGAYvREç‡Ù¯­³C@‹ìÜçcl\Ø›¡h¤i‚ÄàÀrFɰ31Ç°Ñ •Q™ý×ï8Þiiì\ŸN²FË8œz}ŠÐN³þ5Ä<×åX'›ÁJé)çù.ðžd‚*ž™ ó”ø,ßkÂ?€}X›·ÇiqàwçæcÈ÷N@Ì…Ü1(‘ ¾Ó°§ õã}çÀ0]æqWê=þ:Öhcß|ÐMRf”k¨Ð. ¹evÊ5ö‘zœÛ ìÍŠª8œ•fòÕŠõoõøóœÛÐ ?qfKïþ[ÆcÁÆEÔŹ‹^ÉÁh¿ð}!`ã»·ß—Þ¥µ/’MÀ'üž½ÿ ®øÏ¹®€N:[aü!E,O/‰OÉÞª‘w!Løç`'÷üÙ¦“½6z&BήQÉ;¨£XÂâI4ñZÙ2w+ßçëf¯swV`Çl ˆUÿ«›‡û†&½öKÕô.,|v/pFöŸ­ÍßqØtí„»TŽE0–~6aÍm ¡ÇLK¿\_Àû¯4/oÆ|úQ:ºð6ô¾stöèT:í»œ/½¦™çExîW!NÕR-äýœ÷Cu‘RÛ)ÿ„MhþÏ9Œ I›@f÷¢í–·”_V{q”?Áà)ˆˆ„W =®H€Ïzo.MV§ #h-ÑH×ÕB{­“NF ˜üoãÄrB½‰ð ÜÊ?ɲ_­?¹ Õ\¬î8¼é5r×ЛŠEhͨ5â¬ßñoÕ‚/´èEïp"ý86€sB €û¸Ü\õ5f¥_8‘~ÂÍö[ªï'²ûZð•Ñü|+=Õž«Ÿ.KÆÝåÕd#— ¸Q„h z*€>”N"%>OξÅçä4&9ÅR†Ö 1ò¤Ìíá¬Eœckù”5pwÝI_%a’S,epi†‰áRâ-¼¾œ¨Ç|ß-tõü½xãr"ÏiéÎF îåsñ)E"© gÏ¥k/'Ïitg£ç¯ãÕr¢ZC‡é¼[V'ÔË“W˸•jrº"-n†MiÒUºW'Úɱ7.¦ñ¡äfÌ1Ëèé¥ÀôOx­N\U¶úš(åM¨iˆ;ÍNº±¿LÕ)Ù/¾Î*m)Wç…ˆž’aK¹:/DxJ†-åê¼á)¶”«³¾è­3YÒï?ÎqÑY+óvoöÎi÷敳!òWpÕÛCGϾһ«‰Ž~lº^aw,¸«j°67– ]äâ×pwBO:GM=/ÐŽ¼–¹ÐŽ Òì÷eï’($ªÅ«.E%uúé­ìž‡0þ)aù‡4µ›ï“¿?Òµ]ÀHo”gÕ{§;ÿ¬ækÚq`UbUÚu4ú–xó2ÇWF'-´@ƒÃþ[2µƒ¡adñ ±ÒMÔ‰ŽõÉv èKDPçØB¾S³U¹f=ï•cÓ€™^¦¥¦€ MJfS~´,…¿ ÷uM]É$”gƒ':ŧŒfÓ©°®gyFÆm–:š2 9 (AÙwáár²l†¡ò“瘭-  Ao¾û†[ÿ7¨ 7@)Ô9‚öVÏí…,>J>D+z¡H=¡@@"ýø7\D¿˜ÛÓŸ}ƒÿ|D]ØpJeZ° b%<0VAÎ:®¦VÕÙÐû5ÍЦS{™H…ÔÑN(¾‡ñÎÍÅ÷¯MÍÆ@¿›,>õKóRæÌpƒP²-‰³]çÚdÉ×–K¥}rLƒ¹“”(Ñ¿Y@“¡6H§:îg/ÈC3fCGˆ9jŽH µ·ãK×äYº‹”¹vl ^Àõœ(‰xÉÈݳ]|•J/\u.¹•Â]zCî˜Iºl®°b.6,PDÜáÁ ¾BGÚ_ΓfâÿœŒ {FU“áMtiÚrÞã )V•žÕ"´Äc¥ŠQüÃP{™‘ ¤ÛK«b×aÓóËH®Ä’HÏtSt©|E‰ƒ(;Vpn¤7‡ÁBF5æO£!áØÏºYÌÍÉžÉ4ßBí¨P! ¢²Åäc<.&UÎpíŠMÈ·vrÈ2Ï­0Uq4¶ûÝÆ&·€Ó©†ÙÌÌHaÞI‡ÑjnMvÃG~C$½ÁAtn){›Â€lP‚/“\J\ö¸» å-ÌUÞ H}„¦ò¦:f‰u´ÒÙÅ©<‰]:Џp®xJv9S˜ÐZž[²8»d+Uªkhž¹ªpãдýÒ=)áMÉq¶ºva9o<¦°õxèg >£ãö\NÕĨ7sH‘K±ÖD ;|{.ó%Bâ‡q'íÛTWÈ]¨A—UÛí§T)ríðÏân]ó¿Ið“# f_ +­Ù'A}…¸DvëòY- x õõËiih!“Žz×þ s0²:¯VmèVyì™4ûÍJxù9É_ FÍwß?Qà]ÁälÉ1¸!2S4ý¥¹ucšÇ¹ .¬´ÑðŽXÞ”D÷Ëæv{»¼»ž»¦Ì#ŽýmIG>)yÍU4X~6šÌªä¦/â410'ZºÊÌP'EDŸ .ƒØU Ì0r$éx¯ÁÈÁ¬Od*#Žb;¡÷üÿñŽ|[‰ÊmD¹Mí‚æ"2©ïö,yÎu ǬB.4ír¨=lwã®païõQÄ VM€PÁG¶ûÌÚvO¾8¿ «¹=Y/êòªËÚàÀE’—{ò²ÚZDðFá`w›žáìB“&µ×ZBô.ëç€`‡)²_[Ó£Úšu¯YÖâ 1ø…ZíJ@²ŽáÄ ´©šEø#¹„ìYašå9mFp%jmErl* 8íú-WÀóáøfìŸk@žÀ ÷饪:C·j)Oé”gmΔ¥Ü·¦Ø° b»0†M2¿@Å&%Ê•™»§¡‚¦@ñC.Ï»g·› ¼‡§õíÇ@:À„Rœ Ù&ËÓ@1Å0ãÐØWUÄ%>AU­þ:ChD‡ý²ßZ[O†jý”Q”[ŠBI€Ò84<#Û½L¡æÁ:d‰g³Ç4Œ%?„ãJ¨–)±ü É(ƒ+$­ïV’ G³UL}õÓ¡ˆÈÛw¶þRuLÁ lÞTkEóWl{i°ÍËÃ?]àÏ©+°¨o³aO5‹6béõqî´Ëâé‚R€Ñ¨ÍNÆ ‡)Œ¿PÚeÕ;DŠ®8JÛÃÈ«rð$Jr¶ÝÙës"Æ3ƒw1?ü‡É§9¤`­#Q½Õª p\Øœ‘Â:œßÏ,Ÿ×-µaÆ÷ÖnI’dovÚ—´GeÕþDœXÊM#)Wp+eް(>¢ê¼çÕzT•¯£uË]TÇ5ö×n{ $n›Å[¥ùù$h‰ €ú\Ô§ j‡é•¾ÝH™Ô®'5X…¯šÈŒüMÊ<‡³1ÔaüâC9Ê6ÅÒ”¦¥ÂF‹ÍÎÁÑEù¤4ëËc·:˜´³BŤYGÊàÜ«€µY{¨‚ ×ÀkíêJ7FnÖ`ÒAÔ˜‰œÌô0)Ç|“õš‚ÆØô•Ó4„içW Ûã›´‘† ÑLî¬+ñχY/µ ¨Àæb[ˆ8Wâì¿0SL¡gP™Â<Á*p7Àuû¡p¹=ôU°à0Ùy Â—Œ™f‹}›£àYR‹½™“,rj8΀mÕß\FôÝîP‘ši6‰>Ћw¦8X³Ó3ïN#Ù²$²(ãéüŽ:¢À Zp¡BÞlCˆ£›Ò5PãF†½î\Ïg›®‘“šŽb17Ü?P¿ûš¼~zâiÓ©ªY²ŽZ Ex¼Žïç=Ö6íyëÅã[ Wã å»çëˆ~|W–nò«32wÔ–Ÿ…ž·\ÌâÓšaÑXú ¤YY‡ë-Þñ·X í@³ 4iÇ6¦w×­ 2gö‡ùкø¬™LfóïÆ«”á?{füKÚ(æ8ty€—7&k#À›¸=°ð‡L¸¸¶ (£·Ûå8Öß›ïEFM`vMæØ5ÜÀwßÐ?à¸9›öÆ$ÈX^~=ÆœŸüOžuÛ™ïM€ˆà­ÇèF÷üÇŸh&† ƒ¾„JØeŠ¢8è–ÐâYùŠŠ@(Ä G[÷¸Í0Ç¥BŸ(Šý÷nx Ф 9Ørª¯ûIŸ‘ÑK†³Q¦mQÞ®PÉ¢#Ç$Oœ™ÍÔ~ò¹¾ù)|Ü?ž>ê[}»^Χ®™@^–Òr’æ¹y¶>Ór“p¬¹L°dýp'¢Ò]eÞµ¢¤88¾ö1×ö},mÀÈ#$Î4_sºªrU/–ÍÉ^Š4_Gíd‹€Lµ…n¯CàHD~ƒ€øî¬sH“ÇváôÓ8-ßn`{ÂYa¼Õ¬26 óéÀNý#^Lu"~ãÞœi ¡­ÛÎôÀ˙ۈxÓ>óD Þñ0ã¼Mg—‚±n¨³·ˆ@yÊ›Ž»µ¤p&Ò€VbS—Ñä[íÈüv9yþiõÛú·ù×óûå}è;;‡¡B·oð¦¶íÒsÖÀŸ[ÖG"ß[+ ¨êpg÷}yQ—uH…›ä ÍÁ´¥;u¾¿!—ù 6˜Ûë1Ü/N+A‰¢®÷ºê—õì"¤,oÂåžÌ†µgÛm䍯 Y¸a›2Í Ü¹’ëôS—ïÁf¥Nƒ6 ±¬“tiçÔª§:шÀñð¯Œ-¾,e0’Ï·áÁ{Z¶·‘žliñ¨u4¾B®VQNYñz€L_A¿`Ǖۙ‡|ú× Èþ6ßt;7¦GË­¶vÀ· ¡›v0½õáØ}ŸœeèÒ¶|\”øTÒ×ä7fb(·«¤”ÐâÝ·G…ÛRä2%cÅOÊ2P~´…¢aÒÀÍã‚ÐEy„»ú ­3‚?ùlƒs wEè^¡Aä?‡“#¯=¹ê:]#+œO®8’qL–&ûíf¾Ú ¨Æ§/ ¼%¯?¡šîj#%ž÷s2#0„KÊðœ±Èùe+†ÔM** Ç}U\,©!ùêô»ñÕÛ§ÏóçÐ׺È(޿ί ß)ƒ4ʇf–ÞxrK‡­*O ätÂ=Í»™ãÓœD±&üpè+0ÒÊ$0=&üVs@@n:F̼)¤É¿lGKMÕM|7·sWȳt-O‹ B§úT: zKF0—ÂàYÎNVvÝ´çK÷±,ì^ûœb0™` U´uå`  ˜Nƒá&NÞ³Ðún%%¢j­ïÛŠˆ\ ½j `G 7j&íótG*þ¼(A¼ˆ„‡ötõwDd QÖáÇ5ŒCˆtåž©„É&ÌÆ¶¶wÃI|Ù q2e«Û{PlTKy†½Þ43ï_*^*’kÛP4ŸDT#ŽÈ]ª’4Ø.B¾¨³Å?U3¤$|B§,óU8¯P‡*RjR‚m2la¤?¼H{Ghzao2!J¡m$%d³…;¦UÛ–ÎãO]k^çö;ã§ÁE{í®JdÉa‹íK’OòÒn—oÇÒ&€hI݃É0Æu"(`Ø{ ¿ÌKØ«m/G3kS£ È¥®‹?j<Ôò™gj.A!˜È\°<:í:e={ÿ$?èf-´ºnÛ†"¹ðÀ´PQøñJœžŠix„8õ§æC…Û…‡(ĤþÕ­o–ÌcÑM!X¼L.”Zd8\ïÊjKûØ­ÙýìÇù¡´äå-EiI6Ý2Š‘þÿ)r‹é6náÕ/˜&ÁêøÞR-]qu­Ëª Jštpÿ W L2µ‰×¢L(°g›„‘ÞÊAwœºV‰¬É„˜È.êÍÅK:¸s†½6GÇÏöQ«?ÀŠuÀdlSRZL$UãXwøÂ›Y_2Qm>é@¦@ë³³ý!nñ‰áÝ‹’!ßýðìØykC'ŸÕsžr ìïÒÁ@ü½:+˜ô7‚[Ä Dõi_`“ÒÙÜÄyÓ‚:äñmÂÌ%ÿ9UE) ¡1ß` sÈ.>"\ÔEblu¯R(«d¸ë3ƒGÑYWë…€¸‰5 Îu \‹.µçp‰’°0/ýýVPÞêØi*ô5Me£ÀBDîý~;Þ‡Dð„Š‰ ©©;ë, €:=Ç®¼€9•m¥!øßaM€¸|ÍâÚ£’zbQåiPI©ü¾ ˜eßXGR‚W!ÐÍpF²Ãˆ›v»¶¬Pf“é¤{<~Òþ%)q~ŸÂ÷ÝÀ‡Ã^<½J‚àõ· gÔ ÊÚ»„jpî™ÔçývªCîó, ŽV¡Ä‹”\)Euh(_ÊØ—£vïUïîft^©–$Ȳ@6y[YÜ5bn¾2„Ƀ°£lÑÊ—˜ÿàÈ»—œ2°§\W±‡é•50ºjå6+²eÛÑJ Ò÷2XL±.¬]ÕB H`$Ø¿~|)Å^œµ&æ†äSlýx`«’ççMùŽ "!¦!2DJ&Ð~5aÃ}õL.r rÔËó¬)âJmI§z$GHïÛöUGTà~Û1¹³‰û«½–½øþ6#:Hb™U WïØUe)B”°»ßÍþ¹®öª1çœ&%è4€¶?œšªc«!LÔ¶ï¦Ütœ®ÛÙj gýdžò”ž¸­Æo½ˆjÝaµÛ@ l#Qo¸™î ~}Ë¿QóNîÀ U‘§l䣓)ÛÔ†ÇÃaM(nú–…ù“õ‚òIŒq—cÁÓ g_eq-àö‘höT»œê¡oWÞ/ÑðE–Ææ 8Ò §¼"÷ ÂÁ·tî®…Fó_ AãÄù¾ÖL­üA`úù¿ž4åC$¯®ä~Œ ‚ZÞáãUúñoÖ Q½h5騩q ÷ëɼn̲íÄ- Ÿô$àwáf_÷‘de(ÄP›»gÙwý¾~X¥»If”³ÀwAò³Œ‰ciNyñž“nOs0$Mè·ß1ƒî7Ó‘†šÚM¬òÔØ ˜e£ã8œ½~Jõ&̪yò»Q»Sç-jÌÓ…žàSEW| ËFÑЬ¯~Á ]=ºÍúJå¨!C¼olïR§A°Æ#r ­sçV£:Ëï÷ZOK@!öF¢1`®ßçYM¦'‚·0ëyܱþzHÓzSø÷³Ípbc*z‰ˆ†o4ôJ"ºî coxMÉ]L½}Û}žNªØ&ê²*þš¡«å傉á"ìkmrÛqÂÂJôy.ÎÀš›± qfÆÓ˜OšzoSfïr¾½h¾¶Í—á“§—+÷þDƒc!ëÅ” mçtúæíM»}ÖŒVvê3áš}è»8 {Y”7(Œ 3ûï÷—eõ"cfÑIJ=ùLN÷ʯ’pÉYFI}ž´É›ŒÁXdYqŸçÊœš«W„l0­ûLTþOý·—”uë±(ÖÓfØj’ÉhÆÁ³À #7á k6Y7‡á‚QXæW:ò@¬G*7¬Ã-û†SV nÍr¢ÏÒ ·öwæ^Ï(íD¼ ‚DJ3®Ñߤ@šFbb¦»·`1ún }Ày‹’²#`n6ÖDu b˜Í“.Ït„Ðc¾Ÿ BÚå¶a†õy_ØLÿ“œØN~ ™ å êr—¸YEø|²ªÈŠWºj"8}*þfì]&r˜þd%GöjÅbU &ψH"Á×é A èÖT =TbËcrh'ÈýÍî^·a€jÀ áмºÚ[d2A.¹ch¾ŠÚÏ'üY:F!ã¹ùƒkY/ŽY"KØ ªËppÀí u<¿sŸ9-sª¹‰ð¾Sn\ÂS0a9¥bJ‡ zvø…11FÆúùšæUþ[nåÝëúˆZ'Æ¡·IÞO.&EC.Êoy´¨ðhíû‡’èO# ÀçAAX¶-¶à&8Ú.ñáR<¶údš£×`—ï3i^ y€å¹fÓº'?>ñµëkTlâ°g"poS˜8 2–mN²—Åóù¸ƒŠ=Žƒ¶¯iCV‡Em»Å²‡ÛüÛK4×uåšn9†Ý”:hG_=Ivj–™ßˆu—q’§8¤x[Ò£ .²à†¶X_î-r="%8õJV'V‰º×ÏêY8¦ÇYö[Xz¤Þ/4îK¢~ÖpÐT`é„Ñ‘/–öj—ŸoÜÓ°.jX} uì5U‡—¦B6QBO?b +‰RNeî'/3ÃU&Iø8ƒ YŽûá—¶)û/÷ÛõršÚZVyj7°.Aû&‡|­©ãØ&Ñ|ó¤öÐu;7É Ižx@¤LÍmã+¶_Ï‘u0 Œ¥Ÿ€ƒs±¼I­¤1"þò¾”04ÅÈ# $NŠù/BSÙNòa†¿‘däÖCr()nžëðÌ0×ß®¡ÔŲñˆ°Äåì3 È|ÆžÂî~ÍéòÐaKî`3gËP:¹rŒ˯؎\kÊuÉ¥ÔÐMbða8rA䔊Yžë[yv˜ëß“kï‰$,5ˆË ”Çsö ÏBüF³<_à]7ì§õ/•f£2¼9C2ÅÏ1Rïˆ$õ¯@°îÙS+Z=Æ–†Ý9¼¥ÌwÊ›¬ÏUéÅiÙ?±Êq–Túõ]0¥ÁñnøÖìrßã]ˆÛ…‘¬ùON±%¯š–‘P÷ý{ºr´ó?Þls—•ãVQ/˜KàÈ#ÂD8†ÒÈL„¢]óøk…œ “ì]U…èð ·š pe;†îÌ1§œF+ÉUÿpCHM‰·ds’ÑÌÛ©;ßÈ­!{ÕØX#@C=¬@N%E©ý0D;>Ý>òôêÛGóÛÒWñPè´Ä#†¡ÃÓ0ÜŒšDªD¥Û ð‘ ƒŒÎú;4òÇíx~VvÕtl¿îo9fw6KœmTxÿµ‹¡ÃãÂãVÜΠ•1­sdžjžaó‘ºù>¸:¡ ¾üòÂöØlu(Íàemêärjë*/ãßã]¢‚r·-U©a}>1wÉyŠÜñb˜â¡„ÔKÀ ìbÝ9}sP²O¯É{ýoQÑ«ÍSµ8ÓŒd3ô#ÓçM~c‰—&š½²€S|E9ÛHº`QÈ=†œrIHQÊŸHé§ê ƒ~ÿ8òú†Ëº»©€{%„¸{¤ìhèÀ@ÅÉ–ëžîŒJ —Ëíš¡ìªGB ØWä2 Íu5 «‘ g]΀5•/nëè­Ÿ¢EHáRþ®ù†öÀUç‘ìûxÿJ,‚нÌ`ÅýG:äÛµtİT•5Ç@1\d©øIvËÙeã¤Æåü§vr$]Æš(Tç ïYÓ)J€ð¾²—3ŸWcªwÚ‹D%ê/Ëî õÉáÉOH(È’…¼äŒUm—ú¢Ë΀S*‘¿(5¤¦Íœ¯–uöJ–)!ó¹å-ýçÄoç%?Aú}ë H mª ÜçäÿjÉ­G­Â½ÎrŸ­nm*+Ù¸ ù¬mw„÷Aæ"uQ[ª§sZâCûv¶+{å‡-œm³ñé ÍÁ ‘Öˆª´.:Ï‚ïomaèÐhÿzìËiÜF•i›±að^Á&aàM/@6ÃKèt’(À-øûEÔs÷OÆŸ™8„þFñ˜ûó=Õ±%°#°%§t©áV$S9Ï‚M|PáwcO)º­¢N§Nˤ‡Õ4»€ÿkv]üêͽ˜”, „,­xpí¼šÅ^¤ãCX‘+ý”ûp:9Î *8BÙt@Ö<·yW]+Îoý*leKyI›é9› Åè˜ïÇýiÿ¤òà°ø«’¢*‹4 Nì¤[{y¯÷·Ü‘þ§ñ5Íð[X x‚øj<–¡4DX51!2\Z~L¹Roø|ƒ8º7Á]F@ ÜÌòÎ#hºc0fTO/!>Q½©k8‹ý»zŽì±@¶è€— ×’+å~|Rò2žãuQ/¸¯@‘qæŸbjõìþ  ÒöÏDzH »÷ñuz­u1”C’'[O^(ñVÖ›pß²‡T4eAŒ™EÀlY»¨5•E–`ßõ‡Ç__¯ .ŠÙØ"˜ÁaÒS[ˆ–ÃZʘ©ÆQõ•3_Ý:- ä;—á8F}ه̛ƒ0/wä†o°?ÅdT¥£I®˜:×RŠ„\:(`l=.òÅ:sЬ¥fúÛ¥£]_#»’›xC úõä2dë4MN@þ°K %Øm€‹–šfÄk´R}ìÆj¡ùÚàÁgP_çH;r‚ÈÆèæ¨Îê”Ú$v¶’·Àƪ/áYùˆEßó/†>gÎÃÔ³_®ª„û¾f²Y>e¯5…7ðW›´qïÿšÆðÐJhS•žž¸^Ösq¥GÆëë§ÎN\½*€¹Û¢G*uâlkmkH‚wšPêíSÚTšëÁk½ï¼íäÉøÙéß/·ì¹p`…äçPƒÌu&Ø2î‘\ \4¬ =‚„Æú¨‚ð6¸[ØÉ-Â∠-·4°Ä¦¸ð_#O÷]Ò˜…ã\ø\®7G°{=ƒ}¤¾blÅ%!aóÿ¿ÿí¾•”t{ÎZ›ÿŠYWÃç±>3ïT QÆ›y9f;>lÿŠãÞ6|ö>é¹½<üß+‹•Ê*O?Ê?fgc’þ²àAKØ?Ëw>ß}¿Ì¶NÄÿaóúSÇœœï+ñKÿ¬oç÷µÎ*¡_ÊúFÕ™]bÁ¨:E‘âi³¶¹nÓ(|,µZÃQ9EÖgm>Ë<ú„¿ÐaÀ¾‡œÉñ?@¦TLŽ#Ng—-èëë윙™˜ééîèhoO%}^£Q[Á‡ªLÓ0¤Ô퇇ۖ *þt–û_o­é„øº!Ž”|ã7°0ð±')Ô‡Äß9£X³h¢ü]XTàÚºgx’@kŒv¿Ç趘úÎ*L8ù“±Öe_õi±0Ï„µëqd]Òvw‹ŠŒ3ø%JNP„ÂÕ‚<ö;âȸ¬\Ù l‡œ ;¦×Sø%H[À_¯Jéè–.'—ý/H:®wlA[Rƒ.Ý1 †°ÖÙÍý½Á¶0J,ü”÷@Žþ`SEXgèŒ.sŠc¡ÚeðJ ¨†ùíWo=fÀ_ Å-qn91Ñ.…ÿ«|fšâ[½Â¿'öÀÑ AGøR-ÁÜ:*xbd<Ÿ[W*`Q{±*Ï¢)ž`a<Òâð±‹ÿÁûºkn¾‚°Æ¥Ù³Q` FÍ1$-®MVèƒ+³wf9±“/ X]ˆºh!TzŸsàê O"°‘’¯±¼R4H¢iP쫸)ÒÈdveíW~§N[eÐ_QM¤ËÎG /–^î¸ò”â iªØF¡ï¢V;ï\s”{HñÁ|e˜Ù¿·§£s¶ÌóÜ]‚öiŠø-\{3è]jJwØò<±y˜“RŒ"“Ö*q4Å‹š8±¢áy|—;f ÷%€ÐÛXôi NM{×]KÊßb8 wÀ¢ºç¸4ª¬+š@ÃY€·¯C"7§¬¨×‡Ô&ö Húƒ}\ýø^QŸ^èŠìÄ``0’ážÚˆN,™v·¶y:Ëö"2zç DÐBÖs<3Zœ×ÎŒu˜-Ò®Äþ)% Nƒ(ŒÍíã à‚ ä ÕÍ÷xˆs²Íï³ï,ƒxPB»`±wÁKé{p´(˘·#e¾ ”þÓ½~9NJt0>paáó›o>q©gÔ° ÖÕM–†»~ß×ÎÓ(%¤Ö —žJ{ÊÝ HkOª–[Uû‹´%6‡nž´9ð›~"?þ—ø?èaËÆ~{`Ý£ÞY6Mô¼Û»]æío›HóÅþ˜² ý»%lY¦ªß¡µ*ø^.mw¨µeh4´Üù÷¢Y¹¶^÷ EPð÷o }SË"Oô(=•“ÏóiNÕÆB£F=6/v¾B®?ï¶k þŸïºT°‚÷~¬ùè´È¶t-V®ÁÑ&wžp'(hžé2aE8º~nbÅmS›MÞ€Î`8Kr­é3¾‹Ì@Óo^¯R6Ü¡PYu ŠÜy€5ùé”ì´BrÅÊ jÕ}ZN™þ%S”´ÌÒ¢›aêa¼Âa@ø©óL7]V×lƒ¯ìŠOÇi#ª$úȳN"¾Ú±¯ˆ·’ƒëÞüY:dv6 ¶"·çÉË6wÉš^!i«mb›rT“6ñÑIÀùè ”I8×M×mZ2™Þx¾'°õïj¾”Þy›9s„OÁÓá|Dÿ]g³0¿YH»Q©ÔºYÞ-TªÔ8ߥ³ø”NÙè·º‘þÈï&Bݽz'7á…ŽÚ„#@pû1øÑ´Â'ôp^P,ë}o=Q3RÔQ®,jJOz¨ç+°D¹[«Üºµ±ÄØ¢†DÜ„V{ó,;f±·”ЈJ;§!EúaN;>aÙMeÑׂÈñt#Ü­€_`úïVÂdŽi· ¯W|ú ]$B¸ä–©î3î1NŽà 6ãÚéë—Óé§Úà’Ø!š`Ÿ‚ìjÊ\çãüt·þöt;ƒ¯ÎR !æÊÄïQÚ€HñXZÏþ²š–´œV]:Éò K yÿ¡´gà—ô$}ˆqµÙ¼fŽÖÙ¹¾vN…Œ H\û¯»¼¾}Oé1b~µƒÊJf+5¨\fX#Ê…·NE’ãž Z ²ÄXTgë1ßýDì—º›¶±t—h‡Z GtÏÂÓš”ÆŸG4xÊ(FîH–§ î’ƒÄ;‹<ªòî–fd|wŠŽ.h%çåD””npT5õoÛýÀý™Ú÷i3]‡ìõd$mS‚cHoç ïŸÓtE2[4µä–ŸÑ%Ñàé=(`Ά²G¤w²H’v„? •8†z‹&M#5 ‡áÄGÙ®dºÅÍÓ)¤ºA¹à›I¨ŸÇ$ue+õÞˆ—¶ëÜïÖ^H¥Æ7Ü|‰ó 0¥Çwò”¢r×ç/Á0âó`¯[Œ< ¢qã@IæË=Ïèæ>ü¾œ“:š“\öùœcNØô鋿gøNLtf<£e(‘Ç~VäÖÁ:”-õ‰Ÿ§iʦ·íò‘óöÖдÿ^Ì%áX3šDaí'åÜ„ æíÑ%ó´žüÛ„iŒ$Xçµ-Ò(wjs ‡Þ?Kz|¡×¤½«ÔQ?÷å,ƒ \U† [ù…6ytp™Öªú ‡Wภ±Wîayßê'ãE M»N§Çys“›O·T–jP>‡;cß7¢ì$ú¤ùgeìÆ¦­”¡p;H(ì•ý>ÙÑÏm«DdöDà)bÊÝuˆ¦Ê÷ÉRˆÎ«¼}“‹N˜ìóÍÔeL3Žüù8kïi|™^T¢ âòGEl^á…s3ÔÝÁ{B¼PLàÒI ­ @j IÀ­{ëÈöcîZ†[î`tX´õ<\Ë—H†ÌEtõšé{<8£i&ã”Ö7àPåœ^ÒïqQ[Æ R®sy|y:¾Þ”‘šr—b¶;sÑcx˜ÆŽ’g»†=Š*’êmg™CÜwîž?ÝÞ…ó ZKš!¼Í»Öüùâ–Ü® íþi‡*ä#u’s~G$Æ%ñ¤8 òéMøJCûùÛ¼ Š *eÉ‘sî¼7UîB-ùu;6dó6¾hȺ×^Eµ¢DÒB•°>7®Ke0Ê1Êm•|G±ñP7Ül¼¶*é ‘Z—î6KVÊ"NX%þ9æÚØZYÅÚˆ Uu,]áÌé—„¾rÒ&'r,#~ƒ‘Øõä¥(çf„úØ!4S¦¡l•0¹ê˜<ÃÞˆ nê_s-âÄ{-èáWÒWcˆ„±.9¡ôp“›Tï Óm¨+ ¾LB™>°CÜ ÷I=Õ† Î#KŠ·tUeùiÿ>Kê-á°:)ûš` ?Xw°n'ý Kôåo&õ&}ñÞðëV©ôø†¤@XÚ5!{ì­à›îr9ILÂZ84p-ÂÎÈ‹ì:¾TŸJ,3gÜžH„›X+qª!“ÆF“JýO ù:<`j?àÓ§påm0YjÒ ;€²ežÿ8<«Ü!3º/µA(˜–~Ô &qTA²·Ñ{ׯó›S —TV=`t‰^˜jD,(È“ªlw#^rÇÅÞbaŸ· Ñ‚È'¸¥ÐòÚM ß9üÊrâvfðUÌl€7!u“¼d»ìá/I)F:¨ö-F…Ý€„`ææk bÿ;¡å°‘w§ Kïn‹ cäZ•jìjÓúûUì!p£Šªë÷¸ð™ß6l7M¶¼3DZ?F÷uK‘Ëä>‡ïãØ—øO•[›RCþÑa/Ì—wK±Ú•ñ‡hè[òékMw²U™3’$(5˜H'Øk¸gËÿB™`ú·§ˆ¬X¼µò,y.<¨PUŽî\âbá *tÜ` x_MÌc%Ïj/¯¹NL±÷¢°‰‡(2’°£Ñ©)3©DOg@c;ÑoôðFÝ’1zÓd“®°ÈGºuÂN×ÜDà™f/ ,qˆ8êÏÔjÖòVë<â~Ó^ãÕê'ÚcvPª¤jCðF4Ló¢ägÐØ¡¡Ÿ¶'lò"gËàã˜imØŽOfq°9ÀÌî,”äè”U½Ä»$#˜Ñ±óô“f‰Øxô¹5cQ%#áúI§=gO·þÛðÍg"cï˜Ö;o2DwU(€È Oin ‚1IŒýY®W(ÐF‚by|:a^>e¿3:So¨^@8h¶ÛÇävðÃGØ*‚o˜ëLIú1Oƒ—ðÚRÎ Ì?Å„3—m‡H·›ÖÌ2!ƒÄõd‹ñj3Ú0ÝhGÊÍ%Ï>Þ/¿7|éöQÙ9?Wtè0·ßãËà:Š'4×Ë>Ç8 ïµ–>•)¨“gI¼Õ R]pžðk>™ëÁálÕmvG¹?—ÉægZ¹Ô³¢éþÑlåÊí\Ÿ³ÔÁËóïfÏê­–é);U×(ÛÑ.ÛB©`|N«fÂOF‚ l Jè•ÅBXáû â›[œ°rj@§Lø£[ŸÑút"ß]ñ 7ŽnÝ9$à‘¾mtÝ,u ¾Âªòû¿‹8øÍ›pö‚·ï^À£ŠT-ãÜò÷'òíÖ£jœ©ªÅDqv˸´M+ïlyŽsK96¦yf‡h ,ó,‡pÎèý×Q`Š“ÎÁÝ×âOt¿¸{y¾ž»Ïþ³ê7~•àáÅUA. ºO{FÞ¡B¯á 6aìoYü »Õ~<,ÂØ‚1ž7«õx(h˜÷ê¶kQs2:›‹ÒÓ Y\VœgÔ?šdn°.¯1eOú@»‰è|Œ.úÓN^ÆÏé³yº*Â!.Ühb‚3RÄ!ë° CKp”^ýý¢¼eŸ¡ÉµeÀµºœ‘5Z]@³Ædù.ˆËøõ:2FÅÙ8¨^õ][Q§ µ€I.™Ö®ZàÀ üíËptâKL!äB·°ϡ㠱,sGr¾>Ûê:¦­)½óœíÚè˘ëN¡±Öçgpˆ¦@³³Ô¢S2Û®¢çîζV ½ûW­8ûý-æ\e.:öêE¿tŸáÿÝürȵBIš5eŽh¤ëÕ1QåhYL½àz|:Qk2—¿ØF¡ƒ³Í8\§=RàK“PGZñøz×ËËÞe!Çì„׿Ÿ‘”ÞN`³¬Ç…º^L ×^uZM¯Þ¥ŽæûñíèáÉ›çáM¹˜åS_05‡ËN|®®Îƒk"yx¯[bÖÕÇ寫_ýž½¢ãhÞê·Öà”ިο¹ÓIiÇ·Üíüý¤Leå‘ üv›œU¬’ò» þkòU\'üc4¬‘ÇI¤þÅ™¼IÿqÝpöþzý¸}Œ½Qí‡.üB®0}ÏÕ畨2~d‚í)O´xâï|¤QÞWy‡ý.k²¦6¨–Yc¿NþPé <{£\?½PÄ´’ZÉ”¤KR­œ—÷yö»hñº|]}û€×ü5÷®—µ?±k\êÌ,B¹î æ´ž±ÄŒœû¡¿ >§Òž­‘’«µÃLé)xq÷)ßþÇöøÄðjèàA_²—"¢ª<ñxVªñ‚‚¹L°±„IR†G 1¸Å'‘’»Ïº°#~W×—ú¢Þ‘ºlŠø™_‰Ï/èø<’å%*•Ø^eå—îxåÜ(D¹Õ’ÓV^ù·ýñç—ûÛÓÛüáùÞ<ð÷‚ãë+†Ê›[®;,ê΄>Êè8Ç-½Ñ<œ ÒoË{î$&8Èø‰¿‰¿“TÿZ|Gåõé#§øs·nU`R`Iu ¾ž}ú1ž§³‡ó‡MqÿÒ<äÆ?²Â_”WXêâhnú…¦úßn ò¤ Æ´&Ëye°Î¿%b.>clQ#2ŒGÐàoÃó\+u;ï8š{}aÐ8þÍ\†_<È­¾×žÇ#Ìmàº:æòñãwÎòìkhü6íWÙÈØ-ûòŒúY4æ:üâÁß§w­h㶦ž&̤àö©ùªÞ‡÷ñ]Ë´ÏzÍAÚ›\ŸC·²úsþXC’q°Òc–,¶>Š¡P¦Ÿ„@ÚDpuI…ã¨sû|M›ýÃÙô¼~jžúËíÔŽ»•gùøTrá„Tw4úš=øÌÞÒ?L¬*ªr‹p™¹ƒ{!?–ÇÌ0øòþoèù»ÅÇòcxÕ½ö¯‹rããåÁ‹ú³i,`$‹_´÷åûÉ•ß.mØD¦riFâÆº sÃ=ÚŸ0·@9†•ò! ÉC]IëŠ×gÎÞ^Î63n½è–?ñmÓ>®Íß"%ÒD²&á‹ËÜ»àìåéøqúhŸøôJ»»Â¼“pÁzšƒ•í`ו/„¯›–˜{z7rß²v2ٹ+ñ#ŒeÍðèðìbM’ïvåù–3?/³Ñ9N›ñ¡$Kܘÿ¡²Ä-‡*|tËè¸ÝÂ.6Ü¢h1sÇ4¶ÍmOü‰ÒÏyIöv¸/V-4;'R÷q$˜j{&?u¿§§[Þø[Ñ–Ø•¨¼ý\Ù ú80  ïÌYމ Ï?G“­!žÉVv,6“€x˜yÕcç{|’"OëûÖõÙ¿¤Š©³‰ ( 'zÜ@ÄSÒ ¡ÁÖ´*â½nÍp|UÌlJ½·C0ð6bbÒÒÄ" X ŠUÒ×#d ï*ZE~?”CSävNÍ©=•×EítjŸiÕd"ý*)DÆì#Z1ò$D„Ís¾¤ÎIÜR¦ºÊ‹e(ö/ëE‚=†¸¾ß¿5G9ˆ‡ëP§MžT’6m)> [²œx`<à¢IHF HiÒ‡å$ßµ,К@ H4E ëhˆM¢|ïXéã&iZo^àør£¨dÿ!µî2'ÏÂTe¯1JË=Wz  5 ƒ-Ô³F*RIRy™(a1”cœþ"ø bþÀMÒ1)ë.MŠ0mʾ]@rÄ]UOÕÑìY¯“½0+çŒá$Qûn㆗a9–=S¨T}*+>ÊL‹óCâCÄyWæí;ùEÜgƘ1Ü–2ÚHÏLˆd'À!o°‰!« Úz‘] ïLóm£Þ{ËË@ÆÎc•óP5†5²‡±é© ˜'¶þKâÊ Óò.u¿_\Ÿ½fµ&Q™Á+ XxO™i'D¨jÒnŠ •= .}w™ü¼-Ò,…¿¼„Ž“·\€òÜNí÷lIÖyí·Kú}¨†’ÙB{–ßÙ@ôÚîA~º5ÍÁ¾¯Šî{êé*(-1­÷¨ŒÀ%ÝIJéäRšñÝÌâÍ#®¢<´ôJM3ĘR/2Ðv‚±‡O/`q:hIRMF‡" ~mM±¯¾òÔI‚«t¡•®|ºr£~£Ýd-<§%Ãè@ÚîÕ^†Â÷YDé?EïñŽÊX:z/m ˆ!±1 ™R=ô)h 4šo£|4¿ÿC- >äÖÏoMö­ ¤ø’¢`?åœ@Ñ=ë,CHœÊœ3ö-H•ñ ÂŒ`ú9ÈEU ü„““µ¢SN¯6ÎfÓ5ÆéL©íç¨Ü1¨{ØÁ~äíÜì}lׇHÊ}ñÔ’Ó¢Y6 ëNG‘ÿݤ¼BœGGLó´#®«  zäY³0,)íëô3zŸn=’vv!-ælŸ¯J1IjSïµvÔ7sKãì¹Îµm¸àj—‚/ZBÝм²Â†87óùhÞÄœ@šV®1wže ÃÜÛ€‹R—ˆR Ið@¾ —!a(ýƒ*,¥†Â2‚¦bet6Y ѯ)6šVïò&¦xŒh°hT¹ó«Ê+²12“"h&ýLéá6@=ÃM/bô2²niµL$Œ|'®<† Í@6×b‡†@…7(á‡@ €šeÚX£X‡ZcQËam2Èİ¥$^`œ { nbÅó×¾N—zUÓ  _…êñÞbg–cÒæÂmC–a¥'ÞãÀøÞÅ =\\ðy·[<ñzSwªûFM!"¦lð]ìéðwf¾ºp5‘2ç8 ÖÖëeÒJðnòøô—1K›e>’$XçÚ·ÌçŒÒchÝÕtHò.بóXŒË6s”]DzWE0Bõ[<%T _4Ñj@LëÃ#¹x²dqƒKÅA×Ãi½“µóéçz*iîvDsÔ£!P [9bv))Ó ™€Š ž© #OJO®RµÂcÒP.½´)o~J ?‘â$èåܬ¿C=ZÌ Óä0jaÌe<ÈG·ÚÀ€6ƒf$g´Q0¼œÎ¤ÁtùÝŒ'䮀ÿ¿Ž½’#Tðè.êX­LÊ}6­Æ*ôeì·È_˜Àîeè”LoÙ ìΜ]³_Ù%^Žúºa%´îÕ‘O¶SUGÓ¦kÛÑ á̼'Ñíð¼ò$20_ÈyˆN‡ukùu‡è„T\bËñƒ]€À=}[ü9{æõL{_5q*pœ€vmÕâ{§'S$Ü÷z‘¾“ïêh²ŽqxåˆJ~Oœ°ØóúÃSœ§OϹÚÓ›DðJ¦/ ß^îÆÃ_½ã…ËéA>Õ§ðRŽP°)0м¾|×;ªÙtšÈ¹Ÿ˜eÝ<9ÁD–]éÜýnüìnò¶hÍkÐ)¸W·x²Ógâó~òzË0çŽDWKBÙ KÉÌÛ¹2À=u\ƒ9@7ŒåϘ‚ü~tÜx#¤‰ {Ë·êáà­^Ÿââ7Ã?íECf©Oˆæ¼û—|:p¶ëGÏ—S׊7ù–%¬âòú¸ÏB'Ú{˜±Œ.RY,ÉùןFï~Ú›L¢Ó‘NíÝyøäÕ çãƒÈáÍ<†ìáÇ]âc*X!~,$újÃO£ÍceÓµÙ àýRêWÅ\"ˆJ^l…hý%“TÁ›[¤6j÷q/gͲ¹9ð†m­ U8ࡉõ(œkŸÍâA®¯[ÀðD@±Ç _£15fü\˜}10í»éô¿ÁÔŸ7(f@㡦ç—bý#I1jˆ±åÆÒ ØP™~ Yßm’Ÿ #([ÐtZ‘%‘ât…£_¶£›?9Û^ï®W÷×ß=9GnZz˜sçýšú½Vи œH_óV6}6çL/¢##ßiƒÜªrlcšúÒjU–ˆ³c……ÅÏ^ÝõÅ\"ö}A«íâæ†òÐÈ…3Å9.nKPDb"ÓÉí‹z3ѸĘÓݸ}ZX«¬>ú«Õƒ3¹˜*ž´eAž~]ô¸gv½}…öíuŠó'c è`´è"Ñ‹zëBA#°µÜRUyvÎïÂ|ã@¿v#û×ö¥{eÔÄÍüH4ð*GÒÕÞ#Z¤lD2 &>²Å/ús÷LGŒ]q[¬$߯¨A¨’†"L^mêGË¿¾j|*¦r ™wÑæe਽I¨7^Çp:²ÅCŽå… ÅÜ`³pŽïguoGU¼¿–ûŸX‡# ~]o°YY(#©_ÎÍÿÔà3`R&í+"=aÍ]â°½žæ‡ýšÁÌhjs°2‚……o›½µ B켌z¾…yözÔÕéù~z?¿«Z#ÚŽ\Ž@Ú"íв<}H?6ÊØÄEÂDBìŸ/FP$$áÕÚú2%ä—ƒ×|Lý¨dX¯˜Ã£7 m¥ú&”QâÙ¬_ñî¥ktÞÜþáüGV'«$B¾1Y<ÁRÈñÍao¶ü#ßM€v®¼^c= ‚žj›»a©–d‹g,(3¡B‹’C™ôŒ}@\£Mc䬃À”ù#¦2vЫƒ€ >Œ1áäWí¨K­ (ZÐïï@O·¶¡lT,v« Sì°;ØxE.åà\†g­uhqcFúº\Ý4÷‹ûiq&ÕIiV©‰rü˜T—‹ ûq J¸ýQ? HøåÅÈ1“ )9/˜àîIé‘nw3i2…Ø$ÖûM=ÙL ™—åãª6òN(MÔp¶Góýr©Py7Z`ø·Dx­ §Nm!íl?½Ù†sÜEø‚ ‹9_77¢-£gg¯aÊ{&¨e ó3N ¤yÈŒ¯xgªgs3<»ÈnØ=029™‰ÕökÃ#·àDdR9wXà`PŽT÷¶-K‚œÝ+U2 t˜³rmdÑ›amJaE ]Ž*4‘Š•äR^SKæÎÎK^Ž4¤iy|AŽ?k÷Þ¾wï`Þ&u%ï V]Ì;±˜ïÄëdñ(œûͦyÑò¬‹©ÚùÞZDNÇI;‘ÈH7€ðéo›Ž¼­µ„Ý:ƒÔw„j T¹ÞÛ¾)êé1Ââ:¨”)‹«©4 ¹Ö€¸>ε’ÈÁ˜²fê7»™ê ûd c»úT%0î5–K¡hØ?á§\ì5'u Ç|¾KÂÂcÓ»'Ë7:íkgð­Än(,[‘ðÕàQSpàDIºN¨ Žú®QtrÿZß;ÕXG:) .Öý±È¥Ù¹.—4ky-ÏÕ˜ŒÐ]E^g…ÊÒz)s——´ÜàŒbB*’Ah7£<™·c¦gx(èNsá¾¼•F„ß*+è ǽЎ$±5ÉNök¬AÓék½Þ$JâcIóh“/½¥ãåõt¹Ó5Ì‚u®í¦¡¾4U[bào|yBl°ÄèÑM±ñ‹mz5~6€æ(°Ô ol™ç§‹¿…ë@ïG=³£%F„8“#Õðsizúè&G=ˆÀ°Úc±2Bëìµ@rKZËJ´U´µ± $¹ˆܾ¯ä7YÐðr}&ƒŽu¦žoùE IùNÎÓtWÑ;$ž'Bv!õ»…‘Ì‘ѵøå›èÛÒAGj£¡D\îÈêm–§@C|J>sP’‚N,"ªbÛ5Œ&WäQÕì<­ª¼ á ÚÓã(fëÄVŒ¦iTƒÇAr’Ÿ+Th,ª±)bw`M¿Šš2…]³¥Ò¬ýq:2yŽh>²y°´tØ„iœæY1ªÇ¾‘ñˆ<×a—ÞÖ¬s¦Ý»µ¹ãŸƒ|ñ-mé ™]ˆ†”óãvõÄó>ì&T'tMƒF®ÔßÈÐ¥Ç|§à—Í0'Ó뉭Šö¦é‹ÒØðŠx {È›“,V®]ÒŽÄSœû©“öÔæôÙªwré Ü*šlMI¤‘šØçG7Šô‡ªŠdk×<,B±a]ùÁ’ ™ÅÿdJБõ0T‡[˜I‡§”ª÷#žKu®0€G©ÂKÅ®Fj ¦$Jžeµ¢UuÌ”H/Xù/¿¼Ê*Mø1̹Œ½¨½Fk5}È–ÊæO;j¦ð#…RµôÆ J“ ï©EŽfÐÀ 5,Ñ‘>Ѱ±$@7 H&Û¼˜¤kphkÚÒøy~T`?Ê\Sk˜µë'+Ží!,¶ G:â¤"ƒ¿Œ \ǽ´Wão–Ð!†/pû²-²³{ï[Λ9»&G|C.I‡üL›ü lÆãLXÄñï1nwPï1̪ ªY\m:§EðâY´‚Àç ›ÀX…›f$d˜Wéa¥â#»‘ Êï±:÷ˆ¬À Üb*à<x»ÎmñìëÏ‘h8“ªú(:|¿Îu Gõ:¨^Þ—àCõÝé‚lHÎ74gz´‚ë0=ZR·v"q2Ю¢k#«D20·Û 1M·g"3àø¹@uT’Q³Ì}j/Zä˜ÒKËÍoö ¯^hF#¾~{¸ùÀ|˜ØOÔöf¦ ±­•È É*WâiÔxyQÛ¬¢êxb¨h&–€ýä²A† 4ä9Ö Õ5›áõu  Ý*ö.”g%ý™q¤ÛÙÈ}/ ß4ÎâN««Bï%1¤›s»GžÔòæx²‡ŽPDÍ¥+Ó^š×laŽ’X\Ý’‹&Í©>U«ƒäg«éÉRD~»`fo± ¯Fˆg‘Ýu—&3ø@@K÷ &æý ’‡œPvÝ‹·¹Õ“š'Ñ2ÜÇ÷ ¯pÄ¢NÔvÊ‚W w •»VÔI°X´—A æºñ«°àXTwÁ©„žÞ-}ˉ®A^Ä›\i8† ó©ž_§AmÔª7‹6Aã.Õ áy„Þ¬CÐ-ò¶ÞèÑ’ UÎ…œGøz,Z ²¤¾,ôâ­i‰Æ[tîeăÅ4rí 1]Î|5 ö†´Ì6yšSj™Ê`7ÑÛNÒ‰Ñ9ÊðRUˆ2S@ ®–ÎÌç–ëM#Ô-òŠìñ"èªަ%öbr?šè#7xš¾èÖ˜k`-Ô€l±ÑÈÀÎYðây1ä稹e‡±–†ëñù7 ¯Pn¶ ….š¶KA¸ IÐÏ©7ìУòi¬úUƒ4ÑL‰…¡Ž“¸ûý0Ïeã(h"¨?‹Þ¹…{džìdÁâ5éœç—(y}æŽZ£à-¬Ïûô†œèØ›‚Ö·\ê\Aê刧´O2ŽuêÅ/ʲ•`HŸDPnžÀÐáê/æÚ úð{Àü{Idõn»nì«øa1 'Ÿü¬f ;ÓÕRÆ•º…ó_Ÿf=ü~úýé+Åñ¤(ã°Ì‘-}fæüw…XÅá6·(Ýö›6¢"hº:Ï‹¤øš½˜ˆØÍÖ@pýÕŸöãqO#Whÿ/vÙûo¹Í¼>ü¯®Ý,¤n6݈–:¾LŸ›ÂŽùÃ}ñŽÎóG©bP'˜áF¯-êiXô6ÁÿäÒǼ&™FVµ±^)*¦Iq6ÑǬ°Ò&#žx„†“ €ÇCýlfMÃÁÛðÚüd<ÄRæ’¾GU™xOV:ƒ¦q—Bë‰òl$ê¦qFó}á’ù25Ù<ß›£HíÈ6ù³aÖæuxŸåpJ.1Ûb=1zçâ )|ÈÈ¿Ý^[ó‚Ž—¼‹Ór ~äºõjÏ›Îk¹.aF:AfØ=6È-KËhxÑÊ8'áÏõÓ'ï×ïùûÌÏmkQ6Iöð£\ª¾hÕº÷éüLÕ§’GÑo—º| ¢zzìï8ì#lм&ñ´¦#Ë-Á˜e$šáó¿8ÕÚtbPž>Ý£\ºd¥D\Ä:­'ßåW.9¨ó€£ºÂfRßqàÖ¢Ù'Ø(ÇJhœ}aýÆlD‹&ÌàJîwþm¶ï`ùH 7_îRœ+¢Ž!OfÕ΀鄀ühø £zoáªJÆú³r6I1@»ØŽ­ºçQö£Õ,P|;3¶Œ!oçXVg_A]9€fàâ„‚˜ªMî’ð—ùVœÕ¶D®yp¸¡Ïmÿ—5Üû®Ü^Ñ4XAC&\=÷áËá™ó7Ò-[Ý×7Ƭõ^ ñ~‰h5í“RŽ+oš ÇWm›H¸:²gÄsÓ#`­ŸºE‚“Æ øužïÊ™|êΡtlÕ-+o„çª2MÝnU©gµÁGˆ…'Í›¾Òo8Лεü¾èZ²ê»és§?ß²g Ge¦ê/ ðŒÞnѰ’5‘alBŠý®îzs¼Dbåy`*V9€é9Ý6-ì•Áq)1:«VøAò6`ѱ-Á¨¢e—q{³9,9+²f=ÑËLvÞ3cÛ ŽÎâT%ÓÇX]±‹O‡Ìϰ¢#Šâ.÷É$Óà–/Cß8ç¹mä/aÕdЯNñqNÔ‹L®´À° ™ìñEÖ–U 9N{Þ£ º¢ ¿8ÔW«ˆúFÞ/WÀqðã#õjÂ3BŸRÝ'=s3)àþ3Æ5&‚¿ÃØœ[Æ$™÷‘ÓÈ-ÅÒXχ8yB Ÿžß=#.öuàuŒ¿î¯Y˜;¬ÔÇ/â¢ÚSNyIÎÏÍ\=r¡…Ñ/˜òq ð+e¤NÞÒKc‰Ô—àâÉðîc¸ÞØÅ97xÓÖ†>u\á­·Üáã8D›Ü¬·½7Øj| á @¨uGô{² KˆžÑävÆX 1œãò&DìQpvŒdާYÜвΉšA‘rz`ºÅ|¶×/à6æë?S[ê¸B0¤gÀJh8W¢› ^4…8˜ ªÛQt¾N¢Ö¹\`!ç‹¶¡Ó¯ï+ÑÐÍ —·Qx&iŸ0À`Ɔœm†zøñÇ=Ý…ä"Ö »/PÓa5ßgËÇâiX‡Œß¼ÿ§Ï¹XÄ)ç€fwg¥?ŒK|z('ÈÓÜç¤|ÍÉ+Q|0ìmF°ýEý´«‚%TüºB¹­ß…2–‡oïcO€\IéEA<Ì]ÌŒ²ÉNT:åt¢qFöM$szÖÆß6™^Úýk×1ê®lmXA` · _ëÚç1ÍoA[Cº³]ãÓ3‰ŽøX· àîùÓ‚ýçéóøÙÖ"gÅ!òz~ÊÇFÖM¶Ü´)åÂ>Àonì7HÀÚbKgh­ êM4¹ùq  þ—žÀƼˆ Q¦3v)ý7—raaÚŽ…«¼ÒxávêšPa6_gX¦±kmÄø{løøpÿGÿÌ«$IE«°ÎlÃÇ€ÐרïH  .“ ûí'L/ Ð^äØY°wM“Öþ íÀºÒµ¸„êWÖìv¤Ã¤Üô½\Ùž‰SÕš èꄌrо 9Þ¥ÿ4:›Ì]!lôŠú 5ÏÙob"•†ü¹Æµ'ˆµ¯§ÿÖ5‡ ÏÈœ> â_ŽZg(ˆ,¿÷.çÖ˜Çгèž5R/nZ(IO˜j¯ú´ ÅÌî©‘Oz™çVIO–(%HÖ~2ã?O¥Ž~'–“æ|je—x?`§IÂZùÄåƒífhh)‚bK„r „ À—"”)E° A3Òò6¯ðâeÍ?µM—,µ°J0~}ï¨'žíì´›ÆÕðv´¼¯\¹‹Û=³k• b`L®â> ”¯åÐ ‰%BèneÍùiþ3SruH@sãUÅãësŠßÝŸÂD§e&4kgüœµ¨"Iì_Ûh ÇéM³1ŒÄâ=š ü£ ¯c[ÄÌ·XÚ¦—‡»ðŽj‡ª!·½—ÑäAç@c vm'ÎÓ\ôKkßðHtbkàvV£=i¸ø³ÍWj– Áû¢DèÝB¡*VµÕ9æe§Õ¦àŒKH«ÀˆeÒ;²ƒö¤ ¾îŽxùÍîf#PE¶l¡Ñó‹Qì°¥`>µêø(±µÂó­–n0a`hèÓ ·:nñ1ZÚ)­·•î>˜ë¬0u2qËwh¾+œks­e‘I¡ˆó%‰-u± òÇÕáŽå­ŠJ#¨'ૈ2 b¢qnÔ¬é»JO‡x·°F¨UàY]<ãó»c.‚ê5¡ý§ƒ‹èvTàâÖ[¡•}Ýqÿ ]I”^V¤Ã#»ÛÅΈù|ÅÆl‡D[×çbÒ.JèÂÜ왲שÕç²­‚C®†]hz²3s¯ÏÏz™ô¿ŒMT«‘²6茜4·Ù8\åfÔý4¬«óìk×ö1¶žgæ|ÕC·ʼnø]5ŠªO¬<â´¶FOhìhC†á‡Úuõ›õpâî÷ªLjã!oÿW…—Íñ±ÔÞÉ^ׯȔÓ;SVA´nÈ&Æ~fåcŽm ‘ÞÝöÛ‡3ì/D‡àéÜuÑFS}æ‚÷dÌTǽp³]iÆÛÕšM’ÞÅ4/_ÀG+d½±î ¨<óß)¤ŒA–mXKé Ï’¸ÀÚ|¬¾•,Ö2ò0#?Ts[S5ˆ·m‘µ”aÓãª/¸³ JõC~ oG=ãЗHšI<_‹Q0óΡ,’}üŠgãôthk¸Ç ^\“m“š¿«­Þ‘xrßaõ'Yš>ÀÚs® Õf0¥Ì±Àà9Žï6¥-ŒÔÎá¨M&ÅZä~8[2íÊCú'.Ô¶£` ¾’]åZB"<è=øé”\å푽 =–àÛÄûp +»ˆKe€i¡æIøzºõÔÎ Ç(ÖbÏEºP\RО%Ä:ô䢯PÑòRÍÊ<>Ü^ÂzˆkC$ùŠJÃÏî¦<$ã÷KOXZKÔèÐohÏ噯´´hâi°¾÷u¾žŽ xöñó½xŸÕà €É r’j}5ØuŸÕjuJCê¬qHd—¸²äK¯• …Ïó!,‡q¢Ì:ÒJh°ØÀ°œŠ ZÌIL-¼¥T+i1­+¥Óu»ë³NKC r§éT2“^}hZ·™«  ÑüœrDñbM>2=ÝTjoÈ}¼Emü€E(ßj%q ùy—Î8ÛÛLW+%ͺ{ƒÆx§b/Z¡°õI¬ÊÞ³›H];ç„äÆnübµ¸%r–EB,@á(¹|gŽêXäDFäÐK£ÌÄ0Êñ=ûêeO“d ÇLñZïgxgiêxI9µ"ë9ÝñTC šiÅ9H,ÌÅaîýjŸ¨‹æl©ŽhO¾âõÝáL∱ÌêµpÖcïŠU}<&½Xbé0"ÙP|›sdËS©C–€+¯"V¸7˜ åL)ûbgë<8*×âp“ÖЇ鑉|µ÷ÆŠ0`Ñ´pXö/ºV¥¢6BeL=®¸.$.¢–0P¤ÙÃHƒ²xÞYåQcM½ S·Œ#|‡31ܤŒL2°VäF@ŸîpWC„çÍ›³„ÍáX‹-½žQóh£ [EÔÁ6Hïß4n¿ U§èiAy‡¶Vµ¹ù,æÒsØifWŸaŽÊ,Þ'”QÓÓçE·ß³SÉgÜ" +U›†£ýS?ƒîGæRÊ€/£<.²cG’(|>(Æ|ÛºíÎؽ8q‡GHÐe¤k{¦Ýµ-1QNä!k°+åmËFŸ]¥÷×ÀÿÑÜHήZœš3§ÓôRÊÐe™K­2PC,:lS¤~sZ•Ѥãae˜ÿŽi“0MŠ™?Ú¼4 “»¨Ð®€ÚJõi?óx.ü¿O7Y–‚ färÝLUÆ_ó§RÉjýw%þÂ×7!>z„ô'i _à#‹XvÓþÆ02$P¯V”‘í¼5?¶é£þE$˜é7—cŽÞ.߮߯¾º- ?P¸i¤KâÆ=’`\.3€nÐ:•$®ìÜ+b¹yë¥2”ÄAÝÎ5ÀYÌžâí³äW“.ã· 4)‚ýçÆXÞX!ÀFs=IàŽ7(ÜBBÿ) »rYÕºƒ#ÃM`©Øí\/´Ž8ºœ ®ÏGpÝó÷Ë÷¡ok­DéŠÀ¶‘½ÔnáÊâýQéCºåÔ5ÿVâûè3•¶ƒ¬šîƒa”­°^L‹ÔÆÔGr¯P^n×ó² ˆF}{è*"?z§VøŠ·jùw—c—ƒ~‚ËQùð¡šXÉb4‘×Åך3ƺ9¦0*P+-ŽäàI\[bMþŒw¤<¡ñ'Á´¹}¿wnt“ÈhBóîdÉ_Ð!ÊTøo'S´Ë%„¦ðë€äͰ®á^ O ×b´äCŒ•ºü±½üê¹»;{íãHS*Üöò䡲ªü.£‰-‡,­P¢9&?0–ÄæÙì´~‡Âé°¯2s‡øÉìŽøëóësÊú NG£(ÆÕaÞ"õã­ éw ²ÙP•}Í>!o9{µM5­õf+ò7n£‡Œ¤ãÙÓ³ÀZiakÎVñœULoÛ¿?äTZHÞëŒì´(¸–@TÛ­ÕÙÌë}Ên¤³<ö~*ï_u6d„§X"̃—Ðz‰Ò—ÜZQ­Í¯Ÿ4eRXa6+Ÿï€iAéÀø”ÁÏJÕÓú°2ü"¶GΫÖÙÎ5[ŒÚê1,a¹4ØbØ[}ãlðµmÕ38“Ò,™S÷oœ=p :4„Ðþ£~I@õ2R9‡.n.´KDV¯Id©ú†àSÝË’ÉFMìc`Mä„a–7Q„ÒQáI½v¾hL¦©vsN@‚ݲÝ Í‘Í$ºSï€Y¦Pè¯o“Y—Ço¨©RÄúz=P$ÞW:©sí1S¨ÕT `8xM#£¹ä¡s’9¾0..Öl¸e)Bìš¡nœA &1PÕÎ9Ñó%Þîpýe[ÊSª±Æg›áïG^OÕ„ ×ZÇÃs9×§Œ²ªfm=ÇÆ¬atöÄ.Óô­tÀ«Š?%i@zBü04g'3WÙ5ÏHh˜léã1žür8¥ärêdy5ƒXËãS½u/w §_÷ß›¼€§/Ø`”F¼u‡ùbí*Øk8‘˜3ǃnÐ&ee±?ìÔ3õÆb)³gp{± ò×ëª(^=.ò‚Ï(§Z™X¥.¦É 1ØgfW³0qFÈϱ;LFç½ü»¾Ø©ÈÇNµxs‚âg&£#ƒm­öLRÃ(³!}ÑDd†y'Ÿ÷ëØ$8r‚6¢ýßÞg'vää ¶‘ȘC[ä€_9°é„ÙfVXH<8WE-™d_YÍi‹;š˜ì»ÏSs©ÓšY2!¿Ay‚Ñka˜IwÓ@ Œwš1¶Æ]Ò™49Ý(•ç2…Ë4†õn“¡O©ÀÕf>¥æ(Õ[ïŽdÀ°ØvE’Aá½ûs‹nZ¨¾RѪHÒ©] )£B3$QÎùÖ=>Y_RöÎ\;÷q(D §†h( Ðcå"Re2[ÁÁc‚²KhïⳈ2íFðgB¾9$(:Oî’/îžš¶šê{€Ü}P„Iy«r|1ù*Vƒ>#ëF_Âmí©9ápØE”T|G -H³ŽÞŽ65âRPwI{W£PØ$ðf´ ÏHÏq|ŽˆL|ºfRÒÒ“8jª·›ZÂh„`ÏÔÏÞ*ñ‚a bƒ6ïóÙx³OüxŸ pÚs³„ðŠ­e×Ók[ü Ý´›¤¯d*w0½Û§„' ¾&ñ bª‘¿?ÄdM{á7EBÛØ% tº‹#¾kò€Ÿ~Á7®Ñü.j}¨ à'¾"ãëä!R‡ÈŠsèæÍGa8<¦% &ÉÃBÍ[RþhÿLjsl·ØbÞ¢3]sÛKJ›<ºy’†¹Uk`ß1ÄŽÀeGúƒþÞÀ’šëÑÀàßú‡hÌ4",˜áO"Gp ™+ôy•˜¼ÉÝMºñr#g©·-ÁGöq{–õ讹ÐåEâm;fqbrE"ØԹ# —÷ –Ò2ð¨€0>ËgÁ«™3BÍ4€nì§cô}TݪZ…‚]ÏÃô‰!b¼i¿‘!¢ª|̽ÏnqD_´qÚ˜ ü\fÌ(‚¢ŒêüR.¼-oú8Ș–Æ}'Ã-~ˆã)áû©ƒØ±ƒ¨‰’ß6A­BSN5×ì4§É*/ÝKgD…È ”ZµLU×X¼tžUMN„ö— Å‹§ží›Û×S|c (|ì¡ÉÚ`Œ?–”!^9Áõ^Ï?µ0,”;BxJhYÞÔÛm#9(£šË÷áCŠÕJ†X ;¸cGyT e-ØLÅ[(*¹ê@±‘²NÞê[«É ½§0éY)*Ù^-chFQÕk"à&¸ùF;Ñ{Òc[S¹Ê}¹ <Î,Qdɱ…åÎwèAiå½HÇçVVj{í£~–$ÌÝÔ¦ ZVÅè[1|°(üŠ+C‘Ý•eÕR*·Àˆ <Žp˜ ±Ì£Ä²Ù‡ØRÉ*Œª¬} r1‹›!]µ†+ Qybîj4u* W´ H ˆºdâ@¹ÄãP{‘õë'—-ð.·•ŒŸ…1tTÈÖ`™‡J NÏ–üA¤qNø?êäFi´|)åÙ®îF†*¥fÁ!ÛÛ”ïË^1ŠkÓȃÆèfˆ÷í%ª5]» oñ]/[-<àXº:Ïn’dëi7M¹;‘D¦&k-ÓŽmÊÆÉ•ú¡Ò”7¥Ò]hŽ·Ñ¬¢2e.F!eeª ëý ö]æ7úÕÀÉ‹sJÙ*p(Ç:—¿ø”ŸâSþ|´ñT6Ê\?÷Ô ÷l¼?¯ùÀOd_ã&aÒÆ‰ÀsõRŠÿ–~÷!¯:S€áá‚ñ·ûcN”saAªK ^ÐDí¡•«ŠSï=$Q§D¬Ø{‚ ¤âÕ ¤ ýŠ‹!ÏäYãñm´OB—³ÄS¡Žq®=ÉidØþ_¡ÉÈVž•¡KˆI#M –Õ®yþQš,‹ß3ŠÀw12ÌQÚKÌøÓJø"GW6®'D¯¾\^¿¾^4mJÎîCnBùû“»nL“ïr–j0o¤ýWüš…«ðkaB r¢‘dú¶Ú›%õýX=ÖfžA”8CÅ2L%Äè¹§˜j~ôÒûmƒ¦ÆÙÕ{LÎâ¹Ç JœøPðÀÀ@™2Y„ä`¼#õú7|/Vº%a'FË1¹ÒO¥5BšåÜ­ûÛ×ÛtlDf¶LM"SÿÀî_Vån|õöéûù{[—Ç긻Œ—g„ HÖyú[Á‘õP#ô¢¡Ùo´çuVØãU}ƒ[–[üØ3ÕžZ梘Cçb¢‰ÓÓñ æ›Çi ÃÃ=´þ5ØU‡C8tQH²ÂE’ßZm¿|³º;¢‘.~ñÉé{–èfëÜ“`§ûD ´E]z,F¸çõ<ãÉ{Ħ·p°è¡TÈO}Lô.OïȺ~ˆ¡ Aî&µ- ‰õDDkF)¾‹Ìœ²]fËéy#‘Ø^>ŠÞáXGÊ5áÊPÛ ë:)U~ÿÈR_ÛC8q¦¶þ”¶ûìLK$ÒóÀ´èG;ý¾ðFâF>݇aðÉ篟¦F?ð¥zá.âsú–}zéËŠa <3o—Â>(tíà®K_Á@ô@Ü$œéÊøÀ÷êÝð޼=5+îæ¯t†'ó Z+¹‡GÚ’wª²_óÁµ2hž:¬nT¾=$êp®®1.Ù…îêM×™!R5Œ¿ ÔJ3:þ•Ú¾Iþ5Dè<;ÍØÃdíû{ªÅ}÷?aù.Ç0üa úÆ…‰Ø^ˆEÃ}ÿ"A÷M ×8‘éïæ–ÑïQ[f#²ßÈ«e7ܺ¥ß#âÑw üÂ(©Ýñf·0âPS›útžžaêy:ЋÏ*H·6çó-lJß“¼Ybf‘ºº[橳Ôyg3ë9ÕÂrý°Ë»•ÚcJhUý¸ó:hËËêó„©a’è/mûBƒ‡°x°®ºÚ®µ’Î¥ÇESÜJ]9+`›þ†‹! w¥Fðù3Ðò‡XI m“ÜÉ=ØMy{Ks™¸¤Ïò†j‡cTL¥Vönå©l¹…S`reG£äîØ¿^µÈøGøÃA9Ðv& 1ý‰9•îÒ„VźzÝ*›8Ê­S$§ùa‡»“ÏÒ³8…æÒð'ú–rk{0 xãZÅÇ¿6²ïî”!~Ç÷2býÖ;*¸¢Ÿr¨­ÂŒ<Úáï5„þÊ,W@~Ý9€ƒ"?ÂáèeÓ'wóíÔšUznØøAÔ;ŽÉp{ß$bYö FÊÖqpü|úvþvœèêç;ê`*{|!²ðaž´žîè¦i´'¤y=¬ŸÌ“Uàƒ g®Ú ÊÞþržŠŽ¥ŒW܈+¥eL—Š<*h‹ßåõ½Yæ@ìÍØŽ¢Ž-FgÕ–2wÚ-U„H­úh^›( V |H¤mUàÃG+$ÞÄÚ¡ò¹·1—JM_•Õ+u:‚ýJÛŠ<þ¯åM­0Ÿµ{ÁøÈj‰*Šiä#×Ù–¸óˆÿØèïÃ×"=Ö1ÿ”ÏX_=–_¬6ÎбƈOè“ fºo‹õ!¸¥–¸ª\ÃÔ2ÉÔÉ—[>º€›vš9®šJGB‰Ò„EÄ;Ä%5ç–\®a1ÕùÖ±dH[ì–Ë`ödÁ~eƒp}‹Ba±‹{SCŽ¿wO–9x;¤Zp‘Ô')2“7>¼~âáëåíúVŸë.eêçs¼ËD d™^žm`U שþ^ˆÆlAµbZ–®È)#-`š@¶x­T‡S>!ÌêfN”6¤ ‡Öd‚áSl­Èðgì=ö#rò`nrò¯YgIðÆÞ‹Õ¯n¢ %ÜØí0™‚%üÿn-Úûž<:ù˜õ¯ã%(÷'êZÒ¡‰Ú¢ U‘ÚBÕEÝ«êvÎõ&›Õ²iWÜÀîˆÉ‘px`ü‡Ë‹]‘ÿ‹ÓÊÙÉ8Iz0ôû—Ð×t íþ6j*Meüyø¯†MÔ8–hÈS ­XJ™Ç¡k#˜O‡®*’Ès M C€‡îtáç ðß•4æÌ$¿gNÅÎAÔª8XäN_ÙXÁû@ûa{›øŽCÁÅ„oˆ~– ‹ v³ð¼±'2vû"×k˜›ÄÍùÂqÃwÚÎÌ><-m{ÕB}£1L'$ÅŒO"ôƒöÏ|n –tVu겎†"\"î±¶oY¯Æà'×1gx¥}ñ€qdzö~A‘Ö|ÖZë̦ôFJkMð´ÇU‚À‹Ö|ˆÜ•¤×C n-J` L¹º ?§u{ŒfièœÛyó¨ ž¢yî4æB¡Ëñš‘ªÅ@ä-û“‡{C5ñÉäÜ^Xÿq Õ`y³ÍnZàF íE޼Wé×ûÖ?¿léÛÕÞbe.ôç˜iHDõóÄA ¹Øœš1À¾ƒâHB‡qÓtZüŽº­}¼äv4ÏQbôu*‘܈Ø('l`Áþy`¦¼s\  ‡ÍX¹ÎÇñìÜ´.ÔFo)*! :ÎJÕ4­¨hY¡Á=ÉZÞ’dBþU¹5½ùû3ÂzæOk«pC¾µ{Š4ki¦>_¯faŹV3Mã‰L‰JzY.…{ ZÕGšQ–à’z@—Z<`Kgo6µ¿…à[˜¨UðMؼvÁ]p}Ç<=aªj 5`Ì3­m 5yÚ /ˆz½Rç”­ä>æ#ªANÅñÄ—n¤'’%3Q†æ"¶‰¶=«òµfNßé/V ?ÏŠt™,a! ƒ¤‚ÍGÓ¾¨$¯„ùy”â Xãm*u*±/*úÇY$¼ÆÃoÛp]›1B³Øœy=”âŠØ&Ñ?`A3zošx*4áräAnþ¦-^æÄ†Êñq¼™pŸ§{–’•Üdì›$åøyM Ç8òÒ÷–ûý<$ØÌE×B!“«˜]/}%–Ï·ËZ7€B«@”ƒ¿}‹,®»8ÉG•ðãô‰1ÅjÆ(Oýµä³ëvz]¿ÇÒ grñuø^†+Æÿ+Ž*:]ëXEô,^Á¦rÕý4´ÞÕö›W°<ìkESŒÙÌôù2$ý»šxgo )rîþˆ‘ô;Ï$fpÑ@±¯*‹iIýÙ7^¡2_H¾fQ$½@g0úùk‘N")ÅiqµFŠï›IB•ëRºÕ‘Ù)±f×ï"øÙ_’ClLÈ—øN…hŸ€Ø; (ïW×ÑH)NþnE:]Íô}3™ú]¦ýVG(îÉMà8T–£lm<ØØ¶7ëb¬| 9I[bîÅ,³v=!)Ï’)jîvò N0óŽÝ/ÚÄ»–œéHibF¶yޱN4EYðÒY]’]Á1}ÄÞz´ÈÐÓ•#¿Rôs#‰}Œ³™'ãúH¨Ðꘗ­>-_*¢x©z?üN"**—ˆ—ŠÐŒbÙ–Äñú‹·±C­ŒxÉÞî‘P§‰)•ñ÷(î’ŽF4âÚlbsö9>•Ø­o¡\Áã‹ÛmÀù• Wh3¨˜±Á¥Žÿ5›dÆ,3Qï!~!`LCžÜŒB‚7ä•\Í  ¹aëËv~»Îörw‰òÛß™?µéƒR€ &Ãuo¹nnO®5'`VSœ2¤—GVµŽ¾̈½õŒšj£¼:à´ùÍ á€27@Þ¼½ÚÉÑëû#)IËõ¤…ÜšHœï¹èGª¤¹+É0â#æt‡§c«=……fáQ¬_%é XºMÙ§3ûüÙ´„ŒWrÉÄÇ#Ò\*j Eåïîà8Ž‘‘8'„{Bæ‰cjA~¡6ØWK' ÔŸK©®œ°2ÉËÓ+Q¸KÌ.aæÙ̃È]ÝZ‮ßi¿YÍë2Z.8IMä×A?I®·ûoêV,±œ¨U•>ÆEóâObX÷Ha*!ÜŽ‹àî x¯tGîýÁ ýíBÐÀÀúîužm­RÍ Ï™A`cŽ&Úã&å)µ©DD‡³-îõ•èÔß<V öÖ’-)T…]· Ø\žµXrvXHB4q¹âÉxã”+0#û{U· ä;/ô›Ð±ËÃ_þÉ]кçF ŠÈ·Àsg%°MÌÇ}fTt0Áa†WÏ…Ô%dTwnvŽ¥ÔDä Ë€xeŽcöS—R'Ó•ÃÓ)H¹•2aµeñIy ø[r[,Ž4÷ïl$ž[ÓWËðÈÿh¨÷¿Ú„ êDFO¡[FJy'ã\ýD›?¬_íqüïžÍ<é}œDê‘·ÄÐìmA3%í¿Îù$°¿=Ð8gP¹“ô>/xðV_²ñÅEÆè™]›ã¼×÷ÄdF÷÷Ï›ÆO™©9ûi ¥a3´Ñf"nÔžXk¦°Qš¥Bx3#܀ʣ~ÜëFÅn÷ù)ÁØ+ÝZ@p¾„ÁßÜnë Å WÍ¢v™u t®Ú[ÄëœQèÀD/û,•ž!ŠÚˆJ{öÒ¨`‹:šÚlÚƒLòzRÞrŸ&*M[ÏM”ë[­+ÑCüü KVøm5^•À§~ ä]„o-r¿¥‡$ŠÉ#¶½T£9J.•ë]1eA*Ûñ™æÙ#IÃMÜFÖÖ=umî5üÏvjÕ¾Ò¯´@¶-or”,l”x±jÏ"Oã,É´L0—ªÓIÍ®¢ =ÄgÕTOh<¹*1VÖÁcäÏÇ/)oã}º;§:õU§»j!ìO1e öUÈŠBô×:¨ ÕD¼“Sš"O´ Z]нÛe”éㆀë-u‰`’£Ìÿ”ïÆ }®ÖáAU¡ üÛÕ• ªê¬‚…´\­AP=À$‚3â1*´a.ôüíZ7ÚãÍe48ÀÌJ,*°¶>£"UØ~¸cp$~ØD[QÌ7q:3SÙsÒÓn…4-A í©ªŠ`ïÙTfÈUÁ}¬07¤SЖì§"ÁØ1<_¬j+"r$7É #6g¥ŸKмyA“ò,JC¹p”¤­ÏúVV¸6L3™“àCÚò(=9ƒßÎÓqÓ]÷Yº­ T5+=þM¢%är–ûs?ª¿B[ˆ­”u_k9®Z„Ï·‰Xt¯G¡,ÉéqóaÃÝV»¥¥ÜcÂÛ6h ùûì8¶TÜ{¶ñTä÷€BD©Ó‹¡-ɬõÑŸ9WñÜ\é{ÚcŠÚnó4ú{±7;‰HGBÖT–Р Õ]¨Ý³•Ã×?­®$!ïU»Ì¦ˆäÖ/-#y pGH;´Ýšƒ^—æ„‹ØjB½ùhÑåÓÇ:'ÈŸ5í YV²ñ!"HH.bO[5¡„qt?rkWÕf­ªÈÖîl䱚aäè™Pk52¦]u®9Éâp/TÒˆ˜7¹3@‚»íˆ*ÍÚ¹øÜì›Ùõ ůi‘?’,`ËM3Â*‘B¢´VZ•A›oÍaE ¢k N‹“Ž^ïótªp®/hGg/´Ó%xž³r%­‚J̼Ô,õóy¡3Œd)'U8Úᔇù³£—øªZ ¿}Õî4äû”‰³qq¤©ªìsÓMÃ~ŽH{¬ÕÂOêüeïo°W•,I>)EÕ~ "[sS4Ìä)S³R‰q‹93×&(et|:‡„§Ñ>ârãÂü+zÅêÕ÷ìÁAWy£ ·û“ˆ¤”¡ß¶cµ$lvKwÃmyJK…ú4w½¡îÑäNBü'vƒeÔê„íð>M“–Ns…g1r•±Õö ÞÕN”©'Caœ,Øn`aÚ½³W2à€lr+¬Ws( R ~w$ ],>TÑkÆ@‘ž8X-–=C@}I4ðe ‡Óá³éWá\x»Êaý-üAOMNõ j¢ßWêr&½Ép™ªÕLy¿\WªÄp­VÕŸ?â%§×DÑ_òv~ëÛ0/Y誓 r“.6/ñì½?Z 4ÿø©ŠçaŸ=Èc¶’v”Ù t—FG»õ¯þu/ ÀáMÐC&ÅÝÝsâù¥ žZ¿ õÔÝd©ƒÐlâ¡W–nÔ1šïI7FRðú-v± wªšƒÿ¶ÉhÎ+¬áU2&$ª¶}Yá‚@Íp{ˆu”ð}É”˜„ÐAWÅDÿ¡ !`¹U#˜èî`›SÚ¿®Èæ¾ü“ÍòÞ–ÚiòAn¬ÆàùÿN׿Øî~äy;yÔzE ¹‡¾Š½SœÃ-çNOú 2£!@å/ç[Y¾Ûç¯o+…(i•Ê•^½äÆïDÛwò_ó›]¸ý æè^YÝ«ù‘Y‹?yHO%áUþ‡[¾¸a“4¦™+šHg½ø\<¾.µ€d¢ ˆˆ!;ÂN;`¬¸ª>9A±™jõŸÖ‘f ¡ÁËÕÊ}ØßTª%Gnöhž»¹$÷×ð`˜°„• d¦wmg@MU*ž­Úùî¾Öûñ 2›  îò!À%yÛMÄí4½ønw^/ùùù€´óKÀû›$ðF zó Æ'¤²6ÞéjÎ öǽc÷g øwêõ=’T¿©ïŽßtïý»V·Plnóô)Íë+oX¤ip´3™È#¥CYUý¬yÖ$í p€o+5Mí¯OZy/lcˆk$Ñ{ßQå6=Ýç7iñT»Ûf³:ª.€\•qà׈m¥š{ç}úù(a\™M2êNs·<µ~¶1Õ[‚lqG³,+ј%Ñ×cÑü Uä±x0Ý!òc9~ÆD Ò¬Â4êÿsÓD8¿…,Êl¡Hµ˜¾RëÈÖ£Qw±ÍU Že‡„ɶ¿¶"‰,c‹Û+ÿ\„z¾U]&“mŸ0í²šÜ<(䊠Yb‚MxôÏ,v5iuF_X+*ÈÓÓ³DI(~Z[EÄøtÚC²JÜw}Ômh Çç¥"´í’Hâî_wLó/;Ö2­5‹(…Åù¼€¶Ì1~ ‚NV 9Üâ? D'»4á!³ÿÃRWbg–EéÅô±Í3ôD’V «Œx¯=þH­ð ¹Lø Rݶ.Â/:SÜÂÚxz[‘çDZ/V‚Ù>ð\Z£xXGâºtðž ¯ÄÁ0i¼¹óD‚Øß“²ˆºNÃÞž —Lû ÞpJ¢ÖJÉãòôªœžÕ4êe´…Ó^7ö_‡Wç¨Ã mlv7bxº^;‚Onñ,iQæÃïE„e"i6ö)_DÚ©ÛFר°,±´¢Ï\#:³¡zO\ d”í»F®2ŒQgC˜>sBRSû³ònr{Ö:ÿƆR¯Ä‹«þÏ0‹ÛfÌzS/“ͤ\O8eä¼ î°ˆ¤–Ãþ»&žRkãˆæ"O"2©ÿ/…tìdª¹ò3ßÚGûÕ¶³<;ëÖÔhüQ8'nEñYÁ·›pÊéºqI^¯H½ü(½öyg´L}Kwx­:¤åÔcß„u«†ÊÚÑð«ºW^©YlK®»øÃãáo ,Øù·mwJQ5e°ÚÅÏë ­Ør/Ì {Ÿñ•xWU¹¦Ö|ïqÎ`öà'eÏèÿZ]宇°¨§ØÅ0 ™,¯÷ÜöDYÊ2ýíe®3æ`1í/5‹H2ÙoØ DwƒˆIÓé8ƒ;›·B°ÁÛ]Ë´³„[ê¢ 9ùÚ¢j§ ý‰ä^œu˜*VZZ’ï(Ý¿<·ywø/* ÐMš™ÿXcÞå4rk|?OK>A‹P•`¶}Ã+m¡ˆ×ïXj ƒL£¦,àæGgYÕ¯rWëó%æp´Ü ZmªË[gd†ŠÀÿcùW¡©Š$õ*¼2ÇêPÑ! å,“a+Œd¨zh i"@ˆ¬èíìm“Äù°§Â´ :9ÁZR™‹Åuj"»Ð~óJåIÜSJüï ¯s·Á=…>b>`‡NbÜ'ªqúØŽ úÇŠçU𻢇Ÿ|.8»๙*\vàÑ ãtÑæ¥»õ7%„Ç|­¥¨c“MÈ àÆML ‰ ˜ñvøüÕYª?UÊ6>ŸÞl°M$phŠî–$X«²¨Û›¼¥_;-J1ÌÄ'Cuׄ1ª´pV°òspŸh¹å@sl8•™Õ Þ (qÀýHÑ•±è¸ 'aYĈ:Ýt÷AñKð¼Äz©y;íõ Òˆ,ã]xˆèãýV,nßÞC3º3Sç­ç…šT´Rð¸—ülôÔ0JÁQÓz‘(l´òÕˆð5ç5ƒ x@‘ʶ„ö)N²ÚV!$CX(ܰ傪¶ðwG´SjqËBãmXËöþÔ „åTÁýò¬îµlL«<ÖU:À%BSž”J+#®c_ož>Ÿ?‡ûxouMuiåYø²óÖŠHgó›ÌÂk‚WÉÆù4VcͯUïkb7—ØÇ4>‡¦]1”ð²¯ÐÁ „ýr5ú+"²»9+•^y¦:kd¨§Ú ‹ê‡bïVƾ;-_²$(ç-ó¼õ5î®HAÌö¹ã˜è3àˆÙ´~›ãÉÙ7Yí'\¯¦kàJiž»·äÓ~ ÍÓ¦–x¨û_‘~ó6˜nq˜Ç<1º²íPƒN9"_Ð `ìæ×IÁ¦8Îä¨ÌÚ"k”%5ÅP)ì‡vDéÎîÕ”Gk«Ë¿u4Ç‹éÑXkŠsØ›÷H<‚‰'O¾|hH0èjªóZÕA mÌŠ—9¹‰R?Ý[Ñ^ÜÐJ®Ðx¢ìì»Y ØêwêJî6ªfC ‰®ªæ—ùí9?G„q¤[*ìµM°öH7³”_Òš8¬™ŒÖ¬ˆäzA,ÚË£À1}W]d¤»˜pät6o±ª­<ö´ÚšQS».h¥ÅR;õÄ´:Ò”ûwEïË ŽííÒ¾uoºEÔø›Üáª;ÔµÚÖûrU=’j¢t J¿0h€SV—ë€Ùu/lƒ‡hëœGžX=p©>¯é*i¹´½gOk­‘än0ýG5Œ0ACm.5l ûäU{W‘ ®©È¤–TP1íô 8º<ù„oõûøIc†ùCp¦«C¡Ð²Ÿ T‰ôîìÞ“>'€©èùY7(E(w$磃 mÚâ”{Œh#þqð;M+èö•"ø¥dµ€½¾V<{;áH,‚@àAž¢YF4 M ~¨`ÄÌYg—ëoÏwµ/ÙòD¾ää«9‹oͯAsv{cÖ£‹)k̓ƒ ·ÚÿòÆFG¦¼éTòîºÊŒ‡ÚÃêß3ïuÛ_Õž8øóþpZç?ä'×—§w‡»ÀWr:ã–L¶çµKw1é%Ùsöj¸ÊàÉÐÔõ×…ât£ÒêëJ}"pÓî`ºnï)ö„oöðÓ¯qÊg‡ùçãUmÑíIìf*ýkt+Z#pà£b}i~,8ö!×Qûy÷yîtF–8ðÊŽVV›NþÞ$LǬ±ÊaX%k3&«d…VC2&$©ŒŒâ^a3oY¾ä dÉWg»yU诈§ÑV9ÌÁÊú|D˜™,¨ó8Ú"K°‚udZä÷±®¨Ü”ÅÇQíÔdùÒP@(Ã’z`)fX‘VQ6ed‰V ;#ó|¬è]T[ñ¦´°J¾xð/æOÄj|ñóȇ#LuFT«£œ,ÒzÀ«š´ò…Ò¹ž¼‚€Ëè“%un&¶p@‘(nM oÃ ÝøQ¤–ŸÖYY|`T~¦º9ÁÎxD³}¡qº%µx”¨´â…ñÜr 1¬åMÑb&wÖ/™ ÇÐqòx†²ÿaY·›YýwžÇ¡]¶-É­9‰ÝÝëŒýj9a_ïp²®ZÑš79îo|ufÈV x ‹¿4Õ²±k/¾,~nª¤Š$¬…]«t®‰ û)Ëœ<ôjSºõo„êa¬¦VÔÖ*ESSf~–º9ì•=VúÎ’²|ÉúŒh¤•‘ð¢•*ËïpYLË—µ•â•k·ßr)}jUx«& z®Ša£õËá•ñ¥åÀT’ëI°Ó "ïú ¶ù¼è€•¾“1Ìç%Xá<¢ƒuËsC!ãðÀÿu[ià'Hó<Îz™_-æ2%íX*H/¯°3Òz­‡èv1$Òª©Li=`Eã"Çí–çE¬”µÁtû ÑØÆÿ0ÿ+ÿoÑW‹þ‹¾ó˜ØJ"ržo ØácUÇp¥àUÌôáØC³y´?4£º‰'ÔëXW®#Ý«û«¯‡[†ˆEí¢—ÞMÕƒóáÞ"/$÷T Hm¿-õ  k­ër®ÀߊÊv,ÖtM›ö;¾NŠvC˜ ËLJe…+!‚¡‚ÌÒ»|CŸi(å Ôžù¬àU³"÷áéN ¬+±ÎÝé·Söéè ÈÃûLA|VâýÈräÙ@ëSÔÓSí hlZeˆ°Æ$Ñ ä‡ø©ûI¢Ej*TPä!&V͇Qv|à¯y”aî#O´BÙ`\PyX:G„†Æ…²øg¼wcˉczv6I¿ó=³:Ð4:^b¡nº„…–«ëWßda8n SaUBóåùè]âóM†‰Æ]Ô~†(±¶H+ Ì7°ïF5PÏ-ü>Üuì$ËwÂÅMë”_hâàÁ³"èÛ¯Õ:xg}ùpØ+‘ëB£Õ*·&;ïô'VÒÚþQÔYå;5 tº?|ØŠF]iÏ7¶a!uup¿<¯{5Q°›Îc1ÊÄt‹½7Q—¡©¾‡Ds}´«pJ’ñ‰¸ob$_'Õ¦žÂ3¥ªˆ•($—%–×#lüÚÇ2lS±P[ƒ \êç ·Â¬ªçq…mn¹ ŸÑ¦wŸC2™Ï²ÌHlÿº‚ÍZA*îBp†¸]¦šûy*›°‹»«­î.QfÁCÆ5öá*šPæU™–ú¢·|¦R§âA?»2R-¬ñ\›&á8„Þh½˜Ö "}™rˆ–'ýÕõ–ŒìŒßþô}–`æMK‹åã•íÝdCÎÃ5û îsÉb›ƒ¤•{&ƒöª¸ìØÚâqüC@r ‰û„± ’tXÐÎ)ÓÌøÎ:’=Q=–î&ò‰FÞW²ŽäÜ §’k<( Ôc´ÿ¾Í䩨PAzƒ:›¬Åÿ†Í£äID €¹-'r©íu–š§]\äþ0@h|™ †™ŸhVéC=ǃmÞþñoí#6·ù3÷²ãoMýÈÊ¡|ª /Ž#´?€ ‹¿**í$ BªKƒå¡.ÜD[R3øð·õÙÁðzƒ~½ LømV™‡Ñgupê^4¨ —­ç©ÈªÙiÀÚ”œ¬sÂJOR»ÉcÑèô2‹"½ž¥65$ÎV¬ÎÖr¾î"d»“Ã]Jð~Eh“§Ø8~ ðZP9´Äñz!ô ƒÈ·GòEé!€”a%†Œ–âoòµçì·ô7PláÚ-4ÏQá‹@Fþèž<…¹@Þ¹Õ5”Ó„9|sj¶ø©Sتé6XÖ“pš{IÊE‡žÎqû¼|ÅJ^rÙ†ž¿Nœí¸Ú­¾•sW Ïõñ, lý ®½Á¹€9®=»Aë9ÿnUOÑtå Õ°Ú—v¹s»ïd[0g°0ÐH¹áã0ÃL¢\Dv JR¤WI""­-i—¸èå±x^¹IE%êY„nîŽù2Ð æ9°ÑãöFó~¬hfÙå9ØpåRHGøfuD§€îÁ§lʧN¬eçH’s)悃ãGNÊö¨DUÄp4Oïc2s¤¼´Í"sBu4æ^ÜkrFU¾üyŒCÈÈ¿ó ò ­È Œ› žNèuŠæqÌ-;’°[‚É wˆw!š—&•/»JŠÒÒ XµÂ¯”_Öèl†ÉX™jp«3Ù¬r;¾UäÛûpPj ÞDt‰€oÉÁT5G3ÂÁHþ’ŠbþmµKX ¹(În&á^¹ 7%{Û²íô8:–П•†·Nf«™§áÉ( ”‘ýYÏñ Îv<Še8Œ‡ç5v‡K?Åâ]ŠQ‰‹õŒ†d£VQ“‡ÑFƒ‘ #|ÊÉûH‹Q€zè–š½ºE1.wNqŸäôyÙe¢Í”9(uÞµi‹›˜çq2Ãê#Àž{Ô¹P/¢Û*D]tÈÔXßÎç ´Ãšùªßv—`ÙHF<-q§Ô`SâácžÃûpð t0òÁ¯¼„…ÿfÌ4̈ƒ±è1ýa„Ìt!îÓÁ}70Çch|'#§ /µó›µæ"¿iÞù‘̓la’ãJ»g<%@Ãùn±üÍ„gC≎4dÇ^§×yR•õ³„Óÿæ÷TÉA°ZšA‘_Ý*Â#<ü°Ðæ‡vf0¢ÊçŠc¬5¹¡8RÌ(`Íü\ØŠÎé8WÙ „ÅdZžå¼ì ™TbÁò¨ÇåšÚ³!¦^Äe\Iï:<®VòY“¾cSP»E™ Ò‡cÙ²LÄ3FëtBº¨ {®?œŠ™É…F‚(V:…€Yf8³ èàÒ…Ñç¼rá9Êð 78²=ý6ܹí02Kiø¥ÆÚbTدÖ°¦’J'áÐ㲄 fßbr%Š?¯*¥àÏHr*õÂY+<" Ê 1ÏdóüçМjÞ^Âgh§EéÓÄ"è»åþ*´7Òp3—¾tËS)A»¹I¶«½|1L:á׳(úwVµÇéVòˆÏï«óüvøoK‡#97Î ÝŽŸè.Τ&BJ» °™´£2>¡ nÓdºOÑ ±]ýP¹\±î¶²qæ*T»&Ï¥`òíí;¤þæ–0²9.ñaqáV³®WØ€ V©9t.Øbåo2¿ÍSΜù¶“ îˆñZ2þrÆ=Ôî¹½ßêõÃmæGÖøÄÝúõ.ˆŠ«ë×…’ŠËÖ7âÁ3 3ÙTÍSXüÞK}”;uz4RÒÿɦ¸{~Êo††ò§hÞŠg“OHÝÅùøš[sJÇKê£é®ôå®J³Ë\ï‚ İ'ÎÑò8füb¤ZÅÖdêɦ¬¹ÿ ‘'ÿøôÄâbÔü³nTº¸zY¢$K\‘/)2oªdºÜ‹òm ª¨¦=49C# gSÁ¾]8}ÈDyänïÍ_1C9ŒüøÒîÄ® …(5/î`;¢µræþF£Š¨üRO•dû>³0ö‘AôÁ:Z¡]>äÌ9âïAy‹×".~¼ß™Ï×óÄ×&ç»C_‘ßÃ>­õ7֔ʓ=h¨ ´ëP2n†Ã3^šdg¼ @eÀòySjÇš³m®Ý™)IÇ‹z{” ÍGCÿ ö+ÿ¤òÿ˜}çXaÿHbçü_å·èô†PÇ¢³Dg²N}É«ý’gnЏÅÐS qñ²¾ÚÛ˜kÅÌà-‰øévšòÅg7W[4¿½]£5}ö¶ä¼Öþ8ÿì³’éü즃¥ë¡u$lV ¡Œ†N¢âAæÎn21œ17U˜åA6ˆ¬8—o¨5Å`5GÇ@À=¬_aau»èa…x’¸[ŠfÍàÛl|e0ŽÆ©ëʸuÃQl}$Ÿù?Q_(4}riß ü'ß.=‹Ê(±ô¨FÔŽ—¨»EÝÁʦ-¬ûû×%1úóë/Þ|ñò¹H»9§©Ì“È}á¯ä‡jg€¤IÓ$`Ç, ’0¼BNø¨"v~:íÏþLÉÖ—ÿû©›ŠO?E ðÿÑû9‹{C+¦Â%j˜^'®èË‡í žrÕ1È|(Î_R‚MsÇ–Î þEüú¿ÇÉ_ÿêãÞ¾~¸Ûm–÷·ËÐ1ê ù ¯Ì^762±ÜŒ_…a@œ#ɪÆGÞßqŒöá¹m2msð ÚBð¸ÚJ@ÄìÚûäØI Tã80Qs¤¦†¾â(9z[ŸEhm‹C«4ɶUì‹él-ÐbŸN¬* óŠLd£Ê‹8Ðl¯‡ž>½‡Ä·WXÇëÂH㈒µÚ³¢ Ù6tüž<q™àF?nCÙÙ‹è8õ](¡cVµ¿Žº=îGžAZ0zá©QÔDÛ•è°¨çâØè Ûð2C&ÕZSñ¡n%:ÀoœE‰—dÄÈþô´Ï³r«ÂB8V‡ŠcF‚$ÛΣʎ º:0¦ S…•ùœÕ<“ËADØ¡ÁöÔm{ů•LMAõ qEý‚‹ï3(¡²³Ú'dålÈÀ2îÔë=T˨}òJôú¯Åf[…cCóËøÃkª/‘Fñ-l•\cŸ¤dŸa˜)0ÅÞé‰'<é ®Í1rßl‹'N¸ze¼²·dc:N –>~*O%ê?!߉­þuO¾røW(q‘ß-ƒåµJòñð•ÌìÁ\Z5À{>™8é¤aÕÈÙ¼ŠK©GŠ¢‘<ãշﱺˆÞüó8Ü©¥KfŒÎäè1½QK¸è ö uVr/S/u—‘*™;>Ð%/š”zN%K›lÅCÙ`ЖR‹} A& ‚HV1˜°Ï c"Ãè;þj“ÓÔ£t÷ 3Ï$z"À2ª£44‹|DÔn²™ÜñU^=Š*OYÍë/³’u´5Û¥!ë×$¶!õ-ØšöK'SV‹|èOð£ÄlÊ®†0LxU[)·!A06©”²³a.:,X;5FÜä­ P‚Úˆø#ÈRßÛjTvH°ueÉ (&ð‹h×ýÔ<}›qGµÑj7,ŽæFL ­…)'‘c-ª î¦ùl?ËÅmÝñØý¸ŸÚ9´ØÛìÔ­ ¿›ZP£š_^ZŒ6â‚åh;Ú ˜á-|=òü—çÏó‡ÛŽÄǾ§ïÊ6ïcíŒôþÅOõ—ŠY¤mXO¨ zm¯r¢(h‹i0Ì•G9ÁÙ/Òƒþ]XID€}²’£! Ä(ÆK¡ŽÁ·t°–¬At.×LÜYÃHqÕ/u} À®òIŠ–¸­È—3ÍTkpr ¹=É&RBÈ!ÐÓo“4Z•¯ß_ºáÛdèÖÎÇn¶B+»e4X Ž ¹Á;ˆ32©é‚m°‹d€)Ê’ ±Ñ;-Ñ/<Åúv½äè¤ÔݺîëÕ¨n°~²ìs2¹¥·Ú×";qnGôdäó‘ÌaïH:ì£ÑODDztMwvSÿ;Ýe©÷ÿçö þc¤ëdÀÔÿ-#Âø j#etÖùãò1 wqC™¯»‹YÞjƒ¼Ë˜¸GËÈñ+×쑈³R´Ÿ¶ÉÈ€Ÿ3 /VÚÆ¥ìrÄ3…7—‚iÁþËåýú>ô®ˆ¸Ò{vÄ̦pó^kï]ª´ß:u¨Û“{XõÞ[I÷ŽW_dÍ™žòh›P~–®æÜG)¡" TVÂÃtØÄOû]›Ø ó´‡BˆýòN$qã}[x3¼Ñ Võ®ØÝãqíL‚µV#žŽ™Ñ:šë»e”£l8á)ÍoÄì€Æ§¤~v€b>´RËù_B툓ìQmÉá’‰ÕdG¶o¶¼’+åÎ:_Ÿ€œ~=Ù©.¶éH¨a„¶ã‚X‚²KéIMu  œ’&0¹©qjR€¢›ôT•cÉ÷@-}èñ«Ô¤¼ÿ?¸—ŽAØBn;âÖÄ08c ‡F©yî÷å•n¹M<Èc¦ç¹;Ò¦¨Jã\Ó?}'ÂfM?OßŽß Ç¯¤«ˆäâúˆ-F „[o7°‡N ¤ÒYžÍ3hZ0ÊÓhÐg!‹ß&¸ù•4ªQÔÞÓ·«V¾=Ëö ýI¡éÓÌŠ„'¢•Á®ˆìK6Í€ƒò}ëV`)VÔØ“õîçt»³ ÑwHG$J3@Y¶—8Ò—§ãØ7 €Êý ô¾ðxùAAvzÆ2ÇÛR0(ÏËðámaH^¿"ó­ì¶»ƒ­2a*‚M„pÒŒ_u”]´í­ß•qƒh*E8ÞL™ƽåÎrù]l.Ào}ÔУÑèÐøym µÕʤk=Œ¯„ô-ÙíYÓîz)=FãìMݱñgƒƒ½«¬("v‰5Ú†l·¾vÂó F6­c€È>ém›@æ#«Ä¾¯ ïHR‚ý¿øæEh­Ôz¦]¥Éõ)W·Ú[»žZ´«Õ’8räaP|<±éˆÔ&uëš¶î/}Ì s Ý|Dzp…åzð¦ŠxÖ¸ˆ[ðÅ€ ·‹|æ,ú«âPðÉ}ŒvÝE¥ ©Úl‰£†Nj¨!“G=†¡|yŠŠÕHÓ‡D¹z”K+­oèLºå©% ;nŒ®¥O^íÈÉÍ=ìÝZãîO}ãÑŒúówë"\€¿xg®)Ò@Ũ9§ ÛžCÉÔR.~¡Y·ÉOûá5 ºÁ¦½5·SZk³7jÌk/‰¡9Èe¢>«Un®;ž µóñ¬¥­øšÍ”$€MpÆZŽqFÅ‘Vy+þÃ{×yünù¶z›ß>ÝÆÄ”³Qk§çüé´7žfAÂ|“b9)þ\“À³ Œ®c_º£Øñ»ÏóÛ¨¥´óÙ«Óìé+8%Žî]@麱ÛüeÕcßê~ìÅæ]>64«dc¿…ß ÌÁ!™ûOu'Oøã=†¤&cÈ_ßKRR[²BUl¿bE2´Æ†‘_ù´ž“£ÍEDðj‘ß©’‰f:ª¦FJo¯—§¢^L€÷œYµŸ\AG«¯ÛD2›n»†ƒ÷=•µÒBc½ÜL^ÅI`÷`“Ò­Ýj^ž‹7„ÝÝÂÀƒCèWîÈÌV‹â^§àdj¯1ÄЖ†ƒ)LŽciK0žÕ^Ô¨GR9ÔN1Bñ–äȇÎÝõFáý;XØ„¤Ì½;döî–/Ë«ÌY½i)Ö ,÷­Ó ÏQΤG“çŠßX¼ùž.E'?ªâZ“Jõ€X=bŠŽ•—c¶oÓóñ¹*Nõ:9…¿1„f{Þ*–9oßN Íç›ý(´ƒ$x›Ì9µœ“ƒ§ê¥Öæ8Uµú‰µU©ºË/ó î€–`—{cVKŽÏÒáSçëx’{‘ô®Ép§ Aa<Í9Ç9ê–adßt }.,'ý=ýe`|Gf㲡¤žühÆãÎnzäPjºDY‰Q w ¼Ç·—]ŒxêKxZ (¥”ø;¬®S÷Gi?ž ù]¹@¹Ž0’ûkí/ÿÌFù [³CT¨:€w?Òk‰bг *çIËÔÜ‚$‡†ÞTº'vð}ÀLz¶š€JŽÒ'ŒaƒÊ5«pe;VưÖ _mŸVTÞà ž‹Û™FQªHsH¤³mRß'ðàŽ|¼B ™^L{Ù&‚µk˜J’Åôèñ©ÜÙËcXfhnmoZͼ¤†Z·çÑarøËîïBãBÎ0Ì‹ôò¯ˆ[ø#±Û7Ý‘À„|ƒ!wž…â4X¬Çúåó¤àý“™nzˆå9º-ë÷üÔÏv5L +RAOj4„Ñe¨¼¸å(7c<”Ó*±‹_MÒ‡,—/¹íq;8]Wbò©ß7"·¼h8®Ó•½CØ“n qŸ6Íæ¶7ª§AiX§XQo¡˜ð cöKæ—í1jVÕÑz b8¦Êû)1i²”¶‚SÉÄóOË#à¡A©z,lòy bi½Ñ%‘ú&Žv³^!ºdà†åLQìÔpg ÎE¾Š¶ò6Ùâ"8hK¥Ù"ç­%èD/º†º8¥Y@‘^Ì\l×\õ¡ߊ)Sð1³“B“®Y)ÚJÚR¤µÉêH…®Ê7Zî­OôIz+ðR\(Z‡ÎìöI)†\ð+ºÕŒ‚¨^<˨V% 1®ÕÁÆ8Ón"›Ÿ7JÍ.\þ’ÙÚѶ ³¤A,ÃE…HmMfÊ×Ô© )Z€äÔ-f"$§ðlº/yªÖ xÈΜkò 1é±!L‚Ú½zмÂ\Áb­C±ì{׬³‡€r«~`¾5Ì/V«çb†[4R4 ‚ÛÒ¿ä·)Ø5x7Ë>—ç>Sљ瑺,–?×xK¢¥¡ä¯òO9øÈ"›£—Û¨úÓLÈXÁÍݵlóÀ üßmŒY§ÿëÄb}ªƒÛËøf‡ˆ…“{P[–RßôZ”mö“nZžï'˜x"ÎÃOM6ãqËaWô/à ˆ5Þ½b +¾{!ÉU¢}Á–G<{l’jèûïæ¡}Sd;âZAN¾ºt’‰í2¥ðwRÖ“‘œ.#’?Ù!yÃÊz2Ü)W ÓÈ=.ºrx‹÷Îrë8÷D·û–çÃg}|Ùo§«‚/ꨵQQ-h5eÿ5²CRáˆDÛô@úå½Z9Žãõo¹zô6ÊÈ•€®ÜWNÏ4ô5*'6ïâx98N Ø#½gK “O£t†ÍñN6Œúäz3Tªâ—1kÁÔÑÆ{>bó†ˆM–ÙQ>Œ[A0)˜|R,Ì=íñc%ÐS$la,ƒ·žÞj¥ ¡s™®½4 ;섾þV­®•¿É‚9]àøÝÔpˆsˆr¥ñ°.Bè‚v·4•rɈlÛêÀ]8?/e$~†­H¯œ¸H7ÜF)ZÖÌ¿â¸R¯¦mÙ½®4½Y#Júž…°¥&£]Ë£ó·_”óø >z”þ cÉÕ @x]@““á´³¡®¥€+˜U›!¸R~m“Lk%ĸίm$OÂ/3³LÃÏ¢C xÚ;å*A<ú¬dåÄìЛ¶ÏA}¦N`MB9¦Ä €å4§KèÕ´`>Ë"¹¥ê#c;ul¸ À¡K6»ÀR±ëGÅu¡áÖMÞ†ÐÈEú¬UÂTúÎ:©àý×è?¦µ.§)½>–WߊÄ ë)ÿÀÛPÁ þ.QyLèˆôªÛîχ–‰y¥äÉ7;äÍš-ÛØéþìö`o ô°?€ƒUÀ~‘x#e–uéòeEïÒ|?áÿ %šûaE†¦r+ßÅãËàXiˆ¾ Ð&ƒ0‚Ý“ŸöÛV/“¼#$Ë8£Œ?¼y›¯kj7:V;‹²MbªK@Ñþ ´|Ëxû7©+Fº^–„ETÄçèð]f¥¬¸ŠaZ™ÞðYèup”¦U];¦Áuõi §çeâ½» ®Á\‚Æ3°w"pê1¥ˆö0÷ÅeBº0ä'ÆÏòôóªheESŸ$ž{ñÛn?$J¤øÂ^ÎDKTŽëGÊô¨çtê~}/k=íHÄ÷çáþ=7É;Q póRÐﵼ̛B˨~ØÓ£Ñ ³ÁÑY¢šåà MÂ׬ÇÍzãŸ`ËÀ­î¿ín/þ„’øiçoÀ4Bâ=××,áÿ]úæh9þg o>˜¶N‰s)ùÞ,ö¡‹Yáå[ð8ÂÏØlÌ–rF˸ôd噑ÇÛ°?¼*©Uº„>—¸Ü…°.ëþç¸;³Û¹|Óÿ”ÍO~eË]+…mØòYÁ¯öÿ=kx*‹¾+K!Ðv2ú8÷¼mß÷C>¥äpyí…+4/†Ÿl•¤$ætÓkÀò:å ß§Ë͹j„ðœ7n§þ3Ô¯–È5êÚpÐHÚ¤Ddna9ðÍМ‚l§œ8‚o þfÁ†áZ‹Y,aßÊP}}·jõ8»Ç‘b@’in;±’ÜO˜¶P²$j·æ¿2@í0®:á¬ÏQâã‘Èñ&ßÿuÎã^ë¡b}®Õþ!‚V{³†<¢âñŽ«[‚p§0»%¹Lvä †°·Q2ÅA¡a«¾^³6´˜KçmCP6çÃR Â:˜©ñ„[ª§+Lk ˜ÜŸv« ŒHNl}ϳ¹ÞþÎEÍ&ç/¢Ö~÷íIs žy_5 ÞWœ˜MzK[…3å¨]ÞGÓ[6lÙnïÌ··mÏšÞÃÉæ€Š— ú!È<ï37»euÎÂÝóByb©gçž›JGü‹*¨BÕšŽP¨Ý¥¼½š[?ŒaÝZ³"-ºè-,bÞB<¡x‹¸Og-8ácãí²²yé«Ë°vüvy ˆK*¤/c¬Û¢)´IÐÚ¢pÊØròäû5ÍšQjlÍF2ø¤jrÉ›Ýó^¬©ÖŒ6Bõóó0f¡(dAòÿP¹`%ÌÈŽt ŒÑH<ªËHhéÏ[eÇFå\ºƒÍÓîºü£>" ç—î· 0iª©˜×ëö¹D”O'ôºú±"bL¸¶Éâ>g³æë‡B( RüÜ«¿¬ÿREËd¬žHØ’Ù?óÝ¥;ÂO;Þç…‘:;ãè›Ó}a%ò;Ù´¼O–§Dzt³pÅÐ=¯ó 4J{šü’u‘#äaT rŽchØÙ-¹ 룉:`’íeÒÀ›ÅIî„ÖMèÂ7hüôÑÔÎ/×?òý³ú[óÍÙŠcï4®¢8IÑ!²1{lUŒµyÍÎÅeàÌ8ÛàÈ?§­”Bm73£Eô=9ª£u"Õ Èg4-k+zº®-âRºñ&Âo§‡_ 3ØvÌŽSBñý°¢ü|ŸÐ;Ó4(†8 ]ËH ÃÇ`C‹Kç(ÓCúsç…‚ž\6óñ¾&DŒä°•Ëb#4D_n-#z¦“¨æ-'SjÞgwôÕ4½±âŠ“Äù*ã®8ä[Ýá°öˆúãºÎ¾ˆXw~$-÷1Þ X=• ²±ò’-]öÅY$c:ë4¿dT¯w—‚Â~øÙâ *ñÂØám'çúuÉ“}·'™•ú²hš8R 5NèžÀÔÞâÇ$Zç.ÊZüYî ®çS}›¿t­ó¬îtÕ]-þ£9¥q"íFÐ…¬ïñóÊ:* áW}¼¤Q ·>ÙH&ñ–:ËÂOÇcœ‡XË“`sòdI 9é¹ÄÏ‹ÚxI£€w\tU<>Si˰Î'ÁÍkü\f5Ž‹ t³Û»/¶©{×ã0åP‘ôz•zêëÎŒçƒKk…nõ žU7.­Àžï¹y¤Wy¬4FQ$y¥êÛ#~¢ëS¾Éà,ãRßù{¾–-@' ïŸí‚~Ïò«aWs.FÃò%ûzp¿JëìîšÐ®j¹C¼"Hv² `õ‡O’[ȯp@å5Œ1r}Ôc½xßëDÃCÄÙ`Ä¡mj(Ï*@H¡°±ÆïÍ*pv ¬Sµ+ÿ¤ÆÚÌ0òb4Zl¾Çß}=;ì6X×>]O,¦ª·:Â}³®¬Ø÷h Z]_«yeq2›ÜüÉ}|{s}ån–…=CËÃÛ…©oê vO@ÒŸó ¸íËgccŠÙ“ô ;ïù'”ß>¥gÃ2Gx@èÖHW!†~¯Î‡k¦âwUß°yb'O‹dªV¬ó¨€S( ÕM ¤ö2¾Nf|æè²Qåù"Í‘gÉÓevÞUr j´žôdïF²U>棒…ã‰'oþÜì:0XtÇi/ÅÌu¸¶5€ÑïÞÔ¹À•¾–9(o …ª€ iîßçà©S²šçþþD=q}%„]Æa'ùÎ^S)ÊãòjŸ`wX²™Ýc~¯uP@‰?ѽ»Lƒ9mo¹T'Ïßþ’Ø Âäá'U;ÃW‹`÷®˜ j #<üàšj”‚Y«}XEa\Iyåõ¤Ü­¯òr®Òì‹M']k·GŠäÙp˜Ñ]nRë7èZ3¢Âϳy¤Ä_®Àæ».ŒÞÚéÈu b-•ÆÏdUÊ~sfÿÎÞ uMêežmD%Æ ’ÁÚ÷MsUxjVžêE»ÊëÚ ÅÊÕª„ã^¬A>Æûbæ7¦›•]KÝ銶ŠtÅ>A #÷H/ÒŽwàöÍ®}¿Цùj0”@&ªZ§‹Y }Ä«ÎsÉ‹ýgÆ<{Ä;»}¿ÏS·õZU¦Æ!2ÖkùÜi.¿žÇõD8Ú*¢nˆé”š:l‰Ï›Û/x\é´å¨àÁT»ör¿ÀJïû'¸+ó° èÈ£ÎïLÔ™¿½£ëX”Ï@¯lÀáD¢öüƒR'òŒÅÛ!‹ä A :¥*ÑÐ[…îüMbÒ¢-éUÇŠd‚P>`ÕÎô8„+†G†g¹ Í’Šì8ó¡¨@M*%‚Û/ƒÒ\Þygå¯ÁQý¯½1 LK¤BžºÐë\{^¶þã:ˆK™ÐàM¥j‘ëÆ”Ç3r__ÛE!¥@N Öëß žú³‡Fd6ëoâGù†Qýì¶úÉbåÁK.†·§ƒ»j°ÆÊ†Ö-åoÒΛ»çi¨ÿ4øùÝŸÑ&0Ý®tÛþdk‚Y713å¥3‘##–>»I³È‘3¨“GË…1›‡»0«x.Ÿ#þtŽíê ɾ&[hHÜßâ½)o !Õæ{Oû&S~Ü_N+â•dîŠø*`=]g³gUV ëj•Yÿà¯oÜ÷›=M ®õÓ®á@±ÅN˜Æî1sÁ\í¸(ÌhL¼=4ŽÔ–öàŽÏ¿VJ×%0niF¯w©_x+àèˆÇÀ¥K¶kaªÞx1D–NôQ ïøcˆÌ©ÛÎx9Ù9™a¬Ÿys~Ý̤nÿ’FZØ‘vlì]`wµ½8ç4M£\_ößG`L¥ mÕ¬ËÙÍIä>ÇŒ·Ô’ÞÒl !þDüõ_â9±‹òÛ×b$\¹3YzΠ_û„•Zé0-e«:>PÕ¥¿¬ºº©î.Q–½•Ò["à ¦–h†Òw^¸’ùéøS¢½³Ò.¸ ”6 ®=Î)!@ ¥‰x9±Ò:¹§w/Oˆêé8tºFâàCrƺ̋þgp2:ÿ“¿/7úçàfÙªálCZàz„êmõº¯©uw‘€Åq$"8KÚ+q‘gE³j[Oªî•:‹pê'÷ˆ5ºs>]˜½%”_5)Ò+¤W4ɤ•³»,^ïUSÑ¥ÜG³ð´ ò˜â%(ñ÷IÏ+B©à´Ÿ `¤ëL‡ñ§ìÚM„i,2Ö8­6qÑOó;$¬ÇUŸ/=©‹HE6ªRDZoª}þjÚ"†…§ò”3:©1Û"MXSò ú”‹-ÆGÀ÷xÊši,Ä_!Æë?LŽ*Ä‹ÿŧB¦PÞëw;¬§Ö)ª˜’«_~ÿÀºBÉ–Ä|…dÿýì“—ÏÁ÷Í™³®ÿn5•—ÙyÀá¤àÜÈBpn&«æcñ±®4š¥^éºf}u”ƒµx|Ge)ÇcœûS¶›í[¾á®‘ÌH±Ð¸ê?Ù«•ãîO^ž ¶™ž?_G’7‡·’›xÁ\éf0ý:?½/‰ó?<¼Ým„ä‚hÇÜ?äÇhJ ÛÑòùYõùGýYKû+ÈÊÃ/] *( æ>Ð6£hÔÒ&9}e „ =?ˆ^Þ”“ ées ªÈ&ôùKG¡\üΘ´ =O 8evñå^ö›R  Ÿc¸RehÕØf¶»óæ»æYŠsµŒ^ð;,˜‹Õ†5Suü6ìå>Ó"“ЖOÂkÔ$µæÐ6Äa¤ÔYæ²èPÃÒ sóf[¸«Q«WO4WÝÏzöFAo¤û¬š(-pôèx|ze'lB8£n!(ߺßh»^Ó—hŠòZ?8‹â³ \ÇÍ8”8 l Po÷:P³ìꓹGu?È`[s62Ûå(±½ù‘£ Lò`ÿWmV€ÝñõŸ×QÊ’éºø¢¢MèB7“ÏC°ÁW›ç£Ÿ /Öìågƒóõü"§ÿǾô™_r›è’ ïãZ¶æ¹…”ÃO£L¿"¼&vx\ˆ&&w·¯”fLæm„3}Õe×°ôê¶ ÆJ}„ûh²ž2ŒÌMcs­’aN‰o;ëì evÐ~E±éƺ|0Œ@ȹÞÛÁð^ÚÔ^|I·XÙ@Þ-A”|ÀØz£ìîhG†j–R&ÝòuŽBek„!Ÿ&hÎið:ÙkNë]o^-[€a´æžhÉ0$½1bÍéÃ:}ýSõÃ’žV}«T0Î|UvØ kCc)! þkS ´87Ö*>éê[f`bbø÷i«¤ÿ F<ÖŸÎÚÞåŠGÏ<˜Ÿµ¦ÃíX*µuÌ_ÍC 1ë‹ÿ£xÕüÜ<ÏcTŽžšuká…¾‡á¹*ší™„y…&ÕDÍ0ë`$cý<‚c9øq+%+ 7gdmüœŠ–ɶüº lFQ¼,CÛ\£tÿ§ÔŠ¢Ú°²[%sýEÆÓvæÿ¶¨¨;H OKDMÃN'¸¯PâàWÞÁüylM)#‹ÅªáOŒ‘?«iÀìG[ú!TZjrí-õ[ 3/„™?"Q…+ë¶'o@'KÒ>y%¡sç.ò§q¯xú¹/ºØ‘õË"U¬¾´˜*>®»ú2=µu–†ü0º« ®Â(£ßºuQ±fë}W¹ËÁ‡AªÕŸ&;ð8bw9qÿö¬„+E¬0YF†$tÞ•ÇW¾èä'È•ÃqÚyt›$Uw¿â—Übn?·—=(T¡-2ÇͰ]œûæE¶‰Õ8¼P×þOk¾KaµOlF¶×ϧ¡â‘:a‡)^ó²‹7óʹÆÙ£¾JrÜÉxíËždîÝU5à*B®óbfˆç3ÓÚF!¢}ú_?ñîºæ†žƒ'¤Z”3‘‡¿þ<šaàù³Ø£ò&ko:†GQ Ÿ&"%å0¾ÔI\ ¬–s'úä=À€ZEÅ#3M·´VsÎ,Ó§Ã~¡•jÁþ:]³$ºPìæ¾¼KÉö^ .7wr”Du1!^M@^¿œÖÈ’Ê÷ÛÒAç/%Õlñt†K·W|ôJlCéyP¾ß*I¬Áƒèåœó‚·âžeïwUÁí÷î£þ ¹R(ÒŒüUúõL1róMû6[oÕµ]s÷Cúm¶³#ø‡ÊÓOs²=&±½ãì£ÏÙS¥ýbòòsãùäpSä?\Þ~鼞œ')~„|üuðãäþ¹6?úgðù7¥çúîGv _¼4 ÿôQžÿt5üyðQ}Iíÿš•HƒþáõA²Î5órn)HíúßÎ)ÑüÅ"þ–˜È—“éG3ŒxÙêãAñç’Ô¶yøÜ är e¦! CªôÇ«”0ž øùÏlù Ëû­‡¾Ë›ë°®Ê"‰ü,ÈËð¸§ÊD§z€ðw*}é:Àƒž©wíqÜ4ò0wmÃ7}UtQçŠæDÐ8(…Ä4û¸·Vzí±.¸dÎc<Ö²ý!ÿuÔ•Qðûþü°Ÿ£K¨”´Äž 7ïÓ7xy½éLµò&ÜESª§àÚãlšozì5xü¨5rò×z°æOr7r‡Ÿ¤ÕðÖšâb)’ÎÌ­Óž„æåR^1YÂs‰ @ ‘úÙFËHú8Íš$Þz(x¡Ô‰+ó1Grú`ÉvYñÅŒßU¡ÇÇ#zÌrn#&v®øÃPbÌT˜€!ƒÿ·! 0vÃ8ø8^Ñ{Kèg²!,ð­Iî@JÎã[i„‡”Áß@ƒ:!¡·$m¦)µR ,•^³9Q—®ÅB 2T¯ÛV|lFBv4û±bØÎxø¸¯*)çëúÎÅK~¼ÐQ0,–—âÃñ ^’£–nÜϪç‘%F7[•4ròxÀ­Ûiõ=‘’‹ørn¼§^üEÀY#Ö=S8¢ƒE7ãäô*‹ò!G‡‹øC†^>]'Š’ANcGQ½nêG¬g¨eV¹–q>7QVQ)µÕÃe–)—ia–Wßn2¨¤£T{údA-°¤l`rs¿¼Ÿ·ßOûÿÞZÀRœ8K†)dAìáûª”"!ýgòÃa×Bˆ’”÷žQè€=¯÷N›×Š–r°=®þæ 'Fú”ÚÜKA³z†ÒùʜЄ'ãʬӖ¼Ï!E+âQ²öl p0à* ‚g‰Ç¢üAÇÉ5¸\Øèý T›+ÏZ)%¶ìþƒŠ!ûì6CDµE^â¢X~QwŒ@Õ;qld t{ ¯FÑcbPCŽ nú¢yc‚/G›µPú%K¿ú³½¤6ß{çŠÉŽWüš;¼öÿqfB‡æÐLq‹×u½ñܾ>+%¨úûôüWöáÍëâ!AÛû¦M˜4ŸMãz8uè§E˜„9ÚMif{(ÂrDÒdß9Ø_h£†‡_0]måEsŠe›z¾Âù²Á¸lÑ©ðD¹P±ôsÐÚwÒØjÞi(º˜=&hªÙ|2F3 ýƒ®®!Œ*°‹u6ÅêÇË1[Õø5âæ b«ÏÏè#±ª$’¿iÂw–2h«aã‹^uÄ„^…Ñ€æ‘;ëÔÒ_IÃBÞI@ojïÆª ¡ö˜Ïªî ¢‹'¸R­#Ø¢ü\u“ Gƒü{®ÞÁ›…D›q½„Îx2ÎEÙ“«ÓÛ©Aú£ÄUÐÃ+w.ìáÓ.ºÈ uwÔ{ëéÀq҇룧ýd…ï[Àñ=\ò¸£fí»¬{í{½»Øö¶Î —úq]•Ne/¦C­p{‚^yªv'“6náäZª ~kJÒ3‚YíØêªã×t÷’&K@@vŒHÓŽ’t§dgDøê4¬jvbä2Y¤;Y‰á_„¨Wâíæž–¼yß—oõýôª·*n„Ë•Åá„¶->z=0ÑÊ„ÚG¦í—N¯"Š—÷äpqÍË´’Íò‰9¾ÖÏöúú> »ٺ¦—¸c¼ˆÖAmý,ý½ʼP˜“E@ü1ܧ‚DP? Ú3—º”¹PI°¨3q2”?C·Ã8LˆŠeú"Y¡vÍ£!Þ÷/À•÷ýešÐ!<ºs¸‰¯{ªÄs;ݺ»½[ø•}°í ÐøÚ§4¼ÌHï.ãÇÒÝ8]á'DDa‡á“¯Ï~À7£”ù1ðª¢)ਉ/ªÁrZ—wÎaBÃú)P£’Bm^¸¨YüÛój);A2¬¼'¼È) LL_ˆùP“‚‘¡@WO¹Uâ”Øþ!±ÿîÀq?ÐÜ.¹8‰!›?æ§Î‚Ôǃ«Î~¢þ´áè'v«éõ5YãÒ)rè §m&“ïèû óöëWC!\©ª7œËAš5Õô„@Ü’ZRèÇm"¯?ÿ>›àiFt;hr)4hhéׯ;ýDÁŸœ…@qKQÚsD÷Õq«øþÒ=Õ#Öf™‡öóE‹eV»¬fõb ¥ "(Ôñ?Xb³ìÞNy‹—Õ£Þäå»R $þ‚ƒ/?ˆÕX>ã7‡¢T] $9„x») ë#·:P*'Ù÷΢°äê§ œÙá-˜Í´õDQ÷LYÒ÷šÙ{  ä†ú Tæ´ ÊÑã±IÃäNa™7ÁÍÿ°J‰bz™;áA›îª )µo䉣ƒO˜ë'´úßLß„{ßb{wS¬}^×ñ&kç¾dÈ€@®Ïlñä¼´wà?74xÄ"ĺÜ&Ëç7¡ç¥ú$ÑÒó,÷übGjlº³#é‹í;”Q©zÇ ­Ü+$Â5xFQKšîn GÅ`!qrͼÑ÷¯·µ)kÙ×TûQu‰MrË›Ò#b£ÌÍá;ŽÊ5. 4³“›ÐG2c»©Øl9, ÿJA á˜q¥Á­‡ß¥}8.ÛRöyO-–#1ÅçÄ«0`”ôÞþ–Á÷Œæ2?Çšyã“8¾š#§ÿ¸r`Ü!xÛÆt¡‹›Ï­Æ: ¼¤Ÿú:–âU¹ÐsçUÀ ”@g>3¦±3D XßÇ4µw‹±½˜–r ”û%ìºWÜ3}tÈ9(7Çt50BFÿÝË)À¨Ø˜­l¯¤¨Ýƒù´Ë:03#èȼŸmfÊ׊+ñõ@ Èöó³øÆÀ 6a3åä“áÚÞŽX7~ˆ3}¤Bˆu2øèjúànß¿¸?ÍÃÂKÌ-ÓQÕÇžËHúÎõP`At&‹4*ÁUU|î<×É Œ»”B GñvW³OœC¯~¿—W€§¬×~`bYt,×ó2l‰lf(®ÝY3˜|7^X´¯˜bEžÈ¹¥3†| Ü·µ•‘vU°¥x²&C.‰ž1žÁ¢Ød¼bÍÆ6,®ý-íH™17Æ!·%zUÛ2ä‡ä!г.m¨f{:ƒÿA}²4N Årb÷-b9©e•±ÒWÇaÕ­%±JdßF¬º°k#VKa©F¬–о.X^Ç1b•ô¡/ÐlÇ£åNî“w·‹r¡Ê/~d0$ qD·ñNä_,‹ðÕ´Û‘&@L®–Sœ0!xér¢ªJíL¶:!õ=ðœy€hQ¯_wý{¬ž“{IÙz¿©ª¢Q!y¡6Q—ѱW®ðú qï‹å:³Ï Õ¬ãõß0)Öñ=¡ÐŽ0øõÛ·óÔ7z½v^}±Ck}¶ü·ÏŸªãþ?”ã*ó >’'‡…1–ýþÀzt,:—»e0Û+geoÿ?:žîÙøßü%¼óÿ…íôÖÒ?EçjôXzÞ»­ÖÉ«wµ³ö¯‰5_¤0Sâ“H’¼^A  í5¹Žeê!Ž¥©œ²*n‘ƒÆ¡k­Á{-uÔÆ¢u0”¡‘<ÊþPxÒ%‘˜i.jzvíxšÔœæ—-öÛ^‰KÓBzIžþ@k‡2%÷¯3?º”ãGT wênÝéÿǺ(ƒb±ÛÿŸôÄì@lùcynø¤³“OåŸ|be¥w¼/ëv£ƒ(›mžôêÖiÓ(U:5Ç´ïïy¸écKתºn´% i\‘CÖÊ—UèZ\$üuûïâ¶‹/fÓ*6™›nɤêC¤=re¿ZÝÏr#ÑüBÞh‘ñ—¢–"åJ,-‰˜¯³‰tÁÝì›HjÉ?Ñ<§4`Æ ÑÜ,©T ã"\%ÒßÂ{ˆ«Âœ°*e«$%$ù•¹èzÝ× ¸°¢VÙ{"*˜2îAß²an+i …’íѧç¾t¶Ì/¢ “Þg| ‡„©ºu^õîú;+|yKM6Jƒ’‚gÒñF6…Óô¤qCöBé@œ¶k×uúÍÝ() ËI i”Iú{V2îê‹­f²ðઠ‚bB«‘%`GQ^ÍB 7gœ§Á÷H‘kè2³ÿ/õ ÅÐU,> á1âÔXT´4ZÛÛ8ÔΆ pèЇMl™`×mBZEÇão®‰ëùz=ow´‡bH½½í¸ûçyØSXzýÂÜáÀÞ;íK«aôL«!ðÅŸ7á­ˆ…ÊU°|Š$•ýÙ¨±zj×”Vêž…ö Ù\zCU|ža8c阪å Ÿ×}M ÚûI~1•ã2O«º"f]±“1Š p‡ñòëùLXçå?!syr_ÎÜ43y-Ý5JFi]²«R!.BŠÛv­'¸xöuœ½ýb”ƒÑ5ψÄR•GQ›"•QiÛ-f0uckÄ=®*Õë\þƒ+)@QÁŸv—×)*؈x²¨¢ ys‹mÕÃGqQ¼pî$õ™`}^È`kªGáE¦Ü“÷önY* Ðôa¤[?¨ÂuGY£QSÈ _U2ˆ}l,MÔŠg´ P]BÔP9f½îr­ÞÉÉ{æ ‡Ô)…›f,ìO‰CëÊ«hj¸±¡¬nF­q效hë˜Ü).ÿÑ™ä”g©C¾ùÃÒ HÍí`Aq´“¥*/í«ñ¬>ª»â^ï‚5Ê[~þC¿s=HI÷€þECV†‡EA'1ÇÑ uËHŠÛm-MÝoŠ+e×Ï3“íÏTi5›K^XÏçÒ?°v‡úž¢ÎdÃ'yA7¯è±ÞÝ* BÏx,o ü(¦(bžQɈ*itë(P,{ÊwÕSŲàœ1ê(*(ég)ôj£ (ÑD!-MgÕ3“‰·Î~í Ûмñ –ä1‡:ð])ÇHÃÕö÷ì2î3r «,B*›¥‡Œ‘"ëÄùž…½ÿ˜Üª`Øß3™ä3>¢|>%´å)À-—…DE’j–Â÷û{W™‚ lÛ m_‰ÈŸ2ªÄ|f±GÇäq".²³ö½$c­]¨„»ih9÷D‡]8ð=JÉgÏÅô, ö›‰çò•íÁÈæÅ<×ÏEtç õñ %Íìö…ñÝ-tQ+É’‹X¹Ñ:þÇã5J-2Ã9£y²Ü(\<ÑÆ ÏÈÍ`kˆìMÕ¸õâRÀæKe+ÎA-n#ópîמ‡‡fÏzUÊÌ›!lÆAƪÍ‘Vuµ6tçsÑ€‡­‰æÎû9 ÷#uÑ`Pí )c/×(h¿1s» H{=„V’ÝF¥¢>&e}-üAEˆo´Â¼>Óä·mв¥ùIS¾ÂæÍ,O RÖpôªÁxô6f‘¾MTò«´Ûìoo/÷kUS`ð’ìñ 쯡[…ëï@D{ ‰hP¤#¢6ŽFC¢~›äFnùÇüëâoFv±õàå8Jüs»ÒðïNL <Ð϶rŒ²OÒŸjô&|Ø“öt Ë,ÛhA{qG,jÙŒôF<(êü@üŽëÈîÊn¹U,þƒH0'Œ_™*©ÅÁ¤L³ùËc½ó–Öïɶá¾íÃH €ìu:¢áCRޤo \Ï·•LFsBµiÏp‘§ó™wŠÓ5B¡HaHã$#|ØŠüýë¼'æ¿,~&>jr§Ïû€/Ù¬Ç=¯#Kv˜ON¡Ùÿ…/wP“‚¯ïÁ~´H‚ø{½7LÜ\™ð`I› e¹ÊNàÒW ˆ0æmÒ€³dzM =¹£jzËì2P=ˆÙ ê}càñ“­“(j 7øÆ¦Û-èk„~H†5 'ç·6¬D2WDÁÑšAj±$غœ“S»ÛÍåõ ’HMœ¢ÉåOl£*køÞu^öz,–/¿ä©çxH3°¢ž¡Sœ$¼OU­×Erfĸã³iWm_e—ð¨M³p¨ÈÒÑSµc=˜žfúJ‰2TG©°Ž”Ísùì83):ÖÛ9 ‹À.m|âæ¨E¸W—&¥üÔ]ìäA¡þ¦ÿÁ±'!!~G}q6Ð:$T²Ó£Çá.‹-®‘iQä3àôö嵉“ï!âúÐ\DzԤ JrO=v—ªò) ’Œ¶V©ak2 Ô †+õ9QDX.ñéúœ«¨©÷Ü”Pñ?íYìG œñpË2ÞöË´S’p»¶´ÃéYaçºÝÆÑݰî«è\áiö ÍyšÖt™6$A |e(· †N†-}¨ÈA#Øw'«*E8ЈޅXàVU5º ÃÊ$Á¦ ÕÐD#åßvýtxgg¶ŠÊ¨ØG¢š–î5_%Dò‹Æk=’Uö˜+ë…®—v~H;g SomˆíÅ"]¨ÑºpurÚà% ±F=¬¸]ê$’ž*q$ räħ&§ã¾J´çÝãòrº@ Ï#š;¸Q»H$ªm6åM£t‡ÀòƵ‹úØÓ®ä"¶õ>ùu šÿë~ÆQ‚N˜Ô©à8iû ×#íë‡Dl釕ÎÅ̬_25xÐ?\bMY¨°ÈË´íHáÚ.J®#p¤ßÇ(œU†ÒX™E²ƒDÎaÆ*BJFð‚ÊêŒøF”tœª|sjŠlذ+Z:lYûù›¸ÿ{·aéƒ8z;{Š”´€ªRZŸî"Ø@É™¶;ÈPô¥y°ý\›1Ãë´^êR_d®£f-òOÎðpš½¡dœf§V[Ô¤91¼A³ˆ –˜ñ*Çj2ZÓQr{“® YÌx•Ç?ÉáGr/¦õæ::ð·+ÂE9ŒcOøÝÝË×°á÷bDj`“DT&š« Ü jÎ ù—á„Ú6üêydèåô£vå—¹“‡Ü‘feœÆ² _~xR¾dµ$ŽÂÙ•#q–yË–‡,šv“k+e|dÙ3Ï‚K±@\„ÆY©hJàæ0¬Åáx:pWµRÊÊèª IžjkPDÁN÷>­œxrµ;6ä=¦]XGõ­&$O·X3Cæl; Ò¨[@Œ£4'†$x§¤qFíxð\Ò"Þæ*®Pˆ(pŽ¡ÕU=¥hèlô19‚ôHG{^ú@PÊ'fãìø„Q-s#ùX‡¯W!$ $_ÇQS)xüåÏèÁ4 â5Äà!ä‰1tâ€à“Ê–¡Ø¤M÷Óƒ³u”hôtÛ|j¦:-!ìÆ#ævÏU}mLœÙÝsUF‚!µw2e…-¡]]±Ú?Ï”PiÑRÂ{¬t¸²ú)g§t"¨X~ŽÖúÁ.@Úß|vâÓ~­JZhg°´ô’ Ê6•v¾øŽûíªÔ¢Y .‘^¬Tßq"ï° õ[ø²R% /‰¨L…‰×™@° pI©-ez{B9˜{=’õÊYÏ2ó*I"¦ô ®ñRTËfFäÉl1˜u^¯CÚt¯tHIß™ôH¯p¯6€{9´IŠy•MX $ªŽEh©J¬·ì?VCIìûŸàKæ{2DJ¦nÍVK*Ó`«™ù|_X°,G3ùßÞz¢ƒ'ïÿà¤nõuäæ)m$5™±ä*¡2)™“ÀáÃ}j-Ñ-Â" ÞAËèÉäáÜ©2ϯ˽ÁÆc¸3,¨=™†'šhKC“œ$0Íûh?JÏ0”¤ËöT^¿ò ÚLÓ46Áè™/InùÜy,ú] dyS"m²æVXXä4¦ œ‘¢=!ÏÔþf…(»]Ö /S`ãà%B|ºjfpb ªêK§,ŽÉäÜ<ùt7+0¦IåHQÃY(¯³€ì‰ò ͯ7’ßóéΰ“eÇ74¤¤r^‚`ÈHÀ³¥ÎÒÆ‚ƒùÞ‡þwÑòuõº¸»žûçáùŠ¿w®ñbw²ôšÞ¦c£'t»3™ºŠËÁ¡¬.±áŽ_Sߣn)¨žõ¬R‰°ªm–v3ËžÙDÆ;²ÉJ™ù¼~ŽC_@Þ ·7y«ÂGýJ ¦+Ô´ g¢<›fúàæ±§}n÷Ô?i™)R 6}~þOèn8‘¸edÃDI£JÈn¦nzBŽ’6iëdÔEôdÄÍ–¹øÒ‘Œ@[íÒ ¨¼ÁÐïNŸÁñxq!DmwG̦–óu¤M—ß–WÉøPö÷]PHà|„£fîÄûÖóµLo:wE'.è°YÝû:ÄŽ+†Ý£ócET¡+ôº–f{;ä+=Á§BVÎ 7–1ŸèÏzòa»Y»ã£«•Äcâ¹|]—y·ñ?þf~úP…šƒ8 v]à L—¿} îñÂ#¡PIÚË<_\/o˶íJ¤¥UÚñÈ?k|Ç4ƾ4vKÄÙ \˜•maiA‹àò°÷à¡#@Þ-…n’VxÌ ¤ñŠ|\ Ùãbõ[o8š§Œ±è)®™„•¦4'ÉHy%ÈÅ» $á <>ׯ3—cWßnÆÈ³NŸä»V¯ÙÊÄXÌØ{™ñ9@ªjDÒe!fO:¾lBÓ¨ƒŽ 'Äpá5óì•:7-âIô9È.¢HçSK)kŠ].Š2Ý‹R¸*栄ŠYª¥0áL? <ØƒÉÆÆ‘BÉczIL5\]J¡«.øI•`ô I#éFNB‡WT؉ €ô¾f/·O4©¬¨“ò ëŽ$ì(Ýâ‡_áÉœòj˜R#g¼±aVˆ>Œ«SJ»Ä¨†K©ÄÒ϶s»™‘šlKɳWÝhçŒeëÇmÌŸQ6Dìþê9Àâ&“Æ’! ”%̳\Œµ¡)ÅlÔãQÓBw’ËL"ÂkwŸÅ ¿Kqq·E§%… wS]’Bˆ™¡dnĆü<«üË4¾J&$Ä0Þ.f&<¦¥;š°•÷1Ž3+aG`ÜÚÙ±t§r€iàPZƒ±K{a0$ 7Ñšœ”ô;^Ï:)Íþ@S®A¨6é™»-4ŒF £cOÖU#ÕÕ¢!p¯-ëd.?dOYDÇ‘‹t=}Â9J›CÜ:™œöéDÀ@ô8´fÂdçôP gÛ®#,ýÛ¥QØÄÌx“˜ba±ÞNpÚ6sñl@ ÑŽ!¿ˆ»¸2²~$_4ÃIG»‹Ô_ª®yt樘ë­+V4G›7ù2¨6ÒàõÌLw‰—Ú,śҨ&ºäqK> ^÷è"“¨Ð/È•Ðÿ%õ…b°gCκáè<˜›Ê&p3k㇅š‰d-ÜOÌs¥éLFSe¸˜³³O©¨L€¢é¬8£¢´Z[†fªóÎÞ°Ò¥‹QÉ@ù<üþ·WU¿ £Ê|HUŸ %Tèò™…\¢¬ˆ9É=©¶6gª£;l¼àÛe°×îHžõ³zÒ÷ ØÙļ¡šäÙg|N,¼¼^¡DM1]&dËyK›ÂJïÏ´DÁ¡1š¿}¾ì£wÓÙûà¢k”X4BbJ ¾2~2`©€™0 >û-«$¿Qí쪒3‰9CÄ“ÜdZÕ¥‰QApÒÀvwïõ™/ÛˆÂÀB¨ºðÓ^í/ó»ó°šùãPâ¿Uj>ZAèGÙ$UŽARøÍ®Gð'Ž-ŽêÕ0~Â(¶LhÙû“ÓH‡u,NÔ#kï>Ro¸6<¾šxr£ºBg„÷ É=šœÈû™Cu†ùcr’ãWw_ØÙo½õ ¤«)ÔžB‰V<úõübûü#MÃe/˜(âú÷• nzä‘ ÄnƒéðãÑF´'ïÓ8-…§„Bk»$àßà©k}oUMwžïÚ}}¥þ2w+'}eÊÐ'e¹¦?i(¬æ&¥»Éí›—‹_ß{r¡{%—ežï¸@;5|pgeCéHèü’V¡¼55]¬”}î3EˆpZî håHôJÆô^ªú(cÚ(é„M¢Â[%ŸBÍÑ32K¨3¬¯ð–øÅÓ'7Wƒ´MÄ–UŠÔ3÷–Óô¸§ÖU;ÀRŠp˜F#îÃ%çô®¹¸,ð§xd7µÜ¥öštG¸Rõ qÕÜ`Ò·)ÌÌ®ÌLft„F§Êhôy^_GÕ!Å™Û=SS‡[Èã÷ùGñ±¸3S ^Tšï|ÀÏv¹þžÔ‡d6 µ3qeÊÈbÑ85'ChNhV 앬]7¬t†°£ü>¯Ö¼•%öۯѓŽ"!t Öße6ù4‘™§;{küɧó{wËa˜¶‹|‡ ÈÖ ½Ëâ~˜z©qn³ ’2ÛÆZ%†,ÿ‡U¾Àµü‡ÖU¤¨O`ˆóðß··2œú$-ñ?õßzуA@kžwp~ú¯ÖÜo=o˜ý¸{`‰K’¾µÀ0v)ÿæ:öc)‹-ÆM8{¤:1¼n(2Ó(!xYfÐq€H²cѵa#{hÎüÄr•ƒ»•À2V/’Gµ™Þ>ÆìÜUšDb¤0'"CÂcvp=;H .ƒÒï•‘ð„¤pb¯Û+L5 ö$à[~Jq«h¹Òrš-Ä`ŒKQ¦:˜Ê‡Þ]õ„lèöªÎ“ Z/= ¾§ñmÛäŽ[2œ™|FN7Mui²¤\ªØÑe— -ýs²ŸŽç©ôw‚+51@HÜ4*µwª;ü×WÌv¡å€®ßïä,ºRJâÅqŸ´t§ëË®—ÃÚãåŠG,X ­Ä2ð¡u6E¦êÅ›Â}øükJ,Iáh9^ªyŽ˜Wò °¡ê# œq.ò1er( dWÖJÍ¥é4H»ñ†Ä½È,È<–È1m0€]˜Ñ'¸r }ï•‹€?u×vÒå6¿¼ ? GGëImFEBãˆ1š&x‚#ð'â"#&àù£œ¥– —°æÓB%ÉS3섦yiºÔé =øŸQ'k‰8"Ã%Î~G"6"œ‚]p<§zìÚ1‡¨(¢q‡ÈÕw€ºloÊjðz2M?X·‚)ë{×\ Pµ© ©¶A“s³Þxö*d›{§Ð&w¯ˆ•„·2deà_†ô ^cHÀÛ[‰¤±fÀH»AG°lSÔœã£Íä6Ö˜íâ°¶ôe§ç3Öìärëh¯9Wùݤ¡ò?–»êWÌ£Õ“îÙT@ìÛ:p+ŸØRR)C7¶µ•¤JJ¸3G»°´ÕçqžãZŽÈLו£xn“Å=˜îZ–Zƒ \“6¤µÏzYÊqUÁd9ž^ŠñŒÄ«3N6Õ¦i¼0ñ¦cnÆj¨Ç¡lr¸»=†ù\¶dµ+ªH:iwì@µo®iÔÞ_*+\.¥£˜¯€T=ð•b‹‡Û(º’ðž¤9-Ò•ÎDÙƒa4=}Cõt#ÐýxëóéD+‹¯›r7.·ÂŒ#RÆXI%$&PûˆJ®×Ãæ!Nµä«±¡ƒ;NŸú¹Ž3 …”Ð#¼!’;òLÅÿ™õfˆÙ#Á,B/…´ïUÔ•õÂ¹Ç ‡®¯Þ ô£Ï ‡ ƒàQz(P¬Ës6ŸxЧ-ZpHa&Ç `ƒ#Yñ¼|ï­hlx6ÐðÿGË÷Ü‘%¿ƒBK¾8i+­ªy¢+;:ï.Œév ûlå]ÑÖs¸#€ž…¶È %X› hexÃŒ@ícŠ]ñÃÁÛ“Li[ ~Ö)¶SÚWre…§\2-Ö|Á-ê’ÛŸ.€½ ` TÆ‘ò #¿ˆb+ff%mg‚U¿zIW{•K¥Nèqâ©}?Hý²PPÂÜZàÕnÎm¹ô.i^Á“8‹Ë[ö‹QÍë7ŽA­@­õtâÕ¹¾c$E©´%Á@rQÕ)7];«ýšq…V–šÓ ½†Ã°ßû š{¾c+ÚW{í¥$ ËÄÌ~Üú4k„kÚ°r°!kb4U(ÅE|kti¼ï„&2aêHÓ“æ}5m*¦ãOÝðb%èùÊz¼‘ðÇÔ;NrIÏPñ3‰CC‘ 7@\kqã4¾Ð¸ilK¢ëôs-4ôÃøõnf° mÎE׿ˆï(zMc;,¥XèÕç‚@èKǶßHARwǵ[TÓå × SB‹cZ$ëðœüÜí‘ä€ÿ1+µU™…} n‡¹û!Dб †yHjù$O¼0Á"ŸÍ&a…ñ³e A™ÚUÊÐ ±á3Ø3òÅ\·‘³7pÀÀ³b3­X>’ú |uÊËÿÑ%}]Íî~­u¥"õ˜Jý%ûœ»ö»A·Q‹3=‡¤Y”üT®ÓX°CÒT›S ] ”à±l¿•‹)T´òv¸WÆmLð¤fŠZ4vv®Ú~¹§qxbfâÚûD~áæà4hÚ°ò…˜:C¹ ƒË-‚b:È6qƒ°ÙŠa&º1 Õ2†ÆMä®Em­ÁQͽz_ÿšîC8ÊËÀc‰S4Y‰ªf¢÷¸0Ž•ÑV›¤rzcÙ‰)Ø Lî•jí§[ÈÒ|] .ÈA1$MÇ“&Ùœ³~⌢ “Ô¸‚ Ñ\gwϹ â¨ËQƒ'&…—«@鞟L‰ä¸^§Eò¸£ÒKa\Ñܰzn U#ô®N±)‚'~ˆäD»'ŽáÉtŠPÃ$Y±BLg2óÄpB" h«ÏáÞÅ”RÒ,rnas4•Ñ•& £ˆÿlv„.¥ë©ˆÃW>µ2¹9ÑœÎZ¡Rò+,–.S Å9@J®i)ª[o?Ç•>bxQfÜËP‘ ËæÒVhêÄóÜìw÷ô$›_Çârœþ˜À²kú äpnZn‡1O(l“ÑpcXh4ë.“ ^ÜëÉ«§Ÿ©bÍ{LçÊ;Ä ç8bMûh.h±ç‰}gGÜÀ¡ç‰o/æð¦X*ý2¤`—,àømåðN0Y§—ERlT½´ã ÀYœÏ1>î fÆë©ib>©’ñcþ×;i %R8‘€Oq{Í´A! ºZï$7Hq>[Úþ4ºùm&-Ôä¨j.áYçœ3ÁÛ@±ÞÙ$ÒÑI¼9²P <£wŒ( ¿|¬‰SûÇ«FnÒ|‚/EôC‚ï5.¤‚Ö)Í‹@8Ùa,jFAÚ¢ƒ ÷7ø/ô^dñh e¢À”ÝSŒÔåŒW^güLîZb;m½ÇèW0öq¡\R(ÂÁ…æ„^ƒ]˜x]‘Ön261útGÎ[nüšô1B/„ž‰ì1$Œªçè¡ë‰kµV¥«œQGø’5”–‘ÄoYEØ¡¤{cV¿Æ~nƒê©#<ãlRYoŒFé-yÞq­ÓYiïå¨ëmO ;¸ÓÊGØÉ]L-Óüû*·ÕªÚû¹ã‡ŸKO1‡ žsò|ê¦×gÒⱟýî³Fuo’ò|í.G|=xàï´_jÿ—¯}9÷D¼©Ù ³¿–'`"ŽÍžWð.k(RÏ‹á¤K E)Ï Ï ®”`<'åÕ͹ES$lÉ}åÖ_„TM8™ªÊö¤É2a´(QþZ€±þÔWöYçi–ŽÒ\ŽE•ÌÚT©BÁX»`–Õ‘á·ÄEOÓºê1R'c8•D ºŒ}xоfû/¯á½G‚¶ó>DA2 ¶,ß½Š-§Øb^¨yú«‡Ä´ß\ùѦ„'Ĭ« Á…xüP2þ`Â_€ÙŠsh"4) ™ÜÝÄ•‘ÏY±Ì¨Û6z†™/°@½CÜÙÑœ]=³Íóhœ} ²BÎqRÇJ’%çT¦š”W™Oˆ$ô+“ £çØ`n$Ž£Ep9DªË;9„£J¢£|õEñ.ǵGÇ2ZŠ=L^ûæ¸ï#û)ñ> E1лEBÄ]ë?N†‡bLÛ^ŒŒÂîkaª+tk)³²ÿ45«. "ñ¨ëx3m¡šzR5ñ>TWqc&Ÿ<®22ž˜æÅ&ßK×é…=YIó ¶*Ä5aëûL—ŒP%MRÁU (üŒ7vöÊÂýÜú‹Ó3©¶Ï uC®¸íù€ýl’ÄÝë{#¥ qÝõ¢9£(òkù§s*—äŒÄ­#©Ù\n’°&Þìº6Ì;ú¢:3†éR'cPÔ÷ÊC„Ã* øbt§ò&I»$j‰ÙY(šBôWÀ¯ø÷ð°5ý'ïdyø€®ºesªø@³ n»- .oÍY}˜‚tÚ쌹©gèÎÿ]áCOš¡©½†zÇ% ÊÐó×CMhürš1ÜÆånLºp£¢Í 8i¶î¯N¹Çmÿ®N½µa„Õá´ŸªÛ ZT¼x7šÖÅöƒh~«W¢ÓLEE‡€ FÞvA\qúbi÷…ݱÊPt'Ø$f¬Çð%sYÛZ{ë¿%d-[¬ÿ×O—z.êëÉWT^sÝAgTÝP¢À±ÉƒWßÝ»+ÎS³û*á˜ûHĤö>õ\p?¢~¢¿J¼ÄÖ˜ÃÉ`ú`s€gä)*¾ÐýPC’ÌŽ:Þ uÄκ\7îú:ÒE¯IÈ×™ !4òù|g‹“´œÓðk"îRÈ“X<6žÅ½Ìò:m³ˆÚÁË¥ú7HRG63Ö$%i}»@*O°c£ŸÃÿÝMwv³ð¦ŠK;Òþvhö})lgÜ'dÌóï4©È¿ºè^)g‰°ÍÉ¡ì’n’J6<ÍíhÛs»Ûº¸“Ö¦ÉW7 æ•Ò£]#œ)œË3‡yœ±IÜSú#&E³0´ Ü Þ>-†Ì CºlO×½žØ¦7+¡ÉÔíkmè:¦Ø¶@Õ8FÏTæ²—‡ÉŒ‚ó \vó1#ŠDÁS+¹'©ËÒ½à“ìcÉüõ[©o µËù-¦~POçΦ™Š:ÍÅì†IVN€lÓ¤v"n’ËNi¶\Œ‹pÔwcËùAÇút2Å ™iñù¦Ü9ÂÜÈÇ' $â‹f‚-p§é¦²nºÛ°ïe#³þ—šæÐE„> PlâqWq»TŒBJÅœ“Þ³0Ù(Vo”zö°³™ë ‘TªæÉ–´†„òôw ,å6Èã*‡¢L,À\RåUXz©`£¸Ð°š‹Ñ@˜ë~ùj¨žÎK}áâÑ8ùm¡ÿS–ÊóÞ„ßÄ_»Èžv”à=L¦,qZšÿš‚Ý+¦T²ŸG½å™ Ø3t 2lRgÄìí]–[KƳQ ±"þ+O¢ñYIÆÛš¬§H)•S[$ð‹‹HÐ<ø¾ŽvÙrj £‚Fú¾œÇôŠqæŽtdÖxEgðuŒDI qúC#ÈC“ï¡°Sù«Èh)ÄKåýýpžšWœ9‹d´­¤­g¡n+yá¹Éç!'½1„÷… ÙØ9:)K<⸠ï{gZD"ÿe$w~p÷“/6HÙ†š;M>ÜÕcöàs¹çA}!sÂ]63ŒÌ°Ný®ðC)ïø~á}îŠTL³üÑä–æi)¶fôã,/¿€¶§ÿ(è3P• ßLÃâY&Ši_«òçOÞŒ:ÅsºþßW„3 B /L&a³¼üÈ’YFY è_Ô=æ^ôäXò0ßx+Q^ä µð@YÂZtÖÖ!˜6V&~wZÅVzAõÞ "mÔ[%_¿)!±»ÁŶ`C"Ǩ{X7z£Ÿ TТ$èMk”„_¾Œü˜”fë­š5ŠÎ,XýœnéF°7R”2÷§úÀ=f= ?ø“ýWP4²ö"tzëöàÍq×–ÀðU}%ÊccXY‡#zwÓ)iÙIptbšÎî(…0~6»>*f³]ÃõÇ<ÃKÞ11W~“ÍçäA»aó1Ä2ß £ö¬T×ó ‰ØÖÓêƒó¦'¥#º”7rÑGjùô˜Š€;ÿüyÆ´â@Q ]}I÷­+²L:¼]¨²T\9îT\d8 ášOmˆ1âÄI‘)–$!KunäÑ •‚ù55hòÁ!‰êÈ,¥”©Æà¯ùä룒±Z] Ù%/ªiì-rZ5ÕúÄQÝK«Á[ö]Ë¥àSêð›RškÖhPZkü,­ é=^p*2 Ýb—HÍüìK|‰¥8ÌxhÍû?P9£{­ƒAt+ÝOœ×¸d¬%Å… ™­NÜ3gût‡³±† [© é~ùIòñ5ÙÕõqE¬ð†NìÇp¬~¾^‡©ú}ª/ölÉ)Œ}yéêçûî§£ŸV¿vày_TKaozÂ&Þ³6å=OA 4ÆIØ*bÆ.cû|S–aÅM0ºiõ˨¯½Î¹ Óv¤4l‚y&S‡,ìר8«ùÅtiõF½m¨9ñ° ÕÄŒqº®kL×a­Ô0ÔcýQëL‚îúCÛm/wÓÇÙS^N×ø›“¨UjÜötñàØÃòqMiôEÏm¥±¤¦Mö9ìcNÅÙ:Œ+^u]…} aîõ6»­¤g$u“¿úýg„×ú^ÈLJëäü-¼Ï¿!Þ-R~ÞáÏv‰??nñÛ†Û:`õÀ·ªœ8Wwô¿Ÿí‰èººÙ¶è-w…;½©w/öÒcžsjwNùÇ(ô8ôt{xÚv_[¡}ßP{@Ûïëv®bx€hëNߨëvïk݇‘¹”‚o¢›Kí€r™7æ³õ€¼;ýl)…ëËž›bôNt´g'­Š·“ÒßuðWæóæ#îu­ Cߢ¾¯@cŒ ïÕ_áÿÎl¨–`¾r|šåX€vÉ6™Á8nÀÀÛï˜ÅÏÌ`há¿ûMï×N×¥t§ßþu}‚ÓHeÓ §*ˆÓš×¼ˆ²+Œ/?úTr/ZÚäNÚ /ޱ{¤·TîUI{1rŸUÚãÊ}liÍøŒÍåÝ:¹·@ÚKû2¤=¹Ü'•ö¤Œ/›ÑjDÿj TÙùCål±jvÆrÅ1—G¨œ ô[2b{f؇gfµ÷É<»^x^ÊvtÝ-Ã.vÛtÝoÃQ/®6 Ùø|© K”ÈôÉåw‹<›%ÜžŸð~K|xÆGÞ7Z@û *áýÇáËxUè".4xoÓ ¢½ÓE‡¬Í0¥Ð€BØ€m:šRDÀ¸N:N~Œša$,½[°0EŒ‰d­«ÄºVާ¥¸LÓ¦0&1qT f¹xÃë"#†rFƲÐd†˜Ì!¬ B ‹øì1ORym”Gèi¦ ’jHç U.‰E0$šPôÂJÝÌü(’!_¿ÜÂ^xŽ$¢Z©aÉá?3öÐdªá•,zýŒØÉ #Ò ”8Zçy Æ£Œ¯Ex6IÐú@}öùîþ¬¼öñ;†o9l@»H ÒóMY“\ÆÅÕ͵œ+0ðiOÁ{. s€ù%†mó†f«1ÿtÆG+ ¨… )ë"`Û_𱿲06"3:y fÿ ÑIÌ ý60úa¬lÕ@ƒW?súQLfE?Ïú1ëÕEjp?±súñº¶Ÿ€¯÷ú­ÐgßO´ñw?k -$ÊR™„by¡ñ¿êSQ¿ð÷ÿ[/š íz%µÙ$ášU6˜…ÖkÀí!Îÿ¡Îÿ„´œaвûßR*O€LÀ^›çVžzæ¥vÂÁv_¬¼™¹ñUd™:½,J[Wl³®H’Ì &RgѰƒA¡Ñ0û½Ä FVù¹£Æ›fÆø†ù†!¡ÄKî,áûf Fme|Ÿ7 &Œ÷l»Œ”l 2BñD4zùnôPƒùÚ.3‚6{JMªÏOf¶÷c­êSè †ñ{ˆý¬^“d6léRí|I̯—E/ôFˆHlt…±„ öIzÀrçy][·Ù¼ ü¬´$„ÿ~Öùœ2ñÏ|ßkH3«ó‘oùšEZÖ¦o“ìÝ–ƒ%‰uÇ:+¼5cýquÂÌ}QéŽf¹‘f¶Þ¬åmö –¿9«5wóVøŽà³å‹(ßδx%[¼¶w<ñ ¡ì¼ñÂ'_MI­š`ƒp@¸ <>ˆ §FS!Fb·rdÈ@‡QF£‹1$1ìGãš'.ÜxðâÃO@×Ð ¾éž†3.Ž}©3ß|'Úfÿˆ'An ª  $iT¼¨÷jÒø~=¶Õ6=ú&p ¥ÆL˜2ói³ôc?¹‘Ý^ûš±ã‹tj§]ÿHäþŒÙŸ–Zn¥õZs´m ¸TiÒ-,éFQû\yòýU P‘b%j"ÓÊUÔW©Jµ 6SšznÀ©&Í­ÚôDtH]ô˜}ú9 ÉC쀸¡Hž°mHlCQ鼋–¬dCÂFÑ¡vìÚ³ïÀ¡#ÇñYï7ú¾×Ÿ(s#°ƒêɾoNÉA€8ˆ°1X}A7K êÈ* FÍæ ‚l¡H„ÒÎÑÑ_àB©]­®MxŸþ~ßëÂj]ÔMC#cÓ \inaie-W@ #(†$E3,Ç ¢$+ª¦¦e;®ça'i–eU7x…æy6_,WëÍv·?;Ý^ †£ñdÊ<2°˜¯Õz³…`Åp‚¤h†åxAT%5[7fÛξ3Œâ¤@Æ øDÿö[Ý´¥r¥Z@FP 'HŠfXŽDIVTM7LËv\ÏÂ(NÒ¬ž7Š”KmXÔœŽ``Ú``hdlbjfnaiemc C 08‰Bc°8[Ÿ†@aà™„‘¥D ’ìÈ*ÎÀ°?J=.2Ʋ™HKÓÆJ­Ñ‹ŽUx3Í@ç†àq¦H¢e·,gJ“J]©·4BÙ‚­uLÕÅ1P«ßèô›œÍަ¯‹›VÛSÚ” ã„ÇÒììЋÉuιcÄL•IÙ*›2•™ðÊÇ4òôcmW%¤(5d•‹ÕtÖ[?gØZ¿Zƺø–8sZe¾†Óu¸á4VÞèœg“EFÚ¬ÁfLf9nœoË@P§­…1sªžÔÃ2Þ7°äÀ#§\;IX°ÆJ¹F„¨›ÐàrCÂ.ïk¤œŒÆU­¯;®´‘ŸÔz+›LiqœΣŒÉ¯Ê.°ßÁ²€ ânì6x|”Ÿõê°ÅÛå—°® ®`¹x¸N7éá É@߯Ã-=uæ'x<Ã&#ði·:>®Ýù·!º"ðêpЦG Äzøæ0Gço©1iPƒª•Š\.fXHŒšuT¤;cÀU­á]^„¢¸ÏôuˆFJØ£@©ÄçÌ]ã(^%ÒÇyS”X4N/ÄQ‹0¡Œ é)msE€ʸžÒÆæJ&”q!=¥Í•"L(ãBzJ›«D˜PÆ…ô”66WE„ e\HOi›kB³?‚°}Vväù\ëa·þ|ÙìÖú_mÅñ's¸õ3 ëC OR}¸R'[5ˆÈÖÐ!à54BÊi¸¯ÆO°0‚»ï³ö•¡¢Çz-èóT²áÁá9ÄûŽa)6ôš x ™\Ô·çVÛÐ>tSR‚ë Ò‹±D¢èïu ÌáàRž(D˜PÆ…ô€TÒjkǵ–U9ðÀQõq€ʸžÒÆæZ&”q!=el® aB?ŠoV÷}ûyº[”ëÝ®vÓ=qZkcŒ1Ƙmn- D˜PÆ…ô”66׈e\HOic?¼¾AëN®“ø¼¬&sgò5v!ÔSÚd;€ åBzJ›ëB°aBÒSÚØãåÙSºüæŒL"œ€"ÆÄvR„ä+U—¸E'Æ­]ÌË+&I[|ËÆVê®ê‡×Ìèho9»©üVŒZmUrú×ÒbÀ'8j·†^_giÊÑÏ+£[pÌët³,¯LÀÉ™þìHwt§ßÀ„{ó2)ÍóÛÒ}û­9صâsƒ³8I‹|J­E/¯±@jbÌÄ“A9ÒˆžÅã’”0.¤§~©¿–åÏSÀk¿}ÜÞÐ/ü~ä±~ô!”q!ÿÄû¸ñH›[ÑWùÛ~ox󅢟÷ÇQH Öû&ž•ªÞ³Ó0âæ¬ómò&s Ìâ8}“Á_Ÿ>àeT#h¨aÖGããD©TŒ®lp¨ñT©i0{ÑØ%@„ e\HOicsu€ʸ¿<Þ»é Îyâ „2.¤§´±¹&@„ e\HOióÑ~ÿ$þÍÕz@ ÂäS÷Ýt¾súÛo2ý~¼ JòTÓZð#üÔëqº“G)öýaB8ÊxA”dE=ïÐ0ʸžÒÆæŠ&”q!=¥Í•"L(ãBzJ›+D˜PÆ…ô”ÎT"L(ãBzJ›«D˜PÆ…ô”66Wˆ0¡Œ é)ml®aBÒSÚØ\øžÒÆæš&”q!½S"L(ãBzJ›+D˜P!=¥3%€ʸžÒÆæÊ&”q!=¥ÍU"L¨žÒ™*@„ e\*“«D˜PÆ…ô”66Wˆ0¡Œ é)iD˜PÆ…ô”66׈0¡Œ é)ml® „£ŒDIVÔ´@„ e¼ J²¢¦µ"L(ãQ’5­aÊxA”5­ aÂQÆ ¢$+jZ0¡ŒDIV®ê5´±ß·¹‹ïÞmÿëäJOicseÉÒÚSÚØ\X² áÈ<øŽà}t'›Ž|ï´=|Ô†€2!͵"Lhò¹ƒW½2Ù*G¯h÷¹ „2.¤§t¦ŽÊNþÜâ Ñ„ô”66W‚`#¤§®úºUˆîØÂ?ú\ ² ß*l2‚Ä;ã5²‘ÉZBê¬îfïÌÈF[Z!•p7“xgF6°ùS÷+Èi›Înò³%è<¿™»ûÍþ}ÚÎQÀ?–àДø_j·ý„Ükƒ5Ó‡É#7þ¤nm ˆ÷Ü÷ ÏÕ KG«ä úéN ¬¸µ”îÊ vR¥ )ãBÚ\ „²ñ÷á‘w¯€{XX¹0g5§`&<-aÂÓ٠„§³U@„‰_{ß>¦çÃtÚ­»­~w»„§³õT&ÛDX¦ ¡>@„ Oéß›uQi»f‡f©[e D˜-Ø÷®Èõå¿ÿ7<ý¿¥oÅ!¹~C?Ç¿ÏóRE‰*˜ò N{^ì1\uã¸CF¸ŸaßbÕÅï6F,6Dó¬h^#õ\Zvn÷wŒ.ƒñŠaŸ÷Ú|ÕnÀ­T1aª7;ÕÛx¡‡¢¨³ë³}2†ýýؾc>¼8±ŒŠš•GtôiÎ8“w”~åÒ¼§çº=ñ˜Æ^¾¯˜ßo§qòÊ¥2¹2@L¹T&WAL¹T&WEL¹T&WCÊ¥úd¾*NÝ/—# L(ãÂÓ¹bʳM ÷!¦<ÙÒøÿzÝQæ hš¸Å[Ä€‚kš¾òØÆ'?}oµì—ù­ðx$åGBRŽ[Óô»úOqO×Ì.i&ž™ØïœÇbB¨³—±pÈð "AÀ¢¡v ½î-™qE¿öfu×yH¬þ|¦³f5=Õü¾qÿç‡I‘¡^d6U oábÖø ô áJº0h˜Ý7ôPØÌn/1 ž€–xÑF\ßâA w—j—ñ˜+݃Ã#V·Å¬v»B€·[­"DéD1Û‰\€k[öÆéï)‰µƒ¬ˆ'ÈÖ”Pas—“\mr>á¨Æ °à¬ù‹Q­2´X¹æˆù)‡E~HêX4h PŽNÐS¸s$vÄEÐþ÷Ÿ¿íÛ‘nqjÃÐCQÏ0Øy°–sq;Ê:%`£¹Õ&BU“š¶5ÏŽ|¯¡‰Î4à‚[‡‘Q휕pÑ n|£èpÕì ÆP‚s,;Öý§w¨qò›šÃæõëˆtòº<ïlÅïæYjž9Å'Ãuéd„P ç¸5X:m†³ä#±,•ª3ñ:úµJÙOK‹Z ´–R¬D*J©äÛl‚MäÒϦQŽ¿ذ/z2‹àJ ECnpÙ‰ÆÇQ=º*1#ŸFõSÊ–5Ýt™y²ü̾C1m5CIVÔ­¹ô×í¹ëôïp–úÍ4èºí“@Éù¾ê–œ²X;#úºJ‰r滾bÎ9¾Ëë"µ …µC`цvS%[…äyÛf5ØjçÞ¯²/“©9ÈÞT¯„)xo"ÁÁ´Ã#ø¨«ý9DûrµÁšomùîܰΠø~#(³uÜi]~‘~9¤•àŒ¹< "ôÛþêÏ,Íq/°sÜvÊ|ÙœºD–.¾<*¾aJ1º²ê¹#¼5nSEÌæÁÚµôxâN‘Yý† ¸¨">÷2ß³öCŸŠ¸h,‹GëˆGììvù1Ï‹Æùø[s2‡9,â"Ñ„þˆ)ŸDerMÄôþ->Îø¼•ª…4dý¾·åçËö‡Bo0>Çï?~Ob ÎèMè<7Æë¶·'¦õl=|6ªÖûv¿ô0ßé&×å,ÿÉÝrùòrû;•äQ4ÃŽ&’ð£Ã)ìÉD<þ¢°ôS‹êù’í»„4¸A1ý.•Ä a³i7 „¤ÂP¡ÂŒ¢ôf ²‰n¼ Ü*¯ ƒä¯3ä– å­Ä:Ém[º¨3Ü3ÁºÍº\?YíAŒ"ã'€’¼ BÚXþÄNô@ЀŠËÇÞùTבÓ<OñëÒw¨íω"L(ãBzJ›«D˜PÆ…ô”66WaBòê]¤2.¤§ö§›:¼õžî/wq?ZºËxÖ¾³Ø ´fþNS½)v¸Zã‡yË[Kà}òÐβúßx1¥5¦líŽþ§Á.Y¶ò-?® òÍv¾99ßeG9E¾¡>OoÄZ~Í·fªjÛCVæVN:+PùM凪¦ÞãÓÉ(‹)¶ „2.pÏ|”?ÿwzÎ÷€bAA : PÅ÷¿ÿ>´·P,(TgÔœÿËK½{È­ª2.¤à‰žцÆ6Ž ¢çeŸÒ YlAˆ,Ø«zH‹æ¢“[£Ž›šŠÄ ŸèUà >ºÛ°Ÿ”òmÙﲿܛá‰Ó½ü±šòBÎÙÇSœ—%\p6Vܤ-=Dˆó6ÂÅÓirâ3¨Í7tÞ»œ'™ÅDĨÕâwã0¥Ù' a™ç,b§Ó`f1'Ê„ÕU»ø ¨°­m+¿³¬èd¨£ÆüòÝóãv?f¢®¶n(?½Û‘5íÍ6öàB-ŠÝNöR!·ÃCˆàg âí ŒFE9u«ñÙ ]ôq% 0ŽX:‹!âÄV°=x!½cèSò-„p‡ªgÃTR¬ÓËDD‚1jÊãïq±šäã h–„.",$;ù|fû±ØЍòF¬F—ºO¼+@'Câ oP±@;$Ʊ®qµÆDTú…Û<vÅ’Ëæ®º4ä§"!7‚€]l¹yÝåÆK5Ù½èeƒ³Ï- LÖ`ĸ–éÌö^Ë…²ÝjlÑÛŠéãy=¾±nRG®,%:1áïò6ã*µ7‹_Dô“/ïÁñŒÂ¢%¿ö­nsá^Ú—yçÙªækÿùÇ!ðË@Èð«JÆò.eÂOú£÷»J¿õy7Ø}*Þ„°›•ð¿ð§ÇÝáx:lÇùàmÏG¿Ýs]%-S¬þéÌ]Ë®(eˆÊ7M&“Éd …B¡H—Ëåòô–]÷íŒ(eŠô–R¢F+M&“É®LÉP( Eº\.—§7ëº+3E)CT’Ù³€R¦Ho&U*Vÿt-º ”!*¤ËåryúÅ÷v¦(eˆªd*•J¥2M&“u+ÞBª„Õh¥Ëårù“Êç{;£•2DU2•J¥R™&“Éd² E2Ezs©RÆì{Yí@ˆ0¡Œ é)ml®aB¹Ÿ®°¯»ƒ´³7'Ö:|!ðCÿV³äÝØ"ï,ë$o×»ù"Í>|ßjFý3¡Æ>)D˜PÆ…ô”66Wøú|’”G‰ ]€q!=¥Í•"L(ãBzJ›«d\HOicsU€ʸô”66WxE×8b½š¶: 7rDm‚e…{w¬ˆ< *:ñù@„ G/ˆ’¬œêyÖxA”dEMëD˜<î`w]TI¢|á\¿\/û-ÂÛäEƒäFï{û~ eGR.'—­°W©€WNðF*©þŒí_T}¥šò‡º_ìÕJësr`ò'ØÔÁMhr6ã’ÕFpúlØq£†½:†s¢©ƒÅ.»ú~>mj“) }ÌB–æYÙbÙIí\—ߨfoÇGh¶7ŽÉêÝ«@ËeãØ¢»ÏÕ4îøÏm*òñéýwP¸˜DOé™K%Ø¡óˆÖBÈ Qn¸×º{,I‹Øè©…,m1þªÝ Lq? ŠÚ²=o#y19éY‚ eãîn "”q!=¥3ÍSìÑû8ÒTLëâP±^#ÀÑ1– «€EïàÅO†”®›¢A¬Ó³AtÅŒƒS>òÓoT È“|¾_"2.²q1KÁJT‘²jÙ|†dþØè!&ݺÞ:槆ìã¿­½¼ûâÅÛ,Ø¡[ýOGeZÿ:Û[«?l‹Aßv’ëZ}›®¶Ÿ=´KqD;Ò¾ópÁæ0?mFn›»Î£ÑÃ÷î~1ú.Y÷Œ#/µŒ‘éÈI7׫Sô uÁÞ£rrʽLnH#á8ª7ivPJ~*\q? 8Ö€("Öý ¶Ïï5”Pã˜áÈÖŸíR·¥vHw÷”2–BÚy;Šæ=#¾"Uf»ž²kÖ Ï˜­Óûñ±¤Ni´¶Bkǽ°ÐÓ¸ïÍõg‚^Šb±Š­ÛtBcá½»“Ô‰§‚²"å‹?ù;aµÚº(G˜~Ö #x)8jbÜM»ˆñE îøíÚõޏjó:Àjz©wßoï6obˆŽ yͰÝÕy2HE3lw]žç D™B%Õn õoaá¶Í ZiX@FƒS ØZQ+]I¬Ã‡d|­É{Øá”îÒÖµ,žŠïug…×ÙîáLZ}”ŒÝ‰€iØs&bw'¢*A«ö‚Ô©;Óêëþa Ù]ÃsZÚàÞ 2uɺ ^iù…ÝE@R”¶’­ýh[Œ¢Œu›35¾¡ÓÁŠåãN)ÂP2 #(–SƒB0’ŽS< #(–K:­0”LÁŠåô0€Œ Ø;æX~æ„àl@FÒñ(g%7 #(–¿jV‚³1!A±wTéæÜ 0”Ì‚šý†Ê}úëÓ³ùß5 ‰¢$+ª†[±YBb‚(ÉŠªáv<–ø@”dE§bí–ËÛüÑ:bµ{û4àxìò»¾ï}¾R§¿VpqÎ~ø$Àôîq€9[÷—<Ð÷ÿ’¨ú{‰~ ú™L(K¤2ør®RP,‚¬¡H,‘Êઅ ‰%Ðå^B‘X"•Á— tµŠE• ‰%R\½„"±D*ƒ/7øEbØŠÄèò@®¸¥ ‰%R|ùC­UP$†-¡H,‘Ê~&]yÝÄ"Èz ‰%rRØsÿ?|ÞüÒ‚,G@`PpHh˜=êh² AÁ!¡aöèã8Èr<  j+ºèZ_OÏêuåÏ~ôó7²UµûhÑo¨Öý7*7û/?€ÚÙ”©Ê‡ÑýúÃq×Ášj;ÖòÑW?zJ›Õ¢fmk¶€ÊnÅ¢-ºû5Hâ/­S/æ««˜½íצr]½ºœùi •vÚ7Iòf Y½ÐP»¬‡k§ò¿_µE™úò¿ÿ{‘l[¼kâÇa8‚içûµË:L[•õòñÚ!ãñ§R§è娧ùÖƒßéüÎkãírhìv„B!„¾­ƒ€˜2.’=Âÿy'_OÏÀ&aB¹žÒÆvK€ʸžÒÆv{&”q!=¥íV€0¡Œ ùqä«÷IXA„ e\HOi× „2>Øå„Ûò ©Mù¶VóžÃ@v7¾Ù°½…¨h(‚þïå›É [ z'¹›_™èCºsË1®½Û9WOÓ¹:‹§ÈI–¯~-YÔ+Çx%²@¾ s gÅqˆô´¸=Í"ØûÉå%õIuRy¸Æáê‡-ÞÛ¯€mp­G ¾}¡Ðv€×[šRHHksRÈ™vůޭ¡+^­³%nîØ« @gÕx5Cø|—“"çËr–̦$+†ý¥Æbó¼ò'ì&³ú´ ·pMé6Ï }redmine-6.0.5/app/assets/fonts/NotoSans-Regular.woff2000066400000000000000000006442001500112024600224650ustar00rootroot00000000000000wOF2H€ {ÄHˆd…£jÝ8`ãX‚, œ  š–—‡7 ù46$ù0 Œ ‚Ð ‚[£v¸þ_ÙÏsûÔ6+A­,Ð 5Y¦s•Œý’Ù±µUäýŠ•!#¶à/¦Ò¯JÇõŒ ‘´,½ÇYyìî)Û¦–£­èU.\úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî’On63÷Íÿ °”6Ò X`%1&1¦¨‰ñ¼»ÜD@X§pj™µΑœZK–"çÈ‘uqEŽ<%ˆ,‹R-Á• (»R%«R<¹¤\gŽœ-±FÃûœ7[α6)%…øj­Úît©ç]°ÞÏcó ˆCÖI¨¾F1åuÊ(V²ý¢Ïб,ÝyOžÆL+c§U²4Q‡¬5Q·Ùr ×ÂTØb0èórJl{)"ÌDîÄ¡›WEײ~w¯€§¦ÆTt=í¹d”•xǵØWSÔ…µ®Ü! 5ªÄ[–åÖóýF'Š<›“í[¤6KÞt,_¨¾‘Z£mÌ&òÄXe5Ø“§ó^z 9ƒ°ÜTq…ÀJx·*®T„ž’¦Jz ¤v]°VÌ··Fë:¡ É®oYi#V(VR騫BrLÞò:‡£~*žùËÞÒyx†æQ„L™ ]ûò$½:f1[!ÃòÝ{-–"ÄüZÞ  üAº ßl'oKÅ÷A_°OŸo…/öLšªçSæ Ì Ve>èæN­q´Ï|h·WtWwÔ'Ç ôU:ߤS¡dÞ—ø6+é·<Ïó6}]üz?YõA;?˜gÎ[Éy%k=9ëÈYUX@ïU­*è+«gÒà ¿¡Ê)ßãr˜ËkùÚZc»›ˆ@`€ ùçXÂuëûØò¡îdOfÇæÇÁýË(â8ÏË…ï9ù™í3»(1¿xöJß L!Å*}V•ʪ†gÏçX>¼"{Oi•ö¶KZÐä ͨγvuÞ”öΤ[ñÔ¢C~èßó½èþ’¦tÚ·Cú8h²ö¢N;4¨ÈÈD è"ïÍçI‹ùஂ«Ñà†M.]¹¼*×JÆî–¿aûzt¸º˜–(¿Ê*÷œx&ÛF” ã0·††“p9¹(Œ#“’s/o7y#"Ê%ß] Ö&5þb‹ÈÄWÁ»¿Ç:cÞ ?½È¥™Ü3ù'4/¬Óe»æIð§GÒ ¡éQÚ¤ã‹èºGKö¯ V!Z˜nËÏûõÒÞ•åYƒ_ÜΉµäCW>ß—Ê•¤·’!§é”–»ô6øT†8ã#^á[–ï?—+˜šW%e>àGü8¨sK;RR¹ÌIÀ¹¨aHåºT2I¥Ç Ÿþ8Hñ¿²ÆW\9Aæé õù†õ/_Nø½Þ§à÷ôJSn/+—l˜öä™4åÉb ãw›ŒAT˜ÿqz—¦å4¡D¾ âÐÊwkyš¦]Ë0ÿÖÍ’$a>œ¹ðþ)Š"öI> Ïÿb1)2vžS$ûà@S~ÃL D ÇγÁ©ªÑuŒªšÌbQ4«Í>)Nq‰[äÕ·Çâ-šê#¾?ƒ¿PñüRÿ«{îîJìŸgX`8aC¾c0€ ,í1x~Nï½ý‰£¡„8&áSH€T „Ð`ZÖ²†Ú¤&B'Vó©µë¨¨muƒ @ÞÚg›ol6Ì3æÙl1ß<ùºüódF˜w™ï‹ùVÔÕy{¬çWô^æIʼnÊ(‡\Êó%úöûþߪšûtºo€ËÓÈþGÉ›ñ|H¡"aâ€î"*Æ‚ì½'Àƒ@G:* m„KE€à›ÚföÀŠUFc$Ñ’*p¤”bQb¢ˆÙû¹¹µ‹_õ/J×ïâsùß븴™íwÞ žfÒËaÜ0VV¸J•ò'ÝWaª‰|`³îXü6û§Û`ñçªws}›}±ôã¶+çÜé2uaa4ùPD,ÒG( ¢bâÔ!B˜¹ÐéTÌiÃÏÓ¶úo†i#1z£lðN'1sËœí2¶ÕÍTñÒÍ.wæf Æ6F¬: 6¢¥JRÀ@´´±êÚ`\D½¢0¯#oÞßøõÆMâÁµþ¿:™¾I'éIϼ/ü_RË%*#V"£W­ò4`ÒY.G&Çåçç Œ2 „1†¦eÕþ'EâMÉŸjðWœÿþï€øŽú€ªªªªª«ªªªªªêrÇqlìÆ'N^ÔßuÜÐÀ;B˜ƒ~ý/I’t¦‘Œ$IF’$I’•¬ÎGÖZ+kee­µV/kÏGV7I’$I’$#I2’$I’$I’‘d$#I’$I|½þMî͵¸†‡\ÐÖ+\HRxøv‹îyEQEQtkQEQÿÆ6>Æ1ýÿÿ_ZÿÍ9ì½Ï‰d)L‰væE(Û§žSU÷ u4…å¼yÃG²:íTºâÜL_Pß? öü~ß¿­ª…›ÎÅn~˜ žŸ6".NŽ÷Ã;#˜Üè/ˆ¢(Š¢(Š‚O« ´DÏåòóññV—#/‘ŸÎz9‰üÿŸÎÞ[Þ}EtQ»Á­Lmð“88ÅgV²ðg°Ò+¼Î:÷¾ª5€öÞ ]í…"Atms]OÑò×~ùKœÒË–RíLé,J£À’ÄehÃxˆðˆ)¾ì3:œ}  úú{û‰µ†Xá›cÜí&oÔ(¡0°šÍì¡+£ é¬@[(Z¤-T,m’JÔî¶óˆ™($Åan{÷ß\_ 4¯mE²>ÏÙ½=„¥xNîüz[©í0ºÈD1­¯æhD+ÑŠ¶¶¶»ß¯gaD™(r9Rd HåHåÐAäСcÕù{Õ ûýÒRj›¶ “·´ñ/£ÄçÀ•.ëž%so5M÷LÈP&yéÈïªþI:Ûú—K±_wR86€…‹À²Ð¾@عQáD,¤" B+ÐÁµˆ2só“€ó\…£çìXà­Ú&ˆh®Îp&Ù½Hѧe dL•«ª0_šM“œ‘yÄ'Y¾û«+Ê«®óW™LŸ5¬ 9J¦ÞéÛnwLJv“dËqÀÀ!=^p¼iäÚ§™ª. _¿Ç_Àɇ] Г­ƒ6pàIEt`©í9ÄpŒéýÐéó_á¹ÒŒt$!‚c¯oz1•?Åúoî·ÝªKe»ö¸×µ—ÿ/wIÇôy-8¨cÉ¥„Yüvl‚œ2ž‡¢<›4.uprpkŒÈÇâ• ý@¹¡‚qŒÿÿ«®ÿ½erYko‹ÜWR§6Jàv$@˜éôSl+`œ‚a|[Éô+­÷'[²BqIâ$´8^Ö›” "Ó˜oÁË^Dª&“¦jÎEˆK†…÷@“ÅÄ­mƒAþ:óï’e Ò¬ h¨Bàu°i%> `•­’|.Êâû_:ûïÜ&·ÔË(°ù‡=3ú@¸DäËY‚•ÿ8 $3 “ÂÆYù¢-žÐÅlø÷ ½ëјÅO9#fíР-ìyáÁÚ7£X:c%—_[ȶ #AY´k1›£ú/Ë/;ôœCPÙMÂEas,7 Õ›!ºûÿå4ÿìëIÓò4‚Èñ"ßøÖ÷¤H©ÜL /¾\0h¡-=j"VY^€ ¨£„mmPòŸ¿¨¿¨ÕU#™áwóû8\®„˜‘ä½¾˜­Œ´Û5b]¿éúïK™U,•¤“ ‚$a_z˜ýÿ .XÆêxknøkçwtÜû k§ÖXCˆkv¢Ž‡‰dBýG™““ª™¨›ZÎk飥ÚBKß¡¥çÜ´¥@¹GDPA¼Þ7ß™g:çÛïÄ7ÏÜÔ©S'¾©ÛÜDÂÃþ+¶—ª•êRe¬à¢K° èïHú²ÿ8=y^Þ4@§º1ñ~hÿnV°çpçmǬ2²&’ÀЍýÎüBq   yBˆŒfR8ø[ãH0al¹àò‹±ì1´[@ºI­ ÷Âè=mA Ä |ÛîS3m)€H3Žü mº Üq4eº25@°Ø4__ž×¹_iŽKÉ8.ƒŽ-la‹€åÚV¨1cÙ~'_7w d5ª:„üÞ£Ö&ØÒ…cP ,ñ0}¯³º¾/À#9LËOÆ5T»Cª;vOΧ¹Îìáòõóõ¿!b[€dpƒi»¤/áU ÷â°[t–±kŠ0A°p`hƒñŽL N°7&ºè½)Ï{ÜcC‡xÚ—=ÞöBâ¡oY³×ïQÑIJ¸d̬è!În‘‹Ð$ŸäJÔâ°šÿßWµÚwÎüO˳¤µ’±‘\»5¡Þòéw‹æ½û?€÷þ¨÷?@úãQ|È”Î"È2:%Óqb’§Ü Àò0L i{×"7IšHOÖ̆Ú©6Æ.Æv»6…zûz›zËé¶ ™'øýzÕùoNxÂ+×™X…oC{Ã7á;–ieT% S_Q«–ÿ³;4éöýÔ¤,C¼B°îíý¸7?¥ý9Â"m!Fáp‹³Æ½'rZKå¾Ý Ö-ºG}“u6Ü „÷ÿÿ›j_žs«.p $e€T?ƒ”»ìÚ=¯%û…_$ÊiBÏ›jŸ³ï.ÜTä½U©ªRUa¤ %¢n(@· ¦R^$Õ’íÚ/‘’{ Õ~É(v‹µF¥¶'ÄD‡™¥žÜîÉ)|»'¤¯ùŸ¯ßù¿iÿ³›÷èE¢ìë¿4÷qÍ¿™ìÝí´ê9H„z“{ïL6™$´n¿¤T !‘h, ÍÌÄä-­J$òó<ß>ÛõO¢‰p]¬i>É Óä±ì~Ý„j÷i°$N"„Äú¦¯Ôg¥´ÇÍ`³Vw7n ¥"z³³úERÚ7JXÂyAâiÚÏBÏ*¡ ($8ðîÎQZÞÿ]-=’RoV†ZÕ¤kŒBY´EHäñ [¼¶/3”L‰‰B”›âÓ ’ñ|Óø_{Uf±j>lQÙ'‚ÉÎ/‚‚>ÿšZ_ ˆ’-»ûÿcÿÕõ—-Úf 2•gÏæOO÷mà{ €ZR²IKå¢är™²]n¹<€Ö ]CÊî:’Ü=Ç®êÀÕ]믋=˾'Qw6=ÑM–Møíù9µ¥—~+'×)™{7JËζú¦C´ä8«å&§çæ×¯­ºÑ)ñÏÛ·ˆµn‘c:©Šn: 5ëÏÿ_íx€S½{ߟZVÛ)NP€ÿ¯í[›ìæ­g³šn¹#EeÁdò~Vò‘ª˜à+Á¬¢¥éŠ ÕÌ%öí‰Æ-[ÚjO؉ÀÚj‘J&Up"'²ø¨ƒŠÁ¢¾ÞÙR·j²<‹¸²ZçDyÖ¾6±f›ÀO¯ieʪ/G” !Kê‚(ÙCsƒÁgË4vd¦£½y¹žà¿gîÓîiî-ÎTýÈ %’â+,j`·RÕhÀr¿ګE{úM;ü/9©ví¬:£ °3üЮGÓ5¶þôÉ>Õž.„Ì23]4â—þU_×wßÃÃ#¥~|äÖ¶”6l Èé§(¥o¦Ò¤‹wqH‚´I‰n¥x  €TŽÜÿWú–luò˜ÖÇÑ^³f\ìÕS†9þ?ûÍŠX"fh”@¤$µÓIbBŸè{÷;bij§[Ûb]È‹¤ŸZÏ[r Xô?Oug{Vô4v­„‹H“br@æ5s«ø¾+™I.-¼DiDDDä>§eû—ÓêÿüÕ—ç¦Ggö’ðBE!E!"‚ˆ‘‚H!“ÞœuùZ¶ÞvbV#ìûÊ¥”¡ Ýç+¥”B(%”BÁ„`Œ1ÁcŒ)Řû°Ö¤d®ªb(¾ªb…Ï«¦«}šöŸ&â(Ï0ž"Ër÷Û߇<%'fä©F9ªJ9¡N ‚Õ…öž ´DÙD={Àøe½ DÑ« 0( (,(@%¬™M5úö¯te6„%!_ÁZ“˜YatÇQªŸ²â­™o=Õ}8÷©OBè „1Bc„ FcLÆcL!„!ûyŸcMù/3 ¢QÂ#Ä’ÄšX®Ûiûq/§~ÜþóljyŸ1ºíîHÆQ£Ä BLÚ˜ÖDÐhj¶¨­n}Š|ù cµEù=Saˆ$A ˆ@ ˆĈTêT*ÂDÈÌsY¾â”þâtc&Ú+`£(ÅöA”V¬`I²÷ÝËi~ÎúÉŒ&™×³S²;IFƒˆ K,‰¥‚°€¨4¡KM¹wß÷uÃÓ¶ÿï ØÏ¿ëmoÙ ("f"a =AL2‘çL”±1üëVÿ{B`ö*Ž÷ö-Í7¢)`ˆˆ¥€:6ÀFz %駤èø÷ü?ßÿ³’sßÍçÜWlGUDEEEUETĨª1ƨ1ªFÕcîÓW×£²Óv›t ûˆ¦~<``Mý4ħÍ÷êì?’eȵI²ï+{vy{ `K.ÔÓZ¦ˆ·H®*m$4ÅeËsJ’6³?›ÿÝYc¼IëHŒb´Î(¸€c·©Š“*²'ñ€ðÿTûÿ½›ÿkOª¹y~Ð<̃iݱš<óŸ ò{¢Šèc°A)Ã@< nè¡/}!Œe,„É>AøÌ¯¿"~Õ͈#ƒAl±5†çű+ˆ=‰BÜ+ ˆû&ãþÉG<ñŽdãùH6éP„dS¥ˆ2²MÛ¢Á6g­yK›eã÷®'#àÉ#·$°*ó{ªÊªþx ÊŸjhþOP+ Ô´ €šQ…ðšS‹@ͯrx-®zPëj¬ŽÚc=¼„ºSé /ì© ¯í ¯ïÐ7w.è=ô®^zw/}WÿFÉ(cðh Ó|ö.·ƒOýd€i˜:ø¬ž `Ž™«À\:©ð¹j²ÀÜ89`n9fŸÖ{°Ö/6X[¾þZøê^å`YG‘un]DÖ•“@䴖ا}õIà ¨> PŠfÏž7ØŠµ…@a‘  ˆ±vÎù*D~ÑÀÄZ…#í]0-÷†£¼šÌÊaiDêè~6ÆrÔ¬ã8‚ñ :ÄwÒ¹Äi¸Ì9¢žóŒ†~ã63&i鑦OüõÝU@º7 ÞZÇj Ψl<Í|¬Óͧ6ØVÇ[Ôãê¶õ•ÀŒ¡¬œ¼EcAó×nšÛí0!PD¡1Xž@$‘)T‡ËãËä Öd¶°´¶±sôÂäIer…R¥õ‡ÅÞ ‘Gu´ÑÇ{òi6Þòjºeùv1˜,¶ŸýÏ#æÿ‰ºõXáATr]›íY£áà“è™YÙ:Aqôÿÿ¿uLVLÝŠù­ „Ú­æÚÎýb‰F6£«.mLl5çÓ]::!JxZIcÙV îûÏQi¼ÝçCœxÌÚ7Lõ×àÚn£÷ÅÛUƒ{}ˆ€½ƒCû[<€"Õm¿ýa‚šµXi#‹Ë.»í©0…OƒN·/ § ¤H¾´aÏÂR,™óè;ß®u“Ô3&qRe?úÚ÷ N‘Ôâ%˜c7³ßá‹Ç vÞå@ï¹NBÝûœ’<2<‘ÎÓd^ñƒ{QÚ¸³ñ ?Lý©øóÍ¿þ<Ù-ê[ëªwž'½Ò|×y*ß÷ÊÔýƒWzòío#ŽLðÝ75U:­õ:…îý¢@Eèÿ’²ŸöOžÙyãæßœãÖ8«C±†˜«v<Õ©«ðŽ~ú›ŒéJwH¯²ØE<È 7ÛfÊuž=þi"‰)tÙbþ¼ÞÄ£Ö?¶2Ù@o^çÐï5uðàçþÖ(ÊÃÿ†SqœÍdžÆàÿ÷¹ñÎÃ…Eh&¿Ç(Cì<<†Ú)K†}Gù šP'‚»P- ´í#æ”ßç\x :=-£D(`]ÌŸ™;£îX…íÍq‰ˆU,thÛ[÷ûŒ66k-ç±Ñ¯dFÅx,Y‡•ÙŸŠ˜µ“-ŽŒ ò `Ö¡£²è¶`ñ l ·¨`%£v>@ CRv(>¤ zþ &èÜEï\& gk“YžTï µF™Cá_#ŒPv…ŸƒGá»çâP¾;ÜE»‰-¨k({ôÙX\¤s4x<”™ß¨~pÔ1Wœä}±&kާÂ^-°ÖöÌÛÓ¿MÈ`‘“¹êz9¸Ân!É»Z¼ÇZqUØaÖIrXΣ BŽºQáó+„ ÝÝNì(ŒŠYÔ4ô¨¦x.{¥jTË }b»%æÐ¿§’µþH‚¾FÍ£4£7SÑ!z—9£ýàªò×ÏhõØN Тª”¦ÀúhV€%ë%¢€%„MiVÖ¯ÕšÔä _Óì¦Z¹,ž’î¿Ú}¥Šÿ㔾V¦±’# ™)n®¤#6Ĭ–î.€ñTH=ëx’ZÄ ðV½„:ö—“V©!d!lWbÞ¶ÿܨ샖.óØÓšîLŠeÖ¥ 5>Ð×ëûLÕPLâ¶*\Íñå¼b2¥›¶ÃûšÖRö,ëÛPrȽ¶`Õ¤}ˆXj_µéÇâhá*…¥U,¹oµ ¹¹ëE7òç&Å_Uæ¿|¢ï î~ty9´òÐ&˜\³6µ/_$#8#ã啱.¥ÿê¤t3ÕëQ÷d²†Pd öñ|FªÏæ‹kèkâ%ùö=oú4öúh~ö¨TU?ß·x–TÆÃôä)NÏAcÖ§fá‡ÓùfK÷,~þtxŠkÝõUzµ~Ó‚³í°ÐuF$ré¹< êWû€ÅHbþ+ƒ¡1P”  ©Å,ÞgùmÊ®¼å»yp–fÃÆf……-ÈddÂq³sXŠÖqbøP¬Ó¥ª8±á÷ž¹\âZòðJ:=”z ›/b[ÿ¨åõ3Î64eÙt—N¹Æâ—…y£žc<àN˜ãþ{°V Í^†Æ›¦H.ÛV¦Þ"a‘[7 ŽãÞôÐý|_”õøŠÎFdYxQGµ÷³áX€F˜[» LÁz¼[¾Ž…&ûšA;ºäØš50 Ë* ²9«º8RPvg¸€é u<8¾Å¿|$(ÕCÇú²‡jד@pú†Î i\<ºûGs¨ý˜7ÿLpÖÝåÒß<ý–ôi/6ÚCû Ïá?í¡òcyÏéƒRB*{ˆT`'ÍÁƒüþK ܆ª0ÕÛJ÷ì¬åQïÑUØlòOúÏB¸LØ-°±á{3*ðE£ÀµŒ}:òñ»àñG¿Zw{†î¨×è\ëváf´ðph!HæéWnx*¸cŽnZlõ.[àžKÌØJ€šÆ7G•ŽêA ‡–Ï{Q‚sÞµŠJí!=(ñJßô|žÿºè_]ŽLš/îý\vUí0 ö-O“Xèðx¡‹>Ý‹A*-8Á£i9ÝŸñý¡§)ð~,×$ãDœ7È ±ÀÝ̰ˆÖ`0’´mùAv§¾ ]VáF¨šÌh0ª‡»¶ºsH´\9Hº~¤e*'Zƒ”–› 0_ã·lx«€›ÈSÿ•¾06¢å"á~ ¨«¢—VsA‡³½¡ÙwèÔsèÞ#Òª› ›H´™r„16. *Ð*À ³+¾YgÚ0A(™>\kÉQAFPïéɉ„˜Žð,þÞ+üÁŠÕ=.œóå4ôÁþ÷oyµ<ºê¾nw2nÜmS}&7}kö,žGÀ÷Q‘“@¸Æ6‹¿ “£šúÂŽøÝÄo;«‰Ÿá/ÜÙsòb®ÃB/w±-Üï{D7á>L·ŒNÑ,<öã­~Ù¼ò’#D{óß¾%ôIDLâx/ËÑ%ãkªq*äDûùWÙŒÂ2¾”Ê$yü ù-οET>å é`)Ôþƒ-O±|Ä·Oc: TKß×òUm]®bÁ ßuC÷Ëbþ0Å­y»îb+öý3xŸZ˜Ù\iƒ¯ }ÛØÈðÆ‹º£Öxïžñ­ò%åÊÙW£" Ü¥§Jû4Û—}óÏß`ÈÉÇ{Û'õy_õm?,pñGF‚õl«H’¿V81Å  á±ÿ¸D|\9îkÓ ˜ã9¬?† é +Ç ö£Œ‰# w,4ªÁYÜBÏ6Oûy%¼—â·(%¥¢””’ŠRÒP¶ôÂ=/<Ä… Í,ÐÎc¶…«$f `xa:¶` ÀõÏ„IsÁ"° r°c6aŽ ßj?Ø~¿ƒ“ä¹Béc$%f1f'f?Æs s#Ęc~Ç\bœ³±˜LZ>½SŽ©ÁLÄ4ah6&jkãKV†1°`vDu¨Z|‹XÂe66vö† g‰î8~\B ûÑÿ¢Ý‰}ulE¯ˆ(€Ë+Þ|¨%´¤+‡¥J“-·ŒYVNñJàd-©¾ûyj&z’°3oRŸbëPôâ¿aü_@_Õ{‹?fôì‹Ì{ìâÇ+g»…Ru} ­Ñêô{N\Mf‹Õ½7ßœô†Åj³{ͼÃr“?åY»‰K¸tãÞ€_"|(µàÞ AcðØ¿ÊÁ2Ð,óœ ¿jI™hâB#Ž7â/3ψ¥ìÀ0 ÌKÁ*°üçªòg‚à'¦;Ñ«ØbFX©P¡‚(¦°df¼oÿ¬Ãù-™¾ÿ®Š’ìîè¶êkÍqoŒ'vÝB¢©ç©„îV –~eSõŠzªOͽHš"ºA0b;€J@üˆõ±(w*••q8¹ÚC*Îvd€l=x.KÖw;EHg<'Û‹¶éê¯ú‡×½¥÷ú.A>´SŽOüÇP{ì3Ú‡s„‘Ó¦8öb©Ž;ã!¿ù¿¹þtÑ—9¼ØUwHI­ŽÐ[ók…ÎÆÚdÝàâ‰Ü,<•{Qž&,<Ð; ÊóQ… ÚÛ;?V»¡ù…¯X¤€ýQÀéõk7X&š‚° C(™@˜V!d T»àT`‘VT… ¿ÛäP‡€îì—'µ½|þ¨Ðeð…„` ÚI ï¥cÈé4£ÈE-Füâ·´ð£/CRΑfíÝ_bÜe(0î1rš‘÷ëÝx±^‰q§“DV–zî0•‘kÆeÐy¬úxï<ÉlYîyº/Ë£ûSäwL®7„_ÈáWŠmÙÁ$Cõç?¬÷1ø€ÏF‹¥ÈÄð…µŽGç.7Îì³o… 0$_lpiÓ­êcèœ^\9‰K çBQ'}Ì1ì`«d^Q¿ÞC¦gŠá³‡e¤!BZ…¬­¨½u/~l&ýŽJÂÂKÒÊöâÒ!<»…UØD¨"‡‰^`°Q\W§¨h ͈èhWØv“ÈAA”i@R„%Ǹ¶Ê2!âåØ ƒ‡,²Ön˜)òXX(ÖµRÓ1smo.}rŠqÕ#ÔÉC…#äQ(v%N³Î²±Öó¤Œ`k¡,,L€úÈ@…¨–ó¸Œ$,]tÛ¯ÜmçÀ^ØûÅÁV†#äh•„é÷hiÛÛ’î‚&Ë<ÞjÞ§ÕÐOÇñ5‹ï?C=i@Kýœ£»é\³¸¡ç™‚­„™÷Fä°¬[1!""!""Þ“ÐCÑP%QÄ-'’Â.ýH»ÎÎ önúG·Ü¾uçáL¿+hŒ€(âš4†ŽžQ“d)RgB£÷/b|óˆm,µüãß]Û‡’¡£g`”Ä$YŠTä¡´Ç•éaQÁeTG¸a7¿Ñ[*AU7AìpÕFb‰$ytˆF'"ŽšyèÐíR\Èa-` vb(de0„;âÌ€t €€ˆr`ä$78Úúö½Äµûñ`o{ zä±'ܸó€ä)I²©Ò‘QP¥ KèFš»xå¤ÊvúU=îa¢îã1t5#¸ 9ü›¿ÍSÒ—¤²ŸÙ„—ˆ¢$ò]LÊb ¦™n†íš³ó/âæ' ^Qu}†¯¾û™žRÃÁc…ˆgXÜzTöK¿\œÒØr$÷ ñÔ4YñY¼iºÚKìG+ 9;öÔ¤$+ª¦¦e# „2Ç?E±Rkˆ!ZÞ`4™-±þ(ÒÝÄ¿¥‘HÉØË·ìvjÓú4=“v·¢J«×”d–h½ƒÖ}W¾ –Q~‡ßwÄýåeä3êšK,6J§*{R×ÈykôT(…QÅÓÀíÑîèÄëàøD$ä ýÇ€Òz gdr·ùàÉ‹÷|0ÿ8yø…D%ª³‰ÂåíböÒºR_JæTU•&½ù¿{ÆùwE¤?&³a:Ú!Dü#úû<""BÄš8šKÂŽ=5!ÉŠªé†iÙ¡Ì!Öoü¥•ZC Ñêô£Él)‚®g5ŽÊÀ;ì¡RR_„P¼êÛ{GÐB¢ä Æ› ˜T*qe`Š©ª˜GyØ<Õ,¢¶%q¼G,SÇJêzŒzÖæ‰w‡èŸ‹QƒZÔI}” gáô¾âh¤â“ðn õ„#îLÜY¶ÑèÛƒ»}Oï-ªïûêdPG'‡{ ¸ˆ§A†3£+fÁÉÒ¬ÏÈìcì+çha«gáÍ»6îBà:o®Fb» YêËì@î*7¡v«bqß/‹Õ|»±Yd/öã²Â“x”ølu–@—Õ”^ã°øîůðÞüƒcaˆ, ‘%‘‘Žh²2æ X;«ã%am²TlIÓEºÜ‹êû5wS-õüGµ6ÔWÚšèšx‹«0n}”Y}­qõc#®W¶zzjïÕÈìýÚx}HÖ‡)}ŠÊ¤OÓ+û Þ0®Q^¾ÆõË4)'×´‚B3ŠÛnÄX³&LµÓ›v…`±QR4K§‚lŸ›L¸·ávÜ…»qvbWÈ»bHæ´þ殓=¢\±äÝq¶÷*Ä~™¬™³Ø±>™pž³Ã«ZkGÖ¾Áj·´åSœü¯xÊ“ÿý½Ne_¶uªû±nεÛ9âä”Óœ ÷ÎVxpÞ<º’UžÜ6>ñìÿ/<ûÿðjÎ(–SÃÝQx¾GÛyáO’g+¼êý¯ûí?ýLkÂ/þþYýsëöãB_ÖT345 Ô–vÑG\<"r 6Ÿüçp(ö‰Ï,³ÜVÿØ®ÙN»íµßA‡qÔq'vÖyw<ôÂkoµ ÅG¦Fýáh|.B9‹Òàåÿ²†¬vg ݹ]5v7vߌ=Z—ù{¶>K6°«7¸Öl|RÏljSžÛô–=¿_“Y pÕ5nüï\çÁÿÞM¾ÎÿÁ]˜>TÒï!Éð'Ì Ææ¸§+9á¥9©£ÒÆ«‘ú—ÿD¡=¦ZGSã}Së#Sçûß j]uO½žz¥I¼Éi1ߢ´+W‘nk¬M¯M¶¤ß{òÙ>¿ç‹cŽeÒÎfÑueC™²üvÇ‹ÿϽÐép 2.6 Ÿh"¼ŠDz%Ê»9(.¿@‰Áä±TJ^Hgä¥<^Þ(ç­ñ~çkü»U÷Þ¦Aìusvp÷©C{´âð_¶#{=¾·ÃÑÐ8é¼xàK|…¯“o»µï?ÚÃ+Å›·ø½±“-–¢ZyAÅõÿzC2ukæ`Ù5µræã ´|Õ ¢Ê$³Ö€®¾iìifŸbÙÂ>çB‹ëÅÅN.ˆ]ãŠãEñ%á\ªâQ¨²ôfãÙ PÍkh»CzFGúfÇ”Ì.Vh®®Êþ“;FA×91ûl9pÿ(ùw+(ð4BqÁyŸ¥ç§”]À*åwש8ò1Û@åæ ÚÁP u †† Ñ¾‰¦Á‡æÏÏDÇ€¢ë+½Aú>rÐÿ ×0Pýæ™Ú¦É5ec«Ž™©s–£ºöëì^fxö•ð›Ãý>F.þÿÿ_âoññ3Yùv>¼Uïà#ÛðŒÞ}ñIìx²Î¤—úi,·2èäÍàxןFû³>õ—ŠÏý£èÛ¡ß.Òw—ê·Ëõ·+ô¿k´q×iӮ׿ÝTز[G³õÍÛfb‡dñ,Ã!,ã“)zŽ£ †=6ï:õZPqÁiðs®rOÿ~FVPH¨ø‹·‰2ñÆŒ75¸º¶",\¥ß]'0‹oþ(ò°ÓšhÑTªbÃá »>é9’´Í‡8)‚mn¤7•tÞ¼)œEOKóÞ 7E9ÿ\7 ˆ)fè9ÇÙñŽ@]ƒw—" ²b&¹b§×§Ó«`ÖH÷"þž/fÓÈ¿#ìçÓsôÆ­±Ò®)êè¶*EÅp­'ÄÉHȳ@»YOxØ7Z§4<\ƒ/çùÐ2–цn• nQ#Å銱eE·ûymMŒ’’³ÆÈâ\C0¬âLCw^cpdP}!>q#0+'÷ksäÂmbÿû cIIFþ ¹ø$(‘±Ó>ì59W‹±I>†ÊÍ—mÆœ¹– A¸¤òb’Á1¯CÐ5¤'zÇq âjEÉ»“Ü¥k©À yÔ3µ-ò7DpKþó=##ü"{÷"®S³‹ëd)ÙËiZ][tjgØËݦ”Ûù]Ô%vw>\"Öëò®êÚ®wKnÕm¸mqLr­ŽõwL¹Æu?X=¸Gû¶Ÿ{‚RHÏæõ£½Ô«Zî ;õ6ÌîÿúPûÊt§Ï•îPÒÇ}ÚçGoeö‚)?øý)YiX*³ 5l.ô.¼C7t.eÚ¶Œdm‡Œþ6^lä`êp‚iŸ¾*(ê•@Å0‹)°èi+êMO›EŒ¥ U«N ô5ýqÑÖX¦èžvè9y¿`é¨7þ¦Y_â7}B¥ÕÔéñ9÷hlæ4CeÊÞŠÏœ‘Ÿ3H~T¹†Ñ4¦IMkN ZÖš6uwal{‹çŒöbîŒq›¾ãÖG¶Ó„I^%žÑ£^ŒÒSq¼Mø!½íË)XM5!Dùh6Æ ŽÉÊD§×”¦ÉD°Ð®0q4¿¦`¿Šü¦(蓉B»…§eø}åÍÒ3ðp‘ÏÅ"•üÃì^ä8ÓÜæ³àæFŒ¦ºnq’2Øbe,ï(Þ¼»×*¸²ºµ¬kn„-mc{;9ÉaÎpÀ¹Îw‘K\ ›v­ë“pé7ÜĬÍz<`#a„,á-tm ß9Ä!%P®û=ôl;ëMöƒ7¤³WòQOÄ"š€Î'µÏ›x6 ×%â+G½¨V6¼í=üy‘äã©ÍÞ"˜¯få[týàç -˜¢r5™¡‰xšSÐ.â¥pˆ1êz¸*½@qP ½¡g¶º{•N$]"ÓÀM*Ç"jŽ1,c,š+ÑÇ´<êL¯oÀ¾¸tË‚Y3;âXjÍaäZÏ­×°ÀBÊÃAùZîJEEÔÅ-0‹ó`ÙÉ_vÖý*uíÒº•}ÿRÿË×vv„Ò*> 0kûÌ[¾ÿ,̤vc‹&–Ðð$´ÌÃé‘É@®Qî|©{5h®êì#w©vþ,Ga£ŽLšsë°Ž·Š.Åôò´n _rfbtËÈ Šô>¤MfÐ¥¤¢é«Ú6gtã#D ¥0¹´ëέJ¨¤NÁÚ¥<Eë6ló{-­$‡ðþ´:/Jƒ?©«å5š3¤CW·¼Îz`CtC 깑/5­ÑgÖ˜U„T€§  ¢ÛÙZ÷\nÖ®ŠÚ®È½ .ºŒ&hbË"B¶IEˆrES‡Ôùx/ga–[6xvÚèMÚõê˜s[†«пâGòÀ¸¾Cûjaž·Rk°ö›¿åIsJëüZisk4BÛ/–nÑnlOC““d›$-™ŸÐ˜¾ª”Vgo¯YÆœ[çNØöÆFM[]õ ŸñÄ>`³U£¤®°qUZíßÚZÐŽö¹ïÒ`¾Zdšï—ý [(væ7÷/}XÇ\Ǭæ ýkÑgr‹ðÇ_¼à0™¹È,Cí鋆UŸ= Ös°ŽQ1ô¡sšk)Xt"Š»\(y”•ìU ¤`ôbÐìhYK¦NnÍC1ñ¥àp¶'XF­¥[n£WõWc7Ò&æ‰ån»VXÊVnµuëlÛš ŸýÖÙh¾amâè³éĉO6 }ÔÖÀjˆo´WðüåçÓ³ÅáãÌfrªYÀ´³ i9m4­Ñî 2$ûeÞU:Ò´Ÿ_Ïr§Á‘õ(ØæNìÅ:68e§æ4õ1‹cÁ„0ìî±UîkFèRùULqÅM]ìM*ÞÇÍå©ÇD\ó1=p8%_Ê1NrEÎqa_šçnFRÈyskÜäNä¶j—\/û|Š2oHÝ™ŸÆÒê¼Æ³³çE&£ÑÇ×ß3éS÷¦IÅ«)¶õ”ΨÜí˜$“w¨ðšË½F¹NŸòågp¡µË Òý‰uºü³‚+Þ‘`‹piRî$ð,ßË„C< ²C¤ƒ.K2k$r˹aò/7’kõƒü"u¹§˜I7xíÊå9¼òjå°;¶ñ§G'0=YÖõjj}€²ó¦¢aÕ `6·öm$/Å“ fäDhÁ|doI%äÉ<Ÿ…•–t‡ Y²ÖÙ”½wä%éãç %ºbór²Lµ/ŠþÊIÑ„SMe7 Î4Äá˜Ü†?عMÄO?YìÝŽ'ÕzdG¨÷îzO›j½Ò÷u…hzïLˆPPF¼šØÙðº³ß‡áYfÝ@‰ ­ã£üž‡;]®Östí˜ahO•ªB;B¥êYBÞdI™  :j —"úa6³ox¨˜¶§úLëøí+&oék:³‹é‘ÙOxNv,#[l#{È 3&Z@ÌÞycW›SÑ«˜3¦Ö ¦´X௃Îtb…¯´œâ–’wìÛz‡ÌO¬hÓ`¼j–ÝÒÊï0a«Ä– ãÁÔÇ–±eÖô@œO´¹JBár¹‹lZ˨å§ÜÂUa‹>óØO–-b×ЪY|Û8L½cù©1óºF š¬ˆÁ¢¢M—a­úWñhâ ?ýÙµ“Ve—Æif†ÙªfÎdØø»4ÐX¶,|ÛY6^Ú@ú€«­:Tñ…³°çãà³àËÂð€E÷&z·9'qx‡¿}›–ÞIR A+Û‡T¯_ÀBm,’‘NðR õŒgó{ê•Ò°tð;R¼?Êˬkh4 4£Ê§kšPåV,8fùCã.—õmâëÃë¸pËexKù˜‡ƒ oÁ`* AÁB4ždôF~¢–wÔK ð‹Ã:úzÙ¢®Ðâ]\B.ij`£Éå² "O7J!þ‡$OñN>v"8k6"Zˆ§UÖðþW"ƒ¢Ì?ì« Ž‹ó^Æ=G–­qîÚÅ#à øzbËßæ°G°N@dTc°a^Õu·ÐŒo¢€MbrS™þð£qö>ΛÉjëÛ.ÛoGllÄ#ë½NïÜQbóCu/²¨% dˆe‹Õ®XiEµ¿[ÃÚÖ³¡¥Ç6µõÙ³²­ììd§9ÓA‡\àb—ºÂÕ®sƒ÷|Ù7ú6oø¢¿úн,{z‘{=àaý3OzÚs!¥¼žš7½ãýrƒÃâÿø$R{©|áLʵïBólØ/A z°‚¼²P«Þã*ÞÅDÄhYtñ‡ð2ôxß :¼F?Fo¯f¿ÉMâxøˆåVu\Žž°GãO:1‹/"U ×ùï#E@¥²­èÆà[µ<I€åZ6±H ‚\ð!ºB=ø‚è'5ÈáaMT6QЬOfP<¸§~G£ˆ¶A¯|ˆ1G˜ÚþH-d¼¢¾aõ¶(´·B*½HßÌ·;lëç•æ4ÏÜ&ú`xgAiy,O–Ïò|ºÈW£C ëáË%ËÆÒ%M8ØbHâqM<¦å ‘O¯± а▜^Çx™þ/˜É{vŠ•dI—\)”ò¶T³tJ¿`4óî².ÊÏÊ‚ô\½+Çr!…,e¾4‡< SF%5¼â» ‹£W¹YwpïèCœðø3ËÇ #Œ3Å ó,²Â:[ìr *GÄIˆË%7ßN(‘ÞÃÄ\@‘øI{³’2êÙ‡ëåÅæ–¿OǨÑ:£¦(¼ÃÏúÆÔZpkR8´Þ:Ç×['o'bbò“Ãña\kêý‰ÑëônRnSöŽ] ß‹iS¸à迳/e”Söb—Š8/;šŸîO÷íàåøg~F‚¢íN¢dÝݽH#ÛùCHo·r@õg)ÓÝ~6ôOíÞim~öuýp~NRÊÚ*ÔOðË’v¶³0d¸[ 722ß­ðÉó¥tæÂEDÈ“§ÄéÉY×W‹|ÂncøEU½[…“@•YK­»È“Åd5üC§LÒ–„ åÁêY–Eœ™tq—Þd ˇ¥†{çpgõ{)žâ/¡•áÙNáÛ/ _ ©6PÛÜîå‘SZ·|E>“­Le^²Z‘CØÕ/‡cÆ*™ íæïñ‚âî4F*2¥TªìPi”v§uæá¿³ŠÕI]RÎ Vze˜uRY—i™—U…‚îijw¾ÐÕÝÇaŸç‚Ûõ=úáå¿Nÿ¨³Ýþ*†ø®¿Ír(çÇ÷˜ãîrâIKÞþ—òkþkfµJËH|£ù†*X¡ƒTAßE•~"ªŠªFõ:­Ò¨—FiôÆj 'Œ&lp“}âM‰jÓ´«ã®lר‚ê¨5ðRÞ,Áö‚¶g„‹‚Æ*ÍëÇ]”7ߣù#úhRF ¶àÛo‘OzKµ ²-d [q\ð@·ç/º}«´:Ãt¸—/kˆ[ë®áä‹ÚÿÐzë¶AµÓ)×ëKañèP·eÛÞ¡íŸâáOñ`¯²eD%CM\Ⓢ$$W7©HKúøJ2ÚU»a?D~zpÞxwôd[6±…­ìÑBŠœ‰ ˇÂâÆö”!”%t ›J'd§»M½‡EC~S—Ò˜¦4GgZÝÝ'óÉÓö^èp›Ÿ¢þrŸ¤Æð ²ÆÓ@ ¾’bH¡¨()a5tY¹—q 7½ŒíˆGÜÇSà˜Ê3ìÅön€NzÕNCçp—Yy 7ÑAß Y`˜ Ý ¬±{D·Ìâi8‚Zta Ó±~s˜ÇB†Yv×o‡•¬á+§èT¼XôäQå·Øâ:œz¼›nµž‹Ï+¶;‘rêSa÷AØÇÁ¡ŽL!Ç/ù^8õët®ãUmQáÃàÊ‹Im[Ü}ËC<´{殕‚'a9ol€ªâQÚðX3ñyÉ›áå=Ÿ„$0a \á‹H$zÒ“ár mE.*ÑŠžßE¶,)‘*i6é‹y`º>ó…NFÕ2¿„$zœ¹dã EÑp4#G`ôáL/L«€üÑÉ#1‘öwv£r™®èê®;za¹ËÝòƲýÆmò­ë¸}¹Ô ÜØÍº·z¸Ç®cø×§>¤Cübx‘¿©°'¿§‡¢çîâ½ä&e‰V¨^ÈTk~2½üäSuª×zóO{2EEc×;pÚ ¼Óûô´Ì±jÇÞɾé>혶ž})ê~oÁ‘‘µ60ò’šýåÄ Ùwok{œî/o®_ðB×°ÄV zá› Ëüi§SÊ{/o_… çéc„_ü$U5YO•ªyczE‹´Bë´®_ùï{ÊàP¹›ºOKÍ´KëÇí vÒFxÆŸ®rõÍÕ÷˜£Àµ.ÔˆÆ5¥Í¿3-¶N²ZÑz¥÷†ï.Y¿ºŽ^Lq¼ø_(¡KÝè^O´ÃT&_Œ”¥F5†Æ5þ¯çʽ6o÷“¹„Ød!­é½’÷™ô ¬Û]ªíõj«°Õœé‹C¼®pµ}°u~öÏ3ÞÈü#l¡Œ[Ô†Xöj%«Zc”¿U— ÁZûPXÂæ.¶ž mlÓã,Åê}ï}f[cIü„‘g';Í™9Ð!Ì—Žäoqu9¶ì¶Ê¬Æš¬Ãëø¬®±ø¡œ(êÜå^xØ…tr[O{Î ^öš7ŸÙïx¿B†8æàÇÈðã‹}í»vG¿l‡?” ç:É`'x! 8d¡ M\ñ"¯ð:oñ“¾…*á®áø€GD0"ñá˜Hø‚zyÙ¨D=ZÑÁhÆ(ð]iD,cûkå¿=ëcàŸi¹+À"H ‡ Zèýù‡òd`Œh°ë¶ÅS‡“hˆ¶\c''¿Â»ø8ÕJ1:(ü'z/è!„ègt;Ä¥@½: ŸJ×5.¨¢±íÙòCŒ1Å+lqx(g[öY3ië¬ÃÅñÙÈkx]” °it`¾b4ch LŒÏ9ëwØ“¦&GÓÙM¾noÇ´õ°^if¸q÷>ßUÆâ‘WK7« lÈ+ö‰?mmŽüÎ\S޹æuåÜÉ)e‚YØb–\#,m9+dÆ…Y0 ÛIŠaV³fæ÷[‡‰£–[§&Ý…­³ƒÅþÒ„GIJ5ÉŽvqŠÓåç5Ó»,®!Lþ´küÊßõE_õ;ãuªöú!¿–'·;|âÇÝçAxÜSžñ¼³’ƒxˆ]È?ù¯Þ2^‡jI‡Œ|D¥¸¾ôÍká}«õS‚Œ–Š¡Zn´æ‡(‰„<+¡B±6Lñfþ–ÄûŽ´¯Îkc«—öPûã8ÿbòG(¢‘¤ò¥ÈJ¡vT£ÁdTKÍQ £G¡Æ.K§±y¬ð\;ÄdÐÀˆ!M¼UAu.¡Ë: èa± M.À†på’rÇ_4‹€ËûÖ"Üæ¸$=.Ë’H×$äP(2Ծ죨YÛ ‰ú<Ã3,ìiaü¬Ý{Ýö/F ±~OÿÈó°:¨~Ac°8­Áè1±ª‘D¦oUÙsÝø(ØšJ£3˜,6‡K—#p–lØÃ¤'­I"uí4¹‘äúµ-E”PN•Ô:Z’OÑQ5qjNË| Öríœ —ûZKIíQëpý|¾ØŽOZTGåWñE9-ÕÑ×)Õ¨22ÎL P?:3ÿìlæ>›d8#LJ(ǯA´oè¶îiK-´ú:gEz´_‡t´!g›=&Ê¢³¹Õ%]ÕæZ†sÊ9WÜòÀ³È¢0Gƒ‚$XÒÑ ©¥“Ê£kЄômŒB1dà…„!IHCf*@j_SÔª£¾0õw~Ë‘1ºv¥øb£+ù=›Ó ~Ÿï¸ôñÎSpAMb¯f“Iø¨ç³|ÐY<ÉŽégU?̬ül¢Ì‚Qn›¥hJ8i{Ì¢*•O¢§è­|ÿjø§wêšÑ/Ðî/µÇv üå¥Ü¹ãSp®½Z 'F`{(ÒfYA—ÚW™• &;3>eã0A¡ÒÿùEpª•ãû|µ‚JÉÂÚš‚ÊÞÓiÐ$„éøä5¿ äÒEíÜžÇA5Éc~Ô4Ñ6àþìºÿ/¼E¥nG.0®ÉîÏ—o-žòý=}U¡±3û~Íî¾·ˆ[×ä͘Ìi»MM'|ï÷¥¦íó}åÝ —[nc£™59=)'ëøØƒÁþ§²µ+Y Pé;>•M@I¯´¥œNjöRÒûü±Œ4/¾§û†<>R#EÑgÛ¦·ªCÕ¶WN§±™ˆPi¹ÚI-a«ò{ô5þ#´´e•¢^cð—DZ$P•¾ ä@uä'eêÀÊëñ»dúN«\.20\˜g¬šÚ"²[do¼‡{Wù Ѝ×|Ž«ðú1\ª^¿|Â;p’Ãቴð“k<›½~RÊ<Ïa$m#rô.Ã÷à*n´ 7‘öµáMÕ…iè°`ˆ%G*¤¦#…üðÞ^ê61½wûª_ã‚ÒöyÚ»‰Ü±¶á4¢ ç‰gQª+‚"^4_y:n<‘ N‡c^ ®Ó Êmõ“…ãΟu^Éö& /ábI%5I&µ"3p´T<Û~«N§ô fÛ ^;_¨°4µ+Çr ¹¬Êé­œ³”À€÷Nlp·è¹‡ŒÖŠÔD=@C^³*Ãë´›ùAeÜ‘cê)…€ï1_5m«‚1Pˆõö BË®J—oA0¨gˆSDpý¡mpË‘³· ¡¹ÀGýÍE ‡üyC¤{]šhIHùŒÐªé°#½‡ãûH í•Äí_é©{-†‡/ÃŽ´ì)ÌKæ=¦¹?í~7Aržèü·D0õá1$DÐTÊ …Àè²÷®å–¿ L¼è2Í‹=D• Jü\^[ÏÜ&ø‰]Ò; g)ˆñ!ˆ7íˆÿåeç¶m¤³8ÀÎ ÝÓDÇŸhôi6Sg‹„"\DÎÑÝ»(}A%s «p`ÉS…rƔ܉cBøå³L¤üŲ̀Èì •d"¨ýéÉ—.À¨ôC Ä=MšhØPÞp·ÿ_„­ãÎ«Ä ?·ù´ zf¯›_à=œ0Õ&ûˆðôz¢F0Jå7(î­Dùñÿ1H2䥼 OzyÿÃ(ôô`+×#ã¿î²I””ýN5¦¼c.ž(š˜b½“¾ÓHß4\*­²R>Áé6ž¾Dþ½Å“Š8áZöCsÔˆøÑyÐ#Á£ÃÅÀËiŠ Ì1‚FŽ8‚p‘ƒž“¼vî„VÜ~ÞÌ3a#BB‘Hx— C²‹œ9$ÌQÞbpž&9]!´C5ŒBE…`†~Ÿ * 3êZ~·¶òª¨Ê^a³à÷¢Ö|‰£äð” }~¨bFˆß&‰`¤È!Ï­0 71Htîp_þ–©0/T•þ0P„8 FíE~)bþ^”(Þy)Ö M¨Ë¯‚ÿÇ6/gþŸQÇу2Ú„Û¸Ž ¶\Š·¶{µ¿O¾‡ùª¨1Zƒ›‡Ñ-£‹þöÊò9ÝÆ7ÔÄÿ¾ÅDu7QC0fwsÆ[Úâ ¼a¹Ù ifˆ¥1X1Ñ=†Þú¿1 X„á¢îI×oÛ×ð…×W;€Áfðbfr}xîÙÈÌP7#‰©—˜_uÿÈõ0ˆºC_ãÉÎ?r=Œ‘l¯%Ô¹Tlâ.‰HFGñ€äø?ŒùüuU“jõµKûézŠô®±¨™Nʯ¢JQV¨Jªj¨†Ú¿zÏ…±¦šk¥­:ÏöINZ2L()Ni*Rº4d/—scnË&9L?þC §ãøéJo2<ÏÏ2™éÌe!ËYËfv²ŸXNrf¡E®sÇ•/d“ÒÉ"‡< Sfå^ú”ÔðJuE×uKwõ@cÍt¤ tkŸꈎë”Îè¼.ꊮë»pD‚8 «é%7ÜgBŸDU ž´Üv”H¦2çrMJk*Q ÎÍ·¡VíH¥FGÙÒD!ˆB ªÐPz£‡kª¹V°]ê ³‘fL 2 -5…©Mg(WÖ’fÒIúgâ–哨°IvêFÿËRZMi;í¥ÖÊ>U™Ôdœtn¹oðÕÿ7Jýi(¦‰I³)š–ÒjÚH-s®½ʦò8¦1_†ÿ>‹mÖͬ{rõ]«Õù‘)”Em[ v¶‰Ë§kÿ¢(êâˆ\@ ŠiM·baÂw•LÕô&Ó±ôªPK Ç®'YNs:sÎwMËz^¢/~QvyvMvSvGv_6—=¹:«¿°5Y³cù^_¬Ý:®Býpa~‰Bc˜`qx½ü¬+"‰L¡²çJP¨4HÆ;ƒÉbÇ—.Fß ‡`Ɇ=ÀNI"5årrɧˆÊ©¢–zwÉ]=.>…»ç¶ÜÄ-ÜÊmÜ£üÔ|öÜ1¿4Ÿä7ä·Ù¶ÌrèËȪû/^Â+ªü ™^t|ÔRºƒxv$r@5îÄÀD%…nÒâî2dóKåT÷5I?óûXÖù²+ ²ÚFq6k—Èâ/Œ —xŠ=ŽªuœÝdÐé{5:ë¨.º ·'p äûoðÍgýk±EûZÞþgãúXc¥2ûíMuûæ“ÞÞìMú¯†WCÑ·qÞ¦ü„Ç;5ÆçD¸O~EÀœ ’PÏóèçÆ7ÇÒ±¯87 >Îê;Ñžð${æøìt«“úîõ(ŽG½ºû ?#Ú¯ wŸFy|‹ôøu•Çÿê<†«÷4ÞOÓú=Á›ÿˆƒÚ¶)NÁžm}R~7¡ÜUÓ‡óÇ£º‘Çvçíýø¡²ßÛ ýl®Yò ñ)׃yÿkåÁ‘ëÊà¨ï+öãïƒæâ?µ«²äOÝOæŸqåÊ?»›]¼Õ¬éóõçÄš¿¨|1ž[`ê¼ ¸ ‘+A% 57š}qè©ÂB†ˆD"2‰È&‚“DîT›³™zÜò(RBR:îuã…RʆO:eoÌÏ *‘P¥š„ž„ZÔɤó”l5Î0ºá¡»ú©aÜä?yʘ‰—YS´i¢a/âs_Q³Œž•ß”UÖ“~6ò [“ ý¥üáo¶FÛèøGÛÉø—”f2v²“Œ]¤ì&bÊ^"ö¡ì'âÊA"¡A9†råÊ”s(P.qI:—‰¸"«D\“Îu"nHç:^ÒñŠ„7t´Ð À;t[º5{°cšpòü¸; h®q}º ömrh‹cÛœÚáü±C<ܧËkÑ\óTsÍ Í—š^MzÍëÞ𦷼Ýw4)ï5.>ò±'|ê3Ÿûœ/}åk_ò­ï|ïk~ô“ŸûŒ¦ç·&çOš9ý·OóÌ?°Ä›¬ÑE],G—º¬Ë‹0Ñ’<‚ü/‚%ñ¶Õ>ø÷üd†o@\ì'~ à§è¤Û‰7 ÎñSö7袥 :ì‚d@òÓëÇ©ôY!Ñ®ý=ÈiÃ_8ˆnrnâ§W4»Ôqw‚ ûN¨ö]ˆØwƒØCµÃ{?9ö´¡eŠÉ l®ýha3{VâÏ·sæØ$RÀ?²9§#ðè%þŽüðcþ‘ÌëH92XëŽòÕõjÄÑ–À¸„È3¡À£'¤‘iGÔ÷ê"^eR|u¿†áWHå¾»£Žz$¿PÝA Ç49²úÚŽ{m½f¬í½îï£*¨¤IÈÁ{,Ǫ“¥î+vQZb¼BrH&Œv «ÑXA¼¨C‚ƒB©¤„Ð[8 YLÕ›Žaú«-\Á× ¤D¬w)QÔÑ’«ã0Æk—æU¹j ·Éä•j±Ò¾K… “5X"›2¹ª+ Q„y/³4Þ4 „(F ²`\­¤©Ÿù×zŠÝ7‚Ívñô—Ëíª† 2Ph …R!…P-j©…,µxu ÅY‡±¡›óƒ¬ãM²ú“(sŠÔé&\þ¬&™]þ¼&_ S*<`†Y¼Åb‰ïdùI–²ü®Ê‰EzÑ‚õNb%$L¡Z„KvÉ.‰¥6µ÷Sjɦ¯0}…é›¶^ÙÏèL7‘I7“Y·Å# ø’q%ãš‘:e$Mé.!ì_B¤GÇV: $‚ãØòFÉå4m…ŠƒN2fDœ|ÔV*8ä}ˆˆkIcJ†JŽa” ŽxÓ%)V]ó2ŸË~Âò§XIelB±xò—㌀uÿÑ÷¯~8øÝ’LS¾%+¡»Ò\a8MÙ˜¢,÷œ,aXBV¶…Äl6É)!pQfÖHÙä_K%Û%T"weSa›T…ˆˆC^¤ëü,Ëá<âKù‰|T(Î¥’)˜0r±­øÇ9ªœ·ÞíšCÕä»+ݯæê#ÄÉd"ÛÂnÞ¥Ê=a'‰cCµ¯{KENE®A¦"CMhÿNá &ý02Ÿ3'6ì¸`¸`¸`‡”èôdÓ<ƒäV8Jrò¥P..Ô3¨\%¤D$ä43½Pÿr½„:&FðZXÖîÿ•ü­@È.ì’­ÙÝtá>9wîMóUƃ2r"r"ršZ\SlB!ýп K•ä!š ¥&¥ è…ž”&ëÚƒKó†”T%¤(Y£¢Ù"lJdP”¨’€[Æ ‘P1Hq2 ‘iˆz±¡`“ Í$‰’$Š2U”±™Š’=Þ±ÉÚ=¯ä=rŒB0F0FÈŒ*¥UBF99%¿b**ZrZrZrZrñLâ™Ä?éT•«)¾jG5½åw%¨™¶²„g–còeË—-B˜üÃì2V^ÊŸÌ,•|AAx¤³X,°X,‹å‹X;"’ ©"F.„ŽQ !el…P3öBG!4Ê#d-˜Iæ#€>øà# m›¶ Q ¢D-ˆZµ ®d\ɸ’ Û÷}/1lxB‰¼NŽmô+å¤-¢E*^ie†Ö=dl=0k÷Þ†ù=Ö¨¤“RÁċ猓›%v‰žHµöªGÔE$E8YKæqE 2衇žÇ|ïGèæÄH¨CÌÂ?¥tÀà9Vér¼< ¬(!p<šðMŸÆfTÏDo[#ô! †} 8ito°³ù`µ©¨x­™ k 1Š •ówÊg*NÊRP‚T 6ê7ö 'b· У*œoèêQ¿ËÝ’®rb&\¥—ÀöùÝjZŒ…€égnÓ7Îù]áÞ±eÜž…PöÞÁ‡†n«ËUÞûQ¶ÕçEìD³ék¶˜>óîä‰ï¥3ëï‘êf¾í{ú$Éž¿óK°ÍɰHjÙ~‡ÚÉ´,ÙSçvh2¿À¤ìLw)Ñë•]èYüþ!¢r R\‹­VmÉ%¢b¼®úÑ[1E`±¬&R6V FÄ_PÔ 1€(ïO’ÅØRËý"ò;-þs‰¹‹'гøøÔhÛHÈTöâOGßÙ»â=…è‰Vü¨eåO?Èi‡Š~DFï¯ôÑÄë~'áûð²=®á_®ß©uB7G u1Ô¸ligÕUØŠ×,_°ºÊª“‰¸½Z‡/s »!š?‹¿k‰0·}Í¥@ünoοyRãâüÝÜøò»È­\ƒ£XðK{oì‰|2½Ž¸¯;sr ¯«ŽžÌDnŠÒ›2ïYÞî,z—gQCê„Èhãµ!]þª?$úð™ý‹)ä/åÄ´ð»œó¸‰<S»À×wä1Ã¥ïJ‡[õ„l|$.ê&4p~O“6ÈJ"›_oXé huÅÇ‚Ð)„¤òmfnc÷½ø‹Þ•Ü0ÅEOFæg×û(þ?¥ù€ÌcQÁ‚à+xlþè{zkm¤ÅfW·×ïÂ\õ;Ò?cžß„álmˆà¿`zv¢…nÓÂ*Å#£ vlè°¦~¥×­òÉ*þüŸí?ï$:ÿg—» Ý¿¼f´4Z]ÈÎm`g2Wx›GÚ>ò•eÙY¾Bêö×™œeÅ3ò?ñ={ ÷™ÁfÄÝ 5-öÑcE²Ý]ˆšÞ>BL£nspW×Ì<8‘H# ¦ØMeß]=_þ­@äãQºÛ—ê‡*ÓËgìÏÅ!W#§5î5{JW fÐÕƒ*ôçù„O²ñÎÃÕXî:Ö`ñmØP–lÜ!\Õ!w§/|ÅÄ«e’{{‘¹ÅÔpÖ/ª#…~øŒæÉÔ.7ObÎçæœ¥–’iÕßÐFbx–.pï\Y÷å µ·íZÙ°¸,Zڤ鹻Oì–Y;û–¯È¥+›äº¿«>'¢™ w>ŸÐ#êÐbÑr'diÓÍÃîl né¬KR´îšY²Üe©Ü[Ú ¡Ùø§ãoüYCòDz¥R +7íÑ¥9x#€£3”‹È[¶²¹× ãBn!l9ꊻý￳œ€EaøËUIÿ« ¢RÏrVf"t2è¶ß¸“ää ×e‡±™,ä&~øá¶ˆ]æÔ}b©?–gt5ƒ¤._˜,ÿ1 gßy±šqtµÑ¸øŒ”m^|åjœ_U’'x3h'¬@nZ._å$R&ÑäÐ"¼2ÝDVdbóJÅ5N1™Èò0ìuw:¯ÒH:ñV>2µ22“ÛXmŽ^Jeu?ãÝK¿fÇ^ät¹/ÃJWùÌ–W\œUV¢A¾\A`bC4æ($Û¤›\–økß^ïŒîÕ"ñ½Ëí7 èû¡Ÿáž#סɔmu[ÚßÑxé°Ô'Üsý²z@´áuÌ-”ÜÍÑ©=# ݆²ÂVD“vè%ÊßüÊVP[zêfÆK¯ÃÓ ù¹­¼¿vCvãYx§Ô܇\®uÖŸó¥Ãny=m’”E(‘+º3¨ÜQ‹!ÚfRÜ?ÀÆä+½mÒ—€ëB§ºà@S^:A©‹ÏzÕÝåëট½|ȧǒ#}—áE>øšÞó®Ò(¤ÁRe`²©1·TÔ‰žÏ;ÝÓíÊ2_ ªÇ ‹â>»kÁ°ªéXÆÕrÓtobštµ a©Îv òT†ÝÃ?åU@í®l^÷7kœ!z‘á®V‰öÙ¾@Ê{›A^œ“%¨õç@»¹îè5Úë.t—£Wp3¼dÊQh$aØË¾–ßÐs[µt»Ùyˆ<.â)ßÔ¢¤lîøÕÔl)q:ã¾Kµw {0Ê/ÄÍ•£´ÊèÃðÅ^&zŦÏ£…RsáÒŽóã²—Öïñ Dú2¤4¬WøÔ<óº¬^J3þ+¾3ÀGã©äè‹’‡b8-¸b®éÃÝØøÌsâîÝ F÷I^ñ±ÝC3QŠzr˜TÍV `’è²­ä "1»Å’­‡;½‡K›”­_M+`£þŸ„[´¸;_|{ôŸ±Ü”ØÛ3Y(…'KâÚžÚ¾üå(Õ#¥?;ýž'FYµ!n¨hq¼]µßc‹ÙHÌ£µ‹­6,ÆÔ D=âpÑ\©¥€ Ôï³ÖÜtÌõ±O•lAfÀºÁX(=ênýP%†~jŒ!˜é¾–/@ÛÇy}µ*¥HÏ$M»ŠOuìÑYÿÂæÜhª© è(ø¨ªR†.––D/ÄÎçŒÿ$[€í†{(ªÈíéK;Ø ÷ÍCÉ£¢W4˜ž”Ã"®¦¤¼Yc0•¸‚H\[ âˆòöº3¥£ÕEÒÂ`·ëˆ»Ó‰R4¦Ý·ÐÒ m&Åàçmèp!-,΃ǬWXh)¥–%ƒGB¹ÆîkZ®mJ—M “¸3Æc|[Mï–µÞ5xŠÐÔ)F­gÉøõd®ôÀS‰Þg„üüµ×šN&jÓÝ¥ÃMdŽÍd©wŸµ¨;ÞO„…kè¦sÞ-ø- Ÿ6%„Û\rB:rÚ] ÚtøVNcF¢UÜÀÄêLœ—Wì‹nž7SM (u æÞ°¡ÂÝ—ì›ü¼ºÖdpº¡+ÐÀËÈ ±¹ü„I6šDËT‰€1ñV#\5c¸ä î`ÑZ®¤C¸ ݹ¾mBßs-¶Ó¾û\4¾1#Ù†™Ì‡XW¯.à—®üBh,‘IrZK¤7òÜWv7×ËxY€f̅ݘɭVO}r„Nže0|af”¼8»Nk_¼¦ÒOµA Œjò¦¹6¿3»Î>ŸÊËGÖÜÝÇ.¾‘ hHuͲkéÕIë's·’°ÓŒ7²ùŽÚ½8:ñþî£sâ>‰‹wÈïêG Z<.Ùên.¥c“e¡Ò1ŒÂ½Ì”*%Ö@î áæ#,fuÌ‹èö 'aëßé±Á×]Òä<-+N!i¢øï6sv~#ÛYÅãé´| ù­æ`Œ•øÈboøý<°ÝùU§—Ð,¾iñÛ! }Ó?Wéé®$ ¤«h“¡¡<¦òr›Ù͵MÉUže‰jHùÒsŸ}ÚøRwÅ '£íØ5cktæmRêAÂkZ€E¼QC&RµH ü ¬«¤ùvKÇ<‰?àÖ¡³œ~-ꨔC¥<©KGçšG´ÁY·eP`C·,Œ/eøR†¯eEá›ZWtC³îë–Œ -åÌ7B¶}Ö•hšEˆÔç͹‰=ôž DT½”§¾]34mágÒƒ ½‹â»êÚéÙ„_2ÌawÁéj¦ÈA4±Ôw‹—+ü®('<¶ef‰·¢hfÓ[u”ÆÚtÑöàž‹±Ùà›®kŽM×UÉ“³Ó C±8ÖëÈÖ{ñ(A/ÖÞܘÒ‰_pã"tÐp)êP† c2Œbt/誶ʹaWœMûœGWˆœl’kk.4ìŸSù¦ëÂÀ¹4áÏÏØ)UiÚièÊ»ùDÝhD\Q‚ôeð£×!†E¹‰ãŸT¾«"Å8¥ò•Öáu8.d:Øv~OK6p¸4bÙvÁTH$‰6U²>Ä~ü_quÜ`R왥ÑŠ‘ºE' } {—’€£¨ 0Ÿ^uFK™‹UØp¼Høik‹ôq¿ÕU½T™ÝD*º¨¦X õ‹ ¿ W”Bò~ßgn3éÓó­µsõœ2»õÅM\¹Ú¿d\>[mm±€ûOÐ “Ü/sZ)K”¦¸£Ô#ƒÎòrüÄ|ÈÜ-™«ò¢VFŽA tŒë>µ£B,ðaL1/±—_ö\<¯4¹¡=ŽGDÔ2Îé˜Å|’ÿÉJ?6›®%"Ÿ*UóáhnÛJ\Ýç¤õÈ„(&ÍEÐÇAßTI¿-'TÊ¡j×ÞØé"ƒe4t²Û7ütpn·Ò¿/تÄàƒ´Ùn©‚]A6è K+'%Éч(&5ПèzžÃØUŽ.Hq½bS'w½êAkœî®òÙQ0FÚâfs’è]Ù£’ô•>Íz}ñ›d"1Ê ï‹~œò.L¶ujE·GböQØÐKìÕ¯3’ŽSÉŽj¾B81õºa‡ubŠ8-4¹eK ÜØƒ†Ë±&ôzÞ÷L±«1$?õ!T27ìÍÑпì´6}¶|ëµfû§÷ ã‹•NNO©îدf~܃ââFxþ&ã&Q³L—Ñ0ˆ5\µ‡îÄ/xs¡·úëôûýdᇵÏ£ïwIúÛ~#ôOÁ×C€'ñÇãPÐÙóÕK ­6ΖÑ™-£?õqejð$.:ä=Ò‹±ÓipJbåËRjOüP¹D¯z4Ào>ý DmÌü æPüÖP ßúÖ@·‹ŸöÙ©¶qf\Ñ NâF|á _ škÂ’[A† òNdà@CûM%\C%q‹È’2Þ‚(z‹‰Ä›Ž¿ã*5î/\—Œ&h3péezEÚ†Cáxgb«3¶ùûU¼…]i>.I2¶3¡1Ûd[~ån¥8ɱøýUù ÿú¬r=Ý|`†@C’0lù»U‘I[Ò’\;hv¾©C8‰Q×YPΉLäbpP¸ª p3Ä}p˸鈻\-Tt@9_j²[-ÄÞ»}û¸Þv´ÒæûÈExHÐÐ~qèÄs€–ïáþ@0Æ{ˆjyÖ†„£fÖ…-ÓWX¯_¿£]6–ÕwÖMc@ùÝlS®b\wäêÿÄ^ñº+ú=N’Æ€¾ejm³:£0´½D"ÓUZD›`TÉò‰QÕÍ“ÁÃQŽS±\&:Ìqý^i⃢z³ UÆgÞìGÊ ˜Uáb_©ÇT}•Žy•·ÎÚŒ}”¦ËŒé†î冫j]÷cC[¬ICŠÅb2¤ÍÈқЈªÃLŠØV%ƒ¥ÇaÑ•„–³Ã:\œ«~cR«”° ViÏ£âÖzè$YW¹ )ˆô‹êƒñ>‰Ào~˜€WÕÉ0v±$T Íâ"„€aò7²š¤Õ(îë,¶ Ͳ±Æ”W;YVSi\UÖçe(÷}¼<¨«J«PI#x,ÚÀµØL¡j œAžCR}kÝî ü¨€[ñúÆ^i@2¶ÉmŠq6¡‘e2~7Zq"±¢@Ñ^/η> S·ë¤RZEòêA™ ­òªd›†Æ†[ìŹ˜MÅÿ#³O›åºbӛ摟Rû£_=F{xdò)E£;slf–YÄ2ßŒ-gЕxí™Ç@6`il£¹a¥ûTÊ7\þº4k) 0‘“×þaõ‹¥RŽ@\ŸMµb e§X;·5Ëv0¸)ø§èà¥ë„hû~Bž—0!€ä¥ Ø^“ aþÕâÔB ‰Ðª2Í®×»röòÄ$«†å:‹Þº¡|LGF¬‹¸37OŠñNžQùžn ]¤vzÍNåìt*é¢kd—Þ¦7*ÊÒf,µ5Y@Àn •óuˆ*¤›*<¿Ñ©¶ ÕpcZêâWšã)²:«õèKz˜#»[à¡FñaàémR°HÏW¿6—+á%å ’ˆ¥äÚn) ü9«Ð¾x,ŽGžï#=_©z\N/e4Ÿ…RÞÍ.’2¹t’Rú8—Ãñ 6ë–ž´¯Q.ÊäÒDö•åQ£û¹ÓP6IC5(ï‚Êl­ÐBjòG)\ ᑞ¥ÃÙÈ*ýï*¸îi¤béÿå|¹™zÆR®´ˆV2!ÇË” ÉÞÒ_<’ße¤¬|—K|˹G8³Šì,­ÌcRLuiÃ!=*ò‡J§´®¨ËÊäyÆuVsíK=è*½ þ h¸²¶$²eÀ•—x¥éƒ<#4`͈™|_ÖL­’[Z.°`ÚÉ>á&Ò~ðiÒ¨©VnYøÈâ:88¹Ê$pL©`06cî…šèel4‰&c„R6,ÈûÌÂJœ(„kµ$rù·m“a[³,e•øt¢ÕyM kI`R!ŠÆÊÌ*ÃÊDâA „Âúü}Âÿô( …ñ2„ X„ÆÌ–xòoU§ó˜F#nKÓ¢Ó¡Ã…rE:Ý"錭EkyM æ‰5Šÿk‡á»=.7†ö‰H¦–¼ükAt§>¡zúü–sý†[:_Ø}RâE^k0°S}ÍìüÀ¥¾Rͯ¬w–«×ÁÌ!=ú$)ðU]«Ýožª‘ƒ[Tu¤Ï©Íc'=®)ŠZÙÓ³Îõ)$vTí0pÉÀ Îð¾…Áõ8\ÌÕ:•¦•ÛÈVHþ²º´q·7}”A¬y…:±úžFf ˜'Œ:t휠‰IiÞ‰eQ¨UÊ?þZ3ôŒzËèpÚG cT> »}-…øã½ÇPÙgü¦D”ÜΰkJuŠ H¸šÒó6²Ï…(,jÕQKû-ñ ”ò¬…¤ë÷¬wµ»u'ñª·íÔ¥^ØçŸœrëÂ﮸º-œŠl›¨…'?ûýoºæ®{²à\ârFÌØ&³Å±˜õYÁ›Äñ—Õ".û)®ÇpÕ/¿ÐN¢ÞNð+Æj®ÿ5ä´Hðï\ÇÄ'Ç5k>ÿ;nË»_ h‡wѹâ™÷¿Æ€ñásÆØïyëÀ¿çÓ¿\ ÿvdéj_žn|qÚgâí?fv¤ýîâD!í«¬P¹0;0Ì í£¹ þñ¤9Š‘qY³?©ÉZh?=ö±é,ˆïÿÈRK%;èöþ´BÌHЛ â™öâï¯Gjl‰´BG+L·ÂÖN᧘5ù²­ô83@gL¸:3€ogn–a3ø]%,þîßßüBŒ’ÇTç'bºé6èèC¬;¯® ¼*7¨Ê €µ¬?ü¼U‘9^B[ºSZÞøìþ§wNÝÑ™Gž§eˆgø¤Ný—m¿²-è—å{ Ft"MÔíé)É „²|ŽåÉ«êè›:P)4Çoÿ¯ûåÞþxøöŸ<PF™)cbc^…äý -nI9xzª·E² ð¿Åº”G‹0_©V£6Š-´ÔJz !NŒyÑrÚ…i;[Т^ ž@òœLÖ“ÊW¤ˆÍÙðpÿû¦×¶>ëß.iùf#º´×AUÓÿÙzßu'jwL_w8!¯ÊÃò²Ü//ÊÝò¼ÔŸ¾.Ïvλ²ÇÍšÖûÓ õ´8=8 !'TÆOóo¬ló²6HþÞwÝ×BK’ÍŸcúó¯óûÈ~bmÔE{-åûmo¶N¶LB+´R«µæhÛ¥að_»ýâz¸Eä-2¯¬ÇZÔb¯û²€çê"0ÌÚ[ûñ³"ÔÀ‘Á',]{.(¿x3©òüü+ÁíÌ n%[«¶6e€1fXbƒ=N»· I/îÅ}}ÝÆhµêJ„Oä·û¤Oåw”RËn°Û“¡\©"&!%#§ ¤RM€Áâð"‰Lñ˯Lü=#GG­§o`hd<ò¥ŽÁ;ûgž«ýYò¿°î{€ÁTG­^ƒFMšµh]iY9yE¥Áö  'þÈÂ@ ˜fhn?‡D QhÁ„î< Ü&†ÍésΖóØÉ?ÃΨ<¥ç·A_<¹{âÏÔ“t¦Ÿ س±\>sï>·¹àÙý°µ½o½Ö¥[‚BÂ"¢bâæþ»2•Á’i"E®QG볉T~{¬¡¤M4Ð`#ÃÙ޻ƇmeeA`¦Èè.{e3hé虘YXU»(š âßÕÒU‡ÿv>Æ×8$4 ,<"2 *:&éYŸMËv\ÏÂ(NÒ,/ʪnÚ®Æi^,WëÍv'=á3ÁP8ÅÉT:“Íå ÅR¹R­ÕÍV»ÓíõÃÑ~{I7Fü$ûjÝYÀ?¯®ë ìƒàɾ©‹îù¾ú6úök=ùv|¾Y¼áàó8³üŠ«¬¾Öºl4|Ä–Ûlß—;ÁS€ìË‘œªËwüåÕ+×r'òx¨€è»€ýÀ` ˜±ÿåá•€ÈB•Z©jh뛚[µSoƒ†-f` ÔXÍÔRmÔ^Ô»Ç^fodoc7ì{Èvv²»¼ +Yº\…ÊÕÎë'v~8žš>þE˜PÆ…TTM7LËv\ÏÂ(NÒ,/ʪnÚ®Æi^Öm?ε‰EÍ#«eî­6±;œ.·Ç0½êóO¦Ò™l.ÿ}øQ͇ü3Ñx2Íw÷ö‡GÇ'§gËó‹Ë« ¦•ãjÇÿM®ïGqu·ê6 Žœœ 5ju:Dˆ'^KŽ‚^ì49[{îá[{õ·úÖ/é`¡aà`*Ä%R¡X©2Íê4’E,U2BÅJÈüå?tÄ„ )g¢R‰r*J:ZUjÕh‡Ö MF‘)VÌwø5°p$n-)ˆÒ1eÊÀÆ•…cå<¹*|P¤\©2¢Çú%úô øNö›øâ¿_—¯ÿ×p€‚u`œ"³W·6Nú6ë÷m^§o^/6NnnR‘[¹;¾»ü¥N¬K•×7÷6ßF»ð¾‡w|'vr§vz¿ìÌÎÎd¦3Ûóú;—ÇEb‰T®Pj´:½Áh2[mv‡Óåö°²€ 0 ƒ#Ph –“ Ççåã"‹ˆ‰Kë—‘•“W0`аQã -Füt²S¸‘¢D‹ „'^’d)R¥Ñ¯þWr)¥–!b¤ÈQ¢–-úéo_Örì+3žÌƒîÞ5_áÆ70ì:_M6ëwxßââiæ9ûþú.lc·›ßG“‹g{¥®îæ/„½ÇNrÔwã2êƒNHJ¥(ŠM×Mó2E\+!ÑÁÿ*³LÏûu«b¶NsŽç¯á=¾ix=ÊÓ8çZ¯ëÜ8 !„d2 e.\¬ !„B¸!„BPŠŒß3B”º „+ºÌm£kXs ŒëñÏwôÑxtáËÕrïsgÅŸ¡ˆ‰î¾klŒÈ%näšWÓã+1Mêé>òñÎñöUï¬à{K?ßÍœŒŒø`Ô˜>ùlœtµ¾Êç`1‘›_5Ò¢¨ô7`B5ÌE; ¶î<2ÊŸÉ1héëšÄö·å‚®Þ­i×iÜVµi;JaߨÿßEA “{Éû…æÝý™ÒóÏ¥‚ ¼=O”ÕL~¡Áå0Òè‹Í â*£_•!Ùå­oaÀÿøÀ¼èӒѼE8­$Ø7lÏÙ{U Å&ÎSZâ3'¶ºK „)g¸·­µÕ^Nºè¦‡^jÓ·ª…æ´§ ‹ÃkÝü>#á9|Ú£ÀÐ>ü/ùÝ^‚@D 1ÞÏ›‹{¶žã•ÝÛÔO®¹Ë¹ëO¬§ñ:Ùêöü]z¼:Tdä”Î…ïÆèøÅéËl^±ïÛ“]rê¼ø ®?­´$éÛä–¶6âFª_ëãF7E«k{®7y¤¤~çÄ™š¤J£º}ãÀQÛª¶5wÄWÜñÄ«6íjI4žhШI3üÈñ…êþEpdÀˆ Óæ-Y³eOLܹk÷®¼¶WlošC9•K|¦M+T÷>ê/Fä@NäBnäA^=`è p ç‡È)ºKÿBS®H÷T_ù„ĤdT4t ŒÍ,mm ŸcU_Õ\­ÕÐÃQÔ­1ãÔHÍÔJíÔIݰ+öFöö~ö öŒ}º`Ñ’eB+W¾Ñv‡ÿ­÷Ö÷‡ydŸžXSü%ª­ûy¥¨Áp4žL·v,/PFMšÍõÜ]÷=ôÖ;ïßKIj3(´Ð £T”| ¡ÒA*djQ;haúGô“%¡z ©]“f-Zµ ý™Ö'©~÷iŸ7>é&6¹/ûº©_Ãgã2ãíš \jÁ}³aéM ¤æz ¯‚ ƈâZO!]T@âø6Vëé ¬`Ê)xpnñËe¹¹‘09ÿ¿0…ä ~Qhº¡óSøçJn Rð ,CåR„§/aR~.a2µ~¾ôþ²uù;a*;üR$¾Èú®¿]¡í•ì _}zn‹]¿ßóîãÛ{©W䕃OË~CÃÒq¦x3‚9Ñ‚Ä [RTÓäÒå™â›É7W`¡¡ÈRq¬””¥¨˜2\9¡‚î#ƒt’~Žëó¡ÀMÈ”™q¥0—ÊÒgõúËÒÞŽMσüEÊ—©yÚ×èß`|‹`…ØNŒ›à¥ø™"– ròð ÷¯âêtσ[|«öZO;»ÅïS*Lg2%ÛÞV¬«êµ6 õúÙjž¯a"N‘‘‡æ&Á* Éþ5¯“˜ˆ@Úë™ÊßqºÚ^¹Ô×ø+A¯këõ®ÂëìUP Ye-Í`¢¬Ñú¤½®díá>ëè‰CÖá‹ÎÞ8dÝyÜW]=rÈnæ ƒº{åݶݞž9d½yÒ7½½sÈ‚yʰ¾:äa;Œèïå™N™m3 ­²vk©Û²vNÃ}žž>|'2 N +ʠЪLù„ÑUDˆ“o!úá:%"Ô ¤ýïCCŒ0Ö43Ì·ÎzMs(=C¡nºåv¨ÔRß¾·Üo{‰¨T¤¤õË´ÉkÁŸï!•Z£Õé F“ÙÂÒÊÚÆÖÎÞÁÑÉ!A1œ )TÁd±9\_ ‰‹øË¢ÓŒ&³Åj³;œ– „2.¤Ò ¡<<ÝÚ/o‰Ñòˆé›ü‡A)i’ZåRNUÂü•Ë©^.>w&x(*=M¼±—UºyÛnw _;ÂøZÅׂŒzå1ZÊŽQŸ6eð£@*µŠ£Õ­áÅ(¯ŠAm¨ó¬ìì»xÅzoøŽwÌö‘9>3×WæùÁ|¿XàwUa,Ô#Ö…zÂøzÝÝ;` >ó½8èý¸Ãã^”øÊ”«˜•ñó‰aNª„ê„ &a¨ u£>‘`‰ÅÈÄcT1:Éo0&glüžqbÆsa˜ „abðžIÐ=“Y0š’S'ÉôÉ1·ÿÿÌøeÆ,œ}ñoö£ß~öÆÎ²Ý;±À³«בŽú±+\âßñzhmq„C\ p˜¿]1³ô½j fÕE°ìlp×$†°Z qµ™¿V‡ù{ušV—ùwuÛÕk®¯~c·snÀ,âå#q£–Üãú€ÏR…ÊE2*K9‰GRI–Â|º\^#!PUod¢Áæi1¨îNwŠC‚ŽŽôóg¶ÝtÅxÜ2u4aæê¼$K^ä“¥¾ûb…žëPSÖƒ TÃR.,ÏO2§+VÈ‘žä®LfÄnþÏÞ›!©òdŠ|xÖfŸ¢3ìç¤c+BÏ.©J{ÓA©·×¬Åæ Z½êÍ4¬¹p#i¸¡ÑtzÆÓ^òÚD¥¬AMwFÍÖ§Ô ¨ùhñ¨å¢V ¤í‹³ô—ŠÊx9(óµWw¿|C›-sÖö-Wµ{: ’¬ãÛ‚¡ÓH©È~¾—¸ç_Ñ$·k&eGªÛ;?Â=‚F€»„œÌ¾1£y9JFeЇzhS9Z‰hFÙhÜç¶Ù•ªùçAÀªã˜Jq„„”£¨R‰^ÍñJËÕ¾¶_ÈS%½°ŠûŠ­7ÕZ2è¯u Ôš=¥µîŠÖÒAk¯ýqÈ0 ¼ °ZQhÓn­: ó¨¥Ç…óú²ã¢oh°( rZË»ä Êå,ÊåÊåG˜ef¹ ³Ü‚¹ùª\Åq­â¸^yÜË<´W˜ƒ.Á«Ðx rf¹³<€ùDç‡S[ǯò›ü.wågùEî4¹rs\øP¼å7òݯêà_ûžúm|ísá„dÙ¯lóÓ˜‹îU®ÔXæÿëR "KŠ3rÀi"¶—CÅiý,ºµõjpqo`kocK_ࢮíkë›vØaZ¿¦úì@$®ÆNØÏ(OÉèÉ!yc¦/‰0cù®WUëbŒŒÐd»¶mÊi¬Ž(…6JmTÚÔX¬ÖbuS[¬ÞbZ5iÕ¬U‹V­ZµkÑ¡E§]Ztk±hÑÖî-­Ñ}ÙWÑÕjèÕЯ±¦ÆÚ래úðjl¬±©Æÿjl®±¥ÆÖÛjl¯±£†Y ó5,kXå>%HCKGÏÀļX®Ð°'·h1byŠ a`á‘QÐÐ10±°qpO5!ñ¸Ç=÷=ðÐy4ÁÝ\œ³¾™ó¿y?ü´`Ѳ«Ö².Åw‚Àž©%>3ÁÀÌêÖ™²ÁåB* (\FSÆ•Ð5˜öKlƒ¤£ [>• ë^%¶Ô "Ö¥¶+>WIŠí l¿ âÇukàP PÉxÍÇb"çÀ|­j|ñÙë#žOóy~ÎÂüš–ÉùJ‘Š'è1{¹o@ÚQv66®r‡»<Ç4 qЩBŒšO>õWÚûÐ'†™xv…B$³ÜÙÿêÙJTÉ*u££Úô¥rý !-Z~é‡l2Ù§¨&DÌ<ø„D4c¦)Ít3Á,Å”çûèÒšž`“Jx)Ž(“íÒ¶³í¶ÞêíD 'ˆB±8 ®wÛåÉ fAŠ`[mÅù‡}îž'?ûÝröûm›Ö´NbŸ€aFÀò‘–Fmáh‘yÉoÀx°èfû…5¡4|!ëðJ¯¡!<{Dhæ7ðH¯˜)»oÍHÄp—b‡ïÚ<”bY®û«Êg½¢  Ñ®oU褾iÙö+?Ýæ(SLó4M( OH0³EŠh#†ä´ÑËb­BÊ|KuÚ—”Ð’¿ß‹W»Ä‡Ÿì(ì/ºœ!ÕF\!®ÞeÍòb¡ØÀºbÁñ¯ç;FƧ`™7B0Âjôì²'~Ý»?8ïgçÛËcÐdßKØ‹OÉýõÀóÏM»ž¾ÙxàÈbЬ¸’¶ü}é÷~è=„ð{¨¾×·úúPÿÿ·.µŸöuyͯ¦eq ù«`–þfŸß€êX3~Ï÷;¹ÃþHXÛª/Úâç‹ß·'¶ð9kŒ³ÕôMž9mm,m]ë¼€œ’w½¡½ÌÊ<ž<†ˆƒ„Œ¬}¸gècÄrtn´Ë¶ÏìóÂç_x`÷¯ìüü €/`ÿ¿W~]ùlüÝSû®xµñ¯Ú›ÓÃ@I5ŽŠú†¶é|̶º\}¢±¹8ÚáX¸ü†nï·î%/?˜T5mi‚xÓšÔͼ=Oææ¶†åXã-ÄâÃiˆbÃÊy‡÷Ù¹ñY5y³OûNéÞàu•m,õžd$›añKH|“=óÄõT?]±°§ùÏ$ @ƒÛ=áÑȬ7#CăWª$ÓǵdJŽŒ0Í}ô3Ì$3Ìs€ÅV–ݱŠÍôb«ˆí$Ú‡žx:5Öºï^2eæ‡7þÆ1kÏ,¾oæüã_o½#±2uÖk•Œ¥5)ÐÐËUPü{½?Ú³ûØÛú³©çR)Ê  É0þ»>v±&4©)Mkz )šËáî­ð¶,ü½Îü˜•Yå—©Èk'wy]?»UoÔ­61žò~O{r§œ¿j´jÑÕk&¡&Þ›üѤNËŽåÿ¡@o¨4:CÈáᮉ D‰¬RK yàÂßÛ<²ºT3ZíñêK»Äßw|³ìcÿoÔ~×ö{sÀ( Ž@zd+t¾º\ ³‹«›;èyuýŒ.©L®PªÔÞÖÍ‘B EjO`‘ÃÕh}¸.õ¬Él±ÚìŽ[—+4[XZYÛØ:fhM8žˆay}èù¯æs„:îiAëèó¾ÞBã?ç¹CaÆ)‚tñÐám0×ùÈE¿Z”â :x†“'«n\;Ò 7êìÜ>ÓËûl1ó’R¸?ìÊ®®–“ôþ<øÛžc™l ‡¨aìg­Ç~vúLìØ“Ì˜ús¶ì@¾—3Ð÷î§ÂÒ_1EØ×ýØr?`ݧ¢ú§ÍÛ‡×7—­g ì5V[¾´Ê†ƒøF¸(‘"D‹ ¼MqÌ §œì{1†_ØŽ†Ó¯›jÛ@(øÿ7Üm>ü3Ø#ipG>Š¥»ÙbœÄ;y+Iò¿\6^ÿºOÞ°?G¿•Ÿs`ÆâŠ—Ê”{êîúl=ÙE…f.Á¯”*S1†ŽwÓ#sØê¬‰¸ð€ C­4wž°øRÎ JGV€‹ß‹¢9C\Ä–Ó… ñkÅ÷ˉkº™fïìIzi³;œMÍOCÆ0‹ÂïÉIsÚòÿ`‚ .øBÌ£,¦Édž7Òž°¯b|hB t¯"Å„"âÍ@¼µH<áýj©úÔzD¥4DÔ4°dr ‚¢bÂ"lê(„zÛíÔ—É€†Ê¼ßéF¯B? ÊÂ9@n o/ÞQ9xg¡ð®ÂàÝ…Ã{*ï­¼¯x‘ð*Â?U þ¹Êð/Uñµª‹2T5ߪn¸h#Åø^ £Å+®gwq—vyÖ—{[g¼š4Õ2Qm“™bhÚa3ŒÌúÉ?›sÄ÷›ä_;¦¿qôW¾õŸ;ºÞ‘‘¬¶ÙS¶$ýú5\dµH^þ"-´R§uÚ:k›¡¿îaŽþÁp;Ùhg;û­wqR+YìgK<¥õ÷ÓŒòÌz…ýš× 3¼îu'xÃfyÓgNô¹oÌîoî9¾ËšJç¯e¼u+ÉÍ'"©s)½’ÕÓ*X³¥aÇŽÊ +(€”4Ø­Û…d?ŠúJå9ªä$\UÃ@¥ˆ…^õÁ_5צ0m Ì¡–;•‚‚P±bR%J”RRR+U†¯\9‰ JTªTÞ*j%u4êϤ=JDG']•*Iôô2T§fOÕª•¬NÌ6ds\½Hõ³ûI[Ûóû8ÛtrÎ,,ì³mÔrnn(ì⦼Pد_tìS^Ê»Ñ~/£RñýõÁ…¿}¸>nµ>ñ©}æ3ùÜçºûÂ~õ¥/õð•¯üæk_ëéßøÝ·¾ÕËw¾ó‡ï}¯·üàOõÖ~ì»®¦ôëõ¶y½Á_?àÝþr³þ nÚý¬ÄÚÒتÁÒÿAü:2¥¢peWG¦R•¹…[{ž#Ó˜ŸE…ß{±#u,ÉÒºï]ß÷šÎI9­8Üé9¯doç炆\xòÿäà“›J«ÒåZ§]¥´O÷Ò=»Çqk¶‚Üs·ÞÛËœôÖ[Oµj5ê£^úê«ØýÜÚÞ`nyøÕó#å³ê+#¼úêeÏ…)–ºóЙIb¾ð\P=éŽåxÙÓN8á9'ô‚SNyÞé<ªôU?vó=A}2rÕUŸ>«½=óJµ×^[ÑNøUöøm»×omZïtåwøWEFyûªUO{‹˜Ä'¤¤> #ó9¹((¼DIé]**/vµÍR]c—„·Ö,våªê‡»ÞfÃÝ@©Ú¸šV]ºÙf“Ÿ‡Õ^¶×¡Ã2:-Ö¥ËRݺÍÓ£×núô›oÀ€U>ùl¡/¾ÚË A+ r€oYÜÅ[ËÖjÛLK——Çø2Ñ2–~.VÞÃ¥u™Ñ¬¡Ý"$‘…M¢ý‚jéßoú1åhÈh™*Ù`:3…¢Ù,V¬ë%GdÙ²?­Xql¯Íðk¢}VÇÑÑeÄ›TÖgKñ.[×®Yd¯Cžgä¸åN0ñ:S¿9Êï.ûе«Îò—ë~cïŽKÜsOýy’Õyd'žXëi8¥ÝÂ9Ü’›¸o˜ ¹=YÆ‹·½ùðu?þ. Ð5‚»Gˆh ÅDBòq¸Æ ¡a{gçøòÍQ À|… ÍS¤È%JÌ& °‹Ò°Õò¡øˆ2åR¡Âcýñ¸ù!`Û| •OôŠL;W•*§·Ø°ý¯Aò°)©ÈÉíKAáHʨ6ÃUM­÷»®ŽšÚÑêÕ;^CšËNÕ¦Í)Úµ;SG:‹¿èÒí§îµ½ÀÛgÚ±úõ;ÑÀsYvýúÊ ‹ ro¾¹ÙpFŠ|7j1cþëñ:~2§¾&ÎìiÇ`ÆŒûÍšõ 9sî3oÞS²¸™³–|¶D0|ÌÍσvøa•ñsåû°Gñ¯äÿ­SæòõÍéÿ$*†ŽmÅ’U‡ik£Žž¾ûæŸ\sûÄŽó=0ØÚ5ož25\£øÆY”R/3Øú5_=þ=ëµ)½ÍPõJñ›ò Õ«2K%55Mk}D]Á½õ¶Ë¶Á žQ͸ÅÄÌÌ Û7}¶@³nµüÚL{Ó€aç«Oñ.½‡,4^,³ØÁáÒÙÙE oÛ‘aï«Qˆ—6_0¹X¬Ù×iZ2wøu›†äá¡Æã9òòññAóós`!((³CíÚ„…õ½³EEu‰‰1‰‹ë”ÔÏ,“bÑ¡|…‘Œ"zÌfuã™( zÒ ÇÕ¦Ö›6m­3VÛnEÏÚ˜Ó§Nö]ÖjxÝÕ>m÷Açšk£yæË²0ME¤¥ùb+byVqVeucMÖ‰½.°>ŠäÞèæ¥¯mº%ßk›7ækK~*RûgÛ×/Ö¯eYÿf³)¿ûÝDøÃ úËbÛª£·Ù“h?4ȯ@ÈÍ]/è·‚‰àæ/„7^ˆ†÷_!~®¥è¥f9Ô¬¡ò+dNrr& q”TŠ©©¹hh˜ii¹;Ì Äáǯˆx.Ä‹‰ÔQWD?×NЉá{Û˜Å#V,‹8qZïø}ŒŒÄ‹7Ø&O¯ÙœŽ·ÅQ"VV=m³‘üÚM[Ý7Y_¼ó”bºta¿b³PHH`IIeu·²o9•è]}CF†LN   leާPQ™¡¦6GCc-­=ttèéíjƒ#9FF2&&Ì̈,±•76¶4ä(FÜ¸ãƒØÙM#ö#ã(F7åø(tØÒKÎ¸Š±¸øJù*¿‚9ýgWvã{¿›þB› ·É¶(>=˜XGá•/NI  Ь¨¨Í qh&<2iÒ S¦<5mÚ3f<ïíne°#fÛïñ{âçG¶*þ?×tÍG=yrѳgŸ{ñbÛ«W½ys×»ww|ø`>}ºäË—/|ûvÏüúõ™?‚Çs]KKÇ0öø|ë …\$òwˆÅÔ‰‡úr-ý˜É'SvM.WF-%“i)H*•ˆF§f0^:fJd,¶\W6¯P ”/±‹Å …T*T&ÃíÜCØu‡ås×[dêë3 )¨††ÌF1N}ï‰kSSú_‹ ¥Òxs+.Pim-ÆÆÆ[Wb]ÇmÖÍîâõ˜ þÿYÜ<¦­†ó϶V7Á@ › 0Ø- u ‡»Ã΄@¸‹Dsp¸‡B Ñîc0°X89A]DËrÙ¶)Ç×¥p‘ŠÈ5ƨ9w])ÝPJ¹ ûKD„‡¨¨¿ÅÄxŠ‹ûGB‚—¤¤¥¤¬”–öŸ~ý 22þ—••“óX^ž÷)(‹5CY³{ØÇíï’Z0g½f}±Ö§$ý¶5YÀZá@¯A 0Ø õ †‡û@F"½E¡PÐhï0T,Ö8ï=€N$ú@"aÉ>R(˜TªO4î›Éô™ÅÂao'¤ÜW…÷²YFIEõ(Ôü¯‰¦Aòüo^ͨE‹—ZµêÔ¦Í+íÚ™tèðšˆH—NÞèÒÅLLì- ‰nRRïtëÖ£GŸ÷ddzÉÉ}¢ ÐGIé3•~jj_hh ÐÒúJGgžÞ7Cm4²Åü7­Õ033K#¬¬¬ØØŒ¬@c 0Ø8 5ƒ±ƒÃM²³[@˜B"88L£PÀh´ †=k–““—U8GnnßñðpÂã­æååÌÇgŽŸŸ‹€€5‚‚\…„¬%¸ ›á.±úÄÕa„“T¶^JЧ´´ úõó’‘±QVÖJ99›äåAl6`´‹>J7h‚·I“¶˜2%Ø´i[]„Ð1è$㨲}Œaz½ösŽ%„>Ÿ Í†B„Ápàh)‡Qåçf]8çÒáÕá€wD5u“HøäPrýø£ª’I£©¤Óe1ª˜LãX,Õl¶lG —+‡ÇSÛ¾ ;¬.˜ìp­zD"B±X¯D"v:ƒ…¥ÛYY²˜à*RªX1S%JH˜) ¦²ˆ$JU¹‚˜\ÀÇ­êBׯr•fÍj´êTkÚ¬F?2WÌìù:M½^°[ÿ]4Íý]2æ–—.iøwv6£CÕÌôsãaöÁ)/ÊÃ-Oó²‹~UÇ„¼ŽSÍÙ»°Ï7ÄzÂh{_"7ýüá°-ƘKwb‰µÊëll^cOJ±TifwÈaõ߯/2R(üs„ò•ûÒÍ<ãì|‡õI¥/ùR~«ï’{ˆYåmˆ¡“XûLJßË!-ëÿ›ððÍE¼7«(º)ß-'SîÛ X…Ä»«7$Ø–oüÄ@\V¯‘‚"½8n&Z5ªù¤&'0JDUÌÿ»ˆ'‘o$yšùZFrU&eyµ¥¢÷ ê÷úWEJ`A²=Éý|q/F·òIx°•}½~ûêþ—Åݶ¯nLá§0󗮌K9âC¥5ðØr™P:³–ÙÃX³^”ƒÚc¾|/3r’[ìÙraâ8ôA)BÓJ-Pøâf’X‡—;ƒUýDsKS¼2õþÊJؤ<ä_Ô?×öHRX‚D”p‡¡EzBʰŸbE-á7ÄÅÒ¯´ «Quhµ?oÒûmÑUáWýíÍHXî༼ EÈø[ž¢ß]gë,H~+¢1…æ ñ…XKËgºȃëD‚Ë€BŽ€[ œ‘B¿¹â]óòù¹¿He$¾RįÖz¹ÈYJ²‘HPEæ[›vر˜Ž.¦”Ö<[‘ª²)/D§0䎅©Ü#] /«FÍOž–ÿÏ##DêZ×Q¾'–E ÁÞ[´Tµ„sr[+pK LÜ¥½h˜Ûx°b *sÎ õ’7+¬Ì¢n9$hlI±0š9OÓ枇BŸS[Úä¡-½ï±%æ‚›'V¦pS¢ð6†=@S3‰qž;ަeè°cµb-‹šªDÖ9ÄŸb™¤H9—ðKìáF#Cœ‚[™6Éhm”J])CŸ8÷xH©£+„Õø:°QT¥L#ªy2 ùþ®ýÚ·ÚJ§ÝùðT1äÚÖrƒÌ¥@f&&6H«@«Là–[±òÄÈ ÿÔT3é@óQ„)_˜1Æšw9AÂ&¡Œ g­¹LàŠÐ)— ËD!Ü.nÅìàp`¡£¡ ±]¢/3äÎëõ),dw2c H±:P‹ñþå[/d%"Ø%É+w±LT3£†9MXPË’¦¬hÆÍÙ¥{¯ÀâÿTöu`_oæ Oe¹›”ÇüLéýOfíýþÆ–ÈpÇy#(?½FÞÁY1tTO ÔH­© µ¥vÔžJ‡ì+ÐæŒ%W¥uF¿d1¡œ ë•̪3–ÜS>¨ùõÚãC gÀ~•UûÜQ,Å>¹1¯‚B®®Q†•ʾ6å­pŽ#{zß÷É{dàF»ôANKÓÜÜ žêÊ6¯Æ»`†ú1òÚ¤†~ØJšä‘?ؼ߬KEZ°põ"“ÕÊ…ØÊ’ûþyuÁ“=TZ·:št ´rw‘—>àP]ma7£’Cy-pé(¼ŠD›áoÄK’rb jA§õ;ƒRmoí±ÐëKe éúDŒ¦òI¡¯áríä r±ZNÛ™ViA×2$}+Yg{…–Ót³6Hy&QâÚ¯ªÔóY[,ëùl瑎É É éFcCš7¹åˆÔ‹9krË4i¦+O®ÁkQ4iØ– ¬óæêÇÙ7üR¯Å8oK3”×Îà»·9m²VüZ]¾(³¢ìYù¸ÐQ,„;/%>x÷þó;é\œÜó ^¶¨eÎGÇüÕ+ڎꉥMÉã9KË׿÷³{ª3þý†#×øÌÏNòà‡À‹‡¥nÊØc†KÅ[ ˜ãÌÕG†|êÄûu0£ǽÇÛ”ó*ñ+#úQeb‡,Ñ¿'cH0bÏoòªÒòÒÖB§õÉ&fK|i~útT[s‚±#`¦ÙEç$(8¿3Õo’Ïs_ ¢ÒÙxDþeD<ÝÉW·®bÊ©}Î/çkÌh:gMÉ7H€šø¤Ç·y¿<­‹7_foŽcåËn]œüÿS#¤/¬.ÄiXÒ“dl ’³ºŒ‘¦üJeš #’:’É.¢¡+ˆq =B·DKÅ =ÿ7 Šù:¦¯´‡‰ŸœÍ\Æœ>_f ZØ´OÅ¢Uwø…3~ÑZ0|pNÈ (.âuyé’_ºì—®ø¥« ˆ:,¯ÜíWîñ+÷ú•ûÐ/ ÷ŸBoý ÿg;À(ÔV¡CËZi“ßîÖàû‰¹^_YŽhx}sæîÃí÷ž›ûéãŸWòb¨ÏÊéDóÞšrívXe•x¤íõ±ãmì6Ÿùž%AýIÆ d›;ÕÖ¸[mÙjOü¨™-Ow_Bña:Ü©$}ºAÛnd!Õ(¬Bù1¯h@Â4 Z'ŠÀu¥ï‡ï:Ëçéð:×?Eý ½"œÖ—‡zO1Ô·¿íLÚçhz^õŒ*Šæ±Þ±—fqxÐ*{*…uD¹åÃm`´ùÆxß{âeBÕ,x:ܳ]ÓÆA—† ¦Î"Öh½þR½‹*ÇhŸ”1vÅÓ@‡¡;y¬è`ƒ•¡‡j_AœÒ–h Í0ȵ¾ ÎÉ B Z{×9¢KÛ\„‡[2feò-ãxÒ- v<ä¤âÊÜbk澜#w¸¹òõ1 $ ƒdÉLeØÍx¶c“gMÅ»^„±Ðªí‰ É$¦y28×!¨ Ú…øÊjJk™V*'‡j®¼caûüOè™H< 2¯,„KŠÖnuëÂv0˜wˆÇ§¥E Âà׺|j97²tJ8ñ½`4s‚täȯÇb°OPó)ªø|ßûSã -ãÚr(%ÎöjS‰æƒ¦°SqTÓ±æòn:¡’ÂCüã´Mm» 0ÃlH³È[R—‰ÎÒ _œö÷5å]W>j-a³°;í\§¾…Ö«|môº5@®%XŽK§#"‡ì/ý]Aš—Y×TÖyˆgZ¶éƒòÕ(Ê”û¥Ð>9¹h‘–Leñ¡ês E4‹` $Ì/´ÆŠ 2iJ)4ÆÉNèÌü‘XÅš¡Ré£èþ7-Ò>È™«ˆ“¡  _Áë\Wn#u̳Š jìôÐrvŠÎXe"o2F´Óc¦ÕGKùPZŽƒžbW•â4ìAô'άŒÕ°ö§ÖÔÔ5¸¸ŒŸB·>“àŒq! ´å’ÄÈ@—¯^Ë28©^&L|kuæèʨƒâx쬵5‘êÔ~­æ7ð­×ú$\Uên#M7‡fµ_òQÔî`Œ… fbMÆ—†ŒùY›–Õ«_±¦ÔfÍ%ò¦é,·ŽN†ÞÓÍÏÔnõv‡2öó0á’~IaPÊÖ±5á>±Òº¨÷-ñ¦é½‡}_¹c0]t¶=é¨ù2a§,8MÇ Ñ·üdÃê¶IÆ «,·àëûœŠCþýn¤£Ö ³À÷„@n|¶fž½›=£‰ô‚Ÿ¼1¥È`æ”…Ju¤A!w®Ý1L¬ £M’Ë:Ï."­Ñ#ùä⽋áˆÁL4eÐzXCKô™bÝõVkk/€úúºq€Öä¬ëodK d/_¾h{I¸wHnrwÙEšk(Dzd»j  ‡K¸Û bÑÖ5¿G!&X¥¥Ly"âºé¯r®/¸_£×:\Oå—mDéš.jušÇéNÌ´H%- ¥ˆªé]ŸP€!C_i ÔCbd_Ãq6{˜U-Y§Kt]„'ŸyˆZ%Ø"¼¾ 7C"´pÅ3˜‰ˆŒ1"Æ dcHkŠÕ’?:Žj¸rÜ:8šïA+ó»RT1“CÀ©3^hÐ!cš.[”JÎ'p”h¦Ý´;î¶Ýßþjíµîû€aÈm[…/«âsñÛÐGÿÔ+wÓgßD®%ø¡òþpHé˯Š"Ʀv.Xâ¸}†Oñò „2(Îm?ÄM“{á³-,KÓu¿®~Ì™‡½1ûý0TdoîqÛN÷÷Ó͇}ÛÜžWS²1åhß BÔR †MÁÏó1h éZMÖ¦„)!¥€Š4Ô!ü—fÆDˆÔ‡¨Ü‹|ÝÄfÒeÒ f9m•QØãí–¹{Þ¹ ðÜ¿f»•qœñ²Í3ô²ùRî·Áë-®k}©ªi[æi+ EjcGëÀB=¿þrÐAÙ–ôNqéÛÉõ•½_ҳÂíÒ¸/‰^ ¢ÝìhWØÕ"˜ÝAÊ—»ïÆ”qI"Ѭ‰:ä­8ºZúj·7£Üäv<Ù³;,õ?¯ô­iò«›z| ¦hËe=½U‡º‰ZǸÅCYRÈWÓyšl×e}˜Âq®3W›RšJ–X=€ÒFuvÓ4¸Ý§îîvæ_åKûÅ‹ìœc>¾§¡ª/ëà\Óh­5Ñn·£tB£˜Y)ÎÆEÎ §©aôbuË2;àF( Ÿª½Ç„WèyQXBãIr#°†“®÷ŽM  Òˆv‰âW3°Ü WÓh…ò×ïÕª„äÝèëyr„z]€ÎûäÚW¿µíŠ#¨Šþªßðæ>^ÅåÍ¿<ýùivHø*æ½ÖINöŒ“»¼»cýq<ûã·oóÐ>ìÍ}¸“þâ‹‹F¼ß¶Û亃±µyr ˆÖWêqšçJUZ}ô‡¬çrïMÛÉ­~v–`)ë×3D6 ŠtR¸~)¼auÿÞU÷ÛT£Úµ©Ö’ˆRÜÒ P˜”Ö'µfïFŒ¶Ñýt£gߎ·ËH¯Ð ¹æÝnóÝÉÍO¬zVYÓ7£bm…‰/†Ü­§â›JqnmÇjÙõušâþ±ZæÞvŸ \ ºd„íu°Öûíl<ì¡/þ[WÉè[9jiš/_. ÷‹¢åÆæœmSü2VU™×Ú´ÆFH+•@Ì$m;Ÿ´Ž2Ê*{ܷ楑FŠÛÞ®•K‹[œš«Þ´Ë%EÍzzïï[ˆ7öT‰Ø7×P‰³¾}½ …xÍÉ'üe®Êêøº´˜ë§v™®ÿfvûnÇqcÔZ“¿»‡,vÍ!}¶:}ÏûËh×ÅùÇÔu²Ù m-užl>œµZ==Θë­wa†R@ns²tÖº?÷m{¬*­*[…¢ Ôã&¦|²×š— þ¤ŽÝ öiXT‰#þy˜PãÅ¿½±5·Û¡8„ÎT(˜w»ÝUÙÀ²ØÁí.ŒÜÏùÄmnq¯®Ñuüüûg÷<á¾^dWÙh÷f¾ Û·(›äªq_xùÜÊ÷òÊm'û=Äñ’)?›ßÍnŒÉ>_í2m”Ïö‚ú7Ùãò£<~p÷øRf´OŽþÉI|þ|W >O9JÌ´š{åÑ^)|\ËÁ!ê…pøõŒÕRZ˜6 t×BŒ×ú–ÐRh¢ˆ&Uš®çÁ"]Âff~ÈS§©þ‡ ÚçÎÔmrˆs}(€‹²-I¿îŠ}š»ÃÏ ¼ä¾[å8,<`j®Xk?±¥}i\ >šuº–Öù&¡ÆŠ{»)l“˜YÝ5ÖÅm½;-´­.„ƒiËφ¡2žÒ*5Ë—ßázÕñûø>ŠæE(·Éª"ÃKdž¾c¨W±gÆš gXó øµÀDfîÇzŸVî¡IÑLö™;¢ðàäü ©†\+÷|tÿt¸ù/½8ƒ”…h ôõb í”–C·ä~¤­ˆºÕWH$ç…oYB<)ûR>äv¦Wƒ>þˆ}ºƒâ1iô0ƒXFÿSm{“l‚ëÜX Óþ^7j©æ…sÙ:ÒB°À.®O2ëâ$€qyÙ½Û|ï "S¤˜EïÖÁn,rÛAñ¶o™ É ¦Ôñ‹§ëf`J,þÔˆ 8ã¤.I-(ca$¡Á£»Á wÌ0;ÂÉ£«|…([zG4Ïr¿Î€éÓn.ñ_|ݶ"ÙâIêi¤EÚ®¶À«Å3h,õÑ©ÿú=ò‹7Æ1Ï€“î ñn¤Ö­£q*®¥!{ãX¯øè3Æ|ÏìJÔiõ 컘vF´a?c‚ø¦ñ¦êsoNb·5ØCE¡XÇ|0ËŽ¾»T(”±8O›À YÌasa¬Ê,i’§3´(9#ä ?±ØžHyÚ¦¼z:tf{?Cz`È“ŠŠi¨BÔÚ‚X D²óbIIPÆ=`°Í¿ßŸÙý•9мBJ@¶Œ`™0犬ÈÓ9Àîâ­d(ËK}@TBæeäY³™f’ Iðx3Ÿ€8þ§«&èiV4eC¸†o[Ž“F6HMêöY‚l;E¸¸Ék°ÁºM·åoèHN _ÊêI*1±Z­n®ÙÆÉ!Øph—64 +×^ÀçÜ‚Õwm6!g—o“ø¾| Il‚°sÎsÞNNê …ð *<ÌEú戊\µËm—üX†÷;PÍ­ÚStÖ“TË<ר¼ïÔð&ü)…ü+4‰F¬š'¯1†W!#<äqêú †ÅímÓ(> ɰŒ°S)”Ð"ùkA£xMÐxÓƒ äò¿ƒpR’µ5Î¥ªw‹||ZîR%Å“¢Sú­^átzPÚ5 ód—pèHþÔ‚ ‚ÑÑ‹ÓÔˆYFdQ#þ‰Ê‚ Æu˜ÛúQU6F'j%A®ËA ‹VXjᡘÊq4,áNn6_éxÊ›¹|£ëÐûÇŒÔÚþ}„¿Æ–ÓbêÝQÅô>6æÏ»õ!Pú5ü‡á"éùHòÁ“I„UçGÙGCG@P 3ª®Ñ«æÑ@ÅpKÿYß¶ ¥³VçÚcÁcÜ1ÔyhÍ]´de5%¹Æ_QÝ[…p¯Þ›dùV‹“+Á—h’&Hnš°tDÕálöx8°ŠkþbÝúD|9é×ÉûtÆžÇ;ÄV1#ï2ÅA­IñºÌuÑ:Ñà4‡„Q; 4ñŒ^Ü#hQn$Æ"³Ì—oÔÌð¼ÙU%­4÷Ùù…ä¼ÐÁG'!çYú;Ž3Kr=¿)Šd©Ö7²|úžr›$dé ¿ÎÛ¾ýE­#BVâ¨VǤ¿õ]‹šèÂ*o„Ó/“tBýãJJP%5²7—^};›lzf¢LLÞ{‰%_ѾÔì¥îüt?jïJ™ú®=š Ý6‘—ÓaÕü4·¨m-o+CUï, ÿ2µå"Ê‹}ºÂÙ¦“«|e ‘ÎI¸ŽeûEÄÞ›{vO¼Ñ}`Ï”£HÇ­EöÓ{c µi6ñ=ч&MñÕ¸Ó8€»!=  ñ—ÉgržÝ&Ë “TXñ>;˜5~Y lé¡’äp²#|Ë7é=+¤(ñÑŠ…qŠÀÄH-¤AÒbЦ¹EY;ë9‘@¸ƒå 7ÔiÏÒÈ=¶ýo†¿Ü§#,Â^X¦­?L¥§ºsG»¡ë)÷ –*I×!×pƒË Pê¹@“ícS~‰~ÝÇfÿêCÓËWd)Zº.u¶™½1YÉyK¬p ýP’a˜z…"^žŠô1i7Æ÷´A|ÆwõÊÞ–«Ì!á¡Iü®§¸ô#d±Oꢚ ÷÷¤ðI O2lv¼$žúåÝïÚ6ÏÐfÙk.5µ¨ÿî}¡o„´ôÍõ?Ïê“,¼rûyOЮñax®íKóê tÂŽ™J‹ýý' ÚYù´¥ÖœÃ)÷d,ëó-ý*ó<¼Ä¹vJ‘W¸'å j«¾R|É`Þùͼ¢_ËËš¤%¹É•Õy´/2¡â\ÃZ¤9ØŸÄÀ`3/JuDõB§°íúK(Æš`£Y¬öF^ýô(¨Ü¦þEØ“t±Xrˆ³®¢¬Å•˜xýíôòM&!÷0v0¸î°ßâȰv½GÀG^wÖ>5á’a¦¼î[7©rÒ.ßaä;=£MìK2h|©ª0ý'@éÛ–… eÏèŸˆÜØRaŸ"õÖ…‘8`Ø ·—ýÕEøgç(Þ0ÀÖ/Û¼" õíêWÃbbçN¦ÌìVªÅn)}×8»¥Rù°¥9#ºÄög±†»É©ÛÜæÚž êzÂ7«®n\¹£S êB·‰‰Z&®oy˜G¥O¡ã £¹,U@{ ùÞW’±ÕO. &8‡âù(Θ[¾ÇR Vá×Ô²ˆŽ§Š6Vêh¯éN¢Ä ß—ðýão öéë÷ Ðþäúmý•#:Ûú ¾³]Û`ÓŽq8ìz@ð.ù!gôš48-‹h0[2£¤¯F<™ç #‰4óYK`‘}6Òì_UZjº£Å5œìì¥÷MÎå”È›w®ÎT,…øoöc ¬¢r @hÞm­ò²½j±jÞÜàúŠe:¤û –Gs+ªúC‰ÜÜ#P3º=Y#¦=øêg 7 Cìš¼wìúLŸÁ·æß&¾óJ.æk¦àm¡&Þl;|šwjX)œm¶ˆô{Þ€0J$gêš÷ÍmXîâÌÙ‹ †%UZí€C~ÌáÅRgÅ@Ø`fúu‚¤Œ†¤ä½É4ºŠîΤ’rýn °¼êWH¡[½º¨¿¶ÏÄã {ÍâL$©çŒÒé+—SPT@58¥igЉ‹x&™ˆHV{P =»–q$*ìçþðJ=HÍ_ÍYù‘{Ùå Å-Î0E–ú1>Q¶¶cÂÎõŒ × ¸®$"}ä³äñ-øÆtÄàcªó,”+mÌÎGŸ ÀK>Š¢! þ‚h"¯3ï1T‹sÍDÔÈ"@´»”[,3‰ŸÁÌû ¡ö˜ÕÇcËïûß.¯â²,O½÷Møâ”8H’Õ!à‰;5ÜJû]>*‘çHØy9J<¦l-¥ÊÅ’-v{¹ÖÞÅ#Å.€¦Ñ#²J ,Gè~:Þ*öNñnžÓÅô·Fz±To÷gÕÿ ¬JB¢ž…X¹Ý´¹¿5Ð)È»QFŠÛn£32ÃR›–çUäÖPìþ¡>íÇA-8ŸøYÇ­O„{Lý̵éÕ¡ iy]:ˆTÆ»E›B­‘6Á t­MF$,“¥Nº)À–ß ¼BV¾*l¹ÜúÓ™ 6°¤Û4Úu–ÚíxY͉ƒ<Ø0ù‰k½‡È“¸€d-LÈ•ïVu´= ÛºŽ9#ªP¹ NþÕ…ðvÏÍ"Ýu]ì%X¥ k 2Ÿý™[e÷Œ|• Á´Œ!=¢@°P¼ Û,‘Tヶ»™Áæ{ˆá´$Á7Adº æ¯/áö%W~§ä0ìOÓ54ß’™lÌRs  ÷Væ±%>þ~Ò*NQ SluŸ/)¤µÎÂ…²|vºu8„¾²+•Ai}ãnû3Î)Ô•Xvnpú–&½c$+žý$ù}\[‡÷„ƒÀò"ŠHÆ xT¡cõƒ -¹®© ˆ¬ÏÈ*Nlâ–íÿÿGË`Í/•ºÃÈ«ÿGJáï:{jdv®£‚y,'û|ŸÅÇByy < öÈk€TuÀÖÝê:1± !–Ò»¡_½½{‘sú©YÉ|ó%]W!1ZäÞÕÓî=^Ç7=ª=õÛ'‹aÊñ׬¯ëÿÞóšèÍóÅ;":år†ÿ)‹gž^ÒD'dr¡ë''oj^²Â? xCÏvÓ¨×h!Ôž”Âz®¼&‹ îþDнxŽ÷ù–{æWµ- “¢‹_êé÷–*&N×n_‡áô’ Xœ†bQ„SB+ÿlÕ±G‰ùHœ‡ø?ËÒ'*ãVoMU]«ðå…IØ–¾LÉ¿ 7 ³ÚÃ.ir&R!¡›Ñ5… ¬¥ž[DÁ!÷¨$«°[‚ðÄ%/.™£Ã;›‘J¿~ÓÒØÏfüWõ,jµTO‚ǃçÁ5âÈÉ)>Ü<Î̓äÑ–%œ9ûÆàÇPz°SðÅ1iî«ÇþxäS¯ÿærht »yÐEŒ‹Ø}Š>Ò‘kRS4bnìtÎ3h°TÛûéþ¨³°òsJËÕi:»²„ËÉ#[dÀ­ Æ.»ùƒšÙJ•Y8q4ÖjÀóÖ•ú´™E >Ô&‘K¢v ¬š¼j­ÆÞ«Üéa\äì¯âò¬@ž=9‰Ëç¿P6î³ ¤¡Ar–ªS<aQý'&ïÚ5…qá-¦œ~ÎC©þ½8®JW5ëâJË?újf‘ÿ^kUÕ }²\¥êFF®^†ÐÿIôònåY˜#ÏÐøË îS@øgc%R':pôV@º© ¤ˆ°ùä7K>oDüšTm(¼ZShÇ´eŠ/±…F² þ1( Ù©©‹{(&P²4ÔW*Z}´Ñi¥–Ðö`ã¦D#¹ ™ôn'·„õU•’}Ñki‚/ØJf+9Ÿ JÉ'„PŸê'-¨¯Vƒ¬ØªAcðÅúJuÓK ¶Åâ°ŠÁF«?SöÍY(Fl”ŸkõÌwux Nó(ŽôTFwË‹ƒU®za #eÏùò À_l¿C±iCZO3wP¸wê‘MÓ¨xÀâ—å †?@òˆ!(Á®"‹×ð”á ¶§i’ê'×!L²xŽw‡Â¬S1È<ËÞ$ ›Ì€/{ûq0èwµ‘E†\!{¨I”›ïg#@¸þå´\Ë+WÔFªSò±&^²½¿!,Îz!Í#’ƒÙ‰-ÛÍ79§ W—Û"#ù.Ç=ªfÏIŒ+ëökFÅŠy™[Zf‚Òr2°šï7„›‡]’ÔâC¿åö:Ñ‘ÌB4²º„=ùa-Âû…µ ’8·½/ïw95¯¡Ô—«ÿë0… BãvÖ¯´&ØV6yV3'iŠýX2¸êAãw- 7ô½`9„FK¿áA0sTBH:—p^_ï#Œ‚ÙÏéêÈ€L㊠§FMµ Aëg”p4[cÒ•¾üXÑÍÜp”€®†.‚b•ÊähÁdmn§——†9É7_Z€§ þ3²Hêb=œföW*·‰N&Ã×X™Ðè[Ž_密žÞÏrxâ³FXßw‘€îþù=‹yÊÚÕ  (¼,uFÕ¨t V ë üB¯Á`æ`w×O¹ æ¿á)¨Â9KíáðAb+»© žÖ'Lµž(Ï1Á7!¯ð, c¾IïWkHUeêœ(ëO-Ïd¤ÏRPpS:Ѩ>š²fˆ)‡^|Vyug3ƒ!›`ÿ-¤ÎÈK”ËJjdx¡¿&4luRE±’6'úööVz{\&ÑóIÑZýJ<]|i>ö¥µ-Ü|—Ô4nˆ.~ä˜R™„tZç—Ož(n[ŽÜqä/…™‰û$æXq\õ3 Ç—Ò3¥Íùtù¨áÇäy°c4ánA4ÎTQ :G÷­ãº`w©@ KYl; Ñ9:¶Ow¤R¦Uqüä5Ëî €ª©Q J¹d{æ1ð; §P ˜`%â÷ÑžäFH³:IÀÑP™Y–ârÔ²Eîö!Ÿ#L½ Õ`·î^4“-Ï©ª¨ChSÃÿûØR»šj4ÅfÝxTìŽEº·[vÉùˆV°B_þì^m~ £= ƒúŸ“)[,¾âŠXï¤g¤¯½îʨAÚgDÓf¹„5èb¨ÈN¨W„-jt¬±þs¼›ÃÎ5^c…g–-° ka Ã:58íå‹F…©V7ä@cˆ|ö¼äU{¦ìŠ;Åk5~\U``ÆÄ]LµF([¾½(í;tÓÓ\ëíÞÖU«Ã])KúæœÇµXjîpRàØÒ¥ýóV5Ü }åyTT$­œ‰®&{ú(R‘©ˆe÷3¸ýÎ"V<-‰yB'\¶;çÜvDûc›ŸPÂqgËàTAœ(O>ÓàSõgøÓNéªù]ylüjÇuptå¬.®»ÔÎô¶BýO͵ãmjLî9–;R‰|z’QÙ‘ß*T:6S¾¤¢Z&ñk7”e¬*jîOah€^½&ŸI¹å1#†ø»LIIKñi›Ø#ºÌSwn5Ñž¨‹6t²Öõu9…ž“zXŸ‹TÿLa"§Q²\ÉP»ù…xüÎë»J€NÎÅD(ŽÒHbŽà/û‹Š4†4Ê¡l;6/nù[çô2•EEÚ@Íœ%ùxŠ)ŽBüeÈ.÷þã‹<õ6 ηR–É Ì@ë #©jx¡õøÏçÇ Ñ (ã(ÔÆÎF¦×x° ˜‚+š‹p J©™ÒÑŽ¡ Í9A¼[æ(Ö±N//¶ré ecÝ)MGÇboÉNnbO©ccBøàZ:Ý%#”øêÓÀvÚ}¶}•“)FúÊ­š‰áÝ(©è.óÄ„jÄ£–\\¯Í€¨’Á qdðŠ1Š+u§‘jéR*¿7ÏWw,qrô3kQ 9Jxgã¿f¹~_¥ÉèŠèõvÕœº‡‹VœÏÛa^ôr9Ò0Û±š;¦–­¸€¨§ÂtnÁz ~Õ|›RnY_\H>Éyã`ýÝÀ””ÂÍwÏV”·» e³ã(ò_ÅvÅÒ¹£îú}¯*šR0ß_„ÿ7XÜ:ܶ…6®ºöê0õÓg=ºÎ A³N­àóA¾¹a ò¸ŽÙЕa–®luu*RÊô?§KÜ^?&×ÍGéËñ~Dßë(a1ÀÅöñS(Â_Y*ñŸŽúÈUYOõÙyPPèØôwD^ýÉÊ÷[Xlî‚*§mÇÊë [ö3-s¢Á€!´WÑè ¼ê†àÏ6ØÚ‹»_6– olFvƙޘ±mø“>š«iµÛ6HÞ]ѕ‰ñÍVâ}†Õ| ~ô¥ŠñMƒØæÃ)´1ðdæü&7CþùãC¤bw00µ³Ýw|óÖÂŽ%|ÓrñýÂéœÞ#.Ü¡•dúÇi@ð¤øndà´7˜àöT¹š"œ  å%?ÈpFYÃò POULÂW ©¢0n™–tª?=ò iú/Ûߨ MéÛi Ä4®'%>oÿжﻎú澄Oœ‘’RÁò=£1ð#Ñ‚aúÅö~å‰Ò­q´2ð¿%}Í,ÌYúºŠ]üŸlƒIê8…~#?? b”útÅÜ#9S»¡UøIJ›3ævm7ö€«‰L uZ(^ H%h©Í Å·Yâääâ¹»™ÙßÇÔ¤‹î½ë¦èмc‡o>ê4™¾wµ«¶¶c‚MË€*uÒÓÂýÖŸ*-Æ$I#,ò¥v̦ù>º’ ા3oaL%ÔÀEɦd.]ˆr‰2”Ò_åÄ…K‰¸´0lˉ ªGÚ&®¿n‘S’ä×;ˆ `w,³»j‰ñåÚŸC¬Ä+×YÈ[5k";RëfÔ‹MÈçGŒÑþXž”Ž.Q‚çù„ùVå9 ;UŒ’;ÂêzKn͸2‹JŸlNNö O¡ž·&3QŠ‹IkÔ¤~LòZžNd$[½î½îš•çñŒ¾ÄÚõóóÀØÊuzÄ_‡m™Dúžþ\‘‡ipxGg?Щkƒ6˜NGë˜ñ¦¶›Vâ?äÙó] ¸yGò–§€U·…,K®¸2A(Ø)¥í“¶ˆyö‰`{Ät*Jâˆf('$ªEW}W¾K±H^Þ‡NWái¾ƒ<ˆƒôa MîÚp˜Ý¦Œ~{±L ¸U½¤¬eä§… FÐ*,%të… H(½ënNº¨n×x¹mð”§núP-²"Ûƒ3ÁyjxwØAе_¥/ìäÄ…ŽÊÊîý¥ÂV&µ³œƒ’u½A)}o]5HsKT<¥¥”•°çà4`(Å<2æ77l·sá½Ä¬f©¶Ž#äE±Ù ÐÌ -Iˆþ¬dºààù}Ûñ~[UÖÑàœelDEÌß·ûúè}Ö͵bIZ>Â÷“P,_"ö“¶VtÅ´XÛ¹æn!‚ÈÔˆì»}ØRš²u&lÇXN‹wó; ×*ØVö(4ÊhÄqµkàæñ½·OB7‰¶Mw’5§ÕÀÜûú‘\Ð^a8飢U´}<°š 7)Ân‹Ã|d«å’Û—Ú÷—NŸ¶o|¡r±ÙžÁ#ÚbC«Ó>²…)8r[¼Ke™é¦ì`EZ÷õøqo侺ÍO!h…7$'ÉÊ"íéÞ3üe\ú*>ÓÒஂ۵ ”ñ¶[FEöhMRÖÂý´Ùq ‘²ò÷#±R³{¦× ´×ó÷pmÍÙ¾l"eŸ˜F³Ö6PÚ$Û¯@ W$[ƒ ÖhÕf™Åµè¡µl¢"ý°«Ì¾fƒ/lä­Â?û›vÊÀIµ¤ ¶*Û]•ëŸú*”{Œ¸ºîÞKc†àྛrбÆYèâV~Ùð‰B.®Àšð“¬ÑOƒö/Öìõå¡ÉúðË®Ç`oXéUÀ€ôÞ“ñ•ÊÏçóéû»\«BÓØÑ‹E£Æ¥-ÜZ¾1GÞâ.+a1è Rm^¸òqFëT]#+}¦²GnLnt>8"G¨õ|ŠüCÖ¾¶z,Ƽ¹‹ ;ÀÒžd¾EŒújsW;bæ"éxEÀû—œH)”Œ5ƒ„ê#£*t#ñrRN1oϽPUË=òÒ¾ú:õj1þ¼{õÄ ù~ñ’GdóÞêÉqlÉêmð¡”¹nS&œ’MJýÈ(UÔœbe¶Y……˜0¯ j\˜è8‡POÓ{Ö¿…EˬåñÙ<¤xÇ}ºq³X­UFƒZÝÑCNH±1¨—s£šTŸH-(iÐ# VBŸó}€¡Ïél IÜLEØ ¹ÚÊuŸ¥ºÐ „§ÒÛèÓ8¯Éò»2ÏV™T*2"•×hí1„÷ˆÀE¹7‚Tb$•hÛØX0ƒ(‰Á=2Æ| Ú¢0ƒ8söæ¬yÅkEOh6a·i©¿hü ôJXœ^›€Žšúólâ¨Ì÷Äÿ%Cbб½žÅYÑNŽŠÂ>BúRPýQ™Gö³?žªúy¶ågøØaû6Z€eѦÒ~=a¬H"ûqª™¯” hí"Þ|l–¿²‹Öbwj¢ÿ(¤ãX÷*{Éï30k~ÍræÃ¥5"`u„N[kh9¬>’Vó¶ßt6Ÿ¾Jªµ¤Ūö¿ç{}íà y$F¢«®:†äדã4ièP fm ҥצ¡µZ~EY´ŸÑþÅ&ƒëÿe*ß Uö»wœM#ÇT-cÑäo’MtËñU~¥áÒhÓÄWMv°lŒøö ½IØ×\ýªuÖí Pãjr~x3ö™ÄߨÔPÝ‹N½âÀhÝ÷¨';GoLS>ãŽM·îSeÖÒŸ‰¥ Žýþ–-(¶ê‰Cî—ÉH /ë ë=€â€Â‚>ªëì4•öZ¿‘Áͽéf¦×Ü>,…ù>ÕtÎl¹žaA‰SË GÑ=Ø ‰ž‚Ÿ‚°ïÎ_àÏ1ý@ŒìD©&ƒIfebÖ–±^JzÈÌW{°\ÒW:¤ò(Wô|%@UÌ‚]@9¿Mj‡i6—o•'AÌ´A¹‚hMºwŒF6>WÑ?"Ü[¯~A…ø 0<¶þW˜â5âéZµ”·T–c¾Rä§^€ e:v¶ÅÉC@±ë–îò•>Ñ:Ü|–ë;x k•-žW2ì¶ú¨8ò•¾Ì¯8šQ.ÒgdhËŽðY7 ò«×ƒEÇ¡ÊÆ«©8y< (¦ ±,¯ñŒ+ñ[1–Tø¸Ý.:^ˆ<}a×Iëxðtl}ƒ‚iR=…ÐŒ×n¬µØµEµò]Ê¡Ò!Ùî¨[â­Q…oÚ8%ÜôÔ‚<*š¾«O¬z©kähœ(sj»Ì5óa±†ÎͩΤ€Ô[·#"O…Ô¼:\m^6ØÔÐMênrê¤ë€&n½óJÊ‹_¥¼>çÛ<æ!2 Ôû˜èøÀà£0Y¬ø]s›©ø(˜‹žG3%ïkÒú¯Â{…ACÇk"È©™x•dã¸êŒ£‚(Keê’eêÿV ñ ldû×´ üç/¤øü)Û@îS¥?¬"¨/À¹€´üDè7ª)Bþ·¸Ý‹ô´Æ•ðøÔŒ›w’.‡>¬·˜-¥ ‡ø1Õg¤Ä³]¹êŠ×Rà±cG@:ÇyæŸè,7í)î(©)ÔmeLM2¯Tz]†¹/O-ƒƒ ’Æ9ÓNê$C±Ìù¢“n«—üZU;Øù L¬ñÜBcVYzîe“'‰7²æ£M1á`Ú¦dÅ [x á²³úŒ¡Å\)Y¥±…E‡>'~-ð`øˆûXÌ)J¬ãRÖæ‚†D„÷”10’…²ß†§žñÝWJju`z#¼c+½¥*ÄÖ_O|±`ýÙïQGz¹È÷‚ o³*.ÀBŽ•;àæWbšÊL¨‡ ðœý‡ F»O/­5ˆ$Ib…S$Xñáa‚ºC«uO÷­F(ÌgJYÒÀ}7ÏúCPõSKRG”Öj'“P‘;;WóÂ0 Ð…ÁÁ– ù¡I{0x¦q뉈óY“A²ëöSiÄ+ä§|(Ö‘'ŽÈlò¡ìæ›·¼(Ñâ)æ-.Åå‚©ròÿõÊ‘NÇDÈ•æLjµpi%ÒmŸ1AK®káf¢@ß–4¥ÿM-ƒVC `—ìžè·vk…qŽùH÷1ldvàÐÂOnß/²yþJmû”¾¯PŠ…"7†Ç)çš· 8ÙôX–qBŽ~›þ\kâ´?l¤Ì¾R©)5-JuG®ñ˜äu%:ŸxöaÄ…êc\ò„çOëQ›É‚tÚÚÎT¶8º¼—|iа2á!Òfɶ„dÚˆ±Ü› EÛÊ=馼ý‚®Å"ŠáÔ­ìûúöö8,[ ¥œ^|ÖGõ8t%ƒÍh,¹aR©ÏáDçÎ…ó¼\Þ“°¿FóÓÊ^ü¸Ñ÷ÑèÿÊÂC˜ÿؽþldc)²\fO’Ñ5OI±á QOÃWJ.Ó”áÍB{¯ä¨ÑÚt,ÓŸI‹, JKùàQiH5Šõ#kr20 Ê4ª®]ÖVÊW†t[s!Ó`‡ŽN 0± ˜..œùœÒ¸ÿ¬ö-*óOyÖ!+0vÅ+‡MR1‹RYos°‚TÖ ¬é䢊Ç3ÞžÙïÕbŒÏŠ1 *¾Â9c¤ÙQ#ifܾ ®¹]Ÿä –,ŠŽ&×vHë;ŒÜ¢š@3€±#×fm*•è#ÈÀrqq!O{]ÅcÑ"VŒ˜ [˜Af3†ö$¢°¿“AD`À…Ÿ``ÛÆŠ;-e;ÔYŽŒßdËÑØepc•Û“PÆ‚#xL!8_Ãô$×x©4ÏÓâ™læ;•9lSí–-תðBYIŒôg_e‚gà¢Ä(H isXéæ}p;FÇk]ŽLYhƒ½ø–¹q_êð÷ײ[o’¾/N¢ ÈÞ¾%œV(J5r<îVí2¾¡K‚rµ“Çôeg¿…5ço,rªKÀã™}ˆ&¸É±Œ7 §f¦Xb1BR ¦«o,w»À‹ÿ ME±x‚?pp’:wK Å|±7þ©‘ ¢™áìÓ Ì¡¾P­@cË%n†,Š45Ú@Ï2>Û¹ŠÍf‡?Uvï«÷„p¬Â]DgZDÅ *ÄsÙ)¼PU…•~HäTdJ­ææ¤å©-ÆÔ uJOÅïqÖâ¨ÄÒ«:vá]ô$yJ¦‹Š×A^aËÆ·¦õeiõ+¹eiŒ\¾ÎÃn08Ô¸ë/1DžÜvØ*Z‘±/{«Ð!Ñe÷[ AÑ~øê)¤°Z‡@dÀSå2ÑDyúç> Q/r¯ohXYXÝÜžˆù JO/¹ãâ‰@õC£Ý­á3Äa¥¤/ÝÂ.„Uk8œ©*7AkNº‘èΆP0ˆ_‹2¼wÑèÒ¶úÆ-;¨Hžš  Xù›‚r°OÞ!¿¹sÌÚ{Ä«6;>—Ù,Ë!å±½™’ꋦ(sØuzïÙ²ŠQ•˜îh5WRÎKÁÈ3™L“Tà «7+”¼Ç*ßQH"†–ýq5Êûœá˜4¼ užöŸ>ÕRCèÁEá±7­·û­zÍ‘%c‡ýzÈÌkɸ/¯¥9Á¸<àìŸÃùˆ)“¼h Z¸{bO÷ÝZ‚^ ÷¬dâ„Ëïš%ˆ¦Z!ëêíÏÉ3¿LòÝå ü'Ç—ÉSÄÞ©a«Xuԃǎ€ào`úê…Ê<’½¨p·ßÓÍÄÌŠ&š9ž«˜¦KF¨}h­æùã|° ¤Õ÷ùeÏÓKeÏÀ¤ÀÃõSÐäÉ”2„ù8~Î1P]… ج-úiÑü€Ì-I& ª«;ËHr­Æ³ÞšÎP ÈV™46ôŒØžÏtk³¶ ãc³óKÔflHýÕ?S|áJ1…I“ö,¨­y6y2?NÔ©ñ€»’[(‹qÊdÇ`¾‘<împXeN.o#D7/þƒ$‘ȾÏ+M‡&tY£—>× '•Q^h#Z¾²·¢@*žýgšENT² "ç8Hö,máYæ\âsK)NŠÖiÙ<á¤?.:AoÅ!FLmá±­ö šÐ<Yª“Q«y*brB»è?)W«!5écq–Äz?d¹Tl«ì¿ÌA©lñ.á‰À¡pÃù$ŠŒñahuj$Æî»Ž¤žñÁW„¶SËtämù)n &' r…Ê–½èS$†Båowß lçY3! &ÈZrÐüÔÒ'‘˲ۢo·Õhtg¹òØ]³~›ñ5iA0“•¡’ص&GÈSI§-ª&+ l2r˜*S.æG†¥„G’µ@„Ú=a„øp)à¿4éÆ „¡@ ä4ÛCÚ)Ðlë`¸L„LÙÍGc(üWä– &³Mÿ— ×¿ŠËð™ü¦¥~D:ÆÓEìpe`ÎCù9ššÔÉ.l¶ÒÈǺYGõK~âk›ê­ÁŒyCÙ÷mk¡Cã›ÜÈx*3ò˜ôIäÔù Eí‡Dê(VŠçÙõV*¼^ƒ P„ܹ ñéƒú˜:¡ñø®)ÑYöÀ:ÖÕ‡Ú!? °dÝO·]°Î«è÷®ŽpÜéКõ5ÕKK…²¶!Û?°¶úúÔñÏ·aêßmÒ¢%0/ 5LyÒ%B«Å A(ËÉ.RlCkM9tdC–·ô¢&?î~å&ò´ÍD£SÞ”³™‘§ð+NÁWO€ð ´ ²F·÷)5žËT!-Ôr«]xÍÜ0O6ÀèyÉXÃÔ¨3B’…ÊË ³!E­1‡½~õ_ºO´¦Po¥Ö2ªíï¼ÊX>µ/…äZù¿˜F[a»¹ .[/+[(Lú[ãÖ‚í>áþ.V¡c„i!xÏ&Â&žáäùª‡˜¹»H¬náM Úòc0ÞÂiÊã˜.#¬2)C@Di.Y>TŒÚäÆªAÍ ~–¥Rý®E ©£^'°®±é° ¯³Ø[÷!Î~P2tö¹\ÆOq³4þÖè6Øätò°ÉóÍeî4Æ#¤æâ¿(¤Øfäì …1 -mSä­7÷tvßÜ8P»ÿ°çF&_ö#DÁ@bÊÖMC‹bòȰ“+o0ÙÈÈ=+Ûa’ød)úŽ„¶u¯§»²{ˆ¢Y´ijo>rêÕF€îsCÁî˜nfeÈ]¬«c !×ÓTÞɉ4dFÃ#ˆö:½ŒÎ…¢æ Ž(ý Wϧ‚H2[+S=Ëh¶.Su£#«L†!µˆ²Q~Óo²¦¿“ †hÛe}<:mêÓ”¿“ñ/56.ÿÂ= iySSÄèëÑLd«:®ÿÆùæ\\êh‹‹r«m"l÷&òv;gÓz  Ü¶–_ÿ;öRÑÁ鼓a£5ÈXG‘.Ôœx‹K±`&$+7€æïðý_úŸõcåZ‚Ðöß_#4B¸wϬÉÈæf|#®ª™«ÑaPvgR—ß O„6ð&‘˜îoRŒŠ*}5šðÓ=$sfS-Càvj Óÿ%EÆZåf7!aÿòCí¹ÆÁUsD;G¥U7•¤Äö¸óà^ ΀câ €·¸[ç;€ ÊNk=aF²@3ˆ93ªªMôDæîXA„³ ²G9oƤù9ÍØEÀÚ8õbÃC-ôò¥? UŸç/­Rðœ&GZýçá8[+ýG•À9•o5“‡a“à™†Rpoþâ<€Þ¢Ù0Â^àb2kÒ±/=1%ȣ܀!ƒÅ% "eá+¤lŸ.åžü¢¼ôm¸=JøeF$r¥,aB)RIú)ˆè¸ä=æüõQ´T4‹6è}Šr»#4·1ÐŒ¯ë0®‚éÝÏD–/fDfF9¥áž;¼{¯–kò†*À”<Âõ—k½ib¬:T?Ŭ˜“”¨BÜNj-ÓÄZgkA¸™»‰hðÖØ´^ÁO€!ã ìÆ,'Ä7‘‰~?w ð¶i?~ñ²ØÎ•‡ËÊé#ßH—¼¾håÚÕEŠ rf² [FT F3·9®¸1­àTSD!üEÎãM6úOyž6¸;ùñUH‹’T§¬&ý©$èÃxÔ <¦›ï•Z¸Óß s匫mØäp»Yî uðŽšHÊFWÛ»§$+˜Q0²¥Ó²B–u$§6MäÅC,æœ2ÿÊÎÄAQØÊ¶×$4ĪìI¢1Ì©‘nãþ^ƒHÑù‰K½ÝÔƒ„ŠQûxd0§Pï6x*s‡IKe×KW(ø æåFßµQ –ð~‚1ÝüÒ=W+göCè‹ò],u®f!Ú 2Z²UñWfI 2s¼‡°­ ¤Zv1ä\H&ÌȘÁ³Á†öIPW„N6F õBEý' ÷a^g`WIt0§q†–ß–F#0Z(‹*ÜuÒ z!µÞ±»óâ@\#Ä©çÇBú Ò¬Ëî°<ÓZ-r°7›é—"^‘ æßÅÚ‹üB-ƒt?©@«·{ÍΉÀ÷O*vvQéF«b—Ëò¹¯îù;YGAÞÅÝÀãnp‚¿¥-Í­•¬¼Tì’AîxYd5Šþƒ†k౟ŸFTd&Q|¡+hœ ±>´Ïý6y™R㥳rÜR†Žl›H q·8aèf3ïW敜†•šsø¬ºv.F³™ÞNœGm>3¢…Ôgøå°Ðh­.m÷j¡jñ=sù w8C…rþ°E›( “îØÖyZfkè:z,æ{z6ND®éļ¬ƒ´ò¼DŸk v‚{®Ñ_¼8æååWíæM¯ƒQªñÛ û­ýÔêF«_©yØ[SÏÁ?ÞEÁ`xù†ä2Ÿ?ÍÛ¸ÏÖ–¨¤ÍÉXÜ妨ÍÚ2ÅÞLï,ë£ä}<¬m^ ]bycžiñsÍñ°œÛ\óŽY]£“VoÝá<Éûó ‹ÚR³½`{f‚´-^g®/V¯€ò6æu¦k]W9Ûû°”VeÛcÐ(&knó3ßõ“gÄ;L"¹°ç½‘&U7Ëæ¹þ^íhes»ƒ¯xëÐbœwIv5X —”'Xˆípuáûlï1sÁ|¬ÚIü<ÍéFs¨2,mœ~Ù”5"]O2N}O/߉ùùþnÞä+·—+6Hƒ†ŒÕN*ž°äŽÓwlÃCì1qnlbÍ¡ECc‡ÀãFÈefq{, *`=d(5(u‰ŒÊ×N/oxƸY”?¹¼Ÿ#Rìý!)JV†(s•Zü8¥}éCÒ½† Ó\'ñï6mhƒN¾ pªAÖÏÆ¦„ÇÝU9Q†$Í‚qoÒTžükÿbôO•gÿì:«àLåÀ-acfMóÝ‹Ò f¹¸½Tüˆ†áÀM’¯D.×·–FË)ÿ‰«%ü£P?ži€ VBKöêF/i´Œ—ã/Ì­ÝtWGuµ »¢ï¿˜pp}¡¦e`/~Ôx¢:œ Èúz-.ÞýÜÝÿß•—<’„›~äI0ªØ4^¦É6"óöXmT¹‡WơƄ£…«ñéæÎ”æÈÈÚå´éõ½cîƒ#ª\ðTg)äµÕr¾ }»Ì%ÿÌ`6}éŠlLŸä a á•ÒŽð׸ºƒ7P30#£Þ¤.†ñÉip†à¾DA‘Õ4÷ñöÛ€s¢y]ž°?™ퟯ¾•S8U »&;ón^V]tîfßЕs2xŠç¹X²êYIã¸ËÆÜ¦Âɧ@"ÉSŠ#­=XíŽí¸Õ,†w¨¯aEÎÁŽ;Ì(EQDD›ZÁ@&Èå{•Cÿt|~IZNKÚ¼G7~baTrZ‹(Mw9ÒœWãïÛAº`Í­ôÀú¸ÛPkÇÉvØ|ª‚Ä8ÑGÆÉ/:Ë·rôÅ{§J¹§9ç9`}©›<£1¢£6«< lö ÷öóYnㄾœ¶zàÉü~„íöÂetÌz|9E祮­_ÙNÍÆØÒ $-Éø`?®Y5nQ‡v…ÌT–ó6å7+Y³¾·g¦ª0Aôy¡©k8Σµ†[5±å£Ä0ƒvÁ /zzËÛŒÓú@}QB¢êES‡ŠQT#vmRœªät[Ö¸á’o΢„ÒÞ)=ë¿¢óðÈýªƒØå¯,®(ÿЮŒ c\q:cÚÇõ“Mg”¨ð£ûÿq™¼¿€±IåÚιêxmsL€am:ó3P¬E¡…=$L}h 8?…Um+W®D½õr‘BY³Y‘¹&0À3üZæZ /$ñº0ÆÞ$W ø~Ög€SKÚ (º$;ÇÄîá¡•ùF\Ш ê’•:7$Š ®öX°•¢Dy;|fê U¡7 ñ&kÉî 1·}¥âCËXbÏ °Hñ”‹?šøu3njÛ´_y>of÷½Bnkˆ&3m£…hÐC ‘? Ÿvc<Ú§ÞÈJ}rþïO uP½Ùº0£ÊiN=Q^¤Ô#Ƙ]é¯P§>,H”\Fw®ð&ÙïAúŸjê:Uñ5T­«¥Ñµkm˜íî?ÐüèW.=—^“õyí|ÿ…6^°°ÞÛ;!bN?iŒÏJ,¬8ìQ¤7á,Ö"ŽeF›X&bý{ÞV:"ºØÂ è’8•r+Zšª—ëòO‹“¯üTÏSŒ%8›XªâcáÎ.ŽfW@J‘Е¡Š¢Q×cÅÃcÖ‹IƘ^æ9*•>ÜJÑ<®äoÊÿdwí}>“þ¬ÿE00<í³Ò ¢ã!à ܋]¨ìȈ=õ”EÛ/^=²w9ðëg¬#í³kw-i—c61[ ¨”Ì}ds|þÕoýñ®Ï6úÜØ’g~;Dn—‚Ÿ+^ÃõâÿÂ.‰ a·à-ÐlÕ„õ¹×„eQ¼²èôÌ?éeNög|ì‚K$“4ߊ7÷=!Tê½ â`ûÿ¹Ç¶‡ùká‹5yxÆWÿOãpJ2%wVº»D$lÆÝ»Õç÷Ou ¤MhѪC®1Ý8>ÃÏòr?{EØåXЕ…bS©ËQzÔÓ·å²ô/ûýS²‰Ïô‹V§ðËÌ’i™Ø‹ótÏæcXGgÑ)•ÞøéÌã Pa*ª­¹ýõ ²Ù«µ£÷Ý_’Vo2þÓ+S³ü!-Ò}2Ÿ}ÔR×+ÄgÌ-—Òì-<åâòˆ ïÑbï¼¥aù 3_ñ«ÄˆCÃÈ:–w^á§w÷ì:u™ä—gúU5½›ðM@Nn4½%_¤̲œ!/Ù¹û‹[§PÑ‘îøÌóÔ_øV%ÊÑb7láx O$Oœ.ù¼*â·IÃË ]íLï¶ ]Ó«\{³¤‹ 1WÊÄØn‰ìçE˜žLoµ²ë´7$XÑQ32Kå§QV£¥Î}.ëþôgûžçŽgÚž"¸ÜçjáûFC7‰cö$æÊ2)¨±DKÏr¼Œ2µô^ ¿Ù†Õ˜¾8ඈê: Ò1 ,J?šFÄÊxÃ’ ÎcaÌÄØXŽ?4ãRÊ?,æÞ²…ŸéWÊ? ¾])åá#»Žî3lHŒêš 5ð$§»0fþ{âNà}»ÄôÕ«üýÃwßð‚ùP¤BØdäà- û&y.%¯Œûä»õâN-ÏšÛúFV( N‰lYáƒA¢›kÚ¤š.¸bÙà3· ­X]˜1ŠíæÈâ€&]“ lÒòµbµòL/4k1,`yáÒZDUVD&¬YÍ#aÖiÊbÅ2EAq¸t’ÚTý';ÁáóôËp¿S5Sæñûoï,úõ¬4„ þM$û¾BëEÂóìˆêËf WøéäW4Ì:¶%¯`Âî>¢MÓY^§¹§O:kôZ¤µï|¤¯Ç©ÐMPö»ùv¯çpÏ€ò¾× ày¦©ºtƒQê5;Þ7Eúnòï!=³²R [”©½¤Ì'BVÓx¾ËŒÌþEÎ :nHñ´ˆ.øÓ1(´´,õlú½ œÖ ·ÁÞ#tQƨ3 :\ðXÍœTddUcÝ,Ô‚VΖN@Ç)€¢7Ž š™†¬S1EY:Ÿ•¦l€›T‰p…LÞñYK¬?Ç5¾ßz§šýQ/¬‡„@º‰iÛðÜÊ~yõ¿k$pðŸùÐ!A¨‡¨¶;Õ…ƒß:õE?F¦Šöh´ßû\(±ôÂXa›%z) û /„ hNi©C<µúä@T­ù—­INkè§¥043¼ÈÆ›pݺˆåñÔèyZÀé»¶pH¨Q1kûÓº ×"3½~éy%d”ו‡¸t׆OWê3¤ß […4¹ýÐÞÚ˜KU”DîìUÅÎOwuª?)ÇA“üs·’E0å cU£{x¾è4Õ=ú?Õ4½Á>~að‘}|ÜìopØVè@@\ Kò¶¢ˆM¨óâˆK«—Àª~÷×ë]-Y`Ü·£1-ÕýÿÈh4;¬Nat¯ß„¢;A›MÔÉçÀY¾7­ëHu¼ÀÖÂ*&-ô-zh†V»0;Ã4å1óÏÑ"aÆŽÞ©òËŒÎä—òÂ3¡Ò×,ÈŽ€cCm¢N³s6}çìm»ƒ˜]½U·º'õH¾æšsaÃ{º«ƒ n>ÿlãQž~̰Ä"3à RO'Þ`f¦ÎjZω´€&Ôáý%;BG‘2Í'Q™¹ìòã+[…¦É8WíU)R1ÁžÙn¸·Ð9|KÅ;³ðDÙhK²]ÎÈ12EöË÷„û¢˜‹nQQ;Süi7›Û„‚Vÿø'N/ƒÂ…pGà¡!Úãü½ºA· zïW®EЗ‰rx=¼ˆââ¾pÈÞä­¸'Hæý›Œy^(+â]ÎÀ•JæEÑØdaÐÆ ™n€á:†¸ëÔ)ç‡Ë>¿™öUHçQñ»óãáéšçTEmèVVG)ùî}GB>Q{Ë#mUç$SÊè3¥Ç´Ól1Â÷X+Ãe½¼fg… £õcw·úú¯×K_¨~J¦4,h¶Mÿ"õAªg¸§Cã,Æar#>WÐïáUÜŸ9& Tʘ~§IÃÑŹ ['Ö¦`kÒ‰L#y—Î9Ōӄ'I7paI³à¡kûk’` VfÄz ÞB‘pÿ{ œD[£[ts†ˆ“׊Hd/•¾;Ê0³Ss³fÑ£Q7I)NTC&îD$&†P:§ÖO¸P6 Â!ФB14-HM}¯,}!q(]ö¼‰EŒKÝáH9œÌÿˆÓâ7-Phæ£-ÏÙ…†‹$â éÇä:e9¦ºÀ!RMËÜ …d¶3M¤¿·"É…¿Ï˜Ýµ¹­%ÜZI¬éÁf¤¯²Sš¡ÉbsE³ÿb-­E‡‰Ú0™}!ÑÁl4Z iv!jÒpòa!ÎFÁ…KKÊ džÝ-ÈñGßYŧ®f ¹5“G ôÝÃ)“.  €×ˆ4å1]$܇ÒÉ-´iÏtê†ÄGLHY¸ÀœZüï¶ûôZÑ©Q_~C!q“nD€¶ÿ;ìAâZë‹ämA‘àÙ‹Å¡¸{§€Í8CM§(À‡²H Ý—vØEvX4'™îjq«é°k ·ó†Åì„Ìtê´F4 › ¢â,í¹˜û61×"ºZ! ln9tøpÌWÊýá%þœ¶¥@>¤ FÉQ™$Ž Ã]¶›ZÂyÛ† È^ï 0'½MÑ£›úò @CÞ ´ø/£Iúó2h-ÉHÀ8”çáš÷Dëë£+_2,ïÕš }0_ì¹ÎöÎ|liÞ¹¯ú'¤’L>ÞIJŽv§Ùõ¸êG † l oÙá5lúŒ·,y}ŒÐJ*i}Â7n¶a°!}ϧ¹tÒ%á“ÔlÓc~ë3ìÙ~kÓØ¯÷ŠäYïwßíwB2F¦ÁÀDmåÙ6î¸ÌÔBèçgבc»9QŸ|òDà‡R€Èü£°´²gÿâäŽí=;»°¸9¢ÝØ“ªýÖÕl¯Î³re‘ÅSIã_¦ ƒ ÈÒa ŒNàÕ„Åþ¯íÅ.RsÚø6Loÿ…¯ ráëußÿÈr6"þ7’ó9²@ÔÛ"ƒb¦éÿ­[Ë˯|P2¾ôžä gã †VE–yöaü_!+«s?V׆cŒYf-%-’ÅÁù$¿“@4šøG¡íbqHŠ?ìè8xHé¢&ˆŠ…˜xÙ˜ÆwÊÏù{[=êU¹Šhî!ƒNpØ+,B¶Ñ;\†"^½ËíQ´è([À³i/ùÛ%½2’(ìTÛWlŒÛ1†jÇÑdÇJº2åäY'Òåþ»SÌ=µ$[˜Äs•” —ì0 þ>ôήžn‹Ik;ÿ‹‰)QUyæ]… Û4–Yм•e1‰§³WöØØåÔâ ¿ˆ÷÷Geo:¥¿:1Øô§é¢?Ͱ§‡szJ__W¢/œLɳGˆY-ñ=³âJ/çd¦lpúýÔÄyÙç3t¦_dÓ.ÝòëY>Ý«\¹ôí$¯r/-\šæ7¿ÏR~£±&N¸†ªùLŽ·|uw­‡ÙÉ?^}ŽQ«¿d»mQv?´®Ú”éH„wÐmR¥°’‘pÃwÈVjÃn§®šíaoâå©X ô ðCú t@ØçZúà~.'IäÖÝÅÜ¢ðë๰nü)•¾w]P˜¨^Š(ìP¤•> .#sß»8àcn;ãR¼.x@¸ ‡y+iØé¿h Y˧ÞMþpç*÷аÍu¤B’Mq!È¢`Ñ0ÇeHeâ»%^Þê ,&=_‰:äÃè0Cóö!i&þ ]ÇâGʯüÛXp‰£åæ'_–N<‡8í-Gz~Ô3Àt§,ئ\0Í YÖÄÅ[²|DtÝåÁDã•J=¿¯*W¶ÒÔ[2j–­úiX¨Cì è½2õR•P…V–Ù«úÒ—å.ÚĆ6|>Æ1‡%Â)ÅütÿD´ýþ•“&Ê+“]ÍF‹.wr*ÞZ%shRöê–uö°S!ã‡+_s›‘Oé^øé“{Ðjç«ÂzTïþ¤ã6‚€ÀÆ9 ÿXÙ¢akÙ Êü1Žõm̽È Ùͦզ€sØ ¦¸‚ââºÐ‘–þ¾”+v:µD"0UV#_Rùš#¼¼ŸèÔ!o¨XmðÏû²AX ÷ŒðɱκUkÀ^âoÀ]ÔÕKñç)×è sõ- {Qíâý£ Xríþö¥àÙ$cL§T~õ ¦þ)£?ùgáÉVn/ì ‚­7ØÕQ¡‰yXè•Ö…“ñZÝ b|_$ÇæI~$8ï®\l³#6Á'ü ¸f0h„NºÙ¨S>fFKØwWÊKéËÈ-ǽáåHx_žÄødp”f_¸[=Uað­–¨³³¹S%ýã/28s@/>}ýú»ÑüÍÇ”“1š@yäÓõç·_òYs±•±Á)éÇ­= žd“a¡ÚXƒRa7ÛÒHákÒ¬¾¶¾KZDÚ´‚¡æñë¹ã¼æÈ$ÆÎ+°þ©”Q¬¯ Ž<Ú"iUIÙFç“LXúH•S‹/Ó?zγÆý“â_†°„oú¼ofŸ>HÊ_[׬ÚüõÀ AL"pì¬:h­â¢õ7*ÓzíS;Mš¡Å,dL/à ¬÷™K­„Â…Ê\¾ñÓóDÒv Í]ŽGVù[!AM¤‘xÅx… =}CÐ…wl‘êkˆ\í.dö®0_ÆžÁvDŠÄcoPP(_ÚãÈÄ™t~5øXŒêØ}€ ·x}'”tíÚ> ŒhÞÏ'T”çôÑœÑ÷±)|0£sÒôQ o–¾ ­¹æTôžúBí¹\M¤ÞÎü!cáüí³Ðò}ô„qÜ›cäú‡¼â^d§ãͰ¼* _šHÈ,Z­£®Õ:é ¿B$Œ†Ûkä&Ñ»²/©ŒÊîÐÐ:~bÕþb¶»ùL¥û[³•Ž(K.² ò őۂ_)[¡ßöûq: ¿Ìµ–BÇþæóï+‡NãìKµÞ5r`÷h>¨S]=V@Vsá|0Ù;¤ïUT»m-].-ú°5§öù—(¿|ò“lÃ*³ÞMt •ßrõë¹OítqìÖ3„h5}ñµÇïâât¬â³ä­‰*xó_o·5çHFõ¾ü¹¡ê5ê”zv`çÛIÛ°ªO†më·g9kòJ·úKޫܪ³Šˆ—œìöw~ãqiÒEÅW«–º.bûî ¾ËÓÏ©4ògcœôj_dö¹¢ôsét°gÑ£.b>ÞF÷fÛôpZtxmÜ ìÿËKˆl³6³¡¼=E2d¢æfBÇwŠ¿]äú?QÅg:©>àwE|÷Tµú_`é§+nsæá²QG'ù[pD2·­?4MZóÛ>åÚo¾fSY:µÚãwžñz }BË&ŸH5˵·]Xö“T“P»íNæ­¤—"|åîsê?çç6\/Ïèéµ0pÃ\'ö2vIBè@”^$90 ŽÁ)UdsÅ•R-Qi¢E “Ú¤ÓS] #]Ò¾ÈÞz9:äž08Õ.Iqgʇâ+Ä…Kµ?^«L˰jóÂæœ² ¤®e°öJÉ¡ŸØYŽTæ…–cÆh.‚Ø}V¥( ÐÒìn%áþbaYœÙP`¤¯¬v¾…‰+Ó1³ÅمøÂYz”ÎñÙŒ¶ ,É£=²Hès…ì´`%ÔÛâ>’vós9ýŒg’á.Œ{cõ¨pÔδ9SÔæŸ(ÏÿOf ÛN,šz£¾£ëÖÍÑÁäºÅí4›¤Z±b뚊ìEdžVŠ‹«1_0pïm­Š8=sdÞaå&ùéÚ°FÉ €×`Ú,4J—­{‘[ÈYÌnxäT±YEøqÚø)‘`P(¡^o-h @¿¨XåAÚËâŸð¡c9¥ö|â07ýÑ­¤nÒGjÓ–HLÿlð Áyñ¥À‚¢t Ï¿‹êQ-­‘ô|å—}åÆ~"¯’µŽÿj„T‚Ê °Ú’ê­~˜Át}lWøÊÊ(d¡ë)•øFyíÎÇØHgŠç!äõ•©{zÃ{“ï-£{‡`‹üyš×ŸÛçôM ?ðz§öÏÆ2ýÿoáGòãmÙP‡è‘LÒ?P];.žçI›ú4¯ØP|ŒMö›c°ß.t8'±s(E;·Ìu:k#6$é¨ÓRºyõV¯¥Å¶À |TÿZÁB|¾úÎ’ýjûeï×A0R:~¤ßï_ÖSç~ªñÜü]æ îwpüRªðG~0üÒ¢³µ‰yæ†F†Æ“”®m7_÷Þð(û¯^8¦ä¬¶fÏNì´-ŸîQL¼¨¨z6µûfa¹ŸsøGr#ÄèyÝÞ½’«à{ªK8d4ÆÔ^ygpU[… )\0|´Ð×§Rá·êX÷ñqµ²#Ðum)€ a÷ú<¸‡ë‚NP³‹xšÐYªneiâ¸Öß™†3Fké2ñ/ö—æù•Ó±EÖÚ-´mV9\n㨌%çâ”d/ƒúó U6O[Þsñ®W6Wæ‚`qµ*/x‹¡gI«C’½>=#ðfåº"ÿwKRq®¥ F^Jk4D¶–±ÿ¦$¾çžÆ—-r_ ˆUÀ›JP×ËÓ%¸‘Ä)Høô \ÙíH´õšÄÕ“©&Îl;ö‰~ÐVr&’¬‡„Mbu½)G´£¾cÇdB$…åanË7Èô¥uÚJh)ïD³xÿÊ9E!þ¬4¢Ð£šÄ^˜õqrmAbI瀴éyÆ„²:µåRÜäAj­Å!Í*ÆçbàÏ ¬±ÛPˆ~™%1¦¦š´Ÿ"ÏâAlo¶AqÑ^w±åÙï!£»/RRyl® ‘!•¹pÑS¶ŽÙÄûÒ@äìègè Aú%#4!éCw$väöy¡‰Œ¼ ìKcLÃbÄ.Ž› »ÐeÐ; X+4»!S¸¯u¸ú ÎŒá`ÎÜ{^SÄ|¥ð<,X™ä™GFO Y¦’Ø8¡vaÌIÑ‘ÖR3CT«ã‚»¢$É«zxí[u‚°§¦@âç­®qûÜ@Á1ƒ£¬>Á˜SÂGí¬iÁ-)Cu&óKQåñ‰FeßF‰eF]ùà>( Ÿœ5)b̵£.R’|p&•SD8çÌ*ZÖ‚‰|ŠIKžvÕ5nÇ,1-1Ô;sÑta±`3»ÃD:H¨hñŸðÏnpîwW›E…ÓÇ„ç.$N@õ¡ÉØzWó×TG,@ƒýà44´+Õ‰µ-Òü´Vkû­ — çx„¢“9U¡N .1 Ãq«š`™cÞ•„Ü-êþ"Ýû³ È¿XntÒN¡¨ HY˜¼3ÃÇ TT¬¯Î åœ+ˆDÌ>q…+À!ºbÿ¦ø²™‘$‘²øms â–',-Cä9(ñ/£ækY_çg7>òDþ¬æt ”'ߑж½Õߨáâ)×2IŠT½ …›‚¡/qà«sÚ=C0¬"ÂÔ|ÒYu¯CN-"7\Y¼Ã#{Ø[ •+çä³àÈM¬c9Úÿ!¢R­ï.8NÕêë\(Dã˜É1ùvŽWZV‡æÎÅ œ?ÜÁºøå?J¨Ù»Êô³Ùå¿Îix_}°‚p„,d¤öËx!Ì$§;ýŸëWg¯´Ø÷q;}|êŽn€•‡n>'ÆI?¢<~ëjê?Mm™e‹\U¬âoÖaJ‡O²Lx\<‹éÇá-”-#ˆ@ "ý¢ùà0yK›c57½ù~5:\J¾êf]é8ᙊöX\S̲ϭ ¨sÄϬ²šÊÿS)uüP!>äDð¤ÓS (<÷&ÚøÙ=¨„ûó/Ëu5îPE‹âP‚@:!Çn†?X#ëN›¼#™ :F"ø˜ã…F6Af Ò€Û¨ ¢•ÍN²uüòž1®ÓnZÚØL³£Y­‰»žMcf‡ÿ¥ï® rìæ}“¨€ãuççí wÍd"D²¸ãÚ)4•3 Òe¦äóÖÓ©9ÿ%jJ¥JШ4)B/›Da"Š’>N÷9Ë á÷»&ÂïhrX»çÎÆ¤w#\£ìæÌŽ)_ð7êôÁÞ*ƒ*?BOžD&‡;O^ÍŽõì¦îb;Vïw@ÂNrˆ¿^6\²åºb`Ÿ¬=Ëš0ÆúfZ…¸–òØ÷ÖFÖós‹Pè1ù!4J­„ŒøÀƒ¨„ªöžM5\÷äÐwuÄn¬áp£¿ïß5†a1Ác㣸&Ëv<°Â÷/4ëË*©¹èÎ/KŒ¾àÛÆcl²³ÍÁ’h¥"ž4ïùhc¼¦r8îÕDœ¡Äõ£6ãó_Ò v°ä…¸ýˆI\6VY**M;ä:Wƒe•ypÖ•jí0ïÃŒ<­HZè$t+ÒŠ ­¹˜¥c}í:ö:Nõ^è^íàýäCTiUÏ}·â£5·«‡ZZÔeÐh7¿É´—áÌáÁz=Ä󭣚®K»´F“²¢ëêg‘Dé½u£ IyvDM~\¹³W,¦‹S³i0X¾0Y¬)¨GKnÀÓµJ6=§»ŸyOC›’‹ÎâqŠíWU=Ää|-;8!žŽûû¨zµ‰2õ4yïeyî…ÐQI ÊÏ$Íh‡ãÕ‡túà¼ét™Yë²®ŠýÁÀÊÓŠ"“Ëô? ýÎ,Vë %.N¨óC3`~)3ˆ,šx¢Soœé2fãÜ©=¶®5’¦<ÒEm¥caF¨tv’Ì)„pUÃþ³ö^Xº×¸‰Á>/®9ÚßÙ^!â^/²#0l¤/*Ä·Áõè?ºHZ:ö]ÉŠ7sË€¾ Óz.là×ê3‡iVG¨†Û7w¦‹2i )Ü£„l¹¾Z2¤HßbPÜÌò£yî ‰ÊsZ¶ |Ì ¤àFÜ;> uæPÁY'•ÅQCý9óäo9æ¿P¤þíû[ux>2lÒ8p«žë‚1µâ}î¥)wIÁ -K¼£É *èÏVÎWuÍtiFlpž{©vº£4•mÆ/òø_)©ÅF•'Ä‹5raT ÍçS’š§éf çÍfÍtCÃÐÙ@ìࢉª¸žWÝknpU‡Z[ Õ1+yÙ•’æÒƒ%!Û÷µ÷¬µû%ß °¨ÜÁÖ Š¤6ϬHÏXêvÂæR‚C'­% ~ `§Nò׉¼ž²CU:Î'¯G‰#ŸôÀÃUÀƒøâR§V쨫%‘̶,‹Ý]ÅT«5̜֒'%ÝÈP§ßµcì¿dMü×dè {z‡ë./û³…PÄdž üƒÿ𿊷.~BYÊ£UÖÏk »†N Ú—›þ_…MÊðÜŸzU0¸(®yø¸«W o ]@Ô±ûw  \ïûNµ'BW}y’_ú²ýž·ø>ÈDé=7]T,ýê`f0ýϾr¿Ìçe£ãu[ÈIyÌÕ¿–>4´ÿÔ‹)LñƒQHï“nþ~&7aø ç!Ûá’5%'–ŸDý‚ŸÿßF ãa’!² t(ׇ¹PÞRiÑ,y£@°ôv÷Në¬h¼z2ߌLE+‰¥h+¶"Æ"äÔÑ4ÜÑÛ³3‡˜Ÿ±Kå•côö6ôÉsí-ñéjù§ŒÕ^e$UZ¡Hó(Üj& ¢oÖʺKcÖé¢ÖgNëAÆþLœ» KUúqÛ”³0RÙu ··¾_‘c+苃ªRoŸôP=¨ÍÞÃ2xÁ@¨²R™ñ"pQÃý§B Úr=¯Ñ¨lB´Ü–±ÀÚÎpZ:ŒŠq^^7¾€³ÁQ®Or¸=jûKÓ®×Kxa,®6äcMd¸æýr4}»œ4­ØÀ÷Pn‡„étMíÃÓcx“ÓÖÙ¥uÐpU â;ZÓ#ÇmÕ“UdËÄbhf0w¤ªÙšÛ¥ªâ–^y$ z<óõ|[É;ÃgMÈ Äî*Ž ûšÊ"A¤OÞ<åxY‚;ÈIS¦Žè‰‹¹7°Ç4¤',¦q‹"¼À2ö‚ س,‹e܄бûûzê9Fs\z/dH4€F[{XF—Í¿$œ^¡Èð}¿“‹¥Åº|ö·öp>.âèQD`A5ôË~/„9”dЭ¾Šuk|%Amµ:íA¡¢ À™ˆ£)•x’púQ OOÏw²¤­tæVï£ë©¨Æ‘>’ð#+†©>+‡M2RºèšfÌ×çÉP`µX#”"˜” _s1”¨§Œø"ØÒ3Ø12_‡¡é•K¾…Hlãõ¬Ä­Ja¿²"HC’´<ãE"¤àõÎÕñÀX¨ÆraQÒ¦“y• býƪlÓ—\@v3ÎÃmÚR~ºíçRaåBHȸu;Ô/±Öß,Ε–…¤ëav)ˆ óŸ øCjð#±Å3»å}¶§Ó+Ü»!§DaBí½O1G)€rÜn””>‰Ì€×QË;íþé‘cà_eÏô ÜòTg«­n)/´Z`Ñ_NŸLzn0®û7q±CEòhïöüšÊ q5‹V(¢_}Œyaäâ¼ìíì¹ÐBœT×ê„IKì*/I’ÉŸ£1?5úþm ÍnÉ(l¦ñezÌNé™{AõP:œüR[6ÀÄUÎD–£]²\–x:íEÚËø}sR)¿‹“Él ø{ÚýÆe\Š|QèG¤ekï0yâcª¾Ë˜ µ¦kÛ˜ïL­˜þ°-|=OC½ámÔ6ÇZ¥¼lA .Òj3ÿoQ=áäx™ò•ÊÒÒÖ x«´üoµý—ªÊÎAmÈÉ]˜—“›¿07gºÓ¸_(ü{çtË™ü)ÔT;§}êN—á¯9òWcf`×L7¨f&~~ÔI•Vi5ÆVaÕ,i Ói®³dyõnâ{b%Y;ÚžR;Ó¾x[Ã8¦i\=”Ö\!7åÕ™”¹ý$ÓÔVuص#' Ç·ø|…~ƒF‘ó| Eoù¡}[îZHÂdy¹rŠƒÉ`·±–ÝÈÊrÍW±íãol5p\ Èqâá@Ðã‚t¬3|ú#1{X˜?¬SLÝNœØ^ý«z{-Z0ºeoÛ_+ñöìì¸Eç$šÂ`² ­4ñ'V‚Û‹ FuãÏÖ¥ó ÝoÛçû¹Z‚Œ÷‰‘3Ÿ'Š9O(øÙXœf]ö'ÎúúÝnìô¶Œ¤‡$øæú ©OÖÇN³#D”±\P:-o‚³º°î×çL(”WË ç?RÀd¡NC(¬j¬*3œá™,#Ï„‡ û¯93](´ÞÓå-\,¤pRc,;‰žè<Ð²Ž‹>j( :½< xÜNÖéÆ÷KŒÍ>V(9bùÈ®lúû͉Ëç“ö¤`ÇÍ<°˜w“ aãÚ'ò½ÄÝþegxgñFh‘´¨ìÇ•ãEUˆxÓëuy’ò3pU=+¸—…x‰Š€ÁY¶¥ŠŒds’~̸ïw ü'ÖSibéqïlÖ#=ÇŒÂóÖäQ › ~*9¿ãþ?wÃIO>²ã„úâ¿à)÷oYõ"ð·ŠK+718çõûÏØ÷C†É†Ûþf©ùÏ~ßž'|:fÞœÎÜJüX”ñõ×[¶ºoß¶iKâ¶&4iÛv»3×"ÚÍTÿÈ5îšå÷ §šåyŽ.•ï-‚Wt˜NËmr{7»ú òsË5ùãZÎgáþ‡æ¼ñRnu¯¹Éy)8=|¼YÕþi|¾‚ܶ¨w RKÜ¿tÍ ÷äsŧÑ$ñV“Î}úZûšG1ÎÖÛ¹¨F-÷}k4 V“ :Y£¹¸c6§´eg²åj§pÌÖ; MÝïÄì!§Ó˜¬€ s “„'Bˆ¿éøÏËôwôŸÉ`Ø|„øäâøé+ð•Šë‚O*7^=M(_œMNPœ¿Ëñ£-1…}pžÓ\00“fŒpÍ01.Ž™žø+ð'ð0…˜j³ö(*&òÍÅø8Îþ%!¨ßpf‚’pµ¶çUBÕíßYIåg·Àü¨á OÀuœª»¿¾Gž»#"'­è†ý÷@†—°A´ž†Áúƒë«”©Ë åÃa(ýžÜS^ÙªîñÓéĹSEø3]ëï¤Z·ë§ýMý›Öà[¹~ˆrÌŠL¶ÿ®+©óE0(’1DÆ}ãC«±U[¹òܨÖô;?ò¯«®ûd\ܲ‚‰S˜ð4 ÄBKbÂFøŽqòÆþ zy'¿nÏ ´êxž1C£g›z߃ÁoOò™½`qƒ'Çp¾l||,Häc¢ÀÍîR÷1svVü&rÐmXf¡O8`ü`*Üf0øÎ ”î†å~ø¶Ða“­¶çlË¡1cZ…ž?W–ú#PøÙèk‡2°.öŽ` DãH}²!v9˜+p_Þ•_÷_O¼3×øêKúBaô:Ëо&¯/ ó«ÓÃgÍfý¬!}>aÞ¥ øªöjdå¨R——TZ2Ú¬ƒd%_S£þð¬X£Òå,¦ÞÀªÜ á3%Z‰^ªµ–cµ× ‹@ÇD"¤)’ˆ§Ñ¤W§»¡ò¥£®d?Zø ¿Š2ñÿ]ÆñàÅbÓ8>ÎõL?ÚÀ©\Ã(fÔp†'‘šÿS=il&ì2åâ>G—w¯$½$§ÕØÐ{·-мG%`M…]tš²v¹–ˆnòAú„Ì|SjLB.Žù]FÞÞüÆr9Ô¢rOT¾sG÷¨ÿ­­¾/ÊÕ'ÝK°p~”2nu±eY˜y"ÂzR˜ÝzIÈz‰C~& /eÖ}í¾‰žšÒ•™ëõ­¨~Õ`«ÞÿeÜÚ÷AÆ}*eæp¾‰Šþ ¾D@ý‰Gÿ‡üe;ù$qúüeÿ9z¢lí„…ÑpV"éÑ‘sˆ áóß¹'KçOì]hÎI&Æœý&ϱ‰ˆÐSJ™0ÇQƒÀÉ LÓņÖ[þÜÅaÚp6ø¿Çy]‹Ò×<ö\WÑÿj4ÌlË¿™ˆÙ‰¡–‰1'Á‘½Š¹ï†o²¤kïžM”}þaÜÂö¼)SÂIÌÕõö%kcbk(7¦gmz4†¾ô؆B<-à§ÛE‘¡S$“´Âé°‚íX¹ioÄß/3›ƒ49ÙEÁz¬zÙ ¼>ºúymôö±ÌóÎÝQÎ>ÖQ*ë[gId9”9-1m"›^ ÷þì„Ë__xIxH$ë¢DÿJLôE—Làê\õe >.b$¶w‡£À.`¨d{ŠÁÜP.`a#z‡¬tT¸0ɳ¬æåùEF¨Z±+:-ºZ@‰Åyþ*ypT}ócf»… ÇùDW‡ðtÆi¡‹Rñ}PüÇ♣ÝvÇlÞö5yx—dŒ)j?7”eŽsóÎÉòÄc4.ÿM GÃ]㸆zÑ×U 2tìí²Øê ¾· ‰+Ài²î=ݵCÊ4wÁbÔ »=pl:ÊRT|›ž³+¾Ù“gpƒ¡Ty¥ªßÁ™ÄbcʵQiÒêšnEu>@Yç=6^H$â ¥µ½**ý ¨¹@ç$`%U£j&»5˜Va2Ê .éŽ^sGð‡¸_~ºð}v¨¬± ¡´¥ž°ù—å~eËA` ƒó,‰Ñ·heuúph”kj>°–CÑx%Ž1“~,WóÔD§ç?…§¥¿‚†7XçË÷ª³y‘ÞD‡qœŠ fPâ$¹ 6ÒQÏ•ø^ÈþB–¦i‚ð+Ã’&¥’†–VÙÀ^M“/çYRGloœP“úÉT¬ݦâr"ª…+fµø§Ô†ÆC6¨‰cÕ#Ê%?¤[uý *±MצO³¦?TÒQšTÊáâ=Û8Î}pnqY MNt@z;ž94.nW½À½}lñhwüÎzáµ=Ð4}' ï}JÙgµŽ;j™®'ýدwÙw¦„…xØïõg|‚K`’ñ¬í~Z)×€*0áCØ’3(”êßÒŒë Ë1Hk˜hðžx_}14¬°-œßæy柟b‰€i6߈Q–yñë|w2 ìÿÐÙ·‰–¯S~™#¦~•ÓeXWÉæ:dN_ô½¸L+s¶*|ACÄ©;LhmǼkTxsÀÌv‘´4&ߎS¤š#ú,:R•Q˜ ié?ºî¿ÞäLý|Ë XJU4,Z¯}Ó6ÁT\3?ffgk´À"3ü\e”¾`îüXƒ-ÉÒ rÿùuç))Ò4`î(ÆOͪýo5M®ÎjªÛ€:P•š‹óñú,ì–òHtC²½æ†ÍÔ«µó5Gp7X…VüÉ;ûïu*Díh¦*’ ‹Ó-z¹Á68¯kz|N­1ÝÐ>&ùÓìÒXǘ©ýC-àÛ¾›v`§Ö:ÊLj´æ­ 5“~” q×ú»Ãœ>ò²còwäKxè ×¶äÌìH¼ù÷:ñÕÅW‹#r“ËûpënzQàJŠïÐ^˜Ô8òÔÔÊ)j¯ØäG˜ó¦†á>ßÁÂÅ•h]GªÖ¿N•Ò¥J3c:3è)ë 8Ê£w;ù WN+—êËÙœ£h½g>‡­.àHÊ#BïäùüæÞéa¦¸Û˜„ZNBì?8y!øT¢c™Rà^¤°X—,^dL´X½%S›ŸíŸ¢®Ô™“ó:&ä—©ù•eª…àvHç¦3[G3/NåŠHœd`ºSÆÏ¬j+¦‚e½wWGúÒ®%/¹è>@Œ•ę́o!E¥3ÊR#CÁQh8“%±X"±‹éÓò(söסUé˜ë´;œ1'.¥(ˆ­_S¶~eEòíú6ñxã[P^ü’¸©¾Uc ‰ßqå>B1—Í;*] RMø ¾2y¸¦Mc!—Õ—Ó³ñÙþñasª¼ŽæÜÈ‹«Ö˜…ðÍ!X¹zîÁRpzbÆ»øÛš¼ò¨'ï±³žj ¿Yצ5–S³>‚—ÍŸí‹ ]<ΘuëL'âÕ·àâÎw =24ÅÕƒƒ¬þßš4-¾IˆÑ‚šc¼;E_ù6{¯ñ<®ÆÄÎoˆ«¦ÍæFÎ-Œ1˜Ño ÷my£ø Šïõ¶ôû¿Ý¥/[Ç9<ŽÀKVõ3°²*m¢ûýRDÚÉQ &´(½W ¾Nh/4GQðÛ³,J<…ý¢B+„VÆî@-­˜¨ Dƒ ‚G9£Õ8P·­ÓÕíŽÑ¦€zœ-ÔÝ¢ºKôÈï¶ÿÇ•¿i-wH§Ý’V2J#‡®±(eÎ ŠÛAûЉ$;z!•óê‚^OÜ>Ä->³ùÔŽvê WN†®¨S©GNôWOÄD†²†2§¥§›"C'N6\+Ž5¢ ~ñ,Hçf™nz‰Îþ©Þ¾öQƒ´Eáòn‚ëíOúÎc.èÊ3Ów­Á…»Å;fIýOÑËKìݬ†¤òÅVÛæv´¯˜´Ì øÎZnžÝaìn «Bàž­UC$+DÿSÓTfƒK—Ç+°_9j0y`õ\èPÖ´Ä´w:òUÞ1Û—Bûýò«À6…íô¦O°û™'B¬­ã’qB‹¹…ø5kÐìM=€v´HÁÞžMŒoh…ÄËȨ³êó ¨ÊCë[ÙQ^>YU®]Q­VÄ#` zÒ-jqý“Xb®ê¨—Ë÷xO´n(ñ¶/RnQVÛ*ænÞk»m¹—É} +7¯ïž˜?¹s÷†SÖŠâÉÁAõH…ÊÐÜ?{›8+[ÅXUխ츼dN9úSmÕšÖ gRÍN» NòÓø]ŸAYѸ¢i2½¯ £)í,¾x°Ui¹¨ÂSR[t ÆÅå=bHׄ»,Ö—4ï<7_\é‹·½Õ‚CïøäùAˆ.¶£XRTÓ³³­0»§ÀPŒNGŸ="cf¼\í­¢RÐ&d7nÉ”|M[*²MÔÕkÿE1™ÚWK°Šèþ™Õé^¤ÅôïËY7ÓòpqÚôœœ¦þ²sÌ»h¾}+©åÿXN¬SÃeCÖ¯1ÕÍÑ:ñ»¹r5Ae28Lࣈ_„KPy™î¨°ƒ{•+S^y_™ØÐ™r ,+N-°ø›€YÂX=Í üÞ|Ø”"’&y¥+óoà”6à¶î¦†Ò—r Ç<Ɖsµ~ýj,=yTÌ·MP¿4-мzÔ¨#X/ø-°á¾ðз˜Êuy¯ |˜e–Ó£À9¬8=¤Œ1ÇF¢U µÀåAYñL5r+W;vߎý;j¡._UAfÌÑݤÝ;­…L7Å‹$=°ÀHÒ ¢o9Ä uÁ5èᚇµ$¦…í9†á†¼ =AÊ—A—ž‘ó båɆÿZëƒ_›ÇYкù:¦»!c§ö™LÝ ÖÔ+hÍŸÅt§7“øû®leâ Sºúøå¦½”ﯻF9ûí§7¦1æ~ôÕÝBEü'"Ïj¡W3òÐ èÑÚ&Ó''ÚìnønôÅ­\ÜT`›œ¹e¿%çõ{Ë×íJêÿÎ e|© ÔÉ §Žª;kö.(p9æpÙù{Þº4²eèÐ.`cöPÿ9Ët}‚?ddl.‡5{öÕô†Jð_vÿ^°ñò¸éñõ÷6»´¾\?šÙ©ˆ»ç¬èóDÕògk†U5¼È÷ž²Åñ Ÿ2•ia°ÅÂK•&Ü?þÅÇ![ê*£¿1™¸!á`¬'lóаáN‡u¤ævLì6šG¥½³ËÇÖ\°ÀƒZHkÏx î·èÇö´ŽT’H H€IÂ% (=ÜòÕÏ'”ÌÕ– —ïHàJßì«CðñGµ–À¨Qëë¹÷Z5¼à$oJ_-©H ì„Ïý–pðÈL‹]æ@HKËcáëööMàt]¹é=ì kŒ!²gã4vü2¤\Ób¬¤¨…4YêÆbákMõÓl­”º¿5Y„=†äŠ0ߪµµÒj9R‘ˆ!ÎE¯xÄ&äE„|k6^—÷wPÄæYúçš{[ÜZ_îwWI=P,*µSžpßYv„ \‹¹ \­¿½Ö¡qgþøð•ïÉ̤Cö 90XêÓº +TC@Ò@&a÷ÎFà†s«š|‹†ŽðÕŽAï6ºAU$Êcßz€k#­ ¬A­9+Š™øà:sb‡u‡/Õ£6nøîJån„´ ªE…ú¦ ;ãú†ËqÁÁŸ³¦¶e^fN˜Ri-ö½ÌˆüîlüÄߌ°´Oû[N¹5c¤ròÑB öm1æíÖˆô›Ì…bì…Î òµäIÝî„9R‚[R·:#ç¦ZZêƒ9ZÅ|Ô¹÷ƒ@AÍÿc2?:íß1™cÿ!‹èŽ/±5ÿ %ê”ÊbÿæEþVK=ô e!»â›ÛÎ;íëûÛY/†÷/¥æ–Ÿ´—ã}úoE[Å*ƬÐ{GÍ-°Gÿ‹³£š¿BOu¤Ú¯‰|™iÙš? ˆ<þöŒEå¨mTu^ÉR=8;*_ðŒºˆ-âˆX#¶ThÄ÷Âà”1ª¸UÝnªÆÁýCã:Ñèâ Í12ž.…çs¿Â¥NY„Þ¿5H(WéÞ´r­¤ì’Ç=W9þÌi9úï(Þ”e9ß½GÀ ™ ÷•¿§yÊl‡-ã¥ï¥ ÎêžÞã5ÆaEW¥%'‚â JjøYÃ’ÿ'ÄDÃhobe¡1±Û u£S[þfó¨y=&.¿„:Ivz܈ÕífX[=Ü×Ny £ …Ãk*`45¨Ä$‹˜ã4ñX§ŸoVz~cXú çMFõ”W¨±ÀÖÞz/å¾.±Þµ¬XJwuªEYºXå´—BbÔ£4¨ùö¥rYŠŠÖEk³fO1¡ <,K»a‹‹s²ŒÐÒҥѦµšòÔ'\®d°? ®Í—oyD .ŽPåEGb€¿…ñKÔu)ß¡ŒJi u3<¨´,ð7ˆc'Ú€iîúiñ­¢˜T=ŠQ¼?™™|†áe)eÑ´Ò gÍ ObÇëaÅÄ›µ¼³ÿêÏúŒE½$ Oˆ/—Ôb¡Êw(¿d§U}+¼Ì¼ÒúKiOèNÏ4í¬ÁP8oîRÍ‹çX=9–H€ôú¢—…SR¿Z#.^üÕͺ8¦Ê”fX:‘ÀNKôL¬]Ž1KÂõ;ZzÕÄ$ììÃûCæÅ½âËÂVG7ÉÅ¿’ó§Ò™-nú›5óxSÆ-/òò/QªÉG¼¥0ìZþ¤.)þ²0:¶/lÄí-XÇ™>Ú¶nyZH¬Ä…£Ý¸Ì¢ù‡m ͨ%ÖËjýÇ™¯Š&s§'ÌëøŒ[XáÀ¾$™”?惧²^J< (ó—•Pvgo°n;¸D^¹Û±< ˆvà×s¿Â(A|¯ñj\ur¹e¦D\´Œöæfƕ츴{ð Ø[â´ _]åY"»Þܸ•¼u|êç)s ?rõʘ˜ÑÜÇ æmÉ´PX,Q± \=¯tÞºtÓª§¶Br\F饚 TÉœfC±Ưiu9\¥ã{ÔŹSgÙZ¸5›Ø]³\Ù\ê„x3Á‰êd¶GgNÛÒ¯xâo±ËíQ8ïZ­H¿wü醾EÄ`Þ|2gqxYÔ9È÷Ë^Eµýëae;ù‘.Ä#L°ü þ ÿß²çÁGˆÂû6¢q²Ÿ¡÷B|× u°pG2$tUr€z^¼TvÐz:C”ïoò¿H ¬ -ýŽœHD<Ä*¾æøßð*^‹¿ž3ÂÁú~ÝUr¯Ð%Ú¾»ÃW·ÓÍ.š5ˆ9?¢˜ hŽxå½bÛ¿<ª”»ƒN™føÅí2Û[ñ|»©[óãˆê7GéC·³…îú…ž™79ëOm\û7ñ uÏÔ¹ëý9?:õÌoOš¤÷œ±4Kœ1d}»)ùöxÕ½€ýß2œlWˆí«zxÿµÄõÒqçZå}Cg^”¼%Ý9ÌÚ$°ËÒßÐ÷›öÀþIüL>¹ùÔ'ƒÓRw,yÎÁú¤nÝQοD¶¨ÞGí]?¹-ÝI‚ ŒežU¡0€…9r(XáEBóêq›‚ št8M¿6—@GßJ]ƒJij÷h-Íÿ0¤•šñe‘h@ @ãºÊj{´? v±¢(LXqœÄnÕÍÉQh×(&>Ò[]Ð4öŒëâHúY$<³x'«`} ú¤FPÕÍžÉ%¬‚¸T8œÁ/å‚Ó) ‡!ÄH¢$.ÁàN¢6 ÇÁfZòl:T§uµ7Pôi­ÙÚ—ócbL²dE«ùy%½NYa"q—V7ª»®kžÓ ‡Š×Ù6Ç6Þ%§ž=~j‹Åèr›(Îf¡‘³4²·Ô+yÍ^uõ”{¦vý7%ž m»haGN©…úµ…ëɾiñqûMûªó¯a’¸ýš³™ðÃ?ZkÎ#Š'D?—aA¼TýzüÏ1à§Õ UUp¡K Hí /jÔÖ ]‚Òø>nÁ²fšbV¥Žž7›¥ÓjUâ,Ï›ígBg:ä÷ô±@³À¹]Àª>&h¶Svo?Ó{–Ó®oEØNiሌI8EÎqp([`Ç_“_É™ì}ô«säÖY„žHIgAIJ9vÒ®"ñZ,ë)§…È•›×püil,ˆœaûæÄ ÊñwìTƺøs0‚·ÞbùËuE¥} 9¥ §ÛJ㪰\<{{iNÞtȼª¸ß £¸Y­ðÍ.Ó¥RÎ#m«øÂxΰ.±~È•Qìλ#§tAO bxrµŸ>%¯#5¾Ëµ2ñ>xkejÞ íx©Å }Ä+ð©e&?±œ{Òr´ Ó?ÚcB‚f:‹ž¶àhK´šn—OG‘•C0ù {©yH)@H¸²a£²S°ßWaÝ"|Œ ›ý}Õ¥bs´õØ"}C¿r»‚*,ïW÷Ÿ 1ÙpßcM²%Õ‡L¸"µlçǺ•Øq«Õ-å„ÝžâG®Ê,jbüãØ%;†³ÌKK”±>êØsÓLùºâÕéÕÁ¡³³úT°O(ö(¶²ÎÂ>p'jƱ"Ÿ"D¬äå§èÌZ$a S‹ c:úSL"™;Qø›õlñ«3ŦZƒ­®Ê)ªÒŧ¾dZÿy™~©0¨õwéJW!LoÖïÁmùxaq_ÀİÊ߸Á¡µü÷ÄÍYë×oWaÖáÝ/Î;þ¾K OMŒÏNNÝ1ýµ:‘1qjט4}lD-%ÏC¯<"W•&ûQoeFÌ#«çíò <À•&ùŽ'ÂëêÝ™šºšmͰ`ee èöUD·0÷†dAÞ£ñO#£\iO#‹G ÷ù·c‚] Ÿc´ðvÔð`ZIšM°»$ÐØ_¬ØA'±q[E tÆÔiOõ¸á‹ýfç ¢ÇLµ•l¨lôrXÕ.Xä?g7&ùŽgªê2¾Å`–.Àì?õ&2 @ Ç1ùG¹Àfóf­ª aPmÎ.ÿ~¸šm$òÂÿ•áõÞôW¢ rÓá§Ÿ|.ºOˆZhqåEÈ»‹óq!*´_ë€Xé„A î÷Ñ«º<ýaÂJøŒ›‘Au!W ©æW)Hó#}ô¬z›nÏwu‡Áô{Œ`Ò·Çx´.Ãp #0νš…;r”ùŒÄ¬Å#=ȸd°"®Áÿ'ì0±¥Þ¸9ÏŽë@쟈ˆJûCÊQËÖm›¨À©%8zîÝvüu(ž›™ÈUMz”è&&}‹_´"ÖDš®U­ìIFcƒjQNI“#ЋKJ«û©¨s-ôúÀ¥èKv¿ú’ÉÖÜ °|’Š ßñÿ^…dXQäéÏ‚jçóÈ·Uìš¾0_G˜BÕ7ôŒ´ö•C<­’fNO£KÆãºXìÆ`ˆí.+`D숴“ÿEe°5°S¯»ë"aYS•6; •‰Ó;ð's|…ŰºXÔ”ÕŸ¼ãBÞ¢Ûšž«†Š&äÚ1uy®f|‚˜Ïg“L“_E˜xÜç«Æêë÷g Æ7îpC̲ÍIÝ>m´¸7 v·èŸ~XdRÝ _#ÑjýØ1~ûN¬óAž/)ÿƸ»‹aå;ʼ¶Ë™7’ñú'TqKÛS`(PþOͬâŸPØW‹ãÐ?ûʉOsÜmcÙÇþÅ\ÅLU›w;z°Ý×!ÅMÍÉ(kYi+Ú‘]ŸÍLÿöx¢3Hüþp_ótÿ1¸…ùrâaž%?Òƒ™oNÊã×}Éæ|œW9Î7å]Ín8røÄµYãy‡ÉS`üË_—¶Úwœ¾¨*«l ð[ƒi…ç†pæ†`Z*â²?ØŒùì¢Zä rè“ÀPq™Ì™ýõ“4`p(ÄÀhaž¥Ù [ô^ÿÖ`šøï˜½Ù›+ˆ^dâH`dÏ»nÃhÄåw#‹À™@îÒ’Y7 WŸH˃¬E Pa‰ ¶1Èïüózý^Æªš¤¸øqcw5àr5’ª<k7î¯G µ2>¬-dooNg Ò¡kÖ­ïbHG¦—wnÑ ç»ÍAºr=¯Á¨lUæã)9c¾ÅÄ<í³LÖ3_kTÂŒ‰FTJgs 6E4Ö-ÒËŒÖ2S†Vîž^4Þ±*¥‹ªÃT£úv8µí-,}bêšM]@ oðë–D¬ÉuýV5e]Bêè>¯bKÅéRöíã„.¨Âs÷4¯'sãú CjâÎÑ}÷ŽãïTOåämIö™ˆÓt!Á¡`A.tðú? %k0iW…F’ÓÜDd­MRki*ò>(o¥cýŸÿøTðà…1 SÔYTn «j¬ñ?ÇdnÈ\´ÑÑžᦓÏzwpÍÆC £Õ ÑgÂk¦Éþ7f›£Ò#Àµµ‰{—¼9Zl¬z¿‹Zñ8õ-vc^ ®Å:z.ümÿû.©¸dt²‚T3܈ðÆ•¢[£·6ˆ¥@Í«D²%D|©šd—¡µX–¶yæ{I_±%:Xt„våHð_æ8ºoŒG&_F?4¤ýÇÆº±S‹œ­‰²F“àø¥x)²ªÖöï$r”*Z ýÙ*‰) ·k“^»{7e볎½v̶ÛvÖ\eÍS°Úš×I'˽ìmg´­»0È/Ëìäglj IŒÛ½GŠŠNΔّÞèשÁ`ðÛEâ/Z +ä¡Ãu£Õiç’ž6a9‘R ŠÆ:5öÅCS‚õˆâÎ; …§,ÃKnÌà”„3¾$¨"¨Bk)Oº ¸__tç­Ü¤\ñ7„ ¨†.o’÷8‰ºa|5Õnå?Ê„RÁ‹Îy<í0Vreñtq~»ésÛrTšÆµë1î»b·~i¦ˆý/W²°°ÂóyGÝmÄ‹ŒßòK䂊£3¬[ú¼r7t7²ì{êrûÜm–6-sÑ7Å ùk Dßú KÓ½ý…MÌ‹þ®]õÜÚ’–£¯hê°(–T—º“Ú£çüsH7™ÇZ.ü#ó•³ ?b´Ðª&3¢äÍ£SI«¶t¼²ZÛ\ÛT6šûºãš[ëW FWŒJ S¹”7'“‡B²[±çoy4æŠñ=½µâlSAY\;ífúŸ8²?‘°ÅaÚâ/ j*‹êÔ+†›¢$æsë@îÄ ·”,›ïÏ"eá T’þ¾%Á‚‘j˜ÄÒB!paî˜È7ƒì£¡¸®o’;wú‡¶[Ótùz-ªQš[ È›…dMš£Är³¤ ×M‰’˜Àa«@@b‰™ò­ö,i&*°D*…ø¶BEQ1q셹ݑ¦ûø`öù.Æþiû/ÏäÚ`Ê=gdXM˜^çj¥“?h©ætN»Pì¦s\FU=5?Båa¿Èåxõø ìmÈ\´ÉÑN.~ÀM'_÷önrÍÆA ã5 ЧÂkÆÌ~ø­#ªšx Œ ‡âÕ_Q€%2Í'P$• eü#Ø>ýIÁŒ!®û^È,FŒ³HDUíðSÿÿp¬¸Dˆ©#ØÚ-:oÚ†¹;ç+'ÆB•Úya½ N߆8C³8µ¼þi3]lä¤F’‹ôi(•ÊÇ’ì˜ÿèÆí5öŒµ·NNgCGc5ÿ¹QÌšêB8Àã<Á IèÁćÇõjþ8Å»g‘а_Ìåyõ¿¿í”~‡0l÷PHE³òwîô‰Pi(^óµ!^:WÓ~ùGOZ LmÑ¥Ušx§Ç, ±ñÆzÄÙäÔ¶IÓûÕb<ðU€l A昉ãú©×/IMf’ç¦sßž[“´§à²7G—<©ü¯VüžöÎqÝ6›ôÉS0þ]vù€-æ,æ@JúÒ–.Mëc'Í+"ˆV1Û1ø@Œ»²úð¼‹iá‹¥f¹Ÿ ‚‡Ê{BŠü_:¹‰d76Sð79ÈûDK§’Úg*¤¾lò峃_ üü"Ñ“ÄH'a¥KÈy¶³¿d¤ïÌDìÏÛ¯jzÎ1Y³Õ¬¯˜W³MBWÔä—Ÿ¯¦ÎùÂöŒ-ú“‡¸¹ ÕÕHm/©¨›»Òa¿ú€ôû~)Þ6•ÛŸ8{ÔõÑâOh"¸Û£päQrDP? )±©ß¾âRêÍ #0dànÑÈb˜4µb+تlpï•yï T6üïëmÔDÖ€F°2éE±€@x%Òƒ¹+F"Õ–³Cð[ Æ}1´` #Bʳ¼ë–¾–HpPüÐ_¯õ÷§©›1PÃ+⣋^‡íy-{‰)àÐßôE¨WLÞ@a ­¼çñØv'—ü »ÍÑâ<ü-¤“¼¾-93Wª¤µ=9½½Fé ÔFÊ(zgíAQ´âVIÊ×йâ4d¶F²Úw€K‰t×i=úÖzLäô¢…§ø±F“¸‚©\àÄ.î9ÑIh²†5\¹è&¬Hß8q¤ÉŠÙƒ"}M”oRC$ÀƵc‚ÜŽ>AÉ^]{ú¿Ž÷Œ¸öÑŽ9´ÊMd«g»ÀQ! üÚö)p0g`zì0lR@&D5Ãló0ìŽ{ÕœÄ!šy©mNBîwf±ÃïDa~sOØÙCÙ¼/Ô E·j„Sº^Y8K7œS`­FÃO™zK©lÒ6ÍÿY@`ä¢mRX¡¤Õ=…Yû:œ{?T½Â ‡Â [l„÷{}¯¨~ϘÂÖ‚£¸.ð—rM|lw³î&­™l/lIRj †'FûÞõËÁs?œg|ö[Ï¥e›þn}娢 ()S8Š+#-Ä©kJ—ªtY>팥 Ô宾P7©™åÊoƒâ©•5jnX\Ò51MÐ0 @‚¾¸gÆ[dJHÓ¤ÞÞ'@~ØÜW±Ýò2GôŸƒ'y‚í`¾ C ï½Ç;)$ó@™—²ù´ «$F„©”3Yˆ§+ ²_¹1Y\’5Å‚`…Uʈ~uН±ø˜ J÷¯`Q}ºÒ˜—¤Þp3ÄÝíÈ„8£ÏÛëGÄøf2Y>{¢2¤áEzõ ÅïÚüw-°/uUÇâEb¯59ÛJ¹x!`hÖÊj îbÆÆoÚA¢h=-Û”‰¼Œüh$g¼þP~†OFGm ”¿”½üRâ3Øù_tÒ•}ÞRœx8vrׄ†ü&¥Ô,HKu‘ˆ=™1jTaįnÅÞH:Û€RUN*ÅKØë]Ò$:=9³OüCíFØÕ6= ³™Õ,î±7ýáO™W°ºü"ßï”G€ª¦‚Z*Ó•|M¨~D]dÓ)í›ÿçªv@YÊ£[lÿΪ/ú2LUZÈ¢" ßJ#R é9)8ŽÆ™©o¤nB34.©'¨ª¸±îNV(45w{ Ú µƒ<2‘‰þù-X¨ÁP Ji —e§ÂŸ ™ÆjyƒJ7ôÏ,Ÿ¯Ä©åmüô¨ý*«FžzÖ>@>¿¼fã©ÐÅõo½>¢"8,?†¥ý©{Õ 0mÛ¥Ïá¸i#ø |R4ô†âÑUwHÌŽÂ6ØÅ»¬Y¢hù“äÚºF9ö,+cãzâ° ±‚6¾±‘Q…Ûÿ&Ž9áV%n¹›þ%]èŠ]ÁMÂØãº‘Û²!•eÉáu:­<`Ž…þÜÜYõZE.¤à/é#œ±'*bø“ó+b¯ÕJÃôø–ÍÔ1¶î­åqËu) —‘‡Iv\»§J/ô ”SdÜE¼Ð'(Ǻ^U „U¥Éá‚_ÊãV[!(ã)ŸÕêÒçÝúrZ§Ëœ-tJš2qD…í·z{Z†Tå&ýâ¼|‡=&=ØlÀò&³§D v;T(k'€¬|"‰Ý:ùr’¾<é–ÚË]{É(7-Îÿ2 = .Ôªoäû`sÏðGƒÅÙ0_ž¢Ñþ½P@ýDU¤ kJÄb‡Øü|\&‰ï,²‹ë³å>\\:fFY‘†m )ž¬R‡?`2Õ"u¾5—eqz«„iåÕ(é2vp¹kK=sŽ©ãBè‘„7˜èæf ï r¯Y™=I€SA±X­ƒØ ìø\¤Ñ"¿{®ðt †lP¦¤Ê5 ˜ò‘Ÿ ß—IIÆòšî‚2T™«ÂäÛ–G*ólZzfhtýÔSjdµèŽ×0îöø®}ÆL;Kž{"ÕxÝÐ%°ìÔ ªL(53pMíÀÙgC•HCÌ·”dï"êŒ?U]?°³JÝ&Ä öýϹ۵2ûÑzYæ8-ï¨Lç¾ð|·?ÈPlÅ/È«Š;‘ £Õ„ü1xŒîˆ–Ûí£U#˜ÌüsÞÿRjÈ4Vp«hODôuºVë¦nÝ&ý »Ùa„d"3Ö;¼jÒØ¡D/§vx²V&Ûø·£„þ,ÇmóMá‘ ôÓ‡&z7ûÎÍO ÑwoýÖ‘ðLsÈ¡M¸¡j¾±˜pư3T3=£ÿˆ–p[嬋³È‰tD•‹*–“ýtyH?Ȥ<=¨ôõ9p •P[JEdÍÈIgë¢t¸^Z£¤¬‰¥:æÎ;ë:Jâ·&I¨™ð!‚›Ô—¡R_ò´º›#Îñ቟jt[µ … IоÙà;ud½Òº)ìÑ0€j™WÑ_iàqðãŽcLWÌgQ¥ÀuÁl³„c÷ÝAº×Œ÷ ß»ÿ½äeÊç_—3uûóòâÞÖ×ソeÙˆŸÌéM,q<å@œâ›;eš˜j'è”· z„—wJ1J(uq ùf–5ø8‰2ˆ¿1†ì)í¢šÙl–§R¡¼ñ–•ö–ƒ°~|v0Ô_†Ø–á VµÑÖNYð&i˜Í/7 ÁcØååOÂz•µÜØ“o´˜C%ïõ¥-˜VŽƒYaþ=ý‹úñÛ¬gVb|‰ß_¸ÆÜð¤Ñ<½`t+ÚÖ=}ø²ç ˜*?êØÇöÖ/Ò ª²d=¹ý!ÄÀâŠ4Ý›:Èúôù‘LJïÕp(”±í ¦Ê:ç’×Ú÷ÿß²«ÒŒªÿedÌœ~øß/Cª¹\S®|3£½)¦—ßÁr¾Öæêõ.Rƒ%Ô5¬–Dæ[JPnï‹uS*Ôäp¾öI"n’Æ@j Í"¨Ô‡ðñ5¯š•;eâLú#š§_R"5‘Í£+KlQò5NÚY4Ï~ðFÈÔ•uÌÛ5ZÏÅ ‚ Pä,³Æûx)ýcð3ŽÇè«™ïÖX‰–¹ø&8|p1P/¿WçMÉM¤Â·•¸í–™ðeò憑#6Ñ@Ä£ü•ÕæÀKà¿!–!OTF\ð›˜u(¿=8Œ{cï¨;áÖòÝ7s#\aƒèœ\Òz[U]cDç²Ø{%&‰UGkˆÕZþNÂÚ-ÉvÖµø+Rr¸µ~‰Ä§l3H¥Z£Ä ëNÓ–ÔŽ)h,àjÅ2Iiö¥}ÓêƒUâ*¢Â èd.)n}Ž.ßy³h/]·.xS#[>Ôp^…0¤)ýÕ% >‘ÑÇ¡[ ê?‡‘l¡Ï3H™ Ãö}9'5úh^óæ\0xáõê¹M}ÇùÇE´€¯OßÉ¿¤Å6k¥N$ð[È…JNÇnt%:*'|õW>ÿž©¬ í{«¾€0¦k+b€±ÛÒ·²ä•ö‡Xí=lÊÖ,J|øÝÙ_aëÑHÖ…6}%(×ò>D=ÊÐÁ¦ü°:² ëé*gH(;£qY›$y§r;IÒã6Pv"E·Ø]@ò•ׯch¡ Z%ËjÒ~žï}}È]âßÛ®%1ö Ë[êgYÌϰx0v‹–Hd]pODƒ´ñÚ„3lü¿B|z†wÆ%z×N™Áíž½.Œ=z„^²VãHà n!2ÑUõtâ ŽòØ" Rqæ3–Ä7R¢)õ+¦ûÉ «‚zœwú':â—¢« ^O*["¶ýËT*,ržZoíQ’ú²º6p}wÁÑàq·ßVT¯žôÁ‰q}sb»Pw É„j…µû­°/aÊz®ÿ²ÎY4{{(ú19KA„ìo¸ˆ=ÒÚ;Ô‰ÇåÆZú´=©½'åYE#^”e" íÚ²_Ï4f¦î nëÁÔj¢ˆt1c„(Iu:>EÃ(*ô*CVŠ•ÉÈóÖ‚ô“MÞ{‹ª#Ô7†–òVÉš7V½t´‡®¶¼-ùáH~3Ú1ÿN\­oLìG6øÉ|pö¦õÓû¹rŽ¢LêÆ_‡owã®?¼Ms¨— ì€ìw´÷ˆ!œÙ¦Õ)×®pGûd¥HùÕ2¦ö¿ÿmXd>mîݶóœéGh™k:Xº¦KJx:(Ü®_øœæ(P(~Òuj8ïÚ·Ód·Ý} ’¶X3V¬¼æòÙ7:Òµk_—ñGz 4s=Z²çqáyJ^úWgI;þ¡Í}–e&ÒµÃ߯éH?ô×ÙæTÅŽºØïO gâìß-+'%¼öà~e|jPÅ×Õ4ÁŠ_œt?ê&UŸW…-øŽPS—ðJIa§ j,Žy@YÐät³©Ê¼ÐçVdG>}á¢ä¨w8ãôñ¢‚ŠˆÞD·£h§I² Þä^&‡•¯Ÿ¹›”Lµ‹ØÊã v­ú—J߬åÿ×’-] õ ˜[E¯.ø+¾a_qáIô]îKSIÚ9|äw­3C(B¸ÝwL„ßéY<ÃOæµÀ´GøP„¶4䧺' \6Öæ³1¦§¦*¢ Ÿ‹šEýuà–EQ‘¿ë•úkÆ:Õw±!ýæÐÞpW›p6µ‘r¼%ÕQº[€[ÐhÀ ]ü"2š=g6Ã.å@@I*‘¯“JÊ>(!|m×…õ¨ô¥ؽi(\1Π4yºõT‘BÚºa×çüQ_„â·x<>©…”ù2ý„oO•w }ë*òŠûð¬õÛ+T=b£-¹ý“Ì`ú„çU>½fbÔ6{U=+;ü‹eÙ 2 R=p"go)æt½g_™02j{SHo:œ.­ÌO8øa§#%Û›¶æ©GmL¶[‚¶a+cÌ“tu GØ• ® ¿” 2t—Ä+Åœ³)S7Åg(#ÿK#gìÕÛ»?…>ó¡—H%ò7MoË iéO·ëÛ`}J2æNh›-ô4EÊ.Û1´[¾Ã–Çq®W%÷  =®J¡ˆ`åùˆ“¼ØÃí`€ŠcsÔç³ðO+øcUÛö,ÿ§¨OŠiÁÙQ¦äœ³ ° 3Ì^æUÑà)LpóœyDÇ#ýͳ•üÍ"=ñ©”À0T"3é ­îóŸÉ2Ÿ“Ú°t±¤ä›Áž–R7ß;¹øyÉ…óÏ ¡|žLÏ5¤Xº’ÁHWÀ0Î0-™; E/'õ…ë/Æã”4îK%勒FPc'ìxÓ~¥í Ú± úP–ûÚ²~›eÇNey[ܼ5a‘¾ÔT?Ý(>å°ÅM?ÁOX><«xÈ 0“¢$Ìx*BÏ~N±‹?Ìîö n4Êþš†‡;…œ¼í1(yÈÂõÄ<úƒt¿¶Yž=}ŽÝ•÷É4½n<òü6£ ÙÛ(Ž·D2H ÔìòÈ31¤"×#ò‹êhûŸ””mË\i¥|‡ãZ[Ù(è;(|nÝã±Xw[=–^;5ÝwF=66&qÍr{ÖKÀ'àáVÅ/ï&'7«Œ%ž ‚)¯çï™!ÇFª’âïHÅÏÞԗ濾 «>£q;¬-†ãapìþ“dÊcC‡wMnBê%É)OÚ§K½HÇIå­ÛÀÃája{’%¸$Ù”¾; “FÃ2 %E a™qÍ¢ÿÈß¶‡Ç”©~ñSÙ©F-rg…sÓþ=Ö°˜F="+ìU6bq¦`§†ñ#t :9;_•¯wûá7à1fév MÏcÇ=†¹ù‚‰‘Á-!°»Úïw¥|Î'PáÆ^ô¹|…Ð I͸I8ý.œ¯ ÝNžåZaÂøÿ3>Oi|F ›Pù‹PT€kÙTXñ?!¯0!¼š%§¦Ë_­À.‘¤u®÷ ö7*Át&H ÑXãüÓ¶½¾žVC`é1½*ëÉôÒHYÁ3 ±™ ¼È×ie4Ù#›ôqúaIÛÍŽÍ$™†Î Ëeóö¥yÀI}´„ïÙÛfËRø¿¹ñaæ¡¡V.SCã„«W+ÍͪÉêÙÇ0v‘üöW4°«¿’BylXCT™¬Q…ê/Ü‘;á 3b¯¹+BJG‡ç˜5-·î§ÒEWXå"{kVâÒvìi8ŒÐƒW]2<¦¤Ü|wбú¬ ¡ZEÊ|XöÅkFí%V›á]Ÿõ^˜JÇ´c Åc¯C7Ÿ•7§ Çäû×—Ý*Ý–ùuü™èz9p=ózÆus´ý'IÒ76㨿ª‘Ñ7ä­6\Ù@žd|¬}¯Ÿè¦ðËØc´œ¨?k_ç–^WÛÕ…ì#0U¸œâP%†­.K££Ë-dÿº®dgT/a}Â*-LÛŠ ¿±¥4÷–ÄÄÛVXûT%Íeæóó ‰É^†û¢Úºr{R.³­’äyMµ þ¹~?·.›RÞ-@bß$Q¾I5½ÍóæNÀ—ÚW$iX÷ú’r#HððãI™ÑlíPt‰^ý¹n«ŒyM›£Ù¯XgvHòú,¿Çc‚C+Z•sÙ¾káSÎô¯Ja¿Úù J:Û—‰l UâuØžÅöâáÅžáž$~Q¼¦,Þlà?²•OÕâ{67…Ö&*]Ÿü‘ì‚×m{þëâŸ!ÕÂ2Ø&<ð ˜'O®ñA]r¶‰Ôýì÷Är 𑽠WòyPæ·Óß»> (Øú£û«Îÿ“ö›fêݼl)OnúXóz*ãýÍñLéë|Î5)áˆÛê]ÒERòï£]Ù-©V¸/—Œ¦ËuV#©Í—åÍ¡™®YÇE[ÄçuÁsue¹D MÄÅià(MäNg¦&ËÓÓYÉ©øDÚÀ¤¨…œäÌMØñ肇y·ª!Î~IrFÞéN±ŠY ÑUË“©4¡P꬀`Ì?ìÒ«sñ`‰ˆïD™ÞCBSNnFOIýÃ,(÷yy³¶èÞÛCÍ­š9‘_Ñᘡ,ÌõÆKôhúÉéÙ”E=s{÷Ù´˜‚3E¦ƒ2ÉÁÊ{øèìëÓ$Û%e  )*ßmúfúchŒ,uºî@ÎÒ&ÿ%œ´Ñm]vÖöµeÔ£ öaû0›ƒüŒŠògÊÞ’=sºîØIcÑ´ŽŒP¹› ×êM¬Qnä)9W¥B kh½jß.0*dÚÀe½(ý˜È9£Û!UÇéÇ€ˆ œò–3Ï17Šû[L‘ÆMžâv}'€-I¢¬› ôîÙ A˜ãÑ,Ëòû)pTÊcécêÆyÁ3ñØ.ì@F‘r~G>f™Ó½=œ=9ƒãCágf%¼JO:|j÷7N°Wò–lñyÕÅ41¹b1Kt2›^ ÏÈ#¦Ròôt ®§[kH@(°êô´jÆŒÓu›ÐÀ$?i¸©e=Z<+ÌZ–ý²¾…`À!±\9ï—ôïÔ~|U ‘Vd4ŸU÷Ò3ϨÎlVíŠÏÐ]ITh+ô#Ó‡‘›ííÖT5ˆX\¹g«"!oFï3Ò÷&úÀÅwæÞe¤ïŒÄ‘ϲ*\·goÅ-€®ƒPv'äo¾ýꪣÜYû䦴nÒ(–ÇR\àu¦l»Œ\¾ IþkÏ#ä®åȪӃþ›Ëï—¿ÛœVai ïTBÈÈçÙí;Ä0 f츄“¸=Ù 7QÖ¨âÖ³9ë‚ÿÎ-Z–ç”HfÒ×ÍX+²Eô^ZrŽxvçðžõæ?½E\€ ‡‹Gåh`%£õïÐgA zùhÙ,S´–‹(ºnHã.’}ûÙegwáó‡51‚Zxma6^?ðø+Îì¬âr|³&9Ï€Q'0úúÆ[YÆž.Ð-v¥ã šã(w!"mú²îžµÐ½ÆL‚…< ä\¡Ä"Æ/6µ¢wæÏ4ƒèÅi¡‹Ô5—~e8R.óWJ¨ÒðÙ’;ÄÛ;Ÿ!~—¹[³µmëé’ßÙ»"c †š¡J…Å(œý×0¬°³Ùˆ@¥Ÿ@/™ºÃ AÈüVøÒîÅЋ}Îk‡@ãnèõTsÁ ›ÁÂÅ>dà/ñ›²Ÿv)yþ½æÈ« —a¾×Š\lày©Z2`œü,ô!»VÍXmY^  ëñ©±Ë¦“&»m#IP5Ù‹ð0P…ððWeP Ë‹I\\ óÕ½.§fÜhг}×Ds®g4è„ÝŽ¼ 8²GgÊK/ÅêŒA¬N&:ùPÈ“ó4+2.R5Úæªª¬}øњ ² KO´fÌ)CÕ$ËÀ” X\¤ÆY¦`„¬e³[{Ç£kê6•VL[´mQšå0ÉgÚƒx0ê%Äéê ¶Û)V*+#2aJyWÝ[²J¼ÂZ²¶3x•^N(ZLV$Ìfßmæ!3¤ÀMžJg³ý¸#¨ª}—JEa¥ÌS'ÔªžžÔÌ3¬•ìP2ž€Ó´Öoi”Fˆ#xñ ›¨™ü Õ(º„¸±<_ä*ó oÕL=Ã@»³x‚,†xâ=z˜Ï¿`³½iƒo+Šp¥è*ª8ÃôQ©!Œ¼v .¦«÷¥/É Zž›v¯>”" Z?Ù~Ùù© 6ÓÞ¨÷9?àá'ù_êð®æ_ÀøÑÞ«~C3}ŠE^{_\6ÑŸOOÆbýùtn¼cð€ƒB ƒúî7ÜÀÊhb«X&¸“«ç+ JÞ…â?žR¯äëk.ÄÊ\…vºÛÔ!–,7›æHÄÍEý£ã’¬†(åRí6ì›$2ì;¬ÞÚÔ£iIz“²ƒ?뤫öìC†}ÓEö-.–Ë/Êl˜±L2N²L¹¥×žá ¸½nd“¥6™KQzuòhS—1Ûx54ôtSzµ¡©ËMT¿ë(Áö÷“ü"Bšˆ-«É鿥L鎸xDÅe]{tCFâE âºK£éeMâhQä2™6^$ᇇBBÔ‡ÝM‘¸Ï.þ0°^‹Uÿé¡vì¬Ia›ÖN˜!…Á-á8Lê­ý¢‡Ò4Öæ€Ãm«ºOÕNÖë˜=¥†Ý–ß´—ã¢å½ŠnèQ,|óly>M¸&¶Cr~ÌWT/ž ‡ÂW’‡nTç§  µ4ëGsèjuÉ énöºiÚí¶3Þr¿NjS©Ì ž¢Rý d•B.;ç :¡úµ º“¨”'—lØý‘ð¡¢ß¥âDÎk7ê%­Eoò&y['ŒMõ±ëÃ:…M£•Ût´»¥Vëb.«ÈðÀ’ÃZtW%Ó‚ÞI¿ª„†ê$"—Z#²UÞã ª¹Í¨HްᘇD;è1%%¤—Ö̰­»=|„nùhº¦¿ïÓÓv¿~ÔñXù Å£²qM=ÊlþsÀÁ]î½XÃóUíåøhù.E·„”Óµ»õvÉ´²1)©Íi&7ÛL1ÇÅ1½P¡¦×³>mtú’aPDÿ#¥åf¡ ¡|Y2$²lKÏFÜT©n èb§@½ä¢r†£ŽgÖi‰iËB>«Ìi6KË€gsn(‡/ÝÌRs%¬MLÖcfi'ï[EÞA¬;“°èLî†\¼µ®I(;ß×f&ò.EDmú¸a§X£·µËt"¡¾›²@&áÏEÐÕ³jîò{´U¢Ò“òËN§?Áõ3ªÏ-‡šöF þÍÁ‹p’É¥$acÇ™žÀÑ*lsÂÌëRiU???LUê}¿$•‹ÊCÁ—Ï,ç~OU.%¥žË<¤ éæiViÃX.{2!­B1Y\â‘íÍ„^ý/#…Ÿ-À¢\·®ÙQöÐLÌå7×<Þ h’ö‹©çs Û†¸¿—"Ù“ÿ¾n6drõƳ?_”*×hƒ‰2ƒ¢|vŽ&ÞØßYXûgHR•²Ñà×ÞÛ¼¹CbÆíwùoÆôn¸Ž}ØéÂ?´nÜ>çc+çcoÂ!L™¤l<̰þd¤âB›jE”¥nïí¾uûñoš(w ¬e^ÒYG7»8Ii×ZEN¥"±ú^c³œ3¥)Ù¶v*%E Íô–ÅŸÔÇš.V›u@ÿÇSÃÀ華ºòKÖl…¨ŽŽ„$ćÃf [Ö蓇ÎD{¬4Uâ_â}9Š,6ìM~ÓÃC%\¨]‹rÞIôð‡Á׳ïyÆŒj»à”Wwï»]ÂGøŸr¤WÏý•@Þ;Äè^•SÒ™×Îe”ìWd;&•0¾–AË¿fPÓJl}çµ»Ä7›â‚Œ¥bÅ¿ÁBêuɃ‘,¥¶Ãß'.F(^“ßy|5ÅžÅ-šXÙYe-B|üãá]¸ïFÿ4Tš¦è=æHì’óÄEPɵÂßLÃÅ{ß/ˆBzNö9Ö‚5EÇx:ëÛi¥O#íD%m.ÇŸ ÷F[¤{Ú¢MÔ¥ûh¼åÖŸåóeŽÕœI™Gøþ;cGÄì+Ñ{Z©“ÛIÙ¼B2ã*õ§Ó YßT¥4æmæG'ýý}ï{ ±Y’˜H—ÉmKž¬ð‚ìŒÝRƒTNp9)Äñpºª—Ü­5Å9ì^‚>òÔ;1í3S„T·ÙÈäÚÞÑ9ÕV„æ6½ª}‰ÇìÏ"ÓS¢ðÿãÊ9¿l< y·‡ o:¢ÌÚ2= Õ§­?•†€oÕi;«9Iª^‘Œ¬4áñ¦ô–ð31/éˆúf$¢hɹ§;ð©ÝeÙu`<Ž™j•)×ÚÅt ·÷)¬B.Ø^ˆÕk+¬ùE Ü«¶‘NçV?*-:z:ã_øaòì¥v2¶!ú½»tV¡ªPü ê4RPœ7@Á[Ð-€×të°lì18±L8TJ@? {?Ý/\cUASOÈÎea½™Gi»oæN•ýEy~@¸‚…ÎÍHt÷õýKZe¢ÌS„œÓ´97gGxiÆ¿¡®ÿzSat«¡mÝÿŒÞÔ÷r:X €ˆra‚éHü‘ÚØÉ…A¡ "¦‰ýl†qä®}Û·Á2-Z¨OŽž¶< ÀÂîº%PbTòB¶E#ŸùsÃfg1èsZ¢ºšýQšÏ°óÙçDËv€|x,’Š?Ž"›®_æ;E[ÅçuÏkì}ôà?ùì%â%%•é«I(÷¡è™þ9iSf’jaÔ¤¨#eAânÎrðäƒ÷cxã-½q Ð Ëà@±ë&'×±×ÇQâð„¯˜•XŦ±‘õ©™èdZCzÒ÷ã× F•¼×½ÓsêÀ’¨–'«±.±Zã”(£q¸|Òùt¶'¾–ŽãIg%{ìš5iS÷§1Ç=ECñ ™dâ®-ù5=ãÝ*Û6P‰Ùs9?§é-+nþ+‡k”¢¿I$¤äŸw°Ð §ý<,ÈV鱆Ⓨ Tú­@)) rö¾e¿ ÁzmçÿÍù‹~!¤¼¢¼ÒZVâÅ0?G—ÏͲtß37S:IÀßyH”"lÚœ²¹$¥©uUët•Èv§‹ÙIÜ6ê€Æ6VâÔ@EÈgÿáy‘¤Úœ…B~öA×¼AGe„îŒNÀáŠRë¾Ø_É !FÐè`˿ɧ÷ölKïcç³—ñuîy‹ñD8&<¸ô T a)3ÞC_žÿR¬å1ùüDƒi~‘¿‚îÕÈœz­´-HÒª1¶¨/ë¯Ä'KƯè²þ.%Ÿ)ÕHé!›œ×µà`Æ!ÁU>­§‹ŠPPXA»î/e<#¥ÊŠ’1LîDöÆÑ¿vó^s¼>ÎãÍ%}2Ðïì6%Œƒð”Ô¿U?PÛ„qG(eÏ\8qŠðÉ ÿæ8O¸U• ¾ŸBÕe•Qæ,ØC 8FS„iª}(F Œ9×Å\=]BÎ!ó_ˆQž„:ÌSù2åbÈÉ<:õk«_cv»À^"â2£B?Fe¦¸f€@X‘OÄGýü‡Š¼Iə䧟›ÜcöÜ.¤ \ ÑdÔàÄÿ^é%$—Fº|›9¾mú# }´^Ó.1^ëîÉ££;õÑjŠ•YñAÜl Η»\[©ºQõ ûÒûÚ2\‡p«Í¿û"q€sÜfpe!üxµY¦\Ôp<|»I#³Aðµ@û¡ü á‰:¬b« ù2˜ÙBVÏ2G’>y_ܰŒ’fÝ­wíºíÏCXàÉbfë?f"fVŸ ˜}<Ù]ýôqNPvýÕ®÷?}ÂòñZnÕ„|wò¨N¦%T[vµpÐünϘÊê<5ê`Ž"'þªÈû¯C’3õ¶NScB†H؇1ºíÊ „ª‹FMðJ]±àèGH–º W¦SÃnÑÚÉ94Jú¢ßT~¦ì^ž1Ub’Y’ùé~ùäù!ðåáRæRöõ ={¢Š[Q1ÁkÜÜZi[èJTáÌ ’þ;2„% ëd“‚Uès)1µìó<;éíCpì£a°@®"hSž›Ìæäm}ÔÉø7æPÝ¥cIç™ ìȳÿ¬3Ok9XÚÖ,ö¿ÚÜÿv~´œò—Ô•”Œ‘Q×òóz@±É%X§ê~v‰³4TŠnÏ?l.'5Ùæÿv.Ê-ímQ¼C‹Í¨U*•Z£†/— Ä令NZÄ6W`±†psà]çtûÛT©Øf«‡”-²’êžÑU€ýâP†Éd1 dŽÌ-–Kd.–ÌΓ) JSPo ëLÚ„Ð_;¾Þ5êf=4iª›Gç-Dÿ­+ÿO|ÙÞý˜Vò¡uF¥è펉 ŲZßÙûêb/¦þÿT0Æ)Ý™ÿ@JgðçemU½ÆD+Mgau¬&xaÕ¢<æ~q[É‘=ŠêKÓ®öâ(CÛ#/è7èР‹ õ˜Us<Ñ Tj=IH¤r~ܾM·]õ,§Î<КÝΞÈélû›«5»Ûuä_P8ÌùŠíµ0&™Á ù넽Š55Ý—mrÒFÅ ë̦ßÂ!!D¢îTÿ8¨¨Ã6ªÍ*%x$Q œ#t¿æä)•?àQùçN“ àK$5¯ûqà1™œ ﹪QH¬¸ò 9Úrz]5é†>±l%YAš_ãušf•ð7Ð[%ÔšôŸÜ¸ƒÖèîR‚¨(¬Ii[2½§õÏùGM½¢ÅRÈ2E»¿³ÂB¸®–&]ýœø²4åªÙ­wN´œ.²/ˆTÔyR뢶8•^’弬¡AÆŒ í»™ \…7 F·+¶çk˜ï2 ‡´9ó5¼ª–«&ªþŸFcÖÉŠ)-¼šŽõéõ¹׆*ټ삩Hæû:Ôy¿Ñ¹Ð†Ñ%ý¤·"׃;ή­ÄÝh”­ +äáµ Kêâ§NIÇÑp‡GÚpZqê+O‚®Xƒ:þdŸŒê°ó”ÑÔÊï 5`ì5 ŒŸ pv“kõ¯ÎÁ|êhº ¡æHwKD³››‹Œ™¿H>.ƒ×d)`„°àÿFІYC¼›±bA³ò4˜£`“ø>ޏžØöPÒ>±%oó£Ã³?“nÝ`Õ¶ VZ·\cÂ]T&æV.öLìNÖØ@¼ØŽÿ̃g%¾J„Œ$B¾@„ÿ“a¿‰î¡™–ãjÿ§¬yÇŠB±u ïØó–'^'nå{QåäЖ?âÈg¤÷ýѯ±[ŒÝ®_à…¦9¤^<º7¨Ÿc}[v©¾Ç~ m“×Ã\cu÷qAiä$—îyüx«6kQÔ÷Z²ìR½-ݤüÅôQ­n&2Aç‚h±­s’{ÁÖn^¬“߀°uºgÊc_¸Œíe^Êû`ܪ$ëca½¸-/ñDzÖ¾IgfМ¯ÄÏ6]ùè‘Wß^)¯¨Jz9t +Ïü®:æ qFgW^ÜÞ±)l…ûÆ-:ß·Œl¶®TE‚'8’”;Çüqÿ®’©òºRšŒ¶wE!ƒMqN’l¯m› ™>­K ¢§p»"N¥Oþ¶ÊvŶ²ç¥K'Ê«ú8•–‹ï./ùÃH6„¢rHÑ}Cé5µÓ.PšæÝp¬]ðÂX™ÚÄnÆÞ«¤yvydJ‰é#Š}™ Ÿ}$¢N;œ®hôút•1u@jtŽãç^eþ^(cZkh÷û…{L¡LmùŒ|ÈûLÙv2CCÿ‚t¢$åÇøÜM.»%Iæ±[Vç”û1\ƒµ $±Y{–*‹Ùq½ƒÖy ¤$9û¿M0ÁžûÀ1pW#à×±ìû2ºzA–œu*–âçÒ÷¶äúèÒxè¶‚K±9Zü›õÅxµòIÚ;êS t‰;2É9Ù²øõ”÷ î†ýæËBÉÿyd¼~ìÑcQÎÒ·ˆç[_k\æ?ʼ’y){îR~í×2®¦\PÆM=ナҎ}؈?x‰üŒ_ø¡¢UYßb¿Ñ,ÏAßä‚ €¿XÖgôÄP.osCÍm±íZ½W:…5âÑüìH8äÞÜyÝĘ̀mŽcÏýQïý¨!8Öêÿ›k´ïnà{foÍpEƒ»Æ4gòT* (ÌܲF5À+N›â2I t¯-œÍmR®\®¥»!eˤëìO‹õš½æ}BÂOGú¼µÔ€ÆfZ9®»¥ÔŠ¥â| (Ø7ŸíÕÙÞ&YšMÒiÝ“W"ȧV! eöš‚Í.6·ÐRݧHx½¹`cø¿»ÖÚ´cU[ÚýJžý™çÑÆQ1к±˜z‚NëÜ6оÓ¦>ñý¾kI™Ì *H¥OA%aeÍPÙU"Ofó©-ú¦‡“ÒdSañ„D¢4uï÷?gYj[sÒE{Ÿ=CðÄ9ñ¿a¾¬tsöC u^£˜²ÀšAr±Xf‰Tâ©•¨ø¥™ bÑ€lŒí㢩ªGZÓ¡)Ÿ„Œ›(Û°öÇ'øD\ûÄ›½òS M,^ ‰X·Ót’µžNÿøØ%‹L4·N¡{­”µƒ¤rˆ´æóf5)cÛûéè}ãù5žP'÷ôIÔÔëTD.”7Ngn´ÕWÐø3Ü#*yÜ1@¦ÏSË“·Nòøòõ½®è±xͰ/оÔe»Y]L&U"Èêqî JOãÕ ~ ÖêΚŸK¡ ¦Of;[šÖXÓ¯¤žƒþ­RB6ÏéëËëƒmÊ®:È·o¯šzàn§,!òdlÝó+óNyÔÅœô/P-«;ººPš®ÕŒÍ¯jô­³îïNݳP—¤§Öìr¼ùxÍoàêÞXGÝ4Ï ö´ç!WbÔµ ‹‹£Á¿/u-\•øØ—ß½²ÄcÊÁë&ú? =ܲzÛcQÀ“1ÿ›ðCïzî*à4’' &X^h±KkjLÃÍ'@¢ž5Q½åâžZêŸYcì&mífǾàÈêÔ*±¬)!è׸xË‘‚oæbó^DÚï–G 强 ¶³g 2ÍåÅüße¤\»Œn—_=s¢[äy±=!…ñë꩞#cÍœ½^^wNÊìˆË’=âVÎü$§„Z m‹W!Žà÷¡™­vÖÇæÉü›"GIgŠ‹˜0Ëâ‡ôãv……ºÂ˜jëÙÁeöH!å¬u‰QßÚ6jŽoh× ‡‹lš†AM£à]:ÌÌJü(™¹ãöø¨oô‘èûÔ´N«Å§×SLâ¦4©ÑíZW{‚Hã V]kÅp—'è¤iç®é{¹é‹«Ó0ˆ›ùbË„DG)ôF\Cʱ‹.·ðê»l®ùCïsXQrIƒïx[ÿkèÞ‹pJHµZe!Ï4ðe]>½ÕðX9pàz1RÆõ¹tî¶Õ²ÉOŽÒòØrש±‚2W¦[oèïM¾l¹®ëÞ¥3÷M°bÃNð*íwfPÀ†¾þ)c”:áèl.fÍh•Î7,G•œâ ÎM’”ºzøuŠi@àŪœ\²€µi¢3daXe…¸8–‡6}´DåךfÊ£DÛÂëjÿ.Ü‹E{’)²@J_ÝM㦛NÝ;>¤6ùòx, ü#ªd6¢ ´æ’ßBlp¯È±(œ|ïhWÍŪ«)ÀQ6%aÛ&ꇃpS`WñèZPSJ®W]:Í¿bNR}ç°|ª-©…²¹ÿÙÀa®(ý'x×täŸí ÕâÓZEJº›#%ËÿÑ×Â-ï¬Ë.+Glà°±¶ÚÉ8Ð'«yý;ç ‘ÖŽñ‰ù]„O~rØ<­Éó\“wA;}w7z˪ªcÃká„hЮ +L{ ËÊÔàÙ&çˆë.‡„•ÚÎ wN—¥[)J¨+_4¦f\ˆÆ5SD>Û L7&ñd¯Ä|¥›Óq-XRÕ< ˆ9çHè]”4» uã.SŒ|6™§Ï®±`ùÍ\X¥Ùivaº)W7 ûÎçÅ´“¿å(\ãþ€s<žö ñ~×Xç”Ó‘ª‡^ÏF`‹ç ÌæÖ-ºöÏØ,e.S¤‘ðø ‰ ßuœïôÎ>+ ;½DĤ½LZzå¯Ú/s%_œÍX1cž{ÆfÕÿyÔ7 Cwâ»'«Ëüÿ›Ê‚¬FCþÂ>ý4O:Ø>žïµ`ô÷ ˜D‡L*©>þœ?ðk‚Ϭ—H|B_×zÐl Œ^…ߎ¤ ÿ=ñ± ¾¡Ä`T%õŒã_ÈÝ Ô†LK`X -uömÖ›!4˜TSƒ ÏvÞ!Þ^òŒd«e.ÛösG¦‘`×}ax+™ã¦upÒ'4@DÿàMòè(_]„í³Á†UÉh,º äËm®2*Ê]Xü“1îóMy0Á¸À—cIô})I¼ðS&l -]9ñ—AT…¦5Äôõ™ìÆ¿RÛ±»¦4²Zá@õŒŒ—Lyêê¶ì¿ˆYmëë‰=Kî=Ät£Édpü€ÐÌÌ¡¨x‡Ä`LŠO]2£Ñw²Kôxs}[öáE„´X ¬6…+Ø^h­Ó8z´Ðk¼XDN®—y,®:ÝÇ6ï& ¶N“¤2”$Þu&¶óCóBÃè'à‹!Âb³ƒCg ÝÂÑú¨‚"ÓY_Gæ /@òæˆ8.uÒ»àQéžÖÎ@èÌ- ½_#ï1™ßвîhÃ\Ø%¶F׸s ÔKMýœœ)Òq\kLÚUáØuÖQJÆCpÒéG©NO”òô˜ÐPŠúÆXœÃAx› Ãò°ŽK¬*rXa-ág;Cë©ÎO£¿á*Ê[Td‹Ùªã*u€tY™NÁ ƒcrSa½Ç˜Wqk¹3G¼ÆÜ0¼;çŠ06L«å‘Èhõiì75!ö’[( %Æã\ƒËdÈ¥9²§·á~µ%ߎÇáõH¥~nN“( šÆ\Q¹ŠfçbDAÐ/`X„4¨~w1)RÓvöþ&õoc¼ýµ©ÙÊçNŒp‘kÅi{4BÙ@¿#(«‡}ð§ˆ&MêÖ'vUæœôâQ½äw 68•áô›œwB)ÏYß2Yr-õ¤‘ H«N ¿Í0ô¹~6 ÛqîsË*ž Á‹+-ÞLÅ£#7ro0&Î%)îУ¤X ”ƽÀÍWçU=ÎiʪӔf_{™B¯%cörú0C,+D ·jƒ¤¤û®ïâB7»Žò“ÐbÞÛDãÆ·¶Y`XåAÑJK¶;:Ä–Ð, ½‡Æú 1º¾ã¯Ã'ÐlJr²¬búÛ^øœñïÀþªl\Ê»Sô¥|"IY:cë)—ë<)MUä×EÂÕR—¤]Œ(Røú8°¦ô$?òÛÞ¯h¯ë?eØA6G—Ü< Œ}€NÞ“FŒÙ9niƒWZŽ <·uÐ¦Ž’¿n²˜¶>3Õj¶ô_Ö_·Â2*O ¯Ç0‡:k¤––ëÆCcc̆æüYF²³$Uö@‚¡uð©oÐãû5ú ä¯Z§R¤÷‹/ι#C^Š÷3“·–3s Â–kù‚Ò¾Ì}„kvåÝÏXÄ š$íİöñ>ÈYÿ­òT´Mj(ïi°oSØÌ±ÝSŒ*\F§l[æøë9ÆUnÜ8frVrÂËÜ"€‹Ÿ3‚:!†fÀØë›k¨Oõ_ V Z þ¨:›·‹Ç6¯3¨° ˜Ó$ìÙ/‡i (Øs4áHÇBdá¼åReAJÏ+'’#ÊC üu)E#›;RÕv¨§9¾Âû,¨_P)ðM@ø|<˜K Y ›2Š4&¢"­oÙÑ»ÔM5ºPè¡vf›ô9ᙫT¨mTÕ—ò£G²®çQÔ´E L¹ïKyÆn-uFKªÚv¢fw›~*ø ø¸¹Þù椷F@E KÏ/ucC{? ZOàBÄÍ~е°>ræJ”¸·è¹ƒØðmy …Ò’¸á‹S'»ÇN÷üý0ÞUÆï“q/-yœÐöÞ…–×S¤NbJ[ø»lîOÕ¶˜æ˜5¤¯ôòkíî>^δ™¡ZŸ,÷Kºÿï'Ybñ;@“¦l±º|Ù³9ž9¦»@´Š·óÍŸ)”Œ÷Ñ,úf§§–7nÝc/ ûä9ý(aÏP,ä…}»wÚ;†ºìÔq™^ š7_…•HbJîïË/¦…ü¢;ˆ <†”Qö̈– ‚â*ƒH9kŒíü>cé±RòMF'QOŒêL|UgËÅ}¦#~ÀCš¬nþ½üêÍ”Úô_“î¸×ú%Äx„õàá ¡´¾ ²ôZ4ñ›Þ,£\챨pŠïŠƒd•ïV‚V¿µ2Ö˜âù½õMºlÀ!èy}¬ùWçÝ? AF¿èïÆè‰“'B‘nü¬S'ÐÑYX-žØ'ÊkÂÝöx’¼rZ·½âGÅú¶w”5Mްš®:+>¸kÚg v¸ƒ„zûl}gŽ".÷ç4ÕJÜíóe Ã|‡ÇÞ(ÑàJû3-òQ.fõû]L·ÂŠ|m ”ëH1æipÊW‰óẹ̈¦B',UìÅ€\ιÜSvów °)Œ4(]B8öªK1i™ýÉäʵ);$¢‚Q^YI¿™M:­Ücç¶ g\ûƒqtùƒÎD½I—c°ˆa".‰—sãÿë.BͰ{ß>U3€1‰âŒÍDzŸ”³+eý’Óyr¢ ó(þ“O÷—î½–wU{îú £Z7=×_G*˜ŠFÛF¶ï­·ìÆÞòËŸ}üøoXäGÛ4á¼,žê4S2‚’N¿‹tx#ô—´_g€/ôb÷ZR&¸Ì!?³FÞdËŒNØx)÷ÝOSv¯åÞg€~ïÑ©än](¶€´‘ýeEÆ/)%žsØ*½#ŽAë•4Ú¿Ûº}ÿœC5ÒÙoj`j›‹÷HºP&“ñpqºMñÅwHÁßQ°e/ļ' èÐ@°\™RÃd²èØÛîy85œ‹Z GågÓÒߌý*5ƒÛ]0ÁåýŸ2z¹SÌôª@ÝòëK[u }9&Ý@-!îš¡mPÉ[cíÒhqÔÌ!§”Æ‚œ‡©Nò›4LÁrŠ««»ë  CxÃOÔÁ‹q!AœUÏšÌ š³úÊŠzž¾Ø‰0êáîßg/F®ß}Æ’_äŸ ªØÿ¬º·D/k´EÿÇŠHñ œ(‘úca±~©ÿìǵ‰°‘k±©$} !WxøM¦øð«‹Ð6Fdì~Ÿ`ò«ý÷ÇÄyo§/–H]5›¢p1{PÞ·† ÓvC÷ŽkVWÂIiáJ0>Æ×Ø øKä(+É&ÁK})ÍÓ|î2 ÷Z€ÑuÄÃWA‰mg€õÙ€xò²ÿ\ÖPÄ™â‹r'\ßP;É£Öc*1@¿O~]“ÚÚú-!6ÃL²(+äD{ ú¼—I^cØ3aƒªôa9_ÿdÛ-â“OˆÚw§=}-¡6¸ºI$/Ês#É´k„¯ÑÜ\w–ðòZÒPçqq‘òºß¸8Ki’ñ¯Û¼¯pÎи ëëov¬ytƧ‹úìJËÉB¿i j+f× =³sÂdÇi÷ 5.~f¸¿]È·oœû"_ð·òO¿qs²AÉä Õt¥þïðúÕ•?ª¶'c––b¾’žOSå+àz”U ɸ EÄtAY¹. Ïþš‚Þ;ï$žSσ{¥á‡Ás¾¨‹!CÛç µÌΣL²¨iüsn¾LeÁ|:=8”ôDð ÚYû3ÍÛ_pÿÝî f"Ðc‡¿õ²è¯åˆ§ ×L)æG†Òý|C „ $Å×5Ê Œ«ÍpNjé ®à¯tÓEH;$ÐpÀàK%e=£=à¸kVõÔDž‘–Õ·.’EÛz¤áL¦ÏKít³KC)ª¯øðÏ»êM +¿Ž.nâÎf–Àÿ"û…¼V6ígóÏÒÈiF%î¶ádønàöɈäëœ4+bË1.Jg™`°çöRí`¸ç‡üBb°)/°ì¿‚”n ÔÍ“ §ü&ÑNüOÑê­6B6x|ˆv5̘yՒʉù“T1@TÌšD·p^èÌïЫ (#vê‰AYÍý×®&YòŠÐ´ø ¦þ•À‰EQË}쩵LJÚµ§ƒ"*¿p R­rm*9©þ>’½qˆ?ŠÔÍŸšKÁiãä’3D¼C.¸þÝ¿'ˆâÒ[KiŸÙiªˆÅâô‰?O È¿ý¿ž¸ã^Ùœ½± ,ÇÖ<¥y=ý;ÝèS—iÍðe–®Ó/õ*”µ9>†û€„"¥ÿ¹±ãV=¤£øŸT¶Ì²Œœ£» `,¢c1ƲGÊü‚ºCª]Ý1Ku€¿C"Ž}BXxPÛ°OãO=pÈ+r:«3µs4¿Ð¸aýúF764¶îdV룖š˜ÌS€¹Øè/Ÿì’Ø-R¤¯SGÁ½—pàþœLÝU™ÇãLÌd÷¶—ÊsêöK§Íin³Á–ûJWîê] ÛÐê§¶ÍõÌv –‚£ÇÌ…Vä”­PFz>ù'%&ìsÓ‹~¡O_ Z„÷n[%­jz„¥¡]4ÊÁ¹ûûúßV%úó]Ez¿wÑ©Ê'í/%Úq‘ôù¹’þ"a!ÒþYÒ¥ œ<–†]ÌnÄÞ˜#¯0užÙÙR±YÓ%}Îå¹»¸yQ䮪V~yÓ+‡¨çññ¿žÁLÐnÚ±‘µqGü¦þmÃn”,ü¤Tò†¾¬ôD3,Hýo!àÚ]¿ W°®.šò•ö*K›"ñÂľBÚË¢OËÇ}’¯êÖÏüíêªh +‘{¹íˆ\ ¼öa{ìúBRB»û›¨»pçIdÚ;ŠI¤>§nè¡UÍ %ó <]ϯVÕx’xt a[i~ãÉõ‹ S!— ï‘­ )ØiÕÍzý>†Áƒ#†„ßÐ^‹#@±Ñ=Ûèe­Ì?Íþ ſɮ@y|ãÑ¡)äad:³öþ}·C1áÆúZBRšµkØBƒæ)NR™§Õ+NDu.VkXóèVЀ֋ "=wú±VÏqª8Uñ v=‹×ÈŒpì˜7“ùåõ>]0QòÒ-÷fTÌ m_\H_8”N/ì'ùÁYý!.+WÅRK7òIY9‹¡T…N¶å&_Ã’ÚЪ“\'>Ýi~žûTW<ãî ,Å,Ì[Âu›+´)Z'?VÏŸ¹Da{uîÜà7b·3îîý9î&)?^"YIÇóܦCm÷ë" ÒcßQ!¿¿Áþ—E~)‘ñ9ÐÔ”¤äL6[K#}ÖmâOÌøN2[;óˆjG‡îüõŞJ‘Nãd^·Am?÷ªY;qbQÒâIYgž%ôðªý„D%ÕóK ef-yJD+‚_Ùàó?#,û¯©(íÙâ9kœcÎÖý¯éj(ž±3“ƒÐs;žêÖ¼pò·æfãHøAŠþ®ïÖÞ™¼žâËt×c3]‚^^Þ¨xãræM6¤düòC êÒ=bû/oô‹ÕS:93,2™«îÈí'SKuüFãúý®RNŸlÕ¦Géj8%¬äû®÷~ÁödJU•(˜¦N2ùí[¼Éž˜’Üs€tJ¯c­ÿûß_%z6–§L¹qëºñíwÕÑ_X\늶éͬ5þï=äÝú¿VЊ}š@{IÇ G?V¦DwiqËz+84ºu´ÚK€ý¼î'Á(SO–¡N«Ä3Úõu1ê„a§D²Ñ‹”0 /s;ج¶ù7›–·SÝã&£‡ çô ·¢¼*œæã(dÃ0؆Æù´Ix*lâ—àÔRKÊŠ”çÅœ:ÉÂé¶úîj5:ÊùN‰Ë2 Óbu<#LK§êm]b­4Æ´eù¶~ZIs p£×jÚ³§.T€25:5Öa#‚ú…צ­å|áÃÈÎ%Q6óÐ@–‚É=0¼Y÷íN³—–^€šªÉT1Øž= Éz¡Ù;²Ê€þÇðG'È7¿s}åuPoò¡¼0HS߈‰—9®Î§¦ÇW¶Öª>0¡&tlïlu@éDJ:0éÂÁôð7ÓùmhÜ|þC¸û‰qJß#a¾tÀ&k/Ú{Ú¢Ïãug¢.×VÞBºRbµªÙÖå(õtäBÞLw¦ðÑÄÅ5¤Ñ#ð§a#\©€må«Ç<­>|““¥—nrÊ^¾Î¼vÍý×Ò¤™eôÙçìç•7Ðð‹_^¸_,µHõ²ä>­b³j6ï‰ük®âë\l±õÓ³5h7°Ô œ;„¯F˜9*¼Ë°Ë2½wo§D¼(\æ®i.ìšêAúÕÖ–Á·g¿®Ô‘ÿ²J°Ow‚°?JÔÇÈx÷Ž8 ÷™xññ-ÀèçªûåIͼQŸÖòµÄƒ~Âü”ñzävn^míОÿn[Ô*Z£Üvp‚°g9Î*ùÜöEquܯ¤¹ƒœsêaouïMð”3$ opv¾'ÈH² NHˆ½äåËB £Z•Ô¯ GÖ\QvlîIÚø•‘p™U•ù•‚?˜¿=3¾oö™K`KrI¸QéÜ 6Yy•Ùcu“N;µ·¹­>K ]9Îm·rÇÏÙþs:‚ Ç\Ûœ®&øw±2pÀ{l‘Yí·öFXíƒ?ÔoJŸþÜÙÍ ׸‰×j†,ÞOÛ—['GÌåM¿ pë;2·—ae®êJOk¾ÿt{/§~ÔÎ-´åNsË–æ÷²Aöyí©qXµá²a_#Ë™u¡¡}:d@!«1ûb£üæQíQ- ›òÁˆIWƒmÔ(–MÒF2nwp›ÏL&éޤ<šõ^̼,Ö‰b&Ø^:MÛSR1ô&7-‹àH£¥1Ûþº•ÅÑlTÊVÃú8ê$³:º#=ísXXRZZrbâ]&³'Ï(…BIЯ6`‰úWgГü˜˜].ôcS•³²2ñ·ée.‹Î©¾‹b>Ú0`9¤˜%Ò!ÿN9©Ê)©J £õ™-Û&K„1Jž¹´«Œr‹ˆÝD/á½Ègrm÷øt*ž¡²«"ç©ÿ¡¼Hæ˜Ã>½k{]ïÒûd1’aüui/+ºè1ðÚgºMÑÍ„+5Ù-‘zSÿ²‹ï—yùZá5Á;"–í&½ÝêË»¼¶¤¬ÅçO›0í}†IYýâñ ËÃn`·a‹]ëÖ¯Æ1“³¿¯Âº¤i1I˜“‚ ñ¢¶¼‡¦ÃÌli˜?û=Ðáp\Ðy~ƒ×œ˜óéÕ àè‘¶„(Ь—÷pù-Þ¶ÇÐ`Î,-M‘‘‰<‘òê?jÈuî'ÊKÏìš]=_é1I«1GÎÕ<\ % ûF-Œê¦¯:ÿk™KÿñÆÁçîDÞÓ¦&gÖÝ÷#·®tAOФR›°è\Û›ÈÇÙÇ=xßH rR¡Ñ_Mûz-_ =Ûölá‡D,ÍþGÙÅÊÀú0z‡“îb@ŠèD~ÞÛ£?{ÃÓ!=`[¼ CÎT‹•õͧÀ¯àôco\°˾‡Tï£RŸïV±gµ¢5U6{cµ|2óǨÌ[é·‘é[«éw¾˜\Œ:¨>ä[¿îâ+°W³-Z¨1÷±IˆŸ’¶-9,Ñ4"O’urxranêû’+sÚ±“5µ4õÝtîq'<ÍŒ¶Ë»nîýYÏS¡ž,Ðø^èŒÁ±°;ÚcíŸmEëêô)«žíùãh¥Æ.xjò¨‚Ëh–*wÜoÂi½8ÜŒÛ|i @²1G8ìàþâN—èG>6eè½-E­ˆ qï3l L›Ÿ'Ì"™ äNj£<ÕÞZŸ›mim],Þ"lXnŽl]¢ªެœÐê>ý˜¬Èc ôyÛBlÁY…æÐƒL'ûépTÂŽ‹ýàÕ,̶d|í&¸C˜}â_ô¹X ˜I§U(5¢—“9‰ ‘X)åøŽL…ý³ÖÁ²Æ)ËÀ:ùP3˜GÌÙ’àýÌ^×XFUÆN’å‰Ýzð÷—3ÜâÞ*Ûá˘û·"Ò2gÂ’ýÇŠl£y˜²Àl³½žõ×HOJ°Æ}X‚$$$«Ø&‰^vwã›h5ÁŽ+‡*LïüÍT‡vÊË#fQEÈâ†#žVʯkGwâÊÓÔ‰±;S"·< (ƒÕQ~5Ò3 +Tˆüq$McS öÐP&4 ë¯/}˰Ê5±•Þ’šðPg—ê*:í΂U¿þ± ­ ÿÔÀ4¦&Åfshjž´øÎàâ,NTØ0E®)àáÂT¢B¬cÎǶêfÔs®ŽW¤)²áG V–õ|iùNtã×wTs­áÁÅ5ʳ-qž¨¬–•³9Â8¦oÐø®°ÈnÜdYŸ/ž$VF;ó¶ÿéÍç–ñ‘.EÁyÙy^ayÁÚáÓ?R#÷dõª‹v¯S^@ àrÕžlÑo«%"U:~¦ä×µ}®R=Sž¡°¸ä²ùfwš»Ri­;ø<ÇG«d!fBs%jv+sö´ºèÙf¤—ÅÏ‚K ê#‹úÑ]KžLt%«Ë€sEØ0 làôÓ³¼¶·*¥:*&¼"9Ÿ8nëž;_hª‚’/õŠÑ¹›–kÉÔ±¡?YÛU֙ϧòÉ6_êmrÝŠ_Ý¡ßÃË‚Tkž¢9•Û¼È Æ"H5nYNdhWáŸú]6IèI¨BPóxŸ-çþxΊ?ûüÅ}^ùýÿŠØ‘¡˜Ù]•~“²$£”U0ý×…ñÞYìYß²FŒ ®:ydEüÆÓ›š)FªìqeAmä¯#…á+Ö ôq”ÙÖ gËeçE“¼lIÿíªÀÛ|;îBɤÛÈÓç7Ÿé|hL%w™ßf üõïÐwRZ‘•Ú<‹T§ÜX/ŒÂe³±…ø}î7þ¸Gæ7•:”~uiPùPi¬uÎÒÁ/s–÷4Iþp¬Ù|&YÝW„Å?ÜÔŠŽ6×Ï%è2åZ±1aÀ~b'ø' ’߀&€Ë IŠ45EȶâÒ™ü‚Bg¥BÎ:=…DtÊ%аXÚ©I ³ JŒãÒ£oÀ˜&~~™ºÆ±Žœšv4: A(+6Àä¿§a¨–ìßYzj® +k|Ž•— eC3¨9ʧÔ\âÎŦÑúñãf%ÄÏ€§€âño¿UÿÆ#ÔÔ „,§Ø‚f»ÜÜÿ®üNÌ%\7›œ²Éj„ ¯EP€MY) Oþ„Íø†¨Àº›IwX¤ºÀH®—1¶ƒÿâÄwÌWhõÍ¡Ðu|iñœ¢“é-~±l̾Ö/¨t†,݃V^ :£ªa—ýn)}²NHJLÝqfÍÜ0/ }ËúKw÷äMµƒM£.?ŸJ(‡!¦Ý89—¾:GX"õVº·_“y{N––wü­ëÀé‰Öl³C\“mÍöÀm–qGVUTñÍÑ,´§Š}!5”éâ—³K3Œ$w¶]žžÎ/Ó.8Ü‘kxƒ&v¶"M¹vš©á‰?þ)úÈñþãqNÌÂ1ƒ8vOƒóÝP8¢Xw_QÇÔ2Ul¼+Àg¨ô•1 cîTÒbÙôX×åé,­ñíýƒ…»‹Mk&çþØÀ¾ç(Éåcb +ÓÇe!v"W±wö(‹mˆÏÇ¯Ž±¥˜sG|À7`ºVj[4ÂËâŽ6 p<;0º}ht(W (#GîS¦:Mù7æʬ»Ðà9*)r;fg³ƒ'ø¤M“=šêÈ™ÑÓ}=Õ“õL•_äS,+Á•%CZ'&ý7ïõ Ø:ivõ!Á0PŠ6¬lgIQPõn?Í[2ÂNâoÈôŸY~¿­i’²2j±(Ô‚­Jä®õïv *+íz±zÖFz&ÎQ$‰à›9øü¿D >}“Ô›;ÖÒ=Nj~ ©nË-½®ä¸Ñfô2Õ\ùj'ö‰?b ¨s¾m<wŸ¨2g/ ‹Ø*77w6ŽòÛo9Ó]¤ˆP»ò£Ÿ~Ž•ŸÅ´èå[~s™Çáa¦ô4ü¥9­Ým&–:ô ––é8ÎxWìmºq!=ëÚæi-;ëã[rŒ2Uq'×2,P\¨ýO•þâ&É /~%ûõøM ttÍLX,þò<3”è#fв «×Qq…O'-]ˆÇ°1©C£‡-æ&O¯z¸«êa»ÌFìÞT™‘̳$fLHGסzȇe׳2åQç«ó+mØSÅÉJ œ;A¦„P]ú/ôv{ùa?Œ(±ÛW³Å~¥ÆÀ‹|®øš0 ÆAŽ-ASÜ‚Àúàù9C®®ö;mõá|¥¶Ák X*o–gyK=ÞðÆ2>¤ý8˜pd‡+fãä}Bc}ÅT¶ ²6S·¼8Á–Òü•ô kÍwš»á·Sýúš y™{b YhT:Ý”c“ƒ°þÙÅß®cä¾d¶±"2í?‹ñp°wÏœXÐhßü·£{vÞð˜Âqõ¬„¡3’Ë_ç7Ór¤,Ūú|ƒâO&, ¥xj—%¤ñå'èÆš(Ù9†[ð,ý…å"«P}Šæ•QL¾XSjÕ^ß33Ü?ybe¡Û„z$½ó‚•‚B·yI¶O%fþ#ÕÐíD«iM2bÓø ËÖGŸ‘ý«äh9Cy4Ü£²÷(ß`?ZbÅf÷Ê œg~Ω?écÆýØõM¯}OÕHe–åˆËÐËXÃ¥z—Žºû 5=‡Œ£]çjyþ×uæ:/dOÇ ä _fdÞšåPL¬ÒÊà.Xôg}cã3ˆ2€¨ùÜBƒju,¶‰ÎivÕÓ„äÔƒÖa&ífE†%Vçë)ÐX°ºÞtjŽR¨ ª.E…Ö«ûè4={à-Xá$²4l.KÛR–,T*rΤåS3TS·Ih?)m,¸ÅƒRfX@>OOÝáb î°5<§rˆù+ÛQ¤UEU@ÞMÓ.ïTäd¥½ËÜŽˆ¢o™¤¿(¹/òÏ‹à²Î9›Y<™Ü1f<}ñjÍÚþà6û¡Eã_n&ÇÚ4.òðwÆøu¹ŸÁñ%ŒãÂÛüèÜ®æ63´üʦðJv/¥øEDªá;S–­0ŽÓ]­hiÝSŠé7î —K µ†Æú¬ÑÎè Mµ ²tÊúͱ;›ú¾S*ÕäÐ5Ò9Èy-[t+Kç† c㎜KDìME6þË¿ô¸»‹—F󵫮"qÑït]EÆ'—57oŤÄÇm®a[l[Ú°gË•_3©Ä­TL"4àÖ\"¡O¹tà–÷?A+ÇOPÔâuïxÛNúä~¡úI9yª}Þð‘[eª ·æ-O[Lˉ±zñŠŸtŠóPk}Tßd^Ê3d@òK eú”FSP*Èó°d¹%sT.컌ºPßð@çpQX×ýæÄø·éØ$ª6ýµï²&‚ᬉµ~u&°\Ö×?Y——ˆ·Nƒœ`’ÂoRóùÓ€yS”;$:û{…F>zÒP'?§§ÑÛê'ËÔ¾5­Í:Hlà[]Þ%¥•ʦö]I~4™Ž# …¤q(ùTTl¾K[kÔ’û|ãÜ ÛÏ8ËköDdS‘q=5œ]¿®OãlE„ÖÿœV$¬3‰^5àÛ†%ï¼ñÑ»=ŸœšRô[´‡+uÓbÝz:KÆ»K½mŸSìÒ õˆ¥6ôºö‡k|“1ºoaF{,DæÙÖÁyxeP¡Ó´ ëõεMÖ)-¦ÿ_Ö/ ;FîÕ©?1;¬SEM»æ®öº¸ÿ[ÑÌ KÞAïÑ0‹-}CÜŽ Ë`Vã#À•àîšZ~Š÷æ¸"’£NñcÀ4ÿ’š`Sä%?«ªƒu3-Çh`^p§ ËIRÍW=aÛõOϬ8ªHÿI̺ã”_º¦/ÀÔ¨£Ì¶fGͰò¼Yo\à '¬$Úxk[ÐH‡y?2W*‚ºæÊçFÖ\dýþç5»Î­}Žm1j…aöwÓž”Í€gñ+´»^é–Ë*ÉÎ/};د0¢å"ø’î‘€ nœæNš-ÿ’\žâ«~»è2•”v1Û˜O5°¨f³˜º%O—'Ê£¨_Óg³T'Vå}¢w(Jåxcñlˆÿ ñÌ6”ܨÓkÅ ” qwi‡|˲-ÿŸaT€ê\^±·-Á-–n¸1›ÁQf…¶QPqàì6)ø?öÓƒ@JàX®nœ&ò Ýh¿»“ꟹ6S–„ø[ëi_é‹ZHG=§àþÀ¡f¡wZ/eÔIŸ±ÑªßBüåüX|ÊÙë*(]¦3b¾kïŒZíV»þÑ}Tñç«‹ÿ;u–1FóÑ_0ö÷ßâϯ$_éHøK¬Ž(ÑëU…ZãÒIX56›„Ãq±XÕ2¯‘‘“ÛÅî}]öþJ?R¿g°O¦ø./'_›ýAB:!A¹·5¢°ÐˆÒ*îèoä~Á=‹–ÙÊÎþ$t?[2ý’.¼ü°mtÕ²\¡J%(4˺±iL:›aù[†“ûŠgÁþ–̨š³y¦ˆÑ7Røm®¨'x uÛdÕKgbò"a«§fØ”ä¸o;dW€cŽ%³®v]–Z1˜V·ù“¢Kû.…Tî&L ë}âÜ«.êRJx-¿iÀV¥¥[¶œ{K©]KèÁ§êå”Ý}:艔¿=U÷ö.ßG³7ÇÉk~¯ E*í(Ô WõÌ?U•ÀÆgG’Æ„h™ÞáŒø¨pLmÒGy\™˜Ü&“eÊir½Dÿ§¡ÕX¡ÚÊ"~|…}Upd™¶€”ëÊú71^ó\_5ÿØãÓÒãbHŽÂg¦Ø¼ÓÎbPÿo+P°$ˆrÚS0,=IÌùœB\+ÞIJPvþ”ËȈ#'RˆŸ+ì"_£h¼á»ô[Iݶ‘¯ÑT¢1;aÃÙtáâe…4ÍýV±ª`f h+¥ðãD ]@Ñcóî ƒð˜½ä—ÈtöFAfRú—\ø‘¡ZHð¢+Šqq²ì’(?<'þ EöäÉ eÊB* ⨃åãÝ;¦N×2Ó¢Ç=;q¶–|êꥥ‹/)bú¥‚€ŒmBÍø7»Üp鿬)áÃ(qh&ï×xúFYž×/ª9GYœtaR¢Z¥5³ÒJžnò‚ÞÀÄêÄãûÕµf ³Ü. gñÜšªÅ¡"“ŒeC~’òôB>×€ÞÙÃwF|JZÓQÎaZ†áVð|Óé ôQ*¨ñûÒ—ÿj¢@ “KJêšÕ%™DÇ“b,ÓY‚ˆf·ªÁàN´§ÞQ—~õo¥†qsÿÕUQQxÈÊëø'áì¸ÿ1¯²i8ßUÉÊQÊ9oÆ Ã[i;N¢çxÔJÙè ЦqäÛ"ô¤ñ¶ÎåÚ5\£ùñƒ§×¶Úõ—3jÏì˜4h·ô›W¤ŒäŠ)TU_­×µíZõ’åÄ8… @¤Å_àœ*™$mx´rßšÌK>.0G/îšø³‰?}{á Þ( ´ðÍÎQX”½ªRÒ4ÄEuèÙ±ž\ ëM¾eh´ps!5ÊáÑZ€Ãr¥Hh´ëŒhRJ ¡²˜±‡/fdüý"É¡9‡ü–azV8·¦adg—¶:[õv‹]žµùsߢÞ̽SVê=ªÈ­ù«ï•ÞÕ.¦àè0ÔjC/¥ŸÐOÛie¡#[ð5Ь1ïÆ¾#¤Ž ûe_Z;¤%O«žᡲÇ6ÆMáö>›%ÛìÙ)Ü?dâé¶„ù×:Á/dr”? í5vag²³ìC†²æQV'á´6W²4ü7*í+ÿ’F}µ‹{ë<þ;OJy½ Jx2b>9b"]ÃGcŽãqÇ1èã™gœxr½»…Y„Å. 6nyfhîlî7üöˆ-{‡ïG ûñ¸…Ô†¤nì„¶SPèÃpˆðÞD6‘ÆEÞklÿHP¹Í{3t*ü1ѽE®¡b,˜òGmoî@NÅã‘Èx|[¹¤k\¾—Mƒ³½|® ¶§jn¾×ÜlTán3Hˆþê-ÔDbxFåŽ÷ˆ0OpD`jœÄ/Œ öÄâ8¼jDCCqJ<Ή‹7"wÖÇïƒEÐ#"èÕá ‹Fôàf̼3$8v.–ý=",òU×QmÄðŒìõˆ$þѱqŒ:½Ñ ×q¾ÿ•©&ø½äJa×<ŸQê÷žÜ ä•f@<¸ÛÝ3füÐQf^&[£ H3MHež¯lö^ò¡å³’mŸ°å•ú %’¾ze©YÑ5¬ì.mLî]eÙž-…÷-áhrH…»Ó§guÏKa\h¬qý™3}÷âUvºÿŠB}‰Ç¿¤R^‚¯=a‡ã VBGxÛ ;UnÕëè%pNQjrï!(íZ»Ùò´µàXß@î±UméÁM®ä&„þÖ´M'*HsZ:D¾"…ráòÄd'À²å®€„JhµÃ[[þæÿ¼à­½k§WŒBº²n^œ0n ð¸7u7‚^Ý‚“  *lÚ™¢™-[‡'‚Ù Ð BȬýIógb …ÔTlA·4E €àº°0ظ0ý0Žt;$ Å\ švÂQ‚CHa`}mw¨Y áƒBI0n?#,<Áä¼$J, †|ÂD²+Ê‹•ëKɸc Ù3ô5¦„ðQX.A$ßýÇs[x¼ŸÉŽÇãE6WäÚ*8D¶Õ¸¡:¬º»vý‚.°žÑ³[Œs H'+6Ýš¦?Ò² ZlaA¢") (wºZüÕÖŠ7·Sq¦Ìx€¥Î$£fö•|«N ›ÕlƒÛ¬"|lo¼‡äˆ쉯„ð‡Pè©6mÌ?]͈慼C‘,“%+”²$g­P$ɬ• Y²€€Q‡e00u†<“vBœ×=ï¦9O°ÚG=Jp\ i×N%42 Í»JH\µÃ®o$LfÔäÙ˾+g‰ï1¼¿ÂÈí(äz2qµv`”±ÒY Ý7±¡…Ü =pZÀs™¿7;hh°lm|Já$¨Y‚O!ª2}Mm~W%K³ŠEw°W|œGCB—Ô+8LqÂ%DüƒvæÅŒ8dìM¿¢ßYû_ÂýÞÑ—%#Ú¦æMTÊG E‰•Ò;¦7Ùv#Ò£„Býù61ï /!•«× (­œëF)ùai€t#g3¾m)è\ ¯Ê=6ÐWp çøƒXÜ\È+ä š“®€Ó³ã-t–7²èÜq¼™19‚a&3MS섘XŸ‡ýãæ­™Œ=züCž›½m»Á L00ç žg²ÏtŸCb†»Ž²X£}‡FÐHêdtENvö‘è §ïïþ‰üµ{àü4r´{gûh²äÁ.SêÕ0Îu$¬Èüdkײ½›ß#MP¤2Ôi [ÒÖæ·Œ[‰šÿcjÖ ² Q¦úS~¾Þ¾ W¯Íw@ªòIú%?c““Ê’í ?ý7ØTU£bJ¾--¯ ×Í¿i›Ô3{çɸ  íÂa  ¨ Œ±rŸøØI¯öwÿíæAß•¹zĹèžÏ£,[J ƒn݈>Ž;è’al}W7Söfºi=Q#:&tN':Ô&¹¡ñƒv0¾¨/U–V0 Å·ç[Ïðö—ò]ãòãXp+nOª˜t0ìßÔg¹ gâ¬}Oô;ÈKa˜/n6,ë“>J@d‰ž$!KÉʲd¢Üf4Êl)õ¥!ªÄG’´ ]Òtí—ÿE„âïBUZY-¦™ÉÝ-Cö§ÒvoLÏÂöNéìöÙ)’ÖÃv xQŒ··í©}H, ‹%hŒÞ{Ñ0tsBnƒ¶’™uÈAáÜ %^c.0,5 \*÷s( ¾ÌL¶VÁ$·¶í3‰¤º ¿xŠ“™ÉA)ÀŸ³û‹ õ}­$r©eƒt©¸Ä’XAÜ_‹º¦ðAf©k¥íäßs´"›- U6(¢ËÁÂrEÔ{.©Pbâ¸lšµn+f©5ü­“ËAEäLõû™(Ú™vÎt[šæ 7æ Ç<~•ß#¹9žW‹UÖzHÇWƒöÍ|'é0õóƒµ>®¤kh¨3øß4(Pž’齚\?÷hŒß¸4¬zÉVèCÑÝVÂÍv¾·YMµ H=ò®«/ìUkð;Ô?ÞéÿÓ«Ñ€ÛÔNÄ‚$Z`Œ°Ñ?/ØùyWàøúo Z^N²‡X$È4˜o>»ß#ï¢U¶Y‹hñÛ{nqRí`üMŒÅ;ªit0¾h‘L†[¹IÜÄ^ÙZô˜ÎRVJÝÍQj–N‘Ù´Âq-šs€h™?ȇ@ˆ"¯éüÓ×j1®B™'†I”Ëd±áÍYƒy¬àv!™hµSÍv²eíj¬ë=Un]©ÈÛsSª ³«9|¨¨Â1LqNwwð. ŒhqPÍ6²eÍjkßÝÀ ð’AM•¢±EA4ÉŽ…Ì´qÁm¨‹4ÂúM#6ý3—oݵéùÅ“x->¤žÈv2 SÏ´`{aã åÉðk£KCµ§š5qý.²×­&ÍE—\ýó>¯wí´þ3·:U dýfŒÈËÎg5¿›¾âÜsvà§v•Wï[h_Ûck ØHÔäˆ‚Ú ßñ µ|Ú ]ÃÔyÙ<­i˜<[•=‚jöÛšhd´]C©¾m0Rµ–x‹)ˆÝžhW~™iÌZå°}V5ö.Y2®N³ã?²†NZM¥3 ùâì™ß&¤ÜY¼êä‡Fê¨ÌNü†#)Ö¢BCªPh?®ë­²Zþ®/HXóa’“­Áïc2ÐêFUÚºäFtÖóù:K5Æî¢ÿ˜h;ïKî ìÚ>þ…‹ü ù×.—/^®™Þ0Ù¦›æ*WNŠlàäîkç-šãÿuмñ×€$ƒ¼ÔÖ pšƒ=*Úƒ =êŽ,i,.ìQ°ZT, x§”¨ ”q ÝEk9 ¯}ÉLiUŽä™µÿ©˜Û-â„Y¤Š]W=bqÝjT…%UZ—=‚ #mƒ’ª{w¹ÃTóØÎ9Ê{–Øì[µ3µæ°ddû¿vµÔF}£¿üEð,V¦(}bö&¯±Í²]Yý“º­g…(_ES_C©Ì OÉ1 ”y‰Ú È·–ÔØïžo–ùâùä&,eÕ=~¢Ed阒ì|ïԋ8-5m|B=káN‹QÁRk±Bè½ J… \ ,ðVq`b&?…›BÒ¤ÔýFô')í²FÙ„_É)É ªÓWæu)ß¾äå×3¦v‚Dß›:7мéÁŸ@3ML’|£êJR ÷ï8؉µýò ÆHžlgn.ι¿`Âæò/XÂÉvÜ0‚Ö8gNN`Ùhÿèïn¬©eË‚ÅÁî”é•ã)ª2sþ<§ä‡ŸÓ߆y¿JÛŸšýað!‡è”>Ô¸%§È%3{ÿMhM´g–)ëÏöáè@&EîR‰šTjR‹6Rk]mÎEÞÁàW,„'æ}âr•\Š=ëLLñ_§0jùæ"ˆS˜úlE¡bTl³ÀÍçê÷ôó¤ÔJ©ýCSÀÃkx$ßqŒq‘˜¹JW bº}ë»]5FjÓCmvä‹ÞøZV¶Ü%Â^¸¨©Áçb¥YY©ˆÜå‰xŸ‡­)eD/Xÿü;ô¼0,(í&h:‰ƒ¤þ>SÓO3ú¡þ>×>px´Yr¤.ž®\Kó9­=Lá^.¨|’&RK±Ú¿\ 'mzø´f`mŠ´¦Œámø,ì-h•⣚”x7‚à3°™Xß(s95eabU…ZJÍDðã° P¬â£g‹üíg.âŒ×ÐéQï§å‰0]ãÛm$€¢c¢CçÞ}¸ƒ%Ì™lì¡@Ûl×툓³h§be$«XgKXÊé;\›™¯šfW(ÃU [„5f0;öŠJÀH³/!q»3oŒ’Ç„¾¹1Ϊƒ%‚øÞb—™eçÍGNgNù,³'áã£ÓÁãU?L<ãèç§Îžà5ΉkÈNè àŠ;‰¹©Žý·›‰ƒ|„«ç¡åý¨Á·[ŸÃw[ǾP¡3Z>Ëß‹$ÍÌzÓö9 ЉáwŠÁ–¸†ØÉ[WDÄ1—Öº9®élPäü5·ÅšLJÝ›%_ž8 Óã¾J=€Ù_àÎÍk6|GáVWÛ,'989ï> EYˆ3ÿ ûúÖL.<äkcß9¸=å·zã<à …lnîa0yÌÀÈCvüB§Ô†ïH$ØåŸpd¹Ö)W² ”BJT+>ÞÑ[_†gíþç—nÅçXv*D×NE äcÍÿÜszdÑííÎÆ6|ÇÆ‹qØuácû}VÎôp“Åœ—8ú·/‚"©ýüØY~P¶ËuÄwà=A ‹9Ü‹9®…24¤ÅMJ Ÿ†uMý‰6QT0Ûc‹~ w¦¤¶¶Õ–JÂV½¨PJê8Xä‡ÑHß°áqñv òr±¡xÖÞ} ÏÓìÝšRÚ‹(­ží¥H­èäØÁ¹~Ê¿]±{倨½Š·2åÉè-‡°ŽA.k]4èñbw’ÕÞwá5<»${y `·Ž+Ê)Å#x¤#JP“¤N¥&‰³É `õ¡)m™ai¿d.Z詵xª"úýs‡‹~V ]n$†ŽC—ïvÅEØ\iµàqXë e5Ó©Y×Áµ‡¾„4§•ÊéX”zL ¹dƒÍ>bÒ™)¢ÆÆ7J#“O­òiˆ(=âàœÎ;…ؼ¦d¯4î ŒÇ×è'Ô ÎO–·]¯òslÅä`Pæ4ñïöAú ÀˆŒr’ÁÌ0q¯ÓÆßZúOAÓá§’§Moÿ¬u0l*y‰˜ç`W)¨ B µ 6ö°ÃcÛç„ú}xøö´!ai©B‹TÍ×€}üi'¨d»Õãðþ9ÛCÝç@_]4=l!nOX#âÎ[xÉ0S‹ž“”~x³&™âÃr**4÷hRUÆå×kPƒ¡ÐÀÛß[™ëåBV!ËÌŠ²c…c½>Õ ˜MÒª[‘¸>wX¸¾z8Òú…m±è1z£äçU²XYôð ßù5°Ð3ÿçýçN^sv¯ÜHTjrxrAN L>müâôJˆÏžÆ<¢Ç±Le7nׇÕlLÞH™C£U×>u&}æÉŽUpÎÁˆši'fš°]àvš^¼$ƒLÏ05^&¾ÊÚ ÚhcѵÀò>CÓ ÇÄÿÊ,¤ÎxÒ8ð¡{É&&QØœÅ!¹ŸG¡é+{êN¹Q©ô㻇ØzÓÙªäõn±Ä¢®B&¬¢§¥¦ç­ôÒr·¶• K×?KVêÁN:uªHT•”T®Fî¯õ†î4ñ½¸Óku2%nCÅÐ>IEodHž¥O«Ÿ–_˜¿PðL TqEUJ"”¼z2rï¬G°×¯-!öU‚]„žß™{V#ò–$â&ðJ’9+ˆbe¼ñ"X´X¸£kB©Ï/Ü%Ñxù|™œÅ7@ ”-DMÐ €ÕŠÚ RØvqíæ-3ËÇ’±WµëFΙCR&.æØÿÞB6ãÀ‰þh¦ˆl~C¹™ú¢á(ÝÑp1fÿ{ ÙŒg8$:Œù‹¬{ú*¸mÞý嘑ó;Þ¢9#hÚŒZ¨2n¹š¹ðt뀡~šYåÂô ÓïñT‰GA´ÅÈVhsGûeîfïŸèŧÛjò_;S[•{¾…N"ä ౩XIž }tíêâ:ãÑ´Âú±d úþ ñºO–cZOœ¢|Ü‘°!‚¦?¡É�è ]Òu ~6­) AØ¡è`y©[–u×’ÇÏùˆQ­eÓÝ• NÏ.Xm¿³Û ]ék™¾øX2ëŸìÒòƒÃ̬ñg'R«°š‡=æË+²Øc¸jô;/ƒ“¾É¾ÖmƒÑ0xâ«»ðy×ú;¬Z§v€Yñ¬'ýk•Ò¨Uõ1'ŸkùQI¡щ¯¬‡$Åöš÷jìØãFý-©zÅ µ¬_¯¶kpoèR»–± àßøƒÏ:QH0¸ìSôÙhö²·ßbqß×ϾG¤q¥<%¾¿^‡nÅÚÝ—7 7ÙN@r!üÁŸ 7“¨Ú’;ëuuÛÛ9°® xWÉpŠõrÒÙˆˆ¡A<Ã!1(HgÃa=çùà[ÿ÷(¨·ãÙ†{㌅6š@q£úÞÃ.ƒ<ÇŽ†îPCpYÿªeGªÝ.*Œ»lK»¼ÁÀl÷ç2ßÅjà• ÎÈî˜9Ýo*6ÿp y¥”7†q¹Úˆ¾‘U,Ú¸Q]Z*$Sªb‘Ã%êÍj_mmA9è¢_çnˆ,!õSñ.Á]°I½)o“j“YŽÓæ §$d*\h–$ ëQP JÍ9RîþZuY™`ŽnºW¼TÕ¤Þ¬þ~OÐÖÅLGÇP]˜‚pcðø£\Úpª•;wjÙâØ Œøö\ü-à5r:‚ç|ÃËŒâí´;>x4%©‡/}_ÿÓç—:{§8Ô·b Öffw•mË6¨âÞ¶¡kéâˆå†º~CÙ\’©oÞL•¸À(ÛoŒ$¢v×<ìÈBC´kŽj–è›Êñ¯p„‹C²Qæ?6÷)ÚÌ>®xö²§ËGryÙî¶ ¦Y• êEnyÑpº ,˜!Ï ‚ç¹ ¼ò»2ù4?6D>&رgEè5†ß^fH.y?”ß­NþI²ƒ“fÎê”}SÔÉ©bpc¢Gì'¤ŽŠ3ȦRVw÷ Ï“tÌKždi·:5°#ç§öXr“ý(k¡YTõ/ƒòdZ »…þ+Õ;ù-_¼ZÊ,½8Íùõe|ÇŽÊ(åû‡Ý‚¸l˜OpÆ‘`¼5ñ«-¼ã^TÇ/xƒLB`_GHŠÄ\¥çøqŠK(¸–N [¿:رÙ7Âbbô (9jé|`pqùê°ñÅeÁŠ Êýë‰D‘­:«Š´ê”D!¯™Õ9²Ûrù ™ü…\þWáQ+ÀQ pR~œLdŽ8‰ºë€µÅRQÈußpëRëý¢q¹x®Un5«¤f»’Už`Ç•¿QRÎDËŧl¢!0ähÉMðÒŽTìaÈ‘4‰úŒ@3&}±R.zì‰u>Ֆך^z²í¬‡ 9ß 6+K’ÖÇ ¦Š9tgZ‰»kÆ) 7 \¸ýu†€ºñź (ì>ÞÔEL梩ºXÔ…u/©Ê.B¦X5ž“ÌÆÜm»5È`¶ñ¦£PÓyëö±én­»‹!ðaV™CõTÙ ¨q [´46å©¢ÙÒ©U™+—KþÎÑ4c4¸UMú±Jþµ—H\`_¸Jm[%ÿa5ý+_ݶ–DY°š ·8ȱœ^Ó-P)Š,­¼ò6žL¾ŒåË@™(]£Ieû‚²¨»ÑðÐD|K,Ǿt¿<›ý”äŽr©_ÙìÏ~œ‘Ž Ú$# Ë4š2!I¶ÐD’rõçøÜ®5™±ŠÍ"%® DañŽ qccÖ‰†e ŽM¤á/bq¡ÌxÞÞgìø¨RuIÅN!jg`Œ·†Í&cT˜fÈ!21Rè apŒÇ¸Çø° P^ +²hî†:„#‹0ÚÀ7[Áð, ¶ jÉšC±lä|Ñ„U¡ˆL C€„DíOÌUN}U=¢ä¦àTÅÓ»U}JÙÍ^%›ÈdÙl<‹ÑvtŠÒ4šr!ѾD€2¸jZ\Ð~z6ëzH5”ì;“õŃ3ƒ; ÒÓÀˆ{X(WE”û˜#m¾³]¦yƒN.ÅÊÜ¢4œ®ÚˆXÄmW¨¸ÏÙµ¶-O–`±Kø"ÛZoÝIÂÍã7 ¸ñ·àMì—–g“pÉÓW ƒAÃax$Ö‡î½öÒ<'HÕAÿ4’ih¶ú¥³Ã +±ܳôºS(|’¼˜Š(Š!™ëÔ#JÉ u`ÚPð*ÜGî#0žõû$›%èáÍ—zWņŸz°ŽxÀ—>h‡nÝmwåë]Õ6ôf¼2‘*tNYÏɲU¤tú7.§¤DºÃÚÑ‘ˆyy´Yöuj¿ääH=]†,£Lr;©ªÀtþ^T”ÉõÜãÓil®©ÿVyO´O!Kž Tgï’d<êN*yIþÄ+g(ŠØå*b‰§Uåcålu=Ii6¨5t³Áe4é ;©²Ÿ;&ì}ŒrvìžXV9â)9_¦ç’Óª 7Ù!ö¢T6/-«Ê·U—礕ÕÑ”¸ ,ÝV^2•©SŸ­ÃüH¦‹JÂS|p²ñ,äg'š% ¦8—¤<Çá‘©îìnyiJ\Z:P讪ÊËK*EýÑ bv'¼OpÄq¡ùËÕS*¯¨¼]q]ª1fŒßE÷vÁ T¹•W¸™Í™œ1N~s¾ª¥¯Bãrø¡{äs oFwLÒÞ+Õ«Lz]gøOGíÜvDCŸ÷PzÏÚC,?§ßG:à ¿•T&5ùõé„Iež¼Ô–ªU*ZJcÇqûfô­•‰.V¿cŠ1^^6wŒ›o¨"²æ¸È5ûX´å[ïß§€¶÷3ʸ±ö9⺂l³–`Í;\kÙÎÐÜ&g‘ôoeŸÈþu¡æh;޼aÿqh ¸öáRBOõ†Hœô†çÅ!‡Ma«±Êjå†/Ä€À¯ù‚ƒð6‡fÅ[©sûØ|Wk³j¸\>ûhµRÆ™K@ïØyz'KSýu~w /ˆá’AÊЄ– D}µ{ $Öà\š¼1+nkœÁY` _SVô«Hª¬Òg­.k‰øæÝzCÝ&×KMùÜ1n¦9¾¦[²¶SÉý‹nOflÍjeŒ ¬$«Xtƒ›ñ8B® úGæ2⎒fI Ô|BšÐŒeä1ì%¯p…9Ø\F.NÃ-ù½4q÷ÅݾÊåÛíHSvp ÁÆ!ZLøbf1‘ÜL´r¶Ý›ÑÎMû 3^N†L|Kv`,Þ× M»ÔéwŒq2›P?8P–¿ØÜG;õ!¶´5솤mÍ6š­=ÍNlªr¯~)C#!@gWŸ+—ÌêÄp®aѸ z¹¯@OŽ`4Vj×fgKx5í ‡•Vƒ\ùE¡ø¢”[ … O!# x ýþG Çd¢ŠuH8âa’2Øj²‹Uû2aˆß „-'¤.)6ãGHü¬„Y]ÖÁÅàðNü]vF"'¤à³.ÞUõ¨¢,̧(¢“FЂ,@E"ÁCT§áD)6½q q9k û`4ir=k91¼qúzŽ”„ .ªªî=H¤ê¬º§:œÍ•(¸Gy —ž˜^ܦ§GtU[â[IŠ$¢µhî ïÝèjRRιŒ¿›eµJ^¼ ’þ¥’ß…Ù;ìõ|^—ê¯.×…üÖ*mm“¶Ù8íÒ97¥i‘P¿¬Ÿq¿8Ý'èrToÖ ì2¹U¡7Ú2Nç¾~¢£flë€Ë½éã~a¢þd(,tv·lŒ5Bz¶à˜¾ÓKÞ ×©ÀîW ìØ%PL­½—Ä;˜/m”½»8„ö/­²^!; ÎK‹ì¼-j ©*úãI½m­îâžmfö 7Üm$o—·rÎØÏü˜y—¨sÅrVrtèéfHî"8q æ%Ñ¡ 8Bê½±¶3‡§(ó™G¥µdŽŽ‘KÒõfA™Ë¸QäæÏ3Wdô*›ƒP* .ö¥ÁM£Ü٣ߔbò‹ËØ;ÿN²(vg:á+Mßo=ð}P¥Vªô9¾‡ˆ-6W;é)k|àÛQærÐHèã¡ýU`šŸ´2ÜÁL²ði㪯¶±¾ïåØÿ«jÚKiù”ÒæBG1-Ÿ\Lì…T,L·w 1fZ³²¢š´ñ‰?)¿gt"HæÍ%é½6£/¥Ð=8q¨ŸÕ™r½È[XàòÓËÀ¥g—óo|\©þHmÐõåî”1Ûå;Æ3u"ƒJ¢øú§?üÇÿ€÷;üê‚‘õñ¹G}ŠÓ}bõä¾––É}j1?ë_]±šcŒ‹:h2è aé.àý¹d5µD¦+‹Ãk%[›ňö1?yòH¹zòtæ×i«ƒÐhpÏÕ4'‚Ð ¤ïh9ÖJ\Ú‘Ò!h4rbi7×IýÖQ…½‚+óW¦¥¥xÒ>|põ|HKûÀ_éÿ N"RrfæL]\¤`aî{xêÙV¿h‡4ÎÔÕôD É_æÊ¾‹¤[.û¡Õå+³‘ANµ‡:—w/ñSAn­ï²Mé{ÔOøۿcH'a•O•…›IjŽû6.wB›ßÛ¬E8×ydâæÍG¿pE·Cßçà@{©ªôá<Ò^.Ë4qå]ÞO»8©r*ÍNŽŒæ'£Ñü”ÓszÀ~áÒF>?FR™+3Ì G•°«s(™*N7üšüþCªì?Ä•´ÙÇ㦮kuqzÛÚ° ñY_«;r) È„º3f¶! ¢¦úyb¸jÅã^Šú~?×Àóa—äi# ºõ›þ¾ª%ÌË6ÚÃf»ëC½Sàiîvø!·¤rÜv ¼Ž {6!øù„©‹)1õП}¦ÿúAÔ˜ánGÎHÿ½<ËÆWX\Â9„û,"ÜíŒý?ðWCb“z«\‹=ÀŠ 4/TýÙ êºLÈÿÒ¯|¼ÂÃnÍòVÊòB` wŽ#×ä9{Úû’üÜÙ÷ñÃÓ˜iN‡¯N ³EÊêõtbiÏoGÆ µrtÒ© w ×\}“/_<]ÿ¾úô»Rhqõí´0önçq9õàÏYZ8‘Ö£X[.6Ç̽UpcÊ ´ayK°_ŸviàF•úµ ÚLËEš òÒF²NTÝÕ·ÂØx yB Ñ#Ï„òNǼc-ݾ‰Ü1±ÓsZA C)(uM–Ã.Ò~ÿè£b¸§©h§É²¶XÈ®Ýÿ¿ªNsü® ×¥šä2eU@sìÈ‹˜iËOE¯ɳì§3 \…Y]}-C£Ág"4×ëˆÒ!qv†¯;*"éÚµ^Ì‹ÂþÇH_\Žÿó“"ÂËšÿM¥ŸVüg<\õÆÖá¯Â>ˆAhUóÆ¢Ê ÎqÕç&´o!ß™PÐyиÔÔ2Û’zØ¢Oûú{ˆ9ù¨‘žÝÞhþU”äö—“&úÚ;q’F3†äˆºStœÜ~ð<3†1Ö(»Ãq`zDc̳¥Géaœ°V;¹Üoƒ;çjÓïÆÇ:ë<×À建‹צèèõ’6=¶ Š€˜•:Lÿw Ó&äQм îóž ×gw>‚L3B$Ź‹° µ©{•jd‰9<“„‚/)ìÈ›«Éln1Àž1ÆFW–­·U’EMÉsYÄ2­ÓšÁÑ59Zßm +P Ïz8~3èZñÈs# C¬îŠª²jÞºÛ®Æuë°nŸµãº2äqb&¿¢§Y›Å÷PȲ§Ì'‡Yéém,h¶$_`’rõ÷þ¢ds/AŠãÕ‹ ±ªøºššŸ¦ ˜8G¢~Ç”„!g”ÿð¡ši{i“D]4V •õ÷)žéÓŸéjî V¾×!ºWn„Î^¦ŸMÌ6IHýïÞc%ë_NÝÊZd8ºRþzހת{0]”èn#’o°-©Ê)á–\1£¼Í\¥ö+£Ý…„E¬¬ê°Œ2øö§–2¹˜á°Êжù gBKdÌ¥6½cÆáîÏÍ1*·ÑÃþ D™c”òï««)]Jc»ž×Ôz)Ó¸±0ÇÃÆn»Ï6ð^WÌ[ša¾aáæ¬r™ÔÊÍ rf¾î.þËmÜ- KVƒ¾½‰¦áœ”ƒÿêÒø·òS4±›¯øRŒ°Š5+ê}a5:ŒÀî6GïýqÓ!½lט!´u-u2.‡7ˆ+¹½Ò+ofYmÃ^óF‹(šd’ ¨‡)áÁûMB‘utÙ’æÔ–Ö•Œ‚•ËIÛ'Ï7¨©A%dyÿŒ£KÆ×xÇ#ÝÉÒÞu{+ƒ7^/Ú2?OwÛ,kJC…£÷_ž›µnYžÄÜWo_r µÖÒ3Ÿ@¹Û!bUÊ%Ë-Œn 9Kƒ`C|œÓf'¶jR¿Fê.ÚaTóhµ¢;.€Ó:¤1ød,r>dQðäR‡–^­Ô°‡!«áéÍ ¹T ¬óц]·ØWä®Nü`B` Øæð+ ÉO ‹×3Td\Ô¯ÞLKÕ¾ b,BéDúBYeiñÝlEY‚¯mŒZ¬ÓÖâÍgfÇývhª—"–"ËŒ"»ˆqåF£i"u»¡!£†È¡†±Í2æ€aOþë Å}ýøôÄÕ¸öFˆ¯Þº2S\(±žà:&îÒf áXÐãô·õÈp¬ËnÛÎV¨•– µ+OÛ:Âs&ìÇ—žt$›ªŽ¢1‡3a‡1è£<æ©P؃,УÝʆž–Œc5Î4#œT²¨Ü~î’€æIAá_ÃTƺÄÆøQKj$#Ž»U+ËÙgžV°Jhöߎ%¥sú±¥óÂcðxXn ‡jA}©ÂÜ¿8W¹ÂnÁûÎP¿mÄÆŸŠÂñK2jøKX „û=‰›ÿŸäÏM{2†_)Êyc-U";ÄfY}¶;[1û\3Ù’©¿}ù¤ÚóKÿ¹·óM¼2‡p'Á×Vžë¢çÞ½‹ˆ³¡9Ô›fÎwM…ÑÈÛåßj\z\L:õãè”×2o:nút? w£á»±¸+Uã[ŒbIy“"/ð n-+µÜŒm§(/Uáò0öæ¤:´A…€%õvQ€+ñOJªN×Ôàa¹}Yüâ*ÆÎoÄqѼºé ÆÖ>yX¹6YÑ?ú4¨È§m(bÈ}è–]±ÒT…UY„7Ç«)6%mØœãÕ¨;¤€Ò(*©W­çg:n}_µÆ×¶#.¯JN5)E1WXU Á@ 7KTN¼ÃB5k%ªÓdÿ³ŠÉåzoéyÖF»ü†¬UmôyÐYU#§ ©³.-“{Fžü³» ÐBº;žÅÞÕDX%7røm°Q`,ëñH¶^,ôÛ—y»Ü•rT¸FªgÓèN¶À9Yï=ì[4Ø£r: ß0ºü@Ó½©ïE}yýÏ;ÿìKª"5I—Éð…Xú¦—PÛ5”q ¹¾ {; zçò7¿„Å¡Ê[nÖð郷³¿»ðCEÎSë |›‹i¨éUU¢u´ïýfP#¾yÂQÓÍ…¥SÊì¯Yµ4Aù¹?yø ø…û¢¬¼OàÜ&ÞË6¾¸öžãéÌÂíÔk«)¥ê¸ÙÖ“Æf?&Ç®7³ý Eé†ÀÒ¸é]°†ºñDdh2‡¥gPRÑ-y›†kåµÇãŽë—ÿò;ò¶MÍõ.oxYÈmqÙ3U‰cÒ;Ó9Ž73¯¬^f`¢ÎÂYá0 ¹Á}Ê(@‰VUU»Zìî¶j]Ç®üd[9­:×`·4ýX[ÞˆžÉX"„¨ê’…$柲Š5ÖËa” 4ÖoP¬Ã;%kiÖ¸àz„ò¾S²³Àj/{O­Zšj"2pŽß£ß½ ËSòÌÉ'üÑ %¸ODý@ÄÜøj=ÿ:NÄu,™èÃÁ¤.Ï ß3dô9ys4õoøá×ÇyAl±óÑýy/Ѓ’q ÑJº“—lqtü-,ô#táß´6á‚R䉊‚ܳN\Œ5xC‡vùÒ醱gÙœdð¥Tzìù‘¹°ƒSsÄ‹™¹èh…¿Üv—MŸp$,!Cq ·Qy ›`È;f&Ô#¢Bľ< dzìç"ÅlbO éÓ*ŽÜÞÕª¥n£-9¿G%‚”ÔŸ/í´iŽû¹ïòÒtÀiooglÏ'ò¦ÃG(* eÓúóö~qŸª¶½óiÐÐ(Õ(¶ù9/Aùy·D¶ºhÜØÎIèX†-Paa4ÕêAW·' ÐäÑåºcJQ><Õ2“gù§À ©N=«¾Ù×Ç‚þ¾A/Ì#›qDÂmh`“7~'L ÊsžI@샗ÏeÆòºÛ_<;æÒêŸ#ÿ„@^¥Dýcù©4z”ÔÞAuvë°ld 0‹'oøïW² 8}ÉÞllþ®tº>mDã´ž 7*šeдÜîºÂL¤y*ï'kÝÃÁ%Ï)8áÊ$¡Œ¡ý{Ù‘”Þ«cãrk?Q·sÛ•¬ŸÌgµ§µ§f¹AW!ãÊÔVüø)‰ç½ðRh9|Õ.Æ\LIñH—‡^ê)_ºÇÀe ‹îg»e|Ù)×ÿ6¦q£nX×b%;´7Í­¾:ã3/G’$ñªÉ±Ú›÷™Û÷Ï ÞwúÀûcºÈB ¯a¬¬¶Êk&RfÓÑÐíº÷wÇb Áä>†ªº™.X€5E@„8Þ?—pn;Haé¸‚Ò ëæ!8õ¶<€4»Õ¤}g[TC’v^µki’F¥ð[ìΑ^îR:ç?*ÛCÛ¼{›_=CšND¨ø ׊c·™¼GæQ™fÀ½æUÕÂyŠÈúº®Û*rüzžpsê±²$"æ‡Ý€¬1ÆÂ–’KºNÌ”L$›¿W±<ýÌ"=©sÒÎ2³€,Léâ%GfÒU?Χèe rJ(µYΖš&Óž fìî(=(|Jm5ÇM‡JD³ôô1Ìý^:l Å[ÌñÆèÔe.·ÑoõäÓ9±?‘„ú©´;tŸÚÇ%Ñ d®Ù† #â‚Çñ-MÆI¹Ì<Ó;ÀñU}A¯ê\h˜é„N"tèt¬¡*•ë†Å}½»7ÖJ~ý5§¥¥`¥Ëç%ázy˜b.·Ãä6^VÄݯëÆÒð÷ªêöÂEšÇºÇ†u25Ù¾Q늼±ÂyöÌYn.±‹7BĹ9¦Ÿ°†|s½§b'¼‘ffSÈØçqK§®Aáf¦¶‰¥!”•Àµ¢=Ý/o°žçI œ‰ï¨ù‰Ì6ôŠ9ïÀ¡Ã‘FƒKñB±<+DXXοÀ¨Ÿª{H/±OSÉq$¾Õ"òùb4ü «½5h1{'¥ÓOH¬mSx™µŽõ¬xViW¿c{.à|òqÚb+N'ðæ†Gbø_ÄͶ¯¯;;‹Ds¿Ã¦+ò§_nյδeÏXN›öÂá4¨¹Ê”—Òhat¡¶Ð 4Äù6'¡†bt×Þæòe žºû‰Zˆ¶î/}©ôh)® YŠUtVÀ¢êÐèú(X¡0™<¬Æü‡>Nœþ˳µÅ‚b}àVÅÖŸõ®5_Ê”»b¢ ·œ@×O'£@\(e=´kƒþùá •X¿Ðȹ‹müZt@Ä?Aèl7WKŸÖ¦Óâq1 sàÀb!ÿÅ{ðµ (ƒCL]0†¢:«=.¸Ò›Òß³'#i!¬RÛÅGû nÔöÄãÑ›L& eïúžë?„³©¼áôìæ‰ËË'(‚AD(Š„ël44îètšš:{F†‡›t‰ºØÛ^Åè´‡ U£›At,†f8=no•›xꢉ!6vwgž ×U×hµŠR…;©¬®þ0÷½ÿìÙ£—?çÜ~RÓ¹¯gNÅ-&ßr':»¾‘kŸ ¤0ÉÎ/ …Œÿ}auà(燖íúᛉÅ^ÀWÙ£å¹3®$\öãxc‘@Þ,T¡Wra«D(,S:Ej(tž( @ÁÊe ­YIj;ºì×\š½ËÑÙÞc”Ý1¹\öû”Ò@TP—džôµ¢DõŽÏmK(ÇdœÒŸ[}þ³ fÉui3KëÁô ý†mgÞû㬜¨™‘u’Í0¶}Q!Þèí™™ˆ3ìe+U¼Bc!‹¡Y9TØW×2a ³>S¥Èéi*S>t“•vqh‡¯r±6hv<Í÷²è‘ågrWÕĶîîi¡õ–Õ~DÂBcË29¤ßâeúm¾¼AöíÓ-Š‹²c†ÛH:r#áû^2ˆúCpL`ù÷°¦¨ö÷ì7c)3r%Ã–Ç ¯=7êS¹A´ìNâHl‡UBÆ‹8¸ç¦ŽË)P¦î¶æ9\1µÀUÓÌ $Üã¯Ä¤4iòOЇ7¸'˜¶õtšƒˆí$ðç‚éN0õ J€®G* õ±I©7Ôüã¤û}¿ßG™´iƨ!“ Ã*ëƒE ‡mŠ›o*TëïmßÔb™¿«V–g\t~˜ê(â¦oˆ•Ö7~RÁô£xyùÎï°Y?+ƒâm‰ßܰ‘}]i\¹•º£ßª5µ¿DöäÄÿZQëA#1‰n½úÈÈ©šþø¾ò×!”Æ6ï&†¾?¯‰DÉe2>¸©¤ÑôïÑûVñæ&âSû«CTœ˜uñÆ 2ŸgqA7¾UóÞsËôŸB€8c@«¤5Ç4±9&á­ üa<ÅîgcÀãÔl¶Ûª|ã¢ÿã&ü-›õJˆõ቗Öá·Ý"å ÑG%´R­-=Ú uéVqÔeÅeëõ‹B¡Ý4½³ôK ¤*1» ȵ?zˆ=Ñœ› K´Òng‰4o¢Ôò*óÇÎqØ!j{F”Ë´<ï`Ž™dgw5Ô¥ª¶ŠÃ*¶ÓG›?(IÞÏpÉr(ÜÞ­î`ºóÒÆYEûjà.á#AGxű¿òv>ßÉìÛzª# ‚wöu’ú3üºY.svt¶=ZÏîa×,=Ü«´ìRå›Ëâà²GÏK-£Ì޳Gµ¯êÆ?â‡eü ž(;°Ëß(¾±,&Á¸úÇI»@öÀØßáÍv@AôýQÍ*B¢.޳?f¸&Pá@ŸcqQÀ}³£sé¾›á¼!Ϩ³dz Ú¦Q*í0;Cn¢æH3”n"/.MqŒÜ\z_4Žqà¨/<÷èµ95³Ä½Ö5#û½¬v·°H7™n*U'ÞÊn×+Ç^Ìè8n…š¤5z¶"B¯÷÷!¥ gvÇqíÜL»¤ƒJœÑEƒÕÂs•5 Ñ¢Q4ˆÖ@-v¬×òv¢ÁFÑÂ/8)À5ÛŸþX“ÎD¸c^’[l‡˜z!Û{hU\¹fÛn›Næ¬Ð•2Ý?¼ÌÁÅô\Á¢ÒHÇBËÙ;ÐÚ 1pAßvìú?‘2ÌÉ=ù""!=U+ÈúJ˯RªHÝ&…KEÕe‰7&—ù§àû½¬¢¤ËKDªçy9ö-Ð’ÞïöC³d]U?Y#AY7G¸9:jÅ#“-´òôœŠa\SFcX¦Žz]ùQé•÷7`Ä•,£:¬' CJÃa'ÿa²YÛçÚ.}ÜôK˜-†µÎP.î–­Y/s¯^8Ù.("‚LP¼dª+G¨ÜÍ·ëáXhœ±ö ‹T‘a¾°˜Ò†á€%4Æ“¢ÁJá1N4¨¾Tí )P‹âö÷m_Â[¡oŠiš‚­–PزeeÚ¦ygíF…¡ŽŠp$O­°ì9ì€ã7ÐúÜçfÀa~Æ„%€5[€½瓽ÚRר(ÍÉÆÿŸÜ3j1‰Ó×;¦hðW1ßEP'Ò}†£®KŸ¦f]í”CÒoĨ­A m­à¢žßº2èâÃÌÚÅ7‚¸Úù3jm×0J ¢²ÊvLƒn”(Eíc²Ö“l†óWpOJ­c0ˆ „«-m/˜-|Ò’ 䜴c’ÈÿE”à "<´|ˆc#¶ Ït]§‹£{ J}mɸùΚzÃø&Ý ë:<^ì=þM°3ÇS1Ö‹ù&¾ÃÿÙú(“"ß’©ßGY”¶:fÈû_Y{¤Í\+ mÃeëÞ`þºcßeÝ]a¢9¸S©íI@ƒý¿O×{–9O­¨K5Žîé8š·û¶X—ÜT³—-~2pOÕIl½©£’hÇ®Z€ôâ/O×x½oû+ º¬Ï†]žé8O}Bä™éC¶gj^š<îvÎèÕ  õAÇç€v ¢Dp’;C}æØT{’V5pâèò Sf½¸ÿûbôxfªæºEwOןÚ5ïbjÊ/<…êxœVÔVó0˜ºkÜ7°ßÔÑãªyÀëÒkOû/„ç­iWØ‹ûŸÁ×Ò³‘‘m‘á–iÑÚsönÅØÎ´ž‘j^^²÷€Û:M0±Ké¿å8dú´ 2’÷Q†5oIæ×[R« ’@™±$Aš±1’-HFä1qz &b‡ö0å¦R–À zfhfÑï`ýôFª—”bäæRû+\MØwgEƒ› 5ÿÿ‡âi«.W”*6åÀr»gãŠuûÚX „â:?€k™W wR9¥Áð[þ9JGî›Ø~^ë2í=­Å3GøÇ­ç’–í²"ц¬ô}gTþÍK3Î#(r[2=ƒÕ¨L—ŸžQ¸Ÿi”ÑT“ªß­·ô<^DÎ\q˜ÔÛ¤Ò“²OÔª7 ´”ÞÒa9õ',é¿:z€Nïb×ôg¤Î±áæ/Ѩã\vó·Ú+¹ÜT×2ë#÷[P&ìž®2…ß×î+÷e3VkL4ní‚K¨¹ËÍŒ jÝ‹‚ª}sú§,5ƒÝ LÔêš¾«ù†_â„›d¼ª–øá¹YhbÐ’JøZKgWþI>§*0S-«ä(Í^Sÿ„×üþ@MÏÖU´IYÓúÿ=CÖM¨ÐŸMN땱wNë€çL‰>C¬P«b¬$OÊ:¹Çþôåáœo¡y3¿ —‹kò¯(^eú¨¬©š˜¹Nj®Õoêðç”Úïýüþàl+†£P¹Ê£²&Ô×ú3õŒË¹ÖÄ‹3Û-ŸæY{· xI'ƒ²IÔº 7¨ât›$Æ”þ¤I#†•ñ!?‰ï°)ƒ°i£{o‚Öá_Óæ¤6V6¡oàý­Áú'¥2î”çWðÌ_eW9GîkxMÝ j¿6º }È"z4!nÉÝXÏÐa;^ìWó:¬žP‹ ?çõeü¹_Oí•5Lí_“5Zs{Wùöö¦ex/ÿÕÂjdîV)jrQ„˵_™‚¢SÅ*½¯*M=i•qVÞÍøpÛ}!ÎåcµzQlÂËòÁ þѤ:m¿{±V¿3~Û³_dHÀu #‡Dkõb.ô¦ƒ¬„<µ|z£†Þ|p©‡Í•q ï–b²Â×ÝN‹.gf¸¶Éôy=IÑÜ.¦dß?Öÿu/x´8OÍÃ9>ïÐíÿÿM÷@¶ÛËØñ;׳«žÝUìY{×ÞA6ȚݷíAÓÂFSã[wû"/‘Iuã·ˆ«UÏÓî:/ëª"Ml/zçÎÃOâ­Þª9‡4¸+¹xÑ+=k›ÇŸÛ¦Xª¼§ö öêô±Œrؼø°Ÿ>Z¬ƒïWø«+âšÄRy­Æ>Ëì®ïuP.­Å³˜Ü<Ô)±OŒ-`ÁT‚2 É`¶{?N°Dð÷±˜ðk¿¯>}ÕP´ÁuÚWØ>‹GÇ`k›5;}aL,of‡R˜¤è%ïjò,‰æÊ.>Š7àÐIÊ 1N’Á,=D¯ìc[)\tÊ+ôã˜+00F6—vl¶–ã’adcsƒã["%ÇH¿ÒíÄÒn0<$Ð Zì^ßÛû,ŽqálÕ¡šQoåÙTmÉì åb=Q•'“=¨Xo²\äMö:‹ff›ÙdáÕVÔ¦j)£ø’è1ƒÝ\Ú_Îõž¨[9GOÖ¼hôJͳÕÒ¬Èæú±åì5¿r™]”í[Æaœ•N@Æa™YÊ8%RgU9 ݃° L*µ’‹ìßÖSï¡$KÛæ¶dÏkÖ<½-¦%[²WŒkZQ#5³Xb×é–ÈU‹öÒh¹j¼u[˜Wè7~¹×”T«äï]bÖKãÞg·HýÉÒNmYL,)‘ð•[ ›ÙájÅójªÈ°Jϰ#©“ɲqûjÖTŽn6!¢ûÓj—o6³ã+Žÿ6†MÕ>œÆ)É>]âç7XbôùHÈu³jðšK#åG0Û¯Ò‹OZSîþ©É9úûà=-È®"$s°÷>æO›¥\D…6JùǤò2Œ}Ñz–|F¢å&Ÿ“æ1ºÉÚSÞ·• ƒ6G¹˜€˜#7·e.¢Ê yad“rƒ["%ÁÉBòÙ²N¬œSsoŸYº@¡.aÇŸºA g§®ê¦˜-žr8v4¿‘Ù%±èçQ|øø”ç¶ûéBOö0”Le.óX’ËšBQâ-4Wyñ¯5ÿM–ë¯Õ(±Åóa]{vÖÿaÐ-[„×ÔÂŒñc9tÐ-k¿®~à8ªö¹žñ9f¦øÖeǺ™>G´ÄÓd‹û³E7Šýmk7%œ›ÿg…QNã|YþT{Û*ýÂæ^Bõ³Þãá굄wRÑ"òÂßú0ÕX¨ùZ"*ƒ6Šh<®½Õ$êG^zPz£rˆ/aw{Ã×¾¼áKÚ}®ÏV8†ð¼FÚC±n媩z£%yô9ñ3•yPÚ;×IÑ>¯þåAøó'a±$ä?EWý›ø æÌݺŒÞÕ‹Ó©=ÚÕ–ìh,Wu"Ä)Oø{xðM1bxˆƒ•@¬¿Â2‡G¡p á£ioDTÔMuOa]±n2š']ˆ¶ÌL;W¬¢&z/ô3°mÿÒ³&þàÂVÂpüWVÛF.öÒÞ{Î@Á¦þ ˜VFÇ4ûQ3œIóðšÔÏC.f|$ ²·dÿEÖ¤ÐÞ_ÎKÊÄq¦ÖEð^[V.l>ÞÂ{[gª>“Ñ©JŽ^4"Èù ¡ot£d¿`ìÓ½Å^®î—ÇÝ«ÆÌ[µ€W°Šâ»Òv>Ñ<`g " Dõ;DYÁÓ»Å3“,Ù¸ ‰f 8P( €‚v hH >¹Ç^ < $´A4$ Høì"xHh‚ iH@mV?Á¦<:PèA0Q*¶/ô™ÈÈ! Ŷw‹Ûk…?$uǶí“méU[ næ0¡©B´!¹7àÿx¼rï #ƒXüIZ¥ò“P½¨r›8Jjл…W•&A†Í6Ò« Ô­i· ý‘(:‚ „†ö F½D„ß*À+³”õ¾²‘ܳPPî­ “;Ì1ñ}©¶&q½uØÑÇ Æ.€˜øÔÎìZód¶Ã„¼x­·ƒî ¿#€n ÿÉîòïûYÁãT.ïû¯×(Y¤±‘ÖÿKå˃Øßl´4¨ ›oZé8°¥C~D§ê2'~rò©Zߥ½šxøûÅ– ¦]rîFkhkÙË7³êÿ|â-†uóYÑ—^»Üͱâ¯yþð±+>­ê¬ªŒ ¸ É PýÅìõèªâØÕkÅ|,'|!ׇm¾„/Û:îã nÑ豫J=/Œ†¯–ú™8‘í¨Ò䨗X Ü]!žnx@Úú賯§ÇÔì`;ð^üG¦ _u«H¯3$ê(Ò5&ÀÑÑÒzHR»ì±s8ù6g½ÝÔÔ6¥%K*ý3Ä_Ñ“– 1”çÛ•íÒþÒõO‚ã]Pó‘hµ92ì5MmP¯«"vE;B÷©b9kVó{!”Ú N©">É$i›æ“´ŽîãV;ÞæÞe[WÉ̈HEXÖÅ©º·Yš({¦lCÿ»%µÍÇÉ‘hs„m™´sD4»f'ßÓéÀ{ú¤{i¹âö€Þ» žTb$é,)Ò—µP^»b ÜïS.3OŠ” Œ»F¢å¶ØyMmw†G°Íjêy ¿"“õ:èš¡®|³1HeˆCsbÿX6™Ó‹„Z‡õH ŒvŶ”UŽÚ¤6¨Sɯ;Ö".Æð¥Hø`ÉA\2{dvD‚íÑUlÀÍÜcºI5ìu.†xÛ©vZ*O‚UJH°s³—ÒÏëÍ1l™‹u{tïÐÃTÇÎð9YÑ+úg¸N/C˜¬DK°-7É:Ú}µ”‘Þ«AÁe–D&i‡^¸:èJº§†½•$9ìp¤ˆ;®åRf$¨j°Fù–ê9 \IØ2X«ß–±dÆÊ̱ð0)]8zYV½_WŒjœŸW×®Z1azVÜnÀ/êèzà;µÌ”ôãnæ_«É ˆ2à§LÍåµ²èþ}qï16©£¢å‡°.—aO¨Éò则Uø$s’;³4¦™âìlqvF†E&Žf÷ÌÍzê¹qþ⮟ß5׫IX{ÌËQÎŽ20ãaÄbdˆ³mS¿‡k‡\É\¢›ˆ&Âi©io§“ʤv0ìôÜIvÚ˜æFvW>+·©Ì·löõùµ>À§õ"PI6»²Rò#uY¢ÕÏ¥•5ÛNIÌæC6 õ<ý&ÛìU9šzEÙ“6ª™×¥]Ó?f(E_Qzk!úê¶ £–²úRޏe›ö9¦oŸeÆÓÒúüké4ü…ë¹éáå{ï^Ï‘­§ ëu~³>!Îü³Zó³â<šÔ15›Þû/Íš­0×­Æ}2Ž;"±tYòÀŠð*šïS?‰Lá1Í‘ØL 8…ÉS(G¶Ã.ûšvmÔ3?Ç9%ÊTÚF±/…¦Qª àiœù* “öÕèUŽÝ4’]"YÆ.©ÃpîªêÚýYd¢¤ou²à¾¿Œä`¿ä¸M&练ÒÕD[±®t*3ñ$ôøùÑí<à¼h‡î‰Cx ÛÄ(ô`C™!ƒ;C“i¹‘ó†›N…*!ž!ÊTªP󈘀̳­Š“ÖRìй<‚•¦Iw,‡7,ì®|ŒÎ„*™”;[A† é¨õÝã¿û±ø&LKí·‹™¨ævQ Æêoå;SWÚ ¡.Ti‚>ðŽì¨Þ ;l:#ªè¾+äSÎg[ªà>u¾(Ñ+¬VéûS…Ÿííf$Nr¬ÊŒó0JSÙ†X"Çd¤¥vR‰±¨~~y{îi“ªLÖf£«mÌúÚ´·ÍnmÃõIÛ ‰·g[ocs݋ӭ‚çý7a6ÉKŽiv¿¿MÞX«þ*2«V&s;b_|”M*F–6•Ýþ<殬5ôý=°—f #†’(èijz¯ÂX±]„«ê¼b)°·×6t:3²¼ƒ5OazÚn•®E^ÚQt!Û/V>}æ›ï¼®#\Y¼ûÌ4MwäzªfÇ^Û'+.‘Ûe´Çh*Ld»Û…5¬îIˆ31Û,/ý:YŸù€[ÙðM\¬‹ü[Ö¨ŠÑ6Ô"²ÖÕ4/þí—Ñ{ÚîÈrU€‡Íwzpêj¨’ny„?>þV:Óf_Ó‹p«Â“Ä|æ‘DkéÑ’e{ìwl ÝŠ.p¨õw>wQRÏp†´ÆÅqcße>à†nX˜Ô…‹BÞÒ•K„}5î¼0ów­:ØhŸõhG®–´3R_88‘I¹8sy…ií¹ Uþø> Ý#Îk2Öaè†ýÅ#Xo—¯Âª Ô-=ÝEñèƒ3úC†~ÉɓܬïVÿBû>wY”ŒCþÁH?#÷EA…'‰ùÌc 4ïᲪf‚óÊëEXНô$œá%'2h‹KH=2 G‡Ñ’:VÂ<ÒÑcÊŒª$iÊÓ{œˆÈb|uÍÓoÏ@¼vQIâöÌËÑMê‹E!IÜžùôæqì%„Jtäö`û³“{AåˆÆS4˜m†-òýû®egJáñ›’8 Krët_ÉñïÏ9žaÞ{­€Œ.ô4]{g´˜vó€Y©Ø=! 6‡ì·Úé0u-Ò;¿,‡jôSÆÛª b=EngˆéÖø;úÂcÉzçy8dÑw^«±¢™CNc…maà˜Òß1·Gxß$V×Yè\'ç14agè9·YõsU4Р¹Ccá”­Y í¦ƒþt·—ð¾I¬®IB×àŠXÖcî 3žyǪŽõn­ÎXå=˜qJÁºu`úéEc$ Þ$Vg¡\žG†JÞ#’’Îö¤î<½ß;O%Ø+ YÏè'ף͟õhÖ8°¨Òç$¬¨ž‹•>O©6C¼ü yl´IuÂùÝòÆŸ»H¦QÈsçì2¤Ç-M@ɶ¿`Òh82%Dž.$O)¯œpAöΘ†©-¸%œŸD « ŽÛåt}Œ©âÆÍ\‰l;uaâ¤`¿.Ðоžè½@¥-èj§–Õdå`>Mª…èXEà…Ü=~·7CÚb!édH·R‡-c1=æÚXµuMKhnÆú­TÙMqçQǧÐzUk˜î܃Mp6À«Ð™êí©³8öŠHh½4M½á0o’>ÊÐA)¼€ò+w^÷k½uQ ¾;—v+™ÛÛwüð ¼Úo)z‚ôõP*¾…ã¯õ†ó³±£·þ(ºtÏ-àóöÿ`þVõÝÂ[È/í¹À1–ööYÜp·pË9ä¯ñéhA82Ý–CÛÝq%è!¬¦7zz7ÆÈ ÝïüÎ_àŽì5Å kýÎ]‘ÒÿßZR}lJRÝÎäñ_sÇ/Ûµ¸îìoãÒô~)Çk¾HŽãÓ–}…’öm½à¾;Ý ãú%Ò¾(L»!Bïǵsá¡ ¼¾ÅLá÷+1‘L=uHý eŽPqȯ—dIÿº¥y·£å+we@î~RŸE‰Î²Yq¦’ÚsÝ1]®e‚hŸãA§¦óáŠé`ÈŸ¾=™/­BéLèkðú‘¬š”&x{”à™T¬Z(+ú}¯}jÆu} ó­Ë—¡“Ò›¥æüÖ‡Ú )XÖŒôY¯-4Í[²Gëè+)vÈãúRBôÝC륦 º‚G ‡z?uJ»µý>°YKÓÊÆdÝÿ”î Ûе#ýÞÚ«qO‘žo”ôݬ¹žtfåK¶¾ž™EþhõNn„é»^鈗ZR¦_­Z·¦'$&Çõ¢!]⫸¨g{5Zü%Ð_ñ”­ÒKÞyýO\Žâ®RìuÍ[ÚźÜ!ÓFJutZš=e¬¯J"µ¸”¦t“Ct-¼MÄYí>õ[AåµÝEÈOeÙp¼àÞF…`ÄHnÒK’}ˆ7œÓ·ÚiÆ{äZ:OçÐ }ð”ݶ÷²¿JäG]Â'‘V¦Ã™jýyšz ¬]9E²´eI„„okŠ‹ëÏ× Ôà6RšúmOìúfi×’Bí>©ƒu-¼M„§¶¶cúùµ@/Ò çi¥ŽâÇUû椤­ý¬çÔÐF|ë夻©Õƒˆ©“ÖŽâ3¨i󮯾 ?¥¹wó+òEø&úA–ìftz­kºBX—H±„Ø÷%,º,蹆ÉËÏð¢5õ¨@S_)×§‘aK1‚?Ïé½ô[CÕ¥téÂ’UCßoûkMj‹µ¬áWç {A^Gæ;pt:mÇŸGvœÇ¹ø… öÏ¢š=àªØÞO¨ÏÓÿßyR\,³N©ÅRF;W´b)½ëDRÓ¢0Ðnàm9X¹ù«kI*¡D1$Ù;]kbCj“Š„Të"TBÅ•¾|%Ó€¢äwìkü!µ™†&;Ý`Ò0ÕÒ´:QQ××ÖêÈýé; îÐ>]Hû[¤“tjPd]ü_ÏtõP󥌎SäÜÈJRí%¬f'¦@¯hQ„’í¦+–Îá[.•Ñ¢¼CBð‡Ô& lC¢O1Éh3 ÜÆŽO-mRÑÀ6$|j)h“Š.n¶3n™|»vp¤;Z"!¼ŸÒOÂ^eÂ?{Nës€ø·M9% ÏÚDÏ‚ÃmÜvkŠ€Œ&®pÈ'Ä/P{gÖb pÙyFÔy™&Bs@¬ÂMðM…ˆ‡ëumþÛ?áÛg ‰k¬‘õ¶àØrGœSg€tZÓ‘§<…b‹ÊÑ2³ã¥;¹ ­#G9"Ë¿VoLžAèMâ`bÎݹ­3똇)¤Þn²¾6-Ÿýúôâl‰ÛµÒŸU?=˜‡Pwy¶ÓARk@¤\OìaS-¿Ñ§ôMWÀ¯$g«fj'NÃ`thóÄ´mr0` L±‡L­"ß?!˜Nos¼.gu‚ð=à±ü;kµd¸‰SÌ?ûSzûìñ ä¡ü*€ Š´ÚÜԆš¦¬ñ ¹z 1QžeÇR9T¢ÜõŠäñ2@Äm¿Ï|…0|èàY÷É M[ &ƒUÜ0ÅämŠAÆÃ~ÐRþoCð[õ½Óç¦~¼dÁ&%²÷jˆ°Ê—c?þN[ HÝ(['µF 2¾DA4˜Ç#§Spßah¥9òáM1Ü’PŽàw*žÈz’޽•µRaE鋲FÊ¥ NñðæË\ç)óq#FüY-ë‰y»¥ ÂQÜÄÂqÅHÛqéÒà«-ŒªçfVVfK–„¸H¯8ÕÅ? z³.E·áàVò™88|¯Z ÷Ì}0U˜ÍŠ¾ìƒ…:w t§È}ªx¢ƒ© ˆbwêN9J~c®év JTôó³&EQéÊðÐЀ™Å\=æ9 V*j€(ÌY.'‚8î'„Ó4±Þ5Ôf¿Çœ´-~‹?ߊ1”æ®âÿàF¸áRÄFß1¥ôxRöM£ÔDP\ÀR)Á¿P ˆ¾Þ=~†¡‚z2öOà•‘K$îY>É£†8€ZF#¤çJ'CÅ ÄeéUúÝ”&bŒ¾6qÛý±´Y&S<{·Jê›MΣ<þa8ÂÓÀFšKX p8ˆA5-€ëÖç€8YVEÔÆ-0eÖ¹ÄK¦ËÛ°Ú‹`¥£ó$ aú­ÐTx†¸ëè ˆcÁŒ)Í'”á܈%æbi"4¹Æ;Ëâbü¸]Ÿãxº$=#¼Ó–õæ#[OÍ”%¡?Z2jL¿òÔÍAøDN¿³Ü¹.ão³ë»nT“PñbÈQÀƒ8:æ†KÙé ýÝX&˜®ÚÒ»–ýõsÈ€ã—L­.èp» %·BvQ_§LCŲ8™ŸvŽç@X9B<}Z– `ŸŸ8>‚о ±™\^1âÝÅ»›XÓìSàµÞœhÿÝ$¸lYa|ɸøã°íÙ£KRò(³v£)©ªYn·#ÊÕ¿QÀ‰ÇkÜ× šbË\ñµZt¬ž™'AåéßÚïW!iûîM!X“VÂÑå©{Ž. ôm¶ÐµÅ·KŠƒ|™Ï¬Ö]à¤üœÀgr……æ=á~ÒË)›³Ì’nÜhÎG¥ðQ-c‰‹ò{K‡>eC"¹ŸÁO½°œ ³!0Ä]ÓN`–R«–Œƒ‰&o pø£00w·ô²¡‚l(’ó¶ào€YšÞdòåÕWÞs n£ a&¼Pö‚5N$ëÞ˜ì`÷*ÙSLÖiß#Çð$“ÞÝN’‹ñtúRŪŠ_ ž©ö‚]bqx{W'v-Ö‚„œcæŸRVªÂIÀç•+]û}ía¡¦/ân¼agÒ˜í%kê·Jh–y6wûkÒïîðÔnhgñLwC; 2y7ö1_B6tEX<(1žC øj/ö義×íz`¥ŒzëYò h&¶X–”<2ÒaI¯r*HlºéñåÝÑú¸-Öèðjx}4ÅAÓxŸpÖ•˜ð’ À,>Þ]XüäY¶ºŸbœ,1‰¯Í„ef-p¸œñB:p¿ó!Îü]¬ØÀAûtÓ%r$;ºŠ‘lI=ñË&,¯6œ!yv|ÜÎÇî{ÿ½.™áÆm(pò‰ÜRó“D©ƒÉ!km“'þ¼@Äûç™jþ/‡1ß±1Ch*Î}ÔK…Èä׆_s¹»í Êw™Fgžã¿ÉɃb#P*©U$!h÷Jê .ï§Šm†¤ÛÎT® VWÃQåÆî.Îï³õÕl-€ðh„é®™ÈGS¯½úûsŠÊ¡mŠT†V=¢øk\õ6v*tÔ\æO‰œH¥—ﻋ_Ó‹óÓ×ç¯Ý£{Üo×ËØ÷Œš–¾g2²Ò¹,W\Â%,ðÝÇŒw¯8/ìó†L"kà9^mIdY¥œøµ]X6kKŠÑ¹[×ç¦1¨)%¡¦ÑNŘæùá"[á¸ÞŠCù|ë§9†X$Í7¡mÅ ä*iØ,·’”†q3ˆúÝ2ÏÄ•À„·z Ù ž’¡XØ‘Þ÷H¢[ç(qzUP®•7o¾¦³á( â×õ̹Œ·‡À@Mb›uu~F ×!аÀÀõÖx·,4QFŒìCÙ|ç«úN&aӢ߿ÖÓÿÿz©E¾¨ÿÕF˜RcÎv‹µÛÌI'è)Äc‚5:„† 1/Í“í À°^»†Ì9ÂX1 @Ыd‡íp6ÈÚýÃ~ÍÅ]4v°´7ÆaÀ¼Œ²Ð™þ.rïŒÁWSæ`RBÇ@5”„Á6•%ð@#׺Åb·wpõ->àP~\Œ˜ýÊáÜElÕ˜EhŒõ C/š<ͽ¯+žýi^ûFšŒ_¾©;Ð~·#›øÕåP⇒VÍ¡Ÿ†n"0æ˜:€W°À‰[8@[?ˆ@„=b/³"Nò4¸ )xÏⳑí…'?xkY›å/œßó­uÿË¢jE쇌su1ò$”å$K.Éý°/l^Tújú¢B2²ÕX:6`t7yêˆ[²ôˆÜ÷2AP’Pàíp ¢ø2Èl])ĶZ/‰ÅqáîsHc42žkÆÓq¼LÁŒÑín]#*Ì+ßɬeÏËXTÑLpÀ<QŠŽÌ$YFgÕ,F~(]P"óG֟ϱnš êF à|<{lP`0~aù8æWL/ó‹QEs|yï}|?2w]þÌ¿ßÈN¤Š} ÞÜŽuÚ[ZÅL ›´Uv‘^=Ëɵß䇩÷b“ú¨éšÝ®FµÎo©ÅRT÷Ät@“+¬2liµzŠËÊäã9<çÀTs#üý9ìöëÆÄW1cGîT@i6t }C4¥ %«µÛRNÌž“‰P{—^;b†Úe²•p¶&y“ÌÂMöṲ̈úÕ¸ýu»°Ïs¶¾]Ü Áü¼kC«8ÿÝVEè÷Uº06´Sb8– …ºâO€žÆTDw=4)MƒûvlÈÄ— ÄÚ2S‚â&¿» kE=ˆ¡:L‰0aƒ†n‹ŸÆj á Å´Â’¤ùBšOÓ$µ”ÊäüY×u±;W³ÈmT·pßïØGë_Eî’Ë ]`yäežh,;DÄE.ƒÚxLÕ‡þ,í [nHfV@Iµ&y™v•ˆT@ Z %üðD§Ì-OqB“ $P…˶÷–‰Ø ö¢ünvR 9žña´èeÏ^ëÒs—u½UË‚IÈ,×)ß@Äv¥’ÀÀvÁ«6¹7ÔE¾#¯CÅú)¿0(bs>»6š·Ïúw`êsØ{_fÆn¼o’H0 C.äÖåNå´x&"_Qd)ZþÚ<㼄5 ¬Òs¾Yòz ¬‰œû%²ÃÉøÊø.ô$¨˜ 9YΡӚ¯n¶°ª…Á™ oïD˶óÀ9ñA AS|!9gßisD0Û( Q–Ú X*e¸n²q+t‹Ì®-°û6Œ$å…ÅLÅ䟨AG짺£k'ëH}¾ÉÈ)ÙTi<Ù«Øã2Ô8FšsãJiã5À8çÕo­–¬+“*#eÕßn¯~>%ʾê"Íé^ÖûÊøôümZ÷€Ù‰=—Áü]̰›Ò=ä#ΰcÚcÒú%½Ë£AæÙÍI9"¸tþÌ‚ÌéM(`v=¢ê‡`pùwœ] 2‰½ñgï¯>'ÓÇÇí4÷ü¦¾UE,AB÷2\.¬ê*m½ÉÃ1-nnV;AçÖ‡5n4æ: ‹š‰„]ÀŠŠP†¬'©b Õ`„Š`äU¼Ó‹Í•’7ªòa0'ïàöÔ õ:¦Ô® ž”\{X‰Yø°çÄu+ÐŽ´ÈhVDWì "Äf]mìŒöêøGvN¸ (·6+:]wZÏ t?{IÈ–èÝj]c@Rvs«^ÌØ²&ô&Vz€ABJZFnêCAmvúͯ“x\€hNùŸ;Q´q@HÎ!µ æs5{nò1%êSЊ,*Vf}¡E Šj "0|)ˆâkƒ|.°d¤ø—Ÿ9 óŒ|Öébo‘ y Ð/û׎gÙ)sVej2¨µÖÝ6ýêüÞËK´YË2ÚßKÀOQ¬í¤dÓ8(s/¨“ZP¸ÏP”¾¬2<¾W­pû’[î€B_û®Vj¶Ë«I L˜ µT¹^”PQôÈjºuS«¾ ÃA½ÐbT…e¹^꟣–ÙsÈežªñû~²°©^üÿšÉUbÐL.äž·’c˜Uœ‚êg òìõ¤€DW‹¤†{þáê1œ±’™ î"wšûRóúճР •»"$0¶j³ç %一ct«#Â~À0 »~}þx½Ä:Г„ãÇøB‹Z¡Â2à6ƒ‚àl+ï¶´²Žõðµûjè¹¥åÂúœ•´?Ń¥UÄ V¶iÎ-VÓKÑ À€5 îšõDa0ûòfûì Êã ê™´Ô×'ß,-Äï>_ ûÙÏßÜIí࢑mS%çôìTª¦j7ïæÙ&¬Ê'ç|Ðñ223µQþ$>YlÔ$3«#ß-u;½úÕÉxÝß’(ôeÄkUÏ^G"7o¤¤ÛîûˆÄ°ªë˜¬Ž¥Ñ-$ zU‘§œnæ†rj$XGc,¿à¡_L".C]ïvþI<vdt3´ì( ?·|¦%÷Zá69@H/¿yZÀc$[µÿûX bÝŒÀ`ŒíC–h[³E5åy”S6Á¬Q›eº_ JàKZ•[4ÿVŠuò¹¾:¢]Ìe®ûˆ²¡Üãpêè;^äØM|·T €0¢yû¿"žf ˜"þ“ ¯ÄNû:$ÝNž2â/Œy3ì¿¢A€¶€óREúÇ ÿ½Ëü¹®Öœ¡TÀ¶_›ß“c[&Ü<ÚĉgwÕ•f%;6–çš›¡4Öù´»ZÛ) z-+F݈Æ ”{îp­ÿäD`R”*-—˜²ÏGÜ´nlTaÊÔód1߉/ž%´°Í)ëƶä<~®Š—8bL•BlM3¡®ÎYo—ÆìNÖµM±ñ(c5¯\¹“›NKv”æË yă62‹EÕJRî›uµ¡#5ý ·4ˆƒèášP'$d¦5œF‘³:79p÷ŽØÎüÃ(¦6†LqŸ½Ìù!â–l¼4°ŸËyäf‹Û˜Æ¿ÊÝ- 7HC3KÙAGÖK‚’ÍAÄŸŠâJ‘ã ›&Sø2A½Xª$*3{iˆø¹Ký!SÍã8bPo-UæS4­rW0ýlí]A~3¥Ø€’`Õ‚zè½yËV‡»ÍˆSXÖM”äå7«ÂÎ5à€X\8Ä^&¹7Ût\éçF"”ÕöS¹(­Û \ˆš:Œ?Sç6ߎÝ"Äž¦+¸_EÄInÛ²Ï#Å5+Š£J°jn0)_kQ#ÕnGšéc%96#ˆ Üm,Ôy™6VÛÇ{öáyý‹Ò ˆó=ƒŠ_Ù¾|Ó]Ù ¤£®·õ0–Væ§"c°:»' ‡†ó%×JÁŠcÕŒö^5T’ZwÅ碽Ÿ<ÐÁ‹'ѤỈœºØæ ð+·]VFa,€íÊâ¯c•û~÷€ÛN¦ÌÈöym¶…ƒ° XhPueG²thïU3ã£ÑUÙ§òˆo©7‹ž‚­Ÿ’Ã$Sî˜%rÆæßNØäÕÙfk²oé0¨&¥Ìös‚ŠïöÛõF®[ eú5NìÃë-;E–ÆœTÉm'ɨ„‹«¤}' žÝ]×uŒI–çœnD:Z¾(Œ]!H…­ž±«;O`<€@ÂzÒ „’zcAsi£ #ÈT,MWGŠéâæÍÛ<âÉâ"ê·Ä•ù\ÓÚ–ÉG43€y X“v y5jdÆ~Æ–#Ç.ðb «ÖÝ9pΔÑñE°™luì¾9><ï犷X¦JÂÅ…£­Äå8¢mŽ‘¤n©T¹QÏp‘“zj™:©v8 !~%ºöáƒ1Y!žb‡Ç ‚Û’íi®%`k{ÙvrŒÑ¾…gm”‰ÿÖªàŠÿ²&4·ðO ìû.¨@˜ÿ®.‚<ô:ä‚Ï•4Bìû´›Nz8ØÛu7jœ`T› ijD`Í–×pê–"‹MÔéÅ~9¼¹¶q'Üëeìd˜Î¥–÷$ÇlïŒä=ár̺°€öc9aÑ3±aª ˆÚhE&O.T"Ý´b1™{ó].ä<óX&Rœ£[ô@Ã[;élÓåêm÷ß¾¡lBjO7$ì}¿`?qþµm«Ë¦rüÙæb“ i•I›¶”8„®æHÙô}îHĶH†úÏ Á >Dì%z^šÚM›Êļ·¸zn;rÖÅtiVeÛƒr¤ý×û9[\HuaK&fÎÒjßzBábʆ-Hú«•6⺮Uòï~ÒÁÈ”Àˆ×E‰PÚòlŽCÔþäfÕDZ‡6Û¯Ù®?"ýugKù`d?õOÜa»2¾–”„œ ®Ã=¸šC\Í|“êÇ|ÌëyÅ©ˆ£1‘"Í£:@ %«`fk…wy^p4]ÜXzẩeÀ;EÓãÛ®Qíàú>f®¤/¿}fŠ}a9>ÌåzN¾¨’xy°ÛI§?͸žÊdKyÀ¿¬Š¬î*þÂ0Ó£p6®+õCaÔ=•¿˜î ÍÖmMoÒ ÞjÃÃO.¡?¡Cß#:fŸ-u2ÓžèϦ4ކ!~à/pj×Ú°íi¶üs²~Ë=7¨ì{Mò둃¨ô~ÁZ±µ™X§ÅT†'ÃnB<€é dMã94 º"™vù• oý™¶…¿ÁìhºŒûîî~ 'tBÏ2«ÔeÑ_=™häœÏ¥TÝ|¼ÎeÃü5ë¸(—ZÇMé!D4¿Kœ;1Ž-s›–¦]0f.åih&H Ô´Ò[Öd߈|D8£þl›î –õ«B<«†?¹§³Ai?gû1ÓÆ.“±ÎˆÂUê9H.õ¾ÉÂaGq¼Blƾ2{|.bW澂¸žâò“QÆs²†ŸE)"r¾_§%!ÃÐg¦uD4uŽà ¶FŠˆ{,®žT™å7Â@@ˆòŠåÒt‡ë÷S¼T~Ûú)³™ *¹o0]@Ó+‡~œS7é˺D>_lîÒTkÜ\h· ·\J‹ÓsSwÇ kn“"g`βk¹®¨,¶çŽšý\ÈÁ¥¶zË’Ç×úY0q3û¶iÑ”U‰§öÒïëôõö b'œDìFñÞ?JCZó1u¸­ïI‹MB«˜¡™ƒ‹Ì˜íÃL‰¯¬Ø®.*ß|¹ßüMýûÐûwæ->š>Þ>ß?'sí®¾§ø…`§Ž)=ö»ãW¾oê ü@®ÃüȘ*As(E‹þe••@P*ºŒpæó5 =–Š…°æ›®LÝ“P~¹¡ìoR‡±`Ÿ:vï’Ér²[ye¤‡ b¢§™LÀ ýža¬*Àí¢-➯ã+ãO°¸Eò6,{¹ÇåÉ “ XœcÔ$‘§Ûºî”–Ñ›ÀAžÏO{)½Ysõ5Ë7u±£…u±úŠ ¼íÆ®á‡I„S>½rÖÎ@+Êšóºý¾®qLîHù2Ú1ñ¶=ó#åìÙVRÁ¤B†¦tÌWû^A(.è[æ[Ê‚bh…Õ¬ž+=ü[ëcHH¸ZÚHyÖ¹µît̓“&xÙÂãÔé¶N‹T×[ ç÷V¸ñìrWÓ0˜IçŠØB¡h>: á«`Gt adÓxnèñ\åpüu»åâïàVöôš>RR=¤ªÝÔ™«êÕݱm8sà.æóéØé°j’ÃÂ]Êì›X¼‰Ô›[(ô)OÀíÍë‚\xyµ1:%×—«8…Š=UÊÅkc‚Ý/Ž¢yPA«¨W" -QŸó½÷1–ث׭ ÷è*ªÜè°p›ªù/m¼H“G©K1íåña^úŽSiƱ\͘m%î`Ë\ 27y°zghÏþ7~¿wU—0ÁýŠ{9 ²ŠÛ•ÜK+ݬùý€ÄT%*‘b¯=„­;Â'|¨y BÙIét!HäDß§f^&›¼Âý@d)òx€Ÿ"»Èz°íDœ±ê˜“Õø‡ÛÌqëzóƒ»7gåÓñϳÎyù2¬8áØÊÍ+­+”½zy·ŠÁ“Ý XN©Þ˜g ®„¾¾Ì³3NsÒ§¨×¥¢¿†lFšcÇÖV=@iƒmð֢ώ~e€ç_?¹ß®{Wò³úL›@ÈXõ;ò9ÎðòŠ›(\Õ°(±7ûðR‹×ãYŽ%¶)óøZy”K»«Î“›p! ‹Šˆ,ôWá\_¼á¸q½~™†4v_„]÷®š ±jçx¦zdPgéÞj·Ï>Ä™­µ‡:ëúÝTSiœHa3œ=ôôÇ7ÆWÇ Ÿ‹W³× •ÀüP`ïš#÷¦Ì•#ë€Ñ½m«•„ͼ:[_šŽ„V<4±ù+°ÃY«‰ƒ¡ 4¢¤ÍåhóƒÓÉþ8U™: y›ÒË/ˆ*·6gt:ŸÐånñGP(ûP¤\}žþ_¿yzRSñ§kzu1Fÿ_¸…9¼§æ‡úÞ}3$h9˜n†uÈ!ô|Þ&¾N®-¼¿½J7_¢§CÚüÐèþ€î–Eþ+tÙ¢ÑÿÔ+|úŒàý•†?z>¡gwÑþšŸ¦~ùú©3ÿóÛ0½Þ,Ï_O_æÏã§Ý›G÷OõÆ~T¯£¯¶8ÔhÊ T&³¤{{ñÿ<ÑNkü™§˜ý™ÆbφÀÞÿ—J^Bùù99ݽsá¼H‡G°¬Hâ8ÝÁtƒ±ÑÝQ‘¨ð^sCCÐ~Áÿäÿÿ;ŸÇÞjù±ùìÓ?ó½Cb…… ßâCœ“"1Do’š„.›^XP˜Ÿëm¯Äÿ£(5Þƒùc‡ìú¶lµÈÂSß×ïnœ" ÷ 54칉öÕP·OÐ]‡'5¯%?Ø÷©žWquÿ÷Ôèü^ðŸi—äH' #lYòûOL/®ïâ37rµäƒ½œP¢ô;›Þï¸ç´@ÊJ¤=…—‘†f»ßøÞa¢½ÔÏmfÒw+IJ¨GŽ‹öd㇑Fî ”­­3&{5àК˜ܵ[­ƒ´dÑK¸‹˜l,¬_b–°jWêKÆhªÆRF±×–¨Ks¹ÒòµT SWÁ Ow¿®Å[]xHèsرT•¥E"rò”™ªöšºm°Òº!ÉhvÌŽо5 ÛÆòwçCù•u¿n`9ðJ6ç’Èc»û¡ÖPyÁÑukäQœLžMÒÉIÇøìXÌCÄÀª€û°:òÛê_—ìǬ}6”'»]íðrcëC Í·žÒX-ª·G›FV¤l/Ÿæ(‚Cê¾³Q÷®Ÿû¨a",—yR)ÚbÛ.×R÷BÍËŸ§ÎPÙököÚ³)b-·«AAqß>«jYDOÍÖU/³gµ3Ó,Ô¸ÙKãG¦Ûßr·vX™ &4±Ed,ˆ1ˆŒÆÛ£¬G¢·a_ï÷é–7ŒÍ5<@»*õØÑ×E;T+U›Å B_o½]x v¸ø¢õÐ@%_jƒfË%,p¬°ØéÔujúÜÆ¡Í4âÎ+teêDVù@AGË¿¨‘Þ•EûCÙ#<|ϨŒYq J¨ÙÀÆ:½¬ŸD{›q_ý3ãcÕHÜ|Šd¯ü3iuƒ(÷1‹á£JçË ²ç kY•¨G:J¾E¡Ì¿·óeoZÂõw›åëÏoO÷S/Ë$Ú~&?l÷CçÅ=~ùÉÎQù§Ä×÷V}(jÐqÖ–ízñâwèþ¹ðÇOåÇXò€ V¤¹° ðó¸‚0Ïâ2) #ˆŒÜæåL}Ÿ€žñö`s (0¼»ˆ,BºäéÈÅu%¤é Ée Ü’gâì£È EŸNŒcþàúæÞKÛÀݶß>Ãß³Ò­ÿõؘDÿ¡ÏIÅ#Ï=Ù .ÏîCå­H”î:vcîàÔaåm5n¢xšf£ºôçñãíÅË “XXƒø†¤`æ¦rÕr‰ûÿ§¾`jœzñ«òüiÖëï~…[w(µÅ€›,´¢×V»¶BÀ<§ 5¶j-GR½Bµ–GýŽ2«‡]÷?î/Ï׫ן_Ÿo—iÿËþ5Ì„ "ÜÜÏö‡¸Æ©?¿aUþì–õú[ŸãÖùðµÊÄ—#}†Õ ¶'ɽ ž¬(A²üÒÙÉŒÑÞ^7?{Óþ»õµ¤o7Û 9ý…Ö^Ne|ýH- ô—/(`ÈÂH—¡)sï6ÔÚ¾½86Ü™ét³(ñ¨>M?ß?McÛPâDHY-tòª‰—~ü“{×Q¡„ëPǦ ¬4«UaŽÊÇE:C»‚¨™/õÏãE_äqDˆÃ#’žAÁyxáAå^`› ãLQÑi‡ì¡!ßäï=`˜¢ÿ/H¹è«N¾ÝÖ9ɘ¬º Ÿ®í¤µóÏ×»TÇ«‹eñâÿ½9áGÇò¿Elý‹Þ1Ãsin‘üËpm<¦ó]Ž,úÝ×Uñ¿¡û²úOèqY¡á,º\0¬åçc0))QÀí€è@>ÛŸNÆ]WDú}¼vÂN†" ÕhEZµÕ,“æ ó…|.›Åà•ɹŠ¡ÓR4•—î61g$tÿûÈ~ó_BöR†¿ýdžúNÖUñÃ\3¼¸\/Kš ÖQN òìÃíF»’—é;ùø*95ÞIGh!¡z¶Ú¾÷2ÍÝf÷["}? |VRYƒó{RœN>›SÕàÜúϼ;I?’bxd¼”ðºO®k`o=Þ§³œç?Ðm²Œ*À©­ó9½ˆæ,73rTzc¶cûOr©ž&p¸aƒ¹¦ï1sZdaIÊíîn»×g7F+O3|w‰E.¯.ü~OåRŸKC^ì!œíbš¡Xh ˆhÓ|A¿›ÏÅ Áv¦bÆ"‰ 6s–Ô¢ÿlˆGÁ¹‰ÖÔÑðCšÝåÊHT^ÂÓ5±U¢«xâïb©½‡Ò݃’½ˆ€dü/e±šõ¼?·×{:<5ï`W弎û&Ð\ ¨õ!ý@‹ìáVæZJkù ouX€?*ˆŸJZZ„66þÚ ¦«#ó…#d—׳í×ì«Õ'Èbõ»Ð ©ŠÀ¯Hœ¥„¤‰¶œ _¹AG’¾È„.ù F6k¿ÿørRªš6º©V‹Ç%_SH]e`©gUËî,u»ûCS ¥ÁØFØÝ{®e+ݱ­ó³¨hP(V°í X©"½y.-÷»ƒ2+pЧ$͇[½Ú=tØ(­•2ùY²Òö­–;lz@ø]Ú–4S ;6P÷ë+8“'¦ hc.À’“+µšŒ”#èy*7í©ˆ‘ ›PX¢wØ>DÊÃÓ±àII9TLÚ‹#µ ö jÒÂ+KÓø9 P¸'Z¯µ ¸Ä¼Ï‘ï¼»ƒ ÑàNo$!G§´èCë´æ,ô+Y"¦ˆp*'- —we{F”‹\ƒ³{–=–ëJÅWZíª0‡½»(ÒC˜¶Ï»Æš*&Üð˜ªÊ´Ï-ÁTÑ/b»ÌR ±p=MÑ&ìR"R :ƒ§ËBãWïÍ«m&kZiù˜1›Ž@|ûÂ:§°FBV¸»5]߸_Æ<÷{vÊ–ÕÁôôœ™õ„˳ʵl‘|Õõ°ÆaFIÔ³ ÀþÌŒ_»§ ߀¡ÔÛ©n:‚µÉä®yðY6wŸ)S{Á6”;fE¼ûOÚèu&€7XÁÉijf`Ú¼ÚùL¶eWu •¤b7Sç…mÒãœ#È|õQ­&O0 o>qìåYc¥¹ozcâ̤KÃ5_–;j bN—ž¹0¼å9‚ tfžÉHEwÆ:`Ñ__ÆŠj™ÇØ;ãƒÉy'†¥¯g¶ö1á%ßèïI0x_‹+QÐä‘AþÊãßhúT1¾`ûÂδq:z½’D7ߢ@¯€Ó”*…¨ÍÇÒ8òþGæÜÈu³¹âÄk4”Ÿ,¬šxª20±Ä÷–_þø46L’…@Ú€!¥\û÷0Ix/ ^(™0„¬ðöÔ£s/©øŒa'T ¬å ØU©A'î)/XðQ°°˜¤1:ö;"fC Qó ËIÕß(<~Ö“¬¹¨³9Vge:f¨ rƒuº¯2m®W˜¶?jÌrø€Çƒ¯÷{ ¥lÄV{àøÞXÇ%ÙWrØH"S'fío~°­"Α¥úëÝAµ‹ÙÜcàœ¤ ŽtÕ0µ4ÜšóÁg~%ªA^.Ã8±×X~MºU‘·ôàXX‰¨4¿V´i[÷–´È“h ÀúW‰³¦¼w׺ˆ6ÈíÊ\s©b~PB?w*vµ hªWÔ þšcÎMíëäl´ ªû%™ ,á&Ó˜„ÀÎ.Ïȳ¼õâxå­ÒvûƒŠû´â±ƒÒ¬à®W–¥¢s$[¼}÷qíòü„vßϹÈ]:NÞߺÛĘ÷†ÚÜÙÓ«Ä×T»ÍèRhd•Oºy˜ŒZUd)Lñ‘Zc××n镵7ÔZuØYëè}?“«ôÒñ{FÿUûòRäûþ{ß¼ü2y¯w5F5uþ\^(¿¤W¯äßýÃ!*¸&¾·¬ÊêÇ À4Ò¡K—o©z¼´'¹4e{Öö‚jgÜê1Œ!¹Üé™î6CߦNiê4 ý*owZϪ•f¿w•ü]Z÷ˆÙgåµ%ÒÀú–;ÝKî¨ñnñµ+‡ÑXåcÅ,ìSi·yD‡ì¦júþÚkoÁ/®Ï6gåÓóãrm=ÛAJý§ÞǬYºˆú«×0¨Ð°¹`Î1Ö‘ôEV˜½å’×MÛ[F¼tBvÝIZ/ÖQäà¸7GsŽ‘ÖSm“gáj9ä,SûýSÛï1§Ù­}È (39*mñÜf[Ÿ¬-§ þ×_Óv4Skg ´[:üô»ÃÞ†B®Ó1úy­ û`ã7ç[øôÑæ|{>~yºž§Ñüâ¿÷RŒ‘ÏãÿŒÚ‡z ã=zÕŒçåE>Gv0Pu´Š=ñ¸Þ÷ÏIX8÷Þ_¹«+‘æá-ö¢Pöåmä´î³÷ÑŠÍânP«2”ôÚúx™÷¶+2ƒ²ý™ú-üžQPáÙÖ™ ñÊ— Çðv®sÿH“}óŒ{šýˆžPÉ=½·„zÓJ-ìfÐ~Uôm¯ ¸@Æ9%ýdhWÛú'±ˆ%7úöCžÁu.Ñ1k]¹*ÖwcHC29-à"Ø%J}üÂÑõ9£™¼uj…T뉳Sê³¼h³^rŽä|#GIòkÅ…}çamO‘sv¸*³ß¹Jùmzÿ€5‰ª÷¬@k~ê£Jy¾Éœv“·C•û»uÒÉvk.´¦õMÔ¤V€åo*g¬ n÷þ®Tõ„†M¿¡µ:nëî‰N­³°zs·#÷ûmDt·Òoö‘.m£ÇbÄ0³ª.2Zœ¹ù;‚žÔÙàõkÝ[æäx!#öýI^÷C9ØoÕ¤–f2RŸÐÖe‘%”–“XüC¶îwXkÙg  3ØOSº…k‡ÝFܽ#7õn¶µîhE½;[ }Ëýk« ø^Ì¿1öyG‚í‘Þ_™“-²'Tk,cÁ„­vßnÕ>ûœ®Ogf’/ièÕwý½›8}ƒÆ?jöU‡ õð6îwˆð!#x ŽTT_&¥ØQdv¦œ„}˜xúq§`ïÚ¨ºÌ3>G³2Ì]» 4µ!/ç¹oÁuµ-E?‡zçÊÖMÃÛÔyßc€Ï÷ì“9;·Ä0Zh+§¶¦Ý¶D²-d!˜ÜoG øö³ûÛãMüZ¶M~+nŠ?ÀÛ¸ ÚÊyÖ}V…„&û)8ÏX“ž¼'¦ëG>¦ÿž•ÔŒ¤Žm£ˆ×_D8=+ï-Û}¼¾uK!±a÷Mò Ð&ËŸ:û˜‚Ѱ“Njӑ¸_Y§{¾¤ÊWùÿ´P[½‹ñ–Ýt+?9Rµ5ªÎ’$_þ€ ÜÛ¯øø#ÞÞ/>X~ þjžÓ¨¿˜/JI~â'Ãa$ÓƒÒí;‘Z›L—³º½;n´­Ä5¿yýê@’_ŸùŠÑ}íw¤Žýñ†¶·‰g—¢Tršý䨡Ê}á-Ùüˆ‡ï,?\}(þj_Nód¾v_ª2;m˜àÅ9ØÊVݰ“× 7ʆÛyP¹q£•‰Vc˜œ©<úÔLψ¾]yèÍuûÑh&n6ëzÈÙŠV¹&º”^©6|ï…ªû$Z«øISÑ%¹Ÿù€‘É ”Љä/.4ä }@ 9ÏFæ¼£wÁRwMW4¥‘nö³|˶‰ùR¨ê® Ì…ÉØG1 L¢W_•Þ¿Ê®«R‰°`zÔ]èêç¯ñõííåvû¡XMKR%Jº¤^^`â§ÕœUtPЧg)×rôò2E_|è€Á{HQ'}KwÿIwDïÞÓKù, zÍ÷ß~~½_§aþC0±¯Ë(˜w¯'7qá¡gßðÝëëóõ<öü¢ð†ñÏÔŽ¦µ§ÈMiК;ȨñË»dÁHò$  $1Vï.3'k_pU>[:÷¡×ãSezêT¹†ù w£ewöå¨ñƈ£fêaç@ÀMÜ .nŠ8ÞEšÇ‚‰8%å#7âôŒjOseØÖVMîø•ŸíÓE\>„K`MS­¡9±Ê”7º0Ll6±D¿›Å_§Ù”:ì ¼ºÆf¡õÜ#Ž.wÖWUà-È¡¯÷çÏÙ"lOOÎmöTŸý:`òŠ #y޳°’ªº%u0˜Dsÿ¤ ðBŒ¨Êôü½hiL溈š÷~I:[Ê,è„ÂÕ#‡I/K`>ÊE :ᶤÈXgÉŸÄ6©ü°Ô*ùr‚X”ÄãÇ šóÈX^ÐökA‚$’7;`|YÏ®‰®Â‡”ž Õ¯–C˜ç…\h¨—Ç;Ôj$ì5mm7ÈdwGù€OÕÆ 3â…¡(*@8¸CÂR«nõrªÙ˜:à4Þ,Kài†7F¬¹røÜÌdBxt5PsÜ«Ë:e_ôzÖåÀœ 㳪K"³caµîéó "pÖ¬V%Ž•XÉ tÂlÕShÀ¸²LúZ\”â>ÔiδƒÐÔ9<¿žH½­÷˜fÎqÛÿ"Wyž ÓT£–*"?Á }ýUi*¡G‹w”׃‘H &PÍRIãø+›È7"’ï9Q^¡•Áþ —ß0®Bñ ™‰EZ[yódÚQ«uuĺs‰-fÛú¡…Ã>¶Ê$aI³<¸.Í’'|%)ðrX™„¤^@7¼Ò*ö¢Q…Lò"ÌXªkÒåöÝCòÞ¸€ñµG¹Í‹‚B/ÆšßG³æ1ÜW»›l(Q¿+)#;'5ÝÎ]ÕBJ…Ɵჽ‚J-ð‘È-._C`[êsÑÌX6ÓÆ* DG±ÍœhP6¹p5;ƒC”臮&fÄ^ÂCG¤“òA[úì:£/8Nù®“ <;h£Z°?VW}mïB²zQìÌ"DO÷5éŸPè°\£o>|sæk›æ¤`-Hœ@ïbƒ#Óc[¤±> n›;è5æUìñ,ÖGƒ È·õ»»&¼í ÒzÚÊ+CépúlŠÚÛGˆª *uRgäõoÆ9Ïóz\º9 üêâ¸IšîõS,ü<ÏÌ=r.Ë‘ÊrÝ ÍÂ55ØmVÃèEKû§^œ©±^ÞÀïß”6šµoÛòDç…âMT;˜]À=>û¯"8f¦E~HRù‰f¨WQ Kྎ§lö9V}±5x*õ§ëGÚÊcNÔÿó€J Iº$.€— z!'(/J[Ÿäz„YýaH G†o‡½—þDÀúÒrFÅë;—‡™ö^0â¼\†E±øŸäʤÄq‰ù—Ão‚硯#K®ßkY-ŽœœƒvF–6 ºXÑßéA@OÌ&9̯n© $âIZù‹5#¯\(PëÌ®nYrÑ ã RÅ:M|ÕÌYº©WdêÀ‡Ú&vJ¼,kŒ' aáÔýÊ[˜iN·xœTŸ$̤}·DDH ßíw¥mìsª$ï)G»Üç®ø_׈ûdî!ÆQ–\BéulqKÓµ,åž!ž@dGM±½Ñ«=FY/Hí³ †ÁQ—íº'6 Ó„y‰A>O½Zº's9SzíùŠ/ Œc9ê´ ðF§|Äz¹µž«Oˤ1Щ]¦áœá^(æ¡EŽèé!`Ñç;V*Ý)Øä9cè¶ýO|I Ñ+Ê11/ŠÇæ âåYÌj@’ËIÖe¤/×Ë€ª Œ#ÿQÃL©žP ýÞ'­½ƒ+U‡ï¢ÙTsÚOü)bÀu ¨;F ʨ´¹·=°r™1*帧ú5¦te€k³±×ª­ ¡œà6_uí±½?¡Õ3\ˆ‚ív:6ÿ¨Ë“THšœ¢cÞáq?²Pp¨ØdIp𡮏Б¨Ïr0-NâÀx¡+óØw:á'ÂsÑžÕKuH3/çÿÚϯb:>;à—ÿež}r=ÏSoìñwÔó,*îЈ¦«(§-r½,;]];Vo½Ü˜¼H6RauÝÊØœË»Ÿ©Ì½ü<§iÐ*ªøMîñ°þ:®ó<ŸÆÄ¬ºMÝl8Þö[z´`ÔÁëÛËã~9UÍhL ÛMbGé-—¬4‹Ä¤RU¦Ö«ÊI€YĬÖN…úéOŸf/Y: [âø<À)“€<±:Ò Žp«Êáa:­Î]»Ÿßl£žæ8Ÿš^ãNrHp øï´:JÓiŸ¦ÞN³h†2Õ’Û_–;®±+°ô•x¶ä_ê±,U§|¢“‘O> ¨WŒ¾¶ƒŠ„*®ßÒ3Þ´…JG]à6ñ÷ô|Jëîz(Œ£¬Ê´Mµ^™»†¼&ä÷V%y|Ê­£•ƒ;]ÜfŒºfGQõ ‚ÒØÓkùÕOºw{ýÃôýþÙpÅçoŠ—ò%”Þ»P´a91Ûj"üˆÒFæ[I™Úô£9f<œ…q8ßÏŸ™4üñ©>#ëEzËÑ÷ÁÂ\cëJ[‚z­Ø=ªúQÇ}ªwqÔ»ñÌL¶Jo@Aßj98Í…ð-t{5?Ÿjë<å,œ`*4Éx+(q¢]Ô÷öÁ´#ô= }ƒCÀNjXT‡|ýØÜßЗ‚]ÛÀmvmJ²p,¿mµ†XæzÞSV™5XIÎÖ×Ö+xÊI@¹&úev—¸ÔTÅ®|Þ©ˆVÕ‘•7ÆœÉÐu,äÓvÄo#@Ñ€Ô#“³šè¢Õp,kÔ«?}§› µw”;bÌÞ:”#:-Šf1ÊÄ4¼¯+fm†³êryÓÝÈô³ ÔÕ\QRûƒ?=ˆ 5Âc¦ž¹·–Ò¤gR€.ÅëÖ¬Hà˜DE®†÷pù`ÛÿÂ2çôÄçl3OåDÔW<oúТ…P~’WoEÂy­¥ù4VÄçE;+:ùЗÊÞM@lñuF2ø7äG‹ôKÄ»a“ú uê}|”#"ÿÆÌ¡É”4âú÷$Hh^rÑ1Œ¯ì›¿§UïSê2²tç“6BvGÁÛÈi%SÍÃyĨݿYõXd¼ŒJ§PÞ8Ìü:ö׋ YdoÂ2­æ¤8¶Ä‹¼çÙ¦@’2em¥ª¹‰f ^2Ùz(©Ye¦—v©É°<¨iÔÇ~ È®W!÷ß´}Ùžå˜X_ï)6ñÆi0~[´°ˆUѕا ÜQ‘?æfoLSG­™a#)jÝh-âÞ}cãj?ä9¥IÖ"‹-Û§• ±_ËuÿËà’¢ª>= åo4óàé3d¢%v½ 8®†³Þ:ÎGsŒ Üù"¾Pö9âò_BùM}R:ËìG ÚëcÄIá f#uÓ·2'a‚À³"Îö>ä¼ïéÐrmRcN¾*À®Ï­%ùî/œŸº£Ì~al#ÛYPá‰>îÐÛ—:ð´ä0“½¸T÷±XSÐÊnÊ)³{DPذ‘76Jj{$rÐ+r‹S˜Æì>lîÍc ³* Ý ˜*‡ ‹5pìÿÕ€Ã7ðÔ’ØŠ<éoIÛš]LËÛRÙçðJ„ϰ¦ÖƒL •˜Q4²›Q}KqŒÁ,2Ï0í “Ó.ŽÃ¨õÌÏô©‹bÚ °{ú*‡(jŸL+ q}·üP§­¿’:aéAÞ“S)°C‹IFN!Á16ߪ ]”›‹Ôµ®]4´“˜ªR†ƒpí.*¤¨üPs[P‘"HÈ_Œ#ÙÕäÕ-г“«á—Ñðá¬Åú‚dº´_p!{1bI}6çqæê€—&¾Å‘aäŒw‹"ÉÇß/8S¹_€øÉ§Y^sj)Œpï´Yp85·îÖTîZ熼æ"ĉ°ë–‘@‘©Ov”(b]EжK^×J4NűÈÜi¦_8èÛ#sƒE<äâùKÉ}$PXRŸ}‡`ÁÌO۸Ük•ú`‘a|7:™ÝÂý" Ÿb8~D½ÑAÙœÍhmܬe«zjÌa»dtЬŽà5mkÀ Å0ÌâC4„¾Ù´+ÏþÁ±i%¡•Lt §‚ ú¢¹M:µºL"N„Xå}Ú,Ê ¡«´½^°Z­]^ñbsútþ¤e]2"­j:Ù…½¾ÛeÛ¸ƒ®¬;Ð%ö©á ©J+ïE¦VxýÈ%àT+p¿}€õ[E]u´XØK\s·pB“ì>¼z‹$<ÙË–„•…ªì.dz#¨Ý$qF¸Ïûduj¯cñBBS\§¹L[8IrŒ# <¤¸Â7AT}{¯´×-ëˆSf\Åò ê?$Ü„o€îÏ¢³á«Ÿdí*·>6©öäî ËÕK¢\*ÎøÍËŠé¥Èfr¹5ˆ"¾ÊU•Œ¥OÛD‚´–âò 0‹hNš2üõÂ¥` ’ܱ+]ÖF"é Ha»Ð9òêÛ™ÈuµaÕàGU {`É’NÂe¥.ÇãêÙ¼­,@[êƒö¯DAÄEïS!þÔ«Œ±Œ±ÊܫقSõ°ìˆ…Q}îW SĨPÝîkbQœÆìiϼmî Xñ£Åsµ “¬~2U#ÍuªhoÃ4 Š(î²ku•ÅO]“!^8‰M÷ž#H¡“]ÂCþ¬"v•ÚÒé`§uƒ{*[“YRM“Z‰‘Ýiö#<æÃÒSF>ì ˆÇ6ë(o¤ìÔÉ jNhÍd×›œÌ€pm¨Ž!×i'ÑÐà TPF+?\¢/!{öùè4üêå´ƒqu› N•) ÞÍHÉ ÇR(‡¤ä#® u×¼<~†* † J˜3VÖ—ˆ°Ú>÷*ÕZ r—d”8éi(3 ¢E"å=OâNÞà§ZõÉžhLç|n6âtTüæqÑ2ˆFÇM¨³=âiúŸuÞ)úl þ2 çE$à†„bÞª¤¨<:Ï7M|s= ˜+Ó´cÝ Ø“çh¿èöí]Æ`ŸðÔ¤ x®$)\ëFšW—~ÏrÄ¢Ú1än/Ÿñ`IJX,½~Ù²è<8Ð@ïè>Ž-£@§»?Ý’‘º…ñ6î½t†Qf ç§yÐØ ‰§¥þ~äGÊFé˜M†Öö< XÖߣ•f©»!P"ÍuÙ²R”46¨åGÔ¡„ ÷–ä¥1„û Ùg DÅ2O‰Ð³=ÝPX.²V èò¹‚ñ3™ôˆŠÛ,g¯Ÿÿ¹1ñGÄèà̵u%5ß]çáˆ5‚à ‰TÝþx¢~GºNž>V˜ [Á—,¼Ð¸…?>Á­±¢Êça¢tIe¾E«Hƒò³Á/ÑP§OV³’¢á‘5{÷½’1‘3üÉ ò!#”µ ·*BPW >(ÎZèzŸ#¤é’¶Í~Zü¸ ©ŸFù[°Lþ åÇïÞiaèÜíN¯¯j Se;µYÂ+~°Œð?Jž:•*<*b¦_»dÀ>’ZXÕ&yb`Žâ´|,ãs±ra jøÆèw°`òØxSÔM¼5Nu @‰¸ÕD4/K¢F5'Lõ4*ä°l@ V¼“}Ô´¥‘êÕFÁ^ûØ£( (aÊpŒ¾+êç3Ø­~G¹CÌÙÚËùœ]¡ïaã4ÐÕêfLʈçƒ<ãÛ:&™c0æeôe¡Øªšðœèæ§MS¥"J £žÿqÛ·<©oÁxxÂQî_±h’—;’¹ŒýŸØ$KðVp¯·œœ™þ6ÜRÉõƒ${Ƽq1lb‡ÑRíêN‚ƒB lÒçv°D"3qÓÚAÄz5„%’ú¥§5a'²Ú¢V=ª’Ì:åû"|[P‹re€«õß“ò¿Ï=PI(Q|.`½Ëeaá\™¶¨‰9$$——²ktyÁ#Øks‡‡¶)†…€É?­¹Þxû,"Ž¼Ð·mÆ/*Wñ,ÛA<تÅi¿}Ï€ý1;8’‰ÿ¤êÒŠ\ ÎmA¬d4À y¦`•9žc¬Ñ‹ÅuÝF‰¢¹‡ðþ3ñÀ¶¸T#‘l䣉¢¹æ¼¤t•à[¥Dòw‹DÛ„ŽB~ 1êE\¢º>f‡ÒU¾ê&šAñ‘c¯‹u&ƒ#•ÜÆw‹T¼&»úŠØš¿Q¦DJþwŒŽF ~ôüy±"ôˆ„ƒQþ##8áB4¢9&»|xÉçOÏQT<’Åø$0èDCKרI¿S/3äB =PüKYbŸ*—,½ ¿!ŸmG ¥X¼ßèWã𠨸§ ÅuóEä+ÔÖ(s+»h|IÙ:U+©B`¹Çž:€(Q×fúç(BkE$úøËÑ´ivÆÏãm(í=Wé§ ó{—ä×Ñ…÷ç•3é é?¯3JºJ`;`XYÝ} 3E7ÜMêá„™„‚=Èúॠä Öµ²ÜÁwf­7my]yà©èùEÎŽ-üB$µ¸Ïƒ)ìnq¦bh”ABó~eX Añ-ÁmÑi‡.»¯X{5]‡X4ôSSQ0Œ‡TÐÀŠœÅg•\Ù}7ôñ¥_YGÄ.Ð_º£Ì6Óß |]72€-ÕPn ýËsÂ8À[e0%F³Ý OÕÝÿ-”ó¬<ýfëBó¨éƒ²bæÚøÂ-0åæþ‚QX|b;¥d ¼êÌÂVÝÎ,t–—îL"ѧo†núSnälñ‘àë|Sørc >/¼5ŸdOôºx|ªŒï×, hŒ˜~´ ú(³ÖéÒPOÁÕÖ«#Ïý ¶Øò$Šÿpº¶ãÁ'½€ŽMŽZ€î­õÁh­hP‡4Þ¡5@p—*ó^å˧燒Z0¥¥8œÄâ ZÍØ\·e±N‘Â¥‰Ìy´Hb¦€7-ó¸J*§”1Ñt“Õ^ lt€³?aÐÿT¢Ã]êiýÆ µ ]N׈‹‹'‰ßH‡rê n¦…Ÿ,â~¼»mcŸ3'#Eê#°§èÛô$–ý`¥Ø.t°à‘«V˜=ÊSfŠÚŒhêíMsͧÛÑl†e–drt< æ"|btª2ËÔI5‚~Í×Ùrìl˜‰³ TpÜ—ä:ÂÉ^×­Åx ³mEg•@u$Ô%œ|å–¢iºn°ÙçZ©aÖœFÖ˧žÊ“Nez^ãPm7‰¸–7P“a,¥ÂUe»‡EJâ ‡ÔÚEÕ¥,·okÕ·+žŠ¶ª¨˜… ïw¸A{И¨Š+¯§MíÑËnŒlê&Ñž¸d[z^|‹åKn(*çiþ°ÓÕéq~DxôâÚn,ÁLe˜ÒõÌàµBåÊEáU*³Œ™~G šŒÙ”ØJM· %²š¶2ÁqéÌ ê+yÉÚgÜè4¡RLq«PR0a0ç8˜SŸP÷vY¸‰váÓ6Ê/}g\+P\Ðn¯ÓH_‘›-÷áv´„±è[›ª,Ü9p5Vy±Rßí4Næs²]fŸmª(ZG4;½ún¼™@è@ö¸ÃepbLSúé› „f£ƒyšÉ>ðÐ`Âf¤(gx1¡6®P•7À¹byÿz™7~Xb²hV8T ÃL½‡tÿWj<$Vž„£…è[òœMgÞ¤³Q©vÓ¦€Ò™N ñç+Pt]pîTÁöJ´cíí@¼¬ˆ¯' ÛrŸ_ÁËon?Ó0óªù\Úãž *ÝÖóh‡e·Öæ=ÌòÓ.:Õ Í¡_Mük½úQ‡a¤`Ó²¢Ì M&>J•\|QaäöšVú×û æÐÉà”b¤áº¡™‚¥lŸg¯ú}Œûj ½}°•…ˆ!i ¶Ò 4ð‘ùÀ¯ü’ŠZðÄ×Ú¶ÿÈ23ËÍKC¸u· õï õ9[q?´dkôí…xhÆÍåk95Âø…‡Œ¢ŠÁWÄæIÈ?5а ” <:™ì€?š± CÃ8?CU–ƒ–Ϩ5¹*×ÜA‘4ÅKa,3?MïÔ‹¦äûî„z|˜ ìBZþ%% üóéêÉr éqiÕíB¸Ûh-\è7f3 ÷C¯!Õ+d/là1j‚Ìi>A.›S]‰7Ld—ê¨èaGæÌV~qQï3òÉMpÔaÎ&+,¼˜ÐU/CoÂ;–`g›!ðoÀ&s.ßå$=áç ¬“¢FPµe× §HTäXð;?Ö,A)·ˆùHí.ŽÝ9S—à˜q 2»)!xO1mœ däa}¼£y’±ðîóg·Jkú¥á`( Àß¼.©//ö¸é¥«L~÷AªóE2íš@ÚÀa˜¢Ž¿PÝ÷õþúòt=_×Z*ÖÚƒ”WÏZæ'UüµÆF|B,O:7Tg!åu³c&ãÜ©17Ûq‘Ü›ÜH3h"Nñ^À8l—è«PÆZ¢½šÊæð»¹œ,¸ÇT7Ô‰º¢ÈIݵ!”„^è°ZrK²2œ¿ucP ž§q°ºNçursÔÚSz¿5ã•ìÄñ«“Ié41÷Á;“ñÂØa›fàð…._»É8 N þÃShJâa¾°FYqÞ£=hÆú¯ÄÝ|oyÑSný¤$Í &Ë5ìÃS…é†Xö÷ÓØUö2bñ’GÕãUKpéF¸g†Y0QKºgÀf¼ŽÃ]ŽJy‚€†KG$AR^*‡Š—¾Áë ‚™<¢k&dà‡A}r¸A…Ë&¡è™üH[”() °ß–nßR™æP#¤£› Ø­ u(öÿKHùÏ&&eùaàâ)^a4á¯Õ…‰ln‚ÕH}2ºsÏ(ñÖìI²‘nKƒÐºE ¶D÷ÈÒ÷Òô=4Q µò×ëGÑÕÊQ©«bAf $Ž«‹GŽÔTŒ’Ñ7×Ûm¸ÞnƒšxÃi³LQÝË*f•ðU¦à#ÜŽÁ@ÍÙÙ 쪒isñ¶5ä¡<Œ– =®:˜‡Œn ÷ìÑU“£S*©Ý½n¬Pù]]gi­G"Êûð¤(Ú7ÞfËŽYg¿D©äØ!§éx³¥úLÜ ¼ÝƒµQÍ+¢ T¼Ã uÆÀ0êcí]I´]~òƒY§µµ”|6 æœÞfYÙb­@Øöô\wÏ£³Ñú´¢´ð,èt‘Mt÷M3žƒÖ>_UZK›¦ ;÷Â<´nÚñsGXl|=íÁVeðDЂ¤ŠJBu¢ÕÑ åVŽ“ ÿU‘Lx£7"gŸ%šYvF³ÍÞVäy£¿€Rñ˜d I*|©IÁk6¦¶ÛH@(z‹OãÑÔ‹µóyþÕîüùòyÄŸi±9Ç!Ÿ]—‹)o#3c–w<«>kQ'M=ýZu©¾ÒâÀ–¦ùô’¼€kc-AžB¡ì@˜Ì>ŸÓÐKì*¤Íû·Å¦{z÷;Ÿ%›úì^;6ÿïîpX¨ú:+ ™"iulY°o8’Vƒ,°9Ó錾٠8»z~}ܯçãL)°H)FýrðnùàQpâ¯ÎðX«”žR{µJ×Ç`T‚·Xng­™Ï&äd%g«G£1®b¢ †NL=ÌZÀmwZŸ]Ë3…Û{4sòX‹ªµgôÒÈqLö¼ÒÚQ14*‰§v1PÉ24\›?òùüòtþrùr:Ò ('~G🠦 ¨¸Ièaö¤/ŠeJ¤¾TW²¢àqØP“áT‡äo÷¬@íoúlDkÅi÷ýÒÓ"úµÀÐlçYÝžæE«á7¬#Ps1ÓZ±C0Èý6—‰òTæ÷o%W„"õZÈ>¢ ãÇ££é³rÔ¯r²<káù{ÿmà ¶oõ,Y^§ì¡¤ø%C_!~øbÉJ<ã-ÄÄõîãXµÛÂѬ3J¶µ6» ¶”{Îù_ç²¢¶Û-2¥šyU1FD@¯Vm ¥déÑ©Š“!zRú‡«Ü›sÛÄBÓ”n=â¡Óë²xKl‡:Öý ÷æ[\Pè3@ÇTÑŒ‡2šÖEu /Zd[¯4À±âÌQvU}#„,ׇy¿IµqÛð~»äXè¯D4ˆ¼¬ úüå@`Õq¹DZ:ʆAƒn‡ëg —S«J“2ù”£_´6 ÀŽtÆ+AIFç |Ž÷S Þça¶;Q M}Iï²$åCÅœÁ:T¸®”PêúeAùÅM ŽzÜÞŽSß *  ¼²5Š÷·¸›×âæ Z *dÀÁÌíhúVì¬@Á ˆÖ`)È9ÊÄl…7I<ÿ^;H‡•†œW'ì$÷=oè…Ø‡ÔQËN­ž*¿®ëì6dÌB¿ŠLqú}bþ¨ª’páCM)+)sïíËÇž÷ùªKeR+bfAGÚ0Ìsë¹ÿ‰í ¹µ×|Šin)å5¼Ê—>‹k#¼Ñœ-ÄÚy–*‡“¡³‹ ¨ËèŽÝVaæxÀûþ+´gÞTÁž 5Ýþo+JêØœpÛF±gR䂾H…‡J®‡³¬vÂoAk€ ‡ƒx5 \;}"0©ÅnÁ%ßЃÕÛïâP’ÿÚž—d&D` ÿâ4™!Ö/¾ ^Kµ²J&çê*F!¾±ËPX"(0ßc ï`âΨe °íÁŒC¢‘oäéj9züß1\“U­@#ë¾ÔdCvlèé©By¥!¡B¿§u —F¼¦ÞšÄ¡¶O×Vo¾N+ÖŠ1à’0H;}Éàt]ˆd?@ªU~l:Ja $*)~»×jYz‰BR7Ž€! &J¼:9/]u"D}§'²Ï-ß9ÈäD~8²/¹‚Çáùb9ÈQÞc Z’t³JÈà€T`*Ë Â¼re ÷Ɇ¨ÈÄí¶ –wùZÂÅĽ#îPÄôÒ=훬« ‰~¡cVŽbWãv¨‘U ÂøÈ´T¦®O©õŒó‹ìr?à:Æ¥„.ì÷(ä…ñcr_º,8JIÔ2jns†ó| ÝÜcBÈÔÅC`¤ÊÖ‹&¢È =e]oñ"-®;Ô•,^£|9F9¶èIß´›„bèʺÕ(³Æ£Eˆ&vîñN>ÊXëjÁ‹¨.aæwˆ¥•ﱡ„¾—ù¬ ÝBg¤D9²']ëäƒ ºµIã(i²ùFùK‰„ëO̲ÿ ç ìÏOån 3 ‰­8,2Ü @vj ;e÷‰c¨Í¼f‘eu¯‡J ÃK¦ñŽ ò….º2£ ñÁ>zµ·f®î4O› ~‡m¼”ýÞâÿa¥‡Ùs1htíhì@ØQhdãQd<0êî‘¿…ÞA©¼+î…ªú8ø?VC(.€Hî̉J2ØÒŠÍjÔ×SG̳½½”ìà;–[¨¹?n oúnU^È©‚¡´³o‘Mù ^FU6 ®¶Ïâ«oq5 6§íß dµF hЂ›¡b¿2ãWÊfs+ž&>› Isª˜±O‹7%]Jq­5ëÂè4«…0µA7r~„w¡>’îæWÃõÌñççY•‹&¹hÊ;»ìdmg»laVŒzI5W¼¢œß?Q&cMW®Oñ¬×Ñdƒ¢›¢¯ú- ír+Û‘H`íJ™ ­^]z¡ç«.çPQiÜ\löÆ®ÿÅÀâÔ/èèœBV0ÀÇw„Ü ñÙ“Í>ÇJŒ üðáà 0©e‹u¢VwÂ…²2H}®tH¨ fëKÌB&Ÿ/Pš¬Ýb)J¬òKÌ®Þ ÛI­Š`T©f"ô¨×}ñ“–ÿ ž“ü3’˜Æa0¯âq+ÁtA”'›„ì¶e†œ0º=E©wuYߟãE§¶cïÆÎª°ì¿@/¯C?öOÍ&nT¡Àº:í'F,GõPô‘'ö r¶‚Ñ(N|tOù;‘©Ÿúéûd×\°ÓL»·žK8öCø×ìŸrÄÅÙ<€}ÿ~~’Îï‚[x“H[÷»OŸKÚ B¸=ô;Åx†¼k½ŸíDêù=:Þõ4ÂS–ÚùÛ. öÄü]üŠÙ_%5^!};yúÝY•nŒ5×s’N?ñh€î“Þ ¹Iÿ¨‚K”,$›Ðî'?¬÷Jƒ\£ÊøS„ƒwþ¨>‡ð;8ˆVüŠÌ>û)zž=?[aZ|½"Âw6¯&t9òà <|¡$1 ¾·?Χt³E‰ 1EÊ3t Ò½ÐÞÀóªq~·½»Ê…Z㌣rбàb܆(à›íMIníT³ŽädÐãt!|dúäl”ûTCÜvÉ;ëzó» }ÛZ’‹ê÷Ëóo~~¿†Š…Afy]k¾žª ¦”M}òôQFÖTU"ûrÞìi=®3”Þ Ž¿_“crœdú²ÐÏD$þÞ,iªÂÁÐ÷0ÈYåÓû`© ¹ÐpzU«Ú"-lçòüV.,2Fj!îìŒäý"o3[ZID»Û6zä>Dó+æå¨Ô ZÂÁ¶«¯_‡b²já;ßȽ1=½’cY9Øqôc(F{®b £FÜF2áÚ§  êk2Ÿž°—X }¥˜+´R4±5¼òs»%‚lK ¾ŒÕ𢥠S6]‘}ÚûMß…z†Ô˜îÓRøaàUÏAý½ùA)ÅB0<£Êo?pÔûxÆ`ˆ@aÛq¨²2®›â„J@Öȋ툌g8¢÷8ôç,¸N”~Â^èô#âžñ’„{ê{J!K=¼à?ù ÔÕè§Ü3sT5Ý<þÄôy½²ßò³«ÓÊ×ð¤¡â‹ù­ˆ£kè×Ö|:@WÂe 0©àýTØQ²t8€ÿqó ´UëŽÛŸ´ëYÂ!.öQ ¾EOÐØ˜ àØ ¨¾$½"+_"˜s Éõš,­tù”`æ(~OÌ@þ—àPƒ.à1å5tœ©,áJÀDA…‹8W=:Z$€)EªåV-W1œzúÞ\çÉÚÊ-I 7"·V xa\šN†Šcƒ|÷Hõ¡ñ~Ÿcop_°ÅèÊSÒ&Tv7§/O Þ 4íâöè-"#:†b•oéE¸n¡¾´ƒ¿UÃÅ@vúøÅÜÑ”÷EnÑ>7:&™Ù­TEŸnŽ“,ÇëµïCôJðÒPþ«²IqKÀ|Ñ?Ý’åÐ:Ë£k’:‘«gìιëðˆd[‡8ÑÔç’tunŒÓ°Ï.‰èh/´Ÿ1ðeõ-̶ÊVEÓÛ)iÆíÐ >±©ÛŒÛߢ¡ m£®‡Ì@…¿C®E™×ðR¨ø‚¦ÏA |JP -³»/K9ðŸ&¼ý•qö÷itù¥Ü7Hä£Áe¶Ý$a šx‘M•|O¿«vS¦ÚZºiqh[˜smÚU‡#4KrKô›ª ó6z4çq*íªjC}5à0‘àK—„) {€5äàÞE¾å ¶v7šN µ¡^ ó亲áAª0íÆTŠhëýh°*ÚW;Xþ‘0ÇZÀ-Ô£CöèˆÚ@9‹úr!O_Ú±× ‡p9Òvc×§¸{>¹C3×i5q¦•×ïÍOù R>¡B#Z}ëR }éoË BSj?šUN›òZ_eßeëE¾!lÉ^27äßf=¢‰ý ;Tåx~œÏÓa<\ËF¦>~ØDב=-·ÆÆ%ÓÍL·ý#®r±Í…ÞOð|ƒ©^– EvZUÇÉv3ÃQH‚hAhÉu+HVª1ì© üб!¤š(àÛ¾K%d.[úþxièb&ô ¯"?ßÊK‰ËÚû»quq†"éèÒ›%$K,S$‘1{IØîª×¹œèÒBd,¿!Ò.QåÑ÷úëàUxénõWbÀB˜ÖµÎÛŠBóm¦{d„a¾›ºëÚ‡ÅMzé£Ó%\x } sõ}¥Y “ƒØs‹Œ}âŸâËé>/®ƒ›"­qG„ãŠÐÙP¯bñ•Y%ŦT{€Ö¯‰rÏ©ñÉ!l‰/vD{.Õ]ïÌ]Ì‚ÿ>áŒ9Ä ý„·éºª@/+wg±7° +9B4¨²àojÛXúþár€ oPÍ~#FÏÄZÆ;AnœnI»½¦‹àÍ Ö’ƒåî¹¹¬,l*š‚{˜¾®`Kp!ï¤ øë‰ ".™e•TÔ‚ô(vÃ½Í ßMt[…´$sõmæ>W(h9-‘87HVöÍ·£LÍ,J27ÂÙ<÷F}€rwS:J¹ðAO/Ÿ-|•TÒ*ÎÓ– œá` ʆÝ$]¯ñ¾ «;âéµò'2‘Šá-C½2ÄÓ5 CK¬Ax‘RH‘Ël€}g°<еJÏ@ï“‘”:É2²ò©èF‘D?ÔÅwð_ÕÃ5Ç@6(O=Œš-É6O¦ÄÊö†n».`Ní[z—…kµ/QL+X›»7c3Oe[úlñþÓDÀ$/{¶DÖfþð:zÊN< ¦Ø"Å  7©¥ÛߥBlhD`XZžB9 ÅÄ Ó T ÔñO°ÏŒ cͨfü’WA2wLêø?¨×¡à4ÜL¿Gp’ˇ*Ês0<ÂRøD:¨g$¬ÖošÍu’ ,‹†À5…Ì+š|êãß#L¸…Z}§Úa}<ÿ" R¾f¬Ã t6ó€EìÇ fÓJž@K”‡cc| c¡{…[-,²¤ÒmÄXSAágu÷â?Ieš)™Ü<焜p$™AB SJƒ'a÷džÓäPÿ/_eì¾3,Ãt<7µIƒ~FtÊÛë±ó¬q#€ ’+à £³©ôD‹cª¸cSJÈ;g½±§ÃOÑÐrÄA˜$î«ìÙûwf\&æc[_þ‘·@ºírÝî>/ôÃï7˜2Õf`/b„òE¿(:Nd—^Š-Ê•æ£È: 8¬G“²¢ôqÜ0ŒøÅ@ƒvÌ ÊBÚÀ|1ÖQÅulÑ@bÿàþLåJÔÇ{TP™{ù&Ý}%Á óEÅ·O¹œõé»{wÉ_-è¡_ÖÞJ“Ýúœ¡x@<Åú»º>qógOàUöE¼t™œ»åÍN—_Tàeêyû˜õw‡uh7Ñäb[çŽËÁ̹魗Z‡Sm–vüÌEÅKÓerþÚqä…ÇAJ›[×á%!e\ûWÞZP·ïΕDl~E[¤d<×n…g?kwây(²É)î ?à–µùuÓÞ¤?, •åSñóƒ¥3-êùçp·*Ÿ)vɧmø t ñ¬º ½;q‚ç«Ñxº”îä•âóÝí*øA9t ¦¾Þ!æøPèiÔ u6¤Y5 ¨'*Õt'ÂxÖνPäÄd„pŒJ˜¼•ˆÏlof€=Ç ™îÖî< ôã-Íb;jó>y` ¡yô]8ëcÔáÃûÄÜçE(Òé©€›×]÷Š¡œVmŸP{ÜZ,€ýº,“ í5—©;Iã*Oã:©á—#ÆÍªG®›¢´BÆM‚·ý.d.'~÷·‡¨ÖXv0ý¤áÖžvÔ8£,³Â0Eî z—øôvœƒîƒˆ·€+Sû)³™€™›t£”H§ãmºÉA.óTžn.ƒ˜‰TJsØm¬¶dT"“Å£IØÑ}ïÍGœ98‰†‘§;Ã|Ã"å4ê4ßâ„Xoº)Å6&bQ"ðøƒâ“NP²ÑvïrÉ}¼ÐyÌÚt)­”&¼(¥Óäq¢‚„IK=éLéÜÔ,’“ù<õ Ve¡06uÉoçiÜ,¡G¬W÷GßÍŸ‡§¤|Y–ô |˾¯C›EìågØ+É­µs’Õ îåðüô(`~PõÜô@EÏ$‚ÜÔ‰‹êü Dq}üÁ<.ì³&âŠÔ ±l GÌ(s2«ò_ÕòPœ²¢1Àà£9K°÷? ®œhÝB n=ÌÀò$غé‚:Ž`õ ©|_IÒËúû„NÆ 7}™Ýá|Q…ùýNê© $PŸµ æÁ{5gRà´ß ÂÙ½Š•šª®½f —Ì2‚šhje•À­çhÉ€2ç”\‡|ÜߪšÃ¦Ÿ§@¿Bj³ŽO§,\еºämPO&ª0^j•ñX‹µ*–S§ 2®bÔ× Lè|žÈduÇ-Éé;YAtԈ݊vœ5‘úrd™½7nx7pnÀP_J~@ JPË÷äQ@Н5‘FÐf>y ¾¨·A7- DZNuèX^°8¤yu`Bšù}¦ßª”ì ñ¶ òÿ*ócIŸÌ{Cmkô½m Áˆ´îЗgå÷*Ac˜¿yU k_Ö5Oè$rIt Ì>[)sEŽ>G›/ý[,ʸÓüЛš x€²XæBcÞ!z«#Ê,Æ&/Ä+ÄŠ"@˜ªÝ@°m; \š…¬ýÇzÌÊJ#QÙš‰ð:’J¯·âBŽƒs–öŠàN0Ö´®ºúA›ÅÙE:åʼ‚%»[”¡hÇΤ7+ʾEû6q»÷QU‘Úû¥ËBÇÉe¾úúÞw²¼Û¿Co¹‹Ù·cÖOÂÞôb•O4ÕE… =ðHàÓ“nwdÝüaŽXh•\{l]¹åÇ''¿£§¼ˆðýt©ÙœÙX«¦>^‚Û]âÒøñB²$UÒt:•f±-Y~@›Û³F+;BkµeP%> ßÀ†ò‚fí  ›WEPOŸH¨Sï÷DYøÉ2Гoñûb±žÕ—©ž@§·’(ÑBuƒ{J\š'çrÊÕ¹oå!MZÀ&–¼0—²­c¡«£«Ôo2³ß’QBî£LM+=±R»õk)W(ür¤)I /„•·Êqp0[ÍqÀ” ­;ô|¦—“ ÕàÞ^¶È¼´®^T½t( \¢íPÊrB5±Ç'žÕ™­¶l^•>Då£ÕRr˜z\³Íð‹ bÇÐ%ël÷ó\dݨµ² »Œö‹z›¦kœaf²Ý™ò*ÅW²á~Îù,ލ¡Ü$K£".#ó˜7Ç v [, ¸”<3Ã9âÐ[ÿ]/DØtsSžÛ6”‡×óäU@!‰2ðHƒŒL}QxFòf²EU*úq $i×E¹“®ÀO…Ýj4¬á<¥ˆÙ¤çêó$7§¹°h‚6$©‰Ô‘us;OûãŘ‚£&¼®õx8éH0F@k£Ö‹^#+F9‚ˆ‚D wLš5,ö—£¹@Ù^OŽH¼6föcnþ05½ä°@hÇ]úíh¥b†4+×3ë®?ç³ìÜ®‚©GSJ8‘%eÿ]eÄ„fÑ”Rº ´å÷­·^Ópù¦+ 1¨@§{+»ûaõC! Í2bë4t< ÖõÛ\¸žÒí±;ú®ï!Åû·¦·.ÉÁº&k †šË¶ ûï“'5}^½¸œÂPTÆR [õÑ $z_sÁÖ80«W²þqÁ ®fi ö™ ¢£¬à‚É y÷­-à PˆBS´ó£E\k·3n~Ñ!‘̧‰IßÝЖÛÔ •Ånm£½C„Ý||9ºž=*ç3%œß©¥Z*î’ç<C–¨Að €"‚]„T‡žß\Ë2”!\ú¥µ¶ ¨WÈþ/¤F!_羊Và¶ò\Ä5vÛ‡ÈC¬„tÖ úecºV,¡>)äË5¯‘,ifÖåíŽ×]{¹xÐI8n]ØØô}ÍÜê9Pšõº_£OkºPŸʺ –´{Ü =‘%³ôxŸâ´OMè"™ï„ZúbñgòŽˆâ{t)ÕiŸ´m³>{ÙÞK}’‡ÒâæÒsm!éÊH8>#[„ó0î²^e—E;OÇt G¤›Cé=.Ø ód=¨y~Œ±€Übs;Îo/Óä˜m`'èˆßð1'€(¥_«Ö*¹ïÝUÅéš±Ô\£A†ÎE;í÷°1y 2’s aA‡ÿV§ŠiÙpjŠÚëZjEeÅùwNäbo£¤¦œ—„r'®Ö…ï€Ð  Êûúþ[G夳6¯‹zÒŽ«±« ˆ£¹h‚¨õÏxûí%up ”ZK‡“®Hê"Áó„¥ùO³&–¨Õ‚ÒÆÊÅZg–«°„T<®yë ‡sŒuwlªªïGŽÊ™ïŠèMïqÄUbäz€]QI›ÞP~S†ˆsp_å6àiǨ®¨îúÞÔyêï‹p½Q7×u+ßËtޤ Þäï8ZŽ-]"LñHúR/ð5@TËĽ‡Ñ™Öx¯Ôೌ$S†Ì$®HKsø¹GLBp«Â& Y•Þ”ÑÈxUÓÌ]¾wåÏþ´÷*ÅFEVÜ/|}>¶ÑÄŒ ïÝ&¢¬Ñ}=ºCŽn©ØpRæD¬É½@€ ñi\œš¨ªÆ5¸Ž´ô»GhRà[í7ªW‹k̰,.)žž—V£Í½æÔû¹¨ŠWP‘¤’}=¤Â»Æ-cG{ß×2¢›?O]ÙCÛ€Od:ö„æf¸§ojñ@yo9ªF*FfSe¾­Y^Ùiê-t€ˆJSi–˜6ÊK«!žùl=WXV®hVÚNÃËëÒÜó' œÕ*;d)8\¥ ¾Ÿ¥¯Âgl‚H^,*7¡diu”ßžÿo挭 Z)×®ƒPEª Æ mIjS‰y÷Ïô[¾Ê ‚N dTó:¸/—(\_…¸ÁÑz¢Ç³Íi^²8¦ü"ѳ¦×eA€\§mÍt&›Å‹Ã=7”%@ •`¡Á—€–^*²d;sa,0 lú€Ä(3ùæµI2 àJcж5yÒk8~‚ß7Oåðë'üª/îä!æ‰û’¾dìïãÝ÷âa$»KÏžðö€6Þ‡¶ t–|óÚ˜¼ ‚þ²ËžÐB(?G˜ãQLt´—YDì3²¡ÓÄã·ÀYáé8õU<ª£a×Þ¹RíWp7:M7îh5󈉅ƒ­ÞÊõdzÎ"kSÝÒÌF$zV¶'ì ¸úw¯$n»\]û«’ÎL3C?}§·®ÅùÓT[ËC{²‚̲h0§ƒ½‰1pÚrU7°]¤tH0äûˆ¾zÔõååéòéúI©ˆl=ÓŠ•dyŸ,+x¡A5š†"çÝh.Ž$ÐQ4W(EƒO®Óÿhº/Ð…ÙÝqº(ãKDôG`Øû`o߯å:=iO&e²:ÓAcqèðµÓ\o£¹ØCôE@2Ýz¼}×'ê¤í·Ï;\/…,vSIP’°?w ØQïk¾þgÕ2aÔ†r“7²FKŽV7,—/ö°’¯Éì2‹¡1˃‘‚ç&¼Üý¥l+÷œP~I±‡[Íe॔åí ðÓð¯ÕÙñŽV¯ê À+Š„,­ÎèÑ¢‘=ÝDP<ŽkÀCÖfšžÅÝÆÚ¢ªÙÚjª§›\AÄ0'wÖÈËg.ó”×LZ& þ¬=¨Æ£å7qE… NšŸcŠ®U"`B…EÖ“¡ÓFäåÝè ìZÌhš[g)ƒ`kþäì¯ødí-1m ìÀÜ™cª€‰Ý`0 xg1Íëc­„ƒ+å÷>%O*ÑFà`|ÚÚÎê8­éç•§˜Q«© þàˆES’y0ÕýÇ(veoÄü-73e>ŒÄçV¿¸*“…f„¦0E 6à“? ¸.,œÅÔ˜aê{ÃÚí(˜]EÎÖ˜à Q)?z› ð±IŸfcFuMè§dQ/ÎpzÉôگユª³h¾«Â­Ór@/Nûž:ú±x4×oã¡¿êÞ3~èUdØÊ7@÷æÜ Âáf{úz€'­!Õ Î'FØIÚ“÷$j¢cwéG‚§µ‘ï7„Ц§3¹ÖZsÈ7$3RJHRWlIÜ@>ÁYie»`B.²¢+äÒ;ŠœXI÷Î\uõ‚õÔRµbâðÑsL%¦Ì‘¬Öîz)+ÙRûæXç™ýÞñ/Ôï$X51Œ¹v¨k$á Ë,éIMF³R¢57˜A…Â^Û¢½ãpFÊ—»žÎ:7Ð|%µ?ïèÝׄMaf¸ µ7§¢žæ4Kñœ…k8w•YY¯{f´nŠLBR®‹`â%¦“®át%w2xië—Ü%2=µ¸(Ûo&À*ûTH2¯JȘ¡©s./},•Mbð‹`.ññöŠYz7UYaMæfé¢ÒÎS›öªdžŒõ´ò^cû£?]’œf# m„˜‘ê›Ý=ãC:ëý–­éïpgÅ!nU ¶Vò /ÛG¯_M· ÜäÑ£‡¹X¡¸ÜW0ÊíaÕf¤˜â^¥håÊiyªÉm’k©JD¢âä­ö¥¼ïKÖÁIÚWŒC¥„½Kø­ß\ØJSÙÓ«Vh0leI’Ÿœ|Ô §íÈN­úÔOÆíaYâHÕÍ][P^o®Ó©Â`+«ËžV¨6éX=j'Ù4{Ho\`°üú´z‰¨ó_!Þh!uò4ÀŸ)²gáŸàÑF%ƒ@’ðÚ}ÄaB½¾ÝáøÍºëÈðÅø§)jpÀ€¼ÒE¯U¥]Z¾Ç,¹­•;*­u׫uÙeö¾…($”;\՛ਲ਼/a3Ì4‚GÖБ8-y‡uÄ.4“KÔ{œ5z®÷'Ç‘ºÆý­íI=õ´ÁœÚ~PÀN%4@%vÐ_'Šdw) þãÕ7ó3hÈ8ŸF´_‘/¢_ ã_FÕSŸÑnÓ›‚)EÝ>>³ðŽ &x½Æ@òG#äP¢ÞÖä=>Rˆ¥=oëq_䟦•–6¢§Y¨jK¿¿OAx ]Èù[’ppÔe­jþãr©F޳2ֆ䯥ˆ¢ tÖ5×rèÙÒù<º:¼—)D*CG1GÛlN[­! H¸‰æ*áÀEèÍ73ws/;&ßu&©Éé‹_,¯§€<®lñG`Qšß5Œ)™¤Ú,’й¤)9ä9½•4°J²ž,±Ð>]Q V¢‘*ÐâJ¼I }÷#¼ S?—\D—øLu ï†EÄv$;ñèïêŠuéF›0]1šþ·Ê#`—*ÙÈ(¸E©Ü/¢ùû.þ•Ô4€–k³¾½5È‚NìOÝZØ?¥?™B1š§„˜M:ù´ z9MR…'Xš›4]añmU>ïZ¯ˆqÓ±˜ÿ,"uÜG§6C{è=EŸª%¦âÙ¤>/Qg!|ö6¸ëVŸ%”˜=³•[²Pݰ™ôU<Ó2ܧ©&\ì˜s¶>?]žš¿¥+ÆÒ½ðˆwcAÊ‹˜MµIÝUç„bx“HŠ 8Š!CåuTp…;&¢üׂ ÅoµdMR%ü|£öe”ÅË ±=“:~N}bAŸ#¾£Ž ¾™öý{[7V8µ·Ý :+ÒàÀ*ò‹Æ-ude‚Z2ñ™—hßÒ_5YOC˜sùxÇý]³ql4þ_'*{ì'áêiíu¹=¿]Þ¤áúJ°ZÎ|¶îé†e ®¼í¢ÁmhóU ªlZ ÉÍ~„šÁöý#'tD·?ÇŒûñhìðð^ê¼Ñ×È˺aô2¹SžÝQ÷¬²"À»D|n‹Å_§"æBóß^J^Hó&œªacôÀxúQÖK°g6¬ü£ÎÑÜäîѸÏ蜑ëó"ÆÛLgÔ/»Ôþòíd†‘2«Ú±.ôÙç¨eûSuÏËšR©¨müiÎ=¨|öl˜ÙPaÌ›þí û㺮õÀMî2 {†wx^Bu~ÆnäŸu/y9“û;\QS@0íöT¼È~Ó€ÝIƒçŒÜŠ‚uœ˜]¬Í§Eš&ûÁ§b“_–—ŠÎ?°iõ öZ™O_U³Á̺`1kÓJÙhSMmW/á$%Ý•¬–ç(Å\éüöѱ§þk…U¾@ GuLìØ³Î•æ¼J Çe=# ×p$•Í«”†aYÑà8¿-„~qR˜­åk¥Å Ï®u«"‡ Ñ®>@nÂF$dJÆy—Ï„©0jV­Ä1¬3:e†*zÏ™E=…=ƒ™Å»ý†âò@Ù$EEwÙ‘µtnÝf‰{«¬Ú|“‡ DTÁ‡¥þ/œ–œ.Ƚ{Y,U­¦oo¾#œ „V´®‡ wQÝ)ÍE¸êÛeÁCýÓdpú`'í=û-ŠÎóm/æ`žšgðm:ü•u¦IµŸ+ÛaR Êñ·7jçêÔ î)œJßxìJuS“/ŸŠgÐovúÃEºX›räˆùF}+ZYõÒãËÀŽV¿GLÛ]¹'õFÔ,äÚ°ù&9v†•wåS­Ð_aŽE5Ê*©‹ë§_–…~ôkвf00ªvõ¿‰‡{ˆíØócàÜÆëÂaYOÜÝ­vêN ÓŽmZET) –àFðõZ<-9úDÑ>’9IóŽÐgŽÖ‘RÞ'#N˜„ÍÍSñmô~­]Wþ*ŽÔî’DHYÿò]êD­òÁR«§r<És"{^Ä58Uµ*äë ž‡|Ü‹âU¹{ž¶<åÈ2Uýõ·üçá_H/jýíd`½®¤l˜#6b°ý˜d—¤ø>…Kè—AxöÀæ&òMݯ®VŸ”•?¢ë.ðD: æ{”™Äp±h„ØH2 ƒlÄØ¶üXàù<,‚pgJa-GÅ-Z¹Ð.;ãâ@š³v w¦8åûוʑúÀO(ž—¹IZ•ÿT•PÐß‹€KÚ†ò ¸3m€‘ø€fþe<¸IÝŸžôš˜ ÉíØ]!OÖx×yC=87A‰ùèAA†:‹ððá­ìù5õ%`|ZÝ_rPÛRÙʪP-2(pg{8ðn¢0@e'#@_ G׸Ìã(BŒ\¢wƒòzƒAZi¤ Šœ/jw ƒ~äë­½…Ô¦Hì¨Î $G„íØ<Ô+†²”k`[º™Ùö‘RÃj¯ƒ€â~€[G×XýÙóè&Ó¦›e~ ¶¶\5Þ`L¯P—Æ¢uY7ײcÀ¤@XÓ![Ô7ÉÆàU\)©ÄæÈØKjܳËÉ °÷p¢¨ÆR-Í‘9;,èý{Ï[‘^ssÒ®8\FZ´Äáµèd‰WDcù:{ð¸F©ý z“CS D̓(”‡°"éà st”p³û’dŽÍ'»G€`s¸3²~¼ô7°~õAôÁCJÜHÚo§g€CÀ„?³}À-Ž…(²ús {Ø.Äf2ÜÑ£R³à¤É#æµZeUô—·éDLß ,©!*Y³Ô%«ˆâæ$Z7;k›:W…$q\bÆ›g[Êôá®ÊK¸eùæLqØ–º™žJâü—¦Üì…ã¼àJˆ¦Ò¥ú‚@b¿Ä1°:ä6ñ¥yJ„‘˜q@@X‚¥ã§@âÑI˜1›pXµcùʶï…ê—D޵™,YK^i¤Š«EÆgïóuÒýL±vÿAÂ,|‡­ ÊRÌÖ¦ Mo-+uîôŒp¦ŒÉgsï‡Ý/È0ˆò&¯Â£QÞiû¦P€×¢èJf>ÒËD4âº×[/® „ÁFù>Ü æHßsÝ]VëµI¡U~ó5›#‹xòJTÝ¥ðÈÈ€é¹Ù)>Ù¢Y?ÎÛŽ=`Pú5¬”"v8‘|Ÿ»Ï\裈4“µB$6åž´ûü´ÿf7å6•œDádKéˆ/{^;©Pò"Fz10CBرôÓúgí~äSbMÖAŸ½þn%ÏQ©.e•äµíÈFú±à.É_[ûÛlP8Ç[Çüy¡•`ܧ1ºÏ ¬t‰ë“¾”æIÞ—8ø*ˆöyisf¦à´?J…¿´'!X ¹(êã< èÌp¦‘¹ñ*‚\ -TI{bJ:‚é)ˆkŠkt]C݇^­DBæ˜ÞªóŽeëû³cÞæá ¹Nˇþ©è(YȇåZñ’ÖIÇžÉ>«åˆ…  &ƼöÙ¶–bòö_|'W)Š$Kˆ=ÌcN'aØÔY¥»#2DáòJ¹Fa›xªeD”ñq+N^þÐk’Ë\W{Τ¸»ÕD@T–cÄþ/Ù­sAŽö"| mIWMoõ´ä=S$tm_$[i?‡„µD-jÀµ~ÈéåÑ:RC]LÂ7yªD,õ®dW4ð`º1ç:ü/ôG¡ GÛ^ƒqh߀Ïbðrî~©d{ÌS!è¿4e€´)Ðr¯Äåð•+ \5tØ):L&"R¢‰ŽÊÊXˬ­ç&i×Þ¦v“Jh—ffÕ*\í£m8 3®¸ªu€÷ÚÈ™hrðÜêÞ¾UÕÜ«`p—FjÖoߢ¶>87AbƒJÜAŸÔöC¿®?žÎTG7ëLÔj3aS¦ïLÚß"µ5å,~ÂWá ödIe»!Îæ6i¸6¥>ä>J¬ VZåÌžÛñürãyï;ºv—X݆çIù²Š7ðÐI”?׉¥s~†úw¿G…\´àé‘ûJþ˜G•Æ9€ýÝ²Þæ|x¡Øq…~<yüUP˜f³r¶ÛÙYÅU‹‘ 9ëÕ ÉaÐý‡²ŸZˆYú§Q€}ÏØœñáGÌà¸maq¢ ÷Dhdu¹$ÒŸköòüù‘]~ó_K!<'ÛO¬k{‚Oo¯b>êì·ÒSqÓÐÅ&{l3¶£a¨TKÎäC‚:*˜:^׫q¶•è˶¸‡ºNˆ¥r©¸8声:˜fDQUŠû›(ÑFTMSÜé¹A‚eMެ€ßÆ"r–`?Z÷[öc@ø:ø!F·R^™—Ñ;[ÒÙ$õ:hù#¯hGïì±„ŠæNÂOjgÖx†ˆg#®ÔòfÍYÃÙjÛ3²ƒšÉî®·Ò nTÛ€ãBùé²²|I/3±È]/qJxH ÚÿDz#=òH-!NÁÉý/±Öù÷“û^â´Íœ<$Ovœ’9Þj&A§n±¦þí‹pÅU¼ÇU Uf‚™ÌÒž”-µ 3g ¨$6€/ö»ÿë¯ ’MYU-Ñêî<SMÓ5‹"÷€¢ |\ qßK熾ùmú°ÌžiWçG[íÞo»Îî:äóKÞW9oïé{óuWÒ\QIbæH„rD |˜˜ÓàoöØ;ôÌ0œÑû}•öÞží×ì^œ 6ÓG4KU?õ>ÏÙ!ÏŒ,›ÉsN(»í0G—œ6ei͉v·<‹À‹B=MÊÎʲüz:Üû³ýœÝ«³{sÖ¹2þ^Ô3Œ”O¬r:J–_ÍcŽ*jâé@œiF÷}$aD ¤ÚÅ/ŽE¬b ·:ÂxXÊ)Ž7,½Õ]Þ]š…<Ó¢Ö¶³Ò¼r…uZ ÏývgWÖ}ëApÇlÌ!ñ¬Ž.ÃÔdÖ|FG0»Îó’ÜŒc¼ À´r1qá.Ûrüðˆ™ÒÄþn¯ÐÓoHñ3 ô\%éëç5}G…¾ìgŒn%ž³ç±²æÉ‰ÃP ¾È'†É¨ÑÖÉÐ,ÿÙÒ5Œ¬´Äþ6OS€ÊÂøm|ç"\äóÄsñ›‡èÏ’%êyßœ¯Éaº,HyQdÎI@ñåÚzx³HøL›/»VÓó†Ÿ-’@’X9kªÓØxP}CøqòyhçCÊ…ÏöÜa—¸"GZ,Mtùâ¬ÔGÿÉʹñ ÷@27µ“ˆöçO3“†' 9Ìà‹ò°Ô%+=Ö8ó&ÝH +,%¼·|‘â|!_bÑ]ãÓJW3=@ýö9Yšá‘øï€ ÷Ÿý)Ó¥šÌçåæ…QÊøqx*nŸ€+¤TædÑXô‹b‡çé~êø~þõÃíâÅL‹ƒh¯ÍZþŠõÅÄC'!ñì„i×pݽb “ó%m-L±ÂÝÂ?*÷¿á+~„‚ÎgÇ©ükí3{-õ&®Ìö×à èLz>z‰Q~ø¦Ú¸˜~Ôj†9®¦h+ZªåG¢*ëGŠªüŠX>’ ‚ÿ ¸‚ºlŽI>Ç\G‰\ÿýÿôå~øÕ‹‡ûËóƒ >éûZ}÷IÔ{¦ï¸fF#؇Wp{A«µ½'³ËÒ­è‘]|Ä=Ã?ºðL¦¶ÂÚ’¦¹ KÍcx69XÂ>§—£ãØírš ­¦÷(ŸËÏmu$|ã¯~áG¤ß"ÊMªO90ïøJ(ÆRŸÔê@Ï=ÍÇ~>q–sÓ¡ŠŸOÏŠµdU¨½M;ßôÊ Å²{ÄêãŽ|8ŽÑ7âÏ¥£é0BÿŽÿÞåú¯lûöÒ–á—Ì“¿ï÷‘[tÅ@øÄs²bö>é?2Âû8%•Õ‡nÃ(€º-¸¸¼ù·RŽ…ßDâÄ^gl¯­NÆ Üj ¹lJ®è9ƒì¥.Ù”ü¹Ç…F¥N~ç gü6V>í4âð°{?3UtŠV‚¬“‘€”Œ‘„bñ7/Ú¸…Ûò-@&Ÿko5LŽ EÃÂfÑ hïva—,Ñ,àî â È]t~Nˆ`$ÁDùfûsÎ=ßä÷½ˆ9±÷ÿlBû°òeÛƒ¦ÿ±Ðßûié[v>@§‹««¢ùj€—ìÆvRÔü³•jÂÞœÆò{/+aõ£—~õá§Çû՛˩TqÂ|ïä«®nÞŒ´T"åªp1$MiE¼Çk»ø{Ô~ýk•ÖüÇW.jSùÛ-[èßPñßeF ´¢Ò´bÀ´¾Œ”lÕRð¼v Øä¤‘™ædÚ`j›Ù¼ ÿûðîã}ß{_¿¼¹Ú®Ëg1’… þÏ«Ç5d'ôɇBÒ‘Ô,hXœÌ¼Ãq»˜€ñuJT Ÿ¶µÂãús8Â,TrB‡Žšåa ½áÄ"K{EþÓטÄô £-–¿Êž °b«CZž7LUžO¦ÞÅ@ {:Þ÷58Ò©mLïÃ^œ>i«þ8üòÜ7wr°ÜRŽï ;gDo”D“<Öá6žÜ<;Œ^.qʪ™âù¥c@„’M5<,ŽFyj —S"$®ïŠ Xó¦ŸýÀ)·,+—NJYtªòùTWð–íOÈ¢BHiâ,nœYw-Q Uߊ›Tå²…à‰Ê"鎗•åÒ>¸*ì Û<ìØE¾H_´·uU;4<“ªƒ†SìLgñ}VŸcõÊ>–o²ÞÿuiÕ§ÇPØÀòFð»èÇNݺ­®—P@Nüa°üÅ+á׿ùàg>ô™×//Ï÷»Ùå~;NF¥qèË÷òç­ô̆¿x«ÞÈl]Z÷ÕgÕ^^ÊTsøE%üE½dXX+&<OØî¯T¥ÌíCp/›?%‚@âˆXf2ÛÒ–%²åÁk$Û_¥Ÿzýêæêäx&ù»ÿ½¹kÔÃ8P¹âOy»ÞêâÓ£(1‘Ã_^ŽfK¼âyØG ˜_ÍÊå4n$|ûÙÅÙnÃèãŸò¯nçuxùš¡·bþS*‚_e\¬i ê…u™v$øìÊ*|ã Ôý(Zöz¼§Þ ¥ñ½Ý¹ÕžÑ= ~ùÝÙµ²r8_ìæB|ˆÂ’ÔT÷Ú“”óØï½(5]k  ‰Ÿ• û$¶ÏfZmš»ûãŸóJ~.Îe97X»·<…;ÑZCSkü}Cíz´l÷'P½K·0ŽŽì:ú¤Cê®é£a‹OɈ1b1€à#™²sãÔU/¾T1¾ÞÀ8ËHô¼S£lŸÇ‚x´ä:íž„ñ|áý:oâþU_°ÀeD_z¢S“„” ê½Î"š¾SHØÒ‹/SmnÆ«mé q |ãp4ÂE[þTŸsî%ò²; #Áµr”ô&»*‘Ì#Ö;˜*þ<w̬l•îͪÓÒ5> Øp+üÕË!Ô·3¾ºM?“(xúõ5Ì ÖàÝ\7všàæ$FËNkwæ´]wÒá¬7â!2ñƒÐJM…Žå 2ÙÖåȲj2iÆ9)eÚÁËÌ’‹:;òïk” xý>©÷±+K~2¨³è/%æôÑ(G9¾Žg§ó˜rÌ ~ØR ‹ùvî¼yË2Ïå¦Õpà‚P{²pûÉ%¡ü>IZþ&-ŠF×þªõuaxÈW˜…ÛG\,°|3á]Å]÷0 ¹ÜžfõY.òÐÏæ<ŒˆoýÕ÷V®†¿”FP¥,WXFz¬ ´+Ç(€%8&`Ì¿ZƒåGûâɧ¯Ý/^î^|n¥¨ËЗS¾_(Ù£Ñ ä÷'oâp&Œl Ø#œPt‡0&Õ•¨¦Òú*ÚæëAÞ­Tb’€È»€aàd?³kÀËNvÀ_ ¿ì}Írèä6k­À­Á€¢JÜâè¸4À–IƧ˜~y}X)1÷þ³2L ÕNW#ˆØ ,Ù?èùz–ç7¥FÛ"AÍ5ZèôѬá8c çOʇ¶?gZ4ý#¹Œz0ôÝ¡ŸµŸáL›—ÜE¥¼U·^7ô M÷˜àmHw†~:”S©éŒ${‡iÐ[Üs„ÌÍɆ†^$ûŸç~Ùvè¡ÐÁݕɉjüOÚU¨«©YmSÉZjö„+CjºqãîõªÝ&y9é7ö}—&)qÙkM!䓉Y¥`6Ú¡ýq¥:HÉ¿ÜkUžf£‘/æÛñæ0ôD]ÆQ±íÖ¯xYdsa+Ûí=¥ö©Æï¯LÀ¯Ù/œ» |Lͽ~ÉÜÒË÷ÓˆäéñéóóçËi|L-Ý™/½:l ä*}™gtà øsÿ¥›é. «*E¨?‡}+€)!Wãñ»N+ÑÉŽ¤s¢C×a#ž] BFœyî,ÌïÈpÚ$ð¡ô“ˬaüÊ5j.Í=(™oÀ eIl™>ŸÕ ˆêSJñIÈ–áë´6íÊ*ôˆ{XdsöË’–¢?ÿ)ÎÎ$¾Þ.·ÍqÄïŽXKm!æôRsu£Ô` ëE|³â‰A*Éš&¼â¼“ÂMán¾áåÓqþeõüçåGƒëùíøFõ¤&W±Á“/7Øí«–Å øÙ1”›gmdOjXŒMBLSǘËÕ\z|ŸªÍEè½gIÕ ï´·ÈMS¬1‹ôò ô¬aì|;&zpÚØì)yó¢Ð'ä´ã8Cà>°¦'Ô&À_œ.°F^y|~Ü<'ñ:ìDFA‡ðÿÐh_í#niÜ$¶íÊ»'—†>ãÎ'3nÙ?_õ;¹Jóó(4eé?¹ÔÛ:„&*QRÅ„nuµ¥éNöϺØ^Þ®o’mº6¯Ö¾±ï¢£tm‹“78ž*äÏ>ê·¢¨?D4@`l_ò›™±(Nr²„€™ØÓå™{$Ý Õ”˜zÜ»hÿ4ˆM¹¹/˯Òß’`Ü4¯Ü}© «¨`®‡ï#ÈáÁ”b_Ô5ÇŽ ÿí‡ú÷éÄ(¯Â(­ˤ×}öÊh•o3CœðÅöv­%5à ÛßÚ,è¼75%Ù©ª¡‘cš #áE!ârÔ^³çn§õ,qŒéRÁîÆl“b8.8±Œ-Q÷yòÈuCr8g† ü±0´‚íñ#Øf+´‰ýï¡O‹•§²oß͈ëÔo¼Ó-²Ý»b1>(ùò˜ôÅŽdà ÛR}ŒüˆRºßx¾ßÞàÕí“-mÿéþv9µõ»]{¼³?¸$+ëu $/ŒZW)¼‹kªË=wž”°oèùæò|}>ÎÃy Û:¢:'u¬Ù!®T=žÌn~Œ»žPÝ<„cY´UàB×}rí³™œß»Ëkät*†ìòxHЮjD³Ìíï4üXéozlíA“ŽzNˆ'ÜÐñÉ0«1\È!¿E(n±úIJëÙƒ]ît÷Šƒ†¼.Ð×Xn~ÍœwùDm¶Ñ‡žvZ~GóMh’.¿Ö1 uÇäÖîúö3*ö™Ø®P âd™RO‘«ÏA=~ð5¬bª'à{Å­nï^Ì匯avi˼‡Ž KØc’kü–¸L ‹dÚbXh%Ùè–½Ñ \“ZJf?éš›‚f¦ !®ºNXÁ>žÔ™{MJNM–µÐ)UZEÈv\JrÜ]¿•T4@'ÜXôÂÁd¼Q ]âÓ;p%¢îо*ŸDê™ ÌËÙ°ÎgQöØÇ85ZÜá†ÚÛ€]ðþLsbCÑÈÚÃ'¡¨%DM°J(U°8j}É_A­ÆëOÀ¿q!ei^˜ÊôÍÐ1IA 5Úc˜¤Iâ ¸Sz¶Ëv{ÝŠËͤ˜2°b)U8!cÌíÁ˜Kÿç ás©åuÃô¹“$@á$»N¸ÕaSõ]¶ ²CóLŠÎ¾Úñí ÷ö%ûÃ//×åZ8u14œžcÈÿý’cY”Ÿjz™IbÑ{uè AT*…GkÜXÕìF‡ío»"fz(º¦ñ]÷°l•|7iÜ+¸E6øÿÜïWnü0š)ðFŽvånIR¬Åé.Œ‰£)0øÉ91QÊ r‚‚­â“Í”‘–˜æI&ŠÍmAŠéÃ-v೦]Snü¶Äº‡ýØ*Ý×"•PÆ¡Çï©ïc­>˜XzTöؾ,eÅý™qNxÃÆ_߇Ó_®ðc$ˆÐbÈ—ì¹{á?m>“£–°/ À´Ÿh‡Ü¶ý»'muy§”›.‚ÕÄŒÌ67Æi÷²9‰ “O¯×®úg­hò¾èµ¬DÏ<껤%/,óÜ4#&nÆSs®<"¦uW4jÿýFjݯòÙa.Ù<2.¤È×D“Ô5•²M=¨8>¼ÚZ¾Ba²Ùk÷¸ÓtŸò,h“jOïÇà¢þAÓôj®±Å5´ g'ç>%ÉÙý˜]W©iu¹JnèÜÆZ'I¸½ûèå'¾–‹ùâ ¾–ªCTP— ¦Jt“3Ðûø‹©AS&YèwÅ7(#kÆ“ŽE… î3μ¤øC®,+HM©u "˜…¹æ’ÞƒÔ^R÷@ÆßvX,4€RèjLM¨­lÚˆoª!°ÎÂþó„®TQ~4hñ>fëÅË»ñ¹2¼ÄJ*=}&‚ï!«ÎÂÛŸˆA2-%°»5î·Î<” ³³dɱhó·Ütú­p=ú#Þ»¢Ó“¦¼c^–¾4-H…X9»¾hž,`¨>Ççëgã“éèpŠÐ/RglÙDælÑþ |ñÀdò[LÙò²(R)êÀ"±(èæ¡¥Éœé·¼KUÒBy¤-<ÆVJs ª@Ç[”ð²bóUØ‚žà • ¬!¹n•¹/xz¸}½5 Æ¿hS|Ï ßœg”–¼`Wø’]i“·…!¯û¯{jƒ‰Ââ»/N ˆç_Åñ .»%%ã [üG+‘®emìÕ Ï¶^Û’¼ÍÜG:@~…N%:”ý ]TèrÅ£_EJL7°‰oó¸hš ªáÜîªpyt·›£Ý,CP8Hƒs‘XDì©Q`Œ*#7B–àBjŸfÒa«‹ºœ+Ó”•UC×D‡Ç.GñAZ¼èäÅÃeíªlcQщ:M±o˜ØËi®dÙÊø¹¿Û,ýÚ9º.€±3c®-T˜›n È©j‡ŒÍ¶¶oóÚ}uÞ ðA«îÿnÉï¦l$€ !í?ÜG}4·]°Xù RÆ;J#NÙDüAFc-Q¨®lßÎâ“pÙh¡˜(¦ a­—kÍ›Ž–K éýJ§i`ÞõìùÃö†e+ŽŒ?­¬œ÷G¥›õaIô l^ŸJqñèGjoZü7þÝs-klFNYß,¨¿˜€JŸëe‰‹ÔnPþU˜J½ Fºé²åµÎÈùóTPaÞÞëH¸­É•”Ác‰0ñ£¼‚ñü<ØÇ–Hp¼ÅLkM'ÈLÓ˜”ß>øT¥äüÛ9IþiÜwý’öå/}qØþÇÚáÙtXœêÿoXc§_Åï?v>×ùò·•ö‚°V‹yâ·•öþ~½Ìúà6ær8†­ŒÀ1[mÇù Ö^¦ÝÌãã`_‚÷[~¦õƒ:îßÑ×-%Ëy©Œ|ÖÆu5R±¨¢€ŸÉ¤Óˆi)ɘXTP€?Òs¦éXœòÐp¾×AØõ"ÂΣžuš‚õáBöÁN¹uß?‹=Oh¢˜Íâxé½¼#2?R7Pã•A¿ xi¾É.ŽÍbC|¬ÿ{™ÞX õû#Ÿ_v€¹“æÔÉ)T®ï ñ䈞Ÿæ¹1ým6Úu› þ êd|^vÝNÍüKBa 2™ÆebÜéÊU€ÃGS;Å`H3¿¤¬CY'„KŽ&a µ`‘*npÒ4…#<×~pÉÿ1›KŽr£BYMhÎ+E? š®[µ¡–xèÅ"àša2±lç¹Éò×”†sR¾œÉŸ³ýü)|^¥g¯xì?XbÐÇý´¥ €FÐÒîø¡}`]‡–ž„Ë0W>%aþšØBbö«fÔSûq©=ä¦Õm+ƒœ¾©ºŸúùÙB7uûpamÞ’¥ÿÈû½Ÿë³%çâ°¥mˆ/Ë!îÞ÷ŒÊçkW¢ ¢wŒ³«Îãi.È4,J¢yûŽL³„ŽV̓ǥpA§ÖE8kxW°u¥ÕŽMzßýPj$9æßzÓ#ù=;ôÉâ“»pôK±²uîÚ%ǹôìUšãq=ïþaÜŠ¬|ñÉánE˶úˆl‰rs³¥ÙŸòO(anŸh0ÙÊq’P–>6agê£ÇÁ![œ5_XÅ8íÜÊï­sòcî9Oº–ºéÚš__yûµïþ/?ÎOÝ—þ‹=¢/5!mè­Ý³'‘5³]iâE&7bBBöÏó€>Ã’ŽÕOøI‡˜è¯‰'˜âYk8—-Û”zîà¡dG,nƒñª9ÞÞw|Ö᧺éÒ b=bgØhç¿ø»Hx¸€Ür|§›˜»ñæbᮆ¼þîÞ„ïÎüÚž2—ÖXµýêûÿÏØeòt÷ŒÔVg[…zg¹3@üçN ÌŽ5°µœõÈ-–׃5ß&ŒVšóÊzBÏ÷¼ƒr¸ª·Óí“É&àvPCÎAÛiPµz¾®b îmŽg¸{oä—òÑmo}P>b#®0MW”•ÙV0/wlǶýŠ=ÅÏjÂlYš꣩'•§z%Íå¬`Òä°Àkw|˨õ©ˆPbšÖÓ&ñ ¯ÿúÐYe zðòoíþûú5ÁcV®Ó~¤Ÿ´£|»7Uê.Û¯}—kl5É_0¡¼qq"ÀTÅùWЉ›}ÒZÚ²Q¤|“DЭZÿcµA޵>YŽä™ú°´ÊNÂV·Þ|eø’–Á¯a&4¸^JôcÌû¦š£", ¼HŸúXC··å7¯®Ÿàë,b~Q¥k|6hFî9©aH ¡]Ö (ÚŸw¦Lœ è ·‚ï°-A¹MÎØ{whwë¿… Éì!¢Žê“s!Ýgß~öÁòyö>t½Xd|2!Xë¬õp£c…Ñ×Õ{Ó7Ù Ÿá®uû¿¿»?³Sv* ³³µé$ÁÔôÌì ³wbÊ{ãÄ…±‚­óÈñ†l;þb`É[íÕUY°9µ]ZO´úðV s»ïhíL½6ì@¶çx€‡rˆ7—7»_öJ«^ ¥ó`2¬¸±×í]›“XˆÊ%ü岨›[[¦t;§$sÞÏ=)X¹0iRl+»Çþ8±¤=N~¼‘•Ç›˜TûKs!ãJIýk9#'l ò©¹.æZYñ£ØW#N§:ÊS±=µJ0£¹:€r…™Fä/¶îÜÿÐ&€Ýç¥)Òóó0YéÉÉ£¢ž6x£¾¨ÛEñ4Oàv˜‹„‘†ÍÌä H£ló¾è“2’u£eÖŽ1[¯Æƒ‘³!»¢øx¯Ut Èg(BJ¤\³˜°‡íOA‹”ȕӑ“&z™K‡‰”ËžECUÒJm›8бf…€†¿ lrŸKóþV¥Åôå÷ øE“6Ädì¶B ˆ†DËÒv7#·@’‚)‡^,ÄÑái‹‰*t\1Ç–T3Ý&š;ùƨÃpg5ž cðX’+/ xG¿÷1žýïã“z í+Úw®à“6‰¶ªd5¾×:Kµòwbºª‘Òõ#3ÚdΜ´£‘Ú¤Üìê*˼8{O¿üKôž± ÒòíñFݨ~¿þ#ü¡,ý=Ãúä³ËàÝ'ÖµNé`f¬¬.QA؃õÆü½:Ö‰tiùìn»‰uõ»·8èØÅw2r "ϚѠðïEåPUSm«<¸Ò`Võ¸j&T É"òm^u©ÐŠ…*+f} fQ™OÙŠ¡àታre€É¢tœÌ­+¾Eç¸Í¯É{LkYxvsÞàÆùæv¡e¸ ò*ÚÃS(Âã‡pƒsµ I¸‰7O» ñè¶#'¶ÈéðìM¦®ûšŸJ[šàõê–'™M7X²•CÖtެ‚Š×XïœÔù´•8Ô\Æ%Aq¨‡ `ë¬Ý!Ãáñ—†›Ø(œ“)‡ðûç'ˆmäL†–pË©I?"˜&Ä=XÖ‘}øÖÝÚ:ûÃß­2Ô—M•õ•n ŠBz°´óÐ ¾ôžñ¾±+ PW%“ ­Úr))M”ýñ/Ï]˜x Õo†G ŸçO CûÜù•Ö2ýw/éy}Òð%ëŒîÊdÌÐõeZúi¯¶¾¶ÞÖN(xQ;$_àŒPÊ?è‰Ô¤L'šÈ´Éú8Ó¨ÎgÚÖ$iÀ›þRoO=àJ5†£ùz¢½ÑîooÚ#¬ÏQ$Ï6 J8ÚÓÎïä×ÕA¸ÁE s+Ïær øF¬Æ\ŸÚñv6ŽÐó°µ™ôWGeš`¬ŒKFµŠq»GÙ;$g_;2˜«Œa…ýãgF¢”óùªe‘”,¯AʪÍGd׿ÒWͨÀ _/"¦´Üæƒ7ÇÂ*tALÀ*M/ýðlN=O𴹆QàLÏã²{†,¶‰ P=Ï_–Ds•¨»Õ›¬‡çqk¯xRöá,fLÚà(ë­”õb3ž•ØÖur®‰øˆ‹5’ÑY»»z·ïM’ÕºS>6ýé÷Þ,'쬕†káúÓ‰z~L=Íb>¾È›È5WX<ë¯ÿè‡_>W€· |º]†®©ÈåõOöþHÖ¡nzƒd1$h¢±Vµež1«‡™˜ò›–µ6 «öj]l ÐÎØ{ööd®-¼}•°Æ3$H/ÇyEiXæ0z¼›¹9àþhR,ÿ‚/U†”*„pf0£Ê4e~ð¼ÚÁ÷^$»Auó&‚qÀ‹âì7³+r,Aè6DÀŒú™òºy®„y§¾°A–¬G\ÐtªMW#IjsúÛh&ç|¡CÜ¥ w>Wq•&…õÅ!‹¨ cð Ž–;,¥j$ÏL Ì#aFÄù§˜Î|®l fl³õw0Z ¹é Ï]Ø‹S¦¤Öâ!w_ÑfmáþÙÁåÒºÉ íKL«jU û–:¤3ìÏ4á.¬æ]wîÙôû?±åZxc®# ÕBËGŽ (vøöˆƒârŠÌû©×ù&ÚË©Ï÷gi«Jß<ǃè ò Êæ íI´TW`/— “±Hµ”«ó ê}ÉaÛlhn‰kÉÇÎÀ&úAr¨ƒðw»= úÇ~扫â'ÅÄßîÌçÒ}"ÿ xZTÝË-üDäß 8qvxtGA~$j[ΗäUÈ2¯Lar9hñ"ò7ÿ2r 9FU擾ÐF4Â…_{z~Hzëm¶gF?Rƒ„çcM\n4%™˜8—µLÂôMñší*_¸ÄÓÔ/$Yó´n†)`£fóïZÊüR-Tä½{wLÈáÍ?@!Óæ Ÿ“ròp—&UôÊ«¬6’1Þ9CJœ_ðÍ’WÅÜ‹wYšs±lAÖ~÷ó@s&>ñq÷!Ö¦¾Ùi$Oñv=þ"9½°ªb<ùáÄgaƹ¤ ¤s¤ðÏM=àÒºXöW^~ëÆR„OçÎØàì@ŒÁ^dmäS‘±)¯“¢ G"ü‚ÔC¯ÆtÒÑ}iíÚ²®yJ?’<3ëvˆó1Àö®­•¡ìH‘‹Ü¬ê`BekoT#¬-…í™”"P¾œ?RÍu¡ÄV±@ÿÉdŠ0±Îß”3‰È?Á²ž‹©¨ØÿkjoëE†.æ3[ù\ Øæ$g̓ …ã±­‰'Ú%òX–ÕEHÙ&!¢µÀó¯è¹ÏàYŽïÆÉLÜI1¸]wzqb_Qþù{EJW®AÏs ܉®ûM•”Îâ¬Ô«J|xp­öÌmzãÚˆ?NHfÛùaBë€ «¹6‹ DùÖåù‘‡ag[çHw–³Ç™PªÛ´ø•D‡¢º³Qš‰~á7B]ëI¬åù@é‚î.x;LaæŒy“»ÊÏœãÀvóo§ƒÝp³²ôóZ‰çóloe‡ª "½…I¢°†$â&×ãa-TÁ3ÆífFá8GÒ½1‚•ÑVU¹Uád*N´;H”êg{Eëš”8j®€Pü}'ehSÎ0Ì-ᆊX>0?¸Fïë õ:‘ídóðf…"vÒoºüê;uÈü ?Òè¶T1}“ÓéIÒº®ÈŒ‘¶§:G36ÝùÄ P¶GÄHúÒ®„×*oÿâƒHõ ¡ÜwóQj¬ýpã龕Ĩ˜ƒ¯n2ç, )§Äz@ôZ»¤%Bl×5""ØIÿÙàé¯úùËi”Ð`ɧeP•Dÿ.îk;!)XÁ óO¤’õ¬­ùÜãÉÿ#Ð ´åGͼþ&– l\K}í-©eÖî¾ùžKïÑ÷SS „ Éÿøÿeô¼^˜;ÜiYp¸Gþ­Ýq96KPæÀúÂeaŽjîŒb–éô–ʶ 0öX&Ø+¤ÿ DÐÚ 7ª0ã¹Éks-Ü«9!¬sZ«ó–|éÚvÝA˜í= ÏNeNÛ)åý¦ñ›í9IÁ9 gåyÖß͇ìáÕÃFÙåÁQ‰doh”h,T¢)žrQ佌!ä"­›¹²i¨Ÿ¬~ÔZ×í·»?ksŒR9þø•…Ëw56à’ö­ù%J®7)¥¢þfø3´fމv¿]>-¶í¼:}˾,Ž;J~¨t÷£b«ç§<ƒÆü}úm1}Ì~5éÉÏÆûÕë©®~¸ôâWçÃêYŠ!½ù=ø¸úàeg~ä'üáÊ“w¦ñGÿŒ?¾wšÿçg˜þãlðyï³ú rù' múOùS°¯½ê*ÿåSë­Ž™•µÿ¸“¿-öãÓl¦£aM¡„ x-OnÚ477==2ÜÓÝÞÖP?XìOGÂ^ž¡ E­­ˆÍÊ£ð(dzZRR\\ä™¶fe¦3§`Ðiú¤IÄ”$\ZbZ<&&!6!2<$:4:8Ðí){Ýž?žë2çÑþíÁ'nÐÏ ^sÒÆ#‹‰Ú‘‰U1 bEŒ‘\,çsYB¶0¿lsœúópÖ²éÚ®CEŒ½tç² ûì;ÿîÄÿŽöÌ-–ù#<þ^BÒ6¥3ZH9Ë ÿmÓ§Ë+Ž•ŠáA_1¬R§eÄ„¶@Yóñ|vÿµÜ D"JŒ,†éǺھ½§ •Šjfüs4€ã‹´àLp̵y·(\´IÓ¸ê¼ÄÔÚ:·Z·Š%$FÙè@„•—Ä»»âúì4Î-æ4ÍËö{­Á©®Aº i[1óuk3ðAš?ãnP]}‹±rÛú&*Ž7ÿ!â÷–‘vh™ñ50~·_"aFKëÊ£Ö5±Ôõ•">ñºÀTh”Ǵ§ã¹Z60ª$ˆüwXæÒ %á6JœÎz$ño¶ô"%Na~í«¥_AË;ì7÷å^hX~¥Š±¶„ Ñv+4غ×Pgò%†ìÙƒ·yUtuœEÝÕpKY ‡Gpñý÷pNhbV1¯©@‚cÞ`L wVã³,ì_55Š ‰bVËœøôPEíñh§u†©ÐÊ7mÑ=1d(ŠYň™Ö\8¯÷ñ”†è>\ùÛŽÜCÅ&2ƒ™ƒ$,FÕiÞ8¾¹Š¼¹Ss¼‹pQÃiµÕý/e±«¥\^õþ˜ð…‰ºÛ ì‘\·ý;ãØÕ× {Är„] Àÿgjš¤p™¶†!ä2 e&}iúƨ>±àTrZ¬!¸Ö?&|n™²L>ݰuó9ì¯ÐâÔA[(õW¨^g±ëáp"ÖŒ·9?·D·ä‘P Scü…„Ì(äÃÆ?„’I ÌÉ8â 9€=ŽÀ?XËÒWWj&®1²È¤'LŽ©6ìmµ¥k lèkí<éSW*³ÜalÔàg¾H#™½ôøƒwWÄ›wpy{Öe1j…IÃŒü8ïPw®KÕžûN3óæ#87È8jçV<ðocVUJÐu}X7§Z=ì}»¡Yá¼ùŽ/<†¸#ƒì(|z®„4„”êÝõÈËG"[¶O•üºÔC'«ê˜ŸøÕrÆyáÿ’ TíåK\9Uj»ùl§Ý[ƒÀIÚ˜c(:§ýÈ8ÎeÜœµHP™69‘or&øð¥KŸˆÆÑÁ@þ•uï–‚5îjâ&°35n‚sØÞ[èpü¡_GаõÙÎØfBõõrŽ‘™ÈÝ÷ál{þÅ¥å/þð>µXHйv“HÏ7‘ÛíßÏ0º”¤uêUåz$Š\” "¸×½ö{ÄkÜõôrÏô™ÉÎSˆ˜æa0*}ušáD˛圾B+&¾ÿkA h­Þ¹ÉïAЗ²Ð{ôþY#VÏböÂ4ËÙ¦Š^ †.ÇzSI¤¹•àÑj6ÆûçL¬z¡ b?Á“Íùd#qÀX§?´q%.EÊ?k >Â;çÖ‡©ßßšg9•FÖëôfCL:pÌh,0'£!½ y :ä.^¸I“·—Û—û— ÎÆcŠ<¹¦WÍÒ†Ã9n¥¾¹såA¡ Te Ö‚Ùà¦&0oÖ¢LnOÑü©ž‡¤{™Û„q¸øÁq•™¨(¨rEá”Ø¯©òþoé ~¾­}Æ#«¦?êφ¬»¤Ë6”õ¨Z¾óD±YQ3`£|o<"Ýr%gÏ;§|®èŒVàþ 6æœËò8JËà‘82íCú õ"ÀÁ>3mrÃéåü‘*•eàó[Ž¿¥<ÈpVjiʇ& ä¾7µ]Ê. &~]æì0/, "Q°M6âþ&¶™•ÎÍCŽpw7…kü—¡ƒ @"RÐ2¶Áßòï,ù•-ð€¶ÑTC5 ¢½Ñ|Áh@!ñ£g¼ò˜ÑnßRƒ)'44r¶¹ú(¨2 v17]¶ó0²aZ%ùž«fxŸÌ=¢þ‰>È`e ÷†(š?i‹dY“ ¥yàuh’À¥Á~†¾ÅbŸžKB âñ¶¾àgÅ N—܇»üM4a!e„uU¸½?øs³*ÀN6'ÍꜤìŸLµïø{÷'_`Õ·22ôLî¸ ¡ødo±Ãäh6ãÞ½qûnb±KåÔ9îŒÚ^qÌ* 0‡qx–Åu€Hdr¨1†è Í¿sÝŽÙ#F^ÉŒ÷"d˜úü÷fúµÁ4´ ¼8ÖÇ£G$”w¯Ü>…×VX™Z!òÐnü4”ƒ«5Èz-ËçE¾*ÖœàŒ°År½Qnž6ƒÆ¸{öö»ÐˆË%àÕÒ-Çà‹›-ˆ4Ë`p,»ÎRKÀæ¸ËË›äè4­<ÑàD­Ýõtž @h@æ¥ó½Ë­ÀS(¬/sQÞ£ËtOÏîuÂ%ô}Æ” IÂ9™Ë² ±Â(K¶4Mö‰®’•Šð£uúÌ«º‹R°úÂVòáá˜^%ø÷DE÷.V¿'Ö „<ÙIWûé´ -ãoV ™År.=BT`} ÿ¬Ù¢vÕ}òª¯tíºÊù¹Ó“Ydf?«ècÊjiþ Â‹BkgZ#Ѹ1zŒ‡ ûµeid²BÆC¿ÅÁÑTÖS"¹(r,çÁ¤À OÇ ëÔH'^ß}!¿ôšºžPÒ—;’Ô}9w‘‰S\`ÇRàvm÷ù†-N,Ø« ô.ð y4×~Ô‚þçÔÝs3p] úJ¢ãùñévž³k¿üòÅÑnݸ^þéÕéRœÿ£r¹ØüQ+‡ü»!JØäQ,[ óµôåJº¶Y:¹˜æò!=^Õÿ”'ñâr“ðÅy±ÿÝàXüI¥ûcño¸J?üôáþqy~vr¼Çðz•·—çÌÎÃ(™*±É‡ Ãfóäé8ÏÀâõKš"ù‚¹|ºV•×s¿ ½®×u-õÃGí ¿ñI ÙAîÚkᎾ¬\·b€/+×k±8¼Ü˜)ùŸ‡iƒ?ñŸzúÆ} K2†Þ¤êr8ÉHÝ-Ú¢Ö±’&'ÈÉþj¨6ÌÙkCæ^À“q\Â^Õ¥/‘ïDÃV'F,#Ï,*‹ð&,™Ȱðܳ¶îæ ,üÕt.Ó$bº(“ËüYŒ]òÆü…—Éóÿú Ö12 áÞÀb¬[€ü®x Ÿ3µÛsØXí£¤ƒz✠Å< »Š£¡ï†­ÝŸFøžæÔÈ/1qîßCS- Â÷ßGÍ´((cÏØ•œ51£€³ÓeÏjãø¿øìiÑ÷ö©Äí¹¨ëHž} ±)o9§ŒËüõ¶Ca›XÞ ñ&â|p Ú-Ç0x¸Ìy˜îb³°$ý¾_&cãEWþìO2ó^˜ ¿/Álõ¿á_I7Z|¯ wçŠóY~O\Èà¢÷Äf¸UB³Xþ÷N๜VúÑÛÉëQ'r…O›T–×§·ÙîÍG¸‚w„AªoHàò{ ü3 ÓåA± |F~ Ê1Áôh“±l€Wº28Úôlsa8¸ýF¡.bÚv}›= ö][ФÀ¨ƒ=7Ó„'ûà!U•Oàëý?¹1ç1%rÂyæÕÐÛÝ83ýqp(è_…iÅçy“Wg7°Ôy©Çf˜yÌñBIGºbFuŒ^€ÜHLÈõ®·§¹¿W¥„BêDòœî!i”½ì#ßó‚/ë㎀¬ W @!+†":Ãî%LæZbôáìõ¹eí`Ó¯û¦wæš§Ò¶EÚiM*oA·WØìNdøýàÆp4úxɼkZÐÂiÁͽ…ùQ±X_ò³1•Áp°÷ªGÙ>¥™O}— Ж÷>Ä$©q”­X¦ÄfýyO}&Dp~©I1 Ó΀‡#ãÙdù‹ÿÛ{ £ïî(«Hn,ìþ ôŒiêb_õù["%û¼÷8¾výdpba½ œ-Ù¬@'Âe ‘þ7ESž›$›“\â¡8j‰_ãÖ¯£šévýX¯ƒñª1¼xŽÐ€­å a%- OOS,A\C úVŽ_>ƒP „qé|‚ QLÑ6¥z]üûOT0f‹5 S/"ð¥–#ë¸ïb]x´Ó`²^Á·˜œ ,;ô-¤{éà)ŸÑD¿ VîîOg$]ÛûöL(\j~® Óa9ÜÙÓ¬Qà ¶À‚‚ÒRÓï 5tÇÈ`+à–ï§?'á0%ÁèÊt…ŠRÖU”äÉ…u–œåÝw9!êuTô¤é2ø™Íoé>¤ÁÖ5CÊ4t¥±×€¯)Ï]Ϋ\›‘)vWG%éhVê]Ñj®HœÓß‚Z¾G÷÷òqñÎC§w‚Uo!b ¾<¨ŽüìÓÆ]é‹’½†Ó80%;À0k€sÞìêe{-jî:ûãùÞžÇXôXìÕB3´\u³4Ë~ÖÀº¶/-õH‚iAOûd:ÂÄgk{c 9Y˜—î6Ì$h¢MõÝ“e¯Md:˜æ]»0¶Uˆ¦°}±¦›°F:IFnSâÇ’ù†¸¡Âµ Ÿü á„fV‹-vƒ¥¢4sâïà Hr!0J6‘DBZÇ$Ý:ƒO‘¨K½nËnOû&ÆIH£¥Ü$…Ò·E™§C60ú¸ñCäÂ÷· Ú\Ö¸-¦GüM'gUÁDåª'“:é¨j¿xé¾T•&0“yG¹îX¼)˜eB)¦“k„*TÍc;¬bÆ]ª-ã6‘@†Ü}npðÓs ú LO*ƒ¼#K·¨ôÇÒê=¢l*F:Ö¥iÔ[©š5¤ë„3&“ÄLëë"JkUüjåWA,xû…—·×çûÕÀ)¸kƒ£Š»Ú‘M"÷,‰²7 6½@Ì™÷‰^'Kln$xtæÑ]›Ëk?Áø÷gˆ„FÊú'l^@žX9áîRKÆÿKhþÓPƒ¢·3z{†¨+8êD¸¾/ôCŸ”Î>º·{–ÞåmÕgcuÌ·ãNz*H·2ÔÃ:~s©yZa>±ÿnã‘SzåuÌ‚siÌ$|$æ8§å]Ä;ž9‹0õNˆAýçQ«5‘Ú®_pµ¿œúÇð0¬ÐÀÁÈcÞpµiŠ25>&q€ñFðé@A‡¯¢‹m©?$â2Ð@¯stÖÒNŒ—»œñt „56ŸjþÕ`‹µÇçYß}6þ”EÙV-ùÌøŒ/øjê3ܿɇÙôì® ­šî[n9Ò\Ô9¼fÝeo—Z34¨HtÜWÀŠÐ]ÓYЀ$"Ì`¾½&éi  <ÿn£†uɾ®³|ƒgËóm§º“PBÇÊwÞLé ¥0Ì êÊpÝï|ý¯×Eî`ìö„L@e`z°žuû[1Z¬¨4õõ<°‘QõÐ ½2rÿƽ5«c¬#R_1MÕÊâ1÷í¤3ù€ç‹(šìnŒþ qñ2ž^ÅŸZ³\ALßÕ@âKȼµ8²ÄÌQ€pÈWÕ2pH¡sÊ…tqü" «¥<”‹ö¯D<ÀF‰Ê ­¬1³GšŸ‡óFoï€DU3+86B…+qÏ#„,;Ma’Âý÷y!K9ö ô âò–èö¹"Ç8Mš“«P»p1Cö{[}’5–HGF>>2©j?ѳR«o¦ðLÉoMm—È~f–ÁÑF¡Í2©Ì&óÃÌÛ2„û]·¶sédåRÈÄð-|2Êö*0ÊîV!™H¿HAèÐ Ú¨è¯1Ôlc’¦ÉÈ©ÍЈ´§ðÜ8B˜qørp¸/Øw:í{½×€lšì›OêømoèÊiˆ´q6õëî~{.uy:ÞɵŽKø„xZVRÜNÆ„Ñן¹ÎÞaÀ›0/e†ÐmæÏC>G臹› B‹9.iqÊñ¾ÑÑt°Ã#Ýæú/m¾–ÖÔDκML¬o‰ºkäÿF‘ãAiY?¹ÂøŠ‰+ŽTh–J#îæ]j¼üärø¼ª…1¸bâŠ#kM³9á/?»{ŽË’7{(Ìo¿wªK0Ê1Oüo?.Ì}Tí¡áú:T¢#¯–º”({.‘'#y䆉hõ‘ÔyÿpÝÁÆ+¨…÷&9[]€$lHsº<· WÜÙ?½D­LúÌ+rL—ÝÕ)©/ Í<‡¬Ußý·c·4Ѷ0Íp>@Ä1þ!Ó³c ú ù‚ÑD̃­Ÿk0¿.'ˆÝóeJF‚Ö {S0øèÚ›'jÏò?r›[\Ù} XZ€'ãI.‰"6—|~¨Y«ù]V‘»ŒŸ!ÄM_‚|n³VË«gm }µN.›Woüón££fÿM{Ö“gÔ ù­{“ ÏÀ•_FƒQ«Ø¬'íY[𦗠0;…:HH«4ÑϽœÕÓŸ4‘CV€LjOKi8&-Ó× Â·"ÃªŠ½¥\cÙÇè•вµKàhx÷k¿CõÞkMLN|mp´%ÕÒÇÑaÄ‹ÚÖØàÙÝÁBEìûú¦Ýk«>gù›Kn!K‹\-hU‘X fèÝËÍ„€è¥T”Oöá6Ëû‡óýÍÑ X^^{óÿyø‘´É:fÏYUÑÚScmèþfM¶ûeÉ / ¸˜Ñ#àaNÎéí:ÛUzi×[{‰7åæ›Î+3•þþé6*°Ðo—ãÜ¿ /{&á E»ýWo@[¼Ü@€bâW26ôD*³·RSm×Í£áû°fÓ¾kï 0Iv”xÇQÿqŠh€Ip&J:îçOáGö½ íÈÿµƒ? Q^Š™C©Ìu“‡žˆ¿odÎÍð΂f“¤0{ØXøÍÍ»N`žLþÀ0k"ùÖJÉ~jÇö¤,!í4 ^Êèx×fúk׃cYÀ®J5>¤U¬ÏwÊKwìdŸ`T©X’­¸u¼¦dÃB¤Ð@8ãéû+ñ-ó†Ë:&KFÏÈZ› w/å{‰KúœâKöKB|[j S†ZüfO²Ø„þtí׎žÕ¹D n؉uü;Ù;¹wçÏõ`'Ðe¨bÀHÊwãÖ“Q]SÚXžÔSÕ²c³hÚ?î+Íõ/Þ!9¿iïõ¹3=Ãøxt¼93~àí¹×ê×"ÌX•$… ÔXsˆôK1EêÜé¨ýÎKdçü̈Ó7£¾3JzRàÃ3Û—Ø Yûa¹—hESÍUú7Óô‘Mºþ¸v€R€ØË0Éå1xÛ\„}–z*žåøv–¨l:01¥š«=ÇõàÆ!DÆ ç#çÜÉå1ßÃÓvß$¡ÅÒXƒ>kµLŽCk>ÃT8Óµeå=þ§Ójºj£Î ’lò~pŒ¹ÇÿôºêÊú¨“qyº2m<ûëe´‘.q”¢»ŸÍá{,|ñXAñxP|AvÛ[à›úÛøm,Uh¶ÂÔYÿ‰_‰íΟ{ ³- –RÛ{§u¿òG/ÿû;6”¥d¹5cÿÁ76”„(ÞJÿIþã 4}ÑD£é¤‚a¶wwÁÞMOŽV:=,ã¬kVn2ëéÏê°1䱋-8·JxZ–rÏ;Jsy_E,ÉÔ¹„µsëå?Ç›Å@ì8ØÌö­êyW6`C\Æ#Чö‹³¶Ûöèó=>8€“ž}¡£°¶äË*,øÝ Ñ$ãwÖ¸gø4R¾§ÎЧ9ŒÑiüÃ'6äÄðM›ñ€mGÍfýÍx]aP¡‚f¿È¯ñã2öX´à®×¿…ÔX¢Ò%Õrÿ÷íÚYºh~µ%؆$óŠŒÏ¥Œªézb%W ­ÛÏ÷!ÚRB°m%/°¹¾HÙ<ß`’B›mòN­¶5€4l+#aA• †‘•Bd«Œ€Ð¼xÔ­Êb™|z¨noØò¼À’tß}Z¿ùÚç~X©·3–’ÌÆi ¹Ñ/w9Ä2v" Àž]æ¦Ää…—lW•”´ƒ×£¬ J³Oåxÿ/T¸vs¼k6 Vê½ 9‘ð×y7ƶÆÑ~DsŠRÀú²Œ×@eÜé ½:˜…-ü”)w áw˜šÔýA4˜–c~Fueäy2o˜#ãŽBCϨ‹V”½nåœ7¼)…\€f» kô<f†ðýÒÊ9õ:¯Êb€ˆl· H “-h„ZÂTƒ KïNºÍ…¢…ÑN‘û“9­x-0Þ?"¼/ ý&l3"Á0¿ìX¥~¥ª‰U°šQj’‡¡¨uÄ <¹óLpÉÔ¥Ÿà™$2F#%û·X½¸eô‚ŒªQÜ÷=Aü‹‹Ói tªs?±_§Œe«ã¯ †qÐ@ð¬|QÕ†VŠ‚óÜÓƒ}…•`Õ’c‘zgîsšL„Иáê>{NŽum¨ ¹¾ D'¢ÝⶈÐ'NS¿ô“*PF•gNcÂÃâ¤\:š©z[ë]Xüá™{nÛÐÉ£¥jÍŽ¡AþÔ˜Õ¾ö—޳ßê²[æè§IMÍÊÉj“o‚Öù‘­~3ßOk»¨¤ý]Öˆj*N¥†  !ý ¿ÁI¬¿ç¹ÈöˆOŠçOÂ(Ín·fŸWÍîO%Î2Ðgûsö°A±‡Ð]³îó}Kô+Ù|hMùbàÓþËŽ®†ãöåSû/oÃÞa,Ùwüª¥8Á„´MìZ[C%Ê=ÊaPнî,ö]¹Ÿ„¸qZáý}t=I¨SÒYRc쨱8eT`LÑ+>Ø>R€…g(jpà-«€ŸŠ§ï«) #3µO&„ óh® õ”ŠƒY%Eº«B´iØ”½ ¤/ÒÐþ'[Zº­ ~" j¹¢4Úsíû‹i6óvŒ]¾,˜qýÞ6Ol4ÏXL”û=”ËÄÆnsb•wµ…s´²Ù¹rªr}pe™ª~)çítã’{Le™mÝê29ôù9Såˆ#:[¾å,…žDÚj¯ÓW+ãO]%¶Üôr—?źfáÑi´ •ÖÙ±™Í¢¿oD9l»¼'Ä]…‚«rÆbëØ˜Wí–Øì•e« ƒÕ§b¥PkJÛv_ãåî|ìîý]´o‰MxÉ„xÎïJЏÙÏ¢þývëuL§*gìôä&à–JG6%]‡s ÉÂÜBpÙ³™ÓÀÅ,•ŽC¯Ð©À:ïgÍEçïp¤^ŸšUûy?üñÿP¾ÏâLìWÙj”:ªNXí…¯ì[ö#nÕ–,0¾L§ƒ°‹ónK]¦_Ò³ãíÛýË‹¥¾Ù4–;cØû…DªÜFDEûòA=’¬ ½J xÑT @a’ˆðpîˆøM^£’T«_*pbÁñªb‰¸a‰eRæ‹1LÎ>CþðIôÃ,_Ñ29c˜é½L”ÀH>1¸˜r/·„íJÛaED b¹#aç—>Œš±§wàa®ê¿Éy0e);-´:”¹f’A‰NÃLyŽóhúI&û?Ì:›#È뼩¦Ë·tÉ 5Cˆl„³jX=çg°ñç˜Ä$Þ«5تÀDÓZ˜ .†Œs…×%ŽÉž#¾hRÄ×î…í Ó½@Ò?ç%¿üßH¬!¿%¼éÊÍÇçPVBQªpw(›&|(ø´BÜÍÿü…ûLuÊ(åáE9el¹-be¤W8ÞJ~dw|€KÚ’vÞˆ#Ê1o©Åcþ~§E× ÛÂs‹û”ï!6+|3¦²4aX\/Øt‡ Ê…Eò‰YWBI$‰ÆÛDo%ÑÄìp C5%š>6¨$d‘³×q6Ò¸@³ ȧáDgQ.‘I›N)çÍ4~pvêàjsœPÏ2Àc„Õ6 ]Óø¦³€b ƒq<‹êX—êÓá’õ°N±—”ë~ø¬‚É%s[êY¦#×Kú–AÅáºuüå‡vvHáøÏݬ–àQ‡:æÚñ¦9ú‹9CB‡T>‚oŽó°þ‹æo «ÀŸšÃJjBMúA¨É¢ÅNèTÄ3•àŸ:v.©ÖÏ;¬8¿g¼ n¢Ècæ ( `Žns‡‘™¬ sS-ªUÏLÄM½¾ò“Yåè{_@¤,…2 ~†:VfY‡*¼är€CT0©oÎ~\Q¤]§xŸQï#¶ð~Çy>Æd§«qÉf©J¦ø¸Á„1ïå{Ÿ­,þÎÊ{!KxÃqÃÝ<¡}£¿ýž"m‹ ü¬-±“_ÃÌߣ%Ä4¾mØ.q˜ŠÙÖMþ(72~:Z…eZ8\½A×"9˜¶Wqq·ò{:0áñöÞoPæm¬\@ã!eSªºrÝ2äy—¹ž‚}ab•b­Òõvnÿ\25LÃ$bÊOÝS®n ‹ÂÇÁ»ú<3E•kå,IýÛh’ˆ{ÚÑeìRRcS<·báÕ–`õp‚GµqÍm'$WÖ‡Y,°‰Us{Ê'Ÿø'òXÅ›ùT“£H½J¹ú ÙÁˆb6ä± ä°Bò E¥RB"4—xˆ£5YŒRô¢@¡‘ÉŸ¡WN¶{8éE(¬ˆRžù@9œ™Ï¿¢Ö2ÔÍÎ<¦‡Ò¸£3ù‘ þüSÜÕ‹«Á8óÀãí¯%R]öE Ç¬%”7$óô þ`2²³v¯ô¤ä"ä¥ñwU«Î{ÇdQî,ÕØ—'L¼ O~›Öý ££ˆ¥.Œ NŽ“MÎÂ.Œ(fÈë»^¶Wò%lèÍóث͜ÎFæùôŸ’ÕµÀ•¹/ùËçg§'¤ <¨¨RúæBx4¼•]&é c†™HpZÉç@å£JÁ»cG’°t+$У CÙ#¦­1 i$:¯ÃŸ¦ëˆ\IOwN£_ÈK¼:ç)¯OážI‰#ä¿MÜ8`2—ßä;|›ïßû3`‹F £mzît^“G|•ÆÆ[Ôà~xßEÏÜLs×@ÚÁHÑ ø¸ñ-Í{î0êk¤BlyŠ0¿†Ûuäeâ!§|UU“òØ#”…œBB~Êx6r¢oïQ¾ôaÍ «¹ì‘¾§RòßаÓ(_“PâwÓVýŸs^Óù;¤£Ì޼’lcì½”—ŠÖ½`x5ÐD$Á‰~+Ê:z3?nµˆ6o5è¶€è†/Ý,o¢Í¸2äUùó¶›2ç^Âõ… MD—Žá‚ô9/äÜ=%Ž*1wµñ@[Uwzˆƒ›¦oL†[ÚLÃŒŸç¾“µG™²š¾íØÇ7‚Ýû÷£5ScéÄZB„ =š/GZÔÑO•n΀¿3´Ü÷¾·©„ÅÇ›Ëíåò‡»×?Ÿ²÷¼•O§9o1¯Éºí’¾Å´¸*w¯fç<³ñšÒ»,YéÈÂÊqûÞÁEƒÃé\Äò€nAìýo&´G™“õ>I#Ld.21IEþÅ‘Hê°¹:ö'?¹]‰ ÎÜØ³GM2±=Ç|õù+ýZè¥/á(µÆ(ÜîÂÐeCà<–üЉA<Œ ÞÙNºãÕ]ZAºø1ÝÕBÒ’Ý:º[µá{äÊ&þè7R?ù–®JvßÐX×’€É)<>˜,{P7I *íR^“„‹îWnWŸ€£SïPòd;ƒ¸ù‹¿µ)ʽ#öÜîHm »Õ“5£"$MTéi.ó'ç Å$~y”;in)‰\ì¤h¦‡ñˋۚÊÃó•ŸÒù[Œî·¿ÈÅïœÄ„¥úOù¤k0a¸ðx_ÔæZgýÆ>–_x‹äÓûËÏWŸ+KŒ’‘ïyÉ?•‘©J^ÆOl¬luå¼ng¸ª3ȯ÷ØÕBYÕ½N4‘\ØÞžÌôøèuIMó¸I¾"T£YógÁ¶’w]Sû¸á¯LëP•»x½€åo1ÜIûšÞž"ï¶¼ºÛ ä5kä?ì­—­€µŽ?Ñ:kÝG6J‰ ½O_öz0{é€DÆ,¬:ðÊ,®xº¨Ÿec[‰Ó¸———žÊË÷×ïl&€áŸâWOGeï%¿s˜kd#*À¾ŒS&Ü ·‰Yz¤_u=hK At‰/ƒ²`©àó壜–~=÷¡»8>úÈï;Ùˆ³Xï€17¾yÿ±"€ŸÎ^þ…;¿X¶p0òP@€ÛÿK H®*où_kLÆß5|Y]›` Œ+ûôò\ ¯'y*£‹¥`2úÄÉ)Rè#Iˆ%S$dsˆ„×t¬]2béKz,)±DÄR Kr/3ÇH SæžÖ~“<¦È«|¦`™Ü F1Àć&ÿµÐŸCÕ>)Qy$‚«LØxE¸ '‚ÓÒ.YQ°>§¾`ˆÉí#px4›*3¤®-ÝÙmqYHwB‚„–5˜ê»H˜õ tÚ†¨µµ ' [üH÷Ü™”Ê2žº· ¶!³†ÖmD'ÙÍɃÉeÜÏJ¼`„|K9°Ôr.–®£ c•q܃âÓ%WºêU\Š+:¤fKùA|58Ù¸B©V3ï_ÙÞ7¦9E¨ô½héÍŽlP¡(Q25„ È€¾1 2Ê¥~,E*² ‚²~B¼ô¢²8)54º$(Z„ÿ\è´|&_h0™Ja}%ÀPe¨ØŠ¹\ÆvÌÆ0Tñ邾x"çai›'åS·ÿ'XBÿ!Uu›‚B{³Šp—ÒâØA›‡ùV4Gt¡ÁRu²"‹)ÁUð@zŃ/ÚsiSŒ|gÐê9¶þêí¦|Àx¡@–€ŠÑ8¥`ÁäL®Ca@6ˆƒºÜúÑ ïù.W¨¶Ã8¾‰/“©³^â8 ‹”Ûü’@g¤KØ·ë:ji^`Á5ˆYÖ,ÓcÈIéùëx.ã² ,–pjÇi,†¾}‘à¸l)\L>Ž>F.Ϙ)ËouáT_?Hc÷À~¸ö)ñðz«*Hà´k1ø €­”Þ¶àù~¸sø@ןjQ¬¸Xü9êk0¼’mó#ðè]ëŒãXÐÉØ7Õ‡UË^é’Z®-¨¶8[Gl‰ cxï¡{G¸³2¼RPÈzF;®µ‡½ÁRý‡3ä×xŸ%WÈ…[D†ì¼ }ýº¨ìAب†®a£²¾•KÝ…3•OEJœÑðÞŵ]zë$ºÉT2þµ¼‚ØŸô¸„§9’¾¥R øéî@êžjÛ˵|U+Rè •_p=FøC¾óÔ¡DBý|eïG€D¯XÄ‘ º„8aÌ©.èm<„h ÆazʱÙã><Óm¾!÷^3ð¸úÐÈå 0áY7ÚLåÓà}NÉà&»'ÙµæÐšÝe^&×Éz\„â‡ù¨Ñy‚#g[Þ4–Ö”(söŒ ˜é|,IÛäb=Ät®À˜h%³5¶hܦy´¦Š‡äÖÿ0QY ŠÂ=h‡ì°ßï¤{åN…»8ܨï’@£P<ª½‡ÖH74m—I=š4>lßðh‚X!8$øFÉ<‘(N Î׆§¥wŽ<,êû%0%§™΀ª²—§öì±GßD¤¸£òfïx —ßqEÊŸ?šª`¢Ü(ÊÔ½ø5›$žCÐu;ŠD,Ű5t^0SÄ"Uë2 G’ú'b ÍG¡:ü¨ü Ú£«-â#WI!Õ9á= ¸ú0;hÇݺ×v©(™¯‡tqÃ9ÒW›N‰$ô‚FT#ü«`æåo—3j0”ø øK$Fß ²¬­poX´ÉãÛû¿Ê϶,}ФœêÎ쥟’,¶&Jޤà¬ÅVÄ-€»W(Ao‘žpGØF›'ÆÚø âãV¦`%rVÁ©Ïbe9ªŒVU&–Øz&F,Få~ÅQ¸l¬ô–ÓÞVÓïéÙ@ÜŠw¿zý™nEAPY_뢾þ”S‚û±²¶½/œ?ûøiJÝ;e3¦ÆÂyŽIµ#”°^³.Gp{$…‹çÓTl6ÒQì:'Þ7,y•ècRLð ð<¯”¼>bvµÃ /8¥’ àù"›tl]’k‹þH®ëê–%çꂚÌR”ïº^uØþ¥tOjíàLÛ(Ë›TZ«õs!´"¿Cé ÔyŽ:y›×l¹´› ôy~}2×yÈTDF×ë«óWGì[xK)c?î€Käm™O›´0ó¶ìFõ#¹gSùÖA˜¤çsGlãl–PÊPyãS>32>5é¢gg#ë^*ã.íâËÉØ«Û-ا«%¨TøŠ °ùy]YÌ&TC¹@ðA*·¨dzÍÞÃ2…“çæ+ç6,ÇsTG‚ï Uõ½Ú¨x± ºFüñ±ÅÆ‹|fu7zœªg÷R+èK¨¤ÃnƒSè˜íä2¦ÆOè(wÄ,e#‹·;®Þ„ï ­7õÀcXëÔÊÎWª"Ë9˜ã¥UeÌ*¤Q¬ï'‘àºYña¹±üH¶ESÎÛ@/fy‡z$¯.žÂ.­`9‡8ƒ»²Â8Í»“¿8.V zÐÚã{[Oàvœ ñ“+‚ÆK:¡ßáO,˜ÕWèõ\ï½x—Xz œ›ÁŠ ÅqF·íZU`½ƒ$ºËÊkù¨Õ”Å·j×L¨e(Lf€¡"ú`— ‘}–*À—ÐÕ3ñ½ìHÚÛ5{ʈF…oE0Þ¼mj´YïP ~;#k­íTzE3¥–ÇTu #¥Ð9Ëx¬Åî(‡_r^ ßµßúÉÑúã\tÞâð6› =þÔZ¬sò 'Q?zjÖ²d)>Çv‹ë㵫½¯ŒävøÌ1µµ‚E¦ϲ1>f¸ƒ]"KBwurê ªÃê³x}œ±ä¬—5B$ ¸q´&Qš «¹–.²ÍoÌsýlh'i-ã«ø/Ójt:ËSâÞSÏž„²é±®™aø­ÅøNy7fC¼IþÄ¥cÒЊ;Ôû?ÚöÃ2o†Èóæ%uT! ¸X¸† ’s H•ë‡04Ré ’ËØ¹a“µõœ¬'æJz‡E¶¼g¬›ä~1j5j´å×w¾Ùø™v½扰;>Ï#Åš%Ü’x5ûé ðR.¤«‚§,ý¹+ò­. D@1€AÓ9"j1×ÈðÓåÊzC”^ýŠnìc#.åév?&y… <z1ºÛA÷œœ>hæB˜î5&ámåÉ©šRL:‡©ÀxN¥U|œˆóúå>‚13Ñû-$´dB£‹ÉxÊ·U æ¤J®Ùþ,EÒ=åˆdÒ«0=‘÷š[¾\Ç.—q…góçph®\a.5 „kƒc &×€L,C–Ìís: ÕW  …M"ä’]9Ü•làL› €9Gê'úÙ‹\™è2vøá,§`-µ¬ö‰óÇ.ŒSK2ôª5ڔء5ˆ·È#•Lo_$"p/µˆ¥jéÆÄCèöiů¡ïö»ñK/«¼K¦Š¨Ä~P|÷ÿÁo_ñ}Y q¸W|å@_ê|‡w¢'qØg‰_•È¥PŸu¢–Ù"2Sâ¬ý&‰vß% £P|U–ðÄT®7Ûâûa!¸‚—¡^ª¯ñîöcBcú²rb2[±Ïe4)86Ö™0'`~.BvdÛBqŒƒã'RL Þ—H­P‰¸ûå<Áéê®F …€'+yJ©TÛ¸WRõµÙz»3–ì&¡keOrý¯kþÚšJ$t#èêù)¸¢dÖ-+è1Ľ1~fèKÌ+F…ýlMpYKÊ‘BM *eŠoWeò7Õð€Ž8òì+Í3Mˆ—‹^Püwz³è-ˆ‡"’º†Ÿ’±’\¬7ôšAω¶6ÁçDGßÊk¿”Îs¾&ÑÅMÖT‚öãð=A ðŠŒnHźùî²ÞÒ™¹ \WÅÖI*?#êL¥¦&¬?„yAÀ&¹’J]‡áâP7æ3‰!U“Ru9›Ó‡‚oäÜêûœN½—0z“¾„¿šâcŒÍî:D îƒuKÀ»c­åÅ9,λøÇ?]¼kø–ð=¥N ž8œ^Àç)] øÚñ^À;Çh]•w¼ ãŒßÇhY·Çx~Gåm—Ú5ág­zaR7.—gr¡ç‚`.A3Åh*(Ã=¾ õá›(6´ }ʇâYøèmð~“ lªÛpEø!uÀoLn5m‰òò½:¿Ÿ|>Ò0ÀáákûÔgÕË…B/ãçS²q…(wú–•ºËM¾AïýµÐå&ø:³Z°ï{üŸøùnóá'|)á¯fí&ûÓÅ5:þÕô7Dš¿Ú.":?æ;qbó¾6]Ç™É †¨Âe­r)ªO•_rbb&]I_Šå’W?y¸f3Ç;»“˜(|ÐÜë¬üÕ÷ÚË¾Ž­:´† «ÑªD^{1 ²³¬§žý1W6?"_#³‰Ì'u·m£–Ì? >Ø–¥Ÿª¼Š±³Rä­Š[3ɬ~÷>0Gx–7ÙA3­X^1у<2ð3ÄÍ[y<5xq¨ ¸§âº‚[ ®W±!!çV6ÕEI“2­“·Ú&E8+¢Ãxë/‹X/¿¿8ø¼žCý÷t`]M[x‘œ¢Ÿå¥JŠmÓ¼ ×dœ«åËJ¬–è¾zøöEu@É©ÿ‹»qÄiŒó'™-4n‹šš™ê4SgNd!Epq›Efz‡¬æj’ê ¶ÆX2Ežñ 7&vÌ:OI·z‹µ*_–ÑŒ åIõ$úëkz aHWm]|Ñ@&²¹ôîÆÇ;ÝIŽ^TÈ”PJû¸À\ÆÄ© ¤Ïº5&Tˆ2ëFN›ºCFƒÎ`Øi|ñf§½’ƒœ¥(Û캵ÇyW8±û’ˆêt»Ág­_ÀƒQ&™z +^…B‚øLEª¦æ±6m{ÚŽZ¹C´¡z¡CT¢zÊmä ‘°gýñŒÕŠãy㙲6© p¢*ð£ßÈíqÑo U¡MV¢4 ì „tp€QZ#?zɱFTDÉaÄÅU~rS€6–Œ¤åŽó]&l·•ÝÜÄåò0ÞºcÖ›ÅLE5®©Âþ¯¢Xî ë¢Om8mžÚ´±í YÓÏœ£C”Fr©8˜€Tcv(´oáa=WK˜·éŠ ]¤×·~Q2W«è.ÖÛ°1ʨ½øf¶%åÓ¼9pa^ÒßÎöçc%ÁùNù°5ÆÏg¤&òAlp*¾d³@,)ª©%e±½ÔÍü Ê L¶[Ք別æç³l$©XÂ&hnI…„ÿ÷ðgÜÈä{œûÄ(ltT[“·SYËLE7V W¼¥E{öAÖä`#õXrk*'2Åè >òKìÈ}¢NåûFö¯Ýs"•-³;CíÀç°¹ââ_üÍ=V1”ëý¬oy>°ÖªºüCD[¥~·B㉷°ú ëáFm䨯”NðPÒÂ-öÛ—ðŠ[ð¦‹àþx™ã¶óK|z°@oíÄrSñ¨šçßÙ‘]E#2¼ÎïŽy­¢¬˜W ˜à]øÛ’æù@­K÷¸ôTrº¶´ÞƼ«r¢ÑÚ$—í¸åy=‘$øØgpoF ¡„gXœ=§pŸKî³ÅTzò¡rÞ¼ ;"_MF†Š¬Ö*ŽËÿù Eþ+ߦîÇsç áRiW Ÿµ|1è%2ÊÌñ86¤Ïêæ¾-¼Y§¥ÈÚí{ùüqqù©Ÿ¿ ÝEÄ?éXiSÓ P‘0Ę‹™Jè*å¯ÉòØø•ÆùÊÚ0Š+¾@ß’‰MÛ èÆKÜs³‚ów$ßyk‘~¸á’†5Nx(ù=Xüe·d(öÖ!B¢ã´!D¡ &yíD~óñ^5=–\• Ï®Vê÷,ëT¹ðçÉïV¬cg]§ý!ŽÛ‘`ºý¢R~?ª$tè/v òy©Eõ7p–\?=•Ì'å¥8©9iŒµšÔùó¤¨äC÷þ«ôAèÖG2C–1ŽÈÖÞdžµÁ„Åo;°ò³Ï3·”Çk¯/x”¯ÑYö±•AnDï(î5MšR™í‰P">_yýÞ=ÏCš[R®g±àk^]‡‰9"‹2£7]º ùd–€NR¥{¹÷”H²86Ui=êͱXKtÛ´Çq݇óŽ µ ¶vÙ+8ÞîCg²DÓÝ‚š¬Òó:ñ N…¸L°ú¤ÁÂ.× 4T‰ô4uJ8§Æx­¼O"g¥iG³b*÷nBºn‡d€/¸ªvÚS…­TêL}‹1ïµõ‹o#(¸8^¯‚çîÚ«MɶOíê8:K]'å%v7A`Ý€³LoSŒã_¨®¢éÊ'Þš:ãL$Àÿ¸dR€Gá»-AË϶%»mr8i+À$ÒVHf¶"ŒÛŠéà%[ ‰NÛJq¤bËÒ=¦­Œ‚N†Êq•e«iQoV’óÐ"@ë'¶ßR[ Ó³Yû b^_[-–ìs cSñüéóçÅÉbqˉ‹»À=ª¨ïBRŸå‹«š ûøþÉCá¬%²´Õ=o|âãvìRÄèèTwöÈÄó#¥Ž>Šè=5ôãÁ®‹ÄE¢´áùã§Ï^~XÕõêÃ'ÎDð+%* Dÿ3®)iîëSd±öTò±´‹ÈdHêòlÚÿö1ó‘o½ÒO¬öÞ\’f’0J™Ò8vøçÂÈÑÅŠÙàÖN´Ý.ïXs?ûYõJ£Œ¨Ò«Vÿî6âT¦ñÆëÓ¨‹vóT1ŒZ’iêáDl”Ÿ—Uj—6åñ±\Må±Çf¹¬“.Ì:j’'ý•Q™)ÐŒ’ˆÞ*Ï´Ö7΄ ¯KjÒÛBÚÂ܈—¨C“L Iþùp¬¶²¨ÇÞtÂ7·žé°òlä3?ž7õän´ /HË´;ɲr¼Å©Þb_³ÞÏT?*¯IïIÿq“ý-ÌøáQßlûD×`.i©Ò˜ÇþpR868‘A.¡J8ãr²RúökŒŽ°ÎýÑ i…~¤…ªÃ]‡âB {ÆV‰clL.-É4 ZÃ’c¬‘þ»âMo#sÖ1>‰ L3òh:òM5´„Qäû2+ßÓ )ÂC;ÚÓŽS‚—R|Æ+ÿÚ_O-ut¦ õ¼CWºÑÀ»t'(«L5Í_>rÓtóÍñ¥ VfS,‘`ÞÈc¦]|e£gžzn¥-öØåkô`¡žìÓ‹Ýö:d¿º¥7ÇvÄ7úðÐ"'wÂ{ÜqÏ,ð>Ò¾ôg¹ b ƒÂ0†2œÜ6’ÑŒb ã˯V˜Àx&šä®û~‘QQkѺ5Ü-ŒbgH³/¬‹²ª›V»Óíõ)K†£ñd:›/–«õf»Ûóãý5Åž8û¡¹?ß I36áH4O$S " Sþ'’®|½âqrºyØA]™ð½¬¿!ëÊËöþðøôüòú†ª Ñ-•)EŠ †Â‘h,žH¦Ò™l._(–Ê•j­Þh¶Ú®º vIc:%ÓÙ|±,o Íééö‡ãé|qyu}ƒ|{wÿðøô\hN/á²ô KEüÆêª××GcÜæ-œm¶oŒßµ›´Äê#Gc¬Ï¤oÌ+â¡ßùýè±ã5'N^wˆ)äͲMºRïsW¡Jª¢jnJ,Ÿa^V‚€òæÃ—y„ÂÁPCp¯$%º›v§Øîv´3nv»ÞÎö½N÷ãº:ç–„žtÒ}uº¿õ¤©Ò¤Wå1™²dË‘ ÅÊ‚À( ÎŽ@r Ð,'Ž›ÏËÇ/ (D—”’Ö/#‹8òof5fÜ„IS¦ÍØn‡Ys  Âà$ Áâð"‰L¡Òè &‹Íáòø¡H,‘Êä ¥J­Ñêô£Élaiemckgïàèä €Œ N*Î`²Ø./ŠÄ©L®PªÔ­No0šÌ«ÍîpZ6€ʸJSˆ2j€€ˆ„Œ‚Іމ…€Œ NͰØ./ŠÄ©L®PªÔ­No0šÌ«ÍîpºÜ‰MyÎÿmâû©&ž@$‘)TÁd±9\_ ‰%R™\¡T©5ZÞ`4™-V›ÝÁÑÉÙÅÕÍ!PD¡1Xž@$‘)TÁd±9\_ ‰%R™\¡T©5ZÞ`4™-,­¬mlíìœ‚à ’B¥ÑL›ÃåñB‘X"•ÉJ•Z£Õé F“ÙbµÙNËaBRi'•t“Åæ$yü"L(ãB*m,Ûq=?£8I³¼(«ºi»~§yY·ý8¯û CáH4O$SéL6—/KåJµVo4[íN·× GãÉt6_,WëÍv·?OçËõvx|z~y}{CáH4O$SéL6—/KåJ¡™gk«Ýéöúƒáh<™Îæ‹åj½Ùîö}KžÛ—W×7·w÷OÏAÅIšåEY©Öêf«Ýyƒ^Q8O¥§òËU¯ÙfeùiçpgŸà.ù(P4‹iÉS!A1YÚ 'wîMgë(®_ÞÆžxêB0‚b8AR4Ãbs¸<¾@(K¤2¹B©Rk´:½Áh2[¬6»Ãér{XÙ@f³8;ÉBc°œ\8n$IQF4I÷ЈˆI“¡ué`àPÐ0°pðˆHÈ(¨hè˜XØ8¸xø„DÄ$¤dä”TÔ4´tô ŒLÌ,¬¬l  Âàì$ Árrá¸yð¼|ü‚BaQ1q‰®4Ÿ™AC†5fÜ„IS²OÌYs ²QÙhÙB‘X"Í";UªÔ.²Wîô£Œ¬\߆–8}Ž:ÀQ:"Ê“*Î`²Ø.ñÊ'EbI(Ùgm­Ñêôv£}3lÄw£ÆŒÓ˜0iÙ"Lè»'cÎþhUQ5Ý0-[p\ÏçG¢Ð,O ’È_$`¹Iž}ÏWÂ@ahdÌÅ1NÙ4C 08‰Bc°8< n’†Å1ýÃÊ©Òã „8,‰t*W(Ïk´Ê,ÕP)ef¤ÿæî&n>öÜ5‹Ãˆ$2…Jò,}Ù#¸<ãûÕRÐ,%Ò*å×wóšcO%tBÓõÃ8ѵxç X‹éÕò°Ÿ-…+Ò³‰Y$É2À ›“dEÕtôlÇõü›e¥8I³¼(+p–jÛõ5ËC=R´íYö ª,IŠfXŽ/Ђ¦,+)ª¦¦eghÙãÅe¹Á¸KKIÓvnö-r¸EçžÿaBRQ5Ý0-Ûq=?£8I³¼(«:KÛ~§y±qÁ'Šââ#%qùЪyûŸ:ÁŠGv¦“™æ¬¹|þ€EÇž_‘‡~S!ÉÐi{|ëLÔŽ;I7íeyÑ GeäF¯EB¤@@B`APÃçò”AsÏ T7'%é·|¾X®Ö›ín8žÎ—W×7·w÷OÏAh"Š“4&ËS-ÊJµVo4·ÅÝ^0'ÓÙ|±\­7ÛÝþpŒd{– ó¢Í­ÙÑ”ÑÕ[M8‘£@«”ã¬cA (èqqĺôß<¢±8Ù—‰Wl t=†8Mi~£Ìå"‰^Ô§¡1­nê’8­ +XWÈáådšžM¾ˆ ¤èÉÖÑÝUºm¶…õî ÛIw+ÝWâY¸ Ý]6Ó#ù.'ØyvJ.w6\–†ß½ÌTŽ¡#²#òeÊâ!4ß>útøå>$çOl¥éщþ>Ç99ª$Iå@5ñ{Rîœtÿ‰sé.¾®"$-àA ?¢\áÏÓ¤‘DGf…Š4—á(ý«þ{ åZ„ e\HOi›+D˜PÆ…ô”6+ B!„B!„ÆcŒ1ÆcŒ1!„B!„BÈT„2.¤§´Í5AC[ jÍ8M3Ö—mtb*ˆ/ëNALÆû¦hæ/ ¼‡ø3½³ÝÑUÕÝ£ùíã{n?çØ'qßbo†ý¸#¶„Õ'Ãndíë 0ugÓ’áRFp´9©‡HçïÍýª`‡ŸÄ}oÖŸ}iþÁª::Lý¹ÝGv²Q¹„ƒ=èA|g3‚;„(O"L(ãBz°JÝÕjkÃhgÈeexTΓ¸¼,y;,TÛäøËÚŽ›×oXŸh‘Mê‚’c«¬*3 vD˜PÆ…ô”66Wˆ0¡Œ‹Çù±¾þÁäÿïõ§Ž-7Ü®$Œ;¼øºN?ŽðhfA$¤§´±»U ¡Œ é)ml® „2.¤§´±¹@„ e\HOicsm€ʸžÒÆæ:&”q!=¥Íu"L(ãBzJ›ëD˜PÆ…ô”6v¹@„ e\HOicsE€hÏ[ïùaÂQÆ ¢$+jZ „£ŒDIVÔ´6@„ G/ˆ’¬¨i€Ž2^%YQÓº&e¼ J²¢¦õŽ2þ[á ͯ÷ü !܈0¡Œ é)m²ënö &bBÒSÚØ\aBÒSÚd[ˆ0¡Œ é)ml® aBÒSÚØ\ „2.¤§´Íu"L^ë×V½r‹YíG0é)ml®‡ʸXrCaBÒSÚØ\ „2®Í•"L(ãBzJ›+D˜P&¤§´±¹ÿ—¤£oŸskkË›…Šîzo³úLÀŒPÆ…ô”66Wˆ0¡Œ ©l®aB‡å·‰w—ÛÛÍpWSÓ ÚØ\ „2.¤§´±¹@„ e\HOicsM€ʸžÒÆæú"L(ãBzJ›kD˜PÆ…ô”±¹6@„ }ßèÛûèe¼™õà]3¬nkµÖÆcŒ1§çæA„ e\HOics=€ˆPÆ…ô”6–,÷úá,1áNbE„ý˜âcj©­ÌwáL =gŽ'zé-”"F¹èn >ÇÍ4»ämlNÞ0q2#Wc1uÛ+k 8^n»nŽÅ¶¨£×ƒÃ'œÕÁÕ®¾é8§gLukt³.åm†øP<13²sýÈ\}Ô ‰Æó\„´¿4­óÂ8‰ç HÅ š!s™Ýâëí[(Ú‘ƒE¡œÉ#¤™§2µŽë/åËm~¿Õ"äg 1ü(óäwÅÅCe\È?y·‘icsS¡”ù[P5Óçý6 “í¤†šÅ÷ ¬ïôª}—Ðû¼ó-Š)yyRqŒ¾Áp–ËÄê—y5R}4>ÚAzmt1¦‰o©FìšLCB˜P¥ÍÕ"L(ãBþúýàDäÆzºº­YáœÏ‚ʸžÒÆæš&”q!=¥Íãý~›üåUd>`aòÌ}·ª¯‡~÷YÅ¿'/ˆ’< ©i-ø¿ííP^Ÿ¬Nƒá(ãQ’u7d„ƒPÆ…ô”66Wˆ0¡Œ é)ml®aBÒSÚØ\ „2.¤§t¦aBÒSÚØ\ „2.¤§´±¹@„ e\HOicsu€ʸžÒÆæÆ…ô”66׈0¡Œ éÔ–ÚØ'÷­©`Á'7—Û‡‰†\é)ml®,YZ{J›«K6"ù݃ïLÝk®On#>Ý]n>Iƒ@™ÆæZ&4yêà¢W&[åHƒ¹¨Ý›6€ʸžÒ™:"L([üÔâÙhBzJ›+A°ÒS½m•¢Cø¥»_ýúo;4¸åÓˆ¿wžø‡ BÀ P Ö똅(ãBÚ\ „²áËÞOÞWÝŸ»oº?ù2쟅{×äûÅÌÅþàæU»k4„˜ðt¶L„ Og+€žÎV&~ò¾u—͸+çÍ¥ÃÃ4 „§³õT&ÛDX¦ ¡>@„ Oéß̲: 6Ùw|­€A„‰j)ûÞ–€\_ýíŸ×Ï?Çïä÷ˆâíüv¿Ä˪wR´OJÓjMÞ²º¼†fq›™€Ù¥êõéZŽ~yO´Ï}Aª. Òß…KËõ¥ýº|ÇôD^ÀÅ•Š]½¤»Wßê©p’3Kr^4Š4º¾âÒôñmÏù.ž4eâ›÷¹×q›¦äjFN§\*“+Ä”KerÄ”KerUÄ”Ker5¤\ª§óÅ4Eæ†80¡Œ Oçˆ)Ï61܇˜òdKãý÷yé#,3œÐq €÷¬wÂJ/Ÿîzoö§Mˆ–]Õ@CEô.Gý©vU7iGá[’Ž–ê¥;¦aÛ ëGoÃ&ÁØè—Ô›ìñ韌«<ºŽQÑk2Èc-ÇÛkEFÈ>`Í[„Ñk}7¾ðšlùl•0é›!ïºÊ#ýH_ä(”¯)vÐÃ%íw\ 忬ļP)….ÄZõW£FUDÁu…ašT ÆRÉà-âÅdA…Е×°Ôm‰õÃQ•ÐULï ¢¦RûSvB—8î~Æ èä¶…@},H µS­3PÎÛHXDÇ-ýõçï!DÖ¡.:¨‘ö*/½¹\ÒGß¿%gÁe“ù0*†lÙC™ê*<ü).!‰ÆGƒ°QáBà<Ñzíp>ë4â<*8P–+aîËÁyo¼>à°¹À—ž;k0ú¡6l²Ü»}º)¬Æ¿ïx!H“P×™ŠÛc6®ä}c߈¡K„¡£|0–’»Çª¤dZG¤ÔZ”CòäÑe%鬔ÛÒOÚeÀ½*`ò­ÿªŒ i,~qÉä$žIi0õ›Ú&“´7žGE:@î—Û3ŸGÅœ_g®™5f^×,~æ¯ïǶI›fd2[¬Õ4ѬM~þ$€)êáùм=íme§ø^9¯9å=ˆ~;;M¥A¾cì–I‰ÂwŒ˜îûìr2Ðå¡íù„bLÈ«Êù0Øs"«ŽûäxBAø}¿z˜ÜÈ»N&è³y±«ý)jþèþk~´Çå Œð ñ½vPFÛ`ÉÝ~ö'·=Îx IQÏù“¿nŸ¡Í…“×›!ÍÔ À$etžü”/ÙSÖªäZŠ>]ºˆw¢<üè(’älíÖ´EG-`^ŸË0ª³Hßq7½Xsè`Ș1{óh£}mÇŸšò@>5·>9ÚA3c¼l†bÊG’2¹&bú¾“[ßl^©'ÃúÃÂ# Œ÷ÿü#µæÚ›³½àY ›çÀDdìjßó¥|.ÈOZl/ O9¤ í&yëÅ“ zAß§KRØ9Πá5L° †‰’éË)Ñâ-ð¢7 ¿Ïàæ`ó^BùÍ@Ý/ÅaÛQ‹›-(iúXÈ4iÃòÄNyˆÐ nÞkkYm¥sÁe}4£]RÎÛ$ˆ0¡Œ é)ml®aBÒSÚØ\@„ e\ȃ·%He\HO­»ó:ìâ×c˜}¤‡óÒõTÃZ,3ë‰)ÿÇÇn¬žª4åA>Ö¨øïefK‡Ú<Ò¿>䘂O:¦âÂQ2€žsŽŸä®® È5ÊU‚ ùéùŽÍÄ=²€¾çÈ=çox€ƒxÀ ù~û<ä˜D ˆ0¡Œ Âc–õòwÿ_ÐQ€(äBy¢"¹¸üãÿ/›44Q€(äBy¢B>N¯ÅìzUÒtÃô âB×AlGÅŠ£t]¶¸3=ÈÀÈ5ØHMø$‹" X›6M¾§³Ð < bï$íZ¯e¿Ëw<íΦ¹ ›g*3ç?NK¬Ë7¸–Ê­–ÔÐÊ9ˆ:8ØIæá0`ég ŒÅÖÅõRéóžr²Ö 1#êýMünšÆj;€¾{Ä׈×åv²àT* Òãdpùgö­íå=kFJ$_F 9¹{œž.s, ]ÌÏvHÅ™~…¤H³ØÕïý.·Þ)cL`tSXxÒ]L×zíÕåÖnR§¶ˆ¼ÇbFtˆª3ÊC£öÇìuô’ls4Z#ùŽE/®Ç’BOœÇÂjç}H£:çQK­oa{ˆ„TI6Lmñ|öæ^Þ1^Ä{Ø€–:lÚ}+«ë¡`óàTšXÈT-¸K·,zÆ17tlóþ¸ÄEö2·ž7©ËÏþ>:l@nf^-ýWí]ï÷!N€KX­É†‹¤.VÉk ãy:eóÈ ‘m¨È’¦&Ðe6Sïu¹a¹OnñtÞ¬þû_`¡È‹µ¥[Ai‹±¢ÇÛY·6FøÎ°¢° J#?å´ÌÙ8ÿãîŸS*‘ùûŸpÅo˜¨Éu‹ £PŠô+én'­D'‰o¶[b—$ädðÄßžp¸Ýlw›Ëívz‡{íaôÛß¹Þ’Éÿö¿°•­_(eˆwšL&“É2 …B‘.—Ëå镭Ǽ1¥L‘^)•!¦fi2™LöfB†B¡P(Òår¹<½¬õ› ”!&ËìPÊéeR%bj–¡P(oÁÒår¹<½¢õ˜7A)CL–©T*•Ê4™LÖ6^!U¦fér¹\þs6ãºæMVÊSÈT*•JešL&“É22Ez¹T)»]¸yÞ @aBÒSÚØ\ „.vxrõãÛíf{ùz3¤6°×ý C°oü›&\>;ww>(w͸z"¤Ù£÷͡ğ!ÔØý±"@„ e\HOics%€_Ó‡æÝâ­ü 4É!¤§´±¹2@„ e\HOics€Œ é)ml® aB—žÒÆæjh‹Ó!Ö«i';m[%#C¥jPø¸9"ÓQÞ¼ˆ0á(ãQ’•¥nfDIVÔ´@„ÉÃýuv Ùðg×ûÍ‰î ødÔÜäçûƒëJÊix„ë¬~cóM¦ˆÁKR3n¿Òú·¾ÝJÚ³¿è¶„±Žvç`Fþ œ1åBÎúÐ# $æ ["ÅdÕÑ}BÕ5ÉŽÚÌ!Ɔ‰ ]PºÇr°Ùi;Ü—˜73´&K08[GÄðÜ5>Ö-yKðR9b;²ž,Ñ€2(¹žÒûÁéÁ9ÕkwƬ3™À‡ÝA E–RJ¥2(Ѓ—t»¯LFšÃù4´ÛÉ!’•EW VT-~ýÚ @”UÓ ÓgÙLçæw¿Oxo S*Ñz1´m…g:5¦–€!ŒDøT½yßöÄ!% Xw¤gJ†t7åÆôëÍ€²çù~…ßXü´—Ñz0´UmÔÖ¨rX~$d°@N­z9ŒíÑãÀvßï3¯o>»° ,˜Á-UÂñãî¶Ÿ”¤skd­öT=Z7¸iÙÄC_ ¦o¿x¼!c»AˆN7T?fgÞ–™ÛÌÌ4LT˜Ýì«!B&!"™©¯¥Œ£¾ÝÃH6ßÌA^K`è»ê‚£Š«öôl(ùˆÞëïì ”üÜÄâ€@p©AŒé˜p(«¾{°P\ >yb'H7œ÷tŽ?äœ'^¢Ìn¼†™`»Q¹ÇÂãåó‘Óc­Ééä2¾~xž^ب±šv7hí<–¾õáDÐKR^®a3×÷_ÑÏm}ýñuQª $‡žSžRVß6¾H½P‡59=ò/Up]Æm•ÎÓ‘u¥K¢‚r½ô”66׊/$7BzJ›+†ô”δ}B)¤§´±¹v”’›!=¥Í•CzJ›ëD‰O¨„ô”Îô|ÂéÍÕT&ןP é)ml®¥ä>/ˆ’¬¨§Úâ›Ê«_ÿnñ¥LÉ£h†í®ód<ŠfØî.Ïó"‰L¡>mgÖ§~¬'|6[ =$#O7}Ž;×¥?ñ»ƒ>‡4 ¬÷|!Ïc-a™N€—k!„²x‚-£H „²¸*D˜Dë.D˜P¯K´­Eš&”Åu „²xÝâáX Â$ZdWâª&”Åë/ÕUŽÕ"L(۱θy éˆ0áh,·2B ?ŒIÕÙ€¼Lþh¸~w>ÌSài^|JÒ˜0Ñ$ž±ÈƒÝ GEÝê²dÉ’%K–ɯ/5Zkÿú›¼Xø`ðbA⃠™¶P&§—Õ™N*“;½Øqi¬a*ÔìeºöÈ~õ2kª"ì½ ÛšýoH‚›t döè@ØR¥äl3Õ\²B™ÛÀ¯OXB‚à(¥!CKø>÷ŸžTSƒK½Í 6ûw3E&~Îx¤KJ`—.ᇤJOA@dõ¯…Jwʈ©ßKR˜u¦Þüáì7R¸„yÑašlUT/©6ÁTFj‰yÏsDÇM"<€×8 #(–C8¥CÉ€Œ XN ÁH:Nñ€Œ X>.é´ÂP2 #(–ÓÃB0‚bù¸å3 €œÁH:å¬äF„`ÅòñWÍ*Bp6 #(–w3§0”Ì‚š½7›’}¦xsõëßY‘@üˆHÈ(¨hàXþf$"2 *8¶ÿ Äÿ *˜Üƒã}}ëã‡vp³…wÏñÏ{þ÷@_õ·ˆª 0N~x4@嘀BNý>#½ïÿ¾`û^Á€,‰%R¼€U*ŠE ŠÄ© ®*¡H,–¸„"±D*ƒ— ´ZÅ"H%Eb‰TWƒP$–Heðrƒ×¨@(ÃJ@(K å¬¸RŠÄ© ^þPµ*ŠÄ°2ŠÄ© ^Þ˜:‹ õ@(K䤰YæÞÞpF$Bº” Hˆ0¢Ät'U¦™.e"L„(1ÝI—9&¤K™ &BQÝà_‡íá°ßSÄ; _ÃÂ"êŸ8úôUÑküè·äó¢u3_íÿu¯ŽýØ9ïEAH´»5åÉí~{é.+œJØ3òæ™qaáq³­!Õ½ËÞèµ¥øtÎã—!}ݹ0düÈâÅ}w7ltì=öö2ÉÖµ(úZÀxâo‹Ü¨ÃŸ,ÿ‹yogKÑÌÎ2ë©8ŠÝÀ*uºsÖÁÝ.ù_ˉùEøê—£<µ5 –WE€T³2KËmû?Þ ‹üoׯÿIŸÍþ‹ðeµèðredmine-6.0.5/app/assets/fonts/OFL.txt000066400000000000000000000104541500112024600175340ustar00rootroot00000000000000Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. redmine-6.0.5/app/assets/images/000077500000000000000000000000001500112024600164635ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/3_bullets.png000066400000000000000000000023421500112024600210660ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7Šé pHYs  šœ"iTXtXML:com.adobe.xmp 2 5 72 1 72 16 1 16 2017:07:28 11:07:71 Pixelmator 3.6 ‰ûŘVIDAT8c`à ˜A~011‰SWW_ÁÆÆöùíÛ·Ic)æáᩱµµÕP⃱b`033¼sçŽæ›7oÚ¾|ùv±bëFÉ ºƒ:Vʉ1ŸIEND®B`‚redmine-6.0.5/app/assets/images/add.png000066400000000000000000000012501500112024600177170ustar00rootroot00000000000000‰PNG  IHDRóÿaoIDAT8Ë¥“ëK“a‡ý[¶/ƒ¤†Y(¨)%X(oÙlŠŠNÛ–skŠÎön.ºÍ-µ¡Ûh¤;8ÃfâÔÒEêëP¢"jï¿ÞMGˈø}yພ羹ï$Iÿ“ß.tÓuÌ„lu‰¨æ AXþ¢:Ü𼂒ZËHÑh1óDnZJ´OJBÏÖ{±Z„ÿóÖ?­`2`‡ÒS¾‰â=¹N$ü„Å‘é=;¾íaöƒ &jw °ï›°ôqÚJGò#ÜÁ<"N ’2h8èÞµ`ïë6†·õx¸Ön_+ ~úüZto¶À}`é¢Ðx%XЛ͈ hXÑ¿¬Æ»/›ô‹}èÝÒBóJ‰_G½&ƒ|QÅr-œû6ÜÉAÞƒ ELÐ⬡\ýU3:WUh[‘C6+Š 6.fÊ *ÆÀôK͸ÜFÅŠqþ¡÷½ ýou4Ü„?ñdó|XüÃÈÒ¥ÆMvÞáD` Ú *_ý‰Ò[ «éì#A½­œ2ú´0liÐôRñ|xÖq`4w=\ôûÔèòÞÃuòQ â±Åm+GÀÙ|%$ÞÒ5ˆœÔ¹‹áØ5ãRO*Ø÷YGMš‹UO ƒ¤G€qj4Ö°(XëŒ& s1±cÂË­(LVžfÄ Rù£¢dèj¤ÑQ '-1úÚAÎTA>U ãj4,´pÀV±"4L$eÎ@.ArBù™èY a~m€y÷Y])Q8tN¸L×ô™ÌÜžt2»ó"•¡I §µŸ Ÿo=CS±Èdå)æ_·ñ_óAFË(ÓÁIEND®B`‚redmine-6.0.5/app/assets/images/anonymous.png000066400000000000000000000020601500112024600212170ustar00rootroot00000000000000‰PNG  IHDR€€ôà‘ùtEXtSoftwareAdobe ImageReadyqÉe<3PLTEîîî···ÃÃÃÚÚÚÓÓÓ¿¿¿âââ»»»êêêËËËæææÇÇÇÖÖÖÞÞÞÏÏÏòòò³³³Bɶú“IDATxÚì™Û¶œ †ÃEݼÿÓ¶Ý=ˆ €°ÛUr7kóMH~ /6˜`ü»«Žÿ4¹éÁvsþf|³Ã÷¨)@5&¡7€H¸ÿDغXÖ~‚yŠÉ^‹'šƒ <Ù¼€øW‡ZK¹<¿2ëÛÿ—¢‡‡40xàîß<´W«ºU€ªü“„gø›Û5¼ºž²`½ú&Ø-ôk×å'¸½% ¼p]¿´¥J9Ü8N oOÚWdLjµûŽfŽðdÔ`¸ÔþÙYð?MqòûýärÑ: d–ÀŸ ?ÄL;ÀJØü¢9àýÞ óþyL(iu+Q¼í¹T­÷/·‘«mÐþÑå²À? {4,tÿ+Kgh@ú"î̸¯ÒE÷ŠD5þ‚ R¯pŠÿžg‰ïþ+fý¯ÞhµÚ¯ u| +u€ fêÛR¬Ir½4$ò{‘¿,©–[#€õ¦>L#@ó‰hióïšö´Cß®kåq)âŸG^+S:íG6¿­ª.B €ÍwÕÖérЧ¡É^ßhm€% « ©A±äßÍk@@—òŒÌ¾€j€Ô¹§µé\ÍÐ…4¤QœMBb³–Ø)}žúseȈíjjOùI„»‹w‘š$Pý ,ž‹Î±ÈþKF6ëÓ‘áœûúõ/§BTÉ •Ð'Tçìa£ŒÍÎmrQ¢àsOë²-³õ"¦­E£Ícþ¢“ëŒr~׆ÑÕàÐ)˜ŽžS]à+8&%Lj‰ïöpÁYJØ0¨Ëüþúã½àHŽCa—\Õ(÷ë·¹Wô’ÃþǪµŽ§N˜›P€Ïi9I`ðJ‰Í*zõM¹¥hdš ä3Øå6MÜ„Nà Çÿ|ÑaXS>S‡ª=sR_Ó^K——iE ߇9w?úŽsê/ €ðMä,ë ð¼*@Y{¼Ùx@øÎ&ÒÀzÜÕŠ‡t­&SýðŒÀ=@í¿‚8€ðCLDÜ?È  Fˆ€à"lÃV?ÌV@Œ(À1à@ø8ލq ðm|9ü÷3&À˜`L€ 0&À_ðM€›ÌunT9ÔIEND®B`‚redmine-6.0.5/app/assets/images/arrow_down.png000066400000000000000000000004011500112024600213450ustar00rootroot00000000000000‰PNG  IHDR °ÚS pHYsaa¨?§i cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF‡IDATxÚ¬’1 ! ‹üAÙÇøô¼ÁØo± •> M® .‹·ilf† ¢™™ü=^š EŠ”ëbffþ}7çÝcŽ9æqôÖ[o_`pÞýsÎ9#ÆSLOÁ5à¼û¸^ö*¨ªªÞîáÓ«í6¸ z:«T©rž;ßúGŸpÊ:»kè¦IEND®B`‚redmine-6.0.5/app/assets/images/arrow_left.png000066400000000000000000000004211500112024600213320ustar00rootroot00000000000000‰PNG  IHDR °ÚS pHYsaa¨?§i cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF—IDATxÚ”Ð1 Ä @Q–9€VJšÔzˆ¹¹^AÑ:E‚ÞÁf¶ ‹É4‚‚ˆˆHˆÙé½÷Þ¥˜bŠç9¾ÄdB!¢V[m•o·mÜ[ŸÚh£ˆˆˆË2…Þ7¨ä’K>æÀ ²Î:ëö zï½÷_ácˆ‡ äÂø÷³ß‚ë,y•TRÉë÷¾î?›÷£IEND®B`‚redmine-6.0.5/app/assets/images/arrow_right.png000066400000000000000000000004371500112024600215240ustar00rootroot00000000000000‰PNG  IHDR °ÚS pHYsaa¨?§i cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¥IDATxÚ”Ï1 …0 à( N•.Îö½ys…;;(uÒtÉAð!Õ màã033ÈŒ!†–Å{ï½g¾îïf —ìÇ~ì‡1[Þò–ˆˆˆ˜¡’?È9çœkÝë^÷OÁönñlk•DDD<Á4¥)Móü’¥”R €4íhG; UHi €4¬žö|®êT§Öõ÷2¦H¾Ke ¯ cw­IEND®B`‚redmine-6.0.5/app/assets/images/arrow_up.png000066400000000000000000000004051500112024600210260ustar00rootroot00000000000000‰PNG  IHDR °ÚS pHYsaa¨?§i cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF‹IDATxÚ¼‘1!Ea²áZéi¸ƒÞW1ÖÓL´Ð;°ÍlŒ›l²¿#ÿ󀀪ªªð³Ž] žõ¬çuír¯•!""¢Ú[o½Œ9昪ÌÌ̈۞"""«Í_‚ž€C  å”SF´zÄRJ)å°:a5ððÎ;ïî{0™oyëÇ¿½ÿ[½ö}¦ÓˆDIEND®B`‚redmine-6.0.5/app/assets/images/attachment.png000066400000000000000000000016531500112024600213260ustar00rootroot00000000000000‰PNG  IHDR(-SPLTERRRccc{{{µµµÆÆÆÎÎÎÖÖÖÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0Bm tRNSÿÿÿÿÿÿÿÿSOxQIDATÓÏA À0DÑqLïâ¶Ñ¤i¡Pwÿ!‚ˆ×àH>’sˆÞ7€Öní² Õhš­µŒêì×Rv‚Ô­:o«ó†Îùñ\̓ž¦… ‰¦IEND®B`‚redmine-6.0.5/app/assets/images/bullet_add.png000066400000000000000000000003511500112024600212670ustar00rootroot00000000000000‰PNG  IHDRóÿa°IDAT8Ëcøÿÿ?%˜aÔìäO‰¬É›ñ)­Ïÿd‹Ã'Ï ½¢ Èèlh\øË•©ÿ/<Ûõ¿wÖÿð~ÝÿæÙ’=DÛîò}ãå ÿ7^›ôzö¤þïß“2à;QøTþßveÎd°éÒTÿ‰2À2Gú{÷®¤ÿí»ÀšÛw&æ Â–àÿ½»RÀ6ƒhŸè0€ÒÄŸ@ΆÒ£I7?ã;#K2¦IEND®B`‚redmine-6.0.5/app/assets/images/bullet_black.png000066400000000000000000000002531500112024600216140ustar00rootroot00000000000000‰PNG  IHDRµú7êrIDAT(ÏcüÏ€0.JR iÿBÿ2ü^ýkÖ»gØ4xÖ+0üa¸Ë°¼ñkòWs´î2|cPahºöG‹©«ùZ·¾0hüǦ@¸Á¯^ hÅM†•ÿ±YÁ#õ;íW(±šaÖÿgƒ4$±[6×éÇ|IEND®B`‚redmine-6.0.5/app/assets/images/bullet_blue.png000066400000000000000000000003611500112024600214670ustar00rootroot00000000000000‰PNG  IHDRóÿa¸IDAT8Ëí’» ÂPEb@ÔÂJD\À^É â èÀ&3Ø)6v®` óò¢Éû¹€E$xË[¸‡ÛpÎQ'Mjæ­OecÃX`µ)A¿bT¹åèR ,© æ}xiãM«CV›`JÖ³ìÃö¬´=(…_Ý~ò( ©2Ö!µ…"ýBb!ãÓ=gÒ…qÇ‘fI\Y"*‹Ö»+(éS—y> ÿ_¹>à ”+R’|o/IEND®B`‚redmine-6.0.5/app/assets/images/bullet_delete.png000066400000000000000000000003771500112024600220110ustar00rootroot00000000000000‰PNG  IHDRóÿaÆIDAT8Ëcøÿÿ?%˜aÔ쉫8àË÷pË¿®Ì€¸‚hŽ„Ë•_,¶øù}kïÿ×vüÿº¢èÿélÝ?»œYr‰2`§ óÝo@Íÿ'ùþÿ_.øÿ›âÿ×]ÿâ÷ˆ2äìg×ýGïë%þƒÄ‰s+óã/s“ÿÿjúQÆðÿ?Ì`þB”‡Ã¥N¦¨þ~V®øÿU%ëÿ»)Œÿ÷ú²üÙáÊ\E|,„ËVm¼…Ǹ4&eÎá÷D°¨IEND®B`‚redmine-6.0.5/app/assets/images/bullet_diamond.png000066400000000000000000000004061500112024600221530ustar00rootroot00000000000000‰PNG  IHDRóÿaÍIDAT8Ëcøÿÿ?%˜ap0I—„É2`©“æÿ b“dÀ%ý»¼,ÿ?x»1ˆ #Ê€¹Ê &Gþ¿t¶øÿwRƒØ 1^¦+0جdøÿØAçÿŸþÖÿ_J2Àĉä@jp0[šáÏC¹ÿß»kþ¿ËŽøÿ.Ö‚lH¤§ Dø¶üÅã‚¿ 5xÃ`—ﱄÁ_Q±p…‡=@b$¥ƒÇ\œ°tbѼ@ ¹3FÇò?IEND®B`‚redmine-6.0.5/app/assets/images/bullet_end.png000066400000000000000000000005111500112024600213030ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ëcøÿÿ?%˜ap0I—“l–ª1i>øÿLTâ?É,PbпËËòÿƒ·Ûÿ‡"ü¤0W™Áä¨Ãÿ—ÎÿÿNêûÿÆÕþÿQ†‡„þægøw“‡áN¦+0جdøÿØAçÿŸþÖÿ_J2þÿ›Üóÿg_ëÿ?:þÿ™Øóÿ!˜̖føóÐFîÿ÷îšÿï²#þ¿‹õÿÿ!)ôÿ§ô˜ÿŸ³’þÿŸ:éÿÜ,aàºà/º @^iþ?eÊÿ—¢’ÿñ†Á.`üEƒGB¼Ÿ ý})*û÷¹œÒ‚±p…‡ @'%+<à⥠“¿á¼@ \ñË4r¨-IEND®B`‚redmine-6.0.5/app/assets/images/bullet_go.png000066400000000000000000000005451500112024600211510ustar00rootroot00000000000000‰PNG  IHDRóÿa,IDAT8Ëcøÿÿ?%˜a˜½Øükê|Ãÿñsu9É2 y¾áׯÍQÿÃghü÷Ÿ*ÏIЀü¥¶ÿs›ÿM_hü7q®þßšõ¡ÿWžø¿dµÿ×~ñ¿¶Ý‚4ãÒ<š”!²môÓµæ"DIEND®B`‚redmine-6.0.5/app/assets/images/bullet_purple.png000066400000000000000000000003641500112024600220520ustar00rootroot00000000000000‰PNG  IHDRóÿa»IDAT8Ëí’; Â@EOÄtÁÊʈ¸Œ¸lÁm$ Ø¹la: ;K;;7 ˆb 1Éä?nÀb xËÇåÀ;\C)E›th™t¿—`ZS¹%™ÈIƒ…^´ÀÔñÏž@•™v¥·žÅ¾Ö …k; ×mÍqSÒë›HÞ®¶ƒ‰|Õ¤QM™+ò¤!%Ò—XˆÓ>Ń5R<¢7ÎB[¢$VóIâf¼¹sOÂà[×øO¹=à4ïRLU ìÉIEND®B`‚redmine-6.0.5/app/assets/images/bullet_toggle_minus.png000066400000000000000000000001711500112024600232330ustar00rootroot00000000000000‰PNG  IHDRµú7êgAMA± üa0IDAT(Ïc` 02000¬ú]2Œ‘‰ tPÀc¡I¬#Ù„uç &šSÕÊãX”IEND®B`‚redmine-6.0.5/app/assets/images/bullet_toggle_plus.png000066400000000000000000000002101500112024600230550ustar00rootroot00000000000000‰PNG  IHDRµú7êgAMA± üa?IDAT(Ïc` 02000¬ú]2Œ‘‰ h ‚‚ð+ h&`AŽÊZG² ëàº×ÑÊ‘ (N#ÁÊÆEpÚ±ÉIEND®B`‚redmine-6.0.5/app/assets/images/calendar.png000066400000000000000000000011561500112024600207450ustar00rootroot00000000000000‰PNG  IHDRóÿa5IDAT8Ë¥“ÍK”Q‡Ÿ÷ÃQs4暨ÈB‹$[U;iä6hÕ&h[Ñ"jÕ¢MBFšQØ&„2ó ‰"‚ÐÒ!üœ!œ2læÞ{N‹WY´ /Î=›ß}ÎïÜã©*;9!Àƒ‘µ[ª\v*ûD'`EpNp¢X'UápVq"Sw.éDõjwÇîäÿ¼ÜÓ7{|›À‰$âýW@œq`Lt/—À”¡dÀ~߯W[%°åƒÂÞˆBí¦H L l>/`¬«xàœl x°˜•ˆD$"q[Èd(o  ªÜ¹¤ëFެ¨ªjßÛeUU}ü.ªŸŒEõàx”óÅ ½toJU5"0NUÂúÇV ŸñUžM®2ºr›7ƒ‚ŠP3ÝÃÑì.Ê&"ð·ZP <ºO¥ }¸Ð™¦Æ‡ói|/ µå0¾pîd&­•ŠÆ *úðb:Ïdá.CŠª¾¿Žï{ÌÍçü€§+d>Jµ€T•šºÚSŒ Á¡ù–›§«=Eàݤ³µqÊÌB‘=µÄkÃJ V"µÀ÷xõ¡À\.‡‡ÇðÇF@D™],ÒÔ#ÙX·=¹ÀZyàÃÙcIÂàgÚ’¼þTàt[’ñ<_~’ˆÇH%êQŸ qQ mûXú±AK¦ž¹åu²Í1¾|/’M@¢!Fº©>" ’Žö>š9Qv7Öa¬ÃYÁ8Á:ûÏ]Xûõç9€·Óuþ #BZ=ëpIEND®B`‚redmine-6.0.5/app/assets/images/cancel.png000066400000000000000000000004771500112024600204260ustar00rootroot00000000000000‰PNG  IHDR(-SrPLTEÿÿÿÿ÷÷÷ïïïççççÞÎïïçïçÞνœÎ½”÷÷ïÞÎ­ÖÆ¥ÖƜֽ”ÖÆŒÖƔ޽{çÞÆÞÆ¥Ö½{ÖµkÞµkÞ½cÞε֭cÞ­ZÖ­RÖ­ZÖ¥RÞ¥BÖµsΔ9Ö”!έk÷ïïÖµ{νŒÚP3™tRNS@æØf{IDATÓ]Ž[ƒ D!ˆTë+Z©Z[uÿ[,zÅû‘“™< 9$D®7=-W júþø|©ã8ô™:ãÕcÞ}§Á`ƒˆ-–®%ÕEVVu¡ý–8³9æà¡lPú4ÈvAJ¾—ðЗQ <>$0í0·%–?GPkȃ™IEND®B`‚redmine-6.0.5/app/assets/images/changeset.png000066400000000000000000000007131500112024600211330ustar00rootroot00000000000000‰PNG  IHDRµú7ê’IDAT(ÏUQMKa^üÞý þ½t²‹T—2ˆ ‹.E‰‘ÙQС:”EeQ¤PR¨«¶®éº–QRôqÈâ%!O^wŸ¦m!c3ïÌ3Ï3ï îÏTo^’%ÉÛš³\ÅY¶«¶|ýïëg¶˜ýØÙ¨„Ëz‘)Ž,{Å b,êÙ¾¾¶7þg|á Ùfʨâ'†ØTÁǂ߲ñL…GUM W˜0F–DN¸C \`ÛÈBA†úçSâJ“kéÆ4$0£ŒóSü’rI ‹¹ZHãdý“ˆ (c³üOÏ:/B&6…Ò9I#M…:¢X6«ü1Ä‘¦|ÎíhKµ­Æ5AJØTÖø’ÈÜ9úžZ‡f) 9+‡<±OQ § ÖŽãžÊ**4Kž˜rHÒkØèÿýæ®?WDj †Lê>c¸!ýi¸ýÖ‚á½9BL%†^Öéð0—Þn9ÖˆsÐ>i Ö“ˆ¡«Þië¶»œÿ®ùk>¯Gj—ÜÿÎý ˆ]ò™î†IEND®B`‚redmine-6.0.5/app/assets/images/chevron-down.svg000066400000000000000000000005211500112024600216130ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/chevron-right-idnt.svg000066400000000000000000000003141500112024600227150ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/close.png000066400000000000000000000001711500112024600202750ustar00rootroot00000000000000‰PNG  IHDR Ù˰@IDATÓcøÿÿÿ¼¨€Bá@PEpMÈrp)EpuÈ\„"¬.C·S7«ˆ°uD9œ¨ ˜ÄD sP8f"IEND®B`‚redmine-6.0.5/app/assets/images/close_hl.png000066400000000000000000000001711500112024600207600ustar00rootroot00000000000000‰PNG  IHDR Ù˰@IDATÓcøÿÿx÷<¨€¿ b€+G3YE\Ë€¦ [‡©‹›ˆUDØ:¢NTLb¢ÒÔ#´Qþ«IEND®B`‚redmine-6.0.5/app/assets/images/comment.png000066400000000000000000000005501500112024600206330ustar00rootroot00000000000000‰PNG  IHDRóÿa/IDAT8Ëcøÿÿ?%˜jD´ïâ¥@üˆÿãÁ»€X›W¼õÿ÷Ÿ¿ÿñ-'ïƒ ¹ Älp€ þó÷ß¿ÿ¾ýûÿòÓ¿ÿÏ>þûÿäý¿ÿßýûïÍ¿ÿ·_ýýçÄðêÇA†˜! —3õXòPã³ÿþ?j~ðößÿ»PÍ×_üýõÄ€ÎUgAxc5à)Pó£wPͯÿý¿õ¢ù PóÅ'¸ €{äüû@[ï¼þûÿ&Póµçÿ_j¾ðdÀ°µ‹N€ °Äˆ CÈ5ÿŒˆœ¸¢ñ,Êæî¸ 7èýç`>Pü2ÖhĆ ï<÷¦ñ;׊{gn»Òøˆ IJÊ@ J@|ˆSè—Ì÷‹"¾âj IEND®B`‚redmine-6.0.5/app/assets/images/comments.png000066400000000000000000000007651500112024600210260ustar00rootroot00000000000000‰PNG  IHDRóÿa¼IDAT8O’¿/aÇ»J$&›H ’fÿ†Ä‚¿€ØY43 &‚„мb`é‚ÔT9½;m﮽Ÿêñ}^w :|ÒÞ½ïçû¾Ï·M Îf’`lÿÂD”ˆ“ÀÂÂáEQ˜¶/ŒˆúUPªÚbó8/°o*.G;,W°¹\óÅ‹å Íò„fz¢d¸ò}Aµ8`%.ð©,«¡ô\uÅSÅŲ#Ÿÿ H›Ž/tœÌ›ÈG¹§Ó‰Åãòpê ü‰}¨„Á HrÀ†Ñ Ræ“'—Nªè…0õÐ ¡B/w“ÆRY‘Í«ÂmH†æö–1?a4B/„^½n)ßc,¸–sàK?XçÆ÷Î d¡eÃXIDAT(‘e=H[a…Ÿ÷»W£¤vˆÐ! ‚‹ÎQнnêA];ˆ» "™]³Ø¥ “è ‚ØIIkªÆ¨ØJ~¼×‡DCë9ëóò>LjÓñœkòªòO’•Pµ–õ)M'…ÞP%ýÕ­®ª¨LšÄ+ ¬¢þèF¡B¢‡a5Àðß¹¤ ºÕ}zkweµ¥ýïã×L p8BBÞ2>ã“ZtÏc ÃÕQš™œ!æ{ <îø @ý…€}¶9á‚ Þ¡ƒ+Z‰´¾8d9'E‰3V‰2†£À&=“F‚ì|[‹N»e¾òŽr¸àÃ,Ý#0lAóú¡@IíêDú¬¤êcÅ ²|Á˜£ÊQà1Ç(¹Š €ËãY¿?ÑÅ#¿Ø#Bï1Ž´~Z ÖÔyooñÌ6Fä­˜Wªæï~>2Ÿ´â?6›IEND®B`‚redmine-6.0.5/app/assets/images/database_go.png000066400000000000000000000012721500112024600214240ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<LIDAT8Ë¥SÏkA}Ù$$$U!$$˜ÚÐÄ‚i±èIA z° ‚rÑ“ý„ ^¤§žFww·Û²¬ÚÓWOÊ›O­µ0¦ÞüJžøyíòãÙ§ÿ\ãv@^¿ë*ñuêñŒ13³rëÂÙê~çÌÓ?Ô™ÍIEND®B`‚redmine-6.0.5/app/assets/images/delete.png000066400000000000000000000016171500112024600204400ustar00rootroot00000000000000‰PNG  IHDR(-SPLTEÿ÷÷÷ŒŒœçççÿÿÿ…ä¸tRNS@æØf=IDATÓI 0Mìÿß\¡Æ.‡bæäAͺá5(š‡Â§  T!j'±¯@pЃžl±Ryz_N¯û“òIEND®B`‚redmine-6.0.5/app/assets/images/document.png000066400000000000000000000005661500112024600210160ustar00rootroot00000000000000‰PNG  IHDRóÿa=IDAT8Ë•“ߊ‚P‡kŸcƒ}‡o–ݧõF$¼ÐˆA”è¢wPÃÿZüÖ9tÂÍ]Ý|xáÌwfFg`B´çµeÞ" ðÖòÂsX^G0?N¸\.¸^¯=è]óõ(é J.ŠeY2Ò4EÇ‚€I|ß§ÀÏ®„Îô†@Au]ßÉóI’ C&¨ªŠ]ÐÆ~äWÁù|Ær¹„¦iP’$AÅ^K·™L{>zRß¼•(ŠX%žç ˆÍfƒÕj]×Y%ªªb±X@–eÇqA^ õO3ɲl\à8,ËÂv»Åz½†iš0 ƒÍ†DOUÀ« áTͨàp8`¿ßc·ÛÁu]ض͠ªþ%à·MÓô %óÏüCpû£Þ©Ç¿æÐ…âhwwaF’‘mäÐÖÎî‚NOó )}IMjoùIEND®B`‚redmine-6.0.5/app/assets/images/download.png000066400000000000000000000006041500112024600210000ustar00rootroot00000000000000‰PNG  IHDRóÿa pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ¬R»j„P=®ÒÚ ¶BÒ¥L•*à'Øûþ‡å‚_àDH™~!\Á"Z䬹¹“jCÈ®Yw7¦º3çž9sfÆ5𖚦afˆ¦©s¬o³D@DÃQAk}¾‚ýÏÖZÑåÌ )åùZkXkÁÌPJ-8¿¯P–å‹”ò1Žã[ß÷ÁÌèºÓ4a†×ívûô§‰ó<§RÊÏqa­…µÆô}ÿ!¥|>©`¢(vAÜÚ¶}¯ªênÕ ?‘çù›Öú¦ªª‡Õ\œÄº®Œ1'‡Œ1ȲÌ98c’$RJÁó<¸®û]Bˆã9B¬Vðolp%¾)0¬úœçýIEND®B`‚redmine-6.0.5/app/assets/images/duplicate.png000066400000000000000000000017001500112024600211410ustar00rootroot00000000000000‰PNG  IHDR(-SPLTE9k9k!Bs!J{1RŒ)cŒJsœZ„­c„½ZŒ½cŒ½k”­„¥½œµÆ¥µÖŒµÖ”µÖœ½½Æ½Î­Öç½ÞÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÔçtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÀäYIDATÓ…Ñ€ É´$*²ŒÿÿÔš±pÍ­{¼ àü ‘“’U$QÒ+r¡ÿEsdB˜«bù˜ûÿÿî ÿZ»nÄkH#³,x|Àú)Hó½{÷þ¿|ùòÿ1÷­7lpÌÒáé!«×ÿß-»ç Öœ––ÖÜæ¨¹ÀÃ5 î­±f¸·ÖÅf¸æw«ÿÿ^õÿêÛ×+gx§ÅÆÆ2À0v 6ok~3ÿÿÿMÿïí±>ôø •Ë‹ãV ø @Öü²ãÿÿg-ÿ¯nµýxc›Mù£ýÖ ø Xc­þh¯õ2°æg@\ÿÿÐÇÏgÖØ¹^ÙbËpg— Èý ááá` 7àêR[¶K‹msþ¿;óþÿ£$ æšÿ»æ9:´Ø±êô;3»<á1 8½ÀÎòÿÅìÿ?œûÿÿ骯›&;Þ1Çɽ³Ú‡aR£7†F öÎtjk>tqU·ë¬Þ Ÿ Q ƥŠçÿª.×Ye¾Éɱ!¦@¾.k± ó1/s1³1 3LÊ@EŠ@, Ä’@,Ä@Ì 3ˆ¢¬ 4€ \žÚfkˆIEND®B`‚redmine-6.0.5/app/assets/images/email.png000066400000000000000000000012011500112024600202520ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT¥ÁËNa€á÷ûçïô@§9T)…XâÖkð\{n½÷®Ýº3q!;Mˆ.0‘…ݳÀl¥RÚJ;Ó™ÿ“b¢îû<¢ªÌÃ0'ûäùç\!¸× § “Ä8‡’:Å©’ªâœ’:%uJêT‘t:½<ïµöö÷írµÜxô`³MUrYÿ ÿWG‰7ŽÒÕ‡O£‰é“fœ8y¹Ó¡Õ‹EÊaßÑ8ÚgŽÎ¹£*½‘2M¡Ýyö¦Ãé(2ÁrãŽE©d3†ú­ï¾u9»˜R+ |Oð­à[¨ä…þ0fk÷˜Ê‹•,WÄ\Nfš7‹¬ÕJlírNY*| ¾åœ0c¶v»,-–hÖ‹ˆrÍŒ&)3Öƒæj‘åjWZ ˜rNrB?Œyñ¾E¹\ ¹Z$oùËŒÆ 3"LrÖ±^¯ðöK—voB»7áõ§.z…ÀO1šà[þ°—QŠqœp<iÔ|?CgããÞl6ªÔóŒ&1^ÈR5@PÁ^F‰¦N¥Ûi,äsP¸½R`}¥€¢àPlÁÇ® Wò Níhðó Š“»ky)æˆI1€ˆ3W„+–jà~…ñð¤}dã‹“Ãû·«Ù`aÁf=±ÖÃx‚gÀÁX@„kš&q<>?íŸ|oýUe†9æôýIù{ðȱ[IEND®B`‚redmine-6.0.5/app/assets/images/email_add.png000066400000000000000000000013711500112024600210720ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‹IDAT8Ë¥SKhQ=ïe2™|&Ÿ¶imšF,u!UD(E)E\¨àÎ¥¸DApÓûn܈VÐ… ÖÚªÔ¸hÅRjQüC‘‚–Ô†Nói3$óy3¾™TPW…>8¼;3ïÜ9÷žw‰ã8ØÎ¢Øæ®Þy;)…äEÕ o4,jsA60Ø\ã°íæó&fšµõb~~aAH&b™ó§º£ºé)àû';ù?&ͽ®[¾ºÎRg†õUªVÖ°lò`²€|Ñ€¦;X,ÙÈ—m,­Ù(¬ÛPTEÍÉ€¥’ëÏ ¨h:•“™ÝTÓ ø)º:£È½W°¶a¢#JàçbD(¸âA‚RÕÀ£éÄ[¢hë^àv&/]?–¡lˆIEND®B`‚redmine-6.0.5/app/assets/images/exclamation.png000066400000000000000000000012101500112024600214670ustar00rootroot00000000000000‰PNG  IHDRóÿaOIDAT8Ë¥“ËK”aÆ¿Ô •éSAœocŠ”«ˆ6áÆ.PDC‹Ä ¸ê‚ôDÕ¢Í@«ZxÁh1àNŒ¢"¤…CN©£˜:vfæ}Ïó¶°¾³6uvïáœßyïyòŒ1øŸÈÿ=!·¯4ИvCv‘¬$ ’ŸHöS8dßéæÖçå*P·.û M`+¯ÐSذùn÷v~cÉHVr}…”ÞŠûO‚»™›—ü†ìKWÔ55Bb `l`yj`yk±1AjúÝEº« @úÆEÉ™ÊoqS2¯FE×6¯÷4(l=‰õð$6#1![÷?™³@Dw$-W¶ÙfW£&D$ÇFàn>SRîÕJu€ZëNWc#di†£¹@% ‘ž‹b_s ”R¹€ªÛ†^œ‡Ñt&:?“!DmçS³QØeÐJWeJÈqMTÓáì ê'D¡µB޵œŽ¯ÁòÔ:REß_Žasø±3ŠÈ¯®C2‡Vz9WÁÀ·ð[ìñÖ9Å¢wÏU”œ»*B4!B¸ê|øz­õ€PJ fVc±ÄdEm§ÈZàVw!²ý¶OŸÁ×p‰Å™˜ÖzpÇ!MuóS¤Ï>x¤¸´¹©ù9¤f£0ÆÀUއx8„¯G·Hv·=}ÜuÊ¡óGýBö–y=å-‡à²Ka J¬áóÄ8K³+${?ûü£`üìá’ív‘²ÓLäЉç37Ó¿Ä•ѯLjëÿIEND®B`‚redmine-6.0.5/app/assets/images/external.png000066400000000000000000000002101500112024600210040ustar00rootroot00000000000000‰PNG  IHDR ×Oö" PLTEÎÖÆµ½µœ¥œ|oútRNS@æØf*IDAT×MÌÁ 0 ƒÀ‹½ÿÎ}5Ê!&m3Èš®©‚ʧÌvçö˜Z#iR&IEND®B`‚redmine-6.0.5/app/assets/images/false.png000066400000000000000000000007131500112024600202640ustar00rootroot00000000000000‰PNG  IHDR(-SÒPLTEÿÿÿ÷ïïÆŒŒ­BBÆœœÖÖÖÎÎν½½µ¥¥¥BB½ssïÞÞ÷÷÷ÎccÆÎ½µBBÞÞÞ½ccµ½µ99½))Ö½JJÆss÷ççÆ99ÞÎÆç­­çÎkkÞ½BBÿ÷÷ÆRRïÎBBï99÷ïÆÆÎJJ÷ZZ÷cc÷JJÎRRÖssïkk÷{{÷„„ÿ””ÞssÿœœÖccÿ¥¥ÿ­­çŒŒÞœœïÎÎÿµµÞ””ÖJJç{{ÖkkÎZZÖZZçµµŒ®'tRNS@æØf§IDATÁ;NaÀù؅ı5Z`,h8„•7÷ö&ĆF;(û?Öx| Øâ%Éôf߇ÃÁͲUÛmçV/“…±–2Mïãõz]ß1Z¶`×g~Ž N›ÞûÜ[kóga0-Ç>—Úæ6ìÊjÂå|BxN§RÖù`á©öZ«R|7Œjª²Š_ι5*á’üÍ´‡£Ø$I$‘/"I"I’œø÷OþÒš’ IEND®B`‚redmine-6.0.5/app/assets/images/fav.png000066400000000000000000000005721500112024600177510ustar00rootroot00000000000000‰PNG  IHDR(-SŸPLTEÿçççïïï÷÷÷ÞÎ{ν”ççÆÖÎsïçÖ÷çsÞÎ!νZÖÖµçÖ„çÖ)ÞÎ9÷ïœÞÆ1ÞÎc÷ïÆïÖ9ïÞ9ïÞ1ÞÖŒ÷ç½ïÖBïçBνŒïÖZ÷çRçÎB÷çcçÎJÿ÷ç÷ÖŒ÷Îs÷Þk÷Öc÷Þc÷ïsïÎkçÞÎÿÿ÷ÿ÷ïÿ÷Þÿï{ÿçÆÿÞ{ïÖ¥ÿ÷÷ÿÖŒ÷ïç÷÷ïãŒÈhtRNS@æØf‰IDATÓc`€CT g€Ê74R6FU Ï‰P¢¥­¨£Ä©«!¬£­â+*)«¨ª©«Ë«ª©jh‚D$dä¡@Aš ¬GXF äX™¡¦HHJˆ4ŒÏ ," bâp{øøùùø„àœ\Ü<¼|üL0VF&&6v˜##˜bbf  ­y¡ñãIEND®B`‚redmine-6.0.5/app/assets/images/fav_off.png000066400000000000000000000003231500112024600205750ustar00rootroot00000000000000‰PNG  IHDR(-S!PLTEÿçççÿÿÿïïï÷÷÷ÆÆÆ½½½ÞÞÞµµµÎÎÎÖÖÖ–¯tRNS@æØf`IDATÓmI€ ³™üÿÁF–(–} ª³ÐÚ€¹í öÌá´ f/…™Ãà4û¤€åéÖu·‰èhD¾òš»(¼r*ƒg¨ˆJR¦§ÃEj7QP#ª¤ßú~ðŸ nwIEND®B`‚redmine-6.0.5/app/assets/images/favicon.ico000066400000000000000000000173161500112024600206140ustar00rootroot00000000000000 h6 ˆ ž  ¨&(  @ ‡¡Ó¡Ó Q¡r¡Ó¡Ó¡¼¡þ¢ÿ¢ÿ¢k¢Œ¢ÿ¢ÿ¢Æ ö¢ÿ¢ÿ¡€¡–¢ÿ¢ÿ¡“¡¬ l¥È/Æ6¡¡u 6¿Ë}ÊîËÖÔËûËÞÍlÌ8ËáÌÿÌÿÊ"ÊMÌÿÌÿÌºÄ ÊuËäËiá"ÿÚ1Ë|ËòÌPÌÿ ݃ Ýÿ Ü`ÿ ݉ Ýû Ü`¿ Ü3 Üû Ýÿ Ûéâ6 ãp ãqÜ; Ýù Ýÿ Üï âÜI Ýë Ý5 â ãÕ ãÕ âm ÜK Ûæ ß1ÿ ä¸ ãÕ ãÓ ã©¿ÿÿÿÿÿÿÿððððááÁƒƒÀàð/þÿÿ(0 ` ¡)¢U¢U¢U¡J¢ “¢U¢U¢U¢UŸH Æ ñ ñ ñ¢ÖŸ ¢7 ñ ñ ñ ñ¢Ã¡ý¢ÿ¢ÿ¢ÿ é›$ž=¢ÿ¢ÿ¢ÿ¢ÿ¡¬¢õ¢ÿ¢ÿ¢ÿ öŸ( F¢ÿ¢ÿ¢ÿ¢ÿ z¡Û¢ÿ¢ÿ¢ÿ¢ÿž2ŸS¢ÿ¢ÿ¢ÿ¢ÿ<¢—¡Ô œ .¿¿ Å® F ´¡Ážœ UÔÌeÊ¡Ëi̶̒ÉLªÌËhËÔÌöÌÿËØ¸ËýÌÿÊîÌÊÌLËnËúÌÿÌÿÌÿË#ÏVÌÿÌÿÌÿËïÊNÉ+ÌâÌÿËþËÙÎ/ÉiÊðÌÿÌÿÌÉÌË£ÊëËmÌ× Ý.ÚEß Ì(ʈËöËhÈÿÏ Üi Üþ ݰ× ß0 ÝÓ ÜôÝ=ß¹ ß Ýž Ýù Ýÿ Ýÿ Û³ÑÿÌÌ¿ ÜQ ÛÒ Ýÿ Ýÿ ÝòÞvâ Ú Ü Üý Ýÿ Ýÿ ÜÀÛ â™ â´ ä´ âlÕ% Üï Ýÿ Ýÿ Ûö ÜnªÝ Ü« Ü÷ ÜÑåä9 ãÔ ãÕ ãÕ âÎä&Ý. Ûç Üò ݉Ú ÜgÜ;ÿ â² ãÕ ãÕ ãÕ ãÕ â~ªÜJÞWå ä™ âÈ ãÕ ãÔ ãÁ ãƒÿÚÌÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÀÿÀÿÀÿÀÿÀÿÅÿÿÿ€ÿÀ~ààðø?ÿÿçÿÿÿÿÿÿÿ( @ €¡L § § § § §¡~”  § § § § § §¡ˆ¡ù¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ Æ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢Ã¡þ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿŸÎ¢¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢¢¡ø¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¡ß£¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ y¢ä¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¡ùœ'¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿžE¡´¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ© œ4¢ÿ¢ÿ¢ÿ¢ÿ¢ÿ¡þ™ ¡m¢ÿ¡þ¡®¡?©™© ¦ a¡Ñ¢ÿŸÎ£” UÊ„Í4Ë…ËJ™ ÌʽËüÌÿÌyÌìÌÿÊøËÉËåÌÿÌÿÌÿÌÿÊàÄÌÿÌÿÌÿÌÿËþË´ËïÌÿÌÿÌÿÌÿÌÿÊÎOÌÿÌÿÌÿÌÿÌÿË­Ê–ÌÿÌÿÌÿÌÿÌÿÍmËäÌÿÌÿÌÿÌÿÌÿÍ>ÓËþÌÿÌÿËùÊ¥ÚÈËÚÌýÌÿÌÿËÕʸÌöË™ÔÔ ÝlÌ Ü£ßÉÉÍËüÊkÂÿ Û] Üý ÝÿÙ>ÿ Þ• Ýÿ Ûîß ¿Рܲ Ýÿ Ýÿ Ýÿ ÝÿÝDÌ Ý Ýÿ Ýÿ Ýÿ Üþ Ûdÿ Û½ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÝÿÛ@ÌÚâ å ß Û½ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÞnÔ Ýì Ýÿ Ýÿ Ýÿ Ýÿ Û¤ â– ãÕ ãÕ ãÕ ãÕß(¿ Ûç Ýÿ Ýÿ Ýÿ Ýÿ ݼÜ% Üí Ýÿ Ýÿ ÝÇÿÔ âÑ ãÕ ãÕ ãÕ ãÕ âÂÔ Ýò Ýÿ Ýÿ ÝÆÿÖ ÜÎ Üßå ä† ãÕ ãÕ ãÕ ãÕ ãÕ ãÕæÙ) Ýø Ý ¿ÿ âÎ ãÕ ãÕ ãÕ ãÕ ãÕ ãÕ â¶ßÝ ä† ã¸ ãÓ ãÕ ãÕ âÍ ä¬ âmç ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ9àÿÿ€ÿþÀþÀþÀþá?ø‡æðoøàø ø?ü?þÿÿ  ÿÿàÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿredmine-6.0.5/app/assets/images/feed.png000066400000000000000000000006531500112024600201000ustar00rootroot00000000000000‰PNG  IHDR Vu\çrIDAT(ÏUQË+ÄQ¾% I’$I²„$ É_`!ÉÂÂRBÓïòV–ò(Y”Çfó0f2Šñœfš$«Ÿ1Êõ™ïÔÍ8u;§{¿ïœï|W¥õÙ«r,gFñ¸¥“ç(›ò¢|Ú‹ÊÙ TÏùP3ï“\4æ6ˆU'šW¯˜J¬˜ù#Õ.øQ8ê6Tþ° <:¢ï Ø\QÔÛ.ÿõDÅnI&Ú6‚|xûâK,!w¬'*”ApÇÖ\öì…OüÈi] ¸dÂ#YQ7§è`çÞýÚ7o…@‰”BÄ)=Žš­Ç!08¥{÷IjÞçYt ŠlÊèܾ—‡Æå€Ø™2˜ƒ¯qd›(qAiŸ9ža9ŠÀt–ºeísŽg©3M§â¦ª[ô‹uèb_ßhZ¹BÃR@@æÃ0ºv¥&.kÐÅLµŽ2¸ 5S;g œ ½ßN‚¡øÝüAºÅ]H¢\š)#wÈ)`b7'Þ!ÁS IEND®B`‚redmine-6.0.5/app/assets/images/file-rss.svg000066400000000000000000000012061500112024600207270ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/files/000077500000000000000000000000001500112024600175655ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/files/c.png000066400000000000000000000010261500112024600205140ustar00rootroot00000000000000‰PNG  IHDRóÿaÝIDAT8Ë“KKã`†ù ÂìÜI]ºtÖ^¶Š‚‚¸RœYŠ U±8L¢V7*‚ÚÊ 0^táJEQT*R‡¦IS“&½¥­¾~çS/£‡\ß'çœä+PB°­”áaT½A9㣓s <ÙlVÏçó·…B/ÁîC„n‰[PEád2‰T*åH$ idYæI’ Š¢#±ÃH@d2X–Å÷„išÐuŠ¢pA:½Äï÷ÿ“ Î{þ©¶ksÆ·,÷ÅüV {§:PÀ0 Äb±g-ñ™Ô]zú‚ò°¦büaEÆðï(XK¼o»UUy%‘HäQÐ,†þ _º·—lóܺ‚žÙ¿Ð «HB•Ð<âñø£ IÆ+½²aâ»»¼ kƒtlK¨š ‰Aß/ ýÁ(*j:^û|D.—ãÃ% áÚ&Ã!/T6wÀ;s£ Ó9§*H@P5Ž ¦ó¤§w1‚¯?CÆqÈ„–°00}ö±+ž‹X,â 5’˜R”øÐx MÌÚ†4µi4!¡ðRÛTkÑ’ ê‹Åˆ¦Ímsiv“l²ÙÜS?g6&®±3óýfÎ9súôQ‘±‡HE4ðí%ÚÝõ)ªZ­Vh6›Û­V ½Döa±XLJˆ0@Í’$¡\.wU,!2™Œ I§Ó`¦ é˜wQ=P­VQ¯×噪T*¡P(€ã8P©T@/±Z­m Þþ¾ïˆnÙÁøyLú9Ìrøe5ˆ¢ˆQw®W‚Q ê‡,â[È99nŒªn=åòö79Ø—³°½æ1±”…é’÷ç€ë20ºÂ¸8–_#†m¬×ñ6cú€¯“,ïjß’|zo ZgcOÒÐMGqv2†3LÛ˜ȳ—r8xbêš2ãÏÖòøôMÄ#ÒMÑϲ08ãÐÌ&0á‰ãåj¶ Ÿçp‘ÇþÁ»çþ.[0"Á·ÂCçLa!ÅØLÃæ0V>ðÈëmÀˆ;½ù€ ù,JóOG#“Ð:¸dg¡žfqÒÁнÍß98zcC3þœÃ•™˜ø5&A(Õaô¶Íë%œf¢ð,f0ÿŽ—Í\®,'¶  e<¬j/LEÄQW WÉmçm,æHɼþ N™#È U\&f½5ŠF£!ë@ç#½_/bH -e/õÅÿêƒÚî~A/\¦;1“³%¹{€~ ÙA;wD[¿ÿ'ÇVÅÿ~.mIEND®B`‚redmine-6.0.5/app/assets/images/files/css.png000066400000000000000000000012311500112024600210600ustar00rootroot00000000000000‰PNG  IHDRóÿa pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxڌӿkaðGüDhÁÅ¿ %›“³â-A„ÎFP‘Þ  l#$šm¤LñpÈÑÄ¡CAc B3H ¤ƒ$$MŽ—ܯ÷M¿Úã®´Øá»¼ðýÀóð>€ÍQ€ˆ‚ÿÉm"ºêö<@À²¬clÊ9Çy±, ñx|Í‹x cl:1™LÜ ‡Côû}t:pÎÑn·‘H$\ä´|…ˆ‚œs˜¦ Û¶aš&LÓ„®ë èv»àœÃ0 ŒÇc¤R©¿ ÞríÆÌ{¹¯?ñ|5‡…wŸ!ˆ2QƳÕOø¨þÀïF Œ1ßHD$A”¯?\HI‚(CŠ)D^¥ŽfŽf]HŠ)ØVKhµÑjµ|ÀËp4‹zC÷Ã#dòe54TjM¬ïì»ïõ††HRE®p€^¯ç†ÅR™|‚(£Xªºe)¦@7,dòeD’*"I_Àh4ò'^`~i ë;û¨Ôš(–ªˆ$Udòe膅HRÅÓ·Y†áÒÞ”½CTjMÔ2ù²û^©5‘+`m{–eù€[‚(ñ.QŠ)îç—¶ Ŭ¤ XIp¬õýzðâýÍ»!qyyc¡ÅMwó‚(#´¸‰7»(|ÿ­?‚ã8pÇx?ÒÙ0ÆÎÍEÀÉEwpN¦.ð™³m{Â9Ÿ^¦lÛ¶ND/0KDs—8çÓˆhö϶—¨§F=àIEND®B`‚redmine-6.0.5/app/assets/images/files/default.png000066400000000000000000000003611500112024600217170ustar00rootroot00000000000000‰PNG  IHDRµú7ê¸IDAT(Ïu‘[ E§®Ã&î†}šè‡ÔøŠµO(Ôë@_Ö–œá‡9a.Ñ–É?v´9\ •šÖbBá°WÒ´JÏ/\Y¹àØ+DI‹šO)n,T(pbe´§æF†û8гD½`ü…áéñ_9Ï…NÉ8És]蔊³d!Á¢á4Œ¬Öãiš‘À/&~…Ï;Ïù}Îó{+PB!ÏB¡üì%ìæâx‚²õõõÄæææV>ŸÇß çP«Õ*¾„/(§ÁkkkÈd2Édñx+++¬$C£Ñp’Bð®'÷W3N:Ì ¨Ó‹É»£Óz,,»‘H$‰DXA6›ý‰V«ý)¡‚Zð„D+ šÞ¨`óO`<¸ý{+:ŸÈquL†©ÅI¬®®þ‘[騢þnÕüÔW Ü)^}[„)€ÜáG¿cÆÙAt[š1ÿÙ…h4ÊÞ$  ”·Ý`’“°Fßaг„Kv/jlÏqÑ{ªå>´›¥¸OÒI¥Rl=b±Ø¶€ä»dú¤FØ€—$O? Ù9 qà *ý§ vœ†~ªL#›:fE|Áw}@‰Ÿog!qá‚ͩی£:>‹Q§Ò!1r¹+¡l§ -æèò<‹ǘPyÍŽC*;ΙºpÓz¤+T@¡óÀ¯Á€â… ­ÓMŒ?Àña£_pð– C/z·¢NWfÆ€ 6øwAEíáÜ £ ³c¨·|Äy³5ÃFôNÔ¡ížò‡2øHw¨ '(ÌAµFlešÐ7>ųI\·ªHÞ"ÒÂÌø^ƒLiEnÉ5Û™¶`t§þ;ìÆ'ø%ÙG ”¡;-?˜|›f·—'(¥’ÿXçtõK<§PUÌ—IEND®B`‚redmine-6.0.5/app/assets/images/files/image.png000066400000000000000000000011251500112024600213540ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ë“¿OSa†Ÿsïí­ÔZbMJPAqÑh$¢“á?p1ÆÍ…ÁÙÑ„ÄEcT˜™ÕÄ„E ƒ+hÀ¶†¶Ð^nï÷ã8Pjˆá$ïö7ïs¾sDU‘‹Àòÿª›ªêPUz&·Ò4mcœµVSš¦º¸¸ø˜U2˜6Ƹv»­N§¯V«¥FC«ÕªZku{{[—––ú&2ÿîëR¡ðx§ãNFâb×8òÑ…x®MœáþÍqÊå2Y–á½geeåíÜÜÜk^,¬Öêußîìëqú½³« ËŸµ^¯A¦£VB¾P(Ê­]>m€£ÏÈçó,i6›¨V«g£Ñˆápˆñ ÷á>¾î½ÂGå.žÝç—Oðmÿ5~}çB‹ÅÂyt:3Íf“æó9'L“\·Û•¡¶i„ÝnÇh4âeÇãùIƒR©‡Ãr¹ÌïZ.—C"‘àq*•b(Db½/­Néûý~ Þ/…Jé“ ÝnÃl6³|6›q·²@¥R½ŽL&à ˆÚ¥HBï$ñz½¼=*>'Ï5¥RyW¯×Çb1ˆhµZ, …Bp:ü²Z! NOá…B±KX­V†gÉd’ƒ§ô h >þú×=¸€Yp*¹%’hâ2Åâ¿#¾½k‚M’\â:¯ «¿ù{ÚF`kåÖIEND®B`‚redmine-6.0.5/app/assets/images/files/js.png000066400000000000000000000011601500112024600207050ustar00rootroot00000000000000‰PNG  IHDRóÿa pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFöIDATxÚŒÓMkÔ@ð¿zðxÁŠ?Á–Üœ‚뺰“4CMÂÒ Ìz¶ÛÂÊëû» <4º[ØÜ~#aymŒ1 8¢ꓤ¼ðô楅ì%–Í;øÕkÉÊß;}xêòÉÛ•Õ»øômf½œîæúÂ9¤Ã9™qÀθ0"Ãø‹LFQ4B ÷RŽ¢È#¢\˜ ¢É=|ç$9"šø=7mž%KµFŽIEND®B`‚redmine-6.0.5/app/assets/images/files/pdf.png000066400000000000000000000010321500112024600210400ustar00rootroot00000000000000‰PNG  IHDRóÿaáIDAT8Ë“ËKQ‡ÕeV‹Jÿ®qåÒ•`¡¸´¸QªX>b%‚ëBB –*t!îºÐ•B»iU| Q”d&“d’Ì+3“D½çê ièÀ÷νçãœs9Uªöµ0ÚOÐÆ¨qã í–e¥s¹Ü]>ŸG9Ø9|>ßçBI¡ “‚uE²ô Úî ÀÂö©T ’$q‰(Šðûý®Ä ®&]05ŠwÆñLÓ„¦iH§ÓˆÅb\Éd ë:Àƒ¤X`Û6’ž¨ë߸€TUE</)‰÷¤XÀÊ@Ò;mk¯©n§”D"Á3¡²€ˆ}@Â3GèH(ê‡,Ë•Öß+ïß!::óüô? •C=!QE8ýò×/0¯/a’« ¿œÍfyHB”Ø’ˆP/¬H™àÂãÃv½Aèmn‡™€¼¹Á³)+/Ì ²8‡ÔöÄ¿¯Bù¹ýìÂò"nƆž÷@Z[)üj~Uh¨õ^ö÷ÁNÊî3Qí¥O˜R6ë­]ÁáëúnÆò^SÝ‘ºÿ»ä­I1®àOcí cÇ÷ò…—ý¼¯4e¸sKxìCë²AÏ fw5>½‚V’³%X߸ ¼ ÓwŒ±ñýƒ¬­Ÿƒ¢(6A›6&f2Ek*lׯ³¡ É Î0AÓ š|{µ†‹-ÇXðø‘žV0J¸ë¶pl$ñäÃ|•¨×뛀=HÁ½ïD7A»Û=è@ËüJ&ÉÖ±£—b’«ÒÛËœ(éá:›àÕw~â­ž)‚’ãIEND®B`‚redmine-6.0.5/app/assets/images/files/ruby.png000066400000000000000000000010751500112024600212570ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ë“OOA‡±‰ßB¿¿HŒVŠ&&$$Ä ÝØ‰¢H”Æ•mÉr3 á"ô '.• IÌÖ¶Ý?ÝÝîÎîüœív ÙäÉf~Ï̼ïN€û®0úýÿá*#åb‚¾V«¥B Ð 6Y–ßÄ%qA?7›MضaªÕªT* …HÒ_â¾Àu]xž'FŽeYÐuµZMÇßDQ”¿.¦Îj™É°(ƒ¼} ÿÕKøK/ÐZX€;ûö£˜SÜwïO\IÔ„ÎdŸQ¥ºùôËgÐo_A?mÂVhù<¬\õùy0‰:|Ç+«PUõ„ D—žkk@¹ vI`cf&ƒß’‹j:ïss('S¨Ý‡¦iA˜•ÁÔ9|òØÞÖ×a  :8}d{,¼# ýÞ¬Ã_0M³#hñÇíd‰d³Àî.°µghf*…ãÅEü¼9 ctžnˆ"rN .'×½B~F'!pXX½•‚qw>k%ï‡ÿ§Qå"Üñ4èò2êìÎ&Û™‡}ßðð¹Ñë\Mvl®wÂqÎIéÈÑ«)éÊYzÖ;èB þI®±Ù|â"a¶Ö¯7&èå’ <ç6üé÷þƒ¯vjÕêIEND®B`‚redmine-6.0.5/app/assets/images/files/text.png000066400000000000000000000004411500112024600212560ustar00rootroot00000000000000‰PNG  IHDRµú7êèIDAT(Á1nSAÀÙÇž4A¸‚Ž‚(¡I“Sp.KPp"„ÒQÒAŠ7%Žƒßþû1Ó¢;ó°ó+„‹çýZ######Ïù´µ±DWk=æCù›?ù‘û|ÞÚX‚æjä˜9昇ì³ËÈSóekMs9¾•¯NNV«ÕG@ÿà¶‹kD)ÃÞ4¼hn­†“¡”éÐ.Q¦@ønJ)1]:À;1@ø¡ ÓT˜Þ:Àt€Ÿ¦išÞ:ˆö€I²$fM³ž-Ú+g”]îþ´•ÏÍ h³IEND®B`‚redmine-6.0.5/app/assets/images/files/xml.png000066400000000000000000000010461500112024600210740ustar00rootroot00000000000000‰PNG  IHDRóÿaíIDAT8Ë“=OÛP†)C—Ž0¥[§–!©kÄ_@¤ „@ ©˜ &~@[%C *UA¶ V”J;dB¤ ,@lÇ_µØ±óo}n°qHP±ôÈÒ=÷<>çøÞ.]„ûô¹D\ÿÃc—n?/ ˆ8Ž£×ëõËF£N¸q$“É·AIP0Hɦi²,Ã0 iDQdAJ¥|‰—ü€´Á¶mT«Uö&Êå2t]‡$ILP©T@I§ÓMIP [5–ìAJ(•Je¹­%6Oð(‰Î~—0µ[dÁÄ‚¹Šaû­(ŠÂ*áy¾UðtùOÏлãÜÜñÏMÁ̾Œ…_ ^íI´ “P%4UUoÏVNcc_E{v_B|»NuXת˜ÞAëã™"ö²*k‡fB"_0²-K?Ä6¹ÆÑ™ÙÒc.oal‹Çü7£.`Z“¾àÉë“Øð:gÏ|)bbíœÜ¬€*™úÄÖGÖ Øý­úÃ¥óÐ2ƒðD¶çùâa.¾Áa<™gÁÉ^f$V uµZAÉmú {û£ñTÃoÎYðÅûéþ7ÉAÚÞAº{:;r—àê®{ÐK_p-pdQà>ÉîÞ2»½Aˆ$÷¸ÎtõCÿÍʘ¼¢?æIEND®B`‚redmine-6.0.5/app/assets/images/files/zip.png000066400000000000000000000013111500112024600210710ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ëm“MhœU†Ÿ{¿ù)3ó¥Ih4­-"Ê0 ÖâBQA®t#©ŠÝˆ¸ÓU+YH]”.š…6›,ŠŠ.ºtáBJ7""þU§-b› šÌ´™¹çÇÅü´IûÂáÀ¹Ü‡÷¼ÜÜ€¥¥÷3`—»ï­V«çTõ>wGUÃÌ‘ca©Ý^=vôèñu€À…³îÏjsíÊkOôm¢T­Ö˜˜Ø‰»cfãn¦Å••‹o‰¤SÀpálãðÑTc2þûw@ºB»½ÆÚÚ*f‚™c$Ïsò|±€ªe UÞ¼ûÀ¾XÚYâÚLj8nFV¨`›%®ýÜY¾Ü}èdkýÁÅF=ß᪉[Oí«?ŠÙ_ÌÌT–ã^:¿žoüÓÝóU1/«ŠB ˜ÙM¹|å/B8á%Z­ßÀepªJoó:æFêõ‡ÁÞtåRÆ¥Ö pÁI”Ë`03бˆ›aDDÒv€23³ ˜Ø÷4¼<¤”ÐÔ ‘Í-Æ+\jýá¯B<ÌŸÍ‹c€ª†,ÃÀA@Õ¶;JåŒfó]°„ÓgÇ–´d£º˜mË ·Ña÷ìcãôGµ¹q± U›a¾ª£*[G~úüÛÓ£HZB,"ùáÊþ¯³,ûpjjzô1ó›€'// £ÁüüÜÔììîóÝnça3£{§´nY– Øm¶HUÖ¿óçÏY­:õ¯~2quñSݳ¼üËg)õ!Ò¯yãõZ/ aôoÕ3Ç›Íç©Ýûå÷«ÿÕ¯8TDô »Ìæ=ïåϸ+ÿâÇÖõ·W怹ý3OËÉE3‹îZ±ènöMuþP •w€Óÿ›{Ò&ƒùÊIEND®B`‚redmine-6.0.5/app/assets/images/folder.png000066400000000000000000000005351500112024600204470ustar00rootroot00000000000000‰PNG  IHDRóÿa$IDAT8O¥ŒQ+CaÇÏÕ>‚ bŸäØó!ö|‚]HJ)eqAˆ%s MZ¹YDˆÄ™5¡¹˜ñ:Îi9æ<Þÿ.ž–M½ãâWoïóÿý,f¶þCÇG¯ÈãÊ!«àPT3ô Ql~Òˆk†OÞ9qýÉU¥¸îyÜÃqëB\—iùò¸étðr³Þ¢ýŽ7 \¤i´z¾ÈݨW[Rð¼#4Õ>ÑÀÙÔòÜxÚ6[88MQÿaËláHàx¦üÇ»wY#°…#Ãyšöî7Y•׌ÀŽöfiέlðkiÅláH`w†Ro·®–ÀŽrÉXÖÕŸªè- L&&2c±|/À‘€mÛMŸ¦ßl#ø+ß“óRÞå:IEND®B`‚redmine-6.0.5/app/assets/images/folder_open.png000066400000000000000000000007271500112024600214730ustar00rootroot00000000000000‰PNG  IHDRóÿažIDAT8Ë¥“ÏjSAÆgîäÞhÒ$KÑ6ˆ;é ˆè¬ˆàBâJAÜÚwpïÂ?â—T„±n0`C¡’›;wθH²‚MÉ朙ï;|‡9B`ž0ÌöëËuD@` ¸5åÝ›_¦ Lˆð Àê³úó'•J‘GKÊIB)Žùöú¦nOá§²ùâ@àéÅëOÔD b 3>j£;Ñ|·±aDàò·ˆÔçäÙuÞeè?p¨sï>õˆ,p¿ùj}¸v~@Çž&]G‰ÏH@„øt•…ók8Ol½R[¹r÷^R=WŸuò½ög²ÁªXë<›ûïE)Öƒê±dÁ$eŽú»x%2CGso»½B@}~,|îˆ %w»xÅÚÌÑ9Úév/ }…Y,D¶ÀŸßrÅÚþ0`ë`çç¯ÊâòL^Q\F•BÔ‹.q¶*§j%{õÌÒʲLþÀ!¨tÒ­Ôµ÷µ¥áǧ´Õ:<Ét{¡-F£$@ˆNÀÏ}™wÿƒÉ}a?¦IEND®B`‚redmine-6.0.5/app/assets/images/folder_open_add.png000066400000000000000000000011101500112024600222660ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ë¥“ËKÔQÇ?çþ~ÎLe:ID’‘¢"]Š D;)#‚EH«‚Vµ’¶‰AT›6-zH.z"FP69dНò1øóûýî½-ÔEô|áÜsÎ÷\Î÷pÄZËvL±Ms¿?i@ÀùºçR¡ 6'᪅ÊûUn—”ĸ^ž§8eW$Âгs ¸Â“ôã³ wjN^kßì&¢¥@© =¶žP™Jj/vaÁ1: ð ßCûæ/øßÇj«0 Ž ´ež¶V͹±O˜™6]¨ Dˆì,e÷Á¾&âjCüЉK—£¥û«þWùåñ¼ü"Æàº¾&½4õcªLbUÖ˜-Io†Ó¼û™!—_Æ÷ò$«k¨58nÁ'³83>³§¢£ƒPrïPŠôÚÍÉF*Êó:ÝEÏà{>Λ¤ò|¦²³³A!¿bt@ºûi8ZVšúòÓhñi¬kbpiñ¸Z)X»æÙá\vrÚjMærsI1gŽÝàæ©ÔìK ­uÔ½W†‰,©ìô¯%ÇqQÊù+« ¤÷ÑÙÛ@gO#s)ãñîÏfÔØ‘/c££«aÙ¯îOõU6%’¼üv—ˆ¸|xË¢ø€´´´Ä€(œ­¶0_ñµÝ8Á Xã<Ü;ÙpK¶{ÎWgO3P‹IEND®B`‚redmine-6.0.5/app/assets/images/folder_open_orange.png000066400000000000000000000011111500112024600230120ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ë¥“ÍK”QÆ÷¾×wfšÑ3EÑÒA¢MJ­ÄjÓNȈ¢…-ªUÑ_EåÿmZôAP­Œ-‚Á>œ”†œi¯Çy?î½-t à ñ^û Úà(/`v¥°XhîêÃè0’\+Îa6+t»…Jwüžâ×·wÄÍÔéä—KÅbèUËF‡D¡üý-½§På ø|™†—4·íÃågŸ,{ÖnøöëZéÇ’ÕšHÔViH¶B"ÇaCáVÇQ˜FgÝ9H[Z$2I5ØÚÑÝ)ê3ð6‹ã¤Ò‡p*cä0þ"^XbyµVS@æõ'“3v~b!—«Dip åhÖß“iÎÙð¯¶ÆJ)e •Ö 144b@pvú…»ç×cá›…Ó¢ U_=¼ýjàŽØí:ÿ€1UTlhIEND®B`‚redmine-6.0.5/app/assets/images/group.png000066400000000000000000000012741500112024600203310ustar00rootroot00000000000000‰PNG  IHDRóÿaƒIDAT8ËÑMLÒqpëЖ:uèí€dÒÖ‹Î9¶ˆðÐXºæ@†¨ÈBLÉ¡"d‚¥[ŠþÁ?Z)”èßR Íë¢m¦â{XkƒC Ýš9kËð‰Ø2›Ì<<§ß¾Ÿ={~Q¢vŠš{X¬-8&P{ѲâÄÍâK+D d{½Ÿ0ITÈ~ì |ê¿‹À€#-7p:ÿ”3Ió bg7‹SƒB¶¦Ý ‡±U:“w(ÑÿΆš¡j$hOZÏ(NDoþ¹‘‡…WÑWu ž.5:<9l´¤Â2£†yª îRÔºËÐó¾ %Žb¤&‘›€‰Oïù8DmŒªdÁ0u un%t%¸=QÕÛ"ˆÉ¥´ªÊkÃÇ{Ý’ …{uø3p﹚v JŠÇãß¡4-aJ·5†Ùé«£hœO>¸6°„Þä¹Ã@æ À§bj<ˆc×9}âÏÉ^#/¹‘cBj¼ÚHÛVb™ ¼vÊÄó(y;‡â×ê …¯6*PÐ(G½tFOwëäǘ>B…1½#‚ÊC6Kì#²G#O4“¡P$±êƒ„©s«fâøùâVù›ùà’3åŠÜ6 š”h7eøÎo˜À°Æ %€›ÕcÁëGY')O4˹×@¤töm¨­A¼”,¡¤YŽ¢Æi<ïÕCiôBeöãjÅçÔåCœSWùŽPƹýl2ÔG¬ã«; ‹7–aѹƒ.™ ¹¿|ç¼ù ÖGEM$m$š„!a]Ãw`_Ç«ˬ¦ã3qï<ýöÖ¤åd[ïµMµ®`` h;Y’ áxƒ”û’®1Ä–åØÖ"ô¹ôt'<ŠvÅ70õð"ÀXx\û€¸MN2‚¨y?¿Jн­îƺê9òûÐ÷´ðqË)W`Z m¦ElieXS>Ʋ¤ W@ž òlŒÞ> iëiÈêåUȺ00®Öµ,l–u¶p ©l…2‡b…C:WÅZ¤k0ª:YÂŒ=‰9¿n¿WÔByóŸ(oŽ a¦È"’©`=Z„M?v1D…¸þYÿÔÁN µc§yÚ‘¡¿ÑY„~•ùòœ3A*¸Ù7ëk><ÿ`?Ê¥„Ád`õg!ÑõGÍ ˜XŠ›a6è›ñŽ PšâÔ+‰àj(‹4SEt§‚Yk]“[/Tžÿ‚ÂSOZâœ/Qà7QªrØ-°¥ËÐ:“xòÞŵ:þýÇôQjÞÆv¦Œ\‰E™”«,†Üá<ÜÛ¸È)£hˆ¤ËkTÍ»…ㆽ¿‘Ø­ðeÒå™|ßcE¾låñÑAǘ¢n•°Á%…Ñl‚y#…p2Ya4 å?ž}pâl¢! zúyz³Ñ…ƒ2ׅÀºÎDaš(Ìì)Ì»@f‰Â )Ñ$’ºÎú®B‘¼IEND®B`‚redmine-6.0.5/app/assets/images/icons.svg000066400000000000000000000700301500112024600203170ustar00rootroot00000000000000 redmine-6.0.5/app/assets/images/jstoolbar/000077500000000000000000000000001500112024600204625ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/bold.svg000066400000000000000000000006151500112024600221250ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/bt_bq.png000066400000000000000000000006001500112024600222530ustar00rootroot00000000000000‰PNG  IHDR(-SÆPLTEÿÿÿ;;;444...(((###IIICCC===777111+++%%% z«é>>>888222,,,"""ƒ°ëo¡ãÝæ÷aaa\\\VVVQQQLLLHHH‚±ç–¼íˆ³èv¥ãÞæ÷”ºí€¯çàéøSSSMMMBBB<<<666000›¾ðpppkkkfffWWWRRRuuusssooogggbbb]]]XXXGGGAAAHÐ}.tRNS@æØfhIDATÓŽ¯ ÂPï` ˜ÆÊ+‚É´èŠýªÅ&¬¯ˆ[v?žem.<võ»ƒþ!Ü4Ôy(¬“×Tú6x'ÆÒçì¹ Úl““¶gU_2 v0©]ø¦ýÑ'uÙÇ™Ý|FázIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_bq_remove.png000066400000000000000000000005731500112024600236410ustar00rootroot00000000000000‰PNG  IHDR(-SÃPLTEÿÿÿ;;;444...(((###IIICCC===777111+++%%% t¨é>>>888222,,,"""àéør¦ã}­êaaa\\\VVVQQQLLLHHHâëù„±çŽ·é¸ìq¤ãâìù…²éSSSMMMBBB<<<666000—¼ðpppkkkfffWWWRRRuuusssooogggbbb]]]XXXGGGAAAʇÅxtRNS@æØffIDATÓŽ- ƒ`ï@,‚ÁdYtÅŸ¿j±®Apy~–5gxa°«Ï<ð F·X]§‹÷ AÝÁMG3Û®NÀꜺ‰Tªzéi òIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_code.png000066400000000000000000000016371500112024600225760ustar00rootroot00000000000000‰PNG  IHDR(-SPLTEÿÞÞÞŒŒŒsssÎÎÎkkk„„„ccc½½½ïïïRRR­­­¥¥¥ÆÆÆ”””ççç÷÷÷@–4tRNS@æØfMIDATÓOA€0 Âv´Š›ñÿ¯õä–ŃFn üD ’ôÎ[Ò€#o~𠬤:54©¼ HLÂÒÔ»Hzä:<‹¹[ùxëß»¸ã¾M$IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_del.png000066400000000000000000000003741500112024600224250ustar00rootroot00000000000000‰PNG  IHDR(-SNPLTEÿ­­­999RRR”””¥¥¥ŒŒŒ{{{÷÷÷!!!µµµ111BBBJJJ½½½sssZZZ„„„cccÆÆÆÖÖÖÞÞÞÎÎΜœœW:÷ltRNS@æØf\IDATÓK€ PT| ø¹ÿEÝaMwdÒ:3™âŸ£âAéÚKV€«àÌq¼¸åÐ:äò•]DDâ°¤”’ýFµ­á7¼XÖ¨afÛ=ëzo½Œ½T;qIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_em.png000066400000000000000000000003051500112024600222540ustar00rootroot00000000000000‰PNG  IHDR(-S6PLTEÿ”””cccZZZRRRÎÎÎ111!!!½½½BBB{{{ÞÞÞJJJœœœŒŒŒsssµµµkkk¤÷ÜŽtRNS@æØf=IDATÓI +­KÝýÿg=ãQn&‘oíTJ–òÍ”‘a“ô‡pçBpžKLÄ”€þO]ŽòÚ0bŸIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_h1.png000066400000000000000000000003671500112024600221730ustar00rootroot00000000000000‰PNG  IHDR(-SKPLTEÿœœœ{{{sssµµµ­­­cccZZZ„„„RRRççç)))ÿÿÿŒŒŒkkk111”””!!!999¥¥¥BBBJJJÎÎÎÆÆÆ®ç"tRNS@æØfZIDATÓ­ÏK€ PÄü%¤••û_i˜ŽËàÃ}L˜1…¹Bõ¨$ºX–À›ž”´/"$SŠØ¸v‘N£CÀù6ñöí õÆ:olÐë”O^ÇÊ7½$¶IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_h2.png000066400000000000000000000003741500112024600221720ustar00rootroot00000000000000‰PNG  IHDR(-SHPLTEÿœœœ{{{sssµµµ­­­cccZZZkkkRRR)))ÆÆÆ111999ÿÿÿ÷÷÷ÞÞÞ„„„ÖÖÖ¥¥¥BBBçç猌Œ½½½ÏŠÄmtRNS@æØfbIDATÓ­ÏËà ÀPᛯJ ûoÚ['ˆŽï&x£¹wå.Iº¹—m+ @ =.¯¥h:æ´ÛÝ­6€ÔÝždRs ~^ÐR›å ŸÈ¡–,g}e„•æ*<IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_h3.png000066400000000000000000000004051500112024600221660ustar00rootroot00000000000000‰PNG  IHDR(-SNPLTEÿœœœ{{{sssµµµ­­­cccZZZ„„„RRR)))”””!!!ÆÆÆÖÖÖkkkÿÿÿÞÞÞŒŒŒ999çççJJJ¥¥¥BBB½½½ßrœ{tRNS@æØfeIDATÓ­ÏK€ ÐR°ü•R¹ÿEM<]L&/³)À×D2t‡ªbéŒÀ“IlxÁM¸øàæ_(Kkv¥ø€‹²3g2 ‘ÕDæ„?Ý– _ÌêdvIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_ol.png000066400000000000000000000003701500112024600222670ustar00rootroot00000000000000‰PNG  IHDR(-SQPLTEÿs¥ç”µïçïÿ­­­)))!!!„­ç{­ç½½½ZZZRRRJJJBBB999111Œµçœ½ï¥ÆïÆÆÆssskkkccc ¾ãtRNS@æØfUIDATÓ…K€ C;"(¢€¸ÿAÕ°ì®/ýDd r€Ü)å\Šu5ÐW‚ß\Ì`³ÎïÇ)ÕŒYF‰ˆ“æ…0J¥¦Yë¥V†îäº4¥?D`IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_pre.png000066400000000000000000000016261500112024600224500ustar00rootroot00000000000000‰PNG  IHDR(-SPLTEÿJJJRRRBBBccckkkZZZ{{{\S„.tRNS@æØfDIDATÓµÎ! ÅÐ×ßm{ÿ#À "cþÁÝ„g…®bޱYR´9blÓžaß"I³—Aä ®êøÊþ|þrôØÓ²y$IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_precode.png000066400000000000000000000006051500112024600232770ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT8Ëcøÿÿ?%˜a˜`ØóŸl :ð{Î{z,bÕó0±¸Í¯?x/~~ $‡×ý¶{B³Ÿ+Úöú¿ÿܧ÷`â!«^Þ+Ûýæ?HN»öŽVôZîED¯~ù½pë«ÿ~³žÞS/¸!$'°èÙ=\ÄÒçßr(è6Üe _þücåŽ7@Ï~«æ\3Fwªfù-c\馗ÿg>þ¨t… ÅêÅ7#Bç?ýžµêž÷äã.I#ÉI{O}t$4óÑw \Ö0PL¹"dÛpçXêâ§ÿ][îÂÃÀkÒ£{+žÿÉÉE_ 2ø-Ëoóî¼ÿ)?ØÔÞ9’)I™ GyÖßiÔ­IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_strong.png000066400000000000000000000003641500112024600231740ustar00rootroot00000000000000‰PNG  IHDR(-SEPLTEÿµµµssscccZZZ„„„{{{JJJçç眜œBBBRRR!!!¥¥¥kkk)))÷÷÷”””­­­999ŒŒŒÎÎÎ^åÔtRNS@æØf]IDATÓϹ€ DѰˆ,âÿª•¡7å-Þœ¿îÙ6˜)s¨ÙÀ,r€6Ð"pñWXŽ1ê*wÔj‹ŒÚ§ €«k$sr­é±ä|ˆ6ýû /Ì´¿O?IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_table.png000066400000000000000000000002341500112024600227430ustar00rootroot00000000000000‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<>IDATxÚb` 0©Kßþ'UóìhaF&jÍ›7ÿ'‡O± ˜¨ˆèN$øúú2ކÁh „¹ À‡53!þ„IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_tl.png000066400000000000000000000007371500112024600223030ustar00rootroot00000000000000‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<IDATxÚ¤RÁjÂ@, ôÜBKÁÈݳoÒþÐ(^<› ÓM€vžþì1ç,åÕjµ)Ëò…XÃpÂz¥~ˆÁâ RÊÄBÉ.Ä9$‚çø`ò¥ã%›`IEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/bt_ul.png000066400000000000000000000003711500112024600222760ustar00rootroot00000000000000‰PNG  IHDR(-SWPLTEÿ­½ïs¥çŒµï­­­)))!!!­Æï„­ç”µï¥Æï½½½ZZZRRRJJJBBB999111µÎï½Ö÷ÆÆÆssskkkccceå>qtRNS@æØfPIDATW…ÊK€ ÑRE°‚ŸŠÀýÏi\Ö0Ë—è—(I &xr.¥Ö›G?¾YÂJ¶÷ã¼´ùÀy'~ •FmÌ4[»4_/æSïebéÃIEND®B`‚redmine-6.0.5/app/assets/images/jstoolbar/checklist.svg000066400000000000000000000004121500112024600231510ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/code.svg000066400000000000000000000006041500112024600221150ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/h1.svg000066400000000000000000000007361500112024600215210ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/h2.svg000066400000000000000000000010241500112024600215110ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/h3.svg000066400000000000000000000010101500112024600215050ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/help.svg000066400000000000000000000007051500112024600221350ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/image.svg000066400000000000000000000010271500112024600222650ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/indent-decrease.svg000066400000000000000000000006431500112024600242400ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/indent-increase.svg000066400000000000000000000006451500112024600242600ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/italic.svg000066400000000000000000000005751500112024600224570ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/letter-c.svg000066400000000000000000000006201500112024600227200ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/list-check.svg000066400000000000000000000011041500112024600232250ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/list-numbers.svg000066400000000000000000000007241500112024600236320ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/list.svg000066400000000000000000000007021500112024600221550ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/strikethrough.svg000066400000000000000000000006751500112024600241150ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/table.svg000066400000000000000000000007431500112024600222760ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/underline.svg000066400000000000000000000005661500112024600231770ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/jstoolbar/wiki_link.svg000066400000000000000000000013241500112024600231630ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/lightning.png000066400000000000000000000011101500112024600211450ustar00rootroot00000000000000‰PNG  IHDRóÿaIDAT8Ë¥SMK”a=3μ#áXÖ€PÈ4£RÑ"¡ ‹Rn*¢ÉU Mþ—­úAP«Ä u­úV[H9ïH:3ó¾¾Ïsïi1éŒ6‚Ñî]<ç~œ{B$ñ?/Ò˜§.<¢r„$¨ (A©ÅT­Ç¢ß“ƒ“]P™Ýß•€((R‡T—ßÃ_uË›Ÿ·,»I1ë2Vui:P–¦Ê: Ù,B/n1°3È3ˆ3üy÷˜éÀ‹;A×®¨3Kêr¯—egf`z“ÊðTd=ëÏ¿Ï^ |~ùæ_ÆÁÔøÉ2mðé\IEND®B`‚redmine-6.0.5/app/assets/images/link_break.png000066400000000000000000000012211500112024600212660ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<#IDAT8Ëcøÿÿ?%˜ªøtÝc™òp¾WÇ]u϶»ü•kž‰»5Ü2«^ýü·OÛÝy]àÕv7­då³'ÍwŒ¼ÛîLp©½¥Y¹êÙÏ€®»k‰ö‚[ã­¨œEOï¹ÔÜä 캷&t⃃x½`ggÇ••UÚÚÚúnÞ¼yÿkjj&¥ç_ÉåääHùwAâ y:z¸FFFl>>>]'NüÿâÅ‹ÿwïÞýðàÁÿ÷@ ª««ݼyóHüÈ‘#ÿAê@êAúÀú¸zõ껈ˆˆmÞÞÞRSSÿOš4)¤ ??ÿ?ˆɯX±â!H=HÌ]MMMß'OžœTøÉÞÞžcïÞ½çÎã)8tèÇÚµk9€âj@ù' u õ }`tuu3ÓÓÓßO›6­$((h§££ã/77·ÿÿA €´>ˆɃÔÔƒô Ð__ßë½½½ïW­Zõvݺuÿ§OŸþ¿°°l@EE˜ɃÔÔƒô PSSc:ÏÀËËë~JJÊ—ìììï@ü3<<<¤ !9÷:ÿ $’©©éÙ<«otÈ»²F/ü g@ó­{Ú!§£ˆÎ NW×&Nº÷S7쌦Qäù š!§n>Q<‘FЫô‹óâ'Þû­zÆ Äm»õ¨‘_=à„ºQäÙùª~Ç™©žý»{Ö‚9ÆIEND®B`‚redmine-6.0.5/app/assets/images/loading.gif000066400000000000000000000030211500112024600205630ustar00rootroot00000000000000GIF89aÄÿÿÿîîîÝÝÝ»»»ªªª™™™ˆˆˆwwwfffUUUDDD333"""ÿÿÿ!ÿ NETSCAPE2.0!ù,w $B‰$å¨B#Ï#«( R!!ù,c $ŽP¨xB‚ +*œ-[Ädà¶á¢+“i@ )`L¢ ?'I`¨JG‚ƒ¶øb P¾©âñhŽ ƒÊñX¸B)0¢Â׸X›Q# } No "tI+ZI!!ù,\ $ŽP`©Š¦8¬êù®©*ÔÅ „1¶•‚h0‚r°x8°BÁ‡µQaùˆÅVÄ  ¥!ÑMD„l!¡4%ØB‡öBe PDY00!!ù,] $Ž$”è¥À¢ÂI>QÊÁðôóŽ]éð ´d"†28 G£qH9 ¯A2–¢ŸÈ€ðBª"á, D‡‚H('4³Á½C \0`UL"r(!!ù ,d $ŽdI`®Ãìkò°øBÂó˜B ·mè• ŽAÉ72, ƒ©(PX鲪‚ø “’8@R%‚a K‡*¡€þD¨ÁŒè2E {$ƒ„ft5†C%!;redmine-6.0.5/app/assets/images/locked.png000066400000000000000000000017651500112024600204430ustar00rootroot00000000000000‰PNG  IHDR(-SPLTE’}f›…kß·kÞ¸nåÁièÄnéÊuéËy´´´ìÒ‚ñ׉óÛ“õߣ÷Þ£ðݸñÞ¹òÞºõã™õáõàŸ÷æ±òà¼òá¾ÖÖÖôäÂôåÂöåÂôæÄõçÅöéÆöêÈ÷ëË÷îÍ÷îÏúîÌøîÐûò×üôÒüôÔüòÜüòÞýöáÿÿÿÏåÄ+tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ɧÐyIDATÓuÎÉ‚0Ð8²H"a1**²GÿÿÃT¡Uô¡§ú†|þBü±œs»e¯âa3në 0ÚÔm7¾+KXá%Ž*WJ\*&å!ŽÙáII²,*¡1©1a‚p§=íÂõÖ÷CÓh ;ýd'e¢6•µóIEND®B`‚redmine-6.0.5/app/assets/images/magnifier.png000066400000000000000000000011471500112024600211350ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ùIDAT8Ë¥’¿k“aÇ¿ï$F¬©š¤ƒ?èPõ*B EpÈÔ­ ‚8Twݺަƒ‹‹ÒM;TE!"ˆšAÐÆVÐD 1ÑØ &oÞçyîžs°V$y•âg¹›>÷½ãÁÿàÿjרµÖ–ˆ¥ÈÌ9b CÜ âcxfz‰ ̶´3a ÙBÃhw­#Ð2IdS±‚ÒT”À".îN:ø®0 ºZ°ÖcìÝ“„ÒTŒâœç°°ÅO‰t•E<æAkÊEQ‚•È ¬X~W±   !2ÖÔ…ï:“±Yc¾ƒ 4 ­?G -Ô[†.âžÞH’ð '=¼~ׯH÷åðÃËű¥i¦Öì”—>|C̲C>²)qWð¼ÚDçk“¹Ö6¥‚'w.ëû¸z÷½kˆJÆpQçÈ0 ñ§toIO¤^Ì>ŠÆÊ ¼­Üo?uíÍÊ‚(gOĵçÓûMí?2ŽÕåg¨VîµÏ\¯g6Wø'gh¥‚ézõéíåÊ"²ùQh­Ò}+ü‹çFãDjÞ‹%¦‚Îú•ó7×.mIs§33\¸µÞØr‚(~J¸7¡ª2Ë¡IEND®B`‚redmine-6.0.5/app/assets/images/message.png000066400000000000000000000005771500112024600206260ustar00rootroot00000000000000‰PNG  IHDRóÿaFIDAT8˽“[KA†÷_ý›î¢Ë(«»èDQa‡‹ b+Š6¼èKi¢kYºîAs5Ë(ræmfVC±ÎÏŰ¼Ï|;ß7é'H¿&[ÓÐÜ´ ʾ ,žÀ*<4 FVT„”^ªDðÑZ?N!0u€&Aû B)JN™Â¼£0Š7.ÅÕ-…ž#Hæ*ÞßÒÉW?X «VϦõ¾ 7dêæîœ«?¡ä3W¼ZL^\Ë,7:8Î9©Yk„¦Ýš¡šÓõÖå)®Æ$’f qø"!ìV8çqIžIEND®B`‚redmine-6.0.5/app/assets/images/news.png000066400000000000000000000011351500112024600201450ustar00rootroot00000000000000‰PNG  IHDRóÿa$IDAT8Ë“ËkQų°t¤»î²…î»îªKÿƒ.»õ1¾P­Qkßo£ƒH‹‹Rˆ¢QiñMÕ8hm„æô»ÒX›ÅÀÇïÜsÎýæÀÑ¡+NK‰D>‹qápXò÷ûÇÀ…h4º …BB à|>ŸäQ©TJǼÇX­V øÆãñp.—ëéA;8‰¬‡Ã!h ŠApvvöÛáp$m6Û“½ÉdRJów0ÏÏÏAq°X,D' ‹…3™L’½0•µ  ûÌ6È.;èÓ Ä¾~ƒÙl¾5%½^ÿlSYRx*K„ɼ^/H³Ù æ‹&Þ~ø‚wžK|ïA° Õj_ï…ɨ,1ût:E©TÂÙï>5‘à?C£Ñl9Ž{# Ðn|0ÜN&Ün·˜Á$Žb±ˆ^¯‡F«‹qžÁ7¿Ú•HpÞï÷ßöû}t:äóyf2™ ºÝ.²¹ ¨ÕêR©<½wŒÔ²P«Õp}}v»V«%:`Í_]]¡Z­"›ÍB¥Rý$øäÁ QY£r¹,~4ŸÏÑl6E¶k¥R]0X¡Pœìeš¬çN§s[(Ä£c­/—KÔëuð<ÊûK.—ŸîºÝÂn·[­Ö)Û!ËËå¼!øå¿FþÞ MÖ±Á`±ü¬@Ê»‘Éd/ýpètºcjzD°ð?˜]øÐñGÍ`BáIEND®B`‚redmine-6.0.5/app/assets/images/package.png000066400000000000000000000014401500112024600205630ustar00rootroot00000000000000‰PNG  IHDRóÿaçIDAT8Ë}“Kh\u…¿{gîÌ4ÃL¦’”)‰BŸ1>Òn\ÔâF²±)µ¡PAD¨  Q¤TWf!”"ØŠ¸®Š¦` ¡HC0ijC“1ͳ“ÌL›fwîëÿû¹(v!ƒg}ø6ß9–ªÒ)wyc‘/T4«"žœ˜ëÔ³þ X˜8Ñ«¢¨Èû»÷Ì›v‡Ë×›*ú¹ôÜØõû‹WGU}[E>ÉîÙß7ø&¶šåœt‚Ji’Gë³+*rQE¾>û{û `áêè¢Ò=ÃÇûŸÂí9o/rorœþgaw=MЪ²Uš¥QŸVcƾ;}ź;qâDÎ>µÌr Ïã7jìTç1a“¨U&mì8þ6‰îl7K½¼ÀVio{åǤ9sðÕËVÔ¨Ñ,O"a´WÅ«—©¯mptìkœÌ.h-£­V}ÝÅÈàÖ¯K§“*ÒR¬\ÊM“- Юޡ«'O¾'CüU0)ð7 ½†·9Msù&î3§P#­¤Š€V 'w'Å¯Ì Í N,ïo°•póú#âLRi4ŠQ’j„Ç hÉ]¸½GˆS\ÿ²ù;QƒØíƤ³ˆB¬H£Æ`«1…ª‰@<Ѐd÷^²{â9¦]â Æø!Æó‰¼‰"Ô¶ŠdlÇDÔ @|0mp‹Ä Ä ‰›QÓÇÉ a+¨ˆk«‘K7¾¢½½ é"$ºÀ„  h$?$öB©r‡N#&Cif ™N¼7ÚÿS°³²V[¼6¶…lßaìL/HbFå6ºt÷¿ŽåX¿=Çֽɕد}ŽÈGO¦|ë»—zUäC5r®øâh¾8üD>õµ)4VÊwþâÁêͦŠ|«"—޶´ÑñL\>2¤FΫÈ[û^yÇjW–¹?ÿ'q{ýgùBiîßøo¦.¨È§ˆ¤TäËcç¯têýܲÂ^&ýÈIEND®B`‚redmine-6.0.5/app/assets/images/plugin.png000066400000000000000000000010321500112024600204630ustar00rootroot00000000000000‰PNG  IHDRóÿaáIDAT8Ë¥’=H•qƯf~\?‘Ä,ˆ›yoX£{KCµ´7ÑPcM´5º4EkS$¤8V*w²¸‚ŠJÝB%Ëî{žs^1㪋g9ðçœçžß9IDp8´Ûラ»%w%I¯ =¹´—@]móvœbS?ù–|bÒÐ~ÔÜ?ÿøGÕªi¤lT70³™ý’ˆàáô½p’£,Ç@Û™Äܘ^žY3“$Õ™O¯eŸÍc¨ÜvIxDü¿¸E¬9¤Ö"wx8Ì#÷ÃO{þ=¬+IEND®B`‚redmine-6.0.5/app/assets/images/projects.png000066400000000000000000000014071500112024600210240ustar00rootroot00000000000000‰PNG  IHDRóÿaÎIDAT8Ë…’kHÓa‡usÞöwÓ•ËU‹„‰(IJHóº MíB [¥†Všw#/„ʬ•¢éÌR¼P¤1³•š—™8¡¾Ø4G¢õÅÀOát6§›¸_ÿ)˜+ЇÃ{ÎsxßóZ°Ú‰d5‹—ÔÇ{3p²îú;!ÚÓvûùŽÍqÎÊ”ñ+ЉF L5£}ô12>ª´q7bWAâÇùÊÓ¿úg+ \¨Ü`P#EÛ71âÞí+ÞU êr ‘M'¡±`‹MI.ŠTA_þôP×Ú…º/§¯½ñ ¶AmsW XJE·6m ‘hÖ@¦ B‰ÚwÔB°ÖÄq]Q¤-7B?"ƒ~ø–únIǼt½Ëç±íY$õr ,z¹PnP•Â4QL–mDsþ©5øÇýqÏE¹6ݺH4þ D²‚ÓUŵÛèªÙú¯1–‰-FR€á1ú¨{LN 4¨^ð4Kç'©f\ô·X£öÛÉØ|ˆ†Â> ã Æ6¯u÷”‘Âèݺ¸×q×´ nÆTmqë¤õß+Ô»}Fÿ¢*÷×/Õ›²;€Ü®Mr:Ð#ˆØQá–`^Ì<±úŒ£5É=`zës$sMDjK§ šl¨Î5áuÀ© ¬Ö—´™‹5Îe³Ü—ÊÒåJ§Î¥RFùì—¸ù½(¢6Zré9àœ:#Ûõ+Bå‘£%Ë멯íWAU]´deeQø|>ËåÚ³Ùl:‹År2Cˆ”y¥óké¯ ¸-7 ôÉoóÆ×ò^ÅûÍGT:¾—F£yS©Ô3 %†$ƒ$—ä.IÅÙã¡­OæK;¿Â&ÚáˆD¾½½ýAó é‰ÄÚÛÛ›æêêJg0.ŽŽŽlY´ŸŒnæœ ˆ=L&ÓÙ\ÃãñlE"E­V[ýCa¡ÐÉÕÄIEND®B`‚redmine-6.0.5/app/assets/images/reload.png000066400000000000000000000010451500112024600204370ustar00rootroot00000000000000‰PNG  IHDRóÿaìIDAT8˵“éNZQ…yÞÀ8D«ÖF N§J‰ˆŠè5X¹BÑ€/DiEmAD0@Ô´‰Œ©8¢Ò´%Úö¾ YÞ@41Šœ_g¯o½ÎÞ,¬ÿ9¬'(Ù¹-¡;¾5CºÙâc-^’÷ºöÚØŠÖáX ÷™>Ú…Õ¿NØ~š1¸Õ…º¥W¡ê… v\€œ›N)øi7Ïmðü™Çò¹ößÓp†-úÚ ¾­$t+@þ½•ÔUðþ‹¹ºÂVŒ”Ðl÷Ãúãì¿f0˼¤Ãß‚’É|ò@¶%¦á÷Œ«#ZÜäDD>U㮤ªæË#æ#LÇzèÃ(2æÒ7ÒÏ >‰ Y¯A£WÑ _yydzr©7í˜<‹B8º¸÷…®—WEeS…”ÌO`<¨ÅØ!…lMÆÝ&iðçJxŠMœˆnW Í®Ê/Ýx>”JÇœè\'ðÚ'A©9-Kõ0ŽB µ§Fµ…‡g}Éä­£²5‚éÕ€‰ Æ# †ƒ¨wú± !Òz“Bqç€7Ë…Ô+ÆÄ‘6æºsíÛ”£êCeTœ¬H`ß9ÊÜ·yhv×¢Þ)DÎH&²TiHH9KíI$¼ mÖµ¤µLÒ\ôi»9ÅÔIEND®B`‚redmine-6.0.5/app/assets/images/reorder.png000066400000000000000000000007301500112024600206330ustar00rootroot00000000000000‰PNG  IHDRóÿa pHYs  šœ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF^IDATxÚÄ“ËJ[Q†¿³o1‰‚E¼¡Ådk@iN‚à8í´oЗ*„ Ž,*ˆÑ§¹MLbö>çl§E0=àÀ¸Xü¬õ­Þ{Þ"Á¥^ ßæQZâ÷þHåòCÙÕÁáAÌ€æç×½þÿèO±TXTRR­VNrª \K…¹ÏË+ˆ@‘Ïç–j7µ+ ؾ LF혌š6F£…F ÅøØ93“Éši ®Ùj½† -5V“ͬiV`dâZjd é¸Àa*óŸf „@Hbsߺà¶zÛ¤ºÂ—œÎa“ˆ$‰xê:Ú©ƒ´k»½ýÉÑI\ìpIÄÇ©i€.ð뿽®ÝzêØÊm³‰K"\â°Öa{QÍö¢Í4-°†ái»ÝYŠâ˜Æuýìµ õû…rxyuð÷<<þýý¤üZSðîßø<µè}4Š$ðIEND®B`‚redmine-6.0.5/app/assets/images/report.png000066400000000000000000000017661500112024600205160ustar00rootroot00000000000000‰PNG  IHDR(-SPLTEÿ”µÞsœÖc”ÎZŒÎZŒÆR„Æ{¥Î„¥µïçÖçï÷Þç÷Öç÷”¥¥Þ­9ÆÆ­ÿÿÿ½Öï­Æï{¥Þç½ZçµBέk½ÎÞ½ÎïµÎï„­ÞïïïÞ­1çµRÖ¥9÷Þ­ï÷÷÷Þ¥ïÖŒµµ„Þµ9÷Î{ïÆk½ÆÎïÎc÷ÖsïÖc÷Ö„Öœ!½µœÿÿ÷ÿ÷ÖçÎJ÷çŒÎµ{Ƶ„µÆÖ÷çœïÎJ÷Þ„ÿÿççÎB÷ÖZ÷ÞŒ÷Ö{ç½R½½œ¥Æï÷÷ÿÎÆ„÷Þs÷çµk”ֵƽïÖZÞÎJÞÆBÖ½B”Æ{„Æ{{Æ{{½skœÖœ½ï”µçŒµç–V#=tRNS@æØf¤IDATÁA.Ä`Ð÷µ¿V båbi#.àÔ¬,\Bb% F§ý[ïÇÝ-O£5Ü€‡¥¡ëúþp†£Í‰{…9Ûî{¹èž¹þ7ù’$Èc-Wõg3ç½n5‹}”Lý¼k¯ÉëeL–V^†Ód'ʘ¬M’qzÓ„p™$ù2ôŸó8µtµÖZKI=Ø×¥°O’•fD€”8äü{…IEND®B`‚redmine-6.0.5/app/assets/images/save.png000066400000000000000000000006701500112024600201320ustar00rootroot00000000000000‰PNG  IHDR(-SÀPLTE÷ÆÖç„­Ö„¥Î{¥ÎsœÎk”ÆcŒ½R„µR{­Bs­Bs¥9k¥s”ΔµÞµÆÞçççÎÎεµ½¥¥¥J„Æœ½ÞŒµÞ÷÷÷RŒÎ{œÎ¥ÆçÿÿÿZŒÎJs­­Æçc”ÎŒ­ÖµÎç{¥Ös¥ÖsœÖkœÖZ„µœµÖ½ÖïZŒ½cŒµ¥½ÞÆÖï÷÷ÿçïÿÎÞ÷µÖ÷­Î÷œÆ÷k”µï÷ÿÖç÷ÆÞ÷¥Î÷k”½½ÎçÎÞï{œ½÷ÿÿÞïÿÆÎçµÎÞåfÏtRNS@æØf¦IDATW…ÊÙBP€aC’ÈFÆ(%šУަ÷«Î^VW]ô_~ë縟^”Ò7ä}<éÂ0|4O":b<ƒ¦ í½Úƒ‚”UípdжºÖÉ !gp*Êê|©Sa»Ó¡oŸ–+%$ë4‹7ââ{Ä‘‚Ìt=Ï0!òç’ã‚g¦¾­"Lt Ó´¦`Û/ˆi(”±ªñÿú5GÝhÉoIEND®B`‚redmine-6.0.5/app/assets/images/search.svg000066400000000000000000000005111500112024600204460ustar00rootroot00000000000000redmine-6.0.5/app/assets/images/server_key.png000066400000000000000000000013521500112024600213500ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<|IDAT8Ë¥“KLQ†ÿyØji ³)j±  5wª!qaºPƒ;bbL4n\¸©.ta a‰b£ ‘…aQëJÓL‰µEMÚšÈ#ATÅÒÎÛ{§¶*–•“Üœ™;çÿÎÎat]Çÿ\üÎX,TeP–ežDh,I’hœðûýç*‰„8¿Ù\ ‘ˆ i0ü—N§ápè,yúÇOR± û¬V+æ–A«kšM×H‡J`¢(Vn$‡Ün·±‘Ï ñûÄ[ÐÊ«¯ÿ”ÑFEíÑd2!›Í+«*ZÛÚêú¯êtØ»: d•ˆh=j=Ÿ%Q5ªÓw®Ó8ÄF±ôÔ7+®.¾ôaü/ÅYéF2´y;Œê%Ìâ4Žw °·^9–™¾»sd¹ãFúyÙA `@He*¢÷«5óø’zŒŽƒûaoîCn1„=¶æZ‡[œ ]mbK€²Xý=8 z˜º¥»wêö'X„zðÕ€«§½º©Õ=j8 Ã)}‘Ô2mA§²w­î&„Í0äõ°\ ›ƒ©&¶ñcEäÊ-ÐSà8®Ø·J§®Á$.á€öæZV¾ƒÕ6Ö]–œH>¦²K¢‘H¤ÛãñÀf³ÁRµ >óuù7hèõA—^€Q·07½snåÇ0HÎ^¾ðd~Š)Y §qËåruz›P¿6ŽúÎ2£ày;’¯dLF«Ð›}Wc±rèy´´EuÌο1ôн3-IïQ_”Ì…Öñlίš ƒ-æ3»ýÎÑá®Û{kCÛk¹|:½zýüXz²RÞO&¾­ekÿdIEND®B`‚redmine-6.0.5/app/assets/images/sort_asc.png000066400000000000000000000002361500112024600210070ustar00rootroot00000000000000‰PNG  IHDR6!£¸0PLTEÿÿÿ–––æææÛDutRNS@æØfIDAT×c`@F !(d @&˜ §ïÙÞÉ}IEND®B`‚redmine-6.0.5/app/assets/images/sort_desc.png000066400000000000000000000002351500112024600211560ustar00rootroot00000000000000‰PNG  IHDR6!£¸0PLTEÿÿÿææænnn–––ÚÃ+tRNS@æØfIDAT×c`c €ÌÆÆ >PÙ€F‡Ëêµ#¥IEND®B`‚redmine-6.0.5/app/assets/images/stats.png000066400000000000000000000007501500112024600203310ustar00rootroot00000000000000‰PNG  IHDRóÿa¯IDAT8Ë¥“»jVQF׉'j$Ê`“BðWb­v¦±ðìÒ –¢vv>‚¶‚`í¤´SAÄwRåòŸ½çnq‚DH$)fÍúf¨*.SãYÍWŸö+2Q‡ˆD=O><Û.M.nà™dGñùëáÅ š%ÉþcQl¬]á¸åÅËæ¨'ÝBÆŽšŸ ¨×/æ+fRæ”9Óí—ˆÝ óäújpØã?v “!‚!‚£‰xÑ$°€µÕâð¼eÎàß¿ܽÇqSº%“ÎúÕov@tHs0ç@ ±¤IbQ¬_Kr™<ßÛ-SGÕ°nˆcvaꀍr¼LºMùÙ’Ç[Oñ"Kãã—wŒÙN6‹€*¸ãÍfƒ¿€¤šcnüüý 5aûæÚ²3æÔçÁÖf3r™tý-0WšNˆ bB_vÆšœŽàN¶¤2P+J@\hÒÔ•6 cN'›ï?€p§š£^ÜÚXÅÄŠE]Ylnãa˜+Ò„áÍÎÛJsJœ² ,x¿þ„ @“ §*ŠÍÅnIxžd$Ãeßù´Š¤=ž¸OIEND®B`‚redmine-6.0.5/app/assets/images/table_multiple.png000066400000000000000000000010571500112024600221760ustar00rootroot00000000000000‰PNG  IHDRóÿaöIDAT8Ë¥’AK”Q†ŸoæŽ3:¢¨˜´KÁ ¤…ˆAû ¢QH Ò_ˆV¢ —þˆ"\ E "A¢‚Am)hæ03ßç½çœN_š#¸ÜÍå9Ïyï‰ÌŒÿ)ðäÕþ}3¦Ä´_U©'Ä A´y †¨~^š¾w  f·§'ººÿÖmauëbKQíxúi}@“¡ž .'ª4Ž™´e  9æW¶wDõÃÒÌðõc€£:¬Ô{m¼èZu7ƒZ, YV·J' DøQ .ñÆË÷/dDòQ‹L;ÛÛ˜_Ù6Q]w¡ 5ò¹çG²7Æ;ù‡LÆ€EÍUoÔàÙ—G ÄUê¾—@Ð@ÀÃ+Kx/ùtkÞù\”fr·4wf÷ZðAH L!¨{M3)¿Þ;ps¼‡Ã_€ïÕ:¢Jd3Qš À«ýTÖv™ž8øvÿ6±‹åÍ‘Þ.j I3qY¨¼Ýƒ*k»¸LfäŒup蛀åÙÑ9€7v m":h€ËFLMôµ4ØÚ9 åÄÒˆØúbyóÒ`ß9LÁeàÅ»¯À‘€‹@ÒùÆ€åÙÑ[MU&‡»bÔ>ý™ãÕî"m¹¶"öf±¼yùP´èƒP­% §ÞíWãç?èCGÆ|…IEND®B`‚redmine-6.0.5/app/assets/images/tag_blue.png000066400000000000000000000011121500112024600207460ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÜIDAT8Ë…“ÙŠA†ë%æ6Á·š<] d’L.3Cò®(î((*nÓ=n=.ˆ˜Ž¢ÆÜ5©fl{þÔ)±qÉŹ©:ÿ÷ÿ§ú4ÓuÝnív­V Ífš¦AUU4+ìR±N§ÇqŽj:JHµZ½aäLÃ0¤ód2q!t&R T*…0ŠLÍäFõz]5M¶mËsV*äóù“F®»F!~‘ ˲°0mä~m“ŒÇc‹Eär¹##ç]äÍfÿþëàÃÃ3ÞÞYc{7(Òéô„‰ùjµ’Mëõsá|­=ãKøªöápH)Ç]«ÕjoÄŒ|¹\ʦÎÊ–Îwð£|{<„ JH$"!’R.—1#_,²éñ÷ªƒ;}¹Ö€ÌÏ-¤×ëQ „B¡+w–B¡ ˆù|>?‚|€ÏMàæÞ‚½Ù¦H&“¯^Ţd³Y>›Í\È;ù$F¸m­aZO/Åw„—•Éd”T*Åi ¢ ÈmÛeïý~¿Ç}ÄSË‘H$”X,ÆiwŸ˜Äâü@|@F½â¥9-X¿ß?)¾  ‡ÃÞ`0ÈIìóù<'Wù¿«põ ñ«s÷ÿZÌ:ì´ô{)IEND®B`‚redmine-6.0.5/app/assets/images/tag_blue_add.png000066400000000000000000000012371500112024600215660ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<1IDAT8Ë}’Ï‹RQÇß?1‹6E»6-Z%H­#‚-ZfÑÔ¢³ªETÐhcÁ”ÔÐ:tT4}=AQñW:þxOQDÌ45[%=ɧó{žéd:>8\î½ç|¾ßsßá$I‚(ŠÈçóÈårÈf³Èd2H§ÓH¥Rk¸UÁ ŒÇã…h6›*$¯„p¤LFCU®×ë31ˆD"GB8²LɤFÉd2Ýï÷¡(ŠzNÀX,†`0¸‘ê4‘ÿa–ƒÁ¾‚À·‰“Z­†p8Œ@ °áHyjy4ŠüãùÞ>ž~„Æä®Z­’ øýþ9Çz”{½žš4ÑfʆÌ>ÞˆÀ; ØÚ;„T*rÇ3ƒp‰DâëQîv»jR¡§¨ÊføPÞç!år™\Àétª•Fµ¬G¹Óé¨IÅŸ ôé1ÌÒ!Äø¯H©T"°Ûík³^B¡–õ(·ÛíÈ<údÇý·:Üzy:ý<1o`ww÷ÄÜ‹²þ´‚ È­VkyÆ ñØznqÙïŸL“H‰A®.ÂYxgñ5Í ŒÂ:LÂm –N—×ëÕºÝn™&‘ —žWÜÁ¿Ÿ+¿M€£gÜåriØKË4`çïÄ›¼N-ÞôëV;˜†ÃáÐØl6yôŽ+ÆSxÁßT•i¥ýÒ7ø?¬V«Æb±gÉz¿ÈößUO÷Qz Ínã©IEND®B`‚redmine-6.0.5/app/assets/images/tag_blue_delete.png000066400000000000000000000012751500112024600223020ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<OIDAT8Ë…“Í‹RQÆoèü-¢¨ˆ E{A¢i–³¬Ù´ªY D› ¦ÚDÒL´ š¤¯e…Ÿ(*z¹¿ºŽ_WQÌGSǨ…͵ôêÓ9WÆIœ± ‡ ïyßßó¼ç¼‡E™L©T Éd‰Dñx‚ ‹Í`¦-&N£ßïO¬jµª@ÂáðTC•iA¥RQ”ËåòBcÄÀ‘†Z¦ÉT¢Ñ¨Ðn·Ñëõ”8†B!x½ÞC! UÝO$ňåJ§ÓA£Ý¿3tR*•à÷ûÁóü„¡Êû–eY-ÞÝëcck€'Ÿ®2Ü+‹Ô<Ï„!=J­VKIêv»¨åõø›àµ<Û:€ êN§sa"‘È<éQj6›JRºÕS”õð>¼ÉŽCòùyKõ/Á^¿naüµSp?¾“ÉtvìDIZŽã¤Z­6‚èäëM$îΣã|ŽAÖ½Ow»uQfÔ·'î•eY­Ûí–è$RˆH ŽåsH1^,kÇÝZ—๢*:].—Këp8$:‰Bm þý~>:î²zpäŒÛív 9i‰wõ$~½» ¢ß÷ü k{UÏ¢ª:õ¥Y­VÙl–xÝ*"+çåoksØ}0ƒ/+ÇÀ/©e÷¢ê!ó¿çj45ƒáL`ùô}¢ø•Ú&ÿZL÷ÿÏy~¬=ËIEND®B`‚redmine-6.0.5/app/assets/images/task_done.png000066400000000000000000000002111500112024600211320ustar00rootroot00000000000000‰PNG  IHDRKm)ÜsRGB®Îé pHYs ð ðB¬4˜tIMEÙ *‘»Ð"IDAT×cxððÃ1L’«èƒ‡ï¥8 n¡jGIEND®B`‚redmine-6.0.5/app/assets/images/task_late.png000066400000000000000000000001351500112024600211370ustar00rootroot00000000000000‰PNG  IHDRóÑN¹PLTEö::ÿÿÿÝ;IDAT×cdü… Pš‘,öE ÌUé‡IEND®B`‚redmine-6.0.5/app/assets/images/task_parent_end.png000066400000000000000000000003401500112024600223270ustar00rootroot00000000000000‰PNG  IHDRÙ¤#NtIMEÚ "ø~º® pHYs  ÒÝ~ügAMA± üa0PLTEÿÿÿçç猌Œ)ÕýòtRNS@æØf&IDATxÚcPœ„’’"£’’ƒ"# þRí´=/IEND®B`‚redmine-6.0.5/app/assets/images/task_todo.png000066400000000000000000000001351500112024600211570ustar00rootroot00000000000000‰PNG  IHDRóÑN¹PLTE€€€ÿÿÿçÖ¬IDAT×cdü… Pš‘,öE ÌUé‡IEND®B`‚redmine-6.0.5/app/assets/images/text_list_bullets.png000066400000000000000000000004431500112024600227430ustar00rootroot00000000000000‰PNG  IHDRóÿaêIDAT8Ëcøÿÿ?%˜*äÌ\0u×ë š,@š·žÿøDƒøåååÙ@ü¿¤¤äAAÁÿìììÿ©©©ÿþGFFþþO] | ¦Ì|Tйé僞»äy¡mýóK¼ý_ºô)8ãââ²#""þþ÷òòúïììüßÆÆæ¿‰‰É]]Ýÿjjj¨Ðq« dñ㮕׆j Úæ_*ˆŸvïuÞ%ò¼ÒÜ¿íå âekkkÿWQQù/''÷_\\ü¿Ðžÿìììÿ™™™Qd3E. `Ð?žñÛ¢IEND®B`‚redmine-6.0.5/app/assets/images/textfield.png000066400000000000000000000001441500112024600211600ustar00rootroot00000000000000‰PNG  IHDRµú7ê+IDAT(ÏcüÏ€0ÒAÁÉÿã‘~Qp–ÁxÀàuä‹ÿÔ„_Ô!"b­ãÌIEND®B`‚redmine-6.0.5/app/assets/images/textfield_key.png000066400000000000000000000007071500112024600220350ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<YIDAT8ËÝ“=KBa†ÏðAPí ö--• µˆ5X'ú€¢††–&´ AŠjÈÀ¤¤¢„Æj(­{É2˼„Œ·¶5IJ?Ö4RÕ/­xñÑоÕJü{S̓¥î¾A#;¸R ž­IEND®B`‚redmine-6.0.5/app/assets/images/ticket.png000066400000000000000000000006771500112024600204660ustar00rootroot00000000000000‰PNG  IHDRóÿa†IDAT8ËÅ“¿jTAÆs£&¢b¡»ø‚baé#Z)),ò y[ßAlÄÎB+ÁJ°°‰…5†,YsgæÎ™óYÌïºÛ¥ð3‡ïÏ™ù&Hâ$ÕqÂ:õ§Ñ—W²éO¤YAµ eT3”Dµ„,BI\¼÷$ÌTãôµû ˜-€ààùƒEy²ËY yl$â/CèVQ‰KF0ÇoØô=xFÚîxBžGÎ\¾‹—~ AÍ€!O 2Á y24,q`¿ö›å9åˆ{š‘DðØDìh‘Àk"í¼Åòg¨Ȩéµõ¦ì ÕòåwPã>v¸Ëù›€ãÃW¦ž¡ÚƒzTSs £ŽŽƒ$ʼަö;P ®27®:ç ¿÷…[)“=&oÏÀé,OH¨-LÿŽ€%ÂJǹ›[ÄO/™¾{ÁÊ¥ë¬]¹#P pd™‘ó“½§wä%#K¨D,~:º%2î©EÛ*W)Ìü·ßø¹·:\«ÛãIEND®B`‚redmine-6.0.5/app/assets/images/ticket_checked.png000066400000000000000000000010271500112024600221220ustar00rootroot00000000000000‰PNG  IHDRóÿaÞIDAT8Ë¥ËkA€û—xñêAD¤'ŸŠÔƒ%"joZÐCªë ‡@E©)4‡Û  X¥ŠZ‚EÐZB-¦›¬I'f“ìf³û9ÙÂPÂèËÑÜ£²t‹ÊâMÊ©K”0 s¨¡nw@{te¬)¥<$åR¾èÈÚüiLñ†ìý­î€xzžZy^Ê#òuJ©A)ûYûrR^’¹»ÁÈÇΠ%Bˆø9Ä»³ˆÙ~r3Çšò)G.~îÅ\™AZÏ‰ÐÆ:jä(âõUjÅ’Õ\”Üó^´¯uù¸”Püt3?íÈWâÎÞüœò¡FzPïÂÈLQÍFPŸv†òŠÉ=mùrÜï°íÂæÆ;ÔIúÒÒ£›ÈLnGÏL¬úÓ¯änOYÒÝŒ÷`¤cA”ñ}«†[/¹ý„lx?Jh'Ëvná{`3ÔÖ’ÛµèŒxÉ tF¼ä ´"^rß$;T÷ºcIEND®B`‚redmine-6.0.5/app/assets/images/ticket_edit.png000066400000000000000000000012461500112024600214640ustar00rootroot00000000000000‰PNG  IHDRóÿamIDAT8Ë¥“ÍK”QÆï83Zj““›2+²(3… ‚Z BŠPP­Z´© ÿ ÂMA‹馕´ˆ ¨Ê’©Ð¢Oó£Fm¦§÷¾÷½ï=-4ÊVÝŹpàùçrŸãˆÿsÂ2rOLþ"1>øˆÑˆñÀ_…|EìÐ g> 0D¶]Dæ 0uëØb^6Á2ĺ³]D,à ü!8¡bÄw—x‚1X=‰É÷õѳ·Õ`bb]¢«bý€À bˆ?'ú[¬[ÀMö“.®"{ç¢Ìüx‚£ía3žµõ`¼ÏhC r”TÇ[@çÆ ¤Êø.2Cïˆ:šòU”­Z n“KP¶ó8`±z”ü«›HPÀŸùÅ;ˆÕ4ãMt]î0úú=¾ÒiåNï 8"øÉ¦'(|‚ÀÇŠ—ÿŠ„·ÛØ‚¿Ž™"RVNIa軟›hÚuæöÇÐïÿ.ßÝŽŸM‘}z+>™ô8Ún!¶© •¸F(â£sëI>~ŽÎZÏ>| À(œ¢¥§³’±û]Ø•{ˆokAOvR¼\5©gýDR}l>×׿ Š©ûW£Kf(klÃHœ‰Á«TÄ£¨ÌZ2O{§_bµš—gá2Ýêh’ç»øÐ}žñ‘^Š×Õc’©ñŠhQsÝ…oÆ=´°ñáó¤ÑoïRS¿ÒÒZýƒÓÊÕ–/éàÈþJ·qÚðî­5HÄëu“©“­—¾ükÀÛrðÛôXIEND®B`‚redmine-6.0.5/app/assets/images/ticket_go.png000066400000000000000000000011401500112024600211350ustar00rootroot00000000000000‰PNG  IHDRóÿa'IDAT8Ë¥“AH”AÇߺZ¦)ÅRf`Dˆ!‘aÔ!Ê{žŠ¢cDÐÙƒ‰×v¼PÞr³„®  }v«ÔA²¾@¥*âB6ÕD(¿Qjêâ=ž B°KHn B‚ª-ÜÁB0h0hˆ©ÈÜ ¸üŸ‚êŠE¿4äAµ{8­Õ‚å]Ê1!˜"$†Dd»¼Á̼C’Oà-¨àÍ&ûO)(CÏÄYó€GüA ÀÇ«ÈæÕM·©néâÀékêóò¨ÏcÄRŸiâ~ey©ƒH·ØÖÅÚ@7ëC©½r –ëÍ]x øà (‹󜩿ĖÓãsoíÙÞTE1De)ªZïO½ 7ú#¯¯«3¸ Hp8ïØLrœ;~™-—O}6Å90d_õ£bPcã˜Ú*Ä Gkàñø¶1Çáê:&æG™þh…ÖèoËÔù¤Ñk±ÁbÄr2ÓœºØØÁû¹Q§_OZáÂbŸ&Ñ¿ncKojå|ÃÕÌ›éÁqh_ìS[lÀ¿»£Ê2qðåË}*;ùŸIÉzù#lHIEND®B`‚redmine-6.0.5/app/assets/images/ticket_note.png000066400000000000000000000012011500112024600214730ustar00rootroot00000000000000‰PNG  IHDR(-S¶PLTEÿÿÿìñ÷Œ¬Íâêò÷ùû`Œº\‰¹Þçðê£MèžFçš>æ•5âŒ⌠ä!p˜Á¹Îâ[‰¸à}ßyë§Uùæ¶ñÑ•è§Kë¯ZîÂ}ÇÖçñöù¸ÍâW†·sšÃë«]øã´æŸ2é«;øé¨¦¾Ø­ÏÑÞëúüýøûýÝçñêñø\й³ÈÞì¬]ë­Uë¯Gùé¬úê­f½ìñøçðøæï÷äî÷ùûýàéòp˜Âë­^ðÃüóÓüóÑúí²^‹ºò÷úìóúéñøâìöçï÷åìôl•Àî¶qôÑžðÊxðÇrðÆnòöúïõúîôúíóúëóùâêóo—Áð¹yüöÛøçœøå•÷ã| Ç½Ñäñöúñõúðõúéðö¬ÃܬÎôÅŒý÷Ýøè¢øçÌÛë{ Ç_Œ»`Œ»Zˆ¸a»h’¾¦¿ÙäìóõÈ“ý÷áùêªùè£øå–÷ã÷áˆö߀õÝwûñÈëž@öÌ—ÿýùþûðþüðýûîýûïýûðþý÷í£Jýܲÿþúþýúÿýúî¨Sþß¶úÒ¢ùÑœøÍ—÷Ê’öÆŒõÂ…ô¿~ôºvñ¶nð²eð­]ƒä¤¨tRNS@æØfyIDATÁ±MAÁç$ð‡¤´FtA©&°œøîe!0SUUUUUUUUúÀ{¾UñÛ¦Ý ‰jt`î@¥7ÌŒ&,sŒ¬“ÅíiM°¸ÙïŒ&p<óyB¯Ñ\^ÐÏY¸–ªj૪ªÊöPUÿÿ`ò…ò–IEND®B`‚redmine-6.0.5/app/assets/images/time.png000066400000000000000000000013441500112024600201310ustar00rootroot00000000000000‰PNG  IHDRóÿa«IDAT8Ë¥ÓÛOÒÅñþ¤z¨ÖÖS/=Y.k™[nµ¶Z— ƒ$K,Ì®¢‰šf”P Þr5 /Dä%ÔLù…”—@üú+ýöFk9[ëἜ‡ÏÓ9Û€mÿ“?ŠžÆÛûMW­Ã/K:•Òð«|ÉnÌY°Ôå¼xñ0Ï–€ÍT\9Ú¥X xúù6?C$FC|ù<ʨ½‘ÎG§WŒ¥ç 6zÕe^gá ?Ls·@eËGÊMãèÍ^F¦<:jÏ SŸÊû °èKö:_ʤТ€Í5Gk€7!‰Œ¬à™ ïòÒÖçcÒeÆp=3^[|vG xóTÞ1í2óéó&«€°(2õuž$bPýÊ‹Ýíçµá"ÕWŽéS@wý…ù9ÿË4ñïÄâq´u,Š"ÑÕUZ,ÝØ¦Dî4¸4R«ÌR€õéùd8ô…ÛÏÜ,&$«ë¬— UZÛ‘_SÑå`L”ÈÕ0+ ðXy8‘:kN'CßfPé\ÌÆ$ëÄ(7îÞC~M…Í5Jð;8C4ïñÏôQw9ãÐr?Û73fFcrÓ7-2—„@T¢£÷¾¥ ?@ˆCÛø2ÊÚ>ØÊÑæ¥Ï¦€'êl]¯QÃ=E‰ÉCpÂD×!ºË? ¸ùzÇí™hd‡M) îæ¹íõEG“Îzž™‡¹ešÄ%,KHÄânauÃ'ª›ß2b-¢"'-Y¦<¹ó·!Õ¨N(ž—a¢¿’žA'ź~.•¿ã¢ÆNa‹ý-ÃÖªåû)•gn:eí•ã5ŠôX{U#V5¾ ¾O²(iº{ŠÜ´•ÒKÇŠ¶<“¶àÄ®²¼Œ†¹üU²´D•,-ñ ÷€_#;d,ËÏÞý×7þk~¼ 怡:IEND®B`‚redmine-6.0.5/app/assets/images/time_add.png000066400000000000000000000014061500112024600207400ustar00rootroot00000000000000‰PNG  IHDRóÿaÍIDAT8Ë¥’ÙOSAÆù7|ñÙyјŒ/&nI5¨‰X ŠaKؤPP«•L)²•¥H[©–ÊÒ” ¤PÚÒÒ…²µÔÛ–²\„Ï{sÕ`Œ‰'ù2gΙùÍ™3 ât,0$)º¨ïxª™ìálM÷qÉÉÞR'M]W5¤vw¿Í9ÿW€VVPmVsö—­cØ\sÀï÷ ¼XY4ì“ ¯>~[Zž”÷GÀ°$¿ÒnÂçqÃêöáý  Õ³¨’Í UiÇ”m.«ŠºÇåÇeþPµò/z2Hï† Zã*º†\°/ûáõáñoúäG«ÚŽ#NÌ•¿¼ª+HˆdÍYŠ*ñyq 2´ù¶/kØ¥|ZÁ# ¦×É~q:jrï´2€Á–äµU·bÕ樓CG†B4аA{{èT Bk#PÜn‚eBŠ:.ËÅ4ÍI»>ï ŠÚLØØ!áÛ;Ä>•È~΃¸Kެg<¨õã°$ÒãXr£‘{s‡ôÕÆïz7à‰ŒX ’äËD¯JJÛµF3<€ÁK"¹âÜŽ4d³~:Ëbœ‹2F¬R—^P ¹åÇú7@ªïBªGe×q¿ðR²¢Д#–r 7ÙÀ—Yá¡æ#À!%Ê׋ަWÕ(ïO@tùiœKš4à÷-Ƚ—W˹” ïbJ“çœÎÙ&D¥œD±ú ÕìðæBûx $/öle&«ýMÚ5·0ãê-vJ¤ŸUr ¥ê¸ðÉôHÏ™ü‹¨Å|Jºì#ŸŽr4ýF0ȯ›IEND®B`‚redmine-6.0.5/app/assets/images/toggle_check.png000066400000000000000000000004061500112024600216070ustar00rootroot00000000000000‰PNG  IHDR žr‡`PLTEÿÞçÞÎÞÎZ”RB„B½Ö½çïçZœRZ¥RB„9½Öµsµkc­Z{Æskµc„Î{c¥ZJŒBœÖ”s½c{½kŒ½„œÆ”„Æs÷ÿ÷¥Öœ”ÎŒ¥Îœ¥Î¥sµc­Î¥­Ö­a#ôAtRNS@æØfTIDAT×c`Àä¹àLiY9(S†_€“ABR (Ê'Î#ÈÊ $,"*Æ'.ÀÂÊÀÀÍÇÏÍÇ+ ÒÊÆÍÃËËqØ988a22CEÁ& àã.ÏÄM¶IEND®B`‚redmine-6.0.5/app/assets/images/transparent.png000066400000000000000000000002071500112024600215310ustar00rootroot00000000000000‰PNG  IHDR(-StEXtSoftwareAdobe ImageReadyqÉe<PLTEÿÿÿÝÝÝg`&IDATxÚb`„ ¶&`Et½IEND®B`‚redmine-6.0.5/app/assets/images/true.png000066400000000000000000000003701500112024600201500ustar00rootroot00000000000000‰PNG  IHDR(-SKPLTEÿ1Œ11„)B”1R­JJ¥BZ½R„Ök{ÖkR¥Jc½Z„ÖskÆcŒÖ{Ö÷ÖŒÖsµÞµ”ΔsÆcœÎŒÆï½k½Rc­J¥Î”­Ö¥Éh“tRNS@æØf[IDATW•ÈÑ@ „á£8G*ïÿ¤)füWû-𫰿̱z¶’¶ÂѺ¤®5­·d³?­E([ùðУfc¨¹ ‹”:mú¡0ÐRWP/vúT8!€IEND®B`‚redmine-6.0.5/app/assets/images/unlock.png000066400000000000000000000007001500112024600204610ustar00rootroot00000000000000‰PNG  IHDRóÿa‡IDAT8Ë¥“MHA† íT—(HoI‡NÝë•GAP^"("5ƒ 3OA‡Ä KÑ¡CDÐ)¬V1¤ÍBü¡0¤´–ÒRCËÖÈ|ÛÝ ÄÖÖhàa˜ù¾÷afDDÿ¡b!Àb±|î«”‡“ð Ê¥Â? „ö~^Bnµ‚°}¼¶˜Kž#Ÿ¼À{ú …ô >²3‡9訓ƒíûEàóo׫ȅ·‹î}Í ì>ý@ Äg|MCçÅç[©åì„YšÂD…5özL&I03p– V…f”Þø"§ —ÚâVЖâýÍö¾–͘z^›élÆÌ}P£/oÛÂëÆÄõn7âv Y‡ïaÚ ÁÂKAÍô­Fjxþ·GHWÒƒ.Ÿ­ÉÜ‹EÃ]|ÓÁ°0¢»'OŽÆß®Ý¼ª MIoŠ­ÊQ†±1äè‚´4×N1,õuS-.ÜŽ³åí©´|ë AªB±NkîÄÊöcàwzmhx'Dµ1 ÒÄOx¸3’dz2„‰w!¢DØœÜX»Á%H®+,Nj:޳ˆa)xsP€²gñ(Ò_@~w²ÛCQ1”I? r.â+³ª]Sç×t—×{Ï¡´ŸÇPÜw‘çuE"«‹tUøõG‘© †¥7ƒ™¾?\‚WW}VˆÁ-C* ÆU£‘û W´\ÒFI$Où8_y6}†³ýœ.ÁhSJŽ1Çç'¿.ÑÒݤðÒª„Kü.Þ S~À"ɬx…j'­—úD•'¼, tž)ÝC.,¡%þ) p†ˆ¸_k–û·<ÝþÆáÒª¼Žš2ÿöIEND®B`‚redmine-6.0.5/app/assets/images/version_marker.png000066400000000000000000000002561500112024600222220ustar00rootroot00000000000000‰PNG  IHDRľ‹sRGB®ÎébKGDùC» pHYs ð ðB¬4˜tIMEÙ ¨¬î½.IDATÓc`@ÿ¡Ñ$1äqHÂ1â‘d`````b ˆ²¯#y×H um[ÀIEND®B`‚redmine-6.0.5/app/assets/images/warning.png000066400000000000000000000011451500112024600206370ustar00rootroot00000000000000‰PNG  IHDRóÿa,IDAT8Ë¥SKH”þþ‡«®ëkËTC[RLÊÈ5 o= êÔc©kÑ)¤c‡.$B‹ìD…P‡Š,,‰ˆNY(FFf®»²˜Šþ™¯ƒkÌÌaf>¾o˜1Hb=f¯U˜~±Ï¢ð=USªl.ÞÿZÒõ™kPØ(9X(>ÐHÑ3kR ¹Êýáx_ÃOqg覆8ñt÷ôøã]át½i¨èÝì²X®aš°s–ǽü_ âÏj'{ë…âЉ_§›è¢ºI~}°ÃëÞ^ûOT½ªj5ÕŸÃ羇}vêM¢ æ‚¥¢]b¼7Ë(ŒVçl9Š…o­ XoCn¤™%M£·+ciâ½Ñª¶+ŽCýi@—§I¨zÐÅäW€Š^¾¹5´ @E»‚eÇ6dVÀK>@dW„Á™¼ì¢2äUžÜì/zWæ ’øÑ³'BÕO¥‡lYxoêT3# óÉYdæ(,‹°òšaåÁPG+Ž_½óRrÔ\:ím;gSç ³o*âËà0¦>N @…Ÿê‡aΣ¨¾5à;Þ50¾?©k±òkz65µÃŸ} /qoI’¤0-  R`Z‘UÞ†1ÌŒ ¶U¤³ rjé1B °CÑeqÆŠüåÀßû€@éÞ³H \µ):xuþ4E¡¢ø3‹'ǃïxǃ8>Äõ!ž@}úòÖXï;ÿ”LcÙ§¹S/IEND®B`‚redmine-6.0.5/app/assets/images/wiki_edit.png000066400000000000000000000010251500112024600211370ustar00rootroot00000000000000‰PNG  IHDRóÿaÜIDAT8Ë¥“MkQ†§þ Q ®Üþ)ˆ¢  ¥EEŠ~àÎjDÁEU)±R(RZ,¢PhX‰ãdÑI±11M¬‰4™f&“¤<ΛtÏÝÜû>÷œ™{$@ú~-’´/#Ër[¼3û=v D¸Z­Òh4{Ñh4Pâ/â†z½ŽeY;èºN¥R¡X,ú’|bŠÔD?Ÿ_†Y;‡ÛÒÉíê¥.!‡\×ÅqÓ4Ñ4R©„™Ÿa#2Œ¶ü Ì•å)âû 4%¶mcß?MR^½ƒ»>ËÆÛ{Ø+Ó4² ¨ãÿ4툾µõ9Êê-¶ììôe6?^!ù|ˆ¥§çyÖ'ím+…yÊ+7ØrbXkgqrƒ«!rã½~XäÚ ª×³2¼>ƒóu]½Izô8òüŒHuµ³$ç®yeGq2CTs§Ñ¼JÖžÃ(~i¾‰`Aò݉×!–Þ< /÷aeÙ\¼Nz¬ëGÆÿ./FzÀÈ’=E$´‡÷Þ­±ûG1¿¥üð_á ‡pcpå‡ÈáÃL_:@9§R«Õvè(èÙÍȹƒDîž@™¼Š^Ìú¿´•Ž‚¡)ø}»Eé8-SÙÝ:L?FÌï­™ùäIEND®B`‚redmine-6.0.5/app/assets/images/zoom_in.png000066400000000000000000000012501500112024600206410ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<:IDAT8Ë¥’[h’qƇ×]D]»Y¬h­ˆXtºÑUÕXZ³¹jHcË!$D «LkXk®¡[+Ûš³}æn²$—sjú³t²ðøIòô}ä¢ÕÅÿ›ßïÿ¼/o€¢ÿɯ‡Áû3<“!t.šp&³/ñlÏÛoT·9J< sþ( øµ;CZ4¼‘ Q9Ó_ÒИÇCr–” Qœzw†°Ò ¢8gS°’0û“°SIx¾ÒêàkkP«®J¼šJQÞ0ƒ- 8ù)“7QO"':ñü0:'/ J¹ì¼~¦2 Oøgà‘™8uÔõVC¤­‡Ì(‚ ³»oìÄ®ËÑ<Æ6ŸõEh˜xŒùÕÈÀ†é8[ò‘VÜnµÁÓ¸ø’qï1l—#O 2E¨©Ÿõ߸ã Xÿ1žªûd{Àkßó}Çq@Z‰Í¢2” KSy¥1DôÛçà ¥s³³°ÎËÉÞSle»bSóúÂ;¸¯rîøIÍDVŽÏ)¼cbòÄ ôa‡d;Ê›Öakci¶ç\EIÁCºÙçá´i\Ä¥.'%épdÅíöl‹Ül“*½e3BænØ·@%Ü~tjMÉo‚…Ò/©ä>kݦ%ê4(0~¯ þêð_ Ø<=»‘Ûqf­zèú!x´WAÔ®À¢l4se¼UjÅÉbHk–]Y´€Í£Ë—Ü:²teÁ%þk~€óðIœÂû¬IEND®B`‚redmine-6.0.5/app/assets/images/zoom_out.png000066400000000000000000000012211500112024600210400ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<#IDAT8Ë¥’oHaÇeÁ^'ô", ZD½(z½­^XÙ‹þ‘QFT’(¡ËŽÔõge­d³¢¥µ­n™n¶?Ά³9w×î^Þ6fÛív‡ãÛÝŠ`µEÖ‹Ÿç÷{xªTý?Nj^ófZ&la‰ å σÙBÿØÛçIFxͤ"¿ŽÈ¤‘@%d0) LRÂÔ—<iÜ&gÈ.;«©pDdÂËäÁ¦d„fDø™<±lÑY Ö±ô/h¢bàå¤ÈR¼T”½Šøþ“7%`8*|1ZŸDØŠuߘ2²*Ò\Šün: éÂyÌm€| âÎÝÈnÛŽ¹ ›Zµ6U°øÓ:!Á­È#Ê­CŠìœÊå¯;‘¾ÛŽdwx}3¸Ö‹HÔ¬DIÀäN°“?ÆÉ‚TdÇÇ 2ÇOþzsQž­^.–ŒC1H"Ìå‹»«²-”)Æ>ÄEl4:®Dû¥º²oÐíˆkn ÆHË(_L@ð³ˆqw4ƒžW4ÚM.LX®Àzn ßz£®ìGºö,ªi±„‰ËBlSo°pöN ÐØã‹·è”×x œ§þû0[Çß;²Z÷[ M[µOÏl6wàºYáü_TŸX¯ímXc¶·íBÔzÄþ¥XP@åV}­¶«n™Ùp¸ú½ÕÍ ¨tî[²¨cÏâš²ø¯|m»ýá²EµIEND®B`‚redmine-6.0.5/app/assets/javascripts/000077500000000000000000000000001500112024600175475ustar00rootroot00000000000000redmine-6.0.5/app/assets/javascripts/application.js000066400000000000000000001202611500112024600224120ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ function sanitizeHTML(string) { var temp = document.createElement('span'); temp.textContent = string; return temp.innerHTML; } function checkAll(id, checked) { $('#'+id).find('input[type=checkbox]:enabled').prop('checked', checked); } function toggleCheckboxesBySelector(selector) { var all_checked = true; $(selector).each(function(index) { if (!$(this).is(':checked')) { all_checked = false; } }); $(selector).prop('checked', !all_checked).trigger('change'); } function showAndScrollTo(id, focus) { $('#'+id).show(); if (focus !== null) { $('#'+focus).focus(); } $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100); } function toggleRowGroup(el) { var tr = $(el).parents('tr').first(); var n = tr.next(); tr.toggleClass('open'); $(el).toggleClass('icon-expanded icon-collapsed'); toggleExpendCollapseIcon(el) while (n.length && !n.hasClass('group')) { n.toggle(); n = n.next('tr'); } } function toggleExpendCollapseIcon(el) { const svg = el.getElementsByTagName('svg').item(0) if (svg === null) { return false; } if (el.classList.contains('icon-expanded')) { updateSVGIcon(svg, 'angle-down') svg.classList.remove('icon-rtl') } else { updateSVGIcon(svg, 'angle-right') svg.classList.add('icon-rtl') } } function updateSVGIcon(element, icon) { const iconElement = element.getElementsByTagName("use").item(0) if (iconElement === null) { return false; } const iconPath = iconElement.getAttribute('href'); iconElement.setAttribute('href', iconPath.replace(/#.*$/g, "#icon--" + icon)) } function collapseAllRowGroups(el) { var tbody = $(el).parents('tbody').first(); tbody.children('tr').each(function(index) { if ($(this).hasClass('group')) { $(this).removeClass('open'); var expander = $(this).find('.expander'); expander.switchClass('icon-expanded', 'icon-collapsed'); toggleExpendCollapseIcon(expander[0]); } else { $(this).hide(); } }); } function expandAllRowGroups(el) { var tbody = $(el).parents('tbody').first(); tbody.children('tr').each(function(index) { if ($(this).hasClass('group')) { $(this).addClass('open'); var expander = $(this).find('.expander'); expander.switchClass('icon-collapsed', 'icon-expanded'); toggleExpendCollapseIcon(expander[0]); } else { $(this).show(); } }); } function toggleAllRowGroups(el) { var tr = $(el).parents('tr').first(); if (tr.hasClass('open')) { collapseAllRowGroups(el); } else { expandAllRowGroups(el); } } function toggleFieldset(el) { var fieldset = $(el).parents('fieldset').first(); fieldset.toggleClass('collapsed'); fieldset.children('legend').toggleClass('icon-expanded icon-collapsed'); toggleExpendCollapseIcon(fieldset.children('legend')[0]) fieldset.children('div').toggle(); } function hideFieldset(el) { var fieldset = $(el).parents('fieldset').first(); fieldset.toggleClass('collapsed'); fieldset.children('div').hide(); } // columns selection function moveOptions(theSelFrom, theSelTo) { $(theSelFrom).find('option:selected').detach().prop("selected", false).appendTo($(theSelTo)); } function moveOptionUp(theSel) { $(theSel).find('option:selected').each(function(){ $(this).prev(':not(:selected)').detach().insertAfter($(this)); }); } function moveOptionTop(theSel) { $(theSel).find('option:selected').detach().prependTo($(theSel)); } function moveOptionDown(theSel) { $($(theSel).find('option:selected').get().reverse()).each(function(){ $(this).next(':not(:selected)').detach().insertBefore($(this)); }); } function moveOptionBottom(theSel) { $(theSel).find('option:selected').detach().appendTo($(theSel)); } function initFilters() { $('#add_filter_select').change(function() { addFilter($(this).val(), '', []); }); $('#filters-table .field input[type=checkbox]').each(function() { toggleFilter($(this).val()); }); $('#filters-table').on('click', '.field input[type=checkbox]', function() { toggleFilter($(this).val()); }); $('#filters-table').on('keypress', 'input[type=text]', function(e) { if (e.keyCode == 13) $(this).closest('form').submit(); }); } function addFilter(field, operator, values) { var fieldId = field.replace('.', '_'); var tr = $('#tr_'+fieldId); var filterOptions = availableFilters[field]; if (!filterOptions) return; if (filterOptions['remote'] && filterOptions['values'] == null) { $.getJSON(filtersUrl, {'name': field}).done(function(data) { filterOptions['values'] = data; addFilter(field, operator, values) ; }); return; } if (tr.length > 0) { tr.show(); } else { buildFilterRow(field, operator, values); } $('#cb_'+fieldId).prop('checked', true); toggleFilter(field); toggleMultiSelectIconInit(); $('#add_filter_select').val('').find('option').each(function() { if ($(this).attr('value') == field) { $(this).attr('disabled', true); } }); } function buildFilterRow(field, operator, values) { var fieldId = field.replace('.', '_'); var filterTable = $("#filters-table"); var filterOptions = availableFilters[field]; if (!filterOptions) return; var operators = operatorByType[filterOptions['type']]; var filterValues = filterOptions['values']; var select; var tr = $('
').attr('id', 'tr_'+fieldId).html( '
' + '
' + '
' ); filterTable.append(tr); select = tr.find('.operator select'); operators.forEach(function(op) { var option = $('
', { href: "#", 'class': 'icon-only icon-del remove-upload' }).append(delIcon).click(removeFile).toggle(!eagerUpload) ).appendTo(attachmentsFields); if ($(inputEl).data('description') == 0) { fileSpan.find('input.description').remove(); } if(eagerUpload) { ajaxUpload(file, attachmentId, fileSpan, inputEl); } addAttachment.toggle(attachmentsFields.children().length < maxFiles); return attachmentId; } return null; } addFile.nextAttachmentId = 1; function ajaxUpload(file, attachmentId, fileSpan, inputEl) { function onLoadstart(e) { fileSpan.removeClass('ajax-waiting'); fileSpan.addClass('ajax-loading'); $('input:submit', $(this).parents('form')).attr('disabled', 'disabled'); } function onProgress(e) { if(e.lengthComputable) { this.progressbar( 'value', e.loaded * 100 / e.total ); } } function actualUpload(file, attachmentId, fileSpan, inputEl) { ajaxUpload.uploading++; uploadBlob(file, $(inputEl).data('upload-path'), attachmentId, { loadstartEventHandler: onLoadstart.bind(progressSpan), progressEventHandler: onProgress.bind(progressSpan) }) .done(function(result) { addInlineAttachmentMarkup(file); progressSpan.progressbar( 'value', 100 ).remove(); fileSpan.find('input.description, a').css('display', 'inline-flex'); }) .fail(function(result) { progressSpan.text(result.statusText); }).always(function() { ajaxUpload.uploading--; fileSpan.removeClass('ajax-loading'); var form = fileSpan.parents('form'); if (form.queue('upload').length == 0 && ajaxUpload.uploading == 0) { $('input:submit', form).removeAttr('disabled'); } form.dequeue('upload'); }); } var progressSpan = $('
').insertAfter(fileSpan.find('input.filename')); progressSpan.progressbar(); fileSpan.addClass('ajax-waiting'); var maxSyncUpload = $(inputEl).data('max-concurrent-uploads'); if(maxSyncUpload == null || maxSyncUpload <= 0 || ajaxUpload.uploading < maxSyncUpload) actualUpload(file, attachmentId, fileSpan, inputEl); else $(inputEl).parents('form').queue('upload', actualUpload.bind(this, file, attachmentId, fileSpan, inputEl)); } ajaxUpload.uploading = 0; function removeFile() { $(this).closest('.attachments_form').find('.add_attachment').show(); $(this).parent('span').remove(); return false; } function uploadBlob(blob, uploadUrl, attachmentId, options) { var actualOptions = $.extend({ loadstartEventHandler: $.noop, progressEventHandler: $.noop }, options); uploadUrl = uploadUrl + '?attachment_id=' + attachmentId; if (blob instanceof window.Blob) { uploadUrl += '&filename=' + encodeURIComponent(blob.name); uploadUrl += '&content_type=' + encodeURIComponent(blob.type); } return $.ajax(uploadUrl, { type: 'POST', contentType: 'application/octet-stream', beforeSend: function(jqXhr, settings) { jqXhr.setRequestHeader('Accept', 'application/js'); // attach proper File object settings.data = blob; }, xhr: function() { var xhr = $.ajaxSettings.xhr(); xhr.upload.onloadstart = actualOptions.loadstartEventHandler; xhr.upload.onprogress = actualOptions.progressEventHandler; return xhr; }, data: blob, cache: false, processData: false }); } function addInputFiles(inputEl) { var attachmentsFields = $(inputEl).closest('.attachments_form').find('.attachments_fields'); var addAttachment = $(inputEl).closest('.attachments_form').find('.add_attachment'); var clearedFileInput = $(inputEl).clone().val(''); var sizeExceeded = false; var param = $(inputEl).data('param'); if (!param) {param = 'attachments'}; if ($.ajaxSettings.xhr().upload && inputEl.files) { // upload files using ajax sizeExceeded = uploadAndAttachFiles(inputEl.files, inputEl); $(inputEl).remove(); } else { // browser not supporting the file API, upload on form submission var attachmentId; var aFilename = inputEl.value.split(/\/|\\/); attachmentId = addFile(inputEl, { name: aFilename[ aFilename.length - 1 ] }, false); if (attachmentId) { $(inputEl).attr({ name: param + '[' + attachmentId + '][file]', style: 'display:none;' }).appendTo('#attachments_' + attachmentId); } } clearedFileInput.prependTo(addAttachment); } function uploadAndAttachFiles(files, inputEl) { var maxFileSize = $(inputEl).data('max-file-size'); var maxFileSizeExceeded = $(inputEl).data('max-file-size-message'); var sizeExceeded = false; var filesLength = $(inputEl).closest('.attachments_form').find('.attachments_fields').children().length + files.length $.each(files, function() { if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {sizeExceeded=true;} }); if (sizeExceeded) { window.alert(maxFileSizeExceeded); } else { $.each(files, function() {addFile(inputEl, this, true);}); } if (filesLength > ($(inputEl).attr('multiple') == 'multiple' ? 10 : 1)) { window.alert($(inputEl).data('max-number-of-files-message')); } return sizeExceeded; } function handleFileDropEvent(e) { $(this).removeClass('fileover'); blockEventPropagation(e); if ($.inArray('Files', e.dataTransfer.types) > -1) { handleFileDropEvent.target = e.target; if ($(this).hasClass('custom-field-filedroplistner')){ uploadAndAttachFiles(e.dataTransfer.files, $(this).find('input:file.custom-field-filedrop').first()); } else { uploadAndAttachFiles(e.dataTransfer.files, $(this).find('input:file.filedrop').first()); } } } handleFileDropEvent.target = ''; function dragOverHandler(e) { $(this).addClass('fileover'); blockEventPropagation(e); e.dataTransfer.dropEffect = 'copy'; } function dragOutHandler(e) { $(this).removeClass('fileover'); blockEventPropagation(e); } function setupFileDrop() { if (window.File && window.FileList && window.ProgressEvent && window.FormData) { $.event.addProp('dataTransfer'); $('form div.box:not(.filedroplistner)').has('input:file.filedrop').each(function() { $(this).on({ dragover: dragOverHandler, dragleave: dragOutHandler, drop: handleFileDropEvent, paste: copyImageFromClipboard }).addClass('filedroplistner'); }); $('form div.box input:file.custom-field-filedrop').closest('p').not('.custom-field-filedroplistner').each(function() { $(this).on({ dragover: dragOverHandler, dragleave: dragOutHandler, drop: handleFileDropEvent }).addClass('custom-field-filedroplistner'); }); } } function addInlineAttachmentMarkup(file) { // insert uploaded image inline if dropped area is currently focused textarea if($(handleFileDropEvent.target).hasClass('wiki-edit') && $.inArray(file.type, window.wikiImageMimeTypes) > -1) { var $textarea = $(handleFileDropEvent.target); var cursorPosition = $textarea.prop('selectionStart'); var description = $textarea.val(); var sanitizedFilename = file.name.replace(/[\/\?\%\*\:\|\"\'<>\n\r]+/, '_'); var inlineFilename = encodeURIComponent(sanitizedFilename) .replace(/[!()]/g, function(match) { return "%" + match.charCodeAt(0).toString(16) }); var newLineBefore = true; var newLineAfter = true; if(cursorPosition === 0 || description.substr(cursorPosition-1,1).match(/\r|\n/)) { newLineBefore = false; } if(description.substr(cursorPosition,1).match(/\r|\n/)) { newLineAfter = false; } $textarea.val( description.substring(0, cursorPosition) + (newLineBefore ? '\n' : '') + inlineFilename + (newLineAfter ? '\n' : '') + description.substring(cursorPosition, description.length) ); $textarea.prop({ 'selectionStart': cursorPosition + newLineBefore, 'selectionEnd': cursorPosition + inlineFilename.length + newLineBefore }); $textarea.parents('.jstBlock') .find('.jstb_img').click(); // move cursor into next line cursorPosition = $textarea.prop('selectionStart'); $textarea.prop({ 'selectionStart': cursorPosition + 1, 'selectionEnd': cursorPosition + 1 }); } } function copyImageFromClipboard(e) { if (!$(e.target).hasClass('wiki-edit')) { return; } var clipboardData = e.clipboardData || e.originalEvent.clipboardData if (!clipboardData) { return; } if (clipboardData.types.some(function(t){ return /^text\/plain$/.test(t); })) { return; } var files = clipboardData.files for (var i = 0 ; i < files.length ; i++) { var file = files[i]; if (file.type.indexOf("image") != -1) { var date = new Date(); var filename = 'clipboard-' + date.getFullYear() + ('0'+(date.getMonth()+1)).slice(-2) + ('0'+date.getDate()).slice(-2) + ('0'+date.getHours()).slice(-2) + ('0'+date.getMinutes()).slice(-2) + '-' + randomKey(5).toLocaleLowerCase() + '.' + file.name.split('.').pop(); // get input file in the closest form var inputEl = $(this).closest("form").find('input:file.filedrop'); handleFileDropEvent.target = e.target; addFile(inputEl, new File([file], filename, { type: file.type }), true); } } } $(document).ready(setupFileDrop); $(document).ready(function(){ $("input.deleted_attachment").change(function(){ $(this).parents('.existing-attachment').toggleClass('deleted', $(this).is(":checked")); }).change(); }); redmine-6.0.5/app/assets/javascripts/chart.min.js000066400000000000000000006056101500112024600220000ustar00rootroot00000000000000/*! * Chart.js v3.9.1 * https://www.chartjs.org * (c) 2022 Chart.js Contributors * Released under the MIT License */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";function t(){}const e=function(){let t=0;return function(){return t++}}();function i(t){return null==t}function s(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function n(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const o=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function a(t,e){return o(t)?t:e}function r(t,e){return void 0===t?e:t}const l=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function c(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function d(t,e,i,o){let a,r,l;if(s(t))if(r=t.length,o)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function y(t,e){const i=_[e]||(_[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const M=t=>void 0!==t,k=t=>"function"==typeof t,S=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function P(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const D=Math.PI,O=2*D,C=O+D,A=Number.POSITIVE_INFINITY,T=D/180,L=D/2,E=D/4,R=2*D/3,I=Math.log10,z=Math.sign;function F(t){const e=Math.round(t);t=N(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(I(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function V(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function B(t){return!isNaN(parseFloat(t))&&isFinite(t)}function N(t,e,i){return Math.abs(t-e)=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function tt(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const et=(t,e,i,s)=>tt(t,i,s?s=>t[s][e]<=i:s=>t[s][e]tt(t,i,(s=>t[s][e]>=i));function st(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function at(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(nt.forEach((e=>{delete t[e]})),delete t._chartjs)}function rt(t){const e=new Set;let i,s;for(i=0,s=t.length;iArray.prototype.slice.call(t));let n=!1,o=[];return function(...i){o=s(i),n||(n=!0,lt.call(window,(()=>{n=!1,t.apply(e,o)})))}}function ct(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const dt=t=>"start"===t?"left":"end"===t?"right":"center",ut=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,ft=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function gt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=Z(Math.min(et(r,a.axis,h).lo,i?s:et(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?Z(Math.max(et(r,a.axis,c,!0).hi+1,i?0:et(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function pt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}var mt=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=lt.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; /*! * @kurkle/color v0.2.1 * https://github.com/kurkle/color#readme * (c) 2022 Jukka Kurkela * Released under the MIT License */function bt(t){return t+.5|0}const xt=(t,e,i)=>Math.max(Math.min(t,i),e);function _t(t){return xt(bt(2.55*t),0,255)}function yt(t){return xt(bt(255*t),0,255)}function vt(t){return xt(bt(t/2.55)/100,0,1)}function wt(t){return xt(bt(100*t),0,100)}const Mt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},kt=[..."0123456789ABCDEF"],St=t=>kt[15&t],Pt=t=>kt[(240&t)>>4]+kt[15&t],Dt=t=>(240&t)>>4==(15&t);function Ot(t){var e=(t=>Dt(t.r)&&Dt(t.g)&&Dt(t.b)&&Dt(t.a))(t)?St:Pt;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Ct=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function At(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Tt(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Lt(t,e,i){const s=At(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function Et(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Nt.transparent=[0,0,0,0]);const e=Nt[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const jt=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Ht=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,$t=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Yt(t,e,i){if(t){let s=Et(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=It(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function Ut(t,e){return t?Object.assign(e||{},t):t}function Xt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=yt(t[3]))):(e=Ut(t,{r:0,g:0,b:0,a:1})).a=yt(e.a),e}function qt(t){return"r"===t.charAt(0)?function(t){const e=jt.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?_t(t):xt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?_t(i):xt(i,0,255)),s=255&(e[4]?_t(s):xt(s,0,255)),n=255&(e[6]?_t(n):xt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Ft(t)}class Kt{constructor(t){if(t instanceof Kt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Xt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*Mt[s[1]],g:255&17*Mt[s[2]],b:255&17*Mt[s[3]],a:5===o?17*Mt[s[4]]:255}:7!==o&&9!==o||(n={r:Mt[s[1]]<<4|Mt[s[2]],g:Mt[s[3]]<<4|Mt[s[4]],b:Mt[s[5]]<<4|Mt[s[6]],a:9===o?Mt[s[7]]<<4|Mt[s[8]]:255})),i=n||Wt(t)||qt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=Ut(this._rgb);return t&&(t.a=vt(t.a)),t}set rgb(t){this._rgb=Xt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${vt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?Ot(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=Et(t),i=e[0],s=wt(e[1]),n=wt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${vt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=$t(vt(t.r)),n=$t(vt(t.g)),o=$t(vt(t.b));return{r:yt(Ht(s+i*($t(vt(e.r))-s))),g:yt(Ht(n+i*($t(vt(e.g))-n))),b:yt(Ht(o+i*($t(vt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Kt(this.rgb)}alpha(t){return this._rgb.a=yt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=bt(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Yt(this._rgb,2,t),this}darken(t){return Yt(this._rgb,2,-t),this}saturate(t){return Yt(this._rgb,1,t),this}desaturate(t){return Yt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=Et(t);i[0]=zt(i[0]+e),i=It(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Gt(t){return new Kt(t)}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Jt(t){return Zt(t)?t:Gt(t)}function Qt(t){return Zt(t)?t:Gt(t).saturate(.5).darken(.1).hexString()}const te=Object.create(null),ee=Object.create(null);function ie(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>Qt(e.backgroundColor),this.hoverBorderColor=(t,e)=>Qt(e.borderColor),this.hoverColor=(t,e)=>Qt(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return se(this,t,e)}get(t){return ie(this,t)}describe(t,e){return se(ee,t,e)}override(t,e){return se(te,t,e)}route(t,e,i,s){const o=ie(this,t),a=ie(this,i),l="_"+e;Object.defineProperties(o,{[l]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[l],e=a[s];return n(t)?Object.assign({},e,t):r(t,e)},set(t){this[l]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});function oe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ae(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function re(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const le=t=>window.getComputedStyle(t,null);function he(t,e){return le(t).getPropertyValue(e)}const ce=["top","right","bottom","left"];function de(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=ce[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ue(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=le(i),o="border-box"===n.boxSizing,a=de(n,"padding"),r=de(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const fe=t=>Math.round(10*t)/10;function ge(t,e,i,s){const n=le(t),o=de(n,"margin"),a=re(n.maxWidth,t,"clientWidth")||A,r=re(n.maxHeight,t,"clientHeight")||A,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ae(t);if(o){const t=o.getBoundingClientRect(),a=le(o),r=de(a,"border","width"),l=de(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=re(a.maxWidth,o,"clientWidth"),n=re(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||A,maxHeight:n||A}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=de(n,"border","width"),e=de(n,"padding");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=fe(Math.min(h,a,l.maxWidth)),c=fe(Math.min(c,r,l.maxHeight)),h&&!c&&(c=fe(h/2)),{width:h,height:c}}function pe(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const me=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function be(t,e){const i=he(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function xe(t){return!t||i(t.size)||i(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function _e(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function ye(t,e,i,n){let o=(n=n||{}).data=n.data||{},a=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(o=n.data={},a=n.garbageCollect=[],n.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Se(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);i(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){M(s)||(s=$e("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>Ee([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>Ve(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=$e(ze(o,t),i),M(n))return Fe(t,n)?je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>Ye(t).includes(e),ownKeys:t=>Ye(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function Re(t,e,i,o){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ie(t,o),setContext:e=>Re(t,e,i,o),override:s=>Re(t.override(s),e,i,o)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Ve(t,e,(()=>function(t,e,i){const{_proxy:o,_context:a,_subProxy:r,_descriptors:l}=t;let h=o[e];k(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),Fe(t,e)&&(e=je(n._scopes,n,t,e));return e}(e,h,t,i));s(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:o,_context:a,_subProxy:r,_descriptors:l}=i;if(M(a.index)&&s(t))e=e[a.index%e.length];else if(n(e[0])){const i=e,s=o._scopes.filter((t=>t!==i));e=[];for(const n of i){const i=je(s,o,t,n);e.push(Re(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Fe(e,h)&&(h=Re(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ie(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:k(i)?i:()=>i,isIndexable:k(s)?s:()=>s}}const ze=(t,e)=>t?t+w(e):e,Fe=(t,e)=>n(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Ve(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function Be(t,e,i){return k(t)?t(e,i):t}const Ne=(t,e)=>!0===t?e:"string"==typeof t?y(e,t):void 0;function We(t,e,i,s,n){for(const o of e){const e=Ne(i,o);if(e){t.add(e);const o=Be(e._fallback,i,n);if(M(o)&&o!==i&&o!==s)return o}else if(!1===e&&M(s)&&i!==s)return null}return!1}function je(t,e,i,o){const a=e._rootScopes,r=Be(e._fallback,i,o),l=[...t,...a],h=new Set;h.add(o);let c=He(h,l,i,r||i,o);return null!==c&&((!M(r)||r===i||(c=He(h,l,r,c,o),null!==c))&&Ee(Array.from(h),[""],a,r,(()=>function(t,e,i){const o=t._getTarget();e in o||(o[e]={});const a=o[e];if(s(a)&&n(i))return i;return a}(e,i,o))))}function He(t,e,i,s,n){for(;i;)i=We(t,e,i,s,n);return i}function $e(t,e){for(const i of e){if(!i)continue;const e=i[t];if(M(e))return e}}function Ye(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function Ue(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function Ge(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=X(o,n),l=X(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function Ze(t,e="x"){const i=Ke(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=qe(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)Ze(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,ei=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ii=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,si={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*L),easeOutSine:t=>Math.sin(t*L),easeInOutSine:t=>-.5*(Math.cos(D*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ti(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ti(t)?t:ei(t,.075,.3),easeOutElastic:t=>ti(t)?t:ii(t,.075,.3),easeInOutElastic(t){const e=.1125;return ti(t)?t:t<.5?.5*ei(2*t,e,.45):.5+.5*ii(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-si.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*si.easeInBounce(2*t):.5*si.easeOutBounce(2*t-1)+.5};function ni(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function ai(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=ni(t,n,i),r=ni(n,o,i),l=ni(o,e,i),h=ni(a,r,i),c=ni(r,l,i);return ni(h,c,i)}const ri=new Map;function li(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=ri.get(i);return s||(s=new Intl.NumberFormat(t,e),ri.set(i,s)),s}(e,i).format(t)}const hi=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),ci=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function di(t,e){const i=(""+t).match(hi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function ui(t,e){const i={},s=n(e),o=s?Object.keys(e):e,a=n(t)?s?i=>r(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of o)i[t]=+a(t)||0;return i}function fi(t){return ui(t,{top:"y",right:"x",bottom:"y",left:"x"})}function gi(t){return ui(t,["topLeft","topRight","bottomLeft","bottomRight"])}function pi(t){const e=fi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function mi(t,e){t=t||{},e=e||ne.font;let i=r(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=r(t.style,e.style);s&&!(""+s).match(ci)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:r(t.family,e.family),lineHeight:di(r(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:r(t.weight,e.weight),string:""};return n.string=xe(n),n}function bi(t,e,i,n){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function _i(t,e){return Object.assign(Object.create(t),e)}function yi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function vi(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function wi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Mi(t){return"angle"===t?{between:G,compare:q,normalize:K}:{between:Q,compare:(t,e)=>t-e,normalize:t=>t}}function ki({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Si(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Mi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Mi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hx||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(ki({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(ki({start:_,end:d,loop:u,count:a,style:f})),g}function Pi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Oi(t,[{start:a,end:r,loop:o}],i,e);return Oi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Vi={evaluateInteractionItems:Ei,modes:{index(t,e,i,s){const n=ue(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Ri(t,n,o,s,a):zi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ue(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Ri(t,n,o,s,a):zi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tRi(t,ue(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ue(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return zi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Fi(t,ue(e,t),"x",i.intersect,s),y:(t,e,i,s)=>Fi(t,ue(e,t),"y",i.intersect,s)}};const Bi=["left","top","right","bottom"];function Ni(t,e){return t.filter((t=>t.pos===e))}function Wi(t,e){return t.filter((t=>-1===Bi.indexOf(t.pos)&&t.box.axis===e))}function ji(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Hi(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Bi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function qi(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=ji(Ni(e,"left"),!0),n=ji(Ni(e,"right")),o=ji(Ni(e,"top"),!0),a=ji(Ni(e,"bottom")),r=Wi(e,"x"),l=Wi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ni(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;d(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,u=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);Yi(f,pi(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Hi(l.concat(h),u);qi(r.fullSize,g,u,p),qi(l,g,u,p),qi(h,g,u,p)&&qi(l,g,u,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),Gi(r.leftAndTop,g,u,p),g.x+=g.w,g.y+=g.h,Gi(r.rightAndBottom,g,u,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},d(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class Ji{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class Qi extends Ji{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ts={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},es=t=>null===t||""===t;const is=!!me&&{passive:!0};function ss(t,e,i){t.canvas.removeEventListener(e,i,is)}function ns(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function os(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ns(i.addedNodes,s),e=e&&!ns(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function as(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ns(i.removedNodes,s),e=e&&!ns(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const rs=new Map;let ls=0;function hs(){const t=window.devicePixelRatio;t!==ls&&(ls=t,rs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function cs(t,e,i){const s=t.canvas,n=s&&ae(s);if(!n)return;const o=ht(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){rs.size||window.addEventListener("resize",hs),rs.set(t,e)}(t,o),a}function ds(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){rs.delete(t),rs.size||window.removeEventListener("resize",hs)}(t)}function us(t,e,i){const s=t.canvas,n=ht((e=>{null!==t.ctx&&i(function(t,e){const i=ts[t.type]||t.type,{x:s,y:n}=ue(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,is)}(s,e,n),n}class fs extends Ji{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",es(n)){const e=be(t,"width");void 0!==e&&(t.width=e)}if(es(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=be(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const s=e.$chartjs.initial;["height","width"].forEach((t=>{const n=s[t];i(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=s.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:os,detach:as,resize:cs}[e]||us;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ds,detach:ds,resize:ds}[e]||ss)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return ge(t,e,i,s)}isAttached(t){const e=ae(t);return!(!e||!e.isConnected)}}function gs(t){return!oe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Qi:fs}var ps=Object.freeze({__proto__:null,_detectPlatform:gs,BasePlatform:Ji,BasicPlatform:Qi,DomPlatform:fs});const ms="transparent",bs={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Jt(t||ms),n=s.valid&&Jt(e||ms);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class xs{constructor(t,e,i,s){const n=e[i];s=bi([t.to,s,n,t.from]);const o=bi([t.from,n,s]);this._active=!0,this._fn=t.fn||bs[t.type||typeof o],this._easing=si[t.easing]||si.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=bi([t.to,e,s,t.from]),this._from=bi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),ne.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),ne.describe("animations",{_fallback:"animation"}),ne.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class ys{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!n(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const o=t[i];if(!n(o))return;const a={};for(const t of _s)a[t]=o[t];(s(o.properties)&&o.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,a)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new xs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(mt.add(this._chart,i),!0):void 0}}function vs(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ws(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Ds(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Cs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const As=t=>"reset"===t||"none"===t,Ts=(t,e)=>e?t:Object.assign({},t);class Ls{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=ks(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Cs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=r(i.xAxisID,Os(t,"x")),o=e.yAxisID=r(i.yAxisID,Os(t,"y")),a=e.rAxisID=r(i.rAxisID,Os(t,"r")),l=e.indexAxis,h=e.iAxisID=s(l,n,o,a),c=e.vAxisID=s(l,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&at(this._data,this),t._stacked&&Cs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(n(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=o,i._sorted=!0,d=o;else{d=s(o[t])?this.parseArrayData(i,o,t,e):n(o[t])?this.parseObjectData(i,o,t,e):this.parsePrimitiveData(i,o,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:ws(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!o(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,a;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ts(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new ys(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||As(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){As(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!As(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Es.defaults={},Es.defaultRoutes=void 0;const Rs={values:t=>s(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=I(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),li(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=t/Math.pow(10,Math.floor(I(t)));return 1===s||2===s||5===s?Rs.numeric.call(this,t,e,i):""}};var Is={formatters:Rs};function zs(t,e){const s=t.options.ticks,n=s.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=s.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;in)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(o,e,n);if(a>0){let t,s;const n=a>1?Math.round((l-r)/(a-1)):null;for(Fs(e,h,c,i(n)?0:r-n,r),t=0,s=a-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Is.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),ne.route("scale.ticks","color","","color"),ne.route("scale.grid","color","","borderColor"),ne.route("scale.grid","borderColor","","borderColor"),ne.route("scale.title","color","","color"),ne.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),ne.describe("scales",{_fallback:"scale"}),ne.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t});const Vs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Bs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Ws(t){return t.drawTicks?t.tickLength:0}function js(t,e){if(!t.display)return 0;const i=mi(t.font,e),n=pi(t.padding);return(s(t.text)?t.text.length:1)*i.lineHeight+n.height}function Hs(t,e,i){let s=dt(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class $s extends Es{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=a(t,Number.POSITIVE_INFINITY),e=a(e,Number.NEGATIVE_INFINITY),i=a(i,Number.POSITIVE_INFINITY),s=a(s,Number.NEGATIVE_INFINITY),{min:a(t,i),max:a(e,s),minDefined:o(t),maxDefined:o(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const r=this.getMatchingVisibleMetas();for(let a=0,l=r.length;as?s:i,s=n&&i>s?i:s,{min:a(i,a(s,i)),max:a(s,a(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){c(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=xi(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Ws(t.grid)-e.padding-js(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=$(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){c(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){c(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=js(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ws(n)+o):(t.height=this.maxHeight,t.width=Ws(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=H(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){c(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,s;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,s=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:a[t]||0,height:r[t]||0});return{first:k(0),last:k(e-1),widest:k(w),highest:k(M),widths:a,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return J(this._alignToPixels?ve(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:o,position:a}=s,l=o.offset,h=this.isHorizontal(),c=this.ticks.length+(l?1:0),d=Ws(o),u=[],f=o.setContext(this.getContext()),g=f.drawBorder?f.borderWidth:0,p=g/2,m=function(t){return ve(i,t,g)};let b,x,_,y,v,w,M,k,S,P,D,O;if("top"===a)b=m(this.bottom),w=this.bottom-d,k=b-p,P=m(t.top)+p,O=t.bottom;else if("bottom"===a)b=m(this.top),P=t.top,O=m(t.bottom)-p,w=b+p,k=this.top+d;else if("left"===a)b=m(this.right),v=this.right-d,M=b-p,S=m(t.left)+p,D=t.right;else if("right"===a)b=m(this.left),S=t.left,D=m(t.right)-p,v=b+p,M=this.left+d;else if("x"===e){if("center"===a)b=m((t.top+t.bottom)/2+.5);else if(n(a)){const t=Object.keys(a)[0],e=a[t];b=m(this.chart.scales[t].getPixelForValue(e))}P=t.top,O=t.bottom,w=b+p,k=w+d}else if("y"===e){if("center"===a)b=m((t.left+t.right)/2);else if(n(a)){const t=Object.keys(a)[0],e=a[t];b=m(this.chart.scales[t].getPixelForValue(e))}v=b-p,M=v-d,S=t.left,D=t.right}const C=r(s.ticks.maxTicksLimit,c),A=Math.max(1,Math.ceil(c/C));for(x=0;xe.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ne.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ne.describe(e,t.descriptors)}(t,o,i),this.override&&ne.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ne[s]&&(delete ne[s][i],this.override&&delete te[i])}}var Us=new class{constructor(){this.controllers=new Ys(Ls,"datasets",!0),this.elements=new Ys(Es,"elements"),this.plugins=new Ys(Object,"plugins"),this.scales=new Ys($s,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):d(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);c(i["before"+s],[],i),e[t](i),c(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function qs(t,e){return e||!1!==t?!0===t?{}:t:null}function Ks(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Gs(t,e){const i=ne.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Zs(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function Js(t){const e=t.options||(t.options={});e.plugins=r(e.plugins,{}),e.scales=function(t,e){const i=te[t.type]||{scales:{}},s=e.scales||{},o=Gs(t.type,e),a=Object.create(null),r=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!n(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const l=Zs(t,e),h=function(t,e){return t===e?"_index_":"_value_"}(l,o),c=i.scales||{};a[l]=a[l]||t,r[t]=b(Object.create(null),[{axis:l},e,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||Gs(n,e),l=(te[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||a[e]||e;r[n]=r[n]||Object.create(null),b(r[n],[{axis:e},s[n],l[t]])}))})),Object.keys(r).forEach((t=>{const e=r[t];b(e,[ne.scales[e.type],ne.scale])})),r}(t,e)}function Qs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const tn=new Map,en=new Set;function sn(t,e){let i=tn.get(t);return i||(i=e(),tn.set(t,i),en.add(i)),i}const nn=(t,e,i)=>{const s=y(e,i);void 0!==s&&t.add(s)};class on{constructor(t){this._config=function(t){return(t=t||{}).data=Qs(t.data),Js(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Qs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Js(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return sn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return sn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return sn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return sn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>nn(r,t,e)))),e.forEach((t=>nn(r,s,t))),e.forEach((t=>nn(r,te[n]||{},t))),e.forEach((t=>nn(r,ne,t))),e.forEach((t=>nn(r,ee,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),en.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,te[e]||{},ne.datasets[e]||{},{type:e},ne,ee]}resolveNamedOptions(t,e,i,n=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=an(this._resolverCache,t,n);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:n}=Ie(t);for(const o of e){const e=i(o),a=n(o),r=(a||e)&&t[o];if(e&&(k(r)||rn(r))||a&&s(r))return!0}return!1}(a,e)){o.$shared=!1;l=Re(a,i=k(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:o}=an(this._resolverCache,t,i);return n(e)?Re(o,e,void 0,s):o}}function an(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:Ee(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const rn=t=>n(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||k(t[i])),!1);const ln=["top","bottom","left","right","chartArea"];function hn(t,e){return"top"===t||"bottom"===t||-1===ln.indexOf(t)&&"x"===e}function cn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function dn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),c(i&&i.onComplete,[t],e)}function un(t){const e=t.chart,i=e.options.animation;c(i&&i.onProgress,[t],e)}function fn(t){return oe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const gn={},pn=t=>{const e=fn(t);return Object.values(gn).filter((t=>t.canvas===e)).pop()};function mn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class bn{constructor(t,i){const s=this.config=new on(i),n=fn(t),o=pn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||gs(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=e(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Xs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=ct((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],gn[this.id]=this,r&&l?(mt.listen(this,"complete",dn),mt.listen(this,"progress",un),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return i(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():pe(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return we(this.canvas,this.ctx),this}stop(){return mt.stop(this),this}resize(t,e){mt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,pe(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),c(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){d(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Zs(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),d(n,(e=>{const n=e.options,o=n.id,a=Zs(o,n),l=r(n.type,e.dtype);void 0!==n.position&&hn(n.position,a)===hn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===l)h=i[o];else{h=new(Us.getScale(l))({id:o,type:l,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),d(s,((t,e)=>{t||delete i[e]})),d(i,(t=>{Zi.configure(this,t,t.options),Zi.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(cn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){d(this.scales,(t=>{Zi.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);S(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){mn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;Zi.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],d(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Pe(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&De(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Se(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Vi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=_i(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);M(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),mt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};d(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){d(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},d(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!u(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=P(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,c(n.onHover,[t,a,this],this),r&&c(n.onClick,[t,a,this],this));const h=!u(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const xn=()=>d(bn.instances,(t=>t._plugins.invalidate())),_n=!0;function yn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(bn,{defaults:{enumerable:_n,value:ne},instances:{enumerable:_n,value:gn},overrides:{enumerable:_n,value:te},registry:{enumerable:_n,value:Us},version:{enumerable:_n,value:"3.9.1"},getChart:{enumerable:_n,value:pn},register:{enumerable:_n,value:(...t)=>{Us.add(...t),xn()}},unregister:{enumerable:_n,value:(...t)=>{Us.remove(...t),xn()}}});class vn{constructor(t){this.options=t||{}}init(t){}formats(){return yn()}parse(t,e){return yn()}format(t,e){return yn()}add(t,e,i){return yn()}diff(t,e,i){return yn()}startOf(t,e,i){return yn()}endOf(t,e){return yn()}}vn.override=function(t){Object.assign(vn.prototype,t)};var wn={_date:vn};function Mn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(M(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,n):e[i.axis]=i.parse(t,n),e}function Sn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.baset.controller.options.grouped)),o=s.options.stacked,a=[],r=t=>{const s=t.controller.getParsed(e),n=s&&s[t.vScale.axis];if(i(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(d,e,a)*o,u===a&&(m-=d/2);const t=e.getPixelForDecimal(0),i=e.getPixelForDecimal(1),s=Math.min(t,i),n=Math.max(t,i);m=Math.max(Math.min(m,n),s),c=m+d}if(m===e.getPixelForValue(a)){const t=z(d)*e.getLineWidthForValue(a)/2;m+=t,d-=t}return{size:d,base:m,head:c,center:c+d/2}}_calculateBarIndexPixels(t,e){const s=e.scale,n=this.options,o=n.skipNull,a=r(n.maxBarThickness,1/0);let l,h;if(e.grouped){const s=o?this._getStackCount(t):e.stackCount,r="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:"("+o+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d""}}}};class En extends Ls{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let o,a,r=t=>+i[t];if(n(i[t])){const{key:t="value"}=this._parsing;r=e=>+y(i[e],t)}for(o=t,a=t+e;oG(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>G(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(L,c,u),b=g(D,h,d),x=g(D+L,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=h(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*c,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=li(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s"spacing"!==t,_indexable:t=>"spacing"!==t},En.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return s(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Rn extends Ls{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=gt(e,s,o);this._drawStart=a,this._drawCount=r,pt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,s,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=B(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n;let x=e>0&&this.getParsed(e-1);for(let g=e;g0&&Math.abs(s[u]-x[u])>m,p&&(_.parsed=s,_.raw=h.data[g]),d&&(_.options=c||this.resolveDataElementOptions(g,e.active?"active":n)),b||this.updateElement(e,g,_,n),x=s}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Rn.id="line",Rn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},Rn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class In extends Ls{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=li(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return Ue.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*D;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?H(this.resolveDataElementOptions(t,e).angle||i):0}}In.id="polarArea",In.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},In.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class zn extends En{}zn.id="pie",zn.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Fn extends Ls{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return Ue.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(s[f]-_[f])>b,m&&(p.parsed=s,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),x||this.updateElement(e,c,p,n),_=s}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}Vn.id="scatter",Vn.defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1},Vn.overrides={interaction:{mode:"point"},plugins:{tooltip:{callbacks:{title:()=>"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Bn=Object.freeze({__proto__:null,BarController:Tn,BubbleController:Ln,DoughnutController:En,LineController:Rn,PolarAreaController:In,PieController:zn,RadarController:Fn,ScatterController:Vn});function Nn(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+L,s-L),t.closePath(),t.clip()}function Wn(t,e,i,s){const n=ui(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function jn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Hn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/D)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Wn(e,u,d,b-m),w=d-x,M=d-_,k=m+x/w,S=b-_/M,P=u+y,O=u+v,C=m+y/P,A=b-v/O;if(t.beginPath(),o){if(t.arc(a,r,d,k,S),_>0){const e=jn(M,S,a,r);t.arc(e.x,e.y,_,S,b+L)}const e=jn(O,b,a,r);if(t.lineTo(e.x,e.y),v>0){const e=jn(O,A,a,r);t.arc(e.x,e.y,v,b+L,A+Math.PI)}if(t.arc(a,r,u,b-v/u,m+y/u,!0),y>0){const e=jn(P,C,a,r);t.arc(e.x,e.y,y,C+Math.PI,m-L)}const i=jn(w,m,a,r);if(t.lineTo(i.x,i.y),x>0){const e=jn(w,k,a,r);t.arc(e.x,e.y,x,m-L,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function $n(t,e,i,s,n,o){const{options:a}=e,{borderWidth:r,borderJoinStyle:l}=a,h="inner"===a.borderAlign;r&&(h?(t.lineWidth=2*r,t.lineJoin=l||"round"):(t.lineWidth=r,t.lineJoin=l||"bevel"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&Nn(t,e,o+O),t.beginPath(),t.arc(s,n,h,o+O,o,!0),c=0;c=O||G(n,a,l),g=Q(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(s){a=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*a,Math.sin(e)*a),this.circumference>=D&&(a=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const r=function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Hn(t,e,i,s,a+O,n);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function Zn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Gn:Kn}Yn.id="arc",Yn.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0},Yn.defaultRoutes={backgroundColor:"backgroundColor"};const Jn="function"==typeof Path2D;function Qn(t,e,i,s){Jn&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Un(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Zn(e);for(const r of n)Un(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class to extends Es{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;Qe(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Di(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Pi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?oi:t.tension||"monotone"===t.cubicInterpolationMode?ai:ni}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t&&"fill"!==t};class io extends Es{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){uo(t)}))}var go={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,s)=>{if(!s.enabled)return void fo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===bi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(et(e,o.axis,a).lo,0,i-1)),s=h?Z(et(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(s.threshold||4*n))return void uo(e);let f;switch(i(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),s.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,s);break;case"min-max":f=function(t,e,s,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+s-1,_=t[e].x,y=t[x].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const s=o-1;if(!i(c)&&!i(d)){const e=Math.min(c,d),i=Math.max(c,d);e!==u&&e!==s&&b.push({...t[e],x:p}),i!==u&&i!==s&&b.push({...t[i],x:p})}o>0&&s!==u&&b.push(t[s]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${s.algorithm}'`)}e._decimated=f}))},destroy(t){fo(t)}};function po(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=K(n),o=K(o)),{property:t,start:n,end:o}}function mo(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function bo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function xo(t,e){let i=[],n=!1;return s(t)?(n=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=mo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new to({points:i,options:{tension:0},_loop:n,_fullLoop:n}):null}function _o(t){return t&&!1!==t.fill}function yo(t,e,i){let s=t[e].fill;const n=[e];let a;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!o(s))return s;if(a=t[s],!a)return!1;if(a.visible)return s;n.push(s),s=a.fill}return!1}function vo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=r(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(n(s))return!isNaN(s.value)&&s;let a=parseFloat(s);return o(a)&&Math.floor(a)===a?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,a,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function wo(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&Po(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;_o(i)&&Po(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;_o(s)&&"beforeDatasetDraw"===i.drawTime&&Po(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Lo=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Eo extends Es{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=c(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=mi(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Lo(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=yi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ut(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ut(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ut(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ut(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Pe(t,this),this._draw(),De(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ne.color,l=yi(t.rtl,this.left,this.width),h=mi(o.font),{color:c,padding:d}=o,u=h.size,f=u/2;let g;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:p,boxHeight:m,itemHeight:b}=Lo(o,u),x=this.isHorizontal(),_=this._computeTitleHeight();g=x?{x:ut(n,this.left+d,this.right-i[0]),y:this.top+d+_,line:0}:{x:this.left+d,y:ut(n,this.top+_+d,this.bottom-e[0].height),line:0},vi(this.ctx,t.textDirection);const y=b+d;this.legendItems.forEach(((v,w)=>{s.strokeStyle=v.fontColor||c,s.fillStyle=v.fontColor||c;const M=s.measureText(v.text).width,k=l.textAlign(v.textAlign||(v.textAlign=o.textAlign)),S=p+f+M;let P=g.x,D=g.y;l.setWidth(this.width),x?w>0&&P+S+d>this.right&&(D=g.y+=y,g.line++,P=g.x=ut(n,this.left+d,this.right-i[g.line])):w>0&&D+y>this.bottom&&(P=g.x=P+e[g.line].width+d,g.line++,D=g.y=ut(n,this.top+_+d,this.bottom-e[g.line].height));!function(t,e,i){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;s.save();const n=r(i.lineWidth,1);if(s.fillStyle=r(i.fillStyle,a),s.lineCap=r(i.lineCap,"butt"),s.lineDashOffset=r(i.lineDashOffset,0),s.lineJoin=r(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=r(i.strokeStyle,a),s.setLineDash(r(i.lineDash,[])),o.usePointStyle){const a={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},r=l.xPlus(t,p/2);ke(s,a,r,e+f,o.pointStyleWidth&&p)}else{const o=e+Math.max((u-m)/2,0),a=l.leftForLtr(t,p),r=gi(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?Le(s,{x:a,y:o,w:p,h:m,radius:r}):s.rect(a,o,p,m),s.fill(),0!==n&&s.stroke()}s.restore()}(l.x(P),D,v),P=ft(k,P+p+f,x?P+S:this.right,t.rtl),function(t,e,i){Ae(s,i.text,t,e+b/2,h,{strikethrough:i.hidden,textAlign:l.textAlign(i.textAlign)})}(l.x(P),D,v),x?g.x+=S+d:g.y+=y})),wi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=mi(e.font),s=pi(e.padding);if(!e.display)return;const n=yi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ut(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ut(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ut(a,c,c+d);o.textAlign=n.textAlign(dt(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ae(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=mi(t.font),i=pi(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Q(t,this.left,this.right)&&Q(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=pi(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Io extends Es{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const n=s(i.text)?i.text.length:1;this._padding=pi(i.padding);const o=n*mi(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ut(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ut(a,s,e),c=-.5*D):(l=n-t,h=ut(a,e,s),c=.5*D),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=mi(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ae(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:dt(e.align),textBaseline:"middle",translation:[n,o]})}}var zo={id:"title",_element:Io,start(t,e,i){!function(t,e){const i=new Io({ctx:t.ctx,options:e,chart:t});Zi.configure(t,i,e),Zi.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Zi.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;Zi.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Fo=new WeakMap;var Vo={id:"subtitle",start(t,e,i){const s=new Io({ctx:t.ctx,options:i,chart:t});Zi.configure(t,s,i),Zi.addBox(t,s),Fo.set(t,s)},stop(t){Zi.removeBox(t,Fo.get(t)),Fo.delete(t)},beforeUpdate(t,e,i){const s=Fo.get(t);Zi.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Bo={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function jo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ho(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=mi(e.bodyFont),h=mi(e.titleFont),c=mi(e.footerFont),u=o.length,f=n.length,g=s.length,p=pi(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*h.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,d(t.title,y),i.font=l.string,d(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,d(s,(t=>{d(t.before,y),d(t.lines,y),d(t.after,y)})),_=0,i.font=c.string,d(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function $o(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Yo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||$o(t,e,i,s),yAlign:s}}function Uo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=gi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Xo(t,e,i){const s=pi(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function qo(t){return No([],Wo(t))}function Ko(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class Go extends Es{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new ys(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,_i(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=No(a,Wo(s)),a=No(a,Wo(n)),a=No(a,Wo(o)),a}getBeforeBody(t,e){return qo(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return d(t,(t=>{const e={before:[],lines:[],after:[]},n=Ko(i,t);No(e.before,Wo(n.beforeLabel.call(this,t))),No(e.lines,n.label.call(this,t)),No(e.after,Wo(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return qo(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=No(a,Wo(s)),a=No(a,Wo(n)),a=No(a,Wo(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),d(l,(e=>{const i=Ko(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Bo[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ho(this,i),a=Object.assign({},t,e),r=Yo(this.chart,i,a),l=Uo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=gi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=yi(i.rtl,this.x,this.width);for(t.x=Xo(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=mi(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Le(t,{x:e,y:p,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),Le(t,{x:i,y:p+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(e,p,h,l),t.strokeRect(e,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=mi(i.bodyFont);let u=c.lineHeight,f=0;const g=yi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+u/2),t.y+=u+n},m=g.textAlign(o);let b,x,_,y,v,w,M;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Xo(this,m,i),e.fillStyle=i.bodyColor,d(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,w=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Bo[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ho(this,t),a=Object.assign({},i,this._size),r=Yo(e,t,a),l=Uo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=pi(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),vi(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),wi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!u(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!u(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Bo[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}Go.positioners=Bo;var Zo={id:"tooltip",_element:Go,positioners:Bo,afterInit(t,e,i){i&&(t.tooltip=new Go({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",i))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:t,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Jo=Object.freeze({__proto__:null,Decimation:go,Filler:To,Legend:Ro,SubTitle:Vo,Title:zo,Tooltip:Zo});function Qo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class ta extends $s{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(i(t))return null;const s=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&s[e]===t?e:Qo(s,t,r(e,t),this._addedLabels),s.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function ea(t,e,{horizontal:i,minRotation:s}){const n=H(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}ta.id="category",ta.defaults={ticks:{callback:ta.prototype.getLabelForValue}};class ia extends $s{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return i(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=z(s),e=z(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const n=function(t,e){const s=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!i(a),x=!i(r),_=!i(h),y=(m-p)/(d+1);let v,w,M,k,S=F((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=F(k*S/g/f)*f),i(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(w=Math.floor(p/S)*S,M=Math.ceil(m/S)*S):(w=p,M=m),b&&x&&o&&W((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,w=a,M=r):_?(w=b?a:w,M=x?r:M,k=h-1,S=(M-w)/k):(k=(M-w)/S,k=N(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(Y(S),Y(w));v=Math.pow(10,i(l)?P:l),w=Math.round(w*v)/v,M=Math.round(M*v)/v;let D=0;for(b&&(u&&w!==a?(s.push({value:a}),w0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=o(t)?Math.max(0,t):null,this.max=o(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(I(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(I(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=a(t.min,Math.pow(10,Math.floor(I(e.min)))),r=Math.floor(I(o)),l=Math.floor(o/Math.pow(10,r)),h=r<0?Math.pow(10,Math.abs(r)):1;do{n.push({value:o,major:na(o)}),++l,10===l&&(l=1,++r,h=r>=0?1:h),o=Math.round(l*Math.pow(10,r)*h)/h}while(rn?{start:e-i,end:e}:{start:e,end:e+i}}function la(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),n=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?D/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function ca(t){return 0===t||180===t?"center":t<180?"left":"right"}function da(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function ua(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function fa(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=c(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?la(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return K(t*(O/(this._pointLabels.length||1))+H(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(i(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(i(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;o--){const e=n.setContext(t.getPointLabelContext(o)),a=mi(e.font),{x:r,y:l,textAlign:h,left:c,top:d,right:u,bottom:f}=t._pointLabelItems[o],{backdropColor:g}=e;if(!i(g)){const t=gi(e.borderRadius),i=pi(e.backdropPadding);s.fillStyle=g;const n=c-i.left,o=d-i.top,a=u-c+i.width,r=f-d+i.height;Object.values(t).some((t=>0!==t))?(s.beginPath(),Le(s,{x:n,y:o,w:a,h:r,radius:t}),s.fill()):s.fillRect(n,o,a,r)}Ae(s,t._pointLabels[o],r,l+a.lineHeight/2,a,{color:e.color,textAlign:h,textBaseline:"middle"})}}(this,o),n.display&&this.ticks.forEach(((t,e)=>{if(0!==e){r=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),fa(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,n.setContext(this.getContext(e-1)),r,o)}})),s.display){for(t.save(),a=o-1;a>=0;a--){const i=s.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=i;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(i.borderDash),t.lineDashOffset=i.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=mi(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=pi(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ae(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}ga.id="radialLinear",ga.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Is.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},ga.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},ga.descriptors={angleLines:{_fallback:"grid"}};const pa={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ma=Object.keys(pa);function ba(t,e){return t-e}function xa(t,e){if(i(e))return null;const s=t._adapter,{parser:n,round:a,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),o(l)||(l="string"==typeof n?s.parse(l,n):s.parse(l)),null===l?null:(a&&(l="week"!==a||!B(r)&&!0!==r?s.startOf(l,a):s.startOf(l,"isoWeek",r)),+l)}function _a(t,e,i,s){const n=ma.length;for(let o=ma.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function va(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class wa extends $s{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new wn._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:xa(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:a,maxDefined:r}=this.getUserBounds();function l(t){a||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}a&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=o(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=o(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=st(s,n,this.max);return this._unit=e.unit||(i.autoSkip?_a(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ma.length-1;o>=ma.indexOf(i);o--){const i=ma[o];if(pa[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ma[i?ma.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=ma.indexOf(t)+1,i=ma.length;e+t.value)))}initOffsets(t){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||_a(n.minUnit,e,i,this._getLabelCapacity(e)),a=r(n.stepSize,1),l="week"===o&&n.isoWeekday,h=B(l)||!0===l,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",l)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;dt-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],d=i[e],u=r&&h&&d&&d.major,f=this._adapter.format(t,s||(u?h:l)),g=n.ticks.callback;return g?c(g,[f,e,i],this):f}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=et(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=et(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}wa.id="time",wa.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ka extends wa{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ma(e,this.min),this._tableRange=Ma(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o 0) { // a row was clicked if (target.is('td.checkbox')) { // the td containing the checkbox was clicked, toggle the checkbox target = target.find('input').first(); target.prop("checked", !target.prop("checked")); } if (target.is('input')) { // a checkbox may be clicked if (target.prop('checked')) { tr.addClass('context-menu-selection'); } else { tr.removeClass('context-menu-selection'); } } else { if (event.ctrlKey || event.metaKey) { contextMenuToggleSelection(tr); contextMenuClearDocumentSelection(); } else if (event.shiftKey) { lastSelected = contextMenuLastSelected(); if (lastSelected.length) { var toggling = false; $('.hascontextmenu').each(function(){ $elm = $(this) if (!$elm.is(lastSelected) && (toggling || $elm.is(tr))) { contextMenuAddSelection($(this)); contextMenuClearDocumentSelection(); } if ($elm.is(lastSelected) !== $elm.is(tr)) { toggling = !toggling; } }); } else { contextMenuAddSelection(tr); } } else { contextMenuUnselectAll(); contextMenuAddSelection(tr); } contextMenuSetLastSelected(tr); } } else { // click is outside the rows if (target.is('a') && (target.hasClass('disabled') || target.hasClass('submenu'))) { event.preventDefault(); } else if (target.is('.toggle-selection') || target.is('.ui-dialog *') || $('#ajax-modal').is(':visible')) { // nop } else { contextMenuUnselectAll(); } } } } function contextMenuCreate() { if ($('#context-menu').length < 1) { var menu = document.createElement("div"); menu.setAttribute("id", "context-menu"); menu.setAttribute("style", "display:none;"); document.getElementById("content").appendChild(menu); } } function contextMenuShow(event) { var mouse_x = event.pageX; var mouse_y = event.pageY; var mouse_y_c = event.clientY; var render_x = mouse_x; var render_y = mouse_y; var dims; var menu_width; var menu_height; var window_width; var window_height; var max_width; var max_height; var url; $('#context-menu').css('left', (render_x + 'px')); $('#context-menu').css('top', (render_y + 'px')); $('#context-menu').html(''); url = $(event.target).parents('form').first().data('cm-url'); if (url == null) {alert('no url'); return;} $.ajax({ url: url, data: $(event.target).parents('form').first().serialize(), success: function(data, textStatus, jqXHR) { $('#context-menu').html(data); menu_width = $('#context-menu').width(); menu_height = $('#context-menu').height(); max_width = mouse_x + 2*menu_width; max_height = mouse_y_c + menu_height; var ws = window_size(); window_width = ws.width; window_height = ws.height; /* display the menu above and/or to the left of the click if needed */ if (max_width > window_width) { render_x -= menu_width; $('#context-menu').addClass('reverse-x'); } else { $('#context-menu').removeClass('reverse-x'); } if (max_height > window_height) { render_y -= menu_height; $('#context-menu').addClass('reverse-y'); // adding class for submenu if (mouse_y_c < 325) { $('#context-menu .folder').addClass('down'); } } else { // adding class for submenu if (window_height - mouse_y_c < 345) { $('#context-menu .folder').addClass('up'); } $('#context-menu').removeClass('reverse-y'); } if (render_x <= 0) render_x = 1; if (render_y <= 0) render_y = 1; $('#context-menu').css('left', (render_x + 'px')); $('#context-menu').css('top', (render_y + 'px')); $('#context-menu').show(); //if (window.parseStylesheets) { window.parseStylesheets(); } // IE } }); } function contextMenuSetLastSelected(tr) { $('.cm-last').removeClass('cm-last'); tr.addClass('cm-last'); } function contextMenuLastSelected() { return $('.cm-last').first(); } function contextMenuUnselectAll() { $('input[type=checkbox].toggle-selection').prop('checked', false); $('.hascontextmenu').each(function(){ contextMenuRemoveSelection($(this)); }); $('.cm-last').removeClass('cm-last'); } function contextMenuHide() { $('#context-menu').hide(); } function contextMenuToggleSelection(tr) { if (contextMenuIsSelected(tr)) { contextMenuRemoveSelection(tr); } else { contextMenuAddSelection(tr); } } function contextMenuAddSelection(tr) { tr.addClass('context-menu-selection'); contextMenuCheckSelectionBox(tr, true); } function contextMenuRemoveSelection(tr) { tr.removeClass('context-menu-selection'); contextMenuCheckSelectionBox(tr, false); } function contextMenuIsSelected(tr) { return tr.hasClass('context-menu-selection'); } function contextMenuCheckSelectionBox(tr, checked) { tr.find('input[type=checkbox]').prop('checked', checked); } function contextMenuClearDocumentSelection() { // TODO if (document.selection) { document.selection.empty(); // IE } else { window.getSelection().removeAllRanges(); } } function contextMenuInit() { contextMenuCreate(); contextMenuUnselectAll(); if (!contextMenuObserving) { $(document).click(contextMenuClick); $(document).contextmenu(contextMenuRightClick); $(document).on('click', '.js-contextmenu', contextMenuRightClick); contextMenuObserving = true; } } function toggleIssuesSelection(el) { var checked = $(this).prop('checked'); var boxes = $(this).parents('table').find('input[name=ids\\[\\]]'); boxes.prop('checked', checked).parents('.hascontextmenu').toggleClass('context-menu-selection', checked); } function window_size() { var w; var h; if (window.innerWidth) { w = window.innerWidth; h = window.innerHeight; } else if (document.documentElement) { w = document.documentElement.clientWidth; h = document.documentElement.clientHeight; } else { w = document.body.clientWidth; h = document.body.clientHeight; } return {width: w, height: h}; } $(document).ready(function(){ contextMenuInit(); $('input[type=checkbox].toggle-selection').on('change', toggleIssuesSelection); }); redmine-6.0.5/app/assets/javascripts/gantt.js000066400000000000000000000303741500112024600212310ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ var draw_gantt = null; var draw_top; var draw_right; var draw_left; var rels_stroke_width = 2; function setDrawArea() { draw_top = $("#gantt_draw_area").position().top; draw_right = $("#gantt_draw_area").width(); draw_left = $("#gantt_area").scrollLeft(); } function getRelationsArray() { var arr = new Array(); $.each($('div.task_todo[data-rels]'), function(index_div, element) { if(!$(element).is(':visible')) return true; var element_id = $(element).attr("id"); if (element_id != null) { var issue_id = element_id.replace("task-todo-issue-", ""); var data_rels = $(element).data("rels"); for (rel_type_key in data_rels) { $.each(data_rels[rel_type_key], function(index_issue, element_issue) { arr.push({issue_from: issue_id, issue_to: element_issue, rel_type: rel_type_key}); }); } } }); return arr; } function drawRelations() { var arr = getRelationsArray(); $.each(arr, function(index_issue, element_issue) { var issue_from = $("#task-todo-issue-" + element_issue["issue_from"]); var issue_to = $("#task-todo-issue-" + element_issue["issue_to"]); if (issue_from.length == 0 || issue_to.length == 0) { return; } var issue_height = issue_from.height(); var issue_from_top = issue_from.position().top + (issue_height / 2) - draw_top; var issue_from_right = issue_from.position().left + issue_from.width(); var issue_to_top = issue_to.position().top + (issue_height / 2) - draw_top; var issue_to_left = issue_to.position().left; var color = issue_relation_type[element_issue["rel_type"]]["color"]; var landscape_margin = issue_relation_type[element_issue["rel_type"]]["landscape_margin"]; var issue_from_right_rel = issue_from_right + landscape_margin; var issue_to_left_rel = issue_to_left - landscape_margin; draw_gantt.path(["M", issue_from_right + draw_left, issue_from_top, "L", issue_from_right_rel + draw_left, issue_from_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); if (issue_from_right_rel < issue_to_left_rel) { draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top, "L", issue_from_right_rel + draw_left, issue_to_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_to_top, "L", issue_to_left + draw_left, issue_to_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); } else { var issue_middle_top = issue_to_top + (issue_height * ((issue_from_top > issue_to_top) ? 1 : -1)); draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_from_top, "L", issue_from_right_rel + draw_left, issue_middle_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); draw_gantt.path(["M", issue_from_right_rel + draw_left, issue_middle_top, "L", issue_to_left_rel + draw_left, issue_middle_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_middle_top, "L", issue_to_left_rel + draw_left, issue_to_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); draw_gantt.path(["M", issue_to_left_rel + draw_left, issue_to_top, "L", issue_to_left + draw_left, issue_to_top]) .attr({stroke: color, "stroke-width": rels_stroke_width }); } draw_gantt.path(["M", issue_to_left + draw_left, issue_to_top, "l", -4 * rels_stroke_width, -2 * rels_stroke_width, "l", 0, 4 * rels_stroke_width, "z"]) .attr({stroke: "none", fill: color, "stroke-linecap": "butt", "stroke-linejoin": "miter" }); }); } function getProgressLinesArray() { var arr = new Array(); var today_left = $('#today_line').position().left; arr.push({left: today_left, top: 0}); $.each($('div.issue-subject, div.version-name'), function(index, element) { if(!$(element).is(':visible')) return true; var t = $(element).position().top - draw_top ; var h = ($(element).height() / 9); var element_top_upper = t - h; var element_top_center = t + (h * 3); var element_top_lower = t + (h * 8); var issue_closed = $(element).children('span').hasClass('issue-closed'); var version_closed = $(element).children('span').hasClass('version-closed'); if (issue_closed || version_closed) { arr.push({left: today_left, top: element_top_center}); } else { var issue_done = $("#task-done-" + $(element).attr("id")); var is_behind_start = $(element).children('span').hasClass('behind-start-date'); var is_over_end = $(element).children('span').hasClass('over-end-date'); if (is_over_end) { arr.push({left: draw_right, top: element_top_upper, is_right_edge: true}); arr.push({left: draw_right, top: element_top_lower, is_right_edge: true, none_stroke: true}); } else if (issue_done.length > 0) { var done_left = issue_done.first().position().left + issue_done.first().width(); arr.push({left: done_left, top: element_top_center}); } else if (is_behind_start) { arr.push({left: 0 , top: element_top_upper, is_left_edge: true}); arr.push({left: 0 , top: element_top_lower, is_left_edge: true, none_stroke: true}); } else { var todo_left = today_left; var issue_todo = $("#task-todo-" + $(element).attr("id")); if (issue_todo.length > 0){ todo_left = issue_todo.first().position().left; } arr.push({left: Math.min(today_left, todo_left), top: element_top_center}); } } }); return arr; } function drawGanttProgressLines() { var arr = getProgressLinesArray(); var color = $("#today_line") .css("border-left-color"); var i; for(i = 1 ; i < arr.length ; i++) { if (!("none_stroke" in arr[i]) && (!("is_right_edge" in arr[i - 1] && "is_right_edge" in arr[i]) && !("is_left_edge" in arr[i - 1] && "is_left_edge" in arr[i])) ) { var x1 = (arr[i - 1].left == 0) ? 0 : arr[i - 1].left + draw_left; var x2 = (arr[i].left == 0) ? 0 : arr[i].left + draw_left; draw_gantt.path(["M", x1, arr[i - 1].top, "L", x2, arr[i].top]) .attr({stroke: color, "stroke-width": 2}); } } } function drawSelectedColumns(){ if ($("#draw_selected_columns").prop('checked')) { if(isMobile()) { $('td.gantt_selected_column').each(function(i) { $(this).hide(); }); }else{ $('.gantt_subjects_container').addClass('draw_selected_columns'); $('td.gantt_selected_column').each(function() { $(this).show(); var column_name = $(this).attr('id'); $(this).resizable({ zIndex: 30, alsoResize: '.gantt_' + column_name + '_container, .gantt_' + column_name + '_container > .gantt_hdr', minWidth: 20, handles: "e", create: function() { $(".ui-resizable-e").css("cursor","ew-resize"); } }).on('resize', function (e) { e.stopPropagation(); }); }); } }else{ $('td.gantt_selected_column').each(function (i) { $(this).hide(); $('.gantt_subjects_container').removeClass('draw_selected_columns'); }); } } function drawGanttHandler() { var folder = document.getElementById('gantt_draw_area'); if(draw_gantt != null) draw_gantt.clear(); else draw_gantt = Raphael(folder); setDrawArea(); drawSelectedColumns(); if ($("#draw_progress_line").prop('checked')) try{drawGanttProgressLines();}catch(e){} if ($("#draw_relations").prop('checked')) drawRelations(); $('#content').addClass('gantt_content'); } function resizableSubjectColumn(){ $('.issue-subject, .project-name, .version-name').each(function(){ $(this).width($(".gantt_subjects_column").width()-$(this).position().left); }); $('td.gantt_subjects_column').resizable({ alsoResize: '.gantt_subjects_container, .gantt_subjects_container>.gantt_hdr, .project-name, .issue-subject, .version-name', minWidth: 100, handles: 'e', zIndex: 30, create: function( event, ui ) { $('.ui-resizable-e').css('cursor','ew-resize'); } }).on('resize', function (e) { e.stopPropagation(); }); if(isMobile()) { $('td.gantt_subjects_column').resizable('disable'); }else{ $('td.gantt_subjects_column').resizable('enable'); }; } ganttEntryClick = function(e){ var icon_expander = e.currentTarget; var subject = $(icon_expander.parentElement); var subject_left = parseInt(subject.css('left')) + parseInt(icon_expander.offsetWidth); var target_shown = null; var target_top = 0; var total_height = 0; var out_of_hierarchy = false; var iconChange = null; if(subject.hasClass('open')) iconChange = function(element){ var expander = $(element).find('.expander') expander.switchClass('icon-expanded', 'icon-collapsed'); $(element).removeClass('open'); if (expander.find('svg').length === 1) { updateSVGIcon(expander[0], 'angle-right') } }; else iconChange = function(element){ var expander = $(element).find('.expander') expander.find('.expander').switchClass('icon-collapsed', 'icon-expanded'); $(element).addClass('open'); if (expander.find('svg').length === 1) { updateSVGIcon(expander[0], 'angle-down') } }; iconChange(subject); subject.nextAll('div').each(function(_, element){ var el = $(element); var json = el.data('collapse-expand'); var number_of_rows = el.data('number-of-rows'); var el_task_bars = '#gantt_area form > div[data-collapse-expand="' + json.obj_id + '"][data-number-of-rows="' + number_of_rows + '"]'; var el_selected_columns = 'td.gantt_selected_column div[data-collapse-expand="' + json.obj_id + '"][data-number-of-rows="' + number_of_rows + '"]'; if(out_of_hierarchy || parseInt(el.css('left')) <= subject_left){ out_of_hierarchy = true; if(target_shown == null) return false; var new_top_val = parseInt(el.css('top')) + total_height * (target_shown ? -1 : 1); el.css('top', new_top_val); $([el_task_bars, el_selected_columns].join()).each(function(_, el){ $(el).css('top', new_top_val); }); return true; } var is_shown = el.is(':visible'); if(target_shown == null){ target_shown = is_shown; target_top = parseInt(el.css('top')); total_height = 0; } if(is_shown == target_shown){ $(el_task_bars).each(function(_, task) { var el_task = $(task); if(!is_shown) el_task.css('top', target_top + total_height); if(!el_task.hasClass('tooltip')) el_task.toggle(!is_shown); }); $(el_selected_columns).each(function (_, attr) { var el_attr = $(attr); if (!is_shown) el_attr.css('top', target_top + total_height); el_attr.toggle(!is_shown); }); if(!is_shown) el.css('top', target_top + total_height); iconChange(el); el.toggle(!is_shown); total_height += parseInt(json.top_increment); } }); drawGanttHandler(); }; function disable_unavailable_columns(unavailable_columns) { $.each(unavailable_columns, function (index, value) { $('#available_c, #selected_c').children("[value='" + value + "']").prop('disabled', true); }); } redmine-6.0.5/app/assets/javascripts/i18n/000077500000000000000000000000001500112024600203265ustar00rootroot00000000000000redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ar.js000066400000000000000000000027331500112024600234040ustar00rootroot00000000000000/* Arabic Translation for jQuery UI date picker plugin. */ /* Used in most of Arab countries, primarily in Bahrain, */ /* Kuwait, Oman, Qatar, Saudi Arabia and the United Arab Emirates, Egypt, Sudan and Yemen. */ /* Written by Mohammed Alshehri -- m@dralshehri.com */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ar = { closeText: "إغلاق", prevText: "السابق", nextText: "التالي", currentText: "اليوم", monthNames: [ "يناير", "ÙØ¨Ø±Ø§ÙŠØ±", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوÙمبر", "ديسمبر" ], monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ], dayNames: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ], dayNamesShort: [ "أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت" ], dayNamesMin: [ "Ø­", "Ù†", "Ø«", "ر", "Ø®", "ج", "س" ], weekHeader: "أسبوع", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ar ); return datepicker.regional.ar; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-az.js000066400000000000000000000023311500112024600234060ustar00rootroot00000000000000/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Jamil Najafov (necefov33@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.az = { closeText: "BaÄŸla", prevText: "Geri", nextText: "İrÉ™li", currentText: "Bugün", monthNames: [ "Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" ], monthNamesShort: [ "Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek" ], dayNames: [ "Bazar", "Bazar ertÉ™si", "ÇərÅŸÉ™nbÉ™ axÅŸamı", "ÇərÅŸÉ™nbÉ™", "CümÉ™ axÅŸamı", "CümÉ™", "ŞənbÉ™" ], dayNamesShort: [ "B", "Be", "Ça", "Ç", "Ca", "C", "Åž" ], dayNamesMin: [ "B", "B", "Ç", "С", "Ç", "C", "Åž" ], weekHeader: "Hf", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.az ); return datepicker.regional.az; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-bg.js000066400000000000000000000026441500112024600233730ustar00rootroot00000000000000/* Bulgarian initialisation for the jQuery UI date picker plugin. */ /* Written by Stoyan Kyosev (http://svest.org). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.bg = { closeText: "затвори", prevText: "назад", nextText: "напред", nextBigText: ">>", currentText: "днеÑ", monthNames: [ "Януари", "Февруари", "Март", "Ðприл", "Май", "Юни", "Юли", "ÐвгуÑÑ‚", "Септември", "Октомври", "Ðоември", "Декември" ], monthNamesShort: [ "Яну", "Фев", "Мар", "Ðпр", "Май", "Юни", "Юли", "Ðвг", "Сеп", "Окт", "Ðов", "Дек" ], dayNames: [ "ÐеделÑ", "Понеделник", "Вторник", "СрÑда", "Четвъртък", "Петък", "Събота" ], dayNamesShort: [ "Ðед", "Пон", "Вто", "СрÑ", "Чет", "Пет", "Съб" ], dayNamesMin: [ "Ðе", "По", "Ð’Ñ‚", "Ср", "Че", "Пе", "Съ" ], weekHeader: "Wk", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.bg ); return datepicker.regional.bg; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-bs.js000066400000000000000000000022371500112024600234050ustar00rootroot00000000000000/* Bosnian i18n for the jQuery UI date picker plugin. */ /* Written by Kenan Konjo. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.bs = { closeText: "Zatvori", prevText: "Prethodno", nextText: "Sljedeći", currentText: "Danas", monthNames: [ "Januar", "Februar", "Mart", "April", "Maj", "Juni", "Juli", "August", "Septembar", "Oktobar", "Novembar", "Decembar" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec" ], dayNames: [ "Nedelja", "Ponedeljak", "Utorak", "Srijeda", "ÄŒetvrtak", "Petak", "Subota" ], dayNamesShort: [ "Ned", "Pon", "Uto", "Sri", "ÄŒet", "Pet", "Sub" ], dayNamesMin: [ "Ne", "Po", "Ut", "Sr", "ÄŒe", "Pe", "Su" ], weekHeader: "Wk", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.bs ); return datepicker.regional.bs; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ca.js000066400000000000000000000022671500112024600233670ustar00rootroot00000000000000/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */ /* Writers: (joan.leon@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ca = { closeText: "Tanca", prevText: "Anterior", nextText: "Següent", currentText: "Avui", monthNames: [ "gener", "febrer", "març", "abril", "maig", "juny", "juliol", "agost", "setembre", "octubre", "novembre", "desembre" ], monthNamesShort: [ "gen", "feb", "març", "abr", "maig", "juny", "jul", "ag", "set", "oct", "nov", "des" ], dayNames: [ "diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte" ], dayNamesShort: [ "dg", "dl", "dt", "dc", "dj", "dv", "ds" ], dayNamesMin: [ "dg", "dl", "dt", "dc", "dj", "dv", "ds" ], weekHeader: "Set", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ca ); return datepicker.regional.ca; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-cs.js000066400000000000000000000023201500112024600233770ustar00rootroot00000000000000/* Czech initialisation for the jQuery UI date picker plugin. */ /* Written by Tomas Muller (tomas@tomas-muller.net). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.cs = { closeText: "Zavřít", prevText: "Dříve", nextText: "PozdÄ›ji", currentText: "Nyní", monthNames: [ "leden", "únor", "bÅ™ezen", "duben", "kvÄ›ten", "Äerven", "Äervenec", "srpen", "září", "říjen", "listopad", "prosinec" ], monthNamesShort: [ "led", "úno", "bÅ™e", "dub", "kvÄ›", "Äer", "Ävc", "srp", "zář", "říj", "lis", "pro" ], dayNames: [ "nedÄ›le", "pondÄ›lí", "úterý", "stÅ™eda", "Ätvrtek", "pátek", "sobota" ], dayNamesShort: [ "ne", "po", "út", "st", "Ät", "pá", "so" ], dayNamesMin: [ "ne", "po", "út", "st", "Ät", "pá", "so" ], weekHeader: "Týd", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.cs ); return datepicker.regional.cs; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-da.js000066400000000000000000000022741500112024600233660ustar00rootroot00000000000000/* Danish initialisation for the jQuery UI date picker plugin. */ /* Written by Jan Christensen ( deletestuff@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.da = { closeText: "Luk", prevText: "Forrige", nextText: "Næste", currentText: "I dag", monthNames: [ "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec" ], dayNames: [ "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" ], dayNamesShort: [ "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" ], dayNamesMin: [ "Sø", "Ma", "Ti", "On", "To", "Fr", "Lø" ], weekHeader: "Uge", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.da ); return datepicker.regional.da; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-de.js000066400000000000000000000022621500112024600233670ustar00rootroot00000000000000/* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.de = { closeText: "Schließen", prevText: "Zurück", nextText: "Vor", currentText: "Heute", monthNames: [ "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ], monthNamesShort: [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ], dayNames: [ "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" ], dayNamesShort: [ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" ], dayNamesMin: [ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" ], weekHeader: "KW", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.de ); return datepicker.regional.de; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-el.js000066400000000000000000000027611500112024600234030ustar00rootroot00000000000000/* Greek (el) initialisation for the jQuery UI date picker plugin. */ /* Written by Alex Cicovic (http://www.alexcicovic.com) */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.el = { closeText: "Κλείσιμο", prevText: "ΠÏοηγοÏμενος", nextText: "Επόμενος", currentText: "ΣήμεÏα", monthNames: [ "ΙανουάÏιος", "ΦεβÏουάÏιος", "ΜάÏτιος", "ΑπÏίλιος", "Μάιος", "ΙοÏνιος", "ΙοÏλιος", "ΑÏγουστος", "ΣεπτέμβÏιος", "ΟκτώβÏιος", "ÎοέμβÏιος", "ΔεκέμβÏιος" ], monthNamesShort: [ "Ιαν", "Φεβ", "ΜαÏ", "ΑπÏ", "Μαι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Îοε", "Δεκ" ], dayNames: [ "ΚυÏιακή", "ΔευτέÏα", "ΤÏίτη", "ΤετάÏτη", "Πέμπτη", "ΠαÏασκευή", "Σάββατο" ], dayNamesShort: [ "ΚυÏ", "Δευ", "ΤÏι", "Τετ", "Πεμ", "ΠαÏ", "Σαβ" ], dayNamesMin: [ "Κυ", "Δε", "ΤÏ", "Τε", "Πε", "Πα", "Σα" ], weekHeader: "Εβδ", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.el ); return datepicker.regional.el; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-en-GB.js000066400000000000000000000022631500112024600236700ustar00rootroot00000000000000/* English/UK initialisation for the jQuery UI date picker plugin. */ /* Written by Stuart. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional[ "en-GB" ] = { closeText: "Done", prevText: "Prev", nextText: "Next", currentText: "Today", monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "en-GB" ] ); return datepicker.regional[ "en-GB" ]; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-es.js000066400000000000000000000022711500112024600234060ustar00rootroot00000000000000/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ /* Traducido por Vester (xvester@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.es = { closeText: "Cerrar", prevText: "Ant", nextText: "Sig", currentText: "Hoy", monthNames: [ "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre" ], monthNamesShort: [ "ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic" ], dayNames: [ "domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado" ], dayNamesShort: [ "dom", "lun", "mar", "mié", "jue", "vie", "sáb" ], dayNamesMin: [ "D", "L", "M", "X", "J", "V", "S" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.es ); return datepicker.regional.es; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-et.js000066400000000000000000000023751500112024600234140ustar00rootroot00000000000000/* Estonian initialisation for the jQuery UI date picker plugin. */ /* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.et = { closeText: "Sulge", prevText: "Eelnev", nextText: "Järgnev", currentText: "Täna", monthNames: [ "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" ], monthNamesShort: [ "Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets" ], dayNames: [ "Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev" ], dayNamesShort: [ "Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup" ], dayNamesMin: [ "P", "E", "T", "K", "N", "R", "L" ], weekHeader: "näd", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.et ); return datepicker.regional.et; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-eu.js000066400000000000000000000022141500112024600234050ustar00rootroot00000000000000/* Karrikas-ek itzulia (karrikas@karrikas.com) */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.eu = { closeText: "Egina", prevText: "Aur", nextText: "Hur", currentText: "Gaur", monthNames: [ "urtarrila", "otsaila", "martxoa", "apirila", "maiatza", "ekaina", "uztaila", "abuztua", "iraila", "urria", "azaroa", "abendua" ], monthNamesShort: [ "urt.", "ots.", "mar.", "api.", "mai.", "eka.", "uzt.", "abu.", "ira.", "urr.", "aza.", "abe." ], dayNames: [ "igandea", "astelehena", "asteartea", "asteazkena", "osteguna", "ostirala", "larunbata" ], dayNamesShort: [ "ig.", "al.", "ar.", "az.", "og.", "ol.", "lr." ], dayNamesMin: [ "ig", "al", "ar", "az", "og", "ol", "lr" ], weekHeader: "As", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.eu ); return datepicker.regional.eu; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-fa.js000066400000000000000000000026141500112024600233660ustar00rootroot00000000000000/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ /* Javad Mowlanezhad -- jmowla@gmail.com */ /* Jalali calendar should supported soon! (Its implemented but I have to test it) */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.fa = { closeText: "بستن", prevText: "قبلی", nextText: "بعدی", currentText: "امروز", monthNames: [ "ژانویه", "Ùوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر" ], monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ], dayNames: [ "يکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" ], dayNamesShort: [ "ÛŒ", "د", "س", "Ú†", "Ù¾", "ج", "Ø´" ], dayNamesMin: [ "ÛŒ", "د", "س", "Ú†", "Ù¾", "ج", "Ø´" ], weekHeader: "Ù‡Ù", dateFormat: "yy/mm/dd", firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fa ); return datepicker.regional.fa; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-fi.js000066400000000000000000000023621500112024600233760ustar00rootroot00000000000000/* Finnish initialisation for the jQuery UI date picker plugin. */ /* Written by Harri Kilpiö (harrikilpio@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.fi = { closeText: "Sulje", prevText: "Edellinen", nextText: "Seuraava", currentText: "Tänään", monthNames: [ "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" ], monthNamesShort: [ "Tammi", "Helmi", "Maalis", "Huhti", "Touko", "Kesä", "Heinä", "Elo", "Syys", "Loka", "Marras", "Joulu" ], dayNamesShort: [ "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" ], dayNames: [ "Sunnuntai", "Maanantai", "Tiistai", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" ], dayNamesMin: [ "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" ], weekHeader: "Vk", dateFormat: "d.m.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fi ); return datepicker.regional.fi; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-fr.js000066400000000000000000000024751500112024600234140ustar00rootroot00000000000000/* French initialisation for the jQuery UI date picker plugin. */ /* Written by Keith Wood (kbwood{at}iinet.com.au), Stéphane Nahmani (sholby@sholby.net), Stéphane Raimbault */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.fr = { closeText: "Fermer", prevText: "Précédent", nextText: "Suivant", currentText: "Aujourd'hui", monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" ], monthNamesShort: [ "janv.", "févr.", "mars", "avr.", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc." ], dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ], dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ], dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ], weekHeader: "Sem.", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.fr ); return datepicker.regional.fr; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-gl.js000066400000000000000000000022731500112024600234030ustar00rootroot00000000000000/* Galician localization for 'UI date picker' jQuery extension. */ /* Translated by Jorge Barreiro . */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.gl = { closeText: "Pechar", prevText: "Ant", nextText: "Seg", currentText: "Hoxe", monthNames: [ "Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xuño", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro" ], monthNamesShort: [ "Xan", "Feb", "Mar", "Abr", "Mai", "Xuñ", "Xul", "Ago", "Set", "Out", "Nov", "Dec" ], dayNames: [ "Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado" ], dayNamesShort: [ "Dom", "Lun", "Mar", "Mér", "Xov", "Ven", "Sáb" ], dayNamesMin: [ "Do", "Lu", "Ma", "Mé", "Xo", "Ve", "Sá" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.gl ); return datepicker.regional.gl; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-he.js000066400000000000000000000024551500112024600233770ustar00rootroot00000000000000/* Hebrew initialisation for the UI Datepicker extension. */ /* Written by Amir Hardon (ahardon at gmail dot com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.he = { closeText: "סגור", prevText: "הקוד×", nextText: "הב×", currentText: "היו×", monthNames: [ "ינו×ר", "פברו×ר", "מרץ", "×פריל", "מ××™", "יוני", "יולי", "×וגוסט", "ספטמבר", "×וקטובר", "נובמבר", "דצמבר" ], monthNamesShort: [ "ינו", "פבר", "מרץ", "×פר", "מ××™", "יוני", "יולי", "×וג", "ספט", "×וק", "נוב", "דצמ" ], dayNames: [ "ר×שון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת" ], dayNamesShort: [ "×'", "ב'", "×’'", "ד'", "×”'", "ו'", "שבת" ], dayNamesMin: [ "×'", "ב'", "×’'", "ד'", "×”'", "ו'", "שבת" ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: true, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.he ); return datepicker.regional.he; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-hr.js000066400000000000000000000022701500112024600234070ustar00rootroot00000000000000/* Croatian i18n for the jQuery UI date picker plugin. */ /* Written by Vjekoslav Nesek. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.hr = { closeText: "Zatvori", prevText: "Prethodno", nextText: "Sljedeći", currentText: "Danas", monthNames: [ "SijeÄanj", "VeljaÄa", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" ], monthNamesShort: [ "Sij", "Velj", "Ožu", "Tra", "Svi", "Lip", "Srp", "Kol", "Ruj", "Lis", "Stu", "Pro" ], dayNames: [ "Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "ÄŒetvrtak", "Petak", "Subota" ], dayNamesShort: [ "Ned", "Pon", "Uto", "Sri", "ÄŒet", "Pet", "Sub" ], dayNamesMin: [ "Ne", "Po", "Ut", "Sr", "ÄŒe", "Pe", "Su" ], weekHeader: "Tje", dateFormat: "dd.mm.yy.", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hr ); return datepicker.regional.hr; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-hu.js000066400000000000000000000022431500112024600234120ustar00rootroot00000000000000/* Hungarian initialisation for the jQuery UI date picker plugin. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.hu = { closeText: "Bezár", prevText: "Vissza", nextText: "ElÅ‘re", currentText: "Ma", monthNames: [ "Január", "Február", "Március", "Ãprilis", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" ], monthNamesShort: [ "Jan", "Feb", "Már", "Ãpr", "Máj", "Jún", "Júl", "Aug", "Szep", "Okt", "Nov", "Dec" ], dayNames: [ "Vasárnap", "HétfÅ‘", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" ], dayNamesShort: [ "Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo" ], dayNamesMin: [ "V", "H", "K", "Sze", "Cs", "P", "Szo" ], weekHeader: "Hét", dateFormat: "yy.mm.dd.", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.hu ); return datepicker.regional.hu; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-id.js000066400000000000000000000023621500112024600233740ustar00rootroot00000000000000/* Indonesian initialisation for the jQuery UI date picker plugin. */ /* Written by Deden Fathurahman (dedenf@gmail.com). */ /* Fixed by Denny Septian Panggabean (xamidimura@gmail.com) */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.id = { closeText: "Tutup", prevText: "Mundur", nextText: "Maju", currentText: "Hari ini", monthNames: [ "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agus", "Sep", "Okt", "Nop", "Des" ], dayNames: [ "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu" ], dayNamesShort: [ "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab" ], dayNamesMin: [ "Mg", "Sn", "Sl", "Rb", "Km", "Jm", "Sb" ], weekHeader: "Mg", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.id ); return datepicker.regional.id; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-it.js000066400000000000000000000023211500112024600234070ustar00rootroot00000000000000/* Italian initialisation for the jQuery UI date picker plugin. */ /* Written by Antonello Pasella (antonello.pasella@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.it = { closeText: "Chiudi", prevText: "Prec", nextText: "Succ", currentText: "Oggi", monthNames: [ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" ], monthNamesShort: [ "Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic" ], dayNames: [ "Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato" ], dayNamesShort: [ "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" ], dayNamesMin: [ "Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.it ); return datepicker.regional.it; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ja.js000066400000000000000000000023071500112024600233710ustar00rootroot00000000000000/* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ja = { closeText: "é–‰ã˜ã‚‹", prevText: "å‰", nextText: "次", currentText: "今日", monthNames: [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" ], monthNamesShort: [ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" ], dayNames: [ "日曜日", "月曜日", "ç«æ›œæ—¥", "水曜日", "木曜日", "金曜日", "土曜日" ], dayNamesShort: [ "æ—¥", "月", "ç«", "æ°´", "木", "金", "土" ], dayNamesMin: [ "æ—¥", "月", "ç«", "æ°´", "木", "金", "土" ], weekHeader: "週", dateFormat: "yy/mm/dd", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "å¹´" }; datepicker.setDefaults( datepicker.regional.ja ); return datepicker.regional.ja; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ko.js000066400000000000000000000023601500112024600234070ustar00rootroot00000000000000/* Korean initialisation for the jQuery calendar extension. */ /* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie and Myeongjin Lee. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ko = { closeText: "닫기", prevText: "ì´ì „달", nextText: "다ìŒë‹¬", currentText: "오늘", monthNames: [ "1ì›”", "2ì›”", "3ì›”", "4ì›”", "5ì›”", "6ì›”", "7ì›”", "8ì›”", "9ì›”", "10ì›”", "11ì›”", "12ì›”" ], monthNamesShort: [ "1ì›”", "2ì›”", "3ì›”", "4ì›”", "5ì›”", "6ì›”", "7ì›”", "8ì›”", "9ì›”", "10ì›”", "11ì›”", "12ì›”" ], dayNames: [ "ì¼ìš”ì¼", "월요ì¼", "화요ì¼", "수요ì¼", "목요ì¼", "금요ì¼", "토요ì¼" ], dayNamesShort: [ "ì¼", "ì›”", "í™”", "수", "목", "금", "토" ], dayNamesMin: [ "ì¼", "ì›”", "í™”", "수", "목", "금", "토" ], weekHeader: "주", dateFormat: "yy. m. d.", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "ë…„" }; datepicker.setDefaults( datepicker.regional.ko ); return datepicker.regional.ko; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-lt.js000066400000000000000000000024211500112024600234130ustar00rootroot00000000000000/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.lt = { closeText: "Uždaryti", prevText: "Atgal", nextText: "Pirmyn", currentText: "Å iandien", monthNames: [ "Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "RugpjÅ«tis", "RugsÄ—jis", "Spalis", "Lapkritis", "Gruodis" ], monthNamesShort: [ "Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru" ], dayNames: [ "sekmadienis", "pirmadienis", "antradienis", "treÄiadienis", "ketvirtadienis", "penktadienis", "Å¡eÅ¡tadienis" ], dayNamesShort: [ "sek", "pir", "ant", "tre", "ket", "pen", "Å¡eÅ¡" ], dayNamesMin: [ "Se", "Pr", "An", "Tr", "Ke", "Pe", "Å e" ], weekHeader: "SAV", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.lt ); return datepicker.regional.lt; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-lv.js000066400000000000000000000024121500112024600234150ustar00rootroot00000000000000/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* @author Arturas Paleicikas */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.lv = { closeText: "AizvÄ“rt", prevText: "Iepr.", nextText: "NÄk.", currentText: "Å odien", monthNames: [ "JanvÄris", "FebruÄris", "Marts", "AprÄ«lis", "Maijs", "JÅ«nijs", "JÅ«lijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Mai", "JÅ«n", "JÅ«l", "Aug", "Sep", "Okt", "Nov", "Dec" ], dayNames: [ "svÄ“tdiena", "pirmdiena", "otrdiena", "treÅ¡diena", "ceturtdiena", "piektdiena", "sestdiena" ], dayNamesShort: [ "svt", "prm", "otr", "tre", "ctr", "pkt", "sst" ], dayNamesMin: [ "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "Ss" ], weekHeader: "Ned.", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.lv ); return datepicker.regional.lv; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-mk.js000066400000000000000000000026001500112024600234020ustar00rootroot00000000000000/* Macedonian i18n for the jQuery UI date picker plugin. */ /* Written by Stojce Slavkovski. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.mk = { closeText: "Затвори", prevText: "Претходна", nextText: "Следно", currentText: "ДенеÑ", monthNames: [ "Јануари", "Февруари", "Март", "Ðприл", "Мај", "Јуни", "Јули", "ÐвгуÑÑ‚", "Септември", "Октомври", "Ðоември", "Декември" ], monthNamesShort: [ "Јан", "Фев", "Мар", "Ðпр", "Мај", "Јун", "Јул", "Ðвг", "Сеп", "Окт", "Ðое", "Дек" ], dayNames: [ "Ðедела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота" ], dayNamesShort: [ "Ðед", "Пон", "Вто", "Сре", "Чет", "Пет", "Саб" ], dayNamesMin: [ "Ðе", "По", "Ð’Ñ‚", "Ср", "Че", "Пе", "Са" ], weekHeader: "Сед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.mk ); return datepicker.regional.mk; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-nl.js000066400000000000000000000023161500112024600234100ustar00rootroot00000000000000/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Mathias Bynens */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.nl = { closeText: "Sluiten", prevText: "Vorig", nextText: "Volgende", currentText: "Vandaag", monthNames: [ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" ], monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec" ], dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ], dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ], dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ], weekHeader: "Wk", dateFormat: "dd-mm-yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.nl ); return datepicker.regional.nl; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-no.js000066400000000000000000000023241500112024600234120ustar00rootroot00000000000000/* Norwegian initialisation for the jQuery UI date picker plugin. */ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.no = { closeText: "Lukk", prevText: "Forrige", nextText: "Neste", currentText: "I dag", monthNames: [ "januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember" ], monthNamesShort: [ "jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des" ], dayNamesShort: [ "søn", "man", "tir", "ons", "tor", "fre", "lør" ], dayNames: [ "søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag" ], dayNamesMin: [ "sø", "ma", "ti", "on", "to", "fr", "lø" ], weekHeader: "Uke", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.no ); return datepicker.regional.no; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-pl.js000066400000000000000000000023261500112024600234130ustar00rootroot00000000000000/* Polish initialisation for the jQuery UI date picker plugin. */ /* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.pl = { closeText: "Zamknij", prevText: "Poprzedni", nextText: "NastÄ™pny", currentText: "DziÅ›", monthNames: [ "StyczeÅ„", "Luty", "Marzec", "KwiecieÅ„", "Maj", "Czerwiec", "Lipiec", "SierpieÅ„", "WrzesieÅ„", "Październik", "Listopad", "GrudzieÅ„" ], monthNamesShort: [ "Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru" ], dayNames: [ "Niedziela", "PoniedziaÅ‚ek", "Wtorek", "Åšroda", "Czwartek", "PiÄ…tek", "Sobota" ], dayNamesShort: [ "Nie", "Pn", "Wt", "Åšr", "Czw", "Pt", "So" ], dayNamesMin: [ "N", "Pn", "Wt", "Åšr", "Cz", "Pt", "So" ], weekHeader: "Tydz", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.pl ); return datepicker.regional.pl; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-pt-BR.js000066400000000000000000000024231500112024600237220ustar00rootroot00000000000000/* Brazilian initialisation for the jQuery UI date picker plugin. */ /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional[ "pt-BR" ] = { closeText: "Fechar", prevText: "Anterior", nextText: "Próximo", currentText: "Hoje", monthNames: [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ], monthNamesShort: [ "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez" ], dayNames: [ "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], dayNamesShort: [ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" ], dayNamesMin: [ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" ], weekHeader: "Sm", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional[ "pt-BR" ] ); return datepicker.regional[ "pt-BR" ]; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-pt.js000066400000000000000000000023001500112024600234130ustar00rootroot00000000000000/* Portuguese initialisation for the jQuery UI date picker plugin. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.pt = { closeText: "Fechar", prevText: "Anterior", nextText: "Seguinte", currentText: "Hoje", monthNames: [ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ], monthNamesShort: [ "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez" ], dayNames: [ "Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado" ], dayNamesShort: [ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" ], dayNamesMin: [ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" ], weekHeader: "Sem", dateFormat: "dd/mm/yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.pt ); return datepicker.regional.pt; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ro.js000066400000000000000000000024071500112024600234200ustar00rootroot00000000000000/* Romanian initialisation for the jQuery UI date picker plugin. * * Written by Edmond L. (ll_edmond@walla.com) * and Ionut G. Stan (ionut.g.stan@gmail.com) */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ro = { closeText: "ÃŽnchide", prevText: "Luna precedentă", nextText: "Luna următoare ", currentText: "Azi", monthNames: [ "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie" ], monthNamesShort: [ "Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec" ], dayNames: [ "Duminică", "Luni", "MarÅ£i", "Miercuri", "Joi", "Vineri", "Sâmbătă" ], dayNamesShort: [ "Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm" ], dayNamesMin: [ "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ" ], weekHeader: "Săpt", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ro ); return datepicker.regional.ro; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-ru.js000066400000000000000000000026361500112024600234320ustar00rootroot00000000000000/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Andrew Stromnov (stromnov@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.ru = { closeText: "Закрыть", prevText: "Пред", nextText: "След", currentText: "СегоднÑ", monthNames: [ "Январь", "Февраль", "Март", "Ðпрель", "Май", "Июнь", "Июль", "ÐвгуÑÑ‚", "СентÑбрь", "ОктÑбрь", "ÐоÑбрь", "Декабрь" ], monthNamesShort: [ "Янв", "Фев", "Мар", "Ðпр", "Май", "Июн", "Июл", "Ðвг", "Сен", "Окт", "ÐоÑ", "Дек" ], dayNames: [ "воÑкреÑенье", "понедельник", "вторник", "Ñреда", "четверг", "пÑтница", "Ñуббота" ], dayNamesShort: [ "вÑк", "пнд", "втр", "Ñрд", "чтв", "птн", "Ñбт" ], dayNamesMin: [ "Ð’Ñ", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб" ], weekHeader: "Ðед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.ru ); return datepicker.regional.ru; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-sk.js000066400000000000000000000023121500112024600234100ustar00rootroot00000000000000/* Slovak initialisation for the jQuery UI date picker plugin. */ /* Written by Vojtech Rinik (vojto@hmm.sk). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.sk = { closeText: "ZavrieÅ¥", prevText: "Predchádzajúci", nextText: "Nasledujúci", currentText: "Dnes", monthNames: [ "január", "február", "marec", "apríl", "máj", "jún", "júl", "august", "september", "október", "november", "december" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Máj", "Jún", "Júl", "Aug", "Sep", "Okt", "Nov", "Dec" ], dayNames: [ "nedeľa", "pondelok", "utorok", "streda", "Å¡tvrtok", "piatok", "sobota" ], dayNamesShort: [ "Ned", "Pon", "Uto", "Str", "Å tv", "Pia", "Sob" ], dayNamesMin: [ "Ne", "Po", "Ut", "St", "Å t", "Pia", "So" ], weekHeader: "Ty", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sk ); return datepicker.regional.sk; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-sl.js000066400000000000000000000023601500112024600234140ustar00rootroot00000000000000/* Slovenian initialisation for the jQuery UI date picker plugin. */ /* Written by Jaka Jancar (jaka@kubje.org). */ /* c = Ä, s = Å¡ z = ž C = ÄŒ S = Å  Z = Ž */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.sl = { closeText: "Zapri", prevText: "PrejÅ¡nji", nextText: "Naslednji", currentText: "Trenutni", monthNames: [ "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec" ], dayNames: [ "Nedelja", "Ponedeljek", "Torek", "Sreda", "ÄŒetrtek", "Petek", "Sobota" ], dayNamesShort: [ "Ned", "Pon", "Tor", "Sre", "ÄŒet", "Pet", "Sob" ], dayNamesMin: [ "Ne", "Po", "To", "Sr", "ÄŒe", "Pe", "So" ], weekHeader: "Teden", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sl ); return datepicker.regional.sl; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-sq.js000066400000000000000000000022701500112024600234210ustar00rootroot00000000000000/* Albanian initialisation for the jQuery UI date picker plugin. */ /* Written by Flakron Bytyqi (flakron@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.sq = { closeText: "mbylle", prevText: "mbrapa", nextText: "Përpara", currentText: "sot", monthNames: [ "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor" ], monthNamesShort: [ "Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Kor", "Gus", "Sht", "Tet", "Nën", "Dhj" ], dayNames: [ "E Diel", "E Hënë", "E Martë", "E Mërkurë", "E Enjte", "E Premte", "E Shtune" ], dayNamesShort: [ "Di", "Hë", "Ma", "Më", "En", "Pr", "Sh" ], dayNamesMin: [ "Di", "Hë", "Ma", "Më", "En", "Pr", "Sh" ], weekHeader: "Ja", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sq ); return datepicker.regional.sq; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-sr.js000066400000000000000000000025561500112024600234310ustar00rootroot00000000000000/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.sr = { closeText: "Затвори", prevText: "Претходна", nextText: "Следећи", currentText: "ДанаÑ", monthNames: [ "Јануар", "Фебруар", "Март", "Ðприл", "Мај", "Јун", "Јул", "ÐвгуÑÑ‚", "Септембар", "Октобар", "Ðовембар", "Децембар" ], monthNamesShort: [ "Јан", "Феб", "Мар", "Ðпр", "Мај", "Јун", "Јул", "Ðвг", "Сеп", "Окт", "Ðов", "Дец" ], dayNames: [ "Ðедеља", "Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота" ], dayNamesShort: [ "Ðед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб" ], dayNamesMin: [ "Ðе", "По", "Ут", "Ср", "Че", "Пе", "Су" ], weekHeader: "Сед", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sr ); return datepicker.regional.sr; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-sv.js000066400000000000000000000023061500112024600234260ustar00rootroot00000000000000/* Swedish initialisation for the jQuery UI date picker plugin. */ /* Written by Anders Ekdahl ( anders@nomadiz.se). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.sv = { closeText: "Stäng", prevText: "Förra", nextText: "Nästa", currentText: "Idag", monthNames: [ "januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december" ], monthNamesShort: [ "jan.", "feb.", "mars", "apr.", "maj", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "dec." ], dayNamesShort: [ "sön", "mÃ¥n", "tis", "ons", "tor", "fre", "lör" ], dayNames: [ "söndag", "mÃ¥ndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag" ], dayNamesMin: [ "sö", "mÃ¥", "ti", "on", "to", "fr", "lö" ], weekHeader: "Ve", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.sv ); return datepicker.regional.sv; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-th.js000066400000000000000000000030571500112024600234150ustar00rootroot00000000000000/* Thai initialisation for the jQuery UI date picker plugin. */ /* Written by pipo (pipo@sixhead.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.th = { closeText: "ปิด", prevText: "ย้อน", nextText: "ถัดไป", currentText: "วันนี้", monthNames: [ "มà¸à¸£à¸²à¸„ม", "à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "à¸à¸£à¸à¸Žà¸²à¸„ม", "สิงหาคม", "à¸à¸±à¸™à¸¢à¸²à¸¢à¸™", "ตุลาคม", "พฤศจิà¸à¸²à¸¢à¸™", "ธันวาคม" ], monthNamesShort: [ "ม.ค.", "à¸.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "à¸.ค.", "ส.ค.", "à¸.ย.", "ต.ค.", "พ.ย.", "ธ.ค." ], dayNames: [ "อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศุà¸à¸£à¹Œ", "เสาร์" ], dayNamesShort: [ "อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส." ], dayNamesMin: [ "อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส." ], weekHeader: "Wk", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.th ); return datepicker.regional.th; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-tr.js000066400000000000000000000022651500112024600234270ustar00rootroot00000000000000/* Turkish initialisation for the jQuery UI date picker plugin. */ /* Written by Izzet Emre Erkan (kara@karalamalar.net). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.tr = { closeText: "kapat", prevText: "geri", nextText: "ileri", currentText: "bugün", monthNames: [ "Ocak", "Åžubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "AÄŸustos", "Eylül", "Ekim", "Kasım", "Aralık" ], monthNamesShort: [ "Oca", "Åžub", "Mar", "Nis", "May", "Haz", "Tem", "AÄŸu", "Eyl", "Eki", "Kas", "Ara" ], dayNames: [ "Pazar", "Pazartesi", "Salı", "ÇarÅŸamba", "PerÅŸembe", "Cuma", "Cumartesi" ], dayNamesShort: [ "Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct" ], dayNamesMin: [ "Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct" ], weekHeader: "Hf", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.tr ); return datepicker.regional.tr; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-uk.js000066400000000000000000000030101500112024600234060ustar00rootroot00000000000000/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ /* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.uk = { closeText: "Закрити", prevText: "Попередній", nextText: "найближчий", currentText: "Сьогодні", monthNames: [ "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "ВереÑень", "Жовтень", "ЛиÑтопад", "Грудень" ], monthNamesShort: [ "Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "ЛиÑ", "Гру" ], dayNames: [ "неділÑ", "понеділок", "вівторок", "Ñереда", "четвер", "п’ÑтницÑ", "Ñубота" ], dayNamesShort: [ "нед", "пнд", "вів", "Ñрд", "чтв", "птн", "Ñбт" ], dayNamesMin: [ "Ðд", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб" ], weekHeader: "Тиж", dateFormat: "dd.mm.yy", firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.uk ); return datepicker.regional.uk; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-vi.js000066400000000000000000000025411500112024600234150ustar00rootroot00000000000000/* Vietnamese initialisation for the jQuery UI date picker plugin. */ /* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional.vi = { closeText: "Äóng", prevText: "Trước", nextText: "Tiếp", currentText: "Hôm nay", monthNames: [ "Tháng Má»™t", "Tháng Hai", "Tháng Ba", "Tháng Tư", "Tháng Năm", "Tháng Sáu", "Tháng Bảy", "Tháng Tám", "Tháng Chín", "Tháng Mưá»i", "Tháng Mưá»i Má»™t", "Tháng Mưá»i Hai" ], monthNamesShort: [ "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" ], dayNames: [ "Chá»§ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" ], dayNamesShort: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ], dayNamesMin: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ], weekHeader: "Tu", dateFormat: "dd/mm/yy", firstDay: 0, isRTL: false, showMonthAfterYear: false, yearSuffix: "" }; datepicker.setDefaults( datepicker.regional.vi ); return datepicker.regional.vi; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-zh-CN.js000066400000000000000000000024521500112024600237170ustar00rootroot00000000000000/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Cloudream (cloudream@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional[ "zh-CN" ] = { closeText: "关闭", prevText: "上月", nextText: "下月", currentText: "今天", monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "乿œˆ", "åæœˆ", "å一月", "å二月" ], monthNamesShort: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "乿œˆ", "åæœˆ", "å一月", "å二月" ], dayNames: [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ], dayNamesShort: [ "周日", "周一", "周二", "周三", "周四", "周五", "周六" ], dayNamesMin: [ "æ—¥", "一", "二", "三", "å››", "五", "å…­" ], weekHeader: "周", dateFormat: "yy-mm-dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "å¹´" }; datepicker.setDefaults( datepicker.regional[ "zh-CN" ] ); return datepicker.regional[ "zh-CN" ]; } ); redmine-6.0.5/app/assets/javascripts/i18n/datepicker-zh-TW.js000066400000000000000000000024521500112024600237510ustar00rootroot00000000000000/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } } )( function( datepicker ) { "use strict"; datepicker.regional[ "zh-TW" ] = { closeText: "關閉", prevText: "上個月", nextText: "下個月", currentText: "今天", monthNames: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "乿œˆ", "åæœˆ", "å一月", "å二月" ], monthNamesShort: [ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "乿œˆ", "åæœˆ", "å一月", "å二月" ], dayNames: [ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ], dayNamesShort: [ "週日", "週一", "週二", "週三", "週四", "週五", "週六" ], dayNamesMin: [ "æ—¥", "一", "二", "三", "å››", "五", "å…­" ], weekHeader: "週", dateFormat: "yy/mm/dd", firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: "å¹´" }; datepicker.setDefaults( datepicker.regional[ "zh-TW" ] ); return datepicker.regional[ "zh-TW" ]; } ); redmine-6.0.5/app/assets/javascripts/jquery-3.7.1-ui-1.13.3.js000066400000000000000000012347401500112024600232370ustar00rootroot00000000000000/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=N++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
")).children()[0],V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})):i.apply(this,arguments)},V.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,a=n-o,r=o+e.collisionWidth-s-n;e.collisionWidth>s?0n?0")[0],g=u.each;function m(t){return null==t?t+"":"object"==typeof t?d[F.call(t)]||"object":typeof t}function _(t,e,i){var s=Y[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function j(s){var n=p(),o=n._rgba=[];return s=s.toLowerCase(),g(R,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[f[e].cache]=i[f[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&u.extend(o,y.transparent),n):y[s]}function v(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}t.style.cssText="background-color:rgba(1,1,1,.5)",B.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=_((n-s)*a+s,e)))}),this[t](l)},blend:function(t){var e,i,s;return 1===this._rgba[3]?this:(e=this._rgba.slice(),i=e.pop(),s=p(t)._rgba,p(u.map(e,function(t,e){return(1-i)*s[e]+i*t})))},toRgbaString:function(){var t="rgba(",e=u.map(this._rgba,function(t,e){return null!=t?t:2
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.3",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){var s;return 0===e?{height:0,width:0,outerHeight:0,outerWidth:0}:(s="horizontal"!==i?(e||100)/100:1,i="vertical"!==i?(e||100)/100:1,{height:t.height()*i,width:t.width()*s,outerHeight:t.outerHeight()*i,outerWidth:t.outerWidth()*s})},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(w+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=w+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-o,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(r,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=et(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},b={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){b[t]=function(t){return Math.pow(t,e+2)}}),V.extend(b,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(b,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});t=V.effects;V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,o="show"===o,r=t.direction||"up",l=t.distance,h=t.times||5,c=2*h+(o||a?1:0),u=t.duration/c,d=t.easing,p="up"===r||"down"===r?"top":"left",f="up"===r||"left"===r,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),r=n.css(p),l=l||n["top"==p?"outerHeight":"outerWidth"]()/3,o&&((s={opacity:1})[p]=r,n.css("opacity",0).css(p,f?2*-l:2*l).animate(s,u,d)),a&&(l/=Math.pow(2,h-1)),(s={})[p]=r;g").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,s="hide"===s,o=e.size||15,a=/([0-9]+)%/.exec(o),r=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,h=V.effects.createPlaceholder(i),c=i.cssClip(),u={clip:V.extend({},c)},d={clip:V.extend({},c)},p=[c[r[0]],c[r[1]]],f=i.queue().length;a&&(o=parseInt(a[1],10)/100*p[s?0:1]),u.clip[r[0]]=o,d.clip[r[0]]=o,d.clip[r[1]]=0,n&&(i.cssClip(d.clip),h&&h.css(V.effects.clipToBox(d)),d.clip=c),i.queue(function(t){h&&h.animate(V.effects.clipToBox(u),l,e.easing).animate(V.effects.clipToBox(d),l,e.easing),t()}).animate(u,l,e.easing).animate(d,l,e.easing).queue(t),V.effects.unshift(i,f,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(r=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*r.y+d.top,f.left=(p.outerWidth-f.outerWidth)*r.x+d.left,g.top=(p.outerHeight-g.outerHeight)*r.y+d.top,g.left=(p.outerWidth-g.outerWidth)*r.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),i=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(i.from.opacity=1,i.to.opacity=0),V.effects.effect.size.call(this,i,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"===t?this._activate(e):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e)&&this._createIcons())},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,r)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(a=i.children(".ui-accordion-header-icon"),this._removeClass(a,null,e.icons.activeHeader)._addClass(a,null,e.icons.header)),n)||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(t=s.children(".ui-accordion-header-icon"),this._removeClass(t,null,e.icons.header)._addClass(t,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active"))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){function s(){o._toggleComplete(e)}var n,o=this,a=0,r=t.css("box-sizing"),l=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
    ").text(i))},100)))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==V.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=V("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
    ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){var e;return!!t.length&&("inherit"===(e=t.prop("contentEditable"))?this._isContentEditable(t.parent()):"true"===e)}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),V.ui.autocomplete;var it,st,nt,ot,S,at=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.13.3",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};t&&("controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),a=a.concat(e.get())):V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(at,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}}),V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.13.3",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("
    ").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+V.escapeSelector(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(this)._form().length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),V.ui.checkboxradio,V.widget("ui.button",{version:"1.13.3",defaultElement:"
    "+(0
    ":""):"")}h+=d}return h+=T,t._keyEvent=!1,h},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
    ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),i=i&&e=s.getTime())&&(!n||e.getTime()<=n.getTime())&&(!o||e.getFullYear()>=o)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);s=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),s,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new rt,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.3";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var z=!1;V(document).on("mouseup",function(){z=!1}),V.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){var e,i,s;if(!z)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),i=1===(this._mouseDownEvent=t).which,s=!("string"!=typeof(e=this).options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(t)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?t.preventDefault():(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),z=!0)),!0},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,z=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3])&&(a=i[3]+this.offset.click.top),s.grid&&(e=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||e-this.offset.click.top>=i[1]||e-this.offset.click.top>i[3]?e:e-this.offset.click.top>=i[1]?e-s.grid[1]:e+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis)?this.originalPageY:a)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,e=e?0:o.sizeDiff.width,e={width:o.helper.width()-e,height:o.helper.height()-i},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper)&&!n.animate&&this._proportionallyResize(),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(t=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,e=n.maxHeight*this.aspectRatio,s=n.maxWidth/this.aspectRatio,n.minWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,n=n?0:i.sizeDiff.width,n={width:i.size.width-n,height:i.size.height-o},o=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,a=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,a&&o?{top:a,left:o}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n=V(this).resizable("instance"),o=n.options,a=n.element,o=o.containment,a=o instanceof V?o.get(0):/parent/.test(o)?a.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},o=n.containerOffset,e=n.containerSize.height,t=n.containerSize.width,t=n._hasScroll(a,"left")?a.scrollWidth:t,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:o.left,top:o.top,width:t,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,t=e._aspectRatio||t.shiftKey,o={top:0,left:0},a=e.containerElement,r=!0;a[0]!==document&&/static/.test(a.css("position"))&&(o=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-o.left),t&&(e.size.height=e.size.width/e.aspectRatio,r=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,r=!1),e.position.top=e._helper?s.top:0),a=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),a&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-o.left:e.offset.left-s.left)),a=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-o.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,t)&&(e.size.height=e.size.width/e.aspectRatio,r=!1),a+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-a,t)&&(e.size.width=e.size.height*e.aspectRatio,r=!1),r||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.css("width")),height:parseFloat(t.css("height")),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,s=Math.round((s.height-n.height)/h)*h,u=n.width+c,d=n.height+s,p=i.maxWidth&&i.maxWidthu,m=i.minHeight&&i.minHeight>d;i.grid=r,g&&(u+=l),m&&(d+=h),p&&(u-=l),f&&(d-=h),/^(se|s|e)$/.test(a)?(e.size.width=u,e.size.height=d):/^(ne)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.top=o.top-s):/^(sw)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.left=o.left-c):((d-h<=0||u-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){var e,i,s;this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE?(t.preventDefault(),this.close(t)):t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i)&&e&&this._makeDraggable(),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t)&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title"))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
    ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||(e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i&&"3.6."!==i)||e._delay(e._restoreTabbableFocus)}.bind(this)),this.overlay=V("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),V.ui.dialog;function ct(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.3",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){var t,n,o,a,r,l,h;if(this.dragged=!0,!this.options.disabled)return o=(n=this).options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY,l",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
      ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
      ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
    • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
    • "),s=V("
      ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),e.hidden?i.prop("hidden",!0):this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(t){!this.isOpen||V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t)}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1===t?this.button.css("width",""):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:i.prop("hidden")||t.prop("hidden"),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.3",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
      ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax()?this._valueMax():(e=0=e&&(i+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1!==this._start(t,n)))break;return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var O;V.ui.spinner,V.widget("ui.tabs",{version:"1.13.3",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(O=/#.*$/,function(t){var e=t.href.replace(O,""),i=location.href.replace(O,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
      ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),V.ui.tabs,V.widget("ui.tooltip",{version:"1.13.3",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
      ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,s.is(":hidden")||s.position(a)}i&&((o=this._find(e))?o.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),o=this._tooltip(e),s=o.tooltip,this._addDescribedBy(e,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=V("
      ").html(s.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(V.extend({of:e},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(a.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:s})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding)||(n.closing=!1)):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
      ").attr("role","tooltip"),i=V("
      ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),V.ui.tooltip});redmine-6.0.5/app/assets/javascripts/jstoolbar/000077500000000000000000000000001500112024600215465ustar00rootroot00000000000000redmine-6.0.5/app/assets/javascripts/jstoolbar/common_mark.js000066400000000000000000000117341500112024600244140ustar00rootroot00000000000000/** * This file is part of DotClear. * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All rights reserved. * This code is released under the GNU General Public License. * * Modified by JP LANG for common_mark formatting */ // strong jsToolBar.prototype.elements.strong = { type: 'button', title: 'Strong', shortcut: 'b', fn: { wiki: function() { this.singleTag('**') } } } // em jsToolBar.prototype.elements.em = { type: 'button', title: 'Italic', shortcut: 'i', fn: { wiki: function() { this.singleTag("*") } } } // u jsToolBar.prototype.elements.ins = { type: 'button', title: 'Underline', shortcut: 'u', fn: { wiki: function() { this.singleTag('', '') } } } // del jsToolBar.prototype.elements.del = { type: 'button', title: 'Deleted', fn: { wiki: function() { this.singleTag('~~') } } } // code jsToolBar.prototype.elements.code = { type: 'button', title: 'Code', fn: { wiki: function() { this.singleTag('`') } } } // spacer jsToolBar.prototype.elements.space1 = {type: 'space'} // headings jsToolBar.prototype.elements.h1 = { type: 'button', title: 'Heading 1', fn: { wiki: function() { this.encloseLineSelection('# ', '',function(str) { str = str.replace(/^#+\s+/, '') return str; }); } } } jsToolBar.prototype.elements.h2 = { type: 'button', title: 'Heading 2', fn: { wiki: function() { this.encloseLineSelection('## ', '',function(str) { str = str.replace(/^#+\s+/, '') return str; }); } } } jsToolBar.prototype.elements.h3 = { type: 'button', title: 'Heading 3', fn: { wiki: function() { this.encloseLineSelection('### ', '',function(str) { str = str.replace(/^#+\s+/, '') return str; }); } } } // spacer jsToolBar.prototype.elements.space2 = {type: 'space'} // ul jsToolBar.prototype.elements.ul = { type: 'button', title: 'Unordered list', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)[#-]?\s*/g,"$1* "); }); } } } // ol jsToolBar.prototype.elements.ol = { type: 'button', title: 'Ordered list', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)[*-]?\s*/g,"$11. "); }); } } } // tl jsToolBar.prototype.elements.tl = { type: 'button', title: 'Task list', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)[*-]?\s*/g,"$1* [ ] "); }); } } } // spacer jsToolBar.prototype.elements.space3 = {type: 'space'} // bq jsToolBar.prototype.elements.bq = { type: 'button', title: 'Quote', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)( *)([^\n]*)/g,"$1> $2$3"); }); } } } // unbq jsToolBar.prototype.elements.unbq = { type: 'button', title: 'Unquote', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^) *(> ?)?( *)([^\n]*)/g,"$1$3$4"); }); } } } // table jsToolBar.prototype.elements.table = { type: 'button', title: 'Table', fn: { wiki: function() { var This = this; this.tableMenu(function(cols, rowCount){ This.encloseLineSelection( '|'+cols.join(' |')+' |\n' + // header Array(cols.length+1).join('|--')+'|\n' + // second line Array(rowCount+1).join(Array(cols.length+1).join('| ')+'|\n') // cells ); }); } } } // pre jsToolBar.prototype.elements.pre = { type: 'button', title: 'Preformatted text', fn: { wiki: function() { this.encloseLineSelection('```\n', '\n```') } } } // Code highlighting jsToolBar.prototype.elements.precode = { type: 'button', title: 'Highlighted code', fn: { wiki: function() { var This = this; this.precodeMenu(function(lang){ This.encloseLineSelection('``` ' + lang + '\n', '\n```\n'); }); } } } // spacer jsToolBar.prototype.elements.space4 = {type: 'space'} // wiki page jsToolBar.prototype.elements.link = { type: 'button', title: 'Wiki link', fn: { wiki: function() { this.encloseSelection("[[", "]]") } } } // image jsToolBar.prototype.elements.img = { type: 'button', title: 'Image', fn: { wiki: function() { this.encloseSelection("![](", ")") } } } // spacer jsToolBar.prototype.elements.space5 = {type: 'space'} // help jsToolBar.prototype.elements.help = { type: 'button', title: 'Help', fn: { wiki: function() { window.open(this.help_link, '', 'resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes') } } } redmine-6.0.5/app/assets/javascripts/jstoolbar/jstoolbar.js000066400000000000000000000422701500112024600241100ustar00rootroot00000000000000/** * This file is part of DotClear. * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All rights reserved. * This code is released under the GNU General Public License. * * Modified by JP LANG for multiple text formatting */ let lastJstPreviewed = null; const isMac = Boolean(navigator.platform.toLowerCase().match(/mac/)); function jsToolBar(textarea) { if (!document.createElement) { return; } if (!textarea) { return; } if ((typeof(document["selection"]) == "undefined") && (typeof(textarea["setSelectionRange"]) == "undefined")) { return; } this.textarea = textarea; this.toolbarBlock = document.createElement('div'); this.toolbarBlock.className = 'jstBlock'; this.textarea.parentNode.insertBefore(this.toolbarBlock, this.textarea); this.editor = document.createElement('div'); this.editor.className = 'jstEditor'; this.preview = document.createElement('div'); this.preview.className = 'wiki wiki-preview hidden'; this.preview.setAttribute('id', 'preview_' + textarea.getAttribute('id')); this.editor.appendChild(this.textarea); this.editor.appendChild(this.preview); this.tabsBlock = document.createElement('div'); this.tabsBlock.className = 'jstTabs tabs'; var This = this; this.textarea.onkeydown = function(event) { This.keyboardShortcuts.call(This, event); }; this.editTab = new jsTab('Edit', true); this.editTab.onclick = function(event) { This.hidePreview.call(This, event); return false; }; this.previewTab = new jsTab('Preview'); this.previewTab.onclick = function(event) { This.showPreview.call(This, event); return false; }; var elementsTab = document.createElement('li'); elementsTab.classList = 'tab-elements'; var tabs = document.createElement('ul'); tabs.appendChild(this.editTab); tabs.appendChild(this.previewTab); tabs.appendChild(elementsTab); this.tabsBlock.appendChild(tabs); this.toolbar = document.createElement("div"); this.toolbar.className = 'jstElements'; elementsTab.appendChild(this.toolbar); this.toolbarBlock.appendChild(this.tabsBlock); this.toolbarBlock.appendChild(this.editor); // Dragable resizing if (this.editor.addEventListener && navigator.appVersion.match(/\bMSIE\b/)) { this.handle = document.createElement('div'); this.handle.className = 'jstHandle'; var dragStart = this.resizeDragStart; var This = this; this.handle.addEventListener('mousedown',function(event) { dragStart.call(This,event); },false); // fix memory leak in Firefox (bug #241518) window.addEventListener('unload',function() { var del = This.handle.parentNode.removeChild(This.handle); delete(This.handle); },false); this.editor.parentNode.insertBefore(this.handle,this.editor.nextSibling); } this.context = null; this.toolNodes = {}; // lorsque la toolbar est dessinée , cet objet est garni // de raccourcis vers les éléments DOM correspondants aux outils. } function jsTab(name, selected) { selected = selected || false; if(typeof jsToolBar.strings == 'undefined') { var tabName = name || null; } else { var tabName = jsToolBar.strings[name] || name || null; } var tab = document.createElement('li'); var link = document.createElement('a'); link.setAttribute('href', '#'); link.innerText = tabName; link.className = 'tab-' + name.toLowerCase(); if (selected == true) { link.classList.add('selected'); } tab.appendChild(link) return tab; } function jsButton(title, fn, scope, className) { if(typeof jsToolBar.strings == 'undefined') { this.title = title || null; } else { this.title = jsToolBar.strings[title] || title || null; } this.fn = fn || function(){}; this.scope = scope || null; this.className = className || null; } jsButton.prototype.draw = function() { if (!this.scope) return null; var button = document.createElement('button'); button.setAttribute('type','button'); button.tabIndex = 200; if (this.className) button.className = this.className; button.title = this.title; var span = document.createElement('span'); span.appendChild(document.createTextNode(this.title)); button.appendChild(span); if (this.icon != undefined) { button.style.backgroundImage = 'url('+this.icon+')'; } if (typeof(this.fn) == 'function') { var This = this; button.onclick = function() { try { This.fn.apply(This.scope, arguments) } catch (e) {} return false; }; } return button; } function jsSpace(className) { this.className = className || null; this.width = null; } jsSpace.prototype.draw = function() { var span = document.createElement('span'); span.appendChild(document.createTextNode(String.fromCharCode(160))); span.className = 'jstSpacer' + (this.className ? ' ' + this.className : ''); if (this.width) span.style.marginRight = this.width+'px'; return span; } function jsCombo(title, options, scope, fn, className) { this.title = title || null; this.options = options || null; this.scope = scope || null; this.fn = fn || function(){}; this.className = className || null; } jsCombo.prototype.draw = function() { if (!this.scope || !this.options) return null; var select = document.createElement('select'); if (this.className) select.className = className; select.title = this.title; for (var o in this.options) { //var opt = this.options[o]; var option = document.createElement('option'); option.value = o; option.appendChild(document.createTextNode(this.options[o])); select.appendChild(option); } var This = this; select.onchange = function() { try { This.fn.call(This.scope, this.value); } catch (e) { alert(e); } return false; } return select; } jsToolBar.prototype = { base_url: '', mode: 'wiki', elements: {}, help_link: '', shortcuts: {}, getMode: function() { return this.mode; }, setMode: function(mode) { this.mode = mode || 'wiki'; }, switchMode: function(mode) { mode = mode || 'wiki'; this.draw(mode); }, setHelpLink: function(link) { this.help_link = link; }, setPreviewUrl: function(url) { this.previewTab.firstChild.setAttribute('data-url', url); }, button: function(toolName) { var tool = this.elements[toolName]; if (typeof tool.fn[this.mode] != 'function') return null; const className = 'jstb_' + toolName; let title = tool.title if (tool.hasOwnProperty('shortcut')) { this.shortcuts[tool.shortcut] = className; title = this.buttonTitleWithShortcut(tool.title, tool.shortcut) } var b = new jsButton(title, tool.fn[this.mode], this, className); if (tool.icon != undefined) b.icon = tool.icon; return b; }, buttonTitleWithShortcut: function(title, shortcutKey) { if(typeof jsToolBar.strings == 'undefined') { var i18nTitle = title || null; } else { var i18nTitle = jsToolBar.strings[title] || title || null; } if (isMac) { return i18nTitle + " (⌘" + shortcutKey.toUpperCase() + ")"; } else { return i18nTitle + " (Ctrl+" + shortcutKey.toUpperCase() + ")"; } }, space: function(toolName) { var tool = new jsSpace(toolName) if (this.elements[toolName].width !== undefined) tool.width = this.elements[toolName].width; return tool; }, combo: function(toolName) { var tool = this.elements[toolName]; var length = tool[this.mode].list.length; if (typeof tool[this.mode].fn != 'function' || length == 0) { return null; } else { var options = {}; for (var i=0; i < length; i++) { var opt = tool[this.mode].list[i]; options[opt] = tool.options[opt]; } return new jsCombo(tool.title, options, this, tool[this.mode].fn); } }, draw: function(mode) { this.setMode(mode); // Empty toolbar while (this.toolbar.hasChildNodes()) { this.toolbar.removeChild(this.toolbar.firstChild) } this.toolNodes = {}; // vide les raccourcis DOM/**/ // Draw toolbar elements var b, tool, newTool; for (var i in this.elements) { b = this.elements[i]; var disabled = b.type == undefined || b.type == '' || (b.disabled != undefined && b.disabled) || (b.context != undefined && b.context != null && b.context != this.context); if (!disabled && typeof this[b.type] == 'function') { tool = this[b.type](i); if (tool) newTool = tool.draw(); if (newTool) { this.toolNodes[i] = newTool; //mémorise l'accès DOM pour usage éventuel ultérieur this.toolbar.appendChild(newTool); } } } }, singleTag: function(stag,etag) { stag = stag || null; etag = etag || stag; if (!stag || !etag) { return; } this.encloseSelection(stag,etag); }, encloseLineSelection: function(prefix, suffix, fn) { this.textarea.focus(); prefix = prefix || ''; suffix = suffix || ''; var start, end, sel, scrollPos, subst, res; if (typeof(document["selection"]) != "undefined") { sel = document.selection.createRange().text; } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { start = this.textarea.selectionStart; end = this.textarea.selectionEnd; scrollPos = this.textarea.scrollTop; // go to the start of the line start = this.textarea.value.substring(0, start).replace(/[^\r\n]*$/g,'').length; // go to the end of the line end = this.textarea.value.length - this.textarea.value.substring(end, this.textarea.value.length).replace(/^[^\r\n]*/, '').length; sel = this.textarea.value.substring(start, end); } if (sel.match(/ $/)) { // exclude ending space char, if any sel = sel.substring(0, sel.length - 1); suffix = suffix + " "; } if (typeof(fn) == 'function') { res = (sel) ? fn.call(this,sel) : fn(''); } else { res = (sel) ? sel : ''; } subst = prefix + res + suffix; if (typeof(document["selection"]) != "undefined") { document.selection.createRange().text = subst; var range = this.textarea.createTextRange(); range.collapse(false); range.move('character', -suffix.length); range.select(); } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { this.textarea.value = this.textarea.value.substring(0, start) + subst + this.textarea.value.substring(end); if (sel || (!prefix && start === end)) { this.textarea.setSelectionRange(start + subst.length, start + subst.length); } else { this.textarea.setSelectionRange(start + prefix.length, start + prefix.length); } this.textarea.scrollTop = scrollPos; } }, encloseSelection: function(prefix, suffix, fn) { this.textarea.focus(); prefix = prefix || ''; suffix = suffix || ''; var start, end, sel, scrollPos, subst, res; if (typeof(document["selection"]) != "undefined") { sel = document.selection.createRange().text; } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { start = this.textarea.selectionStart; end = this.textarea.selectionEnd; scrollPos = this.textarea.scrollTop; sel = this.textarea.value.substring(start, end); if (start > 0 && this.textarea.value.substr(start-1, 1).match(/\S/)) { prefix = ' ' + prefix; } if (this.textarea.value.substr(end, 1).match(/\S/)) { suffix = suffix + ' '; } } if (sel.match(/ $/)) { // exclude ending space char, if any sel = sel.substring(0, sel.length - 1); suffix = suffix + " "; } if (typeof(fn) == 'function') { res = (sel) ? fn.call(this,sel) : fn(''); } else { res = (sel) ? sel : ''; } subst = prefix + res + suffix; if (typeof(document["selection"]) != "undefined") { document.selection.createRange().text = subst; var range = this.textarea.createTextRange(); range.collapse(false); range.move('character', -suffix.length); range.select(); // this.textarea.caretPos -= suffix.length; } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { this.textarea.value = this.textarea.value.substring(0, start) + subst + this.textarea.value.substring(end); if (sel) { this.textarea.setSelectionRange(start + subst.length, start + subst.length); } else { this.textarea.setSelectionRange(start + prefix.length, start + prefix.length); } this.textarea.scrollTop = scrollPos; } }, showPreview: function(event) { if (event.target.classList.contains('selected')) { return; } lastJstPreviewed = this.toolbarBlock; this.preview.setAttribute('style', 'min-height: ' + this.textarea.clientHeight + 'px;') this.toolbar.classList.add('hidden'); this.textarea.classList.add('hidden'); this.preview.classList.remove('hidden'); this.tabsBlock.querySelector('.tab-edit').classList.remove('selected'); event.target.classList.add('selected'); }, hidePreview: function(event) { if (event.target.classList.contains('selected')) { return; } this.toolbar.classList.remove('hidden'); this.textarea.classList.remove('hidden'); this.textarea.focus(); this.preview.classList.add('hidden'); this.tabsBlock.querySelector('.tab-preview').classList.remove('selected'); event.target.classList.add('selected'); }, keyboardShortcuts: function(e) { let stop = false; if (isToogleEditPreviewShortcut(e)) { // Switch to preview only if Edit tab is selected when the event triggers. if (this.tabsBlock.querySelector('.tab-edit.selected')) { stop = true this.tabsBlock.querySelector('.tab-preview').click(); } } if (isModifierKey(e) && this.shortcuts.hasOwnProperty(e.key.toLowerCase())) { stop = true this.toolbar.querySelector("." + this.shortcuts[e.key.toLowerCase()]).click(); } if (stop) { e.stopPropagation(); e.preventDefault(); } }, stripBaseURL: function(url) { if (this.base_url != '') { var pos = url.indexOf(this.base_url); if (pos == 0) { url = url.substr(this.base_url.length); } } return url; } }; /** Resizer -------------------------------------------------------- */ jsToolBar.prototype.resizeSetStartH = function() { this.dragStartH = this.textarea.offsetHeight + 0; }; jsToolBar.prototype.resizeDragStart = function(event) { var This = this; this.dragStartY = event.clientY; this.resizeSetStartH(); document.addEventListener('mousemove', this.dragMoveHdlr=function(event){This.resizeDragMove(event);}, false); document.addEventListener('mouseup', this.dragStopHdlr=function(event){This.resizeDragStop(event);}, false); }; jsToolBar.prototype.resizeDragMove = function(event) { this.textarea.style.height = (this.dragStartH+event.clientY-this.dragStartY)+'px'; }; jsToolBar.prototype.resizeDragStop = function(event) { document.removeEventListener('mousemove', this.dragMoveHdlr, false); document.removeEventListener('mouseup', this.dragStopHdlr, false); }; /* Code highlighting menu */ jsToolBar.prototype.precodeMenu = function(fn){ var hlLanguages = window.userHlLanguages; var menu = $("
        "); for (var i = 0; i < hlLanguages.length; i++) { var langItem = $('
        ').text(hlLanguages[i]); $("
      • ").html(langItem).appendTo(menu).mousedown(function(){ fn($(this).text()); }); } $("body").append(menu); menu.menu().width(150).position({ my: "left top", at: "left bottom", of: this.toolNodes['precode'] }); $(document).on("mousedown", function() { menu.remove(); }); return false; }; /* Table generator */ jsToolBar.prototype.tableMenu = function(fn){ var alphabets = "ABCDEFGHIJ".split(''); var menu = $("
        "); for (var r = 1; r <= 5; r++) { var row = $("").appendTo(menu); for (var c = 1; c <= 10; c++) { $("").mousedown(function(){ fn(alphabets.slice(0, $(this).data('col')), $(this).data('row')); }).hover(function(){ var hoverRow = $(this).data('row'); var hoverCol = $(this).data('col'); $(this).closest('table').find('td').each(function(_index, element){ if ($(element).data('row') <= hoverRow && $(element).data('col') <= hoverCol){ $(element).addClass('selected-cell'); } else { $(element).removeClass('selected-cell'); } }); }).appendTo(row); } } $("body").append(menu); menu.position({ my: "left top", at: "left bottom", of: this.toolNodes['table'] }); $(document).on("mousedown", function() { menu.remove(); }); return false; }; $(document).keydown(function(e) { if (isToogleEditPreviewShortcut(e)) { if (lastJstPreviewed !== null) { e.preventDefault(); e.stopPropagation(); lastJstPreviewed.querySelector('.tab-edit').click(); lastJstPreviewed = null; } } }); function isToogleEditPreviewShortcut(e) { if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.key.toLowerCase() === 'p') { return true; } else { return false; } } function isModifierKey(e) { if (isMac && e.metaKey) { return true; } else if (!isMac && e.ctrlKey) { return true; } else { return false; } } redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/000077500000000000000000000000001500112024600224675ustar00rootroot00000000000000redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ar.js000066400000000000000000000017521500112024600254310ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'قوي'; jsToolBar.strings['Italic'] = 'مائل'; jsToolBar.strings['Underline'] = 'تسطير'; jsToolBar.strings['Deleted'] = 'محذوÙ'; jsToolBar.strings['Code'] = 'رمز ضمني'; jsToolBar.strings['Heading 1'] = 'عنوان 1'; jsToolBar.strings['Heading 2'] = 'عنوان 2'; jsToolBar.strings['Heading 3'] = 'عنوان 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'قائمة غير مرتبة'; jsToolBar.strings['Ordered list'] = 'قائمة مرتبة'; jsToolBar.strings['Quote'] = 'اقتباس'; jsToolBar.strings['Unquote'] = 'إزالة الاقتباس'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'نص مسبق التنسيق'; jsToolBar.strings['Wiki link'] = 'رابط الى ØµÙØ­Ø© ويكي'; jsToolBar.strings['Image'] = 'صورة'; jsToolBar.strings['Edit'] = 'تعديل'; jsToolBar.strings['Preview'] = 'معاينة'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-az.js000066400000000000000000000016241500112024600254370ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'RedaktÉ™ etmÉ™k'; jsToolBar.strings['Preview'] = 'İlkin baxış'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-bg.js000066400000000000000000000021171500112024600254130ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Получер'; jsToolBar.strings['Italic'] = 'КурÑив'; jsToolBar.strings['Underline'] = 'Подчертан'; jsToolBar.strings['Deleted'] = 'Изтрит'; jsToolBar.strings['Code'] = 'Вграден код'; jsToolBar.strings['Heading 1'] = 'Заглавие 1'; jsToolBar.strings['Heading 2'] = 'Заглавие 2'; jsToolBar.strings['Heading 3'] = 'Заглавие 3'; jsToolBar.strings['Highlighted code'] = 'Вграден код'; jsToolBar.strings['Unordered list'] = 'Ðеподреден ÑпиÑък'; jsToolBar.strings['Ordered list'] = 'Подреден ÑпиÑък'; jsToolBar.strings['Quote'] = 'Цитат'; jsToolBar.strings['Unquote'] = 'Премахване на цитат'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Форматиран текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'Връзка до Wiki Ñтраница'; jsToolBar.strings['Image'] = 'Изображение'; jsToolBar.strings['Edit'] = 'РедакциÑ'; jsToolBar.strings['Preview'] = 'Преглед'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-bs.js000066400000000000000000000014631500112024600254320ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link na Wiki stranicu'; jsToolBar.strings['Image'] = 'Slika'; jsToolBar.strings['Edit'] = 'Ispravka'; jsToolBar.strings['Preview'] = 'Pregled'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ca.js000066400000000000000000000016641500112024600254140ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negreta'; jsToolBar.strings['Italic'] = 'Cursiva'; jsToolBar.strings['Underline'] = 'Subratllat'; jsToolBar.strings['Deleted'] = 'Barrat'; jsToolBar.strings['Code'] = 'Codi en línia'; jsToolBar.strings['Heading 1'] = 'Encapçalament 1'; jsToolBar.strings['Heading 2'] = 'Encapçalament 2'; jsToolBar.strings['Heading 3'] = 'Encapçalament 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Llista sense ordre'; jsToolBar.strings['Ordered list'] = 'Llista ordenada'; jsToolBar.strings['Quote'] = 'Cometes'; jsToolBar.strings['Unquote'] = 'Sense cometes'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Text formatat'; jsToolBar.strings['Wiki link'] = 'Enllaça a una pàgina Wiki'; jsToolBar.strings['Image'] = 'Imatge'; jsToolBar.strings['Edit'] = 'Editar'; jsToolBar.strings['Preview'] = 'Previsualitzar'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-cs.js000066400000000000000000000016671500112024600254410ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'TuÄné'; jsToolBar.strings['Italic'] = 'Kurzíva'; jsToolBar.strings['Underline'] = 'Podtržené'; jsToolBar.strings['Deleted'] = 'PÅ™eÅ¡krtnuté '; jsToolBar.strings['Code'] = 'VnoÅ™ený kód'; jsToolBar.strings['Heading 1'] = 'Nadpis 1'; jsToolBar.strings['Heading 2'] = 'Nadpis 2'; jsToolBar.strings['Heading 3'] = 'Nadpis 3'; jsToolBar.strings['Highlighted code'] = 'ZvýraznÄ›ný kód'; jsToolBar.strings['Unordered list'] = 'Seznam'; jsToolBar.strings['Ordered list'] = 'Uspořádaný seznam'; jsToolBar.strings['Quote'] = 'Citace'; jsToolBar.strings['Unquote'] = 'Odstranit citaci'; jsToolBar.strings['Table'] = 'Tabulka'; jsToolBar.strings['Preformatted text'] = 'PÅ™edformátovaný text'; jsToolBar.strings['Wiki link'] = 'Vložit odkaz na Wiki stránku'; jsToolBar.strings['Image'] = 'Vložit obrázek'; jsToolBar.strings['Edit'] = 'Upravit'; jsToolBar.strings['Preview'] = 'Náhled'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-da.js000066400000000000000000000016421500112024600254110ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Fed'; jsToolBar.strings['Italic'] = 'Kursiv'; jsToolBar.strings['Underline'] = 'Understreget'; jsToolBar.strings['Deleted'] = 'Slettet'; jsToolBar.strings['Code'] = 'Inline-kode'; jsToolBar.strings['Heading 1'] = 'Overskrift 1'; jsToolBar.strings['Heading 2'] = 'Overskrift 2'; jsToolBar.strings['Heading 3'] = 'Overskrift 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unummereret liste'; jsToolBar.strings['Ordered list'] = 'Nummereret liste'; jsToolBar.strings['Quote'] = 'Citér'; jsToolBar.strings['Unquote'] = 'Fjern citér'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Præformateret tekst'; jsToolBar.strings['Wiki link'] = 'Link til en wiki-side'; jsToolBar.strings['Image'] = 'Billede'; jsToolBar.strings['Edit'] = 'Ret'; jsToolBar.strings['Preview'] = 'ForhÃ¥ndsvisning'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-de.js000066400000000000000000000017321500112024600254150ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Fett'; jsToolBar.strings['Italic'] = 'Kursiv'; jsToolBar.strings['Underline'] = 'Unterstrichen'; jsToolBar.strings['Deleted'] = 'Durchgestrichen'; jsToolBar.strings['Code'] = 'Quelltext'; jsToolBar.strings['Heading 1'] = 'Überschrift 1. Ordnung'; jsToolBar.strings['Heading 2'] = 'Überschrift 2. Ordnung'; jsToolBar.strings['Heading 3'] = 'Überschrift 3. Ordnung'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Aufzählungsliste'; jsToolBar.strings['Ordered list'] = 'Nummerierte Liste'; jsToolBar.strings['Quote'] = 'Zitat'; jsToolBar.strings['Unquote'] = 'Zitat entfernen'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Präformatierter Text'; jsToolBar.strings['Wiki link'] = 'Verweis (Link) zu einer Wiki-Seite'; jsToolBar.strings['Image'] = 'Grafik'; jsToolBar.strings['Edit'] = 'Bearbeiten'; jsToolBar.strings['Preview'] = 'Vorschau'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-en-gb.js000066400000000000000000000016021500112024600260110ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'Edit'; jsToolBar.strings['Preview'] = 'Preview'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-en.js000066400000000000000000000016021500112024600254230ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'Edit'; jsToolBar.strings['Preview'] = 'Preview'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-es-pa.js000066400000000000000000000016441500112024600260340ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negrita'; jsToolBar.strings['Italic'] = 'Itálica'; jsToolBar.strings['Underline'] = 'Subrayado'; jsToolBar.strings['Deleted'] = 'Tachado'; jsToolBar.strings['Code'] = 'Código fuente'; jsToolBar.strings['Heading 1'] = 'Encabezado 1'; jsToolBar.strings['Heading 2'] = 'Encabezado 2'; jsToolBar.strings['Heading 3'] = 'Encabezado 3'; jsToolBar.strings['Highlighted code'] = 'Código resaltado'; jsToolBar.strings['Unordered list'] = 'Lista sin ordenar'; jsToolBar.strings['Ordered list'] = 'Lista ordenada'; jsToolBar.strings['Quote'] = 'Citar'; jsToolBar.strings['Unquote'] = 'Quitar cita'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Texto con formato'; jsToolBar.strings['Wiki link'] = 'Enlace a página Wiki'; jsToolBar.strings['Image'] = 'Imagen'; jsToolBar.strings['Edit'] = 'Modificar'; jsToolBar.strings['Preview'] = 'Previsualizar'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-es.js000066400000000000000000000016441500112024600254360ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negrita'; jsToolBar.strings['Italic'] = 'Itálica'; jsToolBar.strings['Underline'] = 'Subrayado'; jsToolBar.strings['Deleted'] = 'Tachado'; jsToolBar.strings['Code'] = 'Código fuente'; jsToolBar.strings['Heading 1'] = 'Encabezado 1'; jsToolBar.strings['Heading 2'] = 'Encabezado 2'; jsToolBar.strings['Heading 3'] = 'Encabezado 3'; jsToolBar.strings['Highlighted code'] = 'Código resaltado'; jsToolBar.strings['Unordered list'] = 'Lista sin ordenar'; jsToolBar.strings['Ordered list'] = 'Lista ordenada'; jsToolBar.strings['Quote'] = 'Citar'; jsToolBar.strings['Unquote'] = 'Quitar cita'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Texto con formato'; jsToolBar.strings['Wiki link'] = 'Enlace a página Wiki'; jsToolBar.strings['Image'] = 'Imagen'; jsToolBar.strings['Edit'] = 'Modificar'; jsToolBar.strings['Preview'] = 'Previsualizar'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-et.js000066400000000000000000000032771500112024600254430ustar00rootroot00000000000000/* Copyright (C) 2012 Kaitseministeerium This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Rõhutatult'; jsToolBar.strings['Italic'] = 'Kaldkirjas'; jsToolBar.strings['Underline'] = 'Allakriipsutatult'; jsToolBar.strings['Deleted'] = 'Läbikriipsutatult'; jsToolBar.strings['Code'] = 'Koodiblokk'; jsToolBar.strings['Heading 1'] = '1. taseme pealkiri'; jsToolBar.strings['Heading 2'] = '2. taseme pealkiri'; jsToolBar.strings['Heading 3'] = '3. taseme pealkiri'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Täpitud nimekiri'; jsToolBar.strings['Ordered list'] = 'Nummerdatud nimekiri'; jsToolBar.strings['Quote'] = 'Tsitaat: aste juurde'; jsToolBar.strings['Unquote'] = 'Tsitaat: aste madalamaks'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Eelvormindatud tekst'; jsToolBar.strings['Wiki link'] = 'Vikilehe link'; jsToolBar.strings['Image'] = 'Pilt'; jsToolBar.strings['Edit'] = 'Muuda'; jsToolBar.strings['Preview'] = 'Eelvaade'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-eu.js000066400000000000000000000021321500112024600254310ustar00rootroot00000000000000// jsToolBar EU language // Author: Ales Zabala Alava (Shagi), // 2010-01-25 // Distributed under the same terms as the jsToolBar itself. jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Lodia'; jsToolBar.strings['Italic'] = 'Etzana'; jsToolBar.strings['Underline'] = 'Azpimarra'; jsToolBar.strings['Deleted'] = 'Ezabatuta'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = '1 Goiburua'; jsToolBar.strings['Heading 2'] = '2 Goiburua'; jsToolBar.strings['Heading 3'] = '3 Goiburua'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Ordenatu gabeko zerrenda'; jsToolBar.strings['Ordered list'] = 'Ordenatutako zerrenda'; jsToolBar.strings['Quote'] = 'Aipamena'; jsToolBar.strings['Unquote'] = 'Aipamena kendu'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Aurrez formateatutako testua'; jsToolBar.strings['Wiki link'] = 'Wiki orri baterako esteka'; jsToolBar.strings['Image'] = 'Irudia'; jsToolBar.strings['Edit'] = 'Editatu'; jsToolBar.strings['Preview'] = 'Aurreikusi'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-fa.js000066400000000000000000000020121500112024600254030ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'پررنگ'; jsToolBar.strings['Italic'] = 'کج'; jsToolBar.strings['Underline'] = 'زیرخط'; jsToolBar.strings['Deleted'] = 'برداشته شده'; jsToolBar.strings['Code'] = 'کد درون خطی'; jsToolBar.strings['Heading 1'] = 'سربرگ Û±'; jsToolBar.strings['Heading 2'] = 'سربرگ Û²'; jsToolBar.strings['Heading 3'] = 'سربرگ Û³'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Ùهرست بدون شماره'; jsToolBar.strings['Ordered list'] = 'Ùهرست با شماره'; jsToolBar.strings['Quote'] = 'تو بردن'; jsToolBar.strings['Unquote'] = 'بیرون آوردن'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده'; jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی'; jsToolBar.strings['Image'] = 'عکس'; jsToolBar.strings['Edit'] = 'ویرایش'; jsToolBar.strings['Preview'] = 'پیش‌نمایش'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-fi.js000066400000000000000000000016551500112024600254270ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Lihavoitu'; jsToolBar.strings['Italic'] = 'Kursivoitu'; jsToolBar.strings['Underline'] = 'Alleviivattu'; jsToolBar.strings['Deleted'] = 'Yliviivattu'; jsToolBar.strings['Code'] = 'Koodi näkymä'; jsToolBar.strings['Heading 1'] = 'Otsikko 1'; jsToolBar.strings['Heading 2'] = 'Otsikko 2'; jsToolBar.strings['Heading 3'] = 'Otsikko 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Järjestämätön lista'; jsToolBar.strings['Ordered list'] = 'Järjestetty lista'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Ennaltamuotoiltu teksti'; jsToolBar.strings['Wiki link'] = 'Linkki Wiki sivulle'; jsToolBar.strings['Image'] = 'Kuva'; jsToolBar.strings['Edit'] = 'Muokkaa'; jsToolBar.strings['Preview'] = 'Esikatselu'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-fr.js000066400000000000000000000016601500112024600254340ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Gras'; jsToolBar.strings['Italic'] = 'Italique'; jsToolBar.strings['Underline'] = 'Souligné'; jsToolBar.strings['Deleted'] = 'Rayé'; jsToolBar.strings['Code'] = 'Code en ligne'; jsToolBar.strings['Heading 1'] = 'Titre niveau 1'; jsToolBar.strings['Heading 2'] = 'Titre niveau 2'; jsToolBar.strings['Heading 3'] = 'Titre niveau 3'; jsToolBar.strings['Highlighted code'] = 'Code colorisé'; jsToolBar.strings['Unordered list'] = 'Liste à puces'; jsToolBar.strings['Ordered list'] = 'Liste numérotée'; jsToolBar.strings['Quote'] = 'Indenté'; jsToolBar.strings['Unquote'] = 'Supprimer indentation'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Texte préformaté'; jsToolBar.strings['Wiki link'] = 'Lien vers une page Wiki'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'Modifier'; jsToolBar.strings['Preview'] = 'Prévisualiser'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-gl.js000066400000000000000000000016461500112024600254330ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negriña'; jsToolBar.strings['Italic'] = 'Itálica'; jsToolBar.strings['Underline'] = 'Subliñado'; jsToolBar.strings['Deleted'] = 'Tachado'; jsToolBar.strings['Code'] = 'Código fonte'; jsToolBar.strings['Heading 1'] = 'Encabezado 1'; jsToolBar.strings['Heading 2'] = 'Encabezado 2'; jsToolBar.strings['Heading 3'] = 'Encabezado 3'; jsToolBar.strings['Highlighted code'] = 'Código resaltado'; jsToolBar.strings['Unordered list'] = 'Lista sen ordenar'; jsToolBar.strings['Ordered list'] = 'Lista ordenada'; jsToolBar.strings['Quote'] = 'Citar'; jsToolBar.strings['Unquote'] = 'Quitar cita'; jsToolBar.strings['Table'] = 'Táboa'; jsToolBar.strings['Preformatted text'] = 'Texto con formato'; jsToolBar.strings['Wiki link'] = 'Ligazón a páxina Wiki'; jsToolBar.strings['Image'] = 'Imaxe'; jsToolBar.strings['Edit'] = 'Modificar'; jsToolBar.strings['Preview'] = 'Vista previa'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-he.js000066400000000000000000000016261500112024600254230ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'ערוך'; jsToolBar.strings['Preview'] = 'תצוגה מקדימה'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-hr.js000066400000000000000000000016101500112024600254310ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Podebljano'; jsToolBar.strings['Italic'] = 'Kurziv'; jsToolBar.strings['Underline'] = 'Podcrtano'; jsToolBar.strings['Deleted'] = 'Obrisano'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Naslov 1'; jsToolBar.strings['Heading 2'] = 'Naslov 2'; jsToolBar.strings['Heading 3'] = 'Naslov 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Graficke oznake'; jsToolBar.strings['Ordered list'] = 'Numeriranje'; jsToolBar.strings['Quote'] = 'Citat'; jsToolBar.strings['Unquote'] = 'Ukloni citat'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Izveden tekst'; jsToolBar.strings['Wiki link'] = 'Link na Wiki stranicu'; jsToolBar.strings['Image'] = 'Slika'; jsToolBar.strings['Edit'] = 'Uredi'; jsToolBar.strings['Preview'] = 'Brzi pregled'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-hu.js000066400000000000000000000016471500112024600254460ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Félkövér'; jsToolBar.strings['Italic'] = 'DÅ‘lt'; jsToolBar.strings['Underline'] = 'Aláhúzott'; jsToolBar.strings['Deleted'] = 'Törölt'; jsToolBar.strings['Code'] = 'Kód sorok'; jsToolBar.strings['Heading 1'] = 'Fejléc 1'; jsToolBar.strings['Heading 2'] = 'Fejléc 2'; jsToolBar.strings['Heading 3'] = 'Fejléc 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Felsorolás'; jsToolBar.strings['Ordered list'] = 'Számozott lista'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Idézet eltávolítása'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'ElÅ‘reformázott szöveg'; jsToolBar.strings['Wiki link'] = 'Link egy Wiki oldalra'; jsToolBar.strings['Image'] = 'Kép'; jsToolBar.strings['Edit'] = 'Szerkeszt'; jsToolBar.strings['Preview'] = 'ElÅ‘nézet'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-id.js000066400000000000000000000016141500112024600254200ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Tebal'; jsToolBar.strings['Italic'] = 'Miring'; jsToolBar.strings['Underline'] = 'Garis bawah'; jsToolBar.strings['Deleted'] = 'Dihapus'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Judul 1'; jsToolBar.strings['Heading 2'] = 'Judul 2'; jsToolBar.strings['Heading 3'] = 'Judul 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Daftar tak terurut'; jsToolBar.strings['Ordered list'] = 'Daftar terurut'; jsToolBar.strings['Quote'] = 'Kutipan'; jsToolBar.strings['Unquote'] = 'Hapus kutipan'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Teks terformat'; jsToolBar.strings['Wiki link'] = 'Tautkan ke halaman wiki'; jsToolBar.strings['Image'] = 'Gambar'; jsToolBar.strings['Edit'] = 'Sunting'; jsToolBar.strings['Preview'] = 'Tinjauan'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-it.js000066400000000000000000000017661500112024600254500ustar00rootroot00000000000000// Italian translation // by Diego Pierotto (ita.translations@tiscali.it) jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Grassetto'; jsToolBar.strings['Italic'] = 'Corsivo'; jsToolBar.strings['Underline'] = 'Sottolineato'; jsToolBar.strings['Deleted'] = 'Barrato'; jsToolBar.strings['Code'] = 'Codice sorgente'; jsToolBar.strings['Heading 1'] = 'Titolo 1'; jsToolBar.strings['Heading 2'] = 'Titolo 2'; jsToolBar.strings['Heading 3'] = 'Titolo 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Elenco puntato'; jsToolBar.strings['Ordered list'] = 'Elenco numerato'; jsToolBar.strings['Quote'] = 'Aumenta rientro'; jsToolBar.strings['Unquote'] = 'Riduci rientro'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Testo preformattato'; jsToolBar.strings['Wiki link'] = 'Collegamento a pagina Wiki'; jsToolBar.strings['Image'] = 'Immagine'; jsToolBar.strings['Edit'] = 'Modifica'; jsToolBar.strings['Preview'] = 'Anteprima'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ja.js000066400000000000000000000017031500112024600254150ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = '強調'; jsToolBar.strings['Italic'] = '斜体'; jsToolBar.strings['Underline'] = '下線'; jsToolBar.strings['Deleted'] = 'å–り消ã—ç·š'; jsToolBar.strings['Code'] = 'コード'; jsToolBar.strings['Heading 1'] = '見出㗠1'; jsToolBar.strings['Heading 2'] = '見出㗠2'; jsToolBar.strings['Heading 3'] = '見出㗠3'; jsToolBar.strings['Highlighted code'] = 'コードãƒã‚¤ãƒ©ã‚¤ãƒˆ'; jsToolBar.strings['Unordered list'] = 'é †ä¸åŒãƒªã‚¹ãƒˆ'; jsToolBar.strings['Ordered list'] = '番å·ã¤ãリスト'; jsToolBar.strings['Quote'] = '引用'; jsToolBar.strings['Unquote'] = '引用解除'; jsToolBar.strings['Table'] = 'テーブル'; jsToolBar.strings['Preformatted text'] = '整形済ã¿ãƒ†ã‚­ã‚¹ãƒˆ'; jsToolBar.strings['Wiki link'] = 'Wikiページã¸ã®ãƒªãƒ³ã‚¯'; jsToolBar.strings['Image'] = 'ç”»åƒ'; jsToolBar.strings['Edit'] = '編集'; jsToolBar.strings['Preview'] = 'プレビュー'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ko.js000066400000000000000000000016561500112024600254430ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = '굵게'; jsToolBar.strings['Italic'] = '기울임'; jsToolBar.strings['Underline'] = '밑줄'; jsToolBar.strings['Deleted'] = '취소선'; jsToolBar.strings['Code'] = '코드'; jsToolBar.strings['Heading 1'] = '제목 1'; jsToolBar.strings['Heading 2'] = '제목 2'; jsToolBar.strings['Heading 3'] = '제목 3'; jsToolBar.strings['Highlighted code'] = '색ìƒí™”한 코드'; jsToolBar.strings['Unordered list'] = '글머리 기호'; jsToolBar.strings['Ordered list'] = '번호 매기기'; jsToolBar.strings['Quote'] = 'ì¸ìš©'; jsToolBar.strings['Unquote'] = 'ì¸ìš© 취소'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = '있는 그대로 표현 (Preformatted text)'; jsToolBar.strings['Wiki link'] = 'Wiki 페ì´ì§€ì— ì—°ê²°'; jsToolBar.strings['Image'] = '그림'; jsToolBar.strings['Edit'] = '편집'; jsToolBar.strings['Preview'] = '미리보기'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-lt.js000066400000000000000000000017061500112024600254450ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Pastorinti'; jsToolBar.strings['Italic'] = 'Kursyvu'; jsToolBar.strings['Underline'] = 'Pabraukti'; jsToolBar.strings['Deleted'] = 'Užbraukti'; jsToolBar.strings['Code'] = 'Kodas'; jsToolBar.strings['Heading 1'] = 'AntraÅ¡tÄ— 1'; jsToolBar.strings['Heading 2'] = 'AntraÅ¡tÄ— 2'; jsToolBar.strings['Heading 3'] = 'AntraÅ¡tÄ— 3'; jsToolBar.strings['Highlighted code'] = 'ParyÅ¡kintas kodas'; jsToolBar.strings['Unordered list'] = 'Nenumeruotas sÄ…raÅ¡as'; jsToolBar.strings['Ordered list'] = 'Numeruotas sÄ…raÅ¡as'; jsToolBar.strings['Quote'] = 'Cituoti'; jsToolBar.strings['Unquote'] = 'PaÅ¡alinti citavimÄ…'; jsToolBar.strings['Table'] = 'LentelÄ—'; jsToolBar.strings['Preformatted text'] = 'Preformatuotas tekstas'; jsToolBar.strings['Wiki link'] = 'Nuoroda į Wiki puslapį'; jsToolBar.strings['Image'] = 'PaveikslÄ—lis'; jsToolBar.strings['Edit'] = 'Redaguoti'; jsToolBar.strings['Preview'] = 'PeržiÅ«ra'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-lv.js000066400000000000000000000017771500112024600254570ustar00rootroot00000000000000// translated by Dzintars Bergs (dzintars.bergs@gmail.com) jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Treknraksts'; jsToolBar.strings['Italic'] = 'SlÄ«praksts'; jsToolBar.strings['Underline'] = 'PasvÄ«trojums'; jsToolBar.strings['Deleted'] = 'DzÄ“sts'; jsToolBar.strings['Code'] = 'Iekļauts kods'; jsToolBar.strings['Heading 1'] = 'Virsraksts 1'; jsToolBar.strings['Heading 2'] = 'Virsraksts 2'; jsToolBar.strings['Heading 3'] = 'Virsraksts 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'NesakÄrtots saraksts'; jsToolBar.strings['Ordered list'] = 'SakÄrtots saraksts'; jsToolBar.strings['Quote'] = 'CitÄ“t'; jsToolBar.strings['Unquote'] = 'Noņemt citÄtu'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'IepriekÅ¡ formatÄ“ts teksts'; jsToolBar.strings['Wiki link'] = 'Saite uz Wiki lapu'; jsToolBar.strings['Image'] = 'AttÄ“ls'; jsToolBar.strings['Edit'] = 'Labot'; jsToolBar.strings['Preview'] = 'PriekÅ¡skatÄ«jums'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-mk.js000066400000000000000000000020411500112024600254260ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Задебелен'; jsToolBar.strings['Italic'] = 'ЗакоÑен'; jsToolBar.strings['Underline'] = 'Подвлечен'; jsToolBar.strings['Deleted'] = 'Прецртан'; jsToolBar.strings['Code'] = 'Код'; jsToolBar.strings['Heading 1'] = 'Заглавје 1'; jsToolBar.strings['Heading 2'] = 'Заглавје 2'; jsToolBar.strings['Heading 3'] = 'Заглавје 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Ðеподредена лиÑта'; jsToolBar.strings['Ordered list'] = 'Подредена лиÑта'; jsToolBar.strings['Quote'] = 'Цитат'; jsToolBar.strings['Unquote'] = 'ОтÑтрани цитат'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Форматиран текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'Ð’Ñ€Ñка до вики Ñтрана'; jsToolBar.strings['Image'] = 'Слика'; jsToolBar.strings['Edit'] = 'Уреди'; jsToolBar.strings['Preview'] = 'Preview'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-mn.js000066400000000000000000000021651500112024600254400ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Бүдүүн'; jsToolBar.strings['Italic'] = 'Ðалуу'; jsToolBar.strings['Underline'] = 'Доогуур зурааÑ'; jsToolBar.strings['Deleted'] = 'УÑтгагдÑан'; jsToolBar.strings['Code'] = 'Програмын код'; jsToolBar.strings['Heading 1'] = 'Гарчиг 1'; jsToolBar.strings['Heading 2'] = 'Гарчиг 2'; jsToolBar.strings['Heading 3'] = 'Гарчиг 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'ЭрÑмбÑгүй жагÑаалт'; jsToolBar.strings['Ordered list'] = 'ЭрÑмбÑÑ‚Ñй жагÑаалт'; jsToolBar.strings['Quote'] = 'ИшлÑл'; jsToolBar.strings['Unquote'] = 'ИшлÑлийг уÑтгах'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Өмнө нь Ñ…ÑлбÑржÑÑн текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'Вики Ñ…ÑƒÑƒÐ´Ð°Ñ Ñ€ÑƒÑƒ холбох'; jsToolBar.strings['Image'] = 'Зураг'; jsToolBar.strings['Edit'] = 'ЗаÑварлах'; jsToolBar.strings['Preview'] = 'Ямар харагдахыг шалгах'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-nl.js000066400000000000000000000016711500112024600254400ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Vetgedrukt'; jsToolBar.strings['Italic'] = 'Cursief'; jsToolBar.strings['Underline'] = 'Onderstreept'; jsToolBar.strings['Deleted'] = 'Verwijderd'; jsToolBar.strings['Code'] = 'Computercode'; jsToolBar.strings['Heading 1'] = 'Hoofding 1'; jsToolBar.strings['Heading 2'] = 'Hoofding 2'; jsToolBar.strings['Heading 3'] = 'Hoofding 3'; jsToolBar.strings['Highlighted code'] = 'Gemarkeerde code'; jsToolBar.strings['Unordered list'] = 'Ongeordende lijst'; jsToolBar.strings['Ordered list'] = 'Geordende lijst'; jsToolBar.strings['Quote'] = 'Citaat'; jsToolBar.strings['Unquote'] = 'Citaat verwijderen'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Vooropgemaakte tekst'; jsToolBar.strings['Wiki link'] = 'Link naar een Wikipagina'; jsToolBar.strings['Image'] = 'Afbeelding'; jsToolBar.strings['Edit'] = 'Bewerken'; jsToolBar.strings['Preview'] = 'Voorbeeldweergave'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-no.js000066400000000000000000000016141500112024600254400ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Fet'; jsToolBar.strings['Italic'] = 'Kursiv'; jsToolBar.strings['Underline'] = 'Understreking'; jsToolBar.strings['Deleted'] = 'Slettet'; jsToolBar.strings['Code'] = 'Kode'; jsToolBar.strings['Heading 1'] = 'Overskrift 1'; jsToolBar.strings['Heading 2'] = 'Overskrift 2'; jsToolBar.strings['Heading 3'] = 'Overskrift 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Punktliste'; jsToolBar.strings['Ordered list'] = 'Nummerert liste'; jsToolBar.strings['Quote'] = 'Sitat'; jsToolBar.strings['Unquote'] = 'Avslutt sitat'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatert tekst'; jsToolBar.strings['Wiki link'] = 'Lenke til Wiki-side'; jsToolBar.strings['Image'] = 'Bilde'; jsToolBar.strings['Edit'] = 'Endre'; jsToolBar.strings['Preview'] = 'ForhÃ¥ndsvis'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-pl.js000066400000000000000000000020141500112024600254320ustar00rootroot00000000000000// Keep this line in order to avoid problems with Windows Notepad UTF-8 EF-BB-BF idea... jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Pogrubienie'; jsToolBar.strings['Italic'] = 'Kursywa'; jsToolBar.strings['Underline'] = 'PodkreÅ›lenie'; jsToolBar.strings['Deleted'] = 'UsuniÄ™te'; jsToolBar.strings['Code'] = 'Kod'; jsToolBar.strings['Heading 1'] = 'NagÅ‚owek 1'; jsToolBar.strings['Heading 2'] = 'Nagłówek 2'; jsToolBar.strings['Heading 3'] = 'Nagłówek 3'; jsToolBar.strings['Highlighted code'] = 'Kod z podÅ›wietlaniem skÅ‚adni'; jsToolBar.strings['Unordered list'] = 'Nieposortowana lista'; jsToolBar.strings['Ordered list'] = 'Posortowana lista'; jsToolBar.strings['Quote'] = 'Cytat'; jsToolBar.strings['Unquote'] = 'UsuÅ„ cytat'; jsToolBar.strings['Table'] = 'Tabela'; jsToolBar.strings['Preformatted text'] = 'Sformatowany tekst'; jsToolBar.strings['Wiki link'] = 'OdnoÅ›nik do strony Wiki'; jsToolBar.strings['Image'] = 'Obraz'; jsToolBar.strings['Edit'] = 'Edytuj'; jsToolBar.strings['Preview'] = 'PodglÄ…d'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-pt-br.js000066400000000000000000000017701500112024600260530ustar00rootroot00000000000000// Translated by: Alexandre da Silva jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negrito'; jsToolBar.strings['Italic'] = 'Itálico'; jsToolBar.strings['Underline'] = 'Sublinhado'; jsToolBar.strings['Deleted'] = 'Excluído'; jsToolBar.strings['Code'] = 'Código Inline'; jsToolBar.strings['Heading 1'] = 'Cabeçalho 1'; jsToolBar.strings['Heading 2'] = 'Cabeçalho 2'; jsToolBar.strings['Heading 3'] = 'Cabeçalho 3'; jsToolBar.strings['Highlighted code'] = 'Código destacado'; jsToolBar.strings['Unordered list'] = 'Lista não ordenada'; jsToolBar.strings['Ordered list'] = 'Lista ordenada'; jsToolBar.strings['Quote'] = 'Identar'; jsToolBar.strings['Unquote'] = 'Remover identação'; jsToolBar.strings['Table'] = 'Tabela'; jsToolBar.strings['Preformatted text'] = 'Texto pré-formatado'; jsToolBar.strings['Wiki link'] = 'Link para uma página Wiki'; jsToolBar.strings['Image'] = 'Imagem'; jsToolBar.strings['Edit'] = 'Editar'; jsToolBar.strings['Preview'] = 'Pré-visualizar'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-pt.js000066400000000000000000000017611500112024600254520ustar00rootroot00000000000000// Translated by: Pedro Araújo jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Negrito'; jsToolBar.strings['Italic'] = 'Itálico'; jsToolBar.strings['Underline'] = 'Sublinhado'; jsToolBar.strings['Deleted'] = 'Apagado'; jsToolBar.strings['Code'] = 'Código Inline'; jsToolBar.strings['Heading 1'] = 'Cabeçalho 1'; jsToolBar.strings['Heading 2'] = 'Cabeçalho 2'; jsToolBar.strings['Heading 3'] = 'Cabeçalho 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Lista não ordenada'; jsToolBar.strings['Ordered list'] = 'Lista ordenada'; jsToolBar.strings['Quote'] = 'Citação'; jsToolBar.strings['Unquote'] = 'Remover citação'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Texto pré-formatado'; jsToolBar.strings['Wiki link'] = 'Link para uma página da Wiki'; jsToolBar.strings['Image'] = 'Imagem'; jsToolBar.strings['Edit'] = 'Editar'; jsToolBar.strings['Preview'] = 'Pré-visualizar'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ro.js000066400000000000000000000016451500112024600254500ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Bold'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Subliniat'; jsToolBar.strings['Deleted'] = 'Șters'; jsToolBar.strings['Code'] = 'Fragment de cod'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Listă pe puncte'; jsToolBar.strings['Ordered list'] = 'Listă ordonată'; jsToolBar.strings['Quote'] = 'Citează'; jsToolBar.strings['Unquote'] = 'Fără citat'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Text preformatat'; jsToolBar.strings['Wiki link'] = 'Trimitere către o pagină wiki'; jsToolBar.strings['Image'] = 'Imagine'; jsToolBar.strings['Edit'] = 'Editează'; jsToolBar.strings['Preview'] = 'Previzualizare'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ru.js000066400000000000000000000022741500112024600254550ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Жирный'; jsToolBar.strings['Italic'] = 'КурÑив'; jsToolBar.strings['Underline'] = 'Подчеркнутый'; jsToolBar.strings['Deleted'] = 'Зачеркнутый'; jsToolBar.strings['Code'] = 'Ð’Ñтавка кода'; jsToolBar.strings['Heading 1'] = 'Заголовок 1'; jsToolBar.strings['Heading 2'] = 'Заголовок 2'; jsToolBar.strings['Heading 3'] = 'Заголовок 3'; jsToolBar.strings['Highlighted code'] = 'ПодÑветка кода'; jsToolBar.strings['Unordered list'] = 'Маркированный ÑпиÑок'; jsToolBar.strings['Ordered list'] = 'Ðумерованный ÑпиÑок'; jsToolBar.strings['Quote'] = 'Цитата'; jsToolBar.strings['Unquote'] = 'Удалить цитату'; jsToolBar.strings['Table'] = 'Таблица'; jsToolBar.strings['Preformatted text'] = 'Заранее форматированный текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'СÑылка на Ñтраницу в Wiki'; jsToolBar.strings['Image'] = 'Ð’Ñтавка изображениÑ'; jsToolBar.strings['Edit'] = 'Редактирование'; jsToolBar.strings['Preview'] = 'ПредпроÑмотр'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sk.js000066400000000000000000000016671500112024600254510ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'TuÄné'; jsToolBar.strings['Italic'] = 'Kurzíva'; jsToolBar.strings['Underline'] = 'PodÄiarknuté'; jsToolBar.strings['Deleted'] = 'PreÅ¡krtnuté'; jsToolBar.strings['Code'] = 'Zobrazenie kódu'; jsToolBar.strings['Heading 1'] = 'Nadpis 1'; jsToolBar.strings['Heading 2'] = 'Nadpis 2'; jsToolBar.strings['Heading 3'] = 'Nadpis 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Odrážkový zoznam'; jsToolBar.strings['Ordered list'] = 'Číslovaný zoznam'; jsToolBar.strings['Quote'] = 'Odsadenie'; jsToolBar.strings['Unquote'] = 'ZruÅ¡iÅ¥ odsadenie'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Predformátovaný text'; jsToolBar.strings['Wiki link'] = 'Odkaz na wikistránku'; jsToolBar.strings['Image'] = 'Obrázok'; jsToolBar.strings['Edit'] = 'UpraviÅ¥'; jsToolBar.strings['Preview'] = 'Náhľad'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sl.js000066400000000000000000000016331500112024600254430ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Krepko'; jsToolBar.strings['Italic'] = 'PoÅ¡evno'; jsToolBar.strings['Underline'] = 'PodÄrtano'; jsToolBar.strings['Deleted'] = 'Izbrisano'; jsToolBar.strings['Code'] = 'Koda med vrsticami'; jsToolBar.strings['Heading 1'] = 'Naslov 1'; jsToolBar.strings['Heading 2'] = 'Naslov 2'; jsToolBar.strings['Heading 3'] = 'Naslov 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Neurejen seznam'; jsToolBar.strings['Ordered list'] = 'Urejen seznam'; jsToolBar.strings['Quote'] = 'Citat'; jsToolBar.strings['Unquote'] = 'Odstrani citat'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Predoblikovano besedilo'; jsToolBar.strings['Wiki link'] = 'Povezava na Wiki stran'; jsToolBar.strings['Image'] = 'Slika'; jsToolBar.strings['Edit'] = 'Uredi'; jsToolBar.strings['Preview'] = 'Predogled'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sq.js000066400000000000000000000016021500112024600254440ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Strong'; jsToolBar.strings['Italic'] = 'Italic'; jsToolBar.strings['Underline'] = 'Underline'; jsToolBar.strings['Deleted'] = 'Deleted'; jsToolBar.strings['Code'] = 'Inline Code'; jsToolBar.strings['Heading 1'] = 'Heading 1'; jsToolBar.strings['Heading 2'] = 'Heading 2'; jsToolBar.strings['Heading 3'] = 'Heading 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Unordered list'; jsToolBar.strings['Ordered list'] = 'Ordered list'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Link to a Wiki page'; jsToolBar.strings['Image'] = 'Image'; jsToolBar.strings['Edit'] = 'Edit'; jsToolBar.strings['Preview'] = 'Preview'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js000066400000000000000000000016531500112024600261060ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Podebljano'; jsToolBar.strings['Italic'] = 'Kurziv'; jsToolBar.strings['Underline'] = 'PodvuÄeno'; jsToolBar.strings['Deleted'] = 'Obrisano'; jsToolBar.strings['Code'] = 'UgraÄ‘eni kôd'; jsToolBar.strings['Heading 1'] = 'Naslov 1'; jsToolBar.strings['Heading 2'] = 'Naslov 2'; jsToolBar.strings['Heading 3'] = 'Naslov 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Lista nabrajanja'; jsToolBar.strings['Ordered list'] = 'UreÄ‘ena lista'; jsToolBar.strings['Quote'] = 'Pod navodnicima'; jsToolBar.strings['Unquote'] = 'Ukloni navodnike'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Prethodno formatiran tekst'; jsToolBar.strings['Wiki link'] = 'Veza prema Wiki strani'; jsToolBar.strings['Image'] = 'Slika'; jsToolBar.strings['Edit'] = 'Izmeni'; jsToolBar.strings['Preview'] = 'Pregled'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sr.js000066400000000000000000000021171500112024600254470ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Подебљано'; jsToolBar.strings['Italic'] = 'Курзив'; jsToolBar.strings['Underline'] = 'Подвучено'; jsToolBar.strings['Deleted'] = 'ОбриÑано'; jsToolBar.strings['Code'] = 'Уграђени кôд'; jsToolBar.strings['Heading 1'] = 'ÐаÑлов 1'; jsToolBar.strings['Heading 2'] = 'ÐаÑлов 2'; jsToolBar.strings['Heading 3'] = 'ÐаÑлов 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'ЛиÑта набрајања'; jsToolBar.strings['Ordered list'] = 'Уређена лиÑта'; jsToolBar.strings['Quote'] = 'Под наводницима'; jsToolBar.strings['Unquote'] = 'Уклони наводнике'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Претходно форматиран текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'Веза према Wiki Ñтрани'; jsToolBar.strings['Image'] = 'Слика'; jsToolBar.strings['Edit'] = 'Измени'; jsToolBar.strings['Preview'] = 'Преглед'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-sv.js000066400000000000000000000016171500112024600254570ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Fet'; jsToolBar.strings['Italic'] = 'Kursiv'; jsToolBar.strings['Underline'] = 'Understruken'; jsToolBar.strings['Deleted'] = 'Genomstruken'; jsToolBar.strings['Code'] = 'Kod'; jsToolBar.strings['Heading 1'] = 'Rubrik 1'; jsToolBar.strings['Heading 2'] = 'Rubrik 2'; jsToolBar.strings['Heading 3'] = 'Rubrik 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Osorterad lista'; jsToolBar.strings['Ordered list'] = 'Sorterad lista'; jsToolBar.strings['Quote'] = 'Citat'; jsToolBar.strings['Unquote'] = 'Ta bort citat'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Förformaterad text'; jsToolBar.strings['Wiki link'] = 'Länk till en wikisida'; jsToolBar.strings['Image'] = 'Bild'; jsToolBar.strings['Edit'] = 'Ändra'; jsToolBar.strings['Preview'] = 'Förhandsgranska'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-ta-in.js000066400000000000000000000027141500112024600260360ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'வலà¯à®µà®¾à®©'; jsToolBar.strings['Italic'] = 'சாயà¯à®µà¯'; jsToolBar.strings['Underline'] = 'அடிகà¯à®•ோடிடà¯à®Ÿà¯'; jsToolBar.strings['Deleted'] = 'நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯'; jsToolBar.strings['Code'] = 'இனà¯à®²à¯ˆà®©à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯'; jsToolBar.strings['Heading 1'] = 'தலைபà¯à®ªà¯ 1'; jsToolBar.strings['Heading 2'] = 'தலைபà¯à®ªà¯ 2'; jsToolBar.strings['Heading 3'] = 'தலைபà¯à®ªà¯ 3'; jsToolBar.strings['Highlighted code'] = 'சிறபà¯à®ªà®®à¯à®šà®®à®¾à®• கà¯à®±à®¿à®¯à¯€à®Ÿà¯'; jsToolBar.strings['Unordered list'] = 'வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®¾à®¤ படà¯à®Ÿà®¿à®¯à®²à¯'; jsToolBar.strings['Ordered list'] = 'வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ படà¯à®Ÿà®¿à®¯à®²à¯'; jsToolBar.strings['Quote'] = 'மேறà¯à®•ோளà¯'; jsToolBar.strings['Unquote'] = 'மேறà¯à®•ோளை அகறà¯à®±à¯'; jsToolBar.strings['Table'] = 'அடà¯à®Ÿà®µà®£à¯ˆ'; jsToolBar.strings['Preformatted text'] = 'à®®à¯à®©à¯à®ªà¯‡ வடிவமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உரை'; jsToolBar.strings['Wiki link'] = 'விகà¯à®•ி பகà¯à®•தà¯à®¤à¯à®Ÿà®©à¯ இணைகà¯à®•வà¯à®®à¯'; jsToolBar.strings['Image'] = 'படமà¯'; jsToolBar.strings['Edit'] = 'திரà¯à®¤à¯à®¤à¯'; jsToolBar.strings['Preview'] = 'à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-th.js000066400000000000000000000022201500112024600254310ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'หนา'; jsToolBar.strings['Italic'] = 'เอียง'; jsToolBar.strings['Underline'] = 'ขีดเส้นใต้'; jsToolBar.strings['Deleted'] = 'ขีดฆ่า'; jsToolBar.strings['Code'] = 'โค๊ดโปรà¹à¸à¸£à¸¡'; jsToolBar.strings['Heading 1'] = 'หัวข้อ 1'; jsToolBar.strings['Heading 2'] = 'หัวข้อ 2'; jsToolBar.strings['Heading 3'] = 'หัวข้อ 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'รายà¸à¸²à¸£'; jsToolBar.strings['Ordered list'] = 'ลำดับเลข'; jsToolBar.strings['Quote'] = 'Quote'; jsToolBar.strings['Unquote'] = 'Remove Quote'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'รูปà¹à¸šà¸šà¸‚้อความคงที่'; jsToolBar.strings['Wiki link'] = 'เชื่อมโยงไปหน้า Wiki อื่น'; jsToolBar.strings['Image'] = 'รูปภาพ'; jsToolBar.strings['Edit'] = 'à¹à¸à¹‰à¹„ข'; jsToolBar.strings['Preview'] = 'ตัวอย่างà¸à¹ˆà¸­à¸™à¸ˆà¸±à¸”เà¸à¹‡à¸š'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-tr.js000066400000000000000000000015141500112024600254500ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Kalın'; jsToolBar.strings['Italic'] = 'İtalik'; jsToolBar.strings['Underline'] = 'Altı çizgili'; jsToolBar.strings['Deleted'] = 'SilinmiÅŸ'; jsToolBar.strings['Code'] = 'Satır içi kod'; jsToolBar.strings['Heading 1'] = 'BaÅŸlık 1'; jsToolBar.strings['Heading 2'] = 'BaÅŸlık 2'; jsToolBar.strings['Heading 3'] = 'BaÅŸlık 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Sırasız liste'; jsToolBar.strings['Ordered list'] = 'Sıralı liste'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Preformatted text'; jsToolBar.strings['Wiki link'] = 'Wiki sayfasına baÄŸlantı'; jsToolBar.strings['Image'] = 'Resim'; jsToolBar.strings['Edit'] = 'Düzenle'; jsToolBar.strings['Preview'] = 'Önizleme'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-uk.js000066400000000000000000000022701500112024600254420ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Жирний'; jsToolBar.strings['Italic'] = 'КурÑив'; jsToolBar.strings['Underline'] = 'ПідкреÑлений'; jsToolBar.strings['Deleted'] = 'ЗакреÑлений'; jsToolBar.strings['Code'] = 'Інлайн код'; jsToolBar.strings['Heading 1'] = 'Заголовок 1'; jsToolBar.strings['Heading 2'] = 'Заголовок 2'; jsToolBar.strings['Heading 3'] = 'Заголовок 3'; jsToolBar.strings['Highlighted code'] = 'Виділений код'; jsToolBar.strings['Unordered list'] = 'Ðенумерованний ÑпиÑок'; jsToolBar.strings['Ordered list'] = 'Ðумерований ÑпиÑок'; jsToolBar.strings['Quote'] = 'ЦитуваннÑ'; jsToolBar.strings['Unquote'] = 'Видалити цитуваннÑ'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Попередньо відформатований текÑÑ‚'; jsToolBar.strings['Wiki link'] = 'ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñторінку Wiki'; jsToolBar.strings['Image'] = 'ЗображеннÑ'; jsToolBar.strings['Edit'] = 'Редагувати'; jsToolBar.strings['Preview'] = 'Попередній переглÑд'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-vi.js000066400000000000000000000017051500112024600254430ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Äậm'; jsToolBar.strings['Italic'] = 'Nghiêng'; jsToolBar.strings['Underline'] = 'Gạch chân'; jsToolBar.strings['Deleted'] = 'Xóa'; jsToolBar.strings['Code'] = 'Mã chung dòng'; jsToolBar.strings['Heading 1'] = 'Tiêu đỠ1'; jsToolBar.strings['Heading 2'] = 'Tiêu đỠ2'; jsToolBar.strings['Heading 3'] = 'Tiêu đỠ3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'Danh sách không thứ tá»±'; jsToolBar.strings['Ordered list'] = 'Danh sách có thứ tá»±'; jsToolBar.strings['Quote'] = 'Trích dẫn'; jsToolBar.strings['Unquote'] = 'Bá» trích dẫn'; jsToolBar.strings['Table'] = 'Table'; jsToolBar.strings['Preformatted text'] = 'Mã nguồn'; jsToolBar.strings['Wiki link'] = 'Liên kết đến trang wiki'; jsToolBar.strings['Image'] = 'Ảnh'; jsToolBar.strings['Edit'] = 'Sá»­a'; jsToolBar.strings['Preview'] = 'Xem trước'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js000066400000000000000000000015751500112024600261030ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'ç²—é«”'; jsToolBar.strings['Italic'] = '斜體'; jsToolBar.strings['Underline'] = '底線'; jsToolBar.strings['Deleted'] = '刪除線'; jsToolBar.strings['Code'] = '程å¼ç¢¼'; jsToolBar.strings['Heading 1'] = '標題 1'; jsToolBar.strings['Heading 2'] = '標題 2'; jsToolBar.strings['Heading 3'] = '標題 3'; jsToolBar.strings['Highlighted code'] = 'å白程å¼ç¢¼'; jsToolBar.strings['Unordered list'] = '項目清單'; jsToolBar.strings['Ordered list'] = '編號清單'; jsToolBar.strings['Quote'] = '引文'; jsToolBar.strings['Unquote'] = 'å–æ¶ˆå¼•æ–‡'; jsToolBar.strings['Table'] = '表格'; jsToolBar.strings['Preformatted text'] = 'å·²æ ¼å¼æ–‡å­—'; jsToolBar.strings['Wiki link'] = '連çµè‡³ Wiki é é¢'; jsToolBar.strings['Image'] = '圖片'; jsToolBar.strings['Edit'] = '編輯'; jsToolBar.strings['Preview'] = 'é è¦½'; redmine-6.0.5/app/assets/javascripts/jstoolbar/lang/jstoolbar-zh.js000066400000000000000000000016041500112024600254440ustar00rootroot00000000000000jsToolBar.strings = {}; jsToolBar.strings['Strong'] = '粗体'; jsToolBar.strings['Italic'] = '斜体'; jsToolBar.strings['Underline'] = '下划线'; jsToolBar.strings['Deleted'] = '删除线'; jsToolBar.strings['Code'] = '程åºä»£ç '; jsToolBar.strings['Heading 1'] = '标题 1'; jsToolBar.strings['Heading 2'] = '标题 2'; jsToolBar.strings['Heading 3'] = '标题 3'; jsToolBar.strings['Highlighted code'] = 'Highlighted code'; jsToolBar.strings['Unordered list'] = 'æ— åºåˆ—表'; jsToolBar.strings['Ordered list'] = '排åºåˆ—表'; jsToolBar.strings['Quote'] = '引用'; jsToolBar.strings['Unquote'] = '删除引用'; jsToolBar.strings['Table'] = '表格'; jsToolBar.strings['Preformatted text'] = 'æ ¼å¼åŒ–文本'; jsToolBar.strings['Wiki link'] = '连接到 Wiki 页é¢'; jsToolBar.strings['Image'] = '图片'; jsToolBar.strings['Edit'] = '编辑'; jsToolBar.strings['Preview'] = '预览'; redmine-6.0.5/app/assets/javascripts/jstoolbar/textile.js000066400000000000000000000112031500112024600235570ustar00rootroot00000000000000/** * This file is part of DotClear. * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All rights reserved. * This code is released under the GNU General Public License. * * Modified by JP LANG for textile formatting */ // strong jsToolBar.prototype.elements.strong = { type: 'button', title: 'Strong', shortcut: 'b', fn: { wiki: function() { this.singleTag('*') } } } // em jsToolBar.prototype.elements.em = { type: 'button', title: 'Italic', shortcut: 'i', fn: { wiki: function() { this.singleTag("_") } } } // ins jsToolBar.prototype.elements.ins = { type: 'button', title: 'Underline', shortcut: 'u', fn: { wiki: function() { this.singleTag('+') } } } // del jsToolBar.prototype.elements.del = { type: 'button', title: 'Deleted', fn: { wiki: function() { this.singleTag('-') } } } // code jsToolBar.prototype.elements.code = { type: 'button', title: 'Code', fn: { wiki: function() { this.singleTag('@') } } } // spacer jsToolBar.prototype.elements.space1 = {type: 'space'} // headings jsToolBar.prototype.elements.h1 = { type: 'button', title: 'Heading 1', fn: { wiki: function() { this.encloseLineSelection('h1. ', '',function(str) { str = str.replace(/^h\d+\.\s+/, '') return str; }); } } } jsToolBar.prototype.elements.h2 = { type: 'button', title: 'Heading 2', fn: { wiki: function() { this.encloseLineSelection('h2. ', '',function(str) { str = str.replace(/^h\d+\.\s+/, '') return str; }); } } } jsToolBar.prototype.elements.h3 = { type: 'button', title: 'Heading 3', fn: { wiki: function() { this.encloseLineSelection('h3. ', '',function(str) { str = str.replace(/^h\d+\.\s+/, '') return str; }); } } } // spacer jsToolBar.prototype.elements.space2 = {type: 'space'} // ul jsToolBar.prototype.elements.ul = { type: 'button', title: 'Unordered list', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)[#-]?\s*/g,"$1* "); }); } } } // ol jsToolBar.prototype.elements.ol = { type: 'button', title: 'Ordered list', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)[*-]?\s*/g,"$1# "); }); } } } // spacer jsToolBar.prototype.elements.space3 = {type: 'space'} // bq jsToolBar.prototype.elements.bq = { type: 'button', title: 'Quote', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^)( *)([^\n]*)/g,"$1> $2$3"); }); } } } // unbq jsToolBar.prototype.elements.unbq = { type: 'button', title: 'Unquote', fn: { wiki: function() { this.encloseLineSelection('','',function(str) { str = str.replace(/\r/g,''); return str.replace(/(\n|^) *(> ?)?( *)([^\n]*)/g,"$1$3$4"); }); } } } // table jsToolBar.prototype.elements.table = { type: 'button', title: 'Table', fn: { wiki: function() { var This = this; this.tableMenu(function(cols, rowCount){ This.encloseLineSelection( '|_.'+cols.join('|_.')+'|\n' + // header Array(rowCount+1).join(Array(cols.length+1).join('| ')+'|\n') // cells ); }); } } } // pre jsToolBar.prototype.elements.pre = { type: 'button', title: 'Preformatted text', fn: { wiki: function() { this.encloseLineSelection('
        \n', '\n
        ') } } } // Code highlighting jsToolBar.prototype.elements.precode = { type: 'button', title: 'Highlighted code', fn: { wiki: function() { var This = this; this.precodeMenu(function(lang){ This.encloseLineSelection('
        \n', '\n
        \n'); }); } } } // spacer jsToolBar.prototype.elements.space4 = {type: 'space'} // wiki page jsToolBar.prototype.elements.link = { type: 'button', title: 'Wiki link', fn: { wiki: function() { this.encloseSelection("[[", "]]") } } } // image jsToolBar.prototype.elements.img = { type: 'button', title: 'Image', fn: { wiki: function() { this.encloseSelection("!", "!") } } } // spacer jsToolBar.prototype.elements.space5 = {type: 'space'} // help jsToolBar.prototype.elements.help = { type: 'button', title: 'Help', fn: { wiki: function() { window.open(this.help_link, '', 'resizable=yes, location=no, width=300, height=640, menubar=no, status=no, scrollbars=yes') } } } redmine-6.0.5/app/assets/javascripts/project_identifier.js000066400000000000000000000177651500112024600237750ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ // Automatic project identifier generation function generateProjectIdentifier(identifier, maxlength) { var diacriticsMap = [ {'base':'a', 'letters':/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g}, {'base':'aa','letters':/[\uA733\uA732]/g}, {'base':'ae','letters':/[\u00E4\u00E6\u01FD\u01E3\u00C4\u00C6\u01FC\u01E2]/g}, {'base':'ao','letters':/[\uA735\uA734]/g}, {'base':'au','letters':/[\uA737\uA736]/g}, {'base':'av','letters':/[\uA739\uA73B\uA738\uA73A]/g}, {'base':'ay','letters':/[\uA73D\uA73C]/g}, {'base':'b', 'letters':/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g}, {'base':'c', 'letters':/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g}, {'base':'d', 'letters':/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g}, {'base':'dz','letters':/[\u01F3\u01C6\u01F1\u01C4\u01F2\u01C5]/g}, {'base':'e', 'letters':/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g}, {'base':'f', 'letters':/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g}, {'base':'g', 'letters':/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g}, {'base':'h', 'letters':/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g}, {'base':'hv','letters':/[\u0195]/g}, {'base':'i', 'letters':/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g}, {'base':'j', 'letters':/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249\u004A\u24BF\uFF2A\u0134\u0248]/g}, {'base':'k', 'letters':/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g}, {'base':'l', 'letters':/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g}, {'base':'lj','letters':/[\u01C9\u01C7\u01C8]/g}, {'base':'m', 'letters':/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g}, {'base':'n', 'letters':/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g}, {'base':'nj','letters':/[\u01CC\u01CA\u01CB]/g}, {'base':'o', 'letters':/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g}, {'base':'oe','letters': /[\u00F6\u0153\u00D6\u0152]/g}, {'base':'oi','letters':/[\u01A3\u01A2]/g}, {'base':'ou','letters':/[\u0223\u0222]/g}, {'base':'oo','letters':/[\uA74F\uA74E]/g}, {'base':'p','letters':/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g}, {'base':'q','letters':/[\u0071\u24E0\uFF51\u024B\uA757\uA759\u0051\u24C6\uFF31\uA756\uA758\u024A]/g}, {'base':'r','letters':/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g}, {'base':'s','letters':/[\u0073\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g}, {'base':'ss','letters':/[\u00DF]/g}, {'base':'t','letters':/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g}, {'base':'tz','letters':/[\uA729\uA728]/g}, {'base':'u','letters':/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g}, {'base':'ue','letters':/[\u00FC\u00DC]/g}, {'base':'v','letters':/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g}, {'base':'vy','letters':/[\uA761\uA760]/g}, {'base':'w','letters':/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g}, {'base':'x','letters':/[\u0078\u24E7\uFF58\u1E8B\u1E8D\u0058\u24CD\uFF38\u1E8A\u1E8C]/g}, {'base':'y','letters':/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g}, {'base':'z','letters':/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g} ]; for(var i=0; i hyphen identifier = identifier.replace(/^[-_\d]*|[-_]*$/g, ''); // remove hyphens/underscores and numbers at beginning and hyphens/underscores at end identifier = identifier.toLowerCase(); // to lower identifier = identifier.substr(0, maxlength); // max characters return identifier; } function autoFillProjectIdentifier() { var locked = ($('#project_identifier').val() != ''); var maxlength = parseInt($('#project_identifier').attr('maxlength')); $('#project_name').keyup(function(){ if(!locked) { $('#project_identifier').val(generateProjectIdentifier($('#project_name').val(), maxlength)); } }); $('#project_identifier').keyup(function(){ locked = ($('#project_identifier').val() != '' && $('#project_identifier').val() != generateProjectIdentifier($('#project_name').val(), maxlength)); }); } $(document).ready(function(){ autoFillProjectIdentifier(); }); redmine-6.0.5/app/assets/javascripts/quote_reply.js000066400000000000000000000134101500112024600224540ustar00rootroot00000000000000function quoteReply(path, selectorForContentElement, textFormatting) { const contentElement = $(selectorForContentElement).get(0); const selectedRange = QuoteExtractor.extract(contentElement); let formatter; if (textFormatting === 'common_mark') { formatter = new QuoteCommonMarkFormatter(); } else { formatter = new QuoteTextFormatter(); } $.ajax({ url: path, type: 'post', data: { quote: formatter.format(selectedRange) } }); } class QuoteExtractor { static extract(targetElement) { return new QuoteExtractor(targetElement).extract(); } constructor(targetElement) { this.targetElement = targetElement; this.selection = window.getSelection(); } extract() { const range = this.retriveSelectedRange(); if (!range) { return null; } if (!this.targetElement.contains(range.startContainer)) { range.setStartBefore(this.targetElement); } if (!this.targetElement.contains(range.endContainer)) { range.setEndAfter(this.targetElement); } return range; } retriveSelectedRange() { if (!this.isSelected) { return null; } // Retrive the first range that intersects with the target element. // NOTE: Firefox allows to select multiple ranges in the document. for (let i = 0; i < this.selection.rangeCount; i++) { let range = this.selection.getRangeAt(i); if (range.intersectsNode(this.targetElement)) { return range; } } return null; } get isSelected() { return this.selection.containsNode(this.targetElement, true); } } class QuoteTextFormatter { format(selectedRange) { if (!selectedRange) { return null; } const fragment = document.createElement('div'); fragment.appendChild(selectedRange.cloneContents()); // Remove all unnecessary anchor elements fragment.querySelectorAll('a.wiki-anchor').forEach(e => e.remove()); const html = this.adjustLineBreaks(fragment.innerHTML); const result = document.createElement('div'); result.innerHTML = html; // Replace continuous line breaks with a single line break and remove tab characters return result.textContent .trim() .replace(/\t/g, '') .replace(/\n+/g, "\n"); } adjustLineBreaks(html) { return html .replace(/<\/(h1|h2|h3|h4|div|p|li|tr)>/g, "\n") .replace(/
        /g, "\n") } } class QuoteCommonMarkFormatter { format(selectedRange) { if (!selectedRange) { return null; } const htmlFragment = this.extractHtmlFragmentFrom(selectedRange); const preparedHtml = this.prepareHtml(htmlFragment); return this.convertHtmlToCommonMark(preparedHtml); } extractHtmlFragmentFrom(range) { const fragment = document.createElement('div'); const ancestorNodeName = range.commonAncestorContainer.nodeName; if (ancestorNodeName == 'CODE' || ancestorNodeName == '#text') { fragment.appendChild(this.wrapPreCode(range)); } else { fragment.appendChild(range.cloneContents()); } return fragment; } // When only the content within the `` element is selected, // the HTML within the selection range does not include the `
        ` element itself.
          // To create a complete code block, wrap the selected content with the `
        ` tags.
          //
          // selected contentes => 
        selected contents
        wrapPreCode(range) { const rangeAncestor = range.commonAncestorContainer; let codeElement = null; if (rangeAncestor.nodeName == 'CODE') { codeElement = rangeAncestor; } else { codeElement = rangeAncestor.parentElement.closest('code'); } if (!codeElement) { return range.cloneContents(); } const pre = document.createElement('pre'); const code = codeElement.cloneNode(false); code.appendChild(range.cloneContents()); pre.appendChild(code); return pre; } convertHtmlToCommonMark(html) { const turndownService = new TurndownService({ codeBlockStyle: 'fenced', headingStyle: 'atx' }); turndownService.addRule('del', { filter: ['del'], replacement: content => `~~${content}~~` }); turndownService.addRule('checkList', { filter: node => { return node.type === 'checkbox' && node.parentNode.nodeName === 'LI'; }, replacement: (content, node) => { return node.checked ? '[x]' : '[ ]'; } }); // Table does not maintain its original format, // and the text within the table is displayed as it is // // | A | B | C | // |---|---|---| // | 1 | 2 | 3 | // => // A B C // 1 2 3 turndownService.addRule('table', { filter: ['td', 'th'], replacement: (content, node) => { const separator = node.parentElement.lastElementChild === node ? '' : ' '; return content + separator; } }); turndownService.addRule('tableHeading', { filter: ['thead', 'tbody', 'tfoot', 'tr'], replacement: (content, _node) => content }); turndownService.addRule('tableRow', { filter: ['tr'], replacement: (content, _node) => { return content + '\n' } }); return turndownService.turndown(html); } prepareHtml(htmlFragment) { // Remove all anchor elements. //

        Title1¶

        =>

        Title1

        htmlFragment.querySelectorAll('a.wiki-anchor').forEach(e => e.remove()); // Convert code highlight blocks to CommonMark format code blocks. // => htmlFragment.querySelectorAll('code[data-language]').forEach(e => { e.classList.replace(e.dataset['language'], 'language-' + e.dataset['language']) }); return htmlFragment.innerHTML; } } redmine-6.0.5/app/assets/javascripts/raphael.js000066400000000000000000002657571500112024600215470ustar00rootroot00000000000000!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Raphael=e():t.Raphael=e()}(window,function(){return function(t){var e={};function r(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,i){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(i,n,function(e){return t[e]}.bind(null,n));return i},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){var i,n;i=[r(2)],void 0===(n=function(t){function e(i){if(e.is(i,"function"))return r?i():t.on("raphael.DOMload",i);if(e.is(i,A))return e._engine.create[c](e,i.splice(0,3+e.is(i[0],T))).add(i);var n=Array.prototype.slice.call(arguments,0);if(e.is(n[n.length-1],"function")){var a=n.pop();return r?a.call(e._engine.create[c](e,n)):t.on("raphael.DOMload",function(){a.call(e._engine.create[c](e,n))})}return e._engine.create[c](e,arguments)}e.version="2.3.0",e.eve=t;var r,i,n=/[, ]+/,a={circle:1,rect:1,path:1,ellipse:1,text:1,image:1},s=/\{(\d+)\}/g,o="hasOwnProperty",l={doc:document,win:window},h={was:Object.prototype[o].call(l.win,"Raphael"),is:l.win.Raphael},u=function(){this.ca=this.customAttributes={}},c="apply",f="concat",p="ontouchstart"in window||window.TouchEvent||window.DocumentTouch&&document instanceof DocumentTouch,d="",g=" ",x=String,v="split",y="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[v](g),m={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},b=x.prototype.toLowerCase,_=Math,w=_.max,k=_.min,B=_.abs,C=_.pow,S=_.PI,T="number",A="array",M=Object.prototype.toString,E=(e._ISURL=/^url\(['"]?(.+?)['"]?\)$/i,/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),N={NaN:1,Infinity:1,"-Infinity":1},L=/^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,P=_.round,z=parseFloat,F=parseInt,R=x.prototype.toUpperCase,j=e._availableAttrs={"arrow-end":"none","arrow-start":"none",blur:0,"clip-rect":"0 0 1e9 1e9",cursor:"default",cx:0,cy:0,fill:"#fff","fill-opacity":1,font:'10px "Arial"',"font-family":'"Arial"',"font-size":"10","font-style":"normal","font-weight":400,gradient:0,height:0,href:"http://raphaeljs.com/","letter-spacing":0,opacity:1,path:"M0,0",r:0,rx:0,ry:0,src:"",stroke:"#000","stroke-dasharray":"","stroke-linecap":"butt","stroke-linejoin":"butt","stroke-miterlimit":0,"stroke-opacity":1,"stroke-width":1,target:"_blank","text-anchor":"middle",title:"Raphael",transform:"",width:0,x:0,y:0,class:""},I=e._availableAnimAttrs={blur:T,"clip-rect":"csv",cx:T,cy:T,fill:"colour","fill-opacity":T,"font-size":T,height:T,opacity:T,path:"path",r:T,rx:T,ry:T,stroke:"colour","stroke-opacity":T,"stroke-width":T,transform:"transform",width:T,x:T,y:T},D=/[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,q={hs:1,rg:1},O=/,?([achlmqrstvxz]),?/gi,V=/([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,W=/([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,Y=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,G=(e._radial_gradient=/^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/,{}),H=function(t,e){return z(t)-z(e)},X=function(t){return t},U=e._rectPath=function(t,e,r,i,n){return n?[["M",t+n,e],["l",r-2*n,0],["a",n,n,0,0,1,n,n],["l",0,i-2*n],["a",n,n,0,0,1,-n,n],["l",2*n-r,0],["a",n,n,0,0,1,-n,-n],["l",0,2*n-i],["a",n,n,0,0,1,n,-n],["z"]]:[["M",t,e],["l",r,0],["l",0,i],["l",-r,0],["z"]]},$=function(t,e,r,i){return null==i&&(i=r),[["M",t,e],["m",0,-i],["a",r,i,0,1,1,0,2*i],["a",r,i,0,1,1,0,-2*i],["z"]]},Z=e._getPath={path:function(t){return t.attr("path")},circle:function(t){var e=t.attrs;return $(e.cx,e.cy,e.r)},ellipse:function(t){var e=t.attrs;return $(e.cx,e.cy,e.rx,e.ry)},rect:function(t){var e=t.attrs;return U(e.x,e.y,e.width,e.height,e.r)},image:function(t){var e=t.attrs;return U(e.x,e.y,e.width,e.height)},text:function(t){var e=t._getBBox();return U(e.x,e.y,e.width,e.height)},set:function(t){var e=t._getBBox();return U(e.x,e.y,e.width,e.height)}},Q=e.mapPath=function(t,e){if(!e)return t;var r,i,n,a,s,o,l;for(n=0,s=(t=Tt(t)).length;n',(J=K.firstChild).style.behavior="url(#default#VML)",!J||"object"!=typeof J.adj)return e.type=d;K=null}function tt(t){if("function"==typeof t||Object(t)!==t)return t;var e=new t.constructor;for(var r in t)t[o](r)&&(e[r]=tt(t[r]));return e}e.svg=!(e.vml="VML"==e.type),e._Paper=u,e.fn=i=u.prototype=e.prototype,e._id=0,e.is=function(t,e){return"finite"==(e=b.call(e))?!N[o](+t):"array"==e?t instanceof Array:"null"==e&&null===t||e==typeof t&&null!==t||"object"==e&&t===Object(t)||"array"==e&&Array.isArray&&Array.isArray(t)||M.call(t).slice(8,-1).toLowerCase()==e},e.angle=function(t,r,i,n,a,s){if(null==a){var o=t-i,l=r-n;return o||l?(180+180*_.atan2(-l,-o)/S+360)%360:0}return e.angle(t,r,a,s)-e.angle(i,n,a,s)},e.rad=function(t){return t%360*S/180},e.deg=function(t){return Math.round(180*t/S%360*1e3)/1e3},e.snapTo=function(t,r,i){if(i=e.is(i,"finite")?i:10,e.is(t,A)){for(var n=t.length;n--;)if(B(t[n]-r)<=i)return t[n]}else{var a=r%(t=+t);if(at-i)return r-a+t}return r};var et,rt;e.createUUID=(et=/[xy]/g,rt=function(t){var e=16*_.random()|0;return("x"==t?e:3&e|8).toString(16)},function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(et,rt).toUpperCase()});e.setWindow=function(r){t("raphael.setWindow",e,l.win,r),l.win=r,l.doc=l.win.document,e._engine.initWin&&e._engine.initWin(l.win)};var it=function(t){if(e.vml){var r,i=/^\s+|\s+$/g;try{var n=new ActiveXObject("htmlfile");n.write(""),n.close(),r=n.body}catch(t){r=createPopup().document.body}var a=r.createTextRange();it=ht(function(t){try{r.style.color=x(t).replace(i,d);var e=a.queryCommandValue("ForeColor");return"#"+("000000"+(e=(255&e)<<16|65280&e|(16711680&e)>>>16).toString(16)).slice(-6)}catch(t){return"none"}})}else{var s=l.doc.createElement("i");s.title="Raphaël Colour Picker",s.style.display="none",l.doc.body.appendChild(s),it=ht(function(t){return s.style.color=t,l.doc.defaultView.getComputedStyle(s,d).getPropertyValue("color")})}return it(t)},nt=function(){return"hsb("+[this.h,this.s,this.b]+")"},at=function(){return"hsl("+[this.h,this.s,this.l]+")"},st=function(){return this.hex},ot=function(t,r,i){if(null==r&&e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t&&(i=t.b,r=t.g,t=t.r),null==r&&e.is(t,"string")){var n=e.getRGB(t);t=n.r,r=n.g,i=n.b}return(t>1||r>1||i>1)&&(t/=255,r/=255,i/=255),[t,r,i]},lt=function(t,r,i,n){var a={r:t*=255,g:r*=255,b:i*=255,hex:e.rgb(t,r,i),toString:st};return e.is(n,"finite")&&(a.opacity=n),a};function ht(t,e,r){return function i(){var n=Array.prototype.slice.call(arguments,0),a=n.join("â€"),s=i.cache=i.cache||{},l=i.count=i.count||[];return s[o](a)?(function(t,e){for(var r=0,i=t.length;r=1e3&&delete s[l.shift()],l.push(a),s[a]=t[c](e,n),r?r(s[a]):s[a])}}e.color=function(t){var r;return e.is(t,"object")&&"h"in t&&"s"in t&&"b"in t?(r=e.hsb2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):e.is(t,"object")&&"h"in t&&"s"in t&&"l"in t?(r=e.hsl2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):(e.is(t,"string")&&(t=e.getRGB(t)),e.is(t,"object")&&"r"in t&&"g"in t&&"b"in t?(r=e.rgb2hsl(t),t.h=r.h,t.s=r.s,t.l=r.l,r=e.rgb2hsb(t),t.v=r.b):(t={hex:"none"}).r=t.g=t.b=t.h=t.s=t.v=t.l=-1),t.toString=st,t},e.hsb2rgb=function(t,e,r,i){var n,a,s,o,l;return this.is(t,"object")&&"h"in t&&"s"in t&&"b"in t&&(r=t.b,e=t.s,i=t.o,t=t.h),o=(l=r*e)*(1-B((t=(t*=360)%360/60)%2-1)),n=a=s=r-l,lt(n+=[l,o,0,0,o,l][t=~~t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],i)},e.hsl2rgb=function(t,e,r,i){var n,a,s,o,l;return this.is(t,"object")&&"h"in t&&"s"in t&&"l"in t&&(r=t.l,e=t.s,t=t.h),(t>1||e>1||r>1)&&(t/=360,e/=100,r/=100),o=(l=2*e*(r<.5?r:1-r))*(1-B((t=(t*=360)%360/60)%2-1)),n=a=s=r-l/2,lt(n+=[l,o,0,0,o,l][t=~~t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],i)},e.rgb2hsb=function(t,e,r){var i,n;return t=(r=ot(t,e,r))[0],e=r[1],r=r[2],{h:((0==(n=(i=w(t,e,r))-k(t,e,r))?null:i==t?(e-r)/n:i==e?(r-t)/n+2:(t-e)/n+4)+360)%6*60/360,s:0==n?0:n/i,b:i,toString:nt}},e.rgb2hsl=function(t,e,r){var i,n,a,s;return t=(r=ot(t,e,r))[0],e=r[1],r=r[2],i=((n=w(t,e,r))+(a=k(t,e,r)))/2,{h:((0==(s=n-a)?null:n==t?(e-r)/s:n==e?(r-t)/s+2:(t-e)/s+4)+360)%6*60/360,s:0==s?0:i<.5?s/(2*i):s/(2-2*i),l:i,toString:at}},e._path2string=function(){return this.join(",").replace(O,"$1")};e._preload=function(t,e){var r=l.doc.createElement("img");r.style.cssText="position:absolute;left:-9999em;top:-9999em",r.onload=function(){e.call(this),this.onload=null,l.doc.body.removeChild(this)},r.onerror=function(){l.doc.body.removeChild(this)},l.doc.body.appendChild(r),r.src=t};function ut(){return this.hex}function ct(t,e){for(var r=[],i=0,n=t.length;n-2*!e>i;i+=2){var a=[{x:+t[i-2],y:+t[i-1]},{x:+t[i],y:+t[i+1]},{x:+t[i+2],y:+t[i+3]},{x:+t[i+4],y:+t[i+5]}];e?i?n-4==i?a[3]={x:+t[0],y:+t[1]}:n-2==i&&(a[2]={x:+t[0],y:+t[1]},a[3]={x:+t[2],y:+t[3]}):a[0]={x:+t[n-2],y:+t[n-1]}:n-4==i?a[3]=a[2]:i||(a[0]={x:+t[i],y:+t[i+1]}),r.push(["C",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return r}e.getRGB=ht(function(t){if(!t||(t=x(t)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ut};if("none"==t)return{r:-1,g:-1,b:-1,hex:"none",toString:ut};!q[o](t.toLowerCase().substring(0,2))&&"#"!=t.charAt()&&(t=it(t));var r,i,n,a,s,l,h=t.match(E);return h?(h[2]&&(n=F(h[2].substring(5),16),i=F(h[2].substring(3,5),16),r=F(h[2].substring(1,3),16)),h[3]&&(n=F((s=h[3].charAt(3))+s,16),i=F((s=h[3].charAt(2))+s,16),r=F((s=h[3].charAt(1))+s,16)),h[4]&&(l=h[4][v](D),r=z(l[0]),"%"==l[0].slice(-1)&&(r*=2.55),i=z(l[1]),"%"==l[1].slice(-1)&&(i*=2.55),n=z(l[2]),"%"==l[2].slice(-1)&&(n*=2.55),"rgba"==h[1].toLowerCase().slice(0,4)&&(a=z(l[3])),l[3]&&"%"==l[3].slice(-1)&&(a/=100)),h[5]?(l=h[5][v](D),r=z(l[0]),"%"==l[0].slice(-1)&&(r*=2.55),i=z(l[1]),"%"==l[1].slice(-1)&&(i*=2.55),n=z(l[2]),"%"==l[2].slice(-1)&&(n*=2.55),("deg"==l[0].slice(-3)||"°"==l[0].slice(-1))&&(r/=360),"hsba"==h[1].toLowerCase().slice(0,4)&&(a=z(l[3])),l[3]&&"%"==l[3].slice(-1)&&(a/=100),e.hsb2rgb(r,i,n,a)):h[6]?(l=h[6][v](D),r=z(l[0]),"%"==l[0].slice(-1)&&(r*=2.55),i=z(l[1]),"%"==l[1].slice(-1)&&(i*=2.55),n=z(l[2]),"%"==l[2].slice(-1)&&(n*=2.55),("deg"==l[0].slice(-3)||"°"==l[0].slice(-1))&&(r/=360),"hsla"==h[1].toLowerCase().slice(0,4)&&(a=z(l[3])),l[3]&&"%"==l[3].slice(-1)&&(a/=100),e.hsl2rgb(r,i,n,a)):((h={r:r,g:i,b:n,toString:ut}).hex="#"+(16777216|n|i<<8|r<<16).toString(16).slice(1),e.is(a,"finite")&&(h.opacity=a),h)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ut}},e),e.hsb=ht(function(t,r,i){return e.hsb2rgb(t,r,i).hex}),e.hsl=ht(function(t,r,i){return e.hsl2rgb(t,r,i).hex}),e.rgb=ht(function(t,e,r){function i(t){return t+.5|0}return"#"+(16777216|i(r)|i(e)<<8|i(t)<<16).toString(16).slice(1)}),e.getColor=function(t){var e=this.getColor.start=this.getColor.start||{h:0,s:1,b:t||.75},r=this.hsb2rgb(e.h,e.s,e.b);return e.h+=.075,e.h>1&&(e.h=0,e.s-=.2,e.s<=0&&(this.getColor.start={h:0,s:1,b:e.b})),r.hex},e.getColor.reset=function(){delete this.start},e.parsePathString=function(t){if(!t)return null;var r=ft(t);if(r.arr)return mt(r.arr);var i={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},n=[];return e.is(t,A)&&e.is(t[0],A)&&(n=mt(t)),n.length||x(t).replace(V,function(t,e,r){var a=[],s=e.toLowerCase();if(r.replace(Y,function(t,e){e&&a.push(+e)}),"m"==s&&a.length>2&&(n.push([e][f](a.splice(0,2))),s="l",e="m"==e?"l":"L"),"r"==s)n.push([e][f](a));else for(;a.length>=i[s]&&(n.push([e][f](a.splice(0,i[s]))),i[s]););}),n.toString=e._path2string,r.arr=mt(n),n},e.parseTransformString=ht(function(t){if(!t)return null;var r=[];return e.is(t,A)&&e.is(t[0],A)&&(r=mt(t)),r.length||x(t).replace(W,function(t,e,i){var n=[];b.call(e);i.replace(Y,function(t,e){e&&n.push(+e)}),r.push([e][f](n))}),r.toString=e._path2string,r},this,function(t){if(!t)return t;for(var e=[],r=0;r1?1:l<0?0:l)/2,u=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],c=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],f=0,p=0;p<12;p++){var d=h*u[p]+h,g=pt(d,t,r,n,s),x=pt(d,e,i,a,o),v=g*g+x*x;f+=c[p]*_.sqrt(v)}return h*f}function gt(t,e,r,i,n,a,s,o){if(!(w(t,r)w(n,s)||w(e,i)w(a,o))){var l=(t-r)*(a-o)-(e-i)*(n-s);if(l){var h=((t*i-e*r)*(n-s)-(t-r)*(n*o-a*s))/l,u=((t*i-e*r)*(a-o)-(e-i)*(n*o-a*s))/l,c=+h.toFixed(2),f=+u.toFixed(2);if(!(c<+k(t,r).toFixed(2)||c>+w(t,r).toFixed(2)||c<+k(n,s).toFixed(2)||c>+w(n,s).toFixed(2)||f<+k(e,i).toFixed(2)||f>+w(e,i).toFixed(2)||f<+k(a,o).toFixed(2)||f>+w(a,o).toFixed(2)))return{x:h,y:u}}}}function xt(t,r,i){var n=e.bezierBBox(t),a=e.bezierBBox(r);if(!e.isBBoxIntersect(n,a))return i?0:[];for(var s=dt.apply(0,t),o=dt.apply(0,r),l=w(~~(s/5),1),h=w(~~(o/5),1),u=[],c=[],f={},p=i?0:[],d=0;d=0&&T<=1.001&&A>=0&&A<=1.001&&(i?p++:p.push({x:S.x,y:S.y,t1:k(T,1),t2:k(A,1)}))}}return p}function vt(t,r,i){t=e._path2curve(t),r=e._path2curve(r);for(var n,a,s,o,l,h,u,c,f,p,d=i?0:[],g=0,x=t.length;gy||v=t.x&&e<=t.x2&&r>=t.y&&r<=t.y2},e.isBBoxIntersect=function(t,r){var i=e.isPointInsideBBox;return i(r,t.x,t.y)||i(r,t.x2,t.y)||i(r,t.x,t.y2)||i(r,t.x2,t.y2)||i(t,r.x,r.y)||i(t,r.x2,r.y)||i(t,r.x,r.y2)||i(t,r.x2,r.y2)||(t.xr.x||r.xt.x)&&(t.yr.y||r.yt.y)},e.pathIntersection=function(t,e){return vt(t,e)},e.pathIntersectionNumber=function(t,e){return vt(t,e,1)},e.isPointInsidePath=function(t,r,i){var n=e.pathBBox(t);return e.isPointInsideBBox(n,r,i)&&vt(t,[["M",r,i],["H",n.x2+10]],1)%2==1},e._removedFactory=function(e){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+e+"†of removed object",e)}};var yt=e.pathBBox=function(t){var e=ft(t);if(e.bbox)return tt(e.bbox);if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0};for(var r,i=0,n=0,a=[],s=[],o=0,l=(t=Tt(t)).length;o1&&(r*=m=_.sqrt(m),i*=m);var b=r*r,w=i*i,k=(a==s?-1:1)*_.sqrt(B((b*w-b*y*y-w*x*x)/(b*y*y+w*x*x))),C=k*r*y/i+(t+o)/2,T=k*-i*x/r+(e+l)/2,A=_.asin(((e-T)/i).toFixed(9)),M=_.asin(((l-T)/i).toFixed(9));(A=tM&&(A-=2*S),!s&&M>A&&(M-=2*S)}var E=M-A;if(B(E)>c){var N=M,L=o,P=l;M=A+c*(s&&M>A?1:-1),o=C+r*_.cos(M),l=T+i*_.sin(M),d=Bt(o,l,r,i,n,0,s,L,P,[M,N,C,T])}E=M-A;var z=_.cos(A),F=_.sin(A),R=_.cos(M),j=_.sin(M),I=_.tan(E/4),D=4/3*r*I,q=4/3*i*I,O=[t,e],V=[t+D*F,e-q*z],W=[o+D*j,l-q*R],Y=[o,l];if(V[0]=2*O[0]-V[0],V[1]=2*O[1]-V[1],h)return[V,W,Y][f](d);for(var G=[],H=0,X=(d=[V,W,Y][f](d).join()[v](",")).length;H"1e12"&&(p=.5),B(d)>"1e12"&&(d=.5),p>0&&p<1&&(l=Ct(t,e,r,i,n,a,s,o,p),x.push(l.x),g.push(l.y)),d>0&&d<1&&(l=Ct(t,e,r,i,n,a,s,o,d),x.push(l.x),g.push(l.y)),h=a-2*i+e-(o-2*a+i),f=e-i,p=(-(u=2*(i-e)-2*(a-i))+_.sqrt(u*u-4*h*f))/2/h,d=(-u-_.sqrt(u*u-4*h*f))/2/h,B(p)>"1e12"&&(p=.5),B(d)>"1e12"&&(d=.5),p>0&&p<1&&(l=Ct(t,e,r,i,n,a,s,o,p),x.push(l.x),g.push(l.y)),d>0&&d<1&&(l=Ct(t,e,r,i,n,a,s,o,d),x.push(l.x),g.push(l.y)),{min:{x:k[c](0,x),y:k[c](0,g)},max:{x:w[c](0,x),y:w[c](0,g)}}}),Tt=e._path2curve=ht(function(t,e){var r=!e&&ft(t);if(!e&&r.curve)return mt(r.curve);for(var i=_t(t),n=e&&_t(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},o=function(t,e,r){var i,n;if(!t)return["C",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in{T:1,Q:1})&&(e.qx=e.qy=null),t[0]){case"M":e.X=t[1],e.Y=t[2];break;case"A":t=["C"][f](Bt[c](0,[e.x,e.y][f](t.slice(1))));break;case"S":"C"==r||"S"==r?(i=2*e.x-e.bx,n=2*e.y-e.by):(i=e.x,n=e.y),t=["C",i,n][f](t.slice(1));break;case"T":"Q"==r||"T"==r?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=["C"][f](kt(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case"Q":e.qx=t[1],e.qy=t[2],t=["C"][f](kt(e.x,e.y,t[1],t[2],t[3],t[4]));break;case"L":t=["C"][f](wt(e.x,e.y,t[1],t[2]));break;case"H":t=["C"][f](wt(e.x,e.y,t[1],e.y));break;case"V":t=["C"][f](wt(e.x,e.y,e.x,t[1]));break;case"Z":t=["C"][f](wt(e.x,e.y,e.X,e.Y))}return t},l=function(t,e){if(t[e].length>7){t[e].shift();for(var r=t[e];r.length;)u[e]="A",n&&(p[e]="A"),t.splice(e++,0,["C"][f](r.splice(0,6)));t.splice(e,1),v=w(i.length,n&&n.length||0)}},h=function(t,e,r,a,s){t&&e&&"M"==t[s][0]&&"M"!=e[s][0]&&(e.splice(s,0,["M",a.x,a.y]),r.bx=0,r.by=0,r.x=t[s][1],r.y=t[s][2],v=w(i.length,n&&n.length||0))},u=[],p=[],d="",g="",x=0,v=w(i.length,n&&n.length||0);x.01;)h=dt(t,e,r,i,n,a,s,o,c+=(hn){if(r&&!f.start){if(c+=["C"+(u=Xt(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p)).start.x,u.start.y,u.m.x,u.m.y,u.x,u.y],a)return c;f.start=c,c=["M"+u.x,u.y+"C"+u.n.x,u.n.y,u.end.x,u.end.y,l[5],l[6]].join(),p+=h,s=+l[5],o=+l[6];continue}if(!t&&!r)return{x:(u=Xt(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p)).x,y:u.y,alpha:u.alpha}}p+=h,s=+l[5],o=+l[6]}c+=l.shift()+l}return f.end=c,(u=t?p:r?f:e.findDotsAtSegment(s,o,l[0],l[1],l[2],l[3],l[4],l[5],1)).alpha&&(u={x:u.x,y:u.y,alpha:u.alpha}),u}},$t=Ut(1),Zt=Ut(),Qt=Ut(0,1);e.getTotalLength=$t,e.getPointAtLength=Zt,e.getSubpath=function(t,e,r){if(this.getTotalLength(t)-r<1e-6)return Qt(t,e).end;var i=Qt(t,r,1);return e?Qt(i,e).end:i},Wt.getTotalLength=function(){var t=this.getPath();if(t)return this.node.getTotalLength?this.node.getTotalLength():$t(t)},Wt.getPointAtLength=function(t){var e=this.getPath();if(e)return Zt(e,t)},Wt.getPath=function(){var t,r=e._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return r&&(t=r(this)),t},Wt.getSubpath=function(t,r){var i=this.getPath();if(i)return e.getSubpath(i,t,r)};var Jt=e.easing_formulas={linear:function(t){return t},"<":function(t){return C(t,1.7)},">":function(t){return C(t,.48)},"<>":function(t){var e=.48-t/1.04,r=_.sqrt(.1734+e*e),i=r-e,n=-r-e,a=C(B(i),1/3)*(i<0?-1:1)+C(B(n),1/3)*(n<0?-1:1)+.5;return 3*(1-a)*a*a+a*a*a},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},elastic:function(t){return t==!!t?t:C(2,-10*t)*_.sin(2*S*(t-.075)/.3)+1},bounce:function(t){var e=7.5625,r=2.75;return t<1/r?e*t*t:t<2/r?e*(t-=1.5/r)*t+.75:t<2.5/r?e*(t-=2.25/r)*t+.9375:e*(t-=2.625/r)*t+.984375}};Jt.easeIn=Jt["ease-in"]=Jt["<"],Jt.easeOut=Jt["ease-out"]=Jt[">"],Jt.easeInOut=Jt["ease-in-out"]=Jt["<>"],Jt["back-in"]=Jt.backIn,Jt["back-out"]=Jt.backOut;var Kt=[],te=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,16)},ee=function(){for(var r=+new Date,i=0;i1&&!n.next){for(s in d)d[o](s)&&(y[s]=n.totalOrigin[s]);n.el.attr(y),ae(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&ae(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}}Kt.length&&te(ee)},re=function(t){return t>255?255:t<0?0:t};function ie(t,e,r,i,n,a){var s=3*e,o=3*(i-e)-s,l=1-s-o,h=3*r,u=3*(n-r)-h,c=1-h-u;function f(t){return((l*t+o)*t+s)*t}return function(t,e){var r=function(t,e){var r,i,n,a,h,u;for(n=t,u=0;u<8;u++){if(a=f(n)-t,B(a)i)return i;for(;ra?r=n:i=n,n=(i-r)/2+r}return n}(t,e);return((c*r+u)*r+h)*r}(t,1/(200*a))}function ne(t,e){var r=[],i={};if(this.ms=e,this.times=1,t){for(var n in t)t[o](n)&&(i[z(n)]=t[n],r.push(z(n)));r.sort(H)}this.anim=i,this.top=r[r.length-1],this.percents=r}function ae(r,i,a,s,l,h){a=z(a);var u,c,p,d,g,y,m=r.ms,b={},_={},w={};if(s)for(B=0,C=Kt.length;Bs*r.top){a=r.percents[B],g=r.percents[B-1]||0,m=m/r.top*(a-g),d=r.percents[B+1],u=r.anim[a];break}s&&i.attr(r.anim[r.percents[B]])}if(u){if(c)c.initstatus=s,c.start=new Date-c.ms*s;else{for(var S in u)if(u[o](S)&&(I[o](S)||i.paper.customAttributes[o](S)))switch(b[S]=i.attr(S),null==b[S]&&(b[S]=j[S]),_[S]=u[S],I[S]){case T:w[S]=(_[S]-b[S])/m;break;case"colour":b[S]=e.getRGB(b[S]);var A=e.getRGB(_[S]);w[S]={r:(A.r-b[S].r)/m,g:(A.g-b[S].g)/m,b:(A.b-b[S].b)/m};break;case"path":var M=Tt(b[S],_[S]),E=M[1];for(b[S]=M[0],w[S]=[],B=0,C=b[S].length;Bh&&(h=c)}!t[h+="%"].callback&&(t[h].callback=n)}return new ne(t,r)},Wt.animate=function(t,r,i,n){if(this.removed)return n&&n.call(this),this;var a=t instanceof ne?t:e.animation(t,r,i,n);return ae(a,this,a.percents[0],null,this.attr()),this},Wt.setTime=function(t,e){return t&&null!=e&&this.status(t,k(e,t.ms)/t.ms),this},Wt.status=function(t,e){var r,i,n=[],a=0;if(null!=e)return ae(t,this,-1,k(e,1)),this;for(r=Kt.length;a1)for(var i=0,n=r.length;i.5)-1;l(f-.5,2)+l(p-.5,2)>.25&&(p=a.sqrt(.25-l(f-.5,2))*n+.5)&&.5!=p&&(p=p.toFixed(5)-1e-5*n)}return c})).split(/\s*\-\s*/),"linear"==h){var b=n.shift();if(b=-i(b),isNaN(b))return null;var _=[0,0,a.cos(t.rad(b)),a.sin(t.rad(b))],w=1/(s(o(_[2]),o(_[3]))||1);_[2]*=w,_[3]*=w,_[2]<0&&(_[0]=-_[2],_[2]=0),_[3]<0&&(_[1]=-_[3],_[3]=0)}var k=t._parseDots(n);if(!k)return null;if(u=u.replace(/[\(\)\s,\xb0#]/g,"_"),e.gradient&&u!=e.gradient.id&&(g.defs.removeChild(e.gradient),delete e.gradient),!e.gradient){m=x(h+"Gradient",{id:u}),e.gradient=m,x(m,"radial"==h?{fx:f,fy:p}:{x1:_[0],y1:_[1],x2:_[2],y2:_[3],gradientTransform:e.matrix.invert()}),g.defs.appendChild(m);for(var B=0,C=k.length;B1?P.opacity/100:P.opacity});case"stroke":P=t.getRGB(g),l.setAttribute(d,P.hex),"stroke"==d&&P[e]("opacity")&&x(l,{"stroke-opacity":P.opacity>1?P.opacity/100:P.opacity}),"stroke"==d&&i._.arrows&&("startString"in i._.arrows&&b(i,i._.arrows.startString),"endString"in i._.arrows&&b(i,i._.arrows.endString,1));break;case"gradient":("circle"==i.type||"ellipse"==i.type||"r"!=r(g).charAt())&&v(i,g);break;case"opacity":u.gradient&&!u[e]("stroke-opacity")&&x(l,{"stroke-opacity":g>1?g/100:g});case"fill-opacity":if(u.gradient){(z=t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g,c)))&&(F=z.getElementsByTagName("stop"),x(F[F.length-1],{"stop-opacity":g}));break}default:"font-size"==d&&(g=n(g,10)+"px");var R=d.replace(/(\-.)/g,function(t){return t.substring(1).toUpperCase()});l.style[R]=g,i._.dirty=1,l.setAttribute(d,g)}}B(i,a),l.style.visibility=f},B=function(i,a){if("text"==i.type&&(a[e]("text")||a[e]("font")||a[e]("font-size")||a[e]("x")||a[e]("y"))){var s=i.attrs,o=i.node,l=o.firstChild?n(t._g.doc.defaultView.getComputedStyle(o.firstChild,c).getPropertyValue("font-size"),10):10;if(a[e]("text")){for(s.text=a.text;o.firstChild;)o.removeChild(o.firstChild);for(var h,u=r(a.text).split("\n"),f=[],p=0,d=u.length;p"));var U=H.getBoundingClientRect();T.W=g.w=(U.right-U.left)/100,T.H=g.h=(U.bottom-U.top)/100,T.X=g.x,T.Y=g.y+T.H/2,("x"in l||"y"in l)&&(T.path.v=t.format("m{0},{1}l{2},{1}",a(g.x*y),a(g.y*y),a(g.x*y)+1));for(var $=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,Q=$.length;Z.25&&(r=n.sqrt(.25-o(e-.5,2))*(2*(r>.5)-1)+.5),h=e+c+r),f})).split(/\s*\-\s*/),"linear"==l){var u=a.shift();if(u=-i(u),isNaN(u))return null}var p=t._parseDots(a);if(!p)return null;if(e=e.shape||e.node,p.length){e.removeChild(s),s.on=!0,s.method="none",s.color=p[0].color,s.color2=p[p.length-1].color;for(var d=[],g=0,x=p.length;g')}}catch(t){k=function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},t._engine.initWin(t._g.win),t._engine.create=function(){var e=t._getContainer.apply(0,arguments),r=e.container,i=e.height,n=e.width,a=e.x,s=e.y;if(!r)throw new Error("VML container not found.");var o=new t._Paper,l=o.canvas=t._g.doc.createElement("div"),h=l.style;return a=a||0,s=s||0,n=n||512,i=i||342,o.width=n,o.height=i,n==+n&&(n+="px"),i==+i&&(i+="px"),o.coordsize=216e5+c+216e5,o.coordorigin="0 0",o.span=t._g.doc.createElement("span"),o.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",l.appendChild(o.span),h.cssText=t.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",n,i),1==r?(t._g.doc.body.appendChild(l),h.left=a+"px",h.top=s+"px",h.position="absolute"):r.firstChild?r.insertBefore(l,r.firstChild):r.appendChild(l),o.renderfix=function(){},o},t.prototype.clear=function(){t.eve("raphael.clear",this),this.canvas.innerHTML=f,this.span=t._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},t.prototype.remove=function(){for(var e in t.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas),this)this[e]="function"==typeof this[e]?t._removedFactory(e):null;return!0};var M=t.st;for(var E in A)A[e](E)&&!M[e](E)&&(M[E]=function(t){return function(){var e=arguments;return this.forEach(function(r){r[t].apply(r,e)})}}(E))}}.apply(e,i))||(t.exports=n)}])});redmine-6.0.5/app/assets/javascripts/repository_navigation.js000066400000000000000000000021371500112024600245460ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ $(document).ready(function() { /* If we're viewing a tag or branch, don't display it in the revision box */ var branch_selected = $('#branch').length > 0 && $('#rev').val() == $('#branch').val(); var tag_selected = $('#tag').length > 0 && $('#rev').val() == $('#tag').val(); if (branch_selected || tag_selected) { $('#rev').val(''); } /* Copy the branch/tag value into the revision box, then disable the dropdowns before submitting the form */ $('#branch,#tag').change(function() { $('#rev').val($(this).val()); $('#branch,#tag').attr('disabled', true); $(this).parent().submit(); $('#branch,#tag').removeAttr('disabled'); }); /* Disable the branch/tag dropdowns before submitting the revision form */ $('#rev').keydown(function(e) { if (e.keyCode == 13) { $('#branch,#tag').attr('disabled', true); $(this).parent().submit(); $('#branch,#tag').removeAttr('disabled'); } }); }) redmine-6.0.5/app/assets/javascripts/responsive.js000066400000000000000000000042221500112024600223020ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ // generic layout specific responsive stuff goes here function openFlyout() { $('html').addClass('flyout-is-active'); $('#main, #header').on('click.close-flyout', function(e){ e.preventDefault(); e.stopPropagation(); closeFlyout(); }); } function closeFlyout() { $('html').removeClass('flyout-is-active'); $('#main, #header').off('click.close-flyout'); } function isMobile() { return $('.js-flyout-menu-toggle-button').is(":visible"); } function setupFlyout() { var mobileInit = false, desktopInit = false; /* click handler for mobile menu toggle */ $('.js-flyout-menu-toggle-button').on('click', function(e) { e.preventDefault(); e.stopPropagation(); if($('html').hasClass('flyout-is-active')) { closeFlyout(); } else { openFlyout(); } }); /* bind resize handler */ $(window).resize(function() { initMenu(); }) /* menu init function for dom detaching and appending on mobile / desktop view */ function initMenu() { var _initMobileMenu = function() { /* only init mobile menu, if it hasn't been done yet */ if(!mobileInit) { $('#main-menu > ul').detach().appendTo('.js-project-menu'); $('#top-menu > ul').detach().appendTo('.js-general-menu'); $('#sidebar > *').detach().appendTo('.js-sidebar'); $('#account > ul').detach().appendTo('.js-profile-menu'); mobileInit = true; desktopInit = false; } } var _initDesktopMenu = function() { if(!desktopInit) { $('.js-project-menu > ul').detach().appendTo('#main-menu'); $('.js-general-menu > ul').detach().appendTo('#top-menu'); $('.js-sidebar > *').detach().appendTo('#sidebar'); $('.js-profile-menu > ul').detach().appendTo('#account'); desktopInit = true; mobileInit = false; } } if(isMobile()) { _initMobileMenu(); } else { _initDesktopMenu(); } } // init menu on page load initMenu(); } $(document).ready(setupFlyout); redmine-6.0.5/app/assets/javascripts/revision_graph.js000066400000000000000000000101511500112024600231220ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ var revisionGraph = null; function drawRevisionGraph(holder, commits_hash, graph_space) { var XSTEP = 20, CIRCLE_INROW_OFFSET = 10; var commits_by_scmid = commits_hash, commits = $.map(commits_by_scmid, function(val,i){return val;}); var max_rdmid = commits.length - 1; var commit_table_rows = $('table.changesets tr.changeset'); // create graph if(revisionGraph != null) revisionGraph.clear(); else revisionGraph = Raphael(holder); var top = revisionGraph.set(); // init dimensions var graph_x_offset = commit_table_rows.first().find('td').first().position().left - $(holder).position().left, graph_y_offset = $(holder).position().top, graph_right_side = graph_x_offset + (graph_space + 1) * XSTEP, graph_bottom = commit_table_rows.last().position().top + commit_table_rows.last().height() - graph_y_offset; var yForRow = function (index, commit) { var row = commit_table_rows.eq(index); switch (row.find("td:first").css("vertical-align")) { case "middle": return row.position().top + (row.height() / 2) - graph_y_offset; default: return row.position().top + - graph_y_offset + CIRCLE_INROW_OFFSET; } }; revisionGraph.setSize(graph_right_side, graph_bottom); // init colors var colors = []; Raphael.getColor.reset(); for (var k = 0; k <= graph_space; k++) { colors.push(Raphael.getColor()); } var parent_commit; var x, y, parent_x, parent_y; var path, title; var revision_dot_overlay; $.each(commits, function(index, commit) { if (!commit.hasOwnProperty("space")) commit.space = 0; y = yForRow(max_rdmid - commit.rdmid); x = graph_x_offset + XSTEP / 2 + XSTEP * commit.space; revisionGraph.circle(x, y, 3) .attr({ fill: colors[commit.space], stroke: 'none' }).toFront(); // paths to parents $.each(commit.parent_scmids, function(index, parent_scmid) { parent_commit = commits_by_scmid[parent_scmid]; if (parent_commit) { if (!parent_commit.hasOwnProperty("space")) parent_commit.space = 0; parent_y = yForRow(max_rdmid - parent_commit.rdmid); parent_x = graph_x_offset + XSTEP / 2 + XSTEP * parent_commit.space; if (parent_commit.space == commit.space) { // vertical path path = revisionGraph.path([ 'M', x, y, 'V', parent_y]); } else { // path to a commit in a different branch (Bezier curve) path = revisionGraph.path([ 'M', x, y, 'C', x, y, x, y + (parent_y - y) / 2, x + (parent_x - x) / 2, y + (parent_y - y) / 2, 'C', x + (parent_x - x) / 2, y + (parent_y - y) / 2, parent_x, parent_y-(parent_y-y)/2, parent_x, parent_y]); } } else { // vertical path ending at the bottom of the revisionGraph path = revisionGraph.path([ 'M', x, y, 'V', graph_bottom]); } path.attr({stroke: colors[commit.space], "stroke-width": 1.5}).toBack(); }); revision_dot_overlay = revisionGraph.circle(x, y, 10); revision_dot_overlay .attr({ fill: '#000', opacity: 0, cursor: 'pointer', href: commit.href }); if(commit.refs != null && commit.refs.length > 0) { title = document.createElementNS(revisionGraph.canvas.namespaceURI, 'title'); title.appendChild(document.createTextNode(commit.refs)); revision_dot_overlay.node.appendChild(title); } top.push(revision_dot_overlay); }); top.toFront(); }; redmine-6.0.5/app/assets/javascripts/tablesort-5.2.1.min.js000066400000000000000000000060341500112024600233320ustar00rootroot00000000000000/*! * tablesort v5.2.1 (2020-06-02) * http://tristen.ca/tablesort/demo/ * Copyright (c) 2020 ; Licensed MIT */ !function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.trim().toLowerCase(),b=b.trim().toLowerCase(),a===b?0:a0)if(a.tHead&&a.tHead.rows.length>0){for(e=0;e0&&n.push(m),o++;if(!n)return}for(o=0;oe.length)&&(t=e.length);for(var n=0,i=new Array(t);n>>0,r=arguments[1],o=0;o container for the click");n.selectItemAtIndex(i.getAttribute("data-index"),t),n.hideMenu()}else n.current.element&&!n.current.externalTrigger&&(n.current.externalTrigger=!1,setTimeout((function(){return n.hideMenu()})))}},{key:"keyup",value:function(e,t){if(e.inputEvent&&(e.inputEvent=!1),e.updateSelection(this),27!==t.keyCode){if(!e.tribute.allowSpaces&&e.tribute.hasTrailingSpace)return e.tribute.hasTrailingSpace=!1,e.commandEvent=!0,void e.callbacks().space(t,this);if(!e.tribute.isActive)if(e.tribute.autocompleteMode)e.callbacks().triggerChar(t,this,"");else{var n=e.getKeyCode(e,this,t);if(isNaN(n)||!n)return;var i=e.tribute.triggers().find((function(e){return e.charCodeAt(0)===n}));void 0!==i&&e.callbacks().triggerChar(t,this,i)}e.tribute.current.mentionText.length=r.current.collection.menuShowMinLength&&r.inputEvent&&r.showMenuFor(n,!0)},enter:function(t,n){e.tribute.isActive&&e.tribute.current.filteredItems&&(t.preventDefault(),t.stopPropagation(),setTimeout((function(){e.tribute.selectItemAtIndex(e.tribute.menuSelected,t),e.tribute.hideMenu()}),0))},escape:function(t,n){e.tribute.isActive&&(t.preventDefault(),t.stopPropagation(),e.tribute.isActive=!1,e.tribute.hideMenu())},tab:function(t,n){e.callbacks().enter(t,n)},space:function(t,n){e.tribute.isActive&&(e.tribute.spaceSelectsMatch?e.callbacks().enter(t,n):e.tribute.allowSpaces||(t.stopPropagation(),setTimeout((function(){e.tribute.hideMenu(),e.tribute.isActive=!1}),0)))},up:function(t,n){if(e.tribute.isActive&&e.tribute.current.filteredItems){t.preventDefault(),t.stopPropagation();var i=e.tribute.current.filteredItems.length,r=e.tribute.menuSelected;i>r&&r>0?(e.tribute.menuSelected--,e.setActiveLi()):0===r&&(e.tribute.menuSelected=i-1,e.setActiveLi(),e.tribute.menu.scrollTop=e.tribute.menu.scrollHeight)}},down:function(t,n){if(e.tribute.isActive&&e.tribute.current.filteredItems){t.preventDefault(),t.stopPropagation();var i=e.tribute.current.filteredItems.length-1,r=e.tribute.menuSelected;i>r?(e.tribute.menuSelected++,e.setActiveLi()):i===r&&(e.tribute.menuSelected=0,e.setActiveLi(),e.tribute.menu.scrollTop=0)}},delete:function(t,n){e.tribute.isActive&&e.tribute.current.mentionText.length<1?e.tribute.hideMenu():e.tribute.isActive&&e.tribute.showMenuFor(n)}}}},{key:"setActiveLi",value:function(e){var t=this.tribute.menu.querySelectorAll("li"),n=t.length>>>0;e&&(this.tribute.menuSelected=parseInt(e));for(var i=0;iu.bottom){var l=o.bottom-u.bottom;this.tribute.menu.scrollTop+=l}else if(o.topi.width&&(r.left||r.right),u=window.innerHeight>i.height&&(r.top||r.bottom);(o||u)&&(n.tribute.menu.style.cssText="display: none",n.positionMenuAtCaret(e))}),0)}else this.tribute.menu.style.cssText="display: none"}},{key:"selectElement",value:function(e,t,n){var i,r=e;if(t)for(var o=0;o=0&&(t=i.substring(0,r))}}else{var o=this.tribute.current.element;if(o){var u=o.selectionStart;o.value&&u>=0&&(t=o.value.substring(0,u))}}return t}},{key:"getLastWordInText",value:function(e){var t;return e=e.replace(/\u00A0/g," "),(t=this.tribute.autocompleteSeparator?e.split(this.tribute.autocompleteSeparator):e.split(/\s+/))[t.length-1].trim()}},{key:"getTriggerInfo",value:function(e,t,n,i,r){var o,u,l,a=this,s=this.tribute.current;if(this.isContentEditable(s.element)){var c=this.getContentEditableSelectedPath(s);c&&(o=c.selected,u=c.path,l=c.offset)}else o=this.tribute.current.element;var h=this.getTextPrecedingCurrentSelection(),d=this.getLastWordInText(h);if(r)return{mentionPosition:h.length-d.length,mentionText:d,mentionSelectedElement:o,mentionSelectedPath:u,mentionSelectedOffset:l};if(null!=h){var f,m=-1;if(this.tribute.collection.forEach((function(e){var t=e.trigger,i=e.requireLeadingSpace?a.lastIndexWithLeadingSpace(h,t):h.lastIndexOf(t);i>m&&(m=i,f=t,n=e.requireLeadingSpace)})),m>=0&&(0===m||!n||/[\xA0\s]/g.test(h.substring(m-1,m)))){var p=h.substring(m+f.length,h.length);f=h.substring(m,m+f.length);var v=p.substring(0,1),g=p.length>0&&(" "===v||" "===v);t&&(p=p.trim());var b=i?/[^\S ]/g:/[\xA0\s]/g;if(this.tribute.hasTrailingSpace=b.test(p),!g&&(e||!b.test(p)))return{mentionPosition:m,mentionText:p,mentionSelectedElement:o,mentionSelectedPath:u,mentionSelectedOffset:l,mentionTriggerChar:f}}}}},{key:"lastIndexWithLeadingSpace",value:function(e,t){for(var n=e.split("").reverse().join(""),i=-1,r=0,o=e.length;r=0;s--)if(t[s]!==n[r-s]){a=!1;break}if(a&&(u||l)){i=e.length-1-r;break}}return i}},{key:"isContentEditable",value:function(e){return"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName}},{key:"isMenuOffScreen",value:function(e,t){var n=window.innerWidth,i=window.innerHeight,r=document.documentElement,o=(window.pageXOffset||r.scrollLeft)-(r.clientLeft||0),u=(window.pageYOffset||r.scrollTop)-(r.clientTop||0),l="number"==typeof e.top?e.top:u+i-e.bottom-t.height,a="number"==typeof e.right?e.right:e.left+t.width,s="number"==typeof e.bottom?e.bottom:e.top+t.height,c="number"==typeof e.left?e.left:o+n-e.right-t.width;return{top:lMath.ceil(o+n),bottom:s>Math.ceil(u+i),left:cparseInt(u.height)&&(o.overflowY="scroll")):o.overflow="hidden",r.textContent=e.value.substring(0,t),"INPUT"===e.nodeName&&(r.textContent=r.textContent.replace(/\s/g," "));var l=this.getDocument().createElement("span");l.textContent=e.value.substring(t)||".",r.appendChild(l);var a=e.getBoundingClientRect(),s=document.documentElement,c=(window.pageXOffset||s.scrollLeft)-(s.clientLeft||0),h=(window.pageYOffset||s.scrollTop)-(s.clientTop||0),d=0,f=0;this.menuContainerIsBody&&(d=a.top,f=a.left);var m={top:d+h+l.offsetTop+parseInt(u.borderTopWidth)+parseInt(u.fontSize)-e.scrollTop,left:f+c+l.offsetLeft+parseInt(u.borderLeftWidth)},p=window.innerWidth,v=window.innerHeight,g=this.getMenuDimensions(),b=this.isMenuOffScreen(m,g);b.right&&(m.right=p-m.left,m.left="auto");var y=this.tribute.menuContainer?this.tribute.menuContainer.offsetHeight:this.getDocument().body.offsetHeight;if(b.bottom){var w=y-(v-(this.tribute.menuContainer?this.tribute.menuContainer.getBoundingClientRect():this.getDocument().body.getBoundingClientRect()).top);m.bottom=w+(v-a.top-l.offsetTop),m.top="auto"}return(b=this.isMenuOffScreen(m,g)).left&&(m.left=p>g.width?c+p-g.width:c,delete m.right),b.top&&(m.top=v>g.height?h+v-g.height:h,delete m.bottom),this.getDocument().body.removeChild(r),m}},{key:"getContentEditableCaretPosition",value:function(e){var t,n=this.getWindowSelection();(t=this.getDocument().createRange()).setStart(n.anchorNode,e),t.setEnd(n.anchorNode,e),t.collapse(!1);var i=t.getBoundingClientRect(),r=document.documentElement,o=(window.pageXOffset||r.scrollLeft)-(r.clientLeft||0),u=(window.pageYOffset||r.scrollTop)-(r.clientTop||0),l={left:i.left+o,top:i.top+i.height+u},a=window.innerWidth,s=window.innerHeight,c=this.getMenuDimensions(),h=this.isMenuOffScreen(l,c);h.right&&(l.left="auto",l.right=a-i.left-o);var d=this.tribute.menuContainer?this.tribute.menuContainer.offsetHeight:this.getDocument().body.offsetHeight;if(h.bottom){var f=d-(s-(this.tribute.menuContainer?this.tribute.menuContainer.getBoundingClientRect():this.getDocument().body.getBoundingClientRect()).top);l.top="auto",l.bottom=f+(s-i.top)}return(h=this.isMenuOffScreen(l,c)).left&&(l.left=a>c.width?o+a-c.width:o,delete l.right),h.top&&(l.top=s>c.height?u+s-c.height:u,delete l.bottom),this.menuContainerIsBody||(l.left=l.left?l.left-this.tribute.menuContainer.offsetLeft:l.left,l.top=l.top?l.top-this.tribute.menuContainer.offsetTop:l.top),l}},{key:"scrollIntoView",value:function(e){var t,n=this.menu;if(void 0!==n){for(;void 0===t||0===t.height;)if(0===(t=n.getBoundingClientRect()).height&&(void 0===(n=n.childNodes[0])||!n.getBoundingClientRect))return;var i=t.top,r=i+t.height;if(i<0)window.scrollTo(0,window.pageYOffset+t.top-20);else if(r>window.innerHeight){var o=window.pageYOffset+t.top-20;o-window.pageYOffset>100&&(o=window.pageYOffset+100);var u=window.pageYOffset-(window.innerHeight-r);u>o&&(u=o),window.scrollTo(0,u)}}}},{key:"menuContainerIsBody",get:function(){return this.tribute.menuContainer===document.body||!this.tribute.menuContainer}}]),t}(),s=function(){function t(n){e(this,t),this.tribute=n,this.tribute.search=this}return n(t,[{key:"simpleFilter",value:function(e,t){var n=this;return t.filter((function(t){return n.test(e,t)}))}},{key:"test",value:function(e,t){return null!==this.match(e,t)}},{key:"match",value:function(e,t,n){n=n||{};t.length;var i=n.pre||"",r=n.post||"",o=n.caseSensitive&&t||t.toLowerCase();if(n.skip)return{rendered:t,score:0};e=n.caseSensitive&&e||e.toLowerCase();var u=this.traverse(o,e,0,0,[]);return u?{rendered:this.render(t,u.cache,i,r),score:u.score}:null}},{key:"traverse",value:function(e,t,n,i,r){if(this.tribute.autocompleteSeparator&&(t=t.split(this.tribute.autocompleteSeparator).splice(-1)[0]),t.length===i)return{score:this.calculateScore(r),cache:r.slice()};if(!(e.length===n||t.length-i>e.length-n)){for(var o,u,l=t[i],a=e.indexOf(l,n);a>-1;){if(r.push(a),u=this.traverse(e,t,a+1,i+1,r),r.pop(),!u)return o;(!o||o.score0&&(e[r-1]+1===i?n+=n+1:n=1),t+=n})),t}},{key:"render",value:function(e,t,n,i){var r=e.substring(0,t[0]);return t.forEach((function(o,u){r+=n+e[o]+i+e.substring(o+1,t[u+1]?t[u+1]:e.length)})),r}},{key:"filter",value:function(e,t,n){var i=this;return n=n||{},t.reduce((function(t,r,o,u){var l=r;n.extract&&((l=n.extract(r))||(l=""));var a=i.match(e,l,n);return null!=a&&(t[t.length]={string:a.rendered,score:a.score,index:o,original:r}),t}),[]).sort((function(e,t){var n=t.score-e.score;return n||e.index-t.index}))}}]),t}();return function(){function t(n){var i,r=this,o=n.values,c=void 0===o?null:o,h=n.iframe,d=void 0===h?null:h,f=n.selectClass,m=void 0===f?"highlight":f,p=n.containerClass,v=void 0===p?"tribute-container":p,g=n.itemClass,b=void 0===g?"":g,y=n.trigger,w=void 0===y?"@":y,T=n.autocompleteMode,C=void 0!==T&&T,S=n.autocompleteSeparator,E=void 0===S?null:S,k=n.selectTemplate,x=void 0===k?null:k,M=n.menuItemTemplate,A=void 0===M?null:M,L=n.lookup,I=void 0===L?"key":L,N=n.fillAttr,O=void 0===N?"value":N,D=n.collection,P=void 0===D?null:D,R=n.menuContainer,W=void 0===R?null:R,H=n.noMatchTemplate,B=void 0===H?null:H,F=n.requireLeadingSpace,_=void 0===F||F,j=n.allowSpaces,Y=void 0!==j&&j,z=n.replaceTextSuffix,K=void 0===z?null:z,U=n.positionMenu,q=void 0===U||U,X=n.spaceSelectsMatch,Q=void 0!==X&&X,V=n.searchOpts,$=void 0===V?{}:V,G=n.menuItemLimit,J=void 0===G?null:G,Z=n.menuShowMinLength,ee=void 0===Z?0:Z;if(e(this,t),this.autocompleteMode=C,this.autocompleteSeparator=E,this.menuSelected=0,this.current={},this.inputEvent=!1,this.isActive=!1,this.menuContainer=W,this.allowSpaces=Y,this.replaceTextSuffix=K,this.positionMenu=q,this.hasTrailingSpace=!1,this.spaceSelectsMatch=Q,this.autocompleteMode&&(w="",Y=!1),c)this.collection=[{trigger:w,iframe:d,selectClass:m,containerClass:v,itemClass:b,selectTemplate:(x||t.defaultSelectTemplate).bind(this),menuItemTemplate:(A||t.defaultMenuItemTemplate).bind(this),noMatchTemplate:(i=B,"string"==typeof i?""===i.trim()?null:i:"function"==typeof i?i.bind(r):B||function(){return"
      • No Match Found!
      • "}.bind(r)),lookup:I,fillAttr:O,values:c,requireLeadingSpace:_,searchOpts:$,menuItemLimit:J,menuShowMinLength:ee}];else{if(!P)throw new Error("[Tribute] No collection specified.");this.autocompleteMode&&console.warn("Tribute in autocomplete mode does not work for collections"),this.collection=P.map((function(e){return{trigger:e.trigger||w,iframe:e.iframe||d,selectClass:e.selectClass||m,containerClass:e.containerClass||v,itemClass:e.itemClass||b,selectTemplate:(e.selectTemplate||t.defaultSelectTemplate).bind(r),menuItemTemplate:(e.menuItemTemplate||t.defaultMenuItemTemplate).bind(r),noMatchTemplate:function(e){return"string"==typeof e?""===e.trim()?null:e:"function"==typeof e?e.bind(r):B||function(){return"
      • No Match Found!
      • "}.bind(r)}(B),lookup:e.lookup||I,fillAttr:e.fillAttr||O,values:e.values,requireLeadingSpace:e.requireLeadingSpace,searchOpts:e.searchOpts||$,menuItemLimit:e.menuItemLimit||J,menuShowMinLength:e.menuShowMinLength||ee}}))}new a(this),new u(this),new l(this),new s(this)}return n(t,[{key:"triggers",value:function(){return this.collection.map((function(e){return e.trigger}))}},{key:"attach",value:function(e){if(!e)throw new Error("[Tribute] Must pass in a DOM node or NodeList.");if("undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get()),e.constructor===NodeList||e.constructor===HTMLCollection||e.constructor===Array)for(var t=e.length,n=0;n",post:n.current.collection.searchOpts.post||"",skip:n.current.collection.searchOpts.skip,extract:function(e){if("string"==typeof n.current.collection.lookup)return e[n.current.collection.lookup];if("function"==typeof n.current.collection.lookup)return n.current.collection.lookup(e,n.current.mentionText);throw new Error("Invalid lookup attribute, lookup must be string or function.")}});n.current.collection.menuItemLimit&&(r=r.slice(0,n.current.collection.menuItemLimit)),n.current.filteredItems=r;var o=n.menu.querySelector("ul");if(n.range.positionMenuAtCaret(t),!r.length){var u=new CustomEvent("tribute-no-match",{detail:n.menu});return n.current.element.dispatchEvent(u),void("function"==typeof n.current.collection.noMatchTemplate&&!n.current.collection.noMatchTemplate()||!n.current.collection.noMatchTemplate?n.hideMenu():"function"==typeof n.current.collection.noMatchTemplate?o.innerHTML=n.current.collection.noMatchTemplate():o.innerHTML=n.current.collection.noMatchTemplate)}o.innerHTML="";var l=n.range.getDocument().createDocumentFragment();r.forEach((function(e,t){var r=n.range.getDocument().createElement("li");r.setAttribute("data-index",t),r.className=n.current.collection.itemClass,r.addEventListener("mousemove",(function(e){var t=i(n._findLiTarget(e.target),2),r=(t[0],t[1]);0!==e.movementY&&n.events.setActiveLi(r)})),n.menuSelected===t&&r.classList.add(n.current.collection.selectClass),r.innerHTML=n.current.collection.menuItemTemplate(e),l.appendChild(r)})),o.appendChild(l)}};"function"==typeof this.current.collection.values?this.current.collection.values(this.current.mentionText,r):r(this.current.collection.values)}}},{key:"_findLiTarget",value:function(e){if(!e)return[];var t=e.getAttribute("data-index");return t?[e,t]:this._findLiTarget(e.parentNode)}},{key:"showMenuForCollection",value:function(e,t){e!==document.activeElement&&this.placeCaretAtEnd(e),this.current.collection=this.collection[t||0],this.current.externalTrigger=!0,this.current.element=e,e.isContentEditable?this.insertTextAtCursor(this.current.collection.trigger):this.insertAtCaret(e,this.current.collection.trigger),this.showMenuFor(e)}},{key:"placeCaretAtEnd",value:function(e){if(e.focus(),void 0!==window.getSelection&&void 0!==document.createRange){var t=document.createRange();t.selectNodeContents(e),t.collapse(!1);var n=window.getSelection();n.removeAllRanges(),n.addRange(t)}else if(void 0!==document.body.createTextRange){var i=document.body.createTextRange();i.moveToElementText(e),i.collapse(!1),i.select()}}},{key:"insertTextAtCursor",value:function(e){var t,n;(n=(t=window.getSelection()).getRangeAt(0)).deleteContents();var i=document.createTextNode(e);n.insertNode(i),n.selectNodeContents(i),n.collapse(!1),t.removeAllRanges(),t.addRange(n)}},{key:"insertAtCaret",value:function(e,t){var n=e.scrollTop,i=e.selectionStart,r=e.value.substring(0,i),o=e.value.substring(e.selectionEnd,e.value.length);e.value=r+t+o,i+=t.length,e.selectionStart=i,e.selectionEnd=i,e.focus(),e.scrollTop=n}},{key:"hideMenu",value:function(){this.menu&&(this.menu.style.cssText="display: none;",this.isActive=!1,this.menuSelected=0,this.current={})}},{key:"selectItemAtIndex",value:function(e,t){if("number"==typeof(e=parseInt(e))&&!isNaN(e)){var n=this.current.filteredItems[e],i=this.current.collection.selectTemplate(n);null!==i&&this.replaceText(i,t,n)}}},{key:"replaceText",value:function(e,t,n){this.range.replaceTriggerText(e,!0,!0,t,n)}},{key:"_append",value:function(e,t,n){if("function"==typeof e.values)throw new Error("Unable to append to values, as it is a function.");e.values=n?t:e.values.concat(t)}},{key:"append",value:function(e,t,n){var i=parseInt(e);if("number"!=typeof i)throw new Error("please provide an index for the collection to update.");var r=this.collection[i];this._append(r,t,n)}},{key:"appendCurrent",value:function(e,t){if(!this.isActive)throw new Error("No active state. Please use append instead and pass an index.");this._append(this.current.collection,e,t)}},{key:"detach",value:function(e){if(!e)throw new Error("[Tribute] Must pass in a DOM node or NodeList.");if("undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get()),e.constructor===NodeList||e.constructor===HTMLCollection||e.constructor===Array)for(var t=e.length,n=0;n'+(this.current.collection.trigger+e.original[this.current.collection.fillAttr])+"":this.current.collection.trigger+e.original[this.current.collection.fillAttr]}},{key:"defaultMenuItemTemplate",value:function(e){return e.string}},{key:"inputTypes",value:function(){return["TEXTAREA","INPUT"]}}]),t}()})); //# sourceMappingURL=tribute.min.js.map redmine-6.0.5/app/assets/javascripts/tribute.min.js.map000066400000000000000000002620361500112024600231320ustar00rootroot00000000000000{"version":3,"file":"tribute.min.js","sources":["../src/utils.js","../src/TributeEvents.js","../src/TributeMenuEvents.js","../src/TributeRange.js","../src/TributeSearch.js","../src/Tribute.js"],"sourcesContent":["if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this)\n var length = list.length >>> 0\n var thisArg = arguments[1]\n var value\n\n for (var i = 0; i < length; i++) {\n value = list[i]\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n }\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }\n var evt = document.createEvent('CustomEvent')\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent.prototype = window.Event.prototype\n }\n\n window.CustomEvent = CustomEvent\n}","class TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
      • container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let char;\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nexport default TributeEvents;\n","class TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\nexport default TributeMenuEvents;\n","// Thanks to https://github.com/jeff-collins/ment.io\nimport \"./utils\";\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute\n this.tribute.range = this\n }\n\n getDocument() {\n let iframe\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition)\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition)\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto'\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto'\n }\n\n if (scrollTo) this.scrollIntoView()\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n }\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right)\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom)\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none'\n this.positionMenuAtCaret(scrollTo)\n }\n }, 0)\n\n } else {\n this.tribute.menu.style.cssText = 'display: none'\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range\n let elem = targetElement\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]]\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length\n elem = elem.nextSibling\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling\n }\n }\n }\n let sel = this.getWindowSelection()\n\n range = this.getDocument().createRange()\n range.setStart(elem, offset)\n range.setEnd(elem, offset)\n range.collapse(true)\n\n try {\n sel.removeAllRanges()\n } catch (error) {}\n\n sel.addRange(range)\n targetElement.focus()\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode)\n\n if (info !== undefined) {\n let context = this.tribute.current\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n })\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' '\n text += textSuffix\n let startPos = info.mentionPosition\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length)\n myField.selectionStart = startPos + text.length\n myField.selectionEnd = startPos + text.length\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0'\n text += textSuffix\n let endPos = info.mentionPosition + info.mentionText.length\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length\n }\n this.pasteHtml(text, info.mentionPosition, endPos)\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }))\n context.element.dispatchEvent(replaceEvent)\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel\n sel = this.getWindowSelection()\n range = this.getDocument().createRange()\n range.setStart(sel.anchorNode, startPos)\n range.setEnd(sel.anchorNode, endPos)\n range.deleteContents()\n\n let el = this.getDocument().createElement('div')\n el.innerHTML = html\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node)\n }\n range.insertNode(frag)\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange()\n range.setStartAfter(lastNode)\n range.collapse(true)\n sel.removeAllRanges()\n sel.addRange(range)\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i]\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection()\n let selected = sel.anchorNode\n let path = []\n let offset\n\n if (selected != null) {\n let i\n let ce = selected.contentEditable\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected)\n path.push(i)\n selected = selected.parentNode\n if (selected !== null) {\n ce = selected.contentEditable\n }\n }\n path.reverse()\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = ''\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos)\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset)\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n var wordsArray;\n if (this.tribute.autocompleteSeparator) {\n wordsArray = text.split(this.tribute.autocompleteSeparator);\n } else {\n wordsArray = text.split(/\\s+/);\n }\n var worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim();\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current\n let selected, path, offset\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx)\n\n if (selectionInfo) {\n selected = selectionInfo.selected\n path = selectionInfo.path\n offset = selectionInfo.offset\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection()\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange)\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1\n let triggerChar\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c)\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx\n triggerChar = c\n requireLeadingSpace = config.requireLeadingSpace\n }\n })\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length)\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length)\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1)\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n )\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim()\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('')\n let index = -1\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1])\n\n let match = true\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth\n let windowHeight = window.innerHeight\n let doc = document.documentElement\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n }\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`\n dimensions.width = this.tribute.menu.offsetWidth\n dimensions.height = this.tribute.menu.offsetHeight\n\n this.tribute.menu.style.cssText = `display: none;`\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ]\n\n let isFirefox = (window.mozInnerScreenX !== null)\n\n let div = this.getDocument().createElement('div')\n div.id = 'input-textarea-caret-position-mirror-div'\n this.getDocument().body.appendChild(div)\n\n let style = div.style\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle\n\n style.whiteSpace = 'pre-wrap'\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word'\n }\n\n // position off-screen\n style.position = 'absolute'\n style.visibility = 'hidden'\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop]\n })\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll'\n } else {\n style.overflow = 'hidden'\n }\n\n div.textContent = element.value.substring(0, position)\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ')\n }\n\n let span = this.getDocument().createElement('span')\n span.textContent = element.value.substring(position) || '.'\n div.appendChild(span)\n\n let rect = element.getBoundingClientRect()\n let doc = document.documentElement\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n }\n\n let windowWidth = window.innerWidth\n let windowHeight = window.innerHeight\n\n let menuDimensions = this.getMenuDimensions()\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left\n coordinates.left = 'auto'\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect()\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop)\n coordinates.top = 'auto'\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft\n delete coordinates.right\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop\n delete coordinates.bottom\n }\n\n this.getDocument().body.removeChild(div)\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range\n let sel = this.getWindowSelection()\n\n range = this.getDocument().createRange()\n range.setStart(sel.anchorNode, selectedNodePosition)\n range.setEnd(sel.anchorNode, selectedNodePosition)\n\n range.collapse(false)\n\n let rect = range.getBoundingClientRect()\n let doc = document.documentElement\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n\n let left = rect.left\n let top = rect.top\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n }\n let windowWidth = window.innerWidth\n let windowHeight = window.innerHeight\n\n let menuDimensions = this.getMenuDimensions()\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto'\n coordinates.right = windowWidth - rect.left - windowLeft\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect()\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top)\n\n coordinates.top = 'auto'\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top)\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions)\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft\n delete coordinates.right\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop\n delete coordinates.bottom\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect\n let maxScrollDisplacement = 100\n let e = this.menu\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect()\n\n if (clientRect.height === 0) {\n e = e.childNodes[0]\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top\n let elemBottom = elemTop + clientRect.height\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer)\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom)\n\n if (targetY > maxY) {\n targetY = maxY\n }\n\n window.scrollTo(0, targetY)\n }\n }\n}\n\n\nexport default TributeRange;\n","// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute\n this.tribute.search = this\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {}\n let patternIdx = 0,\n result = [],\n len = string.length,\n totalScore = 0,\n currScore = 0,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase(),\n ch, compareChar\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase()\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, [])\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n if (this.tribute.autocompleteSeparator) {\n // if the pattern search at end\n pattern = pattern.split(this.tribute.autocompleteSeparator).splice(-1)[0];\n }\n\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex]\n let index = string.indexOf(c, stringIndex)\n let best, temp\n\n while (index > -1) {\n patternCache.push(index)\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache)\n patternCache.pop()\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp\n }\n\n index = string.indexOf(c, index + 1)\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0\n let temp = 1\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1\n }\n else {\n temp = 1\n }\n }\n\n score += temp\n })\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0])\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length)\n })\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {}\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element\n\n if (opts.extract) {\n str = opts.extract(element)\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = ''\n }\n }\n\n let rendered = this.match(pattern, str, opts)\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n }\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nexport default TributeSearch;\n","import \"./utils\";\nimport TributeEvents from \"./TributeEvents\";\nimport TributeMenuEvents from \"./TributeMenuEvents\";\nimport TributeRange from \"./TributeRange\";\nimport TributeSearch from \"./TributeSearch\";\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n autocompleteSeparator = null,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.autocompleteSeparator = autocompleteSeparator;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
      • No Match Found!
      • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
      • No Match Found!
      • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"\",\n post: this.current.collection.searchOpts.post || \"\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range, html;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\nexport default Tribute;\n"],"names":["Array","prototype","find","predicate","this","TypeError","value","list","Object","length","thisArg","arguments","i","call","window","CustomEvent","event","params","bubbles","cancelable","detail","undefined","evt","document","createEvent","initCustomEvent","Event","TributeEvents","tribute","events","element","boundKeydown","keydown","bind","boundKeyup","keyup","boundInput","input","addEventListener","removeEventListener","instance","shouldDeactivate","isActive","hideMenu","commandEvent","keys","forEach","o","key","keyCode","callbacks","toLowerCase","inputEvent","menu","contains","target","li","preventDefault","stopPropagation","nodeName","parentNode","Error","selectItemAtIndex","getAttribute","current","externalTrigger","setTimeout","updateSelection","allowSpaces","hasTrailingSpace","autocompleteMode","triggerChar","getKeyCode","isNaN","trigger","triggers","charCodeAt","mentionText","collection","menuShowMinLength","showMenuFor","eventKeyPressed","el","info","range","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","e","_this","collectionItem","item","enter","filteredItems","menuSelected","escape","tab","space","spaceSelectsMatch","up","count","selected","setActiveLi","scrollTop","scrollHeight","down","index","lis","querySelectorAll","parseInt","classList","add","selectClass","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","top","remove","elem","includeMargin","height","style","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuEvents","menuClickEvent","click","menuContainerScrollEvent","debounce","windowResizeEvent","positionMenuAtCaret","getDocument","menuContainer","func","wait","immediate","timeout","context","_this2","args","callNow","clearTimeout","apply","TributeRange","iframe","contentWindow","scrollTo","coordinates","positionMenu","cssText","isContentEditable","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","left","right","scrollIntoView","menuDimensions","width","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","targetElement","path","offset","childNodes","nextSibling","previousSibling","sel","getWindowSelection","createRange","setStart","setEnd","collapse","removeAllRanges","error","addRange","focus","text","requireLeadingSpace","originalEvent","replaceEvent","replaceTextSuffix","endPos","pasteHtml","myField","textSuffix","startPos","substring","selectionStart","selectionEnd","dispatchEvent","html","anchorNode","deleteContents","createElement","innerHTML","node","lastNode","frag","createDocumentFragment","firstChild","appendChild","insertNode","cloneRange","setStartAfter","getSelection","ctx","ce","contentEditable","getNodePositionInParent","push","reverse","getRangeAt","startOffset","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","wordsArray","replace","autocompleteSeparator","split","trim","menuAlreadyActive","isAutocomplete","selectionInfo","getContentEditableSelectedPath","effectiveRange","getTextPrecedingCurrentSelection","lastWordOfEffectiveRange","getLastWordInText","mentionSelectedElement","mostRecentTriggerCharPos","config","c","idx","lastIndexWithLeadingSpace","lastIndexOf","test","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","str","reversedStr","join","cidx","len","firstChar","match","triggerIdx","windowWidth","windowHeight","doc","documentElement","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","Math","floor","ceil","dimensions","position","flipped","isFirefox","mozInnerScreenX","div","id","body","computed","whiteSpace","wordWrap","visibility","prop","overflowY","overflow","span","rect","menuContainerIsBody","offsetTop","borderTopWidth","fontSize","offsetLeft","borderLeftWidth","getMenuDimensions","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","search","pattern","array","filter","string","opts","pre","post","compareString","caseSensitive","skip","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","splice","calculateScore","slice","best","temp","indexOf","pop","indices","arr","reduce","prev","extract","original","sort","a","b","compare","t","values","containerClass","itemClass","selectTemplate","menuItemTemplate","lookup","fillAttr","noMatchTemplate","searchOpts","menuItemLimit","Tribute","defaultSelectTemplate","defaultMenuItemTemplate","console","warn","map","jQuery","get","constructor","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","setAttribute","inputTypes","wrapper","ul","className","currentMentionTextSnapshot","createMenu","tributeMenu","processValues","items","querySelector","noMatchEvent","fragment","_findLiTarget","movementY","collectionIndex","activeElement","placeCaretAtEnd","insertTextAtCursor","insertAtCaret","selectNodeContents","createTextRange","textRange","moveToElementText","select","textNode","createTextNode","textarea","scrollPos","caretPos","front","back","content","replaceText","replaceTriggerText","newValues","concat","_append","_detach","unbind","removeAttribute","_this3","_isActive","val","matchItem"],"mappings":"k8CAuBA,GAvBKA,MAAMC,UAAUC,OACjBF,MAAMC,UAAUC,KAAO,SAASC,MACf,OAATC,WACM,IAAIC,UAAU,uDAEC,mBAAdF,QACD,IAAIE,UAAU,wCAKpBC,EAHAC,EAAOC,OAAOJ,MACdK,EAASF,EAAKE,SAAW,EACzBC,EAAUC,UAAU,GAGfC,EAAI,EAAGA,EAAIH,EAAQG,OACxBN,EAAQC,EAAKK,GACTT,EAAUU,KAAKH,EAASJ,EAAOM,EAAGL,UAC3BD,IAOnBQ,QAAwC,mBAAvBA,OAAOC,YAA4B,KAC7CA,EAAT,SAAqBC,EAAOC,GAC1BA,EAASA,GAAU,CACjBC,SAAS,EACTC,YAAY,EACZC,YAAQC,OAENC,EAAMC,SAASC,YAAY,sBAC/BF,EAAIG,gBAAgBT,EAAOC,EAAOC,QAASD,EAAOE,WAAYF,EAAOG,QAC9DE,QAGkB,IAAjBR,OAAOY,QAChBX,EAAYd,UAAYa,OAAOY,MAAMzB,WAGtCa,OAAOC,YAAcA,MCvCjBY,wBACQC,kBACLA,QAAUA,OACVA,QAAQC,OAASzB,4CAoCnB0B,GACHA,EAAQC,aAAe3B,KAAK4B,QAAQC,KAAKH,EAAS1B,MAClD0B,EAAQI,WAAa9B,KAAK+B,MAAMF,KAAKH,EAAS1B,MAC9C0B,EAAQM,WAAahC,KAAKiC,MAAMJ,KAAKH,EAAS1B,MAE9C0B,EAAQQ,iBAAiB,UAAWR,EAAQC,cAAc,GAC1DD,EAAQQ,iBAAiB,QAASR,EAAQI,YAAY,GACtDJ,EAAQQ,iBAAiB,QAASR,EAAQM,YAAY,kCAGjDN,GACLA,EAAQS,oBAAoB,UAAWT,EAAQC,cAAc,GAC7DD,EAAQS,oBAAoB,QAAST,EAAQI,YAAY,GACzDJ,EAAQS,oBAAoB,QAAST,EAAQM,YAAY,UAElDN,EAAQC,oBACRD,EAAQI,kBACRJ,EAAQM,2CAGTI,EAAUxB,GACZwB,EAASC,iBAAiBzB,KAC5BwB,EAASZ,QAAQc,UAAW,EAC5BF,EAASZ,QAAQe,gBAGfb,EAAU1B,KACdoC,EAASI,cAAe,EAExBjB,EAAckB,OAAOC,SAAQ,SAAAC,GACvBA,EAAEC,MAAQhC,EAAMiC,UAClBT,EAASI,cAAe,EACxBJ,EAASU,YAAYH,EAAEzC,MAAM6C,eAAenC,EAAOc,qCAKnDU,EAAUxB,GACdwB,EAASY,YAAa,EACtBZ,EAASL,MAAMtB,KAAKT,KAAMoC,EAAUxB,iCAGhCwB,EAAUxB,OACVY,EAAUY,EAASZ,WACnBA,EAAQyB,MAAQzB,EAAQyB,KAAKC,SAAStC,EAAMuC,QAAS,KACnDC,EAAKxC,EAAMuC,WACfvC,EAAMyC,iBACNzC,EAAM0C,kBAC+B,OAA9BF,EAAGG,SAASR,oBACjBK,EAAKA,EAAGI,aACGJ,IAAO5B,EAAQyB,WAClB,IAAIQ,MAAM,gDAGpBjC,EAAQkC,kBAAkBN,EAAGO,aAAa,cAAe/C,GACzDY,EAAQe,gBAGCf,EAAQoC,QAAQlC,UAAYF,EAAQoC,QAAQC,kBACrDrC,EAAQoC,QAAQC,iBAAkB,EAClCC,YAAW,kBAAMtC,EAAQe,6CAIvBH,EAAUxB,MACVwB,EAASY,aACXZ,EAASY,YAAa,GAExBZ,EAAS2B,gBAAgB/D,MAEH,KAAlBY,EAAMiC,aAELT,EAASZ,QAAQwC,aAAe5B,EAASZ,QAAQyC,wBACpD7B,EAASZ,QAAQyC,kBAAmB,EACpC7B,EAASI,cAAe,OACxBJ,EAASU,YAAT,MAA8BlC,EAAOZ,UAIlCoC,EAASZ,QAAQc,YAChBF,EAASZ,QAAQ0C,iBACnB9B,EAASU,YAAYqB,YAAYvD,EAAOZ,KAAM,QACzC,KACD6C,EAAUT,EAASgC,WAAWhC,EAAUpC,KAAMY,MAE9CyD,MAAMxB,KAAaA,EAAS,WAE5ByB,EAAUlC,EAASZ,QAAQ+C,WAAWzE,MAAK,SAAAwE,UACtCA,EAAQE,WAAW,KAAO3B,UAGZ,IAAZyB,GACTlC,EAASU,YAAYqB,YAAYvD,EAAOZ,KAAMsE,GAMlDlC,EAASZ,QAAQoC,QAAQa,YAAYpE,OACrC+B,EAASZ,QAAQoC,QAAQc,WAAWC,qBAMlCvC,EAASZ,QAAQoC,QAAQU,SACzBlC,EAASZ,QAAQ0C,oBACS,IAA1B9B,EAASI,cACVJ,EAASZ,QAAQc,UAA8B,IAAlB1B,EAAMiC,UAEpCT,EAASZ,QAAQoD,YAAY5E,MAAM,6CAItBY,OACVZ,KAAKwB,QAAQc,SAAU,OAAO,KAEa,IAA5CtC,KAAKwB,QAAQoC,QAAQa,YAAYpE,OAAc,KAC7CwE,GAAkB,SACtBtD,EAAckB,OAAOC,SAAQ,SAAAC,GACvB/B,EAAMiC,UAAYF,EAAEC,MAAKiC,GAAkB,OAGzCA,SAGH,qCAGEzC,EAAU0C,EAAIlE,OAEnBY,EAAUY,EAASZ,QACnBuD,EAAOvD,EAAQwD,MAAMC,gBACvB,EACAzD,EAAQyC,kBACR,EACAzC,EAAQwC,YACRxC,EAAQ0C,0BAGNa,GACKA,EAAKG,mBAAmBV,WAAW,2CAM9BM,QACTtD,QAAQoC,QAAQlC,QAAUoD,MAC3BC,EAAO/E,KAAKwB,QAAQwD,MAAMC,gBAC5B,EACAjF,KAAKwB,QAAQyC,kBACb,EACAjE,KAAKwB,QAAQwC,YACbhE,KAAKwB,QAAQ0C,kBAGXa,SACGvD,QAAQoC,QAAQuB,aAAeJ,EAAKK,yBACpC5D,QAAQoC,QAAQa,YAAcM,EAAKN,iBACnCjD,QAAQoC,QAAQyB,eAAiBN,EAAKO,4EAKtC,CACLnB,YAAa,SAACoB,EAAGT,EAAIR,OACf9C,EAAUgE,EAAKhE,QACnBA,EAAQoC,QAAQU,QAAUA,MAEtBmB,EAAiBjE,EAAQkD,WAAW5E,MAAK,SAAA4F,UACpCA,EAAKpB,UAAYA,KAG1B9C,EAAQoC,QAAQc,WAAae,EAG3BjE,EAAQoC,QAAQa,YAAYpE,QAC1BmB,EAAQoC,QAAQc,WAAWC,mBAC7BnD,EAAQwB,YAERxB,EAAQoD,YAAYE,GAAI,IAG5Ba,MAAO,SAACJ,EAAGT,GAELU,EAAKhE,QAAQc,UAAYkD,EAAKhE,QAAQoC,QAAQgC,gBAChDL,EAAElC,iBACFkC,EAAEjC,kBACFQ,YAAW,WACT0B,EAAKhE,QAAQkC,kBAAkB8B,EAAKhE,QAAQqE,aAAcN,GAC1DC,EAAKhE,QAAQe,aACZ,KAGPuD,OAAQ,SAACP,EAAGT,GACNU,EAAKhE,QAAQc,WACfiD,EAAElC,iBACFkC,EAAEjC,kBACFkC,EAAKhE,QAAQc,UAAW,EACxBkD,EAAKhE,QAAQe,aAGjBwD,IAAK,SAACR,EAAGT,GAEPU,EAAK1C,YAAY6C,MAAMJ,EAAGT,IAE5BkB,MAAO,SAACT,EAAGT,GACLU,EAAKhE,QAAQc,WACXkD,EAAKhE,QAAQyE,kBACfT,EAAK1C,YAAY6C,MAAMJ,EAAGT,GAChBU,EAAKhE,QAAQwC,cACvBuB,EAAEjC,kBACFQ,YAAW,WACT0B,EAAKhE,QAAQe,WACbiD,EAAKhE,QAAQc,UAAW,IACvB,MAIT4D,GAAI,SAACX,EAAGT,MAEFU,EAAKhE,QAAQc,UAAYkD,EAAKhE,QAAQoC,QAAQgC,cAAe,CAC/DL,EAAElC,iBACFkC,EAAEjC,sBACE6C,EAAQX,EAAKhE,QAAQoC,QAAQgC,cAAcvF,OAC7C+F,EAAWZ,EAAKhE,QAAQqE,aAEtBM,EAAQC,GAAYA,EAAW,GACjCZ,EAAKhE,QAAQqE,eACbL,EAAKa,eACiB,IAAbD,IACTZ,EAAKhE,QAAQqE,aAAeM,EAAQ,EACpCX,EAAKa,cACLb,EAAKhE,QAAQyB,KAAKqD,UAAYd,EAAKhE,QAAQyB,KAAKsD,gBAItDC,KAAM,SAACjB,EAAGT,MAEJU,EAAKhE,QAAQc,UAAYkD,EAAKhE,QAAQoC,QAAQgC,cAAe,CAC/DL,EAAElC,iBACFkC,EAAEjC,sBACE6C,EAAQX,EAAKhE,QAAQoC,QAAQgC,cAAcvF,OAAS,EACtD+F,EAAWZ,EAAKhE,QAAQqE,aAEtBM,EAAQC,GACVZ,EAAKhE,QAAQqE,eACbL,EAAKa,eACIF,IAAUC,IACnBZ,EAAKhE,QAAQqE,aAAe,EAC5BL,EAAKa,cACLb,EAAKhE,QAAQyB,KAAKqD,UAAY,YAI5B,SAACf,EAAGT,GAERU,EAAKhE,QAAQc,UACbkD,EAAKhE,QAAQoC,QAAQa,YAAYpE,OAAS,EAE1CmF,EAAKhE,QAAQe,WACJiD,EAAKhE,QAAQc,UACtBkD,EAAKhE,QAAQoD,YAAYE,yCAMrB2B,OACNC,EAAM1G,KAAKwB,QAAQyB,KAAK0D,iBAAiB,MAC3CtG,EAASqG,EAAIrG,SAAW,EAEtBoG,IAAOzG,KAAKwB,QAAQqE,aAAee,SAASH,QAE3C,IAAIjG,EAAI,EAAGA,EAAIH,EAAQG,IAAK,KAC3B4C,EAAKsD,EAAIlG,MACTA,IAAMR,KAAKwB,QAAQqE,aAAc,CACnCzC,EAAGyD,UAAUC,IAAI9G,KAAKwB,QAAQoC,QAAQc,WAAWqC,iBAE7CC,EAAe5D,EAAG6D,wBAClBC,EAAiBlH,KAAKwB,QAAQyB,KAAKgE,2BAEnCD,EAAaG,OAASD,EAAeC,OAAQ,KAC3CC,EAAiBJ,EAAaG,OAASD,EAAeC,YACrD3F,QAAQyB,KAAKqD,WAAac,OAC1B,GAAIJ,EAAaK,IAAMH,EAAeG,IAAK,KAC5CD,EAAiBF,EAAeG,IAAML,EAAaK,SAClD7F,QAAQyB,KAAKqD,WAAac,QAGjChE,EAAGyD,UAAUS,OAAOtH,KAAKwB,QAAQoC,QAAQc,WAAWqC,oDAK5CQ,EAAMC,OACdC,EAASF,EAAKN,wBAAwBQ,UAEtCD,EAAe,KACbE,EAAQH,EAAKI,cAAgBjH,OAAOkH,iBAAiBL,UAEvDE,EAASI,WAAWH,EAAMI,WAAaD,WAAWH,EAAMK,qBAIrDN,yCAlVA,CACL,CACE7E,IAAK,EACL1C,MAAO,OAET,CACE0C,IAAK,EACL1C,MAAO,UAET,CACE0C,IAAK,GACL1C,MAAO,SAET,CACE0C,IAAK,GACL1C,MAAO,UAET,CACE0C,IAAK,GACL1C,MAAO,SAET,CACE0C,IAAK,GACL1C,MAAO,MAET,CACE0C,IAAK,GACL1C,MAAO,kBClCT8H,wBACQxG,kBACLA,QAAUA,OACVA,QAAQyG,WAAajI,UACrBiD,KAAOjD,KAAKwB,QAAQyB,4CAGtBA,mBACEiF,eAAiBlI,KAAKwB,QAAQC,OAAO0G,MAAMtG,KAAK,KAAM7B,WACtDoI,yBAA2BpI,KAAKqI,UACnC,WACM7C,EAAKhE,QAAQc,UACfkD,EAAKhE,QAAQoD,YAAYY,EAAKhE,QAAQoC,QAAQlC,SAAS,KAG3D,KACA,QAEG4G,kBAAoBtI,KAAKqI,UAC5B,WACM7C,EAAKhE,QAAQc,UACfkD,EAAKhE,QAAQwD,MAAMuD,qBAAoB,KAG3C,KACA,QAIG/G,QAAQwD,MACVwD,cACAtG,iBAAiB,gBAAiBlC,KAAKkI,gBAAgB,QACrD1G,QAAQwD,MACVwD,cACAtG,iBAAiB,YAAalC,KAAKkI,gBAAgB,GACtDxH,OAAOwB,iBAAiB,SAAUlC,KAAKsI,mBAEnCtI,KAAKyI,mBACFA,cAAcvG,iBACjB,SACAlC,KAAKoI,0BACL,GAGF1H,OAAOwB,iBAAiB,SAAUlC,KAAKoI,yDAIpCnF,QACAzB,QAAQwD,MACVwD,cACArG,oBAAoB,YAAanC,KAAKkI,gBAAgB,QACpD1G,QAAQwD,MACVwD,cACArG,oBAAoB,gBAAiBnC,KAAKkI,gBAAgB,GAC7DxH,OAAOyB,oBAAoB,SAAUnC,KAAKsI,mBAEtCtI,KAAKyI,mBACFA,cAActG,oBACjB,SACAnC,KAAKoI,0BACL,GAGF1H,OAAOyB,oBAAoB,SAAUnC,KAAKoI,2DAIrCM,EAAMC,EAAMC,OACfC,4BACG,eACDC,EAAUC,EACZC,EAAOzI,EAKL0I,EAAUL,IAAcC,EAC5BK,aAAaL,GACbA,EAAU/E,YANE,WACV+E,EAAU,KACLD,GAAWF,EAAKS,MAAML,EAASE,KAIVL,GACxBM,GAASP,EAAKS,MAAML,EAASE,aC7EjCI,wBACU5H,kBACHA,QAAUA,OACVA,QAAQwD,MAAQhF,yDAIjBqJ,SACArJ,KAAKwB,QAAQoC,QAAQc,aACrB2E,EAASrJ,KAAKwB,QAAQoC,QAAQc,WAAW2E,QAGxCA,EAIEA,EAAOC,cAAcnI,SAHjBA,qDAMKoI,OAEZC,SADAV,EAAU9I,KAAKwB,QAAQoC,QAGvBmB,EAAO/E,KAAKiF,gBAAe,EAAOjF,KAAKwB,QAAQyC,kBAAkB,EAAMjE,KAAKwB,QAAQwC,YAAahE,KAAKwB,QAAQ0C,0BAE9F,IAATa,EAAsB,KAEzB/E,KAAKwB,QAAQiI,8BACRjI,QAAQyB,KAAKyE,MAAMgC,2BASxBF,EALCxJ,KAAK2J,kBAAkBb,EAAQpH,SAKlB1B,KAAK4J,gCAAgC7E,EAAK8E,iBAJ1C7J,KAAK8J,oCAAoC9J,KAAKwB,QAAQoC,QAAQlC,QACxEqD,EAAK8E,sBAMRrI,QAAQyB,KAAKyE,MAAMgC,uBAAkBF,EAAYnC,+DACrBmC,EAAYO,iEACXP,EAAYQ,mEACXR,EAAYrC,8HAItB,SAArBqC,EAAYO,YACPvI,QAAQyB,KAAKyE,MAAMqC,KAAO,QAGX,SAApBP,EAAYnC,WACP7F,QAAQyB,KAAKyE,MAAML,IAAM,QAG9BkC,GAAUvJ,KAAKiK,iBAEnBvJ,OAAOoD,YAAW,eACVoG,EAAiB,CAClBC,MAAO3E,EAAKhE,QAAQyB,KAAKmH,YACzB3C,OAAQjC,EAAKhE,QAAQyB,KAAKoH,cAEzBC,EAAkB9E,EAAK+E,gBAAgBf,EAAaU,GAEpDM,EAA8B9J,OAAO+J,WAAaP,EAAeC,QAAUG,EAAgBP,MAAQO,EAAgBN,OACnHU,EAA4BhK,OAAOiK,YAAcT,EAAezC,SAAW6C,EAAgBjD,KAAOiD,EAAgBnD,SAClHqD,GAA+BE,KAC/BlF,EAAKhE,QAAQyB,KAAKyE,MAAMgC,QAAU,gBAClClE,EAAK+C,oBAAoBgB,MAE9B,aAGE/H,QAAQyB,KAAKyE,MAAMgC,QAAU,sDAS5BkB,EAAeC,EAAMC,OAC3B9F,EACAuC,EAAOqD,KAEPC,MACK,IAAIrK,EAAI,EAAGA,EAAIqK,EAAKxK,OAAQG,IAAK,SAErBS,KADbsG,EAAOA,EAAKwD,WAAWF,EAAKrK,iBAIrB+G,EAAKlH,OAASyK,GACjBA,GAAUvD,EAAKlH,OACfkH,EAAOA,EAAKyD,YAEe,IAA3BzD,EAAKwD,WAAW1K,QAAiBkH,EAAKlH,SACtCkH,EAAOA,EAAK0D,qBAIpBC,EAAMlL,KAAKmL,sBAEfnG,EAAQhF,KAAKwI,cAAc4C,eACrBC,SAAS9D,EAAMuD,GACrB9F,EAAMsG,OAAO/D,EAAMuD,GACnB9F,EAAMuG,UAAS,OAGXL,EAAIM,kBACN,MAAOC,IAETP,EAAIQ,SAAS1G,GACb4F,EAAce,mDAGCC,EAAMC,EAAqB5H,EAAkB6H,EAAepG,OACvEX,EAAO/E,KAAKiF,gBAAe,EAAMhB,EAAkB4H,EAAqB7L,KAAKwB,QAAQwC,YAAahE,KAAKwB,QAAQ0C,0BAEtGjD,IAAT8D,EAAoB,KAChB+D,EAAU9I,KAAKwB,QAAQoC,QACvBmI,EAAe,IAAIpL,YAAY,mBAAoB,CACnDK,OAAQ,CACJ0E,KAAMA,EACNtD,SAAU0G,EACVA,QAAS/D,EACTnE,MAAOkL,QAIV9L,KAAK2J,kBAAkBb,EAAQpH,SAe7B,CAKHkK,GAH0D,iBAAlC5L,KAAKwB,QAAQwK,kBAC/BhM,KAAKwB,QAAQwK,kBACb,QAEFC,EAASlH,EAAK8E,gBAAkB9E,EAAKN,YAAYpE,OAChDL,KAAKwB,QAAQ0C,mBACd+H,GAAUlH,EAAKG,mBAAmB7E,aAEjC6L,UAAUN,EAAM7G,EAAK8E,gBAAiBoC,OAzBD,KACtCE,EAAUnM,KAAKwB,QAAQoC,QAAQlC,QAC/B0K,EAAsD,iBAAlCpM,KAAKwB,QAAQwK,kBAC/BhM,KAAKwB,QAAQwK,kBACb,IACNJ,GAAQQ,MACJC,EAAWtH,EAAK8E,gBAChBoC,EAASlH,EAAK8E,gBAAkB9E,EAAKN,YAAYpE,OAAS+L,EAAW/L,OACpEL,KAAKwB,QAAQ0C,mBACd+H,GAAUlH,EAAKG,mBAAmB7E,OAAS,GAE/C8L,EAAQjM,MAAQiM,EAAQjM,MAAMoM,UAAU,EAAGD,GAAYT,EACnDO,EAAQjM,MAAMoM,UAAUL,EAAQE,EAAQjM,MAAMG,QAClD8L,EAAQI,eAAiBF,EAAWT,EAAKvL,OACzC8L,EAAQK,aAAeH,EAAWT,EAAKvL,OAc3CyI,EAAQpH,QAAQ+K,cAAc,IAAI9L,YAAY,QAAS,CAAEG,SAAS,KAClEgI,EAAQpH,QAAQ+K,cAAcV,sCAI5BW,EAAML,EAAUJ,OAClBjH,EAAOkG,EACXA,EAAMlL,KAAKmL,sBACXnG,EAAQhF,KAAKwI,cAAc4C,eACrBC,SAASH,EAAIyB,WAAYN,GAC/BrH,EAAMsG,OAAOJ,EAAIyB,WAAYV,GAC7BjH,EAAM4H,qBAEF9H,EAAK9E,KAAKwI,cAAcqE,cAAc,OAC1C/H,EAAGgI,UAAYJ,UAEXK,EAAMC,EADNC,EAAOjN,KAAKwI,cAAc0E,yBAEtBH,EAAOjI,EAAGqI,YACdH,EAAWC,EAAKG,YAAYL,GAEhC/H,EAAMqI,WAAWJ,GAGbD,KACAhI,EAAQA,EAAMsI,cACRC,cAAcP,GACpBhI,EAAMuG,UAAS,GACfL,EAAIM,kBACJN,EAAIQ,SAAS1G,wDAKbhF,KAAKwB,QAAQkD,WAAW2E,OACjBrJ,KAAKwB,QAAQkD,WAAW2E,OAAOC,cAAckE,eAGjD9M,OAAO8M,+DAGM9L,MACO,OAAvBA,EAAQ8B,kBACD,MAGN,IAAIhD,EAAI,EAAGA,EAAIkB,EAAQ8B,WAAWuH,WAAW1K,OAAQG,IAAK,IAChDkB,EAAQ8B,WAAWuH,WAAWvK,KAE5BkB,SACFlB,0DAKYiN,OACvBvC,EAAMlL,KAAKmL,qBACX/E,EAAW8E,EAAIyB,WACf9B,EAAO,MAGK,MAAZzE,EAAkB,SACd5F,EACAkN,EAAKtH,EAASuH,gBACE,OAAbvH,GAA4B,SAAPsH,GACxBlN,EAAIR,KAAK4N,wBAAwBxH,GACjCyE,EAAKgD,KAAKrN,GAEO,QADjB4F,EAAWA,EAAS5C,cAEhBkK,EAAKtH,EAASuH,wBAGtB9C,EAAKiD,UAKE,CACH1H,SAAUA,EACVyE,KAAMA,EACNC,OALKI,EAAI6C,WAAW,GAAGC,6EAW3BlF,EAAU9I,KAAKwB,QAAQoC,QACvBgI,EAAO,MAEN5L,KAAK2J,kBAAkBb,EAAQpH,SAS7B,KACCuM,EAAejO,KAAKmL,qBAAqBwB,cAEzB,MAAhBsB,EAAsB,KAClBC,EAAqBD,EAAaE,YAClCC,EAAoBpO,KAAKmL,qBAAqB4C,WAAW,GAAGC,YAE5DE,GAAsBE,GAAqB,IAC3CxC,EAAOsC,EAAmB5B,UAAU,EAAG8B,SAjBL,KACtCC,EAAgBrO,KAAKwB,QAAQoC,QAAQlC,WACrC2M,EAAe,KACXhC,EAAWgC,EAAc9B,eACzB8B,EAAcnO,OAASmM,GAAY,IACnCT,EAAOyC,EAAcnO,MAAMoM,UAAU,EAAGD,YAiB7CT,4CAGOA,OAEV0C,SADJ1C,EAAOA,EAAK2C,QAAQ,UAAW,MAG3BD,EADAtO,KAAKwB,QAAQgN,sBACA5C,EAAK6C,MAAMzO,KAAKwB,QAAQgN,uBAExB5C,EAAK6C,MAAM,QAEVH,EAAWjO,OAAS,GACPqO,8CAGpBC,EAAmB1K,EAAkB4H,EAAqB7H,EAAa4K,OAE9ExI,EAAUyE,EAAMC,SADhB2C,EAAMzN,KAAKwB,QAAQoC,WAGlB5D,KAAK2J,kBAAkB8D,EAAI/L,SAEzB,KACCmN,EAAgB7O,KAAK8O,+BAA+BrB,GAEpDoB,IACAzI,EAAWyI,EAAczI,SACzByE,EAAOgE,EAAchE,KACrBC,EAAS+D,EAAc/D,aAP3B1E,EAAWpG,KAAKwB,QAAQoC,QAAQlC,YAWhCqN,EAAiB/O,KAAKgP,mCACtBC,EAA2BjP,KAAKkP,kBAAkBH,MAElDH,QACO,CACH/E,gBAAiBkF,EAAe1O,OAAS4O,EAAyB5O,OAClEoE,YAAawK,EACbE,uBAAwB/I,EACxBhB,oBAAqByF,EACrBvF,sBAAuBwF,MAI3BiE,MAAAA,EAAyD,KAErD5K,EADAiL,GAA4B,UAG3B5N,QAAQkD,WAAWhC,SAAQ,SAAA2M,OACxBC,EAAID,EAAO/K,QACXiL,EAAMF,EAAOxD,oBACb9C,EAAKyG,0BAA0BT,EAAgBO,GAC/CP,EAAeU,YAAYH,GAE3BC,EAAMH,IACNA,EAA2BG,EAC3BpL,EAAcmL,EACdzD,EAAsBwD,EAAOxD,wBAIjCuD,GAA4B,IAEK,IAA7BA,IACCvD,GACD,YAAY6D,KACRX,EAAezC,UACX8C,EAA2B,EAC3BA,KAGd,KACMO,EAAwBZ,EAAezC,UAAU8C,EAA2BjL,EAAY9D,OACxF0O,EAAe1O,QAEnB8D,EAAc4K,EAAezC,UAAU8C,EAA0BA,EAA2BjL,EAAY9D,YACpGuP,EAAmBD,EAAsBrD,UAAU,EAAG,GACtDuD,EAAeF,EAAsBtP,OAAS,IAErB,MAArBuP,GACqB,MAArBA,GAEJ3L,IACA0L,EAAwBA,EAAsBjB,YAG9CoB,EAAQ9L,EAAc,UAAY,oBAEjCxC,QAAQyC,iBAAmB6L,EAAMJ,KAAKC,IAEtCE,IAAiBlB,IAAuBmB,EAAMJ,KAAKC,UAC7C,CACH9F,gBAAiBuF,EACjB3K,YAAakL,EACbR,uBAAwB/I,EACxBhB,oBAAqByF,EACrBvF,sBAAuBwF,EACvB5F,mBAAoBf,uDAOb4L,EAAKzL,WACxB0L,EAAcD,EAAItB,MAAM,IAAIX,UAAUmC,KAAK,IAC3CxJ,GAAS,EAEJyJ,EAAO,EAAGC,EAAMJ,EAAI1P,OAAQ6P,EAAOC,EAAKD,IAAQ,SACjDE,EAAYF,IAASH,EAAI1P,OAAS,EAClCwP,EAAe,KAAKH,KAAKM,EAAYE,EAAO,IAE5CG,GAAQ,EACHC,EAAahM,EAAQjE,OAAS,EAAGiQ,GAAc,EAAGA,OACrDhM,EAAQgM,KAAgBN,EAAYE,EAAKI,GAAa,CACxDD,GAAQ,WAKRA,IAAUD,GAAaP,GAAe,CACtCpJ,EAAQsJ,EAAI1P,OAAS,EAAI6P,gBAK1BzJ,4CAGO/E,SACc,UAArBA,EAAQ6B,UAA6C,aAArB7B,EAAQ6B,iDAGnCiG,EAAaU,OACrBqG,EAAc7P,OAAO+J,WACrB+F,EAAe9P,OAAOiK,YACtB8F,EAAMtP,SAASuP,gBACfC,GAAcjQ,OAAOkQ,aAAeH,EAAII,aAAeJ,EAAIK,YAAc,GACzEC,GAAarQ,OAAOsQ,aAAeP,EAAInK,YAAcmK,EAAIQ,WAAa,GAEtEC,EAAqC,iBAApB1H,EAAYnC,IAAmBmC,EAAYnC,IAAM0J,EAAYP,EAAehH,EAAYrC,OAAS+C,EAAezC,OACjI0J,EAAyC,iBAAtB3H,EAAYQ,MAAqBR,EAAYQ,MAAQR,EAAYO,KAAOG,EAAeC,MAC1GiH,EAA2C,iBAAvB5H,EAAYrC,OAAsBqC,EAAYrC,OAASqC,EAAYnC,IAAM6C,EAAezC,OAC5G4J,EAAuC,iBAArB7H,EAAYO,KAAoBP,EAAYO,KAAO4G,EAAaJ,EAAc/G,EAAYQ,MAAQE,EAAeC,YAEhI,CACH9C,IAAK6J,EAAUI,KAAKC,MAAMR,GAC1B/G,MAAOmH,EAAYG,KAAKE,KAAKb,EAAaJ,GAC1CpJ,OAAQiK,EAAaE,KAAKE,KAAKT,EAAYP,GAC3CzG,KAAMsH,EAAWC,KAAKC,MAAMZ,oDAQ5Bc,EAAa,CACbtH,MAAO,KACP1C,OAAQ,kBAGPjG,QAAQyB,KAAKyE,MAAMgC,4NAKzB+H,EAAWtH,MAAQnK,KAAKwB,QAAQyB,KAAKmH,YACrCqH,EAAWhK,OAASzH,KAAKwB,QAAQyB,KAAKoH,kBAEjC7I,QAAQyB,KAAKyE,MAAMgC,yBAEjB+H,8DAG0B/P,EAASgQ,EAAUC,OAW/CC,EAAwC,OAA3BlR,OAAOmR,gBAEpBC,EAAM9R,KAAKwI,cAAcqE,cAAc,OAC3CiF,EAAIC,GAAK,gDACJvJ,cAAcwJ,KAAK5E,YAAY0E,OAEhCpK,EAAQoK,EAAIpK,MACZuK,EAAWvR,OAAOkH,iBAAmBA,iBAAiBlG,GAAWA,EAAQiG,aAE7ED,EAAMwK,WAAa,WACM,UAArBxQ,EAAQ6B,WACRmE,EAAMyK,SAAW,cAIrBzK,EAAMgK,SAAW,WACjBhK,EAAM0K,WAAa,SA1BF,CAAC,YAAa,YAAa,QAAS,SAAU,YAC3D,YAAa,iBAAkB,mBAC/B,oBAAqB,kBAAmB,aACxC,eAAgB,gBAAiB,cACjC,YAAa,cAAe,aAAc,cAC1C,WAAY,iBAAkB,aAAc,aAC5C,YAAa,gBAAiB,aAC9B,iBAAkB,gBAAiB,eAsB5B1P,SAAQ,SAAA2P,GACf3K,EAAM2K,GAAQJ,EAASI,MAGvBT,GACAlK,EAAMyC,gBAAYvD,SAASqL,EAAS9H,OAAS,QACzCzI,EAAQ6E,aAAeK,SAASqL,EAASxK,UACzCC,EAAM4K,UAAY,WAEtB5K,EAAM6K,SAAW,SAGrBT,EAAI3D,YAAczM,EAAQxB,MAAMoM,UAAU,EAAGoF,GAEpB,UAArBhQ,EAAQ6B,WACRuO,EAAI3D,YAAc2D,EAAI3D,YAAYI,QAAQ,MAAO,UAGjDiE,EAAOxS,KAAKwI,cAAcqE,cAAc,QAC5C2F,EAAKrE,YAAczM,EAAQxB,MAAMoM,UAAUoF,IAAa,IACxDI,EAAI1E,YAAYoF,OAEZC,EAAO/Q,EAAQuF,wBACfwJ,EAAMtP,SAASuP,gBACfC,GAAcjQ,OAAOkQ,aAAeH,EAAII,aAAeJ,EAAIK,YAAc,GACzEC,GAAarQ,OAAOsQ,aAAeP,EAAInK,YAAcmK,EAAIQ,WAAa,GAEtE5J,EAAM,EACN0C,EAAO,EACP/J,KAAK0S,sBACPrL,EAAMoL,EAAKpL,IACX0C,EAAO0I,EAAK1I,UAGVP,EAAc,CACdnC,IAAKA,EAAM0J,EAAYyB,EAAKG,UAAY/L,SAASqL,EAASW,gBAAkBhM,SAASqL,EAASY,UAAYnR,EAAQ4E,UAClHyD,KAAMA,EAAO4G,EAAa6B,EAAKM,WAAalM,SAASqL,EAASc,kBAG9DxC,EAAc7P,OAAO+J,WACrB+F,EAAe9P,OAAOiK,YAEtBT,EAAiBlK,KAAKgT,oBACtB1I,EAAkBtK,KAAKuK,gBAAgBf,EAAaU,GAEpDI,EAAgBN,QAChBR,EAAYQ,MAAQuG,EAAc/G,EAAYO,KAC9CP,EAAYO,KAAO,YAGnBkJ,EAAejT,KAAKwB,QAAQiH,cAC1BzI,KAAKwB,QAAQiH,cAAc4B,aAC3BrK,KAAKwI,cAAcwJ,KAAK3H,gBAE1BC,EAAgBnD,OAAQ,KAIpB+L,EAAuBD,GAAgBzC,GAH1BxQ,KAAKwB,QAAQiH,cACxBzI,KAAKwB,QAAQiH,cAAcxB,wBAC3BjH,KAAKwI,cAAcwJ,KAAK/K,yBACuCI,KAErEmC,EAAYrC,OAAS+L,GAAwB1C,EAAeiC,EAAKpL,IAAMmL,EAAKG,WAC5EnJ,EAAYnC,IAAM,cAGtBiD,EAAkBtK,KAAKuK,gBAAgBf,EAAaU,IAChCH,OAChBP,EAAYO,KAAOwG,EAAcrG,EAAeC,MAC1CwG,EAAaJ,EAAcrG,EAAeC,MAC1CwG,SACCnH,EAAYQ,OAEnBM,EAAgBjD,MAChBmC,EAAYnC,IAAMmJ,EAAetG,EAAezC,OAC1CsJ,EAAYP,EAAetG,EAAezC,OAC1CsJ,SACCvH,EAAYrC,aAGlBqB,cAAcwJ,KAAKmB,YAAYrB,GAC7BtI,0DAGqB4J,OACxBpO,EACAkG,EAAMlL,KAAKmL,sBAEfnG,EAAQhF,KAAKwI,cAAc4C,eACrBC,SAASH,EAAIyB,WAAYyG,GAC/BpO,EAAMsG,OAAOJ,EAAIyB,WAAYyG,GAE7BpO,EAAMuG,UAAS,OAEXkH,EAAOzN,EAAMiC,wBACbwJ,EAAMtP,SAASuP,gBACfC,GAAcjQ,OAAOkQ,aAAeH,EAAII,aAAeJ,EAAIK,YAAc,GACzEC,GAAarQ,OAAOsQ,aAAeP,EAAInK,YAAcmK,EAAIQ,WAAa,GAKtEzH,EAAc,CACdO,KAJO0I,EAAK1I,KAIC4G,EACbtJ,IAJMoL,EAAKpL,IAIAoL,EAAKhL,OAASsJ,GAEzBR,EAAc7P,OAAO+J,WACrB+F,EAAe9P,OAAOiK,YAEtBT,EAAiBlK,KAAKgT,oBACtB1I,EAAkBtK,KAAKuK,gBAAgBf,EAAaU,GAEpDI,EAAgBN,QAChBR,EAAYO,KAAO,OACnBP,EAAYQ,MAAQuG,EAAckC,EAAK1I,KAAO4G,OAG9CsC,EAAejT,KAAKwB,QAAQiH,cAC1BzI,KAAKwB,QAAQiH,cAAc4B,aAC3BrK,KAAKwI,cAAcwJ,KAAK3H,gBAE1BC,EAAgBnD,OAAQ,KAIpB+L,EAAuBD,GAAgBzC,GAH1BxQ,KAAKwB,QAAQiH,cACxBzI,KAAKwB,QAAQiH,cAAcxB,wBAC3BjH,KAAKwI,cAAcwJ,KAAK/K,yBACuCI,KAErEmC,EAAYnC,IAAM,OAClBmC,EAAYrC,OAAS+L,GAAwB1C,EAAeiC,EAAKpL,YAGrEiD,EAAkBtK,KAAKuK,gBAAgBf,EAAaU,IAChCH,OAChBP,EAAYO,KAAOwG,EAAcrG,EAAeC,MAC1CwG,EAAaJ,EAAcrG,EAAeC,MAC1CwG,SACCnH,EAAYQ,OAEnBM,EAAgBjD,MAChBmC,EAAYnC,IAAMmJ,EAAetG,EAAezC,OAC1CsJ,EAAYP,EAAetG,EAAezC,OAC1CsJ,SACCvH,EAAYrC,QAGlBnH,KAAK0S,sBACNlJ,EAAYO,KAAOP,EAAYO,KAAOP,EAAYO,KAAO/J,KAAKwB,QAAQiH,cAAcqK,WAAatJ,EAAYO,KAC7GP,EAAYnC,IAAMmC,EAAYnC,IAAMmC,EAAYnC,IAAMrH,KAAKwB,QAAQiH,cAAckK,UAAYnJ,EAAYnC,KAGtGmC,yCAGIjC,OAEP8L,EAEA9N,EAAIvF,KAAKiD,aAEI,IAANsC,aAEWtE,IAAfoS,GAAkD,IAAtBA,EAAW5L,WAGhB,KAF1B4L,EAAa9N,EAAE0B,yBAEAQ,cAEDxG,KADVsE,EAAIA,EAAEwF,WAAW,MACOxF,EAAE0B,kCAM9BqM,EAAUD,EAAWhM,IACrBkM,EAAaD,EAAUD,EAAW5L,UAElC6L,EAAU,EACV5S,OAAO6I,SAAS,EAAG7I,OAAOsQ,YAAcqC,EAAWhM,IAtBhC,SAuBhB,GAAIkM,EAAa7S,OAAOiK,YAAa,KACpC6I,EAAO9S,OAAOsQ,YAAcqC,EAAWhM,IAxBxB,GA0BfmM,EAAO9S,OAAOsQ,YAxBM,MAyBpBwC,EAAO9S,OAAOsQ,YAzBM,SA4BpByC,EAAU/S,OAAOsQ,aAAetQ,OAAOiK,YAAc4I,GAErDE,EAAUD,IACVC,EAAUD,GAGd9S,OAAO6I,SAAS,EAAGkK,wDAvkBhBzT,KAAKwB,QAAQiH,gBAAkBtH,SAAS6Q,OAAShS,KAAKwB,QAAQiH,uBChFvEiL,wBACUlS,kBACHA,QAAUA,OACVA,QAAQmS,OAAS3T,oDAGb4T,EAASC,qBACXA,EAAMC,QAAO,SAAAC,UACTvO,EAAKkK,KAAKkE,EAASG,mCAI7BH,EAASG,UAC6B,OAAhC/T,KAAKqQ,MAAMuD,EAASG,iCAGzBH,EAASG,EAAQC,GACnBA,EAAOA,GAAQ,GAGLD,EAAO1T,WAGb4T,EAAMD,EAAKC,KAAO,GAClBC,EAAOF,EAAKE,MAAQ,GACpBC,EAAgBH,EAAKI,eAAiBL,GAAUA,EAAOhR,iBAGvDiR,EAAKK,WACE,CAACC,SAAUP,EAAQQ,MAAO,GAGrCX,EAAUI,EAAKI,eAAiBR,GAAWA,EAAQ7Q,kBAE/CyR,EAAexU,KAAKyU,SAASN,EAAeP,EAAS,EAAG,EAAG,WAC1DY,EAGE,CACHF,SAAUtU,KAAK0U,OAAOX,EAAQS,EAAaG,MAAOV,EAAKC,GACvDK,MAAOC,EAAaD,OAJb,sCAQNR,EAAQH,EAASgB,EAAaC,EAAcL,MAC7CxU,KAAKwB,QAAQgN,wBAEboF,EAAUA,EAAQnF,MAAMzO,KAAKwB,QAAQgN,uBAAuBsG,QAAQ,GAAG,IAGvElB,EAAQvT,SAAWwU,QAGZ,CACHN,MAAOvU,KAAK+U,eAAeP,GAC3BG,MAAOH,EAAaQ,cAKxBjB,EAAO1T,SAAWuU,GAAehB,EAAQvT,OAASwU,EAAed,EAAO1T,OAASuU,YAMjFK,EAAMC,EAFN5F,EAAIsE,EAAQiB,GACZpO,EAAQsN,EAAOoB,QAAQ7F,EAAGsF,GAGvBnO,GAAS,GAAG,IACf+N,EAAa3G,KAAKpH,GAClByO,EAAOlV,KAAKyU,SAASV,EAAQH,EAASnN,EAAQ,EAAGoO,EAAe,EAAGL,GACnEA,EAAaY,OAGRF,SACMD,IAGNA,GAAQA,EAAKV,MAAQW,EAAKX,SAC3BU,EAAOC,GAGXzO,EAAQsN,EAAOoB,QAAQ7F,EAAG7I,EAAQ,UAG/BwO,0CAGIT,OACPD,EAAQ,EACRW,EAAO,SAEXV,EAAa9R,SAAQ,SAAC+D,EAAOjG,GACrBA,EAAI,IACAgU,EAAahU,EAAI,GAAK,IAAMiG,EAC5ByO,GAAQA,EAAO,EAGfA,EAAO,GAIfX,GAASW,KAGNX,iCAGJR,EAAQsB,EAASpB,EAAKC,OACrBI,EAAWP,EAAOzH,UAAU,EAAG+I,EAAQ,WAE3CA,EAAQ3S,SAAQ,SAAC+D,EAAOjG,GACpB8T,GAAYL,EAAMF,EAAOtN,GAASyN,EAC9BH,EAAOzH,UAAU7F,EAAQ,EAAI4O,EAAQ7U,EAAI,GAAM6U,EAAQ7U,EAAI,GAAKuT,EAAO1T,WAGxEiU,iCAGJV,EAAS0B,EAAKtB,qBACjBA,EAAOA,GAAQ,GACRsB,EACFC,QAAO,SAACC,EAAM9T,EAAS6N,EAAK+F,OACrBvF,EAAMrO,EAENsS,EAAKyB,WACL1F,EAAMiE,EAAKyB,QAAQ/T,MAGfqO,EAAM,SAIVuE,EAAWvL,EAAKsH,MAAMuD,EAAS7D,EAAKiE,UAExB,MAAZM,IACAkB,EAAKA,EAAKnV,QAAU,CAChB0T,OAAQO,EAASA,SACjBC,MAAOD,EAASC,MAChB9N,MAAO8I,EACPmG,SAAUhU,IAIX8T,IACR,IAENG,MAAK,SAACC,EAAGC,OACFC,EAAUD,EAAEtB,MAAQqB,EAAErB,aACtBuB,GACGF,EAAEnP,MAAQoP,EAAEpP,sDCxEHsP,aAvExBC,OAAAA,aAAS,WACT3M,OAAAA,aAAS,WACTtC,YAAAA,aAAc,kBACdkP,eAAAA,aAAiB,0BACjBC,UAAAA,aAAY,SACZ5R,QAAAA,aAAU,UACVJ,iBAAAA,oBACAsK,sBAAAA,aAAwB,WACxB2H,eAAAA,aAAiB,WACjBC,iBAAAA,aAAmB,WACnBC,OAAAA,aAAS,YACTC,SAAAA,aAAW,cACX5R,WAAAA,aAAa,WACb+D,cAAAA,aAAgB,WAChB8N,gBAAAA,aAAkB,WAClB1K,oBAAAA,oBACA7H,YAAAA,oBACAgI,kBAAAA,aAAoB,WACpBvC,aAAAA,oBACAxD,kBAAAA,oBACAuQ,WAAAA,aAAa,SACbC,cAAAA,aAAgB,WAChB9R,kBAAAA,cAAoB,sBAEfT,iBAAmBA,OACnBsK,sBAAwBA,OACxB3I,aAAe,OACfjC,QAAU,QACVZ,YAAa,OACbV,UAAW,OACXmG,cAAgBA,OAChBzE,YAAcA,OACdgI,kBAAoBA,OACpBvC,aAAeA,OACfxF,kBAAmB,OACnBgC,kBAAoBA,EAErBjG,KAAKkE,mBACPI,EAAU,GACVN,GAAc,GAGZgS,OACGtR,WAAa,CAChB,CAEEJ,QAASA,EAGT+E,OAAQA,EAGRtC,YAAaA,EAGbkP,eAAgBA,EAGhBC,UAAWA,EAGXC,gBACEA,GAAkBO,EAAQC,uBAC1B9U,KAAK7B,MAGPoW,kBACEA,GAAoBM,EAAQE,yBAC5B/U,KAAK7B,MAGPuW,iBAAkBR,EAefQ,EAdgB,iBAANR,EACQ,KAAbA,EAAErH,OAAsB,KACrBqH,EAEQ,mBAANA,EACFA,EAAElU,KAAK2D,GAId+Q,GACA,iBACS,4BACP1U,KAAK2D,IAKX6Q,OAAQA,EAGRC,SAAUA,EAGVN,OAAQA,EAERnK,oBAAqBA,EAErB2K,WAAYA,EAEZC,cAAeA,EAEf9R,kBAAmBA,SAGlB,CAAA,IAAID,QA6CH,IAAIjB,MAAM,sCA5CZzD,KAAKkE,kBACP2S,QAAQC,KACN,mEAECpS,WAAaA,EAAWqS,KAAI,SAAArR,SACxB,CACLpB,QAASoB,EAAKpB,SAAWA,EACzB+E,OAAQ3D,EAAK2D,QAAUA,EACvBtC,YAAarB,EAAKqB,aAAeA,EACjCkP,eAAgBvQ,EAAKuQ,gBAAkBA,EACvCC,UAAWxQ,EAAKwQ,WAAaA,EAC7BC,gBACEzQ,EAAKyQ,gBAAkBO,EAAQC,uBAC/B9U,KAAK2D,GACP4Q,kBACE1Q,EAAK0Q,kBAAoBM,EAAQE,yBACjC/U,KAAK2D,GAEP+Q,gBAAkB,SAAAR,SACC,iBAANA,EACQ,KAAbA,EAAErH,OAAsB,KACrBqH,EAEQ,mBAANA,EACFA,EAAElU,KAAK2D,GAId+Q,GACA,iBACS,4BACP1U,KAAK2D,GAbO,CAef+Q,GACHF,OAAQ3Q,EAAK2Q,QAAUA,EACvBC,SAAU5Q,EAAK4Q,UAAYA,EAC3BN,OAAQtQ,EAAKsQ,OACbnK,oBAAqBnG,EAAKmG,oBAC1B2K,WAAY9Q,EAAK8Q,YAAcA,EAC/BC,cAAe/Q,EAAK+Q,eAAiBA,EACrC9R,kBAAmBe,EAAKf,mBAAqBA,WAO/CyE,EAAapJ,UACbuB,EAAcvB,UACdgI,EAAkBhI,UAClB0T,EAAc1T,0DA4CXA,KAAK0E,WAAWqS,KAAI,SAAA1H,UAClBA,EAAO/K,0CAIXQ,OACAA,QACG,IAAIrB,MAAM,qDAII,oBAAXuT,QAA0BlS,aAAckS,SACjDlS,EAAKA,EAAGmS,OAKRnS,EAAGoS,cAAgBC,UACnBrS,EAAGoS,cAAgBE,gBACnBtS,EAAGoS,cAAgBtX,cAEfS,EAASyE,EAAGzE,OACPG,EAAI,EAAGA,EAAIH,IAAUG,OACvB6W,QAAQvS,EAAGtE,cAGb6W,QAAQvS,mCAITA,GACFA,EAAGwS,aAAa,iBAClBT,QAAQC,KAAK,gCAAkChS,EAAGvB,eAG/CgU,eAAezS,QACfrD,OAAOI,KAAKiD,GACjBA,EAAG0S,aAAa,gBAAgB,0CAGnB9V,OAC2C,IAApDgV,EAAQe,aAAatC,QAAQzT,EAAQ6B,UAAkB,KACrD7B,EAAQiM,sBAGJ,IAAIlK,MAAM,4BAA8B/B,EAAQ6B,UAFtD7B,EAAQiM,iBAAkB,sCAOrBsI,OACLyB,EAAU1X,KAAKgF,MAAMwD,cAAcqE,cAAc,OACnD8K,EAAK3X,KAAKgF,MAAMwD,cAAcqE,cAAc,aAC9C6K,EAAQE,UAAY3B,EACpByB,EAAQtK,YAAYuK,GAEhB3X,KAAKyI,cACAzI,KAAKyI,cAAc2E,YAAYsK,GAGjC1X,KAAKgF,MAAMwD,cAAcwJ,KAAK5E,YAAYsK,uCAGvChW,EAAS6H,kBAGjBvJ,KAAKsC,UACLtC,KAAK4D,QAAQlC,UAAYA,GACzB1B,KAAK4D,QAAQa,cAAgBzE,KAAK6X,iCAI/BA,2BAA6B7X,KAAK4D,QAAQa,YAG1CzE,KAAKiD,YACHA,KAAOjD,KAAK8X,WAAW9X,KAAK4D,QAAQc,WAAWuR,gBACpDvU,EAAQqW,YAAc/X,KAAKiD,UACtBgF,WAAWpG,KAAK7B,KAAKiD,YAGvBX,UAAW,OACXuD,aAAe,EAEf7F,KAAK4D,QAAQa,mBACXb,QAAQa,YAAc,QAGvBuT,EAAgB,SAAAhC,MAEfjN,EAAKzG,cAIN2V,EAAQlP,EAAK4K,OAAOG,OAAO/K,EAAKnF,QAAQa,YAAauR,EAAQ,CAC/D/B,IAAKlL,EAAKnF,QAAQc,WAAW8R,WAAWvC,KAAO,SAC/CC,KAAMnL,EAAKnF,QAAQc,WAAW8R,WAAWtC,MAAQ,UACjDG,KAAMtL,EAAKnF,QAAQc,WAAW8R,WAAWnC,KACzCoB,QAAS,SAAA3Q,MACuC,iBAAnCiE,EAAKnF,QAAQc,WAAW2R,cAC1BvR,EAAGiE,EAAKnF,QAAQc,WAAW2R,QAC7B,GAA8C,mBAAnCtN,EAAKnF,QAAQc,WAAW2R,cACjCtN,EAAKnF,QAAQc,WAAW2R,OAAOvR,EAAIiE,EAAKnF,QAAQa,mBAEjD,IAAIhB,MACR,mEAMJsF,EAAKnF,QAAQc,WAAW+R,gBAC1BwB,EAAQA,EAAMjD,MAAM,EAAGjM,EAAKnF,QAAQc,WAAW+R,gBAGjD1N,EAAKnF,QAAQgC,cAAgBqS,MAEzBN,EAAK5O,EAAK9F,KAAKiV,cAAc,SAEjCnP,EAAK/D,MAAMuD,oBAAoBgB,IAE1B0O,EAAM5X,OAAQ,KACb8X,EAAe,IAAIxX,YAAY,mBAAoB,CACrDK,OAAQ+H,EAAK9F,cAEf8F,EAAKnF,QAAQlC,QAAQ+K,cAAc0L,QAEmB,mBAA5CpP,EAAKnF,QAAQc,WAAW6R,kBAC7BxN,EAAKnF,QAAQc,WAAW6R,oBAC1BxN,EAAKnF,QAAQc,WAAW6R,gBAEzBxN,EAAKxG,WAE8C,mBAA5CwG,EAAKnF,QAAQc,WAAW6R,gBAC1BoB,EAAG7K,UAAY/D,EAAKnF,QAAQc,WAAW6R,kBACvCoB,EAAG7K,UAAY/D,EAAKnF,QAAQc,WAAW6R,iBAMhDoB,EAAG7K,UAAY,OACXsL,EAAWrP,EAAK/D,MAAMwD,cAAc0E,yBAExC+K,EAAMvV,SAAQ,SAACgD,EAAMe,OACfrD,EAAK2F,EAAK/D,MAAMwD,cAAcqE,cAAc,MAChDzJ,EAAGoU,aAAa,aAAc/Q,GAC9BrD,EAAGwU,UAAY7O,EAAKnF,QAAQc,WAAWwR,UACvC9S,EAAGlB,iBAAiB,aAAa,SAAAqD,WACbwD,EAAKsP,cAAc9S,EAAEpC,WAA9BsD,cACW,IAAhBlB,EAAE+S,WACJvP,EAAKtH,OAAO4E,YAAYI,MAGxBsC,EAAKlD,eAAiBY,GACxBrD,EAAGyD,UAAUC,IAAIiC,EAAKnF,QAAQc,WAAWqC,aAE3C3D,EAAG0J,UAAY/D,EAAKnF,QAAQc,WAAW0R,iBAAiB1Q,GACxD0S,EAAShL,YAAYhK,MAEvBuU,EAAGvK,YAAYgL,KAG6B,mBAAnCpY,KAAK4D,QAAQc,WAAWsR,YAC5BpS,QAAQc,WAAWsR,OAAOhW,KAAK4D,QAAQa,YAAauT,GAEzDA,EAAchY,KAAK4D,QAAQc,WAAWsR,+CAI5BlR,OACPA,EAAI,MAAO,OACV2B,EAAQ3B,EAAGnB,aAAa,qBACtB8C,EAA4C,CAAC3B,EAAI2B,GAAzCzG,KAAKqY,cAAcvT,EAAGtB,0DAGlB9B,EAAS6W,GACzB7W,IAAYP,SAASqX,oBAClBC,gBAAgB/W,QAGlBkC,QAAQc,WAAa1E,KAAK0E,WAAW6T,GAAmB,QACxD3U,QAAQC,iBAAkB,OAC1BD,QAAQlC,QAAUA,EAEnBA,EAAQiI,kBACV3J,KAAK0Y,mBAAmB1Y,KAAK4D,QAAQc,WAAWJ,SAC7CtE,KAAK2Y,cAAcjX,EAAS1B,KAAK4D,QAAQc,WAAWJ,cAEpDM,YAAYlD,2CAIHoD,MACdA,EAAG6G,aAE6B,IAAvBjL,OAAO8M,mBACiB,IAAxBrM,SAASiK,YAChB,KACIpG,EAAQ7D,SAASiK,cACrBpG,EAAM4T,mBAAmB9T,GACzBE,EAAMuG,UAAS,OACXL,EAAMxK,OAAO8M,eACjBtC,EAAIM,kBACJN,EAAIQ,SAAS1G,QACR,QAA4C,IAAjC7D,SAAS6Q,KAAK6G,gBAAgC,KAC1DC,EAAY3X,SAAS6Q,KAAK6G,kBAC9BC,EAAUC,kBAAkBjU,GAC5BgU,EAAUvN,UAAS,GACnBuN,EAAUE,qDAKKpN,OACbV,EAAKlG,GAETA,GADAkG,EAAMxK,OAAO8M,gBACDO,WAAW,IACjBnB,qBACFqM,EAAW9X,SAAS+X,eAAetN,GACvC5G,EAAMqI,WAAW4L,GACjBjU,EAAM4T,mBAAmBK,GACzBjU,EAAMuG,UAAS,GACfL,EAAIM,kBACJN,EAAIQ,SAAS1G,yCAIDmU,EAAUvN,OAClBwN,EAAYD,EAAS7S,UACrB+S,EAAWF,EAAS5M,eAEpB+M,EAAQH,EAASjZ,MAAMoM,UAAU,EAAG+M,GACpCE,EAAOJ,EAASjZ,MAAMoM,UACxB6M,EAAS3M,aACT2M,EAASjZ,MAAMG,QAEjB8Y,EAASjZ,MAAQoZ,EAAQ1N,EAAO2N,EAChCF,GAAsBzN,EAAKvL,OAC3B8Y,EAAS5M,eAAiB8M,EAC1BF,EAAS3M,aAAe6M,EACxBF,EAASxN,QACTwN,EAAS7S,UAAY8S,qCAIjBpZ,KAAKiD,YACFA,KAAKyE,MAAMgC,QAAU,sBACrBpH,UAAW,OACXuD,aAAe,OACfjC,QAAU,8CAID6C,EAAOqF,MAEF,iBADrBrF,EAAQG,SAASH,MACgBpC,MAAMoC,QACnCf,EAAO1F,KAAK4D,QAAQgC,cAAca,GAClC+S,EAAUxZ,KAAK4D,QAAQc,WAAWyR,eAAezQ,GACrC,OAAZ8T,GAAkBxZ,KAAKyZ,YAAYD,EAAS1N,EAAepG,wCAGrD8T,EAAS1N,EAAepG,QAC7BV,MAAM0U,mBAAmBF,GAAS,GAAM,EAAM1N,EAAepG,mCAG5DhB,EAAYiV,EAAWpL,MACI,mBAAtB7J,EAAWsR,aACd,IAAIvS,MAAM,oDAIhBiB,EAAWsR,OAHDzH,EAGUoL,EAFAjV,EAAWsR,OAAO4D,OAAOD,kCAM1CpB,EAAiBoB,EAAWpL,OAC7B9H,EAAQG,SAAS2R,MACA,iBAAV9R,EACT,MAAM,IAAIhD,MAAM,6DAEdiB,EAAa1E,KAAK0E,WAAW+B,QAE5BoT,QAAQnV,EAAYiV,EAAWpL,yCAGxBoL,EAAWpL,OACnBvO,KAAKsC,eAGD,IAAImB,MACR,sEAHGoW,QAAQ7Z,KAAK4D,QAAQc,WAAYiV,EAAWpL,kCAQ9CzJ,OACAA,QACG,IAAIrB,MAAM,qDAII,oBAAXuT,QAA0BlS,aAAckS,SACjDlS,EAAKA,EAAGmS,OAKRnS,EAAGoS,cAAgBC,UACnBrS,EAAGoS,cAAgBE,gBACnBtS,EAAGoS,cAAgBtX,cAEfS,EAASyE,EAAGzE,OACPG,EAAI,EAAGA,EAAIH,IAAUG,OACvBsZ,QAAQhV,EAAGtE,cAGbsZ,QAAQhV,mCAITA,mBACDrD,OAAOsY,OAAOjV,GACfA,EAAGiT,kBACA9P,WAAW8R,OAAOjV,EAAGiT,aAG5BjU,YAAW,WACTgB,EAAGkV,gBAAgB,gBACnBC,EAAK3X,UAAW,EACZwC,EAAGiT,aACLjT,EAAGiT,YAAYzQ,oDAnXZtH,KAAKka,wBAGDC,MACPna,KAAKka,WAAaC,SACfD,UAAYC,EACbna,KAAK4D,QAAQlC,SAAS,KACpByW,EAAe,IAAIxX,qCAA8BwZ,SAChDvW,QAAQlC,QAAQ+K,cAAc0L,oDAKZzS,eACP,IAATA,YACC1F,KAAK4D,QAAQc,WAAWJ,gBAAUtE,KAAK4D,QAAQa,aACvDzE,KAAKgF,MAAM2E,kBAAkB3J,KAAK4D,QAAQlC,SAE1C,kCACC1B,KAAK4D,QAAQc,WAAWJ,QACvBoB,EAAKgQ,SAAS1V,KAAK4D,QAAQc,WAAW4R,WACxC,UAKFtW,KAAK4D,QAAQc,WAAWJ,QACxBoB,EAAKgQ,SAAS1V,KAAK4D,QAAQc,WAAW4R,0DAIX8D,UACtBA,EAAUrG,kDAIV,CAAC,WAAY"}redmine-6.0.5/app/assets/javascripts/turndown-7.2.0.min.js000066400000000000000000000244751500112024600232250ustar00rootroot00000000000000/* * Turndown v7.2.0 * https://github.com/mixmark-io/turndown * Copyright (c) 2017 Dom Christie * Released under the MIT license * https://github.com/mixmark-io/turndown/blob/master/LICENSE */ var TurndownService=(()=>{function u(e,n){return Array(n+1).join(e)}var n=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function f(e){return o(e,n)}var r=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function d(e){return o(e,r)}var i=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function o(e,n){return 0<=n.indexOf(e.nodeName)}function a(n,e){return n.getElementsByTagName&&e.some(function(e){return n.getElementsByTagName(e).length})}var t={};function c(e){return e?e.replace(/(\n+\s*)+/g,"\n"):""}function l(e){for(var n in this.options=e,this._keep=[],this._remove=[],this.blankRule={replacement:e.blankReplacement},this.keepReplacement=e.keepReplacement,this.defaultRule={replacement:e.defaultReplacement},this.array=[],e.rules)this.array.push(e.rules[n])}function s(e,n,t){for(var r=0;r{var r=e.filter;if("string"==typeof r)return r===n.nodeName.toLowerCase();if(Array.isArray(r))return-1 "))+"\n\n"}},t.list={filter:["ul","ol"],replacement:function(e,n){var t=n.parentNode;return"LI"===t.nodeName&&t.lastElementChild===n?"\n"+e:"\n\n"+e+"\n\n"}},t.listItem={filter:"li",replacement:function(e,n,t){e=e.replace(/^\n+/,"").replace(/\n+$/,"\n").replace(/\n/gm,"\n ");var r,t=t.bulletListMarker+" ",i=n.parentNode;return"OL"===i.nodeName&&(r=i.getAttribute("start"),i=Array.prototype.indexOf.call(i.children,n),t=(r?Number(r)+i:i+1)+". "),t+e+(n.nextSibling&&!/\n$/.test(e)?"\n":"")}},t.indentedCodeBlock={filter:function(e,n){return"indented"===n.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,n,t){return"\n\n "+n.firstChild.textContent.replace(/\n/g,"\n ")+"\n\n"}},t.fencedCodeBlock={filter:function(e,n){return"fenced"===n.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,n,t){for(var r,i=((n.firstChild.getAttribute("class")||"").match(/language-(\S+)/)||[null,""])[1],o=n.firstChild.textContent,n=t.fence.charAt(0),a=3,l=new RegExp("^"+n+"{3,}","gm");r=l.exec(o);)r[0].length>=a&&(a=r[0].length+1);t=u(n,a);return"\n\n"+t+i+"\n"+o.replace(/\n$/,"")+"\n"+t+"\n\n"}},t.horizontalRule={filter:"hr",replacement:function(e,n,t){return"\n\n"+t.hr+"\n\n"}},t.inlineLink={filter:function(e,n){return"inlined"===n.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,n){var t=(t=n.getAttribute("href"))&&t.replace(/([()])/g,"\\$1"),n=c(n.getAttribute("title"));return"["+e+"]("+t+(n=n&&' "'+n.replace(/"/g,'\\"')+'"')+")"}},t.referenceLink={filter:function(e,n){return"referenced"===n.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,n,t){var r=n.getAttribute("href"),i=(i=c(n.getAttribute("title")))&&' "'+i+'"';switch(t.linkReferenceStyle){case"collapsed":a="["+e+"][]",l="["+e+"]: "+r+i;break;case"shortcut":a="["+e+"]",l="["+e+"]: "+r+i;break;default:var o=this.references.length+1,a="["+e+"]["+o+"]",l="["+o+"]: "+r+i}return this.references.push(l),a},references:[],append:function(e){var n="";return this.references.length&&(n="\n\n"+this.references.join("\n")+"\n\n",this.references=[]),n}},t.emphasis={filter:["em","i"],replacement:function(e,n,t){return e.trim()?t.emDelimiter+e+t.emDelimiter:""}},t.strong={filter:["strong","b"],replacement:function(e,n,t){return e.trim()?t.strongDelimiter+e+t.strongDelimiter:""}},t.code={filter:function(e){var n=e.previousSibling||e.nextSibling,n="PRE"===e.parentNode.nodeName&&!n;return"CODE"===e.nodeName&&!n},replacement:function(e){if(!e)return"";e=e.replace(/\r?\n|\r/g," ");for(var n=/^`|^ .*?[^ ].* $|`$/.test(e)?" ":"",t="`",r=e.match(/`+/gm)||[];-1!==r.indexOf(t);)t+="`";return t+n+e+n+t}},t.image={filter:"img",replacement:function(e,n){var t=c(n.getAttribute("alt")),r=n.getAttribute("src")||"",n=c(n.getAttribute("title"));return r?"!["+t+"]("+r+(n?' "'+n+'"':"")+")":""}},l.prototype={add:function(e,n){this.array.unshift(n)},keep:function(e){this._keep.unshift({filter:e,replacement:this.keepReplacement})},remove:function(e){this._remove.unshift({filter:e,replacement:function(){return""}})},forNode:function(e){return e.isBlank?this.blankRule:s(this.array,e,this.options)||s(this._keep,e,this.options)||s(this._remove,e,this.options)||this.defaultRule},forEach:function(e){for(var n=0;n{var e=m.DOMParser,n=!1;try{(new e).parseFromString("","text/html")&&(n=!0)}catch(e){}return n})()?m.DOMParser:((()=>{var n=!1;try{document.implementation.createHTMLDocument("").open()}catch(e){m.ActiveXObject&&(n=!0)}return n})()?e.prototype.parseFromString=function(e){var n=new window.ActiveXObject("htmlfile");return n.designMode="on",n.open(),n.write(e),n.close(),n}:e.prototype.parseFromString=function(e){var n=document.implementation.createHTMLDocument("");return n.open(),n.write(e),n.close(),n},e);function e(){}function y(e,n){var n={element:e="string"==typeof e?(g=g||new A).parseFromString(''+e+"","text/html").getElementById("turndown-root"):e.cloneNode(!0),isBlock:f,isVoid:d,isPre:n.preformattedCode?v:null},t=n.element,r=n.isBlock,i=n.isVoid,o=n.isPre||function(e){return"PRE"===e.nodeName};if(t.firstChild&&!o(t)){for(var a=null,l=!1,u=h(s=null,t,o);u!==t;){if(3===u.nodeType||4===u.nodeType){var c=u.data.replace(/[ \r\n\t]+/g," ");if(!(c=a&&!/ $/.test(a.data)||l||" "!==c[0]?c:c.substr(1))){u=p(u);continue}u.data=c,a=u}else{if(1!==u.nodeType){u=p(u);continue}r(u)||"BR"===u.nodeName?(a&&(a.data=a.data.replace(/ $/,"")),a=null,l=!1):i(u)||o(u)?l=!(a=null):a&&(l=!1)}var c=h(s,u,o),s=u,u=c}a&&(a.data=a.data.replace(/ $/,""),a.data||p(a))}return e}function v(e){return"PRE"===e.nodeName||"CODE"===e.nodeName}function N(e,n){var t;return e.isBlock=f(e),e.isCode="CODE"===e.nodeName||e.parentNode.isCode,e.isBlank=!d(t=e)&&!(e=>o(e,i))(t)&&/^\s*$/i.test(t.textContent)&&!(e=>a(e,r))(t)&&!(e=>a(e,i))(t),e.flankingWhitespace=((e,n)=>{var t;return e.isBlock||n.preformattedCode&&e.isCode?{leading:"",trailing:""}:((t=(e=>({leading:(e=e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/))[1],leadingAscii:e[2],leadingNonAscii:e[3],trailing:e[4],trailingNonAscii:e[5],trailingAscii:e[6]}))(e.textContent)).leadingAscii&&E("left",e,n)&&(t.leading=t.leadingNonAscii),t.trailingAscii&&E("right",e,n)&&(t.trailing=t.trailingNonAscii),{leading:t.leading,trailing:t.trailing})})(e,n),e}function E(e,n,t){var r,i,e="left"===e?(r=n.previousSibling,/ $/):(r=n.nextSibling,/^ /);return r&&(3===r.nodeType?i=e.test(r.nodeValue):t.preformattedCode&&"CODE"===r.nodeName?i=!1:1!==r.nodeType||f(r)||(i=e.test(r.textContent))),i}var T=Array.prototype.reduce,R=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function C(e){if(!(this instanceof C))return new C(e);this.options=function(e){for(var n=1;n{for(var n=e.length;0* { display:block; border:1px solid #fff; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; padding:4px 8px; } .drdn-items>a:hover {text-decoration:none;} .drdn-items>*:focus {border:1px dotted #bbb;} .drdn-items.selection>*:before { content:' '; display:inline-block; line-height:1em; width:1em; height:1em; margin-right:4px; font-weight:bold; } .drdn-items.selection>*.selected:before { content:"\2713 "; } .drdn-items.selection:empty { border: none; } .drdn-items>span {color:#999;} .contextual .drdn-content {top:18px;} .contextual .drdn-items {padding:2px; min-width: 160px;} .contextual .drdn-items>a {display: flex; padding: 5px 8px;} .contextual .drdn-items>a.icon:not(:has(svg)) {padding-left: 24px; background-position-x: 4px;} .contextual .drdn-items>a:hover {color:#2A5685; border:1px solid #628db6; background-color:#eef5fd; border-radius:3px;} #project-jump.drdn {width:200px;display:inline-block;} #project-jump .drdn-trigger { width:100%; height:24px; display:inline-block; padding:3px 18px 3px 6px; border-radius:3px; border:1px solid #ccc; margin:0 !important; vertical-align:middle; color:#555; background:#fff url(/chevron-down.svg) no-repeat 98% 50%; } #project-jump .drdn.expanded .drdn-trigger {background-image:url(/arrow_up.png);} #project-jump .drdn-content {width:280px;} #project-jump .drdn-items>* {color:#555 !important;} #project-jump .drdn-items>a:hover {background-color:#759FCF; color:#fff !important;} /***** Tables *****/ table.list, .table-list { font-size: 0.8125rem; font-variant-numeric: tabular-nums; border-top: 1px solid #d0d7de; border-bottom: 1px solid #d0d7de; border-collapse: collapse; width: 100%; margin-bottom: 4px; overflow: hidden; } table.list th, .table-list-header { background-color:#EEEEEE; padding: 4px; white-space:nowrap; font-weight:bold; border-bottom: 2px solid #d0d7de; } table.list th.whitespace-normal {white-space: normal;} table.list td {text-align:center; vertical-align:middle; padding-top: 3px; padding-right: 10px; padding-bottom: 3px; border-top: 1px solid #d0d7de;} table.list td.icon {width: 100%;} /* Prevents border from disappearing due to inline-flex shrinking */ table.list td.id { width: 2%; text-align: center;} table.list td.name, table.list td.description, table.list td.subject, table.list td.parent-subject, table.list td.comments, table.list td.roles, table.list td.attachments, table.list td.text, table.list td.short_description {text-align: left;} table.list td.attachments span {display: block; height: 16px;} table.list td.attachments span a.icon-download {display: inline-block; visibility: hidden;} table.list td.attachments span:hover a.icon-download {visibility: visible;} table.list td.tick {width:15%} table.list td.checkbox { width: 15px; padding: 2px 0 0 0; } table.list .checkbox input {padding:0px; height: initial;} table.list td.buttons, div.buttons { white-space:nowrap; text-align: right; } table.list td.buttons a, div.buttons a, table.list td.buttons span.icon-only { margin-right: 0.6em; } table.list td.buttons a:last-child, div.buttons a:last-child { margin-right: 0; } table.list td.buttons img, div.buttons img {vertical-align:middle;} table.list td.reorder {width:15%; white-space:nowrap; text-align:center; } table.list table.progress td {padding-right:0px;} table.list caption { text-align: left; padding: 0.5em 0.5em 0.5em 0; } table.list tr.overdue td.due_date { color: #c22; } #role-permissions-trackers table.list th {white-space:normal;} .table-list-cell {display: table-cell; vertical-align: top; padding:2px; } .table-list div.buttons {width: 15%;} tr.project td.name a { white-space:nowrap; } tr.project.closed, tr.project.archived { color: #aaa; } tr.project.closed a, tr.project.archived a { color: #aaa; } tr.issue { text-align: center; white-space: nowrap; } tr.issue td.subject, tr.issue td.parent-subject, tr.issue td.category, td.assigned_to, td.last_updated_by, tr.issue td.string, tr.issue td.text, tr.issue td.list, tr.issue td.relations, tr.issue td.parent, tr.issue td.watcher_users { white-space: normal; } tr.issue td.relations { text-align: left; } tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;} tr.issue td.relations span, tr.issue td.watcher_users a {white-space: nowrap;} tr.issue td.watcher_users ul {list-style: none; padding: 0; margin: 0} table.issues td.block_column {color:#777; font-size:90%; padding:4px 4px 4px 24px; text-align:left; white-space:normal;} table.issues td.block_column>span {font-weight: bold; display: block; margin-bottom: 4px;} table.issues td.block_column>pre {white-space:normal;} tr.idnt td.subject, tr.idnt td.name {background: url(/chevron-right-idnt.svg) no-repeat 2px 50%;} tr.idnt-1 td.subject, tr.idnt-1 td.name {padding-left: 24px; background-position: 4px 50%;} tr.idnt-2 td.subject, tr.idnt-2 td.name {padding-left: 40px; background-position: 20px 50%;} tr.idnt-3 td.subject, tr.idnt-3 td.name {padding-left: 56px; background-position: 36px 50%;} tr.idnt-4 td.subject, tr.idnt-4 td.name {padding-left: 72px; background-position: 52px 50%;} tr.idnt-5 td.subject, tr.idnt-5 td.name {padding-left: 88px; background-position: 68px 50%;} tr.idnt-6 td.subject, tr.idnt-6 td.name {padding-left: 104px; background-position: 84px 50%;} tr.idnt-7 td.subject, tr.idnt-7 td.name {padding-left: 120px; background-position: 100px 50%;} tr.idnt-8 td.subject, tr.idnt-8 td.name {padding-left: 136px; background-position: 116px 50%;} tr.idnt-9 td.subject, tr.idnt-9 td.name {padding-left: 152px; background-position: 132px 50%;} table.issue-report {table-layout:fixed;} table.issue-report tr.total, table.issue-report-detailed tr.total { font-weight: bold; border-top:2px solid #d0d7de;} .issue-report-graph {width: 75%; margin: 2em 0;} tr.entry td { white-space: nowrap; } tr.entry td.filename {width:30%; text-align:left;} tr.entry td.filename_no_report {width:70%; text-align:left;} tr.entry td.size { text-align: right; font-size: 90%; } tr.entry td.revision, tr.entry td.author { text-align: center; } tr.entry td.age { text-align: right; } tr.entry.file td.filename a { margin-left: 26px; } tr.entry.file td.filename_no_report a { margin-left: 16px; } tr span.expander, .gantt_subjects div > span.expander {margin-left: 0; cursor: pointer;} .gantt_subjects div > span .icon-gravatar {float: none;} .gantt_subjects div.project-name a, .gantt_subjects div.version-name a {margin-left: 4px;} tr.changeset { height: 20px } tr.changeset ul, ol { margin-top: 0px; margin-bottom: 0px; } tr.changeset td.revision_graph { width: 15%; background-color: #fffffb; } tr.changeset td.author { text-align: center; width: 15%; white-space:nowrap;} tr.changeset td.committed_on { text-align: center; width: 15%; white-space:nowrap;} table.files tbody th {text-align:left;} table.files tr.file td.filename { text-align: left; } table.files tr.file td.digest { font-size: 86%; } table.members td.roles, table.memberships td.roles { width: 45%; } table.members td.buttons { text-align: left; width: 1px; white-space: nowrap;} table.messages td.last_message {text-align:left;} tr.message { height: 2.6em; } tr.message td.created_on { white-space: nowrap; } tr.message td.last_message { font-size: 93%; white-space: nowrap; } tr.message.sticky td.subject { font-weight: bold; } tr.message td.subject:not(:has(.icon)) { padding-left: 20px; } body.avatars-on #replies .message.reply {padding-left: 32px;} #replies .reply:target h4.reply-header {background-color:#DDEEFF;} #replies h4 img.gravatar {margin-left:-32px;} tr.version.closed, tr.version.closed a { color: #999; } tr.version:not(.shared) td.name { padding-left: 20px; } tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; } #principals_for_new_member .icon-user, #users_for_watcher .icon-user {background:transparent;} #principals_for_new_member svg, #principals_for_new_member img {margin-right: 4px;} tr.user td {width:13%;white-space: nowrap;} td.username, td.firstname, td.lastname, td.email {text-align:left !important;} tr.user td.email { width:18%; } tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } table.permissions td.role {color:#999;font-size:90%;font-weight:normal !important;text-align:center;vertical-align:bottom;} table.permissions tr.group>td:nth-of-type(1), table.tracker-summary tr.group>td:nth-of-type(1) {font-weight: bold;} tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.issue, tr.time-entry td.comments, tr.time-entry td.subject, tr.time-entry td.activity, tr.time-entry td.project { text-align: left; white-space: normal; } table.time-entries td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } table.time-entries td.hours .hours-dec { font-size: 0.9em; } table.plugins td { vertical-align: middle; } table.plugins td.configure { text-align: right; padding-right: 1em; } table.plugins span.name { font-weight: bold; display: block; margin-bottom: 6px; } table.plugins span.description { display: block; font-size: 0.9em; } table.plugins span.url { display: block; font-size: 0.9em; } table.list.enumerations {table-layout: fixed; margin-bottom: 2em;} tr.group td { padding: 0.8em 0 0.5em 0.3em; border-bottom: 2px solid #d0d7de; text-align:left; background-color: #fff;} tr.group span.count {top:-1px;} tr.group span.name {font-weight:bold;} tr.group span.totals {color: #aaa; font-size: 93%;} tr.group span.totals .value {font-weight:bold; color:#777;} tr.group a.toggle-all { color: #aaa; font-size: 93%; display:none; float:right; margin-right:4px;} tr.group:hover a.toggle-all { display:inline;} a.toggle-all:hover {text-decoration:none;} table.list tbody tr.group:hover { background-color:inherit; } table td {padding:2px;} table p {margin:0;} table.list:not(.odd-even) tbody tr:nth-child(odd), .odd, #issue-changesets div.changeset:nth-child(odd) { background-color: #fff; } table.list:not(.odd-even) tbody tr:nth-child(even), .even, #issue-changesets div.changeset:nth-child(even) { background-color: #f6f7f8; } table.list:not(.odd-even) tbody tr:nth-child(odd):hover, .odd:hover, #issue-changesets div.changeset:nth-child(odd):hover, table.list:not(.odd-even) tbody tr:nth-child(even):hover, .even:hover, #issue-changesets div.changeset:nth-child(even):hover { background-color:#ffffdd; } tr.builtin td.name {font-style:italic;} a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; } table.boards td.last-message {text-align:left;font-size:93%;} div.table-list.boards .table-list-cell.name {width: 30%;} #message_subject { max-width: 99%; } #query_form_content {font-size:90%;} #query_form_with_buttons > p.contextual {font-size:0.75rem; margin:12px 0px;} .query_sort_criteria_count { display: inline-block; min-width: 1em; } /* query form - options */ #list-definition { margin: 0 15px; width: auto !important; } #list-definition > div { margin: 6px 0; display: flex; flex-wrap: wrap; align-items: center; gap: 5px 10px; } #list-definition > div .field{ width: 160px; } .query-columns label { display:block; } #list-definition .buttons input[type=button] { width:35px; display:block; } .query-columns select { min-width:150px; } .query-totals {text-align:right; margin-top:-2.3em; font-size: 93%;} .query-totals>span:not(:first-child) {margin-left:0.6em;} .query-totals .value {font-weight:bold;} body.controller-timelog .query-totals {margin-top:initial;} body.controller-gantts fieldset#options > div > div { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 5px 10px; } td.center {text-align:center;} #watchers select {width: 95%; display: block;} #watchers img.gravatar {margin: 0 4px 2px 0;} #watchers svg.icon-svg {margin: 0 2px 2px 0;} #users_for_watcher img.gravatar {padding-bottom: 2px; margin-right: 4px;} #users_for_watcher svg {margin-right: 4px;} #users_for_watcher span.icon-user {display: inline;} span#watchers_inputs {overflow:auto; display:block;} span.search_for_watchers {display:block;} span.search_for_watchers, span.add_attachment {font-size:93%; line-height:2.5em;} span.add_attachment a {padding-left:16px; background: url(/bullet_add.png) no-repeat 0 50%; } input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; color: graytext; background-color: #ebebe4; } .highlight { background-color: #FCFD8D;} .highlight.token-1 { background-color: #faa;} .highlight.token-2 { background-color: #afa;} .highlight.token-3 { background-color: #aaf;} .box{ padding: 8px; margin-bottom: 12px; background-color: #f9fafb; color: #505050; line-height: 1.5em; border: 1px solid #d0d7de; word-wrap: break-word; border-radius: 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } div.square { border: 1px solid #999; float: left; margin: .3em .4em 0 .4em; overflow: hidden; width: .6em; height: .6em; } .contextual {float:right; white-space: nowrap; line-height:1.4em;margin:5px 0px; padding-left: 10px; font-size:0.9em;} .contextual input, .contextual select {font-size:0.9em;} .message .contextual, #comments .contextual { margin-top: 0; } .splitcontent {overflow: auto; display: flex; flex-wrap: wrap;} .splitcontentleft {flex: 1; margin-right: 5px;} .splitcontentright {flex: 1; margin-left: 5px;} .splitcontenttop {flex: 2; flex-basis: 100%;} form {display: inline;} input, select, button {vertical-align: middle; margin-top: 1px; margin-bottom: 1px; height: 24px; padding: 0 7px;} input, select, textarea, button { color: #333; background-color: #fff; border:1px solid #ccc; border-radius:3px; box-sizing: border-box;} select { -webkit-appearance: none; -moz-appearance: none; -o-appearance: none; appearance: none; background-color: #fff; background-image: url(/chevron-down.svg); background-repeat: no-repeat; background-position: calc(100% - 2px) 50%; padding-right: 20px; } input[type="file"] {border: 0; padding-left: 0; padding-right: 0; height: initial; background-color: initial; } input[type="submit"], button[type="submit"] { -webkit-appearance: button; cursor: pointer; background-color: #fff; height: 28px; -webkit-transition: background-color 100ms linear; -moz-transition: background-color 100ms linear; -o-transition: background-color 100ms linear; transition: background-color 100ms linear; } input[type="submit"]:hover, button[type="submit"]:hover { background-color: #ddd; } input[type="text"]:focus, input[type="text"]:active, input[type="password"]:focus, input[type="password"]:active, input[type="date"]:focus, input[type="date"]:active, input[type="number"]:focus, input[type="number"]:active, select:focus, select:active, textarea:focus, textarea:active { border: 1px solid #5ad; outline: none; } input:placeholder-shown { text-overflow: ellipsis; } select[multiple=multiple] {background: #fff; padding-right: initial; height: auto;} fieldset {border: 1px solid #d0d7de; margin:0; min-width: inherit;} legend {color: #333;} hr { width: 100%; height: 1px; background: #ccc; border: 0;} blockquote { font-style: italic; border-left: 3px solid #e0e0e0; padding-left: 0.6em; margin-left: 0;} blockquote blockquote { margin-left: 0;} abbr, span.field-description[title] { border-bottom: 1px dotted #aaa; cursor: help; } textarea.wiki-edit {width:99%; resize:vertical; box-sizing: border-box;} body.textarea-monospace textarea.wiki-edit {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;} body.textarea-proportional textarea.wiki-edit {font-family: var(--fonts-main);} li p {margin-top: 0;} div.issue { background: #ffffdd; padding: 8px; margin-bottom: 6px; border: 1px solid #d0d7de; border-radius: 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } p.breadcrumb { font-size: 0.8125rem; margin: 4px 0 4px 0;} p.subtitle { font-size: 0.8125rem; margin: -6px 0 12px 0; font-style: italic; } p.footnote { font-size: 0.9em; margin-top: 0px; margin-bottom: 0px; } .wiki-class-ltr {direction:ltr !important;} .wiki-class-rtl {direction:rtl !important;} div.issue div.subject div div { padding-left: 16px; word-break: break-word; } div.issue div.subject p {margin: 0; margin-bottom: 0.1em; font-size: 90%; color: #999;} div.issue div.subject>div>p { margin-top: 0.5em; } div.issue div.subject h3 {margin: 0; margin-bottom: 0.1em;} div.issue p.author {margin-top:0.5em; font-size: 93%} div.issue span.private, div.journal span.private {font-size: 60%;} div.issue .next-prev-links {color:#999;} div.issue .attributes {margin-top: 2em;} div.issue .attributes .attribute {padding-left:180px; clear:left; min-height: 1.8em;} div.issue .attributes .attribute .label {width: 170px; margin-left:-180px; font-weight:bold; float:left; overflow: clip visible; text-overflow: ellipsis;} div.issue .attribute .value {overflow:auto; text-overflow: ellipsis;} div.issue .attribute.string_cf .value .wiki p {margin-top: 0; margin-bottom: 0;} div.issue .attribute.text_cf .value .wiki p:first-of-type {margin-top: 0;} div.issue.overdue .due-date .value { color: #c22; } body.controller-issues h2.inline-flex {padding-right: 0} #issue_tree table.issues, #relations table.issues {border: 0;} #issue_tree table.issues td, #relations table.issues td {border: 0;} #issue_tree td.checkbox, #relations td.checkbox {display:none;} #issue_tree td.buttons, #relations td.buttons {padding:0;} #issue_tree .issues-stat, #relations .issues-stat {font-size: 93%} #issue_tree .issues-stat .badge, #relations .issues-stat .badge {bottom: initial;} #issue_tree .issue > td, #relations .issue > td, #issue_tree .issue .user { text-overflow: ellipsis; /* if text exceeds its space, add ... */ overflow: hidden; } #issue_tree .issue > td.subject, #relations .issue > td.subject { width: 50%; word-break: break-word; /* break word if subject is too long */ padding-right: 25px; /* this is the spaces that .buttons uses next to subject */ } #issue_tree .issue > td.assigned_to, #relations .issue > td.assigned_to { white-space: nowrap; } #trackers_description, #issue_statuses_description {display:none;} #trackers_description dt, #issue_statuses_description dt {font-weight: bold; text-decoration: underline;} #trackers_description dd, #issue_statuses_description dd {margin: 0; padding: 0 0 1em 0;} #issue-form .assign-to-me-link { padding-left: 5px; } fieldset.collapsible {border-width: 1px 0 0 0;} fieldset.collapsible>legend { cursor:pointer;} fieldset.collapsible>legend:not(:has(svg)) {padding-left: 18px; background-position: 4px;} fieldset#date-range p { margin: 2px 0 2px 0; } #query_form_content > fieldset { min-width: 0; max-width: 100%; } #filters-table { float:left; width: auto; } #filters-table .field { width: 230px; } #filters-table .filter { margin: 5px 0 0 0; display: flex; flex-wrap: wrap; gap: 0 10px; } #filters-table .filter .operator select { width: 120px; } .add-filter {width:35%; float:right; text-align: right; vertical-align: top;} #issue_is_private_wrap {float:right; margin-right:1em;} .toggle-multiselect { margin-right:5px; cursor:pointer;} .buttons { font-size: 0.9em; margin-bottom: 1.4em; margin-top: 1em; } div#issue-changesets {float:right; width:45%; margin-left: 1em; margin-bottom: 1em; background: #fff; padding-left: 1em; font-size: 90%;} div#issue-changesets div.changeset {border-bottom: 1px solid #ddd; padding: 4px;} div#issue-changesets p { margin-top: 0; margin-bottom: 1em;} .changeset-comments {margin-bottom:1em;} div.journal .contextual {margin-top: 0;} div.journal.private-notes .wiki {border-left:2px solid #d22; padding-left:4px; margin-left:-6px;} div.journal ul.details, ul.revision-info {color:#959595; margin-bottom: 1.5em;} div.journal ul.details a, ul.revision-info a {color:#70A7CD;} div.journal ul.details a:hover, ul.revision-info a:hover {color:#D14848;} body.avatars-on div.journal {padding-left:32px;} div.journal h4 img.gravatar {margin-left:-32px;} div.journal span.update-info {color: #666; font-size: 0.9em;} #update {margin-bottom: 1.4em;} #history .tab-content { padding: 0 8px; margin-bottom: 10px; border-right: 1px solid #d0d7de; border-bottom: 1px solid #d0d7de; border-left: 1px solid #d0d7de; border-radius: 0 0 3px 3px / 0 0 3px 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } #history div:target h4.note-header {background-color:#DDEEFF;} #history p.nodata {display: none;} div#activity dl, #search-results { margin-left: 2em; } div#activity dd, #search-results dd { margin-bottom: 1em; padding-left: 22px; font-size: 0.8125rem;} div#activity dt svg.icon-svg {margin-right: 4px;} div#activity dt.me .time { border-bottom: 1px solid #999; } div#activity dt .time { color: #555; font-size: 0.8125rem; margin-right: 4px; } div#activity dd .description, #search-results dd .description { font-style: italic; margin: 2px 0;} div#activity span.project:after, #search-results span.project:after { content: " - "; white-space: pre;} div#activity dd span.description, #search-results dd span.description { display:block; color: #666; } div#activity dt.grouped {padding-left:5em;} div#activity dd.grouped {margin-left:9em;} div#activity h3 { padding: 5px; background-color: #eeeeee; } div#activity dt { padding-top: 10px; border-top: 1px solid #eeeeee; width: 100%; /* Prevents border from disappearing due to inline-flex shrinking */ box-sizing: border-box; display: flex; align-items: flex-end; } div#activity dl dt:first-child { border: 0px; } #activity_scope_form select#user_id { max-width: 100%; } #search-results dd { margin-bottom: 1em; padding-left: 20px; margin-left:0px; } div#search-results-counts {float:right;} div#search-results-counts ul { margin-top: 0.5em; } div#search-results-counts li { list-style-type:none; float: left; margin-left: 1em; } div#roadmap .related-issues { margin-bottom: 1em; } div#roadmap .related-issues td.checkbox { display: none; } div#roadmap .related-issues td.assigned_to { width:1px; white-space:nowrap; padding: 0; } div#roadmap .related-issues td.assigned_to img { padding-left: 4px; padding-right: 4px;} div#roadmap .wiki h1:first-child { display: none; } div#roadmap .wiki h1 { font-size: 120%; } div#roadmap .wiki h2 { font-size: 110%; } div#roadmap h2, div#roadmap h3 {padding-right: 0;} div#roadmap h3 svg {margin-right: 4px;} body.controller-versions.action-show div#roadmap .related-issues {width:70%;} div#roadmap .version-article {padding-bottom: 12px;} div#version-summary { float:right; width:28%; margin-left: 16px; margin-bottom: 16px; background-color: #fff; } div#version-summary fieldset { margin-bottom: 1em; } div#version-summary fieldset.time-tracking table { width:100%; } div#version-summary th, div#version-summary td.total-hours { text-align: right; } table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align: right; padding-right: 0.5em; } table#time-report tbody tr.subtotal { font-style: italic; color:#777;} table#time-report tbody tr.subtotal td.hours { color:#b0b0b0; } table#time-report tbody tr.total { font-weight: bold; background-color:#EEEEEE; border-top:2px solid #d0d7de;} table#time-report .hours-dec { font-size: 0.9em; } div.wiki-page .contextual a {opacity: 0.4} div.wiki-page .contextual a:hover {opacity: 1} div.wiki a:target + h1, div.wiki a:target + h2, div.wiki a:target + h3, div.wiki a:target + h4, div.wiki a:target + h5, div.wiki a:target + h6 { background-color:#DDEEFF; } .wiki-update-info {text-align:right; color:#666; font-size:90%;} form .attributes select { width: 60%; } form .attributes select + a.icon-only { vertical-align: middle; margin-left: 4px; } input#issue_subject, input#document_title { width: 99%; } select#issue_done_ratio { width: 95px; } ul.projects {margin:0; padding-left:1em;} ul.projects ul.projects {padding-left:1.6em;} ul.projects.root {margin:0; padding:0;} ul.projects li.root, ul.projects li.child {list-style-type:none;} ul.projects li.root div.archived, ul.projects li.child div.archived {color: #aaa;} ul.projects div.description ul li {list-style-type:initial;} #projects-index { column-count: auto; column-width: 400px; -webkit-column-count: auto; -webkit-column-width: 400px; -webkit-column-gap : 0.5rem; -moz-column-count: auto; -moz-column-width: 400px; -moz-column-gap : 0.5rem; margin-bottom: 1.2em; } #projects-index li.root ul.projects { border-left: 3px solid #e0e0e0; padding-left:1em;} #projects-index ul.projects li.root { margin-bottom: 1em; padding: 15px 20px; border: 1px solid #d0d7de; border-radius: 3px; box-sizing: border-box; box-shadow: 0 1px 2px rgba(0,0,0,0.05); -moz-box-sizing: border-box; -webkit-box-sizing: border-box; break-inside: avoid-column; -webkit-break-inside: avoid-column; -moz-break-inside: avoid-column; page-break-inside:avoid; -webkit-column-break-inside: avoid; -moz-column-break-inside: avoid; width: 100%; } #projects-index ul.projects li.child {margin-top: 1em;} #projects-index ul.projects div.root a.project { font-family: var(--fonts-main); font-weight: bold; font-size: 1rem; margin: 0 0 10px 0; /* @ToDo: Remove below lines when legacy icon styles are removed */ background-image: none; padding-left: 0; } #projects-index ul.projects div.root svg { stroke-width: 2; margin-bottom: 10px; } #projects-index ul.projects div.description { padding-top: 0.5em; } #projects-index a.icon-user, #projects-index a.icon-bookmarked-project { background-image: none; padding-left: 0; } #projects-index a.project ~ svg, table.projects tr.project td.name svg { margin-left: 4px; } #notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;} ul.subprojects {list-style: none; display: inline-block; padding: 0; margin: 0;} ul.subprojects li {float: left;} ul.subprojects li:not(:last-child)::after {content: ', '; white-space: pre;} #related-issues li img {vertical-align:middle;} ul.properties {padding:0; font-size: 0.9em; color: #777;} ul.properties li {list-style-type:none;} ul.properties li span {font-style:italic;} .total-hours { font-size: 110%; font-weight: bold; } .total-hours span.hours-int { font-size: 120%; } .autoscroll {overflow-x: auto; padding:1px; margin-bottom: 1.2em; position: relative;} #user_login, #user_firstname, #user_lastname, #user_mail, #my_account_form select, #user_form select { width: 90%; } #workflow_copy_form select { width: 200px; } table.transitions td.enabled {background: #bfb;} #workflow_form table select {font-size:90%; max-width:100px;} table.fields_permissions td.readonly {background:#ddd;} table.fields_permissions td.required {background:#d88;} select.expandable {vertical-align:top;} textarea#custom_field_possible_values {width: 95%; resize:vertical} textarea#custom_field_default_value {width: 95%; resize:vertical} .sort-handle { cursor: move; } input#content_comments {width: 99%} span.pagination {margin-left:3px; color:#888; display:block;} .pagination ul.pages { margin: 0 5px 0 0; padding: 0; display: inline; } .pagination ul.pages li { display: inline-block; padding: 0; border: 1px solid #ddd; margin-left: -1px; line-height: 2em; margin-bottom: 1em; white-space: nowrap; text-align: center; } .pagination ul.pages li a, .pagination ul.pages li span { padding: 3px 8px; } .pagination ul.pages li:first-child { border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .pagination ul.pages li:last-child { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination ul.pages li.current { color: white; background-color: #628DB6; border-color: #628DB6; } .pagination ul.pages li.page:hover { background-color: #ddd; } .pagination ul.pages li.page a:hover, .pagination ul.pages li.page a:active { color: #169; text-decoration: inherit; } .pagination .per-page span.selected { font-weight: bold; } span.pagination>span {white-space:nowrap;} .controller-attachments.action-show span.pagination, .controller-repositories.action-entry span.pagination { display: block; margin-top: 1.2em; } #search-form fieldset p {margin:0.2em 0;} #csv-export-options fieldset {padding: 0;} /***** Tabular forms ******/ .tabular p{ margin: 0; padding: 3px 0 3px 0; padding-left: 180px; /* width of left column containing the label elements */ min-height: 2em; clear:left; } html>body .tabular p {overflow:hidden;} .tabular input, .tabular select {max-width:95%} .tabular textarea {width:95%; resize:vertical;} input#twofa_code, img#twofa_code { width: 140px; } ul.twofa_backup_codes { list-style-type: none; padding: 0; display: inline-block; columns: 14em 2;} ul.twofa_backup_codes code { font-size: 1rem; line-height: 2em } .tabular label{ font-weight: bold; float: left; text-align: right; /* width of left column */ margin-left: -180px; /* width of labels. Should be smaller than left column to create some right margin */ width: 175px; line-height: 24px; } .tabular label.floating{ font-weight: normal; margin-left: 0px; text-align: left; width: 270px; } label.block { display: block; width: auto !important; } .tabular label.block{ font-weight: normal; margin-left: 0px !important; text-align: left; float: none; } .tabular label.inline{ font-weight: normal; float:none; margin-left: 5px !important; width: auto; } .tabular label.error { color: #bb0000; } .tabular label.error + *:not(#issue_description_and_toolbar), .tabular label.error + span#issue_description_and_toolbar div.jstBlock { border: 1px solid #bb0000; } label.no-css { font-weight: inherit; float:none; text-align:left; margin-left:0px; width:auto; } input#time_entry_comments { width: 90%;} input#months { width: 46px; } .jstBlock .jstTabs, .jstBlock .wiki-preview { width: 99%; } .jstBlock .jstTabs { padding-right: 6px; } .jstBlock .wiki-preview { padding: 2px; } .jstBlock .wiki-preview p:first-child { padding-top: 0 !important; margin-top: 0 !important;} .jstBlock .wiki-preview p:last-child { padding-bottom: 0 !important; margin-bottom: 0 !important;} .tabular .wiki-preview, .tabular .jstTabs {width: 95%;} .tabular.settings .wiki-preview, .tabular.settings .jstTabs { width: 99%; } .tabular.settings .wiki-preview p {padding-left: 0 !important} .tabular .wiki-preview p { min-height: initial; padding: 0; padding-top: 1em !important; padding-bottom: 1em !important; overflow: initial; } .tabular.settings p { padding-left: 300px; font-size: 93%; } .tabular.settings label{ margin-left: -300px; width: 295px; } .tabular.settings textarea, .tabular.settings .wiki-preview, .tabular.settings .jstTabs { width: 99%; } .settings.enabled_scm table {width:100%} .settings.enabled_scm td.scm_name{ font-weight: bold; } fieldset.settings label { display: block; } fieldset#notified_events .parent { padding-left: 20px; } span.required {color: #bb0000;} .summary {font-style: italic;} .check_box_group { display:block; width:95%; max-height:120px; overflow-y:auto; padding:2px 4px 4px 2px; background:#fff; border:1px solid #9EB1C2; border-radius:2px } .check_box_group label { font-weight: normal; margin-left: 0px !important; text-align: left; float: none; display: block; width: auto; } .check_box_group.bool_cf {border:0; background:inherit;} .check_box_group.bool_cf label {display: inline;} .attachments_fields input.description, #existing-attachments input.description {margin-left:4px; width:340px;} .attachments_fields>span, #existing-attachments>span {display:block; white-space:nowrap;} /* ToDo: delete this line when legacy icons are deleted */ .attachments_fields .icon-attachment, #existing-attachments .icon-attachment {background-image: none; padding-left: 0} .attachments_fields input.filename, #existing-attachments .filename {border:0; width:250px; color:#555; background-color:inherit; } .tabular input.filename {max-width:75% !important;} .attachments_fields input.filename {height:1.8em;padding-right: 0;} .attachments_fields .ajax-waiting input.filename {background:url(/hourglass.png) no-repeat 0px 50%;} .attachments_fields .ajax-loading input.filename {background:url(/loading.gif) no-repeat 0px 50%;} .attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; } a.remove-upload:hover {text-decoration:none !important;} .existing-attachment.deleted .filename {text-decoration:line-through; color:#999 !important;} div.fileover, p.custom-field-filedroplistner.fileover { background-color: lavender; } div.attachments p { margin:4px 0 2px 0; } div.attachments img { vertical-align: middle; } div.attachments span.author { font-size: 0.9em; color: #888; } div.thumbnails {margin:0.6em;} div.thumbnails div {background:#fff;border:2px solid #ddd;display:inline-block;margin-right:2px;} div.thumbnails img {margin: 3px; vertical-align: middle;} #history div.thumbnails {margin-left: 2em;} p.other-formats { text-align: right; font-size:0.9em; color: #666; } .other-formats span + span:before { content: "| "; } a.atom { background: url(/file-rss.svg) no-repeat 1px 50%; padding: 2px 0px 3px 16px; } em.info {font-style:normal;display:block;font-size:90%;color:#888;} em.info.error {padding-left:20px; background:url(/exclamation.png) no-repeat 0 50%;} textarea.text_cf {width:95%; resize:vertical;} input.string_cf, input.link_cf {width:95%;} select.bool_cf {width:auto !important;} #tab-content-modules fieldset p {margin:3px 0 4px 0;} #users_for_watcher {height: 200px; overflow:auto;} #users_for_watcher label {display: block;} input#principal_search, input#user_search {width:90%} .roles-selection label {display:inline-block; width:210px;} input.autocomplete { background: #fff url(/search.svg) no-repeat 2px 50%; padding-left:20px !important; } input.autocomplete.ajax-loading { background-image: url(/loading.gif); } .role-visibility {padding-left:2em;} .objects-selection { height: 300px; overflow: auto; margin-bottom: 1em; } .objects-selection label { display: block; } .objects-selection>div, #user_group_ids { column-count: auto; column-width: 200px; -webkit-column-count: auto; -webkit-column-width: 200px; -webkit-column-gap : 0.5rem; -webkit-column-rule: 1px solid #ccc; -moz-column-count: auto; -moz-column-width: 200px; -moz-column-gap : 0.5rem; -moz-column-rule: 1px solid #ccc; } /***** Flash & error messages ****/ #errorExplanation, div.flash, .nodata, .warning, .conflict { padding: 6px 4px 6px 30px; margin-bottom: 12px; font-size: 1.1em; border: 1px solid; border-radius: 3px; } div.flash {margin-top: 8px;} div.flash svg.icon-svg, #errorExplanation svg.icon-svg, .conflict svg.icon-svg { margin-right: 4px; margin-left: -26px; } div.flash.error, #errorExplanation { background-color: #ffe3e3; border-color: #d88; color: #880000; } div.flash.error:not(:has(svg)), #errorExplanation:not(:has(svg)) { background: url(/exclamation.png) 8px 50% no-repeat #ffe3e3; } div.flash.error svg.icon-svg, #errorExplanation svg.icon-svg { stroke: #880000; } #errorExplanation:has(svg) { position: relative; } #errorExplanation:has(svg) > svg.icon-svg { position: absolute; top: 50%; bottom: 50%; margin-left: -24px; margin-top: -9px; } div.flash.notice { background-color: #dfffdf; border-color: #9fcf9f; color: #005f00; } div.flash.notice:not(:has(svg)) { background: url(/true.png) 8px 50% no-repeat #dfffdf; } div.flash.notice svg.icon-svg { stroke: #005f00; } div.flash.warning, .conflict { background-color: #F3EDD1; border-color: #eadbbc; color: #A6750C; text-align: left; } div.flash.warning:not(:has(svg)), .conflict:not(:has(svg)) { background: url(/warning.png) 8px 5px no-repeat #F3EDD1; } div.flash.warning svg.icon-svg, .conflict svg.icon-svg { stroke: #A6750C; } .nodata, .warning { text-align: center; background-color: #F3EDD1; border-color: #eadbbc; color: #A6750C; } #errorExplanation ul { font-size: 0.9em;} #errorExplanation h2, #errorExplanation p { display: none; } .conflict-details {font-size:93%;} /***** Ajax indicator ******/ #ajax-indicator { position: absolute; /* fixed not supported by IE */ background-color:#eee; border: 1px solid #bbb; top:35%; left:40%; width:20%; font-weight:bold; text-align:center; padding:0.6em; z-index:100; opacity: 0.5; } html>body #ajax-indicator { position: fixed; } #ajax-indicator span { background-position: 0% 40%; background-repeat: no-repeat; background-image: url(/loading.gif); padding-left: 26px; vertical-align: bottom; } /***** Calendar *****/ ul.cal { list-style: none; width: 100%; padding: 0; display: grid; grid-template-columns: 2rem repeat(7, 1fr); margin: 0; border: 1px solid #d0d7de; border-spacing: 0; border-radius: 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .cal .calhead { background-color:#eee; text-align: center; font-weight: bold; padding: 4px } .cal .week-number { background-color:#eee; border:none; font-size: 1em; padding: 4px; text-align: center; } .cal .week-number .label-week { display: none; } .cal .calbody { border: 1px solid #d0d7de; vertical-align: top; font-size: 0.9em; border-bottom: 0; border-right: 0; line-height: 1.2; min-height: calc(1.2em * 6); padding: 2px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .cal .calbody p.day-num {font-size: 1.1em; text-align:right;} .cal .calbody .abbr-day {display:none} .cal .calbody.this-month {background-color:#fff;} .cal .calbody.other-month {background-color:#f6f7f8;} .cal .calbody.other-month p.day-num {color: #bbb;} .cal .calbody.today {background:#ffd;} .cal .calbody.today p.day-num {font-weight: bold;} .cal .calbody .icon {padding-top: 2px; padding-bottom: 3px;} .cal .calbody.nwday:not(.other-month) {background-color:#f1f1f1;} p.cal.legend span {display:flex;} .controller-calendars p.buttons {margin-top: unset;} /***** Tooltips ******/ .tooltip{position:relative;z-index:24;} .tooltip:hover{z-index:25;color:#000;} .tooltip span.tip{display: none; text-align:left;} .tooltip span.tip a { color: #169 !important; } .tooltip span.tip img.gravatar { float: none; margin: 0; } div.tooltip:hover span.tip{ display:block; position:absolute; top:12px; width:270px; border:1px solid #555; border-radius: 3px; background-color:#fff; padding: 4px; font-size: 0.75rem; color:#505050; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } table.cal div.tooltip:hover span.tip { top: 25px; } img.ui-datepicker-trigger { cursor: pointer; vertical-align: middle; margin-left: 4px; } /***** Documents *****/ #document-list .document-group { margin-bottom: 15px; } /***** Progress bar *****/ table.progress { border-collapse: collapse; border-spacing: 0pt; empty-cells: show; text-align: center; float:left; margin: 1px 6px 1px 0px; width:80px; } table.progress td { height: 1em; } table.progress td.closed { background: #BAE0BA none repeat scroll 0%; } table.progress td.done { background: #D3EDD3 none repeat scroll 0%; } table.progress td.todo { background: #eee none repeat scroll 0%; } p.percent {font-size: 86%; margin:0;} p.progress-info {clear: left; font-size: 86%; margin-top:-4px; color:#777;} .version-overview table.progress {width:40em;} .version-overview table.progress td { height: 1.2em; } /***** Tabs *****/ #content .tabs {height: 2.6em; margin-bottom:1.2em; position:relative; overflow:hidden;} #content .tabs ul {margin:0; position:absolute; bottom:0; padding-left:0.5em; min-width: 2000px; width: 100%; border-bottom: 1px solid #d0d7de;} #content .tabs ul li { float:left; list-style-type:none; white-space:nowrap; margin-right:4px; position:relative; margin-bottom:-1px; } #content .tabs ul li a{ display:block; font-size: 0.9em; text-decoration:none; line-height:1.3em; padding:4px 6px 4px 6px; border: 1px solid #d0d7de; border-bottom: 1px solid #d0d7de; color:#999; font-weight:bold; border-top-left-radius:3px; border-top-right-radius:3px; } #content .tabs ul li a:hover { color:#777; text-decoration:none; } #content .tabs ul li a.selected { background-color: #fff; border: 1px solid #d0d7de; border-bottom: 1px solid #fff; color:#444; box-shadow: 0 1px 2px rgba(0,0,0,0.1); } #content .tabs ul li a.selected:hover {background-color: #fff;} div.tabs-buttons { position:absolute; right: 0; width: 54px; height: 24px; background: white; bottom: 0; border-bottom: 1px solid #bbbbbb; } button.tab-left, button.tab-right { font-size: 0.9em; cursor: pointer; height:24px; border: 1px solid #ccc; border-bottom: 1px solid #bbbbbb; position:absolute; padding:4px; width: 24px; bottom: -1px; } button.tab-left:hover, button.tab-right:hover { background-color: #f5f5f5; } button.tab-left:focus, button.tab-right:focus { outline: 0; } button.tab-left svg.icon-svg, button.tab-right svg.icon-svg { stroke: #999; stroke-width: 2; } button.tab-left { right: 28px; border-top-left-radius:3px; } button.tab-left:not(:has(svg)) { background: #eeeeee url(/arrow_left.png) no-repeat 50% 50%; } button.tab-right { right: 4px; border-top-right-radius:3px; } button.tab-right:not(:has(svg)) { background: #eeeeee url(/arrow_right.png) no-repeat 50% 50%; } button.tab-left.disabled, button.tab-right.disabled { background-color: #ccc; cursor: unset; } /***** Diff *****/ .diff_out { background: #fcc; } .diff_out span { background: #faa; } .diff_in { background: #cfc; } .diff_in span { background: #afa; } .text-diff { padding: 1em; background-color:#f6f6f6; color:#505050; border: 1px solid #e4e4e4; white-space: pre-wrap; } /***** Wiki *****/ div.wiki { font-variant-numeric: proportional-nums; } div.wiki table, div.wiki pre, div.wiki code, div.wiki ol>li::marker { font-variant-numeric: tabular-nums; } /* Wiki tables */ div.wiki table { border-collapse: collapse; margin-bottom: 1em; } div.wiki table, div.wiki td, div.wiki th { border: 1px solid #bbb; padding: 4px; } div.wiki table td[align=left], div.wiki table th[align=left] { text-align: left; } div.wiki table td[align=right], div.wiki table th[align=right] { text-align: right; } div.wiki .wiki-class-noborder, div.wiki .wiki-class-noborder td, div.wiki .wiki-class-noborder th {border:0;} div.wiki .external { background-position: 0% 60%; background-repeat: no-repeat; padding-left: 12px; background-image: url(/external.png); } div.wiki a {word-wrap: break-word;} div.wiki a.new {color: #b73535;} div.wiki p {line-height: 1.6;} div.wiki ul, div.wiki ol {margin-bottom:1em;} div.wiki li {line-height: 1.6; margin-bottom: 0.125rem;} div.wiki li>ul, div.wiki li>ol {margin-bottom: 0;} div.wiki pre { margin: 1em 1em 1em 1.6em; padding: 8px; background-color: #fafafa; border: 1px solid #e2e2e2; border-radius: 3px; width:auto; overflow-x: auto; overflow-y: hidden; } div.wiki *:not(pre)>code, div.wiki>code { background: rgba(62, 91, 118, 0.08); padding: 0.1em 0.1em; border-radius: 0.1em; } div.wiki ul.toc { background-color: #ffffdd; border: 1px solid #e4e4e4; padding: 8px; line-height: 1.4em; margin-bottom: 12px; margin-right: 12px; margin-left: 0; display: table } * html div.wiki ul.toc { width: 50%; } /* IE6 doesn't autosize div */ div.wiki ul.toc.right { float: right; margin-left: 12px; margin-right: 0; width: auto; clear: right ;} div.wiki ul.toc.left { float: left; margin-right: 12px; margin-left: 0; width: auto; clear: left ; } div.wiki ul.toc ul { margin: 0; padding: 0; } div.wiki ul.toc li {list-style-type:none; margin: 0;} div.wiki ul.toc>li:first-child {margin-bottom: .5em; color: #777;} div.wiki ul.toc li li {margin-left: 1.5em;} div.wiki ul.toc a { font-size: 93%; font-weight: normal; text-decoration: none; color: #606060; } div.wiki ul.toc a:hover { color: #c61a1a; text-decoration: underline;} a.wiki-anchor { display: none; margin-left: 6px; text-decoration: none; } a.wiki-anchor:hover { color: #aaa !important; text-decoration: none; } h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor, h4:hover a.wiki-anchor, h5:hover a.wiki-anchor, h6:hover a.wiki-anchor { display: inline; color: #ddd; } div.wiki img {vertical-align:middle; max-width:100%;} div.wiki>.task-list { padding-left: 0px; } div.wiki .task-list { list-style-type: none; } div.wiki .task-list input.task-list-item-checkbox { height: initial; } /***** My page layout *****/ .block-receiver { border:1px dashed #fff; padding: 15px 0 0 0; } .dragging .block-receiver { border:1px dashed #777; margin-bottom: 20px; } .mypage-box { border:1px solid #d0d7de; padding:8px; margin:0 0 20px 0; color:#505050; line-height:1.5em; border-radius: 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } .mypage-box>.contextual {opacity:0.001; transition: opacity 0.2s;} .mypage-box:hover>.contextual {opacity:1;} .handle {cursor: move;} #my-page .list th.checkbox, #my-page .list td.checkbox {display:none;} /***** Gantt chart *****/ table.gantt-table { width: 100%; border-collapse: collapse; } table.gantt-table td { padding: 0px; } .gantt_hdr { position:absolute; top:0; height:16px; border-top: 1px solid #c0c0c0; border-bottom: 1px solid #c0c0c0; border-left: 1px solid #c0c0c0; text-align: center; overflow: hidden; } #gantt_area .gantt_hdr { border-left: 0px; border-right: 1px solid #c0c0c0; } .gantt_subjects_container:not(.draw_selected_columns) .gantt_hdr, .last_gantt_selected_column .gantt_hdr { border-right: 1px solid #c0c0c0; } .last_gantt_selected_column .gantt_selected_column_container, .gantt_subjects_container .gantt_subjects * { z-index: 10; } .gantt_subjects_column + td { padding: 0; } .gantt_hdr.nwday {background-color:#f1f1f1; color:#999;} .gantt_subjects, .gantt_selected_column_content.gantt_hdr { font-size: 0.8em; position: relative; z-index: 1; } .gantt_subjects div, .gantt_selected_column_content div { line-height: 16px; height: 16px; overflow: hidden; white-space: nowrap; text-overflow: clip; width: 100%; } .gantt_subjects div.issue-subject:hover { background-color:#ffffdd; } .gantt_selected_column_content { padding-left: 3px; padding-right: 3px;} .gantt_subjects .issue-subject img.icon-gravatar { margin: 2px 5px 0px 2px; } .gantt_hdr_selected_column_name { position: absolute; top: 50%; width:100%; transform: translateY(-50%); -webkit-transform: translateY(-50%); font-size: 0.8em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } td.gantt_selected_column { width: 50px; } td.gantt_selected_column .gantt_hdr,.gantt_selected_column_container { width: 49px; } .task { position: absolute; height:8px; font-size:0.8em; color:#888; padding:0; margin:0; line-height:16px; white-space:nowrap; } .task.label {width:100%;} .task.label.project, .task.label.version { font-weight: bold; } .task_late { background:#f66 url(/task_late.png); border: 1px solid #f66; } .task_done { background:#00c600 url(/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(/task_todo.png); border: 1px solid #aaa; } .task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} .task.parent.marker.starting { position: absolute; background: url(/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} .task.parent.marker.ending { position: absolute; background: url(/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} .version.task_late { background:#f66 url(/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} .version.task_done { background:#00c600 url(/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} .version.task_todo { background:#fff url(/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} .version.marker { background-image:url(/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .project.task_late { background:#f66 url(/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} .project.task_done { background:#00c600 url(/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} .project.task_todo { background:#fff url(/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} .project.marker { background-image:url(/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} /***** Badges *****/ .badge { position:relative; font-weight:bold; font-size: 0.6875rem; bottom: 4px; padding: 1px 4px; margin-right: 2px; margin-left: 2px; border-radius: 2px; text-transform: uppercase; text-decoration: none; user-select: none; } .badge-private { background: #d22; color: #fff; border: 1px solid #d22; } .badge-count { color: #fff; background:#9DB9D5; } .badge-status-open { color: #205D86; border: 1px solid #205D86; } .badge-status-locked { color: #696969; border: 1px solid #696969; } .badge-status-closed { color: #1D781D; border: 1px solid #1D781D; } .badge-issues-count { background: #EEEEEE; } /***** Tooltips *****/ .ui-tooltip { background: #000; color: #fff; border-radius: 3px; border: 0; box-shadow: none; white-space: pre-wrap; pointer-events: none; } /***** SVG Icons *****/ .icon, .icon-only { display: inline-flex; align-items: center; vertical-align: middle; } .icon svg, .icon-only svg { flex-shrink: 0; } a.icon:hover svg, a.icon-only:hover svg { stroke: #c61a1a; } svg.icon-ok { stroke: #5db651; } .icon-error svg.icon-svg { stroke: #c61a1a } .icon-warning svg.icon-svg { stroke: #e4bc4b; } .icon-only span { display: none; } .icon-fav svg.icon-svg { fill: #ffc400; stroke: #ffc400; } svg.icon-svg { stroke: #169; fill: none; stroke-width: 1.5; vertical-align: middle; } svg.s20 { width: 1.25rem; height: 1.25rem; } svg.s18 { width: 1.125rem; height: 1.125rem; } svg.s16 { width: 1rem; height: 1rem; } svg.s14 { width: 0.875rem; height: 0.875rem; } svg.s12 { width: 0.75rem; height: 0.75rem; } span.icon-label { margin-left: 4px; } /***** Legacy icons *****/ .icon:not(:has(svg)) { background-position: 0% 50%; background-repeat: no-repeat; padding-left: 20px; } .icon-only:not(:has(svg)) { background-position: 0% 50%; background-repeat: no-repeat; padding-left: 16px; display: inline-block; width: 0; height: 16px; overflow: hidden; padding-top: 0; padding-bottom: 0; font-size: 0.5rem; vertical-align: middle; } .icon-only:not(:has(svg))::after { content: "\a0"; } .icon-add:not(:has(svg)) { background-image: url(/add.png); } .icon-edit:not(:has(svg)) { background-image: url(/edit.png); } .icon-copy:not(:has(svg)) { background-image: url(/copy.png); } .icon-duplicate { background-image: url(/duplicate.png); } .icon-del:not(:has(svg)) { background-image: url(/delete.png); } .icon-move:not(:has(svg)) { background-image: url(/move.png); } .icon-save:not(:has(svg)) { background-image: url(/save.png); } .icon-download:not(:has(svg)) { background-image: url(/download.png); } .icon-cancel:not(:has(svg)) { background-image: url(/cancel.png); } .icon-multiple:not(:has(svg)) { background-image: url(/table_multiple.png); } .icon-folder:not(:has(svg)) { background-image: url(/folder.png); } .open .icon-folder:not(:has(svg)) { background-image: url(/folder_open.png); } .icon-package:not(:has(svg)) { background-image: url(/package.png); } .icon-user:not(:has(svg)) { background-image: url(/user.png); } .icon-project:not(:has(svg)), .icon-projects:not(:has(svg)) { background-image: url(/projects.png); } .icon-help:not(:has(svg)) { background-image: url(/help.png); } .icon-attachment:not(:has(svg)) { background-image: url(/attachment.png); } .icon-history:not(:has(svg)) { background-image: url(/history.png); } .icon-time-entry:not(:has(svg)), .icon-time:not(:has(svg)) { background-image: url(/time.png); } .icon-time-add:not(:has(svg)) { background-image: url(/time_add.png); } .icon-stats:not(:has(svg)) { background-image: url(/stats.png); } .icon-warning:not(:has(svg)) { background-image: url(/warning.png); } .icon-error:not(:has(svg)) { background-image: url(/exclamation.png); } .icon-fav:not(:has(svg)) { background-image: url(/fav.png); } .icon-fav-off:not(:has(svg)) { background-image: url(/fav_off.png); } .icon-reload:not(:has(svg)) { background-image: url(/reload.png); } .icon-lock:not(:has(svg)), .icon-locked:not(:has(svg)) { background-image: url(/locked.png); } .icon-unlock:not(:has(svg)) { background-image: url(/unlock.png); } .icon-checked:not(:has(svg)) { background-image: url(/toggle_check.png); } .icon-report { background-image: url(/report.png); } .icon-comment:not(:has(svg)), .icon-comments:not(:has(svg)) { background-image: url(/comment.png); } .icon-summary:not(:has(svg)) { background-image: url(/lightning.png); } .icon-server-authentication:not(:has(svg)) { background-image: url(/server_key.png); } .icon-issue:not(:has(svg)) { background-image: url(/ticket.png); } .icon-zoom-in:not(:has(svg)) { background-image: url(/zoom_in.png); } .icon-zoom-out:not(:has(svg)) { background-image: url(/zoom_out.png); } .icon-magnifier { background-image: url(/magnifier.png); } .icon-passwd:not(:has(svg)) { background-image: url(/textfield_key.png); } .icon-arrow-right, .icon-test:not(:has(svg)), .icon-sticky:not(:has(svg)) { background-image: url(/bullet_go.png); } .icon-email:not(:has(svg)) { background-image: url(/email.png); } .icon-email-disabled:not(:has(svg)) { background-image: url(/email_disabled.png); } .icon-email-add:not(:has(svg)) { background-image: url(/email_add.png); } .icon-ok:not(:has(svg)) { background-image: url(/true.png); } .icon-not-ok:not(svg) { background-image: url(/false.png); } .icon-link-break:not(:has(svg)) { background-image: url(/link_break.png); } .icon-list:not(:has(svg)) { background-image: url(/text_list_bullets.png); } .icon-close:not(:has(svg)) { background-image: url(/close.png); } .icon-close:hover:not(:has(svg)) { background-image: url(/close_hl.png); } .icon-settings:not(:has(svg)) { background-image: url(/changeset.png); } .icon-group:not(:has(svg)),.icon-groupnonmember:not(:has(svg)), .icon-groupanonymous:not(:has(svg)) { background-image: url(/group.png); } .icon-roles:not(:has(svg)) { background-image: url(/database_key.png); } .icon-issue-edit:not(:has(svg)) { background-image: url(/ticket_edit.png); } .icon-workflows:not(:has(svg)) { background-image: url(/ticket_go.png); } .icon-custom-fields:not(:has(svg)) { background-image: url(/textfield.png); } .icon-plugins:not(:has(svg)) { background-image: url(/plugin.png); } .icon-news:not(:has(svg)) { background-image: url(/news.png); } .icon-issue-closed:not(:has(svg)) { background-image: url(/ticket_checked.png); } .icon-issue-note:not(:has(svg)) { background-image: url(/ticket_note.png); } .icon-changeset:not(:has(svg)) { background-image: url(/changeset.png); } .icon-message:not(:has(svg)) { background-image: url(/message.png); } .icon-reply:not(:has(svg)) { background-image: url(/comments.png); } .icon-wiki-page:not(:has(svg)) { background-image: url(/wiki_edit.png); } .icon-document:not(:has(svg)) { background-image: url(/document.png); } .icon-add-bullet:not(:has(svg)) { background-image: url(/bullet_add.png); } .icon-shared:not(:has(svg)) { background-image: url(/link.png); } .icon-actions:not(:has(svg)) { background-image: url(/3_bullets.png); } .icon-sort-handle:not(:has(svg)) { background-image: url(/reorder.png); } .icon-expanded:not(:has(svg)) { background-image: url(/arrow_down.png); } .icon-collapsed:not(:has(svg)) { background-image: url(/arrow_right.png); } .icon-bookmark:not(:has(svg)) { background-image: url(/tag_blue_delete.png); } .icon-bookmark-off:not(:has(svg)) { background-image: url(/tag_blue_add.png); } .icon-bookmarked-project:not(:has(svg)) { background-image: url(/tag_blue.png); } .icon-sorted-asc:not(:has(svg)) { background-image: url(/arrow_down.png); } .icon-sorted-desc:not(:has(svg)) { background-image: url(/arrow_up.png); } .icon-toggle-plus:not(:has(svg)) { background-image: url(/bullet_toggle_plus.png) } .icon-toggle-minus:not(:has(svg)) { background-image: url(/bullet_toggle_minus.png) } .icon-clear-query:not(:has(svg)) { background-image: url(/close_hl.png); } .icon-import:not(:has(svg)) { background-image: url(/database_go.png); } .icon-file:not(:has(svg)) { background-image: url(/files/default.png); } .icon-file.text-plain:not(:has(svg)) { background-image: url(/files/text.png); } .icon-file.text-x-c:not(:has(svg)) { background-image: url(/files/c.png); } .icon-file.text-x-csharp:not(:has(svg)) { background-image: url(/files/csharp.png); } .icon-file.text-x-java:not(:has(svg)) { background-image: url(/files/java.png); } .icon-file.application-javascript:not(:has(svg)) { background-image: url(/files/js.png); } .icon-file.text-x-php:not(:has(svg)) { background-image: url(/files/php.png); } .icon-file.text-x-ruby:not(:has(svg)) { background-image: url(/files/ruby.png); } .icon-file.text-xml:not(:has(svg)) { background-image: url(/files/xml.png); } .icon-file.text-css:not(:has(svg)) { background-image: url(/files/css.png); } .icon-file.text-html:not(:has(svg)) { background-image: url(/files/html.png); } .icon-file.image-gif:not(:has(svg)) { background-image: url(/files/image.png); } .icon-file.image-jpeg:not(:has(svg)) { background-image: url(/files/image.png); } .icon-file.image-png:not(:has(svg)) { background-image: url(/files/image.png); } .icon-file.image-tiff:not(:has(svg)) { background-image: url(/files/image.png); } .icon-file.application-pdf:not(:has(svg)) { background-image: url(/files/pdf.png); } .icon-file.application-zip:not(:has(svg)) { background-image: url(/files/zip.png); } .icon-file.application-gzip:not(:has(svg)) { background-image: url(/files/zip.png); } .icon-copy-link:not(:has(svg)) { background-image: url(/copy_link.png); } .sort-handle.ajax-loading { background-image: url(/loading.gif); } tr.ui-sortable-helper { border:1px solid #e4e4e4; } .contextual>*:not(:first-child), .buttons>.icon:not(:first-child), .contextual .journal-actions>*:not(:first-child) { margin-left: 5px; } img.gravatar { vertical-align: middle; border-radius: 20%; } div.issue img.gravatar { float: left; margin: 0 12px 6px 0; } div.gravatar-with-child { position: relative; } div.gravatar-with-child > img.gravatar:nth-child(2) { position: absolute; top: 30px; left: 30px; border-radius: 20%; border: 2px solid rgba(255, 255, 255, 0.9); } h2 img.gravatar, h3 img.gravatar {margin-right: 4px;} h4 img.gravatar {margin: -2px 4px -4px 0;} td.username img.gravatar {margin: 0 0.5em 0 0; vertical-align: top;} #activity dt img.gravatar {margin: 0 1em 0 0;} /* Used on 12px Gravatar img tags without the icon background */ .icon-gravatar {float: left; margin-right: 4px;} #activity dt, .journal {clear: left;} h2 img { vertical-align:middle; } .hascontextmenu { cursor: context-menu; } .sample-data {border:1px solid #ccc; border-collapse:collapse; background-color:#fff; margin:0.5em;} .sample-data td {border:1px solid #ccc; padding: 2px 4px; font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace;} .sample-data tr:first-child td {font-weight:bold; text-align:center;} .ui-progressbar {position: relative;} #progress-label { position: absolute; left: 50%; top: 4px; font-weight: bold; color: #555; text-shadow: 1px 1px 0 #fff; } .repository-graph {width:75%; margin-bottom:2em;} img.filecontent.image {background-image: url(/transparent.png);} /* Custom JQuery styles */ .ui-autocomplete, .ui-menu { border-radius: 2px; border: 1px solid #ccc; } .ui-autocomplete .ui-menu-item > div, .ui-menu .ui-menu-item > div { padding: 4px 8px; max-width: 500px; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border-color: #759FCF; background: #759FCF; } .ui-widget-overlay { background: #000; opacity: 70%; } /* Custom tribute styles */ .tribute-container ul { background-color: #fff; border: 1px solid #ccc; border-radius: 2px; } .tribute-container li.highlight {background-color: #759FCF; color:#fff;} /************* Rouge styles *************/ /* generated by: pygmentize -f html -a .syntaxhl -S colorful */ .syntaxhl .hll { background-color: #ffffcc } .syntaxhl { background: #fafafa; } .syntaxhl .c { color: #888888 } /* Comment */ .syntaxhl .err { color: #FF0000; background-color: #FFAAAA } /* Error */ .syntaxhl .k { color: #008800; font-weight: bold } /* Keyword */ .syntaxhl .o { color: #333333 } /* Operator */ .syntaxhl .ch { color: #888888 } /* Comment.Hashbang */ .syntaxhl .cm { color: #888888 } /* Comment.Multiline */ .syntaxhl .cp { color: #557799 } /* Comment.Preproc */ .syntaxhl .cpf { color: #888888 } /* Comment.PreprocFile */ .syntaxhl .c1 { color: #888888 } /* Comment.Single */ .syntaxhl .cs { color: #cc0000; font-weight: bold } /* Comment.Special */ .syntaxhl .gd { color: #A00000 } /* Generic.Deleted */ .syntaxhl .ge { font-style: italic } /* Generic.Emph */ .syntaxhl .gr { color: #FF0000 } /* Generic.Error */ .syntaxhl .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .syntaxhl .gi { color: #00A000 } /* Generic.Inserted */ .syntaxhl .go { color: #888888 } /* Generic.Output */ .syntaxhl .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .syntaxhl .gs { font-weight: bold } /* Generic.Strong */ .syntaxhl .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .syntaxhl .gt { color: #0044DD } /* Generic.Traceback */ .syntaxhl .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .syntaxhl .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .syntaxhl .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .syntaxhl .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */ .syntaxhl .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .syntaxhl .kt { color: #333399; font-weight: bold } /* Keyword.Type */ .syntaxhl .m { color: #6600EE; font-weight: bold } /* Literal.Number */ .syntaxhl .s { background-color: #fff0f0 } /* Literal.String */ .syntaxhl .na { color: #0000CC } /* Name.Attribute */ .syntaxhl .nb { color: #007020 } /* Name.Builtin */ .syntaxhl .nc { color: #BB0066; font-weight: bold } /* Name.Class */ .syntaxhl .no { color: #003366; font-weight: bold } /* Name.Constant */ .syntaxhl .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .syntaxhl .ni { color: #880000; font-weight: bold } /* Name.Entity */ .syntaxhl .ne { color: #FF0000; font-weight: bold } /* Name.Exception */ .syntaxhl .nf { color: #0066BB; font-weight: bold } /* Name.Function */ .syntaxhl .nl { color: #997700; font-weight: bold } /* Name.Label */ .syntaxhl .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .syntaxhl .nt { color: #007700 } /* Name.Tag */ .syntaxhl .nv { color: #996633 } /* Name.Variable */ .syntaxhl .ow { color: #000000; font-weight: bold } /* Operator.Word */ .syntaxhl .w { color: #bbbbbb } /* Text.Whitespace */ .syntaxhl .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */ .syntaxhl .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */ .syntaxhl .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */ .syntaxhl .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .syntaxhl .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */ .syntaxhl .sa { background-color: #fff0f0 } /* Literal.String.Affix */ .syntaxhl .sb { background-color: #fff0f0 } /* Literal.String.Backtick */ .syntaxhl .sc { color: #0044DD } /* Literal.String.Char */ .syntaxhl .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */ .syntaxhl .sd { color: #DD4422 } /* Literal.String.Doc */ .syntaxhl .s2 { background-color: #fff0f0 } /* Literal.String.Double */ .syntaxhl .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */ .syntaxhl .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */ .syntaxhl .si { background-color: #eeeeee } /* Literal.String.Interpol */ .syntaxhl .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */ .syntaxhl .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */ .syntaxhl .s1 { background-color: #fff0f0 } /* Literal.String.Single */ .syntaxhl .ss { color: #AA6600 } /* Literal.String.Symbol */ .syntaxhl .bp { color: #007020 } /* Name.Builtin.Pseudo */ .syntaxhl .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */ .syntaxhl .vc { color: #336699 } /* Name.Variable.Class */ .syntaxhl .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */ .syntaxhl .vi { color: #3333BB } /* Name.Variable.Instance */ .syntaxhl .vm { color: #996633 } /* Name.Variable.Magic */ .syntaxhl .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ /***** Media print specific styles *****/ @media print { #top-menu, #header, #main-menu, #sidebar, #footer, .contextual, .other-formats { display:none; } #main { background: #fff; } #content { width: 99%; margin: 0; padding: 0; border: 0; background: #fff; overflow: visible !important;} #wiki_add_attachment { display:none; } .hide-when-print, .pagination ul.pages, .pagination .per-page { display: none !important; } .autoscroll {overflow-x: visible;} table.list {margin-top:0.5em;} table.list th, table.list td {border: 1px solid #aaa;} } /* Accessibility specific styles */ .hidden-for-sighted { position:absolute; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden; } img { image-orientation: from-image; } .filecontent-container { position: relative; margin-bottom: 20px; min-height: 200px; } .filecontent-container > .filecontent { position: absolute; max-height: 100%; max-width: 100%; } .filecontent.wiki { position: relative; padding: 1em; border: 1px solid #d0d7de; border-radius: 3px; box-shadow: 0 1px 2px rgba(0,0,0,0.05); } /* tablesort */ th[role=columnheader]:not(.no-sort) { cursor: pointer; } th[role=columnheader]:not(.no-sort):after { content: ''; float: right; margin-top: 7px; border-width: 0 4px 4px; border-style: solid; border-color: #404040 transparent; display: none; opacity: 0; -webkit-user-select: none; -moz-user-select: none; user-select: none; } th[aria-sort=ascending]:not(.no-sort):after { border-bottom: none; border-width: 4px 4px 0; } th[aria-sort]:not(.no-sort):after { display: inline; opacity: 0.4; } th[role=columnheader]:not(.no-sort):hover:after { display: inline; opacity: 1; } redmine-6.0.5/app/assets/stylesheets/context_menu.css000066400000000000000000000047201500112024600230170ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ #context-menu { position: absolute; z-index: 40; font-size: 0.9em;} #context-menu ul, #context-menu li, #context-menu a { margin:0; padding:0; border:0; } #context-menu ul { width:150px; border: 1px solid #ccc; background:white; list-style:none; padding:2px; border-radius:2px; } #context-menu li { position:relative; padding:1px; z-index:39; border:1px solid white; display: flex; } #context-menu li.folder ul { position:absolute; left:168px; /* IE6 */ top:-2px; max-height:300px; overflow:hidden; overflow-y: auto; } #context-menu li.folder>ul { left:148px; } #context-menu.reverse-y li.folder>ul, #context-menu li.folder.up>ul { top:auto; bottom:0; } #context-menu.reverse-x li.folder ul { left:auto; right:168px; /* IE6 */ } #context-menu.reverse-x li.folder>ul { right:148px; } #context-menu.reverse-y li.folder.down>ul { position:absolute; top:-2px; bottom: auto; max-height:300px; overflow:hidden; overflow-y: auto; } #context-menu a { text-decoration:none !important; padding: 2px 8px; } #context-menu li>a { flex-grow: 1; } #context-menu a.disabled, #context-menu a.disabled:hover {color: #aaa;} #context-menu li a.submenu:not(:has(+ span)) { padding-right:16px; background:url("/arrow_right.png") right no-repeat;} #context-menu li a.submenu { padding-left: 28px;} #context-menu li:hover { border:1px solid #628db6; background-color:#eef5fd; border-radius:3px; } #context-menu a:hover {color:#2A5685;} #context-menu li.folder ul li a:not(.icon) { padding-left: 28px; } #context-menu li.folder:hover { z-index:40; } #context-menu ul ul, #context-menu li:hover ul ul { display:none; } #context-menu li:hover ul, #context-menu li:hover li:hover ul { display:block; } /* selected element */ .context-menu-selection { background-color:#507AAA !important; color:#f8f8f8 !important; } .context-menu-selection a, .context-menu-selection a:hover { color:#f8f8f8 !important; } .context-menu-selection:hover { background-color:#507AAA !important; color:#f8f8f8 !important; } .context-menu-selection svg.icon-svg { stroke: #fff !important; } div#gantt_area .context-menu-selection { background-color: rgba(80, 122, 170, 0.48) !important; } div#gantt_area .context-menu-selection:hover { background-color: rgba(80, 122, 170, 0.48) !important; } div#gantt_area .context-menu-selection a { color: #169 !important; } redmine-6.0.5/app/assets/stylesheets/context_menu_rtl.css000066400000000000000000000007721500112024600237030ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ #context-menu li.folder ul { left:auto; right:168px; } #context-menu li.folder>ul { left:auto; right:148px; } #context-menu li a.submenu:not(:has(+ span)) { background:url("/arrow_left.png") left no-repeat; } #context-menu li.folder ul li a:not(.icon) {padding-right: 28px;} #context-menu li a.submenu { padding-right: 28px; padding-left: 0; } redmine-6.0.5/app/assets/stylesheets/jquery/000077500000000000000000000000001500112024600211115ustar00rootroot00000000000000redmine-6.0.5/app/assets/stylesheets/jquery/images/000077500000000000000000000000001500112024600223565ustar00rootroot00000000000000redmine-6.0.5/app/assets/stylesheets/jquery/images/ui-icons_444444_256x240.png000066400000000000000000000157461500112024600264700ustar00rootroot00000000000000‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDDÛ<¦»tIMEæ3/#•IDATxÚíkŒ%GuÇm;±ñÚ!Ä^ìõ®°l0Ù[HXĹ“H›ò:w8;„§ÈÎàÌøƒg1s‡Äø£]Ë&ÈÒ<²ë±¥øÆ™°ÌìòŒClfqØ…!,"á·êWu׫»ï{çvýGwnß>UÕUuN=ºÎ©SÁïáÑdœ5è x ^/2Ú„´‰Í„€,Ú¬+M^ ÀàÛO›°rÌ`:ˆS|{YÌ`˜ü™`k?úøaôô¶6ŒíÙ1«•@°5SÊ#ÔGd à¾)ÄqãvXuâB@À*°J@`H¹N‡A²1n:„P¨ž,D:A¥øq+Ó=ßöì°fÞ]S¶•q !íÌ +LmÐ>|ˆ§›XhN¥^Û4 AÙ”ëõ3C† ôJ ¹™Ú`Z©UÛŽ=sÛ4çÝܦ)Ûú™-…ò`F8ðªi³RYÀÌCPœòàËØCôZ¶:Ú¬Œ{íðÐpø•À†Ã @Ãá áðÐpxh8¼4^o;èüo2ÊØ¸YØ”1m£=€ù vöÔ±°«ÃEÞGJHÊÙ¸iÀÌU¨gÐ>͵kÚ6öÛR_É}ëSk€¢=€€~5<eÒ·éé¶Ø.ö¦Ü™ŸnoF¥d{ÕµŒU§^@ÆÞ>]ìLíÏ-ozñ ­Öež´%PEdR¸»=€I¸lýO\r¯6`ð•S×`ÐùßdxupÃá‚/ ‡€†Ã @Ãá áðÐpxh8Ît†áWù믕–Îÿ9õ¢÷¥™ƒÐšƒêª {Ì”\B0êú]ü„(eQõ¶ü ÖÆTìÂQ5¶[ \B•ˆ{–ÀVüÀ¡úøC¹!4({\òhòw¹gÄ{ ˜Kh ÐlXÊvp-¾ÎZÇ^IA:øÐ¨‰´¢ur&±%5ûtÕSâæ¥ÏCh ›ÓNKgnÙ\Pv:´[(é¬ÖÆÝ˜8¤nbKºUkÀÔ]Ò¶×A^æ50íâ\B©iæ.Ð.Áæ4l]¬[mkA¶§»L"«Â.âvº”ƒ2=€[×Yo–8ö2ýÊc`ì`ÝÒ ÂT…y˜6€Ê¸çh ƒÎÁV~~…¸~%°áðÐpxh8¼4^/ ‡€†CÞ;KìþÀû —pшV‹gÛíú”RH Þåâî½ZôÕÒ²åÜ­L®fSm\»tl¡§ŒÿôehW®0—K@½9Ô¼…ÓE£ÝVÜëèÒrs ¡Ï¿[ èžÑÎm¯m—Š–ÀÖÕÛš^Ø +o sq§nÛ‚­Û êfIcÏ.» w{ÎÝÒ«5EÖ9ºmcyÊÕþÄPJÙ¬0Ö)¬ƒb˜²à^A‰¸n90W¡Ëóí{ûõϷŶ €½Ì ´ €Y€4Pî- ­€**‹ “†:õPú6=¿ Ò|WC˜ž¾/¢Æ#¸Úƒ€éùqLõÀ–rê»Á´¿9ŸË’ö¦ '0¦â›3g*¢)lÑìf_*ØÐT‚Õœ‰ÕÒ)¸ÁÄÞÕ䨷\Rvp3§ ­."Ì£`ØnÕ«.‡Û\ߤ͔NõCmìs%¼€,ÚÖ“F^¿Üpxh8¼4^/ ‡€^cêì ÈÛØ`ÒW¹½]SßÝoÔÏ]`Yì²²íL0iÌ]V cÝ>‡ ¦zÔÝ\eÞX·¿Ú¬‹oJ}@H‚²Ù²{û-.6f·FV;ýÛu¡L;[ì@.{W§í4m ¨î%ݨç:£³¾*ª-ˆ–c7›Òû0qÕõ%«z¾}góP"^@Z…eOàÎ!A‰¸1Õm ´}óvu&6Úz÷”M>6iUVÉší$»²µîèdzu!«Bô¦«ž ÷CÂ~yXM2¥êÀE/̽ÔX5Ú¸hûíî!ÌHmÔ&æªO!½w‘8dP’š QÕ ¦/PkCmî¢,ÕM{¡lu³Z¬:Ñt™DæºÀ«ƒe M×¼Yð+2Æ~/‡€†Ã @Ãá áðÐp Ÿ´†K[6êÈ €›.Û¤² ¨º-º›ò*6h?Cƒrîâ]ÜILÔÈO—XHZÆpU]Ö§¡Àë@ó*µyµ;nÕ-ºJ“…RõÞ=ÑõO$!ºšøñU5§êÙÞÇí¨ùG*²»÷"R}¸Îez@±Mù,s×.ºþ5& {gã§«Ÿ/[äSqsÑ8ľ‚Ó*3{¼¶i²böWÇל\9ë´õ:‹€ØZ!¥Ððu5 rÿUЛ2¸DèÊbzÜèL2Ô9´¹O[ÿˆ_©·ðl•éŒØO½p=VBG"æ±"Xí•_ÎO¯ÜÊ7eÞÒ*ÖÙäÙŽd2Ñ'j óˆ ótÕ@d¶'’ÝGx$Ï °Yª™Ì.ëžd±–¤íò8Þ‹±ŠŸõ+1l!¡ö£/¶“C}÷¼É>]€Ç¦Â @Ãá áðÐpŒ’Ì&+ ³}Iÿ2Æ¢¿Ë]ÔÞAÀ¡¨â68T9¥G-š~Bž¬Ê2q–ùäz^{¶–x\ÆS\Ë:ë\ËSJ˜µæ~Dݯy†žn‹ ÷æþÌOH¸$ÖBâIà|¦2ÓW²CÉýÃܨI:]$:Ê^Ã΢bêK<™a!,ó&©rçsáç8X‚.çP•»ý–~Oqô{ŒkY`Xg†G8®­õ3\œIëOþ´Š-B¤5o+c²ä À"Ÿ“‚¯e/ ÈIviª÷((E d<¹^Wñ«\•ù- €ÐL&´ü±9Iæ˜×îßÕ)³Æ¥ßùޱÎ8;€—ñ!Æ5p €UÜa/iΔl³äE<€t!(f}7 “À ~̧ Ù‹¾÷jCl3Ä^æIIò8,mÿ>,õU!9æz„´õ¹Ç’ëk”yØÁE<ßË¿4ÐÌ= Y(R)'b1ûÿ†do§+]K'øq!Œœ…Fº¼PaÏ#ð«†ô'ùªñù“ªŒóxAR(vþ­Üw1w×s:Ã?q'ðnf”ñOOg®‹˜c>ùl.bößÇódp] V±?pÏiC\ ™ Øz€Xà0kàä]ûÎc®Þ¦ ^BXfè°§0ä5©U·™Ú½$ØB|‚·î öåyÀ;¢A¿„. Èþ|/°¦ñKÉÕxfëಈñsO)è³<Å!àqf5}€¿Ì»“«<ÚìâAö3œMÈ Ï7”ÌqPɤ]™cØ` ñ…LqØËÑhµÈ´ TWåûùÖ8wFßã š­L" z ›•èª^`Gî[UE0ƒhçò³‹ȼ,h†ù]üzÍj›Ž{ Ȱß$s™ëb§SdÿçøéWæ.ÑÜÌ)^óÊÐ!¢Òï|Ý„üó…W@!ù;\él“<¸!ó)b9yËåŠ!ôˆE@bÿ0ÙÌ/Íü~²R7^!(ØßËÔ£öÞÏa™ýÃ$Á(é<*À @Ãá áðÐpx-<–Ñg8A€–ÃÆl=\NÞtìR£>—ÑeßòJyˆ#9úÅs³Úòý} |ÞR?ÜúB¼6ú3c‰%–âÙ×À]æ€y…mþoˆV å^Ì”Rû4{£¼˜«rÊZp÷uûrø9n‰îŠÔnVèûŽ&¿öâ»êãÅ ßB_èq˜X’ÔÝ0A˜ ›_§E8Êõa/(÷O|ŸÀ3\j¨Ý¥h1i™Ïq_Vû…6­(!û,ÞÀmk…b?á'y#Ÿä<ÄMÍrCLtzé‘«êÃW]Žoÿ/.á‡\Ä3ìÐl>¡CHÀ4 Z:` ™3lãw”ô¸ú—É’5S&êö,ýHA ”ëÏ?ÄËÜO7¶·ÈªƒãåÔyæ*9jÉnéRkoá{lp‚S¬óeˆYæÙÁ<Ó‡uÀ§¹˜ïr!ßå¾§ %ÖÒgŒtdº„3תkâÖ7©¤NHµ¦Û §¶¶ø5‡;œÇ›h±– ÀÒjúÃïóy^«0.›ežÃLõ…ýðbþ•ßä?ø ¾Á[*•w±±Ô´"~L ômŒi _–$Æç×ò;HÒ[d•OQãþ…Wg~QaÒòv`'°‡Œ½U,WSˆïƒ}aÁ-|ÿæKœâKl¨1ûçŒÏ úð‰Ä=ªú6/å[ü:ßâ·ÒIP‚6wëû§ÊŸ”~6?7ÐÓ9€ŒtìøBɺ›È•)ßC¼Fª•×hŸŸk ÙI`ÜzÕ6iãìçFÞ™s¥3”âGØ¢ÙfP ›ØŸw¡#cXSÒßΙá6Þχù;>*Ñ' "!«„êÒSöç§~)Z¹!`Í@×QŸA¨»óô%&£±?gËé.n^ú[ÄCAÙ9„`°¾õÇo1To‰‹µ€È(¾§|€¿5æ®= 4²ß>NE@õpï宎p·ó~‰ºÄ$ñS&óqóN¢Òwù²8JHH—.ad¬/¢.uSç?ÏÍ™_7ú“)DÇßÊ0¥ ›~Ã>-ûêÓ—­ìFZ¢cŸ 1Ù’°Æh6ÐÿŒGóþëù8?S„ØÃ$Ëù¸®êàéËeГ?wˆ!ª ‚Þ á𺀆à @Ãá áðÐp4O„ÚXõNÓIT¹ïrHç<åÝ¡;Þ†¬L'Pý5¤º€ºh&ÛµŽk­>½ÿ(ˆÀG8À=ÜÃ;xwòÞBLQ;F¿Î΋þnâc„ÜÂ-„|Œ› ñÍî+òÖ y{†"Ý¢èéA¦GH_§Yà$oåÜDíYLÄvÊ6ôËê}‰Ifè0Í‚bQE<ùcg·&ñ‚ì ÜKq¥ð•Éõ¾­X =ÁW˜b†N”޼nW‡Ç«÷]¥"Ù¼öªrŸÙÍ…C™y…ËωLŒDªƒ¢UâãœË³…}/ÀI`+™& p‚ÝÀî„ý')\}«·§>Å/òà|þOIÿ 72Å ~ù~òêhý2Dµê9Ë|²«PÕ„Öx0cEQìá„^™¹.âOù9ßod‡€‡ãìæŸ(]4÷#eL±•T¡g›Ì\g1±ý8bGnSyÑËAÖRJm5¥ðŒPV8È×@3Zt“ŽÿûìÈiÍÕónuîÕùó‹gùcÖ"ÃŒmü4w•çIVµµ$û¼ý!ó‘IÞÿœëc)ìd—}ùE‡~Jÿ^œÅþø¦/qwGbÕâ¯*ˆX*ÈšÅÙÅqSà áhž.ÀC‚€†Ã @Ñ€CZáwñµd‘ökÜ5èŒ{ôòRð¿q9ðZ®(„û”´>þ ^ÁÞ0èÌ{ÔG¶¸ƒË¸œ;r¡îJØŸ®Ð½^Ù œ"ŒÙ¼¤›'5 ´…Xb’;çm °ùHHôb…~Ä·•ß–süÓÒÆ4]|=› u©K"ï*Ví ÚæJ6Ýý»ìC½;¸nú.ñíé«Üa»ÆPo0 Kü3©éGØ«­¿øî¹•žìÐRm Ë3OGC£q·8çÓ 5÷ÍéÛ ÷@¶ØVä\R×åÏ%ý³gëŒ9¸‰[3ìï ΩŸDÏeþ—GhíÌè ƒõ Àž{\›šìí&>̇é)û{?,o¢úP¿‹×篘Bµ.Ü”¾)ÅóÊÑ…dÙ߃!@Lmç¸ÑW€I&£«,={v¨¸{…~Ä·•ß–Sü¼óª²t@êüÕ¥. ±°Æ¼,GYÍœìS—þ0¿]8ŒòÓ¼eÓèý.ß é5 þ‘çq—Fw±Ì_HáêÒÿrnbó÷uȰg3èý.ß é•á B¯ l8¼4^/ ‡€†Ã @ÑUÙNçvºGÈÚÀñäj]º.ÝcèPê±nÝšB½–ÔNÁCB^l \gÝHÝ3è`c Î—wŒ°¢®ßCƒ¼Œƒ‘ãŒéÂC‡!fƒ Ó/`7¨ð(‰â0^!9¶9…zí×&@%¡?2føfùþ- (s^À°Ó=*À/5^/ ‡€†Ã @Ãá áغÐö B½€,õ×ÙBf ™í{¾Û¬H <*B€}ÑgаµnÁþÕAgs À ñ¾¾AÂÖº=û{× ¤]ø”CXøSC°W/†1ûý '-‚VXeEÙ¶`5÷)7÷í1û÷é«~Ð+È`êö%¬‰?å„`¾p§x¤K;“¾*u™ý~èä½õ½‡Ì1¯<¯§øf“e¿*žý}€kPö#œÊ±¿­ çQ Ãô°}ŠP±ßÏzyh³J{(;×0êôóß5áý4[WàÑü?kÁ§å‚*É%tEXtdate:create2022-07-14T20:49:43+00:00#e+%tEXtdate:modify1985-10-26T08:15:00+00:00"ÌS(tEXtdate:timestamp2022-07-14T20:51:07+00:00§qÁtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚redmine-6.0.5/app/assets/stylesheets/jquery/images/ui-icons_555555_256x240.png000066400000000000000000000157261500112024600264740ustar00rootroot00000000000000‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDU±Œ†ItIMEæ3/#…IDATxÚí{Œ$G}Ç?m;±ñÙ!Ä>ìó°l˜Ü®­ˆG$,äÌ&Ò%€|ÎÜ¢çÖð¹]œ]ÿá=ÌÎ’?ptgÙYÚGî ¶ÏbŒ‘ 'ÀìÏ8$Áf‡;ø#„ãÈA¸óG¿ªºëÕÝ3;³Óõ=íÍLÿªªëñíªêúýêWÁ^<šŒ³Á áðÑ&¤=èLl&<D´YVšD^`ðÏO›°rÌ`: $)¾Œ=„Ls¦ÿL°=?úøa|÷¶6ŒíÞI#V+AÔü«1L)P! à¾)$q“ç°<êÄ…€€U`•€Àr2‚t )bòèB¡zDDé•â'O™îþ¶{‡5óîš²­Œ[Y`î]azíÃGtwSšS©÷lš† 1åzýÌ!(½h~ŠLÏ`V©UŸ{ ægÓœws˜¥lëg¶ÊÀŒpàUÓf¥2ÁÌCP’òàËØCôš[mVF©yíðh8üJ`Ãá Ðpx4ž ‡'@Ãá Ðpx4Þ wÐùßd”±p³°)cÚF{óìÍSÇÀ®ò>R$)gà¦3W¡¾öi¾»¦mk~[ê+¹O}ê#c P´ˆ _ OB™ômz¹-¶‹=€)wæ»Ûã›Æi'Ÿ#Ù@õ]ƪS/ c>]ìLÏŸ[Þôô ­Öeî´%PEdR¸»=€‰\¶þ')¹W0øÊ©k0èüo2¼:¸áð A ‡'@Ãá Ðpx4ž ‡'@Ãá Ðpœ3è ®ò×_+-ÿsêEïK% 2¡5ÕUAö˜(¹<„`Ôõ»ø+HÊ¢ê=lùš>0¦b'GÕØn%p U"îYR[ñ‡èãäR„РìqÉ_`ÉŸåî‘Hì5`.¡™@¡%6Øb)ÿâàZ|µŽ½’‚tð¡QiEëä LcJ©xwÕ]’ÇKŸ‡Ð 7§•Îüˆ¹  ì$0txzl¡\ØYíwkÜÀ!uS¹¤[µL KÚö:(È˼f]œK(µÌÜÚlNÃÖźuѶ'Èvw—IdUØ)n—K9(Ó¸uõf¹c/Ó¯<ÆÖ-ÝÀ!LU˜‡ió¨Œ{Ž&Ðà0èlåûWˆëWO€†Ã áðh8<O€†Ã á7‡&ÎR»?ð~Â¥\4¢ÕâÙöF»Þ¥2$£\ܽW«€Þ¡ZZ¶œ»Õ€ÉÕl¦k—Žé)“ú2´+×@˜Ë% ÞjÞÂé¢Ñn+®õŽº´Ü\CèóïVº{´sÛkÛ¥bg%°õ@õ¶¦6èÊ[Ã\ܩ۶`ë6ˆºYÒØs KÇîÂÝžs7‡ôjA±iƒœÜ¶±~@¦Ë«¶: S×Eµûº…¨ãã£È * «pØv’€]ÙZwt „DÝCÈŸª½yŠUw{¡é'Ä!`5Í”ª:øÈÜKU£=€‹¶ßîÂŒÌ@mRa®úlÒ{IB%¥bˆª5}Z¨›Æ€‹²T7 ì…²ÕÍj±êDÓe‰![ð0¯–14]ófÁ¯ÊhXó{4ž ‡'@Ãá Ðpx4ÃG€Ö°,’6y¸é²M*›ÐIª Ñ¢»)¯bƒöƒ04(ç.ÞM3Q#?]’´Œáªº¬Ï0B'€×Ló*µyµ;yª[t•Ó…RõÞ½¨ëŸHCt5ñ“oÕœª‹½Oyå"#€ìL®s™ÄÍ¿¦¼—¹kºþ5& {g“»«ï/[äSqsÑ8$¾‚³*3{¼¶i²’æ¯>ޝ9¹rVïþ×;UOŒÙ2ù_ ’ª5™Lxh‚õDÑõòÝóyB(æpEºw@ö€ê‘y «Lï`Ä~ê…ë±:yD°0HÁj¯ür~zåV¾(óU±Î&Ïv$“I>‘J»@PèáîªÈlO$»ðH!Ÿ`;pÄdvY÷$‹µ4m—×ÈÀñZ‚Uü¬_‰a31Ïà 2Z³õp9yÓ ³Júœ Ë.¾å"”þå-ŽääG÷µåûû ø‚¥~:¹õ…2x]üÏŒ%–XJ~ˆ¯-ºÌó Ûü Þ¯@=Ê#¼˜)¥:÷iöGy1W唵àþî›èöåðsÜ_R»Y¡ï;šþÚ[ˆïªVøú"OÂÀ’¤îèp€ ºÀÝüû:-ºÀQ®ç{A¹âìžáRCí.Å‹IË|žûDDÍiÓŠÙ—ÛYSöôðh?á§xŸâM<ÄMÍrCLtzâÖOÕ\Žoÿ/.áG\Ä3ìÐø8˜¡CHÀ4 Z9`…3lãw•ò¤ú—É’5˜H¦êvQ~¤ „?ÊõŠûbŠeî§›Ø[ˆêàd9už¹JŽZÄ-]jÍá-|Ÿ NpŠu~¨ 1Ë<;¸‘gú°ø4ó=.ä{\Â÷µ¡¢µô£Y§.á ǵêšäé›TJ'¤ZÓmS¯Üý†Ã€?Îã-´XËð„´š>ÏOhÕ¦:¬asæ|3±‡Ïòû|×)ŒËf™ç0S}i~x1ÿÊoóüßäm •Ê»ÄXjZ?‘ù6Æ4†/KRÃç×ò;HÓ¶È.*ï¢Æ5ü ¯~IaÒò`'°ÁÞ*!ÀÕ$ÆÑçÁ¾4Á-|ŸÿæËœâËl¤IóÏïôá©{Uô^Ê·ùM¾Í˲IPŠ6w’èû§ÊŸL~6¿0ȳ9€ŒlìðÅ’u7‘+S¾‡x­T+¯ÕÞ?÷€Š“ÀäéUÛ¤³ŸyGlÎQdg(Å-ްE³Í  75¿|^Q1!Ö”òwð!f¸ðþŽIòÉ%d•P]yÖüù©_†VnX3ÈuÒgˆÔÝyù“ñØŸ³åt'€›—þÉPPv5°þéOÞ¨Þ&R5j‚È(¾§|¿5殎< 46¿}Q@õpï㮎p·óIºÄ$ñ3&óqóN¢²wù²8JHH—.al¬/¢.uSç?Ïͯ› ýÉQÇßË0¥›~Ã>móÕ—/[›?2ÒŠ:ö R“- kL€fýÏùD<￞OðsEˆ=L²œëªž®±<áQ(1ùsG4D(èí¯ h8<O€†Ã áh"µ±ê¦“ªrßíÎyÊ«Cw<¼ "¦Ó ¨þRÝ?@]´ÓíZǵV Ÿ‹ßÿ(ðQp÷ðNÞɼ¯3ªã_ççÅÿ"ÜÄÇ ¹…[ù87â›ÝWä­òö E¹-DÑÓƒ,‘½N³ÀIÞÆ¹©Ú³˜ˆí”mè—Õû“ÌÐašÅ¢JtçŒqœÝš\$ ²7p/Å•ÂW¥ßÏðÅZè ¾Ê3tâtäåp»:YºhîGʘb+;©‘žmRø.b,nò¤ù‹:ù¯7æáù)?å é1¦vÜüÅeÝqáŸóšïQþçyÆg\iQÐbpˆH±[„ÙÝw@—v°‹K¹4³’÷FÍ?¦ôæ¾USö˜²hC'~úaYÙ? O¿ªù»’ÍC~­ý;œá+Ä à;Ñéô¶q¦t™2\’~>ü‘"Ä_‘cŠHï'#$£Uññ™~ü‚³ÙÁ­<]Îæ!Ïrn\uì¬`ò…1„›Á“颖^5GùFÜýAÑ.Nn~UNó'¯»¹ÏpwÁ"×ÑàqFégBµócü Òõû sQY|‚•žÜ±ÆRV»Ù0ù<ËW9Ä;]læh]ír]¼ª äþ™¥ª;,Ä—}‘44ìÈF9 3x[d‚@ùüvx€Ýñ¿bóÃ'xx”h¦QÄŸå œÇ¹Js¬9‹ƒ ¸€{¹€_‹ÿ7c·âZ2¸õµ‹³ÙÅ.v7%!²! òu‚3C8Œ6GÏÐá›,(6GGÍÿ c±mlÞ @Ôü¦‰Û­\Ç+šà¦ Yç£tÙ­µü{H“úAÁiÄþÂþãÃñæúìÿù;r›Ê‹^DK)µÕ”Â3BYmà _ÍhÑM;þ°#§5WϻչWç?š_<˳flãg¹¸«ü;O²ª­¥ Ý/p¸à…ì™Mòæøç\sHa¿ »ìˇ(:ôSú/ðê`{økàÚ§x‰ó¸;¦U‹c¼º@1*ˆfqv:n <Žæé<$x4ž Gž‡´þÂïâëé"í×¹kÐ÷è ä¥àãràu\Q÷ii}ü•¼’¼qЙ÷¨±¸ƒË¸œ;r¡îJ›?[¡{ƒ²8E{ÌVáâľÌ4Œ Q§EÕ©úÉ D´€ &(ª_­Œ«ºº=þSãüøó€%W…Á,Å•¿¤g a“‡œJÍ5ŠMü"Í÷-ŒÑó¿ÆÅ> [ôÕ´v¯¶yç‚FûdóÈ67NjÐb‰Iî`œ;´)Àvæc’èi¾œF/šX/ Û¯·(Ô“À“,¬zô8ÉbÚü‹B,ÆWw±ÈI‡t°ÅߌDÓG( j‚ò:¹$^‹  gnL°È-¦µèvçéÊ$0ùˆ¤‹Æ¸¢44„ÝR‡ÝØŸ…П(0ü0wò²¹Jyé–„¸1Ä^°À9ä0Â%×Ó˜ŒÖÍÒ- ¯n8üJ`Ãá Ðpx4ž ‡'@Ñ'€iï­Ç"#@‹Ïp!o×øÚôlŸÓH=¶$´è¦îG/§«lä9Æëé:,ç²GržÀl²ÜCƒd!è8»ù2¯"äs\K¨t‡¡Å=ì´:“-º*Îÿ–%ö[î¡AD€]~ÌEÀ#gšq¡boœànîcƒšL£p*_Õã±;õmœa[ÁŸvÈ5<Æ5‚Ãuµü±Ô¿J>Îzü‡Â_·‡‘.àjà[\ À·x=Wx†+™ä^`?]Þ¥%€W°³{#ç2Û9 xNñvrqüwðœ"ýíÀKbùKüÛ+"<¼B¸úŠøšŒp?]nf'Ø£LOo&q¡ôëc±gû Ûy¿@‹¢üBÞÿ™âGa¶+äJ$s€ v¦›¦—˜T:q‰”À‡˜â®fJë[5AÖ:åíú-÷Ð !@tÆù¯àBÔ'dÖ‹Àå9WáhL>Äcãþ,öô]þ~Tl^=lðö ‡Ÿ-7ž ‡'@Ãá Ðpd°PW¾À—Rù—çþõ[Þïò Z^É[À§ çå~F: ®Üæf®ßò~—oÐòÊ8ûewñ–‚ä ^ÈÃñ÷ºòÛøó‚ü土jú-ïwù-¯hÈ<ÿ‹Û¦^­ø&"/_M–]ÕÆ ñméçSèG|[ùmù7Ç?-mLÓÅ7ÉÅ\¨K]yW±jgÐ6W²Ùîß`êÝÁuÓw‰oO_åÛ5~€zƒYXâw(¤R”`¯¶þ’«âVz²CKµ5,_̼<ŒÇÝâxœO'Ô\7§o/pÒÙbZʹ¤®ËŸKú!fÏ×sp· ÍßœS? Ï ÿ—GhíÌèMë{þíqmj² ²›ø¡§Íßû!` x3Õ‡€ú]¼>Ūuá¦ôMù+ž¿PNQ@lþ Ñ$Ðv€›|˜d2þ&ÊÅ“°CÅÕã‚Ô&Ç(G)—ó®~E’ØäUë')_XY~«Ôüê»–DD€cRS|‘—·Ó lk㇆ø¶ôó)ô#¾­ü¶ü›âçW••Rç¯.uIDëk\ÁËs’UádŸºò‡ùÂa”Ÿá­›&ïwù-¯ˆð<³¸4¾zŒeþB WWþ¼sS›¿oð€Ð<›!ïwù-¯ oÒpxm`Ãá Ðpx4ž ‡'@Ãá ÐpˆÊ Ûé¼Ã.÷¨Y8ž~[W†®+÷:‡€zM·nM¡Þ“ÔNÁCBž¶\gÝ(OÜ3è`k@/ïaE]¿‡yŒƒ±Ç7Ê#z„˜ &L¾€Ý Â£$ŠCÀx…T䨿ê=¿6y”„þȘá›åû·€> ÌyÃ.÷¨¿Ôpx4ž ‡'@Ãá Ðpx4[—m¿ Ô È¨¿Î2KÈlßóÝfEráQ2öцí鎚uÐÙÈX!Ù×7HØžnßü=„kÒ.ü•CXø§FÔ¼z&Íïç=l´Â*+Êg+Vsåàæ¾=iþ}FùªŸô 2L=À¾´i’¿r$˜/\)éÒÒW¥.7¿z€aêÄæ´rßü=…kPö#œÊ5[Σ†é- `5þ+BÕü~ÐÈÛÃÛ¬ÒÊÎ5Œ;ýü§GMxÿ ÇÖÕxôÿ˜}œJíÛ¶è%tEXtdate:create2022-07-14T20:49:43+00:00#e+%tEXtdate:modify1985-10-26T08:15:00+00:00"ÌS(tEXtdate:timestamp2022-07-14T20:51:07+00:00§qÁtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚redmine-6.0.5/app/assets/stylesheets/jquery/images/ui-icons_777620_256x240.png000066400000000000000000000110761500112024600264650ustar00rootroot00000000000000‰PNG  IHDRðØIJùgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<PLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv aþ­(ZtRNSXG|"2˜á½Ëwfœ²‰ª¥ZNzç@e…S‹F‘”caM hm›s¿}À¼ã­åéäŽ]ßÝà¹ÖÛÒÄÕÔ×bÚpþ Ιiø8*ÅyÑ§È“ÐØ¯ð͈°»Ç«ã‹Ê„bKGDˆHtIMEæ3/#kIDATxÚí] cÛ¶ÉHªé˜’¹K›8n½&s6/É^]×umÔ¦kã:©»¤ëzÿÿ‡ à ‡;<ÄR¦hŸlÉG€îã¼@Yˆˆˆˆ dÛMزþ0rz7/¿þ f@e–b `@Ûc¤«Ô`€§r~ùç &A-Ðöéô 2èé¼–9Ö~» žtΠ ¹ý¥Û2'ÞL³`ÞDz¹…x¯0·O†·;)¬‰>ØÙÀLÄS:1ÁáÇ€5ø¸Ô»íBÃß¶Ž›îEDDDDDDŒ—î nÙJX´ÔyOè4»à'¬ß|›’¥J‰¥Œ–f7ÃÅ„U@ ðD—ªô!ƒ!Ö~{‹=É–•ÄsºLBIÀ`ÓÜ‚…Ífhmù€Ä,Í×£¶mV$ž÷Ÿà=d«c@×ý.±=ôsüƒ®i°üÞGÏ€/§B‡Ü½ÛÇ·°Jÿ®IžÅ<\iö ¼ °¤úë·•à#ˆ¥³Â˜¼: ‰àHleå‘À•¸Fý<\†|ü„O÷d1¬s“9+3;-ÐËŸ5‡×„¼HØ,„0n9Ýo¢áº¨ìã–=DàO”H./H Ö:ݩ۾ \òùáÛdDDDDDDÄMEÿm©=݌IJÝ]¤Í .UªïÖ€µ*ðÇólmÕÒ”.ðâÔ^ÊìNÀº¼ÏÉŠt×o‰o©¾²ÁzQ?/OòÖZ6»'^{Ã…ÕÌ| xùK,Ó=é#œmÂáæ[;'ÄÂaK4ÎÙk4Àžje˜”NÏ·Ø€ûtFkož™N»X˜{œ—p­d0» °®­ózç`]€t‘`°÷òÄ™ƒ1ìÝÀóX L˜¶B € ‚$• K¡Z¿åù“í­p¸Nð°žyÜóÛ~>&"""""bԸܻ8wTÈ£²–36ëX„‹ƒnÙ;êüŽþ¬g`ÖÖZ/'ÓÌàÙÊŽá«;€í7}ÇjmÒótxÀÕ·d¦°0¢O/!`/³/îç»Ë$Ï÷Øæ3ÌõjÖ^_pМ ®Ó7N@nºH,á0oº'žâé¶Õi ©àÏ ¤ ±´…»€M¼}ØRñîY±@»ÄÆÃ;=¨©É™Ï÷[Ò‰`ëö˜ÆO€áýaÎè°è”<1ˆ^C›€Bóþù£kˆë®_DDDDÄõFzÅod·|ËUÔþ5úi)ÀºÌbz_ip5RR¨WbT‹!lë²@ñŠR5…Cf|—Be:¿°.3ÇÒm€G/t{½Ô߈Π "Áˆg©ˆõM`\X–ß9A)‘)øSXb7t,i»ØXºÀÀò›;6*‚@÷+4tF¦#Hë Mª­„Ž– 2£1Ý&CÂŽ!åOí å/…¿+³œŽn‰Þ}HFH@_tÑ?""""âf!S~B¶~þ[‰[Cµn*7›úr¼ðÜ`§r•\*f49óóqK乸E @gìJqW8dš(n× '4*Á^QL‘³WþmRºEs¾û¹µ† Cß¶ÅTf+[»uzÓêI“ 䣂t¯­U¨Ìm5¶AZQiBÈÌ 1ÊD'ºÆƒYô¾DëJCc®õîª8]à&ï¾{0ËåÒÿ†Àˆ» TG$! &¤j Iø‚Ë` èCU\€h´ø <ý@ðî{»¿1¸{÷.Ûï–ÉJ€Òÿ}L€iR õ7m >HÕ UxWÁiûJu˜îëy€¬´ÿ–U>šb«ŠÓÊ.pïîK!/|oOÈÊׯ$@éûþûnr@I’ý…0pxxè`_2 õÇ”?-å ˆx Î~ð 9pT ‚GDt'€=¢!âù‰ùâ¶|/\РᣨÂããcÐ&Ê, ÛŸNå›î¥ì&à¸B} Éá½<¿9~Fu!yà·å ë;¡L`XÀ\ëï! -îãÄä&-Ô²ýÍ%b2¨1v FŸÌóö.7õçN à„ºN¯ÆÀ¢ÍÜ™õµÅU~¼# º Ví™›s0™¾uW80è-põü% d ›C–-Jtðõ‡¦ëν¦•v7ªDDDDÄÈñð¡?=ï¼6€më#A¦ÃÝGåmêQ#ÖÁvcÏkyÞž[¹&»kËBüŽ´§ðÞ×d´u@ÉÛ6Ö?Ë43åEžäSìÈ&ÏwZGÎJE¦?ª]ñ†y²Yi2=›\¹‚kËÕõh5(”3—¶÷öTq;Ç×ô1Àc¢¿r”µþÊ7o£_º;œ9f~/_{¸A™¼ÎÊo¬ ÒØBüAœŠ?âø6—BnÈ”&HVí_,\ „ÚÙ¯åÆàÅÉÆ.Rí:V3mtÅ ¨fO<}vÿš6ʤ}g¸=^þ–¯¿`•ëOd|ÈØx’Sß·•kg>µ×÷°Ñ80ƒ½…ä vš›õ(€,`þ uƒ¤þhÊ.lŸˆ¿ë)¥cbÇÄމ,ŒØCö€jjã[Rß§•ôiÛÀ2˜Ç±¨1@ë&àɃ?’/»þµ§Ž H¡œujäÀgòõO´cÂèã¥|‡È(½ì¿9h¢»Ôh±aŽò0™ŠC#^$d„a¢»#Â$ÉŸrwv÷__Ôò~SÜîzò¼z‚uZÆâãÇZV¶ßÎwZ jP*Ü“’@&¹Õ ÖwµÅH¸º„êî¤8¿,ˆþ<€O±þâé—rø›ù´%@öÿÔs>StÎQs’•Mò?€N{Ùö 0>yAõ§·AQmêÒÉåŠÀí¢=X rqQtð (""""b ˜â‰iåÊÁ1Ëó\ÿyÉ[ UèÞ»ôiA +ù¾Â·æ@®æûðÕW_ _ æì)ýKÈ?î܇'Oàþ&ì·h¦šù†V¦ÚàúM9̦Óþ/ a!ËÊQ´ ’õƵçõ¿µ+ºšÊ,¸iÓØ”=d]¯:t3ìèÅÁ*AWÊ1^Á ËnÙ_I€rµÐJ÷ò×4MÀ·ß=þÝ·º=SůìPŒ-#PNF¡ ©¨¦*Ríkgj>ðL­Õá WŠu4¼äê’ô²K!‹Z•²Ö?5óCië»íé/eÒ ¹«0!2ÌóËuP”Tà)ã9-`>ÇûÕó³3^j¤þMQÆi°`‰‰·íolé_]Áf ø v%àe›¡(ŒóáÀOÀ‘üóHý4ÉÊÀ¦pˆ,€D¯Ïží?;ƒ“¶Àªu³Í@-àûRnfåjýµ‚ùªÄ¡yº& Ò ê+[}J|.Ȇ‡•s 8;S‚/¦ÓÙA2|_5JÿÂGï¨öêÓW{p‚P¡a¯™¼iôûøãú‡ˆs ˜fgggp† ·ÁMß«‰Yݺ­æs=a%G@ù“jÀøhþÜmÐÛ`i%cL0¶k؇‚´¼ö?À²GÐa¥µ¼HÕHù¼I=’˜_ë"ÊQ£–&™šÒËš Ýý€íãèÕ«#$.öWéó–1Ú`¶s2"""¢¦xwôëÔóÃëm7j@\\´Âͨûã¶›5î)uïÕÂëꎣ޵ ,a‰OøÅ™›Ûy¶,ù_ö/h]\¨ê¢ÞhÞ´9ˆÛ`ó# M [z ¨ KuO_zË¿DÜ«¾‡*§®kOJÚ(7•üvòÖ\eÕ I€T}aTn¶aŽÆ*ýõòbaêoÛº»HX¿·òí­‘a¹EŠæzn ÒåNSœ†õ·&Sn4Ÿá´A@Ëår8OW+ì&€Ÿƒô—ºƒbo v,  zh¦Ôá•&àÊTø Àé½Ç€a£5:è=ÕâSœ‰œD0øé}bÀ!p©®ZpÞˆçXG:`©Øüîó­ë?©iYxùÓ6Û0¦ÙŠˆˆˆˆˆˆKF>ñ²3âȬõ„DììPýÁ#^>@(0(ÓRœ¡˜¥êÍÈ BæFžW™ÜámA|ç‚%C¹B6 &&UZÛæòòHõhƒœÎ  Á"Ÿ 07ãBÞ L (§?êF–3Üæ:&`fÑ)¬±!nòÿ¬EÀ€°[À°cÅÖÇ€ï|¾cËw`»~@DDDDÄ͆ÿ9²ëŽô¿~þíÝ”^ÊÉ úž\õ)ü\ çòâ¥åŠÆ7¡ßÐUVð?I€@»“+3Æ}²Tï×ï& )œ ñs!NñÓÖ«CÑšÏ×jE&ùÓn߆s?»’Á”'ê5©{›ÕûæOôÊ vÛï9(¿-Ùo¾_Hu ‘÷ÕKÿžJ—G’ý‘PZ€Ä)¾âj\X»“_ThM¼£<:ÌÊ{àíy‘Áè§®Ý ˜œžœâa¿šŽÐ!)lø?\Ž ù…¼>Wò©ùˆˆˆˆˆÞ Ï„dº‰ª«Üµ¾¾rôù€L·Ñu•»Ö×W^hñz™n¤ì*w­¯¯}>à. ‘Ï•ox^ËÕVÚ2ýU+•…3ýNã¬_€7]íè$é‚¶_àç|]´rSˆ¨WƒÏÏñêp(?Ogùõ¹-¯žÙ?Áhøå—_„Ù!ÎÖ\_ôL¯CV½÷œ47ˆåL!~B@°=¢ùuÈg•þ›#`¾ƒÎB€í³‹BÁú-â³€3Qé¿6á. ¾}«‹‰‡º„ôv)AòSY2pÖæ‚>`ÔšAPbt*»Uë I맃¬™Þðã’Uhå †¾õ½v•ÃÚ‘éëHu•ÃÚ•íëJw•#""""""<¨‡K“GòÿÃò5$ü”/¬ ð è?=7ª¯$L‚æÍ%“7vD ¸ñcÀM¿ DDDDDDDlÉÕñ‚» !ë¾Ñ5!ÿhÌHD ­k@¯÷UÒ@õ½Rú›Pno/_Úµ7S_ƒCuöµ²¦þøŠWú_èkUþ««_ ¸òú÷½ 8ô¿¶c@Zÿ«cA è¥wó1rüŽ‹¦}݇O%tEXtdate:create2022-07-14T20:49:43+00:00#e+%tEXtdate:modify1985-10-26T08:15:00+00:00"ÌS(tEXtdate:timestamp2022-07-14T20:51:07+00:00§qÁtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚redmine-6.0.5/app/assets/stylesheets/jquery/images/ui-icons_777777_256x240.png000066400000000000000000000157731500112024600265120ustar00rootroot00000000000000‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDwdìÇ­tIMEæ3/#ªIDATxÚí{eE}Ç?H(cXˆ1°Â²[R‰`¢˜JùH•”Eî$U›¨Å’»cE’¢QÑ2;#™áfŹc‚,Hj—cQ5ì5P…qKÅÙõò$îê1®¤ˆ%'œW÷9ý:çÜ;÷Î=ýºsÏ=¿î>Ýýûõãôï׿¦ñh2Ît< / ‡mBÚƒÎÄf €ˆ6+ÀJ“D ×0øöÓ&¬s؇N’”_ÆBs¦&ØÚ>~?½­ c{vÂÄj%ˆØ¿‹€)åê#DèE¸¯F Iܤ–G¸° ¬R®SÆ¡C®$ELÚ!ªGD”NP)~ÒÊtÏ·=;¬™w×”meÜBÈzsè S´ÑÓM,4§R¯mš† 1åzýÌ!(½hnE¦6˜UjÕ¶cOÁÜ6Íy7÷Yʶ~fKáœÒ1lÌÓWMý.ÓžÂ*¦þ+pˆ«Å”G†ýUz€ÑF›•Qb¯^¿Øpxh8¼4^/ ‡€†Ã @ÃáíòqÿMF{7‹›2¦m´0?ÁΞ:övux”÷‘’rön0sê´Osíš¶ý¶ÔWrßúÔGÆ hA¿ž„2éÛôt[l{SîÌO·Ç7#ŒÓN¾G²=€êZƪS/ coŸ.ö¦öç–7½ø„Vkƒ2OÚ¨¢ j³blcÃl`.[ÿ“”<%}a¯µƒ¯“xºÄtþ7^Üpø… †Ã @Ãá áðÐpxh8¼4^ŽòCFáWù믕–Îÿ9õ¢÷¥™ƒÐšƒêª {Ì”\B0êú]ü„(eQõ¶üG¬Œ©Ø…£jl·¸„*÷,)€­øCôñ‡ r)BhPö¸ä/0ÐäïrÏH(ö0—Ð,@¡%6ر”qp-¾ÎZÇ^IA:øÐ¨‰´¢ur¦±%U|ºê)IóÒç!4ÐÍig¥371—”†­ÇÊE:«µq7æ©›ä’nÕ05A—´íuP —y ̺8—Pjš¹ ´K°9 [ëÖEÛZíé.“Ȫ°‹¸.å LàÖuÖ›å޽L¿ò;X·t‡0Ua¦Í 2î9š@ƒÃ s°•Ÿ_!®_ l8¼4^/ ‡€†Ã @Ãá á7‡&ÎR»?ð~Â¥\4¢ÕâÙöF»>¥2H6F¹¸{¯V½Cµ´l9w«“«ÙL×.;ÒS&ú2´+×@˜Ë% ÞjÞÂé¢Ñn+îõNti¹¹†Ðçß­tÏhç¶×¶KÅÎJ`ëêmM/lЕ·†¹¸S·mÁÖmu³¤±ç@—ŽÝ…»=çnéÕƒ"kƒݶ±¼môEJ)›Æ:…uP SVÜ+ (×-æ*ty¾}o¿þù¶Ø6°×™vh[œY+ Ü[@VUT†:õPú6=¿ ²|WC˜ž¾/¦&#¸Úƒ€éùILõÀ–ræ»Á´¿9ŸË’ö¦ '0¦â›3g*¢) ±hv³/ ìh*ÁjÎD¿œæ›Ø»š{ã–KÊnæT¡ÕE„y¬Û­zÕåpƒë›´™Ò©~¨} „÷ Â,€# / ‡_ n8¼4^/ ‡€†Ã @¯1Huväíl0é«\ŠÞ®©ïî7êç.°,vYÙ‹ö&˜4æ.«„‰ÆnŸÃS=ên®2o¬Û_í ÖÅ7¥> d Ab¶ìÞ~‹‹âÖÈj§».4ƒIcg‹hÉwuÚNÓæÑЉê^ÒMz 3:0뫲¡¡ŠÑBÔrìfSz!®º¾ Ä]ÕsUÏ·ïlJd + Ë °ž°¯|ü€L—Wmu¦® ŠjÏu QÇÇG €¨(¬"ö“ìÊÖº£c ô êBþV…èM+V=Aî=†¦Ÿ‡€Õ4Sª<êà#s/5Vö.Ú~»{32[µI…¹ê³AHï]$ ”¤Š!ªÔôjm n.ÊRÝ$°ÊV7«ÅªM—I$†lÁÃd¼:XÆÐtÍ›¿(£aì÷Ðxxh8¼4^/ Çð @kXI›¼¸é²M*›Ð‰ª Ñ¢»)¯bƒöƒ04(ç.ÞM3Q#?]!iÃUuYŸa„N¯YÌ«ÔæÕî¤U·è*E LJÕ{÷¢®" ÑÕÄO®ª9U{ŸòËD&²»÷"2}¸Îez@³Mù,s×uýkLöÎ&OW?_¶(ȧâæ>¢qH|gUföxmÓd%ì¯>ޝ9¹rVïþ×;UOŒÙ2ú_‰$Uk2™ñÐ5ꉢë?ä§çó „PÌáŠô쀆mÕ#ó.V™ÞÁˆýÔ ×c%tôHÂÂ<"Q«½òËùé•[ù Ì[@VÅ:›<Û‘L&úDJíA¡„§«"³=‘ì>Â#…|^€íÀ“ÙeÝ“,ÖÒ´]^#Ç{ Vñ³~%ò A¦Î[nƒýiGæ9@¬ú–¯Â°ê™´É>]€Ç¦Â @Ãá áðÐpŒ’̦+ ³}Iÿ2Æâ¿Ë]ÔÞ!€ÃqÅmp¸rJZ4ý6„̸FNð’Š;ŒB’%íÀ™"†0 @^ÄÈ‚Öwób< œäÇ|Úý±ø{¯6Ä6Cìež” #B¡BŽH}ÀAHE`Žƒ¹!«@}Enã±ôúevp/4äò/ 4shVÇŠTʉXÂþ¿æƒâíl%°kIà$?.„‘³ðâX—*ìy"üª!ýI¾f|þãdÊê#<^€LŠ„V»ëŒ9á¹x/3Êø§§…ë"æ˜O?›‹„ý÷ñY\—‚UìÏãEœÅóÚh&(¶ 8ÂãÚ0h'yWç¾óØÆ'â«w(¨—Ѐ:ì) yMjÕm¦v/ ¶Ÿäí…{ûñàÝñ _BPd¾€XÓø¥ôj¼@³õpYÌøÇ¹Œ§ôYžâ0ð8³š>ÀŒ_æ½éUmvñ û™Î&d† Jæ8¨dÒ.á£Ã6ØB¼M!Sör,žG-o ¯® *Ê÷ ­qÇ4[1=ÕkجDWõ;rߪ*‚¢v.1»Xá½`A3 D˜¯ÑÅ¯× ¡¶é¸bý&˜®‹N‘ýŸç¯¥_E˜»Ds0§xÍ+C‡dˆÊ¾óUtò Ì^#‘ÈßéäJg›äÁ §ˆåô-–+†Ð#‰ýÃä bx¹ðûÉJÝx]„ `/S0µ÷~ŽÈì&ðFIàQ^/ ‡€†Ã Àhá1AŸáYZ³õp9yÓ ³Júœ Ë.¾å&”þò– Gsô£ŠçŠÚòý} |ÁR?ÜúB¼>þ3c‰%–’âk`‹.sÀ¼Â6ƒ7Å+Pò/eJ©Î}š½À1^ÊU9e-¸¿û&º}9ü·Æw£ÔnQèûŽ¥¿öâ»ê㣾…¾Ð“0°$©»:`‚.0A7ÿ¾N‹.pŒë9Ê^PîŸø>;€g¹ÔP»KñbÒ2Ÿç>Q"öGÚ´¢„ìËí¬){zx´ŸðS¼™Oñfb¦‚f9Èa¦ :=që§ê .Ç·ÿ—ðC.âYvh|ÌÐ!$`š-0п¶ñ;JzRýËÀdÉL¨ÇRu»H?ZPÂãzÅó3Å2÷ÓMì-Dup²œ:Ï\%G-â–.µæðV¾Ç'9Å:?P†˜ežÜȳ}X|š‹ù.ò].á{ÚPÑZúŒ‘ެS—p†ZuMÒú&•Ô ©ÖtäÔÖ¿æpà÷óx+-Ö2xBZMŸgŽ'´jSÖ°9s¾…‡ØÃgù=¾ÀëÆe³Ìs„©¾°^Ê¿ð›ü¿Á7y»B¥ò 1–R-&tÀ@߯˜ÆðeIb|~-¿Ã4ýh‹ì"îË´×ðϼVøý%…IË;À{«D®&1¦ˆ¾ö…·ò=þ›/sŠ/³Q &ìŸ3>;4èÃ'R÷4ªè;¼œoóë|›ßÊ&A)ÚÜI¢ïŸV(2úÙüÜ@Ïæ2²±7ÂKÖÝD®LùâuR­¼Nûü\'IëUÛ¤³ŸyglÎQ”ÎPŠ[a‹f›Anb¿|^Q1!™¬)éïäCÌp;à#ü-“è“‘UBuéûóS¿ ­Ü°f ë¨Ï©»óô%&ã±?gËé.n^ú[$CAÙ9DÄ`}ëOÞ¨Þ&R5j‘Q|Où cÌ]z@hd¿}‰€ê àvn⮎rwð‰ºÄ$ñS&óqóN¢²wù²8FHH—.al¬/¢.uSç?Ï-¯[ ýÉQÇßË0¥ ›~Ã>-ûêÓ—­ìŒ´¢Ž}‚ÔdK Ù@ÿ3>Ïû¯çüLb“,ç㺪ƒ§k,Ox”AJLþÜ Qôö ‡×4^/ ‡€†£y©Uï4T•û‡tÎSÞºãám`:­€ê¯ÕýÔE‹0Ý®uBkÕð¹øýÿ@A>ÊîáÞÅ»¸“› 1£Úy0þup^üáf>NÈ­ÜJÈǹ¹ßì¾"oÍ·g(Òm!ŠždzŒì5pšžáaà휛ª=‹‰ØNÙ†~Y½/1É ¦YP,ªDO>É'Ø­ÉE² {÷R\)|uz}†ï(ÖBOòU¦˜¡§#/‡ÛÕáÉê}W©H6¯½ªÜgvs!‚ÔPf^áò3dBˆ‘ª³3uðB¼J|‚sy®°ïe0 ,p%“ÀdAN²زÿ¤"…‹âoõöÔ§øE~œÏÿ)é_åF¦xQªÓ/ßO^¯_†¨V=g™OwªšÐ VÅ.Á+…ë"þ„Ÿðýä†8< œ`7'ùd颹)cŠ­ì¤RDz¶IáZÄXÌò„ýE|‹7óð¿ü€ŸðFõ8S„@;fqYw\øSc^så˜gŒqÆ•-ö‡‰»E˜Ý}t™a»¸”K3›!yo`Äþ1¥§ 0wUMÙcÊ¢ ¸õò²Z¿Šý]Éæ!¿ÖþÎŽpŽâ¿–p€ètzÛ8SºL.I¿þPâ/H‡1E¤÷“’‰U±ùÌ?~ÎÙìà6ngs€ç87®º vV0ùÂÂÍàÉôQK¯š£|#îþ h'³_ÅÀiþXøu7÷ž®°È5F4xœQºÀ™Fíüƒt?ä¾Â@TŸäC¥ç7Cl…±”Õn6Ìp.ÏñU³ÁNE›9ˆV»Š¶9“rfªê 1ó²k û£`G6Ê™ÁÛ"ÊöÛávÇEöÃ'yx”h¦QÄŸå œÇ¹Js¬9‹ƒ ¸€{¹€_‰ÿ›±[q/™\‰ºAíâlv±‹]ÀÍIˆlˆü_DàÌN£ÍÑ3tø& ŠÍÑûŸe,¶Í{ˆØoš¸ÝÆuü'p±‚ý0MÈ:¥Ën­åßCšÔ N#öö‰7×gÿäBìÈm*/z9-¥ÔVS Ïeµƒ| 4£E7íø¿ÏŽœÖ\=ïVç^ÿh~ñÄZl˜±Ÿæâ®òï<ɪ¶–B‚t¿À‘‚²?`>6É›ãŸr}Ìa…ý‚ì²/¢èÐOé¿À«ƒEìᯀkZñçqw,V-Žóš‚ˆ‰P €hgÇM€†£yº ^/ G^ký…ßÅ×ÓEÚ¯s× 3îÑÈKÁÿÊåÀë¹¢îÓÒúø«x;xÓ 3ïQbpˆË¸œC¹Pw¥ìÏVèÞ¨ìNƳUøŸ¸±/3 ãBÔ)AQuª~rÃQZÀU¯QÆUÝÝÔ8?þ>`ÉUGa°Kqå/iãÙBØè!§Rs"‹_¢¹ÞÒÈ jÿk¬Qì²EOQMk÷j›G@àp.h´O6/ÙæÆI m!–˜äãÒ¦Û™…D/Æ#…LZñÿ–ð«Û‰¡Ç@³-,yJxFAé¤ßQÿ_·ŸÔ\Ëw—™ˆÝ/¨è‡¸‰ÜÄ!M  sô>²H ÿÝXguyÅQøi2Ÿù*t)üç$¾Žý®¸Ÿ5î7Påï .&,³ÀiNsút,Õ,‹j¢JDöq[Çãm´‡7¿¹1c»žývWÌ!°Ìý¼•IeˆC±±ç¼O›Âé´óχ8% §GeõYko v÷+ʸª»Ë?P Ó±}Ž©õ/k®å»“tS/¾œF/X¬§†Ší×[êIà3,*±áSö/ °ßÝÅ¢Ò(Ÿ‚¶ø›ƒ‘`}„¢D,(¯"HâµØ`±pæÆ4‹lÐbZËD·'OW“hŒ+RCCØ-yÐýYý‰Ãs'!›«”§nIˆCì œC#\r=ÉhÝLÝ’ðêà†Ã¯6^/ ‡€†Ã @ÑÓÞ[„¸9ô3\È;4[C#=Ûç´G=¶ hÑMÝ^NWÉä9Îè:,ç²GsžÀn2ÝCƒd!è»ù2¯&äs\K¨t‡¡Å=ì´:“-º*Îÿ–%ö›î¡A$-ºüˆ‹€G8Á4?äBÅÞ8ÉÝÜÇ;5˜FáT¾ªÇcwêÛ8ö‚?íkxŒk‡ëjúc©/~}œõøƒÂ_·‡‘.àjà[\ À·xW<ÕLr/°Ÿ.ïÖ €W°³{#ç2Û9 x^ñvrqü¹x^‘þvàe1ýeþíÆ‘<¼R¸ûÊøžŒp?]na'Ù£LOo&q¡ôëc±gû Ûy¿ Eú…¼?þ˜âGa¶+èJ$s€ v¦›¦—˜ÌŸ2$JàÃLqW3¥õ‡­޲Wú·7ê7ÝCƒD¢ó0~Ä·x%¢>1 ³X(Ϲ GË`jô!÷§±Ÿ ãïFÅæÕÃoÐpøÙrÃá áðÐpxh82°P—¾À—Rú—çþõ›Þïò š^É[À§ çå~F: .Ýæf®ßô~—oÐôÊ8ûuwñÖå ^ÌÃñu]úíüYþ ÎOµ ý¦÷»|ƒ¦×@4džÿÅmS¯Q\‰ÈÓWÓ£eWµñC|[úùúßV~[þÍñOKÓtñMt1êR—DÞU¬Ú´Í•l¶ûw؇zwpÝô]âÛÓW¹Ãv Þ`–ø ©é‘«ý½ÚúKî~ˆÛèÉ-ÕÖ°|1ót4ô0w‹ãq>Psßœ¾½ÀId‹hEÎ%u]þ\Ò1{¸Î˜ƒ›¹M`OpNý$ØÙÀLÄS:1ÁáÇ€5ø¸Ô»íBÃß¶Ž›îEDDDDDDŒ—î nÙJX´ÔyOè4»à'¬ß|›’¥J‰¥Œ–f7ÃÅ„U@ ðD—ªô!ƒ!Ö~{‹=É–•ÄsºLBIÀ`ÓÜ‚…Ífhmù€Ä,Í×£¶mV$ž÷Ÿà=d«c@×ý.±=ôsüƒ®i°üÞGÏ€/§B‡Ü½ÛÇ·°Jÿ®IžÅ<\iö ¼ °¤úë·•à#ˆ¥³Â˜¼: ‰àHleå‘À•¸Fý<\†|ü„O÷d1¬s“9+3;-ÐËŸ5‡×„¼HØ,„0n9Ýo¢áº¨ìã–=DàO”H./H Ö:ݩ۾ \òùáÛdDDDDDDÄMEÿm©=݌IJÝ]¤Í .UªïÖ€µ*ðÇólmÕÒ”.ðâÔ^ÊìNÀº¼ÏÉŠt×o‰o©¾²ÁzQ?/OòÖZ6»'^{Ã…ÕÌ| xùK,Ó=é#œmÂáæ[;'ÄÂaK4ÎÙk4Àžje˜”NÏ·Ø€ûtFkož™N»X˜{œ—p­d0» °®­ózç`]€t‘`°÷òÄ™ƒ1ìÝÀóX L˜¶B € ‚$• K¡Z¿åù“í­p¸Nð°žyÜóÛ~>&"""""bԸܻ8wTÈ£²–36ëX„‹ƒnÙ;êüŽþ¬g`ÖÖZ/'ÓÌàÙÊŽá«;€í7}ÇjmÒótxÀÕ·d¦°0¢O/!`/³/îç»Ë$Ï÷Øæ3ÌõjÖ^_pМ ®Ó7N@nºH,á0oº'žâé¶Õi ©àÏ ¤ ±´…»€M¼}ØRñîY±@»ÄÆÃ;=¨©É™Ï÷[Ò‰`ëö˜ÆO€áýaÎè°è”<1ˆ^C›€Bóþù£kˆë®_DDDDÄõFzÅod·|ËUÔþ5úi)ÀºÌbz_ip5RR¨WbT‹!lë²@ñŠR5…Cf|—Be:¿°.3ÇÒm€G/t{½Ô߈Π "Áˆg©ˆõM`\X–ß9A)‘)øSXb7t,i»ØXºÀÀò›;6*‚@÷+4tF¦#Hë Mª­„Ž– 2£1Ý&CÂŽ!åOí å/…¿+³œŽn‰Þ}HFH@_tÑ?""""âf!S~B¶~þ[‰[Cµn*7›úr¼ðÜ`§r•\*f49óóqK乸E @gìJqW8dš(n× '4*Á^QL‘³WþmRºEs¾û¹µ† Cß¶ÅTf+[»uzÓêI“ 䣂t¯­U¨Ìm5¶AZQiBÈÌ 1ÊD'ºÆƒYô¾DëJCc®õîª8]à&ï¾{0ËåÒÿ†Àˆ» TG$! &¤j Iø‚Ë` èCU\€h´ø <ý@ðî{»¿1¸{÷.Ûï–ÉJ€Òÿ}L€iR õ7m >HÕ UxWÁiûJu˜îëy€¬´ÿ–U>šb«ŠÓÊ.pïîK!/|oOÈÊׯ$@éûþûnr@I’ý…0pxxè`_2 õÇ”?-å ˆx Î~ð 9pT ‚GDt'€=¢!âù‰ùâ¶|/\РᣨÂããcÐ&Ê, ÛŸNå›î¥ì&à¸B} Éá½<¿9~Fu!yà·å ë;¡L`XÀ\ëï! -îãÄä&-Ô²ýÍ%b2¨1v FŸÌóö.7õçN à„ºN¯ÆÀ¢ÍÜ™õµÅU~¼# º Ví™›s0™¾uW80è-põü% d ›C–-Jtðõ‡¦ëν¦•v7ªDDDDÄÈñð¡?=ï¼6€më#A¦ÃÝGåmêQ#ÖÁvcÏkyÞž[¹&»kËBüŽ´§ðÞ×d´u@ÉÛ6Ö?Ë43åEžäSìÈ&ÏwZGÎJE¦?ª]ñ†y²Yi2=›\¹‚kËÕõh5(”3—¶÷öTq;Ç×ô1Àc¢¿r”µþÊ7o£_º;œ9f~/_{¸A™¼ÎÊo¬ ÒØBüAœŠ?âø6—BnÈ”&HVí_,\ „ÚÙ¯åÆàÅÉÆ.Rí:V3mtÅ ¨fO<}vÿš6ʤ}g¸=^þ–¯¿`•ëOd|ÈØx’Sß·•kg>µ×÷°Ñ80ƒ½…ä vš›õ(€,`þ uƒ¤þhÊ.lŸˆ¿ë)¥cbÇÄމ,ŒØCö€jjã[Rß§•ôiÛÀ2˜Ç±¨1@ë&àɃ?’/»þµ§Ž H¡œujäÀgòõO´cÂèã¥|‡È(½ì¿9h¢»Ôh±aŽò0™ŠC#^$d„a¢»#Â$ÉŸrwv÷__Ôò~SÜîzò¼z‚uZÆâãÇZV¶ßÎwZ jP*Ü“’@&¹Õ ÖwµÅH¸º„êî¤8¿,ˆþ<€O±þâé—rø›ù´%@öÿÔs>StÎQs’•Mò?€N{Ùö 0>yAõ§·AQmêÒÉåŠÀí¢=X rqQtð (""""b ˜â‰iåÊÁ1Ëó\ÿyÉ[ UèÞ»ôiA +ù¾Â·æ@®æûðÕW_ _ æì)ýKÈ?î܇'Oàþ&ì·h¦šù†V¦ÚàúM9̦Óþ/ a!ËÊQ´ ’õƵçõ¿µ+ºšÊ,¸iÓØ”=d]¯:t3ìèÅÁ*AWÊ1^Á ËnÙ_I€rµÐJ÷ò×4MÀ·ß=þÝ·º=SůìPŒ-#PNF¡ ©¨¦*Ríkgj>ðL­Õá WŠu4¼äê’ô²K!‹Z•²Ö?5óCië»íé/eÒ ¹«0!2ÌóËuP”Tà)ã9-`>ÇûÕó³3^j¤þMQÆi°`‰‰·íolé_]Áf ø v%àe›¡(ŒóáÀOÀ‘üóHý4ÉÊÀ¦pˆ,€D¯Ïží?;ƒ“¶Àªu³Í@-àûRnfåjýµ‚ùªÄ¡yº& Ò ê+[}J|.Ȇ‡•s 8;S‚/¦ÓÙA2|_5JÿÂGï¨öêÓW{p‚P¡a¯™¼iôûøãú‡ˆs ˜fgggp† ·ÁMß«‰Yݺ­æs=a%G@ù“jÀøhþÜmÐÛ`i%cL0¶k؇‚´¼ö?À²GÐa¥µ¼HÕHù¼I=’˜_ë"ÊQ£–&™šÒËš Ýý€íãèÕ«#$.öWéó–1Ú`¶s2"""¢¦xwôëÔóÃëm7j@\\´Âͨûã¶›5î)uïÕÂëꎣ޵ ,a‰OøÅ™›Ûy¶,ù_ö/h]\¨ê¢ÞhÞ´9ˆÛ`ó# M [z ¨ KuO_zË¿DÜ«¾‡*§®kOJÚ(7•üvòÖ\eÕ I€T}aTn¶aŽÆ*ýõòbaêoÛº»HX¿·òí­‘a¹EŠæzn ÒåNSœ†õ·&Sn4Ÿá´A@Ëår8OW+ì&€Ÿƒô—ºƒbo v,  zh¦Ôá•&àÊTø Àé½Ç€a£5:è=ÕâSœ‰œD0øé}bÀ!p©®ZpÞˆçXG:`©Øüîó­ë?©iYxùÓ6Û0¦ÙŠˆˆˆˆˆˆKF>ñ²3âȬõ„DììPýÁ#^>@(0(ÓRœ¡˜¥êÍÈ BæFžW™ÜámA|ç‚%C¹B6 &&UZÛæòòHõhƒœÎ  Á"Ÿ 07ãBÞ L (§?êF–3Üæ:&`fÑ)¬±!nòÿ¬EÀ€°[À°cÅÖÇ€ï|¾cËw`»~@DDDDÄ͆ÿ9²ëŽô¿~þíÝ”^ÊÉ úž\õ)ü\ çòâ¥åŠÆ7¡ßÐUVð?I€@»“+3Æ}²Tï×ï& )œ ñs!NñÓÖ«CÑšÏ×jE&ùÓn߆s?»’Á”'ê5©{›ÕûæOôÊ vÛï9(¿-Ùo¾_Hu ‘÷ÕKÿžJ—G’ý‘PZ€Ä)¾âj\X»“_ThM¼£<:ÌÊ{àíy‘Áè§®Ý ˜œžœâa¿šŽÐ!)lø?\Ž ù…¼>Wò©ùˆˆˆˆˆÞ Ï„dº‰ª«Üµ¾¾rôù€L·Ñu•»Ö×W^hñz™n¤ì*w­¯¯}>à. ‘Ï•ox^ËÕVÚ2ýU+•…3ýNã¬_€7]íè$é‚¶_àç|]´rSˆ¨WƒÏÏñêp(?Ogùõ¹-¯žÙ?Áhøå—_„Ù!ÎÖ\_ôL¯CV½÷œ47ˆåL!~B@°=¢ùuÈg•þ›#`¾ƒÎB€í³‹BÁú-â³€3Qé¿6á. ¾}«‹‰‡º„ôv)AòSY2pÖæ‚>`ÔšAPbt*»Uë I맃¬™Þðã’Uhå †¾õ½v•ÃÚ‘éëHu•ÃÚ•íëJw•#""""""<¨‡K“GòÿÃò5$ü”/¬ ð è?=7ª¯$L‚æÍ%“7vD ¸ñcÀM¿ DDDDDDDlÉÕñ‚» !ë¾Ñ5!ÿhÌHD ­k@¯÷UÒ@õ½Rú›Pno/_Úµ7S_ƒCuöµ²¦þøŠWú_èkUþ««_ ¸òú÷½ 8ô¿¶c@Zÿ«cA è¥wó1rüŽ‹¦}݇O%tEXtdate:create2022-07-14T20:49:43+00:00#e+%tEXtdate:modify1985-10-26T08:15:00+00:00"ÌS(tEXtdate:timestamp2022-07-14T20:51:07+00:00§qÁtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚redmine-6.0.5/app/assets/stylesheets/jquery/images/ui-icons_ffffff_256x240.png000066400000000000000000000146131500112024600271340ustar00rootroot00000000000000‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿ‡Ì¿tIMEæ3/#:IDATxÚí]mŒ]ÇY~Ž)*ÁÁ|¹&q²’4!K¾K$„d¡k~•Àµ#>£uªÒªÈn¬»?švï‚BRi]9?7»Z¥¸?XS›T¦18¥jÚµC·æOiþ"á—çk>Þù8çÜ»÷îÎ<£Ý{ïygæÌÌûœ9gÞwfNBˆ»F]€ˆÑ" pDÈè€Ðu!¶‘":X°M€Ñ_?Ô}®MÕ& ä9¾Žƒ‰¡CD‚!”€5NÇ"‡%}ž¶cŒc?7¬iÝ5°Ÿ¿<ê®ã6 zÍ•ó!@ÇÙ<æôyZs.¸ÎîSwÎî:n£P¥ù«(¡^z ‘w“²ûæìªã6 z›(Îë×§©ûôn%s-@àê?Ôï€ýsp?À‘Ö¤ÞžFß4³ß‚:F]dž$ú$t°„£Xu1¶‘#ZG$@àˆ‘# pDŽH€Àç¨iG]þ­†fìtyÓÈim·JͦZ| —¶É|—/2/ûŽ2Wo7Ü9¸r·ùmßñ*]]oe^öê r7•&®—ÚoJŠÛ]\—žö@vÈlu>€¯Ç¾^»ûßùkÙêÞ ïüC§fûÐËÜ9¸èés ö`aôÓt>À¨Ë¿Å!ºƒG4ŽH€À 8"G$@àˆ‘ãîQ`ì@HFxîõËP±üw7K>”Fe ÈY‚TIuÊèN9‚šË·‚ÈB® ™ÙYÍj’ª¨{WùSÕ'Ö\Ü䨛گ>±*¤Ý%EpU?ñ¨€9}âÑ@>U0_¡>½‡­‰òYí¹ÄÝöÚ DŽÔ€ë"–Ê/Þ|«O‰»‘’tð6¸ï¢MJ@Eê„•ŠgçÎ’_^æ2EnÏ»¬ý2K™UÉãêqÅòag½kÜO¹‰Gî6ùä[·l— OÞî6ÐäU†eç‹—Ù»@7ƒíy¸ºX¿.Úu¹ÎîóYnŠ»åR Twp裀í}þÃÈ8 pDK`àˆ‘# pDŽH€À 8Dt@õòh—­p¸ðih½tâzº¨žVZã³x²îò.¿~9×[û㷬̷øôyŒŽwªªuèX[À¾0N.eÊ­yÜÅtÅiR}ŸXnÔ-·O ˜bˆ«9ù´­ß^íÐÖNÖmþêFûQ >ýÜ[¸û¨À/N:ôæoÒÉ9“3O-Žì ¸}}ïtTï=I…´~%(ç"˜üñ®óÛÒ»ÎïJ­ß{Í¥tyüá”réÓWÞ0ìv¬ÎåH€ª£€²êx¬!>w’>m篃²Üõ²ìg?šIóGG+·AR¸«ƒÔ–3°œIl›]«¥¬t ¨rïÔÈÃõæÓºKgÎÇÞ…úÝÁó¸î–êÞ‚ìö´r)Ó+­âéýNäÚ"®Ä&©«4E5úåç0Ùì|-M-q®œ©†T¶ÅÕK?‚P‚Dfšla6•¸4Ò–Þæ‰óqóØ=r®ÒdðÔÙ¸Šçµ§¯“ûÈÀ?,:y»¿ª¼5,Õ˜X–.Ëtu’¶= ÈÛ×—T8Ê—;¿{eóX¢ìR;xÙ„¶Uøœ¬ôFg9WH›Ký–@»o×ßB¦FW៳m€-FÙ, ~æ:E[6ú©ópyûÝûgØ‘=ßCÈŸ\ŒÁ\ÅÜäÞcLÔ/ß–‹BqxÚÁll“Ž2ßôFìׯIQ~J…½éË›yw‘¾nª)óy>'Ç(b3¶4Dw°Œ±éš· ‘#š‚G$@àˆ‘# pŒÚ í• ÀÏ—msÙ—Ô£Õ-‰z„±Aµíâ}¶“Np¤AyV‘“¤mWwËúu<–;2ìVj»µ;¿ªÛXe)_ó Ä¥‰%Ò®ÿHcÕ>ÿVoSu±÷YB„´A„úßd-·ÍwiQ›øõórÎÄÊÓLe k ÙõïEèhòmfµ®/Àou»Ié\›#¸`•›|ö®ß¶£ºD'ÎvÈëÔ@Ä)a t5©0Oeð›ažT¦È4%ƒ/¡kû™à (ª?Eù±ÉL .'Fù¼vƒÏnöGp¤=G䳉ø]ùåòø¼6"@µQ £~Æmè’)¤«íF’gçVíó‰Ä1¢òø¿0Bž[~4ÌOÍÐÁRT½Žq›0,õG0nˆØbŒŸ/ bK 8"G$@àØIè–†îPò?€VŒºª@‹™sdƒk».5t²]“5ÝŠé»ÎÔÝš9§á¦‰ˆh:ûe+Ž©L:e8‡YîJ :«û -åžzÔ+ˆ ª±Ÿ4ƸϒúUÜ â DWòŠ)NfqJ¢ƒØ€æ†¼¯ß‰-Ã~¼ îµ”ò÷-2Õ#ÉËùP'L.Õ(–«ÿÏñGâáÒ¸êÈà:¾§Å‘‹ð™/˜ù<)~Ü’ÿ1|ÅzþË(]ÆgpY#@IYœbsh+Ÿzé~ÝZÒü-> àã˜aÓÀ·„ï:f1Wüm-rõ¿Œ÷ɸÛ3Ný*~ ° wŒ1öβ2WS8ƒËÆ8 `<ª|ª¸•}{š‘>€€y3èá í zRë.3uï’àŠñ ~W;–ªÿÞà£Ýô½ Àõj÷8óø¡âÛ¤&sõÀLñ—qo3ò.ÞÆ"€Ëèú;~/¾©è`ç1…w0ƒ{-JfqŠUÒ„ðgB .¸büC€8àIœËž£0 ü  Bç÷½Î4ŸÎ>'™«H•žRàmf$Þ•ä\/°_ù䚘AzË·˜ Ìølñ{ÞpH1× ‹_kƒŸÓñY £ ¨Å0°íF¹‡0—$ù¥ÊãlÕ0Øa`>H*?M¥è²£mÕ†¹nyßX{Ÿb ùüóA`O<:>îà.€Ÿ~ߨÕ78!\éƒÏ=Åh¦¦LáŒtõ#Î;ÉQ‘# pDŽH€…׆d´Ap-Ì6ƒ GFÓ¡EܤŽYaø:«I•aï¢"_Qä+Ìy§ùÔäð%GûôЫÝn‡³`G}ô‹_B›´‰¨K]J×÷ÊaƒZ™á"MÓ"k¹–"Vèš"·{²ÕÐeãÏ žl"¢YÖ’=½Û“Æ™¦élâÇàåyœÔ¨£Jz…A®­šk2í­²Úµ™¼oÑ-këæÆ¤>'ˆ¯ŽmgV0b)@ÂË"|ì`üòp¢¿ÉþΨKé”®!ÓËW] &ý'nè2-0ŸÎ$Ó9¬òÃÔ¢ÃyÞü}êWnÁ+¬|EK½Âž‘ˆúÔ.-‰¢;8wRÎa¶ÖF-ârNÞsø'ø66p›XÃwØ]Ìa?žÁ;C°~ ÷ã›Ø‹oâ|Û+µ¥ÏXå}êÞźÑ]ÓÏ\1ÇXé©ÕLû¬ð³-~Òãü €Ýøm@Pô×´9u×*÷bgêÎÑ"z½BºDìÕ?¨àß ô ý+µ˜óÌÑärXåæ /•N½ô„R§èUªß—%Ù—™L¯Ð3Ù_õ˳âLH÷'ig÷KUþ5"ú·ìï†&Ïëgº‡—ò“9Ÿ¾¼÷¦á™ŠPÝuú3€M;"ý¤ãjâ§,kÑ"¡àP‰a'€î¯«¢~µzvðò§éô!Ú ÑÐ'ù1­tS•—ê‡1È*n[å&é­ìAP•÷)¿÷oÔ%!ß#¨íŸW°yÊö¬ÒÀÜ( ]T'ˆ™€)þÐQº&r8ÔïãrÏ)À^ ;Ùƒß Ý¡œ§¾žÖ÷ôn…ÊÏ¡ü3¨mÒ²]ý*f5©kZ·]Nd•ESyß©~×0°¤@Ûº\ pVKmì|ÝÁÓ ÌUÐdý€š~žRÇù#úG$@àˆ‘#<¤ncnLÓ+ÆFóÈg7{”°Ýžª…1át1FžvŒX]ÆŒº©›„6­gß×£å‹EÕ‘òŸÑ:C¡Ñ'´”iëœÏ~íBzä$}†ˆž§ç‰è3tRK_ZB9k‡¼0ŸH]ˆ¯Ë]1ô…ü¬G®à-Ò"½g¡€K½Ã$@?+×4kTI±ž©Ÿ/En9Κº~¾?Cœ-t³ô ¹ìx¹—¢M¼Ì~¤LÝ6ä“Ú»™7‡Û]LQ8«ÄÅÕóžQ‰£$@nËâÏ‘«½üÔs¸hQÑ^ÚO»i7í§½¬B DÔ+|ú¶ë‹'€y¢´èm¬Ò, i®+…M–#Àoѱ,drñàï¬ã®ã•Ú÷ý{å;QT¤>úcÂw-\\g|òmßlPþmʯ/I ~ÉPq—±ÃÝ_Ç_å>}C@œ8âÓràˆ‘# p”p½ ©|oò7˜÷þ [>ìúZ^Yž¯‘Š×¤ñbS¹k›¹aˇ]¿QËk‡ôã4q8]Dk*wm49lù°ë7jyƒÞ+:ñ•­1ßD¨òåâÕ²ËÆô‰%½+5‡a¤wÕßU~{úïJ/Å5¥·ÉÅR𵮈ÔTZƒí—,ç "¾O| ÀQéÈàò÷IïÎ_ŒQ5}ÂäK~|ú2]~ð¤±ýò£Ïá“Ì"Uq;üÊGüäù}·¼«rR~WÍŸÏ ž¿Ýù“5ÿæíí³š<ãïsÌk†»À¡w„ÿu¸èêì—£×É!>ë¤'´º£\Æç,²“ø>…üê} èx õoÍ»xsùôêuá¶ümå+Oµä)Dõìàz@)¡Ê—(w/)rñ¥S%Ö99娑þ*›ž«Ÿ«þbù«¦—o/ÕåùM@—7\‘øã óM„*ï ßC¬cLO–ô®üÕ†‘ÞUWùmé rOUU@êüùZWEÆ„nˆµ!jØòÚ¡ü:Oo™¿AóZÔ¦òÓôf!“1b [>ìúZ^3Ä !#zG$@àˆ‘# pDѤ;eŒ»<¢doàdñmÝT1vÐoÍT·æÌ¡Ù•›4Î!B‚J—×°f•ObMèt¸(N‰â@5}ý¨˜¬ œÄ¤U¾†I+Aö ¤ùÄd¸&TDT„~ ˜¬‘‹œÚžC³ë×E ˆŠA£~Š£€ zG4ŽH€À 8"G$@àˆÛ—hd4·³º t‡^î–ptèg 2Žf£†ëêNÕ¿<êbîÈXÊþF ×ÕÕ?@øö„ŽöW ̪$©zÍ4ÌÕŸyFЖ±Ä^[ €eå¯f½båê?j•/Çg€Aº(;ÙŸˆ:Ú¯KüëZtèqÄüa”Ãrþ­ ¤Æ.³˜c_Ö  Ô8åÕ¿Ä–A¾úã3À`àÙøsà“¶ÊÕoŠC¥ ª é«šÀ8õÇ›ÀÀ мVÈÕ­~ÆÐ0ÄAcûú"‚ÿÉ|íæÞ»6%tEXtdate:create2022-07-14T20:49:43+00:00#e+%tEXtdate:modify1985-10-26T08:15:00+00:00"ÌS(tEXtdate:timestamp2022-07-14T20:51:07+00:00§qÁtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚redmine-6.0.5/app/assets/stylesheets/jquery/jquery-ui-1.13.2.css000066400000000000000000000766031500112024600243110ustar00rootroot00000000000000/*! jQuery UI - v1.13.2 - 2022-07-14 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;-ms-filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666} redmine-6.0.5/app/assets/stylesheets/jstoolbar.css000066400000000000000000000070141500112024600223050ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ .jstBlock .hidden { display: none; } .jstEditor { padding-left: 0px; } .jstEditor textarea, .jstEditor iframe { margin: 0; } .jstHandle { height: 10px; font-size: 0.1em; cursor: s-resize; /*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/ } #content .jstTabs.tabs { margin-bottom: -1px; } #content .jstTabs.tabs ul {border-bottom:0;} #content .jstTabs.tabs li { height: 42px; } #content .jstTabs.tabs li:before{ content: ''; display: inline-block; vertical-align: middle; height: 100%; } #content .jstTabs.tabs li a { display: inline-block; vertical-align: bottom; line-height: 19px; border-bottom: 1px solid transparent; } .jstElements { display: inline-block; vertical-align: bottom; padding-left: 6px; padding-bottom:2px; height: 26px; } .wiki-preview { background-color: #ffffff; border: 1px solid #bbbbbb; } .wiki-preview p.empty-preview {color:#999; font-style:italic; margin-top:1em; text-align:center;} .jstElements button { margin-right: 2px; width : 24px; height: 24px; padding: 4px; border-style: solid; border-width: 1px; border-color: #ddd; background-color : #f7f7f7; background-position : 50% 50%; background-repeat: no-repeat; cursor:pointer; opacity:0.7; } .jstElements button:hover { border-color: #bbb; background-color: #e5e5e5; opacity:1; } .jstElements button span { display : none; } .jstElements span { display : inline; } .jstSpacer { width : 0px; font-size: 1px; margin-right: 6px; } .jstElements .help { float: right; margin-right: 0.5em; padding-top: 8px; font-size: 0.9em; } .jstElements .help a {padding: 2px 0 2px 20px; background: url(./help.png) no-repeat 0 50%;} .table-generator td { border: 2px solid #ccc; background-color: white; padding: 10px; cursor: pointer; } .table-generator td.selected-cell, .table-generator td:hover { background-color: #759FCF; } .table-generator { position: absolute; border-collapse: collapse; } /* Buttons -------------------------------------------------------- */ .jstb_strong { background-image: url(/jstoolbar/bold.svg); } .jstb_em { background-image: url(/jstoolbar/italic.svg); } .jstb_ins { background-image: url(/jstoolbar/underline.svg); } .jstb_del { background-image: url(/jstoolbar/strikethrough.svg); } .jstb_code { background-image: url(/jstoolbar/letter-c.svg); } .jstb_h1 { background-image: url(/jstoolbar/h1.svg); } .jstb_h2 { background-image: url(/jstoolbar/h2.svg); } .jstb_h3 { background-image: url(/jstoolbar/h3.svg); } .jstb_ul { background-image: url(/jstoolbar/list.svg); } .jstb_ol { background-image: url(/jstoolbar/list-numbers.svg); } .jstb_tl { background-image: url(/jstoolbar/list-check.svg); } .jstb_bq { background-image: url(/jstoolbar/indent-increase.svg); } .jstb_unbq { background-image: url(/jstoolbar/indent-decrease.svg); } .jstb_pre::before { content: "pre"; font-size: 10px; color: #333; font-weight: 700 } .jstb_precode { background-image: url(/jstoolbar/code.svg); } .jstb_link { background-image: url(/jstoolbar/wiki_link.svg); } .jstb_img { background-image: url(/jstoolbar/image.svg); } .jstb_table { background-image: url(/jstoolbar/table.svg); } .jstb_help { background-image: url(/jstoolbar/help.svg); } redmine-6.0.5/app/assets/stylesheets/responsive.css000066400000000000000000000432621500112024600225100ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ /*----------------------------------------*\ RESPONSIVE CSS \*----------------------------------------*/ /* CONTENTS A) BASIC MOBILE RESETS B) HEADER & TOP MENUS C) MAIN CONTENT & SIDEBAR D) TOGGLE BUTTON & FLYOUT MENU E) UX ELEMENTS F) PAGE SPECIFIC STYLES G) FORMS */ /* Hide new elements (toggle button and flyout menu) above 900px */ .mobile-toggle-button, .flyout-menu { display: none; } /* redmine's body is set to min-width: 900px add first breakpoint here and start adding responsiveness */ @media screen and (max-width: 899px) { /*----------------------------------------*\ A) BASIC MOBILE RESETS \*----------------------------------------*/ /* apply natural border box, see: http://www.paulirish.com/2012/box-sizing-border-box-ftw/ this helps us to better deal with percentages and padding / margin */ *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body, html { height: 100%; margin: 0; padding: 0; } html { overflow-y: auto; /* avoid 2nd scrollbar on desktop */ -webkit-text-size-adjust: 100%; /* prevent font scaling in landscape mode on webkit */ } body { min-width: 0; /* reset the min-width of 900px */ -webkit-overflow-scrolling: touch; } body, input, select, textarea, button { font-size: 0.875rem; /* Set font-size for standard elements to 0.875rem (14px) */ } select { max-width: 100%; /* prevent long names within select menues from breaking content */ } #wrapper { position: relative; overflow-x: hidden; /* hide horizontal overflow */ max-width: 100%; margin: 0; } /*----------------------------------------*\ B) HEADER & TOP MENUS \*----------------------------------------*/ #header { width: 100%; height: 64px; /* the height of our header on mobile */ min-height: 0; margin: 0; padding: 0; border: none; background-color: #628db6; position: fixed; z-index: 9999; } /* Hide project name on mobile (project name is still visible in select menu) */ #header h1 { display: none !important; } /* reset #header a color for mobile toggle button */ #header a.mobile-toggle-button { color: #f8f8f8; } /* Hide top-menu and main-menu on mobile, because it's placed in our flyout menu */ #top-menu, #header #main-menu { display: none; } /* the quick search within header holding search form and #project_quick_jump_box box*/ #header #quick-search { float: none; clear: none; /* there are themes which set clear property, this resets it */ max-width: 100%; /* reset max-width */ margin: 0; background: inherit; } /* styles for combobox within quick-search (#project_quick_jump_box) */ #project-jump.drdn { position: absolute; top: 0px; left: 0; width: 100%; max-width: 100%; height: 2em; height: 64px; padding: 5px; padding-right: 72px; padding-left: 20px; } #project-jump .drdn-trigger { font-size:1.5em; font-weight:bold; display:block; width:100%; color:#fff; padding-left:24px; background:transparent; height:50px; line-height:40px; border:0; } #project-jump .drdn-trigger:before { /* set a font-size in order to achive same result in different themes */ font-family: var(--fonts-main); font-size: 1.5em; position: absolute; left: 0; padding: 0 8px; /* achieve dropdwon arrow by scaling a caret character */ content: '^'; -webkit-transform: scale(1,-.8); transform: scale(1,-.8); text-align: right; pointer-events: none; opacity: .6; } #project-jump.expanded .drdn-trigger:before { -webkit-transform: scale(1,.8); transform: scale(1,.8); padding-top:8px; } #project-jump .drdn-content { position:absolute; left:0px; top:64px; width:100%; font-size:0.9375rem; font-weight:normal; } #project-jump .drdn-content svg { width: 1.25rem; height: 1.25rem; } #project-jump .drdn-content .autocomplete { height:40px; font-size:1.25rem; padding-left: 28px !important; } #project-jump .drdn-content a { padding:8px; } #header #quick-search form { display: none; } /*----------------------------------------*\ C) MAIN CONTENT & SIDEBAR \*----------------------------------------*/ #main { padding: 64px 0 0; /* padding-top equals header height */ } #main.nosidebar #content, div#content { width: 100%; min-height: 0; /* reset min-height of #content */ margin: 0; } /* hide sidebar and sidebar switch panel, since it's placed in mobile flyout menu */ #sidebar, #sidebar-switch-panel { display: none; } .splitcontentleft, .splitcontentright, .splitcontenttop { width: 100%; flex: auto; margin-right: 0; margin-left: 0; } /*----------------------------------------*\ D) TOGGLE BUTTON & FLYOUT MENU \*----------------------------------------*/ .mobile-toggle-button { font-size: 2.625rem; line-height: 64px; position: relative; z-index: 10; display: block; /* remove display: none; of non-mobile version */ float: right; width: 60px; height: 64px; margin-top: 0; text-align: center; border-left: 1px solid #ddd; } .mobile-toggle-button:hover, .mobile-toggle-button:active { text-decoration: none; } .mobile-toggle-button:after { font-family: var(--fonts-main); display: block; margin-top: -3px; content: '\2261'; } .search-magnifier--flyout { position: absolute; z-index: 1; left: 12px; } /* Flyout Menu */ .flyout-menu { position: absolute; right: -250px; display: block; /* remove display: none; of non-mobile version */ overflow-x: hidden; width: 250px; height: 100%; margin: 0; /* reset margin for themes that define it */ padding: 0; /* reset padding for themes that define it */ color: white; background-color: #3e5b76; } /* avoid zoom on search input focus for ios devices */ .flyout-menu input[type='text'] { font-size: 1rem; } .flyout-menu h3 { font-size: 0.6875rem; line-height: 19px; height: 20px; margin: 0; padding: 0; letter-spacing: .1em; text-transform: uppercase; color: white; border-top: 1px solid #506a83; border-bottom: 1px solid #506a83; background-color: #628db6; } .flyout-menu h4 { color: white; } .flyout-menu h3, .flyout-menu h4, .flyout-menu > p, .flyout-menu > a, .flyout-menu ul li a, .flyout-menu__search, .flyout-menu__sidebar > div, .flyout-menu__sidebar > p, .flyout-menu__sidebar > a, .flyout-menu__sidebar > form, .flyout-menu > div, .flyout-menu > form { padding-left: 8px; } .flyout-menu .flyout-menu__avatar { margin-top: -1px; /* move avatar up 1px */ padding-left: 0; } .flyout-menu__sidebar > form { display: block; } .flyout-menu__sidebar > form h3 { margin-left: -8px; } .flyout-menu__sidebar > form label { display: inline-block; margin: 8px 0; } .flyout-menu__sidebar > form br br { display: none; } /* Targets list containing checkboxes (e.g. activities sidebar) in flyout menu */ .flyout-menu__sidebar form > ul { margin-left: -8px; padding-left: 0; } .flyout-menu__sidebar form > ul li { line-height: 39px; display: block; padding-left: 8px; border-top: 1px solid rgba(255,255,255,.1); } .flyout-menu__sidebar form > ul li:first-child { border-top: none; } .flyout-menu__sidebar form > ul li label { margin: 0; } .flyout-menu__sidebar form > ul li label a { line-height: 1; display: inline; padding-left: 0; border: none; } .flyout-menu ul { margin: 0; padding: 0; list-style: none; } .flyout-menu #watchers { display: -webkit-flex; display: -webkit-box; display: flex; flex-direction: column; -webkit-flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; } .flyout-menu #watchers .contextual { -webkit-box-ordinal-group: 4; -webkit-order: 3; order: 3; } .flyout-menu #watchers h3 { margin-left: -8px; } .flyout-menu #watchers ul li { display: -webkit-flex; display: -webkit-box; display: flex; flex-direction: row; -webkit-flex-direction: row; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-align-items: center; -webkit-box-align: center; align-items: center; } .flyout-menu ul li a { line-height: 40px; display: block; overflow: hidden; height: 40px; white-space: nowrap; text-overflow: ellipsis; border-top: 1px solid rgba(255,255,255,.1); } .flyout-menu ul li:first-child a { line-height: 39px; height: 39px; border-top: none; } .flyout-menu a { color: white; } .flyout-menu .icon svg { stroke: white; } .flyout-menu ul li a:hover { text-decoration: none; } .flyout-menu ul li a.new-object, .new-object ~ .menu-children { display: none; } /* Left flyout search container */ .flyout-menu__search { line-height: 54px; height: 64px; padding-top: 3px; padding-right: 8px; } .flyout-menu__search input[type='text'] { line-height: 2; width: 100%; height: 38px; padding-left: 27px; vertical-align: middle; border: none; -webkit-border-radius: 3px; border-radius: 3px; background-color: #fff; } .flyout-menu__avatar { display: -webkit-box; display: -webkit-flex; display: flex; width: 100%; border-top: 1px solid rgba(255,255,255,.1); } .flyout-menu__avatar img.gravatar { width: 40px; height: 40px; padding: 0; vertical-align: top; border-width: 0; } .flyout-menu__avatar a { line-height: 40px; height: auto; height: 40px; text-decoration: none; color: white; } /* avatar */ .flyout-menu__avatar a:first-child { line-height: 0; width: 40px; padding: 0; } .flyout-menu__avatar .user { padding-left: 15px; padding-right: 15px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; -webkit-flex-grow: 1; flex-grow: 1; } /* user link when no avatar is present */ .flyout-menu__avatar--no-avatar a.user { line-height: 40px; padding-left: 8px; } .flyout-is-active body { overflow: hidden; /* for body not to have scrollbars when left flyout menu is active */ } html.flyout-is-active { overflow: hidden; } .flyout-is-active #wrapper, .flyout-is-active #header { right: 250px; /* when left flyout is active, move body and header to the right (same amount like flyout-menu's width) */ } .flyout-is-active #wrapper { overflow: visible; height: 100%; } .flyout-is-active .mobile-toggle-button:after { content: '\00D7'; /* close glyph */ } .flyout-is-active #main { /* * only relevant for devices with cursor when flyout it active, in order to show, * that whole wrapper content is clickable and closes flyout menu */ cursor: pointer; } #admin-menu { padding-left: 0; } #admin-menu li { padding-bottom: 0; } #admin-menu a, #admin-menu a.selected { line-height: 40px; padding: 0; } #admin-menu a.icon:not(:has(svg)) { padding-left: 20px !important; } /*----------------------------------------*\ E) UX ELEMENTS \*----------------------------------------*/ .mobile-hide {display:none;} .mobile-show {display:initial;} /* Contextual Buttons */ #content>.contextual { width: 100%; margin-bottom: .5em; padding-left: 0; /* reset left padding in order to use whole space */ white-space: normal; } #content>.contextual>a, #content>.contextual .drdn, p.buttons a { font-weight: bold; display: inline-flex; margin: 5px 0; margin-right: 2px; padding: 9px 9px 9px 9px; border: 1px solid #ddd; -webkit-border-radius: 3px; border-radius: 3px; } #content>.contextual .drdn-content { right:initial; left:0px; top:40px; } #content>.contextual .drdn .drdn-content a { padding-top: 9px; padding-bottom: 9px; } #content>.contextual a.icon:not(:has(svg)), p.buttons a.icon:not(:has(svg)) { background-position-x: 4px; padding-left: 25px; } .flyout-menu .contextual { float: none; } /* loading indicator */ #ajax-indicator { width: 60%; left: 20%; } /* jquery ui dialogs */ .ui-dialog { max-width: 98%; margin: 1%; } .ui-dialog .ui-dialog-content { padding-left: 0; padding-right: 0; } #filters-table {width:100%; float:none;} .add-filter {width:100%; float:none; text-align: left; margin-top: 8px;} /*----------------------------------------*\ F) PAGE SPECIFIC STYLES \*----------------------------------------*/ /* some themes add a margin to login page, remove it on mobile */ .action-login #main { margin: 0; } div#activity dl, #search-results {margin-left: 0;} .version-overview table.progress {width:75%;} div#version-summary {float:none; width:100%; margin-left:0;} body.controller-versions.action-show div#roadmap .related-issues {width:100%;} /* History and Changeset */ div#issue-changesets { float: none; width: auto; margin-left: 0; padding-left: 0; margin-bottom: 2em; } div#issue-changesets div.changeset { padding-top: 1em; } /* Gantt charts */ /* * [1] override inline styles with important * [2] keep border between subjects and gantt area * [3] remove whitespace between subjects and gantt area * [4] maintain width due to [3] */ .gantt_subjects_column { width: 60% !important; /* [1] */ } .gantt_subjects_container { width: 100% !important; overflow: hidden; } .gantt_subjects_column .gantt_hdr { width: 100% !important; right: 0 !important; /* [2] */ border-right: solid 1px #c0c0c0; } #gantt_area { left: -2px; /* [3] */ margin-right: -2px; /* [4] */ } /*----------------------------------------*\ G) FORMS \*----------------------------------------*/ input, select, textarea { max-width: 100%; } /* tabular forms resets for mobile */ .tabular p, .tabular.settings p { padding-left: 0; } .tabular label, .tabular.settings label { display: block; width: 100%; margin-left: 0; text-align: left; } .tabular input, .tabular select, .tabular textarea { width: 100%; max-width: 100%; } .tabular input[type="checkbox"], .tabular input.date { width: auto; max-width: 95%; } /* new issue form */ #all_attributes p:first-child { float: none !important; } #all_attributes #issue_tracker_id { width: 90%; } #issue_is_private_label { display: inline; } span#watchers_inputs { width: 100%; } /* issue edit form */ label[for='issue_description'] ~ a .icon-edit { word-wrap: normal; } /* issues page */ body.controller-issues p.query-totals { margin-top: 0px; text-align: left; } /* subtasks and related issues list on issue show */ #issue_tree .issues, #relations .issues { border-collapse: separate; border-spacing: 0 1em; /* vertical space between tasks */ } #issue_tree .issue > td:not(.checkbox), #relations .issue > td:not(.checkbox) { display: block; float: left; text-align: left; padding-right: 5px; } #issue_tree .issue > td.subject, #relations .issue > td.subject { width: 100%; /* let subject have one full width column */ } #issue_tree .issue:has(.buttons a) > td.subject, #relations .issue:has(.buttons a) > td.subject { padding-right: 40px; } #issue_tree .issue > td:not(.subject), #relations .issue > td:not(.subject) { width: 20%; /* three columns for all cells that are not subject */ } #issue_tree .issues, #issue_tree .issue, #relations .issues, #relations .issue { position: relative; /* needed for .buttons positioning */ } /* positioniong of unline button */ #issue_tree .issue > td.buttons, #relations .issue > td.buttons { text-align: right; position: absolute; right: 0; margin: 0; padding-right: 0; } #issue_tree .issue .buttons a, #relations .issue .buttons a { vertical-align: middle; } /* attachment upload form */ .attachments_fields span { position: relative; clear: both; margin-bottom: 1em; white-space: normal; } .attachments_fields span a.remove-upload { position: absolute; top: 0; right: 0; } .attachments_fields input.description { margin-left: 0; width: 100%; } /* Calendar */ ul.cal { display: block } .cal .calhead { display: none } .cal .calbody { min-height: calc(1.2em * 3); } .cal .calbody .abbr-day { display: inline; } .cal .week-number { border: 1px solid #c0c0c0; text-align: left; font-weight: bold; background-color: #def; } .cal .week-number .label-week { display: inline; } .cal .calbody p.day-num { font-size: 1.1em; text-align: left; } } @media all and (max-width: 599px) { span.pagination {text-align:center;} .pagination ul.pages li {display:none;} .pagination ul.pages li.current, .pagination ul.pages li.previous, .pagination ul.pages li.next {display:inline-block; width:32%; overflow:hidden;} #login-form {width:100%; margin-top:2em;} #filters-table .filter .field, #list-definition > div .field { width: 100%; } #filters-table .values { width: auto; max-width: 100%; } } redmine-6.0.5/app/assets/stylesheets/rtl.css000066400000000000000000000340071500112024600211110ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ html {direction:rtl;} h1, h2, h3, h4 {padding:2px 00px 1px 10px;} /***** Layout *****/ #top-menu {padding:2px 6px 0px 2px;} #top-menu li {float:right;} #top-menu a {margin-right:0;margin-left:8px;} #top-menu #loggedas {float:left;margin-right:0;margin-left:0.5em;} #account {float:left;} #header {padding:4px 6px 20px 8px;} #quick-search {float:left;} #main-menu {left:auto;right:6px;margin-right:0;margin-left:-500px;} #main-menu li {float:right;margin:0px 0px 0px 2px;} #admin-menu a:not(:has(svg)) {padding-left:0;padding-right:20px;} #sidebar {float:left; padding-right: 20px; padding-left: 8px; border-left: 0; border-right: 1px solid #d0d7de;} * html #sidebar hr {left: auto; right: -6px;} #main.collapsedsidebar #sidebar { padding-left: 0; padding-right: 20px; } #sidebar .contextual { margin-right: 0; margin-left: 1em;} #sidebar ul li {margin: 0 0 0 2px;} #sidebar #sidebar-switch-panel { margin-left: 0; margin-right: -20px; padding-left: 28px; padding-right: 0; } #sidebar #sidebar-switch-panel #sidebar-switch-button { padding-right: 0; padding-left: 28px; } #content {border-right:0 solid #ddd; border-left:1px solid #ddd;} * html #content{padding-right:0;} #main.nosidebar #content{border-left:0;} #login-form table {margin-left:auto; margin-right:auto;} div.modal p.buttons {text-align:left;} /***** Links *****/ #sidebar a.selected {padding:1px 2px 2px 3px; margin-left:0px; margin-right:-2px;} #admin-menu a.selected:not(:has(svg)) {padding-left:0!important; padding-right:20px!important; background-position:right 2px 40%;} a.collapsible:not(:has(svg)) {padding-left:0px; padding-right:12px; background: url(/arrow_down.png) no-repeat right 0px top 50%;} a.collapsible.collapsed:not(:has(svg)) {background-image: url(/arrow_left.png);} /***** Tables *****/ table.list td {padding-left:0px; padding-right:10px;} table.list td.name, table.list td.description, table.list td.subject, table.list td.comments, table.list td.roles {text-align:right;} table.list td.buttons {text-align:left; } table.list td.buttons a {padding-right: 0em; padding-left: 0.6em;} table.list caption {text-align:right; padding: 0.5em 0 0.5em 0.5em;} tr.project.idnt td.name span {padding-right:0px; padding-left:16px;} tr.project.idnt-1 td.name {padding-left:0; padding-right:0.5em;} tr.project.idnt-2 td.name {padding-left:0; padding-right:2em;} tr.project.idnt-3 td.name {padding-left:0; padding-right:3.5em;} tr.project.idnt-4 td.name {padding-left:0; padding-right:5em;} tr.project.idnt-5 td.name {padding-left:0; padding-right:6.5em;} tr.project.idnt-6 td.name {padding-left:0; padding-right:8em;} tr.project.idnt-7 td.name {padding-left:0; padding-right:9.5em;} tr.project.idnt-8 td.name {padding-left:0; padding-right:11em;} tr.project.idnt-9 td.name {padding-left:0; padding-right:12.5em;} tr.issue td.subject, tr.issue td.relations, tr.issue td.watcher_users { text-align:right; } tr.issue td.done_ratio table.progress { margin-left:auto; margin-right: auto;} table.issues td.description {padding:4px 24px 4px 4px; text-align:right;} tr.issue.idnt td.subject a {padding-left: 0; padding-right: 16px;} tr.issue.idnt-1 td.subject {padding-left:0; padding-right: 0.5em;} tr.issue.idnt-2 td.subject {padding-left:0; padding-right: 2em;} tr.issue.idnt-3 td.subject {padding-left:0; padding-right: 3.5em;} tr.issue.idnt-4 td.subject {padding-left:0; padding-right: 5em;} tr.issue.idnt-5 td.subject {padding-left:0; padding-right: 6.5em;} tr.issue.idnt-6 td.subject {padding-left:0; padding-right: 8em;} tr.issue.idnt-7 td.subject {padding-left:0; padding-right: 9.5em;} tr.issue.idnt-8 td.subject {padding-left:0; padding-right: 11em;} tr.issue.idnt-9 td.subject {padding-left:0; padding-right: 12.5em;} tr.entry td.filename {text-align:right;} tr.entry td.filename_no_report {text-align:right;} tr.entry td.size {text-align:left;} tr.entry td.age {text-align:left;} tr.entry.file td.filename a {margin-left:0px; margin-right:16px;} tr.entry.file td.filename_no_report a {margin-left:0px; margin-right:16px;} tr span.expander {padding-left:0; padding-right:8px; margin-right:0;} table.files tbody th {text-align:right;} table.files tr.file td.filename {text-align:right; padding-left:0; padding-right:24px;} tr.message td.subject { padding-left:0px; padding-right:20px; } tr.version td.name { padding-left:0px; padding-right:20px; } tr.user td.username, tr.user td.firstname, tr.user td.lastname, tr.user td.email {text-align:right;} tr.time-entry td.issue, tr.time-entry td.comments {text-align:right; } td.hours {text-align:left; padding-right: 0em ;padding-left: 0.5em; } table.plugins td.configure { text-align:left; padding-right:0em; padding-left: 1em; } table.list tbody tr.group td { padding: 0.8em 0.3em 0.5em 0; text-align:right;} table.list tbody tr.group span.count {margin-left:0px; margin-right:4px;} a.sort {padding-right:0; padding-left:16px;} table.attributes th {text-align:right;} table.boards a.board, h3.comments {padding-left:0px; padding-right:20px; } table.boards td.last-message {text-align:right;} table.messages td.last_message {text-align:right;} h3.version {padding-left:0px; padding-right:20px;} div.issues h3 {padding-left:0px; padding-right:20px;} div.members h3 {padding-left:0px; padding-right:20px;} div.news h3 {padding-left:0px; padding-right:20px;} div.projects h3 {padding-left:0px; padding-right:20px;} #watchers li {margin: 0px 0px 0px 2px; padding: 0px 0px 0px 0px;} #watchers img.gravatar {margin: 0 0 2px 4px;} span.search_for_watchers a:not(:has(svg)), span.add_attachment a:not(:has(svg)) {padding-left:0px; padding-right:16px; background: url(/bullet_add.png) no-repeat right 50%; } div.square {float:right;} .contextual {float:left; padding-left:0px; padding-right:10px;} .splitcontentleft{float:right;} .splitcontentright{float:left;} blockquote {border-left:0px solid #e0e0e0; padding-left:0em; margin-left:2em; border-right:3px solid #e0e0e0; padding-right:0.6em; margin-right:0;} blockquote blockquote { margin-right:0;} div.issue div.subject div div {padding-left:0px; padding-right:16px;} div.issue span.private, div.journal span.private {margin-right:0px; margin-left:2px;} fieldset.collapsible>legend:not(:has(svg)) {padding-left:0px; padding-right:18px; background: url(/arrow_down.png) no-repeat right 50%;} fieldset.collapsible.collapsed>legend:not(:has(svg)) { background-image: url(/arrow_left.png); } fieldset#filters td.add-filter {text-align:left; } div#issue-changesets {float:left; margin-left:0em; margin-right:1em; padding-left:0em; padding-right:1em;} .journal ul.details img {margin:0 4px -3px 0;} div.journal.private-notes {border-left:0px solid #d22; padding-left:0px; margin-left:0px; border-right:2px solid #d22; padding-right:4px; margin-right:-6px;} div#activity dl, #search-results {margin-left:0em; margin-right:2em;} div#activity dd, #search-results dd {padding-left:0px; padding-right:18px;} div#activity dt, #search-results dt {padding-left:0px; padding-right:20px; background-position:right 50%;} div#activity dt.grouped {margin-left:0em; margin-right:5em;} div#activity dd.grouped {margin-left:0em; margin-right:9em;} #search-results dd {padding-left:0px; margin-left:0px; padding-right:20px; margin-right:0px; } div#search-results-counts {float:left;} div#search-results-counts li {float:right; margin-left:0em; margin-right:1em; } div#version-summary { float:left; margin-left:0px; margin-right:16px;} div#version-summary th, div#version-summary td.total-hours { text-align:left;} table#time-report td.hours, table#time-report th.period, table#time-report th.total { text-align:left; padding-right:0em; padding-left: 0.5em; } ul.projects {padding-left:0em; padding-right:1em;} ul.projects ul {padding-left:0em; padding-right:1.6em;} #projects-index ul.projects ul.projects {border-left:0px solid #e0e0e0; padding-left:0em; border-right:3px solid #e0e0e0; padding-right:1em;} .my-project { padding-left:0px; padding-right:18px; background: url(/fav.png) no-repeat right 50%; } /***** Tabular forms ******/ .tabular p{ padding-left:0px; padding-right:180px; /* width of left column containing the label elements */ clear:right; } .tabular label{ float:right; text-align:left; /* width of left column */ margin-left:0px; margin-right:-180px; } .tabular label.floating{ margin-left: 0px; margin-right:0px; text-align:right; } .tabular label.block{ margin-left:0px !important; margin-right:0px !important; text-align:right; } .tabular label.inline{ margin-left:0px !important; margin-right:5px !important; } label.no-css { text-align:right; margin-left:0px; margin-right:0px; } .tabular.settings p{padding-left:0px; padding-right:300px; } .tabular.settings label{margin-left:0px; margin-right:-300px;} fieldset#notified_events .parent {padding-left:0px; padding-right:20px; } .check_box_group {padding:2px 2px 4px 4px;} .check_box_group label {margin-right: 0px !important; text-align: right;} .attachments_fields input.description {margin-left:0px; margin-right:4px;} .attachments_fields input.filename {background:url(/attachment.png) no-repeat right 1px top 50%; padding-left:0px; padding-right:18px;} .attachments_fields .ajax-waiting input.filename {background:url(/hourglass.png) no-repeat right top 50%;} .attachments_fields .ajax-loading input.filename {background:url(/loading.gif) no-repeat right top 50%;} .attachments_fields div.ui-progressbar {margin: 2px 8px -5px 0;} a.remove-upload {background: url(/delete.png) no-repeat right 1px top 50%; padding-left:0px; padding-right:16px;} div.thumbnails div {margin-right:0px; margin-left:2px;} p.other-formats { text-align:left; } a.atom { background: url(/feed.png) no-repeat right 1px top 50%; padding: 2px 16px 3px 0; } em.info.error {padding-left:0; padding-right:20px; background:url(/exclamation.png) no-repeat right 50%;} table.members td.name {padding-right: 20px; padding-left:0; } table.members td.group, table.members td.groupnonmember, table.members td.groupanonymous {background: url(/group.png) no-repeat right 50%;} input.autocomplete { background: #fff url(/search.svg) no-repeat right 2px top 50%; padding-left:0px !important; padding-right:20px !important; } .role-visibility {padding-right:2em; padding-left:0;} /***** Flash & error messages ****/ #errorExplanation, div.flash, .nodata, .warning, .conflict { padding: 4px 30px 4px 4px; } div.flash svg.icon-svg, #errorExplanation svg.icon-svg { margin-right: -26px; margin-left: 4px; } div.flash.error:not(:has(svg)), #errorExplanation:not(:has(svg)) { background: url(/exclamation.png) right 8px top 50% no-repeat #ffe3e3; } div.flash.notice:not(:has(svg)) { background: url(/true.png) right 8px top 5px no-repeat #dfffdf; } div.flash.warning:not(:has(svg)), .conflict { background: url(/warning.png) right 8px top 5px no-repeat #F3EDD1; text-align:right; } /***** Ajax indicator ******/ #ajax-indicator { left:auto; right:40%; } #ajax-indicator span { background-position: right 40%; background-image: url(/loading.gif); padding-left:0px; padding-right:26px; } /***** Calendar *****/ table.cal td p.day-num {text-align:left;} table.cal .starting a, p.cal.legend .starting {background: url(/bullet_go.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;} table.cal .ending a, p.cal.legend .ending {background: url(/bullet_end.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;} table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(/bullet_diamond.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;} /***** Tooltips ******/ .tooltip span.tip{text-align:right;} div.tooltip:hover span.tip{ left:auto; right:24px; } img.ui-datepicker-trigger { margin-left:0px; margin-right:4px; } /***** Progress bar *****/ table.progress { float:right; margin: 1px 0px 1px 6px; } p.progress-info {clear:right;} /***** Tabs *****/ #content .tabs ul {padding-left:0em; padding-right:0.5em;} #content .tabs ul li { float:right; margin-right:0px; margin-left:4px; } div.tabs-buttons {right:auto; left:0;} button.tab-left { right:auto; left:20px; } button.tab-right { right:auto; left:20px; } /***** Diff *****/ /***** Wiki *****/ div.wiki .external { background-position:right 60%; padding-left:0px; padding-right:12px; } div.wiki pre { margin: 1em 1.6em 1em 1em; } div.wiki ul.toc { margin-left:0; margin-right:0; } div.wiki ul.toc.right { float: left; margin-left:0; margin-right:12px;} div.wiki ul.toc.left { float:right; margin-right:0; margin-left:12px;} div.wiki ul.toc li li {margin-left:0em; margin-right:1.5em;} a.wiki-anchor {margin-left:0px; margin-right:6px;} /***** My page layout *****/ /***** Gantt chart *****/ .gantt_hdr { border-right:0px solid #c0c0c0; border-left:1px solid #c0c0c0; } .task.parent.marker.starting{margin-left:0px; margin-right:-4px; left:auto; right:0;} .task.parent.marker.ending {margin-left:0px; margin-right:-4px; right:auto; left:0px;} .version.marker {margin-left:0; margin-right:-4px;} .project.marker {margin-left:0; margin-right:-4px;} /***** Icons *****/ .icon:not(:has(svg)) { background-position: right 50%; padding-left:0; padding-right:20px; } svg.icon-svg.icon-rtl { transform: scaleX(-1); } div.issue img.gravatar { float: right; margin: 0 0 0 6px; } div.issue table img.gravatar { float: right; margin: 0 0em 0 0.5em; } span.icon-label { margin-right: 4px; } h2 img.gravatar {margin: -2px 0 -4px 4px;} h3 img.gravatar {margin: -4px 0 -4px 4px;} h4 img.gravatar {margin: -6px 0 -4px 4px;} td.username img.gravatar {margin:0 0 0 0.5em; } #activity dt img.gravatar {float:right; margin:0 0 1em 1em;} /* Used on 12px Gravatar img tags without the icon background */ .icon-gravatar {float:right; margin-right:px; margin-left:4px;} #activity dt, .journal {clear:right;} .journal-link {float:left;} /* Custom JQuery styles */ .ui-datepicker-title select {margin-left:4px !important; margin-right:0 !important;} /***** Media print specific styles *****/ /* Accessibility specific styles */ .hidden-for-sighted { left:auto; right:-10000px; } redmine-6.0.5/app/assets/stylesheets/scm.css000066400000000000000000000122371500112024600210730ustar00rootroot00000000000000/** * Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * This code is released under the GNU General Public License. */ table.entries a { padding-top: 2px; padding-bottom: 2px; } table.revision-info td { margin: 0px; padding: 0px; } div.revision-graph { position: absolute; min-width: 1px; } div.changeset-changes ul { margin: 0; padding: 0; } div.changeset-changes ul > ul { margin-left: 18px; padding: 0; } div.changeset-changes ul:first-child > li {padding-left: 0} li.change { list-style-type:none; padding-top: 1px; padding-bottom: 1px; padding-left: 20px; margin: 0; } li.change:not(:has(svg)) { background-image: url(/bullet_black.png); background-position: 1px 2px; background-repeat: no-repeat; } li.change.folder:not(:has(svg)) { background-image: url(/folder_open.png); } li.change.folder.change-A { background-image: url(/folder_open_add.png); } li.change.folder.change-M { background-image: url(/folder_open_orange.png); } li.change.change-A:not(:has(svg)) { background-image: url(/bullet_add.png); } li.change.change-A svg.icon-svg { fill: #5db651; stroke: #ffffff; } li.change.change-M:not(:has(svg)) { background-image: url(/bullet_orange.png); } li.change.change-M svg.icon-svg { fill: #f0a810; stroke: #ffffff; } li.change.change-C:not(:has(svg)) { background-image: url(/bullet_blue.png); } li.change.change-C svg.icon-svg { fill: #049cec; stroke: #ffffff; } li.change.change-R:not(:has(svg)) { background-image: url(/bullet_purple.png); } li.change.change-R svg.icon-svg { fill: #8404ee; stroke: #ffffff; } li.change.change-D:not(:has(svg)) { background-image: url(/bullet_delete.png); } li.change.change-D svg.icon-svg { fill: #c61a1a; stroke: #ffffff; } li.change .copied-from { font-style: italic; color: #999; font-size: 0.9em; } li.change .copied-from:before { content: " - "} #changes-legend { float: right; font-size: 0.75rem; margin: 0; } #changes-legend li { float: left; background-position: 5px 1px; } table.filecontent { border: 1px solid #e2e2e2; border-collapse: collapse; width:98%; background-color: #fafafa; } table.filecontent tbody {font-family:Consolas, Menlo, "Liberation Mono", Courier, monospace; font-size:0.75rem;} table.filecontent th { border: 1px solid #e2e2e2; background-color: #eee; } table.filecontent th.filename { background-color: #e4e4d4; text-align: left; padding:5px;} table.filecontent tr.spacing th { text-align:center; } table.filecontent tr.spacing td { height: 0.4em; background: #EAF2F5;} table.filecontent th.line-num { border: 1px solid #e2e2e2; text-align: right; width: 2%; padding: 0 3px 0 0; color: #999; user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; -webkit-user-select: none; font-weight:normal; } table.filecontent th.line-num a { text-decoration: none; color: inherit; } table.filecontent th.line-num a:after { content: attr(data-txt); } table.diffcontent th.line-num:after { content: attr(data-txt); } table.filecontent td.line-code {padding: 0 0 0 4px;} table.filecontent td.line-code pre, table.filecontent td.line-code div { margin: 0px; white-space: pre-wrap; font-family:Consolas, Menlo, "Liberation Mono", Courier, monospace; font-size:0.75rem; } table.filecontent tr:target th.line-num { background-color:#E0E0E0; color: #777; } table.filecontent tr:target td.line-code { background-color:#DDEEFF; } img.filecontent, video.filecontent { max-width: 100%; } .previous-filename { font-weight: normal; } /* 12 different colors for the annonate view */ table.annotate tr.bloc-0 td.line-code {border-left-color: #FFFFBF;} table.annotate tr.bloc-1 td.line-code {border-left-color: #EABFFF;} table.annotate tr.bloc-2 td.line-code {border-left-color: #BFFFFF;} table.annotate tr.bloc-3 td.line-code {border-left-color: #FFD9BF;} table.annotate tr.bloc-4 td.line-code {border-left-color: #E6FFBF;} table.annotate tr.bloc-5 td.line-code {border-left-color: #BFCFFF;} table.annotate tr.bloc-6 td.line-code {border-left-color: #FFBFEF;} table.annotate tr.bloc-7 td.line-code {border-left-color: #FFE6BF;} table.annotate tr.bloc-8 td.line-code {border-left-color: #FFE680;} table.annotate tr.bloc-9 td.line-code {border-left-color: #AA80FF;} table.annotate tr.bloc-10 td.line-code {border-left-color: #FFBFDC;} table.annotate tr.bloc-11 td.line-code {border-left-color: #BFE4FF;} table.annotate tr.bloc-change {border-top:1px solid #e5e5e5;} table.annotate td.revision { padding:0; text-align: center; width: 2%; padding-left: 1em; background: inherit; } table.annotate td.author { padding:0; text-align: center; white-space: nowrap; padding-left: 1em; padding-right: 1em; width: 3%; background: inherit; } table.annotate td.previous { padding: 0; text-align: center; width: 1%; background: inherit; } table.annotate td.line-code { background-color: #fafafa; border-left: 6px solid #d7d7d7; } div.action_M { background: #fd8 } div.action_D { background: #f88 } div.action_A { background: #bfb } .breadcrumbs>.separator::before, .breadcrumbs>.separator::after { content: " "; } redmine-6.0.5/app/assets/stylesheets/tribute-5.1.3.css000066400000000000000000000011061500112024600224220ustar00rootroot00000000000000.tribute-container { position: absolute; top: 0; left: 0; height: auto; max-height: 300px; max-width: 500px; overflow: auto; display: block; z-index: 999999; } .tribute-container ul { margin: 0; margin-top: 2px; padding: 0; list-style: none; background: #efefef; } .tribute-container li { padding: 5px 5px; cursor: pointer; } .tribute-container li.highlight { background: #ddd; } .tribute-container li span { font-weight: bold; } .tribute-container li.no-match { cursor: default; } .tribute-container .menu-highlighted { font-weight: bold; } redmine-6.0.5/app/assets/stylesheets/wiki_syntax.css000066400000000000000000000035111500112024600226550ustar00rootroot00000000000000@font-face { font-family: "Noto Sans"; src: url("/NotoSans-VariableFont_wdth,wght.woff2") format("woff2"); font-weight: 100 900; font-stretch: 75% 125%; font-style: normal; font-display: swap; } @font-face { font-family: "Noto Sans"; src: url("/NotoSans-Italic-VariableFont_wdth,wght.woff2") format("woff2"); font-weight: 100 900; font-stretch: 75% 125%; font-style: italic; font-display: swap; } :root { --fonts-main: "Noto Sans", sans-serif; } h1 { font-family: var(--fonts-main); font-size: 0.875rem; text-align: center; color: #444; } body { font-family: var(--fonts-main); font-size: 0.75rem; color: #444; } pre, code {font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; } table th { padding-top: 1em; } table th img { border: 1px solid #bbb; opacity: 0.7; } table th .syntax-pre { display: inline-block; border: 1px solid #bbb; width: 18px; height: 18px; } table th .syntax-pre:before { content: "pre"; font-size: 0.625rem; color: #666; } table td { background-color: #f5f5f5; height: 2em; vertical-align: middle;} table td code { font-size: 1.2em; } table td h1 { font-size: 1.8em; text-align: left; } table td h2 { font-size: 1.4em; text-align: left; } table td h3 { font-size: 1.2em; text-align: left; } table.sample { border-collapse: collapse; border-spacing: 0; margin: 4px; } table.sample th, table.sample td { border: solid 1px #bbb; padding: 4px; height: 1em; } a, a:link, a:visited{ color: #169; text-decoration: none; } a:hover, a:active{ color: #c61a1a; text-decoration: underline;} .syntaxhl .mi { color: #0000DD; font-weight: bold } .syntaxhl .nf { color: #0066BB; font-weight: bold } .syntaxhl .k { color: #008800; font-weight: bold } .syntaxhl .nb { color: #007020 } .syntaxhl .s1 { background-color: #fff0f0 } span.more_info { font-weight: normal; } redmine-6.0.5/app/assets/stylesheets/wiki_syntax_detailed.css000066400000000000000000000032101500112024600245040ustar00rootroot00000000000000@font-face { font-family: "Noto Sans"; src: url("/NotoSans-VariableFont_wdth,wght.woff2") format("woff2"); font-weight: 100 900; font-stretch: 75% 125%; font-style: normal; font-display: swap; } @font-face { font-family: "Noto Sans"; src: url("/NotoSans-Italic-VariableFont_wdth,wght.woff2") format("woff2"); font-weight: 100 900; font-stretch: 75% 125%; font-style: italic; font-display: swap; } :root { --fonts-main: "Noto Sans", sans-serif; } body { font-family: var(--fonts-main); font-size: 0.875rem; color:#333; line-height: 1.6;} pre, code { font-family: Consolas, Menlo, "Liberation Mono", Courier, monospace; } pre { margin: 1em 1em 1em 1.6em; padding: 2px; background-color: #fafafa; border: 1px solid #e2e2e2; width: auto; overflow-x: auto; overflow-y: hidden; line-height: normal; } a, a:link, a:visited{ color: #169; text-decoration: none; } a:hover, a:active{ color: #c61a1a; text-decoration: underline;} a.new { color: #b73535; } table.sample { border-collapse: collapse; border-spacing: 0; margin: 4px; margin-left: 30px;} table.sample th, table.sample td { border: solid 1px #bbb; padding: 4px; height: 1em; } table.list td { background-color: #f5f5f5; vertical-align: middle; padding: 0.3em;} .syntaxhl .c1 { color: #888888 } .syntaxhl .k { color: #008800; font-weight: bold } .syntaxhl .nc { color: #BB0066; font-weight: bold } .syntaxhl .nf { color: #0066BB; font-weight: bold } .syntaxhl .nb { color: #007020 } .syntaxhl .vi { color: #3333BB } .syntaxhl .o { color: #333333 } .syntaxhl .s2 { background-color: #fff0f0 } .syntaxhl .si { background-color: #eeeeee } redmine-6.0.5/app/assets/themes/000077500000000000000000000000001500112024600165035ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/alternate/000077500000000000000000000000001500112024600204625ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/alternate/stylesheets/000077500000000000000000000000001500112024600230365ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/alternate/stylesheets/application.css000066400000000000000000000105251500112024600260560ustar00rootroot00000000000000/* Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ @import url(/application.css); body, #wrapper { background-color:#EEEEEE; } #header, #top-menu { margin: 0px 10px 0px 11px; } #main { background: #EEEEEE; margin: 8px 10px 0px 10px; } #content, #main.nosidebar #content { background: #fff; border-right: 1px solid #bbb; border-bottom: 1px solid #bbb; border-left: 1px solid #d7d7d7; border-top: 1px solid #d7d7d7; } #footer { background-color:#EEEEEE; border: 0px; } /* Headers */ h2, h3, h4, .wiki h1, .wiki h2, .wiki h3 {border-bottom: 0px;} /* Menu */ #main-menu li a { background-color: #507AAA; font-weight: bold;} #main-menu li a:hover { background: #507AAA; text-decoration: underline; } #main-menu li a.selected, #main-menu li a.selected:hover { background-color:#EEEEEE; } #main-menu li a.new-object { background-color:#507AAA; text-decoration: none; } #main-menu .menu-children { border-right: 1px solid #507AAA; border-bottom: 1px solid #507AAA; border-left: 1px solid #507AAA; } #main-menu .menu-children li a:hover { background-color: #507AAA;} /* Tables */ table.list tbody td, table.list tbody tr:hover td { border: solid 1px #d7d7d7; } table.list thead th { border-width: 1px; border-style: solid; border-top-color: #d7d7d7; border-right-color: #d7d7d7; border-left-color: #d7d7d7; border-bottom-color: #999999; } /* Issues grid styles by priorities (provided by Wynn Netherland) */ table.list tr.issue a { color: #666; } tr.odd.priority-highest, table.list tbody tr.odd.priority-highest:hover { color: #900; font-weight: bold; } tr.odd.priority-highest { background: #ffd4d4; } tr.even.priority-highest, table.list tbody tr.even.priority-highest:hover { color: #900; font-weight: bold; } tr.even.priority-highest { background: #ffc4c4; } tr.priority-highest a, tr.priority-5:hover a { color: #900; } tr.odd.priority-highest td, tr.even.priority-highest td { border-color: #ffb4b4; } tr.odd.priority-high2, table.list tbody tr.odd.priority-high4:hover { color: #900; } tr.odd.priority-high2 { background: #ffd4d4; } tr.even.priority-high2, table.list tbody tr.even.priority-high4:hover { color: #900; } tr.even.priority-high2 { background: #ffc4c4; } tr.priority-high2 a { color: #900; } tr.odd.priority-high2 td, tr.even.priority-high4 td { border-color: #ffb4b4; } tr.odd.priority-high3, table.list tbody tr.odd.priority-high3:hover { color: #900; } tr.odd.priority-high3 { background: #fff2f2; } tr.even.priority-high3, table.list tbody tr.even.priority-high3:hover { color: #900; } tr.even.priority-high3 { background: #fee; } tr.priority-high3 a { color: #900; } tr.odd.priority-high3 td, tr.even.priority-high3 td { border-color: #fcc; } tr.odd.priority-lowest, table.list tbody tr.odd.priority-lowest:hover { color: #559; } tr.odd.priority-lowest { background: #f2faff; } tr.even.priority-lowest, table.list tbody tr.even.priority-lowest:hover { color: #559; } tr.even.priority-lowest { background: #eaf7ff; } tr.priority-lowest a { color: #559; } tr.odd.priority-lowest td, tr.even.priority-lowest td { border-color: #add7f3; } /* Buttons */ input[type="button"], input[type="submit"], input[type="reset"] { background-color: #f2f2f2; color: #222222; border: 1px outset #cccccc; } input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover { background-color: #ccccbb; } /* Fields */ input[type="text"], input[type="password"], textarea, select { border: 1px solid #d7d7d7; } input[type="text"]:focus, input[type="password"]:focus, textarea:focus, select:focus { border: 1px solid #888866; } option { border-bottom: 1px dotted #d7d7d7; } /* Misc */ .box { background-color: #fcfcfc; } redmine-6.0.5/app/assets/themes/classic/000077500000000000000000000000001500112024600201245ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/classic/images/000077500000000000000000000000001500112024600213715ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/classic/images/home.png000066400000000000000000000014461500112024600230340ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¸IDAT8Ë“ëORaÇÏ«óGø®­Ëfá%Ë0ÍF¶…3`¬fe®QMBàaÌ€)ËËlކ#Š"Í ÓÀr^›Õ4Ñ6S»P¼2•3™ö"ýv8•­Òæ‹ï›g¿Ïç9Ï÷y€Ø*ÝEûI:q+ΣH$·›ÛÂEÂZŸ:iÍ[~0ìÕ"w$è)>@Ò`dØÄÅ„ó:^»Šá¿ ŸîHħg“ÿxä dŸ*)2bÉÁäC9&ÝJ;Ë1Ú"FŸ.-â©N#·x”‰dY25ÚÀCð‘þF¼µéxjÈÀp“ãî* XEp—±©ûŠTòA¿:™ô–§P~+ÁÇ*ø›„¨ã`zj’Io->‹{jtëù°IS¨æKÉŒ„  "é‚(ÿm‚eô§Šà5žÀËcX\\Äòò2æfgàTC‡–‡gwn ýæ)˜„,J:ž$|Õ©ÓÙŸçÌ£á,LŒ¿ÂÒÒÿÊìÛ´²qWv]æ h,Ì@9go€ ›åzõiëÃÍyèÑfn|x7·¹óßùôñ=jrXh¸xe™{ÖépXÆ}¢aXë-«««Ì°R©„J¥‚Z­Fii)³Fa1Ý‚š?ƒÿ¹F“É´BQ3[[[ÑÖÖ†ÊÊÊMAL*‘Hömù ÃJ$a†+**`³Ù`·ÛQSS³)Ëå …¿EÏ/'t;/¶óÄþ7ÇP;bF‡Ã§Ó Z̬=xcGA§bo:ÛÊѦkó þ,뽊ªÁõ Àšp8 N—Ë·Ûºº:„B!hT¨ÓC;¤D¾C„DY|” w¤m!Ú8.K§x×r¤Ré¼Ñhd@º˜Íf‚ùÜ’3 ÙµY_Ó5©c4üe÷•]ƒÄv¿éNó}¬‡îvýTIEND®B`‚redmine-6.0.5/app/assets/themes/classic/images/wrench.png000066400000000000000000000011421500112024600233630ustar00rootroot00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ôIDAT8Ë•“ËoQÅù_ü[ŒcŒ+W.]‹Ñ…¤išá5  g  m°–ÖJ[FÔq†—Éè¤#_Ð)ÚqÕ¸ÓÓ;,“¶@÷‘{ó;ßùÎÍupL©TÊ™H$¢(Z‚ XÿßM„“ɤ“€Ýn¦i"ã\nt:ôû}äóyD£Ñó ðøØåÏ0 ¹\ ÃÚ–IUËãñ4(Šrž‘¶áÍ úHM°k̈À_¿ßá4·Ç_z—üŠ€iy€'¯"[ý êén1Æû³rMž¥Ž_ïAú`béíñõ=$Ikå_p-¶qÃS~¦À²=li~3ÀBv"q²ZâAªëԧ̸—r¸[ØÔöG–¹—]<&áeÔ!î'Ú¸67 Üyôôºq‹$OÚX!ð=_™Ý~1ÍGsÜ~øE³ƒZQ†x&qWøŽK3ÓÁÇ!Þ¤ëu®Înã¢kzØGrjùQûn»IEND®B`‚redmine-6.0.5/app/assets/themes/classic/stylesheets/000077500000000000000000000000001500112024600225005ustar00rootroot00000000000000redmine-6.0.5/app/assets/themes/classic/stylesheets/application.css000066400000000000000000000057261500112024600255270ustar00rootroot00000000000000/* Redmine - project management software * Copyright (C) 2006- Jean-Philippe Lang * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ @import url(/application.css); body{ color:#303030; background:#e8eaec; } #top-menu { font-size: 80%; height: 2em; padding-top: 0.5em; background-color: #578bb8; } #top-menu a { font-weight: bold; } #header { background: #467aa7; height:5.8em; padding: 10px 0 0 0; } #header h1 { margin-left: 6px; } #quick-search { margin-right: 6px; } #main-menu { background-color: #578bb8; left: 0; border-top: 1px solid #fff; width: 100%; } #main-menu li { margin: 0; padding: 0; } #main-menu li a { background-color: #578bb8; border-right: 1px solid #fff; font-size: 90%; padding: 4px 8px 4px 8px; font-weight: bold; } #main-menu li a:hover { background-color: #80b0da; color: #ffffff; } #main-menu li a.selected, #main-menu li a.selected:hover { background-color: #80b0da; color: #ffffff; } #main-menu li a.new-object { background-color:#80b0da; } #main-menu .menu-children { border-right: 1px solid #80b0da; border-bottom: 1px solid #80b0da; border-left: 1px solid #80b0da; } #main-menu .menu-children li a { border-right: none; } #main-menu .menu-children li a:hover { background-color: #80b0da } #footer { background-color: #578bb8; border: 0; color: #fff;} #footer a { color: #fff; font-weight: bold; } #main { font:90% Verdana,Tahoma,Arial,sans-serif; background: #e8eaec; } #main a { font-weight: bold; color: #467aa7;} #main a:hover { color: #2a5a8a; text-decoration: underline; } #content { background: #fff; } h2, h3, h4, .wiki h1, .wiki h2, .wiki h3 { border-bottom: 0px; color:#606060; font-family: Trebuchet MS,Georgia,"Times New Roman",serif; } h2, .wiki h1 { letter-spacing:-1px; } h4 { border-bottom: dotted 1px #c0c0c0; } #top-menu a.home, #top-menu a.my-page, #top-menu a.projects, #top-menu a.administration, #top-menu a.help { background-position: 0% 40%; background-repeat: no-repeat; padding-left: 20px; padding-top: 2px; padding-bottom: 3px; } #top-menu a.home { background-image: url(/themes/classic/home.png); } #top-menu a.my-page { background-image: url(/user.png); } #top-menu a.projects { background-image: url(/projects.png); } #top-menu a.administration { background-image: url(/themes/classic/wrench.png); } #top-menu a.help { background-image: url(/help.png); } redmine-6.0.5/app/controllers/000077500000000000000000000000001500112024600162625ustar00rootroot00000000000000redmine-6.0.5/app/controllers/account_controller.rb000066400000000000000000000336551500112024600225220ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AccountController < ApplicationController helper :custom_fields include CustomFieldsHelper self.main_menu = false # prevents login action to be filtered by check_if_login_required application scope filter skip_before_action :check_if_login_required, :check_password_change skip_before_action :check_twofa_activation, :only => :logout # Login request and validation def login if request.post? authenticate_user else if User.current.logged? redirect_back_or_default home_url, :referer => true end end rescue AuthSourceException => e logger.error "An error occurred when authenticating #{params[:username]}: #{e.message}" render_error :message => e.message end # Log out current user and redirect to welcome page def logout if User.current.anonymous? redirect_to home_url elsif request.post? logout_user redirect_to home_url end # display the logout form end # Lets user choose a new password def lost_password (redirect_to(home_url); return) unless Setting.lost_password? if prt = (params[:token] || session[:password_recovery_token]) @token = Token.find_token("recovery", prt.to_s) if @token.nil? redirect_to home_url return elsif @token.expired? # remove expired token from session and let user try again session[:password_recovery_token] = nil flash[:error] = l(:error_token_expired) redirect_to lost_password_url return end # redirect to remove the token query parameter from the URL and add it to the session if request.query_parameters[:token].present? session[:password_recovery_token] = @token.value redirect_to lost_password_url return end @user = @token.user unless @user && @user.active? redirect_to home_url return end if request.post? if @user.must_change_passwd? && @user.check_password?(params[:new_password]) flash.now[:error] = l(:notice_new_password_must_be_different) else @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] @user.must_change_passwd = false if @user.save @token.destroy Mailer.deliver_password_updated(@user, User.current) flash[:notice] = l(:notice_account_password_updated) redirect_to signin_path return end end end render :template => "account/password_recovery" return else if request.post? email = params[:mail].to_s.strip user = User.find_by_mail(email) # user not found unless user # Don't show an error indicating a non-existent email address # to prevent email harvesting flash[:notice] = l(:notice_account_lost_email_sent) return end unless user.active? handle_inactive_user(user, lost_password_path) return end # user cannot change its password unless user.change_password_allowed? flash.now[:error] = l(:notice_can_t_change_password) return end # create a new token for password recovery token = Token.new(:user => user, :action => "recovery") if token.save # Don't use the param to send the email recipent = user.mails.detect {|e| email.casecmp(e) == 0} || user.mail Mailer.deliver_lost_password(user, token, recipent) flash[:notice] = l(:notice_account_lost_email_sent) redirect_to signin_path return end end end end # User self-registration def register (redirect_to(home_url); return) unless Setting.self_registration? || session[:auth_source_registration] if !request.post? session[:auth_source_registration] = nil @user = User.new(:language => current_language.to_s) else user_params = params[:user] || {} @user = User.new @user.safe_attributes = user_params @user.pref.safe_attributes = params[:pref] @user.admin = false @user.register if session[:auth_source_registration] @user.activate @user.login = session[:auth_source_registration][:login] @user.auth_source_id = session[:auth_source_registration][:auth_source_id] if @user.save session[:auth_source_registration] = nil self.logged_user = @user flash[:notice] = l(:notice_account_activated) redirect_to my_account_path end else unless user_params[:password].blank? && user_params[:password_confirmation].blank? @user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation] end case Setting.self_registration when '1' register_by_email_activation(@user) when '3' register_automatically(@user) else register_manually_by_administrator(@user) end end end end # Token based account activation def activate (redirect_to(home_url); return) unless Setting.self_registration? && params[:token].present? token = Token.find_token('register', params[:token].to_s) (redirect_to(home_url); return) unless token and !token.expired? user = token.user (redirect_to(home_url); return) unless user.registered? user.activate if user.save token.destroy flash[:notice] = l(:notice_account_activated) end redirect_to signin_path end # Sends a new account activation email def activation_email if session[:registered_user_id] && Setting.self_registration == '1' user_id = session.delete(:registered_user_id).to_i user = User.find_by_id(user_id) if user && user.registered? register_by_email_activation(user) return end end redirect_to(home_url) end before_action :require_active_twofa, :twofa_setup, only: [:twofa_resend, :twofa_confirm, :twofa] before_action :prevent_twofa_session_replay, only: [:twofa_resend, :twofa] def twofa_resend # otp resends count toward the maximum of 3 otp entry tries per password entry if session[:twofa_tries_counter] > 3 destroy_twofa_session flash[:error] = l('twofa_too_many_tries') redirect_to home_url else if @twofa.send_code(controller: 'account', action: 'twofa') flash[:notice] = l('twofa_code_sent') end redirect_to account_twofa_confirm_path end end def twofa_confirm @twofa_view = @twofa.otp_confirm_view_variables end def twofa if @twofa.verify!(params[:twofa_code].to_s) destroy_twofa_session handle_active_user(@user) # allow at most 3 otp entry tries per successfull password entry # this allows using anti brute force techniques on the password entry to also # prevent brute force attacks on the one-time password elsif session[:twofa_tries_counter] > 3 destroy_twofa_session flash[:error] = l('twofa_too_many_tries') redirect_to home_url else flash[:error] = l('twofa_invalid_code') redirect_to account_twofa_confirm_path end end private def prevent_twofa_session_replay renew_twofa_session(@user) end def twofa_setup # twofa sessions are only valid 2 minutes at a time twomind = 0.0014 # a little more than 2 minutes in days @user = Token.find_active_user('twofa_session', session[:twofa_session_token].to_s, twomind) if @user.blank? destroy_twofa_session redirect_to home_url return end # copy back_url, autologin back to params where they are expected params[:back_url] ||= session[:twofa_back_url] params[:autologin] ||= session[:twofa_autologin] # set locale for the twofa user set_localization(@user) # set the requesting IP of the twofa user (e.g. for security notifications) @user.remote_ip = request.remote_ip @twofa = Redmine::Twofa.for_user(@user) end def require_active_twofa Setting.twofa? ? true : deny_access end def setup_twofa_session(user, previous_tries=1) token = Token.create(user: user, action: 'twofa_session') session[:twofa_session_token] = token.value session[:twofa_tries_counter] = previous_tries session[:twofa_back_url] = params[:back_url] session[:twofa_autologin] = params[:autologin] end # Prevent replay attacks by using each twofa_session_token only for exactly one request def renew_twofa_session(user) twofa_tries = session[:twofa_tries_counter].to_i + 1 destroy_twofa_session setup_twofa_session(user, twofa_tries) end def destroy_twofa_session # make sure tokens can only be used once server-side to prevent replay attacks Token.find_token('twofa_session', session[:twofa_session_token].to_s).try(:delete) session[:twofa_session_token] = nil session[:twofa_tries_counter] = nil session[:twofa_back_url] = nil session[:twofa_autologin] = nil end def authenticate_user password_authentication end def password_authentication user = User.try_to_login!(params[:username], params[:password], false) if user.nil? invalid_credentials elsif user.new_record? onthefly_creation_failed(user, {:login => user.login, :auth_source_id => user.auth_source_id}) else # Valid user if user.active? if user.twofa_active? setup_twofa_session user twofa = Redmine::Twofa.for_user(user) if twofa.send_code(controller: 'account', action: 'twofa') flash[:notice] = l('twofa_code_sent') end redirect_to account_twofa_confirm_path else handle_active_user(user) end else handle_inactive_user(user) end end end def handle_active_user(user) successful_authentication(user) update_sudo_timestamp! # activate Sudo Mode end def successful_authentication(user) logger.info "Successful authentication for '#{user.login}' from #{request.remote_ip} at #{Time.now.utc}" # Valid user self.logged_user = user # generate a key and set cookie if autologin if params[:autologin] && Setting.autologin? set_autologin_cookie(user) end call_hook(:controller_account_success_authentication_after, {:user => user}) redirect_back_or_default my_page_path end def set_autologin_cookie(user) token = user.generate_autologin_token secure = Redmine::Configuration['autologin_cookie_secure'] if secure.nil? secure = request.ssl? end cookie_options = { :value => token, :expires => 1.year.from_now, :path => (Redmine::Configuration['autologin_cookie_path'] || RedmineApp::Application.config.relative_url_root || '/'), :same_site => :lax, :secure => secure, :httponly => true } cookies[autologin_cookie_name] = cookie_options end # Onthefly creation failed, display the registration form to fill/fix attributes def onthefly_creation_failed(user, auth_source_options = {}) @user = user session[:auth_source_registration] = auth_source_options unless auth_source_options.empty? render :action => 'register' end def invalid_credentials logger.warn "Failed login for '#{params[:username]}' from #{request.remote_ip} at #{Time.now.utc}" flash.now[:error] = l(:notice_account_invalid_credentials) end # Register a user for email activation. # # Pass a block for behavior when a user fails to save def register_by_email_activation(user, &block) token = Token.new(:user => user, :action => "register") if user.save and token.save Mailer.deliver_register(user, token) flash[:notice] = l(:notice_account_register_done, :email => ERB::Util.h(user.mail)) redirect_to signin_path else yield if block end end # Automatically register a user # # Pass a block for behavior when a user fails to save def register_automatically(user, &block) # Automatic activation user.activate user.last_login_on = Time.now if user.save self.logged_user = user flash[:notice] = l(:notice_account_activated) redirect_to my_account_path else yield if block end end # Manual activation by the administrator # # Pass a block for behavior when a user fails to save def register_manually_by_administrator(user, &block) if user.save # Sends an email to the administrators Mailer.deliver_account_activation_request(user) account_pending(user) else yield if block end end def handle_inactive_user(user, redirect_path=signin_path) if user.registered? account_pending(user, redirect_path) else account_locked(user, redirect_path) end end def account_pending(user, redirect_path=signin_path) if Setting.self_registration == '1' flash[:error] = l(:notice_account_not_activated_yet, :url => activation_email_path) session[:registered_user_id] = user.id else flash[:error] = l(:notice_account_pending) end redirect_to redirect_path end def account_locked(user, redirect_path=signin_path) flash[:error] = l(:notice_account_locked) redirect_to redirect_path end end redmine-6.0.5/app/controllers/activities_controller.rb000066400000000000000000000061111500112024600232150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ActivitiesController < ApplicationController menu_item :activity before_action :find_optional_project_by_id, :authorize_global accept_atom_auth :index def index @days = Setting.activity_days_default.to_i if params[:from] begin; @date_to = params[:from].to_date + 1; rescue; end end @date_to ||= User.current.today + 1 @date_from = @date_to - @days @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') if params[:user_id].present? @author = User.visible.active.find(params[:user_id]) end @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, :with_subprojects => @with_subprojects, :author => @author) pref = User.current.pref @activity.scope_select {|t| !params["show_#{t}"].nil?} if @activity.scope.present? if params[:submit].present? pref.activity_scope = @activity.scope pref.save end else if @author.nil? scope = pref.activity_scope & @activity.event_types @activity.scope = scope.present? ? scope : :default else @activity.scope = :all end end events = if params[:format] == 'atom' @activity.events(nil, nil, :limit => Setting.feeds_limit.to_i) else @activity.events(@date_from, @date_to) end if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, events.size, User.current, current_language]) respond_to do |format| format.html do @events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)} render :layout => false if request.xhr? end format.atom do title = l(:label_activity) if @author title = @author.name elsif @activity.scope.size == 1 title = l("label_#{@activity.scope.first.singularize}_plural") end render_feed(events, :title => "#{@project || Setting.app_title}: #{title}") end end end rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/admin_controller.rb000066400000000000000000000061351500112024600221470ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AdminController < ApplicationController layout 'admin' self.main_menu = false menu_item :projects, :only => :projects menu_item :plugins, :only => :plugins menu_item :info, :only => :info before_action :require_admin helper :queries include QueriesHelper helper :projects_queries helper :projects def index @no_configuration_data = Redmine::DefaultData::Loader::no_data? end def projects retrieve_query(ProjectAdminQuery, false, :defaults => @default_columns_names) @entry_count = @query.result_count @entry_pages = Paginator.new @entry_count, per_page_option, params['page'] @projects = @query.results_scope(:limit => @entry_pages.per_page, :offset => @entry_pages.offset).to_a render :action => "projects", :layout => false if request.xhr? end def plugins @plugins = Redmine::Plugin.all end # Loads the default configuration # (roles, trackers, statuses, workflow, enumerations) def default_configuration if request.post? begin Redmine::DefaultData::Loader::load(params[:lang]) flash[:notice] = l(:notice_default_data_loaded) rescue => e flash[:error] = l(:error_can_t_load_default_data, ERB::Util.h(e.message)) end end redirect_to admin_path end def test_email begin Mailer.deliver_test_email(User.current) flash[:notice] = l(:notice_email_sent, ERB::Util.h(User.current.mail)) rescue => e flash[:error] = l(:notice_email_error, ERB::Util.h(Redmine::CodesetUtil.replace_invalid_utf8(e.message.dup))) end redirect_to settings_path(:tab => 'notifications') end def info @checklist = [ [:text_default_administrator_account_changed, User.default_admin_account_changed?], [:text_file_repository_writable, File.writable?(Attachment.storage_path)], [:text_all_migrations_have_been_run, !ActiveRecord::Base.connection.pool.migration_context.needs_migration?], [:text_minimagick_available, Object.const_defined?(:MiniMagick)], [:text_convert_available, Redmine::Thumbnail.convert_available?], [:text_gs_available, Redmine::Thumbnail.gs_available?] ] @checklist << [:text_default_active_job_queue_changed, Rails.application.config.active_job.queue_adapter != :async] if Rails.env.production? end end redmine-6.0.5/app/controllers/application_controller.rb000066400000000000000000000541341500112024600233640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'uri' require 'cgi' class Unauthorized < StandardError; end class ApplicationController < ActionController::Base include Redmine::I18n include Redmine::Pagination include Redmine::Hook::Helper include RoutesHelper include AvatarsHelper include IconsHelper helper :routes helper :avatars helper :icons class_attribute :accept_api_auth_actions class_attribute :accept_atom_auth_actions class_attribute :model_object layout 'base' def verify_authenticity_token unless api_request? super end end def handle_unverified_request unless api_request? begin super rescue ActionController::InvalidAuthenticityToken => e logger.error("ActionController::InvalidAuthenticityToken: #{e.message}") if logger ensure cookies.delete(autologin_cookie_name) self.logged_user = nil set_localization render_error :status => 422, :message => l(:error_invalid_authenticity_token) end end end before_action :session_expiration, :user_setup, :check_if_login_required, :set_localization, :check_password_change, :check_twofa_activation after_action :record_project_usage rescue_from ::Unauthorized, :with => :deny_access rescue_from ::ActionView::MissingTemplate, :with => :missing_template include Redmine::Search::Controller include Redmine::MenuManager::MenuController helper Redmine::MenuManager::MenuHelper include Redmine::SudoMode::Controller def session_expiration if session[:user_id] && Rails.application.config.redmine_verify_sessions != false if session_expired? && !try_to_autologin set_localization(User.active.find_by_id(session[:user_id])) self.logged_user = nil flash[:error] = l(:error_session_expired) require_login end end end def session_expired? ! User.verify_session_token(session[:user_id], session[:tk]) end def start_user_session(user) session[:user_id] = user.id session[:tk] = user.generate_session_token if user.must_change_password? session[:pwd] = '1' end if user.must_activate_twofa? session[:must_activate_twofa] = '1' end end def user_setup # Check the settings cache for each request Setting.check_cache # Find the current user User.current = find_current_user logger.info(" Current user: " + (User.current.logged? ? "#{User.current.login} (id=#{User.current.id})" : "anonymous")) if logger end # Returns the current user or nil if no user is logged in # and starts a session if needed def find_current_user user = nil unless api_request? if session[:user_id] # existing session user = begin User.active.find(session[:user_id]) rescue nil end elsif autologin_user = try_to_autologin user = autologin_user elsif params[:format] == 'atom' && params[:key] && request.get? && accept_atom_auth? # ATOM key authentication does not start a session user = User.find_by_atom_key(params[:key]) end end if user.nil? && Setting.rest_api_enabled? && accept_api_auth? if (key = api_key_from_request) # Use API key user = User.find_by_api_key(key) elsif /\ABasic /i.match?(request.authorization.to_s) # HTTP Basic, either username/password or API key/random authenticate_with_http_basic do |username, password| user = User.try_to_login(username, password) # Don't allow using username/password when two-factor auth is active if user&.twofa_active? render_error :message => 'HTTP Basic authentication is not allowed. Use API key instead', :status => 401 return end user ||= User.find_by_api_key(username) end if user && user.must_change_password? render_error :message => 'You must change your password', :status => 403 return end end # Switch user if requested by an admin user if user && user.admin? && (username = api_switch_user_from_request) su = User.find_by_login(username) if su && su.active? logger.info(" User switched by: #{user.login} (id=#{user.id})") if logger user = su else render_error :message => 'Invalid X-Redmine-Switch-User header', :status => 412 end end end # store current ip address in user object ephemerally user.remote_ip = request.remote_ip if user user end def autologin_cookie_name Redmine::Configuration['autologin_cookie_name'].presence || 'autologin' end def try_to_autologin if cookies[autologin_cookie_name] && Setting.autologin? # auto-login feature starts a new session user = User.try_to_autologin(cookies[autologin_cookie_name]) if user reset_session start_user_session(user) end user end end # Sets the logged in user def logged_user=(user) reset_session if user && user.is_a?(User) User.current = user start_user_session(user) else User.current = User.anonymous end end # Logs out current user def logout_user if User.current.logged? if autologin = cookies.delete(autologin_cookie_name) User.current.delete_autologin_token(autologin) end User.current.delete_session_token(session[:tk]) self.logged_user = nil end end # check if login is globally required to access the application def check_if_login_required # no check needed if user is already logged in return true if User.current.logged? require_login if Setting.login_required? end def check_password_change if session[:pwd] if User.current.must_change_password? flash[:error] = l(:error_password_expired) redirect_to my_password_path else session.delete(:pwd) end end end def init_twofa_pairing_and_send_code_for(twofa) twofa.init_pairing! if twofa.send_code(controller: 'twofa', action: 'activate') flash[:notice] = l('twofa_code_sent') end redirect_to controller: 'twofa', action: 'activate_confirm', scheme: twofa.scheme_name end def check_twofa_activation if session[:must_activate_twofa] if User.current.must_activate_twofa? flash[:warning] = l('twofa_warning_require') if Redmine::Twofa.available_schemes.length == 1 twofa_scheme = Redmine::Twofa.for_twofa_scheme(Redmine::Twofa.available_schemes.first) twofa = twofa_scheme.new(User.current) init_twofa_pairing_and_send_code_for(twofa) else redirect_to controller: 'twofa', action: 'select_scheme' end else session.delete(:must_activate_twofa) end end end def set_localization(user=User.current) lang = nil if user && user.logged? lang = find_language(user.language) end if lang.nil? && !Setting.force_default_language_for_anonymous? && request.env['HTTP_ACCEPT_LANGUAGE'] accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first if accept_lang.present? accept_lang = accept_lang.downcase lang = find_language(accept_lang) || find_language(accept_lang.split('-').first) end end lang ||= Setting.default_language set_language_if_valid(lang) end def require_login unless User.current.logged? # Extract only the basic url parameters on non-GET requests if request.get? url = request.original_url else url = url_for(:controller => params[:controller], :action => params[:action], :id => params[:id], :project_id => params[:project_id]) end respond_to do |format| format.html do if request.xhr? head :unauthorized else redirect_to signin_path(:back_url => url) end end format.any(:atom, :pdf, :csv) do redirect_to signin_path(:back_url => url) end format.api do if Setting.rest_api_enabled? && accept_api_auth? head(:unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"') else head(:forbidden) end end format.js {head :unauthorized, 'WWW-Authenticate' => 'Basic realm="Redmine API"'} format.any {head :unauthorized} end return false end true end def require_admin return unless require_login unless User.current.admin? render_403 return false end true end def deny_access User.current.logged? ? render_403 : require_login end # Authorize the user for the requested action def authorize(ctrl = params[:controller], action = params[:action], global = false) allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project || @projects, :global => global) if allowed true else if @project && @project.archived? @archived_project = @project render_403 :message => :notice_not_authorized_archived_project elsif @project && !@project.allows_to?(:controller => ctrl, :action => action) # Project module is disabled render_403 else deny_access end end end # Authorize the user for the requested action outside a project def authorize_global(ctrl = params[:controller], action = params[:action], global = true) authorize(ctrl, action, global) end # Find project of id params[:id] def find_project(project_id=params[:id]) @project = Project.find(project_id) rescue ActiveRecord::RecordNotFound render_404 end # Find project of id params[:project_id] def find_project_by_project_id find_project(params[:project_id]) end # Find project of id params[:id] if present def find_optional_project_by_id if params[:id].present? find_project(params[:id]) end end # Find a project based on params[:project_id] # and authorize the user for the requested action def find_optional_project if params[:project_id].present? @project = Project.find(params[:project_id]) end authorize_global rescue ActiveRecord::RecordNotFound User.current.logged? ? render_404 : require_login false end # Finds and sets @project based on @object.project def find_project_from_association render_404 unless @object.present? @project = @object.project end def find_model_object model = self.class.model_object if model @object = model.find(params[:id]) self.instance_variable_set('@' + controller_name.singularize, @object) if @object end rescue ActiveRecord::RecordNotFound render_404 end def self.model_object(model) self.model_object = model end # Find the issue whose id is the :id parameter # Raises a Unauthorized exception if the issue is not visible def find_issue # Issue.visible.find(...) can not be used to redirect user to the login form # if the issue actually exists but requires authentication @issue = Issue.find(params[:id]) raise Unauthorized unless @issue.visible? @project = @issue.project rescue ActiveRecord::RecordNotFound render_404 end # Find issues with a single :id param or :ids array param # Raises a Unauthorized exception if one of the issues is not visible def find_issues @issues = Issue. where(:id => (params[:id] || params[:ids])). preload(:project, :status, :tracker, :priority, :author, :assigned_to, :relations_to, {:custom_values => :custom_field}). to_a raise ActiveRecord::RecordNotFound if @issues.empty? raise Unauthorized unless @issues.all?(&:visible?) @projects = @issues.filter_map(&:project).uniq @project = @projects.first if @projects.size == 1 rescue ActiveRecord::RecordNotFound render_404 end def find_attachments if (attachments = params[:attachments]).present? att = attachments.values.collect do |attachment| Attachment.find_by_token(attachment[:token]) if attachment[:token].present? end att.compact! end @attachments = att || [] end def parse_params_for_bulk_update(params) attributes = (params || {}).reject {|k, v| v.blank?} if custom = attributes[:custom_field_values] custom.reject! {|k, v| v.blank?} end replace_none_values_with_blank(attributes) end def replace_none_values_with_blank(params) attributes = (params || {}) attributes.each_key {|k| attributes[k] = '' if attributes[k] == 'none'} if (custom = attributes[:custom_field_values]) custom.each_key do |k| if custom[k].is_a?(Array) custom[k] << '' if custom[k].delete('__none__') else custom[k] = '' if custom[k] == '__none__' end end end attributes end # make sure that the user is a member of the project (or admin) if project is private # used as a before_action for actions that do not require any particular permission on the project def check_project_privacy if @project && !@project.archived? if @project.visible? true else deny_access end else @project = nil render_404 false end end def record_project_usage if @project && @project.id && User.current.logged? && User.current.allowed_to?(:view_project, @project) Redmine::ProjectJumpBox.new(User.current).project_used(@project) end true end def back_url url = params[:back_url] if url.nil? && referer = request.env['HTTP_REFERER'] url = CGI.unescape(referer.to_s) end url end helper_method :back_url def redirect_back_or_default(default, options={}) if back_url = validate_back_url(params[:back_url].to_s) redirect_to(back_url) return elsif options[:referer] redirect_to_referer_or default return end redirect_to default false end # Returns a validated URL string if back_url is a valid url for redirection, # otherwise false def validate_back_url(back_url) return false if back_url.blank? if CGI.unescape(back_url).include?('..') return false end begin uri = Addressable::URI.parse(back_url) [:scheme, :host, :port].each do |component| if uri.send(component).present? && uri.send(component) != request.send(component) return false end end # Remove unnecessary components to convert the URL into a relative URL uri.omit!(:scheme, :authority) rescue Addressable::URI::InvalidURIError return false end path = uri.to_s # Ensure that the remaining URL starts with a slash, followed by a # non-slash character or the end unless %r{\A/([^/]|\z)}.match?(path) return false end if %r{/(login|account/register|account/lost_password)}.match?(path) return false end if relative_url_root.present? && !path.starts_with?(relative_url_root) return false end return path end private :validate_back_url helper_method :validate_back_url def valid_back_url?(back_url) !!validate_back_url(back_url) end private :valid_back_url? helper_method :valid_back_url? # Redirects to the request referer if present, redirects to args or call block otherwise. def redirect_to_referer_or(*args, &block) if referer = request.headers["Referer"] redirect_to referer else if args.any? redirect_to *args elsif block yield else raise "#redirect_to_referer_or takes arguments or a block" end end end def render_403(options={}) @project = nil render_error({:message => :notice_not_authorized, :status => 403}.merge(options)) return false end def render_404(options={}) render_error({:message => :notice_file_not_found, :status => 404}.merge(options)) return false end # Renders an error response def render_error(arg) arg = {:message => arg} unless arg.is_a?(Hash) @message = arg[:message] @message = l(@message) if @message.is_a?(Symbol) @status = arg[:status] || 500 respond_to do |format| format.html do render :template => 'common/error', :layout => use_layout, :status => @status end format.any {head @status} end end # Handler for ActionView::MissingTemplate exception def missing_template(exception) logger.warn "Missing template, responding with 404: #{exception}" @project = nil render_404 end # Filter for actions that provide an API response # but have no HTML representation for non admin users def require_admin_or_api_request return true if api_request? if User.current.admin? true elsif User.current.logged? render_error(:status => 406) else deny_access end end # Picks which layout to use based on the request # # @return [boolean, string] name of the layout to use or false for no layout def use_layout request.xhr? ? false : 'base' end def render_feed(items, options={}) @items = (items || []).to_a @items.sort! {|x, y| y.event_datetime <=> x.event_datetime} @items = @items.slice(0, Setting.feeds_limit.to_i) @title = options[:title] || Setting.app_title render :template => "common/feed", :formats => [:atom], :layout => false, :content_type => 'application/atom+xml' end def self.accept_atom_auth(*actions) if actions.any? self.accept_atom_auth_actions = actions else self.accept_atom_auth_actions || [] end end def accept_atom_auth?(action=action_name) self.class.accept_atom_auth.include?(action.to_sym) end def self.accept_api_auth(*actions) if actions.any? self.accept_api_auth_actions = actions else self.accept_api_auth_actions || [] end end def accept_api_auth?(action=action_name) self.class.accept_api_auth.include?(action.to_sym) end # Returns the number of objects that should be displayed # on the paginated list def per_page_option per_page = nil if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i) per_page = params[:per_page].to_s.to_i session[:per_page] = per_page elsif session[:per_page] per_page = session[:per_page] else per_page = Setting.per_page_options_array.first || 25 end per_page end # Returns offset and limit used to retrieve objects # for an API response based on offset, limit and page parameters def api_offset_and_limit(options=params) if options[:offset].present? offset = options[:offset].to_i if offset < 0 offset = 0 end end limit = options[:limit].to_i if limit < 1 limit = 25 elsif limit > 100 limit = 100 end if offset.nil? && options[:page].present? offset = (options[:page].to_i - 1) * limit offset = 0 if offset < 0 end offset ||= 0 [offset, limit] end # qvalues http header parser # code taken from webrick def parse_qvalues(value) tmp = [] if value parts = value.split(/,\s*/) parts.each do |part| if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part) val = m[1] q = (m[2] or 1).to_f tmp.push([val, q]) end end tmp = tmp.sort_by{|val, q| -q} tmp.collect!{|val, q| val} end return tmp rescue nil end # Returns a string that can be used as filename value in Content-Disposition header def filename_for_content_disposition(name) name end def api_request? %w(xml json).include? params[:format] end # Returns the API key present in the request def api_key_from_request if params[:key].present? params[:key].to_s elsif request.headers["X-Redmine-API-Key"].present? request.headers["X-Redmine-API-Key"].to_s end end # Returns the API 'switch user' value if present def api_switch_user_from_request request.headers["X-Redmine-Switch-User"].to_s.presence end # Renders a warning flash if obj has unsaved attachments def render_attachment_warning_if_needed(obj) flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present? end # Rescues an invalid query statement. Just in case... def query_statement_invalid(exception) logger.error "Query::StatementInvalid: #{exception.message}" if logger session.delete(:issue_query) render_error l(:error_query_statement_invalid) end def query_error(exception) Rails.logger.debug "#{exception.class.name}: #{exception.message}" Rails.logger.debug " #{exception.backtrace.join("\n ")}" render_404 end # Renders a 204 response for successful updates or deletions via the API def render_api_ok render_api_head :no_content end # Renders a head API response def render_api_head(status) head status end # Renders API response on validation failure # for an object or an array of objects def render_validation_errors(objects) messages = Array.wrap(objects).map {|object| object.errors.full_messages}.flatten render_api_errors(messages) end def render_api_errors(*messages) @error_messages = messages.flatten render :template => 'common/error_messages', :format => [:api], :status => :unprocessable_content, :layout => nil end # Overrides #_include_layout? so that #render with no arguments # doesn't use the layout for api requests def _include_layout?(*args) api_request? ? false : super end end redmine-6.0.5/app/controllers/attachments_controller.rb000066400000000000000000000235601500112024600233730ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AttachmentsController < ApplicationController include ActionView::Helpers::NumberHelper before_action :find_attachment, :only => [:show, :download, :thumbnail, :update, :destroy] before_action :find_container, :only => [:edit_all, :update_all, :download_all] before_action :find_downloadable_attachments, :only => :download_all before_action :find_editable_attachments, :only => [:edit_all, :update_all] before_action :file_readable, :read_authorize, :only => [:show, :download, :thumbnail] before_action :update_authorize, :only => :update before_action :delete_authorize, :only => :destroy before_action :authorize_global, :only => :upload # Disable check for same origin requests for JS files, i.e. attachments with # MIME type text/javascript. skip_after_action :verify_same_origin_request, :only => :download accept_api_auth :show, :download, :thumbnail, :upload, :update, :destroy def show respond_to do |format| format.html do if @attachment.container.respond_to?(:attachments) @attachments = @attachment.container.attachments.to_a if index = @attachments.index(@attachment) @paginator = Redmine::Pagination::Paginator.new( @attachments.size, 1, index+1 ) end end if @attachment.is_diff? @diff = File.read(@attachment.diskfile, :mode => "rb") @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type) # Save diff type as user preference if User.current.logged? && @diff_type != User.current.pref[:diff_type] User.current.pref[:diff_type] = @diff_type User.current.preference.save end render :action => 'diff' elsif @attachment.is_text? && @attachment.filesize <= Setting.file_max_size_displayed.to_i.kilobyte @content = File.read(@attachment.diskfile, :mode => "rb") render :action => 'file' elsif @attachment.is_image? render :action => 'image' else render :action => 'other' end end format.api end end def download if @attachment.container.is_a?(Version) || @attachment.container.is_a?(Project) @attachment.increment_download end if stale?(:etag => @attachment.digest, :template => false) # images are sent inline send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename), :type => detect_content_type(@attachment), :disposition => disposition(@attachment) end end def thumbnail if (tbnail = @attachment.thumbnail(:size => params[:size])) if stale?(:etag => tbnail, :template => false) send_file( tbnail, :filename => filename_for_content_disposition(@attachment.filename), :type => detect_content_type(@attachment, true), :disposition => 'attachment') end else # No thumbnail for the attachment or thumbnail could not be created head :not_found end end def upload # Make sure that API users get used to set this content type # as it won't trigger Rails' automatic parsing of the request body for parameters unless request.media_type == 'application/octet-stream' head :not_acceptable return end @attachment = Attachment.new(:file => raw_request_body) @attachment.author = User.current @attachment.filename = params[:filename].presence || Redmine::Utils.random_hex(16) @attachment.content_type = params[:content_type].presence saved = @attachment.save respond_to do |format| format.js format.api do if saved render :action => 'upload', :status => :created else render_validation_errors(@attachment) end end end end # Edit all the attachments of a container def edit_all end # Update all the attachments of a container def update_all if Attachment.update_attachments(@attachments, update_all_params) redirect_back_or_default home_path return end render :action => 'edit_all' end def download_all zip_data = Attachment.archive_attachments(@attachments) if zip_data file_name = "#{@container.class.to_s.downcase}-#{@container.id}-attachments.zip" send_data( zip_data, :type => Redmine::MimeType.of(file_name), :filename => file_name ) else render_404 end end def update @attachment.safe_attributes = params[:attachment] saved = @attachment.save respond_to do |format| format.api do if saved render_api_ok else render_validation_errors(@attachment) end end end end def destroy if @attachment.container.respond_to?(:init_journal) @attachment.container.init_journal(User.current) end if @attachment.container # Make sure association callbacks are called @attachment.container.attachments.delete(@attachment) else @attachment.destroy end respond_to do |format| format.html {redirect_to_referer_or project_path(@project)} format.js format.api {render_api_ok} end end # Returns the menu item that should be selected when viewing an attachment def current_menu_item container = @attachment.try(:container) || @container if container case container when WikiPage :wiki when Message :boards when Project, Version :files else container.class.name.pluralize.downcase.to_sym end end end private def find_attachment @attachment = Attachment.find(params[:id]) # Show 404 if the filename in the url is wrong raise ActiveRecord::RecordNotFound if params[:filename] && params[:filename] != @attachment.filename @project = @attachment.project rescue ActiveRecord::RecordNotFound render_404 end def find_editable_attachments @attachments = @container.attachments.select(&:editable?) render_404 if @attachments.empty? end def find_container # object_type is constrained to valid values in routes klass = params[:object_type].to_s.singularize.classify.constantize @container = klass.find(params[:object_id]) unless @container.visible? render_403 return end if @container.respond_to?(:project) @project = @container.project end rescue ActiveRecord::RecordNotFound render_404 end def find_downloadable_attachments @attachments = @container.attachments.select(&:readable?) bulk_download_max_size = Setting.bulk_download_max_size.to_i.kilobytes if @attachments.sum(&:filesize) > bulk_download_max_size flash[:error] = l(:error_bulk_download_size_too_big, :max_size => number_to_human_size(bulk_download_max_size.to_i)) redirect_back_or_default(container_url, referer: true) return end end def container_url case @container when Message url_for(@container.event_url) when Project # project attachments are listed in the files view project_files_url(@container) when Version # version attachments are listed in its project's files view project_files_url(@container.project) when WikiPage project_wiki_page_url @container.wiki.project, @container else url_for(@container) end end # Checks that the file exists and is readable def file_readable if @attachment.readable? true else logger.error "Cannot send attachment, #{@attachment.diskfile} does not exist or is unreadable." render_404 end end def read_authorize @attachment.visible? ? true : deny_access end def update_authorize @attachment.editable? ? true : deny_access end def delete_authorize @attachment.deletable? ? true : deny_access end def detect_content_type(attachment, is_thumb = false) content_type = attachment.content_type if content_type.blank? || content_type == "application/octet-stream" content_type = Redmine::MimeType.of(attachment.filename).presence || "application/octet-stream" end if is_thumb && content_type == "application/pdf" # PDF previews are stored in PNG format content_type = "image/png" end content_type end def disposition(attachment) if attachment.is_pdf? 'inline' else 'attachment' end end # Returns attachments param for #update_all def update_all_params params.permit(:attachments => [:filename, :description]).require(:attachments) end # Get an IO-like object for the request body which is usable to create a new # attachment. We try to avoid having to read the whole body into memory. def raw_request_body if request.body.respond_to?(:size) request.body else request.raw_post end end def send_file(path, options={}) headers['content-security-policy'] = "default-src 'none'; style-src 'unsafe-inline'; sandbox" super end end redmine-6.0.5/app/controllers/auth_sources_controller.rb000066400000000000000000000060551500112024600235640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AuthSourcesController < ApplicationController layout 'admin' self.main_menu = false menu_item :ldap_authentication before_action :require_admin before_action :build_new_auth_source, :only => [:new, :create] before_action :find_auth_source, :only => [:edit, :update, :test_connection, :destroy] require_sudo_mode :update, :destroy def index @auth_source_pages, @auth_sources = paginate AuthSource, :per_page => 25 end def new end def create if @auth_source.save flash[:notice] = l(:notice_successful_create) redirect_to auth_sources_path else render :action => 'new' end end def edit end def update @auth_source.safe_attributes = params[:auth_source] if @auth_source.save flash[:notice] = l(:notice_successful_update) redirect_to auth_sources_path else render :action => 'edit' end end def test_connection begin @auth_source.test_connection flash[:notice] = l(:notice_successful_connection) rescue => e flash[:error] = l(:error_unable_to_connect, e.message) end redirect_to auth_sources_path end def destroy unless @auth_source.users.exists? @auth_source.destroy flash[:notice] = l(:notice_successful_delete) else flash[:error] = l(:error_can_not_delete_auth_source) end redirect_to auth_sources_path end def autocomplete_for_new_user results = AuthSource.search(params[:term]) json = results.map do |result| { 'value' => result[:login], 'label' => "#{result[:login]} (#{result[:firstname]} #{result[:lastname]})", 'login' => result[:login].to_s, 'firstname' => result[:firstname].to_s, 'lastname' => result[:lastname].to_s, 'mail' => result[:mail].to_s, 'auth_source_id' => result[:auth_source_id].to_s } end render :json => json end private def build_new_auth_source @auth_source = AuthSource.new_subclass_instance(params[:type] || 'AuthSourceLdap') if @auth_source @auth_source.safe_attributes = params[:auth_source] else render_404 end end def find_auth_source @auth_source = AuthSource.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/auto_completes_controller.rb000066400000000000000000000052621500112024600241020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AutoCompletesController < ApplicationController before_action :find_project def issues issues = [] q = (params[:q] || params[:term]).to_s.strip status = params[:status].to_s issue_id = params[:issue_id].to_s scope = Issue.cross_project_scope(@project, params[:scope]).includes(:tracker).visible scope = scope.open(status == 'o') if status.present? scope = scope.where.not(:id => issue_id.to_i) if issue_id.present? if q.present? if q =~ /\A#?(\d+)\z/ issues << scope.find_by(:id => $1.to_i) end issues += scope.like(q).order(:id => :desc).limit(10).to_a issues.compact! else issues += scope.order(:id => :desc).limit(10).to_a end render :json => format_issues_json(issues) end def wiki_pages q = params[:q].to_s.strip wiki = Wiki.find_by(project: @project) if wiki.nil? || !User.current.allowed_to?(:view_wiki_pages, @project) render json: [] return end scope = wiki.pages.reorder(id: :desc) wiki_pages = if q.present? scope.where("LOWER(#{WikiPage.table_name}.title) LIKE LOWER(?)", "%#{q}%").limit(10).to_a else scope.limit(10).to_a end render json: format_wiki_pages_json(wiki_pages) end private def find_project if params[:project_id].present? @project = Project.find(params[:project_id]) end rescue ActiveRecord::RecordNotFound render_404 end def format_issues_json(issues) issues.map do |issue| { 'id' => issue.id, 'label' => "#{issue.tracker} ##{issue.id}: #{issue.subject.to_s.truncate(255)}", 'value' => issue.id } end end def format_wiki_pages_json(wiki_pages) wiki_pages.map do |wiki_page| { 'id' => wiki_page.id, 'label' => wiki_page.title.to_s.truncate(255), 'value' => wiki_page.title } end end end redmine-6.0.5/app/controllers/boards_controller.rb000066400000000000000000000070371500112024600223330ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class BoardsController < ApplicationController default_search_scope :messages before_action :find_project_by_project_id, :find_board_if_available, :authorize accept_atom_auth :index, :show helper :sort include SortHelper helper :watchers def index @boards = @project.boards.preload(:last_message => :author).to_a # show the board if there is only one if @boards.size == 1 @board = @boards.first show end end def show respond_to do |format| format.html do sort_init 'updated_on', 'desc' sort_update 'created_on' => "#{Message.table_name}.id", 'replies' => "#{Message.table_name}.replies_count", 'updated_on' => "COALESCE(#{Message.table_name}.last_reply_id, #{Message.table_name}.id)" @topic_count = @board.topics.count @topic_pages = Paginator.new @topic_count, per_page_option, params['page'] @topics = @board.topics. reorder(:sticky => :desc). limit(@topic_pages.per_page). offset(@topic_pages.offset). order(sort_clause). preload(:author, {:last_reply => :author}). to_a @message = Message.new(:board => @board) render :action => 'show', :layout => !request.xhr? end format.atom do messages = @board.messages. reorder(:id => :desc). includes(:author, :board). limit(Setting.feeds_limit.to_i). to_a render_feed(messages, :title => "#{@project}: #{@board}") end end end def new @board = @project.boards.build @board.safe_attributes = params[:board] end def create @board = @project.boards.build @board.safe_attributes = params[:board] if @board.save flash[:notice] = l(:notice_successful_create) redirect_to_settings_in_projects else render :action => 'new' end end def edit end def update @board.safe_attributes = params[:board] if @board.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to_settings_in_projects end format.js {head :ok} end else respond_to do |format| format.html {render :action => 'edit'} format.js {head :unprocessable_content} end end end def destroy if @board.destroy flash[:notice] = l(:notice_successful_delete) end redirect_to_settings_in_projects end private def redirect_to_settings_in_projects redirect_to settings_project_path(@project, :tab => 'boards') end def find_board_if_available @board = @project.boards.find(params[:id]) if params[:id] rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/calendars_controller.rb000066400000000000000000000042661500112024600230160ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CalendarsController < ApplicationController menu_item :calendar before_action :find_optional_project rescue_from Query::StatementInvalid, :with => :query_statement_invalid helper :issues helper :projects helper :queries include QueriesHelper def show if params[:year] and params[:year].to_i > 1900 @year = params[:year].to_i if params[:month] and params[:month].to_i > 0 and params[:month].to_i < 13 @month = params[:month].to_i end end @year ||= User.current.today.year @month ||= User.current.today.month @calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month) retrieve_query @query.group_by = nil @query.sort_criteria = nil if @query.valid? events = [] events += @query.issues( :include => [:tracker, :assigned_to, :priority], :conditions => [ "((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?))", @calendar.startdt, @calendar.enddt, @calendar.startdt, @calendar.enddt ] ) events += @query.versions( :conditions => [ "effective_date BETWEEN ? AND ?", @calendar.startdt, @calendar.enddt ] ) @calendar.events = events end render :action => 'show', :layout => false if request.xhr? end end redmine-6.0.5/app/controllers/comments_controller.rb000066400000000000000000000032251500112024600227010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CommentsController < ApplicationController default_search_scope :news model_object News before_action :find_model_object before_action :find_project_from_association before_action :authorize def create raise Unauthorized unless @news.commentable? @comment = Comment.new @comment.safe_attributes = params[:comment] @comment.author = User.current if @news.comments << @comment flash[:notice] = l(:label_comment_added) end redirect_to news_path(@news) end def destroy @news.comments.find(params[:comment_id]).destroy redirect_to news_path(@news) end private # ApplicationController's find_model_object sets it based on the controller # name so it needs to be overridden and set to @news instead def find_model_object super @news = @object @comment = nil @news end end redmine-6.0.5/app/controllers/context_menus_controller.rb000066400000000000000000000075361500112024600237600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ContextMenusController < ApplicationController helper :watchers helper :issues before_action :find_issues, :only => :issues def issues if @issues.size == 1 @issue = @issues.first end @issue_ids = @issues.map(&:id).sort @allowed_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&) @can = { :edit => @issues.all?(&:attributes_editable?), :log_time => (@project && User.current.allowed_to?(:log_time, @project)), :copy => User.current.allowed_to?(:copy_issues, @projects) && Issue.allowed_target_projects.any?, :add_watchers => User.current.allowed_to?(:add_issue_watchers, @projects), :delete => @issues.all?(&:deletable?), :add_subtask => @issue && !@issue.closed? && User.current.allowed_to?(:manage_subtasks, @project) } @assignables = @issues.map(&:assignable_users).reduce(:&) @trackers = @projects.map {|p| Issue.allowed_target_trackers(p)}.reduce(:&) @versions = @projects.map {|p| p.shared_versions.open}.reduce(:&) @priorities = IssuePriority.active.reverse @back = back_url @columns = params[:c] @options_by_custom_field = {} if @can[:edit] custom_fields = @issues.map(&:editable_custom_fields).reduce(:&).reject(&:multiple?).select {|field| field.format.bulk_edit_supported} custom_fields.each do |field| values = field.possible_values_options(@projects) if values.present? @options_by_custom_field[field] = values end end end @safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&) render :layout => false end def time_entries @time_entries = TimeEntry.where(:id => params[:ids]). preload(:project => :time_entry_activities). preload(:user).to_a (render_404; return) unless @time_entries.present? if @time_entries.size == 1 @time_entry = @time_entries.first end @projects = @time_entries.filter_map(&:project).uniq @project = @projects.first if @projects.size == 1 @activities = @projects.map(&:activities).reduce(:&) edit_allowed = @time_entries.all? {|t| t.editable_by?(User.current)} @can = {:edit => edit_allowed, :delete => edit_allowed} @back = back_url @options_by_custom_field = {} if @can[:edit] custom_fields = @time_entries.map(&:editable_custom_fields).reduce(:&).reject(&:multiple?).select {|field| field.format.bulk_edit_supported} custom_fields.each do |field| values = field.possible_values_options(@projects) if values.present? @options_by_custom_field[field] = values end end end render :layout => false end def projects @projects = Project.where(id: params[:ids]).to_a if @projects.empty? render_404 return end if @projects.size == 1 @project = @projects.first end render layout: false end def users @users = User.where(id: params[:ids]).to_a (render_404; return) unless @users.present? if @users.size == 1 @user = @users.first end render layout: false end end redmine-6.0.5/app/controllers/custom_field_enumerations_controller.rb000066400000000000000000000052461500112024600263270ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomFieldEnumerationsController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin before_action :find_custom_field before_action :find_enumeration, :only => :destroy helper :custom_fields def index @values = @custom_field.enumerations.order(:position) end def create @value = @custom_field.enumerations.build @value.attributes = enumeration_params @value.save respond_to do |format| format.html {redirect_to custom_field_enumerations_path(@custom_field)} format.js end end def update_each saved = CustomFieldEnumeration.update_each(@custom_field, update_each_params) if saved flash[:notice] = l(:notice_successful_update) end redirect_to :action => 'index' end def destroy reassign_to = @custom_field.enumerations.find_by_id(params[:reassign_to_id]) if reassign_to.nil? && @value.in_use? @enumerations = @custom_field.enumerations - [@value] render :action => 'destroy' return end @value.destroy(reassign_to) redirect_to custom_field_enumerations_path(@custom_field) end private def find_custom_field @custom_field = CustomField.find(params[:custom_field_id]) rescue ActiveRecord::RecordNotFound render_404 end def find_enumeration @value = @custom_field.enumerations.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end def enumeration_params params.require(:custom_field_enumeration).permit(:name, :active, :position) end def update_each_params # params.require(:custom_field_enumerations).permit(:name, :active, :position) does not work here with param like this: # "custom_field_enumerations":{"0":{"name": ...}, "1":{"name...}} params.permit(:custom_field_enumerations => [:name, :active, :position]).require(:custom_field_enumerations) end end redmine-6.0.5/app/controllers/custom_fields_controller.rb000066400000000000000000000066411500112024600237210ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomFieldsController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin before_action :build_new_custom_field, :only => [:new, :create] before_action :find_custom_field, :only => [:edit, :update, :destroy] accept_api_auth :index def index respond_to do |format| format.html do @custom_fields_by_type = CustomField.all.group_by {|f| f.class.name} @custom_fields_projects_count = IssueCustomField.where(is_for_all: false).joins(:projects).group(:custom_field_id).count end format.api do @custom_fields = CustomField.all end end end def new @custom_field.field_format = 'string' if @custom_field.field_format.blank? @custom_field.default_value = nil end def create if @custom_field.save flash[:notice] = l(:notice_successful_create) call_hook(:controller_custom_fields_new_after_save, :params => params, :custom_field => @custom_field) if params[:continue] redirect_to new_custom_field_path({:type => @custom_field.type}) else redirect_to custom_fields_path({:tab => @custom_field.type}) end else render :action => 'new' end end def edit end def update @custom_field.safe_attributes = params[:custom_field] if @custom_field.save call_hook(:controller_custom_fields_edit_after_save, :params => params, :custom_field => @custom_field) respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_back_or_default edit_custom_field_path(@custom_field) end format.js {head :ok} end else respond_to do |format| format.html {render :action => 'edit'} format.js {head :unprocessable_content} end end end def destroy begin if @custom_field.destroy flash[:notice] = l(:notice_successful_delete) end rescue flash[:error] = l(:error_can_not_delete_custom_field) end redirect_to custom_fields_path(:tab => @custom_field.class.name) end private def build_new_custom_field @custom_field = CustomField.new_subclass_instance(params[:type]) if @custom_field.nil? render :action => 'select_type' else if params[:copy].present? && (@copy_from = CustomField.find_by(id: params[:copy])) @custom_field.copy_from(@copy_from) end @custom_field.safe_attributes = params[:custom_field] end end def find_custom_field @custom_field = CustomField.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/documents_controller.rb000066400000000000000000000063371500112024600230640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class DocumentsController < ApplicationController default_search_scope :documents model_object Document before_action :find_project_by_project_id, :only => [:index, :new, :create] before_action :find_model_object, :except => [:index, :new, :create] before_action :find_project_from_association, :except => [:index, :new, :create] before_action :authorize helper :attachments helper :custom_fields def index @sort_by = %w(category date title author).include?(params[:sort_by]) ? params[:sort_by] : 'category' documents = @project.documents.includes(:attachments, :category).to_a case @sort_by when 'date' documents.sort!{|a, b| b.updated_on <=> a.updated_on} @grouped = documents.group_by {|d| d.updated_on.to_date} when 'title' @grouped = documents.group_by {|d| d.title.first.upcase} when 'author' @grouped = documents.select{|d| d.attachments.any?}.group_by {|d| d.attachments.last.author} else @grouped = documents.group_by(&:category) end @document = @project.documents.build render :layout => false if request.xhr? end def show @attachments = @document.attachments.to_a end def new @document = @project.documents.build @document.safe_attributes = params[:document] end def create @document = @project.documents.build @document.safe_attributes = params[:document] @document.save_attachments(params[:attachments]) if @document.save render_attachment_warning_if_needed(@document) flash[:notice] = l(:notice_successful_create) redirect_to project_documents_path(@project) else render :action => 'new' end end def edit end def update @document.safe_attributes = params[:document] if @document.save flash[:notice] = l(:notice_successful_update) redirect_to document_path(@document) else render :action => 'edit' end end def destroy @document.destroy if request.delete? flash[:notice] = l(:notice_successful_delete) redirect_to project_documents_path(@project) end def add_attachment attachments = Attachment.attach_files(@document, params[:attachments]) render_attachment_warning_if_needed(@document) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added') Mailer.deliver_attachments_added(attachments[:files]) end redirect_to document_path(@document) end end redmine-6.0.5/app/controllers/email_addresses_controller.rb000066400000000000000000000053151500112024600242020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EmailAddressesController < ApplicationController self.main_menu = false before_action :find_user, :require_admin_or_current_user before_action :find_email_address, :only => [:update, :destroy] require_sudo_mode :create, :update, :destroy def index @addresses = @user.email_addresses.order(:id).where(:is_default => false).to_a @address ||= EmailAddress.new end def create saved = false if @user.email_addresses.count <= Setting.max_additional_emails.to_i @address = EmailAddress.new(:user => @user, :is_default => false) @address.safe_attributes = params[:email_address] saved = @address.save end respond_to do |format| format.html do if saved redirect_to user_email_addresses_path(@user) else index render :action => 'index' end end format.js do @address = nil if saved index render :action => 'index' end end end def update if params[:notify].present? @address.notify = params[:notify].to_s end @address.save respond_to do |format| format.html do redirect_to user_email_addresses_path(@user) end format.js do @address = nil index render :action => 'index' end end end def destroy @address.destroy respond_to do |format| format.html do redirect_to user_email_addresses_path(@user) end format.js do @address = nil index render :action => 'index' end end end private def find_user @user = User.find(params[:user_id]) end def find_email_address @address = @user.email_addresses.where(:is_default => false).find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end def require_admin_or_current_user unless @user == User.current require_admin end end end redmine-6.0.5/app/controllers/enumerations_controller.rb000066400000000000000000000064051500112024600235700ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EnumerationsController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => :index before_action :require_admin_or_api_request, :only => :index before_action :build_new_enumeration, :only => [:new, :create] before_action :find_enumeration, :only => [:edit, :update, :destroy] accept_api_auth :index helper :custom_fields def index respond_to do |format| format.html format.api do @klass = Enumeration.get_subclass(params[:type]) if @klass @enumerations = @klass.shared.sorted.to_a else render_404 end end end end def new end def create if request.post? && @enumeration.save flash[:notice] = l(:notice_successful_create) redirect_to enumerations_path else render :action => 'new' end end def edit end def update if @enumeration.update(enumeration_params) respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to enumerations_path end format.js {head :ok} end else respond_to do |format| format.html {render :action => 'edit'} format.js {head :unprocessable_content} end end end def destroy if !@enumeration.in_use? # No associated objects @enumeration.destroy redirect_to enumerations_path return elsif params[:reassign_to_id].present? && (reassign_to = @enumeration.class.find_by_id(params[:reassign_to_id].to_i)) @enumeration.destroy(reassign_to) redirect_to enumerations_path return end @enumerations = @enumeration.class.system.to_a - [@enumeration] end private def build_new_enumeration class_name = params[:enumeration] && params[:enumeration][:type] || params[:type] @enumeration = Enumeration.new_subclass_instance(class_name) if @enumeration @enumeration.attributes = enumeration_params || {} else render_404 end end def find_enumeration @enumeration = Enumeration.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end def enumeration_params # can't require enumeration on #new action cf_ids = @enumeration.available_custom_fields.map {|c| c.multiple? ? {c.id.to_s => []} : c.id.to_s} params.permit(:enumeration => [:name, :active, :is_default, :position, :custom_field_values => cf_ids])[:enumeration] end end redmine-6.0.5/app/controllers/files_controller.rb000066400000000000000000000054561500112024600221660ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class FilesController < ApplicationController menu_item :files before_action :find_project_by_project_id before_action :authorize accept_api_auth :index, :create helper :attachments helper :sort include SortHelper def index sort_init 'filename', 'asc' sort_update 'filename' => "#{Attachment.table_name}.filename", 'created_on' => "#{Attachment.table_name}.created_on", 'size' => "#{Attachment.table_name}.filesize", 'downloads' => "#{Attachment.table_name}.downloads" @containers = [Project.includes(:attachments). references(:attachments).reorder(sort_clause).find(@project.id)] @containers += @project.versions.includes(:attachments). references(:attachments).reorder(sort_clause).to_a.sort.reverse respond_to do |format| format.html {render :layout => !request.xhr?} format.api end end def new @versions = @project.versions.sorted end def create version_id = params[:version_id] || (params[:file] && params[:file][:version_id]) container = version_id.blank? ? @project : @project.versions.find_by_id(version_id) attachments = Attachment.attach_files(container, (params[:attachments] || (params[:file] && params[:file][:token] && params))) render_attachment_warning_if_needed(container) if attachments[:files].present? if Setting.notified_events.include?('file_added') Mailer.deliver_attachments_added(attachments[:files]) end respond_to do |format| format.html do flash[:notice] = l(:label_file_added) redirect_to project_files_path(@project) end format.api {render_api_ok} end else respond_to do |format| format.html do flash.now[:error] = l(:label_attachment) + " " + l('activerecord.errors.messages.invalid') new render :action => 'new' end format.api {render :status => :bad_request} end end end end redmine-6.0.5/app/controllers/gantts_controller.rb000066400000000000000000000035441500112024600223600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GanttsController < ApplicationController menu_item :gantt before_action :find_optional_project rescue_from Query::StatementInvalid, :with => :query_statement_invalid helper :gantt helper :issues helper :projects helper :queries include QueriesHelper include Redmine::Export::PDF def show @gantt = Redmine::Helpers::Gantt.new(params) @gantt.project = @project retrieve_query @query.group_by = nil @gantt.query = @query if @query.valid? basename = (@project ? "#{@project.identifier}-" : '') + 'gantt' respond_to do |format| format.html {render :action => "show", :layout => !request.xhr?} if @gantt.respond_to?(:to_image) format.png do send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") end end format.pdf do send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") end end end end redmine-6.0.5/app/controllers/groups_controller.rb000066400000000000000000000102541500112024600223730ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GroupsController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => [:show] before_action :find_group, :except => [:index, :new, :create] accept_api_auth :index, :show, :create, :update, :destroy, :add_users, :remove_user require_sudo_mode :add_users, :remove_user, :create, :update, :destroy, :edit_membership, :destroy_membership helper :custom_fields helper :principal_memberships def index respond_to do |format| format.html do scope = Group.sorted scope = scope.like(params[:name]) if params[:name].present? @group_count = scope.count @group_pages = Paginator.new @group_count, per_page_option, params['page'] @groups = scope.limit(@group_pages.per_page).offset(@group_pages.offset).to_a @user_count_by_group_id = user_count_by_group_id end format.api do scope = Group.sorted scope = scope.givable unless params[:builtin] == '1' @groups = scope.to_a end end end def show respond_to do |format| format.html do render :layout => 'base' end format.api end end def new @group = Group.new end def create @group = Group.new @group.safe_attributes = params[:group] respond_to do |format| if @group.save format.html do flash[:notice] = l(:notice_successful_create) redirect_to(params[:continue] ? new_group_path : groups_path) end format.api do render(:action => 'show', :status => :created, :location => group_url(@group)) end else format.html {render :action => "new"} format.api {render_validation_errors(@group)} end end end def edit end def update @group.safe_attributes = params[:group] respond_to do |format| if @group.save flash[:notice] = l(:notice_successful_update) format.html {redirect_to_referer_or(groups_path)} format.api {render_api_ok} else format.html {render :action => "edit"} format.api {render_validation_errors(@group)} end end end def destroy @group.destroy respond_to do |format| format.html {redirect_to_referer_or(groups_path)} format.api {render_api_ok} end end def new_users end def add_users @users = User.not_in_group(@group).where(:id => (params[:user_id] || params[:user_ids])).to_a @group.users << @users respond_to do |format| format.html {redirect_to edit_group_path(@group, :tab => 'users')} format.js format.api do if @users.any? render_api_ok else render_api_errors "#{l(:label_user)} #{l('activerecord.errors.messages.invalid')}" end end end end def remove_user @group.users.delete(User.find(params[:user_id])) if request.delete? respond_to do |format| format.html {redirect_to edit_group_path(@group, :tab => 'users')} format.js format.api {render_api_ok} end end def autocomplete_for_user respond_to do |format| format.js end end private def find_group @group = Group.visible.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end def user_count_by_group_id User.joins(:groups).group(:group_id).count.transform_keys(&:to_i) end end redmine-6.0.5/app/controllers/help_controller.rb000066400000000000000000000027131500112024600220050ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class HelpController < ApplicationController def show_wiki_syntax type = params[:type].nil? ? "" : "#{params[:type]}_" lang = current_language.to_s template = "help/wiki_syntax/#{Setting.text_formatting}/#{lang}/wiki_syntax_#{type}#{Setting.text_formatting}" unless lookup_context.exists?(template) lang = "en" end render template: "help/wiki_syntax/#{Setting.text_formatting}/#{lang}/wiki_syntax_#{type}#{Setting.text_formatting}", layout: nil end def show_code_highlighting @available_lexers = Rouge::Lexer.all.sort_by(&:tag) render template: "help/wiki_syntax/code_highlighting_languages", layout: nil end end redmine-6.0.5/app/controllers/imports_controller.rb000066400000000000000000000122541500112024600225530ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'csv' class ImportsController < ApplicationController before_action :find_import, :only => [:show, :settings, :mapping, :run] before_action :authorize_import layout :import_layout helper :issues helper :queries def new @import = import_type.new end def create @import = import_type.new @import.user = User.current @import.file = params[:file] @import.set_default_settings(:project_id => params[:project_id]) if @import.save redirect_to import_settings_path(@import) else render :action => 'new' end end def show end def settings if request.post? && @import.parse_file if @import.total_items == 0 flash.now[:error] = l(:error_no_data_in_file) else redirect_to import_mapping_path(@import) end end rescue CSV::MalformedCSVError, EncodingError => e if e.is_a?(CSV::MalformedCSVError) && !e.message.include?('Invalid byte sequence') flash.now[:error] = l(:error_invalid_csv_file_or_settings, e.message) else flash.now[:error] = l(:error_invalid_file_encoding, :encoding => ERB::Util.h(@import.settings['encoding'])) end rescue SystemCallError => e flash.now[:error] = l(:error_can_not_read_import_file) end def mapping @custom_fields = @import.mappable_custom_fields if request.get? auto_map_fields elsif request.post? respond_to do |format| format.html do if params[:previous] redirect_to import_settings_path(@import) else redirect_to import_run_path(@import) end end format.js # updates mapping form on project or tracker change end end end def run if request.post? @current = @import.run( :max_items => max_items_per_request, :max_time => 10.seconds ) respond_to do |format| format.html do if @import.finished? redirect_to import_path(@import) else redirect_to import_run_path(@import) end end format.js end end end def current_menu(project) if import_layout == 'admin' nil else :application_menu end end private def find_import @import = Import.where(:user_id => User.current.id, :filename => params[:id]).first if @import.nil? render_404 return elsif @import.finished? && action_name != 'show' redirect_to import_path(@import) return end update_from_params if request.post? end def update_from_params if params[:import_settings].present? @import.settings ||= {} @import.settings.merge!(params[:import_settings].to_unsafe_hash) @import.save! end end def max_items_per_request 5 end def import_layout import_type && import_type.layout || 'base' end def menu_items menu_item = import_type ? import_type.menu_item : nil {self.controller_name.to_sym => {:actions => {}, :default => menu_item}} end def authorize_import return render_404 unless import_type return render_403 unless import_type.authorized?(User.current) end def import_type return @import_type if defined? @import_type @import_type = if @import @import.class else type = begin Object.const_get(params[:type]) rescue nil end type && type < Import ? type : nil end end def auto_map_fields # Try to auto map fields only when settings['enconding'] is present # otherwhise, the import fails for non UTF-8 files because the headers # cannot be retrieved (Invalid byte sequence in UTF-8) return if @import.settings['encoding'].blank? mappings = @import.settings['mapping'] ||= {} headers = @import.headers.map{|header| header&.downcase} # Core fields import_type::AUTO_MAPPABLE_FIELDS.each do |field_nm, label_nm| next if mappings.include?(field_nm) index = headers.index(field_nm) || headers.index(l(label_nm).downcase) if index mappings[field_nm] = index end end # Custom fields @custom_fields.each do |field| field_nm = "cf_#{field.id}" next if mappings.include?(field_nm) index = headers.index(field_nm) || headers.index(field.name.downcase) if index mappings[field_nm] = index end end mappings end end redmine-6.0.5/app/controllers/issue_categories_controller.rb000066400000000000000000000073211500112024600244120ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueCategoriesController < ApplicationController menu_item :settings model_object IssueCategory before_action :find_model_object, :except => [:index, :new, :create] before_action :find_project_from_association, :except => [:index, :new, :create] before_action :find_project_by_project_id, :only => [:index, :new, :create] before_action :authorize accept_api_auth :index, :show, :create, :update, :destroy def index respond_to do |format| format.html {redirect_to_settings_in_projects} format.api {@categories = @project.issue_categories.to_a} end end def show respond_to do |format| format.html {redirect_to_settings_in_projects} format.api end end def new @category = @project.issue_categories.build @category.safe_attributes = params[:issue_category] respond_to do |format| format.html format.js end end def create @category = @project.issue_categories.build @category.safe_attributes = params[:issue_category] if @category.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_create) redirect_to_settings_in_projects end format.js format.api do render(:action => 'show', :status => :created, :location => issue_category_path(@category)) end end else respond_to do |format| format.html {render :action => 'new'} format.js {render :action => 'new'} format.api {render_validation_errors(@category)} end end end def edit end def update @category.safe_attributes = params[:issue_category] if @category.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to_settings_in_projects end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@category)} end end end def destroy @issue_count = @category.issues.size if @issue_count == 0 || params[:todo] || api_request? reassign_to = nil if params[:reassign_to_id] && (params[:todo] == 'reassign' || params[:todo].blank?) reassign_to = @project.issue_categories.find_by_id(params[:reassign_to_id]) end @category.destroy(reassign_to) respond_to do |format| format.html {redirect_to_settings_in_projects} format.api {render_api_ok} end return end @categories = @project.issue_categories - [@category] end private def redirect_to_settings_in_projects redirect_to settings_project_path(@project, :tab => 'categories') end # Wrap ApplicationController's find_model_object method to set # @category instead of just @issue_category def find_model_object super @category = @object end end redmine-6.0.5/app/controllers/issue_relations_controller.rb000066400000000000000000000070411500112024600242640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueRelationsController < ApplicationController helper :issues before_action :find_issue, :authorize, :only => [:index, :create] before_action :find_relation, :only => [:show, :destroy] accept_api_auth :index, :show, :create, :destroy def index @relations = @issue.relations respond_to do |format| format.html {head :ok} format.api end end def show raise Unauthorized unless @relation.visible? respond_to do |format| format.html {head :ok} format.api end end def create saved = false params_relation = params[:relation] unsaved_relations = [] relation_issues_to_id.each do |issue_to_id| params_relation[:issue_to_id] = issue_to_id @relation = IssueRelation.new @relation.issue_from = @issue @relation.safe_attributes = params_relation @relation.init_journals(User.current) begin saved = @relation.save rescue ActiveRecord::RecordNotUnique @relation.errors.add :base, :taken end unsaved_relations << @relation unless saved end respond_to do |format| format.html {redirect_to issue_path(@issue)} format.js do @relations = select_relations(@issue) @unsaved_relations = unsaved_relations end format.api do if saved render :action => 'show', :status => :created, :location => relation_url(@relation) else render_validation_errors(@relation) end end end end def destroy raise Unauthorized unless @relation.deletable? @relation.init_journals(User.current) @relation.destroy respond_to do |format| format.html {redirect_to issue_path(@relation.issue_from)} format.js do find_issue @relations = select_relations(@issue) end format.api {render_api_ok} end end private def find_issue @issue = Issue.find(params[:issue_id]) @project = @issue.project rescue ActiveRecord::RecordNotFound render_404 end def find_relation @relation = IssueRelation.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end def relation_issues_to_id issue_to_id = params[:relation].require(:issue_to_id) case issue_to_id when String issue_to_id = issue_to_id.split(',').reject(&:blank?) when Integer issue_to_id = [issue_to_id] end issue_to_id rescue ActionController::ParameterMissing => e # We return a empty array just to loop once and return a validation error # ToDo: Find a better method to return an error if the param is missing. [''] end def select_relations(issue) issue.reload.relations.select {|r| r.other_issue(issue) && r.other_issue(issue).visible?} end end redmine-6.0.5/app/controllers/issue_statuses_controller.rb000066400000000000000000000051561500112024600241440ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueStatusesController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => :index before_action :require_admin_or_api_request, :only => :index accept_api_auth :index def index @issue_statuses = IssueStatus.sorted.to_a respond_to do |format| format.html {render :layout => false if request.xhr?} format.api end end def new @issue_status = IssueStatus.new end def create @issue_status = IssueStatus.new @issue_status.safe_attributes = params[:issue_status] if @issue_status.save flash[:notice] = l(:notice_successful_create) redirect_to issue_statuses_path else render :action => 'new' end end def edit @issue_status = IssueStatus.find(params[:id]) end def update @issue_status = IssueStatus.find(params[:id]) @issue_status.safe_attributes = params[:issue_status] if @issue_status.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to issue_statuses_path(:page => params[:page]) end format.js {head :ok} end else respond_to do |format| format.html {render :action => 'edit'} format.js {head :unprocessable_content} end end end def destroy IssueStatus.find(params[:id]).destroy redirect_to issue_statuses_path rescue => e flash[:error] = l(:error_unable_delete_issue_status, ERB::Util.h(e.message)) redirect_to issue_statuses_path end def update_issue_done_ratio if request.post? && IssueStatus.update_issue_done_ratios flash[:notice] = l(:notice_issue_done_ratios_updated) else flash[:error] = l(:error_issue_done_ratios_not_updated) end redirect_to issue_statuses_path end end redmine-6.0.5/app/controllers/issues_controller.rb000066400000000000000000000615561500112024600224020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssuesController < ApplicationController default_search_scope :issues before_action :find_issue, :only => [:show, :edit, :update, :issue_tab] before_action :find_issues, :only => [:bulk_edit, :bulk_update, :destroy] before_action :authorize, :except => [:index, :new, :create] before_action :find_optional_project, :only => [:index, :new, :create] before_action :build_new_issue_from_params, :only => [:new, :create] accept_atom_auth :index, :show accept_api_auth :index, :show, :create, :update, :destroy rescue_from Query::StatementInvalid, :with => :query_statement_invalid rescue_from Query::QueryError, :with => :query_error helper :journals helper :projects helper :custom_fields helper :issue_relations helper :watchers helper :attachments helper :queries include QueriesHelper helper :repositories helper :timelog def index use_session = !request.format.csv? retrieve_default_query(use_session) retrieve_query(IssueQuery, use_session) if @query.valid? respond_to do |format| format.html do @issue_count = @query.issue_count @issue_pages = Paginator.new @issue_count, per_page_option, params['page'] @issues = @query.issues(:offset => @issue_pages.offset, :limit => @issue_pages.per_page) render :layout => !request.xhr? end format.api do @offset, @limit = api_offset_and_limit @query.column_names = %w(author) @issue_count = @query.issue_count @issues = @query.issues(:offset => @offset, :limit => @limit) Issue.load_visible_relations(@issues) if include_in_api_response?('relations') if User.current.allowed_to?(:view_time_entries, nil, :global => true) Issue.load_visible_spent_hours(@issues) Issue.load_visible_total_spent_hours(@issues) end end format.atom do issues = @query.issues(:limit => Setting.feeds_limit.to_i) render_feed(issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") end format.csv do issues = @query.issues(:limit => Setting.issues_export_limit.to_i) send_data(query_to_csv(issues, @query, params[:csv]), :type => 'text/csv; header=present', :filename => "#{filename_for_export(@query, 'issues')}.csv") end format.pdf do @issues = @query.issues(:limit => Setting.issues_export_limit.to_i) send_file_headers! :type => 'application/pdf', :filename => "#{filename_for_export(@query, 'issues')}.pdf" end end else respond_to do |format| format.html {render :layout => !request.xhr?} format.any(:atom, :csv, :pdf) {head :unprocessable_content} format.api {render_validation_errors(@query)} end end rescue ActiveRecord::RecordNotFound render_404 end def show if !api_request? || include_in_api_response?('journals') @journals = @issue.visible_journals_with_index @journals.reverse! if User.current.wants_comments_in_reverse_order? end if !api_request? || include_in_api_response?('relations') @relations = @issue.relations.select {|r| r.other_issue(@issue)&.visible?} end if !api_request? || include_in_api_response?('allowed_statuses') @allowed_statuses = @issue.new_statuses_allowed_to(User.current) end if User.current.allowed_to?(:view_time_entries, @project) Issue.load_visible_spent_hours([@issue]) Issue.load_visible_total_spent_hours([@issue]) end respond_to do |format| format.html do @priorities = IssuePriority.active @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) @time_entries = @issue.time_entries.visible.preload(:activity, :user) @relation = IssueRelation.new @has_changesets = @issue.changesets.visible.preload(:repository, :user).exists? retrieve_previous_and_next_issue_ids render :template => 'issues/show' end format.api do if include_in_api_response?('changesets') @changesets = @issue.changesets.visible.preload(:repository, :user).to_a @changesets.reverse! if User.current.wants_comments_in_reverse_order? end end format.atom do render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' end format.pdf do send_file_headers!(:type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") end end end def new respond_to do |format| format.html {render :action => 'new', :layout => !request.xhr?} format.js end end def create unless User.current.allowed_to?(:add_issues, @issue.project, :global => true) raise ::Unauthorized end call_hook(:controller_issues_new_before_save, {:params => params, :issue => @issue}) @issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads])) if @issue.save call_hook(:controller_issues_new_after_save, {:params => params, :issue => @issue}) respond_to do |format| format.html do render_attachment_warning_if_needed(@issue) flash[:notice] = l(:notice_issue_successful_create, :id => view_context.link_to("##{@issue.id}", issue_path(@issue), :title => @issue.subject)) redirect_after_create end format.api do render :action => 'show', :status => :created, :location => issue_url(@issue) end end return else respond_to do |format| format.html do if @issue.project.nil? render_error :status => 422 else render :action => 'new' end end format.api {render_validation_errors(@issue)} end end end def edit return unless update_issue_from_params respond_to do |format| format.html {} format.js end end def update return unless update_issue_from_params attachments = params[:attachments] || params.dig(:issue, :uploads) if @issue.attachments_addable? @issue.save_attachments(attachments) else attachments = attachments.to_unsafe_hash if attachments.respond_to?(:to_unsafe_hash) if [Hash, Array].any? { |klass| attachments.is_a?(klass) } && attachments.any? flash[:warning] = l(:warning_attachments_not_saved, attachments.size) end end saved = false begin saved = save_issue_with_child_records rescue ActiveRecord::StaleObjectError @issue.detach_saved_attachments @conflict = true if params[:last_journal_id] @conflict_journals = @issue.journals_after(params[:last_journal_id]).to_a unless User.current.allowed_to?(:view_private_notes, @issue.project) @conflict_journals.reject!(&:private_notes?) end end end if saved render_attachment_warning_if_needed(@issue) unless @issue.current_journal.new_record? || params[:no_flash] flash[:notice] = l(:notice_successful_update) end respond_to do |format| format.html do redirect_back_or_default( issue_path(@issue, previous_and_next_issue_ids_params) ) end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@issue)} end end end def issue_tab return render_error :status => 422 unless request.xhr? tab = params[:name] case tab when 'time_entries' @time_entries = @issue.time_entries.visible.preload(:activity, :user).to_a render :partial => 'issues/tabs/time_entries', :locals => {:time_entries => @time_entries} when 'changesets' @changesets = @issue.changesets.visible.preload(:repository, :user).to_a @changesets.reverse! if User.current.wants_comments_in_reverse_order? render :partial => 'issues/tabs/changesets', :locals => {:changesets => @changesets, :project => @project} end end # Bulk edit/copy a set of issues def bulk_edit @issues.sort! @copy = params[:copy].present? @notes = params[:notes] if @copy unless User.current.allowed_to?(:copy_issues, @projects) raise ::Unauthorized end else unless @issues.all?(&:attributes_editable?) raise ::Unauthorized end end edited_issues = Issue.where(:id => @issues.map(&:id)).to_a @values_by_custom_field = {} edited_issues.each do |issue| issue.custom_field_values.each do |c| if c.value_present? @values_by_custom_field[c.custom_field] ||= [] @values_by_custom_field[c.custom_field] << issue.id end end end @allowed_projects = Issue.allowed_target_projects if params[:issue] @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:issue][:project_id].to_s} if @target_project target_projects = [@target_project] edited_issues.each {|issue| issue.project = @target_project} end end target_projects ||= @projects @trackers = target_projects.map {|p| Issue.allowed_target_trackers(p)}.reduce(:&) if params[:issue] @target_tracker = @trackers.detect {|t| t.id.to_s == params[:issue][:tracker_id].to_s} if @target_tracker edited_issues.each {|issue| issue.tracker = @target_tracker} end end if @copy # Copied issues will get their default statuses @available_statuses = [] else @available_statuses = edited_issues.map(&:new_statuses_allowed_to).reduce(:&) end if params[:issue] @target_status = @available_statuses.detect {|t| t.id.to_s == params[:issue][:status_id].to_s} if @target_status edited_issues.each {|issue| issue.status = @target_status} end end edited_issues.each do |issue| issue.custom_field_values.each do |c| if c.value_present? && @values_by_custom_field[c.custom_field] @values_by_custom_field[c.custom_field].delete(issue.id) end end end @values_by_custom_field.delete_if {|k, v| v.blank?} @custom_fields = edited_issues.map{|i| i.editable_custom_fields}. reduce(:&).select {|field| field.format.bulk_edit_supported} @assignables = target_projects.map(&:assignable_users).reduce(:&) @versions = target_projects.map {|p| p.shared_versions.open}.reduce(:&) @categories = target_projects.map {|p| p.issue_categories}.reduce(:&) if @copy @attachments_present = @issues.detect {|i| i.attachments.any?}.present? && (Setting.copy_attachments_on_issue_copy == 'ask') @subtasks_present = @issues.detect {|i| !i.leaf?}.present? @watchers_present = User.current.allowed_to?(:add_issue_watchers, @projects) && Watcher.where(:watchable_type => 'Issue', :watchable_id => @issues.map(&:id)).exists? end @safe_attributes = edited_issues.map(&:safe_attribute_names).reduce(:&) @issue_params = params[:issue] || {} @issue_params[:custom_field_values] ||= {} end def bulk_update @issues.sort! @copy = params[:copy].present? attributes = parse_params_for_bulk_update(params[:issue]) copy_subtasks = (params[:copy_subtasks] == '1') copy_watchers = (params[:copy_watchers] == '1') if @copy unless User.current.allowed_to?(:copy_issues, @projects) raise ::Unauthorized end target_projects = @projects if attributes['project_id'].present? target_projects = Project.where(:id => attributes['project_id']).to_a end unless User.current.allowed_to?(:add_issues, target_projects) raise ::Unauthorized end unless User.current.allowed_to?(:add_issue_watchers, @projects) copy_watchers = false end else unless @issues.all?(&:attributes_editable?) raise ::Unauthorized end end unsaved_issues = [] saved_issues = [] if @copy && copy_subtasks # Descendant issues will be copied with the parent task # Don't copy them twice @issues.reject! {|issue| @issues.detect {|other| issue.is_descendant_of?(other)}} end @issues.each do |orig_issue| orig_issue.reload if @copy issue = orig_issue.copy( {}, :attachments => copy_attachments?(params[:copy_attachments]), :subtasks => copy_subtasks, :watchers => copy_watchers, :link => link_copy?(params[:link_copy]) ) else issue = orig_issue end journal = issue.init_journal(User.current, params[:notes]) issue.safe_attributes = attributes call_hook(:controller_issues_bulk_edit_before_save, {:params => params, :issue => issue}) if issue.save saved_issues << issue else unsaved_issues << orig_issue end end if unsaved_issues.empty? flash[:notice] = l(:notice_successful_update) unless saved_issues.empty? if params[:follow] if @issues.size == 1 && saved_issues.size == 1 redirect_to issue_path(saved_issues.first) elsif saved_issues.map(&:project).uniq.size == 1 redirect_to project_issues_path(saved_issues.map(&:project).first) end else redirect_back_or_default _project_issues_path(@project) end else @saved_issues = @issues @unsaved_issues = unsaved_issues @issues = Issue.visible.where(:id => @unsaved_issues.map(&:id)).to_a bulk_edit render :action => 'bulk_edit' end end def destroy raise Unauthorized unless @issues.all?(&:deletable?) # all issues and their descendants are about to be deleted issues_and_descendants_ids = Issue.self_and_descendants(@issues).pluck(:id) time_entries = TimeEntry.where(:issue_id => issues_and_descendants_ids) @hours = time_entries.sum(:hours).to_f if @hours > 0 case params[:todo] when 'destroy' # nothing to do when 'nullify' if Setting.timelog_required_fields.include?('issue_id') flash.now[:error] = l(:field_issue) + " " + ::I18n.t('activerecord.errors.messages.blank') return else time_entries.update_all(:issue_id => nil) end when 'reassign' reassign_to = @project && @project.issues.find_by_id(params[:reassign_to_id]) if reassign_to.nil? flash.now[:error] = l(:error_issue_not_found_in_project) return elsif issues_and_descendants_ids.include?(reassign_to.id) flash.now[:error] = l(:error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted) return else time_entries.update_all(:issue_id => reassign_to.id, :project_id => reassign_to.project_id) end else # display the destroy form if it's a user request return unless api_request? end end @issues.each do |issue| begin issue.reload.destroy rescue ::ActiveRecord::RecordNotFound # raised by #reload if issue no longer exists # nothing to do, issue was already deleted (eg. by a parent) end end respond_to do |format| format.html do flash[:notice] = l(:notice_successful_delete) redirect_back_or_default _project_issues_path(@project) end format.api {render_api_ok} end end # Overrides Redmine::MenuManager::MenuController::ClassMethods for # when the "New issue" tab is enabled def current_menu_item if Setting.new_item_menu_tab == '1' && [:new, :create].include?(action_name.to_sym) :new_issue else super end end private def query_error(exception) session.delete(:issue_query) super end def retrieve_default_query(use_session) return if params[:query_id].present? return if api_request? return if params[:set_filter] if params[:without_default].present? params[:set_filter] = 1 return end if !params[:set_filter] && use_session && session[:issue_query] # Don't apply the default query if a valid query id is set in the session query_id, project_id = session[:issue_query].values_at(:id, :project_id) return if query_id && project_id == @project&.id && IssueQuery.exists?(id: query_id) end if default_query = IssueQuery.default(project: @project) params[:query_id] = default_query.id end end def retrieve_previous_and_next_issue_ids if params[:prev_issue_id].present? || params[:next_issue_id].present? @prev_issue_id = params[:prev_issue_id].presence.try(:to_i) @next_issue_id = params[:next_issue_id].presence.try(:to_i) @issue_position = params[:issue_position].presence.try(:to_i) @issue_count = params[:issue_count].presence.try(:to_i) else retrieve_query_from_session if @query @per_page = per_page_option limit = 500 issue_ids = @query.issue_ids(:limit => (limit + 1)) if (idx = issue_ids.index(@issue.id)) && idx < limit if issue_ids.size < limit @issue_position = idx + 1 @issue_count = issue_ids.size end @prev_issue_id = issue_ids[idx - 1] if idx > 0 @next_issue_id = issue_ids[idx + 1] if idx < (issue_ids.size - 1) end query_params = @query.as_params if @issue_position query_params = query_params.merge(:page => (@issue_position / per_page_option) + 1, :per_page => per_page_option) end @query_path = _project_issues_path(@query.project, query_params) end end end def previous_and_next_issue_ids_params { :prev_issue_id => params[:prev_issue_id], :next_issue_id => params[:next_issue_id], :issue_position => params[:issue_position], :issue_count => params[:issue_count] }.reject {|k, v| k.blank?} end # Used by #edit and #update to set some common instance variables # from the params def update_issue_from_params @time_entry = TimeEntry.new(:issue => @issue, :project => @issue.project) if params[:time_entry] @time_entry.safe_attributes = params[:time_entry] end @issue.init_journal(User.current) issue_attributes = params[:issue] if issue_attributes && issue_attributes[:assigned_to_id] == 'me' issue_attributes[:assigned_to_id] = User.current.id end if issue_attributes && params[:conflict_resolution] case params[:conflict_resolution] when 'overwrite' issue_attributes = issue_attributes.dup issue_attributes.delete(:lock_version) when 'add_notes' issue_attributes = issue_attributes.slice(:notes, :private_notes) when 'cancel' redirect_to issue_path(@issue) return false end end issue_attributes = replace_none_values_with_blank(issue_attributes) @issue.safe_attributes = issue_attributes @priorities = IssuePriority.active @allowed_statuses = @issue.new_statuses_allowed_to(User.current) true end # Used by #new and #create to build a new issue from the params # The new issue will be copied from an existing one if copy_from parameter is given def build_new_issue_from_params @issue = Issue.new if params[:copy_from] begin @issue.init_journal(User.current) @copy_from = Issue.visible.find(params[:copy_from]) unless User.current.allowed_to?(:copy_issues, @copy_from.project) raise ::Unauthorized end @link_copy = link_copy?(params[:link_copy]) || request.get? @copy_attachments = copy_attachments?(params[:copy_attachments]) || request.get? @copy_subtasks = params[:copy_subtasks].present? || request.get? @copy_watchers = User.current.allowed_to?(:add_issue_watchers, @project) @issue.copy_from(@copy_from, :attachments => @copy_attachments, :subtasks => @copy_subtasks, :watchers => @copy_watchers, :link => @link_copy) @issue.parent_issue_id = @copy_from.parent_id rescue ActiveRecord::RecordNotFound render_404 return end end @issue.project = @project if request.get? @issue.project ||= @issue.allowed_target_projects.first end @issue.author ||= User.current @issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date? attrs = (params[:issue] || {}).deep_dup if action_name == 'new' && params[:was_default_status] == attrs[:status_id] attrs.delete(:status_id) end if action_name == 'new' && params[:form_update_triggered_by] == 'issue_project_id' # Discard submitted version when changing the project on the issue form # so we can use the default version for the new project attrs.delete(:fixed_version_id) end attrs[:assigned_to_id] = User.current.id if attrs[:assigned_to_id] == 'me' @issue.safe_attributes = attrs if @issue.project @issue.tracker ||= @issue.allowed_target_trackers.first if @issue.tracker.nil? if @issue.project.trackers.any? # None of the project trackers is allowed to the user render_error :message => l(:error_no_tracker_allowed_for_new_issue_in_project), :status => 403 else # Project has no trackers render_error l(:error_no_tracker_in_project) end return false end if @issue.status.nil? render_error l(:error_no_default_issue_status) return false end elsif request.get? render_error :message => l(:error_no_projects_with_tracker_allowed_for_new_issue), :status => 403 return false end @priorities = IssuePriority.active @allowed_statuses = @issue.new_statuses_allowed_to(User.current) end # Saves @issue and a time_entry from the parameters def save_issue_with_child_records Issue.transaction do if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, @issue.project) time_entry = @time_entry || TimeEntry.new time_entry.project = @issue.project time_entry.issue = @issue time_entry.author = User.current time_entry.user = User.current time_entry.spent_on = User.current.today time_entry.safe_attributes = params[:time_entry] @issue.time_entries << time_entry end call_hook( :controller_issues_edit_before_save, {:params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal} ) if @issue.save call_hook( :controller_issues_edit_after_save, {:params => params, :issue => @issue, :time_entry => time_entry, :journal => @issue.current_journal} ) else raise ActiveRecord::Rollback end end end # Returns true if the issue copy should be linked # to the original issue def link_copy?(param) case Setting.link_copied_issue when 'yes' true when 'no' false when 'ask' param == '1' end end # Returns true if the attachments should be copied # from the original issue def copy_attachments?(param) case Setting.copy_attachments_on_issue_copy when 'yes' true when 'no' false when 'ask' param == '1' end end # Redirects user after a successful issue creation def redirect_after_create if params[:continue] url_params = {} url_params[:issue] = { :tracker_id => @issue.tracker, :parent_issue_id => @issue.parent_issue_id }.compact url_params[:back_url] = params[:back_url].presence if params[:project_id] redirect_to new_project_issue_path(@issue.project, url_params) else url_params[:issue][:project_id] = @issue.project_id redirect_to new_issue_path(url_params) end elsif params[:follow] redirect_to issue_path(@issue) else redirect_back_or_default issue_path(@issue) end end end redmine-6.0.5/app/controllers/journals_controller.rb000066400000000000000000000071641500112024600227170ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController before_action :find_journal, :only => [:edit, :update, :diff] before_action :find_issue, :only => [:new] before_action :find_optional_project, :only => [:index] before_action :authorize, :only => [:new, :edit, :update, :diff] accept_atom_auth :index accept_api_auth :update menu_item :issues helper :issues helper :custom_fields helper :queries helper :attachments include QueriesHelper include Redmine::QuoteReply::Builder def index retrieve_query if @query.valid? @journals = @query.journals(:order => "#{Journal.table_name}.created_on DESC", :limit => 25) end @title = (@project ? @project.name : Setting.app_title) + ": " + (@query.new_record? ? l(:label_changes_details) : @query.name) render :layout => false, :content_type => 'application/atom+xml' rescue ActiveRecord::RecordNotFound render_404 end def diff @issue = @journal.issue if params[:detail_id].present? @detail = @journal.details.find_by_id(params[:detail_id]) else @detail = @journal.details.detect {|d| d.property == 'attr' && d.prop_key == 'description'} end unless @issue && @detail render_404 return false end if @detail.property == 'cf' unless @detail.custom_field && @detail.custom_field.visible_by?(@issue.project, User.current) raise ::Unauthorized end end @diff = Redmine::Helpers::Diff.new(@detail.value, @detail.old_value) end def new @journal = Journal.visible.find(params[:journal_id]) if params[:journal_id] @content = if @journal quote_issue_journal(@journal, indice: params[:journal_indice], partial_quote: params[:quote]) else quote_issue(@issue, partial_quote: params[:quote]) end rescue ActiveRecord::RecordNotFound render_404 end def edit (render_403; return false) unless @journal.editable_by?(User.current) respond_to do |format| # TODO: implement non-JS journal update format.js end end def update (render_403; return false) unless @journal.editable_by?(User.current) journal_attributes = params[:journal] journal_attributes[:updated_by] = User.current @journal.safe_attributes = journal_attributes @journal.save @journal.destroy if @journal.details.empty? && @journal.notes.blank? call_hook(:controller_journals_edit_post, {:journal => @journal, :params => params}) respond_to do |format| format.html {redirect_to issue_path(@journal.journalized)} format.js format.api { render_api_ok } end end private def find_journal @journal = Journal.visible.find(params[:id]) @project = @journal.journalized.project rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/mail_handler_controller.rb000066400000000000000000000043141500112024600234730ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MailHandlerController < ActionController::Base include ActiveSupport::SecurityUtils before_action :check_credential # Requests from rdm-mailhandler.rb don't contain CSRF tokens skip_before_action :verify_authenticity_token # Displays the email submission form def new end # Submits an incoming email to MailHandler def index # MailHandlerController#index should permit all options set by # RedmineMailHandler#submit in rdm-mailhandler.rb. # It must be kept in sync. options = params.permit( :key, :email, :allow_override, :unknown_user, :default_group, :no_account_notice, :no_notification, :no_permission_check, :project_from_subaddress, { issue: [ :project, :status, :tracker, :category, :priority, :assigned_to, :fixed_version, :is_private ] } ).to_h email = options.delete(:email) if MailHandler.safe_receive(email, options) head :created else head :unprocessable_content end end private def check_credential User.current = nil unless Setting.mail_handler_api_enabled? && secure_compare(params[:key].to_s, Setting.mail_handler_api_key.to_s) render :plain => 'Access denied. Incoming emails WS is disabled or key is invalid.', :status => :forbidden end end end redmine-6.0.5/app/controllers/members_controller.rb000066400000000000000000000072231500112024600225100ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MembersController < ApplicationController model_object Member before_action :find_model_object, :except => [:index, :new, :create, :autocomplete] before_action :find_project_from_association, :except => [:index, :new, :create, :autocomplete] before_action :find_project_by_project_id, :only => [:index, :new, :create, :autocomplete] before_action :authorize accept_api_auth :index, :show, :create, :update, :destroy require_sudo_mode :create, :update, :destroy def index scope = @project.memberships @offset, @limit = api_offset_and_limit @member_count = scope.count @member_pages = Paginator.new @member_count, @limit, params['page'] @offset ||= @member_pages.offset @members = scope.includes(:principal, :roles).order(:id).limit(@limit).offset(@offset).to_a respond_to do |format| format.html {head :not_acceptable} format.api end end def show respond_to do |format| format.html {head :not_acceptable} format.api end end def new @member = Member.new end def create members = [] if params[:membership] user_ids = Array.wrap(params[:membership][:user_id] || params[:membership][:user_ids]) user_ids << nil if user_ids.empty? user_ids.each do |user_id| member = Member.new(:project => @project, :user_id => user_id) member.set_editable_role_ids(params[:membership][:role_ids]) members << member end @project.members << members end respond_to do |format| format.html {redirect_to_settings_in_projects} format.js do @members = members @member = Member.new end format.api do @member = members.first if @member.valid? render :action => 'show', :status => :created, :location => membership_url(@member) else render_validation_errors(@member) end end end end def edit @roles = Role.givable.to_a end def update if params[:membership] @member.set_editable_role_ids(params[:membership][:role_ids]) end saved = @member.save respond_to do |format| format.html {redirect_to_settings_in_projects} format.js format.api do if saved render_api_ok else render_validation_errors(@member) end end end end def destroy if @member.deletable? @member.destroy end respond_to do |format| format.html {redirect_to_settings_in_projects} format.js format.api do if @member.destroyed? render_api_ok else head :unprocessable_content end end end end def autocomplete respond_to do |format| format.js end end private def redirect_to_settings_in_projects redirect_to settings_project_path(@project, :tab => 'members') end end redmine-6.0.5/app/controllers/messages_controller.rb000066400000000000000000000120661500112024600226660ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MessagesController < ApplicationController menu_item :boards default_search_scope :messages before_action :find_board, :only => [:new, :preview] before_action :find_attachments, :only => [:preview] before_action :find_message, :except => [:new, :preview] before_action :authorize, :except => [:preview, :edit, :destroy] helper :boards helper :watchers helper :attachments include AttachmentsHelper include Redmine::QuoteReply::Builder REPLIES_PER_PAGE = 25 unless const_defined?(:REPLIES_PER_PAGE) # Show a topic and its replies def show page = params[:page] # Find the page of the requested reply if params[:r] && page.nil? offset = @topic.children.where("#{Message.table_name}.id < ?", params[:r].to_i).count page = 1 + offset / REPLIES_PER_PAGE end @reply_count = @topic.children.count @reply_pages = Paginator.new @reply_count, REPLIES_PER_PAGE, page @replies = @topic.children. includes(:author, :attachments, {:board => :project}). reorder("#{Message.table_name}.created_on ASC, #{Message.table_name}.id ASC"). limit(@reply_pages.per_page). offset(@reply_pages.offset). to_a @reply = Message.new(:subject => "RE: #{@message.subject}") render :action => "show", :layout => false if request.xhr? end # Create a new topic def new @message = Message.new @message.author = User.current @message.board = @board @message.safe_attributes = params[:message] if request.post? @message.save_attachments(params[:attachments]) if @message.save call_hook(:controller_messages_new_after_save, {:params => params, :message => @message}) render_attachment_warning_if_needed(@message) flash[:notice] = l(:notice_successful_create) redirect_to board_message_path(@board, @message) end end end # Reply to a topic def reply @reply = Message.new @reply.author = User.current @reply.board = @board @reply.safe_attributes = params[:reply] @reply.save_attachments(params[:attachments]) @topic.children << @reply unless @reply.new_record? call_hook(:controller_messages_reply_after_save, {:params => params, :message => @reply}) render_attachment_warning_if_needed(@reply) end flash[:notice] = l(:notice_successful_update) redirect_to board_message_path(@board, @topic, :r => @reply) end # Edit a message def edit (render_403; return false) unless @message.editable_by?(User.current) @message.safe_attributes = params[:message] if request.post? @message.save_attachments(params[:attachments]) if @message.save render_attachment_warning_if_needed(@message) flash[:notice] = l(:notice_successful_update) @message.reload redirect_to board_message_path(@message.board, @message.root, :r => (@message.parent_id && @message.id)) end end end # Delete a messages def destroy (render_403; return false) unless @message.destroyable_by?(User.current) r = @message.to_param @message.destroy flash[:notice] = l(:notice_successful_delete) if @message.parent redirect_to board_message_path(@board, @message.parent, :r => r) else redirect_to project_board_path(@project, @board) end end def quote @subject = @message.subject @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:') @content = if @message.root == @message quote_root_message(@message, partial_quote: params[:quote]) else quote_message(@message, partial_quote: params[:quote]) end respond_to do |format| format.html { render_404 } format.js end end def preview message = @board.messages.find_by_id(params[:id]) @text = params[:text] ? params[:text] : nil @previewed = message render :partial => 'common/preview' end private def find_message return unless find_board @message = @board.messages.includes(:parent).find(params[:id]) @topic = @message.root rescue ActiveRecord::RecordNotFound render_404 end def find_board @board = Board.includes(:project).find(params[:board_id]) @project = @board.project rescue ActiveRecord::RecordNotFound render_404 nil end end redmine-6.0.5/app/controllers/my_controller.rb000066400000000000000000000126141500112024600215030ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MyController < ApplicationController self.main_menu = false before_action :require_login # let user change user's password when user has to skip_before_action :check_password_change, :check_twofa_activation, :only => :password accept_api_auth :account require_sudo_mode :account, only: :put require_sudo_mode :reset_atom_key, :reset_api_key, :show_api_key, :destroy helper :issues helper :users helper :custom_fields helper :queries helper :activities def index page render :action => 'page' end # Show user's page def page @user = User.current @groups = @user.pref.my_page_groups @blocks = @user.pref.my_page_layout end # Edit user's account def account @user = User.current @pref = @user.pref if request.put? @user.safe_attributes = params[:user] @user.pref.safe_attributes = params[:pref] if @user.save @user.pref.save respond_to do |format| format.html do flash[:notice] = l(:notice_account_updated) redirect_to my_account_path end format.api {render_api_ok} end return else respond_to do |format| format.html {render :action => :account} format.api {render_validation_errors(@user)} end end end end # Destroys user's account def destroy @user = User.current unless @user.own_account_deletable? redirect_to my_account_path return end if request.post? && params[:confirm] @user.destroy if @user.destroyed? logout_user flash[:notice] = l(:notice_account_deleted) end redirect_to home_path end end # Manage user's password def password @user = User.current unless @user.change_password_allowed? flash[:error] = l(:notice_can_t_change_password) redirect_to my_account_path return end if request.post? if !@user.check_password?(params[:password]) flash.now[:error] = l(:notice_account_wrong_password) elsif params[:password] == params[:new_password] flash.now[:error] = l(:notice_new_password_must_be_different) else @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] @user.must_change_passwd = false if @user.save # The session token was destroyed by the password change, generate a new one session[:tk] = @user.generate_session_token Mailer.deliver_password_updated(@user, User.current) flash[:notice] = l(:notice_account_password_updated) redirect_to my_account_path end end end end # Create a new feeds key def reset_atom_key if request.post? if User.current.atom_token User.current.atom_token.destroy User.current.reload end User.current.atom_key flash[:notice] = l(:notice_feeds_access_key_reseted) end redirect_to my_account_path end def show_api_key @user = User.current end # Create a new API key def reset_api_key if request.post? if User.current.api_token User.current.api_token.destroy User.current.reload end User.current.api_key flash[:notice] = l(:notice_api_access_key_reseted) end redirect_to my_account_path end def update_page @user = User.current block_settings = params[:settings] || {} block_settings.each do |block, settings| @user.pref.update_block_settings(block, settings.to_unsafe_hash) end @user.pref.save @updated_blocks = block_settings.keys end # Add a block to user's page # The block is added on top of the page # params[:block] : id of the block to add def add_block @user = User.current @block = params[:block] if @user.pref.add_block @block @user.pref.save respond_to do |format| format.html {redirect_to my_page_path} format.js end else render_error :status => 422 end end # Remove a block to user's page # params[:block] : id of the block to remove def remove_block @user = User.current @block = params[:block] @user.pref.remove_block @block @user.pref.save respond_to do |format| format.html {redirect_to my_page_path} format.js end end # Change blocks order on user's page # params[:group] : group to order (top, left or right) # params[:blocks] : array of block ids of the group def order_blocks @user = User.current @user.pref.order_blocks params[:group], params[:blocks] @user.pref.save head :ok end end redmine-6.0.5/app/controllers/news_controller.rb000066400000000000000000000101641500112024600220300ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class NewsController < ApplicationController default_search_scope :news model_object News before_action :find_model_object, :except => [:new, :create, :index] before_action :find_project_from_association, :except => [:new, :create, :index] before_action :find_project_by_project_id, :only => :create before_action :authorize, :except => [:index, :new] before_action :find_optional_project, :only => [:index, :new] accept_atom_auth :index accept_api_auth :index, :show, :create, :update, :destroy helper :watchers helper :attachments def index case params[:format] when 'xml', 'json' @offset, @limit = api_offset_and_limit else @limit = 10 end scope = @project ? @project.news.visible : News.visible @news_count = scope.count @news_pages = Paginator.new @news_count, @limit, params['page'] @offset ||= @news_pages.offset @newss = scope.includes([:author, :project]). order("#{News.table_name}.created_on DESC"). limit(@limit). offset(@offset). to_a respond_to do |format| format.html do @news = News.new # for adding news inline render :layout => false if request.xhr? end format.api format.atom do render_feed( @newss, :title => (@project ? @project.name : Setting.app_title) + ": #{l(:label_news_plural)}" ) end end end def show @comments = @news.comments.to_a @comments.reverse! if User.current.wants_comments_in_reverse_order? end def new raise ::Unauthorized unless User.current.allowed_to?(:manage_news, @project, :global => true) @news = News.new(:project => @project, :author => User.current) end def create @news = News.new(:project => @project, :author => User.current) @news.safe_attributes = params[:news] @news.save_attachments(params[:attachments] || (params[:news] && params[:news][:uploads])) if @news.save respond_to do |format| format.html do render_attachment_warning_if_needed(@news) flash[:notice] = l(:notice_successful_create) redirect_to params[:cross_project] ? news_index_path : project_news_index_path(@project) end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'new'} format.api {render_validation_errors(@news)} end end end def edit end def update @news.safe_attributes = params[:news] @news.save_attachments(params[:attachments] || (params[:news] && params[:news][:uploads])) if @news.save respond_to do |format| format.html do render_attachment_warning_if_needed(@news) flash[:notice] = l(:notice_successful_update) redirect_to news_path(@news) end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@news)} end end end def destroy @news.destroy respond_to do |format| format.html do flash[:notice] = l(:notice_successful_delete) redirect_to project_news_index_path(@project) end format.api {render_api_ok} end end end redmine-6.0.5/app/controllers/previews_controller.rb000066400000000000000000000033121500112024600227150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class PreviewsController < ApplicationController before_action :find_project, :except => :text before_action :find_attachments def issue @issue = Issue.visible.find_by_id(params[:issue_id]) unless params[:issue_id].blank? if @issue @previewed = @issue end @text = params[:text] ? params[:text] : nil render :partial => 'common/preview' end def news if params[:id].present? && news = News.visible.find_by_id(params[:id]) @previewed = news end @text = params[:text] ? params[:text] : nil render :partial => 'common/preview' end def text @text = params[:text] ? params[:text] : nil render :partial => 'common/preview' end private def find_project project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] @project = Project.find(project_id) rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/principal_memberships_controller.rb000066400000000000000000000045551500112024600254420ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class PrincipalMembershipsController < ApplicationController layout 'admin' self.main_menu = false helper :members before_action :require_admin before_action :find_principal, :only => [:new, :create] before_action :find_membership, :only => [:edit, :update, :destroy] def new @projects = Project.active.all @roles = Role.find_all_givable respond_to do |format| format.html format.js end end def create @members = Member.create_principal_memberships(@principal, params[:membership]) respond_to do |format| format.html {redirect_to_principal @principal} format.js end end def edit @roles = Role.givable.to_a end def update @membership.attributes = params.require(:membership).permit(:role_ids => []) @membership.save respond_to do |format| format.html {redirect_to_principal @principal} format.js end end def destroy if @membership.deletable? @membership.destroy end respond_to do |format| format.html {redirect_to_principal @principal} format.js end end private def find_principal principal_id = params[:user_id] || params[:group_id] @principal = Principal.find(principal_id) rescue ActiveRecord::RecordNotFound render_404 end def find_membership @membership = Member.find(params[:id]) @principal = @membership.principal rescue ActiveRecord::RecordNotFound render_404 end def redirect_to_principal(principal) redirect_to edit_polymorphic_path(principal, :tab => 'memberships') end end redmine-6.0.5/app/controllers/project_enumerations_controller.rb000066400000000000000000000031211500112024600253060ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectEnumerationsController < ApplicationController before_action :find_project_by_project_id before_action :authorize def update if @project.update_or_create_time_entry_activities(update_params) flash[:notice] = l(:notice_successful_update) end redirect_to settings_project_path(@project, :tab => 'activities') end def destroy @project.time_entry_activities.each do |time_entry_activity| time_entry_activity.destroy(time_entry_activity.parent) end flash[:notice] = l(:notice_successful_update) redirect_to settings_project_path(@project, :tab => 'activities') end private def update_params params. permit(:enumerations => [:parent_id, :active, {:custom_field_values => {}}]). require(:enumerations) end end redmine-6.0.5/app/controllers/projects_controller.rb000066400000000000000000000250261500112024600227100ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectsController < ApplicationController menu_item :overview menu_item :settings, :only => :settings menu_item :projects, :only => [:index, :new, :copy, :create] before_action :find_project, :except => [:index, :autocomplete, :list, :new, :create, :copy, :bulk_destroy] before_action :authorize, :except => [:index, :autocomplete, :list, :new, :create, :copy, :archive, :unarchive, :destroy, :bulk_destroy] before_action :authorize_global, :only => [:new, :create] before_action :require_admin, :only => [:copy, :archive, :unarchive, :bulk_destroy] accept_atom_auth :index accept_api_auth :index, :show, :create, :update, :destroy, :archive, :unarchive, :close, :reopen require_sudo_mode :destroy, :bulk_destroy helper :custom_fields helper :issues helper :queries include QueriesHelper helper :projects_queries include ProjectsQueriesHelper helper :repositories helper :members helper :trackers # Lists visible projects def index # try to redirect to the requested menu item if params[:jump] && redirect_to_menu_item(params[:jump]) return end retrieve_default_query retrieve_project_query respond_to do |format| format.html do # TODO: see what to do with the board view and pagination if @query.display_type == 'board' @entries = project_scope.to_a else @entry_count = @query.result_count @entry_pages = Paginator.new @entry_count, per_page_option, params['page'] @entries = project_scope(:offset => @entry_pages.offset, :limit => @entry_pages.per_page).to_a end end format.api do @offset, @limit = api_offset_and_limit @project_count = @query.result_count @projects = project_scope(:offset => @offset, :limit => @limit) end format.atom do projects = project_scope(:order => {:created_on => :desc}, :limit => Setting.feeds_limit.to_i).to_a render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") end format.csv do # Export all entries entries = project_scope.to_a send_data(query_to_csv(entries, @query, params), :type => 'text/csv; header=present', :filename => 'projects.csv') end end end def autocomplete respond_to do |format| format.js do if params[:q].present? @projects = Project.visible.like(params[:q]).to_a else @projects = User.current.projects.to_a end end end end def new @issue_custom_fields = IssueCustomField.sorted.to_a @trackers = Tracker.sorted.to_a @project = Project.new @project.safe_attributes = params[:project] end def create @issue_custom_fields = IssueCustomField.sorted.to_a @trackers = Tracker.sorted.to_a @project = Project.new @project.safe_attributes = params[:project] if @project.save unless User.current.admin? @project.add_default_member(User.current) end respond_to do |format| format.html do flash[:notice] = l(:notice_successful_create) if params[:continue] attrs = {:parent_id => @project.parent_id}.compact redirect_to new_project_path(attrs) else redirect_to settings_project_path(@project) end end format.api do render( :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) ) end end else respond_to do |format| format.html {render :action => 'new'} format.api {render_validation_errors(@project)} end end end def copy @issue_custom_fields = IssueCustomField.sorted.to_a @trackers = Tracker.sorted.to_a @source_project = Project.find(params[:id]) if request.get? @project = Project.copy_from(@source_project) @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers? else Mailer.with_deliveries(params[:notifications] == '1') do @project = Project.new @project.safe_attributes = params[:project] if @project.copy(@source_project, :only => params[:only]) flash[:notice] = l(:notice_successful_create) redirect_to settings_project_path(@project) elsif !@project.new_record? # Project was created # But some objects were not copied due to validation failures # (eg. issues from disabled trackers) # TODO: inform about that redirect_to settings_project_path(@project) end end end rescue ActiveRecord::RecordNotFound # source_project not found render_404 end # Show @project def show # try to redirect to the requested menu item if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) return end respond_to do |format| format.html do @principals_by_role = @project.principals_by_role @subprojects = @project.children.visible.to_a @news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").to_a with_subprojects = Setting.display_subprojects_issues? @trackers = @project.rolled_up_trackers(with_subprojects).visible cond = @project.project_condition(with_subprojects) @open_issues_by_tracker = Issue.visible.open.where(cond).group(:tracker).count @total_issues_by_tracker = Issue.visible.where(cond).group(:tracker).count if User.current.allowed_to_view_all_time_entries?(@project) @total_hours = TimeEntry.visible.where(cond).sum(:hours).to_f @total_estimated_hours = Issue.visible.where(cond).sum(:estimated_hours).to_f end @key = User.current.atom_key end format.api end end def settings @issue_custom_fields = IssueCustomField.sorted.to_a @issue_category ||= IssueCategory.new @member ||= @project.members.new @trackers = Tracker.sorted.to_a @version_status = params[:version_status] || 'open' @version_name = params[:version_name] @versions = @project.shared_versions.status(@version_status).like(@version_name).sorted end def edit end def update @project.safe_attributes = params[:project] if @project.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to settings_project_path(@project, params[:tab]) end format.api {render_api_ok} end else respond_to do |format| format.html do settings render :action => 'settings' end format.api {render_validation_errors(@project)} end end end def archive unless @project.archive error = l(:error_can_not_archive_project) end respond_to do |format| format.html do flash[:error] = error if error redirect_to_referer_or admin_projects_path(:status => params[:status]) end format.api do if error render_api_errors error else render_api_ok end end end end def unarchive unless @project.active? @project.unarchive end respond_to do |format| format.html{ redirect_to_referer_or admin_projects_path(:status => params[:status]) } format.api{ render_api_ok } end end def bookmark jump_box = Redmine::ProjectJumpBox.new User.current if request.delete? jump_box.delete_project_bookmark @project elsif request.post? jump_box.bookmark_project @project end respond_to do |format| format.js format.html {redirect_to project_path(@project)} end end def close @project.close respond_to do |format| format.html { redirect_to project_path(@project) } format.api { render_api_ok } end end def reopen @project.reopen respond_to do |format| format.html { redirect_to project_path(@project) } format.api { render_api_ok } end end # Delete @project def destroy unless @project.deletable? deny_access return end @project_to_destroy = @project if api_request? || params[:confirm] == @project_to_destroy.identifier DestroyProjectJob.schedule(@project_to_destroy) flash[:notice] = l(:notice_successful_delete) respond_to do |format| format.html do redirect_to( User.current.admin? ? admin_projects_path : projects_path ) end format.api {render_api_ok} end end # hide project in layout @project = nil end # Delete selected projects def bulk_destroy @projects = Project.where(id: params[:ids]). where.not(status: Project::STATUS_SCHEDULED_FOR_DELETION).to_a if @projects.empty? render_404 return end if params[:confirm] == I18n.t(:general_text_Yes) DestroyProjectsJob.schedule @projects flash[:notice] = l(:notice_successful_delete) redirect_to admin_projects_path end end private # Returns the ProjectEntry scope for index def project_scope(options={}) @query.results_scope(options) end def retrieve_project_query retrieve_query(ProjectQuery, false, :defaults => @default_columns_names) end def retrieve_default_query return if params[:query_id].present? return if api_request? return if params[:set_filter] if params[:without_default].present? params[:set_filter] = 1 return end if default_query = ProjectQuery.default params[:query_id] = default_query.id end end end redmine-6.0.5/app/controllers/queries_controller.rb000066400000000000000000000125201500112024600225270ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class QueriesController < ApplicationController menu_item :issues layout :query_layout before_action :find_query, :only => [:edit, :update, :destroy] before_action :find_optional_project, :only => [:new, :create] accept_api_auth :index include QueriesHelper def index case params[:format] when 'xml', 'json' @offset, @limit = api_offset_and_limit else @limit = per_page_option end scope = query_class.visible @query_count = scope.count @query_pages = Paginator.new @query_count, @limit, params['page'] @queries = scope. order("#{Query.table_name}.name"). limit(@limit). offset(@offset). to_a respond_to do |format| format.html {render_error :status => 406} format.api end end def new @query = query_class.new @query.user = User.current @query.project = @project @query.build_from_params(params) end def create @query = query_class.new @query.user = User.current @query.project = @project update_query_from_params if @query.save flash[:notice] = l(:notice_successful_create) redirect_to_items(:query_id => @query) else render :action => 'new', :layout => !request.xhr? end end def edit end def update update_query_from_params if @query.save flash[:notice] = l(:notice_successful_update) redirect_to_items(:query_id => @query) else render :action => 'edit' end end def destroy @query.destroy redirect_to_items(:set_filter => 1) end # Returns the values for a query filter def filter q = query_class.new if params[:project_id].present? q.project = Project.find(params[:project_id]) end unless User.current.allowed_to?(q.class.view_permission, q.project, :global => true) raise Unauthorized end filter = q.available_filters[params[:name].to_s] values = filter ? filter.values : [] render :json => values rescue ActiveRecord::RecordNotFound render_404 end def current_menu_item return unless @query return if query_layout == 'admin' @query.queried_class.to_s.underscore.pluralize.to_sym end def current_menu(project) super unless query_layout == 'admin' end private def find_query @query = Query.find(params[:id]) @project = @query.project render_403 unless @query.editable_by?(User.current) rescue ActiveRecord::RecordNotFound render_404 end def update_query_from_params @query.project = params[:query_is_for_all] ? nil : @project @query.build_from_params(params) @query.column_names = nil if params[:default_columns] @query.sort_criteria = (params[:query] && params[:query][:sort_criteria]) || @query.sort_criteria @query.name = params[:query] && params[:query][:name] @query.description = params[:query] && params[:query][:description] if User.current.allowed_to?(:manage_public_queries, @query.project) || User.current.admin? @query.visibility = (params[:query] && params[:query][:visibility]) || Query::VISIBILITY_PRIVATE @query.role_ids = params[:query] && params[:query][:role_ids] else @query.visibility = Query::VISIBILITY_PRIVATE end @query end def redirect_to_items(options) method = "redirect_to_#{@query.class.name.underscore}" send method, options end def redirect_to_issue_query(options) if params[:gantt] if @project redirect_to project_gantt_path(@project, options) else redirect_to issues_gantt_path(options) end elsif params[:calendar] if @project redirect_to project_calendar_path(@project, options) else redirect_to issues_calendar_path(options) end else redirect_to _project_issues_path(@project, options) end end def redirect_to_time_entry_query(options) redirect_to _time_entries_path(@project, nil, options) end def redirect_to_project_query(options) redirect_to projects_path(options) end def redirect_to_project_admin_query(options) redirect_to admin_projects_path(options) end def redirect_to_user_query(options) redirect_to users_path(options) end def query_layout @query&.layout || 'base' end def menu_items {self.controller_name.to_sym => {:actions => {}, :default => current_menu_item}} end # Returns the Query subclass, IssueQuery by default # for compatibility with previous behaviour def query_class Query.get_subclass(params[:type] || 'IssueQuery') end end redmine-6.0.5/app/controllers/reports_controller.rb000066400000000000000000000102271500112024600225520ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ReportsController < ApplicationController menu_item :issues before_action :find_project, :authorize, :find_issue_statuses include ReportsHelper def issue_report with_subprojects = Setting.display_subprojects_issues? @trackers = @project.rolled_up_trackers(with_subprojects).visible @versions = @project.shared_versions.sorted + [Version.new(:name => "[#{l(:label_none)}]")] @priorities = IssuePriority.all.reverse @categories = @project.issue_categories + [IssueCategory.new(:name => "[#{l(:label_none)}]")] @assignees = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted + [User.new(:firstname => "[#{l(:label_none)}]")] @authors = @project.users.sorted @subprojects = @project.descendants.visible @issues_by_tracker = Issue.by_tracker(@project, with_subprojects) @issues_by_version = Issue.by_version(@project, with_subprojects) @issues_by_priority = Issue.by_priority(@project, with_subprojects) @issues_by_category = Issue.by_category(@project, with_subprojects) @issues_by_assigned_to = Issue.by_assigned_to(@project, with_subprojects) @issues_by_author = Issue.by_author(@project, with_subprojects) @issues_by_subproject = Issue.by_subproject(@project) || [] render :template => "reports/issue_report" end def issue_report_details with_subprojects = Setting.display_subprojects_issues? case params[:detail] when "tracker" @field = "tracker_id" @rows = @project.rolled_up_trackers(with_subprojects).visible @data = Issue.by_tracker(@project, with_subprojects) @report_title = l(:field_tracker) when "version" @field = "fixed_version_id" @rows = @project.shared_versions.sorted + [Version.new(:name => "[#{l(:label_none)}]")] @data = Issue.by_version(@project, with_subprojects) @report_title = l(:field_version) when "priority" @field = "priority_id" @rows = IssuePriority.all.reverse @data = Issue.by_priority(@project, with_subprojects) @report_title = l(:field_priority) when "category" @field = "category_id" @rows = @project.issue_categories + [IssueCategory.new(:name => "[#{l(:label_none)}]")] @data = Issue.by_category(@project, with_subprojects) @report_title = l(:field_category) when "assigned_to" @field = "assigned_to_id" @rows = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted + [User.new(:firstname => "[#{l(:label_none)}]")] @data = Issue.by_assigned_to(@project, with_subprojects) @report_title = l(:field_assigned_to) when "author" @field = "author_id" @rows = @project.users.sorted @data = Issue.by_author(@project, with_subprojects) @report_title = l(:field_author) when "subproject" @field = "project_id" @rows = @project.descendants.visible @data = Issue.by_subproject(@project) || [] @report_title = l(:field_subproject) else render_404 end respond_to do |format| format.html format.csv do send_data(issue_report_details_to_csv(@field, @statuses, @rows, @data), :type => 'text/csv; header=present', :filename => "report-#{params[:detail]}.csv") end end end private def find_issue_statuses @statuses = @project.rolled_up_statuses.sorted.to_a end end redmine-6.0.5/app/controllers/repositories_controller.rb000066400000000000000000000352751500112024600236150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'digest/sha1' require 'redmine/scm/adapters' class ChangesetNotFound < StandardError; end class InvalidRevisionParam < StandardError; end class RepositoriesController < ApplicationController menu_item :repository menu_item :settings, :only => [:new, :create, :edit, :update, :destroy, :committers] default_search_scope :changesets before_action :find_project_by_project_id, :only => [:new, :create] before_action :build_new_repository_from_params, :only => [:new, :create] before_action :find_repository, :only => [:edit, :update, :destroy, :committers] before_action :find_project_repository, :except => [:new, :create, :edit, :update, :destroy, :committers] before_action :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] before_action :authorize accept_atom_auth :revisions accept_api_auth :add_related_issue, :remove_related_issue rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed def new @repository.is_default = @project.repository.nil? end def create if @repository.save redirect_to settings_project_path(@project, :tab => 'repositories') else render :action => 'new' end end def edit end def update @repository.safe_attributes = params[:repository] if @repository.save redirect_to settings_project_path(@project, :tab => 'repositories') else render :action => 'edit' end end def committers @committers = @repository.committers @users = @project.users.to_a additional_user_ids = @committers.collect {|c| c.last.to_i} - @users.collect(&:id) @users += User.where(:id => additional_user_ids).to_a unless additional_user_ids.empty? @users.compact! @users.sort! if request.post? && params[:committers].present? # Build a hash with repository usernames as keys and corresponding user ids as values @repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h} flash[:notice] = l(:notice_successful_update) redirect_to settings_project_path(@project, :tab => 'repositories') end end def destroy @repository.destroy if request.delete? redirect_to settings_project_path(@project, :tab => 'repositories') end def show @repository.fetch_changesets if @project.active? && Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) @changeset = @repository.find_changeset_by_name(@rev) if request.xhr? @entries ? render(:partial => 'dir_list_content') : head(:ok) else (show_error_not_found; return) unless @entries @changesets = @repository.latest_changesets(@path, @rev) @properties = @repository.properties(@path, @rev) @repositories = @project.repositories render :action => 'show' end end alias_method :browse, :show def fetch_changesets @repository.fetch_changesets if @project.active? && @path.empty? && !Setting.autofetch_changesets? redirect_to( controller: :repositories, action: :show, id: @project, repository_id: @repository.identifier_param ) end def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) @properties = @repository.properties(@path, @rev) @changeset = @repository.find_changeset_by_name(@rev) end def revisions @changeset_count = @repository.changesets.count @changeset_pages = Paginator.new @changeset_count, per_page_option, params['page'] @changesets = @repository.changesets. limit(@changeset_pages.per_page). offset(@changeset_pages.offset). includes(:user, :repository, :parents). to_a respond_to do |format| format.html {render :layout => false if request.xhr?} format.atom {render_feed(@changesets, :title => "#{@project.name}: #{l(:label_revision_plural)}")} end end def raw entry_and_raw(true) end def entry entry_and_raw(false) @raw_url = url_for(:action => 'raw', :id => @project, :repository_id => @repository.identifier_param, :path => @path, :rev => @rev, :only_path => true) end def entry_and_raw(is_raw) @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry # If the entry is a dir, show the browser (show; return) if @entry.is_dir? if is_raw # Force the download send_opt = {:filename => filename_for_content_disposition(@path.split('/').last)} send_type = Redmine::MimeType.of(@path) send_opt[:type] = send_type.to_s if send_type send_opt[:disposition] = disposition(@path) send_data @repository.cat(@path, @rev), send_opt else # set up pagination from entry to entry parent_path = @path.split('/')[0...-1].join('/') @entries = @repository.entries(parent_path, @rev).reject(&:is_dir?) if index = @entries.index{|e| e.name == @entry.name} @paginator = Redmine::Pagination::Paginator.new(@entries.size, 1, index+1) end if !@entry.size || @entry.size <= Setting.file_max_size_displayed.to_i.kilobyte content = @repository.cat(@path, @rev) (show_error_not_found; return) unless content if content.size <= Setting.file_max_size_displayed.to_i.kilobyte && is_entry_text_data?(content, @path) # TODO: UTF-16 # Prevent empty lines when displaying a file with Windows style eol # Is this needed? AttachmentsController simply reads file. @content = content.gsub("\r\n", "\n") end end @changeset = @repository.find_changeset_by_name(@rev) end end private :entry_and_raw def is_entry_text_data?(ent, path) # UTF-16 contains "\x00". # It is very strict that file contains less than 30% of ascii symbols # in non Western Europe. return true if Redmine::MimeType.is_type?('text', path) # Ruby 1.8.6 has a bug of integer divisions. # http://apidock.com/ruby/v1_8_6_287/String/is_binary_data%3F return false if Redmine::Scm::Adapters::ScmData.binary?(ent) true end private :is_entry_text_data? def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @annotate = @repository.scm.annotate(@path, @rev) if @annotate.blank? @annotate = nil @error_message = l(:error_scm_annotate) elsif @annotate.lines.sum(&:size) > Setting.file_max_size_displayed.to_i.kilobyte @annotate = nil @error_message = l(:error_scm_annotate_big_text_file) else # the SCM adapter supports "View annotation prior to this change" links # and the entry has previous annotations @has_previous = @annotate.previous_annotations.any? end @changeset = @repository.find_changeset_by_name(@rev) end def revision respond_to do |format| format.html format.js {render :layout => false} end end # Adds a related issue to a changeset # POST /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues def add_related_issue issue_id = params[:issue_id].to_s.delete_prefix('#') @issue = @changeset.find_referenced_issue_by_id(issue_id) if @issue && (!@issue.visible? || @changeset.issues.include?(@issue)) @issue = nil end respond_to do |format| if @issue @changeset.issues << @issue format.api { render_api_ok } else format.api { render_api_errors "#{l(:label_issue)} #{l('activerecord.errors.messages.invalid')}" } end format.js end end # Removes a related issue from a changeset # DELETE /projects/:project_id/repository/(:repository_id/)revisions/:rev/issues/:issue_id def remove_related_issue @issue = Issue.visible.find_by_id(params[:issue_id]) if @issue @changeset.issues.delete(@issue) end respond_to do |format| format.api { render_api_ok } format.js end end def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) (show_error_not_found; return) unless @diff filename = "changeset_r#{@rev}" filename << "_r#{@rev_to}" if @rev_to send_data @diff.join, :filename => "#{filename}.diff", :type => 'text/x-patch', :disposition => 'attachment' else @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type) # Save diff type as user preference if User.current.logged? && @diff_type != User.current.pref[:diff_type] User.current.pref[:diff_type] = @diff_type User.current.preference.save end @cache_key = "repositories/diff/#{@repository.id}/" + ActiveSupport::Digest.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}") unless read_fragment(@cache_key) @diff = @repository.diff(@path, @rev, @rev_to) (show_error_not_found; return) unless @diff end @changeset = @repository.find_changeset_by_name(@rev) @changeset_to = @rev_to ? @repository.find_changeset_by_name(@rev_to) : nil @diff_format_revisions = @repository.diff_format_revisions(@changeset, @changeset_to) render :diff, :formats => :html end end def stats end # Returns JSON data for repository graphs def graph data = nil case params[:graph] when "commits_per_month" data = graph_commits_per_month(@repository) when "commits_per_author" data = graph_commits_per_author(@repository) end if data render :json => data else render_404 end end private def build_new_repository_from_params scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first unless @repository = Repository.factory(scm) render_404 return end @repository.project = @project @repository.safe_attributes = params[:repository] @repository end def find_repository @repository = Repository.find(params[:id]) @project = @repository.project rescue ActiveRecord::RecordNotFound render_404 end REV_PARAM_RE = %r{\A[a-f0-9]*\z}i def find_project_repository @project = Project.find(params[:id]) if params[:repository_id].present? @repository = @project.repositories.find_by_identifier_param(params[:repository_id]) else @repository = @project.repository || @project.repositories.first end (render_404; return false) unless @repository @path = params[:path].is_a?(Array) ? params[:path].join('/') : params[:path].to_s @rev = params[:rev].to_s.strip.presence || @repository.default_branch raise InvalidRevisionParam unless valid_name?(@rev) @rev_to = params[:rev_to].to_s.strip.presence raise InvalidRevisionParam unless valid_name?(@rev_to) rescue ActiveRecord::RecordNotFound render_404 rescue InvalidRevisionParam show_error_not_found end def find_changeset if @rev.present? @changeset = @repository.find_changeset_by_name(@rev) end show_error_not_found unless @changeset end def show_error_not_found render_error :message => l(:error_scm_not_found), :status => 404 end # Handler for Redmine::Scm::Adapters::CommandFailed exception def show_error_command_failed(exception) render_error l(:error_scm_command_failed, exception.message) end def graph_commits_per_month(repository) date_to = User.current.today date_from = date_to << 11 date_from = Date.civil(date_from.year, date_from.month, 1) commits_by_day = Changeset. where("repository_id = ? AND commit_date BETWEEN ? AND ?", repository.id, date_from, date_to). group(:commit_date). count commits_by_month = [0] * 12 commits_by_day.each {|c| commits_by_month[(date_to.month - c.first.to_date.month) % 12] += c.last} changes_by_day = Change. joins(:changeset). where("#{Changeset.table_name}.repository_id = ? AND #{Changeset.table_name}.commit_date BETWEEN ? AND ?", repository.id, date_from, date_to). group(:commit_date). count changes_by_month = [0] * 12 changes_by_day.each {|c| changes_by_month[(date_to.month - c.first.to_date.month) % 12] += c.last} fields = [] today = User.current.today 12.times {|m| fields << month_name(((today.month - 1 - m) % 12) + 1)} data = { :labels => fields.reverse, :commits => commits_by_month[0..11].reverse, :changes => changes_by_month[0..11].reverse } end def graph_commits_per_author(repository) # data stats = repository.stats_by_author fields, commits_data, changes_data = [], [], [] stats.each do |name, hsh| fields << name commits_data << hsh[:commits_count] changes_data << hsh[:changes_count] end # expand to 10 values if needed fields = fields + [""]*(10 - fields.length) if fields.length<10 commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10 changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10 # Remove email address in usernames fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '')} data = { :labels => fields.reverse, :commits => commits_data.reverse, :changes => changes_data.reverse } end def disposition(path) if Redmine::MimeType.of(@path) == "application/pdf" 'inline' else 'attachment' end end def send_file(path, options={}) headers['content-security-policy'] = "default-src 'none'; style-src 'unsafe-inline'; sandbox" super end def valid_name?(rev) return true if rev.nil? return true if REV_PARAM_RE.match?(rev) @repository ? @repository.valid_name?(rev) : true end end redmine-6.0.5/app/controllers/roles_controller.rb000066400000000000000000000073161500112024600222050ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class RolesController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => [:index, :show] before_action :require_admin_or_api_request, :only => [:index, :show] before_action :find_role, :only => [:show, :edit, :update, :destroy] accept_api_auth :index, :show include RolesHelper require_sudo_mode :create, :update, :destroy def index respond_to do |format| format.html do @roles = Role.sorted.to_a render :layout => false if request.xhr? end format.api do @roles = Role.givable.to_a end end end def show respond_to do |format| format.api end end def new # Prefills the form with 'Non member' role permissions by default @role = Role.new @role.safe_attributes = params[:role] || {:permissions => Role.non_member.permissions} if params[:copy].present? && @copy_from = Role.find_by_id(params[:copy]) @role.copy_from(@copy_from) end @roles = Role.sorted.to_a end def create @role = Role.new @role.safe_attributes = params[:role] if request.post? && @role.save # workflow copy if params[:copy_workflow_from].present? && (copy_from = Role.find_by_id(params[:copy_workflow_from])) @role.copy_workflow_rules(copy_from) end flash[:notice] = l(:notice_successful_create) redirect_to roles_path else @roles = Role.sorted.to_a render :action => 'new' end end def edit end def update @role.safe_attributes = params[:role] if @role.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to roles_path(:page => params[:page]) end format.js {head :ok} end else respond_to do |format| format.html {render :action => 'edit'} format.js {head :unprocessable_content} end end end def destroy begin @role.destroy rescue flash[:error] = l(:error_can_not_remove_role) end redirect_to roles_path end def permissions scope = Role.sorted if params[:ids].present? scope = scope.where(:id => params[:ids]) end @roles = scope.to_a @permissions = Redmine::AccessControl.permissions.reject(&:public?) respond_to do |format| format.html format.csv do send_data(permissions_to_csv(@roles, @permissions), :type => 'text/csv; header=present', :filename => 'permissions.csv') end end end def update_permissions @roles = Role.where(:id => params[:permissions].keys) @roles.each do |role| role.permissions = params[:permissions][role.id.to_s] role.save end flash[:notice] = l(:notice_successful_update) redirect_to roles_path end private def find_role @role = Role.find(params[:id]) rescue ActiveRecord::RecordNotFound render_404 end end redmine-6.0.5/app/controllers/search_controller.rb000066400000000000000000000065031500112024600223230ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class SearchController < ApplicationController before_action :find_optional_project_by_id, :authorize_global accept_api_auth :index def index @question = params[:q]&.strip || "" @all_words = params[:all_words] ? params[:all_words].present? : true @titles_only = params[:titles_only] ? params[:titles_only].present? : false @search_attachments = params[:attachments].presence || '0' @open_issues = params[:open_issues] ? params[:open_issues].present? : false case params[:format] when 'xml', 'json' @offset, @limit = api_offset_and_limit else @offset = nil @limit = Setting.search_results_per_page.to_i @limit = 10 if @limit == 0 end # quick jump to an issue if !api_request? && (m = @question.match(/^#?(\d+)$/)) && (issue = Issue.visible.find_by_id(m[1].to_i)) redirect_to issue_path(issue) return end projects_to_search = case params[:scope] when 'all' nil when 'my_projects' User.current.projects when 'bookmarks' Project.where(id: User.current.bookmarked_project_ids) when 'subprojects' @project ? (@project.self_and_descendants.to_a) : nil else @project end @object_types = Redmine::Search.available_search_types.dup if projects_to_search.is_a? Project # don't search projects @object_types.delete('projects') # only show what the user is allowed to view @object_types = @object_types.select {|o| User.current.allowed_to?(:"view_#{o}", projects_to_search)} end @scope = @object_types.select {|t| params[t].present?} @scope = @object_types if @scope.empty? fetcher = Redmine::Search::Fetcher.new( @question, User.current, @scope, projects_to_search, :all_words => @all_words, :titles_only => @titles_only, :attachments => @search_attachments, :open_issues => @open_issues, :cache => params[:page].present?, :params => params.to_unsafe_hash ) if fetcher.tokens.present? @result_count = fetcher.result_count @result_count_by_type = fetcher.result_count_by_type @tokens = fetcher.tokens @result_pages = Paginator.new @result_count, @limit, params['page'] @offset ||= @result_pages.offset @results = fetcher.results(@offset, @result_pages.per_page) else @question = "" end respond_to do |format| format.html {render :layout => false if request.xhr?} format.api do @results ||= [] render :layout => false end end end end redmine-6.0.5/app/controllers/settings_controller.rb000066400000000000000000000052751500112024600227230ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class SettingsController < ApplicationController layout 'admin' self.main_menu = false menu_item :plugins, :only => :plugin helper :queries before_action :require_admin require_sudo_mode :index, :edit, :plugin def index edit render :action => 'edit' end def edit @notifiables = Redmine::Notifiable.all if request.post? errors = Setting.set_all_from_params(params[:settings].to_unsafe_hash) if errors.blank? flash[:notice] = l(:notice_successful_update) redirect_to settings_path(:tab => params[:tab]) return else @setting_errors = errors # render the edit form with error messages end end @options = {} user_format = User::USER_FORMATS.collect{|key, value| [key, value[:setting_order]]}.sort_by{|f| f[1]} @options[:user_format] = user_format.collect{|f| [User.current.name(f[0]), f[0].to_s]} @deliveries = ActionMailer::Base.perform_deliveries @guessed_host_and_path = request.host_with_port.dup @guessed_host_and_path << ("/#{Redmine::Utils.relative_url_root.delete_prefix('/')}") unless Redmine::Utils.relative_url_root.blank? @commit_update_keywords = Setting.commit_update_keywords.dup @commit_update_keywords = [{}] unless @commit_update_keywords.is_a?(Array) && @commit_update_keywords.any? Redmine::Themes.rescan end def plugin @plugin = Redmine::Plugin.find(params[:id]) unless @plugin.configurable? render_404 return end if request.post? setting = params[:settings] ? params[:settings].permit!.to_h : {} Setting.send :"plugin_#{@plugin.id}=", setting flash[:notice] = l(:notice_successful_update) redirect_to plugin_settings_path(@plugin) else @partial = @plugin.settings[:partial] @settings = Setting.send :"plugin_#{@plugin.id}" end rescue Redmine::PluginNotFound render_404 end end redmine-6.0.5/app/controllers/sys_controller.rb000066400000000000000000000057021500112024600216740ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class SysController < ActionController::Base include ActiveSupport::SecurityUtils before_action :check_enabled # Requests from repository WS clients don't contain CSRF tokens skip_before_action :verify_authenticity_token def projects p = Project.active.has_module(:repository). order("#{Project.table_name}.identifier").preload(:repository).to_a # extra_info attribute from repository breaks activeresource client render :json => p.to_json(:only => [:id, :identifier, :name, :is_public, :status], :include => {:repository => {:only => [:id, :url]}}) end def create_project_repository project = Project.find(params[:id]) if project.repository head :conflict else logger.info "Repository for #{project.name} was reported to be created by #{request.remote_ip}." repository = Repository.factory(params[:vendor]) repository.safe_attributes = params[:repository] repository.project = project if repository.save render :json => {repository.class.name.underscore.tr('/', '-') => {:id => repository.id, :url => repository.url}}, :status => :created else head :unprocessable_content end end end def fetch_changesets projects = [] scope = Project.active.has_module(:repository) if params[:id] project = nil if /^\d*$/.match?(params[:id].to_s) project = scope.find(params[:id]) else project = scope.find_by_identifier(params[:id]) end raise ActiveRecord::RecordNotFound unless project projects << project else projects = scope.to_a end projects.each do |project| project.repositories.each do |repository| repository.fetch_changesets end end head :ok rescue ActiveRecord::RecordNotFound head :not_found end protected def check_enabled User.current = nil unless Setting.sys_api_enabled? && secure_compare(params[:key].to_s, Setting.sys_api_key.to_s) render :plain => 'Access denied. Repository management WS is disabled or key is invalid.', :status => :forbidden return false end end end redmine-6.0.5/app/controllers/timelog_controller.rb000066400000000000000000000233141500112024600225150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimelogController < ApplicationController menu_item :time_entries before_action :find_time_entry, :only => [:show, :edit, :update] before_action :check_editability, :only => [:edit, :update] before_action :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy] before_action :authorize, :only => [:show, :edit, :update, :bulk_edit, :bulk_update, :destroy] before_action :find_optional_issue, :only => [:new, :create] before_action :find_optional_project, :only => [:index, :report] accept_atom_auth :index accept_api_auth :index, :show, :create, :update, :destroy rescue_from Query::StatementInvalid, :with => :query_statement_invalid rescue_from Query::QueryError, :with => :query_error helper :issues include TimelogHelper helper :custom_fields include CustomFieldsHelper helper :queries include QueriesHelper def index retrieve_time_entry_query scope = time_entry_scope. preload(:issue => [:project, :tracker, :status, :assigned_to, :priority]). preload(:project, :user) respond_to do |format| format.html do @entry_count = scope.count @entry_pages = Paginator.new @entry_count, per_page_option, params['page'] @entries = scope.offset(@entry_pages.offset).limit(@entry_pages.per_page).to_a render :layout => !request.xhr? end format.api do @entry_count = scope.count @offset, @limit = api_offset_and_limit @entries = scope.offset(@offset).limit(@limit).preload(:custom_values => :custom_field).to_a end format.atom do entries = scope.limit(Setting.feeds_limit.to_i).reorder("#{TimeEntry.table_name}.created_on DESC").to_a render_feed(entries, :title => l(:label_spent_time)) end format.csv do # Export all entries entries = scope.to_a send_data(query_to_csv(entries, @query, params), :type => 'text/csv; header=present', :filename => "#{filename_for_export(@query, 'timelog')}.csv") end end end def report retrieve_time_entry_query scope = time_entry_scope @report = Redmine::Helpers::TimeReport.new(@project, params[:criteria], params[:columns], scope) respond_to do |format| format.html {render :layout => !request.xhr?} format.csv do send_data(report_to_csv(@report), :type => 'text/csv; header=present', :filename => 'timelog.csv') end end end def show respond_to do |format| # TODO: Implement html response format.html {head :not_acceptable} format.api end end def new @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :author => User.current, :spent_on => User.current.today) @time_entry.safe_attributes = params[:time_entry] end def create @time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :author => User.current, :user => User.current, :spent_on => User.current.today) @time_entry.safe_attributes = params[:time_entry] if @time_entry.project && !User.current.allowed_to?(:log_time, @time_entry.project) render_403 return end call_hook(:controller_timelog_edit_before_save, {:params => params, :time_entry => @time_entry}) if @time_entry.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_create) if params[:continue] options = { :time_entry => { :project_id => params[:time_entry][:project_id], :issue_id => @time_entry.issue_id, :spent_on => @time_entry.spent_on, :activity_id => @time_entry.activity_id }, :back_url => params[:back_url] } if params[:project_id] && @time_entry.project options[:time_entry][:project_id] ||= @time_entry.project.id redirect_to new_project_time_entry_path(@time_entry.project, options) elsif params[:issue_id] && @time_entry.issue redirect_to new_issue_time_entry_path(@time_entry.issue, options) else redirect_to new_time_entry_path(options) end else redirect_back_or_default project_time_entries_path(@time_entry.project) end end format.api do render :action => 'show', :status => :created, :location => time_entry_url(@time_entry) end end else respond_to do |format| format.html {render :action => 'new'} format.api {render_validation_errors(@time_entry)} end end end def edit @time_entry.safe_attributes = params[:time_entry] end def update @time_entry.safe_attributes = params[:time_entry] call_hook(:controller_timelog_edit_before_save, {:params => params, :time_entry => @time_entry}) if @time_entry.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_back_or_default project_time_entries_path(@time_entry.project) end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@time_entry)} end end end def bulk_edit @target_projects = Project.allowed_to(:log_time).to_a @custom_fields = TimeEntry.first.available_custom_fields.select {|field| field.format.bulk_edit_supported} if params[:time_entry] @target_project = @target_projects.detect {|p| p.id.to_s == params[:time_entry][:project_id].to_s} end if @target_project @available_activities = @target_project.activities else @available_activities = @projects.map(&:activities).reduce(:&) end @time_entry_params = params[:time_entry] || {} @time_entry_params[:custom_field_values] ||= {} end def bulk_update attributes = parse_params_for_bulk_update(params[:time_entry]) unsaved_time_entries = [] saved_time_entries = [] @time_entries.each do |time_entry| time_entry.reload time_entry.safe_attributes = attributes call_hook( :controller_time_entries_bulk_edit_before_save, {:params => params, :time_entry => time_entry} ) if time_entry.save saved_time_entries << time_entry else unsaved_time_entries << time_entry end end if unsaved_time_entries.empty? flash[:notice] = l(:notice_successful_update) unless saved_time_entries.empty? redirect_back_or_default project_time_entries_path(@projects.first) else @saved_time_entries = @time_entries @unsaved_time_entries = unsaved_time_entries @time_entries = TimeEntry.where(:id => unsaved_time_entries.map(&:id)). preload(:project => :time_entry_activities). preload(:user).to_a bulk_edit render :action => 'bulk_edit' end end def destroy destroyed = TimeEntry.transaction do @time_entries.each do |t| unless t.destroy && t.destroyed? raise ActiveRecord::Rollback end end end respond_to do |format| format.html do if destroyed flash[:notice] = l(:notice_successful_delete) else flash[:error] = l(:notice_unable_delete_time_entry) end redirect_back_or_default project_time_entries_path(@projects.first), :referer => true end format.api do if destroyed render_api_ok else render_validation_errors(@time_entries) end end end end private def find_time_entry @time_entry = TimeEntry.find(params[:id]) @project = @time_entry.project rescue ActiveRecord::RecordNotFound render_404 end def check_editability unless @time_entry.editable_by?(User.current) render_403 return false end end def find_time_entries @time_entries = TimeEntry.where(:id => params[:id] || params[:ids]). preload(:project => :time_entry_activities). preload(:user).to_a raise ActiveRecord::RecordNotFound if @time_entries.empty? raise Unauthorized unless @time_entries.all? {|t| t.editable_by?(User.current)} @projects = @time_entries.filter_map(&:project).uniq @project = @projects.first if @projects.size == 1 rescue ActiveRecord::RecordNotFound render_404 end def find_optional_issue if params[:issue_id].present? @issue = Issue.find(params[:issue_id]) @project = @issue.project authorize else find_optional_project end end # Returns the TimeEntry scope for index and report actions def time_entry_scope(options={}) @query.results_scope(options) end def retrieve_time_entry_query retrieve_query(TimeEntryQuery, false, :defaults => @default_columns_names) end def query_error(exception) session.delete(:time_entry_query) super end end redmine-6.0.5/app/controllers/trackers_controller.rb000066400000000000000000000072211500112024600226720ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TrackersController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => :index before_action :require_admin_or_api_request, :only => :index accept_api_auth :index def index @trackers = Tracker.sorted.preload(:default_status).to_a respond_to do |format| format.html {render :layout => false if request.xhr?} format.api end end def new @tracker ||= Tracker.new(:default_status => IssueStatus.sorted.first) @tracker.safe_attributes = params[:tracker] if params[:copy].present? && @copy_from = Tracker.find_by_id(params[:copy]) @tracker.copy_from(@copy_from) end @trackers = Tracker.sorted.to_a @projects = Project.all end def create @tracker = Tracker.new @tracker.safe_attributes = params[:tracker] if @tracker.save # workflow copy if params[:copy_workflow_from].present? && (copy_from = Tracker.find_by_id(params[:copy_workflow_from])) @tracker.copy_workflow_rules(copy_from) end flash[:notice] = l(:notice_successful_create) redirect_to trackers_path return end new render :action => 'new' end def edit @tracker ||= Tracker.find(params[:id]) @projects = Project.all end def update @tracker = Tracker.find(params[:id]) @tracker.safe_attributes = params[:tracker] if @tracker.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to trackers_path(:page => params[:page]) end format.js {head :ok} end else respond_to do |format| format.html do edit render :action => 'edit' end format.js {head :unprocessable_content} end end end def destroy @tracker = Tracker.find(params[:id]) unless @tracker.issues.empty? projects = Project.joins(:issues).where(issues: {tracker_id: @tracker.id}).sorted.distinct links = projects.map do |p| view_context.link_to(p, project_issues_path(p, set_filter: 1, tracker_id: @tracker.id, status_id: '*')) end.join(', ') flash[:error] = l(:error_can_not_delete_tracker_html, projects: links.html_safe) else @tracker.destroy end redirect_to trackers_path end def fields if request.post? && params[:trackers] params[:trackers].each do |tracker_id, tracker_params| tracker = Tracker.find_by_id(tracker_id) if tracker tracker.core_fields = tracker_params[:core_fields] tracker.custom_field_ids = tracker_params[:custom_field_ids] tracker.save end end flash[:notice] = l(:notice_successful_update) redirect_to fields_trackers_path return end @trackers = Tracker.sorted.to_a @custom_fields = IssueCustomField.sorted end end redmine-6.0.5/app/controllers/twofa_backup_codes_controller.rb000066400000000000000000000050341500112024600246760ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TwofaBackupCodesController < ApplicationController include TwofaHelper self.main_menu = false before_action :require_login, :require_active_twofa before_action :twofa_setup require_sudo_mode :init def init if @twofa.send_code(controller: 'twofa_backup_codes', action: 'create') flash[:notice] = l('twofa_code_sent') end redirect_to action: 'confirm' end def confirm @twofa_view = @twofa.otp_confirm_view_variables end def create if @twofa.verify!(params[:twofa_code].to_s) if time = @twofa.backup_codes.map(&:created_on).max flash[:warning] = t('twofa_warning_backup_codes_generated_invalidated', time: format_time(time)) else flash[:notice] = t('twofa_notice_backup_codes_generated') end tokens = @twofa.init_backup_codes! flash[:twofa_backup_token_ids] = tokens.collect(&:id) redirect_to action: 'show' else flash[:error] = l('twofa_invalid_code') redirect_to action: 'confirm' end end def show # make sure we get only the codes that we should show tokens = @twofa.backup_codes.where(id: flash[:twofa_backup_token_ids]) # Redmine will show all flash contents at the top of the rendered html # page, so we need to explicitely delete this here flash.delete(:twofa_backup_token_ids) if tokens.present? && (@created_at = tokens.collect(&:created_on).max) > 5.minutes.ago @backup_codes = tokens.collect(&:value) else flash[:warning] = l('twofa_backup_codes_already_shown', bc_path: my_twofa_backup_codes_init_path) redirect_to controller: 'my', action: 'account' end end private def twofa_setup @user = User.current @twofa = Redmine::Twofa.for_user(@user) end end redmine-6.0.5/app/controllers/twofa_controller.rb000066400000000000000000000067001500112024600221750ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TwofaController < ApplicationController include TwofaHelper self.main_menu = false before_action :require_login before_action :require_admin, only: :admin_deactivate before_action :require_active_twofa require_sudo_mode :activate_init, :deactivate_init skip_before_action :check_twofa_activation, only: [:select_scheme, :activate_init, :activate_confirm, :activate] def select_scheme @user = User.current end before_action :activate_setup, only: [:activate_init, :activate_confirm, :activate] def activate_init init_twofa_pairing_and_send_code_for(@twofa) end def activate_confirm @twofa_view = @twofa.init_pairing_view_variables end def activate if @twofa.confirm_pairing!(params[:twofa_code].to_s) # The session token was destroyed by the twofa pairing, generate a new one session[:tk] = @user.generate_session_token flash[:notice] = l('twofa_activated', bc_path: my_twofa_backup_codes_init_path) redirect_to my_account_path else flash[:error] = l('twofa_invalid_code') redirect_to action: :activate_confirm, scheme: @twofa.scheme_name end end before_action :deactivate_setup, only: [:deactivate_init, :deactivate_confirm, :deactivate] def deactivate_init if @twofa.send_code(controller: 'twofa', action: 'deactivate') flash[:notice] = l('twofa_code_sent') end redirect_to action: :deactivate_confirm, scheme: @twofa.scheme_name end def deactivate_confirm @twofa_view = @twofa.otp_confirm_view_variables end def deactivate if @twofa.destroy_pairing!(params[:twofa_code].to_s) flash[:notice] = l('twofa_deactivated') redirect_to my_account_path else flash[:error] = l('twofa_invalid_code') redirect_to action: :deactivate_confirm, scheme: @twofa.scheme_name end end def admin_deactivate @user = User.find(params[:user_id]) # do not allow administrators to unpair 2FA without confirmation for themselves if @user == User.current render_403 return false end twofa = Redmine::Twofa.for_user(@user) twofa.destroy_pairing_without_verify! flash[:notice] = l('twofa_deactivated') redirect_to edit_user_path(@user) end private def activate_setup twofa_scheme = Redmine::Twofa.for_twofa_scheme(params[:scheme].to_s) if twofa_scheme.blank? redirect_to my_account_path return end @user = User.current @twofa = twofa_scheme.new(@user) end def deactivate_setup @user = User.current @twofa = Redmine::Twofa.for_user(@user) if params[:scheme].to_s != @twofa.scheme_name redirect_to my_account_path end end end redmine-6.0.5/app/controllers/users_controller.rb000066400000000000000000000207701500112024600222210ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class UsersController < ApplicationController layout 'admin' self.main_menu = false before_action :require_admin, :except => :show before_action lambda {find_user(false)}, :only => :show before_action :find_user, :only => [:edit, :update, :destroy] accept_api_auth :index, :show, :create, :update, :destroy helper :sort include SortHelper helper :custom_fields include CustomFieldsHelper include UsersHelper helper :principal_memberships helper :activities include ActivitiesHelper helper :queries include QueriesHelper helper :user_queries include UserQueriesHelper require_sudo_mode :create, :update, :destroy def index use_session = !request.format.csv? retrieve_query(UserQuery, use_session) # API backwards compatibility: handle legacy filter parameters unless request.format.html? if name = params[:name].presence @query.add_filter 'name', '~', [name] end if group_id = params[:group_id].presence @query.add_filter 'is_member_of_group', '=', [group_id] end end if @query.valid? scope = @query.results_scope @user_count = scope.count respond_to do |format| format.html do @limit = per_page_option @user_pages = Paginator.new @user_count, @limit, params['page'] @offset ||= @user_pages.offset @users = scope.limit(@limit).offset(@offset).to_a render :layout => !request.xhr? end format.csv do # Export all entries entries = scope.to_a send_data(query_to_csv(entries, @query, params), :type => 'text/csv; header=present', :filename => "#{filename_for_export(@query, 'users')}.csv") end format.api do @offset, @limit = api_offset_and_limit @users = scope.limit(@limit).offset(@offset).to_a end end else respond_to do |format| format.html {render :layout => !request.xhr?} format.csv {head :unprocessable_content} format.api {render_validation_errors(@query)} end end end def show unless @user.visible? render_404 return end # show projects based on current user visibility @memberships = @user.memberships.preload(:roles, :project).where(Project.visible_condition(User.current)).to_a @issue_counts = {} @issue_counts[:assigned] = { :total => Issue.visible.assigned_to(@user).count, :open => Issue.visible.open.assigned_to(@user).count } @issue_counts[:reported] = { :total => Issue.visible.where(:author_id => @user.id).count, :open => Issue.visible.open.where(:author_id => @user.id).count } respond_to do |format| format.html do events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) @events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)} render :layout => 'base' end format.api end end def new @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option) @user.safe_attributes = params[:user] @auth_sources = AuthSource.all end def create @user = User.new(:language => Setting.default_language, :mail_notification => Setting.default_notification_option, :admin => false) @user.safe_attributes = params[:user] unless @user.auth_source_id @user.password = params[:user][:password] @user.password_confirmation = params[:user][:password_confirmation] end @user.pref.safe_attributes = params[:pref] if @user.save Mailer.deliver_account_information(@user, @user.password) if params[:send_information] respond_to do |format| format.html do flash[:notice] = l(:notice_user_successful_create, :id => view_context.link_to(@user.login, user_path(@user))) if params[:continue] attrs = {:generate_password => @user.generate_password} redirect_to new_user_path(:user => attrs) else redirect_to edit_user_path(@user) end end format.api {render :action => 'show', :status => :created, :location => user_url(@user)} end else @auth_sources = AuthSource.all # Clear password input @user.password = @user.password_confirmation = nil respond_to do |format| format.html {render :action => 'new'} format.api {render_validation_errors(@user)} end end end def edit @auth_sources = AuthSource.all @membership ||= Member.new end def update is_updating_password = params[:user][:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) if is_updating_password @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] end @user.safe_attributes = params[:user] # Was the account actived ? (do it before User#save clears the change) was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) # TODO: Similar to My#account @user.pref.safe_attributes = params[:pref] if @user.save @user.pref.save Mailer.deliver_password_updated(@user, User.current) if is_updating_password if was_activated Mailer.deliver_account_activated(@user) elsif @user.active? && params[:send_information] && @user != User.current Mailer.deliver_account_information(@user, @user.password) end respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_to_referer_or edit_user_path(@user) end format.api {render_api_ok} end else @auth_sources = AuthSource.all @membership ||= Member.new # Clear password input @user.password = @user.password_confirmation = nil respond_to do |format| format.html {render :action => :edit} format.api {render_validation_errors(@user)} end end end def destroy return render_error status: 422 if @user == User.current && !@user.own_account_deletable? if api_request? || params[:lock] || params[:confirm] == @user.login if params[:lock] @user.update_attribute :status, User::STATUS_LOCKED flash[:notice] = l(:notice_successful_update) else @user.destroy flash[:notice] = l(:notice_successful_delete) end respond_to do |format| format.html {redirect_back_or_default(users_path)} format.api {render_api_ok} end end end def bulk_destroy @users = User.logged.where(id: params[:ids]).where.not(id: User.current) (render_404; return) unless @users.any? if params[:confirm] == I18n.t(:general_text_Yes) @users.destroy_all flash[:notice] = l(:notice_successful_delete) redirect_to users_path end end def bulk_lock bulk_update_status(params[:ids], User::STATUS_LOCKED) end def bulk_unlock bulk_update_status(params[:ids], User::STATUS_ACTIVE) end private def find_user(logged = true) if params[:id] == 'current' require_login || return @user = User.current elsif logged @user = User.logged.find(params[:id]) else @user = User.find(params[:id]) end rescue ActiveRecord::RecordNotFound render_404 end def bulk_update_status(user_ids, status) users = User.logged.where(id: user_ids).where.not(id: User.current) (render_404; return) unless users.any? users.update_all status: status flash[:notice] = l(:notice_successful_update) redirect_to users_path end end redmine-6.0.5/app/controllers/versions_controller.rb000066400000000000000000000144531500112024600227310ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class VersionsController < ApplicationController menu_item :roadmap model_object Version before_action :find_model_object, :except => [:index, :new, :create, :close_completed] before_action :find_project_from_association, :except => [:index, :new, :create, :close_completed] before_action :find_project_by_project_id, :only => [:index, :new, :create, :close_completed] before_action :authorize accept_api_auth :index, :show, :create, :update, :destroy include VersionsHelper helper :custom_fields helper :projects def index respond_to do |format| format.html do @trackers = @project.trackers.sorted.to_a retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?}) @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') project_ids = @with_subprojects ? @project.self_and_descendants.pluck(:id) : [@project.id] @versions = @project.shared_versions.preload(:custom_values) @versions += @project.rolled_up_versions.visible.preload(:custom_values) if @with_subprojects @versions = @versions.to_a.uniq.sort unless params[:completed] @completed_versions = @versions.select(&:completed?).reverse @versions -= @completed_versions end @issues_by_version = {} if @selected_tracker_ids.any? && @versions.any? issues = Issue.visible. includes(:project, :tracker). preload(:status, :priority, :fixed_version). where(:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)). order("#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") @issues_by_version = issues.group_by(&:fixed_version) end @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?} end format.api do @versions = @project.shared_versions.to_a end end end def show respond_to do |format| format.html do @issues = @version.fixed_issues.visible. includes(:status, :tracker, :priority). preload(:project). reorder("#{Tracker.table_name}.position, #{Issue.table_name}.id"). to_a end format.api format.text do send_data(version_to_text(@version), type: 'text/plain', filename: "#{@version.name}.txt") end end end def new @version = @project.versions.build @version.safe_attributes = params[:version] respond_to do |format| format.html format.js end end def create @version = @project.versions.build if params[:version] attributes = params[:version].dup attributes.delete('sharing') unless attributes.nil? || @version.allowed_sharings.include?(attributes['sharing']) @version.safe_attributes = attributes end if request.post? if @version.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_create) redirect_back_or_default settings_project_path(@project, :tab => 'versions') end format.js format.api do render :action => 'show', :status => :created, :location => version_url(@version) end end else respond_to do |format| format.html {render :action => 'new'} format.js {render :action => 'new'} format.api {render_validation_errors(@version)} end end end end def edit end def update if params[:version] attributes = params[:version].dup attributes.delete('sharing') unless @version.allowed_sharings.include?(attributes['sharing']) @version.safe_attributes = attributes if @version.save respond_to do |format| format.html do flash[:notice] = l(:notice_successful_update) redirect_back_or_default settings_project_path(@project, :tab => 'versions') end format.api {render_api_ok} end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@version)} end end end end def close_completed if request.put? @project.close_completed_versions end redirect_to settings_project_path(@project, :tab => 'versions') end def destroy if @version.deletable? @version.destroy respond_to do |format| format.html {redirect_back_or_default settings_project_path(@project, :tab => 'versions')} format.api {render_api_ok} end else respond_to do |format| format.html do flash[:error] = l(:notice_unable_delete_version) redirect_to settings_project_path(@project, :tab => 'versions') end format.api {head :unprocessable_content} end end end def status_by respond_to do |format| format.html {render :action => 'show'} format.js end end private def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil) if ids = params[:tracker_ids] @selected_tracker_ids = if ids.is_a? Array ids.collect {|id| id.to_i.to_s} else ids.split('/').collect {|id| id.to_i.to_s} end else @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s} end end end redmine-6.0.5/app/controllers/watchers_controller.rb000066400000000000000000000153361500112024600227020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WatchersController < ApplicationController before_action :require_login, :find_watchables, :only => [:watch, :unwatch] def watch set_watcher(@watchables, User.current, true) end def unwatch set_watcher(@watchables, User.current, false) end before_action :find_project, :authorize, :only => [:new, :create, :append, :destroy, :autocomplete_for_user, :autocomplete_for_mention] accept_api_auth :create, :destroy def new respond_to do |format| format.html { render_404 } format.js do @users = users_for_new_watcher end end end def create return unless authorize_for_watchable_type(:add) user_ids = [] if params[:watcher] user_ids << (params[:watcher][:user_ids] || params[:watcher][:user_id]) else user_ids << params[:user_id] end user_ids = user_ids.flatten.compact.uniq users = Principal.assignable_watchers.where(:id => user_ids).to_a users.each do |user| @watchables.each do |watchable| if watchable.valid_watcher?(user) Watcher.create(:watchable => watchable, :user => user) end end end respond_to do |format| format.html do redirect_to_referer_or do render(:html => 'Watcher added.', :status => :ok, :layout => true) end end format.js {@users = users_for_new_watcher} format.api {render_api_ok} end end def append if params[:watcher] user_ids = params[:watcher][:user_ids] || [params[:watcher][:user_id]] @users = Principal.assignable_watchers.where(:id => user_ids).to_a end if @users.blank? head :ok end end def destroy return unless authorize_for_watchable_type(:delete) user = Principal.find(params[:user_id]) @watchables.each do |watchable| watchable.set_watcher(user, false) end respond_to do |format| format.html do redirect_to_referer_or do render(:html => 'Watcher removed.', :status => :ok, :layout => true) end end format.js format.api {render_api_ok} end rescue ActiveRecord::RecordNotFound render_404 end def autocomplete_for_user @users = users_for_new_watcher render :layout => false end def autocomplete_for_mention users = users_for_mention render :json => format_users_json(users) end private def find_project if params[:object_type] && params[:object_id] @watchables = find_objects_from_params @projects = @watchables.map(&:project).uniq if @projects.size == 1 @project = @projects.first end elsif params[:project_id] @project = Project.visible.find_by_param(params[:project_id]) end end def find_watchables @watchables = find_objects_from_params unless @watchables.present? render_404 end end def set_watcher(watchables, user, watching) watchables.each do |watchable| watchable.set_watcher(user, watching) end respond_to do |format| format.html do text = watching ? 'Watcher added.' : 'Watcher removed.' redirect_to_referer_or do render(:html => text, :status => :ok, :layout => true) end end format.js do render(:partial => 'set_watcher', :locals => {:user => user, :watched => watchables}) end end end def users_for_new_watcher scope = nil if params[:q].blank? if @project.present? scope = @project.principals.assignable_watchers elsif @projects.present? && @projects.size > 1 scope = Principal.joins(:members).where(:members => { :project_id => @projects }).assignable_watchers.distinct end else scope = Principal.assignable_watchers.limit(100) end users = scope.sorted.like(params[:q]).to_a if @watchables && @watchables.size == 1 watchable_object = @watchables.first users -= watchable_object.visible_watcher_users end @watchables&.each do |watchable| users.reject!{|user| !watchable.valid_watcher?(user)} end users end def users_for_mention users = [] q = params[:q].to_s.strip scope = nil if params[:q].blank? && @project.present? scope = @project.principals.assignable_watchers else scope = Principal.assignable_watchers.limit(10) end # Exclude Group principal for now scope = scope.where(:type => ['User']) users = scope.sorted.like(params[:q]).to_a if @watchables && @watchables.size == 1 object = @watchables.first if object.respond_to?(:visible?) users.reject! {|user| user.is_a?(User) && !object.visible?(user)} end end users end def format_users_json(users) users.map do |user| { 'firstname' => user.firstname, 'lastname' => user.lastname, 'name' => user.name, 'login' => user.login } end end def find_objects_from_params klass = begin Object.const_get(params[:object_type].camelcase) rescue nil end return unless klass && Class === klass # rubocop:disable Style/CaseEquality return unless klass < ApplicationRecord return unless klass < Redmine::Acts::Watchable::InstanceMethods scope = klass.where(:id => Array.wrap(params[:object_id])).order(:id) if klass.reflect_on_association(:project) scope = scope.preload(:project => :enabled_modules) end objects = scope.to_a raise Unauthorized if objects.any? do |w| if w.respond_to?(:visible?) !w.visible? elsif w.respond_to?(:project) && w.project !w.project.visible? end end objects end # Check permission for the watchable type for each watchable involved def authorize_for_watchable_type(action) if @watchables.any?{|watchable| !User.current.allowed_to?(:"#{action}_#{watchable.class.name.underscore}_watchers", watchable.project)} render_403 return false else return true end end end redmine-6.0.5/app/controllers/welcome_controller.rb000066400000000000000000000022311500112024600225030ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WelcomeController < ApplicationController self.main_menu = false skip_before_action :check_if_login_required, only: [:robots] def index @news = News.latest User.current end def robots @projects = Project.visible(User.anonymous) unless Setting.login_required? render :layout => false, :content_type => 'text/plain' end end redmine-6.0.5/app/controllers/wiki_controller.rb000066400000000000000000000312471500112024600220240ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The WikiController follows the Rails REST controller pattern but with # a few differences # # * index - shows a list of WikiPages grouped by page or date # * new - not used # * create - not used # * show - will also show the form for creating a new wiki page # * edit - used to edit an existing or new page # * update - used to save a wiki page update to the database, including new pages # * destroy - normal # # Other member and collection methods are also used # # TODO: still being worked on class WikiController < ApplicationController default_search_scope :wiki_pages before_action :find_wiki, :authorize before_action :find_existing_or_new_page, :only => [:show, :edit] before_action :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy, :destroy_version] before_action :find_attachments, :only => [:preview] accept_api_auth :index, :show, :update, :destroy helper :attachments include AttachmentsHelper helper :watchers include Redmine::Export::PDF # List of pages, sorted alphabetically and by parent (hierarchy) def index load_pages_for_index respond_to do |format| format.html do @pages_by_parent_id = @pages.group_by(&:parent_id) end format.api end end # List of page, by last update def date_index load_pages_for_index @pages_by_date = @pages.group_by {|p| p.updated_on.to_date} end def new @page = WikiPage.new(:wiki => @wiki, :title => params[:title]) unless User.current.allowed_to?(:edit_wiki_pages, @project) render_403 return end if request.post? @page.title = '' unless editable? @page.validate if @page.errors[:title].blank? path = project_wiki_page_path(@project, @page.title, :parent => params[:parent]) respond_to do |format| format.html {redirect_to path} format.js {render :js => "window.location = #{path.to_json}"} end end end end # display a page (in editing mode if it doesn't exist) def show if params[:version] && !User.current.allowed_to?(:view_wiki_edits, @project) deny_access return end @content = @page.content_for_version(params[:version]) if @content.nil? if params[:version].blank? && User.current.allowed_to?(:edit_wiki_pages, @project) && editable? && !api_request? edit render :action => 'edit' else render_404 end return end call_hook :controller_wiki_show_before_render, content: @content, format: params[:format] if User.current.allowed_to?(:export_wiki_pages, @project) if params[:format] == 'pdf' send_file_headers! :type => 'application/pdf', :filename => filename_for_content_disposition("#{@page.title}.pdf") return elsif params[:format] == 'html' export = render_to_string :action => 'export', :layout => false send_data(export, :type => 'text/html', :filename => filename_for_content_disposition("#{@page.title}.html")) return elsif params[:format] == 'txt' send_data(@content.text, :type => 'text/plain', :filename => filename_for_content_disposition("#{@page.title}.txt")) return end end @editable = editable? @sections_editable = @editable && User.current.allowed_to?(:edit_wiki_pages, @page.project) && @content.current_version? && Redmine::WikiFormatting.supports_section_edit? respond_to do |format| format.html format.api end end # edit an existing page or a new one def edit return render_403 unless editable? if @page.new_record? if params[:parent].present? @page.parent = @page.wiki.find_page(params[:parent].to_s) end end @content = @page.content_for_version(params[:version]) @content ||= WikiContent.new(:page => @page) @content.text = initial_page_content(@page) if @content.text.blank? # don't keep previous comment @content.comments = nil # To prevent StaleObjectError exception when reverting to a previous version @content.version = @page.content.version if @page.content @text = @content.text if params[:section].present? && Redmine::WikiFormatting.supports_section_edit? @section = params[:section].to_i @text, @section_hash = Redmine::WikiFormatting.formatter.new(@text).get_section(@section) render_404 if @text.blank? end end # Creates a new page or updates an existing one def update @page = @wiki.find_or_new_page(params[:id]) return render_403 unless editable? was_new_page = @page.new_record? @page.safe_attributes = params[:wiki_page] @content = @page.content || WikiContent.new(:page => @page) content_params = params[:content] if content_params.nil? && params[:wiki_page].present? content_params = params[:wiki_page].slice(:text, :comments, :version) end content_params ||= {} @content.comments = content_params[:comments] @text = content_params[:text] if params[:section].present? && Redmine::WikiFormatting.supports_section_edit? @section = params[:section].to_i @section_hash = params[:section_hash] @content.text = Redmine::WikiFormatting.formatter.new(@content.text).update_section(@section, @text, @section_hash) else @content.version = content_params[:version] if content_params[:version] @content.text = @text end @content.author = User.current if @page.save_with_content(@content) attachments = Attachment.attach_files(@page, params[:attachments] || (params[:wiki_page] && params[:wiki_page][:uploads])) render_attachment_warning_if_needed(@page) call_hook(:controller_wiki_edit_after_save, {:params => params, :page => @page}) respond_to do |format| format.html do anchor = @section ? "section-#{@section}" : nil redirect_to project_wiki_page_path(@project, @page.title, :anchor => anchor) end format.api do if was_new_page render :action => 'show', :status => :created, :location => project_wiki_page_path(@project, @page.title) else render_api_ok end end end else respond_to do |format| format.html {render :action => 'edit'} format.api {render_validation_errors(@content)} end end rescue ActiveRecord::StaleObjectError, Redmine::WikiFormatting::StaleSectionError # Optimistic locking exception respond_to do |format| format.html do flash.now[:error] = l(:notice_locking_conflict) render :action => 'edit' end format.api {render_api_head :conflict} end end # rename a page def rename return render_403 unless editable? @page.redirect_existing_links = true # used to display the *original* title if some AR validation errors occur @original_title = @page.pretty_title @page.safe_attributes = params[:wiki_page] if request.post? && @page.save flash[:notice] = l(:notice_successful_update) redirect_to project_wiki_page_path(@page.project, @page.title) end end def protect @page.update_attribute :protected, params[:protected] redirect_to project_wiki_page_path(@project, @page.title) end # show page history def history @version_count = @page.content.versions.count @version_pages = Paginator.new @version_count, per_page_option, params['page'] # don't load text @versions = @page.content.versions. select("id, author_id, comments, updated_on, version"). reorder('version DESC'). limit(@version_pages.per_page + 1). offset(@version_pages.offset). to_a render :layout => false if request.xhr? end def diff @diff = @page.diff(params[:version], params[:version_from]) render_404 unless @diff end def annotate @annotate = @page.annotate(params[:version]) render_404 unless @annotate end # Removes a wiki page and its history # Children can be either set as root pages, removed or reassigned to another parent page def destroy return render_403 unless editable? @descendants_count = @page.descendants.size if @descendants_count > 0 case params[:todo] when 'nullify' # Nothing to do when 'destroy' # Removes all its descendants @page.descendants.each(&:destroy) when 'reassign' # Reassign children to another parent page reassign_to = @wiki.pages.find_by_id(params[:reassign_to_id].to_i) return unless reassign_to @page.children.each do |child| child.update_attribute(:parent, reassign_to) end else @reassignable_to = @wiki.pages - @page.self_and_descendants # display the destroy form if it's a user request return unless api_request? end end @page.destroy respond_to do |format| format.html do flash[:notice] = l(:notice_successful_delete) redirect_to project_wiki_index_path(@project) end format.api {render_api_ok} end end def destroy_version return render_403 unless editable? if content = @page.content.versions.find_by_version(params[:version]) content.destroy redirect_to_referer_or history_project_wiki_page_path(@project, @page.title) else render_404 end end # Export wiki to a single pdf or html file def export @pages = @wiki.pages. includes([:content, {:attachments => :author}]). to_a respond_to do |format| format.html do export = render_to_string :action => 'export_multiple', :layout => false send_data(export, :type => 'text/html', :filename => "wiki.html") end format.pdf do send_file_headers! :type => 'application/pdf', :filename => "#{@project.identifier}.pdf" end end end def preview page = @wiki.find_page(params[:id]) # page is nil when previewing a new page return render_403 unless page.nil? || editable?(page) if page @attachments += page.attachments @previewed = page.content end @text = params[:content].present? ? params[:content][:text] : params[:text] render :partial => 'common/preview' end def add_attachment return render_403 unless editable? attachments = Attachment.attach_files(@page, params[:attachments]) render_attachment_warning_if_needed(@page) redirect_to :action => 'show', :id => @page.title, :project_id => @project end private def find_wiki @project = Project.find(params[:project_id]) @wiki = @project.wiki render_404 unless @wiki rescue ActiveRecord::RecordNotFound render_404 end # Finds the requested page or a new page if it doesn't exist def find_existing_or_new_page @page = @wiki.find_or_new_page(params[:id]) if @wiki.page_found_with_redirect? redirect_to_page @page end end # Finds the requested page and returns a 404 error if it doesn't exist def find_existing_page @page = @wiki.find_page(params[:id]) if @page.nil? render_404 return end if @wiki.page_found_with_redirect? redirect_to_page @page end end def redirect_to_page(page) if page.project && page.project.visible? redirect_to :action => action_name, :project_id => page.project, :id => page.title else render_404 end end # Returns true if the current user is allowed to edit the page, otherwise false def editable?(page = @page) page.editable_by?(User.current) end # Returns the default content of a new wiki page def initial_page_content(page) helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) extend helper unless self.instance_of?(helper) helper.instance_method(:initial_page_content).bind_call(self, page) end def load_pages_for_index @pages = @wiki.pages.with_updated_on. includes(:wiki => :project). includes(:parent). to_a end end redmine-6.0.5/app/controllers/wikis_controller.rb000066400000000000000000000022341500112024600222010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WikisController < ApplicationController menu_item :wiki before_action :find_project, :authorize # Delete a project's wiki def destroy if request.post? && params[:confirm] && @project.wiki if @project.wiki.destroy Wiki.create_default(@project) unless @wiki end redirect_to project_path(@project) end end end redmine-6.0.5/app/controllers/workflows_controller.rb000066400000000000000000000134021500112024600231070ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WorkflowsController < ApplicationController layout 'admin' self.main_menu = false before_action :find_trackers_roles_and_statuses_for_edit, only: [:edit, :update, :permissions, :update_permissions] before_action :require_admin def index @roles = Role.sorted.select(&:consider_workflow?) @trackers = Tracker.sorted @workflow_counts = WorkflowTransition.group(:tracker_id, :role_id).count end def edit if @trackers && @roles && @statuses.any? workflows = WorkflowTransition. where(:role_id => @roles.map(&:id), :tracker_id => @trackers.map(&:id)). preload(:old_status, :new_status) @workflows = {} @workflows['always'] = workflows.select {|w| !w.author && !w.assignee} @workflows['author'] = workflows.select {|w| w.author} @workflows['assignee'] = workflows.select {|w| w.assignee} end end def update if @roles && @trackers && params[:transitions] transitions = params[:transitions].deep_dup transitions.each_value do |transitions_by_new_status| transitions_by_new_status.each_value do |transition_by_rule| transition_by_rule.reject! {|rule, transition| transition == 'no_change'} end end WorkflowTransition.replace_transitions(@trackers, @roles, transitions) flash[:notice] = l(:notice_successful_update) end redirect_to_referer_or edit_workflows_path end def permissions if @roles && @trackers @fields = (Tracker::CORE_FIELDS_ALL - @trackers.map(&:disabled_core_fields).reduce(:&)).map do |field| [field, l("field_#{field.delete_suffix('_id')}")] end @custom_fields = @trackers.map(&:custom_fields).flatten.uniq.sort @permissions = WorkflowPermission.rules_by_status_id(@trackers, @roles) @statuses.each {|status| @permissions[status.id] ||= {}} end end def update_permissions if @roles && @trackers && params[:permissions] permissions = params[:permissions].deep_dup permissions.each_value do |rule_by_status_id| rule_by_status_id.reject! {|status_id, rule| rule == 'no_change'} end WorkflowPermission.replace_permissions(@trackers, @roles, permissions) flash[:notice] = l(:notice_successful_update) end redirect_to_referer_or permissions_workflows_path end def copy find_sources_and_targets end def duplicate find_sources_and_targets if params[:source_tracker_id].blank? || params[:source_role_id].blank? || (@source_tracker.nil? && @source_role.nil?) flash.now[:error] = l(:error_workflow_copy_source) render :copy elsif @target_trackers.blank? || @target_roles.blank? flash.now[:error] = l(:error_workflow_copy_target) render :copy else WorkflowRule.copy(@source_tracker, @source_role, @target_trackers, @target_roles) flash[:notice] = l(:notice_successful_update) redirect_to copy_workflows_path( :source_tracker_id => @source_tracker, :source_role_id => @source_role ) end end private def find_sources_and_targets @roles = Role.sorted.select(&:consider_workflow?) @trackers = Tracker.sorted if params[:source_tracker_id].blank? || params[:source_tracker_id] == 'any' @source_tracker = nil else @source_tracker = Tracker.find_by_id(params[:source_tracker_id].to_i) end if params[:source_role_id].blank? || params[:source_role_id] == 'any' @source_role = nil else @source_role = Role.find_by_id(params[:source_role_id].to_i) end @target_trackers = if params[:target_tracker_ids].blank? nil else Tracker.where(:id => params[:target_tracker_ids]).to_a end @target_roles = if params[:target_role_ids].blank? nil else Role.where(:id => params[:target_role_ids]).to_a end end def find_trackers_roles_and_statuses_for_edit find_roles find_trackers find_statuses end def find_roles ids = Array.wrap(params[:role_id]) if ids == ['all'] @roles = Role.sorted.select(&:consider_workflow?) elsif ids.present? @roles = Role.where(:id => ids).to_a end @roles = nil if @roles.blank? end def find_trackers ids = Array.wrap(params[:tracker_id]) if ids == ['all'] @trackers = Tracker.sorted.to_a elsif ids.present? @trackers = Tracker.where(:id => ids).to_a end @trackers = nil if @trackers.blank? end def find_statuses @used_statuses_only = (params[:used_statuses_only] == '0' ? false : true) if @trackers && @used_statuses_only role_ids = Role.all.select(&:consider_workflow?).map(&:id) status_ids = WorkflowTransition.where( :tracker_id => @trackers.map(&:id), :role_id => role_ids ).where( 'old_status_id <> new_status_id' ).distinct.pluck(:old_status_id, :new_status_id).flatten.uniq @statuses = IssueStatus.where(:id => status_ids).sorted.to_a.presence end @statuses ||= IssueStatus.sorted.to_a end end redmine-6.0.5/app/helpers/000077500000000000000000000000001500112024600153565ustar00rootroot00000000000000redmine-6.0.5/app/helpers/account_helper.rb000066400000000000000000000015171500112024600207020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AccountHelper end redmine-6.0.5/app/helpers/activities_helper.rb000066400000000000000000000030561500112024600214120ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ActivitiesHelper def sort_activity_events(events) events_by_group = events.group_by(&:event_group) sorted_events = [] events.sort_by(&:event_datetime).reverse_each do |event| if group_events = events_by_group.delete(event.event_group) group_events.sort_by(&:event_datetime).reverse.each_with_index do |e, i| sorted_events << [e, i > 0] end end end sorted_events end def activity_authors_options_for_select(project, selected) options = [] options += [["<< #{l(:label_me)} >>", User.current.id]] if User.current.logged? options += Query.new(project: project).users.select{|user| user.active?}.map{|user| [user.name, user.id]} options_for_select(options, selected) end end redmine-6.0.5/app/helpers/admin_helper.rb000066400000000000000000000026641500112024600203420ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AdminHelper def project_status_options_for_select(selected) options_for_select([[l(:label_all), ''], [l(:project_status_active), '1'], [l(:project_status_closed), '5'], [l(:project_status_archived), '9'], [l(:project_status_scheduled_for_deletion), '10']], selected.to_s) end def plugin_data_for_updates(plugins) data = {"v" => Redmine::VERSION.to_s, "p" => {}} plugins.each do |plugin| data["p"].merge! plugin.id => {"v" => plugin.version, "n" => plugin.name, "a" => plugin.author} end data end end redmine-6.0.5/app/helpers/application_helper.rb000066400000000000000000002072361500112024600215570ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'forwardable' require 'cgi' module ApplicationHelper include Redmine::WikiFormatting::Macros::Definitions include Redmine::I18n include Redmine::Pagination::Helper include Redmine::SudoMode::Helper include Redmine::Themes::Helper include Redmine::Hook::Helper include Redmine::Helpers::URL include IconsHelper extend Forwardable def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter # Return true if user is authorized for controller/action, otherwise false def authorize_for(controller, action) User.current.allowed_to?({:controller => controller, :action => action}, @project) end # Display a link if user is authorized # # @param [String] name Anchor text (passed to link_to) # @param [Hash] options Hash params. This will checked by authorize_for to see if the user is authorized # @param [optional, Hash] html_options Options passed to link_to # @param [optional, Hash] parameters_for_method_reference Extra parameters for link_to def link_to_if_authorized(name, options = {}, html_options = nil, *parameters_for_method_reference) if authorize_for(options[:controller] || params[:controller], options[:action]) link_to(name, options, html_options, *parameters_for_method_reference) end end # Displays a link to user's account page if active def link_to_user(user, options={}) user.is_a?(User) ? link_to_principal(user, options) : h(user.to_s) end # Displays a link to user's account page or group page def link_to_principal(principal, options={}) only_path = options[:only_path].nil? ? true : options[:only_path] case principal when User name = principal.name(options[:format]) name = "@#{name}" if options[:mention] css_classes = '' if principal.active? || (User.current.admin? && principal.logged?) url = user_url(principal, :only_path => only_path) css_classes += principal.css_classes end when Group name = principal.to_s url = group_url(principal, :only_path => only_path) css_classes = principal.css_classes else name = principal.to_s end css_classes += " #{options[:class]}" if css_classes && options[:class].present? url ? link_to(principal_icon(principal).to_s + name, url, :class => css_classes) : h(name) end # Displays a link to edit group page if current user is admin # Otherwise display only the group name def link_to_group(group, options={}) if group.is_a?(Group) name = h(group.name) if User.current.admin? only_path = options[:only_path].nil? ? true : options[:only_path] link_to name, edit_group_path(group, :only_path => only_path) else name end end end # Displays a link to +issue+ with its subject. # Examples: # # link_to_issue(issue) # => Defect #6: This is the subject # link_to_issue(issue, :truncate => 6) # => Defect #6: This i... # link_to_issue(issue, :subject => false) # => Defect #6 # link_to_issue(issue, :project => true) # => Foo - Defect #6 # link_to_issue(issue, :subject => false, :tracker => false) # => #6 # def link_to_issue(issue, options={}) title = nil subject = nil text = options[:tracker] == false ? "##{issue.id}" : "#{issue.tracker} ##{issue.id}" if options[:subject] == false title = issue.subject.truncate(60) else subject = issue.subject if truncate_length = options[:truncate] subject = subject.truncate(truncate_length) end end only_path = options[:only_path].nil? ? true : options[:only_path] s = link_to(text, issue_url(issue, :only_path => only_path), :class => issue.css_classes, :title => title) s << h(": #{subject}") if subject s = h("#{issue.project} - ") + s if options[:project] s end # Generates a link to an attachment. # Options: # * :text - Link text (default to attachment filename) # * :download - Force download (default: false) def link_to_attachment(attachment, options={}) text = options.delete(:text) || attachment.filename icon = options.fetch(:icon, false) if options.delete(:download) route_method = :download_named_attachment_url options[:filename] = attachment.filename else route_method = :attachment_url # make sure we don't have an extraneous :filename in the options options.delete(:filename) end html_options = options.slice!(:only_path, :filename) options[:only_path] = true unless options.key?(:only_path) url = send(route_method, attachment, options) label = icon ? sprite_icon(icon, text) : text link_to label, url, html_options end # Generates a link to a SCM revision # Options: # * :text - Link text (default to the formatted revision) def link_to_revision(revision, repository, options={}) if repository.is_a?(Project) repository = repository.repository end text = options.delete(:text) || format_revision(revision) rev = revision.respond_to?(:identifier) ? revision.identifier : revision link_to( h(text), {:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev}, :title => l(:label_revision_id, format_revision(revision)), :accesskey => options[:accesskey] ) end # Generates a link to a message def link_to_message(message, options={}, html_options = nil) link_to( message.subject.truncate(60), board_message_url(message.board_id, message.parent_id || message.id, { :r => (message.parent_id && message.id), :anchor => (message.parent_id ? "message-#{message.id}" : nil), :only_path => true }.merge(options)), html_options ) end # Generates a link to a project if active # Examples: # # link_to_project(project) # => link to the specified project overview # link_to_project(project, {:only_path => false}, :class => "project") # => 3rd arg adds html options # link_to_project(project, {}, :class => "project") # => html options with default url (project overview) # def link_to_project(project, options={}, html_options = nil) if project.archived? h(project.name) else link_to project.name, project_url(project, {:only_path => true}.merge(options)), html_options end end # Generates a link to a project settings if active def link_to_project_settings(project, options={}, html_options=nil) if project.active? link_to project.name, settings_project_path(project, options), html_options elsif project.archived? h(project.name) else link_to project.name, project_path(project, options), html_options end end # Generates a link to a version def link_to_version(version, options = {}) return '' unless version && version.is_a?(Version) options = {:title => format_date(version.effective_date)}.merge(options) link_to_if version.visible?, format_version_name(version), version_path(version), options end RECORD_LINK = { 'CustomValue' => lambda {|custom_value| link_to_record(custom_value.customized)}, 'Document' => lambda {|document| link_to(document.title, document_path(document))}, 'Group' => lambda {|group| link_to(group.name, group_path(group))}, 'Issue' => lambda {|issue| link_to_issue(issue, :subject => false)}, 'Message' => lambda {|message| link_to_message(message)}, 'News' => lambda {|news| link_to(news.title, news_path(news))}, 'Project' => lambda {|project| link_to_project(project)}, 'User' => lambda {|user| link_to_user(user)}, 'Version' => lambda {|version| link_to_version(version)}, 'WikiPage' => lambda do |wiki_page| link_to( wiki_page.pretty_title, project_wiki_page_path(wiki_page.project, wiki_page.title) ) end } def link_to_record(record) if link = RECORD_LINK[record.class.name] self.instance_exec(record, &link) end end ATTACHMENT_CONTAINER_LINK = { # Custom list, since project/version attachments are listed in the files # view and not in the project/milestone view 'Project' => lambda {|project| link_to(l(:project_module_files), project_files_path(project))}, 'Version' => lambda {|version| link_to(l(:project_module_files), project_files_path(version.project))}, } def link_to_attachment_container(attachment_container) if link = ATTACHMENT_CONTAINER_LINK[attachment_container.class.name] || RECORD_LINK[attachment_container.class.name] self.instance_exec(attachment_container, &link) end end # Helper that formats object for html or text rendering # Options: # * :html - If true, format the object as HTML (default: true) # * :thousands_delimiter - If true, format the numeric object with thousands delimiter (default: false) def format_object(object, *args, &block) options = if args.first.is_a?(Hash) args.first elsif !args.empty? # Support the old syntax `format_object(object, html_flag)` # TODO: Display a deprecation warning in a future version, then remove this {:html => args.first} else {} end html = options.fetch(:html, true) thousands_delimiter = options.fetch(:thousands_delimiter, false) delimiter_char = thousands_delimiter ? ::I18n.t('number.format.delimiter') : nil if block object = yield object end case object when Array formatted_objects = object.map do |o| format_object(o, html: html, thousands_delimiter: thousands_delimiter) end html ? safe_join(formatted_objects, ', ') : formatted_objects.join(', ') when Time, ActiveSupport::TimeWithZone format_time(object) when Date format_date(object) when Integer number_with_delimiter(object, delimiter: delimiter_char) when Float number_with_delimiter(sprintf('%.2f', object), delimiter: delimiter_char) when User, Group html ? link_to_principal(object) : object.to_s when Project html ? link_to_project(object) : object.to_s when Version html ? link_to_version(object) : object.to_s when TrueClass l(:general_text_Yes) when FalseClass l(:general_text_No) when Issue object.visible? && html ? link_to_issue(object) : "##{object.id}" when Attachment if html content_tag( :span, link_to_attachment(object) + link_to_attachment( object, :class => ['icon-only', 'icon-download'], :title => l(:button_download), :download => true ) ) else object.filename end when CustomValue, CustomFieldValue return "" unless object.customized&.visible? if object.custom_field f = object.custom_field.format.formatted_custom_value(self, object, html) if f.nil? || f.is_a?(String) f else format_object(f, html: html, thousands_delimiter: object.custom_field.thousands_delimiter?, &block) end else object.value.to_s end else html ? h(object) : object.to_s end end def wiki_page_path(page, options={}) url_for({:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title}.merge(options)) end def thumbnail_tag(attachment) thumbnail_size = Setting.thumbnails_size.to_i thumbnail_path = thumbnail_path(attachment, :size => thumbnail_size * 2) link_to( image_tag( thumbnail_path, :srcset => "#{thumbnail_path} 2x", :style => "max-width: #{thumbnail_size}px; max-height: #{thumbnail_size}px;", :title => attachment.filename, :alt => attachment.filename, :loading => "lazy" ), attachment_path( attachment ) ) end def toggle_link(name, id, options={}) onclick = "$('##{id}').toggle(); " onclick << (options[:focus] ? "$('##{options[:focus]}:visible').focus(); " : "this.blur(); ") onclick << "$(window).scrollTop($('##{options[:focus]}').position().top); " if options[:scroll] onclick << "return false;" link_to(name, "#", :onclick => onclick) end def link_to_previous_month(year, month, options={}) target_year, target_month = if month == 1 [year - 1, 12] else [year, month - 1] end name = if target_month == 12 "#{month_name(target_month)} #{target_year}" else month_name(target_month) end link_to_month(("« " + name), target_year, target_month, options) end def link_to_next_month(year, month, options={}) target_year, target_month = if month == 12 [year + 1, 1] else [year, month + 1] end name = if target_month == 1 "#{month_name(target_month)} #{target_year}" else month_name(target_month) end link_to_month((name + " »"), target_year, target_month, options) end def link_to_month(link_name, year, month, options={}) link_to(link_name, {:params => request.query_parameters.merge(:year => year, :month => month)}, options) end # Used to format item titles on the activity view def format_activity_title(text) text end def format_activity_day(date) date == User.current.today ? l(:label_today).titleize : format_date(date) end def format_activity_description(text) h(text.to_s.truncate(120).gsub(%r{[\r\n]*<(pre|code)>.*$}m, '...')). gsub(/[\r\n]+/, "
        ").html_safe end def format_version_name(version) if version.project == @project h(version) else h("#{version.project} - #{version}") end end def format_changeset_comments(changeset, options={}) method = options[:short] ? :short_comments : :comments textilizable changeset, method, project: changeset.project, formatting: Setting.commit_logs_formatting? end def due_date_distance_in_words(date) if date l((if date < User.current.today :label_roadmap_overdue else :label_roadmap_due_in end), distance_of_date_in_words(User.current.today, date)) end end # Renders a tree of projects as a nested set of unordered lists # The given collection may be a subset of the whole project tree # (eg. some intermediate nodes are private and can not be seen) def render_project_nested_lists(projects, &block) s = +'' if projects.any? ancestors = [] original_project = @project projects.sort_by(&:lft).each do |project| # set the project environment to please macros. @project = project if ancestors.empty? || project.is_descendant_of?(ancestors.last) s << "
          \n" else ancestors.pop s << "" while ancestors.any? && !project.is_descendant_of?(ancestors.last) ancestors.pop s << "
        \n" end end classes = (ancestors.empty? ? 'root' : 'child') classes += ' archived' if project.archived? s << "
      • " s << h(block ? capture(project, &block) : project.name) s << "
        \n" ancestors << project end s << ("
      \n" * ancestors.size) @project = original_project end s.html_safe end def render_page_hierarchy(pages, node=nil, options={}) content = +'' if pages[node] content << "
        \n" pages[node].each do |page| content << "
      • " if controller.controller_name == 'wiki' && controller.action_name == 'export' href = "##{page.title}" else href = {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title, :version => nil} end content << link_to( h(page.pretty_title), href, :title => (if options[:timestamp] && page.updated_on l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) else nil end) ) content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id] content << "
      • \n" end content << "
      \n" end content.html_safe end # Renders flash messages def render_flash_messages s = +'' flash.each do |k, v| s << content_tag('div', notice_icon(k) + v.html_safe, :class => "flash #{k}", :id => "flash_#{k}") end s.html_safe end # Renders tabs and their content def render_tabs(tabs, selected=params[:tab]) if tabs.any? unless tabs.detect {|tab| tab[:name] == selected} selected = nil end selected ||= tabs.first[:name] render :partial => 'common/tabs', :locals => {:tabs => tabs, :selected_tab => selected} else content_tag 'p', l(:label_no_data), :class => "nodata" end end # Returns the tab action depending on the tab properties def get_tab_action(tab) if tab[:onclick] return tab[:onclick] elsif tab[:partial] return "showTab('#{tab[:name]}', this.href)" else return nil end end # Returns the default scope for the quick search form # Could be 'all', 'my_projects', 'subprojects' or nil (current project) def default_search_project_scope if @project && !@project.leaf? 'subprojects' end end # Returns an array of projects that are displayed in the quick-jump box def projects_for_jump_box(user=User.current) if user.logged? user.projects.active.select(:id, :name, :identifier, :lft, :rgt).to_a else [] end end def render_projects_for_jump_box(projects, selected: nil, query: nil) if query.blank? jump_box = Redmine::ProjectJumpBox.new User.current bookmarked = jump_box.bookmarked_projects recents = jump_box.recently_used_projects projects_label = :label_project_all else projects_label = :label_result_plural end jump = params[:jump].presence || current_menu_item s = (+'').html_safe build_project_link = lambda do |project, level = 0| padding = level * 16 text = content_tag('span', project.name, :style => "padding-left:#{padding}px;") s << link_to(text, project_path(project, :jump => jump), :title => project.name, :class => (project == selected ? 'selected' : nil)) end [ [bookmarked, :label_optgroup_bookmarks, true], [recents, :label_optgroup_recents, false], [projects, projects_label, true] ].each do |projects, label, is_tree| next if projects.blank? s << content_tag(:strong, l(label)) if is_tree project_tree(projects, &build_project_link) else # we do not want to render recently used projects as a tree, but in the # order they were used (most recent first) projects.each(&build_project_link) end end s end # Renders the project quick-jump box def render_project_jump_box projects = projects_for_jump_box(User.current) if @project && @project.persisted? text = @project.name_was end text ||= l(:label_jump_to_a_project) url = autocomplete_projects_path(:format => 'js', :jump => current_menu_item) trigger = content_tag('span', text, :class => 'drdn-trigger') q = text_field_tag('q', '', :id => 'projects-quick-search', :class => 'autocomplete', :data => {:automcomplete_url => url}, :autocomplete => 'off') all = link_to(l(:label_project_all), projects_path(:jump => current_menu_item), :class => (@project.nil? && controller.class.main_menu ? 'selected' : nil)) content = content_tag('div', content_tag('div', sprite_icon('search', icon_only: true, size: 18) + q, :class => 'quick-search') + content_tag('div', render_projects_for_jump_box(projects, selected: @project), :class => 'drdn-items projects selection') + content_tag('div', all, :class => 'drdn-items all-projects selection'), :class => 'drdn-content') content_tag('div', trigger + content, :id => "project-jump", :class => "drdn") end def project_tree_options_for_select(projects, options = {}) s = ''.html_safe if blank_text = options[:include_blank] if blank_text == true blank_text = ' '.html_safe end s << content_tag('option', blank_text, :value => '') end project_tree(projects) do |project, level| name_prefix = (level > 0 ? ' ' * 2 * level + '» ' : '').html_safe tag_options = {:value => project.id} if project == options[:selected] || (options[:selected].respond_to?(:include?) && options[:selected].include?(project)) tag_options[:selected] = 'selected' else tag_options[:selected] = nil end tag_options.merge!(yield(project)) if block_given? s << content_tag('option', name_prefix + h(project), tag_options) end s.html_safe end # Yields the given block for each project with its level in the tree # # Wrapper for Project#project_tree def project_tree(projects, options={}, &) Project.project_tree(projects, options, &) end def principals_check_box_tags(name, principals) s = +'' principals.each do |principal| s << content_tag( 'label', check_box_tag(name, principal.id, false, :id => nil) + ((avatar(principal, :size => 16).presence if principal.is_a?(User)) || content_tag( 'span', principal_icon(principal), :class => "name icon icon-#{principal.class.name.downcase}" ) ) + principal.to_s ) end s.html_safe end # Returns a string for users/groups option tags def principals_options_for_select(collection, selected=nil) s = +'' if collection.include?(User.current) s << content_tag('option', "<< #{l(:label_me)} >>", :value => User.current.id) end involved_principals_html = +'' # This optgroup is displayed only when editing a single issue if @issue.present? && !@issue.new_record? involved_principals = [@issue.author, @issue.prior_assigned_to].uniq.compact involved_principals_html = involved_principals.map do |p| content_tag('option', p.name, value: p.id, disabled: !collection.include?(p)) end.join end users_html = +'' groups_html = +'' collection.sort.each do |element| if option_value_selected?(element, selected) || element.id.to_s == selected selected_attribute = ' selected="selected"' end (element.is_a?(Group) ? groups_html : users_html) << %() end if involved_principals_html.blank? && groups_html.blank? s << users_html else [ [l(:label_involved_principals), involved_principals_html], [l(:label_user_plural), users_html], [l(:label_group_plural), groups_html] ].each do |label, options_html| s << %(#{options_html}) if options_html.present? end end s.html_safe end def option_tag(name, text, value, selected=nil, options={}) content_tag 'option', value, options.merge(:value => value, :selected => (value == selected)) end def truncate_single_line_raw(string, length) string.to_s.truncate(length).gsub(%r{[\r\n]+}m, ' ') end # Truncates at line break after 250 characters or options[:length] def truncate_lines(string, options={}) length = options[:length] || 250 if string.to_s =~ /\A(.{#{length}}.*?)$/m "#{$1}..." else string end end def anchor(text) text.to_s.tr(' ', '_') end def html_hours(text) text.gsub( %r{(\d+)([\.,:])(\d+)}, '\1\2\3' ).html_safe end def authoring(created, author, options={}) l(options[:label] || :label_added_time_by, :author => link_to_user(author), :age => time_tag(created)).html_safe end def time_tag(time) return if time.nil? text = distance_of_time_in_words(Time.now, time) if @project link_to(text, project_activity_path(@project, :from => User.current.time_to_date(time)), :title => format_time(time)) else content_tag('abbr', text, :title => format_time(time)) end end def syntax_highlight_lines(name, content) syntax_highlight(name, content).each_line.to_a end def syntax_highlight(name, content) Redmine::SyntaxHighlighting.highlight_by_filename(content, name) end def to_path_param(path) str = path.to_s.split(%r{[/\\]}).select{|p| !p.blank?}.join("/") str.blank? ? nil : str end def reorder_handle(object, options={}) data = { :reorder_url => options[:url] || url_for(object), :reorder_param => options[:param] || object.class.name.underscore } content_tag('span', sprite_icon('reorder', ''), :class => "icon-only icon-sort-handle sort-handle", :data => data, :title => l(:button_sort)) end def breadcrumb(*args) elements = args.flatten elements.any? ? content_tag('p', (args.join(" \xc2\xbb ") + " \xc2\xbb ").html_safe, :class => 'breadcrumb') : nil end def other_formats_links(&) concat('

      '.html_safe + l(:label_export_to)) yield Redmine::Views::OtherFormatsBuilder.new(self) concat('

      '.html_safe) end def page_header_title if @project.nil? || @project.new_record? h(Setting.app_title) else b = [] ancestors = (@project.root? ? [] : @project.ancestors.visible.to_a) if ancestors.any? root = ancestors.shift b << link_to_project(root, {:jump => current_menu_item}, :class => 'root') if ancestors.size > 2 b << "\xe2\x80\xa6" ancestors = ancestors[-2, 2] end b += ancestors.collect do |p| link_to_project(p, {:jump => current_menu_item}, :class => 'ancestor') end end b << content_tag(:span, h(@project), class: 'current-project') if b.size > 1 separator = content_tag(:span, ' » '.html_safe, class: 'separator') path = safe_join(b[0..-2], separator) + separator b = [content_tag(:span, path.html_safe, class: 'breadcrumbs'), b[-1]] end safe_join b end end # Returns a h2 tag and sets the html title with the given arguments def title(*args) strings = args.map do |arg| if arg.is_a?(Array) && arg.size >= 2 link_to(*arg) else h(arg.to_s) end end html_title args.reverse.map {|s| (s.is_a?(Array) ? s.first : s).to_s} content_tag('h2', strings.join(' » ').html_safe) end # Sets the html title # Returns the html title when called without arguments # Current project name and app_title are automatically appended # Exemples: # html_title 'Foo', 'Bar' # html_title # => 'Foo - Bar - My Project - Redmine' def html_title(*args) if args.empty? title = @html_title || [] title << @project.name if @project title << Setting.app_title unless Setting.app_title == title.last title.reject(&:blank?).join(' - ') else @html_title ||= [] @html_title += args end end def actions_dropdown(&) content = capture(&) if content.present? trigger = content_tag('span', sprite_icon('3-bullets', l(:button_actions)), :class => 'icon-only icon-actions', :title => l(:button_actions)) trigger = content_tag('span', trigger, :class => 'drdn-trigger') content = content_tag('div', content, :class => 'drdn-items') content = content_tag('div', content, :class => 'drdn-content') content_tag('span', trigger + content, :class => 'drdn') end end # Returns the theme, controller name, and action as css classes for the # HTML body. def body_css_classes css = [] if theme = Redmine::Themes.theme(Setting.ui_theme) css << 'theme-' + theme.name.tr(' ', '_') end css << 'project-' + @project.identifier if @project && @project.identifier.present? css << 'has-main-menu' if display_main_menu?(@project) css << 'controller-' + controller_name css << 'action-' + action_name css << 'avatars-' + (Setting.gravatar_enabled? ? 'on' : 'off') if UserPreference::TEXTAREA_FONT_OPTIONS.include?(User.current.pref.textarea_font) css << "textarea-#{User.current.pref.textarea_font}" end css.join(' ') end def accesskey(s) @used_accesskeys ||= [] key = Redmine::AccessKeys.key_for(s) return nil if @used_accesskeys.include?(key) @used_accesskeys << key key end # Formats text according to system settings. # 2 ways to call this method: # * with a String: textilizable(text, options) # * with an object and one of its attribute: textilizable(issue, :description, options) def textilizable(*args) options = args.last.is_a?(Hash) ? args.pop : {} case args.size when 1 obj = options[:object] text = args.shift when 2 obj = args.shift attr = args.shift text = obj.send(attr).to_s else raise ArgumentError, 'invalid arguments to textilizable' end return '' if text.blank? project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil) @only_path = only_path = options.delete(:only_path) == false ? false : true text = text.dup macros = catch_macros(text) if options[:formatting] == false text = h(text) else formatting = Setting.text_formatting text = Redmine::WikiFormatting.to_html(formatting, text, :object => obj, :attribute => attr) end @parsed_headings = [] @heading_anchors = {} @current_section = 0 if options[:edit_section_links] parse_sections(text, project, obj, attr, only_path, options) text = parse_non_pre_blocks(text, obj, macros, options) do |txt| [:parse_inline_attachments, :parse_hires_images, :parse_wiki_links, :parse_redmine_links].each do |method_name| send method_name, txt, project, obj, attr, only_path, options end end parse_headings(text, project, obj, attr, only_path, options) if @parsed_headings.any? replace_toc(text, @parsed_headings) end text.html_safe end def parse_non_pre_blocks(text, obj, macros, options={}) s = StringScanner.new(text) tags = [] parsed = +'' until s.eos? s.scan(/(.*?)(<(\/)?(pre|code)(.*?)>|\z)/im) text, full_tag, closing, tag = s[1], s[2], s[3], s[4] if tags.empty? yield text inject_macros(text, obj, macros, true, options) if macros.any? else inject_macros(text, obj, macros, false, options) if macros.any? end parsed << text if tag if closing if tags.last && tags.last.casecmp(tag) == 0 tags.pop end else tags << tag.downcase end parsed << full_tag end end # Close any non closing tags while tag = tags.pop parsed << "" end parsed end # add srcset attribute to img tags if filename includes @2x, @3x, etc. # to support hires displays def parse_hires_images(text, project, obj, attr, only_path, options) text.gsub!(/src="([^"]+@(\dx)\.(bmp|gif|jpg|jpe|jpeg|png))"/i) do |m| filename, dpr = $1, $2 m + " srcset=\"#{filename} #{dpr}\"" end end def parse_inline_attachments(text, project, obj, attr, only_path, options) return if options[:inline_attachments] == false # when using an image link, try to use an attachment, if possible attachments = options[:attachments] || [] if obj.is_a?(Journal) attachments += obj.journalized.attachments if obj.journalized.respond_to?(:attachments) else attachments += obj.attachments if obj.respond_to?(:attachments) end if attachments.present? title_and_alt_re = /\s+(title|alt)="([^"]*)"/i text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpe|jpeg|png|webp))"([^>]*)/i) do |m| filename, ext, other_attrs = $1, $2, $3 # search for the picture in attachments if found = Attachment.latest_attach(attachments, CGI.unescape(filename)) image_url = download_named_attachment_url(found, found.filename, :only_path => only_path) desc = found.description.to_s.delete('"') # remove title and alt attributes after extracting them title_and_alt = other_attrs.scan(title_and_alt_re).to_h other_attrs.gsub!(title_and_alt_re, '') title_and_alt_attrs = if !desc.blank? && title_and_alt['alt'].blank? " title=\"#{desc}\" alt=\"#{desc}\"" else # restore original title and alt attributes " #{title_and_alt.map { |k, v| %[#{k}="#{v}"] }.join(' ')}" end "src=\"#{image_url}\"#{title_and_alt_attrs} loading=\"lazy\"#{other_attrs}" else m end end end end # Wiki links # # Examples: # [[mypage]] # [[mypage|mytext]] # wiki links can refer other project wikis, using project name or identifier: # [[project:]] -> wiki starting page # [[project:|mytext]] # [[project:mypage]] # [[project:mypage|mytext]] def parse_wiki_links(text, project, obj, attr, only_path, options) text.gsub!(/(!)?(\[\[([^\n\|]+?)(\|([^\n\|]+?))?\]\])/) do |m| link_project = project esc, all, page, title = $1, $2, $3, $5 if esc.nil? page = CGI.unescapeHTML(page) if page =~ /^\#(.+)$/ anchor = sanitize_anchor_name($1) url = "##{anchor}" next link_to(title.present? ? title.html_safe : h(page), url, :class => 'wiki-page') end if page =~ /^([^\:]+)\:(.*)$/ identifier, page = $1, $2 link_project = Project.find_by_identifier(identifier) || Project.find_by_name(identifier) title ||= identifier if page.blank? end if link_project && link_project.wiki && User.current.allowed_to?(:view_wiki_pages, link_project) # extract anchor anchor = nil if page =~ /^(.+?)\#(.+)$/ page, anchor = $1, $2 end anchor = sanitize_anchor_name(anchor) if anchor.present? # check if page exists wiki_page = link_project.wiki.find_page(page) url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContentVersion)) && obj.page == wiki_page "##{anchor}" else case options[:wiki_links] when :local "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '') when :anchor # used for single-file wiki export "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') else wiki_page_id = page.present? ? Wiki.titleize(page) : nil parent = if wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project obj.page.title else nil end url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent) end end link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) else # project or wiki doesn't exist all end else all end end end # Redmine links # # Examples: # Issues: # #52 -> Link to issue #52 # ##52 -> Link to issue #52, including the issue's subject # Changesets: # r52 -> Link to revision 52 # commit:a85130f -> Link to scmid starting with a85130f # Documents: # document#17 -> Link to document with id 17 # document:Greetings -> Link to the document with title "Greetings" # document:"Some document" -> Link to the document with title "Some document" # Versions: # version#3 -> Link to version with id 3 # version:1.0.0 -> Link to version named "1.0.0" # version:"1.0 beta 2" -> Link to version named "1.0 beta 2" # Attachments: # attachment:file.zip -> Link to the attachment of the current object named file.zip # Source files: # source:some/file -> Link to the file located at /some/file in the project's repository # source:some/file@52 -> Link to the file's revision 52 # source:some/file#L120 -> Link to line 120 of the file # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # export:some/file -> Force the download of the file # Forums: # forum#1 -> Link to forum with id 1 # forum:Support -> Link to forum named "Support" # forum:"Technical Support" -> Link to forum named "Technical Support" # Forum messages: # message#1218 -> Link to message with id 1218 # Projects: # project:someproject -> Link to project named "someproject" # project#3 -> Link to project with id 3 # News: # news#2 -> Link to news item with id 1 # news:Greetings -> Link to news item named "Greetings" # news:"First Release" -> Link to news item named "First Release" # Users: # user:jsmith -> Link to user with login jsmith # @jsmith -> Link to user with login jsmith # user#2 -> Link to user with id 2 # # Links can refer other objects from other projects, using project identifier: # identifier:r52 # identifier:document:"Some document" # identifier:version:1.0.0 # identifier:source:some/file def parse_redmine_links(text, default_project, obj, attr, only_path, options) text.gsub!(LINKS_RE) do |_| tag_content = $~[:tag_content] leading = $~[:leading] esc = $~[:esc] project_prefix = $~[:project_prefix] project_identifier = $~[:project_identifier] prefix = $~[:prefix] repo_prefix = $~[:repo_prefix] repo_identifier = $~[:repo_identifier] sep = $~[:sep1] || $~[:sep2] || $~[:sep3] || $~[:sep4] identifier = $~[:identifier1] || $~[:identifier2] || $~[:identifier3] comment_suffix = $~[:comment_suffix] comment_id = $~[:comment_id] if tag_content $& else link = nil project = default_project if project_identifier project = Project.visible.find_by_identifier(project_identifier) end if esc.nil? if prefix.nil? && sep == 'r' if project repository = nil if repo_identifier repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} else repository = project.repository end # project.changesets.visible raises an SQL error because of a double join on repositories if repository && (changeset = Changeset.visible. find_by_repository_id_and_revision(repository.id, identifier)) link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line_raw(changeset.comments, 100)) end end elsif sep == '#' || sep == '##' oid = identifier.to_i case prefix when nil if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid) anchor = comment_id ? "note-#{comment_id}" : nil url = issue_url(issue, :only_path => only_path, :anchor => anchor) link = if sep == '##' link_to("#{issue.tracker.name} ##{oid}#{comment_suffix}: #{issue.subject}", url, :class => issue.css_classes, :title => "#{l(:field_status)}: #{issue.status.name}") else link_to("##{oid}#{comment_suffix}", url, :class => issue.css_classes, :title => "#{issue.tracker.name}: #{issue.subject.truncate(100)} (#{issue.status.name})") end elsif identifier == 'note' link = link_to("#note-#{comment_id}", "#note-#{comment_id}") end when 'document' if document = Document.visible.find_by_id(oid) link = link_to(document.title, document_url(document, :only_path => only_path), :class => 'document') end when 'version' if version = Version.visible.find_by_id(oid) link = link_to(version.name, version_url(version, :only_path => only_path), :class => 'version') end when 'message' if message = Message.visible.find_by_id(oid) link = link_to_message(message, {:only_path => only_path}, :class => 'message') end when 'forum' if board = Board.visible.find_by_id(oid) link = link_to(board.name, project_board_url(board.project, board, :only_path => only_path), :class => 'board') end when 'news' if news = News.visible.find_by_id(oid) link = link_to(news.title, news_url(news, :only_path => only_path), :class => 'news') end when 'project' if p = Project.visible.find_by_id(oid) link = link_to_project(p, {:only_path => only_path}, :class => 'project') end when 'user' u = User.visible.find_by(:id => oid, :type => 'User') link = link_to_user(u, :only_path => only_path) if u end elsif sep == ':' name = remove_double_quotes(identifier) case prefix when 'document' if project && document = project.documents.visible.find_by_title(name) link = link_to(document.title, document_url(document, :only_path => only_path), :class => 'document') end when 'version' if project && version = project.versions.visible.find_by_name(name) link = link_to(version.name, version_url(version, :only_path => only_path), :class => 'version') end when 'forum' if project && board = project.boards.visible.find_by_name(name) link = link_to(board.name, project_board_url(board.project, board, :only_path => only_path), :class => 'board') end when 'news' if project && news = project.news.visible.find_by_title(name) link = link_to(news.title, news_url(news, :only_path => only_path), :class => 'news') end when 'commit', 'source', 'export' if project repository = nil if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$} repo_prefix, repo_identifier, name = $1, $2, $3 repository = project.repositories.detect {|repo| repo.identifier == repo_identifier} else repository = project.repository end if prefix == 'commit' if repository && (changeset = Changeset.visible. where( "repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%" ).first) link = link_to( h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier}, :class => 'changeset', :title => truncate_single_line_raw(changeset.comments, 100) ) end else if repository && User.current.allowed_to?(:browse_repository, project) name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$} path, rev, anchor = $1, $3, $5 link = link_to( h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param, :path => to_path_param(path), :rev => rev, :anchor => anchor}, :class => (prefix == 'export' ? 'source download' : 'source')) end end repo_prefix = nil end when 'attachment' attachments = options[:attachments] || [] if obj.is_a?(Journal) attachments += obj.journalized.attachments if obj.journalized.respond_to?(:attachments) else attachments += obj.attachments if obj.respond_to?(:attachments) end if attachments && attachment = Attachment.latest_attach(attachments, name) link = link_to_attachment(attachment, :only_path => only_path, :class => 'attachment') end when 'project' if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first link = link_to_project(p, {:only_path => only_path}, :class => 'project') end when 'user' u = User.visible.find_by("LOWER(login) = :s AND type = 'User'", :s => name.downcase) link = link_to_user(u, :only_path => only_path) if u end elsif sep == "@" name = remove_double_quotes(identifier) u = User.visible.find_by("LOWER(login) = :s AND type = 'User'", :s => name.downcase) link = link_to_user(u, :only_path => only_path, :class => 'user-mention', :mention => true) if u end end (leading + (link || "#{project_prefix}#{prefix}#{repo_prefix}#{sep}#{identifier}#{comment_suffix}")) end end end LINKS_RE = %r{ ]+?)?>(?.*?)| (?[\s\(,\-\[\>]|^) (?!)? (?(?[a-z0-9\-_]+):)? (?attachment|document|version|forum|news|message|project|commit|source|export|user)? ( ( (?\#\#?)| ( (?(?[a-z0-9\-_]+)\|)? (?r) ) ) ( (?((\d)+|(note))) (? (\#note)? -(?\d+) )? )| ( (?:) (?[^"\s<>][^\s<>]*?|"[^"]+?") )| ( (?@) (?[A-Za-z0-9_\-@\.]*?) ) ) (?= (?=[[:punct:]][^A-Za-z0-9_/])| ,| \s| \]| <| $) }x HEADING_RE = /(]+)?>(.+?)<\/h(\d)>)/i unless const_defined?(:HEADING_RE) def parse_sections(text, project, obj, attr, only_path, options) return unless options[:edit_section_links] text.gsub!(HEADING_RE) do heading, level = $1, $2 @current_section += 1 if @current_section > 1 content_tag( 'div', link_to( sprite_icon('edit', l(:button_edit_section)), options[:edit_section_links].merge( :section => @current_section), :class => 'icon-only icon-edit'), :class => "contextual heading-#{level}", :title => l(:button_edit_section), :id => "section-#{@current_section}") + heading.html_safe else heading end end end # Headings and TOC # Adds ids and links to headings unless options[:headings] is set to false def parse_headings(text, project, obj, attr, only_path, options) return if options[:headings] == false text.gsub!(HEADING_RE) do level, attrs, content = $2.to_i, $3, $4 item = strip_tags(content).strip anchor = sanitize_anchor_name(item) # used for single-file wiki export if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContentVersion)) anchor = "#{obj.page.title}_#{anchor}" end @heading_anchors[anchor] ||= 0 idx = (@heading_anchors[anchor] += 1) if idx > 1 anchor = "#{anchor}-#{idx}" end @parsed_headings << [level, anchor, item] "\n#{content}" \ "" end end unless const_defined?(:MACROS_RE) MACROS_RE = /( (!)? # escaping ( \{\{ # opening tag ([\w]+) # macro name (\(([^\n\r]*?)\))? # optional arguments ([\n\r].*?[\n\r])? # optional block of text \}\} # closing tag ) )/mx end unless const_defined?(:MACRO_SUB_RE) MACRO_SUB_RE = /( \{\{ macro\((\d+)\) \}\} )/x end # Extracts macros from text def catch_macros(text) macros = {} text.gsub!(MACROS_RE) do all, macro = $1, $4.downcase if macro_exists?(macro) || all =~ MACRO_SUB_RE index = macros.size macros[index] = all "{{macro(#{index})}}" else all end end macros end # Executes and replaces macros in text def inject_macros(text, obj, macros, execute=true, options={}) text.gsub!(MACRO_SUB_RE) do all, index = $1, $2.to_i orig = macros.delete(index) if execute && orig && orig =~ MACROS_RE esc, all, macro, args, block = $2, $3, $4.downcase, $6.to_s, $7.try(:strip) if esc.nil? h(exec_macro(macro, obj, args, block, options) || all) else h(all) end elsif orig h(orig) else h(all) end end end TOC_RE = /

      \{\{((<|<)|(>|>))?toc\}\}<\/p>/i unless const_defined?(:TOC_RE) # Renders the TOC with given headings def replace_toc(text, headings) text.gsub!(TOC_RE) do left_align, right_align = $2, $3 # Keep only the 4 first levels headings = headings.select{|level, anchor, item| level <= 4} if headings.empty? '' else div_class = +'toc' div_class << ' right' if right_align div_class << ' left' if left_align out = "

      • #{l :label_table_of_contents}
      • " root = headings.map(&:first).min current = root started = false headings.each do |level, anchor, item| if level > current out << '
        • ' * (level - current) elsif level < current out << "
        \n" * (current - level) + "
      • " elsif started out << '
      • ' end out << "#{item}" current = level started = true end out << '
      ' * (current - root) out << '
    ' end end end # Same as Rails' simple_format helper without using paragraphs def simple_format_without_paragraph(text) text.to_s. gsub(/\r\n?/, "\n"). # \r\n and \r -> \n gsub(/\n\n+/, "

    "). # 2+ newline -> 2 br gsub(/([^\n]\n)(?=[^\n])/, '\1
    '). # 1 newline -> br html_safe end def lang_options_for_select(blank=true) (blank ? [["(#{l('label_option_auto_lang')})", ""]] : []) + languages_options end def labelled_form_for(*args, &) args << {} unless args.last.is_a?(Hash) options = args.last if args.first.is_a?(Symbol) options[:as] = args.shift end options[:builder] = Redmine::Views::LabelledFormBuilder form_for(*args, &) end def labelled_fields_for(*args, &) args << {} unless args.last.is_a?(Hash) options = args.last options[:builder] = Redmine::Views::LabelledFormBuilder fields_for(*args, &) end def form_tag_html(html_options) # Set a randomized name attribute on all form fields by default # as a workaround to https://bugzilla.mozilla.org/show_bug.cgi?id=1279253 html_options['name'] ||= "#{html_options['id'] || 'form'}-#{SecureRandom.hex(4)}" super end # Render the error messages for the given objects def error_messages_for(*objects) objects = objects.filter_map {|o| o.is_a?(String) ? instance_variable_get(:"@#{o}") : o} errors = objects.map {|o| o.errors.full_messages}.flatten render_error_messages(errors) end # Renders a list of error messages def render_error_messages(errors) html = +"" if errors.present? html << "
    \n" html << notice_icon('error') html << "
      \n" errors.each do |error| html << "
    • #{h error}
    • \n" end html << "
    \n" end html.html_safe end def delete_link(url, options={}, button_name=l(:button_delete)) options = { :method => :delete, :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del' }.merge(options) link_to sprite_icon('del', button_name), url, options end def link_to_function(name, function, html_options={}) content_tag(:a, name, {:href => '#', :onclick => "#{function}; return false;"}.merge(html_options)) end def link_to_context_menu link_to sprite_icon('3-bullets', l(:button_actions)), '#', title: l(:button_actions), class: 'icon-only icon-actions js-contextmenu ' end # Helper to render JSON in views def raw_json(arg) arg.to_json.to_s.gsub('/', '\/').html_safe end def back_url_hidden_field_tag url = validate_back_url(back_url) hidden_field_tag('back_url', url, :id => nil) unless url.blank? end def cancel_button_tag(fallback_url) url = validate_back_url(back_url) || fallback_url link_to l(:button_cancel), url end def check_all_links(form_name) link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") + " | ".html_safe + link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)") end def toggle_checkboxes_link(selector, options={}) css_classes = 'icon icon-checked' css_classes += ' ' + options[:class] if options[:class] link_to_function sprite_icon('checked', ''), "toggleCheckboxesBySelector('#{selector}')", :title => "#{l(:button_check_all)} / #{l(:button_uncheck_all)}", :class => css_classes end def progress_bar(pcts, options={}) pcts = [pcts, pcts] unless pcts.is_a?(Array) pcts = pcts.collect(&:floor) pcts[1] = pcts[1] - pcts[0] pcts << (100 - pcts[1] - pcts[0]) titles = options[:titles].to_a titles[0] = "#{pcts[0]}%" if titles[0].blank? legend = options[:legend] || '' content_tag( 'table', content_tag( 'tr', (if pcts[0] > 0 content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed', :title => titles[0]) else ''.html_safe end) + (if pcts[1] > 0 content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done', :title => titles[1]) else ''.html_safe end) + (if pcts[2] > 0 content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo', :title => titles[2]) else ''.html_safe end) ), :class => "progress progress-#{pcts[0]}").html_safe + content_tag('p', legend, :class => 'percent').html_safe end def checked_image(checked=true) if checked @checked_image_tag ||= content_tag(:span, sprite_icon("checked"), :class => 'icon-only icon-checked') end end def context_menu unless @context_menu_included content_for :header_tags do javascript_include_tag('context_menu') + stylesheet_link_tag('context_menu') end if l(:direction) == 'rtl' content_for :header_tags do stylesheet_link_tag('context_menu_rtl') end end @context_menu_included = true end nil end def calendar_for(field_id) include_calendar_headers_tags javascript_tag( "$(function() { $('##{field_id}').addClass('date').datepickerFallback(datepickerOptions); });" ) end def include_calendar_headers_tags unless @calendar_headers_tags_included tags = ''.html_safe @calendar_headers_tags_included = true content_for :header_tags do start_of_week = Setting.start_of_week start_of_week = l(:general_first_day_of_week, :default => '1') if start_of_week.blank? # Redmine uses 1..7 (monday..sunday) in settings and locales # JQuery uses 0..6 (sunday..saturday), 7 needs to be changed to 0 start_of_week = start_of_week.to_i % 7 tags << javascript_tag( "var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: #{start_of_week}, " \ "showOn: 'button', buttonImageOnly: true, buttonImage: '" + asset_path('calendar.png') + "', showButtonPanel: true, showWeek: true, showOtherMonths: true, " \ "selectOtherMonths: true, changeMonth: true, changeYear: true, " \ "beforeShow: beforeShowDatePicker};" ) jquery_locale = l('jquery.locale', :default => current_language.to_s) unless jquery_locale == 'en' tags << javascript_include_tag("i18n/datepicker-#{jquery_locale}.js") end tags end end end # Overrides Rails' stylesheet_link_tag with themes and plugins support. # Examples: # stylesheet_link_tag('styles') # => picks styles.css from the current theme or defaults # stylesheet_link_tag('styles', :plugin => 'foo) # => picks styles.css from plugin's assets # def stylesheet_link_tag(*sources) options = sources.last.is_a?(Hash) ? sources.pop : {} plugin = options.delete(:plugin) sources = sources.map do |source| if plugin "plugin_assets/#{plugin}/#{source}" elsif current_theme && current_theme.stylesheets.include?(source) current_theme.stylesheet_path(source) else source end end super(*sources, options) end # Overrides Rails' image_tag with themes and plugins support. # Examples: # image_tag('image.png') # => picks image.png from the current theme or defaults # image_tag('image.png', :plugin => 'foo) # => picks image.png from plugin's assets # def image_tag(source, options={}) if plugin = options.delete(:plugin) source = "plugin_assets/#{plugin}/#{source}" elsif current_theme && current_theme.images.include?(source) source = current_theme.image_path(source) end super end # Overrides Rails' javascript_include_tag with plugins support # Examples: # javascript_include_tag('scripts') # => picks scripts.js from defaults # javascript_include_tag('scripts', :plugin => 'foo) # => picks scripts.js from plugin's assets # def javascript_include_tag(*sources) options = sources.last.is_a?(Hash) ? sources.pop : {} if plugin = options.delete(:plugin) sources = sources.map do |source| if plugin "plugin_assets/#{plugin}/#{source}" else source end end end super(*sources, options) end def sidebar_content? content_for?(:sidebar) || view_layouts_base_sidebar_hook_response.present? end def view_layouts_base_sidebar_hook_response @view_layouts_base_sidebar_hook_response ||= call_hook(:view_layouts_base_sidebar) end def email_delivery_enabled? !!ActionMailer::Base.perform_deliveries end def sanitize_anchor_name(anchor) anchor.gsub(%r{[^\s\-\p{Word}]}, '').gsub(%r{\s+(\-+\s*)?}, '-') end # Returns the javascript tags that are included in the html layout head def javascript_heads tags = javascript_include_tag( 'jquery-3.7.1-ui-1.13.3', 'rails-ujs', 'tribute-5.1.3.min', 'tablesort-5.2.1.min.js', 'tablesort-5.2.1.number.min.js', 'application', 'responsive' ) unless User.current.pref.warn_on_leaving_unsaved == '0' warn_text = escape_javascript(l(:text_warn_on_leaving_unsaved)) tags << "\n".html_safe + javascript_tag( "$(window).on('load', function(){ warnLeavingUnsaved('#{warn_text}'); });" ) end tags end def favicon favicon_link_tag(favicon_path, rel: "shortcut icon") end # Returns the path to the favicon def favicon_path icon = (current_theme && current_theme.favicon?) ? current_theme.favicon_path : 'favicon.ico' image_path(icon) end # Returns the full URL to the favicon def favicon_url image_url(favicon_path) end def robot_exclusion_tag ''.html_safe end # Returns true if arg is expected in the API response def include_in_api_response?(arg) unless @included_in_api_response param = params[:include] @included_in_api_response = param.is_a?(Array) ? param.collect(&:to_s) : param.to_s.split(',') @included_in_api_response.collect!(&:strip) end @included_in_api_response.include?(arg.to_s) end # Returns options or nil if nometa param or X-Redmine-Nometa header # was set in the request def api_meta(options) if params[:nometa].present? || request.headers['X-Redmine-Nometa'] # compatibility mode for activeresource clients that raise # an error when deserializing an array with attributes nil else options end end def export_csv_encoding_select_tag return if l(:general_csv_encoding).casecmp('UTF-8') == 0 options = ['UTF-8', l(:general_csv_encoding)] content_tag(:p) do concat( content_tag(:label) do concat "#{l(:label_encoding)} " concat select_tag('encoding', options_for_select(options, 'UTF-8')) end ) end end def export_csv_separator_select_tag options = [[l(:label_comma_char), ','], [l(:label_semi_colon_char), ';']] # Add the separator from translations if it is missing general_csv_separator = l(:general_csv_separator) unless options.index { |option| option.last == general_csv_separator } options << Array.new(2, general_csv_separator) end content_tag(:p) do concat( content_tag(:label) do concat l(:label_fields_separator) + ' ' concat select_tag('field_separator', options_for_select(options, general_csv_separator)) end ) end end # Returns an array of error messages for bulk edited items (issues, time entries) def bulk_edit_error_messages(items) messages = {} items.each do |item| item.errors.full_messages.each do |message| messages[message] ||= [] messages[message] << item end end messages.map do |message, items| "#{message}: " + items.map {|i| "##{i.id}"}.join(', ') end end def render_if_exist(options = {}, locals = {}, &) # Remove test_render_if_exist_should_be_render_partial and test_render_if_exist_should_be_render_nil # along with this method in Redmine 7.0 Rails.application.deprecators[:redmine].warn 'ApplicationHelper#render_if_exist is deprecated and will be removed in Redmine 7.0.' if options[:partial] if lookup_context.exists?(options[:partial], lookup_context.prefixes, true) render(options, locals, &) end else render(options, locals, &) end end def heads_for_auto_complete(project) data_sources = autocomplete_data_sources(project) javascript_tag( "rm = window.rm || {};" \ "rm.AutoComplete = rm.AutoComplete || {};" \ "rm.AutoComplete.dataSources = JSON.parse('#{data_sources.to_json}');" ) end def update_data_sources_for_auto_complete(data_sources) javascript_tag( "rm.AutoComplete.dataSources = Object.assign(rm.AutoComplete.dataSources, JSON.parse('#{data_sources.to_json}'));" ) end def copy_object_url_link(url) link_to_function( sprite_icon('copy-link', l(:button_copy_link)), 'copyTextToClipboard(this);', class: 'icon icon-copy-link', data: {'clipboard-text' => url} ) end private def wiki_helper helper = Redmine::WikiFormatting.helper_for(Setting.text_formatting) extend helper return self end # remove double quotes if any def remove_double_quotes(identifier) name = identifier.gsub(%r{^"(.*)"$}, "\\1") return CGI.unescapeHTML(name) end def autocomplete_data_sources(project) { issues: auto_complete_issues_path(project_id: project, q: ''), wiki_pages: auto_complete_wiki_pages_path(project_id: project, q: ''), } end end redmine-6.0.5/app/helpers/attachments_helper.rb000066400000000000000000000072321500112024600215610ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AttachmentsHelper def container_attachments_edit_path(container) object_attachments_edit_path container.class.name.underscore.pluralize, container.id end def container_attachments_path(container) object_attachments_path container.class.name.underscore.pluralize, container.id end def container_attachments_download_path(container) object_attachments_download_path container.class.name.underscore.pluralize, container.id end # Displays view/delete links to the attachments of the given object # Options: # :author -- author names are not displayed if set to false # :thumbails -- display thumbnails if enabled in settings def link_to_attachments(container, options = {}) options.assert_valid_keys(:author, :thumbnails) attachments = if container.attachments.loaded? container.attachments else container.attachments.preload(:author).to_a end if attachments.any? options = { :editable => container.attachments_editable?, :deletable => container.attachments_deletable?, :author => true }.merge(options) render :partial => 'attachments/links', :locals => { :container => container, :attachments => attachments, :options => options, :thumbnails => (options[:thumbnails] && Setting.thumbnails_enabled?) } end end def render_pagination pagination_links_each @paginator do |text, parameters, options| if att = @attachments[parameters[:page] - 1] link_to text, named_attachment_path(att, att.filename) end end if @paginator end def render_api_attachment(attachment, api, options={}) api.attachment do render_api_attachment_attributes(attachment, api) options.each_key {|key| eval("api.#{key} value")} end end def render_api_attachment_attributes(attachment, api) api.id attachment.id api.filename attachment.filename api.filesize attachment.filesize api.content_type attachment.content_type api.description attachment.description api.content_url download_named_attachment_url(attachment, attachment.filename) if attachment.thumbnailable? api.thumbnail_url thumbnail_url(attachment) end if attachment.author api.author(:id => attachment.author.id, :name => attachment.author.name) end api.created_on attachment.created_on end def render_file_content(attachment, content) if attachment.is_markdown? render :partial => 'common/markup', :locals => {:markup_text_formatting => 'common_mark', :markup_text => content} elsif attachment.is_textile? render :partial => 'common/markup', :locals => {:markup_text_formatting => 'textile', :markup_text => content} else render :partial => 'common/file', :locals => {:content => content, :filename => attachment.filename} end end end redmine-6.0.5/app/helpers/auth_sources_helper.rb000066400000000000000000000016651500112024600217560ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AuthSourcesHelper def auth_source_partial_name(auth_source) "form_#{auth_source.class.name.underscore}" end end redmine-6.0.5/app/helpers/avatars_helper.rb000066400000000000000000000052611500112024600207070ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module AvatarsHelper include GravatarHelper::PublicMethods def assignee_avatar(user, options={}) return '' unless user options[:title] = l(:field_assigned_to) + ": " + user.name avatar(user, options).to_s.html_safe end def author_avatar(user, options={}) return '' unless user options[:title] = l(:field_author) + ": " + user.name avatar(user, options).to_s.html_safe end # Returns the avatar image tag for the given +user+ if avatars are enabled # +user+ can be a User or a string that will be scanned for an email address (eg. 'joe ') def avatar(user, options = {}) if Setting.gravatar_enabled? options[:default] = Setting.gravatar_default options[:class] = GravatarHelper::DEFAULT_OPTIONS[:class] + " " + options[:class] if options[:class] email = nil if user.respond_to?(:mail) email = user.mail options[:title] = user.name unless options[:title] elsif user.to_s =~ %r{<(.+?)>} email = $1 end if email.present? gravatar(email.to_s.downcase, options) rescue nil elsif user.is_a?(AnonymousUser) anonymous_avatar(options) elsif user.is_a?(Group) group_avatar(options) else nil end else '' end end # Returns a link to edit user's avatar if avatars are enabled def avatar_edit_link(user, options={}) if Setting.gravatar_enabled? url = Redmine::Configuration['avatar_server_url'] link_to avatar(user, {:title => l(:button_edit)}.merge(options)), url, :target => '_blank' end end private def anonymous_avatar(options={}) image_tag 'anonymous.png', GravatarHelper::DEFAULT_OPTIONS.except(:default, :rating, :ssl).merge(options) end def group_avatar(options={}) image_tag 'group.png', GravatarHelper::DEFAULT_OPTIONS.except(:default, :rating, :ssl).merge(options) end end redmine-6.0.5/app/helpers/boards_helper.rb000066400000000000000000000027441500112024600205230ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module BoardsHelper def board_breadcrumb(item) board = item.is_a?(Message) ? item.board : item links = [link_to(l(:label_board_plural), project_boards_path(item.project))] boards = board.ancestors.reverse if item.is_a?(Message) boards << board end links += boards.map {|ancestor| link_to(h(ancestor.name), project_board_path(ancestor.project, ancestor))} breadcrumb links end def boards_options_for_select(boards) options = [] Board.board_tree(boards) do |board, level| label = (level > 0 ? ' ' * 2 * level + '» ' : '').html_safe label << board.name options << [label, board.id] end options end end redmine-6.0.5/app/helpers/context_menus_helper.rb000066400000000000000000000043701500112024600221410ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ContextMenusHelper def context_menu_link(name, url, options={}) label = name css_classes = [options[:class]] if options.delete(:selected) css_classes << 'icon disabled' options[:disabled] = true label = sprite_icon('checked', name) end if options.delete(:disabled) options.delete(:method) options.delete(:data) options[:onclick] = 'return false;' css_classes << 'disabled' url = '#' end options[:class] = class_names(css_classes) link_to label, url, options end def bulk_update_custom_field_context_menu_link(field, text, value) context_menu_link( h(text), _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'custom_field_values' => {field.id => value}}, :back_url => @back), :method => :patch, :selected => (@issue && @issue.custom_field_value(field) == value) ) end def bulk_update_time_entry_custom_field_context_menu_link(field, text, value) context_menu_link( h(text), bulk_update_time_entries_path(:ids => @time_entries.map(&:id).sort, :time_entry => {'custom_field_values' => {field.id => value}}, :back_url => @back), :method => :post, :selected => (@time_entry && @time_entry.custom_field_value(field) == value) ) end end redmine-6.0.5/app/helpers/custom_fields_helper.rb000066400000000000000000000200251500112024600221010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module CustomFieldsHelper CUSTOM_FIELDS_TABS = [ {:name => 'IssueCustomField', :partial => 'custom_fields/index', :label => :label_issue_plural}, {:name => 'TimeEntryCustomField', :partial => 'custom_fields/index', :label => :label_spent_time}, {:name => 'ProjectCustomField', :partial => 'custom_fields/index', :label => :label_project_plural}, {:name => 'VersionCustomField', :partial => 'custom_fields/index', :label => :label_version_plural}, {:name => 'DocumentCustomField', :partial => 'custom_fields/index', :label => :label_document_plural}, {:name => 'UserCustomField', :partial => 'custom_fields/index', :label => :label_user_plural}, {:name => 'GroupCustomField', :partial => 'custom_fields/index', :label => :label_group_plural}, {:name => 'TimeEntryActivityCustomField', :partial => 'custom_fields/index', :label => TimeEntryActivity::OptionName}, {:name => 'IssuePriorityCustomField', :partial => 'custom_fields/index', :label => IssuePriority::OptionName}, {:name => 'DocumentCategoryCustomField', :partial => 'custom_fields/index', :label => DocumentCategory::OptionName} ] def render_custom_fields_tabs(types) tabs = CUSTOM_FIELDS_TABS.select {|h| types.include?(h[:name])} render_tabs tabs end def custom_field_type_options CUSTOM_FIELDS_TABS.map {|h| [l(h[:label]), h[:name]]} end def custom_field_title(custom_field) items = [] items << [l(:label_custom_field_plural), custom_fields_path] items << [l(custom_field.type_name), custom_fields_path(:tab => custom_field.class.name)] if custom_field items << (custom_field.nil? || custom_field.new_record? ? l(:label_custom_field_new) : custom_field.name) title(*items) end def render_custom_field_format_partial(form, custom_field) partial = custom_field.format.form_partial if partial render :partial => custom_field.format.form_partial, :locals => {:f => form, :custom_field => custom_field} end end def custom_field_tag_name(prefix, custom_field) name = "#{prefix}[custom_field_values][#{custom_field.id}]" name += "[]" if custom_field.multiple? name end def custom_field_tag_id(prefix, custom_field) "#{prefix}_custom_field_values_#{custom_field.id}" end # Return custom field html tag corresponding to its format def custom_field_tag(prefix, custom_value) cf = custom_value.custom_field css = cf.css_classes placeholder = cf.description placeholder&.tr!("\n", ' ') if cf.field_format != 'text' data = nil if cf.full_text_formatting? css += ' wiki-edit' data = { :auto_complete => true } end cf.format.edit_tag( self, custom_field_tag_id(prefix, cf), custom_field_tag_name(prefix, cf), custom_value, :class => css, :placeholder => placeholder, :data => data) end # Return custom field name tag def custom_field_name_tag(custom_field) title = custom_field.description.presence css = title ? "field-description" : nil content_tag 'span', custom_field.name, :title => title, :class => css end # Return custom field label tag def custom_field_label_tag(name, custom_value, options={}) required = options[:required] || custom_value.custom_field.is_required? for_tag_id = options.fetch(:for_tag_id, "#{name}_custom_field_values_#{custom_value.custom_field.id}") content = custom_field_name_tag custom_value.custom_field content_tag( "label", content + (required ? " *".html_safe : ""), :for => for_tag_id, :class => custom_value.customized && custom_value.customized.errors[custom_value.custom_field.name].present? ? 'error' : nil) end # Return custom field tag with its label tag def custom_field_tag_with_label(name, custom_value, options={}) tag = custom_field_tag(name, custom_value) tag_id = nil ids = tag.scan(/ id="(.+?)"/) if ids.size == 1 tag_id = ids.first.first end custom_field_label_tag(name, custom_value, options.merge(:for_tag_id => tag_id)) + tag end # Returns the custom field tag for when bulk editing objects def custom_field_tag_for_bulk_edit(prefix, custom_field, objects=nil, value='') css = custom_field.css_classes data = nil if custom_field.full_text_formatting? css += ' wiki-edit' data = { :auto_complete => true } end custom_field.format.bulk_edit_tag( self, custom_field_tag_id(prefix, custom_field), custom_field_tag_name(prefix, custom_field), custom_field, objects, value, :class => css, :data => data) end # Returns custom field value tag def custom_field_value_tag(value) attr_value = show_value(value) if attr_value.present? && value.custom_field.full_text_formatting? content_tag('div', attr_value, :class => 'wiki') else attr_value end end # Return a string used to display a custom value def show_value(custom_value, html=true) format_object(custom_value, html: html) end # Return a string used to display a custom value def format_value(value, custom_field) format_object(custom_field.format.formatted_value(self, custom_field, value, false), html: false) end # Return an array of custom field formats which can be used in select_tag def custom_field_formats_for_select(custom_field) Redmine::FieldFormat.as_select(custom_field.class.customized_class.name) end # Yields the given block for each custom field value of object that should be # displayed, with the custom field and the formatted value as arguments def render_custom_field_values(object, &) object.visible_custom_field_values.each do |custom_value| formatted = show_value(custom_value) if formatted.present? yield custom_value.custom_field, formatted end end end # Renders the custom_values in api views def render_api_custom_values(custom_values, api) api.array :custom_fields do custom_values.each do |custom_value| attrs = {:id => custom_value.custom_field_id, :name => custom_value.custom_field.name} attrs[:multiple] = true if custom_value.custom_field.multiple? api.custom_field attrs do if custom_value.value.is_a?(Array) api.array :value do custom_value.value.each do |value| api.value value unless value.blank? end end else api.value custom_value.value end end end end unless custom_values.empty? end def edit_tag_style_tag(form, options={}) select_options = [[l(:label_drop_down_list), ''], [l(:label_checkboxes), 'check_box']] if options[:include_radio] select_options << [l(:label_radio_buttons), 'radio'] end form.select :edit_tag_style, select_options, :label => :label_display end def select_type_radio_buttons(default_type) if CUSTOM_FIELDS_TABS.none? {|tab| tab[:name] == default_type} default_type = 'IssueCustomField' end custom_field_type_options.map do |name, type| content_tag(:label, :style => 'display:block;') do radio_button_tag('type', type, type == default_type) + name end end.join("\n").html_safe end end redmine-6.0.5/app/helpers/documents_helper.rb000066400000000000000000000015211500112024600212420ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module DocumentsHelper end redmine-6.0.5/app/helpers/email_addresses_helper.rb000066400000000000000000000031041500112024600223640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module EmailAddressesHelper # Returns a link to enable or disable notifications for the address def toggle_email_address_notify_link(address) if address.notify? link_to( sprite_icon('email', l(:label_disable_notifications)), user_email_address_path(address.user, address, :notify => '0'), :method => :put, :remote => true, :title => l(:label_disable_notifications), :class => 'icon-only icon-email') else link_to( sprite_icon('email-disabled', l(:label_enable_notifications)), user_email_address_path(address.user, address, :notify => '1'), :method => :put, :remote => true, :title => l(:label_enable_notifications), :class => 'icon-only icon-email-disabled') end end end redmine-6.0.5/app/helpers/enumerations_helper.rb000066400000000000000000000015241500112024600217550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module EnumerationsHelper end redmine-6.0.5/app/helpers/gantt_helper.rb000066400000000000000000000032261500112024600203620ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module GanttHelper def gantt_zoom_link(gantt, in_or_out) case in_or_out when :in if gantt.zoom < 4 link_to( sprite_icon('zoom-in', l(:text_zoom_in)), {:params => request.query_parameters.merge(gantt.params.merge(:zoom => (gantt.zoom + 1)))}, :class => 'icon icon-zoom-in') else content_tag(:span, sprite_icon('zoom-in', l(:text_zoom_in)), :class => 'icon icon-zoom-in').html_safe end when :out if gantt.zoom > 1 link_to( sprite_icon('zoom-out', l(:text_zoom_out)), {:params => request.query_parameters.merge(gantt.params.merge(:zoom => (gantt.zoom - 1)))}, :class => 'icon icon-zoom-out') else content_tag(:span, sprite_icon('zoom-out', l(:text_zoom_out)), :class => 'icon icon-zoom-out').html_safe end end end end redmine-6.0.5/app/helpers/groups_helper.rb000066400000000000000000000042031500112024600205600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module GroupsHelper def group_settings_tabs(group) tabs = [] tabs << {:name => 'general', :partial => 'groups/general', :label => :label_general} tabs << {:name => 'users', :partial => 'groups/users', :label => :label_user_plural} if group.givable? tabs << {:name => 'memberships', :partial => 'groups/memberships', :label => :label_project_plural} tabs end def render_principals_for_new_group_users(group, limit=100) scope = User.active.sorted.not_in_group(group).like(params[:q]) principal_count = scope.count principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).to_a s = content_tag( 'div', content_tag('div', principals_check_box_tags('user_ids[]', principals), :id => 'principals'), :class => 'objects-selection' ) links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) do |text, parameters, options| link_to( text, autocomplete_for_user_group_path( group, parameters.merge(:q => params[:q], :format => 'js') ), :remote => true ) end s + content_tag('span', links, :class => 'pagination') end end redmine-6.0.5/app/helpers/icons_helper.rb000066400000000000000000000073201500112024600203570ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module IconsHelper DEFAULT_ICON_SIZE = "18" DEFAULT_SPRITE = "icons" def sprite_icon(icon_name, label = nil, icon_only: false, size: DEFAULT_ICON_SIZE, css_class: nil, sprite: DEFAULT_SPRITE, plugin: nil, rtl: false) sprite = plugin ? "plugin_assets/#{plugin}/#{sprite}.svg" : "#{sprite}.svg" svg_icon = svg_sprite_icon(icon_name, size: size, css_class: css_class, sprite: sprite, rtl: rtl) if label label_classes = ["icon-label"] label_classes << "hidden" if icon_only svg_icon + content_tag(:span, label, class: label_classes.join(' ')) else svg_icon end end def file_icon(entry, name, **options) if entry.is_dir? sprite_icon("folder", name, **options) else icon_name = icon_for_mime_type(Redmine::MimeType.css_class_of(name)) sprite_icon(icon_name, name, **options) end end def principal_icon(principal, **options) raise ArgumentError, "First argument has to be a Principal, was #{principal.inspect}" unless principal.is_a?(Principal) principal_class = principal.class.name.downcase sprite_icon('group', **options) if ['groupanonymous', 'groupnonmember', 'group'].include?(principal_class) end def activity_event_type_icon(event_type, **options) icon_name = case event_type when 'reply' 'comments' when 'time-entry' 'time' when 'message' 'comment' else event_type end sprite_icon(icon_name, **options) end def scm_change_icon(action, name, **options) icon_name = case action when 'A' "add" when 'D' "circle-minus" else "circle-dot-filled" end sprite_icon(icon_name, name, size: 14) end def notice_icon(type, **options) icon_name = case type when 'notice' 'checked' when 'warning', 'error' 'warning' end sprite_icon(icon_name, **options) end private def svg_sprite_icon(icon_name, size: DEFAULT_ICON_SIZE, sprite: DEFAULT_SPRITE, css_class: nil, rtl: false) css_classes = "s#{size} icon-svg" css_classes += " #{css_class}" unless css_class.nil? css_classes += " icon-rtl" if rtl content_tag( :svg, content_tag(:use, '', { 'href' => "#{asset_path(sprite)}#icon--#{icon_name}" }), class: css_classes, aria: { hidden: true } ) end def icon_for_mime_type(mime) if %w(text-plain text-x-c text-x-csharp text-x-java text-x-php text-x-ruby text-xml text-css text-html text-css text-html image-gif image-jpeg image-png image-tiff application-pdf application-zip application-gzip application-javascript).include?(mime) mime else "file" end end end redmine-6.0.5/app/helpers/imports_helper.rb000066400000000000000000000040311500112024600207350ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ImportsHelper def import_title l(:"label_import_#{import_partial_prefix}") end def import_partial_prefix @import.class.name.sub('Import', '').underscore.pluralize end def options_for_mapping_select(import, field, options={}) tags = "".html_safe blank_text = options[:required] ? "-- #{l(:actionview_instancetag_blank_option)} --" : " ".html_safe tags << content_tag('option', blank_text, :value => '') tags << options_for_select(import.columns_options, import.mapping[field]) if values = options[:values] tags << content_tag('option', '--', :disabled => true) tags << options_for_select(values.map {|text, value| [text, "value:#{value}"]}, import.mapping[field] || options[:default_value]) end tags end def mapping_select_tag(import, field, options={}) name = "import_settings[mapping][#{field}]" select_tag name, options_for_mapping_select(import, field, options), :id => "import_mapping_#{field}" end # Returns the options for the date_format setting def date_format_options Import::DATE_FORMATS.map do |f| format = f.delete('%').gsub(/[dmY]/) do {'d' => 'DD', 'm' => 'MM', 'Y' => 'YYYY'}[$&] end [format, f] end end end redmine-6.0.5/app/helpers/issue_categories_helper.rb000066400000000000000000000015271500112024600226040ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module IssueCategoriesHelper end redmine-6.0.5/app/helpers/issue_relations_helper.rb000066400000000000000000000026371500112024600224620ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module IssueRelationsHelper def collection_for_relation_type_select values = IssueRelation::TYPES values.keys.sort_by{|k| values[k][:order]}.collect{|k| [l(values[k][:name]), k]} end def relation_error_messages(relations) messages = {} relations.each do |item| item.errors.full_messages.each do |message| messages[message] ||= [] messages[message] << item end end messages.map do |message, items| ids = items.filter_map(&:issue_to_id) if ids.empty? message else "#{message}: ##{ids.join(', ')}" end end end end redmine-6.0.5/app/helpers/issue_statuses_helper.rb000066400000000000000000000021251500112024600223250ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module IssueStatusesHelper def issue_status_type_badge(status) if status.is_closed? content_tag('span', l(:label_closed_issues), class: 'badge badge-status-closed') else content_tag('span', l(:label_open_issues), class: 'badge badge-status-open') end end end redmine-6.0.5/app/helpers/issues_helper.rb000066400000000000000000000671131500112024600205650ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module IssuesHelper include ApplicationHelper include Redmine::Export::PDF::IssuesPdfHelper include IssueStatusesHelper def issue_list(issues, &) ancestors = [] issues.each do |issue| while ancestors.any? && !issue.is_descendant_of?(ancestors.last) ancestors.pop end yield issue, ancestors.size ancestors << issue unless issue.leaf? end end def grouped_issue_list(issues, query, &) ancestors = [] grouped_query_results(issues, query) do |issue, group_name, group_count, group_totals| while ancestors.any? && !issue.is_descendant_of?(ancestors.last) ancestors.pop end yield issue, ancestors.size, group_name, group_count, group_totals ancestors << issue unless issue.leaf? end end # Renders a HTML/CSS tooltip # # To use, a trigger div is needed. This is a div with the class of "tooltip" # that contains this method wrapped in a span with the class of "tip" # #
    <%= link_to_issue(issue) %> # <%= render_issue_tooltip(issue) %> #
    # def render_issue_tooltip(issue) @cached_label_status ||= l(:field_status) @cached_label_start_date ||= l(:field_start_date) @cached_label_due_date ||= l(:field_due_date) @cached_label_assigned_to ||= l(:field_assigned_to) @cached_label_priority ||= l(:field_priority) @cached_label_project ||= l(:field_project) link_to_issue(issue) + "

    ".html_safe + "#{@cached_label_project}: #{link_to_project(issue.project)}
    ".html_safe + "#{@cached_label_status}: #{h(issue.status.name) + (" (#{format_date(issue.closed_on)})" if issue.closed?)}
    ".html_safe + "#{@cached_label_start_date}: #{format_date(issue.start_date)}
    ".html_safe + "#{@cached_label_due_date}: #{format_date(issue.due_date)}
    ".html_safe + "#{@cached_label_assigned_to}: #{avatar(issue.assigned_to, :size => '13', :title => l(:field_assigned_to)) if issue.assigned_to} #{h(issue.assigned_to)}
    ".html_safe + "#{@cached_label_priority}: #{h(issue.priority.name)}".html_safe end def issue_heading(issue) h("#{issue.tracker} ##{issue.id}") end def render_issue_subject_with_tree(issue) s = +'' ancestors = issue.root? ? [] : issue.ancestors.visible.to_a ancestors.each do |ancestor| s << '
    ' + content_tag('p', link_to_issue(ancestor, :project => (issue.project_id != ancestor.project_id))) end s << '
    ' subject = h(issue.subject) s << content_tag('h3', subject) s << '
    ' * (ancestors.size + 1) s.html_safe end def render_descendants_tree(issue) manage_relations = User.current.allowed_to?(:manage_subtasks, issue.project) s = +'' issue_list( issue.descendants.visible. preload(:status, :priority, :tracker, :assigned_to).sort_by(&:lft)) do |child, level| css = "issue issue-#{child.id} hascontextmenu #{child.css_classes}" css << " idnt idnt-#{level}" if level > 0 buttons = if manage_relations link_to( sprite_icon('link-break', l(:label_delete_link_to_subtask)), issue_path( {:id => child.id, :issue => {:parent_issue_id => ''}, :back_url => issue_path(issue.id), :no_flash => '1'} ), :method => :put, :data => {:confirm => l(:text_are_you_sure)}, :title => l(:label_delete_link_to_subtask), :class => 'icon-only icon-link-break' ) else "".html_safe end buttons << link_to_context_menu s << content_tag( 'tr', content_tag('td', check_box_tag("ids[]", child.id, false, :id => nil), :class => 'checkbox') + content_tag('td', link_to_issue( child, :project => (issue.project_id != child.project_id)), :class => 'subject') + content_tag('td', h(child.status), :class => 'status') + content_tag('td', link_to_user(child.assigned_to), :class => 'assigned_to') + content_tag('td', format_date(child.start_date), :class => 'start_date') + content_tag('td', format_date(child.due_date), :class => 'due_date') + content_tag('td', (if child.disabled_core_fields.include?('done_ratio') '' else progress_bar(child.done_ratio) end), :class=> 'done_ratio') + content_tag('td', buttons, :class => 'buttons'), :class => css) end s << '
    ' s.html_safe end # Renders descendants stats (total descendants (open - closed)) with query links def render_descendants_stats(issue) # Get issue descendants grouped by status type (open/closed) using a single query subtasks_grouped = issue.descendants.visible.joins(:status).select(:is_closed, :id).group(:is_closed).reorder(:is_closed).count(:id) # Cast keys to boolean in order to have consistent results between database types subtasks_grouped.transform_keys! {|k| ActiveModel::Type::Boolean.new.cast(k)} open_subtasks = subtasks_grouped[false].to_i closed_subtasks = subtasks_grouped[true].to_i render_issues_stats(open_subtasks, closed_subtasks, {:parent_id => "~#{issue.id}"}) end # Renders relations stats (total relations (open - closed)) with query links def render_relations_stats(issue, relations) open_relations = relations.count{|r| r.other_issue(issue).closed? == false} closed_relations = relations.count{|r| r.other_issue(issue).closed?} render_issues_stats(open_relations, closed_relations, {:issue_id => relations.map{|r| r.other_issue(issue).id}.join(',')}) end # Renders issues stats (total relations (open - closed)) with query links def render_issues_stats(open_issues=0, closed_issues=0, issues_path_attr={}) total_issues = open_issues + closed_issues return if total_issues == 0 all_block = content_tag( 'span', link_to(total_issues, issues_path(issues_path_attr.merge({:set_filter => true, :status_id => '*'}))), class: 'badge badge-issues-count' ) closed_block = content_tag( 'span', link_to_if( closed_issues > 0, l(:label_x_closed_issues_abbr, count: closed_issues), issues_path(issues_path_attr.merge({:set_filter => true, :status_id => 'c'})) ), class: 'closed' ) open_block = content_tag( 'span', link_to_if( open_issues > 0, l(:label_x_open_issues_abbr, :count => open_issues), issues_path(issues_path_attr.merge({:set_filter => true, :status_id => 'o'})) ), class: 'open' ) content_tag( 'span', "#{all_block} (#{open_block} — #{closed_block})".html_safe, :class => 'issues-stat' ) end # Renders the list of related issues on the issue details view def render_issue_relations(issue, relations) manage_relations = User.current.allowed_to?(:manage_issue_relations, issue.project) s = ''.html_safe relations.each do |relation| other_issue = relation.other_issue(issue) css = "issue hascontextmenu #{other_issue.css_classes} #{relation.css_classes_for(other_issue)}" buttons = if manage_relations link_to( sprite_icon('link-break', l(:label_relation_delete)), relation_path(relation, issue_id: issue.id), :remote => true, :method => :delete, :data => {:confirm => l(:text_are_you_sure)}, :title => l(:label_relation_delete), :class => 'icon-only icon-link-break' ) else "".html_safe end buttons << link_to_context_menu s << content_tag( 'tr', content_tag('td', check_box_tag( "ids[]", other_issue.id, false, :id => nil), :class => 'checkbox') + content_tag('td', relation.to_s(@issue) do |other| link_to_issue( other, :project => Setting.cross_project_issue_relations? ) end.html_safe, :class => 'subject') + content_tag('td', other_issue.status, :class => 'status') + content_tag('td', link_to_user(other_issue.assigned_to), :class => 'assigned_to') + content_tag('td', format_date(other_issue.start_date), :class => 'start_date') + content_tag('td', format_date(other_issue.due_date), :class => 'due_date') + content_tag('td', (if other_issue.disabled_core_fields.include?('done_ratio') '' else progress_bar(other_issue.done_ratio) end), :class=> 'done_ratio') + content_tag('td', buttons, :class => 'buttons'), :id => "relation-#{relation.id}", :class => css) end content_tag('table', s, :class => 'list issues odd-even') end def issue_estimated_hours_details(issue) if issue.total_estimated_hours.present? if issue.total_estimated_hours == issue.estimated_hours l_hours_short(issue.estimated_hours) else s = issue.estimated_hours.present? ? l_hours_short(issue.estimated_hours) : "" s += " (#{l(:label_total)}: #{l_hours_short(issue.total_estimated_hours)})" s.html_safe end end end def issue_spent_hours_details(issue) if issue.total_spent_hours > 0 path = project_time_entries_path(issue.project, :issue_id => "~#{issue.id}") if issue.total_spent_hours == issue.spent_hours link_to(l_hours_short(issue.spent_hours), path) else # link to global time entries if cross-project subtasks are allowed # in order to show time entries from not descendents projects if %w(system tree hierarchy).include?(Setting.cross_project_subtasks) path = time_entries_path(:issue_id => "~#{issue.id}") end s = issue.spent_hours > 0 ? l_hours_short(issue.spent_hours) : "" s += " (#{l(:label_total)}: #{link_to l_hours_short(issue.total_spent_hours), path})" s.html_safe end end end def issue_due_date_details(issue) return if issue&.due_date.nil? s = format_date(issue.due_date) s += " (#{due_date_distance_in_words(issue.due_date)})" unless issue.closed? s end # Returns a link for adding a new subtask to the given issue def link_to_new_subtask(issue) link_to(l(:button_add), url_for_new_subtask(issue)) end def url_for_new_subtask(issue) attrs = { :parent_issue_id => issue } attrs[:tracker_id] = issue.tracker unless issue.tracker.disabled_core_fields.include?('parent_issue_id') params = {:issue => attrs} params[:back_url] = issue_path(issue) if controller_name == 'issues' && action_name == 'show' new_project_issue_path(issue.project, params) end def trackers_options_for_select(issue) trackers = trackers_for_select(issue) trackers.collect {|t| [t.name, t.id]} end def trackers_for_select(issue) trackers = issue.allowed_target_trackers if issue.new_record? && issue.parent_issue_id.present? trackers = trackers.reject do |tracker| issue.tracker_id != tracker.id && tracker.disabled_core_fields.include?('parent_issue_id') end end trackers end class IssueFieldsRows include ActionView::Helpers::TagHelper def initialize @left = [] @right = [] end def left(*args) args.any? ? @left << cells(*args) : @left end def right(*args) args.any? ? @right << cells(*args) : @right end def size [@left.size, @right.size].max end def to_html # rubocop:disable Performance/Sum content = content_tag('div', @left.reduce(&:+), :class => 'splitcontentleft') + content_tag('div', @right.reduce(&:+), :class => 'splitcontentleft') # rubocop:enable Performance/Sum content_tag('div', content, :class => 'splitcontent') end def cells(label, text, options={}) options[:class] = [options[:class] || "", 'attribute'].join(' ') content_tag( 'div', content_tag('div', label + ":", :class => 'label') + content_tag('div', text, :class => 'value'), options) end end def issue_fields_rows r = IssueFieldsRows.new yield r r.to_html end def render_half_width_custom_fields_rows(issue) values = issue.visible_custom_field_values.reject {|value| value.custom_field.full_width_layout?} return if values.empty? half = (values.size / 2.0).ceil issue_fields_rows do |rows| values.each_with_index do |value, i| m = (i < half ? :left : :right) rows.send m, custom_field_name_tag(value.custom_field), custom_field_value_tag(value), :class => value.custom_field.css_classes end end end def render_full_width_custom_fields_rows(issue) values = issue.visible_custom_field_values.select {|value| value.custom_field.full_width_layout?} return if values.empty? s = ''.html_safe values.each_with_index do |value, i| attr_value_tag = custom_field_value_tag(value) next if attr_value_tag.blank? content = content_tag('hr') + content_tag('p', content_tag('strong', custom_field_name_tag(value.custom_field))) + content_tag('div', attr_value_tag, class: 'value') s << content_tag('div', content, class: "#{value.custom_field.css_classes} attribute") end s end # Returns the path for updating the issue form # with project as the current project def update_issue_form_path(project, issue) options = {:format => 'js'} if issue.new_record? if project new_project_issue_path(project, options) else new_issue_path(options) end else edit_issue_path(issue, options) end end # Returns the number of descendants for an array of issues def issues_descendant_count(issues) ids = issues.reject(&:leaf?).map {|issue| issue.descendants.ids}.flatten.uniq ids -= issues.map(&:id) ids.size end def issues_destroy_confirmation_message(issues) issues = [issues] unless issues.is_a?(Array) message = l(:text_issues_destroy_confirmation) descendant_count = issues_descendant_count(issues) if descendant_count > 0 message << "\n" + l(:text_issues_destroy_descendants_confirmation, :count => descendant_count) end message end # Returns an array of users that are proposed as watchers # on the new issue form def users_for_new_issue_watchers(issue) users = issue.watcher_users.select{|u| u.status == User::STATUS_ACTIVE} assignable_watchers = issue.project.principals.assignable_watchers.limit(21) if assignable_watchers.size <= 20 users += assignable_watchers.sort end users.uniq end def email_issue_attributes(issue, user, html) items = [] %w(author status priority assigned_to category fixed_version start_date due_date parent_issue).each do |attribute| if issue.disabled_core_fields.grep(/^#{attribute}(_id)?$/).empty? attr_value = (issue.send attribute).to_s next if attr_value.blank? if html items << content_tag('strong', "#{l("field_#{attribute}")}: ") + attr_value else items << "#{l("field_#{attribute}")}: #{attr_value}" end end end issue.visible_custom_field_values(user).each do |value| cf_value = show_value(value, false) next if cf_value.blank? if html items << content_tag('strong', "#{value.custom_field.name}: ") + cf_value else items << "#{value.custom_field.name}: #{cf_value}" end end items end def render_email_issue_attributes(issue, user, html=false) items = email_issue_attributes(issue, user, html) if html content_tag('ul', items.map{|s| content_tag('li', s)}.join("\n").html_safe, :class => "details") else items.map{|s| "* #{s}"}.join("\n") end end MultipleValuesDetail = Struct.new(:property, :prop_key, :custom_field, :old_value, :value) # Returns the textual representation of a journal details # as an array of strings def details_to_strings(details, no_html=false, options={}) options[:only_path] = !(options[:only_path] == false) strings = [] values_by_field = {} details.each do |detail| if detail.property == 'cf' field = detail.custom_field if field && field.multiple? values_by_field[field] ||= {:added => [], :deleted => []} if detail.old_value values_by_field[field][:deleted] << detail.old_value end if detail.value values_by_field[field][:added] << detail.value end next end end strings << show_detail(detail, no_html, options) end if values_by_field.present? values_by_field.each do |field, changes| if changes[:added].any? detail = MultipleValuesDetail.new('cf', field.id.to_s, field) detail.value = changes[:added] strings << show_detail(detail, no_html, options) end if changes[:deleted].any? detail = MultipleValuesDetail.new('cf', field.id.to_s, field) detail.old_value = changes[:deleted] strings << show_detail(detail, no_html, options) end end end strings end # Returns the textual representation of a single journal detail def show_detail(detail, no_html=false, options={}) multiple = false show_diff = false no_details = false case detail.property when 'attr' field = detail.prop_key.to_s.delete_suffix('_id') label = l(("field_#{field}").to_sym) case detail.prop_key when 'due_date', 'start_date' value = format_date(detail.value.to_date) if detail.value old_value = format_date(detail.old_value.to_date) if detail.old_value when 'project_id', 'status_id', 'tracker_id', 'assigned_to_id', 'priority_id', 'category_id', 'fixed_version_id' value = find_name_by_reflection(field, detail.value) old_value = find_name_by_reflection(field, detail.old_value) when 'estimated_hours' value = l_hours_short(detail.value.to_f) unless detail.value.blank? old_value = l_hours_short(detail.old_value.to_f) unless detail.old_value.blank? when 'parent_id' label = l(:field_parent_issue) value = "##{detail.value}" unless detail.value.blank? old_value = "##{detail.old_value}" unless detail.old_value.blank? when 'child_id' label = l(:label_subtask) value = "##{detail.value}" unless detail.value.blank? old_value = "##{detail.old_value}" unless detail.old_value.blank? multiple = true when 'is_private' value = l(detail.value == "0" ? :general_text_No : :general_text_Yes) unless detail.value.blank? old_value = l(detail.old_value == "0" ? :general_text_No : :general_text_Yes) unless detail.old_value.blank? when 'description' show_diff = true end when 'cf' custom_field = detail.custom_field if custom_field label = custom_field.name if custom_field.format.class.change_no_details no_details = true elsif custom_field.format.class.change_as_diff show_diff = true else multiple = custom_field.multiple? value = format_value(detail.value, custom_field) if detail.value old_value = format_value(detail.old_value, custom_field) if detail.old_value end end when 'attachment' label = l(:label_attachment) when 'relation' if detail.value && !detail.old_value rel_issue = Issue.visible.find_by_id(detail.value) value = if rel_issue.nil? "#{l(:label_issue)} ##{detail.value}" else (no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path])) end elsif detail.old_value && !detail.value rel_issue = Issue.visible.find_by_id(detail.old_value) old_value = if rel_issue.nil? "#{l(:label_issue)} ##{detail.old_value}" else (no_html ? rel_issue : link_to_issue(rel_issue, :only_path => options[:only_path])) end end relation_type = IssueRelation::TYPES[detail.prop_key] label = l(relation_type[:name]) if relation_type end call_hook(:helper_issues_show_detail_after_setting, {:detail => detail, :label => label, :value => value, :old_value => old_value}) label ||= detail.prop_key value ||= detail.value old_value ||= detail.old_value unless no_html label = content_tag('strong', label) old_value = content_tag("i", h(old_value)) if detail.old_value if detail.old_value && detail.value.blank? && detail.property != 'relation' old_value = content_tag("del", old_value) end if detail.property == 'attachment' && value.present? && atta = detail.journal.journalized.attachments.detect {|a| a.id == detail.prop_key.to_i} # Link to the attachment if it has not been removed value = link_to_attachment(atta, only_path: options[:only_path]) if options[:only_path] != false value += ' ' value += link_to_attachment atta, class: 'icon-only icon-download', title: l(:button_download), download: true, icon: 'download' end else value = content_tag("i", h(value)) if value end end if no_details s = l(:text_journal_changed_no_detail, :label => label).html_safe elsif show_diff s = l(:text_journal_changed_no_detail, :label => label) unless no_html diff_link = link_to( l(:label_diff), diff_journal_url(detail.journal_id, :detail_id => detail.id, :only_path => options[:only_path]), :title => l(:label_view_diff)) s << " (#{diff_link})" end s.html_safe elsif detail.value.present? case detail.property when 'attr', 'cf' if detail.old_value.present? l(:text_journal_changed, :label => label, :old => old_value, :new => value).html_safe elsif multiple l(:text_journal_added, :label => label, :value => value).html_safe else l(:text_journal_set_to, :label => label, :value => value).html_safe end when 'attachment', 'relation' l(:text_journal_added, :label => label, :value => value).html_safe end else l(:text_journal_deleted, :label => label, :old => old_value).html_safe end end # Find the name of an associated record stored in the field attribute # For project, return the associated record only if is visible for the current User def find_name_by_reflection(field, id) return nil if id.blank? @detail_value_name_by_reflection ||= Hash.new do |hash, key| association = Issue.reflect_on_association(key.first.to_sym) name = nil if association record = association.klass.find_by_id(key.last) if (record && !record.is_a?(Project)) || (record.is_a?(Project) && record.visible?) name = record.name.force_encoding('UTF-8') end end hash[key] = name end @detail_value_name_by_reflection[[field, id]] end # Renders issue children recursively def render_api_issue_children(issue, api) return if issue.leaf? api.array :children do issue.children.each do |child| api.issue(:id => child.id) do api.tracker(:id => child.tracker_id, :name => child.tracker.name) unless child.tracker.nil? api.subject child.subject render_api_issue_children(child, api) end end end end # Issue history tabs def issue_history_tabs tabs = [] if @journals.present? has_details = @journals.any? {|value| value.details.present?} has_notes = @journals.any? {|value| value.notes.present?} tabs << { :name => 'history', :label => :label_history, :onclick => 'showIssueHistory("history", this.href)', :partial => 'issues/tabs/history', :locals => {:issue => @issue, :journals => @journals} } if has_notes tabs << { :name => 'notes', :label => :label_issue_history_notes, :onclick => 'showIssueHistory("notes", this.href)' } end if has_details tabs << { :name => 'properties', :label => :label_issue_history_properties, :onclick => 'showIssueHistory("properties", this.href)' } end end if User.current.allowed_to?(:view_time_entries, @project) && @issue.spent_hours > 0 tabs << { :name => 'time_entries', :label => :label_time_entry_plural, :remote => true, :onclick => "getRemoteTab('time_entries', " \ "'#{tab_issue_path(@issue, :name => 'time_entries')}', " \ "'#{issue_path(@issue, :tab => 'time_entries')}')" } end if @has_changesets tabs << { :name => 'changesets', :label => :label_associated_revisions, :remote => true, :onclick => "getRemoteTab('changesets', " \ "'#{tab_issue_path(@issue, :name => 'changesets')}', " \ "'#{issue_path(@issue, :tab => 'changesets')}')" } end tabs end def issue_history_default_tab # tab params overrides user default tab preference return params[:tab] if params[:tab].present? user_default_tab = User.current.pref.history_default_tab case user_default_tab when 'last_tab_visited' cookies['history_last_tab'].presence || 'notes' when '' 'notes' else user_default_tab end end def projects_for_select(issue) projects = if issue.parent_issue_id.present? issue.allowed_target_projects_for_subtask(User.current) elsif @project && issue.new_record? && !issue.copy? issue.allowed_target_projects(User.current, 'tree') else issue.allowed_target_projects(User.current) end if issue.read_only_attribute_names(User.current).include?('project_id') params['project_id'].present? ? Project.where(identifier: params['project_id']) : projects else projects end end end redmine-6.0.5/app/helpers/journals_helper.rb000066400000000000000000000072321500112024600211030ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module JournalsHelper include Redmine::QuoteReply::Helper # Returns the attachments of a journal that are displayed as thumbnails def journal_thumbnail_attachments(journal) journal.attachments.select(&:thumbnailable?) end # Returns the action links for an issue journal def render_journal_actions(issue, journal, options={}) links = [] dropbown_links = [] indice = journal.indice || @journal.issue.visible_journals_with_index.find{|j| j.id == @journal.id}.indice dropbown_links << copy_object_url_link(issue_url(issue, anchor: "note-#{indice}", only_path: false)) if journal.attachments.size > 1 dropbown_links << link_to(sprite_icon('download', l(:label_download_all_attachments)), container_attachments_download_path(journal), :title => l(:label_download_all_attachments), :class => 'icon icon-download' ) end if journal.notes.present? if options[:reply_links] url = quoted_issue_path(issue, :journal_id => journal, :journal_indice => indice) links << quote_reply(url, "#journal-#{journal.id}-notes", icon_only: true) end if journal.editable_by?(User.current) links << link_to(sprite_icon('edit', l(:button_edit)), edit_journal_path(journal), :remote => true, :method => 'get', :title => l(:button_edit), :class => 'icon-only icon-edit' ) dropbown_links << link_to(sprite_icon('del', l(:button_delete)), journal_path(journal, :journal => {:notes => ""}), :remote => true, :method => 'put', :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del' ) end end safe_join(links, ' ') + actions_dropdown {safe_join(dropbown_links, ' ')} end def render_notes(issue, journal, options={}) content_tag('div', textilizable(journal, :notes), :id => "journal-#{journal.id}-notes", :class => "wiki") end def render_private_notes_indicator(journal) content = journal.private_notes? ? l(:field_is_private) : '' css_classes = journal.private_notes? ? 'badge badge-private private' : '' content_tag('span', content.html_safe, :id => "journal-#{journal.id}-private_notes", :class => css_classes) end def render_journal_update_info(journal) return if journal.created_on == journal.updated_on content_tag('span', "· #{l(:label_edited)}", :title => l(:label_time_by_author, :time => format_time(journal.updated_on), :author => journal.updated_by), :class => 'update-info') end end redmine-6.0.5/app/helpers/mail_handler_helper.rb000066400000000000000000000015231500112024600216620ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MailHandlerHelper end redmine-6.0.5/app/helpers/members_helper.rb000066400000000000000000000045151500112024600207010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MembersHelper def render_principals_for_new_members(project, limit=100) scope = Principal.active.visible.sorted.not_member_of(project).like(params[:q]) principal_count = scope.count principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).to_a s = content_tag( 'div', content_tag( 'div', principals_check_box_tags('membership[user_ids][]', principals), :id => 'principals' ), :class => 'objects-selection' ) links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) do |text, parameters, options| link_to( text, autocomplete_project_memberships_path( project, parameters.merge(:q => params[:q], :format => 'js') ), :remote => true) end s + content_tag('span', links, :class => 'pagination') end # Returns inheritance information for an inherited member role def render_role_inheritance(member, role) content = member.role_inheritance(role).filter_map do |h| if h.is_a?(Project) l(:label_inherited_from_parent_project) elsif h.is_a?(Group) l(:label_inherited_from_group, :name => h.name.to_s) end end.uniq if content.present? content_tag('em', content.join(", "), :class => "info") end end end redmine-6.0.5/app/helpers/messages_helper.rb000066400000000000000000000015661500112024600210610ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MessagesHelper include Redmine::QuoteReply::Helper end redmine-6.0.5/app/helpers/my_helper.rb000066400000000000000000000203711500112024600176720ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MyHelper # Renders the blocks def render_blocks(blocks, user, options={}) s = ''.html_safe if blocks.present? blocks.each do |block| s << render_block(block, user).to_s end end s end # Renders a single block def render_block(block, user) content = render_block_content(block, user) if content.present? handle = content_tag('span', sprite_icon('reorder', ''), :class => 'icon-only icon-sort-handle sort-handle', :title => l(:button_move)) close = link_to(sprite_icon('close', l(:button_delete)), {:action => "remove_block", :block => block}, :remote => true, :method => 'post', :class => "icon-only icon-close", :title => l(:button_delete)) content = content_tag('div', handle + close, :class => 'contextual') + content content_tag('div', content, :class => "mypage-box", :id => "block-#{block}") end end # Renders a single block content def render_block_content(block, user) unless block_definition = Redmine::MyPage.find_block(block) Rails.logger.warn("Unknown block \"#{block}\" found in #{user.login} (id=#{user.id}) preferences") return end settings = user.pref.my_page_settings(block) if partial = block_definition[:partial] begin render(:partial => partial, :locals => {:user => user, :settings => settings, :block => block}) rescue ActionView::MissingTemplate Rails.logger.warn("Partial \"#{partial}\" missing for block \"#{block}\" found in #{user.login} (id=#{user.id}) preferences") return nil end else send :"render_#{block_definition[:name]}_block", block, settings end end # Returns the select tag used to add a block to My page def block_select_tag(user) blocks_in_use = user.pref.my_page_layout.values.flatten options = content_tag('option') Redmine::MyPage.block_options(blocks_in_use).each do |label, block| options << content_tag('option', label, :value => block, :disabled => block.blank?) end select_tag('block', options, :id => "block-select", :onchange => "$('#block-form').submit();") end def render_calendar_block(block, settings) calendar = Redmine::Helpers::Calendar.new(User.current.today, current_language, :week) calendar.events = Issue.visible. where(:project => User.current.projects). where("(start_date>=? and start_date<=?) or (due_date>=? and due_date<=?)", calendar.startdt, calendar.enddt, calendar.startdt, calendar.enddt). includes(:project, :tracker, :priority, :assigned_to). references(:project, :tracker, :priority, :assigned_to). to_a render :partial => 'my/blocks/calendar', :locals => {:calendar => calendar, :block => block} end def render_documents_block(block, settings) documents = Document.visible.order("#{Document.table_name}.created_on DESC").limit(10).to_a render :partial => 'my/blocks/documents', :locals => {:block => block, :documents => documents} end def render_issuesassignedtome_block(block, settings) query = IssueQuery.new(:name => l(:label_assigned_to_me_issues), :user => User.current) query.add_filter 'assigned_to_id', '=', ['me'] query.add_filter 'project.status', '=', ["#{Project::STATUS_ACTIVE}"] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['priority', 'desc'], ['updated_on', 'desc']] issues = query.issues(:limit => 10) render :partial => 'my/blocks/issues', :locals => {:query => query, :issues => issues, :block => block} end def render_issuesreportedbyme_block(block, settings) query = IssueQuery.new(:name => l(:label_reported_issues), :user => User.current) query.add_filter 'author_id', '=', ['me'] query.add_filter 'project.status', '=', ["#{Project::STATUS_ACTIVE}"] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['updated_on', 'desc']] issues = query.issues(:limit => 10) render :partial => 'my/blocks/issues', :locals => {:query => query, :issues => issues, :block => block} end def render_issuesupdatedbyme_block(block, settings) query = IssueQuery.new(:name => l(:label_updated_issues), :user => User.current) query.add_filter 'updated_by', '=', ['me'] query.add_filter 'project.status', '=', ["#{Project::STATUS_ACTIVE}"] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['updated_on', 'desc']] issues = query.issues(:limit => 10) render :partial => 'my/blocks/issues', :locals => {:query => query, :issues => issues, :block => block} end def render_issueswatched_block(block, settings) query = IssueQuery.new(:name => l(:label_watched_issues), :user => User.current) query.add_filter 'watcher_id', '=', ['me'] query.add_filter 'project.status', '=', ["#{Project::STATUS_ACTIVE}"] query.column_names = settings[:columns].presence || ['project', 'tracker', 'status', 'subject'] query.sort_criteria = settings[:sort].presence || [['updated_on', 'desc']] issues = query.issues(:limit => 10) render :partial => 'my/blocks/issues', :locals => {:query => query, :issues => issues, :block => block} end def render_issuequery_block(block, settings) query = IssueQuery.visible.find_by_id(settings[:query_id]) if query query.column_names = settings[:columns] if settings[:columns].present? query.sort_criteria = settings[:sort] if settings[:sort].present? issues = query.issues(:limit => 10) render :partial => 'my/blocks/issues', :locals => {:query => query, :issues => issues, :block => block, :settings => settings} else queries = IssueQuery.visible.sorted render :partial => 'my/blocks/issue_query_selection', :locals => {:queries => queries, :block => block, :settings => settings} end end def render_news_block(block, settings) news = News.visible. where(:project => User.current.projects). limit(10). includes(:project, :author). references(:project, :author). order("#{News.table_name}.created_on DESC"). to_a render :partial => 'my/blocks/news', :locals => {:block => block, :news => news} end def render_timelog_block(block, settings) days = settings[:days].to_i days = 7 if days < 1 || days > 365 entries = TimeEntry. where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, User.current.today - (days - 1), User.current.today). joins(:activity, :project). references(:issue => [:tracker, :status]). includes(:issue => [:tracker, :status]). order("#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC"). to_a entries_by_day = entries.group_by(&:spent_on) render :partial => 'my/blocks/timelog', :locals => {:block => block, :entries => entries, :entries_by_day => entries_by_day, :days => days} end def render_activity_block(block, settings) events_by_day = Redmine::Activity::Fetcher.new(User.current, :author => User.current).events(nil, nil, :limit => 10).group_by {|event| User.current.time_to_date(event.event_datetime)} render :partial => 'my/blocks/activity', :locals => {:events_by_day => events_by_day} end end redmine-6.0.5/app/helpers/news_helper.rb000066400000000000000000000015141500112024600202170ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module NewsHelper end redmine-6.0.5/app/helpers/principal_memberships_helper.rb000066400000000000000000000042201500112024600236170ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module PrincipalMembershipsHelper def render_principal_memberships(principal) render :partial => 'principal_memberships/index', :locals => {:principal => principal} end def call_table_header_hook(principal) if principal.is_a?(Group) call_hook :view_groups_memberships_table_header, :group => principal else call_hook :view_users_memberships_table_header, :user => principal end end def call_table_row_hook(principal, membership) if principal.is_a?(Group) call_hook :view_groups_memberships_table_row, :group => principal, :membership => membership else call_hook :view_users_memberships_table_row, :user => principal, :membership => membership end end def new_principal_membership_path(principal, *args) if principal.is_a?(Group) new_group_membership_path(principal, *args) else new_user_membership_path(principal, *args) end end def edit_principal_membership_path(principal, *args) if principal.is_a?(Group) edit_group_membership_path(principal, *args) else edit_user_membership_path(principal, *args) end end def principal_membership_path(principal, membership, *args) if principal.is_a?(Group) group_membership_path(principal, membership, *args) else user_membership_path(principal, membership, *args) end end end redmine-6.0.5/app/helpers/projects_helper.rb000066400000000000000000000206741500112024600211040ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ProjectsHelper def project_settings_tabs tabs = [ {:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_project}, {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural}, {:name => 'issues', :action => :edit_project, :module => :issue_tracking, :partial => 'projects/settings/issues', :label => :label_issue_tracking}, {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural, :url => {:tab => 'versions', :version_status => params[:version_status], :version_name => params[:version_name]}}, {:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural}, {:name => 'repositories', :action => :manage_repository, :partial => 'projects/settings/repositories', :label => :label_repository_plural}, {:name => 'boards', :action => :manage_boards, :partial => 'projects/settings/boards', :label => :label_board_plural}, {:name => 'activities', :action => :manage_project_activities, :partial => 'projects/settings/activities', :label => :label_time_tracking} ] tabs. select {|tab| User.current.allowed_to?(tab[:action], @project)}. select {|tab| tab[:module].nil? || @project.module_enabled?(tab[:module])} end def parent_project_select_tag(project) selected = project.parent # retrieve the requested parent project parent_id = (params[:project] && params[:project][:parent_id]) || params[:parent_id] if parent_id selected = (parent_id.blank? ? nil : Project.find(parent_id)) end options = +'' options << "" if project.allowed_parents.include?(nil) options << project_tree_options_for_select(project.allowed_parents.compact, :selected => selected) content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id') end def render_project_action_links links = (+"").html_safe if User.current.allowed_to?(:add_project, nil, :global => true) links << link_to(sprite_icon('add', l(:label_project_new)), new_project_path, :class => 'icon icon-add') end if User.current.admin? links << link_to(sprite_icon('settings', l(:label_administration)), admin_projects_path, :class => 'icon icon-settings') end links end # Renders the projects index def render_project_hierarchy(projects) bookmarked_project_ids = User.current.bookmarked_project_ids render_project_nested_lists(projects) do |project| classes = project.css_classes.split classes += %w(icon icon-user my-project) if User.current.member_of?(project) classes += %w(icon icon-bookmarked-project) if bookmarked_project_ids.include?(project.id) s = link_to_project(project, {}, :class => classes.uniq.join(' ')) s << sprite_icon('user', l(:label_my_projects), icon_only: true) if User.current.member_of?(project) s << sprite_icon('bookmarked', l(:label_my_bookmarks), icon_only: true) if bookmarked_project_ids.include?(project.id) if project.description.present? s << content_tag('div', textilizable(project.short_description, :project => project), :class => 'wiki description') end s end end # Returns a set of options for a select field, grouped by project. def version_options_for_select(versions, selected=nil) grouped = Hash.new {|h, k| h[k] = []} versions.each do |version| grouped[version.project.name] << [version.name, version.id] end selected = selected.id if selected.is_a?(Version) if grouped.keys.size > 1 grouped_options_for_select(grouped, selected) else options_for_select((grouped.values.first || []), selected) end end def project_default_version_options(project) versions = project.shared_versions.open.to_a if project.default_version && !versions.include?(project.default_version) versions << project.default_version end version_options_for_select(versions, project.default_version) end def project_default_assigned_to_options(project) assignable_users = (project.assignable_users.to_a + [project.default_assigned_to]).uniq.compact principals_options_for_select(assignable_users, project.default_assigned_to) end def project_default_issue_query_options(project) public_queries = IssueQuery.only_public grouped = { l('label_default_queries.for_all_projects') => public_queries.where(project_id: nil).pluck(:name, :id), l('label_default_queries.for_current_project') => public_queries.where(project: project).pluck(:name, :id) } grouped_options_for_select(grouped, project.default_issue_query_id) end def format_version_sharing(sharing) sharing = 'none' unless Version::VERSION_SHARINGS.include?(sharing) l("label_version_sharing_#{sharing}") end def render_boards_tree(boards, parent=nil, level=0, &block) selection = boards.select {|b| b.parent == parent} return '' if selection.empty? s = ''.html_safe selection.each do |board| node = capture(board, level, &block) node << render_boards_tree(boards, board, level+1, &block) s << content_tag('div', node) end content_tag('div', s, :class => 'sort-level') end def render_api_includes(project, api) api.array :trackers do project.rolled_up_trackers(false).visible.each do |tracker| api.tracker(:id => tracker.id, :name => tracker.name) end end if include_in_api_response?('trackers') api.array :issue_categories do project.issue_categories.each do |category| api.issue_category(:id => category.id, :name => category.name) end end if include_in_api_response?('issue_categories') api.array :time_entry_activities do project.activities.each do |activity| api.time_entry_activity(:id => activity.id, :name => activity.name) end end if include_in_api_response?('time_entry_activities') api.array :enabled_modules do project.enabled_modules.each do |enabled_module| api.enabled_module(:id => enabled_module.id, :name => enabled_module.name) end end if include_in_api_response?('enabled_modules') api.array :issue_custom_fields do project.all_issue_custom_fields.each do |custom_field| api.custom_field(:id => custom_field.id, :name => custom_field.name) end end if include_in_api_response?('issue_custom_fields') end def bookmark_link(project, user = User.current) return '' unless user && user.logged? @jump_box ||= Redmine::ProjectJumpBox.new user bookmarked = @jump_box.bookmark?(project) css = +"icon bookmark " if bookmarked css << "icon-bookmark" icon = "bookmark-delete" method = "delete" text = sprite_icon(icon, l(:button_project_bookmark_delete)) else css << "icon-bookmark-off" icon = "bookmark-add" method = "post" text = sprite_icon(icon, l(:button_project_bookmark)) end url = bookmark_project_path(project) link_to text, url, remote: true, method: method, class: css end def grouped_project_list(projects, query, &) ancestors = [] grouped_query_results(projects, query) do |project, group_name, group_count, group_totals| ancestors.pop while ancestors.any? && !project.is_descendant_of?(ancestors.last) yield project, ancestors.size, group_name, group_count, group_totals ancestors << project unless project.leaf? end end end redmine-6.0.5/app/helpers/projects_queries_helper.rb000066400000000000000000000054171500112024600226370ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ProjectsQueriesHelper include ApplicationHelper def column_value(column, item, value) if item.is_a?(Project) case column.name when :name link_to_project(item) + (tag.span(sprite_icon('user', l(:label_my_projects), icon_only: true), class: 'icon-only icon-user my-project') if User.current.member_of?(item)) + (tag.span(sprite_icon('bookmarked', l(:label_my_bookmarks), icon_only: true), class: 'icon-only icon-bookmarked-project') if User.current.bookmarked_project_ids.include?(item.id)) when :short_description if item.description? # Sets :inline_attachments to false to avoid performance issues # caused by unnecessary loading of attachments content_tag('div', textilizable(item, :short_description, :inline_attachments => false), :class => 'wiki') else '' end when :homepage item.homepage? ? content_tag('div', textilizable(item, :homepage), :class => "wiki") : '' when :status get_project_status_label[column.value_object(item)] when :parent_id link_to_project(item.parent) unless item.parent.nil? when :last_activity_date formatted_value = super if value.present? && formatted_value.present? link_to( formatted_value, project_activity_path(item, :from => User.current.time_to_date(value)) ) else formatted_value end else super end end end def csv_value(column, object, value) if object.is_a?(Project) case column.name when :status get_project_status_label[column.value_object(object)] when :parent_id object.parent.name unless object.parent.nil? else super end end end private def get_project_status_label { Project::STATUS_ACTIVE => l(:project_status_active), Project::STATUS_CLOSED => l(:project_status_closed) } end end redmine-6.0.5/app/helpers/queries_helper.rb000066400000000000000000000441151500112024600207240ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/export/csv' module QueriesHelper include ApplicationHelper def filters_options_for_select(query) ungrouped = [] grouped = {label_string: [], label_date: [], label_time_tracking: [], label_attachment: []} query.available_filters.map do |field, field_options| if /^cf_\d+\./.match?(field) group = (field_options[:through] || field_options[:field]).try(:name) elsif field =~ /^(.+)\./ # association filters group = :"field_#{$1}" elsif field_options[:type] == :relation group = :label_relations elsif field_options[:type] == :tree group = query.is_a?(IssueQuery) ? :label_relations : nil elsif %w(member_of_group assigned_to_role).include?(field) group = :field_assigned_to elsif field_options[:type] == :date_past || field_options[:type] == :date group = :label_date elsif %w(estimated_hours spent_time).include?(field) group = :label_time_tracking elsif %w(attachment attachment_description).include?(field) group = :label_attachment elsif [:string, :text, :search].include?(field_options[:type]) group = :label_string end if group (grouped[group] ||= []) << [field_options[:name], field] else ungrouped << [field_options[:name], field] end end # Remove empty groups grouped.delete_if {|k, v| v.empty?} # Don't group dates if there's only one (eg. time entries filters) if grouped[:label_date].try(:size) == 1 ungrouped << grouped.delete(:label_date).first end s = options_for_select([[]] + ungrouped) if grouped.present? localized_grouped = grouped.map {|k, v| [k.is_a?(Symbol) ? l(k) : k.to_s, v]} s << grouped_options_for_select(localized_grouped) end s end def query_filters_hidden_tags(query) tags = ''.html_safe query.filters.each do |field, options| tags << hidden_field_tag("f[]", field, :id => nil) tags << hidden_field_tag("op[#{field}]", options[:operator], :id => nil) options[:values].each do |value| tags << hidden_field_tag("v[#{field}][]", value, :id => nil) end end tags end def query_columns_hidden_tags(query) tags = ''.html_safe query.columns.each do |column| tags << hidden_field_tag("c[]", column.name, :id => nil) end tags end def query_hidden_tags(query) query_filters_hidden_tags(query) + query_columns_hidden_tags(query) end def group_by_column_select_tag(query) options = [[]] + query.groupable_columns.collect {|c| [c.caption, c.name.to_s]} select_tag('group_by', options_for_select(options, @query.group_by)) end def available_block_columns_tags(query) tags = ''.html_safe query.available_block_columns.each do |column| tags << content_tag( 'label', check_box_tag( 'c[]', column.name.to_s, query.has_column?(column), :id => nil ) + " #{column.caption}", :class => 'inline' ) end tags end def available_totalable_columns_tags(query, options={}) tag_name = (options[:name] || 't') + '[]' tags = ''.html_safe query.available_totalable_columns.each do |column| tags << content_tag( 'label', check_box_tag( tag_name, column.name.to_s, query.totalable_columns.include?(column), :id => nil ) + " #{column.caption}", :class => 'inline' ) end tags << hidden_field_tag(tag_name, '') tags end def query_available_inline_columns_options(query) (query.available_inline_columns - query.columns). reject(&:frozen?).collect {|column| [column.caption, column.name]} end def query_selected_inline_columns_options(query) (query.inline_columns & query.available_inline_columns). reject(&:frozen?).collect {|column| [column.caption, column.name]} end def render_query_columns_selection(query, options={}) tag_name = (options[:name] || 'c') + '[]' render :partial => 'queries/columns', :locals => {:query => query, :tag_name => tag_name} end def available_display_types_tags(query) tags = ''.html_safe query.available_display_types.each do |t| tags << radio_button_tag('display_type', t, @query.display_type == t, :id => "display_type_#{t}") + content_tag('label', l(:"label_display_type_#{t}"), :for => "display_type_#{t}", :class => "inline") end tags end def grouped_query_results(items, query, &) result_count_by_group = query.result_count_by_group previous_group, first = false, true totals_by_group = query.totalable_columns.inject({}) do |h, column| h[column] = query.total_by_group_for(column) h end items.each do |item| group_name = group_count = nil if query.grouped? group = query.group_by_column.group_value(item) if first || group != previous_group if group.blank? && group != false group_name = "(#{l(:label_blank_value)})" else group_name = format_object(group) end group_name ||= "" group_count = result_count_by_group ? result_count_by_group[group] : nil group_totals = totals_by_group.map {|column, t| total_tag(column, t[group] || 0)}.join(" ").html_safe end end yield item, group_name, group_count, group_totals previous_group, first = group, false end end def render_query_totals(query) return unless query.totalable_columns.present? totals = query.totalable_columns.map do |column| total_tag(column, query.total_for(column)) end content_tag('p', totals.join(" ").html_safe, :class => "query-totals") end def total_tag(column, value) label = content_tag('span', "#{column.caption}:") value = if [:hours, :spent_hours, :total_spent_hours, :estimated_hours, :total_estimated_hours, :estimated_remaining_hours].include? column.name format_hours(value) elsif column.is_a?(QueryCustomFieldColumn) format_object(value, thousands_delimiter: column.custom_field.thousands_delimiter?) else format_object(value) end value = content_tag('span', value, :class => 'value') content_tag('span', label + " " + value, :class => "total-for-#{column.name.to_s.dasherize}") end def column_header(query, column, options={}) if column.sortable? css, order = nil, column.default_order if column.name.to_s == query.sort_criteria.first_key if query.sort_criteria.first_asc? css = 'sort asc icon icon-sorted-desc' icon = 'angle-up' order = 'desc' else css = 'sort desc icon icon-sorted-asc' icon = 'angle-down' order = 'asc' end end param_key = options[:sort_param] || :sort sort_param = {param_key => query.sort_criteria.add(column.name, order).to_param} sort_param = {$1 => {$2 => sort_param.values.first}} while sort_param.keys.first.to_s =~ /^(.+)\[(.+)\]$/ link_options = { :title => l(:label_sort_by, "\"#{column.caption}\""), :class => css } if options[:sort_link_options] link_options.merge! options[:sort_link_options] end content = link_to( sprite_icon(icon, column.caption), {:params => request.query_parameters.deep_merge(sort_param)}, link_options ) else content = column.caption end content_tag('th', content, :class => column.css_classes) end def column_content(column, item) value = column.value_object(item) content = if value.is_a?(Array) values = value.filter_map {|v| column_value(column, item, v)} safe_join(values, ', ') else column_value(column, item, value) end call_hook(:helper_queries_column_content, {:content => content, :column => column, :item => item}) content end def column_value(column, item, value) content = case column.name when :id link_to value, issue_path(item) when :subject link_to value, issue_path(item) when :parent, :'issue.parent' value ? (value.visible? ? link_to_issue(value, :subject => false) : "##{value.id}") : '' when :description item.description? ? content_tag('div', textilizable(item, :description), :class => "wiki") : '' when :last_notes item.last_notes.present? ? content_tag('div', textilizable(item, :last_notes), :class => "wiki") : '' when :done_ratio progress_bar(value) when :relations content_tag( 'span', value.to_s(item) {|other| link_to_issue(other, :subject => false, :tracker => false)}.html_safe, :class => value.css_classes_for(item)) when :hours, :estimated_hours, :total_estimated_hours, :estimated_remaining_hours format_hours(value) when :spent_hours link_to_if(value > 0, format_hours(value), project_time_entries_path(item.project, :issue_id => "#{item.id}")) when :total_spent_hours link_to_if(value > 0, format_hours(value), project_time_entries_path(item.project, :issue_id => "~#{item.id}")) when :attachments value.to_a.map {|a| format_object(a)}.join(" ").html_safe when :watcher_users content_tag('ul', value.to_a.map {|user| content_tag('li', format_object(user))}.join.html_safe) else format_object(value) end call_hook(:helper_queries_column_value, {:content => content, :column => column, :item => item, :value => value}) content end def csv_content(column, item) value = column.value_object(item) if value.is_a?(Array) value.filter_map {|v| csv_value(column, item, v)}.join(', ') else csv_value(column, item, value) end end def csv_value(column, object, value) case column.name when :attachments value.to_a.map {|a| a.filename}.join("\n") when :watcher_users value.to_a.join("\n") else format_object(value, html: false) do |value| case value.class.name when 'Float', 'Rational' sprintf("%.2f", value).gsub('.', l(:general_csv_decimal_separator)) when 'IssueRelation' value.to_s(object) when 'Issue' if object.is_a?(TimeEntry) value.visible? ? "#{value.tracker} ##{value.id}: #{value.subject}" : "##{value.id}" else value.id end else value end end end end def query_to_csv(items, query, options={}) columns = query.columns Redmine::Export::CSV.generate(encoding: params[:encoding], field_separator: params[:field_separator]) do |csv| # csv header fields csv << columns.map {|c| c.caption.to_s} # csv lines items.each do |item| csv << columns.map {|c| csv_content(c, item)} end end end def filename_for_export(query, default_name) query_name = params[:query_name].presence || query.name query_name = default_name if query_name == '_' || query_name.blank? # Convert file names using the same rules as Wiki titles filename_for_content_disposition(Wiki.titleize(query_name).downcase) end # Retrieve query from session or build a new query def retrieve_query(klass=IssueQuery, use_session=true, options={}) session_key = klass.name.underscore.to_sym if params[:query_id].present? scope = klass.where(:project_id => nil) scope = scope.or(klass.where(:project_id => @project)) if @project @query = scope.find(params[:query_id]) raise ::Unauthorized unless @query.visible? @query.project = @project session[session_key] = {:id => @query.id, :project_id => @query.project_id} if use_session elsif api_request? || params[:set_filter] || !use_session || session[session_key].nil? || session[session_key][:project_id] != (@project ? @project.id : nil) # Give it a name, required to be valid @query = klass.new(:name => "_", :project => @project) @query.build_from_params(params, options[:defaults]) if use_session session[session_key] = { :project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names, :totalable_names => @query.totalable_names, :sort => @query.sort_criteria.to_a } end else # retrieve from session @query = nil @query = klass.find_by_id(session[session_key][:id]) if session[session_key][:id] @query ||= klass.new( :name => "_", :filters => session[session_key][:filters], :group_by => session[session_key][:group_by], :column_names => session[session_key][:column_names], :totalable_names => session[session_key][:totalable_names], :sort_criteria => session[session_key][:sort] ) @query.project = @project end if params[:sort].present? @query.sort_criteria = params[:sort] if use_session session[session_key] ||= {} session[session_key][:sort] = @query.sort_criteria.to_a end end @query end def retrieve_query_from_session(klass=IssueQuery) session_key = klass.name.underscore.to_sym session_data = session[session_key] if session_data if session_data[:id] @query = IssueQuery.find_by_id(session_data[:id]) return unless @query else @query = IssueQuery.new( :name => "_", :filters => session_data[:filters], :group_by => session_data[:group_by], :column_names => session_data[:column_names], :totalable_names => session_data[:totalable_names], :sort_criteria => session[session_key][:sort] ) end if session_data.has_key?(:project_id) @query.project_id = session_data[:project_id] else @query.project = @project end @query else @query = klass.default project: @project end end # Returns the query definition as hidden field tags def query_as_hidden_field_tags(query) tags = hidden_field_tag("set_filter", "1", :id => nil) if query.filters.present? query.filters.each do |field, filter| tags << hidden_field_tag("f[]", field, :id => nil) tags << hidden_field_tag("op[#{field}]", filter[:operator], :id => nil) filter[:values].each do |value| tags << hidden_field_tag("v[#{field}][]", value, :id => nil) end end else tags << hidden_field_tag("f[]", "", :id => nil) end query.columns.each do |column| tags << hidden_field_tag("c[]", column.name, :id => nil) end if query.totalable_names.present? query.totalable_names.each do |name| tags << hidden_field_tag("t[]", name, :id => nil) end end if query.group_by.present? tags << hidden_field_tag("group_by", query.group_by, :id => nil) end if query.sort_criteria.present? tags << hidden_field_tag("sort", query.sort_criteria.to_param, :id => nil) end tags end def query_hidden_sort_tag(query) hidden_field_tag("sort", query.sort_criteria.to_param, :id => nil) end # Returns the queries that are rendered in the sidebar def sidebar_queries(klass, project) klass.visible.global_or_on_project(@project).sorted.to_a end # Renders a group of queries def query_links(title, queries) return '' if queries.empty? # links to #index on issues/show url_params = if controller_name == 'issues' {:controller => 'issues', :action => 'index', :project_id => @project} else {} end default_query_by_class = {} content_tag('h3', title) + "\n" + content_tag( 'ul', queries.collect do |query| css = +'query' clear_link = +'' clear_link_param = {:set_filter => 1, :sort => '', :project_id => @project} default_query = default_query_by_class[query.class] ||= query.class.default(project: @project) if query == default_query css << ' default' clear_link_param[:without_default] = 1 end if query == @query css << ' selected' clear_link += link_to_clear_query(clear_link_param) end content_tag('li', link_to(query.name, url_params.merge(:query_id => query), :class => css, :title => query.description, :data => { :disable_with => CGI.escapeHTML(query.name) }) + clear_link.html_safe) end.join("\n").html_safe, :class => 'queries' ) + "\n" end def link_to_clear_query(params = {:set_filter => 1, :sort => '', :project_id => @project}) link_to( sprite_icon('clear-query', l(:button_clear)), params, :class => 'icon-only icon-clear-query', :title => l(:button_clear) ) end # Renders the list of queries for the sidebar def render_sidebar_queries(klass, project) queries = sidebar_queries(klass, project) out = ''.html_safe out << query_links(l(:label_my_queries), queries.select(&:is_private?)) out << query_links(l(:label_query_plural), queries.reject(&:is_private?)) out end end redmine-6.0.5/app/helpers/reports_helper.rb000066400000000000000000000043541500112024600207460ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module ReportsHelper def aggregate(data, criteria) a = 0 data&.each do |row| match = 1 criteria&.each do |k, v| unless (row[k].to_s == v.to_s) || (k == 'closed' && (v == 0 ? ['f', false] : ['t', true]).include?(row[k])) match = 0 end end a = a + row["total"].to_i if match == 1 end a end def aggregate_link(data, criteria, *args) a = aggregate data, criteria a > 0 ? link_to(h(a), *args) : '-' end def aggregate_path(project, field, row, options={}) parameters = {:set_filter => 1, :subproject_id => '!*', field => (row.id || '!*')}.merge(options) project_issues_path(row.is_a?(Project) ? row : project, parameters) end def issue_report_details_to_csv(field_name, statuses, rows, data) Redmine::Export::CSV.generate(:encoding => params[:encoding]) do |csv| # csv headers headers = [''] + statuses.map(&:name) + [l(:label_open_issues_plural), l(:label_closed_issues_plural), l(:label_total)] csv << headers # csv lines rows.each do |row| csv << [row.name] + statuses.map{|s| aggregate(data, { field_name => row.id, 'status_id' => s.id })} + [aggregate(data, { field_name => row.id, 'closed' => 0 })] + [aggregate(data, { field_name => row.id, 'closed' => 1 })] + [aggregate(data, { field_name => row.id })] end end end end redmine-6.0.5/app/helpers/repositories_helper.rb000066400000000000000000000260321500112024600217740ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module RepositoriesHelper def format_revision(revision) if revision.respond_to? :format_identifier revision.format_identifier else revision.to_s end end def truncate_at_line_break(text, length = 255) if text text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...') end end def render_pagination pagination_links_each @paginator do |text, parameters, options| if entry = @entries[parameters[:page] - 1] ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path) link_to text, {action: 'entry', id: @project, repository_id: @repository.identifier_param, path: to_path_param(ent_path), rev: @rev} end end if @paginator end def render_properties(properties) unless properties.nil? || properties.empty? content = +'' properties.keys.sort.each do |property| content << content_tag('li', "#{h property}: #{h properties[property]}".html_safe) end content_tag('ul', content.html_safe, :class => 'properties') end end def render_changeset_changes changes = @changeset.filechanges.limit(1000).reorder('path').filter_map do |change| case change.action when 'A' # Detects moved/copied files if change.from_path.present? change.action = @changeset.filechanges.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C' end change when 'D' @changeset.filechanges.detect {|c| c.from_path == change.path} ? nil : change else change end end tree = {} changes.each do |change| p = tree dirs = change.path.to_s.split('/').select {|d| !d.blank?} path = '' dirs.each do |dir| path += '/' + dir p[:s] ||= {} p = p[:s] p[path] ||= {} p = p[path] end p[:c] = change end render_changes_tree(tree[:s]) end def render_changes_tree(tree) return '' if tree.nil? output = +'' output << '
      ' tree.keys.sort.each do |file| style = +'change' text = File.basename(h(file)) if s = tree[file][:s] style << ' folder' path_param = to_path_param(@repository.relative_path(file)) text = link_to(sprite_icon("folder-open", h(text)), :controller => 'repositories', :action => 'show', :id => @project, :repository_id => @repository.identifier_param, :path => path_param, :rev => @changeset.identifier) output << "
    • #{text}" output << render_changes_tree(s) output << "
    • " elsif c = tree[file][:c] style << " change-#{c.action}" path_param = to_path_param(@repository.relative_path(c.path)) text = link_to(scm_change_icon(c.action, h(text)), :controller => 'repositories', :action => 'entry', :id => @project, :repository_id => @repository.identifier_param, :path => path_param, :rev => @changeset.identifier) unless c.action == 'D' text << " - #{h(c.revision)}" unless c.revision.blank? text << ' ('.html_safe + link_to(l(:label_diff), :controller => 'repositories', :action => 'diff', :id => @project, :repository_id => @repository.identifier_param, :path => path_param, :rev => @changeset.identifier) + ') '.html_safe if c.action == 'M' text << ' '.html_safe + content_tag('span', h(c.from_path), :class => 'copied-from') unless c.from_path.blank? output << "
    • #{text}
    • " end end output << '
    ' output.html_safe end def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags' send(method, form, repository) end end def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) scm_options << ["Repository::#{scm}".constantize.scm_name, scm] end end select_tag('repository_scm', options_for_select(scm_options, repository.class.name.demodulize), :disabled => (repository && !repository.new_record?), :data => {:remote => true, :method => 'get', :url => new_project_repository_path(repository.project)}) end def with_leading_slash(path) path.to_s.starts_with?('/') ? path : "/#{path}" end def subversion_field_tags(form, repository) content_tag('p', form.text_field(:url, :size => 60, :required => true, :disabled => !repository.safe_attribute?('url')) + scm_path_info_tag(repository)) + content_tag('p', form.text_field(:login, :size => 30)) + content_tag( 'p', form.password_field( :password, :size => 30, :name => 'ignore', :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x' * 15)), :onfocus => "this.value=''; this.name='repository[password]';", :onchange => "this.name='repository[password]';") ) end def mercurial_field_tags(form, repository) content_tag( 'p', form.text_field( :url, :label => l(:field_path_to_repository), :size => 60, :required => true, :disabled => !repository.safe_attribute?('url') ) + scm_path_info_tag(repository) ) + scm_path_encoding_tag(form, repository) end def git_field_tags(form, repository) content_tag( 'p', form.text_field( :url, :label => l(:field_path_to_repository), :size => 60, :required => true, :disabled => !repository.safe_attribute?('url') ) + scm_path_info_tag(repository)) + scm_path_encoding_tag(form, repository) + content_tag('p', form.check_box( :report_last_commit, :label => l(:label_git_report_last_commit) )) end def cvs_field_tags(form, repository) content_tag( 'p', form.text_field( :root_url, :label => l(:field_cvsroot), :size => 60, :required => true, :disabled => !repository.safe_attribute?('root_url') ) + scm_path_info_tag(repository) ) + content_tag( 'p', form.text_field( :url, :label => l(:field_cvs_module), :size => 30, :required => true, :disabled => !repository.safe_attribute?('url') ) ) + scm_log_encoding_tag(form, repository) + scm_path_encoding_tag(form, repository) end def bazaar_field_tags(form, repository) content_tag( 'p', form.text_field( :url, :label => l(:field_path_to_repository), :size => 60, :required => true, :disabled => !repository.safe_attribute?('url') ) + scm_path_info_tag(repository) ) + scm_log_encoding_tag(form, repository) end def filesystem_field_tags(form, repository) content_tag( 'p', form.text_field( :url, :label => l(:field_root_directory), :size => 60, :required => true, :disabled => !repository.safe_attribute?('url') ) + scm_path_info_tag(repository) ) + scm_path_encoding_tag(form, repository) end def scm_path_info_tag(repository) text = scm_path_info(repository) if text.present? content_tag('em', text, :class => 'info') else '' end end def scm_path_info(repository) scm_name = repository.scm_name.to_s.downcase info_from_config = Redmine::Configuration["scm_#{scm_name}_path_info"].presence return info_from_config.html_safe if info_from_config l("text_#{scm_name}_repository_note", :default => '') end def scm_log_encoding_tag(form, repository) select = form.select( :log_encoding, [nil] + Setting::ENCODINGS, :label => l(:field_commit_logs_encoding), :required => true ) content_tag('p', select) end def scm_path_encoding_tag(form, repository) select = form.select( :path_encoding, [nil] + Setting::ENCODINGS, :label => l(:field_scm_path_encoding) ) content_tag('p', select + content_tag('em', l(:text_scm_path_encoding_note), :class => 'info')) end def index_commits(commits, heads) return nil if commits.nil? or commits.first.parents.nil? refs_map = {} heads.each do |head| refs_map[head.scmid] ||= [] refs_map[head.scmid] << head end commits_by_scmid = {} commits.reverse.each_with_index do |commit, commit_index| commits_by_scmid[commit.scmid] = { :parent_scmids => commit.parents.collect {|parent| parent.scmid}, :rdmid => commit_index, :refs => refs_map.include?(commit.scmid) ? refs_map[commit.scmid].join(" ") : nil, :scmid => commit.scmid, :href => block_given? ? yield(commit.scmid) : commit.scmid } end heads.sort_by!(&:to_s) space = nil heads.each do |head| if commits_by_scmid.include? head.scmid space = index_head((space || -1) + 1, head, commits_by_scmid) end end # when no head matched anything use first commit space ||= index_head(0, commits.first, commits_by_scmid) return commits_by_scmid, space end def index_head(space, commit, commits_by_scmid) stack = [[space, commits_by_scmid[commit.scmid]]] max_space = space until stack.empty? space, commit = stack.pop commit[:space] = space if commit[:space].nil? space -= 1 commit[:parent_scmids].each_with_index do |parent_scmid, parent_index| parent_commit = commits_by_scmid[parent_scmid] if parent_commit and parent_commit[:space].nil? stack.unshift [space += 1, parent_commit] end end max_space = space if max_space < space end max_space end end redmine-6.0.5/app/helpers/roles_helper.rb000066400000000000000000000033721500112024600203730ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module RolesHelper include ApplicationHelper def permissions_to_csv(roles, permissions) Redmine::Export::CSV.generate(:encoding => params[:encoding]) do |csv| # csv header fields headers = [l(:field_cvs_module), l(:label_permissions)] + roles.collect(&:name) csv << headers # csv lines perms_by_module = permissions.group_by {|p| p.project_module.to_s} perms_by_module.keys.sort.each do |mod| perms_by_module[mod].each do |p| names = [ l_or_humanize(p.project_module.to_s, :prefix => 'project_module_'), l_or_humanize(p.name, :prefix => 'permission_').to_s, ] fields = names + roles.collect do |role| if role.setable_permissions.include?(p) format_object(role.permissions.include?(p.name), html: false) else '' end end csv << fields end end end end end redmine-6.0.5/app/helpers/routes_helper.rb000066400000000000000000000052711500112024600205700ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module RoutesHelper # Returns the path to project issues or to the cross-project # issue list if project is nil def _project_issues_path(project, *args) if project project_issues_path(project, *args) else issues_path(*args) end end def _project_issues_url(project, *args) if project project_issues_url(project, *args) else issues_url(*args) end end def _project_news_path(project, *args) if project project_news_index_path(project, *args) else news_index_path(*args) end end def _new_project_issue_path(project, *args) if project new_project_issue_path(project, *args) else new_issue_path(*args) end end def _project_calendar_path(project, *args) project ? project_calendar_path(project, *args) : issues_calendar_path(*args) end def _project_gantt_path(project, *args) project ? project_gantt_path(project, *args) : issues_gantt_path(*args) end def _time_entries_path(project, issue, *args) if project project_time_entries_path(project, *args) else time_entries_path(*args) end end def _report_time_entries_path(project, issue, *args) if project report_project_time_entries_path(project, *args) else report_time_entries_path(*args) end end def _new_time_entry_path(project, issue, *args) if issue new_issue_time_entry_path(issue, *args) elsif project new_project_time_entry_path(project, *args) else new_time_entry_path(*args) end end # Returns the path to bulk update issues or to issue path # if only one issue is selected for bulk update def _bulk_update_issues_path(issue, *args) if issue issue_path(issue, *args) else bulk_update_issues_path(*args) end end def board_path(board, *args) project_board_path(board.project, board, *args) end end redmine-6.0.5/app/helpers/search_helper.rb000066400000000000000000000101641500112024600205110ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module SearchHelper def highlight_tokens(text, tokens) return text unless text && tokens && !tokens.empty? re_tokens = tokens.collect {|t| Regexp.escape(t)} regexp = Regexp.new "(#{re_tokens.join('|')})", Regexp::IGNORECASE result = +'' text.split(regexp).each_with_index do |words, i| if result.length > 1200 # maximum length of the preview reached result << '...' break end if i.even? result << h(words.length > 100 ? "#{words.slice(0..44)} ... #{words.slice(-45..-1)}" : words) else t = (tokens.index(words.downcase) || 0) % 4 result << content_tag('span', h(words), :class => "highlight token-#{t}") end end result.html_safe end def type_label(t) l("label_#{t.singularize}_plural", :default => t.to_s.humanize) end def project_select_tag options = [[l(:label_project_all), 'all']] options << [l(:label_my_projects), 'my_projects'] unless User.current.memberships.empty? options << [l(:label_my_bookmarks), 'bookmarks'] unless User.current.bookmarked_project_ids.empty? options << [l(:label_and_its_subprojects, @project.name), 'subprojects'] unless @project.nil? || @project.descendants.active.empty? options << [@project.name, ''] unless @project.nil? label_tag("scope", l(:description_project_scope), :class => "hidden-for-sighted") + select_tag('scope', options_for_select(options, params[:scope].to_s)) if options.size > 1 end def render_results_by_type(results_by_type) links = [] # Sorts types by results count results_by_type.keys.sort_by {|k| results_by_type[k]}.reverse_each do |t| c = results_by_type[t] next if c == 0 text = "#{type_label(t)} (#{c})" links << link_to(h(text), :q => params[:q], :titles_only => params[:titles_only], :all_words => params[:all_words], :scope => params[:scope], t => 1) end ('
      '.html_safe + links.map {|link| content_tag('li', link)}.join(' ').html_safe + '
    '.html_safe) unless links.empty? end def issues_filter_path(question, options) projects_scope = options[:projects_scope] titles_only = options[:titles_only] all_words = options[:all_words] open_issues = options[:open_issues] field_to_search = titles_only ? 'subject' : 'any_searchable' params = { :set_filter => 1, :f => ['status_id', field_to_search], :op => { 'status_id' => open_issues ? 'o' : '*', field_to_search => all_words ? '~' : '*~' }, :v => {field_to_search => [question]}, :sort => 'updated_on:desc' } case projects_scope when 'all' # nothing to do when 'my_projects' params[:f] << 'project_id' params[:op]['project_id'] = '=' params[:v]['project_id'] = ['mine'] when 'bookmarks' params[:f] << 'project_id' params[:op]['project_id'] = '=' params[:v]['project_id'] = ['bookmarks'] when 'subprojects' params[:f] << 'subproject_id' params[:op]['subproject_id'] = '*' params[:project_id] = @project.id else if @project # current project only params[:f] << 'subproject_id' params[:op]['subproject_id'] = '!*' params[:project_id] = @project.id end # else all projects end issues_path(params) end end redmine-6.0.5/app/helpers/settings_helper.rb000066400000000000000000000203551500112024600211070ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module SettingsHelper def administration_settings_tabs tabs = [ {:name => 'general', :partial => 'settings/general', :label => :label_general}, {:name => 'display', :partial => 'settings/display', :label => :label_display}, {:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication}, {:name => 'api', :partial => 'settings/api', :label => :label_api}, {:name => 'projects', :partial => 'settings/projects', :label => :label_project_plural}, {:name => 'users', :partial => 'settings/users', :label => :label_user_plural}, {:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking}, {:name => 'timelog', :partial => 'settings/timelog', :label => :label_time_tracking}, {:name => 'attachments', :partial => 'settings/attachments', :label => :label_attachment_plural}, {:name => 'notifications', :partial => 'settings/notifications', :label => :field_mail_notification}, {:name => 'mail_handler', :partial => 'settings/mail_handler', :label => :label_incoming_emails}, {:name => 'repositories', :partial => 'settings/repositories', :label => :label_repository_plural} ] end def render_settings_error(errors) return if errors.blank? s = ''.html_safe errors.each do |name, message| s << content_tag('li', content_tag('b', l("setting_#{name}")) + " " + message) end h = ''.html_safe h << notice_icon('error') h << content_tag('ul', s) content_tag('div', h, :id => 'errorExplanation') end def setting_value(setting) value = nil if params[:settings] value = params[:settings][setting] end value || Setting.send(setting) end def setting_select(setting, choices, options={}) if blank_text = options.delete(:blank) choices = [[blank_text.is_a?(Symbol) ? l(blank_text) : blank_text, '']] + choices end setting_label(setting, options).html_safe + select_tag("settings[#{setting}]", options_for_select(choices, setting_value(setting).to_s), options).html_safe end def setting_multiselect(setting, choices, options={}) setting_values = setting_value(setting) setting_values = [] unless setting_values.is_a?(Array) content_tag("label", l(options[:label] || "setting_#{setting}")) + hidden_field_tag("settings[#{setting}][]", '').html_safe + choices.collect do |choice| text, value = (choice.is_a?(Array) ? choice : [choice, choice]) content_tag( 'label', check_box_tag( "settings[#{setting}][]", value, setting_values.include?(value), :id => nil ) + text.to_s, :class => (options[:inline] ? 'inline' : 'block') ) end.join.html_safe end def setting_text_field(setting, options={}) setting_label(setting, options).html_safe + text_field_tag("settings[#{setting}]", setting_value(setting), options).html_safe end def setting_text_area(setting, options={}) setting_label(setting, options).html_safe + text_area_tag("settings[#{setting}]", setting_value(setting), options).html_safe end def setting_check_box(setting, options={}) setting_label(setting, options).html_safe + hidden_field_tag("settings[#{setting}]", 0, :id => nil).html_safe + check_box_tag("settings[#{setting}]", 1, setting_value(setting).to_s != '0', options).html_safe end def setting_label(setting, options={}) label = options.delete(:label) if label == false '' else text = label.is_a?(String) ? label : l(label || "setting_#{setting}") label_tag("settings_#{setting}", text, options[:label_options]) end end # Renders a notification field for a Redmine::Notifiable option def notification_field(notifiable) tag_data = if notifiable.parent.present? {:parent_notifiable => notifiable.parent} else {:disables => "input[data-parent-notifiable=#{notifiable.name}]"} end tag = check_box_tag('settings[notified_events][]', notifiable.name, setting_value('notified_events').include?(notifiable.name), :id => nil, :data => tag_data) text = l_or_humanize(notifiable.name, :prefix => 'label_') options = {} if notifiable.parent.present? options[:class] = "parent" end content_tag(:label, tag + text, options) end def session_lifetime_options options = [[l(:label_disabled), 0]] options += [4, 8, 12].map do |hours| [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s] end options += [1, 7, 30, 60, 365].map do |days| [l('datetime.distance_in_words.x_days', :count => days), (days * 24 * 60).to_s] end options end def session_timeout_options options = [[l(:label_disabled), 0]] options += [1, 2, 4, 8, 12, 24, 48].map do |hours| [l('datetime.distance_in_words.x_hours', :count => hours), (hours * 60).to_s] end options end def link_copied_issue_options options = [ [:general_text_Yes, 'yes'], [:general_text_No, 'no'], [:label_ask, 'ask'] ] options.map {|label, value| [l(label), value.to_s]} end def copy_attachments_on_issue_copy_options options = [ [:general_text_Yes, 'yes'], [:general_text_No, 'no'], [:label_ask, 'ask'] ] options.map {|label, value| [l(label), value.to_s]} end def default_global_issue_query_options [[l(:label_none), '']] + IssueQuery.only_public.where(project_id: nil).pluck(:name, :id) end def default_global_project_query_options [[l(:label_none), '']] + ProjectQuery.only_public.pluck(:name, :id) end def cross_project_subtasks_options options = [ [:label_disabled, ''], [:label_cross_project_system, 'system'], [:label_cross_project_tree, 'tree'], [:label_cross_project_hierarchy, 'hierarchy'], [:label_cross_project_descendants, 'descendants'] ] options.map {|label, value| [l(label), value.to_s]} end def parent_issue_dates_options options = [ [:label_parent_task_attributes_derived, 'derived'], [:label_parent_task_attributes_independent, 'independent'] ] options.map {|label, value| [l(label), value.to_s]} end def parent_issue_priority_options options = [ [:label_parent_task_attributes_derived, 'derived'], [:label_parent_task_attributes_independent, 'independent'] ] options.map {|label, value| [l(label), value.to_s]} end def parent_issue_done_ratio_options options = [ [:label_parent_task_attributes_derived, 'derived'], [:label_parent_task_attributes_independent, 'independent'] ] options.map {|label, value| [l(label), value.to_s]} end # Returns the options for the date_format setting def date_format_setting_options(locale) Setting::DATE_FORMATS.map do |f| today = ::I18n.l(User.current.today, :locale => locale, :format => f) format = f.delete('%').gsub(/[dmY]/) do {'d' => 'dd', 'm' => 'mm', 'Y' => 'yyyy'}[$&] end ["#{today} (#{format})", f] end end def gravatar_default_setting_options [['Identicons', 'identicon'], ['Monster ids', 'monsterid'], ['Mystery man', 'mm'], ['Retro', 'retro'], ['Robohash', 'robohash'], ['Wavatars', 'wavatar']] end end redmine-6.0.5/app/helpers/sort_helper.rb000066400000000000000000000112111500112024600202250ustar00rootroot00000000000000# frozen_string_literal: true # Helpers to sort tables using clickable column headers. # # Author: Stuart Rackham , March 2005. # Jean-Philippe Lang, 2009 # License: This source code is released under the MIT license. # # - Consecutive clicks toggle the column's sort order. # - Sort state is maintained by a session hash entry. # - CSS classes identify sort column and state. # - Typically used in conjunction with the Pagination module. # # Example code snippets: # # Controller: # # helper :sort # include SortHelper # # def list # sort_init 'last_name' # sort_update %w(first_name last_name) # @items = Contact.find_all nil, sort_clause # end # # Controller (using Pagination module): # # helper :sort # include SortHelper # # def list # sort_init 'last_name' # sort_update %w(first_name last_name) # @contact_pages, @items = paginate :contacts, # :order_by => sort_clause, # :per_page => 10 # end # # View (table header in list.rhtml): # # # # <%= sort_header_tag('id', :title => 'Sort by contact ID') %> # <%= sort_header_tag('last_name', :caption => 'Name') %> # <%= sort_header_tag('phone') %> # <%= sort_header_tag('address', :width => 200) %> # # # # - Introduces instance variables: @sort_default, @sort_criteria # - Introduces param :sort # module SortHelper def sort_name controller_name + '_' + action_name + '_sort' end # Initializes the default sort. # Examples: # # sort_init 'name' # sort_init 'id', 'desc' # sort_init ['name', ['id', 'desc']] # sort_init [['name', 'desc'], ['id', 'desc']] # def sort_init(*args) case args.size when 1 @sort_default = args.first.is_a?(Array) ? args.first : [[args.first]] when 2 @sort_default = [[args.first, args.last]] else raise ArgumentError end end # Updates the sort state. Call this in the controller prior to calling # sort_clause. # - criteria can be either an array or a hash of allowed keys # def sort_update(criteria, sort_name=nil) sort_name ||= self.sort_name @sort_criteria = Redmine::SortCriteria.new(params[:sort] || session[sort_name] || @sort_default) @sortable_columns = criteria session[sort_name] = @sort_criteria.to_param end # Clears the sort criteria session data # def sort_clear session[sort_name] = nil end # Returns an SQL sort clause corresponding to the current sort state. # Use this to sort the controller's table items collection. # def sort_clause @sort_criteria.sort_clause(@sortable_columns) end def sort_criteria @sort_criteria end # Returns a link which sorts by the named column. # # - column is the name of an attribute in the sorted record collection. # - the optional caption explicitly specifies the displayed link text. # - 2 CSS classes reflect the state of the link: sort and asc or desc # def sort_link(column, caption, default_order) css, order = nil, default_order if column.to_s == @sort_criteria.first_key if @sort_criteria.first_asc? css = 'sort asc icon icon-sorted-desc' icon = 'angle-up' order = 'desc' else css = 'sort desc icon icon-sorted-asc' icon = 'angle-down' order = 'asc' end end caption = column.to_s.humanize unless caption sort_options = {:sort => @sort_criteria.add(column.to_s, order).to_param} link_to(sprite_icon(icon, caption), { :params => request.query_parameters.merge(sort_options)}, :class => css) end # Returns a table header tag with a sort link for the named column # attribute. # # Options: # :caption The displayed link name (defaults to titleized column name). # :title The tag's 'title' attribute (defaults to 'Sort by :caption'). # # Other options hash entries generate additional table header tag attributes. # # Example: # # <%= sort_header_tag('id', :title => 'Sort by contact ID', :width => 40) %> # def sort_header_tag(column, options = {}) caption = options.delete(:caption) || column.to_s.humanize default_order = options.delete(:default_order) || 'asc' options[:title] = l(:label_sort_by, "\"#{caption}\"") unless options[:title] content_tag('th', sort_link(column, caption, default_order), options) end # Returns the css classes for the current sort order # # Example: # # sort_css_classes # # => "sort-by-created-on sort-desc" def sort_css_classes if @sort_criteria.first_key "sort-by-#{@sort_criteria.first_key.to_s.dasherize} sort-#{@sort_criteria.first_asc? ? 'asc' : 'desc'}" end end end redmine-6.0.5/app/helpers/timelog_helper.rb000066400000000000000000000114211500112024600207010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module TimelogHelper include ApplicationHelper # Returns a collection of activities for a select field. time_entry # is optional and will be used to check if the selected TimeEntryActivity # is active. def activity_collection_for_select_options(time_entry=nil, project=nil) project ||= time_entry.try(:project) project ||= @project activities = TimeEntryActivity.available_activities(project) collection = [] if time_entry && time_entry.activity && !time_entry.activity.active? collection << ["--- #{l(:actionview_instancetag_blank_option)} ---", ''] else unless activities.detect(&:is_default) collection << ["--- #{l(:actionview_instancetag_blank_option)} ---", ''] end end activities.each {|a| collection << [a.name, a.id]} collection end def user_collection_for_select_options(time_entry) collection = time_entry.assignable_users if time_entry.user && !collection.include?(time_entry.user) collection << time_entry.user end principals_options_for_select(collection, time_entry.user_id.to_s) end def default_activity(time_entry) if @project time_entry.activity_id else TimeEntryActivity.default_activity_id(User.current, time_entry.project) end end def select_hours(data, criteria, value) if value.to_s.empty? data.select {|row| row[criteria].blank?} else data.select {|row| row[criteria].to_s == value.to_s} end end def sum_hours(data) sum = 0 data.each do |row| sum += row['hours'].to_f end sum end def format_criteria_value(criteria_options, value, html=true) if value.blank? "[#{l(:label_none)}]" elsif k = criteria_options[:klass] obj = k.find_by_id(value.to_i) if obj.is_a?(Issue) if obj.visible? html ? link_to_issue(obj) : "#{obj.tracker} ##{obj.id}: #{obj.subject}" else "##{obj.id}" end else format_object(obj, html: html) end elsif cf = criteria_options[:custom_field] format_value(value, cf) else value.to_s end end def report_to_csv(report) Redmine::Export::CSV.generate(:encoding => params[:encoding]) do |csv| # Column headers headers = report.criteria.collect do |criteria| l_or_humanize(report.available_criteria[criteria][:label]) end headers += report.periods headers << l(:label_total_time) csv << headers # Content report_criteria_to_csv(csv, report.available_criteria, report.columns, report.criteria, report.periods, report.hours) # Total row str_total = l(:label_total_time) row = [str_total] + [''] * (report.criteria.size - 1) total = 0 report.periods.each do |period| sum = sum_hours(select_hours(report.hours, report.columns, period.to_s)) total += sum row << (sum > 0 ? sum : '') end row << total csv << row end end def report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours, level=0) hours.collect {|h| h[criteria[level]].to_s}.uniq.each do |value| hours_for_value = select_hours(hours, criteria[level], value) next if hours_for_value.empty? row = [''] * level row << format_criteria_value(available_criteria[criteria[level]], value, false).to_s row += [''] * (criteria.length - level - 1) total = 0 periods.each do |period| sum = sum_hours(select_hours(hours_for_value, columns, period.to_s)) total += sum row << (sum > 0 ? sum : '') end row << total csv << row if criteria.length > level + 1 report_criteria_to_csv(csv, available_criteria, columns, criteria, periods, hours_for_value, level + 1) end end end def cancel_button_tag_for_time_entry(project) fallback_path = project ? project_time_entries_path(project) : time_entries_path cancel_button_tag(fallback_path) end end redmine-6.0.5/app/helpers/trackers_helper.rb000066400000000000000000000020201500112024600210520ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module TrackersHelper def tracker_name_tag(tracker) title = tracker.description.presence css = title ? "field-description" : nil content_tag 'span', tracker.name, :class => css, :title => title end end redmine-6.0.5/app/helpers/twofa_helper.rb000066400000000000000000000016261500112024600203670ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module TwofaHelper def require_active_twofa Setting.twofa? ? true : deny_access end end redmine-6.0.5/app/helpers/user_queries_helper.rb000066400000000000000000000032411500112024600217550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module UserQueriesHelper def column_value(column, object, value) if object.is_a?(User) && column.name == :status user_status_label(column.value_object(object)) else super end end def csv_value(column, object, value) if object.is_a?(User) case column.name when :status user_status_label(column.value_object(object)) when :twofa_scheme twofa_scheme_label value else super end else super end end def user_status_label(value) case value.to_i when User::STATUS_ACTIVE l(:status_active) when User::STATUS_REGISTERED l(:status_registered) when User::STATUS_LOCKED l(:status_locked) end end def twofa_scheme_label(value) if value ::I18n.t :"twofa__#{value}__name" else ::I18n.t :label_disabled end end end redmine-6.0.5/app/helpers/users_helper.rb000066400000000000000000000104671500112024600204130ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module UsersHelper include ApplicationHelper def user_mail_notification_options(user) user.valid_notification_options.collect {|o| [l(o.last), o.first]} end def default_issue_query_options(user) global_queries = IssueQuery.for_all_projects global_public_queries = global_queries.only_public global_user_queries = global_queries.where(user_id: user.id).where.not(id: global_public_queries.pluck(:id)) label = user == User.current ? 'label_my_queries' : 'label_default_queries.for_this_user' grouped = { l('label_default_queries.for_all_users') => global_public_queries.pluck(:name, :id), l(".#{label}") => global_user_queries.pluck(:name, :id), } grouped_options_for_select(grouped, user.pref.default_issue_query) end def default_project_query_options(user) global_queries = ProjectQuery global_public_queries = global_queries.only_public global_user_queries = global_queries.where(user_id: user.id).where.not(id: global_public_queries.ids) label = user == User.current ? 'label_my_queries' : 'label_default_queries.for_this_user' grouped = { l('label_default_queries.for_all_users') => global_public_queries.pluck(:name, :id), l(".#{label}") => global_user_queries.pluck(:name, :id), } grouped_options_for_select(grouped, user.pref.default_project_query) end def textarea_font_options [[l(:label_font_default), '']] + UserPreference::TEXTAREA_FONT_OPTIONS.map {|o| [l("label_font_#{o}"), o]} end def history_default_tab_options [[l('label_issue_history_notes'), 'notes'], [l('label_history'), 'history'], [l('label_issue_history_properties'), 'properties'], [l('label_time_entry_plural'), 'time_entries'], [l('label_associated_revisions'), 'changesets'], [l('label_last_tab_visited'), 'last_tab_visited']] end def auto_watch_on_options UserPreference::AUTO_WATCH_ON_OPTIONS.index_by {|o| l("label_auto_watch_on_#{o}")} end def change_status_link(user) url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil} if user.locked? link_to sprite_icon('unlock', l(:button_unlock)), url.merge(:user => { :status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock' elsif user.registered? link_to sprite_icon('unlock', l(:button_activate)), url.merge(:user => { :status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock' elsif user != User.current link_to sprite_icon('lock', l(:button_lock)), url.merge(:user => { :status => User::STATUS_LOCKED}), :method => :put, :class => 'icon icon-lock' end end def additional_emails_link(user) if user.email_addresses.count > 1 || Setting.max_additional_emails.to_i > 0 link_to sprite_icon('email', l(:label_email_address_plural)), user_email_addresses_path(@user), :class => 'icon icon-email-add', :remote => true end end def user_emails(user) emails = [user.mail] emails += user.email_addresses.order(:id).where(:is_default => false).pluck(:address) emails.map {|email| mail_to(email, nil)}.join(', ').html_safe end def user_settings_tabs tabs = [ {:name => 'general', :partial => 'users/general', :label => :label_general}, {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural} ] if Group.givable.any? tabs.insert 1, {:name => 'groups', :partial => 'users/groups', :label => :label_group_plural} end tabs end end redmine-6.0.5/app/helpers/versions_helper.rb000066400000000000000000000071401500112024600211140ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module VersionsHelper include Redmine::Export::Text::VersionsTextHelper def version_anchor(version) if @project == version.project anchor version.name else anchor "#{version.project.try(:identifier)}-#{version.name}" end end def version_filtered_issues_path(version, options = {}) options = {:fixed_version_id => version, :set_filter => 1}.merge(options) project = case version.sharing when 'tree' if version.project && version.project.root.visible? && User.current.allowed_to?(:view_issues, version.project.root) version.project.root else nil end when 'system' nil else version.project end if project project_issues_path(project, options) else issues_path(options) end end STATUS_BY_CRITERIAS = %w(tracker status priority author assigned_to category) def render_issue_status_by(version, criteria) criteria = 'tracker' unless STATUS_BY_CRITERIAS.include?(criteria) h = Hash.new {|k, v| k[v] = [0, 0]} begin # Total issue count version.visible_fixed_issues.group(criteria).count.each {|c, s| h[c][0] = s} # Open issues count version.visible_fixed_issues.open.group(criteria).count.each {|c, s| h[c][1] = s} rescue ActiveRecord::RecordNotFound # When grouping by an association, Rails throws this exception if there's no result (bug) end # Sort with nil keys in last position sorted_keys = h.keys.sort do |a, b| if a.nil? 1 else b.nil? ? -1 : a <=> b end end counts = sorted_keys.collect do |k| {:group => k, :total => h[k][0], :open => h[k][1], :closed => (h[k][0] - h[k][1])} end max = counts.pluck(:total).max render :partial => 'issue_counts', :locals => {:version => version, :criteria => criteria, :counts => counts, :max => max} end def status_by_options_for_select(value) options_for_select(STATUS_BY_CRITERIAS.collect {|criteria| [l(:"field_#{criteria}"), criteria]}, value) end def link_to_new_issue(version, project) if version.open? && User.current.allowed_to?(:add_issues, project) trackers = Issue.allowed_target_trackers(project) unless trackers.empty? issue = Issue.new(:project => project) new_issue_tracker = trackers.detect do |tracker| issue.tracker = tracker issue.safe_attribute?('fixed_version_id') end end if new_issue_tracker attrs = { :tracker_id => new_issue_tracker, :fixed_version_id => version.id } link_to sprite_icon('add', l(:label_issue_new)), new_project_issue_path(project, :issue => attrs, :back_url => version_path(version)), :class => 'icon icon-add' end end end end redmine-6.0.5/app/helpers/watchers_helper.rb000066400000000000000000000067351500112024600210750ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module WatchersHelper def watcher_link(objects, user) return '' unless user && user.logged? objects = Array.wrap(objects) return '' unless objects.any? watched = Watcher.any_watched?(objects, user) css = [watcher_css(objects), watched ? 'icon icon-fav' : 'icon icon-fav-off'].join(' ') text = watched ? l(:button_unwatch) : l(:button_watch) url = watch_path( :object_type => objects.first.class.to_s.underscore, :object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort) ) method = watched ? 'delete' : 'post' link_to sprite_icon('fav', text), url, :remote => true, :method => method, :class => css end # Returns the css class used to identify watch links for a given +object+ def watcher_css(objects) objects = Array.wrap(objects) id = (objects.size == 1 ? objects.first.id : 'bulk') "#{objects.first.class.to_s.underscore}-#{id}-watcher" end # Returns a comma separated list of users watching the given object def watchers_list(object) remove_allowed = User.current.allowed_to?(:"delete_#{object.class.name.underscore}_watchers", object.project) content = ''.html_safe lis = object.watcher_users.sorted.collect do |user| s = ''.html_safe s << avatar(user, :size => "16").to_s if user.is_a?(User) s << link_to_principal(user, class: user.class.to_s.downcase) if object.respond_to?(:visible?) && user.is_a?(User) && !object.visible?(user) s << content_tag('span', sprite_icon('warning', l(:notice_invalid_watcher)), class: 'icon-only icon-warning', title: l(:notice_invalid_watcher)) end if remove_allowed url = {:controller => 'watchers', :action => 'destroy', :object_type => object.class.to_s.underscore, :object_id => object.id, :user_id => user} s << ' ' s << link_to(sprite_icon('del', l(:button_delete)), url, :remote => true, :method => 'delete', :class => "delete icon-only icon-del", :title => l(:button_delete)) end content << content_tag('li', s, :class => "user-#{user.id}") end content.present? ? content_tag('ul', content, :class => 'watchers') : content end def watchers_checkboxes(object, users, checked=nil) users.map do |user| c = checked.nil? ? object.watcher_user_ids.include?(user.id) : checked tag = check_box_tag 'issue[watcher_user_ids][]', user.id, c, :id => nil content_tag 'label', "#{tag} #{h(user)}".html_safe, :id => "issue_watcher_user_ids_#{user.id}", :class => "floating" end.join.html_safe end end redmine-6.0.5/app/helpers/welcome_helper.rb000066400000000000000000000015171500112024600207010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module WelcomeHelper end redmine-6.0.5/app/helpers/wiki_helper.rb000066400000000000000000000053601500112024600202110ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module WikiHelper include Redmine::Export::PDF::WikiPdfHelper def wiki_page_options_for_select(pages, selected = nil, parent = nil, level = 0) pages = pages.group_by(&:parent) unless pages.is_a?(Hash) s = (+'').html_safe if pages.has_key?(parent) pages[parent].each do |page| attrs = "value='#{page.id}'" attrs << " selected='selected'" if selected == page indent = (level > 0) ? (' ' * level * 2 + '» ') : '' s << content_tag('option', (indent + h(page.pretty_title)).html_safe, :value => page.id.to_s, :selected => selected == page) + wiki_page_options_for_select(pages, selected, page, level + 1) end end s end def wiki_page_wiki_options_for_select(page) projects = Project.allowed_to(:rename_wiki_pages).joins(:wiki).preload(:wiki).to_a projects << page.project unless projects.include?(page.project) project_tree_options_for_select(projects, :selected => page.project) do |project| wiki_id = project.wiki.try(:id) {:value => wiki_id, :selected => wiki_id == page.wiki_id} end end def wiki_page_breadcrumb(page) breadcrumb( page.ancestors.reverse.collect do |parent| link_to( h(parent.pretty_title), {:controller => 'wiki', :action => 'show', :id => parent.title, :project_id => parent.project, :version => nil} ) end ) end # Returns the path for the Cancel link when editing a wiki page def wiki_page_edit_cancel_path(page) if page.new_record? if parent = page.parent project_wiki_page_path(parent.project, parent.title) else project_wiki_index_path(page.project) end else project_wiki_page_path(page.project, page.title) end end def wiki_content_update_info(content) l(:label_updated_time_by, :author => link_to_user(content.author), :age => time_tag(content.updated_on)).html_safe end end redmine-6.0.5/app/helpers/workflows_helper.rb000066400000000000000000000070211500112024600212770ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module WorkflowsHelper def options_for_workflow_select(name, objects, selected, options={}) option_tags = ''.html_safe multiple = false if selected if selected.size == objects.size selected = 'all' else selected = selected.map(&:id) if selected.size > 1 multiple = true end end else selected = objects.first.try(:id) end all_tag_options = {:value => 'all', :selected => (selected == 'all')} if multiple all_tag_options[:style] = "display:none;" end option_tags << content_tag('option', l(:label_all), all_tag_options) option_tags << options_from_collection_for_select(objects, "id", "name", selected) select_tag name, option_tags, {:multiple => multiple}.merge(options) end def field_required?(field) field.is_a?(CustomField) ? field.is_required? : %w(project_id tracker_id subject priority_id is_private).include?(field) end def field_permission_tag(permissions, status, field, roles) name = field.is_a?(CustomField) ? field.id.to_s : field options = [["", ""], [l(:label_readonly), "readonly"]] options << [l(:label_required), "required"] unless field_required?(field) html_options = {} if perm = permissions[status.id][name] if perm.uniq.size > 1 || perm.size < @roles.size * @trackers.size options << [l(:label_no_change_option), "no_change"] selected = 'no_change' else selected = perm.first end end hidden = field.is_a?(CustomField) && !field.visible? && !roles.detect {|role| role.custom_fields.to_a.include?(field)} if hidden options[0][0] = l(:label_hidden) selected = '' html_options[:disabled] = true end select_tag("permissions[#{status.id}][#{name}]", options_for_select(options, selected), html_options) end def transition_tag(transition_count, old_status, new_status, name) w = transition_count tag_name = "transitions[#{ old_status.try(:id) || 0 }][#{new_status.id}][#{name}]" if old_status == new_status check_box_tag(tag_name, "1", true, {:disabled => true, :class => "old-status-#{old_status.try(:id) || 0} new-status-#{new_status.id}"}) elsif w == 0 || w == @roles.size * @trackers.size hidden_field_tag(tag_name, "0", :id => nil) + check_box_tag(tag_name, "1", w != 0, :class => "old-status-#{old_status.try(:id) || 0} new-status-#{new_status.id}") else select_tag( tag_name, options_for_select( [ [l(:general_text_Yes), "1"], [l(:general_text_No), "0"], [l(:label_no_change_option), "no_change"] ], "no_change") ) end end end redmine-6.0.5/app/jobs/000077500000000000000000000000001500112024600146515ustar00rootroot00000000000000redmine-6.0.5/app/jobs/application_job.rb000066400000000000000000000002151500112024600203310ustar00rootroot00000000000000# frozen_string_literal: true class ApplicationJob < ActiveJob::Base include Redmine::JobWrapper around_enqueue :keep_current_user end redmine-6.0.5/app/jobs/destroy_project_job.rb000066400000000000000000000040651500112024600212540ustar00rootroot00000000000000# frozen_string_literal: true class DestroyProjectJob < ApplicationJob include Redmine::I18n def self.schedule(project, user: User.current) # make the project (and any children) disappear immediately project.self_and_descendants.update_all status: Project::STATUS_SCHEDULED_FOR_DELETION perform_later project.id, user.id, user.remote_ip end def perform(project_id, user_id, remote_ip) user_current_was = User.current unless @user = User.active.find_by_id(user_id) info "User check failed: User #{user_id} triggering project destroy does not exist anymore or isn't active." return end @user.remote_ip = remote_ip User.current = @user set_language_if_valid @user.language || Setting.default_language unless @project = Project.find_by_id(project_id) info "Project check failed: Project has already been deleted." return end unless @project.deletable? info "Project check failed: User #{user_id} lacks permissions." return end message = if @project.descendants.any? :mail_destroy_project_with_subprojects_successful else :mail_destroy_project_successful end delete_project ? success(message) : failure ensure User.current = user_current_was info "End destroy project" end private def delete_project info "Starting with project deletion" return !!@project.destroy rescue info "Error while deleting project: #{$!}" false end def success(message) Mailer.deliver_security_notification( @user, @user, message: message, value: @project.name, url: {controller: 'admin', action: 'projects'}, title: :label_project_plural ) end def failure Mailer.deliver_security_notification( @user, @user, message: :mail_destroy_project_failed, value: @project.name, url: {controller: 'admin', action: 'projects'}, title: :label_project_plural ) end def info(msg) Rails.logger.info("[DestroyProjectJob] --- #{msg}") end end redmine-6.0.5/app/jobs/destroy_projects_job.rb000066400000000000000000000015771500112024600214440ustar00rootroot00000000000000# frozen_string_literal: true class DestroyProjectsJob < ApplicationJob include Redmine::I18n def self.schedule(projects_to_delete, user: User.current) # make the projects disappear immediately projects_to_delete.each do |project| project.self_and_descendants.update_all status: Project::STATUS_SCHEDULED_FOR_DELETION end perform_later(projects_to_delete.map(&:id), user.id, user.remote_ip) end def perform(project_ids, user_id, remote_ip) user = User.active.find_by_id(user_id) unless user&.admin? info "[DestroyProjectsJob] --- User check failed: User #{user_id} triggering projects destroy does not exist anymore or isn't admin/active." return end project_ids.each do |project_id| DestroyProjectJob.perform_now(project_id, user_id, remote_ip) end end private def info(*msg) Rails.logger.info(*msg) end end redmine-6.0.5/app/models/000077500000000000000000000000001500112024600151775ustar00rootroot00000000000000redmine-6.0.5/app/models/anonymous_user.rb000066400000000000000000000033671500112024600206230ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AnonymousUser < User validate :validate_anonymous_uniqueness, :on => :create self.valid_statuses = [STATUS_ANONYMOUS] def validate_anonymous_uniqueness # There should be only one AnonymousUser in the database errors.add :base, 'An anonymous user already exists.' if AnonymousUser.unscoped.exists? end def available_custom_fields [] end # Overrides a few properties def logged?; false end def admin; false end def name(*args); I18n.t(:label_user_anonymous) end def mail=(*args); nil end def mail; nil end def time_zone; nil end def atom_key; nil end def pref UserPreference.new(:user => self) end # Returns the user's bult-in role def builtin_role @builtin_role ||= Role.anonymous end def membership(*args) nil end def member_of?(*args) false end # Anonymous user can not be destroyed def destroy false end protected def instantiate_email_address end end redmine-6.0.5/app/models/application_record.rb000066400000000000000000000024451500112024600213720ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ApplicationRecord < ActiveRecord::Base self.abstract_class = true # Translate attribute names for validation errors display def self.human_attribute_name(attr, options = {}) prepared_attr = attr.to_s.sub(/_id$/, '').sub(/^.+\./, '') class_prefix = name.underscore.tr('/', '_') redmine_default = [ :"field_#{class_prefix}_#{prepared_attr}", :"field_#{prepared_attr}" ] options[:default] = redmine_default + Array(options[:default]) super end end redmine-6.0.5/app/models/attachment.rb000066400000000000000000000422331500112024600176600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require "digest" require "fileutils" require "zip" class Attachment < ApplicationRecord include Redmine::SafeAttributes belongs_to :container, :polymorphic => true belongs_to :author, :class_name => "User" validates_presence_of :filename, :author validates_length_of :filename, :maximum => 255 validates_length_of :disk_filename, :maximum => 255 validates_length_of :description, :maximum => 255 validate :validate_max_file_size validate :validate_file_extension, :if => :filename_changed? acts_as_event( :title => :filename, :url => Proc.new do |o| {:controller => 'attachments', :action => 'show', :id => o.id, :filename => o.filename} end ) acts_as_activity_provider( :type => 'files', :permission => :view_files, :author_key => :author_id, :scope => proc do select("#{Attachment.table_name}.*"). where(container_type: ['Version', 'Project']). joins( "LEFT JOIN #{Version.table_name} " \ "ON #{Attachment.table_name}.container_type='Version' " \ "AND #{Version.table_name}.id = #{Attachment.table_name}.container_id " \ "LEFT JOIN #{Project.table_name} " \ "ON #{Version.table_name}.project_id = #{Project.table_name}.id " \ "OR ( #{Attachment.table_name}.container_type='Project' " \ "AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )" ) end ) acts_as_activity_provider( :type => 'documents', :permission => :view_documents, :author_key => :author_id, :scope => proc do select("#{Attachment.table_name}.*"). joins( "LEFT JOIN #{Document.table_name} " \ "ON #{Attachment.table_name}.container_type='Document' " \ "AND #{Document.table_name}.id = #{Attachment.table_name}.container_id " \ "LEFT JOIN #{Project.table_name} " \ "ON #{Document.table_name}.project_id = #{Project.table_name}.id" ) end ) cattr_accessor :storage_path @@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files") cattr_accessor :thumbnails_storage_path @@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails") before_create :files_to_final_location after_commit :delete_from_disk, :on => :destroy after_commit :reuse_existing_file_if_possible, :on => :create after_rollback :delete_from_disk, :on => :create safe_attributes 'filename', 'content_type', 'description' # Returns an unsaved copy of the attachment def copy(attributes=nil) copy = self.class.new copy.attributes = self.attributes.dup.except("id", "downloads") copy.attributes = attributes if attributes copy end def validate_max_file_size if @temp_file && self.filesize > Setting.attachment_max_size.to_i.kilobytes errors.add(:base, l(:error_attachment_too_big, :max_size => Setting.attachment_max_size.to_i.kilobytes)) end end def validate_file_extension extension = File.extname(filename) unless self.class.valid_extension?(extension) errors.add(:base, l(:error_attachment_extension_not_allowed, :extension => extension)) end end def file=(incoming_file) unless incoming_file.nil? @temp_file = incoming_file if @temp_file.respond_to?(:original_filename) self.filename = @temp_file.original_filename self.filename.force_encoding("UTF-8") end if @temp_file.respond_to?(:content_type) self.content_type = @temp_file.content_type.to_s.chomp end self.filesize = @temp_file.size end end def file nil end def filename=(arg) write_attribute :filename, sanitize_filename(arg.to_s) filename end # Copies the temporary file to its final location # and computes its hash def files_to_final_location if @temp_file self.disk_directory = target_directory sha = Digest::SHA256.new Attachment.create_diskfile(filename, disk_directory) do |f| self.disk_filename = File.basename f.path logger.info("Saving attachment '#{self.diskfile}' (#{@temp_file.size} bytes)") if logger if @temp_file.respond_to?(:read) buffer = "" while (buffer = @temp_file.read(8192)) f.write(buffer) sha.update(buffer) end else f.write(@temp_file) sha.update(@temp_file) end end self.digest = sha.hexdigest end @temp_file = nil if content_type.blank? && filename.present? self.content_type = Redmine::MimeType.of(filename) end # Don't save the content type if it's longer than the authorized length if self.content_type && self.content_type.length > 255 self.content_type = nil end end # Deletes the file from the file system if it's not referenced by other attachments def delete_from_disk if Attachment.where("disk_filename = ? AND id <> ?", disk_filename, id).empty? delete_from_disk! end end # Returns file's location on disk def diskfile File.join(self.class.storage_path, disk_directory.to_s, disk_filename.to_s) end def title title = filename.dup if description.present? title << " (#{description})" end title end def increment_download increment!(:downloads) end def project container.try(:project) end def visible?(user=User.current) if container_id container && container.attachments_visible?(user) else author == user end end def editable?(user=User.current) if container_id container && container.attachments_editable?(user) else author == user end end def deletable?(user=User.current) if container_id container && container.attachments_deletable?(user) else author == user end end def image? !!(self.filename =~ /\.(bmp|gif|jpg|jpe|jpeg|png|webp)$/i) end def thumbnailable? Redmine::Thumbnail.convert_available? && ( image? || (is_pdf? && Redmine::Thumbnail.gs_available?) ) end # Returns the full path the attachment thumbnail, or nil # if the thumbnail cannot be generated. def thumbnail(options={}) if thumbnailable? && readable? size = options[:size].to_i if size > 0 # Limit the number of thumbnails per image size = (size / 50.0).ceil * 50 # Maximum thumbnail size size = 800 if size > 800 else size = Setting.thumbnails_size.to_i end size = 100 unless size > 0 target = thumbnail_path(size) begin Redmine::Thumbnail.generate(self.diskfile, target, size, is_pdf?) rescue => e if logger logger.error( "An error occured while generating thumbnail for #{disk_filename} " \ "to #{target}\nException was: #{e.message}" ) end nil end end end # Deletes all thumbnails def self.clear_thumbnails Dir.glob(File.join(thumbnails_storage_path, "*.thumb")).each do |file| File.delete file end end def is_text? Redmine::MimeType.is_type?('text', filename) || Redmine::SyntaxHighlighting.filename_supported?(filename) end def is_markdown? Redmine::MimeType.of(filename) == 'text/markdown' end def is_textile? Redmine::MimeType.of(filename) == 'text/x-textile' end def is_image? Redmine::MimeType.is_type?('image', filename) end def is_diff? /\.(patch|diff)$/i.match?(filename) end def is_pdf? Redmine::MimeType.of(filename) == "application/pdf" end def is_video? Redmine::MimeType.is_type?('video', filename) end def is_audio? Redmine::MimeType.is_type?('audio', filename) end def previewable? is_text? || is_image? || is_video? || is_audio? end # Returns true if the file is readable def readable? disk_filename.present? && File.readable?(diskfile) end # Returns the attachment token def token "#{id}.#{digest}" end # Finds an attachment that matches the given token and that has no container def self.find_by_token(token) if token.to_s =~ /^(\d+)\.([0-9a-f]+)$/ attachment_id, attachment_digest = $1, $2 attachment = Attachment.find_by(:id => attachment_id, :digest => attachment_digest) if attachment && attachment.container.nil? attachment end end end # Bulk attaches a set of files to an object # # Returns a Hash of the results: # :files => array of the attached files # :unsaved => array of the files that could not be attached def self.attach_files(obj, attachments) result = obj.save_attachments(attachments, User.current) obj.attach_saved_attachments result end # Updates the filename and description of a set of attachments # with the given hash of attributes. Returns true if all # attachments were updated. # # Example: # Attachment.update_attachments(attachments, { # 4 => {:filename => 'foo'}, # 7 => {:filename => 'bar', :description => 'file description'} # }) # def self.update_attachments(attachments, params) converted = {} params.each {|key, val| converted[key.to_i] = val} saved = true transaction do attachments.each do |attachment| if file = converted[attachment.id] attachment.filename = file[:filename] if file.key?(:filename) attachment.description = file[:description] if file.key?(:description) saved &&= attachment.save end end unless saved raise ActiveRecord::Rollback end end saved end def self.latest_attach(attachments, filename) return unless filename.valid_encoding? attachments.sort_by{|attachment| [attachment.created_on, attachment.id]}.reverse.detect do |att| filename.casecmp?(att.filename) end end def self.prune(age=1.day) Attachment.where("created_on < ? AND (container_type IS NULL OR container_type = '')", Time.now - age).destroy_all end def self.archive_attachments(attachments) attachments = attachments.select(&:readable?) return nil if attachments.blank? Zip.unicode_names = true archived_file_names = [] buffer = Zip::OutputStream.write_buffer do |zos| attachments.each do |attachment| filename = attachment.filename # rename the file if a file with the same name already exists dup_count = 0 while archived_file_names.include?(filename) dup_count += 1 extname = File.extname(attachment.filename) basename = File.basename(attachment.filename, extname) filename = "#{basename}(#{dup_count})#{extname}" end zos.put_next_entry(filename) zos << IO.binread(attachment.diskfile) archived_file_names << filename end end buffer.string ensure buffer&.close end # Moves an existing attachment to its target directory def move_to_target_directory! return unless !new_record? & readable? src = diskfile self.disk_directory = target_directory dest = diskfile return if src == dest unless FileUtils.mkdir_p(File.dirname(dest)) logger.error "Could not create directory #{File.dirname(dest)}" if logger return end unless FileUtils.mv(src, dest) logger.error "Could not move attachment from #{src} to #{dest}" if logger return end update_column :disk_directory, disk_directory end # Moves existing attachments that are stored at the root of the files # directory (ie. created before Redmine 2.3) to their target subdirectories def self.move_from_root_to_target_directory Attachment.where("disk_directory IS NULL OR disk_directory = ''").find_each do |attachment| attachment.move_to_target_directory! end end # Updates digests to SHA256 for all attachments that have a MD5 digest # (ie. created before Redmine 3.4) def self.update_digests_to_sha256 Attachment.where("length(digest) < 64").find_each do |attachment| attachment.update_digest_to_sha256! end end # Updates attachment digest to SHA256 def update_digest_to_sha256! if readable? sha = Digest::SHA256.new File.open(diskfile, 'rb') do |f| while buffer = f.read(8192) sha.update(buffer) end end update_column :digest, sha.hexdigest end end # Returns true if the extension is allowed regarding allowed/denied # extensions defined in application settings, otherwise false def self.valid_extension?(extension) denied, allowed = [:attachment_extensions_denied, :attachment_extensions_allowed].map do |setting| Setting.send(setting) end if denied.present? && extension_in?(extension, denied) return false end if allowed.present? && !extension_in?(extension, allowed) return false end true end # Returns true if extension belongs to extensions list. def self.extension_in?(extension, extensions) extension = extension.downcase.sub(/\A\.+/, '') unless extensions.is_a?(Array) extensions = extensions.to_s.split(",").map(&:strip) end extensions = extensions.map {|s| s.downcase.sub(/\A\.+/, '')}.reject(&:blank?) extensions.include?(extension) end # Returns true if attachment's extension belongs to extensions list. def extension_in?(extensions) self.class.extension_in?(File.extname(filename), extensions) end # returns either MD5 or SHA256 depending on the way self.digest was computed def digest_type digest.size < 64 ? "MD5" : "SHA256" if digest.present? end private def reuse_existing_file_if_possible original_diskfile = diskfile original_filename = disk_filename reused = with_lock do if existing = Attachment .where(digest: self.digest, filesize: self.filesize) .where.not(disk_filename: original_filename) .order(:id) .last existing.with_lock do existing_diskfile = existing.diskfile if File.readable?(original_diskfile) && File.readable?(existing_diskfile) && FileUtils.identical?(original_diskfile, existing_diskfile) self.update_columns disk_directory: existing.disk_directory, disk_filename: existing.disk_filename end end end end if reused && Attachment.where(disk_filename: original_filename).none? File.delete(original_diskfile) end rescue ActiveRecord::StatementInvalid, ActiveRecord::RecordNotFound # Catch and ignore lock errors. It is not critical if deduplication does # not happen, therefore we do not retry. # with_lock throws ActiveRecord::RecordNotFound if the record isnt there # anymore, thats why this is caught and ignored as well. end # Physically deletes the file from the file system def delete_from_disk! FileUtils.rm_f(diskfile) if disk_filename.present? Dir[thumbnail_path("*")].each do |thumb| File.delete(thumb) end end def thumbnail_path(size) File.join(self.class.thumbnails_storage_path, "#{digest}_#{filesize}_#{size}.thumb") end def sanitize_filename(value) # get only the filename, not the whole path just_filename = value.gsub(/\A.*(\\|\/)/m, '') # Finally, replace invalid characters with underscore just_filename.gsub(/[\/\?\%\*\:\|\"\'<>\n\r]+/, '_') end # Returns the subdirectory in which the attachment will be saved def target_directory time = created_on || DateTime.now time.strftime("%Y/%m") end # Singleton class method is public class << self # Claims a unique ASCII or hashed filename, yields the open file handle def create_diskfile(filename, directory=nil, &) timestamp = DateTime.now.strftime("%y%m%d%H%M%S") ascii = '' if %r{^[a-zA-Z0-9_\.\-]*$}.match?(filename) && filename.length <= 50 ascii = filename else ascii = ActiveSupport::Digest.hexdigest(filename) # keep the extension if any ascii << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$} end path = File.join storage_path, directory.to_s FileUtils.mkdir_p(path) unless File.directory?(path) begin name = "#{timestamp}_#{ascii}" File.open( File.join(path, name), flags: File::CREAT | File::EXCL | File::WRONLY, binmode: true, & ) rescue Errno::EEXIST timestamp.succ! retry end end end end redmine-6.0.5/app/models/auth_source.rb000066400000000000000000000056641500112024600200600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Generic exception for when the AuthSource can not be reached # (eg. can not connect to the LDAP) class AuthSourceException < StandardError; end class AuthSourceTimeoutException < AuthSourceException; end class AuthSource < ApplicationRecord include Redmine::SafeAttributes include Redmine::SubclassFactory include Redmine::Ciphering has_many :users validates_presence_of :name validates_uniqueness_of :name, :case_sensitive => true validates_length_of :name, :maximum => 60 safe_attributes( 'name', 'host', 'port', 'account', 'account_password', 'base_dn', 'attr_login', 'attr_firstname', 'attr_lastname', 'attr_mail', 'onthefly_register', 'tls', 'verify_peer', 'filter', 'timeout') def authenticate(login, password) end def test_connection end def auth_method_name "Abstract" end def account_password read_ciphered_attribute(:account_password) end def account_password=(arg) write_ciphered_attribute(:account_password, arg) end def searchable? false end def visible?(user=User.current) user.admin? end def self.search(q) results = [] AuthSource.all.each do |source| begin if source.searchable? results += source.search(q) end rescue AuthSourceException => e logger.error "Error while searching users in #{source.name}: #{e.message}" end end results end def allow_password_changes? self.class.allow_password_changes? end # Does this auth source backend allow password changes? def self.allow_password_changes? false end # Try to authenticate a user not yet registered against available sources def self.authenticate(login, password) AuthSource.where(:onthefly_register => true).each do |source| begin logger.debug "Authenticating '#{login}' against '#{source.name}'" if logger && logger.debug? attrs = source.authenticate(login, password) rescue => e logger.error "Error during authentication: #{e.message}" attrs = nil end return attrs if attrs end return nil end end redmine-6.0.5/app/models/auth_source_ldap.rb000066400000000000000000000175101500112024600210510ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'net/ldap' require 'net/ldap/dn' require 'timeout' class AuthSourceLdap < AuthSource NETWORK_EXCEPTIONS = [ Net::LDAP::Error, Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EHOSTDOWN, Errno::EHOSTUNREACH, SocketError ] validates_presence_of :host, :port, :attr_login validates_length_of :name, :host, :maximum => 60, :allow_nil => true validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_blank => true validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true validates_numericality_of :port, :only_integer => true validates_numericality_of :timeout, :only_integer => true, :allow_blank => true validate :validate_filter before_validation :strip_ldap_attributes safe_attributes 'ldap_mode' LDAP_MODES = [ :ldap, :ldaps_verify_none, :ldaps_verify_peer ] def initialize(attributes=nil, *args) super self.port = 389 if self.port == 0 end def authenticate(login, password) return nil if login.blank? || password.blank? with_timeout do attrs = get_user_dn(login, password) if attrs && attrs[:dn] && authenticate_dn(attrs[:dn], password) logger.debug "Authentication successful for '#{login}'" if logger && logger.debug? return attrs.except(:dn) end end rescue *NETWORK_EXCEPTIONS => e raise AuthSourceException.new("#{auth_method_name}: #{e.message}") end # Test the connection to the LDAP def test_connection with_timeout do ldap_con = initialize_ldap_con(self.account, self.account_password) ldap_con.open {} if self.account.present? && !self.account.include?("$login") && self.account_password.present? ldap_auth = authenticate_dn(self.account, self.account_password) raise AuthSourceException.new(l(:error_ldap_bind_credentials)) unless ldap_auth end end rescue *NETWORK_EXCEPTIONS => e raise AuthSourceException.new("#{auth_method_name}: #{e.message}") end def auth_method_name "LDAP" end # Returns true if this source can be searched for users def searchable? !account.to_s.include?("$login") && %w(login firstname lastname mail).all? {|a| send(:"attr_#{a}?")} end # Searches the source for users and returns an array of results def search(q) q = q.to_s.strip return [] unless searchable? && q.present? results = [] search_filter = base_filter & Net::LDAP::Filter.begins(self.attr_login, q) ldap_con = initialize_ldap_con(self.account, self.account_password) ldap_con.search(:base => self.base_dn, :filter => search_filter, :attributes => ['dn', self.attr_login, self.attr_firstname, self.attr_lastname, self.attr_mail], :size => 10) do |entry| attrs = get_user_attributes_from_ldap_entry(entry) attrs[:login] = AuthSourceLdap.get_attr(entry, self.attr_login) results << attrs end results rescue *NETWORK_EXCEPTIONS => e raise AuthSourceException.new("#{auth_method_name}: #{e.message}") end def ldap_mode case when tls && verify_peer :ldaps_verify_peer when tls && !verify_peer :ldaps_verify_none else :ldap end end def ldap_mode=(ldap_mode) case ldap_mode.try(:to_sym) when :ldaps_verify_peer self.tls = true self.verify_peer = true when :ldaps_verify_none self.tls = true self.verify_peer = false else self.tls = false self.verify_peer = false end end private def with_timeout(&) timeout = self.timeout timeout = 20 unless timeout && timeout > 0 Timeout.timeout(timeout) do return yield end rescue Timeout::Error => e raise AuthSourceTimeoutException.new("#{auth_method_name}: #{e.message}") end def ldap_filter if filter.present? Net::LDAP::Filter.construct(filter) end rescue Net::LDAP::Error, Net::LDAP::FilterSyntaxInvalidError nil end def base_filter filter = Net::LDAP::Filter.eq("objectClass", "*") if f = ldap_filter filter = filter & f end filter end def validate_filter if filter.present? && ldap_filter.nil? errors.add(:filter, :invalid) end end def strip_ldap_attributes [:attr_login, :attr_firstname, :attr_lastname, :attr_mail].each do |attr| write_attribute(attr, read_attribute(attr).strip) unless read_attribute(attr).nil? end end def initialize_ldap_con(ldap_user, ldap_password) options = {:host => self.host, :port => self.port} if tls options[:encryption] = { :method => :simple_tls, # Always provide non-empty tls_options, to make sure, that all # OpenSSL::SSL::SSLContext::DEFAULT_PARAMS as well as the default cert # store are used. :tls_options => {:verify_mode => verify_peer? ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE} } end unless ldap_user.blank? && ldap_password.blank? options[:auth] = {:method => :simple, :username => ldap_user, :password => ldap_password} end Net::LDAP.new options end def get_user_attributes_from_ldap_entry(entry) { :dn => entry.dn, :firstname => AuthSourceLdap.get_attr(entry, self.attr_firstname), :lastname => AuthSourceLdap.get_attr(entry, self.attr_lastname), :mail => AuthSourceLdap.get_attr(entry, self.attr_mail), :auth_source_id => self.id } end # Return the attributes needed for the LDAP search. It will only # include the user attributes if on-the-fly registration is enabled def search_attributes if onthefly_register? ['dn', self.attr_firstname, self.attr_lastname, self.attr_mail] else ['dn'] end end # Check if a DN (user record) authenticates with the password def authenticate_dn(dn, password) if dn.present? && password.present? initialize_ldap_con(dn, password).bind end end # Get the user's dn and any attributes for them, given their login def get_user_dn(login, password) ldap_con = nil if self.account && self.account.include?("$login") ldap_con = initialize_ldap_con(self.account.sub("$login", Net::LDAP::DN.escape(login)), password) else ldap_con = initialize_ldap_con(self.account, self.account_password) end attrs = {} search_filter = base_filter & Net::LDAP::Filter.eq(self.attr_login, login) ldap_con.search(:base => self.base_dn, :filter => search_filter, :attributes=> search_attributes) do |entry| if onthefly_register? attrs = get_user_attributes_from_ldap_entry(entry) else attrs = {:dn => entry.dn} end logger.debug "DN found for #{login}: #{attrs[:dn]}" if logger && logger.debug? end attrs end # Singleton class method is public class << self def get_attr(entry, attr_name) if attr_name.present? value = entry[attr_name].is_a?(Array) ? entry[attr_name].first : entry[attr_name] (+value.to_s).force_encoding('UTF-8') end end end end redmine-6.0.5/app/models/board.rb000066400000000000000000000061071500112024600166170ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Board < ApplicationRecord include Redmine::SafeAttributes belongs_to :project has_many :messages, lambda {order("#{Message.table_name}.created_on DESC")}, :dependent => :destroy belongs_to :last_message, :class_name => 'Message' acts_as_tree :dependent => :nullify acts_as_positioned :scope => [:project_id, :parent_id] acts_as_watchable validates_presence_of :name, :description validates_length_of :name, :maximum => 30 validates_length_of :description, :maximum => 255 validate :validate_board scope :visible, (lambda do |*args| joins(:project). where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args)) end) safe_attributes 'name', 'description', 'parent_id', 'position' def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end def reload(*args) @valid_parents = nil super end def to_s name end # Returns a scope for the board topics (messages without parent) def topics messages.where(:parent_id => nil) end def valid_parents @valid_parents ||= project.boards - self_and_descendants end def reset_counters! self.class.reset_counters!(id) end # Updates topics_count, messages_count and last_message_id attributes for +board_id+ def self.reset_counters!(board_id) board_id = board_id.to_i Board.where(:id => board_id). update_all( ["topics_count = (SELECT COUNT(*) FROM #{Message.table_name}" \ " WHERE board_id=:id AND parent_id IS NULL)," \ " messages_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=:id)," \ " last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=:id)", :id => board_id] ) end def self.board_tree(boards, parent_id=nil, level=0) tree = [] boards.select {|board| board.parent_id == parent_id}.sort_by(&:position).each do |board| tree << [board, level] tree += board_tree(boards, board.id, level+1) end if block_given? tree.each do |board, level| yield board, level end end tree end protected def validate_board if parent_id && parent_id_changed? errors.add(:parent_id, :invalid) unless valid_parents.include?(parent) end end end redmine-6.0.5/app/models/change.rb000066400000000000000000000023441500112024600167540ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Change < ApplicationRecord belongs_to :changeset validates_presence_of :changeset_id, :action, :path before_validation :replace_invalid_utf8_of_path before_save :init_path def replace_invalid_utf8_of_path self.path = Redmine::CodesetUtil.replace_invalid_utf8(self.path) self.from_path = Redmine::CodesetUtil.replace_invalid_utf8(self.from_path) end def init_path self.path ||= "" end end redmine-6.0.5/app/models/changeset.rb000066400000000000000000000240021500112024600174630ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Changeset < ApplicationRecord belongs_to :repository belongs_to :user has_many :filechanges, :class_name => 'Change', :dependent => :delete_all has_and_belongs_to_many :issues has_and_belongs_to_many :parents, :class_name => "Changeset", :join_table => "#{table_name_prefix}changeset_parents#{table_name_suffix}", :association_foreign_key => 'parent_id', :foreign_key => 'changeset_id' has_and_belongs_to_many :children, :class_name => "Changeset", :join_table => "#{table_name_prefix}changeset_parents#{table_name_suffix}", :association_foreign_key => 'changeset_id', :foreign_key => 'parent_id' acts_as_event( :title => proc {|o| o.title}, :description => :long_comments, :datetime => :committed_on, :url => proc do |o| {:controller => 'repositories', :action => 'revision', :id => o.repository.project, :repository_id => o.repository.identifier_param, :rev => o.identifier} end ) acts_as_searchable :columns => 'comments', :preload => {:repository => :project}, :project_key => "#{Repository.table_name}.project_id", :date_column => :committed_on acts_as_activity_provider :timestamp => "#{table_name}.committed_on", :author_key => :user_id, :scope => proc {preload(:user, {:repository => :project})} validates_presence_of :repository_id, :revision, :committed_on, :commit_date validates_uniqueness_of :revision, :scope => :repository_id, :case_sensitive => true validates_uniqueness_of :scmid, :scope => :repository_id, :allow_nil => true, :case_sensitive => true scope :visible, (lambda do |*args| joins(:repository => :project). where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args)) end) before_create :before_create_cs after_create :scan_for_issues def revision=(r) write_attribute :revision, (r.nil? ? nil : r.to_s) end # Returns the identifier of this changeset; depending on repository backends def identifier if repository.class.respond_to? :changeset_identifier repository.class.changeset_identifier self else revision.to_s end end def committed_on=(date) self.commit_date = date super end # Returns the readable identifier def format_identifier if repository.class.respond_to? :format_changeset_identifier repository.class.format_changeset_identifier self else identifier end end def project repository.project end def author user || committer.to_s.split('<').first end def before_create_cs self.committer = self.class.to_utf8(self.committer, repository.repo_log_encoding) self.comments = self.class.normalize_comments(self.comments, repository.repo_log_encoding) self.user = repository.find_committer_user(self.committer) end def scan_for_issues scan_comment_for_issue_ids end TIMELOG_RE = / ( ((\d+)(h|hours?))((\d+)(m|min)?)? | ((\d+)(h|hours?|m|min)) | (\d+):(\d+) | (\d+([\.,]\d+)?)h? ) /x def scan_comment_for_issue_ids return if comments.blank? # keywords used to reference issues ref_keywords = Setting.commit_ref_keywords.downcase.split(",").collect(&:strip) ref_keywords_any = ref_keywords.delete('*') # keywords used to fix issues fix_keywords = Setting.commit_update_keywords_array.pluck('keywords').flatten.compact kw_regexp = (ref_keywords + fix_keywords).collect{|kw| Regexp.escape(kw)}.join("|") referenced_issues = [] regexp = %r{ ([\s\(\[,-]|^)((#{kw_regexp})[\s:]+)? (\#\d+(\s+@#{TIMELOG_RE})?([\s,;&]+\#\d+(\s+@#{TIMELOG_RE})?)*) (?=[[:punct:]]|\s|<|$) }xi comments.scan(regexp) do |match| action = match[2].to_s.downcase refs = match[3] next unless action.present? || ref_keywords_any refs.scan(/#(\d+)(\s+@#{TIMELOG_RE})?/o).each do |m| issue = find_referenced_issue_by_id(m[0].to_i) hours = m[2] if issue && !issue_linked_to_same_commit?(issue) referenced_issues << issue # Don't update issues or log time when importing old commits unless repository.created_on && committed_on && committed_on < repository.created_on fix_issue(issue, action) if fix_keywords.include?(action) log_time(issue, hours) if hours && Setting.commit_logtime_enabled? end end end end referenced_issues.uniq! self.issues = referenced_issues unless referenced_issues.empty? end def short_comments @short_comments || split_comments.first end def long_comments @long_comments || split_comments.last end def text_tag(ref_project=nil) repo = "" if repository && repository.identifier.present? repo = "#{repository.identifier}|" end tag = scmid? ? "commit:#{repo}#{scmid}" : "#{repo}r#{revision}" if ref_project && project && ref_project != project tag = "#{project.identifier}:#{tag}" end tag end # Returns the title used for the changeset in the activity/search results def title repo = (repository && repository.identifier.present?) ? " (#{repository.identifier})" : '' comm = short_comments.blank? ? '' : (': ' + short_comments) "#{l(:label_revision)} #{format_identifier}#{repo}#{comm}" end # Returns the previous changeset def previous @previous ||= Changeset.where(["id < ? AND repository_id = ?", id, repository_id]).order('id DESC').first end # Returns the next changeset def next @next ||= Changeset.where(["id > ? AND repository_id = ?", id, repository_id]).order('id ASC').first end # Creates a new Change from it's common parameters def create_change(change) Change.create(:changeset => self, :action => change[:action], :path => change[:path], :from_path => change[:from_path], :from_revision => change[:from_revision]) end # Finds an issue that can be referenced by the commit message def find_referenced_issue_by_id(id) return nil if id.blank? issue = Issue.find_by_id(id.to_i) if Setting.commit_cross_project_ref? # all issues can be referenced/fixed elsif issue # issue that belong to the repository project, a subproject or a parent project only unless issue.project && (project == issue.project || project.is_ancestor_of?(issue.project) || project.is_descendant_of?(issue.project)) issue = nil end end issue end private # Returns true if the issue is already linked to the same commit # from a different repository def issue_linked_to_same_commit?(issue) repository.same_commits_in_scope(issue.changesets, self).any? end # Updates the +issue+ according to +action+ def fix_issue(issue, action) # the issue may have been updated by the closure of another one (eg. duplicate) issue.reload # don't change the status is the issue is closed return if issue.closed? journal = issue.init_journal(user || User.anonymous, ll(Setting.default_language, :text_status_changed_by_changeset, text_tag(issue.project))) rule = Setting.commit_update_keywords_array.detect do |rule| rule['keywords'].include?(action) && (rule['if_tracker_id'].blank? || rule['if_tracker_id'] == issue.tracker_id.to_s) end if rule issue.assign_attributes rule.slice(*Issue.attribute_names) end Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update, {:changeset => self, :issue => issue, :action => action}) if issue.changes.any? unless issue.save logger.warn("Issue ##{issue.id} could not be saved by changeset #{id}: #{issue.errors.full_messages}") if logger end else issue.clear_journal end issue end def log_time(issue, hours) time_entry = TimeEntry.new( :user => user, :hours => hours, :issue => issue, :spent_on => commit_date, :comments => l(:text_time_logged_by_changeset, :value => text_tag(issue.project), :locale => Setting.default_language) ) if activity = issue.project.commit_logtime_activity time_entry.activity = activity end unless time_entry.save logger.warn("TimeEntry could not be created by changeset #{id}: #{time_entry.errors.full_messages}") if logger end time_entry end def split_comments comments =~ /\A(.+?)\r?\n(.*)$/m @short_comments = $1 || comments @long_comments = $2.to_s.strip [@short_comments, @long_comments] end # Singleton class method is public class << self # Strips and reencodes a commit log before insertion into the database def normalize_comments(str, encoding) Changeset.to_utf8(str.to_s, encoding).strip end def to_utf8(str, encoding) Redmine::CodesetUtil.to_utf8(str, encoding) end end end redmine-6.0.5/app/models/comment.rb000066400000000000000000000026301500112024600171670ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Comment < ApplicationRecord include Redmine::SafeAttributes belongs_to :commented, :polymorphic => true, :counter_cache => true belongs_to :author, :class_name => 'User' validates_presence_of :commented, :author, :content after_create_commit :send_notification safe_attributes 'comments' def comments=(arg) self.content = arg end def comments content end private def send_notification event = "#{commented.class.name.underscore}_comment_added" if Setting.notified_events.include?(event) Mailer.public_send(:"deliver_#{event}", self) end end end redmine-6.0.5/app/models/custom_field.rb000066400000000000000000000245121500112024600202050ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomField < ApplicationRecord include Redmine::SafeAttributes include Redmine::SubclassFactory has_many :enumerations, lambda {order(:position)}, :class_name => 'CustomFieldEnumeration', :dependent => :delete_all has_many :custom_values, :dependent => :delete_all has_and_belongs_to_many :roles, :join_table => "#{table_name_prefix}custom_fields_roles#{table_name_suffix}", :foreign_key => "custom_field_id" acts_as_positioned serialize :possible_values store :format_store validates_presence_of :name, :field_format validates_uniqueness_of :name, :scope => :type, :case_sensitive => true validates_length_of :name, :maximum => 30 validates_length_of :regexp, maximum: 255 validates_inclusion_of :field_format, :in => proc {Redmine::FieldFormat.available_formats} validate :validate_custom_field before_validation :set_searchable before_save do |field| field.format.before_custom_field_save(field) end after_save :handle_multiplicity_change after_save do |field| if field.saved_change_to_visible? && field.visible field.roles.clear end end scope :sorted, lambda {order(:position)} scope :visible, (lambda do |*args| user = args.shift || User.current if user.admin? # nop elsif user.memberships.any? where( "#{table_name}.visible = ? OR #{table_name}.id" \ " IN (SELECT DISTINCT cfr.custom_field_id FROM #{Member.table_name} m" \ " INNER JOIN #{MemberRole.table_name} mr ON mr.member_id = m.id" \ " INNER JOIN #{table_name_prefix}custom_fields_roles#{table_name_suffix} cfr" \ " ON cfr.role_id = mr.role_id" \ " WHERE m.user_id = ?)", true, user.id ) else where(:visible => true) end end) def visible_by?(project, user=User.current) visible? || user.admin? end safe_attributes( 'name', 'field_format', 'possible_values', 'regexp', 'min_length', 'max_length', 'is_required', 'is_for_all', 'is_filter', 'position', 'searchable', 'default_value', 'editable', 'visible', 'multiple', 'description', 'role_ids', 'url_pattern', 'text_formatting', 'edit_tag_style', 'user_role', 'version_status', 'extensions_allowed', 'full_width_layout', 'thousands_delimiter' ) def copy_from(arg, options={}) return if arg.blank? custom_field = arg.is_a?(CustomField) ? arg : CustomField.find_by(id: arg.to_s) self.attributes = custom_field.attributes.dup.except('id', 'name', 'position') custom_field.enumerations.each do |e| new_enumeration = self.enumerations.build new_enumeration.attributes = e.attributes.except('id') end self.default_value = nil if custom_field.enumerations.any? if %w(IssueCustomField TimeEntryCustomField ProjectCustomField VersionCustomField).include?(self.class.name) self.role_ids = custom_field.role_ids.dup end if self.is_a?(IssueCustomField) self.tracker_ids = custom_field.tracker_ids.dup self.project_ids = custom_field.project_ids.dup end self end def format @format ||= Redmine::FieldFormat.find(field_format) end def field_format=(arg) # cannot change format of a saved custom field if new_record? @format = nil super end end def set_searchable # make sure these fields are not searchable self.searchable = false unless format.class.searchable_supported # make sure only these fields can have multiple values self.multiple = false unless format.class.multiple_supported true end def validate_custom_field format.validate_custom_field(self).each do |attribute, message| errors.add attribute, message end if regexp.present? begin Regexp.new(regexp) rescue errors.add(:regexp, :invalid) end end if default_value.present? validate_field_value(default_value).each do |message| errors.add :default_value, message end end end def possible_custom_value_options(custom_value) format.possible_custom_value_options(custom_value) end def possible_values_options(object=nil) if object.is_a?(Array) object.map {|o| format.possible_values_options(self, o)}.reduce(:&) || [] else format.possible_values_options(self, object) || [] end end def possible_values values = read_attribute(:possible_values) if values.is_a?(Array) values.each do |value| value.to_s.force_encoding('UTF-8') end values else [] end end # Makes possible_values accept a multiline string def possible_values=(arg) if arg.is_a?(Array) values = arg.compact.map {|a| a.to_s.strip}.reject(&:blank?) write_attribute(:possible_values, values) else self.possible_values = arg.to_s.split(/[\n\r]+/) end end def set_custom_field_value(custom_field_value, value) format.set_custom_field_value(self, custom_field_value, value) end def cast_value(value) format.cast_value(self, value) end def value_from_keyword(keyword, customized) format.value_from_keyword(self, keyword, customized) end # Returns the options hash used to build a query filter for the field def query_filter_options(query) format.query_filter_options(self, query) end def totalable? format.totalable_supported end def full_width_layout? full_width_layout == '1' end def full_text_formatting? text_formatting == 'full' end def thousands_delimiter? thousands_delimiter == '1' end # Returns a ORDER BY clause that can used to sort customized # objects by their value of the custom field. # Returns nil if the custom field can not be used for sorting. def order_statement return nil if multiple? format.order_statement(self) end # Returns a GROUP BY clause that can used to group by custom value # Returns nil if the custom field can not be used for grouping. def group_statement return nil if multiple? format.group_statement(self) end def join_for_order_statement format.join_for_order_statement(self) end def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil) if visible? || user.admin? "1=1" elsif user.anonymous? "1=0" else project_key ||= "#{self.class.customized_class.table_name}.project_id" id_column ||= id "#{project_key} IN (SELECT DISTINCT m.project_id FROM #{Member.table_name} m" \ " INNER JOIN #{MemberRole.table_name} mr ON mr.member_id = m.id" \ " INNER JOIN #{table_name_prefix}custom_fields_roles#{table_name_suffix} cfr" \ " ON cfr.role_id = mr.role_id" \ " WHERE m.user_id = #{user.id} AND cfr.custom_field_id = #{id_column})" end end def <=>(field) return nil unless field.is_a?(CustomField) position <=> field.position end # Returns the class that values represent def value_class format.target_class if format.respond_to?(:target_class) end def self.customized_class self.name =~ /^(.+)CustomField$/ $1.constantize rescue nil end # to move in project_custom_field def self.for_all where(:is_for_all => true).order(:position).to_a end def type_name nil end # Returns the error messages for the given value # or an empty array if value is a valid value for the custom field def validate_custom_value(custom_value) value = custom_value.value errs = format.validate_custom_value(custom_value) unless errs.any? if value.is_a?(Array) unless multiple? errs << ::I18n.t('activerecord.errors.messages.invalid') end if is_required? && value.detect(&:present?).nil? errs << ::I18n.t('activerecord.errors.messages.blank') end else if is_required? && value.blank? errs << ::I18n.t('activerecord.errors.messages.blank') end end end errs end # Returns the error messages for the default custom field value def validate_field_value(value) validate_custom_value(CustomFieldValue.new(:custom_field => self, :value => value)) end # Returns true if value is a valid value for the custom field def valid_field_value?(value) validate_field_value(value).empty? end def after_save_custom_value(custom_value) format.after_save_custom_value(self, custom_value) end def format_in?(*args) args.include?(field_format) end def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == 'url_pattern' attr_name = "url" end super(attr_name, *args) end def css_classes "#{field_format}_cf cf_#{id}" end protected # Removes multiple values for the custom field after setting the multiple attribute to false # We kepp the value with the highest id for each customized object def handle_multiplicity_change if !new_record? && multiple_before_last_save && !multiple ids = custom_values. where( "EXISTS(SELECT 1 FROM #{CustomValue.table_name} cve" \ " WHERE cve.custom_field_id = #{CustomValue.table_name}.custom_field_id" \ " AND cve.customized_type = #{CustomValue.table_name}.customized_type" \ " AND cve.customized_id = #{CustomValue.table_name}.customized_id" \ " AND cve.id > #{CustomValue.table_name}.id)" ).pluck(:id) if ids.any? custom_values.where(:id => ids).delete_all end end end end redmine-6.0.5/app/models/custom_field_enumeration.rb000066400000000000000000000045321500112024600226130ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomFieldEnumeration < ApplicationRecord belongs_to :custom_field validates_presence_of :name, :position, :custom_field_id validates_length_of :name, :maximum => 60 validates_numericality_of :position, :only_integer => true before_create :set_position scope :active, lambda {where(:active => true)} def to_s name.to_s end def objects_count custom_values.count end def in_use? objects_count > 0 end alias :destroy_without_reassign :destroy def destroy(reassign_to=nil) if reassign_to custom_values.update_all(:value => reassign_to.id.to_s) end destroy_without_reassign end def custom_values custom_field.custom_values.where(:value => id.to_s) end def self.update_each(custom_field, attributes) transaction do attributes.each do |enumeration_id, enumeration_attributes| enumeration = custom_field.enumerations.find_by_id(enumeration_id) if enumeration if block_given? yield enumeration, enumeration_attributes else enumeration.attributes = enumeration_attributes end unless enumeration.save raise ActiveRecord::Rollback end end end end end def self.fields_for_order_statement(table=nil) table ||= table_name columns = ['position'] columns.uniq.map {|field| "#{table}.#{field}"} end private def set_position max = self.class.where(:custom_field_id => custom_field_id).maximum(:position) || 0 self.position = max + 1 end end redmine-6.0.5/app/models/custom_field_value.rb000066400000000000000000000032001500112024600213700ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomFieldValue attr_accessor :custom_field, :customized, :value_was attr_reader :value def initialize(attributes={}) attributes.each do |name, v| send :"#{name}=", v end end def custom_field_id custom_field.id end def true? self.value == '1' end def editable? custom_field.editable? end def visible? custom_field.visible? end def required? custom_field.is_required? end def to_s value.to_s end def value=(v) @value = custom_field.set_custom_field_value(self, v) end def value_present? if value.is_a?(Array) value.any?(&:present?) else value.present? end end def validate_value custom_field.validate_custom_value(self).each do |message| customized.errors.add(custom_field.name, message) end end end redmine-6.0.5/app/models/custom_value.rb000066400000000000000000000035331500112024600202360ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class CustomValue < ApplicationRecord belongs_to :custom_field belongs_to :customized, :polymorphic => true after_save :custom_field_after_save_custom_value def initialize(attributes=nil, *args) super if new_record? && custom_field && !attributes.key?(:value) && (customized.nil? || customized.set_custom_field_default?(self)) self.value ||= custom_field.default_value end end # Returns true if the boolean custom value is true def true? self.value == '1' end def editable? custom_field.editable? end def visible?(user=User.current) if custom_field.visible? true elsif customized.respond_to?(:project) custom_field.visible_by?(customized.project, user) else false end end def attachments_visible?(user) visible?(user) && customized && customized.visible?(user) end def required? custom_field.is_required? end def to_s value.to_s end private def custom_field_after_save_custom_value custom_field.after_save_custom_value(self) end end redmine-6.0.5/app/models/document.rb000066400000000000000000000050771500112024600173530ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Document < ApplicationRecord include Redmine::SafeAttributes belongs_to :project belongs_to :category, :class_name => "DocumentCategory" acts_as_attachable :delete_permission => :delete_documents acts_as_customizable acts_as_searchable :columns => ['title', "#{table_name}.description"], :preload => :project acts_as_event( :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"}, :author => Proc.new do |o| o.attachments.reorder("#{Attachment.table_name}.created_on ASC"). first.try(:author) end, :url => Proc.new do |o| {:controller => 'documents', :action => 'show', :id => o.id} end ) acts_as_activity_provider :scope => proc {preload(:project)} validates_presence_of :project, :title, :category validates_length_of :title, :maximum => 255 after_create_commit :send_notification scope :visible, (lambda do |*args| joins(:project). where(Project.allowed_to_condition(args.shift || User.current, :view_documents, *args)) end) safe_attributes 'category_id', 'title', 'description', 'custom_fields', 'custom_field_values' def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end def initialize(attributes=nil, *args) super if new_record? self.category ||= DocumentCategory.default end end def updated_on unless @updated_on a = attachments.last @updated_on = (a && a.created_on) || created_on end @updated_on end def notified_users project.notified_users.reject {|user| !visible?(user)} end private def send_notification if Setting.notified_events.include?('document_added') Mailer.deliver_document_added(self, User.current) end end end redmine-6.0.5/app/models/document_category.rb000066400000000000000000000022611500112024600212400ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class DocumentCategory < Enumeration has_many :documents, :foreign_key => 'category_id' OptionName = :enumeration_doc_categories def option_name OptionName end def objects_count documents.count end def transfer_relations(to) documents.update_all(:category_id => to.id) end def self.default d = super d = first if d.nil? d end end redmine-6.0.5/app/models/document_category_custom_field.rb000066400000000000000000000016401500112024600237750ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class DocumentCategoryCustomField < CustomField def type_name :enumeration_doc_categories end end redmine-6.0.5/app/models/document_custom_field.rb000066400000000000000000000016231500112024600221010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class DocumentCustomField < CustomField def type_name :label_document_plural end end redmine-6.0.5/app/models/email_address.rb000066400000000000000000000130021500112024600203140ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EmailAddress < ApplicationRecord include Redmine::SafeAttributes belongs_to :user after_update :destroy_tokens after_destroy :destroy_tokens after_create_commit :deliver_security_notification_create after_update_commit :deliver_security_notification_update after_destroy_commit :deliver_security_notification_destroy validates_presence_of :address validates_format_of :address, :with => URI::MailTo::EMAIL_REGEXP, :allow_blank => true validates_length_of :address, :maximum => User::MAIL_LENGTH_LIMIT, :allow_nil => true validates_uniqueness_of :address, :case_sensitive => false, :if => Proc.new {|email| email.address_changed? && email.address.present?} validate :validate_email_domain, :if => proc {|email| email.address.present?} normalizes :address, with: lambda { |address| normalized_address = address.to_s.strip local_part, _at, domain = normalized_address.partition('@') if domain.present? # Convert internationalized domain name (IDN) to Punycode # e.g. 'marie@société.example' => 'marie@xn--socit-esab.example' ascii_domain = Addressable::IDNA.to_ascii(domain) normalized_address = "#{local_part}@#{ascii_domain}" end normalized_address } safe_attributes 'address' def destroy if is_default? false else super end end # Returns true if the email domain is allowed regarding allowed/denied # domains defined in application settings, otherwise false def self.valid_domain?(domain_or_email) denied, allowed = [:email_domains_denied, :email_domains_allowed].map do |setting| Setting.__send__(setting) end domain = domain_or_email.split('@').last return false if denied.present? && domain_in?(domain, denied) return false if allowed.present? && !domain_in?(domain, allowed) true end # Returns true if domain belongs to domains list. def self.domain_in?(domain, domains) domain = domain.to_s.downcase domains = domains.to_s.split(/[\s,]+/) unless domains.is_a?(Array) domains.reject(&:blank?).map(&:downcase).any? do |s| s.start_with?('.') ? domain.end_with?(s) : domain == s end end private # send a security notification to user that a new email address was added def deliver_security_notification_create # only deliver if this isn't the only address. # in that case, the user is just being created and # should not receive this email. if user.mails != [address] deliver_security_notification( message: :mail_body_security_notification_add, field: :field_mail, value: address ) end end # send a security notification to user that an email has been changed (notified/not notified) def deliver_security_notification_update if saved_change_to_address? options = { recipients: [address_before_last_save], message: :mail_body_security_notification_change_to, field: :field_mail, value: address } elsif saved_change_to_notify? options = { recipients: [address], message: notify_before_last_save ? :mail_body_security_notification_notify_disabled : :mail_body_security_notification_notify_enabled, value: address } end deliver_security_notification(options) end # send a security notification to user that an email address was deleted def deliver_security_notification_destroy deliver_security_notification( recipients: [address], message: :mail_body_security_notification_remove, field: :field_mail, value: address ) end # generic method to send security notifications for email addresses def deliver_security_notification(options={}) Mailer.deliver_security_notification( user, User.current, options.merge( title: :label_my_account, url: {controller: 'my', action: 'account'} ) ) end # Delete all outstanding password reset tokens on email change. # This helps to keep the account secure in case the associated email account # was compromised. def destroy_tokens if saved_change_to_address? || destroyed? tokens = ['recovery'] Token.where(:user_id => user_id, :action => tokens).delete_all end end def validate_email_domain domain = address.partition('@').last # Skip domain validation if the email does not contain a domain part, # to avoid an incomplete error message like "domain not allowed ()" return if domain.empty? return if self.class.valid_domain?(domain) if User.current.logged? errors.add(:address, :domain_not_allowed, :domain => domain) else # Don't display a detailed error message for anonymous users errors.add(:address, :invalid) end end end redmine-6.0.5/app/models/enabled_module.rb000066400000000000000000000024621500112024600204670ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class EnabledModule < ApplicationRecord belongs_to :project acts_as_watchable validates_presence_of :name validates_uniqueness_of :name, :scope => :project_id, :case_sensitive => true after_create :module_enabled private # after_create callback used to do things when a module is enabled def module_enabled case name when 'wiki' # Create a wiki with a default start page if project && project.wiki.nil? Wiki.create_default(project) end end end end redmine-6.0.5/app/models/enumeration.rb000066400000000000000000000120041500112024600200470ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Enumeration < ApplicationRecord include Redmine::SubclassFactory default_scope lambda {order(:position)} belongs_to :project acts_as_positioned :scope => [:project_id, :parent_id] acts_as_customizable acts_as_tree before_save :check_default before_destroy :check_integrity after_save :update_children_name validates_presence_of :name validates_uniqueness_of :name, :scope => [:type, :project_id], :case_sensitive => true validates_length_of :name, :maximum => 30 scope :shared, lambda {where(:project_id => nil)} scope :sorted, lambda {order(:position)} scope :active, lambda {where(:active => true)} scope :system, lambda {where(:project_id => nil)} scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} def self.default # Creates a fake default scope so Enumeration.default will check # it's type. STI subclasses will automatically add their own # types to the finder. if self.descends_from_active_record? where(:is_default => true, :type => 'Enumeration').first else # STI classes are where(:is_default => true).first end end # Overloaded on concrete classes def option_name nil end def check_default if is_default? && is_default_changed? Enumeration.where({:type => type}).update_all({:is_default => false}) end end # Overloaded on concrete classes def objects_count 0 end def in_use? self.objects_count != 0 end # Is this enumeration overriding a system level enumeration? def is_override? !self.parent.nil? end alias :destroy_without_reassign :destroy # Destroy the enumeration # If a enumeration is specified, objects are reassigned def destroy(reassign_to = nil) if reassign_to && reassign_to.is_a?(Enumeration) self.transfer_relations(reassign_to) end destroy_without_reassign end def <=>(enumeration) return nil unless enumeration.is_a?(Enumeration) position <=> enumeration.position end def to_s; name end # Returns the Subclasses of Enumeration. Each Subclass needs to be # required in development mode. # # Note: subclasses is protected in ActiveRecord def self.get_subclasses subclasses end # Does the +new+ Hash override the previous Enumeration? def self.overriding_change?(new, previous) if (same_active_state?(new['active'], previous.active)) && same_custom_values?(new, previous) return false else return true end end # Does the +new+ Hash have the same custom values as the previous Enumeration? def self.same_custom_values?(new, previous) previous.custom_field_values.each do |custom_value| if custom_value.to_s != new["custom_field_values"][custom_value.custom_field_id.to_s].to_s return false end end return true end # Are the new and previous fields equal? def self.same_active_state?(new, previous) new = (new == "1" ? true : false) return new == previous end private def check_integrity raise "Cannot delete enumeration" if self.in_use? end def update_children_name if saved_change_to_name? && self.parent_id.nil? self.class.where(name: self.name_before_last_save, parent_id: self.id).update_all(name: self.name_in_database) end end # Overrides Redmine::Acts::Positioned#set_default_position so that enumeration overrides # get the same position as the overridden enumeration def set_default_position if position.nil? && parent self.position = parent.position end super end # Overrides Redmine::Acts::Positioned#update_position so that overrides get the same # position as the overridden enumeration def update_position super if saved_change_to_position? && self.parent_id.nil? self.class.where.not(:parent_id => nil).update_all( "position = coalesce(( select position from (select id, position from enumerations) as parent where parent_id = parent.id), 1)" ) end end # Overrides Redmine::Acts::Positioned#remove_position so that enumeration overrides # get the same position as the overridden enumeration def remove_position if parent_id.blank? super end end end redmine-6.0.5/app/models/group.rb000066400000000000000000000066501500112024600166670ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Group < Principal include Redmine::SafeAttributes has_and_belongs_to_many :users, :join_table => "#{table_name_prefix}groups_users#{table_name_suffix}", :after_add => :user_added, :after_remove => :user_removed acts_as_customizable validates_presence_of :lastname validates_uniqueness_of :lastname, :case_sensitive => false validates_length_of :lastname, :maximum => 255 self.valid_statuses = [STATUS_ACTIVE] before_destroy :remove_references_before_destroy scope :sorted, lambda {order(:type => :asc, :lastname => :asc)} scope :named, lambda {|arg| where("LOWER(#{table_name}.lastname) = LOWER(?)", arg.to_s.strip)} scope :givable, lambda {where(:type => 'Group')} safe_attributes( 'name', 'twofa_required', 'user_ids', 'custom_field_values', 'custom_fields', :if => lambda {|group, user| user.admin? && !group.builtin?}) alias_attribute :name, :lastname def to_s name.to_s end def builtin_type nil end # Return true if the group is a builtin group def builtin? false end # Returns true if the group can be given to a user def givable? !builtin? end def css_classes 'group' end def user_added(user) members.preload(:member_roles).each do |member| next if member.project_id.nil? # skip if the group is a member without roles in the project next if member.member_roles.empty? user_member = Member.find_or_initialize_by(:project_id => member.project_id, :user_id => user.id) user_member.member_roles << member.member_roles.pluck(:id, :role_id).map do |id, role_id| MemberRole.new(:role_id => role_id, :inherited_from => id) end user_member.save! end end def user_removed(user) MemberRole. joins(:member). where("#{Member.table_name}.user_id = ? AND #{MemberRole.table_name}.inherited_from IN (?)", user.id, MemberRole.select(:id).where(:member => members)). destroy_all end def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == 'lastname' attr_name = "name" end super(attr_name, *args) end def self.anonymous GroupAnonymous.load_instance end def self.non_member GroupNonMember.load_instance end private # Removes references that are not handled by associations def remove_references_before_destroy return if self.id.nil? Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL') Watcher.where('user_id = ?', id).delete_all end end redmine-6.0.5/app/models/group_anonymous.rb000066400000000000000000000016671500112024600210020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GroupAnonymous < GroupBuiltin def name l(:label_group_anonymous) end def builtin_type "anonymous" end end redmine-6.0.5/app/models/group_builtin.rb000066400000000000000000000031241500112024600204060ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GroupBuiltin < Group validate :validate_uniqueness, :on => :create def validate_uniqueness errors.add :base, 'The builtin group already exists.' if self.class.exists? end def builtin? true end def destroy false end def user_added(user) raise 'Cannot add users to a builtin group' end class << self def load_instance return nil if self == GroupBuiltin instance = unscoped.order('id').first || create_instance end def create_instance raise 'The builtin group already exists.' if exists? instance = unscoped.new instance.lastname = name instance.save :validate => false raise 'Unable to create builtin group.' if instance.new_record? instance end private :create_instance end end redmine-6.0.5/app/models/group_custom_field.rb000066400000000000000000000016151500112024600214200ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GroupCustomField < CustomField def type_name :label_group_plural end end redmine-6.0.5/app/models/group_non_member.rb000066400000000000000000000016711500112024600210660ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class GroupNonMember < GroupBuiltin def name l(:label_group_non_member) end def builtin_type "non_member" end end redmine-6.0.5/app/models/import.rb000066400000000000000000000207371500112024600170470ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'csv' class Import < ApplicationRecord has_many :items, :class_name => 'ImportItem', :dependent => :delete_all belongs_to :user serialize :settings before_destroy :remove_file validates_presence_of :filename, :user_id validates_length_of :filename, :maximum => 255 DATE_FORMATS = [ '%Y-%m-%d', '%d/%m/%Y', '%m/%d/%Y', '%Y/%m/%d', '%d.%m.%Y', '%d-%m-%Y' ] AUTO_MAPPABLE_FIELDS = {} def self.menu_item nil end def self.layout 'base' end def self.authorized?(user) user.admin? end def initialize(*args) super self.settings ||= {} end def file=(arg) return unless arg.present? && arg.size > 0 self.filename = generate_filename Redmine::Utils.save_upload(arg, filepath) end def set_default_settings(options={}) separator = lu(user, :general_csv_separator) wrapper = '"' encoding = lu(user, :general_csv_encoding) if file_exists? begin content = read_file_head separator = [',', ';'].max_by {|sep| content.count(sep)} wrapper = ['"', "'"].max_by {|quote_char| content.count(quote_char)} guessed_encoding = Redmine::CodesetUtil.guess_encoding(content) encoding = (guessed_encoding && ( Setting::ENCODINGS.detect {|e| e.casecmp?(guessed_encoding)} || Setting::ENCODINGS.detect {|e| Encoding.find(e) == Encoding.find(guessed_encoding)} )) || lu(user, :general_csv_encoding) rescue => e end end date_format = lu(user, "date.formats.default", :default => "foo") date_format = DATE_FORMATS.first unless DATE_FORMATS.include?(date_format) self.settings.merge!( 'separator' => separator, 'wrapper' => wrapper, 'encoding' => encoding, 'date_format' => date_format, 'notifications' => '0' ) if options.key?(:project_id) && options[:project_id].present? # Do not fail if project doesn't exist begin project = Project.find(options[:project_id]) self.settings.merge!('mapping' => {'project_id' => project.id}) rescue; end end end def to_param filename end # Returns the full path of the file to import # It is stored in tmp/imports with a random hex as filename def filepath if filename.present? && /\A[0-9a-f]+\z/.match?(filename) File.join(Rails.root, "tmp", "imports", filename) else nil end end # Returns true if the file to import exists def file_exists? filepath.present? && File.exist?(filepath) end # Returns the headers as an array that # can be used for select options def columns_options(default=nil) i = -1 headers.map {|h| [h, i+=1]} end # Parses the file to import and updates the total number of items def parse_file count = 0 read_items {|row, i| count=i} update_attribute :total_items, count count end # Reads the items to import and yields the given block for each item def read_items i = 0 headers = true read_rows do |row| if i == 0 && headers headers = false next end i+= 1 yield row, i if block_given? end end # Returns the count first rows of the file (including headers) def first_rows(count=4) rows = [] read_rows do |row| rows << row break if rows.size >= count end rows end # Returns an array of headers def headers first_rows(1).first || [] end # Returns the mapping options def mapping settings['mapping'] || {} end # Adds a callback that will be called after the item at given position is imported def add_callback(position, name, *args) settings['callbacks'] ||= {} settings['callbacks'][position] ||= [] settings['callbacks'][position] << [name, args] save! end # Executes the callbacks for the given object def do_callbacks(position, object) if callbacks = (settings['callbacks'] || {}).delete(position) callbacks.each do |name, args| send :"#{name}_callback", object, *args end save! end end # Imports items and returns the position of the last processed item def run(options={}) max_items = options[:max_items] max_time = options[:max_time] current = 0 imported = 0 resume_after = items.maximum(:position) || 0 interrupted = false started_on = Time.now read_items do |row, position| if (max_items && imported >= max_items) || (max_time && Time.now >= started_on + max_time) interrupted = true break end if position > resume_after item = items.build item.position = position item.unique_id = row_value(row, 'unique_id') if use_unique_id? if object = build_object(row, item) if object.save item.obj_id = object.id else item.message = object.errors.full_messages.join("\n") end end item.save! imported += 1 extend_object(row, item, object) if object.persisted? do_callbacks(use_unique_id? ? item.unique_id : item.position, object) end current = position end if imported == 0 || interrupted == false if total_items.nil? update_attribute :total_items, current end update_attribute :finished, true remove_file end current end def unsaved_items items.where(:obj_id => nil) end def saved_items items.where("obj_id IS NOT NULL") end private # Reads lines from the beginning of the file, up to the specified number # of bytes (max_read_bytes). def read_file_head(max_read_bytes = 4096) return '' unless file_exists? return File.read(filepath, mode: 'rb') if File.size(filepath) <= max_read_bytes # The last byte of the chunk may be part of a multi-byte character, # causing an invalid byte sequence. To avoid this, it truncates # the chunk at the last LF character, if found. chunk = File.read(filepath, max_read_bytes) last_lf_index = chunk.rindex("\n") last_lf_index ? chunk[..last_lf_index] : chunk end def read_rows return unless file_exists? csv_options = {:headers => false} csv_options[:encoding] = settings['encoding'].to_s.presence || 'UTF-8' csv_options[:encoding] = 'bom|UTF-8' if csv_options[:encoding] == 'UTF-8' separator = settings['separator'].to_s csv_options[:col_sep] = separator if separator.size == 1 wrapper = settings['wrapper'].to_s csv_options[:quote_char] = wrapper if wrapper.size == 1 CSV.foreach(filepath, **csv_options) do |row| yield row if block_given? end end def row_value(row, key) if index = mapping[key].presence row[index.to_i].presence end end def row_date(row, key) if s = row_value(row, key) format = settings['date_format'] format = DATE_FORMATS.first unless DATE_FORMATS.include?(format) Date.strptime(s, format) rescue s end end # Builds a record for the given row and returns it # To be implemented by subclasses def build_object(row, item) end # Extends object with properties, that may only be handled after it's been # persisted. def extend_object(row, item, object) end # Generates a filename used to store the import file def generate_filename Redmine::Utils.random_hex(16) end # Deletes the import file def remove_file if file_exists? begin File.delete filepath rescue => e logger.error "Unable to delete file #{filepath}: #{e.message}" if logger end end end # Returns true if value is a string that represents a true value def yes?(value) value == lu(user, :general_text_yes) || value == '1' end def use_unique_id? mapping['unique_id'].present? end end redmine-6.0.5/app/models/import_item.rb000066400000000000000000000016431500112024600200600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ImportItem < ApplicationRecord belongs_to :import validates_presence_of :import_id, :position end redmine-6.0.5/app/models/issue.rb000066400000000000000000002105651500112024600166650ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Issue < ApplicationRecord include Redmine::SafeAttributes include Redmine::Utils::DateCalculation include Redmine::I18n before_validation :default_assign, on: :create before_validation :clear_disabled_fields before_save :set_parent_id include Redmine::NestedSet::IssueNestedSet belongs_to :project belongs_to :tracker belongs_to :status, :class_name => 'IssueStatus' belongs_to :author, :class_name => 'User' belongs_to :assigned_to, :class_name => 'Principal' belongs_to :fixed_version, :class_name => 'Version' belongs_to :priority, :class_name => 'IssuePriority' belongs_to :category, :class_name => 'IssueCategory' has_many :journals, :as => :journalized, :dependent => :destroy, :inverse_of => :journalized has_many :time_entries, :dependent => :destroy has_and_belongs_to_many :changesets, lambda {order("#{Changeset.table_name}.committed_on ASC, #{Changeset.table_name}.id ASC")} has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all acts_as_attachable :after_add => :attachment_added, :after_remove => :attachment_removed acts_as_customizable acts_as_watchable acts_as_searchable :columns => ['subject', "#{table_name}.description"], :preload => [:project, :status, :tracker], :scope => lambda {|options| options[:open_issues] ? self.open : self.all} acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id} (#{o.status}): #{o.subject}"}, :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}}, :type => Proc.new {|o| 'issue' + (o.closed? ? '-closed' : '')} acts_as_activity_provider :scope => proc {preload(:project, :author, :tracker, :status)}, :author_key => :author_id acts_as_mentionable :attributes => ['description'] DONE_RATIO_OPTIONS = %w(issue_field issue_status) attr_reader :transition_warning attr_writer :deleted_attachment_ids delegate :notes, :notes=, :private_notes, :private_notes=, :to => :current_journal, :allow_nil => true validates_presence_of :subject, :project, :tracker validates_presence_of :priority, :if => Proc.new {|issue| issue.new_record? || issue.priority_id_changed?} validates_presence_of :status, :if => Proc.new {|issue| issue.new_record? || issue.status_id_changed?} validates_presence_of :author, :if => Proc.new {|issue| issue.new_record? || issue.author_id_changed?} validates_length_of :subject, :maximum => 255 validates_inclusion_of :done_ratio, :in => 0..100 validates :estimated_hours, :numericality => {:greater_than_or_equal_to => 0, :allow_nil => true, :message => :invalid} validates :start_date, :date => true validates :due_date, :date => true validate :validate_issue, :validate_required_fields, :validate_permissions scope :visible, (lambda do |*args| joins(:project). where(Issue.visible_condition(args.shift || User.current, *args)) end) scope :open, (lambda do |*args| is_closed = !args.empty? ? !args.first : false joins(:status). where(:issue_statuses => {:is_closed => is_closed}) end) scope :recently_updated, lambda {order(:updated_on => :desc)} scope :on_active_project, (lambda do joins(:project). where(:projects => {:status => Project::STATUS_ACTIVE}) end) scope :fixed_version, (lambda do |versions| ids = [versions].flatten.compact.map {|v| v.is_a?(Version) ? v.id : v} ids.any? ? where(:fixed_version_id => ids) : none end) scope :assigned_to, (lambda do |arg| arg = Array(arg).uniq ids = arg.map {|p| p.is_a?(Principal) ? p.id : p} ids += arg.select {|p| p.is_a?(User)}.map(&:group_ids).flatten.uniq ids.compact! ids.any? ? where(:assigned_to_id => ids) : none end) scope :like, (lambda do |q| if q.present? where(*::Query.tokenized_like_conditions("#{table_name}.subject", q)) end end) before_save :close_duplicates, :update_done_ratio_from_issue_status, :force_updated_on_change, :update_closed_on after_save do |issue| if !issue.saved_change_to_id? && issue.saved_change_to_project_id? issue.send :after_project_change end end after_destroy :update_parent_attributes after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :delete_selected_attachments, :create_journal # Should be after_create but would be called before previous after_save callbacks after_save :after_create_from_copy # add_auto_watcher needs to run before sending notifications, thus it needs # to be added after send_notification (after_ callbacks are run in inverse order) # https://api.rubyonrails.org/v5.2.3/classes/ActiveSupport/Callbacks/ClassMethods.html#method-i-set_callback after_create_commit :send_notification after_create_commit :add_auto_watcher after_commit :create_parent_issue_journal # Returns a SQL conditions string used to find all issues visible by the specified user def self.visible_condition(user, options={}) Project.allowed_to_condition(user, :view_issues, options) do |role, user| sql = if user.id && user.logged? case role.issues_visibility when 'all' '1=1' when 'default' user_ids = [user.id] + user.groups.pluck(:id).compact "(#{table_name}.is_private = #{connection.quoted_false} " \ "OR #{table_name}.author_id = #{user.id} " \ "OR #{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" when 'own' user_ids = [user.id] + user.groups.pluck(:id).compact "(#{table_name}.author_id = #{user.id} OR " \ "#{table_name}.assigned_to_id IN (#{user_ids.join(',')}))" else '1=0' end else "(#{table_name}.is_private = #{connection.quoted_false})" end unless role.permissions_all_trackers?(:view_issues) tracker_ids = role.permissions_tracker_ids(:view_issues) if tracker_ids.any? sql = "(#{sql} AND #{table_name}.tracker_id IN (#{tracker_ids.join(',')}))" else sql = '1=0' end end sql end end # Returns true if usr or current user is allowed to view the issue def visible?(usr=nil) (usr || User.current).allowed_to?(:view_issues, self.project) do |role, user| visible = if user.logged? case role.issues_visibility when 'all' true when 'default' !self.is_private? || (self.author == user || user.is_or_belongs_to?(assigned_to)) when 'own' self.author == user || user.is_or_belongs_to?(assigned_to) else false end else !self.is_private? end unless role.permissions_all_trackers?(:view_issues) visible &&= role.permissions_tracker_ids?(:view_issues, tracker_id) end visible end end # Returns true if user or current user is allowed to edit or add notes to the issue def editable?(user=User.current) attributes_editable?(user) || notes_addable?(user) end # Returns true if user or current user is allowed to edit the issue def attributes_editable?(user=User.current) user_tracker_permission?(user, :edit_issues) || ( user_tracker_permission?(user, :edit_own_issues) && author == user ) end def attachments_addable?(user=User.current) attributes_editable?(user) || notes_addable?(user) end # Overrides Redmine::Acts::Attachable::InstanceMethods#attachments_editable? def attachments_editable?(user=User.current) attributes_editable?(user) end # Returns true if user or current user is allowed to add notes to the issue def notes_addable?(user=User.current) user_tracker_permission?(user, :add_issue_notes) end # Returns true if user or current user is allowed to delete the issue def deletable?(user=User.current) user_tracker_permission?(user, :delete_issues) end # Overrides Redmine::Acts::Attachable::InstanceMethods#attachments_deletable? def attachments_deletable?(user=User.current) attributes_editable?(user) end def initialize(attributes=nil, *args) super if new_record? # set default values for new records only self.priority ||= IssuePriority.default self.watcher_user_ids = [] end end def create_or_update(*args) super() ensure @status_was = nil end private :create_or_update # AR#Persistence#destroy would raise and RecordNotFound exception # if the issue was already deleted or updated (non matching lock_version). # This is a problem when bulk deleting issues or deleting a project # (because an issue may already be deleted if its parent was deleted # first). # The issue is reloaded by the nested_set before being deleted so # the lock_version condition should not be an issue but we handle it. def destroy super rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotFound # Stale or already deleted begin reload rescue ActiveRecord::RecordNotFound # The issue was actually already deleted @destroyed = true return freeze end # The issue was stale, retry to destroy super end alias :base_reload :reload def reload(*args) @workflow_rule_by_attribute = nil @assignable_versions = nil @relations = nil @spent_hours = nil @total_spent_hours = nil @total_estimated_hours = nil @last_updated_by = nil @last_notes = nil base_reload(*args) end # Overrides Redmine::Acts::Customizable::InstanceMethods#available_custom_fields def available_custom_fields (project && tracker) ? (project.all_issue_custom_fields & tracker.custom_fields) : [] end def visible_custom_field_values(user=nil) user_real = user || User.current custom_field_values.select do |value| value.custom_field.visible_by?(project, user_real) end end # Overrides Redmine::Acts::Customizable::InstanceMethods#set_custom_field_default? def set_custom_field_default?(custom_value) new_record? || project_id_changed?|| tracker_id_changed? end # Copies attributes from another issue, arg can be an id or an Issue def copy_from(arg, options={}) issue = arg.is_a?(Issue) ? arg : Issue.visible.find(arg) self.attributes = issue.attributes.dup.except( "id", "root_id", "parent_id", "lft", "rgt", "created_on", "updated_on", "status_id", "closed_on" ) self.custom_field_values = issue.custom_field_values.inject({}) do |h, v| h[v.custom_field_id] = v.value h end if options[:keep_status] self.status = issue.status end self.author = User.current unless options[:attachments] == false self.attachments = issue.attachments.map do |attachement| attachement.copy(:container => self) end end unless options[:watchers] == false self.watcher_user_ids = issue.visible_watcher_users.select{|u| u.status == User::STATUS_ACTIVE}.map(&:id) end @copied_from = issue @copy_options = options self end # Returns an unsaved copy of the issue def copy(attributes=nil, copy_options={}) copy = self.class.new.copy_from(self, copy_options) copy.attributes = attributes if attributes copy end # Returns true if the issue is a copy def copy? @copied_from.present? end def status_id=(status_id) if status_id.to_s != self.status_id.to_s self.status = (status_id.present? ? IssueStatus.find_by_id(status_id) : nil) end self.status_id end # Sets the status. def status=(status) if status != self.status @workflow_rule_by_attribute = nil end association(:status).writer(status) end def priority_id=(pid) self.priority = nil write_attribute(:priority_id, pid) end def category_id=(cid) self.category = nil write_attribute(:category_id, cid) end def fixed_version_id=(vid) self.fixed_version = nil write_attribute(:fixed_version_id, vid) end def tracker_id=(tracker_id) if tracker_id.to_s != self.tracker_id.to_s self.tracker = (tracker_id.present? ? Tracker.find_by_id(tracker_id) : nil) end self.tracker_id end # Sets the tracker. # This will set the status to the default status of the new tracker if: # * the status was the default for the previous tracker # * or if the status was not part of the new tracker statuses # * or the status was nil def tracker=(tracker) tracker_was = self.tracker association(:tracker).writer(tracker) if tracker != tracker_was if status == tracker_was.try(:default_status) self.status = nil elsif status && tracker && !tracker.issue_status_ids.include?(status.id) self.status = nil end reassign_custom_field_values @workflow_rule_by_attribute = nil end self.status ||= default_status self.tracker end def project_id=(project_id) if project_id.to_s != self.project_id.to_s self.project = (project_id.present? ? Project.find_by_id(project_id) : nil) end self.project_id end # Sets the project. # Unless keep_tracker argument is set to true, this will change the tracker # to the first tracker of the new project if the previous tracker is not part # of the new project trackers. # This will: # * clear the fixed_version is it's no longer valid for the new project. # * clear the parent issue if it's no longer valid for the new project. # * set the category to the category with the same name in the new # project if it exists, or clear it if it doesn't. # * for new issue, set the fixed_version to the project default version # if it's a valid fixed_version. def project=(project, keep_tracker=false) project_was = self.project association(:project).writer(project) if project != project_was @safe_attribute_names = nil end if project_was && project && project_was != project @assignable_versions = nil unless keep_tracker || project.trackers.include?(tracker) self.tracker = project.trackers.first end # Reassign to the category with same name if any if category self.category = project.issue_categories.find_by_name(category.name) end # Clear the assignee if not available in the new project for new issues (eg. copy) # For existing issue, the previous assignee is still valid, so we keep it if new_record? && assigned_to && !assignable_users.include?(assigned_to) self.assigned_to_id = nil end # Keep the fixed_version if it's still valid in the new_project if fixed_version && fixed_version.project != project && !project.shared_versions.include?(fixed_version) self.fixed_version = nil end # Clear the parent task if it's no longer valid unless valid_parent_project? self.parent_issue_id = nil end reassign_custom_field_values @workflow_rule_by_attribute = nil end # Set fixed_version to the project default version if it's valid if new_record? && fixed_version.nil? && project && project.default_version_id? if project.shared_versions.open.exists?(project.default_version_id) self.fixed_version_id = project.default_version_id end end self.project end def description=(arg) if arg.is_a?(String) arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n") end write_attribute(:description, arg) end def deleted_attachment_ids Array(@deleted_attachment_ids).map(&:to_i) end # Overrides assign_attributes so that project and tracker get assigned first def assign_attributes(new_attributes, *args) return if new_attributes.nil? attrs = new_attributes.dup attrs.stringify_keys! %w(project project_id tracker tracker_id).each do |attr| if attrs.has_key?(attr) send :"#{attr}=", attrs.delete(attr) end end super(attrs, *args) end def attributes=(new_attributes) assign_attributes new_attributes end def estimated_hours=(h) write_attribute :estimated_hours, (h.is_a?(String) ? (h.to_hours || h) : h) end safe_attributes( 'project_id', 'tracker_id', 'status_id', 'category_id', 'assigned_to_id', 'priority_id', 'fixed_version_id', 'subject', 'description', 'start_date', 'due_date', 'done_ratio', 'estimated_hours', 'custom_field_values', 'custom_fields', 'lock_version', :if => lambda {|issue, user| issue.new_record? || issue.attributes_editable?(user)}) safe_attributes( 'notes', :if => lambda {|issue, user| issue.notes_addable?(user)}) safe_attributes( 'private_notes', :if => lambda {|issue, user| !issue.new_record? && user.allowed_to?(:set_notes_private, issue.project)}) safe_attributes( 'watcher_user_ids', :if => lambda {|issue, user| issue.new_record? && user.allowed_to?(:add_issue_watchers, issue.project)}) safe_attributes( 'is_private', :if => lambda do |issue, user| user.allowed_to?(:set_issues_private, issue.project) || (issue.author_id == user.id && user.allowed_to?(:set_own_issues_private, issue.project)) end) safe_attributes( 'parent_issue_id', :if => lambda do |issue, user| (issue.new_record? || issue.attributes_editable?(user)) && user.allowed_to?(:manage_subtasks, issue.project) end) safe_attributes( 'deleted_attachment_ids', :if => lambda {|issue, user| issue.attachments_deletable?(user)}) def safe_attribute_names(user=nil) names = super names -= disabled_core_fields names -= read_only_attribute_names(user) if new_record? # Make sure that project_id can always be set for new issues names |= %w(project_id) end if dates_derived? names -= %w(start_date due_date) end if priority_derived? names -= %w(priority_id) end if done_ratio_derived? names -= %w(done_ratio) end names end # Safely sets attributes # Should be called from controllers instead of #attributes= # attr_accessible is too rough because we still want things like # Issue.new(:project => foo) to work def safe_attributes=(attrs, user=User.current) if attrs.respond_to?(:to_unsafe_hash) attrs = attrs.to_unsafe_hash end @attributes_set_by = user return unless attrs.is_a?(Hash) attrs = attrs.deep_dup # Project and Tracker must be set before since new_statuses_allowed_to depends on it. if (p = attrs.delete('project_id')) && safe_attribute?('project_id') if p.is_a?(String) && !/^\d*$/.match?(p) p_id = Project.find_by_identifier(p).try(:id) else p_id = p.to_i end if allowed_target_projects(user).where(:id => p_id).exists? self.project_id = p_id end if project_id_changed? && attrs['category_id'].present? && attrs['category_id'].to_s == category_id_was.to_s # Discard submitted category on previous project attrs.delete('category_id') end end if (t = attrs.delete('tracker_id')) && safe_attribute?('tracker_id') if allowed_target_trackers(user).where(:id => t.to_i).exists? self.tracker_id = t end end if project && tracker.nil? # Set a default tracker to accept custom field values # even if tracker is not specified allowed_trackers = allowed_target_trackers(user) if attrs['parent_issue_id'].present? # If parent_issue_id is present, the first tracker for which this field # is not disabled is chosen as default self.tracker = allowed_trackers.detect {|t| t.core_fields.include?('parent_issue_id')} end self.tracker ||= allowed_trackers.first end statuses_allowed = new_statuses_allowed_to(user) if (s = attrs.delete('status_id')) && safe_attribute?('status_id') if statuses_allowed.collect(&:id).include?(s.to_i) self.status_id = s end end if new_record? && !statuses_allowed.include?(status) self.status = statuses_allowed.first || default_status end if (u = attrs.delete('assigned_to_id')) && safe_attribute?('assigned_to_id') self.assigned_to_id = u end attrs = delete_unsafe_attributes(attrs, user) return if attrs.empty? if attrs['parent_issue_id'].present? s = attrs['parent_issue_id'].to_s unless (m = s.match(%r{\A#?(\d+)\z})) && (m[1] == parent_id.to_s || Issue.visible(user).exists?(m[1])) @invalid_parent_issue_id = attrs.delete('parent_issue_id') end end if attrs['custom_field_values'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_field_values'].select! {|k, v| editable_custom_field_ids.include?(k.to_s)} end if attrs['custom_fields'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_fields'].select! {|c| editable_custom_field_ids.include?(c['id'].to_s)} end assign_attributes attrs end def disabled_core_fields tracker ? tracker.disabled_core_fields : [] end # Returns the custom_field_values that can be edited by the given user def editable_custom_field_values(user=nil) read_only = read_only_attribute_names(user) visible_custom_field_values(user).reject do |value| read_only.include?(value.custom_field_id.to_s) end end # Returns the custom fields that can be edited by the given user def editable_custom_fields(user=nil) editable_custom_field_values(user).map(&:custom_field).uniq end # Returns the names of attributes that are read-only for user or the current user # For users with multiple roles, the read-only fields are the intersection of # read-only fields of each role # The result is an array of strings where sustom fields are represented with their ids # # Examples: # issue.read_only_attribute_names # => ['due_date', '2'] # issue.read_only_attribute_names(user) # => [] def read_only_attribute_names(user=nil) workflow_rule_by_attribute(user).reject {|attr, rule| rule != 'readonly'}.keys end # Returns the names of required attributes for user or the current user # For users with multiple roles, the required fields are the intersection of # required fields of each role # The result is an array of strings where sustom fields are represented with their ids # # Examples: # issue.required_attribute_names # => ['due_date', '2'] # issue.required_attribute_names(user) # => [] def required_attribute_names(user=nil) workflow_rule_by_attribute(user).reject {|attr, rule| rule != 'required'}.keys end # Returns true if the attribute is required for user def required_attribute?(name, user=nil) required_attribute_names(user).include?(name.to_s) end # Returns a hash of the workflow rule by attribute for the given user # # Examples: # issue.workflow_rule_by_attribute # => {'due_date' => 'required', 'start_date' => 'readonly'} def workflow_rule_by_attribute(user=nil) return @workflow_rule_by_attribute if @workflow_rule_by_attribute && user.nil? roles = roles_for_workflow(user || User.current) return {} if roles.empty? result = {} workflow_permissions = WorkflowPermission.where( :tracker_id => tracker_id, :old_status_id => status_id, :role_id => roles.map(&:id) ).to_a if workflow_permissions.any? workflow_rules = workflow_permissions.inject({}) do |h, wp| h[wp.field_name] ||= {} h[wp.field_name][wp.role_id] = wp.rule h end fields_with_roles = {} IssueCustomField.where(:visible => false). joins(:roles).pluck(:id, "role_id"). each do |field_id, role_id| fields_with_roles[field_id] ||= [] fields_with_roles[field_id] << role_id end roles.each do |role| fields_with_roles.each do |field_id, role_ids| unless role_ids.include?(role.id) field_name = field_id.to_s workflow_rules[field_name] ||= {} workflow_rules[field_name][role.id] = 'readonly' end end end workflow_rules.each do |attr, rules| next if rules.size < roles.size uniq_rules = rules.values.uniq if uniq_rules.size == 1 result[attr] = uniq_rules.first else result[attr] = 'required' end end end @workflow_rule_by_attribute = result if user.nil? result end private :workflow_rule_by_attribute def done_ratio if Issue.use_status_for_done_ratio? && status && status.default_done_ratio status.default_done_ratio else read_attribute(:done_ratio) end end def self.use_status_for_done_ratio? Setting.issue_done_ratio == 'issue_status' end def self.use_field_for_done_ratio? Setting.issue_done_ratio == 'issue_field' end def validate_issue if due_date && start_date && (start_date_changed? || due_date_changed?) && due_date < start_date errors.add :due_date, :greater_than_start_date end if start_date && start_date_changed? && soonest_start && start_date < soonest_start errors.add :start_date, :earlier_than_minimum_start_date, :date => format_date(soonest_start) end if project && fixed_version_id if fixed_version.nil? || assignable_versions.exclude?(fixed_version) errors.add :fixed_version_id, :inclusion elsif reopening? && fixed_version.closed? errors.add :base, I18n.t(:error_can_not_reopen_issue_on_closed_version) end end if project && category_id unless project.issue_category_ids.include?(category_id) errors.add :category_id, :inclusion end end # Checks that the issue can not be added/moved to a disabled tracker if project && (tracker_id_changed? || project_id_changed?) if tracker && !project.trackers.include?(tracker) errors.add :tracker_id, :inclusion end end if project && assigned_to_id_changed? && assigned_to_id.present? unless assignable_users.include?(assigned_to) errors.add :assigned_to_id, :invalid end end # Checks parent issue assignment if @invalid_parent_issue_id.present? errors.add :parent_issue_id, :invalid elsif @parent_issue if !valid_parent_project?(@parent_issue) errors.add :parent_issue_id, :invalid elsif (@parent_issue != parent) && ( self.would_reschedule?(@parent_issue) || @parent_issue.self_and_ancestors.any? do |a| a.relations_from.any? do |r| r.relation_type == IssueRelation::TYPE_PRECEDES && r.issue_to.would_reschedule?(self) end end ) errors.add :parent_issue_id, :invalid elsif !closed? && @parent_issue.closed? # cannot attach an open issue to a closed parent errors.add :base, :open_issue_with_closed_parent elsif !new_record? # moving an existing issue if move_possible?(@parent_issue) # move accepted else errors.add :parent_issue_id, :invalid end end end end # Validates the issue against additional workflow requirements def validate_required_fields user = new_record? ? author : current_journal.try(:user) required_attribute_names(user).each do |attribute| if /^\d+$/.match?(attribute) attribute = attribute.to_i v = custom_field_values.detect {|v| v.custom_field_id == attribute} if v && Array(v.value).detect(&:present?).nil? errors.add(v.custom_field.name, l('activerecord.errors.messages.blank')) end else if respond_to?(attribute) && send(attribute).blank? && !disabled_core_fields.include?(attribute) next if attribute == 'category_id' && project.try(:issue_categories).blank? next if attribute == 'fixed_version_id' && assignable_versions.blank? errors.add attribute, :blank end end end end def validate_permissions if @attributes_set_by && new_record? && copy? unless allowed_target_trackers(@attributes_set_by).include?(tracker) errors.add :tracker, :invalid end end end # Overrides Redmine::Acts::Customizable::InstanceMethods#validate_custom_field_values # so that custom values that are not editable are not validated (eg. a custom field that # is marked as required should not trigger a validation error if the user is not allowed # to edit this field). def validate_custom_field_values user = new_record? ? author : current_journal.try(:user) if new_record? || custom_field_values_changed? editable_custom_field_values(user).each(&:validate_value) end end # Set the done_ratio using the status if that setting is set. This will keep the done_ratios # even if the user turns off the setting later def update_done_ratio_from_issue_status if Issue.use_status_for_done_ratio? && status && status.default_done_ratio self.done_ratio = status.default_done_ratio end end def init_journal(user, notes = "") @current_journal ||= Journal.new(:journalized => self, :user => user, :notes => notes) end # Returns the current journal or nil if it's not initialized def current_journal @current_journal end # Clears the current journal def clear_journal @current_journal = nil end # Returns the names of attributes that are journalized when updating the issue def journalized_attribute_names names = Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on closed_on) if tracker names -= tracker.disabled_core_fields end names end # Returns the id of the last journal or nil def last_journal_id if new_record? nil else journals.maximum(:id) end end # Returns a scope for journals that have an id greater than journal_id def journals_after(journal_id) scope = journals.reorder("#{Journal.table_name}.id ASC") if journal_id.present? scope = scope.where("#{Journal.table_name}.id > ?", journal_id.to_i) end scope end # Returns the journals that are visible to user with their index # Used to display the issue history def visible_journals_with_index(user=User.current) result = journals. preload(:details). preload(:user => :email_address). reorder(:created_on, :id).to_a result.each_with_index {|j, i| j.indice = i + 1} unless user.allowed_to?(:view_private_notes, project) result.select! do |journal| !journal.private_notes? || journal.user == user end end Journal.preload_journals_details_custom_fields(result) result.select! {|journal| journal.notes? || journal.visible_details.any?} result end # Returns the assignee immediately prior to the current one from the issue history def prior_assigned_to prior_assigned_to_id = journals.joins(:details) .where(details: {prop_key: 'assigned_to_id'}) .where.not(details: {old_value: nil}) .order(id: :desc) .pick(:old_value) prior_assigned_to_id && Principal.find_by(id: prior_assigned_to_id) end # Returns the initial status of the issue # Returns nil for a new issue def status_was if status_id_changed? if status_id_was.to_i > 0 @status_was ||= IssueStatus.find_by_id(status_id_was) end else @status_was ||= status end end # Return true if the issue is closed, otherwise false def closed? status.present? && status.is_closed? end # Returns true if the issue was closed when loaded def was_closed? status_was.present? && status_was.is_closed? end # Return true if the issue is being reopened def reopening? if new_record? false else status_id_changed? && !closed? && was_closed? end end alias :reopened? :reopening? # Return true if the issue is being closed def closing? if new_record? closed? else status_id_changed? && closed? && !was_closed? end end # Returns true if the issue is overdue def overdue? due_date.present? && (due_date < User.current.today) && !closed? end # Is the amount of work done less than it should for the due date def behind_schedule? return false if start_date.nil? || due_date.nil? done_date = start_date + ((due_date - start_date + 1) * done_ratio / 100).floor return done_date <= User.current.today end # Does this issue have children? def children? !leaf? end # Users the issue can be assigned to def assignable_users return [] if project.nil? users = project.assignable_users(tracker).to_a users << author if author && author.active? if assigned_to_id_was.present? && assignee = Principal.find_by_id(assigned_to_id_was) users << assignee end users.uniq.sort end # Versions that the issue can be assigned to def assignable_versions return @assignable_versions if @assignable_versions return [] if project.nil? versions = project.shared_versions.open.to_a if fixed_version if fixed_version_id_changed? # nothing to do elsif project_id_changed? if project.shared_versions.include?(fixed_version) versions << fixed_version end else versions << fixed_version end end @assignable_versions = versions.uniq.sort end # Returns true if this issue is blocked by another issue that is still open def blocked? relations_to.any? {|ir| ir.relation_type == 'blocks' && ir.issue_from&.closed? == false} end # Returns true if this issue can be closed and if not, returns false and populates the reason def closable? if descendants.open.any? @transition_warning = l(:notice_issue_not_closable_by_open_tasks) return false end if blocked? @transition_warning = l(:notice_issue_not_closable_by_blocking_issue) return false end return true end # Returns true if this issue can be reopen and if not, returns false and populates the reason def reopenable? if ancestors.open(false).any? @transition_warning = l(:notice_issue_not_reopenable_by_closed_parent_issue) return false end return true end # Returns the default status of the issue based on its tracker # Returns nil if tracker is nil def default_status tracker.try(:default_status) end # Returns an array of statuses that user is able to apply def new_statuses_allowed_to(user=User.current, include_default=false) initial_status = nil if new_record? # nop elsif tracker_id_changed? if Tracker.where(:id => tracker_id_was, :default_status_id => status_id_was).any? initial_status = default_status elsif tracker.issue_status_ids.include?(status_id_was) initial_status = IssueStatus.find_by_id(status_id_was) else initial_status = default_status end else initial_status = status_was end initial_assigned_to_id = assigned_to_id_changed? ? assigned_to_id_was : assigned_to_id assignee_transitions_allowed = initial_assigned_to_id.present? && (user.id == initial_assigned_to_id || user.group_ids.include?(initial_assigned_to_id)) statuses = [] statuses += IssueStatus.new_statuses_allowed( initial_status, roles_for_workflow(user), tracker, author == user, assignee_transitions_allowed ) statuses << initial_status unless statuses.empty? statuses << default_status if include_default || (new_record? && statuses.empty?) statuses = statuses.compact.uniq.sort unless closable? # cannot close a blocked issue or a parent with open subtasks statuses.reject!(&:is_closed?) end unless reopenable? # cannot reopen a subtask of a closed parent statuses.select!(&:is_closed?) end statuses end # Returns the original tracker def tracker_was Tracker.find_by_id(tracker_id_in_database) end # Returns the previous assignee whenever we're before the save # or in after_* callbacks def previous_assignee previous_assigned_to_id = if assigned_to_id_change_to_be_saved.nil? assigned_to_id_before_last_save else assigned_to_id_in_database end if previous_assigned_to_id Principal.find_by_id(previous_assigned_to_id) end end # Returns the users that should be notified def notified_users # Author and assignee are always notified unless they have been # locked or don't want to be notified notified = [author, assigned_to, previous_assignee].compact.uniq notified = notified.map {|n| n.is_a?(Group) ? n.users : n}.flatten notified.uniq! notified = notified.select {|u| u.active? && u.notify_about?(self)} notified += project.notified_users notified += project.users.preload(:preference).select(&:notify_about_high_priority_issues?) if priority.high? notified.uniq! # Remove users that can not view the issue notified.reject! {|user| !visible?(user)} notified end # Returns the email addresses that should be notified def recipients notified_users.collect(&:mail) end def notify? @notify != false end def notify=(arg) @notify = arg end # Returns the number of hours spent on this issue def spent_hours @spent_hours ||= time_entries.sum(:hours) || 0.0 end # Returns the total number of hours spent on this issue and its descendants def total_spent_hours @total_spent_hours ||= if leaf? spent_hours else self_and_descendants.joins(:time_entries).sum("#{TimeEntry.table_name}.hours").to_f || 0.0 end end def total_estimated_hours if leaf? estimated_hours else @total_estimated_hours ||= self_and_descendants.visible.sum(:estimated_hours) end end # Returns the number of estimated remaining hours on this issue def estimated_remaining_hours (estimated_hours || 0) * (100 - (done_ratio || 0)) / 100 end def relations @relations ||= IssueRelation::Relations.new( self, IssueRelation.where('issue_from_id = ? OR issue_to_id = ?', id, id).sort ) end def last_updated_by if @last_updated_by @last_updated_by.presence else journals.reorder(:id => :desc).first.try(:user) end end def last_notes if @last_notes @last_notes else journals.visible.where.not(notes: '').reorder(:id => :desc).first.try(:notes) end end # Preloads relations for a collection of issues def self.load_relations(issues) if issues.any? relations = IssueRelation.where( "issue_from_id IN (:ids) OR issue_to_id IN (:ids)", :ids => issues.map(&:id) ).all issues.each do |issue| issue.instance_variable_set( :@relations, relations.select {|r| r.issue_from_id == issue.id || r.issue_to_id == issue.id} ) end end end # Preloads visible spent time for a collection of issues def self.load_visible_spent_hours(issues, user=User.current) if issues.any? hours_by_issue_id = TimeEntry.visible(user).where(:issue_id => issues.map(&:id)).group(:issue_id).sum(:hours) issues.each do |issue| issue.instance_variable_set :@spent_hours, (hours_by_issue_id[issue.id] || 0.0) end end end # Preloads visible total spent time for a collection of issues def self.load_visible_total_spent_hours(issues, user=User.current) if issues.any? hours_by_issue_id = TimeEntry.visible(user).joins(:issue). joins("JOIN #{Issue.table_name} parent ON parent.root_id = #{Issue.table_name}.root_id" + " AND parent.lft <= #{Issue.table_name}.lft AND parent.rgt >= #{Issue.table_name}.rgt"). where("parent.id IN (?)", issues.map(&:id)).group("parent.id").sum(:hours) issues.each do |issue| issue.instance_variable_set :@total_spent_hours, (hours_by_issue_id[issue.id] || 0.0) end end end # Preloads visible relations for a collection of issues def self.load_visible_relations(issues, user=User.current) if issues.any? issue_ids = issues.map(&:id) # Relations with issue_from in given issues and visible issue_to relations_from = IssueRelation.joins(:issue_to => :project). where(visible_condition(user)).where(:issue_from_id => issue_ids).to_a # Relations with issue_to in given issues and visible issue_from relations_to = IssueRelation.joins(:issue_from => :project). where(visible_condition(user)). where(:issue_to_id => issue_ids).to_a issues.each do |issue| relations = relations_from.select {|relation| relation.issue_from_id == issue.id} + relations_to.select {|relation| relation.issue_to_id == issue.id} issue.instance_variable_set :@relations, IssueRelation::Relations.new(issue, relations.sort) end end end # Returns a scope of the given issues and their descendants def self.self_and_descendants(issues) Issue.joins( "JOIN #{Issue.table_name} ancestors" + " ON ancestors.root_id = #{Issue.table_name}.root_id" + " AND ancestors.lft <= #{Issue.table_name}.lft AND ancestors.rgt >= #{Issue.table_name}.rgt" ). where(:ancestors => {:id => issues.map(&:id)}) end # Preloads users who updated last a collection of issues def self.load_visible_last_updated_by(issues, user=User.current) if issues.any? issue_ids = issues.map(&:id) journal_ids = Journal.joins(issue: :project). where(:journalized_type => 'Issue', :journalized_id => issue_ids). where(Journal.visible_notes_condition(user, :skip_pre_condition => true)). group(:journalized_id). maximum(:id). values journals = Journal.where(:id => journal_ids).preload(:user).to_a issues.each do |issue| journal = journals.detect {|j| j.journalized_id == issue.id} issue.instance_variable_set(:@last_updated_by, journal.try(:user) || '') end end end # Preloads visible last notes for a collection of issues def self.load_visible_last_notes(issues, user=User.current) if issues.any? issue_ids = issues.map(&:id) journal_ids = Journal.joins(issue: :project). where(:journalized_type => 'Issue', :journalized_id => issue_ids). where(Journal.visible_notes_condition(user, :skip_pre_condition => true)). where.not(notes: ''). group(:journalized_id). maximum(:id). values journals = Journal.where(:id => journal_ids).to_a issues.each do |issue| journal = journals.detect {|j| j.journalized_id == issue.id} issue.instance_variable_set(:@last_notes, journal.try(:notes) || '') end end end # Finds an issue relation given its id. def find_relation(relation_id) IssueRelation.where("issue_to_id = ? OR issue_from_id = ?", id, id).find(relation_id) end # Returns true if this issue blocks the other issue, otherwise returns false def blocks?(other) all = [self] last = [self] while last.any? current = last.map do |i| i.relations_from.where(:relation_type => IssueRelation::TYPE_BLOCKS).map(&:issue_to) end.flatten.uniq current -= last current -= all return true if current.include?(other) last = current all += last end false end # Returns true if the other issue might be rescheduled if the start/due dates of this issue change def would_reschedule?(other) all = [self] last = [self] while last.any? current = last.map do |i| i.relations_from.where(:relation_type => IssueRelation::TYPE_PRECEDES).map(&:issue_to) + i.leaves.to_a + i.ancestors.map {|a| a.relations_from.where(:relation_type => IssueRelation::TYPE_PRECEDES).map(&:issue_to)} end.flatten.uniq current -= last current -= all return true if current.include?(other) last = current all += last end false end # Returns an array of issues that duplicate this one def duplicates relations_to.select {|r| r.relation_type == IssueRelation::TYPE_DUPLICATES}.collect {|r| r.issue_from} end # Returns the due date or the target due date if any # Used on gantt chart def due_before due_date || (fixed_version ? fixed_version.effective_date : nil) end # Returns the time scheduled for this issue. # # Example: # Start Date: 2/26/09, End Date: 3/04/09 # duration => 6 def duration (start_date && due_date) ? due_date - start_date : 0 end # Returns the duration in working days def working_duration (start_date && due_date) ? working_days(start_date, due_date) : 0 end def soonest_start(reload=false) if @soonest_start.nil? || reload relations_to.reload if reload dates = relations_to.collect{|relation| relation.successor_soonest_start} p = @parent_issue || parent if p && Setting.parent_issue_dates == 'derived' dates << p.soonest_start end @soonest_start = dates.compact.max end @soonest_start end # Sets start_date on the given date or the next working day # and changes due_date to keep the same working duration. def reschedule_on(date) wd = working_duration date = next_working_date(date) self.start_date = date self.due_date = add_working_days(date, wd) end # Reschedules the issue on the given date or the next working day and saves the record. # If the issue is a parent task, this is done by rescheduling its subtasks. def reschedule_on!(date, journal=nil) return if date.nil? if leaf? || !dates_derived? if start_date.nil? || start_date != date if start_date && start_date > date # Issue can not be moved earlier than its soonest start date date = [soonest_start(true), date].compact.max end if journal init_journal(journal.user) end reschedule_on(date) begin save rescue ActiveRecord::StaleObjectError reload reschedule_on(date) save end end else leaves.each do |leaf| if leaf.start_date # Only move subtask if it starts at the same date as the parent # or if it starts before the given date if start_date == leaf.start_date || date > leaf.start_date leaf.reschedule_on!(date) end else leaf.reschedule_on!(date) end end end end def dates_derived? !leaf? && Setting.parent_issue_dates == 'derived' end def priority_derived? !leaf? && Setting.parent_issue_priority == 'derived' end def done_ratio_derived? !leaf? && Setting.parent_issue_done_ratio == 'derived' end def <=>(issue) return nil unless issue.is_a?(Issue) if root_id != issue.root_id (root_id || 0) <=> (issue.root_id || 0) else (lft || 0) <=> (issue.lft || 0) end end def to_s "#{tracker} ##{id}: #{subject}" end # Returns a string of css classes that apply to the issue def css_classes(user=User.current) s = "issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}" s << ' closed' if closed? s << ' overdue' if overdue? s << ' child' if child? s << ' parent' unless leaf? s << ' private' if is_private? s << ' behind-schedule' if behind_schedule? if user.logged? s << ' created-by-me' if author_id == user.id s << ' assigned-to-me' if assigned_to_id == user.id s << ' assigned-to-my-group' if user.groups.any? {|g| g.id == assigned_to_id} end s end # Unassigns issues from +version+ if it's no longer shared with issue's project def self.update_versions_from_sharing_change(version) # Update issues assigned to the version update_versions(["#{Issue.table_name}.fixed_version_id = ?", version.id]) end # Unassigns issues from versions that are no longer shared # after +project+ was moved def self.update_versions_from_hierarchy_change(project) moved_project_ids = project.self_and_descendants.reload.pluck(:id) # Update issues of the moved projects and issues assigned to a version of a moved project Issue. update_versions( ["#{Version.table_name}.project_id IN (?) OR #{Issue.table_name}.project_id IN (?)", moved_project_ids, moved_project_ids] ) end def parent_issue_id=(arg) s = arg.to_s.strip.presence if s && (m = s.match(%r{\A#?(\d+)\z})) && (@parent_issue = Issue.find_by_id(m[1])) @invalid_parent_issue_id = nil elsif s.blank? @parent_issue = nil @invalid_parent_issue_id = nil else @parent_issue = nil @invalid_parent_issue_id = arg end end def parent_issue_id if @invalid_parent_issue_id @invalid_parent_issue_id elsif instance_variable_defined? :@parent_issue @parent_issue.nil? ? nil : @parent_issue.id else parent_id end end alias :parent_issue :parent def set_parent_id self.parent_id = parent_issue_id end # Returns true if issue's project is a valid # parent issue project def valid_parent_project?(issue=parent) return true if issue.nil? || issue.project_id == project_id case Setting.cross_project_subtasks when 'system' true when 'tree' issue.project.root == project.root when 'hierarchy' issue.project.is_or_is_ancestor_of?(project) || issue.project.is_descendant_of?(project) when 'descendants' issue.project.is_or_is_ancestor_of?(project) else false end end # Returns an issue scope based on project and scope def self.cross_project_scope(project, scope=nil) if project.nil? return Issue end case scope when 'all', 'system' Issue when 'tree' Issue.joins(:project).where("(#{Project.table_name}.lft >= :lft AND #{Project.table_name}.rgt <= :rgt)", :lft => project.root.lft, :rgt => project.root.rgt) when 'hierarchy' Issue.joins(:project). where( "(#{Project.table_name}.lft >= :lft AND " \ "#{Project.table_name}.rgt <= :rgt) OR " \ "(#{Project.table_name}.lft < :lft AND #{Project.table_name}.rgt > :rgt)", :lft => project.lft, :rgt => project.rgt ) when 'descendants' Issue.joins(:project).where("(#{Project.table_name}.lft >= :lft AND #{Project.table_name}.rgt <= :rgt)", :lft => project.lft, :rgt => project.rgt) else Issue.where(:project_id => project.id) end end def self.by_tracker(project, with_subprojects=false) count_and_group_by(:project => project, :association => :tracker, :with_subprojects => with_subprojects) end def self.by_version(project, with_subprojects=false) count_and_group_by(:project => project, :association => :fixed_version, :with_subprojects => with_subprojects) end def self.by_priority(project, with_subprojects=false) count_and_group_by(:project => project, :association => :priority, :with_subprojects => with_subprojects) end def self.by_category(project, with_subprojects=false) count_and_group_by(:project => project, :association => :category, :with_subprojects => with_subprojects) end def self.by_assigned_to(project, with_subprojects=false) count_and_group_by(:project => project, :association => :assigned_to, :with_subprojects => with_subprojects) end def self.by_author(project, with_subprojects=false) count_and_group_by(:project => project, :association => :author, :with_subprojects => with_subprojects) end def self.by_subproject(project) r = count_and_group_by(:project => project, :with_subprojects => true, :association => :project) r.reject {|r| r["project_id"] == project.id.to_s} end # Query generator for selecting groups of issue counts for a project # based on specific criteria # # Options # * project - Project to search in. # * with_subprojects - Includes subprojects issues if set to true. # * association - Symbol. Association for grouping. def self.count_and_group_by(options) assoc = reflect_on_association(options[:association]) select_field = assoc.foreign_key Issue. visible(User.current, :project => options[:project], :with_subprojects => options[:with_subprojects]). joins(:status). group(:status_id, :is_closed, select_field). count. map do |columns, total| status_id, is_closed, field_value = columns is_closed = ['t', 'true', '1'].include?(is_closed.to_s) { "status_id" => status_id.to_s, "closed" => is_closed, select_field => field_value.to_s, "total" => total.to_s } end end # Returns a scope of projects that user can assign the subtask def allowed_target_projects_for_subtask(user=User.current) if parent_issue_id.present? scope = filter_projects_scope(Setting.cross_project_subtasks) end self.class.allowed_target_projects(user, project, scope) end # Returns a scope of projects that user can assign the issue to def allowed_target_projects(user=User.current, scope=nil) current_project = new_record? ? nil : project if scope scope = filter_projects_scope(scope) end self.class.allowed_target_projects(user, current_project, scope) end # Returns a scope of projects that user can assign issues to # If current_project is given, it will be included in the scope def self.allowed_target_projects(user=User.current, current_project=nil, scope=nil) condition = Project.allowed_to_condition(user, :add_issues) if current_project condition = ["(#{condition}) OR #{Project.table_name}.id = ?", current_project.id] end if scope.nil? scope = Project end scope.where(condition).having_trackers end # Returns a scope of trackers that user can assign the issue to def allowed_target_trackers(user=User.current) self.class.allowed_target_trackers(project, user, tracker_id_was) end # Returns a scope of trackers that user can assign project issues to def self.allowed_target_trackers(project, user=User.current, current_tracker=nil) if project scope = project.trackers.sorted unless user.admin? roles = user.roles_for_project(project).select {|r| r.has_permission?(:add_issues)} unless roles.any? {|r| r.permissions_all_trackers?(:add_issues)} tracker_ids = roles.map {|r| r.permissions_tracker_ids(:add_issues)}.flatten.uniq if current_tracker tracker_ids << current_tracker end scope = scope.where(:id => tracker_ids) end end scope else Tracker.none end end private def user_tracker_permission?(user, permission) if project && !project.active? perm = Redmine::AccessControl.permission(permission) return false unless perm && perm.read? end if user.admin? true else roles = user.roles_for_project(project).select {|r| r.has_permission?(permission)} roles.any? do |r| r.permissions_all_trackers?(permission) || r.permissions_tracker_ids?(permission, tracker_id) end end end def after_project_change # Update project_id on related time entries TimeEntry.where({:issue_id => id}).update_all(["project_id = ?", project_id]) # Delete issue relations unless Setting.cross_project_issue_relations? relations_from.clear relations_to.clear end # Move subtasks that were in the same project children.each do |child| next unless child.project_id == project_id_before_last_save # Change project and keep project child.send :project=, project, true unless child.save errors.add( :base, l(:error_move_of_child_not_possible, :child => "##{child.id}", :errors => child.errors.full_messages.join(", ")) ) raise ActiveRecord::Rollback end end end # Callback for after the creation of an issue by copy # * adds a "copied to" relation with the copied issue # * copies subtasks from the copied issue def after_create_from_copy return unless copy? && !@after_create_from_copy_handled if (@copied_from.project_id == project_id || Setting.cross_project_issue_relations?) && @copy_options[:link] != false if @current_journal @copied_from.init_journal(@current_journal.user) end relation = IssueRelation.new(:issue_from => @copied_from, :issue_to => self, :relation_type => IssueRelation::TYPE_COPIED_TO) unless relation.save if logger logger.error( "Could not create relation while copying ##{@copied_from.id} to ##{id} " \ "due to validation errors: #{relation.errors.full_messages.join(', ')}" ) end end end unless @copied_from.leaf? || @copy_options[:subtasks] == false copy_options = (@copy_options || {}).merge(:subtasks => false) copied_issue_ids = {@copied_from.id => self.id} @copied_from.reload.descendants.reorder("#{Issue.table_name}.lft").each do |child| # Do not copy self when copying an issue as a descendant of the copied issue next if child == self # Do not copy subtasks of issues that were not copied next unless copied_issue_ids[child.parent_id] # Do not copy subtasks that are not visible to avoid potential disclosure of private data unless child.visible? if logger logger.error( "Subtask ##{child.id} was not copied during ##{@copied_from.id} copy " \ "because it is not visible to the current user" ) end next end copy = Issue.new.copy_from(child, copy_options) if @current_journal copy.init_journal(@current_journal.user) end copy.author = author copy.project = project copy.parent_issue_id = copied_issue_ids[child.parent_id] unless child.fixed_version.present? && child.fixed_version.status == 'open' copy.fixed_version_id = nil end unless child.assigned_to_id.present? && child.assigned_to.status == User::STATUS_ACTIVE copy.assigned_to = nil end unless copy.save if logger logger.error( "Could not copy subtask ##{child.id} " \ "while copying ##{@copied_from.id} to ##{id} due to validation errors: " \ "#{copy.errors.full_messages.join(', ')}" ) end next end copied_issue_ids[child.id] = copy.id end end @after_create_from_copy_handled = true end def update_nested_set_attributes if saved_change_to_parent_id? update_nested_set_attributes_on_parent_change end remove_instance_variable(:@parent_issue) if instance_variable_defined?(:@parent_issue) end # Updates the nested set for when an existing issue is moved def update_nested_set_attributes_on_parent_change former_parent_id = parent_id_before_last_save # delete invalid relations of all descendants self_and_descendants.each do |issue| issue.relations.each do |relation| relation.destroy unless relation.valid? end end # update former parent recalculate_attributes_for(former_parent_id) if former_parent_id end def update_parent_attributes if parent_id recalculate_attributes_for(parent_id) association(:parent).reset end end def recalculate_attributes_for(issue_id) if issue_id && p = Issue.find_by_id(issue_id) if p.priority_derived? # priority = highest priority of open children # priority is left unchanged if all children are closed and there's no default priority defined if priority_position = p.children.open.joins(:priority).maximum("#{IssuePriority.table_name}.position") p.priority = IssuePriority.find_by_position(priority_position) elsif default_priority = IssuePriority.default p.priority = default_priority end end if p.dates_derived? # start/due dates = lowest/highest dates of children p.start_date = p.children.minimum(:start_date) p.due_date = p.children.maximum(:due_date) if p.start_date && p.due_date && p.due_date < p.start_date p.start_date, p.due_date = p.due_date, p.start_date end end if p.done_ratio_derived? # done ratio = average ratio of children weighted with their total estimated hours unless Issue.use_status_for_done_ratio? && p.status && p.status.default_done_ratio children = p.children.to_a if children.any? child_with_total_estimated_hours = children.select {|c| c.total_estimated_hours.to_f > 0.0} if child_with_total_estimated_hours.any? average = Rational( child_with_total_estimated_hours.sum(&:total_estimated_hours).to_s, child_with_total_estimated_hours.count ) else average = Rational(1) end done = children.sum do |c| estimated = Rational(c.total_estimated_hours.to_f.to_s) estimated = average unless estimated > 0.0 ratio = c.closed? ? 100 : (c.done_ratio || 0) estimated * ratio end progress = Rational(done, average * children.count) p.done_ratio = progress.floor end end end # ancestors will be recursively updated p.save(:validate => false) end end # Singleton class method is public class << self # Update issues so their versions are not pointing to a # fixed_version that is not shared with the issue's project def update_versions(conditions=nil) # Only need to update issues with a fixed_version from # a different project and that is not systemwide shared Issue.joins(:project, :fixed_version). where("#{Issue.table_name}.fixed_version_id IS NOT NULL" + " AND #{Issue.table_name}.project_id <> #{::Version.table_name}.project_id" + " AND #{::Version.table_name}.sharing <> 'system'"). where(conditions).each do |issue| next if issue.project.nil? || issue.fixed_version.nil? unless issue.project.shared_versions.include?(issue.fixed_version) retried = false begin issue.init_journal(User.current) issue.fixed_version = nil issue.save rescue ActiveRecord::StaleObjectError raise if retried retried = true issue.reload retry end end end end end def delete_selected_attachments if deleted_attachment_ids.present? objects = attachments.where(:id => deleted_attachment_ids.map(&:to_i)) attachments.delete(objects) end end # Callback on file attachment def attachment_added(attachment) if current_journal && !attachment.new_record? && !copy? current_journal.journalize_attachment(attachment, :added) end end # Callback on attachment deletion def attachment_removed(attachment) if current_journal && !attachment.new_record? current_journal.journalize_attachment(attachment, :removed) current_journal.save end end # Called after a relation is added def relation_added(relation) if current_journal current_journal.journalize_relation(relation, :added) current_journal.save end end # Called after a relation is removed def relation_removed(relation) if current_journal current_journal.journalize_relation(relation, :removed) current_journal.save end end # Default assignment based on project or category def default_assign if assigned_to.nil? if category && category.assigned_to self.assigned_to = category.assigned_to elsif project && project.default_assigned_to self.assigned_to = project.default_assigned_to end end end # Updates start/due dates of following issues def reschedule_following_issues if saved_change_to_start_date? || saved_change_to_due_date? relations_from.each do |relation| relation.set_issue_to_dates(@current_journal) end end end # Closes duplicates if the issue is being closed def close_duplicates if Setting.close_duplicate_issues? && closing? duplicates.each do |duplicate| # Reload is needed in case the duplicate was updated by a previous duplicate duplicate.reload # Don't re-close it if it's already closed next if duplicate.closed? # Same user and notes if @current_journal duplicate.init_journal(@current_journal.user, @current_journal.notes) duplicate.private_notes = @current_journal.private_notes end duplicate.update_attribute :status, self.status end end end # Make sure updated_on is updated when adding a note and set updated_on now # so we can set closed_on with the same value on closing def force_updated_on_change if @current_journal || changed? self.updated_on = current_time_from_proper_timezone if new_record? self.created_on = updated_on end end end # Callback for setting closed_on when the issue is closed. # The closed_on attribute stores the time of the last closing # and is preserved when the issue is reopened. def update_closed_on if closing? self.closed_on = updated_on end end # Saves the changes in a Journal # Called after_save def create_journal if current_journal current_journal.save end end def create_parent_issue_journal return if persisted? && !saved_change_to_parent_id? return if destroyed? && @without_nested_set_update child_id = self.id old_parent_id, new_parent_id = if persisted? [parent_id_before_last_save, parent_id] elsif destroyed? [parent_id, nil] else [nil, parent_id] end if old_parent_id.present? Issue.transaction do if old_parent_issue = Issue.visible.lock.find_by_id(old_parent_id) old_parent_issue.init_journal(User.current) old_parent_issue.current_journal.__send__(:add_attribute_detail, 'child_id', child_id, nil) old_parent_issue.save end end end if new_parent_id.present? Issue.transaction do if new_parent_issue = Issue.visible.lock.find_by_id(new_parent_id) new_parent_issue.init_journal(User.current) new_parent_issue.current_journal.__send__(:add_attribute_detail, 'child_id', nil, child_id) new_parent_issue.save end end end end def add_auto_watcher if author&.active? && author.allowed_to?(:add_issue_watchers, project) && author.pref.auto_watch_on?('issue_created') && self.watcher_user_ids.exclude?(author.id) self.set_watcher(author, true) end end def send_notification if notify? && Setting.notified_events.include?('issue_added') Mailer.deliver_issue_add(self) end end def clear_disabled_fields if tracker tracker.disabled_core_fields.each do |attribute| send :"#{attribute}=", nil end self.priority_id ||= IssuePriority.default&.id || IssuePriority.active.first&.id self.done_ratio ||= 0 end end def filter_projects_scope(scope=nil) case scope when 'system' Project when 'tree' project.root.self_and_descendants when 'hierarchy' project.hierarchy when 'descendants' project.self_and_descendants when '' Project.where(:id => project.id) else Project end end def roles_for_workflow(user) roles = user.admin ? Role.all.to_a : user.roles_for_project(project) roles.select(&:consider_workflow?) end end redmine-6.0.5/app/models/issue_category.rb000066400000000000000000000035161500112024600205560ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueCategory < ApplicationRecord include Redmine::SafeAttributes belongs_to :project belongs_to :assigned_to, :class_name => 'Principal' has_many :issues, :foreign_key => 'category_id', :dependent => :nullify validates_presence_of :name validates_uniqueness_of :name, :scope => [:project_id], :case_sensitive => true validates_length_of :name, :maximum => 60 safe_attributes 'name', 'assigned_to_id' scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} alias :destroy_without_reassign :destroy # Destroy the category # If a category is specified, issues are reassigned to this category def destroy(reassign_to = nil) if reassign_to && reassign_to.is_a?(IssueCategory) && reassign_to.project == self.project Issue.where({:category_id => id}).update_all({:category_id => reassign_to.id}) end destroy_without_reassign end def <=>(category) return nil unless category.is_a?(IssueCategory) name <=> category.name end def to_s; name end end redmine-6.0.5/app/models/issue_custom_field.rb000066400000000000000000000045051500112024600214150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueCustomField < CustomField has_and_belongs_to_many :projects, :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :foreign_key => "custom_field_id", :autosave => true has_and_belongs_to_many :trackers, :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :foreign_key => "custom_field_id", :autosave => true safe_attributes 'project_ids', 'tracker_ids' def type_name :label_issue_plural end def visible_by?(project, user=User.current) super || roles.intersect?(user.roles_for_project(project)) end def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil) sql = super id_column ||= id tracker_condition = "#{Issue.table_name}.tracker_id IN (SELECT tracker_id FROM #{table_name_prefix}custom_fields_trackers#{table_name_suffix} WHERE custom_field_id = #{id_column})" project_condition = "EXISTS (SELECT 1 FROM #{CustomField.table_name} ifa WHERE ifa.is_for_all = #{self.class.connection.quoted_true} AND ifa.id = #{id_column})" + " OR #{Issue.table_name}.project_id IN (SELECT project_id FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} WHERE custom_field_id = #{id_column})" "((#{sql}) AND (#{tracker_condition}) AND (#{project_condition}) AND (#{Issue.visible_condition(user)}))" end def validate_custom_field super errors.add(:base, l(:label_role_plural) + ' ' + l('activerecord.errors.messages.blank')) unless visible? || roles.present? end end redmine-6.0.5/app/models/issue_import.rb000066400000000000000000000274151500112024600202570ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueImport < Import AUTO_MAPPABLE_FIELDS = { 'tracker' => 'field_tracker', 'subject' => 'field_subject', 'description' => 'field_description', 'status' => 'field_status', 'priority' => 'field_priority', 'category' => 'field_category', 'assigned_to' => 'field_assigned_to', 'fixed_version' => 'field_fixed_version', 'is_private' => 'field_is_private', 'parent_issue_id' => 'field_parent_issue', 'start_date' => 'field_start_date', 'due_date' => 'field_due_date', 'estimated_hours' => 'field_estimated_hours', 'done_ratio' => 'field_done_ratio', 'unique_id' => 'field_unique_id', 'relation_duplicates' => 'label_duplicates', 'relation_duplicated' => 'label_duplicated_by', 'relation_blocks' => 'label_blocks', 'relation_blocked' => 'label_blocked_by', 'relation_relates' => 'label_relates_to', 'relation_precedes' => 'label_precedes', 'relation_follows' => 'label_follows', 'relation_copied_to' => 'label_copied_to', 'relation_copied_from' => 'label_copied_from' } def self.menu_item :issues end def self.authorized?(user) user.allowed_to?(:import_issues, nil, :global => true) && user.allowed_to?(:add_issues, nil, :global => true) end # Returns the objects that were imported def saved_objects object_ids = saved_items.pluck(:obj_id) objects = Issue.where(:id => object_ids).order(:id).preload(:tracker, :priority, :status) end # Returns a scope of projects that user is allowed to # import issue to def allowed_target_projects Project.allowed_to(user, :import_issues) end def project project_id = mapping['project_id'].to_i allowed_target_projects.find_by_id(project_id) || allowed_target_projects.first end # Returns a scope of trackers that user is allowed to # import issue to def allowed_target_trackers Issue.allowed_target_trackers(project, user) end def tracker if mapping['tracker'].to_s =~ /\Avalue:(\d+)\z/ tracker_id = $1.to_i allowed_target_trackers.find_by_id(tracker_id) end end # Returns true if missing categories should be created during the import def create_categories? user.allowed_to?(:manage_categories, project) && mapping['create_categories'] == '1' end # Returns true if missing versions should be created during the import def create_versions? user.allowed_to?(:manage_versions, project) && mapping['create_versions'] == '1' end def mappable_custom_fields if tracker issue = Issue.new issue.project = project issue.tracker = tracker issue.editable_custom_field_values(user).map(&:custom_field) elsif project project.all_issue_custom_fields else [] end end private def build_object(row, item) issue = Issue.new issue.author = user issue.notify = !!ActiveRecord::Type::Boolean.new.cast(settings['notifications']) tracker_id = nil if tracker tracker_id = tracker.id elsif tracker_name = row_value(row, 'tracker') tracker_id = allowed_target_trackers.named(tracker_name).first.try(:id) end attributes = { 'project_id' => mapping['project_id'], 'tracker_id' => tracker_id, 'subject' => row_value(row, 'subject'), 'description' => row_value(row, 'description') } if status_name = row_value(row, 'status') if status_id = IssueStatus.named(status_name).first.try(:id) attributes['status_id'] = status_id end end issue.send :safe_attributes=, attributes, user attributes = {} if priority_name = row_value(row, 'priority') if priority_id = IssuePriority.active.named(priority_name).first.try(:id) attributes['priority_id'] = priority_id end end if issue.project && category_name = row_value(row, 'category') if category = issue.project.issue_categories.named(category_name).first attributes['category_id'] = category.id elsif create_categories? category = issue.project.issue_categories.build category.name = category_name if category.save attributes['category_id'] = category.id end end end if assignee_name = row_value(row, 'assigned_to') if assignee = Principal.detect_by_keyword(issue.assignable_users, assignee_name) attributes['assigned_to_id'] = assignee.id end end if issue.project && version_name = row_value(row, 'fixed_version') version = issue.project.versions.named(version_name).first || issue.project.shared_versions.named(version_name).first if version attributes['fixed_version_id'] = version.id elsif create_versions? version = issue.project.versions.build version.name = version_name if version.save attributes['fixed_version_id'] = version.id end end end if is_private = row_value(row, 'is_private') if yes?(is_private) attributes['is_private'] = '1' end end if parent_issue_id = row_value(row, 'parent_issue_id') if parent_issue_id.start_with? '#' # refers to existing issue attributes['parent_issue_id'] = parent_issue_id[1..-1] elsif use_unique_id? # refers to other row with unique id issue_id = items.where(:unique_id => parent_issue_id).first.try(:obj_id) if issue_id attributes['parent_issue_id'] = issue_id else add_callback(parent_issue_id, 'set_as_parent', item.position) end elsif /\A\d+\z/.match?(parent_issue_id) # refers to other row by position parent_issue_id = parent_issue_id.to_i if parent_issue_id > item.position add_callback(parent_issue_id, 'set_as_parent', item.position) elsif issue_id = items.where(:position => parent_issue_id).first.try(:obj_id) attributes['parent_issue_id'] = issue_id end else # Something is odd. Assign parent_issue_id to trigger validation error attributes['parent_issue_id'] = parent_issue_id end end if start_date = row_date(row, 'start_date') attributes['start_date'] = start_date end if due_date = row_date(row, 'due_date') attributes['due_date'] = due_date end if estimated_hours = row_value(row, 'estimated_hours') attributes['estimated_hours'] = estimated_hours end if done_ratio = row_value(row, 'done_ratio') attributes['done_ratio'] = done_ratio end attributes['custom_field_values'] = issue.custom_field_values.inject({}) do |h, v| value = case v.custom_field.field_format when 'date' row_date(row, "cf_#{v.custom_field.id}") else row_value(row, "cf_#{v.custom_field.id}") end if value h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(value, issue) end h end issue.send :safe_attributes=, attributes, user if issue.tracker_id != tracker_id issue.tracker_id = nil end issue end def extend_object(row, item, issue) build_relations(row, item, issue) end def build_relations(row, item, issue) IssueRelation::TYPES.each_key do |type| has_delay = [IssueRelation::TYPE_PRECEDES, IssueRelation::TYPE_FOLLOWS].include?(type) if decls = relation_values(row, "relation_#{type}") decls.each do |decl| unless decl[:matches] # Invalid relation syntax - doesn't match regexp next end if decl[:delay] && !has_delay # Invalid relation syntax - delay for relation that doesn't support delays next end relation = IssueRelation.new( "relation_type" => type, "issue_from_id" => issue.id ) if decl[:other_id] relation.issue_to_id = decl[:other_id] elsif decl[:other_pos] if use_unique_id? issue_id = items.where(:unique_id => decl[:other_pos]).first.try(:obj_id) if issue_id relation.issue_to_id = issue_id else add_callback(decl[:other_pos], 'set_relation', item.position, type, decl[:delay]) next end elsif decl[:other_pos] > item.position add_callback(decl[:other_pos], 'set_relation', item.position, type, decl[:delay]) next elsif issue_id = items.where(:position => decl[:other_pos]).first.try(:obj_id) relation.issue_to_id = issue_id end end relation.delay = decl[:delay] if decl[:delay] begin relation.save! rescue nil end end end end issue end def relation_values(row, name) content = row_value(row, name) return if content.blank? content.split(",").map do |declaration| declaration = declaration.strip # Valid expression: # # 123 => row 123 within the CSV # #123 => issue with ID 123 # # For precedes and follows # # 123 7d => row 123 within CSV with 7 day delay # #123 7d => issue with ID 123 with 7 day delay # 123 -3d => negative delay allowed # # # Invalid expression: # # No. 123 => Invalid leading letters # # 123 => Invalid space between # and issue number # 123 8h => No other time units allowed (just days) # # Please note: If unique_id mapping is present, the whole line - but the # trailing delay expression - is considered unique_id. # # See examples at Rubular http://rubular.com/r/mgXM5Rp6zK # match = declaration.match(/\A(?(?#)?(?\d+)|.+?)(?:\s+(?-?\d+)d)?\z/) result = { :matches => false, :declaration => declaration } if match result[:matches] = true result[:delay] = match[:delay] if match[:is_id] && match[:id] result[:other_id] = match[:id] elsif use_unique_id? && match[:unique_id] result[:other_pos] = match[:unique_id] elsif match[:id] result[:other_pos] = match[:id].to_i else result[:matches] = false end end result end end # Callback that sets issue as the parent of a previously imported issue def set_as_parent_callback(issue, child_position) child_id = items.where(:position => child_position).first.try(:obj_id) return unless child_id child = Issue.find_by_id(child_id) return unless child child.parent_issue_id = issue.id child.save! issue.reload end def set_relation_callback(to_issue, from_position, type, delay) return if to_issue.new_record? from_id = items.where(:position => from_position).first.try(:obj_id) return unless from_id IssueRelation.create!( 'relation_type' => type, 'issue_from_id' => from_id, 'issue_to_id' => to_issue.id, 'delay' => delay ) to_issue.reload end end redmine-6.0.5/app/models/issue_priority.rb000066400000000000000000000054261500112024600206240ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssuePriority < Enumeration has_many :issues, :foreign_key => 'priority_id' after_destroy {|priority| priority.class.compute_position_names} after_save do |priority| if (priority.saved_change_to_position? && priority.position) || priority.saved_change_to_active? || priority.saved_change_to_is_default? priority.class.compute_position_names end end OptionName = :enumeration_issue_priorities def option_name OptionName end def objects_count issues.count end def transfer_relations(to) issues.update_all(:priority_id => to.id) end def css_classes "priority-#{id} priority-#{position_name}" end # Clears position_name for all priorities # Called from migration 20121026003537_populate_enumerations_position_name def self.clear_position_names update_all :position_name => nil end def self.default_or_middle default || begin priorities = active priorities[(priorities.size - 1) / 2] end end def high? return false unless (baseline_position = self.class.default_or_middle&.position) position > baseline_position end def low? return false unless (baseline_position = self.class.default_or_middle&.position) position < baseline_position end # Updates position_name for active priorities # Called from migration 20121026003537_populate_enumerations_position_name def self.compute_position_names priorities = active if priorities.any? default_position = default_or_middle.position priorities.each_with_index do |priority, index| name = case when priority.position == default_position "default" when priority.position < default_position index == 0 ? "lowest" : "low#{index+1}" else index == (priorities.size - 1) ? "highest" : "high#{priorities.size - index}" end where(:id => priority.id).update_all({:position_name => name}) end end end end redmine-6.0.5/app/models/issue_priority_custom_field.rb000066400000000000000000000016371500112024600233610ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssuePriorityCustomField < CustomField def type_name :enumeration_issue_priorities end end redmine-6.0.5/app/models/issue_query.rb000066400000000000000000001122311500112024600201010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueQuery < Query self.queried_class = Issue self.view_permission = :view_issues ESTIMATED_REMAINING_HOURS_SQL = Arel.sql("COALESCE(#{Issue.table_name}.estimated_hours, 0) * (100 - COALESCE(#{Issue.table_name}.done_ratio, 0)) / 100") self.available_columns = [ QueryColumn.new(:id, :sortable => "#{Issue.table_name}.id", :default_order => 'desc', :caption => '#', :frozen => true), QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true), QueryColumn.new(:tracker, :sortable => "#{Tracker.table_name}.position", :groupable => true), QueryColumn.new(:parent, :sortable => ["#{Issue.table_name}.root_id", "#{Issue.table_name}.lft ASC"], :default_order => 'desc', :caption => :field_parent_issue), QueryAssociationColumn.new(:parent, :subject, :caption => :field_parent_issue_subject), QueryColumn.new(:status, :sortable => "#{IssueStatus.table_name}.position", :groupable => true), QueryColumn.new(:priority, :sortable => "#{IssuePriority.table_name}.position", :default_order => 'desc', :groupable => true), QueryColumn.new(:subject, :sortable => "#{Issue.table_name}.subject"), QueryColumn.new(:author, :sortable => lambda {User.fields_for_order_statement("authors")}, :groupable => true), QueryColumn.new(:assigned_to, :sortable => lambda {User.fields_for_order_statement}, :groupable => true), WatcherQueryColumn.new(:watcher_users, :caption => :label_issue_watchers), TimestampQueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on", :default_order => 'desc', :groupable => true), QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true), QueryColumn.new(:fixed_version, :sortable => lambda {Version.fields_for_order_statement}, :groupable => true), QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date", :groupable => true), QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date", :groupable => true), QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours", :totalable => true), QueryColumn.new(:estimated_remaining_hours, :sortable => ESTIMATED_REMAINING_HOURS_SQL, :totalable => true), QueryColumn.new( :total_estimated_hours, :sortable => lambda do "COALESCE((SELECT SUM(estimated_hours) FROM #{Issue.table_name} subtasks" \ " WHERE #{Issue.visible_condition(User.current).gsub(/\bissues\b/, 'subtasks')}" \ " AND subtasks.root_id = #{Issue.table_name}.root_id" \ " AND subtasks.lft >= #{Issue.table_name}.lft" \ " AND subtasks.rgt <= #{Issue.table_name}.rgt), 0)" end, :default_order => 'desc'), QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio", :groupable => true), TimestampQueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc', :groupable => true), TimestampQueryColumn.new(:closed_on, :sortable => "#{Issue.table_name}.closed_on", :default_order => 'desc', :groupable => true), QueryColumn.new(:last_updated_by, :sortable => lambda {User.fields_for_order_statement("last_journal_user")}), QueryColumn.new(:relations, :caption => :label_related_issues), QueryColumn.new(:attachments, :caption => :label_attachment_plural), QueryColumn.new(:description, :inline => false), QueryColumn.new(:last_notes, :caption => :label_last_notes, :inline => false) ] has_many :projects, foreign_key: 'default_issue_query_id', dependent: :nullify, inverse_of: 'default_issue_query' after_update { projects.clear unless visibility == VISIBILITY_PUBLIC } scope :for_all_projects, ->{ where(project_id: nil) } def self.default(project: nil, user: User.current) # user default if user&.logged? && (query_id = user.pref.default_issue_query).present? query = find_by(id: query_id) return query if query&.visible?(user) end # project default query = project&.default_issue_query return query if query&.visibility == VISIBILITY_PUBLIC # global default if (query_id = Setting.default_issue_query).present? query = find_by(id: query_id) return query if query&.visibility == VISIBILITY_PUBLIC end nil end def initialize(attributes=nil, *args) super(attributes) self.filters ||= {'status_id' => {:operator => "o", :values => [""]}} end def draw_relations r = options[:draw_relations] r.nil? || r == '1' end def draw_relations=(arg) options[:draw_relations] = (arg == '0' ? '0' : nil) end def draw_progress_line r = options[:draw_progress_line] r == '1' end def draw_progress_line=(arg) options[:draw_progress_line] = (arg == '1' ? '1' : nil) end def draw_selected_columns r = options[:draw_selected_columns] r == '1' end def draw_selected_columns=(arg) options[:draw_selected_columns] = (arg == '1' ? '1' : nil) end def build_from_params(params, defaults={}) super self.draw_relations = params[:draw_relations] || (params[:query] && params[:query][:draw_relations]) || options[:draw_relations] self.draw_progress_line = params[:draw_progress_line] || (params[:query] && params[:query][:draw_progress_line]) || options[:draw_progress_line] self.draw_selected_columns = params[:draw_selected_columns] || (params[:query] && params[:query][:draw_selected_columns]) || options[:draw_progress_line] self end def initialize_available_filters add_available_filter( "status_id", :type => :list_status, :values => lambda {issue_statuses_values} ) add_available_filter( "project_id", :type => :list, :values => lambda {project_values} ) if project.nil? add_available_filter( "tracker_id", :type => :list_with_history, :values => trackers.collect{|s| [s.name, s.id.to_s]} ) add_available_filter( "priority_id", :type => :list_with_history, :values => IssuePriority.pluck(:name, :id).map {|name, id| [name, id.to_s]} ) add_available_filter( "author_id", :type => :list, :values => lambda {author_values} ) add_available_filter( "author.group", :type => :list, :values => lambda {Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}}, :name => l(:label_attribute_of_author, :name => l(:label_group)) ) add_available_filter( "author.role", :type => :list, :values => lambda {Role.givable.pluck(:name, :id).map {|name, id| [name, id.to_s]}}, :name => l(:label_attribute_of_author, :name => l(:field_role)) ) add_available_filter( "assigned_to_id", :type => :list_optional_with_history, :values => lambda {assigned_to_values} ) add_available_filter( "member_of_group", :type => :list_optional, :values => lambda {Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) add_available_filter( "assigned_to_role", :type => :list_optional, :values => lambda {Role.givable.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) add_available_filter( "fixed_version_id", :type => :list_optional_with_history, :values => lambda {fixed_version_values} ) add_available_filter( "fixed_version.due_date", :type => :date, :name => l(:label_attribute_of_fixed_version, :name => l(:field_effective_date)) ) add_available_filter( "fixed_version.status", :type => :list, :name => l(:label_attribute_of_fixed_version, :name => l(:field_status)), :values => Version::VERSION_STATUSES.map{|s| [l("version_status_#{s}"), s]} ) add_available_filter( "category_id", :type => :list_optional_with_history, :values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) if project add_available_filter "subject", :type => :text add_available_filter "description", :type => :text add_available_filter "notes", :type => :text add_available_filter "created_on", :type => :date_past add_available_filter "updated_on", :type => :date_past add_available_filter "closed_on", :type => :date_past add_available_filter "start_date", :type => :date add_available_filter "due_date", :type => :date add_available_filter "estimated_hours", :type => :float if User.current.allowed_to?(:view_time_entries, project, :global => true) add_available_filter "spent_time", :type => :float, :label => :label_spent_time end add_available_filter "done_ratio", :type => :integer if User.current.allowed_to?(:set_issues_private, nil, :global => true) || User.current.allowed_to?(:set_own_issues_private, nil, :global => true) add_available_filter( "is_private", :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]] ) end add_available_filter( "attachment", :type => :text, :name => l(:label_attachment) ) add_available_filter( "attachment_description", :type => :text, :name => l(:label_attachment_description) ) if User.current.logged? add_available_filter( "watcher_id", :type => :list, :values => lambda {watcher_values} ) end add_available_filter( "updated_by", :type => :list, :values => lambda {author_values} ) add_available_filter( "last_updated_by", :type => :list, :values => lambda {author_values} ) if project && !project.leaf? add_available_filter( "subproject_id", :type => :list_subprojects, :values => lambda {subproject_values} ) end add_available_filter( "project.status", :type => :list, :name => l(:label_attribute_of_project, :name => l(:field_status)), :values => lambda {project_statuses_values} ) if project.nil? || !project.leaf? add_custom_fields_filters(issue_custom_fields) add_associations_custom_fields_filters :project, :author, :assigned_to, :fixed_version IssueRelation::TYPES.each do |relation_type, options| add_available_filter( relation_type, :type => :relation, :label => options[:name], :values => lambda {all_projects_values} ) end add_available_filter "parent_id", :type => :tree, :label => :field_parent_issue add_available_filter "child_id", :type => :tree, :label => :label_subtask_plural add_available_filter "issue_id", :type => :integer, :label => :label_issue add_available_filter "any_searchable", :type => :search Tracker.disabled_core_fields(trackers).each do |field| delete_available_filter field end end def available_columns return @available_columns if @available_columns @available_columns = self.class.available_columns.dup @available_columns += issue_custom_fields.visible.collect {|cf| QueryCustomFieldColumn.new(cf)} if User.current.allowed_to?(:view_time_entries, project, :global => true) # insert the columns after total_estimated_hours or at the end index = @available_columns.find_index {|column| column.name == :total_estimated_hours} index = (index ? index + 1 : -1) subselect = "SELECT SUM(hours) FROM #{TimeEntry.table_name}" + " JOIN #{Project.table_name} ON #{Project.table_name}.id = #{TimeEntry.table_name}.project_id" + " WHERE (#{TimeEntry.visible_condition(User.current)}) AND #{TimeEntry.table_name}.issue_id = #{Issue.table_name}.id" @available_columns.insert( index, QueryColumn.new(:spent_hours, :sortable => "COALESCE((#{subselect}), 0)", :default_order => 'desc', :caption => :label_spent_time, :totalable => true) ) subselect = "SELECT SUM(hours) FROM #{TimeEntry.table_name}" + " JOIN #{Project.table_name} ON #{Project.table_name}.id = #{TimeEntry.table_name}.project_id" + " JOIN #{Issue.table_name} subtasks ON subtasks.id = #{TimeEntry.table_name}.issue_id" + " WHERE (#{TimeEntry.visible_condition(User.current)})" + " AND subtasks.root_id = #{Issue.table_name}.root_id AND subtasks.lft >= #{Issue.table_name}.lft AND subtasks.rgt <= #{Issue.table_name}.rgt" @available_columns.insert( index + 1, QueryColumn.new(:total_spent_hours, :sortable => "COALESCE((#{subselect}), 0)", :default_order => 'desc', :caption => :label_total_spent_time) ) end if User.current.allowed_to?(:set_issues_private, nil, :global => true) || User.current.allowed_to?(:set_own_issues_private, nil, :global => true) @available_columns << QueryColumn.new(:is_private, :sortable => "#{Issue.table_name}.is_private", :groupable => true) end disabled_fields = Tracker.disabled_core_fields(trackers).map {|field| field.delete_suffix('_id')} if disabled_fields.include?("estimated_hours") disabled_fields += %w[total_estimated_hours estimated_remaining_hours] end @available_columns.reject! do |column| disabled_fields.include?(column.name.to_s) end @available_columns end def default_columns_names @default_columns_names ||= begin default_columns = Setting.issue_list_default_columns.map(&:to_sym) project.present? ? default_columns : [:project] | default_columns end end def default_totalable_names Setting.issue_list_default_totals.map(&:to_sym) end def default_sort_criteria [['id', 'desc']] end def base_scope Issue.visible.joins(:status, :project).where(statement) end # Returns the issue count def issue_count base_scope.count rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end # Returns sum of all the issue's estimated_hours def total_for_estimated_hours(scope) map_total(scope.sum(:estimated_hours)) {|t| t.to_f.round(2)} end def total_for_estimated_remaining_hours(scope) map_total(scope.sum(ESTIMATED_REMAINING_HOURS_SQL)) {|t| t.to_f.round(2)} end # Returns sum of all the issue's time entries hours def total_for_spent_hours(scope) total = scope.joins(:time_entries). where(TimeEntry.visible_condition(User.current)). sum("#{TimeEntry.table_name}.hours") map_total(total) {|t| t.to_f.round(2)} end # Returns the issues # Valid options are :order, :offset, :limit, :include, :conditions def issues(options={}) order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?) # The default order of IssueQuery is issues.id DESC(by IssueQuery#default_sort_criteria) unless ["#{Issue.table_name}.id ASC", "#{Issue.table_name}.id DESC"].any?{|i| order_option.include?(i)} order_option << "#{Issue.table_name}.id DESC" end scope = base_scope. preload(:priority). includes(([:status, :project] + (options[:include] || [])).uniq). where(options[:conditions]). order(order_option). joins(joins_for_order_statement(order_option.join(','))). limit(options[:limit]). offset(options[:offset]) scope = scope.preload( [:tracker, :author, :assigned_to, :fixed_version, :category, :attachments] & columns.map(&:name) ) if has_custom_field_column? scope = scope.preload(:custom_values) end if has_column?(:watcher_users) scope = scope.preload(:watcher_users) end issues = scope.to_a if has_column?(:spent_hours) Issue.load_visible_spent_hours(issues) end if has_column?(:total_spent_hours) Issue.load_visible_total_spent_hours(issues) end if has_column?(:last_updated_by) Issue.load_visible_last_updated_by(issues) end if has_column?(:relations) Issue.load_visible_relations(issues) end if has_column?(:last_notes) Issue.load_visible_last_notes(issues) end issues rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end # Returns the issues ids def issue_ids(options={}) order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?) # The default order of IssueQuery is issues.id DESC(by IssueQuery#default_sort_criteria) unless ["#{Issue.table_name}.id ASC", "#{Issue.table_name}.id DESC"].any?{|i| order_option.include?(i)} order_option << "#{Issue.table_name}.id DESC" end base_scope. includes(([:status, :project] + (options[:include] || [])).uniq). references(([:status, :project] + (options[:include] || [])).uniq). where(options[:conditions]). order(order_option). joins(joins_for_order_statement(order_option.join(','))). limit(options[:limit]). offset(options[:offset]). pluck(:id) rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end # Returns the journals # Valid options are :order, :offset, :limit def journals(options={}) Journal.visible. joins(:issue => [:project, :status]). where(statement). order(options[:order]). limit(options[:limit]). offset(options[:offset]). preload(:details, :user, {:issue => [:project, :author, :tracker, :status]}). to_a rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end # Returns the versions # Valid options are :conditions def versions(options={}) Version.visible. where(project_statement). where(options[:conditions]). includes(:project). references(:project). to_a rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end def sql_for_notes_field(field, operator, value) subquery = "SELECT 1 FROM #{Journal.table_name}" + " WHERE #{Journal.table_name}.journalized_type='Issue' AND #{Journal.table_name}.journalized_id=#{Issue.table_name}.id" + " AND (#{sql_for_field field, operator.delete_prefix('!'), value, Journal.table_name, 'notes'})" + " AND (#{Journal.visible_notes_condition(User.current, :skip_pre_condition => true)})" "#{operator.start_with?('!') ? "NOT EXISTS" : "EXISTS"} (#{subquery})" end def sql_for_updated_by_field(field, operator, value) neg = (operator == '!' ? 'NOT' : '') subquery = "SELECT 1 FROM #{Journal.table_name}" + " WHERE #{Journal.table_name}.journalized_type='Issue' AND #{Journal.table_name}.journalized_id=#{Issue.table_name}.id" + " AND (#{sql_for_field field, '=', value, Journal.table_name, 'user_id'})" + " AND (#{Journal.visible_notes_condition(User.current, :skip_pre_condition => true)})" "#{neg} EXISTS (#{subquery})" end def sql_for_last_updated_by_field(field, operator, value) neg = (operator == '!' ? 'NOT' : '') subquery = "SELECT 1 FROM #{Journal.table_name} sj" + " WHERE sj.journalized_type='Issue' AND sj.journalized_id=#{Issue.table_name}.id AND (#{sql_for_field field, '=', value, 'sj', 'user_id'})" + " AND sj.id IN (SELECT MAX(#{Journal.table_name}.id) FROM #{Journal.table_name}" + " WHERE #{Journal.table_name}.journalized_type='Issue' AND #{Journal.table_name}.journalized_id=#{Issue.table_name}.id" + " AND (#{Journal.visible_notes_condition(User.current, :skip_pre_condition => true)}))" "#{neg} EXISTS (#{subquery})" end def sql_for_spent_time_field(field, operator, value) first, second = value.first.to_f, value.second.to_f sql_op = case operator when "=", ">=", "<=" then "#{operator} #{first}" when "><" then "BETWEEN #{first} AND #{second}" when "*" then "> 0" when "!*" then "= 0" else return nil end "COALESCE((" + "SELECT ROUND(CAST(SUM(hours) AS DECIMAL(30,3)), 2) " + "FROM #{TimeEntry.table_name} " + "WHERE issue_id = #{Issue.table_name}.id), 0) #{sql_op}" end def sql_for_watcher_id_field(field, operator, value) db_table = Watcher.table_name me_ids = [0, User.current.id] me_ids.concat(User.current.groups.pluck(:id)) me, others = value.partition {|id| me_ids.include?(id.to_i)} sql = if others.any? "SELECT #{Issue.table_name}.id FROM #{Issue.table_name} " + "INNER JOIN #{db_table} ON #{Issue.table_name}.id = #{db_table}.watchable_id AND #{db_table}.watchable_type = 'Issue' " + "LEFT OUTER JOIN #{Project.table_name} ON #{Project.table_name}.id = #{Issue.table_name}.project_id " + "WHERE (" + sql_for_field(field, '=', me, db_table, 'user_id') + ') OR (' + Project.allowed_to_condition(User.current, :view_issue_watchers) + ' AND ' + sql_for_field(field, '=', others, db_table, 'user_id') + ')' else "SELECT #{db_table}.watchable_id FROM #{db_table} " + "WHERE #{db_table}.watchable_type='Issue' AND " + sql_for_field(field, '=', me, db_table, 'user_id') end "#{Issue.table_name}.id #{ operator == '=' ? 'IN' : 'NOT IN' } (#{sql})" end def sql_for_member_of_group_field(field, operator, value) if operator == '*' # Any group groups = Group.givable operator = '=' # Override the operator since we want to find by assigned_to elsif operator == "!*" groups = Group.givable operator = '!' # Override the operator since we want to find by assigned_to else groups = Group.where(:id => value).to_a end groups ||= [] members_of_groups = groups.inject([]) do |user_ids, group| user_ids + group.user_ids + [group.id] end.uniq.compact.sort.collect(&:to_s) '(' + sql_for_field("assigned_to_id", operator, members_of_groups, Issue.table_name, "assigned_to_id", false) + ')' end def sql_for_assigned_to_role_field(field, operator, value) case operator when "*", "!*" # Member / Not member sw = operator == "!*" ? 'NOT' : '' nl = operator == "!*" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : '' subquery = "SELECT 1" + " FROM #{Member.table_name}" + " WHERE #{Issue.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{Issue.table_name}.assigned_to_id" "(#{nl} #{sw} EXISTS (#{subquery}))" when "=", "!" role_cond = if value.any? "#{MemberRole.table_name}.role_id IN (" + value.collect{|val| "'#{self.class.connection.quote_string(val)}'"}.join(",") + ")" else "1=0" end sw = operator == "!" ? 'NOT' : '' nl = operator == "!" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : '' subquery = "SELECT 1" + " FROM #{Member.table_name} inner join #{MemberRole.table_name} on members.id = member_roles.member_id" + " WHERE #{Issue.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{Issue.table_name}.assigned_to_id AND #{role_cond}" "(#{nl} #{sw} EXISTS (#{subquery}))" end end def sql_for_author_group_field(field, operator, value) groups = value.empty? ? Group.givable : Group.where(:id => value).to_a author_groups = groups.inject([]) do |user_ids, group| user_ids + group.user_ids + [group.id] end.uniq.compact.sort.collect(&:to_s) '(' + sql_for_field("author_id", operator, author_groups, Issue.table_name, "author_id", false) + ')' end def sql_for_author_role_field(field, operator, value) role_cond = if value.any? "#{MemberRole.table_name}.role_id IN (" + value.collect{|val| "'#{self.class.connection.quote_string(val)}'"}.join(",") + ")" else "1=0" end sw = operator == "!" ? 'NOT' : '' nl = operator == "!" ? "#{Issue.table_name}.author_id IS NULL OR" : '' subquery = "SELECT 1" + " FROM #{Member.table_name} inner join #{MemberRole.table_name} on members.id = member_roles.member_id" + " WHERE #{Issue.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{Issue.table_name}.author_id AND #{role_cond}" "(#{nl} #{sw} EXISTS (#{subquery}))" end def sql_for_fixed_version_status_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "status") version_id_scope = project ? project.shared_versions : Version.visible version_ids = version_id_scope.where(where).pluck(:id) nl = operator == "!" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end def sql_for_fixed_version_due_date_field(field, operator, value) where = sql_for_field(field, operator, value, Version.table_name, "effective_date") version_id_scope = project ? project.shared_versions : Version.visible version_ids = version_id_scope.where(where).pluck(:id) nl = operator == "!*" ? "#{Issue.table_name}.fixed_version_id IS NULL OR" : '' "(#{nl} #{sql_for_field("fixed_version_id", "=", version_ids, Issue.table_name, "fixed_version_id")})" end def sql_for_is_private_field(field, operator, value) op = (operator == "=" ? 'IN' : 'NOT IN') va = value.map do |v| v == '0' ? self.class.connection.quoted_false : self.class.connection.quoted_true end.uniq.join(',') "#{Issue.table_name}.is_private #{op} (#{va})" end def sql_for_attachment_field(field, operator, value) case operator when "*", "!*" e = (operator == "*" ? "EXISTS" : "NOT EXISTS") "#{e} (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id)" when "~", "!~", "*~" c = sql_contains("a.filename", value.first, :all_words => (operator != "*~")) e = (operator == "!~" ? "NOT EXISTS" : "EXISTS") "#{e} (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id AND (#{c}))" when "^", "$" c = sql_contains("a.filename", value.first, (operator == "^" ? :starts_with : :ends_with) => true) "EXISTS (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id AND (#{c}))" end end def sql_for_attachment_description_field(field, operator, value) cond_description = "a.description IS NOT NULL AND a.description <> ''" c = case operator when '*', '!*' (operator == '*' ? cond_description : "NOT (#{cond_description})") when '~', '!~', '*~' (operator == '~' ? '' : "#{cond_description} AND ") + sql_contains('a.description', value.first, :match => (operator != '!~'), :all_words => (operator != '*~')) when '^', '$' sql_contains('a.description', value.first, (operator == '^' ? :starts_with : :ends_with) => true) else '1=0' end "EXISTS (SELECT 1 FROM #{Attachment.table_name} a WHERE a.container_type = 'Issue' AND a.container_id = #{Issue.table_name}.id AND (#{c}))" end def sql_for_parent_id_field(field, operator, value) case operator when "=" # accepts a comma separated list of ids ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq if ids.present? "#{Issue.table_name}.parent_id IN (#{ids.join(",")})" else "1=0" end when "~" ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq conditions = ids.filter_map do |id| root_id, lft, rgt = Issue.where(id: id).pick(:root_id, :lft, :rgt) if root_id && lft && rgt "(#{Issue.table_name}.root_id = #{root_id} AND #{Issue.table_name}.lft > #{lft} AND #{Issue.table_name}.rgt < #{rgt})" else nil end end if conditions.any? "(#{conditions.join(' OR ')})" else "1=0" end when "!*" "#{Issue.table_name}.parent_id IS NULL" when "*" "#{Issue.table_name}.parent_id IS NOT NULL" end end def sql_for_child_id_field(field, operator, value) case operator when "=" # accepts a comma separated list of child ids child_ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq ids = Issue.where(:id => child_ids).pluck(:parent_id).compact.uniq if ids.present? "#{Issue.table_name}.id IN (#{ids.join(",")})" else "1=0" end when "~" root_id, lft, rgt = Issue.where(:id => value.first.to_i).pick(:root_id, :lft, :rgt) if root_id && lft && rgt "#{Issue.table_name}.root_id = #{root_id} AND #{Issue.table_name}.lft < #{lft} AND #{Issue.table_name}.rgt > #{rgt}" else "1=0" end when "!*" "#{Issue.table_name}.rgt - #{Issue.table_name}.lft = 1" when "*" "#{Issue.table_name}.rgt - #{Issue.table_name}.lft > 1" end end def sql_for_updated_on_field(field, operator, value) case operator when "!*" "#{Issue.table_name}.updated_on = #{Issue.table_name}.created_on" when "*" "#{Issue.table_name}.updated_on > #{Issue.table_name}.created_on" else sql_for_field("updated_on", operator, value, Issue.table_name, "updated_on") end end def sql_for_issue_id_field(field, operator, value) if operator == "=" # accepts a comma separated list of ids ids = value.first.to_s.scan(/\d+/).map(&:to_i) if ids.present? "#{Issue.table_name}.id IN (#{ids.join(",")})" else "1=0" end else sql_for_field("id", operator, value, Issue.table_name, "id") end end def sql_for_relations(field, operator, value, options={}) relation_options = IssueRelation::TYPES[field] return relation_options unless relation_options relation_type = field join_column, target_join_column = "issue_from_id", "issue_to_id" if relation_options[:reverse] || options[:reverse] relation_type = relation_options[:reverse] || relation_type join_column, target_join_column = target_join_column, join_column end sql = case operator when "*", "!*" op = (operator == "*" ? 'IN' : 'NOT IN') "#{Issue.table_name}.id #{op}" \ " (SELECT DISTINCT #{IssueRelation.table_name}.#{join_column}" \ " FROM #{IssueRelation.table_name}" \ " WHERE #{IssueRelation.table_name}.relation_type =" \ " '#{self.class.connection.quote_string(relation_type)}')" when "=", "!" ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq if ids.present? op = (operator == "=" ? 'IN' : 'NOT IN') "#{Issue.table_name}.id #{op}" \ " (SELECT DISTINCT #{IssueRelation.table_name}.#{join_column}" \ " FROM #{IssueRelation.table_name}" \ " WHERE #{IssueRelation.table_name}.relation_type =" \ " '#{self.class.connection.quote_string(relation_type)}'" \ " AND #{IssueRelation.table_name}.#{target_join_column} IN (#{ids.join(",")}))" else "1=0" end when "=p", "=!p", "!p" op = (operator == "!p" ? 'NOT IN' : 'IN') comp = (operator == "=!p" ? '<>' : '=') "#{Issue.table_name}.id #{op}" \ " (SELECT DISTINCT #{IssueRelation.table_name}.#{join_column}" \ " FROM #{IssueRelation.table_name}, #{Issue.table_name} relissues" \ " WHERE #{IssueRelation.table_name}.relation_type =" \ " '#{self.class.connection.quote_string(relation_type)}'" \ " AND #{IssueRelation.table_name}.#{target_join_column} = relissues.id" \ " AND relissues.project_id #{comp} #{value.first.to_i})" when "*o", "!o" op = (operator == "!o" ? 'NOT IN' : 'IN') "#{Issue.table_name}.id #{op}" \ " (SELECT DISTINCT #{IssueRelation.table_name}.#{join_column}" \ " FROM #{IssueRelation.table_name}, #{Issue.table_name} relissues" \ " WHERE #{IssueRelation.table_name}.relation_type =" \ " '#{self.class.connection.quote_string(relation_type)}'" \ " AND #{IssueRelation.table_name}.#{target_join_column} = relissues.id" \ " AND relissues.status_id IN" \ " (SELECT id FROM #{IssueStatus.table_name}" \ " WHERE is_closed = #{self.class.connection.quoted_false}))" end if relation_options[:sym] == field && !options[:reverse] sqls = [sql, sql_for_relations(field, operator, value, :reverse => true)] sql = sqls.join(["!", "!*", "!p", '!o'].include?(operator) ? " AND " : " OR ") end "(#{sql})" end def sql_for_project_status_field(field, operator, value, options={}) sql_for_field(field, operator, value, Project.table_name, "status") end def sql_for_any_searchable_field(field, operator, value) question = value.first # Fetch search results only from the selected and visible (sub-)projects project_scope = Project.allowed_to(:view_issues) if project projects = project_scope.where(project_statement) elsif has_filter?('project_id') case values_for('project_id').first when 'mine' project_ids = User.current.projects.ids when 'bookmarks' project_ids = User.current.bookmarked_project_ids else project_ids = values_for('project_id') end projects = project_scope.where( sql_for_field('project_id', operator_for('project_id'), project_ids, Project.table_name, 'id') ) else projects = nil end is_all_words = case operator when '~' then true when '*~', '!~' then false end is_open_issues = has_filter?('status_id') && operator_for('status_id') == 'o' fetcher = Redmine::Search::Fetcher.new( question, User.current, ['issue'], projects, all_words: is_all_words, open_issues: is_open_issues, attachments: '0' ) ids = fetcher.result_ids.map(&:last) if ids.present? sw = operator == '!~' ? 'NOT' : '' "#{Issue.table_name}.id #{sw} IN (#{ids.join(',')})" else operator == '!~' ? '1=1' : '1=0' end end def find_assigned_to_id_filter_values(values) Principal.visible.where(:id => values).map {|p| [p.name, p.id.to_s]} end alias :find_author_id_filter_values :find_assigned_to_id_filter_values IssueRelation::TYPES.each_key do |relation_type| alias_method :"sql_for_#{relation_type}_field", :sql_for_relations end def joins_for_order_statement(order_options) joins = [super] if order_options if order_options.include?('authors') joins << "LEFT OUTER JOIN #{User.table_name} authors ON authors.id = #{queried_table_name}.author_id" end if order_options.include?('users') joins << "LEFT OUTER JOIN #{User.table_name} ON #{User.table_name}.id = #{queried_table_name}.assigned_to_id" end if order_options.include?('last_journal_user') joins << "LEFT OUTER JOIN #{Journal.table_name}" \ " ON #{Journal.table_name}.id = (SELECT MAX(#{Journal.table_name}.id)" \ " FROM #{Journal.table_name}" \ " WHERE #{Journal.table_name}.journalized_type = 'Issue'" \ " AND #{Journal.table_name}.journalized_id = #{Issue.table_name}.id " \ " AND #{Journal.visible_notes_condition(User.current, :skip_pre_condition => true)})" \ " LEFT OUTER JOIN #{User.table_name} last_journal_user" \ " ON last_journal_user.id = #{Journal.table_name}.user_id" end if order_options.include?('versions') joins << "LEFT OUTER JOIN #{Version.table_name}" \ " ON #{Version.table_name}.id = #{queried_table_name}.fixed_version_id" end if order_options.include?('issue_categories') joins << "LEFT OUTER JOIN #{IssueCategory.table_name}" \ " ON #{IssueCategory.table_name}.id = #{queried_table_name}.category_id" end if order_options.include?('trackers') joins << "LEFT OUTER JOIN #{Tracker.table_name}" \ " ON #{Tracker.table_name}.id = #{queried_table_name}.tracker_id" end if order_options.include?('enumerations') joins << "LEFT OUTER JOIN #{IssuePriority.table_name}" \ " ON #{IssuePriority.table_name}.id = #{queried_table_name}.priority_id" end end joins.any? ? joins.join(' ') : nil end end redmine-6.0.5/app/models/issue_relation.rb000066400000000000000000000205301500112024600205510ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueRelation < ApplicationRecord # Class used to represent the relations of an issue class Relations < Array include Redmine::I18n def initialize(issue, *args) @issue = issue super(*args) end def to_s(*args) map {|relation| relation.to_s(@issue)}.join(', ') end end include Redmine::SafeAttributes include Redmine::Utils::DateCalculation belongs_to :issue_from, :class_name => 'Issue' belongs_to :issue_to, :class_name => 'Issue' TYPE_RELATES = "relates" TYPE_DUPLICATES = "duplicates" TYPE_DUPLICATED = "duplicated" TYPE_BLOCKS = "blocks" TYPE_BLOCKED = "blocked" TYPE_PRECEDES = "precedes" TYPE_FOLLOWS = "follows" TYPE_COPIED_TO = "copied_to" TYPE_COPIED_FROM = "copied_from" TYPES = { TYPE_RELATES => {:name => :label_relates_to, :sym_name => :label_relates_to, :order => 1, :sym => TYPE_RELATES}, TYPE_DUPLICATES => {:name => :label_duplicates, :sym_name => :label_duplicated_by, :order => 2, :sym => TYPE_DUPLICATED}, TYPE_DUPLICATED => {:name => :label_duplicated_by, :sym_name => :label_duplicates, :order => 3, :sym => TYPE_DUPLICATES, :reverse => TYPE_DUPLICATES}, TYPE_BLOCKS => {:name => :label_blocks, :sym_name => :label_blocked_by, :order => 4, :sym => TYPE_BLOCKED}, TYPE_BLOCKED => {:name => :label_blocked_by, :sym_name => :label_blocks, :order => 5, :sym => TYPE_BLOCKS, :reverse => TYPE_BLOCKS}, TYPE_PRECEDES => {:name => :label_precedes, :sym_name => :label_follows, :order => 6, :sym => TYPE_FOLLOWS}, TYPE_FOLLOWS => {:name => :label_follows, :sym_name => :label_precedes, :order => 7, :sym => TYPE_PRECEDES, :reverse => TYPE_PRECEDES}, TYPE_COPIED_TO => {:name => :label_copied_to, :sym_name => :label_copied_from, :order => 8, :sym => TYPE_COPIED_FROM}, TYPE_COPIED_FROM => {:name => :label_copied_from, :sym_name => :label_copied_to, :order => 9, :sym => TYPE_COPIED_TO, :reverse => TYPE_COPIED_TO} }.freeze validates_presence_of :issue_from, :issue_to, :relation_type validates_inclusion_of :relation_type, :in => TYPES.keys validates_numericality_of :delay, :allow_nil => true validates_uniqueness_of :issue_to_id, :scope => :issue_from_id, :case_sensitive => true validate :validate_issue_relation before_save :handle_issue_order after_create :call_issues_relation_added_callback after_destroy :call_issues_relation_removed_callback safe_attributes 'relation_type', 'delay', 'issue_to_id' def safe_attributes=(attrs, user=User.current) if attrs.respond_to?(:to_unsafe_hash) attrs = attrs.to_unsafe_hash end return unless attrs.is_a?(Hash) attrs = attrs.deep_dup if issue_id = attrs.delete('issue_to_id') if issue_id.to_s.strip =~ /\A#?(\d+)\z/ issue_id = $1.to_i self.issue_to = Issue.visible(user).find_by_id(issue_id) end end super(attrs) end def visible?(user=User.current) (issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user)) end def deletable?(user=User.current) visible?(user) && ((issue_from.nil? || user.allowed_to?(:manage_issue_relations, issue_from.project)) || (issue_to.nil? || user.allowed_to?(:manage_issue_relations, issue_to.project))) end def initialize(attributes=nil, *args) super if new_record? if relation_type.blank? self.relation_type = IssueRelation::TYPE_RELATES end end end def validate_issue_relation if issue_from && issue_to errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations? errors.add :issue_to_id, :not_same_project end if circular_dependency? errors.add :base, :circular_dependency end if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to) errors.add :base, :cant_link_an_issue_with_a_descendant end end end def other_issue(issue) (self.issue_from_id == issue.id) ? issue_to : issue_from end # Returns the relation type for +issue+ def relation_type_for(issue) if TYPES[relation_type] if self.issue_from_id == issue.id relation_type else TYPES[relation_type][:sym] end end end def label_for(issue) if TYPES[relation_type] TYPES[relation_type][(self.issue_from_id == issue.id) ? :name : :sym_name] else :unknow end end def to_s(issue=nil) issue ||= issue_from issue_text = block_given? ? yield(other_issue(issue)) : "##{other_issue(issue).try(:id)}" s = [] s << l(label_for(issue)) s << "(#{l('datetime.distance_in_words.x_days', :count => delay)})" if delay && delay != 0 s << issue_text s.join(' ') end def css_classes_for(issue) "rel-#{relation_type_for(issue)}" end def handle_issue_order reverse_if_needed if relation_type == TYPE_PRECEDES self.delay ||= 0 else self.delay = nil end set_issue_to_dates end def set_issue_to_dates(journal=nil) soonest_start = self.successor_soonest_start if soonest_start && issue_to issue_to.reschedule_on!(soonest_start, journal) end end def successor_soonest_start if (self.relation_type == TYPE_PRECEDES) && delay && issue_from && (issue_from.start_date || issue_from.due_date) add_working_days((issue_from.due_date || issue_from.start_date), (1 + delay)) end end def <=>(relation) return nil unless relation.is_a?(IssueRelation) r = TYPES[self.relation_type][:order] <=> TYPES[relation.relation_type][:order] r == 0 ? id <=> relation.id : r end def init_journals(user) issue_from.init_journal(user) if issue_from issue_to.init_journal(user) if issue_to end private # Reverses the relation if needed so that it gets stored in the proper way # Should not be reversed before validation so that it can be displayed back # as entered on new relation form. # # Orders relates relations by ID, so that uniqueness index in DB is triggered # on concurrent access. def reverse_if_needed if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse] issue_tmp = issue_to self.issue_to = issue_from self.issue_from = issue_tmp self.relation_type = TYPES[relation_type][:reverse] elsif relation_type == TYPE_RELATES && issue_from_id > issue_to_id self.issue_to, self.issue_from = issue_from, issue_to end end # Returns true if the relation would create a circular dependency def circular_dependency? case relation_type when 'follows' issue_from.would_reschedule? issue_to when 'precedes' issue_to.would_reschedule? issue_from when 'blocked' issue_from.blocks? issue_to when 'blocks' issue_to.blocks? issue_from when 'relates' self.class.where(issue_from_id: issue_to, issue_to_id: issue_from).present? else false end end def call_issues_relation_added_callback call_issues_callback :relation_added end def call_issues_relation_removed_callback call_issues_callback :relation_removed end def call_issues_callback(name) [issue_from, issue_to].each do |issue| if issue issue.send name, self end end end end redmine-6.0.5/app/models/issue_status.rb000066400000000000000000000110301500112024600202520ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class IssueStatus < ApplicationRecord include Redmine::SafeAttributes after_update :handle_is_closed_change before_destroy :check_integrity has_many :workflows, :class_name => 'WorkflowTransition', :foreign_key => "old_status_id" has_many :workflow_transitions_as_new_status, :class_name => 'WorkflowTransition', :foreign_key => "new_status_id" acts_as_positioned before_destroy :delete_workflow_rules validates_presence_of :name validates_uniqueness_of :name, :case_sensitive => true validates_length_of :name, :maximum => 30 validates_length_of :description, :maximum => 255 validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true scope :sorted, lambda {order(:position)} scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} safe_attributes( 'name', 'description', 'is_closed', 'position', 'default_done_ratio') # Update all the +Issues+ setting their done_ratio to the value of their +IssueStatus+ def self.update_issue_done_ratios if Issue.use_status_for_done_ratio? IssueStatus.where("default_done_ratio >= 0").each do |status| Issue.where({:status_id => status.id}).update_all({:done_ratio => status.default_done_ratio}) end end return Issue.use_status_for_done_ratio? end # Returns an array of all statuses the given role can switch to def new_statuses_allowed_to(roles, tracker, author=false, assignee=false) self.class.new_statuses_allowed(self, roles, tracker, author, assignee) end alias :find_new_statuses_allowed_to :new_statuses_allowed_to def self.new_statuses_allowed(status, roles, tracker, author=false, assignee=false) if roles.present? && tracker status_id = status.try(:id) || 0 scope = IssueStatus. joins(:workflow_transitions_as_new_status). where(:workflows => {:old_status_id => status_id, :role_id => roles.map(&:id), :tracker_id => tracker.id}) unless author && assignee if author || assignee scope = scope.where("author = ? OR assignee = ?", author, assignee) else scope = scope.where("author = ? AND assignee = ?", false, false) end end scope.distinct.to_a.sort else [] end end def <=>(status) return nil unless status.is_a?(IssueStatus) position <=> status.position end def to_s; name end private # Updates issues closed_on attribute when an existing status is set as closed. def handle_is_closed_change if saved_change_to_is_closed? && is_closed == true # First we update issues that have a journal for when the current status was set, # a subselect is used to update all issues with a single query subquery = Journal.joins(:details). where(:journalized_type => 'Issue'). where("journalized_id = #{Issue.table_name}.id"). where(:journal_details => {:property => 'attr', :prop_key => 'status_id', :value => id.to_s}). select("MAX(created_on)"). to_sql Issue.where(:status_id => id, :closed_on => nil).update_all("closed_on = (#{subquery})") # Then we update issues that don't have a journal which means the # current status was set on creation Issue.where(:status_id => id, :closed_on => nil).update_all("closed_on = created_on") end end def check_integrity if Issue.where(:status_id => id).any? raise "This status is used by some issues" elsif Tracker.where(:default_status_id => id).any? raise "This status is used as the default status by some trackers" end end # Deletes associated workflows def delete_workflow_rules WorkflowRule.where(:old_status_id => id).delete_all WorkflowRule.where(:new_status_id => id).delete_all end end redmine-6.0.5/app/models/journal.rb000066400000000000000000000275511500112024600172100ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Journal < ApplicationRecord include Redmine::SafeAttributes belongs_to :journalized, :polymorphic => true # added as a quick fix to allow eager loading of the polymorphic association # since always associated to an issue, for now belongs_to :issue, :foreign_key => :journalized_id belongs_to :user belongs_to :updated_by, :class_name => 'User' has_many :details, :class_name => "JournalDetail", :dependent => :delete_all, :inverse_of => :journal attr_accessor :indice acts_as_event( :title => Proc.new do |o| status = ((s = o.new_status) ? " (#{s})" : nil) "#{o.issue.tracker} ##{o.issue.id}#{status}: #{o.issue.subject}" end, :description => :notes, :author => :user, :group => :issue, :type => Proc.new do |o| (s = o.new_status) ? (s.is_closed? ? 'issue-closed' : 'issue-edit') : 'issue-note' end, :url => Proc.new do |o| {:controller => 'issues', :action => 'show', :id => o.issue.id, :anchor => "change-#{o.id}"} end ) acts_as_activity_provider( :type => 'issues', :author_key => :user_id, :scope => proc do preload({:issue => :project}, :user). joins("LEFT OUTER JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id"). where("#{Journal.table_name}.journalized_type = 'Issue' AND" + " (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')").distinct end ) acts_as_mentionable :attributes => ['notes'] before_create :split_private_notes before_create :add_watcher after_create_commit :send_notification scope :visible, (lambda do |*args| user = args.shift || User.current options = args.shift || {} joins(:issue => :project). where(Issue.visible_condition(user, options)). where(Journal.visible_notes_condition(user, :skip_pre_condition => true)) end) safe_attributes( 'notes', :if => lambda {|journal, user| journal.new_record? || journal.editable_by?(user)}) safe_attributes( 'private_notes', :if => lambda {|journal, user| user.allowed_to?(:set_notes_private, journal.project)}) safe_attributes 'updated_by' # Returns a SQL condition to filter out journals with notes that are not visible to user def self.visible_notes_condition(user=User.current, options={}) private_notes_permission = Project.allowed_to_condition(user, :view_private_notes, options) sanitize_sql_for_conditions(["(#{table_name}.private_notes = ? OR #{table_name}.user_id = ? OR (#{private_notes_permission}))", false, user.id]) end def initialize(*args) super if journalized if journalized.new_record? self.notify = false else start end end end def save(*args) journalize_changes # Do not save an empty journal (details.empty? && notes.blank?) ? false : super() end # Returns journal details that are visible to user def visible_details(user=User.current) details.select do |detail| if detail.property == 'cf' detail.custom_field && detail.custom_field.visible_by?(project, user) elsif detail.property == 'relation' Issue.find_by_id(detail.value || detail.old_value).try(:visible?, user) else true end end end # Returns the JournalDetail for the given attribute, or nil if the attribute # was not updated def detail_for_attribute(attribute) details.detect {|detail| detail.prop_key == attribute} end # Returns the new status if the journal contains a status change, otherwise nil def new_status s = new_value_for('status_id') s ? IssueStatus.find_by_id(s.to_i) : nil end def new_value_for(prop) detail_for_attribute(prop).try(:value) end def editable_by?(usr) usr && usr.logged? && (usr.allowed_to?(:edit_issue_notes, project) || (self.user == usr && usr.allowed_to?(:edit_own_issue_notes, project))) end def project journalized.respond_to?(:project) ? journalized.project : nil end def attachments @attachments ||= begin ids = details.select {|d| d.property == 'attachment' && d.value.present?}.map(&:prop_key) ids.empty? ? [] : Attachment.where(id: ids).sort_by {|a| ids.index(a.id.to_s)} end end def visible?(*args) journalized.visible?(*args) end # Returns a string of css classes def css_classes s = +'journal' s << ' has-notes' unless notes.blank? s << ' has-details' unless details.blank? s << ' private-notes' if private_notes? s end def notify? @notify != false end def notify=(arg) @notify = arg end def notified_users notified = journalized.notified_users if private_notes? notified = notified.select {|user| user.allowed_to?(:view_private_notes, journalized.project)} end notified end def recipients notified_users.map(&:mail) end def notified_watchers notified = journalized.notified_watchers select_journal_visible_user(notified) end def notified_mentions notified = super select_journal_visible_user(notified) end def watcher_recipients notified_watchers.map(&:mail) end # Sets @custom_field instance variable on journals details using a single query def self.preload_journals_details_custom_fields(journals) field_ids = journals.map(&:details).flatten.select {|d| d.property == 'cf'}.map(&:prop_key).uniq if field_ids.any? fields_by_id = CustomField.where(:id => field_ids).inject({}) {|h, f| h[f.id] = f; h} journals.each do |journal| journal.details.each do |detail| if detail.property == 'cf' detail.instance_variable_set :@custom_field, fields_by_id[detail.prop_key.to_i] end end end end journals end # Stores the values of the attributes and custom fields of the journalized object def start if journalized @attributes_before_change = journalized.journalized_attribute_names.inject({}) do |h, attribute| h[attribute] = journalized.send(attribute) h end @custom_values_before_change = journalized.custom_field_values.inject({}) do |h, c| h[c.custom_field_id] = c.value h end end self end # Adds a journal detail for an attachment that was added or removed def journalize_attachment(attachment, added_or_removed) key = (added_or_removed == :removed ? :old_value : :value) details << JournalDetail.new( :property => 'attachment', :prop_key => attachment.id, key => attachment.filename ) end # Adds a journal detail for an issue relation that was added or removed def journalize_relation(relation, added_or_removed) key = (added_or_removed == :removed ? :old_value : :value) details << JournalDetail.new( :property => 'relation', :prop_key => relation.relation_type_for(journalized), key => relation.other_issue(journalized).try(:id) ) end private # Generates journal details for attribute and custom field changes def journalize_changes # attributes changes if @attributes_before_change attrs = (journalized.journalized_attribute_names + @attributes_before_change.keys).uniq attrs.each do |attribute| before = @attributes_before_change[attribute] after = journalized.send(attribute) next if before == after || (before.blank? && after.blank?) add_attribute_detail(attribute, before, after) end end # custom fields changes if @custom_values_before_change values_by_custom_field_id = {} @custom_values_before_change.each_key do |custom_field_id| values_by_custom_field_id[custom_field_id] = nil end journalized.custom_field_values.each do |c| values_by_custom_field_id[c.custom_field_id] = c.value end values_by_custom_field_id.each do |custom_field_id, after| before = @custom_values_before_change[custom_field_id] next if before == after || (before.blank? && after.blank?) if before.is_a?(Array) || after.is_a?(Array) before = [before] unless before.is_a?(Array) after = [after] unless after.is_a?(Array) # values removed (before - after).reject(&:blank?).each do |value| add_custom_field_detail(custom_field_id, value, nil) end # values added (after - before).reject(&:blank?).each do |value| add_custom_field_detail(custom_field_id, nil, value) end else add_custom_field_detail(custom_field_id, before, after) end end end start end # Adds a journal detail for an attribute change def add_attribute_detail(attribute, old_value, value) add_detail('attr', attribute, old_value, value) end # Adds a journal detail for a custom field value change def add_custom_field_detail(custom_field_id, old_value, value) add_detail('cf', custom_field_id, old_value, value) end # Adds a journal detail def add_detail(property, prop_key, old_value, value) details << JournalDetail.new( :property => property, :prop_key => prop_key, :old_value => old_value, :value => value ) end def split_private_notes if private_notes? if notes.present? if details.any? # Split the journal (notes/changes) so we don't have half-private journals journal = Journal.new(:journalized => journalized, :user => user, :notes => nil, :private_notes => false) journal.details = details journal.save self.details = [] self.created_on = journal.created_on end else # Blank notes should not be private self.private_notes = false end end true end def add_watcher if user&.active? && user.allowed_to?(:add_issue_watchers, project) && user.pref.auto_watch_on?('issue_contributed_to') && !Watcher.any_watched?(Array.wrap(journalized), user) journalized.set_watcher(user, true) end end def send_notification if notify? && ( Setting.notified_events.include?('issue_updated') || (Setting.notified_events.include?('issue_note_added') && notes.present?) || (Setting.notified_events.include?('issue_status_updated') && new_status.present?) || (Setting.notified_events.include?('issue_assigned_to_updated') && detail_for_attribute('assigned_to_id').present?) || (Setting.notified_events.include?('issue_priority_updated') && new_value_for('priority_id').present?) || (Setting.notified_events.include?('issue_fixed_version_updated') && detail_for_attribute('fixed_version_id').present?) || (Setting.notified_events.include?('issue_attachment_added') && details.any? {|d| d.property == 'attachment' && d.value }) ) Mailer.deliver_issue_edit(self) end end def select_journal_visible_user(notified) if private_notes? notified = notified.select {|user| user.allowed_to?(:view_private_notes, journalized.project)} end notified end end redmine-6.0.5/app/models/journal_detail.rb000066400000000000000000000024401500112024600205200ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalDetail < ApplicationRecord belongs_to :journal def custom_field if property == 'cf' @custom_field ||= CustomField.find_by_id(prop_key) end end def value=(arg) write_attribute :value, normalize(arg) end def old_value=(arg) write_attribute :old_value, normalize(arg) end private def normalize(v) case v when true "1" when false "0" when Date v.strftime("%Y-%m-%d") else v end end end redmine-6.0.5/app/models/mail_handler.rb000066400000000000000000000617361500112024600201600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MailHandler < ActionMailer::Base include ActionView::Helpers::SanitizeHelper include Redmine::I18n class UnauthorizedAction < StandardError; end class NotAllowedInProject < UnauthorizedAction; end class InsufficientPermissions < UnauthorizedAction; end class LockedTopic < UnauthorizedAction; end class MissingInformation < StandardError; end class MissingContainer < StandardError; end attr_reader :email, :user, :handler_options def self.receive(raw_mail, options={}) options = options.deep_dup options[:issue] ||= {} options[:allow_override] ||= [] if options[:allow_override].is_a?(String) options[:allow_override] = options[:allow_override].split(',') end options[:allow_override].map! {|s| s.strip.downcase.gsub(/\s+/, '_')} # Project needs to be overridable if not specified options[:allow_override] << 'project' unless options[:issue].has_key?(:project) options[:no_account_notice] = (options[:no_account_notice].to_s == '1') options[:no_notification] = (options[:no_notification].to_s == '1') options[:no_permission_check] = (options[:no_permission_check].to_s == '1') ActiveSupport::Notifications.instrument("receive.action_mailer") do |payload| mail = Mail.new(raw_mail.b) set_payload_for_mail(payload, mail) new.receive(mail, options) end end # Receives an email and rescues any exception def self.safe_receive(*args) receive(*args) rescue => e Rails.logger.error "MailHandler: an unexpected error occurred when receiving email: #{e.message}" return false end # Extracts MailHandler options from environment variables # Use when receiving emails with rake tasks def self.extract_options_from_env(env) options = {:issue => {}} %w(project status tracker category priority assigned_to fixed_version).each do |option| options[:issue][option.to_sym] = env[option] if env[option] end %w(allow_override unknown_user no_permission_check no_account_notice no_notification default_group project_from_subaddress).each do |option| options[option.to_sym] = env[option] if env[option] end if env['private'] options[:issue][:is_private] = '1' end options end def logger Rails.logger end cattr_accessor :ignored_emails_headers self.ignored_emails_headers = { 'Auto-Submitted' => /\Aauto-(replied|generated)/, 'X-Autoreply' => 'yes' } # Processes incoming emails # Returns the created object (eg. an issue, a message) or false def receive(email, options={}) @email = email @handler_options = options sender_email = email.from.to_a.first.to_s.strip # Ignore emails received from the application emission address to avoid hell cycles emission_address = Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\))/, '').strip if sender_email.casecmp(emission_address) == 0 logger&.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" return false end # Ignore auto generated emails self.class.ignored_emails_headers.each do |key, ignored_value| value = email.header[key] if value value = value.to_s.downcase if (ignored_value.is_a?(Regexp) && ignored_value.match?(value)) || value == ignored_value logger&.info "MailHandler: ignoring email with #{key}:#{value} header" return false end end end @user = User.find_by_mail(sender_email) if sender_email.present? if @user && !@user.active? logger&.info "MailHandler: ignoring email from non-active user [#{@user.login}]" return false end if @user.nil? # Email was submitted by an unknown user case handler_options[:unknown_user] when 'accept' @user = User.anonymous when 'create' @user = create_user_from_email if @user logger&.info "MailHandler: [#{@user.login}] account created" add_user_to_group(handler_options[:default_group]) unless handler_options[:no_account_notice] ::Mailer.deliver_account_information(@user, @user.password) end else logger&.error "MailHandler: could not create account for [#{sender_email}]" return false end else # Default behaviour, emails from unknown users are ignored logger&.info "MailHandler: ignoring email from unknown user [#{sender_email}]" return false end end User.current = @user dispatch end private MESSAGE_ID_RE = %r{^ e # TODO: send a email to the user logger&.error "MailHandler: #{e.message}" false rescue MissingInformation => e logger&.error "MailHandler: missing information from #{user}: #{e.message}" false rescue MissingContainer => e logger&.error "MailHandler: reply to nonexistant object from #{user}: #{e.message}" false rescue UnauthorizedAction => e logger&.error "MailHandler: unauthorized attempt from #{user}: #{e.message}" false end def dispatch_to_default receive_issue end # Creates a new issue def receive_issue project = target_project # Never receive emails to projects where adding issues is not possible raise NotAllowedInProject, "not possible to add issues to project [#{project.name}]" unless project.allows_to?(:add_issues) # check permission unless handler_options[:no_permission_check] raise InsufficientPermissions, "not allowed to add issues to project [#{project.name}]" unless user.allowed_to?(:add_issues, project) end issue = Issue.new(:author => user, :project => project) attributes = issue_attributes_from_keywords(issue) if handler_options[:no_permission_check] issue.tracker_id = attributes['tracker_id'] if project issue.tracker_id ||= project.trackers.first.try(:id) end end issue.safe_attributes = attributes issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)} issue.subject = cleaned_up_subject if issue.subject.blank? issue.subject = "(#{ll(Setting.default_language, :text_no_subject)})" end issue.description = cleaned_up_text_body issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date? if handler_options[:issue][:is_private] == '1' issue.is_private = true end # add To and Cc as watchers before saving so the watchers can reply to Redmine add_watchers(issue) issue.save! add_attachments(issue) logger&.info "MailHandler: issue ##{issue.id} created by #{user}" issue end # Adds a note to an existing issue def receive_issue_reply(issue_id, from_journal=nil) issue = Issue.find_by(:id => issue_id) if issue.nil? raise MissingContainer, "reply to nonexistant issue [##{issue_id}]" end # Never receive emails to projects where adding issue notes is not possible project = issue.project raise NotAllowedInProject, "not possible to add notes to project [#{project.name}]" unless project.allows_to?(:add_issue_notes) # check permission unless handler_options[:no_permission_check] unless issue.notes_addable? raise InsufficientPermissions, "not allowed to add notes on issues to project [#{issue.project.name}]" end end # ignore CLI-supplied defaults for new issues handler_options[:issue] = {} journal = issue.init_journal(user) if from_journal && from_journal.private_notes? # If the received email was a reply to a private note, make the added note private issue.private_notes = true end issue.safe_attributes = issue_attributes_from_keywords(issue) issue.safe_attributes = {'custom_field_values' => custom_field_values_from_keywords(issue)} journal.notes = cleaned_up_text_body # add To and Cc as watchers before saving so the watchers can reply to Redmine add_watchers(issue) issue.save! add_attachments(issue) logger&.info "MailHandler: issue ##{issue.id} updated by #{user}" journal end # Reply will be added to the issue def receive_journal_reply(journal_id) journal = Journal.find_by(:id => journal_id) if journal && journal.journalized_type == 'Issue' receive_issue_reply(journal.journalized_id, journal) elsif m = email.subject.to_s.match(ISSUE_REPLY_SUBJECT_RE) logger&.info "MailHandler: reply to a nonexistant journal, calling receive_issue_reply with issue from subject" receive_issue_reply(m[1].to_i) else raise MissingContainer, "reply to nonexistant journal [#{journal_id}]" end end # Receives a reply to a forum message def receive_message_reply(message_id) message = Message.find_by(:id => message_id)&.root if message.nil? raise MissingContainer, "reply to nonexistant message [#{message_id}]" end # Never receive emails to projects where adding messages is not possible project = message.project raise NotAllowedInProject, "not possible to add messages to project [#{project.name}]" unless project.allows_to?(:add_messages) unless handler_options[:no_permission_check] raise InsufficientPermissions, "not allowed to add messages to project [#{message.project.name}]" unless user.allowed_to?(:add_messages, message.project) end if !message.locked? reply = Message.new(:subject => cleaned_up_subject.gsub(%r{^.*msg\d+\]}, '').strip, :content => cleaned_up_text_body) reply.author = user reply.board = message.board message.children << reply add_attachments(reply) reply else raise LockedTopic, "ignoring reply to a locked message [#{message.id} #{message.subject}]" end end # Receives a reply to a news entry def receive_news_reply(news_id) news = News.find_by_id(news_id) if news.nil? raise MissingContainer, "reply to nonexistant news [#{news_id}]" end # Never receive emails to projects where adding news comments is not possible project = news.project raise NotAllowedInProject, "not possible to add news comments to project [#{project.name}]" unless project.allows_to?(:comment_news) unless handler_options[:no_permission_check] unless news.commentable?(user) raise InsufficientPermissions, "not allowed to comment on news item [#{news.id} #{news.title}]" end end comment = news.comments.new comment.author = user comment.comments = cleaned_up_text_body comment.save! comment end # Receives a reply to a comment to a news entry def receive_comment_reply(comment_id) comment = Comment.find_by_id(comment_id) if comment && comment.commented_type == 'News' receive_news_reply(comment.commented.id) else raise MissingContainer, "reply to nonexistant comment [#{comment_id}]" end end def add_attachments(obj) if email.attachments && email.attachments.any? email.attachments.each do |attachment| next unless accept_attachment?(attachment) next unless attachment.body.decoded.size > 0 obj.attachments << Attachment.create(:container => obj, :file => attachment.body.decoded, :filename => attachment.filename, :author => user, :content_type => attachment.mime_type) end end end # Returns false if the +attachment+ of the incoming email should be ignored def accept_attachment?(attachment) @excluded ||= Setting.mail_handler_excluded_filenames.to_s.split(',').map(&:strip).reject(&:blank?) @excluded.each do |pattern| if Setting.mail_handler_enable_regex_excluded_filenames? regexp = %r{\A#{pattern}\z}i else regexp = %r{\A#{Regexp.escape(pattern).gsub("\\*", ".*")}\z}i end if regexp.match?(attachment.filename.to_s) logger.info "MailHandler: ignoring attachment #{attachment.filename} matching #{pattern}" return false end end true end # Adds To and Cc as watchers of the given object if the sender has the # appropriate permission def add_watchers(obj) if handler_options[:no_permission_check] || user.allowed_to?(:"add_#{obj.class.name.underscore}_watchers", obj.project) addresses = [email.to, email.cc].flatten.compact.uniq.collect {|a| a.strip.downcase} unless addresses.empty? users = User.active.having_mail(addresses).to_a users -= obj.watcher_users users.each do |u| obj.add_watcher(u) end end end end def get_keyword(attr, options={}) @keywords ||= {} if @keywords.has_key?(attr) @keywords[attr] else @keywords[attr] = begin override = if options.key?(:override) options[:override] else handler_options[:allow_override].intersect?([attr.to_s.downcase.gsub(/\s+/, '_'), 'all']) end if override && (v = extract_keyword!(cleaned_up_text_body, attr, options[:format])) v elsif handler_options[:issue][attr].present? handler_options[:issue][attr] end end end end # Destructively extracts the value for +attr+ in +text+ # Returns nil if no matching keyword found def extract_keyword!(text, attr, format=nil) keys = [attr.to_s.humanize] if attr.is_a?(Symbol) if user && user.language.present? keys << l("field_#{attr}", :default => '', :locale => user.language) end if Setting.default_language.present? keys << l("field_#{attr}", :default => '', :locale => Setting.default_language) end end keys.reject! {|k| k.blank?} keys.collect! {|k| Regexp.escape(k)} format ||= '.+' keyword = nil regexp = /^(#{keys.join('|')})[ \t]*:[ \t]*(#{format})\s*$/i if m = text.match(regexp) keyword = m[2].strip text.sub!(regexp, '') end keyword end def get_project_from_receiver_addresses local, domain = handler_options[:project_from_subaddress].to_s.split("@") return nil unless local && domain local = Regexp.escape(local) [:to, :cc, :bcc].each do |field| header = @email[field] next if header.blank? || header.field.blank? || !header.field.respond_to?(:addrs) header.field.addrs.each do |addr| if addr.domain.to_s.casecmp(domain)==0 && addr.local.to_s =~ /\A#{local}\+([^+]+)\z/ if project = Project.find_by_identifier($1) return project end end end end nil end def target_project # TODO: other ways to specify project: # * parse the email To field # * specific project (eg. Setting.mail_handler_target_project) target = get_project_from_receiver_addresses target ||= Project.find_by_identifier(get_keyword(:project)) if target.nil? # Invalid project keyword, use the project specified as the default one default_project = handler_options[:issue][:project] if default_project.present? target = Project.find_by_identifier(default_project) end end raise MissingInformation, 'Unable to determine target project' if target.nil? target end # Returns a Hash of issue attributes extracted from keywords in the email body def issue_attributes_from_keywords(issue) attrs = { 'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.named(k).first.try(:id), 'status_id' => (k = get_keyword(:status)) && IssueStatus.named(k).first.try(:id), 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.named(k).first.try(:id), 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.named(k).first.try(:id), 'assigned_to_id' => (k = get_keyword(:assigned_to)) && find_assignee_from_keyword(k, issue).try(:id), 'fixed_version_id' => (k = get_keyword(:fixed_version)) && issue.project.shared_versions.named(k).first.try(:id), 'start_date' => get_keyword(:start_date, :format => '\d{4}-\d{2}-\d{2}'), 'due_date' => get_keyword(:due_date, :format => '\d{4}-\d{2}-\d{2}'), 'estimated_hours' => get_keyword(:estimated_hours), 'done_ratio' => get_keyword(:done_ratio, :format => '(\d|10)?0'), 'is_private' => get_keyword_bool(:is_private), 'parent_issue_id' => get_keyword(:parent_issue) }.delete_if {|k, v| v.blank?} attrs end def get_keyword_bool(attr) true_values = ["1"] false_values = ["0"] locales = [Setting.default_language] if user locales << user.language end locales.select(&:present?).each do |locale| true_values << l("general_text_yes", :default => '', :locale => locale) true_values << l("general_text_Yes", :default => '', :locale => locale) false_values << l("general_text_no", :default => '', :locale => locale) false_values << l("general_text_No", :default => '', :locale => locale) end values = (true_values + false_values).select(&:present?) format = Regexp.union values if value = get_keyword(attr, :format => format) if true_values.include?(value) return true elsif false_values.include?(value) return false end end nil end # Returns a Hash of issue custom field values extracted from keywords in the email body def custom_field_values_from_keywords(customized) customized.custom_field_values.inject({}) do |h, v| if keyword = get_keyword(v.custom_field.name) h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(keyword, customized) end h end end # Returns the text content of the email. # If the value of Setting.mail_handler_preferred_body_part is 'html', # it returns text converted from the text/html part of the email. # Otherwise, it returns text/plain part. def plain_text_body return @plain_text_body unless @plain_text_body.nil? parse_order = if Setting.mail_handler_preferred_body_part == 'html' ['text/html', 'text/plain'] else ['text/plain', 'text/html'] end parse_order.each do |mime_type| @plain_text_body ||= email_parts_to_text(email.all_parts.select {|p| p.mime_type == mime_type}).presence return @plain_text_body unless @plain_text_body.nil? end # If there is still no body found, and there are no mime-parts defined, # we use the whole raw mail body @plain_text_body ||= email_parts_to_text([email]).presence if email.all_parts.empty? # As a fallback we return an empty plain text body (e.g. if we have only # empty text parts but a non-text attachment) @plain_text_body ||= "" end def email_parts_to_text(parts) parts.reject! do |part| part.attachment? end parts.map do |p| body_charset = Mail::Utilities.pick_encoding(p.charset).to_s body = Redmine::CodesetUtil.to_utf8(p.body.decoded, body_charset) # convert html parts to text p.mime_type == 'text/html' ? self.class.html_body_to_text(body) : self.class.plain_text_body_to_text(body) end.join("\r\n") end def cleaned_up_text_body @cleaned_up_text_body ||= cleanup_body(plain_text_body) end def cleaned_up_subject subject = email.subject.to_s subject.strip[0, 255] end def self.assign_string_attribute_with_limit(object, attribute, value, limit=nil) limit ||= object.class.columns_hash[attribute.to_s].limit || 255 value = value.to_s.slice(0, limit) object.send(:"#{attribute}=", value) end private_class_method :assign_string_attribute_with_limit # Singleton class method is public class << self # Converts a HTML email body to text def html_body_to_text(html) Redmine::WikiFormatting.html_parser.to_text(html) end # Converts a plain/text email body to text def plain_text_body_to_text(text) # Removes leading spaces that would cause the line to be rendered as # preformatted text with textile text.gsub(/^ +(?![*#])/, '') end # Returns a User from an email address and a full name def new_user_from_attributes(email_address, fullname=nil) user = User.new # Truncating the email address would result in an invalid format user.mail = email_address assign_string_attribute_with_limit(user, 'login', email_address, User::LOGIN_LENGTH_LIMIT) names = fullname.blank? ? email_address.gsub(/@.*$/, '').split('.') : fullname.split assign_string_attribute_with_limit(user, 'firstname', names.shift, 30) assign_string_attribute_with_limit(user, 'lastname', names.join(' '), 30) user.lastname = '-' if user.lastname.blank? user.language = Setting.default_language user.generate_password = true user.mail_notification = 'only_my_events' unless user.valid? user.login = "user#{Redmine::Utils.random_hex(6)}" unless user.errors[:login].blank? user.firstname = "-" unless user.errors[:firstname].blank? user.lastname = "-" unless user.errors[:lastname].blank? end user end end # Creates a User for the +email+ sender # Returns the user or nil if it could not be created def create_user_from_email if from_addr = email.header['from'].try(:addrs).to_a.first addr = from_addr.address name = from_addr.display_name || from_addr.comments.to_a.first user = self.class.new_user_from_attributes(addr, name) if handler_options[:no_notification] user.mail_notification = 'none' end if user.save user else logger&.error "MailHandler: failed to create User: #{user.errors.full_messages}" nil end else logger&.error "MailHandler: failed to create User: no FROM address found" nil end end # Adds the newly created user to default group def add_user_to_group(default_group) if default_group.present? default_group.split(',').each do |group_name| if group = Group.named(group_name).first group.users << @user elsif logger logger.warn "MailHandler: could not add user to [#{group_name}], group not found" end end end end # Removes the email body of text after the truncation configurations. def cleanup_body(body) delimiters = Setting.mail_handler_body_delimiters.to_s.split(/[\r\n]+/).reject(&:blank?) if Setting.mail_handler_enable_regex_delimiters? begin delimiters = delimiters.map {|s| Regexp.new(s)} rescue RegexpError => e logger&.error "MailHandler: invalid regexp delimiter found in mail_handler_body_delimiters setting (#{e.message})" end else # In a "normal" delimiter, allow a single space from the originally # defined delimiter to match: # * any space-like character, or # * line-breaks and optional quoting with arbitrary spacing around it # in the mail in order to allow line breaks of delimiters. delimiters = delimiters.map do |delimiter| delimiter = Regexp.escape(delimiter).encode!(Encoding::UTF_8) delimiter = delimiter.gsub(/(\\ )+/, '\p{Space}*(\p{Space}|[\r\n](\p{Space}|>)*)') Regexp.new(delimiter) end end unless delimiters.empty? regex = Regexp.new("^(\\p{Space}|>)*(#{ Regexp.union(delimiters) })\\p{Space}*[\\r\\n].*", Regexp::MULTILINE) if Setting.text_formatting == "common_mark" && Redmine::Configuration['common_mark_enable_hardbreaks'] == false body = Redmine::WikiFormatting::CommonMark::AppendSpacesToLines.call(body) end body = body.gsub(regex, '') end body.strip end def find_assignee_from_keyword(keyword, issue) Principal.detect_by_keyword(issue.assignable_users, keyword) end end redmine-6.0.5/app/models/mailer.rb000066400000000000000000000710231500112024600170000ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'roadie' class Mailer < ActionMailer::Base layout 'mailer' helper :application helper :issues helper :custom_fields include Redmine::I18n include Roadie::Rails::Automatic class DeliveryJob < ActionMailer::MailDeliveryJob include Redmine::JobWrapper around_enqueue :keep_current_user end self.delivery_job = DeliveryJob # Overrides ActionMailer::Base#process in order to set the recipient as the current user # and his language as the default locale. # The first argument of all actions of this Mailer must be a User (the recipient), # otherwise an ArgumentError is raised. def process(action, *args) user = args.first raise ArgumentError, "First argument has to be a user, was #{user.inspect}" unless user.is_a?(User) initial_user = User.current initial_language = ::I18n.locale begin User.current = user lang = find_language(user.language) if user.logged? lang ||= Setting.default_language set_language_if_valid(lang) super ensure User.current = initial_user ::I18n.locale = initial_language end end # Default URL options for generating URLs in emails based on host_name and protocol # defined in application settings. def self.default_url_options options = {:protocol => Setting.protocol} if Setting.host_name.to_s =~ /\A(https?\:\/\/)?(.+?)(\:(\d+))?(\/.+)?\z/i host, port, prefix = $2, $4, $5 options.merge!( { :host => host, :port => port, :script_name => prefix } ) else options[:host] = Setting.host_name end options end # Builds a mail for notifying user about a new issue def issue_add(user, issue) redmine_headers 'Project' => issue.project.identifier, 'Issue-Tracker' => issue.tracker.name, 'Issue-Id' => issue.id, 'Issue-Author' => issue.author.login, 'Issue-Assignee' => assignee_for_header(issue) redmine_headers 'Issue-Priority' => issue.priority.name if issue.priority message_id issue references issue @author = issue.author @issue = issue @user = user @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue) subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]" subject += " (#{issue.status.name})" if Setting.show_status_changes_in_mail_subject? subject += " #{issue.subject}" mail :to => user, :subject => subject end # Notifies users about a new issue. # # Example: # Mailer.deliver_issue_add(issue) def self.deliver_issue_add(issue) users = issue.notified_users | issue.notified_watchers | issue.notified_mentions users.each do |user| issue_add(user, issue).deliver_later end end # Builds a mail for notifying user about an issue update def issue_edit(user, journal) issue = journal.journalized redmine_headers 'Project' => issue.project.identifier, 'Issue-Tracker' => issue.tracker.name, 'Issue-Id' => issue.id, 'Issue-Author' => issue.author.login, 'Issue-Assignee' => assignee_for_header(issue) redmine_headers 'Issue-Priority' => issue.priority.name if issue.priority message_id journal references issue @author = journal.user s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] " s += "(#{issue.status.name}) " if journal.new_value_for('status_id') && Setting.show_status_changes_in_mail_subject? s += issue.subject @issue = issue @user = user @journal = journal @journal_details = journal.visible_details @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}") mail :to => user, :subject => s end # Notifies users about an issue update. # # Example: # Mailer.deliver_issue_edit(journal) def self.deliver_issue_edit(journal) users = journal.notified_users | journal.notified_watchers | journal.notified_mentions | journal.journalized.notified_mentions users.select! do |user| journal.notes? || journal.visible_details(user).any? end users.each do |user| issue_edit(user, journal).deliver_later end end # Builds a mail to user about a new document. def document_added(user, document, author) redmine_headers 'Project' => document.project.identifier @author = author @document = document @user = user @document_url = url_for(:controller => 'documents', :action => 'show', :id => document) mail :to => user, :subject => "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}" end # Notifies users that document was created by author # # Example: # Mailer.deliver_document_added(document, author) def self.deliver_document_added(document, author) users = document.notified_users users.each do |user| document_added(user, document, author).deliver_later end end # Builds a mail to user about new attachements. def attachments_added(user, attachments) container = attachments.first.container added_to = '' added_to_url = '' @author = attachments.first.author case container.class.name when 'Project' added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container) added_to = "#{l(:label_project)}: #{container}" when 'Version' added_to_url = url_for(:controller => 'files', :action => 'index', :project_id => container.project) added_to = "#{l(:label_version)}: #{container.name}" when 'Document' added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id) added_to = "#{l(:label_document)}: #{container.title}" end summary = l(:label_attachment_summary, :filename => attachments.first.filename, :count => attachments.length - 1) redmine_headers 'Project' => container.project.identifier @attachments = attachments @user = user @added_to = added_to @added_to_url = added_to_url mail :to => user, :subject => "[#{container.project.name}] #{l(:label_attachment_new)}: #{summary}" end # Notifies users about new attachments # # Example: # Mailer.deliver_attachments_added(attachments) def self.deliver_attachments_added(attachments) container = attachments.first.container case container.class.name when 'Project', 'Version' users = container.project.notified_users.select {|user| user.allowed_to?(:view_files, container.project)} when 'Document' users = container.notified_users end users.each do |user| attachments_added(user, attachments).deliver_later end end # Builds a mail to user about a new news. def news_added(user, news) redmine_headers 'Project' => news.project.identifier @author = news.author message_id news references news @news = news @user = user @news_url = url_for(:controller => 'news', :action => 'show', :id => news) mail :to => user, :subject => "[#{news.project.name}] #{l(:label_news)}: #{news.title}" end # Notifies users about new news # # Example: # Mailer.deliver_news_added(news) def self.deliver_news_added(news) users = news.notified_users | news.notified_watchers_for_added_news users.each do |user| news_added(user, news).deliver_later end end # Builds a mail to user about a new news comment. def news_comment_added(user, comment) news = comment.commented redmine_headers 'Project' => news.project.identifier @author = comment.author message_id comment references news @news = news @comment = comment @user = user @news_url = url_for(:controller => 'news', :action => 'show', :id => news) mail :to => user, :subject => "Re: [#{news.project.name}] #{l(:label_news)}: #{news.title}" end # Notifies users about a new comment on a news # # Example: # Mailer.deliver_news_comment_added(comment) def self.deliver_news_comment_added(comment) news = comment.commented users = news.notified_users | news.notified_watchers users.each do |user| news_comment_added(user, comment).deliver_later end end # Builds a mail to user about a new message. def message_posted(user, message) redmine_headers 'Project' => message.project.identifier, 'Topic-Id' => (message.parent_id || message.id) @author = message.author message_id message references message.root @message = message @user = user @message_url = url_for(message.event_url) mail :to => user, :subject => "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}" end # Notifies users about a new forum message. # # Example: # Mailer.deliver_message_posted(message) def self.deliver_message_posted(message) users = message.notified_users users |= message.root.notified_watchers users |= message.board.notified_watchers users.each do |user| message_posted(user, message).deliver_later end end # Builds a mail to user about a new wiki content. def wiki_content_added(user, wiki_content) redmine_headers 'Project' => wiki_content.project.identifier, 'Wiki-Page-Id' => wiki_content.page.id @author = wiki_content.author message_id wiki_content @wiki_content = wiki_content @user = user @wiki_content_url = url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title) mail( :to => user, :subject => "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_added, :id => wiki_content.page.pretty_title)}" ) end # Notifies users about a new wiki content (wiki page added). # # Example: # Mailer.deliver_wiki_content_added(wiki_content) def self.deliver_wiki_content_added(wiki_content) users = wiki_content.notified_users | wiki_content.page.wiki.notified_watchers | wiki_content.notified_mentions users.each do |user| wiki_content_added(user, wiki_content).deliver_later end end # Builds a mail to user about an update of the specified wiki content. def wiki_content_updated(user, wiki_content) redmine_headers 'Project' => wiki_content.project.identifier, 'Wiki-Page-Id' => wiki_content.page.id @author = wiki_content.author message_id wiki_content @wiki_content = wiki_content @user = user @wiki_content_url = url_for(:controller => 'wiki', :action => 'show', :project_id => wiki_content.project, :id => wiki_content.page.title) @wiki_diff_url = url_for(:controller => 'wiki', :action => 'diff', :project_id => wiki_content.project, :id => wiki_content.page.title, :version => wiki_content.version) mail( :to => user, :subject => "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_updated, :id => wiki_content.page.pretty_title)}" ) end # Notifies users about the update of the specified wiki content # # Example: # Mailer.deliver_wiki_content_updated(wiki_content) def self.deliver_wiki_content_updated(wiki_content) users = wiki_content.notified_users users |= wiki_content.page.notified_watchers users |= wiki_content.page.wiki.notified_watchers users |= wiki_content.notified_mentions users.each do |user| wiki_content_updated(user, wiki_content).deliver_later end end # Builds a mail to user about his account information. def account_information(user, password) @user = user @password = password @login_url = url_for(:controller => 'account', :action => 'login') mail :to => user.mail, :subject => l(:mail_subject_register, Setting.app_title) end # Notifies user about his account information. def self.deliver_account_information(user, password) account_information(user, password).deliver_later end # Builds a mail to user about an account activation request. def account_activation_request(user, new_user) @new_user = new_user @url = url_for(:controller => 'users', :action => 'index', :status => User::STATUS_REGISTERED, :sort_key => 'created_on', :sort_order => 'desc') mail :to => user, :subject => l(:mail_subject_account_activation_request, Setting.app_title) end # Notifies admin users that an account activation request needs # their approval. # # Exemple: # Mailer.deliver_account_activation_request(new_user) def self.deliver_account_activation_request(new_user) # Send the email to all active administrators users = User.active.where(:admin => true) users.each do |user| account_activation_request(user, new_user).deliver_later end end # Builds a mail to notify user that his account was activated. def account_activated(user) @user = user @login_url = url_for(:controller => 'account', :action => 'login') mail :to => user.mail, :subject => l(:mail_subject_register, Setting.app_title) end # Notifies user that his account was activated. # # Exemple: # Mailer.deliver_account_activated(user) def self.deliver_account_activated(user) account_activated(user).deliver_later end # Builds a mail with the password recovery link. def lost_password(user, token, recipient=nil) recipient ||= user.mail @token = token @url = url_for(:controller => 'account', :action => 'lost_password', :token => token.value) mail :to => recipient, :subject => l(:mail_subject_lost_password, Setting.app_title) end # Sends an email to user with a password recovery link. # The email will be sent to the email address specifiedby recipient if provided. # # Exemple: # Mailer.deliver_lost_password(user, token) # Mailer.deliver_lost_password(user, token, 'foo@example.net') def self.deliver_lost_password(user, token, recipient=nil) lost_password(user, token, recipient).deliver_later end # Notifies user that his password was updated by sender. # # Exemple: # Mailer.deliver_password_updated(user, sender) def self.deliver_password_updated(user, sender) # Don't send a notification to the dummy email address when changing the password # of the default admin account which is required after the first login # TODO: maybe not the best way to handle this return if user.admin? && user.login == 'admin' && user.mail == 'admin@example.net' deliver_security_notification( user, sender, message: :mail_body_password_updated, title: :button_change_password, url: {controller: 'my', action: 'password'} ) end # Builds a mail to user with his account activation link. def register(user, token) @token = token @url = url_for(:controller => 'account', :action => 'activate', :token => token.value) mail :to => user.mail, :subject => l(:mail_subject_register, Setting.app_title) end # Sends an mail to user with his account activation link. # # Exemple: # Mailer.deliver_register(user, token) def self.deliver_register(user, token) register(user, token).deliver_later end # Build a mail to user and the additional recipients given in # options[:recipients] about a security related event made by sender. # # Example: # security_notification(user, # sender, # message: :mail_body_security_notification_add, # field: :field_mail, # value: address # ) => Mail::Message object def security_notification(user, sender, options={}) @sender = sender redmine_headers 'Sender' => sender.login @message = l(options[:message], field: (options[:field] && l(options[:field])), value: options[:value]) @title = options[:title] && l(options[:title]) @remote_ip = options[:remote_ip] || @sender.remote_ip @url = options[:url] && (options[:url].is_a?(Hash) ? url_for(options[:url]) : options[:url]) redmine_headers 'Url' => @url mail :to => [user, *options[:recipients]].uniq, :subject => "[#{Setting.app_title}] #{l(:mail_subject_security_notification)}" end # Notifies the given users about a security related event made by sender. # # You can specify additional recipients in options[:recipients]. These will be # added to all generated mails for all given users. Usually, you'll want to # give only a single user when setting the additional recipients. # # Example: # Mailer.deliver_security_notification(users, # sender, # message: :mail_body_security_notification_add, # field: :field_mail, # value: address # ) def self.deliver_security_notification(users, sender, options={}) # Symbols cannot be serialized: # ActiveJob::SerializationError: Unsupported argument type: Symbol options = options.transform_values {|v| v.is_a?(Symbol) ? v.to_s : v} # sender's remote_ip would be lost on serialization/deserialization # we have to pass it with options options[:remote_ip] ||= sender.remote_ip Array.wrap(users).each do |user| security_notification(user, sender, options).deliver_later end end # Build a mail to user about application settings changes made by sender. def settings_updated(user, sender, changes, options={}) @sender = sender redmine_headers 'Sender' => sender.login @changes = changes @remote_ip = options[:remote_ip] || @sender.remote_ip @url = url_for(controller: 'settings', action: 'index') mail :to => user, :subject => "[#{Setting.app_title}] #{l(:mail_subject_security_notification)}" end # Notifies admins about application settings changes made by sender, where # changes is an array of settings names. # # Exemple: # Mailer.deliver_settings_updated(sender, [:login_required, :self_registration]) def self.deliver_settings_updated(sender, changes, options={}) return unless changes.present? # Symbols cannot be serialized: # ActiveJob::SerializationError: Unsupported argument type: Symbol changes = changes.map(&:to_s) # sender's remote_ip would be lost on serialization/deserialization # we have to pass it with options options[:remote_ip] ||= sender.remote_ip users = User.active.where(admin: true).to_a users.each do |user| settings_updated(user, sender, changes, options).deliver_later end end # Build a test email to user. def test_email(user) @url = url_for(:controller => 'welcome') mail :to => user, :subject => 'Redmine test' end # Send a test email to user. Will raise error that may occur during delivery. # # Exemple: # Mailer.deliver_test_email(user) def self.deliver_test_email(user) raise_delivery_errors_was = self.raise_delivery_errors self.raise_delivery_errors = true # Email must be delivered synchronously so we can catch errors test_email(user).deliver_now ensure self.raise_delivery_errors = raise_delivery_errors_was end # Builds a reminder mail to user about issues that are due in the next days. def reminder(user, issues, days) @issues = issues @days = days @open_issues_url = url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => 'me', :sort => 'due_date:asc') @reminder_issues_url = url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :sort => 'due_date:asc', :f => ['status_id', 'assigned_to_id', "due_date"], :op => {'status_id' => 'o', 'assigned_to_id' => '=', 'due_date' => '{'assigned_to_id' => ['me'], 'due_date' => [days]}) query = IssueQuery.new(:name => '_') query.add_filter('assigned_to_id', '=', ['me']) @open_issues_count = query.issue_count mail :to => user, :subject => l(:mail_subject_reminder, :count => issues.size, :days => days) end # Sends reminders to issue assignees # Available options: # * :days => how many days in the future to remind about (defaults to 7) # * :tracker => id of tracker for filtering issues (defaults to all trackers) # * :project => id or identifier of project to process (defaults to all projects) # * :users => array of user/group ids who should be reminded # * :version => name of target version for filtering issues (defaults to none) def self.reminders(options={}) days = options[:days] || 7 project = options[:project] ? Project.find(options[:project]) : nil tracker = options[:tracker] ? Tracker.find(options[:tracker]) : nil target_version_id = options[:version] ? Version.named(options[:version]).pluck(:id) : nil if options[:version] && target_version_id.blank? raise ActiveRecord::RecordNotFound.new("Couldn't find Version named #{options[:version]}") end user_ids = options[:users] scope = Issue.open.where( "#{Issue.table_name}.assigned_to_id IS NOT NULL" \ " AND #{Project.table_name}.status = #{Project::STATUS_ACTIVE}" \ " AND #{Issue.table_name}.due_date <= ?", days.day.from_now.to_date ) scope = scope.where(:assigned_to_id => user_ids) if user_ids.present? scope = scope.where(:project_id => project.id) if project scope = scope.where(:fixed_version_id => target_version_id) if target_version_id.present? scope = scope.where(:tracker_id => tracker.id) if tracker issues_by_assignee = scope.includes(:status, :assigned_to, :project, :tracker). group_by(&:assigned_to) issues_by_assignee.keys.each do |assignee| # rubocop:disable Style/HashEachMethods if assignee.is_a?(Group) assignee.users.each do |user| issues_by_assignee[user] ||= [] issues_by_assignee[user] += issues_by_assignee[assignee] end end end issues_by_assignee.each do |assignee, issues| if assignee.is_a?(User) && assignee.active? && issues.present? visible_issues = issues.select {|i| i.visible?(assignee)} visible_issues.sort!{|a, b| (a.due_date <=> b.due_date).nonzero? || (a.id <=> b.id)} reminder(assignee, visible_issues, days).deliver_later if visible_issues.present? end end end # Activates/desactivates email deliveries during +block+ def self.with_deliveries(enabled = true, &) was_enabled = ActionMailer::Base.perform_deliveries ActionMailer::Base.perform_deliveries = !!enabled yield ensure ActionMailer::Base.perform_deliveries = was_enabled end # Execute the given block with inline sending of emails if the default Async # queue is used for the mailer. See the Rails guide: # Using the asynchronous queue from a Rake task will generally not work because # Rake will likely end, causing the in-process thread pool to be deleted, before # any/all of the .deliver_later emails are processed def self.with_synched_deliveries(&) adapter = ActionMailer::MailDeliveryJob.queue_adapter ActionMailer::MailDeliveryJob.queue_adapter = ActiveJob::QueueAdapters::InlineAdapter.new yield ensure ActionMailer::MailDeliveryJob.queue_adapter = adapter end def mail(headers={}, &block) begin # Add a display name to the From field if Setting.mail_from does not # include it mail_from = Mail::Address.new(Setting.mail_from) if mail_from.display_name.blank? && mail_from.comments.blank? mail_from.display_name = @author&.logged? ? @author.name : Setting.app_title end from = mail_from.format # Construct the value of the List-Id header field from_addr = mail_from.address.to_s project_identifier = self.headers['X-Redmine-Project']&.value list_id = if project_identifier.present? "<#{project_identifier}.#{from_addr.tr('@', '.')}>" else # Emails outside of a project context "<#{from_addr.tr('@', '.')}>" end rescue Mail::Field::IncompleteParseError # Use Setting.mail_from as it is if Mail::Address cannot parse it # (probably the emission address is not RFC compliant) from = Setting.mail_from.to_s list_id = "<#{from.tr('@', '.')}>" end headers.reverse_merge! 'X-Mailer' => 'Redmine', 'X-Redmine-Host' => Setting.host_name, 'X-Redmine-Site' => Setting.app_title, 'X-Auto-Response-Suppress' => 'All', 'Auto-Submitted' => 'auto-generated', 'From' => from, 'List-Id' => list_id # Replaces users with their email addresses [:to, :cc, :bcc].each do |key| if headers[key].present? headers[key] = self.class.email_addresses(headers[key]) end end # Removes the author from the recipients and cc # if the author does not want to receive notifications # about what the author do if @author&.logged? && @author.pref.no_self_notified addresses = @author.mails headers[:to] -= addresses if headers[:to].is_a?(Array) headers[:cc] -= addresses if headers[:cc].is_a?(Array) end if @author&.logged? redmine_headers 'Sender' => @author.login end if @message_id_object headers[:message_id] = "<#{self.class.message_id_for(@message_id_object, @user)}>" end if @references_objects headers[:references] = @references_objects.collect {|o| "<#{self.class.references_for(o, @user)}>"}.join(' ') end if block super else super(headers) do |format| format.text format.html unless Setting.plain_text_mail? end end end def self.deliver_mail(mail) return false if mail.to.blank? && mail.cc.blank? && mail.bcc.blank? begin # Log errors when raise_delivery_errors is set to false, Rails does not mail.raise_delivery_errors = true super rescue => e if ActionMailer::Base.raise_delivery_errors raise e else Rails.logger.error "Email delivery error: #{e.message}" end end end # Returns an array of email addresses to notify by # replacing users in arg with their notified email addresses # # Example: # Mailer.email_addresses(users) # => ["foo@example.net", "bar@example.net"] def self.email_addresses(arg) arr = Array.wrap(arg) mails = arr.reject {|a| a.is_a? Principal} users = arr - mails if users.any? mails += EmailAddress. where(:user_id => users.map(&:id)). where("is_default = ? OR notify = ?", true, true). pluck(:address) end mails end private # Appends a Redmine header field (name is prepended with 'X-Redmine-') def redmine_headers(h) h.compact.each {|k, v| headers["X-Redmine-#{k}"] = v.to_s} end def assignee_for_header(issue) case issue.assigned_to when User issue.assigned_to.login when Group "Group (#{issue.assigned_to.name})" end end # Singleton class method is public class << self def token_for(object, user) timestamp = object.send(object.respond_to?(:created_on) ? :created_on : :updated_on) hash = [ "redmine", "#{object.class.name.demodulize.underscore}-#{object.id}", timestamp.utc.strftime("%Y%m%d%H%M%S") ] hash << user.id if user host = Setting.mail_from.to_s.strip.gsub(%r{^.*@|>}, '') host = "#{::Socket.gethostname}.redmine" if host.empty? "#{hash.join('.')}@#{host}" end # Returns a Message-Id for the given object def message_id_for(object, user) token_for(object, user) end # Returns a uniq token for a given object referenced by all notifications # related to this object def references_for(object, user) token_for(object, user) end end def message_id(object) @message_id_object = object end def references(object) @references_objects ||= [] @references_objects << object end end redmine-6.0.5/app/models/member.rb000066400000000000000000000152731500112024600170030ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Member < ApplicationRecord belongs_to :user belongs_to :principal, :foreign_key => 'user_id' has_many :member_roles, :dependent => :destroy has_many :roles, lambda {distinct}, :through => :member_roles belongs_to :project validates_presence_of :principal, :project validates_uniqueness_of :user_id, :scope => :project_id, :case_sensitive => true validate :validate_role before_destroy :set_issue_category_nil, :remove_from_project_default_assigned_to scope :active, (lambda do joins(:principal).where(:users => {:status => Principal::STATUS_ACTIVE}) end) # Sort by first role and principal scope :sorted, (lambda do includes(:member_roles, :roles, :principal). reorder("#{Role.table_name}.position"). order(Principal.fields_for_order_statement) end) scope :sorted_by_project, (lambda do includes(:project). reorder("#{Project.table_name}.lft") end) alias :base_reload :reload def reload(*args) @managed_roles = nil base_reload(*args) end def role end def role= end def name self.user.name end alias :base_role_ids= :role_ids= def role_ids=(arg) ids = (arg || []).collect(&:to_i) - [0] # Keep inherited roles ids |= member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id) new_role_ids = ids - role_ids # Add new roles new_role_ids.each do |id| member_roles << MemberRole.new(:role_id => id, :member => self) end # Remove roles (Rails' #role_ids= will not trigger MemberRole#on_destroy) member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)} if member_roles_to_destroy.any? member_roles_to_destroy.each(&:destroy) end member_roles.reload super(ids) end def <=>(member) return nil unless member.is_a?(Member) a, b = roles.sort, member.roles.sort if a == b if principal principal <=> member.principal else 1 end elsif a.any? b.any? ? a <=> b : -1 else 1 end end # Set member role ids ignoring any change to roles that # user is not allowed to manage def set_editable_role_ids(ids, user=User.current) ids = (ids || []).collect(&:to_i) - [0] editable_role_ids = user.managed_roles(project).map(&:id) untouched_role_ids = self.role_ids - editable_role_ids touched_role_ids = ids & editable_role_ids self.role_ids = untouched_role_ids + touched_role_ids end # Returns true if one of the member roles is inherited def any_inherited_role? member_roles.any? {|mr| mr.inherited_from} end # Returns true if the member has the role and if it's inherited def has_inherited_role?(role) member_roles.any? {|mr| mr.role_id == role.id && mr.inherited_from.present?} end # Returns an Array of Project and/or Group from which the given role # was inherited, or an empty Array if the role was not inherited def role_inheritance(role) member_roles. select {|mr| mr.role_id == role.id && mr.inherited_from.present?}. filter_map {|mr| mr.inherited_from_member_role.try(:member)}. map {|m| m.project == project ? m.principal : m.project} end # Returns true if the member's role is editable by user def role_editable?(role, user=User.current) if has_inherited_role?(role) false else user.managed_roles(project).include?(role) end end # Returns true if the member is deletable by user def deletable?(user=User.current) if any_inherited_role? false else roles & user.managed_roles(project) == roles end end # Destroys the member def destroy member_roles.reload.each(&:destroy_without_member_removal) super end # Returns true if the member is user or is a group # that includes user def include?(user) if principal.is_a?(Group) !user.nil? && user.groups.include?(principal) else self.principal == user end end def set_issue_category_nil if user_id && project_id # remove category based auto assignments for this member IssueCategory.where(["project_id = ? AND assigned_to_id = ?", project_id, user_id]). update_all("assigned_to_id = NULL") end end def remove_from_project_default_assigned_to if user_id && project && project.default_assigned_to_id == user_id # remove project based auto assignments for this member project.update_column(:default_assigned_to_id, nil) end end # Returns the roles that the member is allowed to manage # in the project the member belongs to def managed_roles @managed_roles ||= begin if principal.try(:admin?) Role.givable.to_a else members_management_roles = roles.select do |role| role.has_permission?(:manage_members) end if members_management_roles.empty? [] elsif members_management_roles.any?(&:all_roles_managed?) Role.givable.to_a else members_management_roles.map(&:managed_roles).reduce(&:|) end end end end # Creates memberships for principal with the attributes, or add the roles # if the membership already exists. # * project_ids : one or more project ids # * role_ids : ids of the roles to give to each membership # # Example: # Member.create_principal_memberships(user, :project_ids => [2, 5], :role_ids => [1, 3] def self.create_principal_memberships(principal, attributes) members = [] if attributes project_ids = Array.wrap(attributes[:project_ids] || attributes[:project_id]) role_ids = Array.wrap(attributes[:role_ids]) project_ids.each do |project_id| member = Member.find_or_initialize_by(:project_id => project_id, :user_id => principal.id) member.role_ids |= role_ids member.save members << member end end members end protected def validate_role errors.add(:role, :empty) if member_roles.empty? && roles.empty? end end redmine-6.0.5/app/models/member_role.rb000066400000000000000000000050421500112024600200150ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class MemberRole < ApplicationRecord belongs_to :member belongs_to :role after_create :add_role_to_group_users, :add_role_to_subprojects after_destroy :remove_member_if_empty after_destroy :remove_inherited_roles validates_presence_of :role validate :validate_role_member def validate_role_member errors.add :role_id, :invalid unless role&.member? end def inherited? !inherited_from.nil? end # Returns the MemberRole from which self was inherited, or nil def inherited_from_member_role MemberRole.find_by_id(inherited_from) if inherited_from end # Destroys the MemberRole without destroying its Member if it doesn't have # any other roles def destroy_without_member_removal @member_removal = false destroy end private def remove_member_if_empty if @member_removal != false && member.roles.reload.empty? member.destroy end end def add_role_to_group_users return if inherited? || !member.principal.is_a?(Group) member.principal.users.ids.each do |user_id| user_member = Member.find_or_initialize_by(:project_id => member.project_id, :user_id => user_id) user_member.member_roles << MemberRole.new(:role_id => role_id, :inherited_from => id) user_member.save! end end def add_role_to_subprojects return if member.project.leaf? member.project.children.where(:inherit_members => true).ids.each do |subproject_id| child_member = Member.find_or_initialize_by(:project_id => subproject_id, :user_id => member.user_id) child_member.member_roles << MemberRole.new(:role => role, :inherited_from => id) child_member.save! end end def remove_inherited_roles MemberRole.where(:inherited_from => id).destroy_all end end redmine-6.0.5/app/models/message.rb000066400000000000000000000103011500112024600171430ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Message < ApplicationRecord include Redmine::SafeAttributes belongs_to :board belongs_to :author, :class_name => 'User' acts_as_tree :counter_cache => :replies_count, :order => "#{Message.table_name}.created_on ASC" acts_as_attachable belongs_to :last_reply, :class_name => 'Message' acts_as_searchable :columns => ['subject', 'content'], :preload => {:board => :project}, :project_key => "#{Board.table_name}.project_id" acts_as_event( :title => Proc.new {|o| "#{o.board.name}: #{o.subject}"}, :description => :content, :group => :parent, :type => Proc.new {|o| o.parent_id.nil? ? 'message' : 'reply'}, :url => Proc.new do |o| {:controller => 'messages', :action => 'show', :board_id => o.board_id}. merge( if o.parent_id.nil? {:id => o.id} else {:id => o.parent_id, :r => o.id, :anchor => "message-#{o.id}"} end ) end ) acts_as_activity_provider :scope => proc {preload({:board => :project}, :author)}, :author_key => :author_id acts_as_watchable validates_presence_of :board, :subject, :content validates_length_of :subject, :maximum => 255 validate :cannot_reply_to_locked_topic, :on => :create after_create :add_author_as_watcher, :reset_counters! after_update :update_messages_board after_destroy :reset_counters! after_create_commit :send_notification scope :visible, (lambda do |*args| joins(:board => :project). where(Project.allowed_to_condition(args.shift || User.current, :view_messages, *args)) end) safe_attributes 'subject', 'content' safe_attributes( 'locked', 'sticky', 'board_id', :if => lambda do |message, user| user.allowed_to?(:edit_messages, message.project) end ) def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end def cannot_reply_to_locked_topic # Can not reply to a locked topic errors.add :base, 'Topic is locked' if root.locked? && self != root end def update_messages_board if saved_change_to_board_id? Message.where(["id = ? OR parent_id = ?", root.id, root.id]).update_all({:board_id => board_id}) Board.reset_counters!(board_id_before_last_save) Board.reset_counters!(board_id) end end def reset_counters! if parent && parent.id Message.where({:id => parent.id}).update_all({:last_reply_id => parent.children.maximum(:id)}) end board.reset_counters! end def sticky=(arg) write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0) end def sticky? sticky == 1 end def project board.project end def editable_by?(usr) usr && usr.logged? && (usr.allowed_to?(:edit_messages, project) || (self.author == usr && usr.allowed_to?(:edit_own_messages, project))) end def destroyable_by?(usr) usr && usr.logged? && (usr.allowed_to?(:delete_messages, project) || (self.author == usr && usr.allowed_to?(:delete_own_messages, project))) end def notified_users project.notified_users.reject {|user| !visible?(user)} end private def add_author_as_watcher Watcher.create(:watchable => self.root, :user => author) end def send_notification if Setting.notified_events.include?('message_posted') Mailer.deliver_message_posted(self) end end end redmine-6.0.5/app/models/news.rb000066400000000000000000000064101500112024600165010ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class News < ApplicationRecord include Redmine::SafeAttributes belongs_to :project belongs_to :author, :class_name => 'User' has_many :comments, lambda {order("created_on")}, :as => :commented, :dependent => :delete_all validates_presence_of :title, :description validates_length_of :title, :maximum => 60 validates_length_of :summary, :maximum => 255 acts_as_attachable :edit_permission => :manage_news, :delete_permission => :manage_news acts_as_searchable :columns => ['title', 'summary', "#{table_name}.description"], :preload => :project acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} acts_as_activity_provider :scope => proc {preload(:project, :author)}, :author_key => :author_id acts_as_watchable after_create :add_author_as_watcher after_create_commit :send_notification scope :visible, (lambda do |*args| joins(:project). where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args)) end) safe_attributes 'title', 'summary', 'description' def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_news, project) end # Returns true if the news can be commented by user def commentable?(user=User.current) user.allowed_to?(:comment_news, project) end def notified_users project.users.select {|user| user.notify_about?(self) && user.allowed_to?(:view_news, project)} end def recipients notified_users.map(&:mail) end # Returns the users that should be cc'd when a new news is added def notified_watchers_for_added_news watchers = [] if m = project.enabled_module('news') watchers = m.notified_watchers unless project.is_public? watchers = watchers.select {|user| project.users.include?(user)} end end watchers end # Returns the email addresses that should be cc'd when a new news is added def cc_for_added_news notified_watchers_for_added_news.map(&:mail) end # returns latest news for projects visible by user def self.latest(user = User.current, count = 5) visible(user).preload(:author, :project).order("#{News.table_name}.created_on DESC").limit(count).to_a end private def add_author_as_watcher Watcher.create(:watchable => self, :user => author) end def send_notification if Setting.notified_events.include?('news_added') Mailer.deliver_news_added(self) end end end redmine-6.0.5/app/models/principal.rb000066400000000000000000000155631500112024600175170ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Principal < ApplicationRecord self.table_name = "#{table_name_prefix}users#{table_name_suffix}" # Account statuses STATUS_ANONYMOUS = 0 STATUS_ACTIVE = 1 STATUS_REGISTERED = 2 STATUS_LOCKED = 3 class_attribute :valid_statuses has_many :members, :foreign_key => 'user_id', :dependent => :destroy has_many :memberships, lambda {joins(:project).where.not(:projects => {:status => Project::STATUS_ARCHIVED})}, :class_name => 'Member', :foreign_key => 'user_id' has_many :projects, :through => :memberships has_many :issue_categories, :foreign_key => 'assigned_to_id', :dependent => :nullify validate :validate_status # Groups and active users scope :active, lambda {where(:status => STATUS_ACTIVE)} scope :visible, (lambda do |*args| user = args.first || User.current if user.admin? all else view_all_active = false if user.memberships.any? view_all_active = User.where(id: user.id).joins(memberships: :roles).where("#{Role.table_name}.users_visibility = ?", 'all').any? else view_all_active = user.builtin_role.users_visibility == 'all' end if view_all_active active else # self and members of visible projects active.where( "#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id FROM #{Member.table_name} WHERE project_id IN (?))", user.id, user.visible_project_ids ) end end end) scope :like, (lambda do |q| q = q.to_s if q.blank? where({}) else pattern = "%#{sanitize_sql_like q}%" sql = "LOWER(#{table_name}.login) LIKE LOWER(:p) ESCAPE :s" sql << " OR #{table_name}.id IN (SELECT user_id FROM #{EmailAddress.table_name} WHERE LOWER(address) LIKE LOWER(:p) ESCAPE :s)" params = {:p => pattern, :s => '\\'} tokens = q.split(/\s+/).reject(&:blank?).map {|token| "%#{sanitize_sql_like token}%"} if tokens.present? sql << ' OR (' sql << tokens.map.with_index do |token, index| params[:"token_#{index}"] = token "(LOWER(#{table_name}.firstname) LIKE LOWER(:token_#{index}) ESCAPE :s OR LOWER(#{table_name}.lastname) LIKE LOWER(:token_#{index}) ESCAPE :s)" end.join(' AND ') sql << ')' end where(sql, params) end end) # Principals that are members of a collection of projects scope :member_of, (lambda do |projects| projects = [projects] if projects.is_a?(Project) if projects.blank? where("1=0") else ids = projects.map(&:id) # include active and locked users where(:status => [STATUS_LOCKED, STATUS_ACTIVE]). where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids) end end) # Principals that are not members of projects scope :not_member_of, (lambda do |projects| projects = [projects] if projects.is_a?(Project) if projects.blank? where("1=0") else ids = projects.map(&:id) where("#{Principal.table_name}.id NOT IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids) end end) scope :sorted, lambda {order(*Principal.fields_for_order_statement)} # Principals that can be added as watchers scope :assignable_watchers, lambda {active.visible.where(:type => ['User', 'Group'])} before_create :set_default_empty_values before_destroy :nullify_projects_default_assigned_to def reload(*args) @project_ids = nil super end def name(formatter = nil) to_s end def mail=(*args) nil end def mail nil end def active? self.status == STATUS_ACTIVE end def visible?(user=User.current) Principal.visible(user).find_by(:id => id) == self end # Returns true if the principal is a member of project def member_of?(project) project.is_a?(Project) && project_ids.include?(project.id) end # Returns an array of the project ids that the principal is a member of def project_ids @project_ids ||= super.freeze end def <=>(principal) # avoid an error when sorting members without roles (#10053) return -1 if principal.nil? return nil unless principal.is_a?(Principal) if self.instance_of?(principal.class) self.to_s.casecmp(principal.to_s) else # groups after users principal.class.name <=> self.class.name end end # Returns an array of fields names than can be used to make an order statement for principals. # Users are sorted before Groups. # Examples: def self.fields_for_order_statement(table=nil) table ||= table_name columns = ['type DESC'] + (User.name_formatter[:order] - ['id']) + ['lastname', 'id'] columns.uniq.map {|field| "#{table}.#{field}"} end # Returns the principal that matches the keyword among principals def self.detect_by_keyword(principals, keyword) keyword = keyword.to_s return nil if keyword.blank? principal = nil principal ||= principals.detect {|a| keyword.casecmp(a.login.to_s) == 0} principal ||= principals.detect {|a| keyword.casecmp(a.mail.to_s) == 0} if principal.nil? && keyword.include?(' ') firstname, lastname = *(keyword.split) # "First Last Throwaway" principal ||= principals.detect do |a| a.is_a?(User) && firstname.casecmp(a.firstname.to_s) == 0 && lastname.casecmp(a.lastname.to_s) == 0 end end if principal.nil? principal ||= principals.detect {|a| keyword.casecmp(a.name) == 0} end principal end def nullify_projects_default_assigned_to Project.where(default_assigned_to: self).update_all(default_assigned_to_id: nil) end protected # Make sure we don't try to insert NULL values (see #4632) def set_default_empty_values self.login ||= '' self.hashed_password ||= '' self.firstname ||= '' self.lastname ||= '' true end def validate_status if status_changed? && self.class.valid_statuses.present? unless self.class.valid_statuses.include?(status) errors.add :status, :invalid end end end end redmine-6.0.5/app/models/project.rb000066400000000000000000001305151500112024600171770ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Project < ApplicationRecord include Redmine::SafeAttributes include Redmine::NestedSet::ProjectNestedSet # Project statuses STATUS_ACTIVE = 1 STATUS_CLOSED = 5 STATUS_ARCHIVED = 9 STATUS_SCHEDULED_FOR_DELETION = 10 # Maximum length for project identifiers IDENTIFIER_MAX_LENGTH = 100 has_many :memberships, :class_name => 'Member', :inverse_of => :project # Memberships of active users only has_many :members, lambda {joins(:principal).where(:users => {:type => 'User', :status => Principal::STATUS_ACTIVE})} has_many :users, through: :members has_many :enabled_modules, :dependent => :delete_all has_and_belongs_to_many :trackers, lambda {order(:position)} has_many :issues, :dependent => :destroy has_many :issue_changes, :through => :issues, :source => :journals has_many :versions, :dependent => :destroy belongs_to :default_version, :class_name => 'Version' belongs_to :default_assigned_to, :class_name => 'Principal' has_many :time_entries, :dependent => :destroy # Specific overridden Activities has_many :time_entry_activities, :dependent => :destroy has_many :queries, :dependent => :destroy has_many :documents, :dependent => :destroy has_many :news, lambda {includes(:author)}, :dependent => :destroy has_many :issue_categories, lambda {order(:name)}, :dependent => :delete_all has_many :boards, lambda {order(:position)}, :inverse_of => :project, :dependent => :destroy has_one :repository, lambda {where(:is_default => true)} has_many :repositories, :dependent => :destroy has_many :changesets, :through => :repository has_one :wiki, :dependent => :destroy # Custom field for the project issues has_and_belongs_to_many :issue_custom_fields, lambda {order(:position)}, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id' # Default Custom Query belongs_to :default_issue_query, :class_name => 'IssueQuery' acts_as_attachable :view_permission => :view_files, :edit_permission => :manage_files, :delete_permission => :manage_files acts_as_customizable acts_as_searchable :columns => ['name', 'identifier', 'description'], :project_key => "#{Project.table_name}.id", :permission => nil acts_as_event :title => proc {|o| "#{l(:label_project)}: #{o.name}"}, :url => proc {|o| {:controller => 'projects', :action => 'show', :id => o}}, :author => nil validates_presence_of :name, :identifier validates_uniqueness_of :identifier, :if => proc {|p| p.identifier_changed?}, :case_sensitive => true validates_length_of :name, :maximum => 255 validates_length_of :homepage, :maximum => 255 validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH # downcase letters, digits, dashes but not digits only validates_format_of :identifier, :with => /\A(?!\d+$)[a-z0-9\-_]*\z/, :if => proc {|p| p.identifier_changed?} # reserved words validates_exclusion_of :identifier, :in => %w(new) validate :validate_parent after_update :update_versions_from_hierarchy_change, :if => proc {|project| project.saved_change_to_parent_id?} before_destroy :delete_all_members after_save :update_inherited_members, :if => proc {|project| project.saved_change_to_inherit_members?} after_save :remove_inherited_member_roles, :add_inherited_member_roles, :if => proc {|project| project.saved_change_to_parent_id?} scope :has_module, (lambda do |mod| where("#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s) end) scope :active, lambda {where(:status => STATUS_ACTIVE)} scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i})} scope :all_public, lambda {where(:is_public => true)} scope :visible, lambda {|*args| where(Project.visible_condition(args.shift || User.current, *args))} scope :allowed_to, (lambda do |*args| user = args.first.is_a?(Symbol) ? User.current : args.shift permission = args.shift where(Project.allowed_to_condition(user, permission, *args)) end) scope :like, (lambda do |arg| if arg.present? pattern = "%#{sanitize_sql_like arg.to_s.strip}%" where("LOWER(#{Project.table_name}.identifier) LIKE LOWER(:p) ESCAPE :s OR LOWER(#{Project.table_name}.name) LIKE LOWER(:p) ESCAPE :s", :p => pattern, :s => '\\') end end) scope :sorted, lambda {order(:lft)} scope :having_trackers, (lambda do where("#{Project.table_name}.id IN (SELECT DISTINCT project_id FROM #{table_name_prefix}projects_trackers#{table_name_suffix})") end) def initialize(attributes=nil, *args) super # rubocop:disable Style/NegatedIf initialized = (attributes || {}).stringify_keys if !initialized.key?('identifier') && Setting.sequential_project_identifiers? self.identifier = Project.next_identifier end if !initialized.key?('is_public') self.is_public = Setting.default_projects_public? end if !initialized.key?('enabled_module_names') self.enabled_module_names = Setting.default_projects_modules end if !initialized.key?('trackers') && !initialized.key?('tracker_ids') default = Setting.default_projects_tracker_ids if default.is_a?(Array) self.trackers = Tracker.where(:id => default.map(&:to_i)).sorted.to_a else self.trackers = Tracker.sorted.to_a end end # rubocop:enable Style/NegatedIf end def identifier=(identifier) super unless identifier_frozen? end def identifier_frozen? errors[:identifier].blank? && !(new_record? || identifier.blank?) end # returns latest created projects # non public projects will be returned only if user is a member of those def self.latest(user=nil, count=5) visible(user).limit(count). order(:created_on => :desc). where("#{table_name}.created_on >= ?", 30.days.ago). to_a end # Returns true if the project is visible to +user+ or to the current user. def visible?(user=User.current) user.allowed_to?(:view_project, self) end # Returns a SQL conditions string used to find all projects visible by the specified user. # # Examples: # Project.visible_condition(admin) => "projects.status = 1" # Project.visible_condition(normal_user) => "((projects.status = 1) AND (projects.is_public = 1 OR projects.id IN (1,3,4)))" # Project.visible_condition(anonymous) => "((projects.status = 1) AND (projects.is_public = 1))" def self.visible_condition(user, options={}) allowed_to_condition(user, :view_project, options) end # Returns a SQL conditions string used to find all projects for which +user+ has the given +permission+ # # Valid options: # * :skip_pre_condition => true don't check that the module is enabled (eg. when the condition is already set elsewhere in the query) # * :project => project limit the condition to project # * :with_subprojects => true limit the condition to project and its subprojects # * :member => true limit the condition to the user projects def self.allowed_to_condition(user, permission, options={}) perm = Redmine::AccessControl.permission(permission) base_statement = if perm && perm.read? "#{Project.table_name}.status <> #{Project::STATUS_ARCHIVED} AND #{Project.table_name}.status <> #{Project::STATUS_SCHEDULED_FOR_DELETION}" else "#{Project.table_name}.status = #{Project::STATUS_ACTIVE}" end if !options[:skip_pre_condition] && perm && perm.project_module # If the permission belongs to a project module, make sure the module is enabled base_statement += " AND EXISTS (SELECT 1 AS one FROM #{EnabledModule.table_name} em" \ " WHERE em.project_id = #{Project.table_name}.id" \ " AND em.name='#{perm.project_module}')" end if project = options[:project] project_statement = project.project_condition(options[:with_subprojects]) base_statement = "(#{project_statement}) AND (#{base_statement})" end if user.admin? base_statement else statement_by_role = {} unless options[:member] role = user.builtin_role if role.allowed_to?(permission) s = "#{Project.table_name}.is_public = #{connection.quoted_true}" if user.id group = role.anonymous? ? Group.anonymous : Group.non_member principal_ids = [user.id, group.id].compact s = "(#{s} AND #{Project.table_name}.id NOT IN " \ "(SELECT project_id FROM #{Member.table_name} " \ "WHERE user_id IN (#{principal_ids.join(',')})))" end statement_by_role[role] = s end end user.project_ids_by_role.each do |role, project_ids| if role.allowed_to?(permission) && project_ids.any? statement_by_role[role] = "#{Project.table_name}.id IN (#{project_ids.join(',')})" end end if statement_by_role.empty? "1=0" else if block_given? statement_by_role.each do |role, statement| if s = yield(role, user) statement_by_role[role] = "(#{statement} AND (#{s}))" end end end "((#{base_statement}) AND (#{statement_by_role.values.join(' OR ')}))" end end end def override_roles(role) @override_members ||= memberships. joins(:principal). where(:users => {:type => ['GroupAnonymous', 'GroupNonMember']}).to_a group_class = role.anonymous? ? GroupAnonymous : GroupNonMember member = @override_members.detect {|m| m.principal.is_a? group_class} member ? member.roles.to_a : [role] end def principals @principals ||= Principal.active.joins(:members).where("#{Member.table_name}.project_id = ?", id).distinct end def users @users ||= User.active.joins(:members).where("#{Member.table_name}.project_id = ?", id).distinct end # Returns the Systemwide and project specific activities def activities(include_inactive=false) t = TimeEntryActivity.table_name scope = TimeEntryActivity.where("#{t}.project_id IS NULL OR #{t}.project_id = ?", id) overridden_activity_ids = self.time_entry_activities.pluck(:parent_id).compact if overridden_activity_ids.any? scope = scope.where("#{t}.id NOT IN (?)", overridden_activity_ids) end unless include_inactive scope = scope.active end scope end # Creates or updates project time entry activities def update_or_create_time_entry_activities(activities) transaction do activities.each do |id, activity| update_or_create_time_entry_activity(id, activity) end end end # Will create a new Project specific Activity or update an existing one # # This will raise a ActiveRecord::Rollback if the TimeEntryActivity # does not successfully save. def update_or_create_time_entry_activity(id, activity_hash) if activity_hash.respond_to?(:has_key?) && activity_hash.has_key?('parent_id') self.create_time_entry_activity_if_needed(activity_hash) else activity = project.time_entry_activities.find_by_id(id.to_i) activity.update(activity_hash) if activity end end # Create a new TimeEntryActivity if it overrides a system TimeEntryActivity # # This will raise a ActiveRecord::Rollback if the TimeEntryActivity # does not successfully save. def create_time_entry_activity_if_needed(activity) if activity['parent_id'] parent_activity = TimeEntryActivity.find(activity['parent_id']) activity['name'] = parent_activity.name activity['position'] = parent_activity.position if Enumeration.overriding_change?(activity, parent_activity) project_activity = self.time_entry_activities.create(activity) if project_activity.new_record? raise ActiveRecord::Rollback, "Overriding TimeEntryActivity was not successfully saved" else self.time_entries. where(:activity_id => parent_activity.id). update_all(:activity_id => project_activity.id) end end end end # returns the time log activity to be used when logging time via a changeset def commit_logtime_activity activity_id = Setting.commit_logtime_activity_id.to_i if activity_id > 0 activities .find_by('id = ? OR parent_id = ?', activity_id, activity_id) end end # Returns a :conditions SQL string that can be used to find the issues associated with this project. # # Examples: # project.project_condition(true) => "(projects.lft >= 1 AND projects.rgt <= 10)" # project.project_condition(false) => "projects.id = 1" def project_condition(with_subprojects) if with_subprojects "(" \ "#{Project.table_name}.lft >= #{lft} AND " \ "#{Project.table_name}.rgt <= #{rgt}" \ ")" else "#{Project.table_name}.id = #{id}" end end def self.find(*args) if args.first && args.first.is_a?(String) && !/^\d*$/.match?(args.first) project = find_by_identifier(*args) if project.nil? raise ActiveRecord::RecordNotFound, "Couldn't find Project with identifier=#{args.first}" end project else super end end def self.find_by_param(*args) self.find(*args) end alias :base_reload :reload def reload(*args) @principals = nil @users = nil @shared_versions = nil @rolled_up_versions = nil @rolled_up_trackers = nil @rolled_up_statuses = nil @rolled_up_custom_fields = nil @all_issue_custom_fields = nil @all_time_entry_custom_fields = nil @to_param = nil @allowed_parents = nil @allowed_permissions = nil @actions_allowed = nil @start_date = nil @due_date = nil @override_members = nil @assignable_users = nil @last_activity_date = nil base_reload(*args) end def to_param if new_record? nil else # id is used for projects with a numeric identifier (compatibility) @to_param ||= (%r{^\d*$}.match?(identifier.to_s) ? id.to_s : identifier) end end def active? self.status == STATUS_ACTIVE end def closed? self.status == STATUS_CLOSED end def archived? self.status == STATUS_ARCHIVED end def scheduled_for_deletion? self.status == STATUS_SCHEDULED_FOR_DELETION end # Archives the project and its descendants def archive # Check that there is no issue of a non descendant project that is assigned # to one of the project or descendant versions version_ids = self_and_descendants.joins(:versions).pluck("#{Version.table_name}.id") if version_ids.any? && Issue. joins(:project). where("#{Project.table_name}.lft < ? OR #{Project.table_name}.rgt > ?", lft, rgt). where(:fixed_version_id => version_ids). exists? return false end Project.transaction do archive! end true end # Unarchives the project and its archived ancestors def unarchive new_status = ancestors.any?(&:closed?) ? STATUS_CLOSED : STATUS_ACTIVE self_and_ancestors.status(STATUS_ARCHIVED).update_all :status => new_status reload end def close self_and_descendants.status(STATUS_ACTIVE).update_all :status => STATUS_CLOSED end def reopen self_and_descendants.status(STATUS_CLOSED).update_all :status => STATUS_ACTIVE end # Returns an array of projects the project can be moved to # by the current user def allowed_parents(user=User.current) return @allowed_parents if @allowed_parents @allowed_parents = Project.allowed_to(user, :add_subprojects).to_a @allowed_parents = @allowed_parents - self_and_descendants if user.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?) @allowed_parents << nil end unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent) @allowed_parents << parent end @allowed_parents end # Sets the parent of the project and saves the project # Argument can be either a Project, a String, a Fixnum or nil def set_parent!(p) if p.is_a?(Project) self.parent = p else self.parent_id = p end save end # Returns a scope of the trackers used by the project and its active sub projects def rolled_up_trackers(include_subprojects=true) if include_subprojects @rolled_up_trackers ||= rolled_up_trackers_base_scope. where("#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ?", lft, rgt) else rolled_up_trackers_base_scope. where(:projects => {:id => id}) end end def rolled_up_trackers_base_scope Tracker. joins(projects: :enabled_modules). where("#{Project.table_name}.status <> ?", STATUS_ARCHIVED). where(:enabled_modules => {:name => 'issue_tracking'}). distinct. sorted end def rolled_up_statuses issue_status_ids = WorkflowTransition. where(:tracker_id => rolled_up_trackers.map(&:id)). where('old_status_id <> new_status_id'). distinct. pluck(:old_status_id, :new_status_id). flatten. uniq IssueStatus.where(:id => issue_status_ids).sorted end # Closes open and locked project versions that are completed def close_completed_versions Version.transaction do versions.where(:status => %w(open locked)).each do |version| if version.completed? version.update_attribute(:status, 'closed') end end end end # Returns a scope of the Versions on subprojects def rolled_up_versions @rolled_up_versions ||= Version. joins(:project). where( "#{Project.table_name}.lft >= ? AND #{Project.table_name}.rgt <= ?" \ " AND #{Project.table_name}.status <> ?", lft, rgt, STATUS_ARCHIVED ) end # Returns a scope of the Versions used by the project def shared_versions if new_record? Version. joins(:project). preload(:project). where("#{Project.table_name}.status <> ? AND #{Version.table_name}.sharing = 'system'", STATUS_ARCHIVED) else @shared_versions ||= begin r = root? ? self : root Version. joins(:project). preload(:project). where( "#{Project.table_name}.id = #{id}" \ " OR (#{Project.table_name}.status <> #{Project::STATUS_ARCHIVED} AND (" \ " #{Version.table_name}.sharing = 'system'" \ " OR (#{Project.table_name}.lft >= #{r.lft}" \ " AND #{Project.table_name}.rgt <= #{r.rgt}" \ " AND #{Version.table_name}.sharing = 'tree')" \ " OR (#{Project.table_name}.lft < #{lft}" \ " AND #{Project.table_name}.rgt > #{rgt}" \ " AND #{Version.table_name}.sharing IN ('hierarchy', 'descendants'))" \ " OR (#{Project.table_name}.lft > #{lft}" \ " AND #{Project.table_name}.rgt < #{rgt}" \ " AND #{Version.table_name}.sharing = 'hierarchy')" \ "))" ) end end end # Returns a hash of project users/groups grouped by role def principals_by_role memberships.active.includes(:principal, :roles).inject({}) do |h, m| m.roles.each do |r| h[r] ||= [] h[r] << m.principal end h end end # Adds user as a project member with the default role # Used for when a non-admin user creates a project def add_default_member(user) role = self.class.default_member_role member = Member.new(:project => self, :principal => user, :roles => [role]) self.members << member member end # Default role that is given to non-admin users that # create a project def self.default_member_role Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first end # Deletes all project's members def delete_all_members me, mr = Member.table_name, MemberRole.table_name self.class.connection.delete( "DELETE FROM #{mr} WHERE #{mr}.member_id IN (SELECT #{me}.id FROM #{me} " \ "WHERE #{me}.project_id = #{id})" ) Member.where(:project_id => id).delete_all end # Return a Principal scope of users/groups issues can be assigned to def assignable_users(tracker=nil) return @assignable_users[tracker] if @assignable_users && @assignable_users[tracker] types = ['User'] types << 'Group' if Setting.issue_group_assignment? scope = Principal. active. joins(:members => :roles). where(:type => types, :members => {:project_id => id}, :roles => {:assignable => true}). distinct. sorted if tracker # Rejects users that cannot the view the tracker roles = Role.where(:assignable => true).select do |role| role.permissions_tracker?(:view_issues, tracker) end scope = scope.where(:roles => {:id => roles.map(&:id)}) end @assignable_users ||= {} @assignable_users[tracker] = scope end # Returns the mail addresses of users that should be always notified on project events def recipients notified_users.collect {|user| user.mail} end # Returns the users that should be notified on project events def notified_users users.where('members.mail_notification = ? OR users.mail_notification = ?', true, 'all') end # Returns a scope of all custom fields enabled for project issues # (explicitly associated custom fields and custom fields enabled for all projects) def all_issue_custom_fields if new_record? @all_issue_custom_fields ||= IssueCustomField. sorted. where("is_for_all = ? OR id IN (?)", true, issue_custom_field_ids) else @all_issue_custom_fields ||= IssueCustomField. sorted. where("is_for_all = ? OR id IN (SELECT DISTINCT cfp.custom_field_id" + " FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" + " WHERE cfp.project_id = ?)", true, id) end end # Returns a scope of all custom fields enabled for issues of the project # and its subprojects def rolled_up_custom_fields if leaf? all_issue_custom_fields else @rolled_up_custom_fields ||= IssueCustomField. sorted. where("is_for_all = ? OR EXISTS (SELECT 1" + " FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" + " JOIN #{Project.table_name} p ON p.id = cfp.project_id" + " WHERE cfp.custom_field_id = #{CustomField.table_name}.id" + " AND p.lft >= ? AND p.rgt <= ?)", true, lft, rgt) end end def project self end def <=>(project) return nil unless project.is_a?(Project) name.casecmp(project.name) end def to_s name end # Returns a short description of the projects (first lines) def short_description(length = 255) description.gsub(/^(.{#{length}}[^\n\r]*).*$/m, '\1...').strip if description end def css_classes s = +'project' s << ' root' if root? s << ' child' if child? s << (leaf? ? ' leaf' : ' parent') s << ' public' if is_public? unless active? if archived? s << ' archived' else s << ' closed' end end s end # The earliest start date of a project, based on it's issues and versions def start_date @start_date ||= [ issues.minimum('start_date'), shared_versions.minimum('effective_date'), Issue.fixed_version(shared_versions).minimum('start_date') ].compact.min end # The latest due date of an issue or version def due_date @due_date ||= [ issues.maximum('due_date'), shared_versions.maximum('effective_date'), Issue.fixed_version(shared_versions).maximum('due_date') ].compact.max end def overdue? active? && !due_date.nil? && (due_date < User.current.today) end # Returns the percent completed for this project, based on the # progress on it's versions. def completed_percent(options={:include_subprojects => false}) if options.delete(:include_subprojects) total = self_and_descendants.sum(&:completed_percent) total / self_and_descendants.count else if versions.count > 0 total = versions.sum(&:completed_percent) total / versions.count else 100 end end end # Return true if this project allows to do the specified action. # action can be: # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a permission Symbol (eg. :edit_project) def allows_to?(action) if archived? # No action allowed on archived projects return false end unless active? || Redmine::AccessControl.read_action?(action) # No write action allowed on closed projects return false end # No action allowed on disabled modules if action.is_a? Hash allowed_actions.include? "#{action[:controller]}/#{action[:action]}" else allowed_permissions.include? action end end def deletable?(user = User.current) if user.admin? return true else user.allowed_to?(:delete_project, self) && leaf? end end # Return the enabled module with the given name # or nil if the module is not enabled for the project def enabled_module(name) name = name.to_s enabled_modules.detect {|m| m.name == name} end # Return true if the module with the given name is enabled def module_enabled?(name) enabled_module(name).present? end def enabled_module_names=(module_names) if module_names && module_names.is_a?(Array) module_names = module_names.collect(&:to_s).reject(&:blank?) self.enabled_modules = module_names.collect do |name| enabled_modules.detect {|mod| mod.name == name} || EnabledModule.new(:name => name) end else enabled_modules.clear end end # Returns an array of the enabled modules names def enabled_module_names enabled_modules.collect(&:name) end # Enable a specific module # # Examples: # project.enable_module!(:issue_tracking) # project.enable_module!("issue_tracking") def enable_module!(name) enabled_modules << EnabledModule.new(:name => name.to_s) unless module_enabled?(name) end # Disable a module if it exists # # Examples: # project.disable_module!(:issue_tracking) # project.disable_module!("issue_tracking") # project.disable_module!(project.enabled_modules.first) def disable_module!(target) target = enabled_modules.detect{|mod| target.to_s == mod.name} unless enabled_modules.include?(target) target.destroy unless target.blank? end safe_attributes( 'name', 'description', 'homepage', 'identifier', 'custom_field_values', 'custom_fields', 'tracker_ids', 'issue_custom_field_ids', 'parent_id', 'default_version_id', 'default_issue_query_id', 'default_assigned_to_id') safe_attributes( 'is_public', :if => lambda do |project, user| if project.new_record? if user.admin? true else default_member_role&.has_permission?(:select_project_publicity) end else user.allowed_to?(:select_project_publicity, project) end end ) safe_attributes( 'enabled_module_names', :if => lambda do |project, user| if project.new_record? if user.admin? true else default_member_role&.has_permission?(:select_project_modules) end else user.allowed_to?(:select_project_modules, project) end end ) safe_attributes( 'inherit_members', :if => lambda {|project, user| project.parent.nil? || project.parent.visible?(user)}) def safe_attributes=(attrs, user=User.current) if attrs.respond_to?(:to_unsafe_hash) attrs = attrs.to_unsafe_hash end return unless attrs.is_a?(Hash) attrs = attrs.deep_dup @unallowed_parent_id = nil if new_record? || attrs.key?('parent_id') parent_id_param = attrs['parent_id'].to_s if new_record? || parent_id_param != parent_id.to_s p = parent_id_param.present? ? Project.find_by_id(parent_id_param) : nil unless allowed_parents(user).include?(p) attrs.delete('parent_id') @unallowed_parent_id = true end end end # Reject custom fields values not visible by the user if attrs['custom_field_values'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_field_values'].reject! {|k, v| !editable_custom_field_ids.include?(k.to_s)} end # Reject custom fields not visible by the user if attrs['custom_fields'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_fields'].reject! {|c| !editable_custom_field_ids.include?(c['id'].to_s)} end super end # Returns an auto-generated project identifier based on the last identifier used def self.next_identifier p = Project.order('id DESC').first p.nil? ? nil : p.identifier.to_s.succ end # Copies and saves the Project instance based on the +project+. # Duplicates the source project's: # * Wiki # * Versions # * Categories # * Issues # * Members # * Queries # # Accepts an +options+ argument to specify what to copy # # Examples: # project.copy(1) # => copies everything # project.copy(1, :only => 'members') # => copies members only # project.copy(1, :only => ['members', 'versions']) # => copies members and versions def copy(project, options={}) project = Project.find(project) unless project.is_a?(Project) to_be_copied = %w(members wiki versions issue_categories issues queries boards documents) to_be_copied = to_be_copied & Array.wrap(options[:only]) unless options[:only].nil? Project.transaction do if save reload self.attachments = project.attachments.map do |attachment| attachment.copy(:container => self) end to_be_copied.each do |name| send :"copy_#{name}", project end Redmine::Hook.call_hook(:model_project_copy_before_save, :source_project => project, :destination_project => self) save else false end end end # Returns a new unsaved Project instance with attributes copied from +project+ def self.copy_from(project) project = Project.find(project) unless project.is_a?(Project) # clear unique attributes attributes = project.attributes.dup.except('id', 'name', 'identifier', 'status', 'parent_id', 'lft', 'rgt') copy = Project.new(attributes) copy.enabled_module_names = project.enabled_module_names copy.trackers = project.trackers copy.custom_values = project.custom_values.collect {|v| v.clone} copy.issue_custom_fields = project.issue_custom_fields copy end # Yields the given block for each project with its level in the tree def self.project_tree(projects, options={}, &block) ancestors = [] if options[:init_level] && projects.first ancestors = projects.first.ancestors.to_a end projects.sort_by(&:lft).each do |project| while ancestors.any? && !project.is_descendant_of?(ancestors.last) ancestors.pop end yield project, ancestors.size ancestors << project end end # Overrides Redmine::Acts::Customizable::InstanceMethods#validate_custom_field_values # so that custom values that are not editable are not validated (eg. a custom field that # is marked as required should not trigger a validation error if the user is not allowed # to edit this field). def validate_custom_field_values user = User.current if new_record? || custom_field_values_changed? editable_custom_field_values(user).each(&:validate_value) end end # Returns the custom_field_values that can be edited by the given user def editable_custom_field_values(user=nil) visible_custom_field_values(user) end def visible_custom_field_values(user = nil) user ||= User.current custom_field_values.select do |value| value.custom_field.visible_by?(project, user) end end def last_activity_date @last_activity_date || fetch_last_activity_date end # Preloads last activity date for a collection of projects def self.load_last_activity_date(projects, user=User.current) if projects.any? last_activities = Redmine::Activity::Fetcher.new(User.current).events(nil, nil, :last_by_project => true).to_h projects.each do |project| project.instance_variable_set(:@last_activity_date, last_activities[project.id]) end end end private def update_inherited_members if parent if inherit_members? && !inherit_members_before_last_save remove_inherited_member_roles add_inherited_member_roles elsif !inherit_members? && inherit_members_before_last_save remove_inherited_member_roles end end end def remove_inherited_member_roles member_roles = MemberRole.where(:member_id => membership_ids).to_a member_role_ids = member_roles.map(&:id) member_roles.each do |member_role| if member_role.inherited_from && !member_role_ids.include?(member_role.inherited_from) member_role.destroy end end end def add_inherited_member_roles if inherit_members? && parent parent.memberships.each do |parent_member| member = Member.find_or_initialize_by(:project_id => self.id, :user_id => parent_member.user_id) parent_member.member_roles.each do |parent_member_role| member.member_roles << MemberRole.new(:role => parent_member_role.role, :inherited_from => parent_member_role.id) end member.save! end memberships.reset end end def update_versions_from_hierarchy_change Issue.update_versions_from_hierarchy_change(self) end def validate_parent if @unallowed_parent_id errors.add(:parent_id, :invalid) elsif parent_id_changed? unless parent.nil? || (parent.active? && move_possible?(parent)) errors.add(:parent_id, :invalid) end end end # Copies wiki from +project+ def copy_wiki(project) # Check that the source project has a wiki first unless project.wiki.nil? wiki = self.wiki || Wiki.new wiki.attributes = project.wiki.attributes.dup.except("id", "project_id") wiki_pages_map = {} project.wiki.pages.each do |page| # Skip pages without content next if page.content.nil? new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on")) new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id")) new_wiki_page.content = new_wiki_content wiki.pages << new_wiki_page new_wiki_page.attachments = page.attachments.map{|attachement| attachement.copy(:container => new_wiki_page)} wiki_pages_map[page.id] = new_wiki_page end self.wiki = wiki wiki.save # Reproduce page hierarchy project.wiki.pages.each do |page| if page.parent_id && wiki_pages_map[page.id] wiki_pages_map[page.id].parent = wiki_pages_map[page.parent_id] wiki_pages_map[page.id].save end end end end # Copies versions from +project+ def copy_versions(project) project.versions.each do |version| new_version = Version.new new_version.attributes = version.attributes.dup.except("id", "project_id", "created_on", "updated_on") new_version.attachments = version.attachments.map do |attachment| attachment.copy(:container => new_version) end self.versions << new_version end end # Copies issue categories from +project+ def copy_issue_categories(project) project.issue_categories.each do |issue_category| new_issue_category = IssueCategory.new new_issue_category.attributes = issue_category.attributes.dup.except("id", "project_id") self.issue_categories << new_issue_category end end # Copies issues from +project+ def copy_issues(project) # Stores the source issue id as a key and the copied issues as the # value. Used to map the two together for issue relations. issues_map = {} # Store status and reopen locked/closed versions version_statuses = versions.reject(&:open?).map {|version| [version, version.status]} version_statuses.each do |version, _| # rubocop:disable Style/HashEachMethods version.update_attribute :status, 'open' end # Get issues sorted by root_id, lft so that parent issues # get copied before their children project.issues.reorder('root_id, lft').each do |issue| new_issue = Issue.new new_issue.copy_from(issue, :subtasks => false, :link => false, :keep_status => true) new_issue.project = self # Changing project resets the custom field values # TODO: handle this in Issue#project= new_issue.custom_field_values = issue.custom_field_values.inject({}) do |h, v| h[v.custom_field_id] = v.value h end # Reassign fixed_versions by name, since names are unique per project if issue.fixed_version && issue.fixed_version.project == project new_issue.fixed_version = self.versions.detect {|v| v.name == issue.fixed_version.name} end # Reassign version custom field values new_issue.custom_field_values.each do |custom_value| if custom_value.custom_field.field_format == 'version' && custom_value.value.present? versions = Version.where(:id => custom_value.value).to_a new_value = versions.map do |version| if version.project == project self.versions.detect {|v| v.name == version.name}.try(:id) else version.id end end new_value.compact! new_value = new_value.first unless custom_value.custom_field.multiple? custom_value.value = new_value end end # Reassign the category by name, since names are unique per project if issue.category new_issue.category = self.issue_categories.detect {|c| c.name == issue.category.name} end # Parent issue if issue.parent_id if copied_parent = issues_map[issue.parent_id] new_issue.parent_issue_id = copied_parent.id end end self.issues << new_issue if new_issue.new_record? if logger && logger.info? logger.info( "Project#copy_issues: issue ##{issue.id} could not be copied: " \ "#{new_issue.errors.full_messages}" ) end else issues_map[issue.id] = new_issue unless new_issue.new_record? end end # Restore locked/closed version statuses version_statuses.each do |version, status| version.update_attribute :status, status end # Relations after in case issues related each other project.issues.each do |issue| new_issue = issues_map[issue.id] unless new_issue # Issue was not copied next end # Relations issue.relations_from.each do |source_relation| new_issue_relation = IssueRelation.new new_issue_relation.attributes = source_relation.attributes.dup.except("id", "issue_from_id", "issue_to_id") new_issue_relation.issue_to = issues_map[source_relation.issue_to_id] if new_issue_relation.issue_to.nil? && Setting.cross_project_issue_relations? new_issue_relation.issue_to = source_relation.issue_to end new_issue.relations_from << new_issue_relation end issue.relations_to.each do |source_relation| new_issue_relation = IssueRelation.new new_issue_relation.attributes = source_relation.attributes.dup.except("id", "issue_from_id", "issue_to_id") new_issue_relation.issue_from = issues_map[source_relation.issue_from_id] if new_issue_relation.issue_from.nil? && Setting.cross_project_issue_relations? new_issue_relation.issue_from = source_relation.issue_from end new_issue.relations_to << new_issue_relation end end end # Copies members from +project+ def copy_members(project) # Copy users first, then groups to handle members with inherited and given roles members_to_copy = [] members_to_copy += project.memberships.select {|m| m.principal.is_a?(User)} members_to_copy += project.memberships.select {|m| !m.principal.is_a?(User)} members_to_copy.each do |member| new_member = Member.new new_member.attributes = member.attributes.dup.except("id", "project_id", "created_on") # only copy non inherited roles # inherited roles will be added when copying the group membership role_ids = member.member_roles.reject(&:inherited?).collect(&:role_id) next if role_ids.empty? new_member.role_ids = role_ids new_member.project = self self.members << new_member end end # Copies queries from +project+ def copy_queries(project) project.queries.each do |query| new_query = query.class.new new_query.attributes = query.attributes.dup.except("id", "project_id", "sort_criteria", "user_id", "type") new_query.sort_criteria = query.sort_criteria if query.sort_criteria new_query.project = self new_query.user_id = query.user_id new_query.role_ids = query.role_ids if query.visibility == ::Query::VISIBILITY_ROLES self.queries << new_query if query == project.default_issue_query self.default_issue_query = new_query end end end # Copies boards from +project+ def copy_boards(project) project.boards.each do |board| new_board = Board.new new_board.attributes = board.attributes.dup.except("id", "project_id", "topics_count", "messages_count", "last_message_id") new_board.project = self self.boards << new_board end end # Copies documents from +project+ def copy_documents(project) project.documents.each do |document| new_document = Document.new new_document.attributes = document.attributes.dup.except("id", "project_id") new_document.project = self new_document.attachments = document.attachments.map do |attachement| attachement.copy(:container => new_document) end self.documents << new_document end end def allowed_permissions @allowed_permissions ||= begin module_names = if enabled_modules.loaded? enabled_modules.map(&:name) else enabled_modules.pluck(:name) end Redmine::AccessControl.modules_permissions(module_names).collect {|p| p.name} end end def allowed_actions @actions_allowed ||= allowed_permissions.inject([]) do |actions, permission| actions += Redmine::AccessControl.allowed_actions(permission) end.flatten end # Archives subprojects recursively def archive! children.each do |subproject| subproject.send :archive! end update_attribute :status, STATUS_ARCHIVED end def fetch_last_activity_date latest_activities = Redmine::Activity::Fetcher.new(User.current, :project => self).events(nil, nil, :last_by_project => true) latest_activities.empty? ? nil : latest_activities.to_h[self.id] end end redmine-6.0.5/app/models/project_admin_query.rb000066400000000000000000000030641500112024600215720ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectAdminQuery < ProjectQuery self.layout = 'admin' def self.default(project: nil, user: User.current) nil end def self.visible(*args) user = args.shift || User.current if user.admin? where('1=1') else where('1=0') end end def visible?(user=User.current) user&.admin? end def editable_by?(user) user&.admin? end def available_display_types ['list'] end def display_type 'list' end def project_statuses_values values = super values << [l(:project_status_archived), Project::STATUS_ARCHIVED.to_s] values << [l(:project_status_scheduled_for_deletion), Project::STATUS_SCHEDULED_FOR_DELETION.to_s] values end def base_scope Project.where(statement) end end redmine-6.0.5/app/models/project_custom_field.rb000066400000000000000000000022361500112024600217320ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectCustomField < CustomField def type_name :label_project_plural end def visible_by?(project, user=User.current) super || roles.intersect?(user.roles_for_project(project)) end def visibility_by_project_condition(project_key=nil, user=User.current, id_column=nil) project_key ||= "#{Project.table_name}.id" super end end redmine-6.0.5/app/models/project_query.rb000066400000000000000000000120211500112024600204130ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ProjectQuery < Query self.queried_class = Project self.view_permission = :search_project validate do |query| # project must be blank for ProjectQuery errors.add(:project_id, :exclusion) if query.project_id.present? end # Inheriting ProjectAdminQuery from ProjectQuery introduces the problem that # ProjectQuery.visible also yields ProjectAdminQueries, as # well. We fix that by adding a condition on the actual class name. def self.visible(*) super.where type: name end self.available_columns = [ QueryColumn.new(:name, :sortable => "#{Project.table_name}.name"), QueryColumn.new(:status, :sortable => "#{Project.table_name}.status"), QueryColumn.new(:short_description, :sortable => "#{Project.table_name}.description", :caption => :field_description), QueryColumn.new(:homepage, :sortable => "#{Project.table_name}.homepage"), QueryColumn.new(:identifier, :sortable => "#{Project.table_name}.identifier"), QueryColumn.new(:parent_id, :sortable => "#{Project.table_name}.lft ASC", :default_order => 'desc', :caption => :field_parent), QueryColumn.new(:is_public, :sortable => "#{Project.table_name}.is_public", :groupable => true), QueryColumn.new(:created_on, :sortable => "#{Project.table_name}.created_on", :default_order => 'desc'), QueryColumn.new(:updated_on, :sortable => "#{Project.table_name}.updated_on", :default_order => 'desc'), QueryColumn.new(:last_activity_date) ] def self.default(project: nil, user: User.current) if user&.logged? && (query_id = user.pref.default_project_query).present? query = find_by(id: query_id) return query if query&.visible? end if (query_id = Setting.default_project_query).present? query = find_by(id: query_id) return query if query&.visibility == VISIBILITY_PUBLIC end nil end def initialize(attributes=nil, *args) super(attributes) self.filters ||= {'status' => {:operator => "=", :values => ['1']}} end def initialize_available_filters add_available_filter( "status", :type => :list, :values => lambda {project_statuses_values} ) add_available_filter( "id", :type => :list, :values => lambda {project_values}, :label => :field_project ) add_available_filter "name", :type => :text add_available_filter "description", :type => :text add_available_filter( "parent_id", :type => :list_subprojects, :values => lambda {project_values}, :label => :field_parent ) add_available_filter( "is_public", :type => :list, :values => [[l(:general_text_yes), "1"], [l(:general_text_no), "0"]] ) add_available_filter "created_on", :type => :date_past add_available_filter "updated_on", :type => :date_past add_custom_fields_filters(project_custom_fields) end def available_columns return @available_columns if @available_columns @available_columns = self.class.available_columns.dup @available_columns += project_custom_fields.visible. map {|cf| QueryCustomFieldColumn.new(cf)} @available_columns end def available_display_types ['board', 'list'] end def default_columns_names @default_columns_names = Setting.project_list_defaults.symbolize_keys[:column_names].map(&:to_sym) end def default_display_type Setting.project_list_display_type end def default_sort_criteria [[]] end def base_scope Project.visible.where(statement) end # Returns the project count def result_count base_scope.count rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid, e.message end def results_scope(options={}) order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?) order_option << "#{Project.table_name}.lft ASC" scope = base_scope. order(order_option). joins(joins_for_order_statement(order_option.join(','))). limit(options[:limit]). offset(options[:offset]) if has_custom_field_column? scope = scope.preload(:custom_values) end if has_column?(:parent_id) scope = scope.preload(:parent) end if has_column?(:last_activity_date) Project.load_last_activity_date(scope) end scope end end redmine-6.0.5/app/models/query.rb000066400000000000000000001514171500112024600167020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class QueryColumn attr_accessor :name, :totalable, :default_order attr_writer :sortable, :groupable include Redmine::I18n def initialize(name, options={}) self.name = name self.sortable = options[:sortable] self.groupable = options[:groupable] || false self.totalable = options[:totalable] || false self.default_order = options[:default_order] @inline = options.key?(:inline) ? options[:inline] : true @caption_key = options[:caption] || :"field_#{name}" @frozen = options[:frozen] end def caption case @caption_key when Symbol l(@caption_key) when Proc @caption_key.call else @caption_key end end def groupable? @groupable end # Returns true if the column is sortable, otherwise false def sortable? @sortable.present? end def sortable @sortable.is_a?(Proc) ? @sortable.call : @sortable end def inline? @inline end def frozen? @frozen end def value(object) object.send name end def value_object(object) object.send name end # Returns the group that object belongs to when grouping query results def group_value(object) value(object) end def css_classes name end def group_by_statement name.to_s end end class TimestampQueryColumn < QueryColumn def groupable? group_by_statement.present? end def group_by_statement Redmine::Database.timestamp_to_date(sortable, User.current.time_zone) end def group_value(object) if time = value(object) User.current.time_to_date(time) end end end class WatcherQueryColumn < QueryColumn def value_object(object) return nil unless User.current.allowed_to?(:"view_#{object.class.name.underscore}_watchers", object.try(:project)) super end end class QueryAssociationColumn < QueryColumn def initialize(association, attribute, options={}) @association = association @attribute = attribute name_with_assoc = :"#{association}.#{attribute}" super(name_with_assoc, options) end def value_object(object) assoc = object.send(@association) if assoc && assoc.visible? assoc.send @attribute end end def css_classes @css_classes ||= "#{@association}-#{@attribute}" end end class QueryCustomFieldColumn < QueryColumn def initialize(custom_field, options={}) name = :"cf_#{custom_field.id}" super( name, :sortable => custom_field.order_statement || false, :totalable => options.key?(:totalable) ? !!options[:totalable] : custom_field.totalable?, :inline => custom_field.full_width_layout? ? false : true ) @cf = custom_field end def groupable? group_by_statement.present? end def group_by_statement @cf.group_statement end def caption @cf.name end def custom_field @cf end def value_object(object) project = object.project if object.respond_to?(:project) if custom_field.visible_by?(project, User.current) cv = object.custom_values.select {|v| v.custom_field_id == @cf.id} cv.size > 1 ? cv.sort_by {|e| e.value.to_s} : cv.first else nil end end def value(object) raw = value_object(object) if raw.is_a?(Array) raw.map {|r| @cf.cast_value(r.value)} elsif raw @cf.cast_value(raw.value) else nil end end def css_classes @css_classes ||= "#{name} #{@cf.field_format}" end end class QueryAssociationCustomFieldColumn < QueryCustomFieldColumn def initialize(association, custom_field, options={}) super(custom_field, options) self.name = :"#{association}.cf_#{custom_field.id}" # TODO: support sorting by association custom field self.sortable = false self.groupable = false @association = association end def value_object(object) assoc = object.send(@association) if assoc && assoc.visible? super(assoc) end end def css_classes @css_classes ||= "#{@association}_cf_#{@cf.id} #{@cf.field_format}" end # TODO: support grouping by association custom field def groupable? false end end class QueryFilter include Redmine::I18n def initialize(field, options) @field = field.to_s @options = options @options[:name] ||= l(options[:label] || "field_#{field}".delete_suffix('_id')) # Consider filters with a Proc for values as remote by default @remote = options.key?(:remote) ? options[:remote] : options[:values].is_a?(Proc) end def [](arg) if arg == :values values else @options[arg] end end def values @values ||= begin values = @options[:values] if values.is_a?(Proc) values = values.call end values end end def remote @remote end end class Query < ApplicationRecord class StatementInvalid < ::ActiveRecord::StatementInvalid end class QueryError < StandardError end include Redmine::SubclassFactory VISIBILITY_PRIVATE = 0 VISIBILITY_ROLES = 1 VISIBILITY_PUBLIC = 2 belongs_to :project belongs_to :user has_and_belongs_to_many :roles, :join_table => "#{table_name_prefix}queries_roles#{table_name_suffix}", :foreign_key => "query_id" serialize :filters serialize :column_names serialize :sort_criteria, type: Array serialize :options, type: Hash validates_presence_of :name validates_length_of :name, :maximum => 255 validates_length_of :description, :maximum => 255 validates :visibility, :inclusion => {:in => [VISIBILITY_PUBLIC, VISIBILITY_ROLES, VISIBILITY_PRIVATE]} validate :validate_query_filters validate do |query| errors.add(:base, l(:label_role_plural) + ' ' + l('activerecord.errors.messages.blank')) if query.visibility == VISIBILITY_ROLES && roles.blank? end after_save do |query| if query.saved_change_to_visibility? && query.visibility != VISIBILITY_ROLES query.roles.clear end end class_attribute :operators self.operators = { "=" => :label_equals, "!" => :label_not_equals, "o" => :label_open_issues, "c" => :label_closed_issues, "!*" => :label_none, "*" => :label_any, ">=" => :label_greater_or_equal, "<=" => :label_less_or_equal, "><" => :label_between, " :label_in_less_than, ">t+" => :label_in_more_than, "> :label_in_the_next_days, "t+" => :label_in, "nd" => :label_tomorrow, "t" => :label_today, "ld" => :label_yesterday, "nw" => :label_next_week, "w" => :label_this_week, "lw" => :label_last_week, "l2w" => [:label_last_n_weeks, {:count => 2}], "nm" => :label_next_month, "m" => :label_this_month, "lm" => :label_last_month, "y" => :label_this_year, ">t-" => :label_less_than_ago, " :label_more_than_ago, "> :label_in_the_past_days, "t-" => :label_ago, "~" => :label_contains, "!~" => :label_not_contains, "*~" => :label_contains_any_of, "^" => :label_starts_with, "$" => :label_ends_with, "=p" => :label_any_issues_in_project, "=!p" => :label_any_issues_not_in_project, "!p" => :label_no_issues_in_project, "*o" => :label_any_open_issues, "!o" => :label_no_open_issues, "ev" => :label_has_been, # "ev" stands for "ever" "!ev" => :label_has_never_been, "cf" => :label_changed_from } class_attribute :operators_by_filter_type self.operators_by_filter_type = { :list => [ "=", "!" ], :list_with_history => [ "=", "!", "ev", "!ev", "cf" ], :list_status => [ "o", "=", "!", "ev", "!ev", "cf", "c", "*" ], :list_optional => [ "=", "!", "!*", "*" ], :list_optional_with_history => [ "=", "!", "ev", "!ev", "cf", "!*", "*" ], :list_subprojects => [ "*", "!*", "=", "!" ], :date => [ "=", ">=", "<=", "><", "t+", ">t-", " [ "=", ">=", "<=", "><", ">t-", " [ "~", "*~", "=", "!~", "!", "^", "$", "!*", "*" ], :text => [ "~", "*~", "!~", "^", "$", "!*", "*" ], :search => [ "~", "*~", "!~" ], :integer => [ "=", ">=", "<=", "><", "!*", "*" ], :float => [ "=", ">=", "<=", "><", "!*", "*" ], :relation => ["=", "!", "=p", "=!p", "!p", "*o", "!o", "!*", "*"], :tree => ["=", "~", "!*", "*"] } class_attribute :available_columns self.available_columns = [] class_attribute :queried_class # Permission required to view the queries, set on subclasses. class_attribute :view_permission class_attribute :layout, default: 'base' # Scope of queries that are global or on the given project scope :global_or_on_project, (lambda do |project| where(:project_id => (project.nil? ? nil : [nil, project.id])) end) scope :sorted, lambda {order(:name, :id)} scope :only_public, ->{ where(visibility: VISIBILITY_PUBLIC) } # to be implemented in subclasses that have a way to determine a default # query for the given options def self.default(**_) nil end # Scope of visible queries, can be used from subclasses only. # Unlike other visible scopes, a class methods is used as it # let handle inheritance more nicely than scope DSL. def self.visible(*args) if self == ::Query # Visibility depends on permissions for each subclass, # raise an error if the scope is called from Query (eg. Query.visible) raise "Cannot call .visible scope from the base Query class, but from subclasses only." end user = args.shift || User.current base = Project.allowed_to_condition(user, view_permission, *args) scope = joins("LEFT OUTER JOIN #{Project.table_name} ON #{table_name}.project_id = #{Project.table_name}.id"). where("#{table_name}.project_id IS NULL OR (#{base})") if user.admin? scope.where("#{table_name}.visibility <> ? OR #{table_name}.user_id = ?", VISIBILITY_PRIVATE, user.id) elsif user.memberships.any? scope.where( "#{table_name}.visibility = ?" \ " OR (#{table_name}.visibility = ? AND EXISTS (SELECT 1" \ " FROM #{table_name_prefix}queries_roles#{table_name_suffix} qr" \ " INNER JOIN #{MemberRole.table_name} mr ON mr.role_id = qr.role_id" \ " INNER JOIN #{Member.table_name} m ON m.id = mr.member_id AND m.user_id = ?" \ " INNER JOIN #{Project.table_name} p ON p.id = m.project_id AND p.status <> ?" \ " WHERE qr.query_id = #{table_name}.id" \ " AND (#{table_name}.project_id IS NULL OR #{table_name}.project_id = m.project_id)))" \ " OR #{table_name}.user_id = ?", VISIBILITY_PUBLIC, VISIBILITY_ROLES, user.id, Project::STATUS_ARCHIVED, user.id ) elsif user.logged? scope.where("#{table_name}.visibility = ? OR #{table_name}.user_id = ?", VISIBILITY_PUBLIC, user.id) else scope.where("#{table_name}.visibility = ?", VISIBILITY_PUBLIC) end end # Returns true if the query is visible to +user+ or the current user. def visible?(user=User.current) return true if user.admin? return false unless project.nil? || user.allowed_to?(self.class.view_permission, project) case visibility when VISIBILITY_PUBLIC true when VISIBILITY_ROLES if project user.roles_for_project(project).intersect?(roles) else user.memberships.joins(:member_roles).where(:member_roles => {:role_id => roles.map(&:id)}).any? end else user == self.user end end def is_private? visibility == VISIBILITY_PRIVATE end def is_public? !is_private? end # Returns true if the query is available for all projects def is_global? new_record? ? project_id.nil? : project_id_in_database.nil? end def queried_table_name @queried_table_name ||= self.class.queried_class.table_name end # Builds the query from the given params def build_from_params(params, defaults={}) if params[:fields] || params[:f] self.filters = {} add_filters(params[:fields] || params[:f], params[:operators] || params[:op], params[:values] || params[:v]) else available_filters.each_key do |field| add_short_filter(field, params[field]) if params[field] end end query_params = params[:query] || defaults || {} self.group_by = params[:group_by] || query_params[:group_by] || self.group_by self.column_names = params[:c] || query_params[:column_names] || self.column_names self.totalable_names = params[:t] || query_params[:totalable_names] || self.totalable_names self.sort_criteria = params[:sort] || query_params[:sort_criteria] || self.sort_criteria self.display_type = params[:display_type] || query_params[:display_type] || self.display_type self end # Builds a new query from the given params and attributes def self.build_from_params(params, attributes={}) new(attributes).build_from_params(params) end def as_params if new_record? params = {} filters.each do |field, options| params[:f] ||= [] params[:f] << field params[:op] ||= {} params[:op][field] = options[:operator] params[:v] ||= {} params[:v][field] = options[:values] end params[:c] = column_names params[:group_by] = group_by.to_s if group_by.present? params[:t] = totalable_names.map(&:to_s) if totalable_names.any? params[:sort] = sort_criteria.to_param params[:set_filter] = 1 params else {:query_id => id} end end def validate_query_filters filters.each_key do |field| if values_for(field) case type_for(field) when :integer if values_for(field).detect {|v| v.present? && !/\A[+-]?\d+(,[+-]?\d+)*\z/.match?(v)} add_filter_error(field, :invalid) end when :float if values_for(field).detect {|v| v.present? && !/\A[+-]?\d+(\.\d*)?\z/.match?(v)} add_filter_error(field, :invalid) end when :date, :date_past case operator_for(field) when "=", ">=", "<=", "><" if values_for(field).detect do |v| v.present? && (!/\A\d{4}-\d{2}-\d{2}(T\d{2}((:)?\d{2}){0,2}(Z|\d{2}:?\d{2})?)?\z/.match?(v) || parse_date(v).nil?) end add_filter_error(field, :invalid) end when ">t-", "t+", " 'activerecord.errors.messages') errors.add(:base, m) end def editable_by?(user) return false unless user # Admin can edit them all and regular users can edit their private queries return true if user.admin? || (is_private? && self.user_id == user.id) # Members can not edit public queries that are for all project (only admin is allowed to) is_public? && !is_global? && user.allowed_to?(:manage_public_queries, project) end def trackers @trackers ||= (project.nil? ? Tracker.all : project.rolled_up_trackers).visible.sorted end # Returns a hash of localized labels for all filter operators def self.operators_labels operators.inject({}) {|h, operator| h[operator.first] = l(*operator.last); h} end # Returns a representation of the available filters for JSON serialization def available_filters_as_json json = {} available_filters.each do |field, filter| options = {:type => filter[:type], :name => filter[:name]} options[:remote] = true if filter.remote if has_filter?(field) || !filter.remote options[:values] = filter.values if options[:values] && values_for(field) missing = Array(values_for(field)).select(&:present?) - options[:values].pluck(1) if missing.any? && respond_to?(method = "find_#{field}_filter_values") options[:values] += send(method, missing) end end end json[field] = options.stringify_keys end json end def all_projects @all_projects ||= Project.visible.to_a end def all_projects_values return @all_projects_values if @all_projects_values values = [] Project.project_tree(all_projects) do |p, level| prefix = (level > 0 ? ('--' * level + ' ') : '') values << ["#{prefix}#{p.name}", p.id.to_s] end @all_projects_values = values end def project_values project_values = [] if User.current.logged? project_values << ["<< #{l(:label_my_projects).downcase} >>", "mine"] if User.current.memberships.any? project_values << ["<< #{l(:label_my_bookmarks).downcase} >>", "bookmarks"] if User.current.bookmarked_project_ids.any? end project_values += all_projects_values project_values end def subproject_values project.descendants.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]} end def principals @principal ||= begin principals = [] if project principals += Principal.member_of(project).visible unless project.leaf? principals += Principal.member_of(project.descendants.visible).visible end else principals += Principal.member_of(all_projects).visible end principals.uniq! principals.sort! principals.reject! {|p| p.is_a?(GroupBuiltin)} principals end end def users principals.select {|p| p.is_a?(User)} end def author_values author_values = [] author_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? author_values += users.sort_by{|p| [p.status, p]}. collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")]} author_values << [l(:label_user_anonymous), User.anonymous.id.to_s] author_values end def assigned_to_values assigned_to_values = [] assigned_to_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? assigned_to_values += (Setting.issue_group_assignment? ? principals : users).sort_by{|p| [p.status, p]}. collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")]} assigned_to_values end def fixed_version_values versions = [] if project versions = project.shared_versions.to_a else versions = Version.visible.to_a end Version.sort_by_status(versions). collect{|s| ["#{s.project.name} - #{s.name}", s.id.to_s, l("version_status_#{s.status}")]} end # Returns a scope of issue statuses that are available as columns for filters def issue_statuses_values if project statuses = project.rolled_up_statuses else statuses = IssueStatus.all.sorted end statuses.pluck(:name, :id).map {|name, id| [name, id.to_s]} end def watcher_values watcher_values = [["<< #{l(:label_me)} >>", "me"]] if User.current.allowed_to?(:view_issue_watchers, self.project, global: true) watcher_values += principals.sort_by{|p| [p.status, p]}. collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")]} end watcher_values end # Returns a scope of issue custom fields that are available as columns or filters def issue_custom_fields if project project.rolled_up_custom_fields else IssueCustomField.sorted end end # Returns a scope of project custom fields that are available as columns or filters def project_custom_fields ProjectCustomField.sorted end # Returns a scope of time entry custom fields that are available as columns or filters def time_entry_custom_fields TimeEntryCustomField.sorted end # Returns a scope of project statuses that are available as columns or filters def project_statuses_values [ [l(:project_status_active), "#{Project::STATUS_ACTIVE}"], [l(:project_status_closed), "#{Project::STATUS_CLOSED}"] ] end # Adds available filters def initialize_available_filters # implemented by sub-classes end protected :initialize_available_filters # Adds an available filter def add_available_filter(field, options) @available_filters ||= ActiveSupport::OrderedHash.new @available_filters[field] = QueryFilter.new(field, options) @available_filters end # Removes an available filter def delete_available_filter(field) if @available_filters @available_filters.delete(field) end end # Return a hash of available filters def available_filters unless @available_filters initialize_available_filters @available_filters ||= {} end @available_filters end def add_filter(field, operator, values=nil) # values must be an array return unless values.nil? || values.is_a?(Array) # check if field is defined as an available filter if available_filters.has_key? field filters[field] = {:operator => operator, :values => (values || [''])} end end def add_short_filter(field, expression) return unless expression && available_filters.has_key?(field) field_type = available_filters[field][:type] operators_by_filter_type[field_type].sort.reverse.detect do |operator| next unless expression =~ /^#{Regexp.escape(operator)}(.*)$/ values = $1 add_filter field, operator, values.present? ? values.split('|') : [''] end || add_filter(field, '=', expression.to_s.split('|')) end # Add multiple filters using +add_filter+ def add_filters(fields, operators, values) if fields.present? && operators.present? fields.each do |field| add_filter(field, operators[field], values && values[field]) end end end def has_filter?(field) filters and filters[field] end def type_for(field) available_filters[field][:type] if available_filters.has_key?(field) end def operator_for(field) has_filter?(field) ? filters[field][:operator] : nil end def values_for(field) has_filter?(field) ? filters[field][:values] : nil end def value_for(field, index=0) (values_for(field) || [])[index] end def label_for(field) label = available_filters[field][:name] if available_filters.has_key?(field) label ||= queried_class.human_attribute_name(field, :default => field) end def self.add_available_column(column) self.available_columns << (column) if column.is_a?(QueryColumn) end # Returns an array of columns that can be used to group the results def groupable_columns available_columns.select(&:groupable?) end # Returns a Hash of columns and the key for sorting def sortable_columns available_columns.inject({}) do |h, column| h[column.name.to_s] = column.sortable h end end def columns return [] if available_columns.empty? # preserve the column_names order cols = (has_default_columns? ? default_columns_names : column_names).filter_map do |name| available_columns.find {|col| col.name == name} end available_columns.select(&:frozen?) | cols end def inline_columns columns.select(&:inline?) end def block_columns columns.reject(&:inline?) end def available_inline_columns available_columns.select(&:inline?) end def available_block_columns available_columns.reject(&:inline?) end def available_totalable_columns available_columns.select(&:totalable) end def default_columns_names [] end def default_totalable_names [] end def default_display_type self.available_display_types.first end def column_names=(names) if names names = names.select {|n| n.is_a?(Symbol) || n.present?} names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym} if names.delete(:all_inline) names = available_inline_columns.map(&:name) | names end # Set column_names to nil if default columns if names == default_columns_names names = nil end end write_attribute(:column_names, names) end def has_column?(column) name = column.is_a?(QueryColumn) ? column.name : column columns.detect {|c| c.name == name} end def has_custom_field_column? columns.any?(QueryCustomFieldColumn) end def has_default_columns? column_names.nil? || column_names.empty? end def totalable_columns names = totalable_names available_totalable_columns.select {|column| names.include?(column.name)} end def totalable_names=(names) if names names = names.select(&:present?).map {|n| n.is_a?(Symbol) ? n : n.to_sym} end options[:totalable_names] = names end def totalable_names options[:totalable_names] || default_totalable_names || [] end def default_sort_criteria [] end def sort_criteria=(arg) c = Redmine::SortCriteria.new(arg) write_attribute(:sort_criteria, c.to_a) c end def sort_criteria c = read_attribute(:sort_criteria) if c.blank? c = default_sort_criteria end Redmine::SortCriteria.new(c) end def sort_criteria_key(index) sort_criteria[index].try(:first) end def sort_criteria_order(index) sort_criteria[index].try(:last) end def sort_clause if clause = sort_criteria.sort_clause(sortable_columns) clause.map {|c| Arel.sql c} end end # Returns the SQL sort order that should be prepended for grouping def group_by_sort_order if column = group_by_column order = (sort_criteria.order_for(column.name) || column.default_order || 'asc').try(:upcase) column_sortable = column.sortable if column.is_a?(TimestampQueryColumn) column_sortable = Redmine::Database.timestamp_to_date(column.sortable, User.current.time_zone) end Array(column_sortable).map {|s| Arel.sql("#{s} #{order}")} end end # Returns true if the query is a grouped query def grouped? !group_by_column.nil? end def group_by_column groupable_columns.detect {|c| c.groupable? && c.name.to_s == group_by} end def group_by_statement group_by_column.try(:group_by_statement) end def project_statement project_clauses = [] subprojects_ids = [] subprojects_ids = project.descendants.where.not(status: Project::STATUS_ARCHIVED).ids if project if subprojects_ids.any? if has_filter?("subproject_id") case operator_for("subproject_id") when '=' # include the selected subprojects ids = [project.id] + values_for("subproject_id").map(&:to_i) project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',') when '!' # exclude the selected subprojects ids = [project.id] + subprojects_ids - values_for("subproject_id").map(&:to_i) project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',') when '!*' # main project only project_clauses << "#{Project.table_name}.id = %d" % project.id else # all subprojects project_clauses << "#{Project.table_name}.lft >= #{project.lft} AND #{Project.table_name}.rgt <= #{project.rgt}" end elsif Setting.display_subprojects_issues? project_clauses << "#{Project.table_name}.lft >= #{project.lft} AND #{Project.table_name}.rgt <= #{project.rgt}" else project_clauses << "#{Project.table_name}.id = %d" % project.id end elsif project project_clauses << "#{Project.table_name}.id = %d" % project.id end project_clauses.any? ? project_clauses.join(' AND ') : nil end def statement # filters clauses filters_clauses = [] filters.each_key do |field| next if field == "subproject_id" v = values_for(field).clone next unless v and !v.empty? operator = operator_for(field) # "me" value substitution if %w(assigned_to_id author_id user_id watcher_id updated_by last_updated_by).include?(field) if v.delete("me") if User.current.logged? v.push(User.current.id.to_s) v += User.current.group_ids.map(&:to_s) if %w(assigned_to_id watcher_id).include?(field) else v.push("0") end end end if field == 'project_id' || (is_a?(ProjectQuery) && %w[id parent_id].include?(field)) if v.delete('mine') v += User.current.memberships.pluck(:project_id).map(&:to_s) end if v.delete('bookmarks') v += User.current.bookmarked_project_ids end end if field =~ /^cf_(\d+)\.cf_(\d+)$/ filters_clauses << sql_for_chained_custom_field(field, operator, v, $1, $2) elsif field =~ /cf_(\d+)$/ # custom field filters_clauses << sql_for_custom_field(field, operator, v, $1) elsif field =~ /^cf_(\d+)\.(.+)$/ filters_clauses << sql_for_custom_field_attribute(field, operator, v, $1, $2) elsif respond_to?(method = "sql_for_#{field.tr('.', '_')}_field") # specific statement filters_clauses << send(method, field, operator, v) else # regular field filters_clauses << '(' + sql_for_field(field, operator, v, queried_table_name, field) + ')' end end if filters and valid? if (c = group_by_column) && c.is_a?(QueryCustomFieldColumn) # Excludes results for which the grouped custom field is not visible filters_clauses << c.custom_field.visibility_by_project_condition end filters_clauses << project_statement filters_clauses.reject!(&:blank?) filters_clauses.any? ? filters_clauses.join(' AND ') : nil end # Returns the result count by group or nil if query is not grouped def result_count_by_group grouped_query do |scope| scope.count end end # Returns the sum of values for the given column def total_for(column) total_with_scope(column, base_scope) end # Returns a hash of the sum of the given column for each group, # or nil if the query is not grouped def total_by_group_for(column) grouped_query do |scope| total_with_scope(column, scope) end end def totals totals = totalable_columns.map {|column| [column, total_for(column)]} yield totals if block_given? totals end def totals_by_group totals = totalable_columns.map {|column| [column, total_by_group_for(column)]} yield totals if block_given? totals end def css_classes s = sort_criteria.first if s.present? key, asc = s "sort-by-#{key.to_s.dasherize} sort-#{asc}" end end def display_type options[:display_type] || self.default_display_type end def display_type=(type) unless type && self.available_display_types.include?(type) type = self.available_display_types.first end options[:display_type] = type end def available_display_types ['list'] end private def grouped_query(&) r = nil if grouped? r = yield base_group_scope c = group_by_column if c.is_a?(QueryCustomFieldColumn) r = r.keys.inject({}) {|h, k| h[c.custom_field.cast_value(k)] = r[k]; h} end end r rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end def total_with_scope(column, scope) unless column.is_a?(QueryColumn) column = column.to_sym column = available_totalable_columns.detect {|c| c.name == column} end if column.is_a?(QueryCustomFieldColumn) custom_field = column.custom_field send :total_for_custom_field, custom_field, scope else send :"total_for_#{column.name}", scope end rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new(e.message) end def base_scope raise "unimplemented" end def base_group_scope base_scope. joins(joins_for_order_statement(group_by_statement)). group(group_by_statement) end def total_for_custom_field(custom_field, scope, &) total = custom_field.format.total_for_scope(custom_field, scope) total = map_total(total) {|t| custom_field.format.cast_total_value(custom_field, t)} total end def map_total(total, &) if total.is_a?(Hash) total.each_key {|k| total[k] = yield total[k]} else total = yield total end total end def sql_for_custom_field(field, operator, value, custom_field_id) db_table = CustomValue.table_name db_field = 'value' filter = @available_filters[field] return nil unless filter if filter[:field].format.target_class && filter[:field].format.target_class <= User if value.delete('me') value.push User.current.id.to_s end end not_in = nil if operator == '!' # Makes ! operator work for custom fields with multiple values operator = '=' not_in = 'NOT' end customized_key = "id" customized_class = queried_class if field =~ /^(.+)\.cf_/ assoc = $1 customized_key = "#{assoc}_id" customized_class = queried_class.reflect_on_association(assoc.to_sym).klass.base_class rescue nil raise QueryError, "Unknown #{queried_class.name} association #{assoc}" unless customized_class end where = sql_for_field(field, operator, value, db_table, db_field, true) if /[<>]/.match?(operator) where = "(#{where}) AND #{db_table}.#{db_field} <> ''" end "#{not_in} EXISTS (" \ "SELECT ct.id FROM #{customized_class.table_name} ct" \ " LEFT OUTER JOIN #{db_table} ON #{db_table}.customized_type='#{customized_class}'" \ " AND #{db_table}.customized_id=ct.id" \ " AND #{db_table}.custom_field_id=#{custom_field_id}" \ " WHERE #{queried_table_name}.#{customized_key} = ct.id AND " \ " (#{where}) AND (#{filter[:field].visibility_by_project_condition}))" end def sql_for_chained_custom_field(field, operator, value, custom_field_id, chained_custom_field_id) not_in = nil if operator == '!' # Makes ! operator work for custom fields with multiple values operator = '=' not_in = 'NOT' end filter = available_filters[field] target_class = filter[:through].format.target_class.base_class "#{queried_table_name}.id #{not_in} IN (" + "SELECT customized_id FROM #{CustomValue.table_name}" + " WHERE customized_type='#{queried_class}' AND custom_field_id=#{custom_field_id}" + " AND CAST(CASE value WHEN '' THEN '0' ELSE value END AS decimal(30,0)) IN (" + " SELECT customized_id FROM #{CustomValue.table_name}" + " WHERE customized_type='#{target_class}' AND custom_field_id=#{chained_custom_field_id}" + " AND #{sql_for_field(field, operator, value, CustomValue.table_name, 'value', true)}))" end def sql_for_custom_field_attribute(field, operator, value, custom_field_id, attribute) attribute = 'effective_date' if attribute == 'due_date' not_in = nil if operator == '!' # Makes ! operator work for custom fields with multiple values operator = '=' not_in = 'NOT' end filter = available_filters[field] target_table_name = filter[:field].format.target_class.table_name "#{queried_table_name}.id #{not_in} IN (" + "SELECT customized_id FROM #{CustomValue.table_name}" + " WHERE customized_type='#{queried_class}' AND custom_field_id=#{custom_field_id}" + " AND CAST(CASE value WHEN '' THEN '0' ELSE value END AS decimal(30,0)) IN (" + " SELECT id FROM #{target_table_name} WHERE #{sql_for_field(field, operator, value, filter[:field].format.target_class.table_name, attribute)}))" end # Helper method to generate the WHERE sql for a +field+, +operator+ and a +value+ def sql_for_field(field, operator, value, db_table, db_field, is_custom_filter=false) sql = '' case operator when "=" if value.any? case type_for(field) when :date, :date_past sql = date_clause(db_table, db_field, parse_date(value.first), parse_date(value.first), is_custom_filter) when :integer int_values = value.first.to_s.scan(/[+-]?\d+/).map(&:to_i).join(",") if int_values.present? if is_custom_filter sql = "(#{db_table}.#{db_field} <> '' AND " \ "CAST(CASE #{db_table}.#{db_field} WHEN '' THEN '0' " \ "ELSE #{db_table}.#{db_field} END AS decimal(30,3)) IN (#{int_values}))" else sql = "#{db_table}.#{db_field} IN (#{int_values})" end else sql = "1=0" end when :float if is_custom_filter sql = "(#{db_table}.#{db_field} <> '' AND " \ "CAST(CASE #{db_table}.#{db_field} WHEN '' THEN '0' " \ "ELSE #{db_table}.#{db_field} END AS decimal(30,3)) " \ "BETWEEN #{value.first.to_f - 1e-5} AND #{value.first.to_f + 1e-5})" else sql = "#{db_table}.#{db_field} BETWEEN #{value.first.to_f - 1e-5} AND #{value.first.to_f + 1e-5}" end else sql = queried_class.send(:sanitize_sql_for_conditions, ["#{db_table}.#{db_field} IN (?)", value]) end else # IN an empty set sql = "1=0" end when "!" if value.any? sql = queried_class.send( :sanitize_sql_for_conditions, ["(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (?))", value] ) else # NOT IN an empty set sql = "1=1" end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql += " OR #{db_table}.#{db_field} = ''" if is_custom_filter || [:text, :string].include?(type_for(field)) when "*" sql = "#{db_table}.#{db_field} IS NOT NULL" sql += " AND #{db_table}.#{db_field} <> ''" if is_custom_filter || [:text, :string].include?(type_for(field)) when ">=" if [:date, :date_past].include?(type_for(field)) sql = date_clause(db_table, db_field, parse_date(value.first), nil, is_custom_filter) else if is_custom_filter sql = "(#{db_table}.#{db_field} <> '' AND " \ "CAST(CASE #{db_table}.#{db_field} WHEN '' THEN '0' " \ "ELSE #{db_table}.#{db_field} END AS decimal(30,3)) >= #{value.first.to_f})" else sql = "#{db_table}.#{db_field} >= #{value.first.to_f}" end end when "<=" if [:date, :date_past].include?(type_for(field)) sql = date_clause(db_table, db_field, nil, parse_date(value.first), is_custom_filter) else if is_custom_filter sql = "(#{db_table}.#{db_field} <> '' AND " \ "CAST(CASE #{db_table}.#{db_field} WHEN '' THEN '0' " \ "ELSE #{db_table}.#{db_field} END AS decimal(30,3)) <= #{value.first.to_f})" else sql = "#{db_table}.#{db_field} <= #{value.first.to_f}" end end when "><" if [:date, :date_past].include?(type_for(field)) sql = date_clause(db_table, db_field, parse_date(value[0]), parse_date(value[1]), is_custom_filter) else if is_custom_filter sql = "(#{db_table}.#{db_field} <> '' AND CAST(CASE #{db_table}.#{db_field} " \ "WHEN '' THEN '0' ELSE #{db_table}.#{db_field} END AS decimal(30,3)) " \ "BETWEEN #{value[0].to_f} AND #{value[1].to_f})" else sql = "#{db_table}.#{db_field} BETWEEN #{value[0].to_f} AND #{value[1].to_f}" end end when "o" if field == "status_id" sql = "#{queried_table_name}.status_id IN " \ "(SELECT id FROM #{IssueStatus.table_name} " \ "WHERE is_closed=#{self.class.connection.quoted_false})" end when "c" if field == "status_id" sql = "#{queried_table_name}.status_id IN " \ "(SELECT id FROM #{IssueStatus.table_name} " \ "WHERE is_closed=#{self.class.connection.quoted_true})" end when ">t-" # >= today - n days sql = relative_date_clause(db_table, db_field, - value.first.to_i, nil, is_custom_filter) when "t+" # >= today + n days sql = relative_date_clause(db_table, db_field, value.first.to_i, nil, is_custom_filter) when "= first_day_of_week day_of_week - first_day_of_week else day_of_week + 7 - first_day_of_week end sql = relative_date_clause(db_table, db_field, - days_ago, - days_ago + 6, is_custom_filter) when "lw" # = last week first_day_of_week = l(:general_first_day_of_week).to_i day_of_week = User.current.today.cwday days_ago = if day_of_week >= first_day_of_week day_of_week - first_day_of_week else day_of_week + 7 - first_day_of_week end sql = relative_date_clause(db_table, db_field, - days_ago - 7, - days_ago - 1, is_custom_filter) when "l2w" # = last 2 weeks first_day_of_week = l(:general_first_day_of_week).to_i day_of_week = User.current.today.cwday days_ago = if day_of_week >= first_day_of_week day_of_week - first_day_of_week else day_of_week + 7 - first_day_of_week end sql = relative_date_clause(db_table, db_field, - days_ago - 14, - days_ago - 1, is_custom_filter) when "nw" # = next week first_day_of_week = l(:general_first_day_of_week).to_i day_of_week = User.current.today.cwday from = -( if day_of_week >= first_day_of_week day_of_week - first_day_of_week else day_of_week + 7 - first_day_of_week end ) + 7 sql = relative_date_clause(db_table, db_field, from, from + 6, is_custom_filter) when "m" # = this month date = User.current.today sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter) when "lm" # = last month date = User.current.today.prev_month sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter) when "nm" # = next month date = User.current.today.next_month sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter) when "y" # = this year date = User.current.today sql = date_clause(db_table, db_field, date.beginning_of_year, date.end_of_year, is_custom_filter) when "~" sql = sql_contains("#{db_table}.#{db_field}", value.first) when "!~" sql = sql_contains("#{db_table}.#{db_field}", value.first, :match => false) when "*~" sql = sql_contains("#{db_table}.#{db_field}", value.first, :all_words => false) when "^" sql = sql_contains("#{db_table}.#{db_field}", value.first, :starts_with => true) when "$" sql = sql_contains("#{db_table}.#{db_field}", value.first, :ends_with => true) when "ev", "!ev", "cf" # has been, has never been, changed from if queried_class == Issue && value.present? neg = (operator.start_with?('!') ? 'NOT' : '') subquery = "SELECT 1 FROM #{Journal.table_name}" + " INNER JOIN #{JournalDetail.table_name} ON #{Journal.table_name}.id = #{JournalDetail.table_name}.journal_id" + " WHERE (#{Journal.visible_notes_condition(User.current, :skip_pre_condition => true)}" + " AND #{Journal.table_name}.journalized_type = 'Issue'" + " AND #{Journal.table_name}.journalized_id = #{db_table}.id" + " AND #{JournalDetail.table_name}.property = 'attr'" + " AND #{JournalDetail.table_name}.prop_key = '#{db_field}'" + " AND " + queried_class.send(:sanitize_sql_for_conditions, ["#{JournalDetail.table_name}.old_value IN (?)", value.map(&:to_s)]) + ")" sql_ev = if %w[ev !ev].include?(operator) " OR " + queried_class.send(:sanitize_sql_for_conditions, ["#{db_table}.#{db_field} IN (?)", value.map(&:to_s)]) else '' end sql = "#{neg} (EXISTS (#{subquery})#{sql_ev})" else sql = '1=0' end else raise QueryError, "Unknown query operator #{operator}" end return sql end # Returns a SQL LIKE statement with wildcards # # valid options: # * :match - use NOT LIKE if false # * :starts_with - use LIKE 'value%' if true # * :ends_with - use LIKE '%value' if true # * :all_words - use OR instead of AND if false # (ignored if :starts_with or :ends_with is true) def sql_contains(db_field, value, options={}) options = {} unless options.is_a?(Hash) options.symbolize_keys! queried_class.sanitize_sql_for_conditions( ::Query.tokenized_like_conditions(db_field, value, **options) ) end # rubocop:disable Lint/IneffectiveAccessModifier def self.tokenized_like_conditions(db_field, value, **options) tokens = Redmine::Search::Tokenizer.new(value).tokens tokens = [value] unless tokens.present? if options[:starts_with] prefix, suffix = nil, '%' logical_opr = ' OR ' elsif options[:ends_with] prefix, suffix = '%', nil logical_opr = ' OR ' else prefix = suffix = '%' logical_opr = options[:all_words] == false ? ' OR ' : ' AND ' end sql, values = tokens.map do |token| [Redmine::Database.like(db_field, '?', options), "#{prefix}#{sanitize_sql_like token}#{suffix}"] end.transpose [sql.join(logical_opr), *values] end # rubocop:enable Lint/IneffectiveAccessModifier # Adds a filter for the given custom field def add_custom_field_filter(field, assoc=nil) options = field.query_filter_options(self) filter_id = "cf_#{field.id}" filter_name = field.name if assoc.present? filter_id = "#{assoc}.#{filter_id}" filter_name = l("label_attribute_of_#{assoc}", :name => filter_name) end add_available_filter( filter_id, options.merge( { :name => filter_name, :field => field } ) ) end # Adds filters for custom fields associated to the custom field target class # Eg. having a version custom field "Milestone" for issues and a date custom field "Release date" # for versions, it will add an issue filter on Milestone'e Release date. def add_chained_custom_field_filters(field) klass = field.format.target_class if klass CustomField.where(:is_filter => true, :type => "#{klass.name}CustomField").each do |chained| options = chained.query_filter_options(self) filter_id = "cf_#{field.id}.cf_#{chained.id}" add_available_filter( filter_id, options.merge( { :name => l(:label_attribute_of_object, :name => chained.name, :object_name => field.name), :field => chained, :through => field } ) ) end end end # Adds filters for the given custom fields scope def add_custom_fields_filters(scope, assoc=nil) scope.visible.where(:is_filter => true).sorted.each do |field| add_custom_field_filter(field, assoc) if assoc.nil? add_chained_custom_field_filters(field) if field.format.target_class && field.format.target_class == Version add_available_filter( "cf_#{field.id}.due_date", :type => :date, :field => field, :name => l(:label_attribute_of_object, :name => l(:field_effective_date), :object_name => field.name) ) add_available_filter( "cf_#{field.id}.status", :type => :list, :field => field, :name => l(:label_attribute_of_object, :name => l(:field_status), :object_name => field.name), :values => Version::VERSION_STATUSES.map{|s| [l("version_status_#{s}"), s]} ) end end end end # Adds filters for the given associations custom fields def add_associations_custom_fields_filters(*associations) fields_by_class = CustomField.visible.where(:is_filter => true).group_by(&:class) associations.each do |assoc| association_klass = queried_class.reflect_on_association(assoc).klass fields_by_class.each do |field_class, fields| if field_class.customized_class <= association_klass fields.sort.each do |field| add_custom_field_filter(field, assoc) end end end end end def quoted_time(time, is_custom_filter) if is_custom_filter # Custom field values are stored as strings in the DB # using this format that does not depend on DB date representation time.strftime("%Y-%m-%d %H:%M:%S") else self.class.connection.quoted_date(time) end end def date_for_user_time_zone(y, m, d) if tz = User.current.time_zone tz.local y, m, d else Time.local y, m, d end end # Returns a SQL clause for a date or datetime field. def date_clause(table, field, from, to, is_custom_filter) s = [] if from if from.is_a?(Date) from = date_for_user_time_zone(from.year, from.month, from.day).yesterday.end_of_day else from = from - 1 # second end if ActiveRecord.default_timezone == :utc from = from.utc end s << ("#{table}.#{field} > '%s'" % [quoted_time(from, is_custom_filter)]) end if to if to.is_a?(Date) to = date_for_user_time_zone(to.year, to.month, to.day).end_of_day end if ActiveRecord.default_timezone == :utc to = to.utc end s << ("#{table}.#{field} <= '%s'" % [quoted_time(to, is_custom_filter)]) end s.join(' AND ') end # Returns a SQL clause for a date or datetime field using relative dates. def relative_date_clause(table, field, days_from, days_to, is_custom_filter) date_clause( table, field, (days_from ? User.current.today + days_from : nil), (days_to ? User.current.today + days_to : nil), is_custom_filter ) end # Returns a Date or Time from the given filter value def parse_date(arg) if /\A\d{4}-\d{2}-\d{2}T/.match?(arg.to_s) Time.parse(arg) rescue nil else Date.parse(arg) rescue nil end end # Additional joins required for the given sort options def joins_for_order_statement(order_options) joins = [] if order_options order_options.scan(/cf_\d+/).uniq.each do |name| column = available_columns.detect {|c| c.name.to_s == name} join = column && column.custom_field.join_for_order_statement if join joins << join end end end joins.any? ? joins.join(' ') : nil end end redmine-6.0.5/app/models/repository.rb000066400000000000000000000345201500112024600177470ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class ScmFetchError < StandardError; end class Repository < ApplicationRecord include Redmine::Ciphering include Redmine::SafeAttributes # Maximum length for repository identifiers IDENTIFIER_MAX_LENGTH = 255 belongs_to :project has_many :changesets, lambda{order("#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC")} has_many :filechanges, :class_name => 'Change', :through => :changesets serialize :extra_info before_validation :normalize_identifier before_save :check_default # Raw SQL to delete changesets and changes in the database # has_many :changesets, :dependent => :destroy is too slow for big repositories before_destroy :clear_changesets validates_length_of :login, maximum: 60, allow_nil: true validates_length_of :password, :maximum => 255, :allow_nil => true validates_length_of :root_url, :url, maximum: 255 validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true validates_uniqueness_of :identifier, :scope => :project_id, :case_sensitive => true validates_exclusion_of :identifier, :in => %w(browse show entry raw changes annotate diff statistics graph revisions revision) # donwcase letters, digits, dashes, underscores but not digits only validates_format_of :identifier, :with => /\A(?!\d+$)[a-z0-9\-_]*\z/, :allow_blank => true # Checks if the SCM is enabled when creating a repository validate :repo_create_validation, :on => :create validate :validate_repository_path safe_attributes( 'identifier', 'login', 'password', 'path_encoding', 'log_encoding', 'is_default') safe_attributes( 'url', :if => lambda {|repository, user| repository.new_record?}) def repo_create_validation unless Setting.enabled_scm.include?(self.class.name.demodulize) errors.add(:type, :invalid) end end def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == "log_encoding" attr_name = "commit_logs_encoding" end super(attr_name, *args) end # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end # Removes leading and trailing whitespace def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) end def password read_ciphered_attribute(:password) end def password=(arg) write_ciphered_attribute(:password, arg) end def scm_adapter self.class.scm_adapter_class end def scm unless @scm @scm = self.scm_adapter.new(url, root_url, login, password, path_encoding) if root_url.blank? && @scm.root_url.present? update_attribute(:root_url, @scm.root_url) end end @scm end def scm_name self.class.scm_name end def name if identifier.present? identifier elsif is_default? l(:field_repository_is_default) else scm_name end end def identifier=(identifier) super unless identifier_frozen? end def identifier_frozen? errors[:identifier].blank? && !(new_record? || identifier.blank?) end def identifier_param if identifier.present? identifier else id.to_s end end def <=>(repository) return nil unless repository.is_a?(Repository) if is_default? -1 elsif repository.is_default? 1 else identifier.to_s <=> repository.identifier.to_s end end def self.find_by_identifier_param(param) if /^\d+$/.match?(param.to_s) find_by_id(param) else find_by_identifier(param) end end # TODO: should return an empty hash instead of nil to avoid many ||{} def extra_info h = read_attribute(:extra_info) h.is_a?(Hash) ? h : nil end def merge_extra_info(arg) h = extra_info || {} return h if arg.nil? h.merge!(arg) write_attribute(:extra_info, h) end def report_last_commit true end def supports_cat? scm.supports_cat? end def supports_annotate? scm.supports_annotate? end def supports_history? true end def supports_directory_revisions? false end def supports_revision_graph? false end def entry(path=nil, identifier=nil) scm.entry(path, identifier) end def scm_entries(path=nil, identifier=nil) scm.entries(path, identifier) end protected :scm_entries def entries(path=nil, identifier=nil) entries = scm_entries(path, identifier) load_entries_changesets(entries) entries end def branches scm.branches end def tags scm.tags end def default_branch nil end def properties(path, identifier=nil) scm.properties(path, identifier) end def cat(path, identifier=nil) scm.cat(path, identifier) end def diff(path, rev, rev_to) scm.diff(path, rev, rev_to) end def diff_format_revisions(cs, cs_to, sep=':') text = "" text += cs_to.format_identifier + sep if cs_to text += cs.format_identifier if cs text end # Returns a path relative to the url of the repository def relative_path(path) path end # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.blank? s = name.to_s if /^\d*$/.match?(s) changesets.find_by(:revision => s) else changesets.where("revision LIKE ?", s + '%').first end end def latest_changeset @latest_changeset ||= changesets.first end # Returns the latest changesets for +path+ # Default behaviour is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? changesets. reorder("#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"). limit(limit). preload(:user). to_a else filechanges. where("path = ?", path.with_leading_slash). reorder("#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"). limit(limit). preload(:changeset => :user). collect(&:changeset) end end def scan_changesets_for_issue_ids self.changesets.each(&:scan_comment_for_issue_ids) end # Returns an array of committers usernames and associated user_id def committers @committers ||= Changeset.where(:repository_id => id).distinct.pluck(:committer, :user_id) end # Maps committers username to a user ids def committer_ids=(h) if h.is_a?(Hash) committers.each do |committer, user_id| new_user_id = h[committer] if new_user_id && (new_user_id.to_i != user_id.to_i) new_user_id = (new_user_id.to_i > 0 ? new_user_id.to_i : nil) Changeset.where(["repository_id = ? AND committer = ?", id, committer]). update_all("user_id = #{new_user_id.nil? ? 'NULL' : new_user_id}") end end @committers = nil @found_committer_users = nil true else false end end # Returns the Redmine User corresponding to the given +committer+ # It will return nil if the committer is not yet mapped and if no User # with the same username or email was found def find_committer_user(committer) unless committer.blank? @found_committer_users ||= {} return @found_committer_users[committer] if @found_committer_users.has_key?(committer) user = nil c = changesets.where(:committer => committer). includes(:user).references(:user).first if c && c.user user = c.user elsif committer.strip =~ /^([^<]+)(<(.*)>)?$/ username, email = $1.strip, $3 u = User.find_by_login(username) u ||= User.find_by_mail(email) unless email.blank? user = u end @found_committer_users[committer] = user user end end def repo_log_encoding encoding = log_encoding.to_s.strip encoding.blank? ? 'UTF-8' : encoding end # Fetches new changesets for all repositories of active projects # Can be called periodically by an external script # eg. ruby script/runner "Repository.fetch_changesets" def self.fetch_changesets Project.active.has_module(:repository).all.each do |project| project.repositories.each do |repository| begin repository.fetch_changesets rescue Redmine::Scm::Adapters::CommandFailed => e logger.error "scm: error during fetching changesets: #{e.message}" end end end end # scan changeset comments to find related and fixed issues for all repositories def self.scan_changesets_for_issue_ids all.each(&:scan_changesets_for_issue_ids) end def self.scm_name 'Abstract' end def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end def self.factory(klass_name, *args) repository_class(klass_name).new(*args) rescue nil end def self.repository_class(class_name) class_name = class_name.to_s.camelize if Redmine::Scm::Base.all.include?(class_name) "Repository::#{class_name}".constantize end end def self.scm_adapter_class nil end def self.scm_command ret = "" begin ret = self.scm_adapter_class.client_command if self.scm_adapter_class rescue => e logger.error "scm: error during get command: #{e.message}" end ret end def self.scm_version_string ret = "" begin ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class rescue => e logger.error "scm: error during get version string: #{e.message}" end ret end def self.scm_available ret = false begin ret = self.scm_adapter_class.client_available if self.scm_adapter_class rescue => e logger.error "scm: error during get scm available: #{e.message}" end ret end def set_as_default? new_record? && project && Repository.where(:project_id => project.id).empty? end # Returns a hash with statistics by author in the following form: # { # "John Smith" => { :commits => 45, :changes => 324 }, # "Bob" => { ... } # } # # Notes: # - this hash honnors the users mapping defined for the repository def stats_by_author commits = Changeset.where("repository_id = ?", id). select("committer, user_id, count(*) as count").group("committer, user_id") # TODO: restore ordering ; this line probably never worked # commits.to_a.sort! {|x, y| x.last <=> y.last} changes = Change.joins(:changeset).where("#{Changeset.table_name}.repository_id = ?", id). select("committer, user_id, count(*) as count").group("committer, user_id") user_ids = changesets.filter_map(&:user_id).uniq authors_names = User.where(:id => user_ids).inject({}) do |memo, user| memo[user.id] = user.to_s memo end (commits + changes).inject({}) do |hash, element| mapped_name = element.committer if username = authors_names[element.user_id.to_i] mapped_name = username end hash[mapped_name] ||= {:commits_count => 0, :changes_count => 0} if element.is_a?(Changeset) hash[mapped_name][:commits_count] += element.count.to_i else hash[mapped_name][:changes_count] += element.count.to_i end hash end end # Returns a scope of changesets that come from the same commit as the given changeset # in different repositories that point to the same backend def same_commits_in_scope(scope, changeset) scope = scope.joins(:repository).where(:repositories => {:url => url, :root_url => root_url, :type => type}) if changeset.scmid.present? scope = scope.where(:scmid => changeset.scmid) else scope = scope.where(:revision => changeset.revision) end scope end def valid_name?(name) scm.valid_name?(name) end protected # Validates repository url based against an optional regular expression # that can be set in the Redmine configuration file. def validate_repository_path(attribute=:url) regexp = Redmine::Configuration["scm_#{scm_name.to_s.downcase}_path_regexp"] if changes[attribute] && regexp.present? regexp = regexp.to_s.strip.gsub('%project%') {Regexp.escape(project.try(:identifier).to_s)} unless Regexp.new("\\A#{regexp}\\z").match?(send(attribute).to_s) errors.add(attribute, :invalid) end end end def normalize_identifier self.identifier = identifier.to_s.strip end def check_default if !is_default? && set_as_default? self.is_default = true end if is_default? && is_default_changed? Repository.where(["project_id = ?", project_id]).update_all(["is_default = ?", false]) end end def load_entries_changesets(entries) if entries entries.each do |entry| if entry.lastrev && entry.lastrev.identifier entry.changeset = find_changeset_by_name(entry.lastrev.identifier) end end end end private # Deletes repository data def clear_changesets cs = Changeset.table_name ch = Change.table_name ci = "#{table_name_prefix}changesets_issues#{table_name_suffix}" cp = "#{table_name_prefix}changeset_parents#{table_name_suffix}" self.class.connection.delete("DELETE FROM #{ch} WHERE #{ch}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") self.class.connection.delete("DELETE FROM #{ci} WHERE #{ci}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") self.class.connection.delete("DELETE FROM #{cp} WHERE #{cp}.changeset_id IN (SELECT #{cs}.id FROM #{cs} WHERE #{cs}.repository_id = #{id})") self.class.connection.delete("DELETE FROM #{cs} WHERE #{cs}.repository_id = #{id}") end end redmine-6.0.5/app/models/repository/000077500000000000000000000000001500112024600174165ustar00rootroot00000000000000redmine-6.0.5/app/models/repository/bazaar.rb000066400000000000000000000105251500112024600212060ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/bazaar_adapter' class Repository::Bazaar < Repository validates_presence_of :url, :log_encoding def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == "url" attr_name = "path_to_repository" end super(attr_name, *args) end def self.scm_adapter_class Redmine::Scm::Adapters::BazaarAdapter end def self.scm_name 'Bazaar' end def entry(path=nil, identifier=nil) scm.bzr_path_encodig = log_encoding scm.entry(path, identifier) end def cat(path, identifier=nil) scm.bzr_path_encodig = log_encoding scm.cat(path, identifier) end def annotate(path, identifier=nil) scm.bzr_path_encodig = log_encoding scm.annotate(path, identifier) end def diff(path, rev, rev_to) scm.bzr_path_encodig = log_encoding scm.diff(path, rev, rev_to) end def scm_entries(path=nil, identifier=nil) scm.bzr_path_encodig = log_encoding entries = scm.entries(path, identifier) if entries entries.each do |e| next if e.lastrev.revision.blank? # Set the filesize unless browsing a specific revision if identifier.nil? && e.is_file? full_path = File.join(root_url, e.path) e.size = File.stat(full_path).size if File.file?(full_path) end c = Change. includes(:changeset). where("#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", e.lastrev.revision, id). order("#{Changeset.table_name}.revision DESC"). first if c e.lastrev.identifier = c.changeset.revision e.lastrev.name = c.changeset.revision e.lastrev.author = c.changeset.committer end end end entries end protected :scm_entries def fetch_changesets scm.bzr_path_encodig = log_encoding scm_info = scm.info if scm_info # latest revision found in database db_revision = latest_changeset ? latest_changeset.revision.to_i : 0 # latest revision in the repository scm_revision = scm_info.lastrev.identifier.to_i if db_revision < scm_revision logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? identifier_from = db_revision + 1 while identifier_from <= scm_revision # loads changesets by batches of 200 identifier_to = [identifier_from + 199, scm_revision].min revisions = scm.revisions('', identifier_to, identifier_from) unless revisions.nil? transaction do revisions.reverse_each do |revision| changeset = Changeset.create(:repository => self, :revision => revision.identifier, :committer => revision.author, :committed_on => revision.time, :scmid => revision.scmid, :comments => revision.message) revision.paths.each do |change| Change.create(:changeset => changeset, :action => change[:action], :path => change[:path], :revision => change[:revision]) end end end end identifier_from = identifier_to + 1 end end end end end redmine-6.0.5/app/models/repository/cvs.rb000066400000000000000000000174031500112024600205430ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/cvs_adapter' require 'digest/sha1' class Repository::Cvs < Repository validates_presence_of :url, :root_url, :log_encoding safe_attributes( 'root_url', :if => lambda {|repository, user| repository.new_record?}) def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == "root_url" attr_name = "cvsroot" elsif attr_name == "url" attr_name = "cvs_module" end super(attr_name, *args) end def self.scm_adapter_class Redmine::Scm::Adapters::CvsAdapter end def self.scm_name 'CVS' end def entry(path=nil, identifier=nil) rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) end def scm_entries(path=nil, identifier=nil) rev = nil unless identifier.nil? rev = changesets.find_by_revision(identifier) return nil if rev.nil? end entries = scm.entries(path, rev.nil? ? nil : rev.committed_on) if entries entries.each do |entry| if (! entry.lastrev.nil?) && (! entry.lastrev.revision.nil?) change = filechanges.where( :revision => entry.lastrev.revision, :path => scm.with_leading_slash(entry.path) ).first if change entry.lastrev.identifier = change.changeset.revision entry.lastrev.revision = change.changeset.revision entry.lastrev.author = change.changeset.committer # entry.lastrev.branch = change.branch end end end end entries end protected :scm_entries def cat(path, identifier=nil) rev = nil unless identifier.nil? rev = changesets.find_by_revision(identifier) return nil if rev.nil? end scm.cat(path, rev.nil? ? nil : rev.committed_on) end def annotate(path, identifier=nil) rev = nil unless identifier.nil? rev = changesets.find_by_revision(identifier) return nil if rev.nil? end scm.annotate(path, rev.nil? ? nil : rev.committed_on) end def diff(path, rev, rev_to) # convert rev to revision. CVS can't handle changesets here diff=[] changeset_from = changesets.find_by_revision(rev) if rev_to.to_i > 0 changeset_to = changesets.find_by_revision(rev_to) end changeset_from.filechanges.each do |change_from| revision_from = nil revision_to = nil if path.nil? || (change_from.path.starts_with? scm.with_leading_slash(path)) revision_from = change_from.revision end if revision_from if changeset_to changeset_to.filechanges.each do |change_to| revision_to = change_to.revision if change_to.path == change_from.path end end unless revision_to revision_to = scm.get_previous_revision(revision_from) end file_diff = scm.diff(change_from.path, revision_from, revision_to) diff = diff + file_diff unless file_diff.nil? end end return diff end def fetch_changesets # some nifty bits to introduce a commit-id with cvs # natively cvs doesn't provide any kind of changesets, # there is only a revision per file. # we now take a guess using the author, the commitlog and the commit-date. # last one is the next step to take. the commit-date is not equal for all # commits in one changeset. cvs update the commit-date when the *,v file was touched. so # we use a small delta here, to merge all changes belonging to _one_ changeset time_delta = 10.seconds fetch_since = latest_changeset ? latest_changeset.committed_on : nil transaction do tmp_rev_num = 1 scm.revisions('', fetch_since, nil, :log_encoding => repo_log_encoding) do |revision| # only add the change to the database, if it doen't exists. the cvs log # is not exclusive at all. tmp_time = revision.time.clone unless filechanges. find_by_path_and_revision( scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision] ) cmt = Changeset.normalize_comments(revision.message, repo_log_encoding) author_utf8 = Changeset.to_utf8(revision.author, repo_log_encoding) cs = changesets.where( :committed_on => (tmp_time - time_delta)..(tmp_time + time_delta), :committer => author_utf8, :comments => cmt ).first # create a new changeset.... unless cs # we use a temporary revision number here (just for inserting) # later on, we calculate a continuous positive number tmp_time2 = tmp_time.clone.gmtime branch = revision.paths[0][:branch] scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") cs = Changeset.create(:repository => self, :revision => "tmp#{tmp_rev_num}", :scmid => scmid, :committer => revision.author, :committed_on => tmp_time, :comments => revision.message) tmp_rev_num += 1 end # convert CVS-File-States to internal Action-abbreviations # default action is (M)odified action = "M" if revision.paths[0][:action] == "Exp" && revision.paths[0][:revision] == "1.1" action = "A" # add-action always at first revision (= 1.1) elsif revision.paths[0][:action] == "dead" action = "D" # dead-state is similar to Delete end Change.create( :changeset => cs, :action => action, :path => scm.with_leading_slash(revision.paths[0][:path]), :revision => revision.paths[0][:revision], :branch => revision.paths[0][:branch] ) end end # Renumber new changesets in chronological order Changeset. order('committed_on ASC, id ASC'). where("repository_id = ? AND revision LIKE 'tmp%'", id). each do |changeset| changeset.update_attribute :revision, next_revision_number end end @current_revision_number = nil end protected # Overrides Repository#validate_repository_path to validate # against root_url attribute. def validate_repository_path(attribute=:root_url) super end private # Returns the next revision number to assign to a CVS changeset def next_revision_number # Need to retrieve existing revision numbers to sort them as integers sql = "SELECT revision FROM #{Changeset.table_name} " \ "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'" @current_revision_number ||= (self.class.connection.select_values(sql).collect(&:to_i).max || 0) @current_revision_number += 1 end end redmine-6.0.5/app/models/repository/filesystem.rb000066400000000000000000000026171500112024600221350ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # FileSystem adapter # File written by Paul Rivier, at Demotera. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/filesystem_adapter' class Repository::Filesystem < Repository validates_presence_of :url def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == "url" attr_name = "root_directory" end super(attr_name, *args) end def self.scm_adapter_class Redmine::Scm::Adapters::FilesystemAdapter end def self.scm_name 'Filesystem' end def supports_history? false end def fetch_changesets nil end end redmine-6.0.5/app/models/repository/git.rb000066400000000000000000000177321500112024600205400ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # Copyright (C) 2007 Patrick Aljord patcito@Å‹mail.com # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/git_adapter' class Repository::Git < Repository validates_presence_of :url safe_attributes 'report_last_commit' def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s attr_name = 'path_to_repository' if attr_name == 'url' super(attr_name, *args) end def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end def self.scm_name 'Git' end def report_last_commit return false if extra_info.nil? v = extra_info["extra_report_last_commit"] return false if v.nil? v.to_s != '0' end def report_last_commit=(arg) merge_extra_info "extra_report_last_commit" => arg end def supports_directory_revisions? true end def supports_revision_graph? true end def repo_log_encoding 'UTF-8' end # Returns the identifier for the given git changeset def self.changeset_identifier(changeset) changeset.scmid end # Returns the readable identifier for the given git changeset def self.format_changeset_identifier(changeset) changeset.revision[0, 8] end def branches scm.branches end def tags scm.tags end def default_branch scm.default_branch rescue => e logger.error "git: error during get default branch: #{e.message}" nil end def find_changeset_by_name(name) return if name.blank? changesets.find_by(:revision => name.to_s) || changesets.where('scmid LIKE ?', "#{name}%").first end def scm_entries(path=nil, identifier=nil) scm.entries(path, identifier, :report_last_commit => report_last_commit) end protected :scm_entries # With SCMs that have a sequential commit numbering, # such as Subversion and Mercurial, # Redmine is able to be clever and only fetch changesets # going forward from the most recent one it knows about. # # However, Git does not have a sequential commit numbering. # # In order to fetch only new adding revisions, # Redmine needs to save "heads". # # In Git and Mercurial, revisions are not in date order. # Redmine Mercurial fixed issues. # * Redmine Takes Too Long On Large Mercurial Repository # http://www.redmine.org/issues/3449 # * Sorting for changesets might go wrong on Mercurial repos # http://www.redmine.org/issues/3567 # # Database revision column is text, so Redmine can not sort by revision. # Mercurial has revision number, and revision number guarantees revision order. # Redmine Mercurial model stored revisions ordered by database id to database. # So, Redmine Mercurial model can use correct ordering revisions. # # Redmine Mercurial adapter uses "hg log -r 0:tip --limit 10" # to get limited revisions from old to new. # But, Git 1.7.3.4 does not support --reverse with -n or --skip. # # The repository can still be fully reloaded by calling #clear_changesets # before fetching changesets (eg. for offline resync) def fetch_changesets scm_brs = branches return if scm_brs.blank? h = extra_info.dup || {} repo_heads = scm_brs.map(&:scmid) prev_db_heads = h["heads"].dup || [] prev_db_heads += heads_from_branches_hash if prev_db_heads.empty? return if prev_db_heads.sort == repo_heads.sort h["db_consistent"] ||= {} if ! changesets.exists? h["db_consistent"]["ordering"] = 1 merge_extra_info(h) self.save elsif ! h["db_consistent"].has_key?("ordering") h["db_consistent"]["ordering"] = 0 merge_extra_info(h) self.save end save_revisions(prev_db_heads, repo_heads) end def save_revisions(prev_db_heads, repo_heads) h = {} opts = {} opts[:reverse] = true opts[:excludes] = prev_db_heads opts[:includes] = repo_heads revisions = scm.revisions('', nil, nil, opts) return if revisions.blank? # Make the search for existing revisions in the database in a more sufficient manner # # Git branch is the reference to the specific revision. # Git can *delete* remote branch and *re-push* branch. # # $ git push remote :branch # $ git push remote branch # # After deleting branch, revisions remain in repository until "git gc". # On git 1.7.2.3, default pruning date is 2 weeks. # So, "git log --not deleted_branch_head_revision" return code is 0. # # After re-pushing branch, "git log" returns revisions which are saved in database. # So, Redmine needs to scan revisions and database every time. # # This is replacing the one-after-one queries. # Find all revisions, that are in the database, and then remove them # from the revision array. # Then later we won't need any conditions for db existence. # Query for several revisions at once, and remove them # from the revisions array, if they are there. # Do this in chunks, to avoid eventual memory problems # (in case of tens of thousands of commits). # If there are no revisions (because the original code's algorithm filtered them), # then this part will be stepped over. # We make queries, just if there is any revision. limit = 100 offset = 0 revisions_copy = revisions.clone # revisions will change while offset < revisions_copy.size scmids = revisions_copy.slice(offset, limit).map(&:scmid) recent_changesets_slice = changesets.where(:scmid => scmids) # Subtract revisions that redmine already knows about recent_revisions = recent_changesets_slice.map(&:scmid) revisions.reject!{|r| recent_revisions.include?(r.scmid)} offset += limit end revisions.each do |rev| transaction do # There is no search in the db for this revision, because above we ensured, # that it's not in the db. save_revision(rev) end end h["heads"] = repo_heads.dup merge_extra_info(h) save(:validate => false) end private :save_revisions def save_revision(rev) parents = (rev.parents || []).filter_map{|rp| find_changeset_by_name(rp)} changeset = Changeset.create( :repository => self, :revision => rev.identifier, :scmid => rev.scmid, :committer => rev.author.truncate(255), :committed_on => rev.time, :comments => rev.message, :parents => parents ) rev.paths.each {|change| changeset.create_change(change)} unless changeset.new_record? changeset end private :save_revision def heads_from_branches_hash h = extra_info.dup || {} h["branches"] ||= {} h['branches'].map{|br, hs| hs['last_scmid']} end def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, nil, rev, :limit => limit, :all => false) return [] if revisions.blank? changesets.where(:scmid => revisions.map(&:scmid)).to_a end def clear_extra_info_of_changesets return if extra_info.nil? v = extra_info["extra_report_last_commit"] write_attribute(:extra_info, nil) merge_extra_info({"extra_report_last_commit" => v}) save(:validate => false) end private :clear_extra_info_of_changesets def clear_changesets super clear_extra_info_of_changesets end private :clear_changesets end redmine-6.0.5/app/models/repository/mercurial.rb000066400000000000000000000153351500112024600217350ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/mercurial_adapter' class Repository::Mercurial < Repository # sort changesets by revision number has_many :changesets, lambda {order("#{Changeset.table_name}.id DESC")}, :foreign_key => 'repository_id' validates_presence_of :url # number of changesets to fetch at once FETCH_AT_ONCE = 100 def self.human_attribute_name(attribute_key_name, *args) attr_name = attribute_key_name.to_s if attr_name == "url" attr_name = "path_to_repository" end super(attr_name, *args) end def self.scm_adapter_class Redmine::Scm::Adapters::MercurialAdapter end def self.scm_name 'Mercurial' end def supports_directory_revisions? true end def supports_revision_graph? true end def repo_log_encoding 'UTF-8' end # Returns the readable identifier for the given mercurial changeset def self.format_changeset_identifier(changeset) "#{changeset.revision}:#{changeset.scmid[0, 12]}" end # Returns the identifier for the given Mercurial changeset def self.changeset_identifier(changeset) changeset.scmid end def diff_format_revisions(cs, cs_to, sep=':') super(cs, cs_to, ' ') end def modify_entry_lastrev_identifier(entry) if entry.lastrev && entry.lastrev.identifier entry.lastrev.identifier = scmid_for_inserting_db(entry.lastrev.identifier) end end private :modify_entry_lastrev_identifier def entry(path=nil, identifier=nil) entry = scm.entry(path, identifier) return nil if entry.nil? modify_entry_lastrev_identifier(entry) entry end def scm_entries(path=nil, identifier=nil) entries = scm.entries(path, identifier) return nil if entries.nil? entries.each {|entry| modify_entry_lastrev_identifier(entry)} entries end protected :scm_entries # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.blank? s = name.to_s if /[^\d]/.match?(s) || s.size > 8 cs = changesets.where(:scmid => s).first else cs = changesets.find_by(:revision => s) end return cs if cs changesets.where('scmid LIKE ?', "#{s}%").first end # Returns the latest changesets for +path+; sorted by revision number # # Because :order => 'id DESC' is defined at 'has_many', # there is no need to set 'order'. # But, MySQL test fails. # Sqlite3 and PostgreSQL pass. # Is this MySQL bug? def latest_changesets(path, rev, limit=10) changesets. includes(:user). where(latest_changesets_cond(path, rev, limit)). references(:user). limit(limit). order("#{Changeset.table_name}.id DESC"). to_a end def is_short_id_in_db? return @is_short_id_in_db unless @is_short_id_in_db.nil? cs = changesets.first @is_short_id_in_db = (!cs.nil? && cs.scmid.length != 40) end private :is_short_id_in_db? def scmid_for_inserting_db(scmid) is_short_id_in_db? ? scmid[0, 12] : scmid end def nodes_in_branch(rev, branch_limit) scm.nodes_in_branch(rev, :limit => branch_limit).collect do |b| scmid_for_inserting_db(b) end end def tag_scmid(rev) scmid = scm.tagmap[rev] scmid.nil? ? nil : scmid_for_inserting_db(scmid) end def latest_changesets_cond(path, rev, limit) cond, args = [], [] if scm.branchmap.member? rev # Mercurial named branch is *stable* in each revision. # So, named branch can be stored in database. # Mercurial provides *bookmark* which is equivalent with git branch. # But, bookmark is not implemented. cond << "#{Changeset.table_name}.scmid IN (?)" # Revisions in root directory and sub directory are not equal. # So, in order to get correct limit, we need to get all revisions. # But, it is very heavy. # Mercurial does not treat directory. # So, "hg log DIR" is very heavy. branch_limit = path.blank? ? limit : (limit * 5) args << nodes_in_branch(rev, branch_limit) elsif last = rev ? find_changeset_by_name(tag_scmid(rev) || rev) : nil cond << "#{Changeset.table_name}.id <= ?" args << last.id end unless path.blank? cond << "EXISTS (SELECT * FROM #{Change.table_name} WHERE #{Change.table_name}.changeset_id = #{Changeset.table_name}.id AND (#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?))" args << path.with_leading_slash args << "#{path.with_leading_slash.gsub(%r{[%_\\]}) {|s| "\\#{s}"}}/%" << '\\' end [cond.join(' AND '), *args] unless cond.empty? end private :latest_changesets_cond def fetch_changesets return if scm.info.nil? scm_rev = scm.info.lastrev.revision.to_i db_rev = latest_changeset ? latest_changeset.revision.to_i : -1 return unless db_rev < scm_rev # already up-to-date logger.debug "Fetching changesets for repository #{url}" if logger (db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i| scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re| transaction do parents = (re.parents || []).filter_map do |rp| find_changeset_by_name(scmid_for_inserting_db(rp)) end cs = Changeset.create(:repository => self, :revision => re.revision, :scmid => scmid_for_inserting_db(re.scmid), :committer => re.author, :committed_on => re.time, :comments => re.message, :parents => parents) unless cs.new_record? re.paths.each do |e| if from_revision = e[:from_revision] e[:from_revision] = scmid_for_inserting_db(from_revision) end cs.create_change(e) end end end end end end end redmine-6.0.5/app/models/repository/subversion.rb000066400000000000000000000101501500112024600221370ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/scm/adapters/subversion_adapter' class Repository::Subversion < Repository validates_presence_of :url validates_format_of :url, :with => %r{\A(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+}i def self.scm_adapter_class Redmine::Scm::Adapters::SubversionAdapter end def self.scm_name 'Subversion' end def supports_directory_revisions? true end def repo_log_encoding 'UTF-8' end def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, rev, nil, :limit => limit) if revisions identifiers = revisions.filter_map(&:identifier) changesets.where(:revision => identifiers).reorder("committed_on DESC").includes(:repository, :user).to_a else [] end end # Returns a path relative to the url of the repository def relative_path(path) path.gsub(Regexp.new("^/?#{Regexp.escape(relative_url)}"), '') end def fetch_changesets scm_info = scm.info if scm_info # latest revision found in database db_revision = latest_changeset ? latest_changeset.revision.to_i : 0 # latest revision in the repository scm_revision = scm_info.lastrev.identifier.to_i if db_revision < scm_revision logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? identifier_from = db_revision + 1 while (identifier_from <= scm_revision) # loads changesets by batches of 200 identifier_to = [identifier_from + 199, scm_revision].min revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) unless revisions.nil? revisions.reverse_each do |revision| transaction do changeset = Changeset.create(:repository => self, :revision => revision.identifier, :committer => revision.author, :committed_on => revision.time, :comments => revision.message) unless changeset.new_record? revision.paths.each do |change| changeset.create_change(change) end end end end end identifier_from = identifier_to + 1 end end end end protected def load_entries_changesets(entries) return unless entries entries_with_identifier = entries.select {|entry| entry.lastrev && entry.lastrev.identifier.present?} identifiers = entries_with_identifier.filter_map {|entry| entry.lastrev.identifier}.uniq if identifiers.any? changesets_by_identifier = changesets.where(:revision => identifiers). includes(:user, :repository).group_by(&:revision) entries_with_identifier.each do |entry| if m = changesets_by_identifier[entry.lastrev.identifier] entry.changeset = m.first end end end end private # Returns the relative url of the repository # Eg: root_url = file:///var/svn/foo # url = file:///var/svn/foo/bar # => returns /bar def relative_url @relative_url ||= url.gsub(Regexp.new("^#{Regexp.escape(root_url || scm.root_url)}", Regexp::IGNORECASE), '') end end redmine-6.0.5/app/models/role.rb000066400000000000000000000236451500112024600164770ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Role < ApplicationRecord include Redmine::SafeAttributes # Custom coder for the permissions attribute that should be an # array of symbols. Rails 3 uses Psych which can be *unbelievably* # slow on some platforms (eg. mingw32). class PermissionsAttributeCoder def self.load(str) str.to_s.scan(/:([a-z0-9_]+)/).flatten.map(&:to_sym) end def self.dump(value) YAML.dump(value) end end # Built-in roles BUILTIN_NON_MEMBER = 1 BUILTIN_ANONYMOUS = 2 ISSUES_VISIBILITY_OPTIONS = [ ['all', :label_issues_visibility_all], ['default', :label_issues_visibility_public], ['own', :label_issues_visibility_own] ] TIME_ENTRIES_VISIBILITY_OPTIONS = [ ['all', :label_time_entries_visibility_all], ['own', :label_time_entries_visibility_own] ] USERS_VISIBILITY_OPTIONS = [ ['all', :label_users_visibility_all], ['members_of_visible_projects', :label_users_visibility_members_of_visible_projects] ] scope :sorted, lambda {order(:builtin, :position)} scope :givable, lambda {order(:position).where(:builtin => 0)} scope :builtin, (lambda do |*args| compare = (args.first == true ? 'not' : '') where("#{compare} builtin = 0") end) belongs_to :default_time_entry_activity, :class_name => 'TimeEntryActivity' before_destroy :check_deletable has_many :workflow_rules, :dependent => :delete_all has_and_belongs_to_many :custom_fields, :join_table => "#{table_name_prefix}custom_fields_roles#{table_name_suffix}", :foreign_key => "role_id" has_and_belongs_to_many :managed_roles, :class_name => 'Role', :join_table => "#{table_name_prefix}roles_managed_roles#{table_name_suffix}", :association_foreign_key => "managed_role_id" has_and_belongs_to_many :queries, :join_table => "#{table_name_prefix}queries_roles#{table_name_suffix}", :foreign_key => "role_id" has_many :member_roles, :dependent => :destroy has_many :members, :through => :member_roles acts_as_positioned :scope => :builtin serialize :permissions, coder: ::Role::PermissionsAttributeCoder store :settings, :accessors => [:permissions_all_trackers, :permissions_tracker_ids] validates_presence_of :name validates_uniqueness_of :name, :case_sensitive => true validates_length_of :name, :maximum => 255 validates_inclusion_of( :issues_visibility, :in => ISSUES_VISIBILITY_OPTIONS.collect(&:first), :if => lambda {|role| role.respond_to?(:issues_visibility) && role.issues_visibility_changed?}) validates_inclusion_of( :users_visibility, :in => USERS_VISIBILITY_OPTIONS.collect(&:first), :if => lambda {|role| role.respond_to?(:users_visibility) && role.users_visibility_changed?}) validates_inclusion_of( :time_entries_visibility, :in => TIME_ENTRIES_VISIBILITY_OPTIONS.collect(&:first), :if => lambda {|role| role.respond_to?(:time_entries_visibility) && role.time_entries_visibility_changed?}) safe_attributes( 'name', 'assignable', 'position', 'issues_visibility', 'users_visibility', 'time_entries_visibility', 'all_roles_managed', 'managed_role_ids', 'permissions', 'permissions_all_trackers', 'permissions_tracker_ids', 'default_time_entry_activity_id' ) # Copies attributes from another role, arg can be an id or a Role def copy_from(arg, options={}) return unless arg.present? role = arg.is_a?(Role) ? arg : Role.find_by_id(arg.to_s) self.attributes = role.attributes.dup.except("id", "name", "position", "builtin", "permissions") self.permissions = role.permissions.dup self.managed_role_ids = role.managed_role_ids.dup self end def permissions=(perms) perms = perms.filter_map {|p| p.to_sym unless p.blank?}.uniq if perms write_attribute(:permissions, perms) end def add_permission!(*perms) self.permissions = [] unless permissions.is_a?(Array) permissions_will_change! perms.each do |p| p = p.to_sym permissions << p unless permissions.include?(p) end save! end def remove_permission!(*perms) return unless permissions.is_a?(Array) permissions_will_change! perms.each {|p| permissions.delete(p.to_sym)} save! end # Returns true if the role has the given permission def has_permission?(perm) !permissions.nil? && permissions.include?(perm.to_sym) end def consider_workflow? has_permission?(:add_issues) || has_permission?(:edit_issues) end def <=>(role) # returns -1 for nil since r2726 return -1 if role.nil? return nil unless role.is_a?(Role) if builtin == role.builtin position <=> role.position else builtin <=> role.builtin end end def to_s name end def name case builtin when 1 then l(:label_role_non_member, :default => read_attribute(:name)) when 2 then l(:label_role_anonymous, :default => read_attribute(:name)) else read_attribute(:name) end end # Return true if the role is a builtin role def builtin? self.builtin != 0 end # Return true if the role is the anonymous role def anonymous? builtin == 2 end # Return true if the role is a project member role def member? !self.builtin? end # Return true if role is allowed to do the specified action # action can be: # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a permission Symbol (eg. :edit_project) def allowed_to?(action) if action.is_a? Hash allowed_actions.include? "#{action[:controller]}/#{action[:action]}" else allowed_permissions.include? action end end # Return all the permissions that can be given to the role def setable_permissions setable_permissions = Redmine::AccessControl.permissions - Redmine::AccessControl.public_permissions setable_permissions -= Redmine::AccessControl.members_only_permissions if self.builtin == BUILTIN_NON_MEMBER setable_permissions -= Redmine::AccessControl.loggedin_only_permissions if self.builtin == BUILTIN_ANONYMOUS setable_permissions end def permissions_tracker_ids(*args) if args.any? Array(permissions_tracker_ids[args.first.to_s]).map(&:to_i) else super || {} end end def permissions_tracker_ids=(arg) h = arg.to_hash h.each_value {|v| v.reject!(&:blank?)} super(h) end # Returns true if tracker_id belongs to the list of # trackers for which permission is given def permissions_tracker_ids?(permission, tracker_id) return false unless has_permission?(permission) permissions_tracker_ids(permission).include?(tracker_id) end def permissions_all_trackers super || {} end def permissions_all_trackers=(arg) super(arg.to_hash) end # Returns true if permission is given for all trackers def permissions_all_trackers?(permission) return false unless has_permission?(permission) permissions_all_trackers[permission.to_s].to_s != '0' end # Returns true if permission is given for the tracker # (explicitly or for all trackers) def permissions_tracker?(permission, tracker) permissions_all_trackers?(permission) || permissions_tracker_ids?(permission, tracker.try(:id)) end # Sets the trackers that are allowed for a permission. # tracker_ids can be an array of tracker ids or :all for # no restrictions. # # Examples: # role.set_permission_trackers :add_issues, [1, 3] # role.set_permission_trackers :add_issues, :all def set_permission_trackers(permission, tracker_ids) h = {permission.to_s => (tracker_ids == :all ? '1' : '0')} self.permissions_all_trackers = permissions_all_trackers.merge(h) h = {permission.to_s => (tracker_ids == :all ? [] : tracker_ids)} self.permissions_tracker_ids = permissions_tracker_ids.merge(h) self end def copy_workflow_rules(source_role) WorkflowRule.copy(nil, source_role, nil, self) end # Find all the roles that can be given to a project member def self.find_all_givable Role.givable.to_a end # Return the builtin 'non member' role. If the role doesn't exist, # it will be created on the fly. def self.non_member find_or_create_system_role(BUILTIN_NON_MEMBER, 'Non member') end # Return the builtin 'anonymous' role. If the role doesn't exist, # it will be created on the fly. def self.anonymous find_or_create_system_role(BUILTIN_ANONYMOUS, 'Anonymous') end private def allowed_permissions @allowed_permissions ||= permissions + Redmine::AccessControl.public_permissions.collect {|p| p.name} end def allowed_actions @actions_allowed ||= allowed_permissions.inject([]) do |actions, permission| actions += Redmine::AccessControl.allowed_actions(permission) end.flatten end def check_deletable raise "Cannot delete role" if members.any? raise "Cannot delete builtin role" if builtin? end def self.find_or_create_system_role(builtin, name) role = unscoped.find_by(:builtin => builtin) if role.nil? role = unscoped.create(:name => name) do |r| r.builtin = builtin end raise "Unable to create the #{name} role (#{role.errors.full_messages.join(',')})." if role.new_record? end role end private_class_method :find_or_create_system_role end redmine-6.0.5/app/models/setting.rb000066400000000000000000000243131500112024600172040ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Setting < ApplicationRecord PASSWORD_CHAR_CLASSES = { 'uppercase' => /[A-Z]/, 'lowercase' => /[a-z]/, 'digits' => /[0-9]/, 'special_chars' => /[[:ascii:]&&[:graph:]&&[:^alnum:]]/ } DATE_FORMATS = [ '%Y-%m-%d', '%d/%m/%Y', '%d.%m.%Y', '%d-%m-%Y', '%m/%d/%Y', '%d %b %Y', '%d %B %Y', '%b %d, %Y', '%B %d, %Y' ] TIME_FORMATS = [ '%H:%M', '%I:%M %p' ] ENCODINGS = %w(US-ASCII windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 windows-31j windows-874 ISO-2022-JP ISO-8859-1 ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-6 ISO-8859-7 ISO-8859-8 ISO-8859-9 ISO-8859-13 ISO-8859-15 KOI8-R UTF-8 UTF-16 UTF-16BE UTF-16LE EUC-JP Shift_JIS CP932 CP949 GB18030 GBK EUC-KR Big5 Big5-HKSCS TIS-620) cattr_accessor :available_settings self.available_settings ||= {} validates_uniqueness_of( :name, :case_sensitive => true, :if => Proc.new do |setting| setting.new_record? || setting.name_changed? end ) validates_inclusion_of :name, :in => Proc.new {available_settings.keys} validates_numericality_of( :value, :only_integer => true, :if => Proc.new do |setting| (s = available_settings[setting.name]) && s['format'] == 'int' end ) # Hash used to cache setting values @cached_settings = {} @cached_cleared_on = Time.now def value v = read_attribute(:value) # Unserialize serialized settings if available_settings[name]['serialized'] && v.is_a?(String) v = YAML.safe_load(v, permitted_classes: Rails.configuration.active_record.yaml_column_permitted_classes) v = force_utf8_strings(v) end v = v.to_sym if available_settings[name]['format'] == 'symbol' && v.present? v end def value=(v) v = v.to_yaml if v && available_settings[name] && available_settings[name]['serialized'] write_attribute(:value, v.to_s) end # Returns the value of the setting named name def self.[](name) @cached_settings[name] ||= find_or_default(name).value end def self.[]=(name, v) setting = find_or_default(name) setting.value = v || '' @cached_settings[name] = nil setting.save setting.value end # Updates multiple settings from params and sends a security notification if needed def self.set_all_from_params(settings) return nil unless settings.is_a?(Hash) settings = settings.dup.symbolize_keys errors = validate_all_from_params(settings) return errors if errors.present? changes = [] settings.each do |name, value| next unless available_settings[name.to_s] previous_value = Setting[name] set_from_params name, value if available_settings[name.to_s]['security_notifications'] && Setting[name] != previous_value changes << name end end if changes.any? Mailer.deliver_settings_updated(User.current, changes) end nil end def self.validate_all_from_params(settings) messages = [] [ [:mail_handler_enable_regex_delimiters, :mail_handler_body_delimiters, /[\r\n]+/], [:mail_handler_enable_regex_excluded_filenames, :mail_handler_excluded_filenames, /\s*,\s*/] ].each do |enable_regex, regex_field, delimiter| if settings.key?(regex_field) || settings.key?(enable_regex) regexp = Setting.send(:"#{enable_regex}?") if settings.key?(enable_regex) regexp = settings[enable_regex].to_s != '0' end if regexp settings[regex_field].to_s.split(delimiter).each do |value| begin Regexp.new(value) rescue RegexpError => e messages << [regex_field, "#{l('activerecord.errors.messages.not_a_regexp')} (#{e.message})"] end end end end end if settings.key?(:mail_from) begin mail_from = Mail::Address.new(settings[:mail_from]) raise unless URI::MailTo::EMAIL_REGEXP.match?(mail_from.address) rescue messages << [:mail_from, l('activerecord.errors.messages.invalid')] end end messages end # Sets a setting value from params def self.set_from_params(name, params) params = params.dup params.delete_if {|v| v.blank?} if params.is_a?(Array) params.symbolize_keys! if params.is_a?(Hash) m = "#{name}_from_params" if respond_to? m self[name.to_sym] = send m, params else self[name.to_sym] = params end end # Returns a hash suitable for commit_update_keywords setting # # Example: # params = {:keywords => ['fixes', 'closes'], :status_id => ["3", "5"], :done_ratio => ["", "100"]} # Setting.commit_update_keywords_from_params(params) # # => [{'keywords => 'fixes', 'status_id' => "3"}, {'keywords => 'closes', 'status_id' => "5", 'done_ratio' => "100"}] def self.commit_update_keywords_from_params(params) s = [] if params.is_a?(Hash) && params.key?(:keywords) && params.values.all?(Array) attributes = params.except(:keywords).keys params[:keywords].each_with_index do |keywords, i| next if keywords.blank? s << attributes.inject({}) do |h, a| value = params[a][i].to_s h[a.to_s] = value if value.present? h end.merge('keywords' => keywords) end end s end def self.twofa_from_params(params) # unpair all current 2FA pairings when switching off 2FA Redmine::Twofa.unpair_all! if params == '0' && self.twofa? params end def self.twofa_required? twofa == '2' end def self.twofa_optional? %w[1 3].include? twofa end def self.twofa_required_for_administrators? twofa == '3' end # Helper that returns an array based on per_page_options setting def self.per_page_options_array per_page_options.split(%r{[\s,]}).collect(&:to_i).select {|n| n > 0}.sort end # Helper that returns a Hash with single update keywords as keys def self.commit_update_keywords_array a = [] if commit_update_keywords.is_a?(Array) commit_update_keywords.each do |rule| next unless rule.is_a?(Hash) rule = rule.dup rule.delete_if {|k, v| v.blank?} keywords = rule['keywords'].to_s.downcase.split(",").map(&:strip).reject(&:blank?) next if keywords.empty? a << rule.merge('keywords' => keywords) end end a end # Checks if settings have changed since the values were read # and clears the cache hash if it's the case # Called once per request def self.check_cache settings_updated_on = Setting.maximum(:updated_on) if settings_updated_on && @cached_cleared_on <= settings_updated_on clear_cache end end # Clears the settings cache def self.clear_cache @cached_settings.clear @cached_cleared_on = Time.now logger.info "Settings cache cleared." if logger end def self.define_plugin_setting(plugin) if plugin.settings name = "plugin_#{plugin.id}" define_setting name, {'default' => plugin.settings[:default], 'serialized' => true} end end # Defines getter and setter for each setting # Then setting values can be read using: Setting.some_setting_name # or set using Setting.some_setting_name = "some value" def self.define_setting(name, options={}) available_settings[name.to_s] = options src = <<~END_SRC def self.#{name} self[:#{name}] end def self.#{name}? self[:#{name}].to_i > 0 end def self.#{name}=(value) self[:#{name}] = value end END_SRC class_eval src, __FILE__, __LINE__ end def self.load_available_settings YAML.load_file(Rails.root.join('config/settings.yml')).each do |name, options| define_setting name, options end end def self.load_plugin_settings Redmine::Plugin.all.each do |plugin| define_plugin_setting(plugin) end end load_available_settings load_plugin_settings private def force_utf8_strings(arg) if arg.is_a?(String) arg.dup.force_encoding('UTF-8') elsif arg.is_a?(Array) arg.map do |a| force_utf8_strings(a) end elsif arg.is_a?(Hash) arg = arg.dup arg.each do |k, v| arg[k] = force_utf8_strings(v) end arg else arg end end # Returns the Setting instance for the setting named name # (record found in database or new record with default value) def self.find_or_default(name) name = name.to_s raise "There's no setting named #{name}" unless available_settings.has_key?(name) setting = where(:name => name).order(:id => :desc).first unless setting setting = new setting.name = name setting.value = available_settings[name]['default'] end setting end private_class_method :find_or_default end redmine-6.0.5/app/models/time_entry.rb000066400000000000000000000223421500112024600177060ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntry < ApplicationRecord include Redmine::SafeAttributes # could have used polymorphic association # project association here allows easy loading of time entries at project level with one database trip belongs_to :project belongs_to :issue belongs_to :user belongs_to :author, :class_name => 'User' belongs_to :activity, :class_name => 'TimeEntryActivity' acts_as_customizable acts_as_event( :title => Proc.new do |o| related = o.issue if o.issue && o.issue.visible? related ||= o.project "#{l_hours(o.hours)} (#{related.event_title})" end, :url => Proc.new do |o| {:controller => 'timelog', :action => 'index', :project_id => o.project, :issue_id => o.issue} end, :author => :user, :group => :issue, :description => :comments ) acts_as_activity_provider :timestamp => "#{table_name}.created_on", :author_key => :user_id, :scope => proc {joins(:project).preload(:project)} validates_presence_of :author_id, :user_id, :activity_id, :project_id, :hours, :spent_on validates_presence_of :issue_id, :if => lambda {Setting.timelog_required_fields.include?('issue_id')} validates_presence_of :comments, :if => lambda {Setting.timelog_required_fields.include?('comments')} validates_numericality_of :hours, :allow_nil => true, :message => :invalid validates_length_of :comments, :maximum => 1024, :allow_nil => true validates :spent_on, :date => true before_validation :set_project_if_nil # TODO: remove this, author should be always explicitly set before_validation :set_author_if_nil validate :validate_time_entry scope :visible, (lambda do |*args| joins(:project). where(TimeEntry.visible_condition(args.shift || User.current, *args)) end) scope :left_join_issue, (lambda do joins( "LEFT OUTER JOIN #{Issue.table_name}" \ " ON #{Issue.table_name}.id = #{TimeEntry.table_name}.issue_id" \ " AND (#{Issue.visible_condition(User.current)})" ) end) scope :on_issue, (lambda do |issue| joins(:issue). where("#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}") end) safe_attributes 'user_id', 'hours', 'comments', 'project_id', 'issue_id', 'activity_id', 'spent_on', 'custom_field_values', 'custom_fields' # Returns a SQL conditions string used to find all time entries visible by the specified user def self.visible_condition(user, options={}) Project.allowed_to_condition(user, :view_time_entries, options) do |role, user| if role.time_entries_visibility == 'all' nil elsif role.time_entries_visibility == 'own' && user.id && user.logged? "#{table_name}.user_id = #{user.id}" else '1=0' end end end # Returns true if user or current user is allowed to view the time entry def visible?(user=nil) (user || User.current).allowed_to?(:view_time_entries, self.project) do |role, user| if role.time_entries_visibility == 'all' true elsif role.time_entries_visibility == 'own' self.user == user else false end end end def initialize(attributes=nil, *args) super if new_record? && self.activity.nil? self.activity_id = TimeEntryActivity.default_activity_id(User.current, self.project) self.hours = nil if hours == 0 end end def safe_attributes=(attrs, user=User.current) if attrs attrs = super(attrs) if issue_id_changed? && issue if issue.visible?(user) && user.allowed_to?(:log_time, issue.project) if attrs[:project_id].blank? && issue.project_id != project_id self.project_id = issue.project_id end @invalid_issue_id = nil elsif user.allowed_to?(:log_time, issue.project) && issue.assigned_to_id_changed? && issue.previous_assignee == User.current current_assignee = issue.assigned_to issue.assigned_to = issue.previous_assignee unless issue.visible?(user) @invalid_issue_id = issue_id end issue.assigned_to = current_assignee else @invalid_issue_id = issue_id end end if user_id_changed? && user_id != author_id && !user.allowed_to?(:log_time_for_other_users, project) @invalid_user_id = user_id else @invalid_user_id = nil end # Delete assigned custom fields not visible by the user editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} self.custom_field_values.delete_if do |c| !editable_custom_field_ids.include?(c.custom_field.id.to_s) end end attrs end def set_project_if_nil self.project = issue.project if issue && project.nil? end def set_author_if_nil self.author = User.current if author.nil? end def validate_time_entry if hours errors.add :hours, :invalid if hours < 0 errors.add :hours, :invalid if hours == 0.0 && hours_changed? && !Setting.timelog_accept_0_hours? max_hours = Setting.timelog_max_hours_per_day.to_f if hours_changed? && max_hours > 0.0 logged_hours = other_hours_with_same_user_and_day if logged_hours + hours > max_hours errors.add( :base, I18n.t(:error_exceeds_maximum_hours_per_day, :logged_hours => format_hours(logged_hours), :max_hours => format_hours(max_hours))) end end end errors.add :project_id, :invalid if project.nil? if @invalid_user_id || (user_id_changed? && user_id != author_id && !self.assignable_users.map(&:id).include?(user_id)) errors.add :user_id, :invalid end errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project) || @invalid_issue_id errors.add :activity_id, :inclusion if activity_id_changed? && project && !project.activities.include?(activity) if spent_on && spent_on_changed? && user errors.add :base, I18n.t(:error_spent_on_future_date) if !Setting.timelog_accept_future_dates? && (spent_on > user.today) end end def hours=(h) write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h) end def hours h = read_attribute(:hours) if h.is_a?(Float) # Convert the float value to a rational with a denominator of 60 to # avoid floating point errors. # # Examples: # 0.38333333333333336 => (23/60) # 23m # 0.9913888888888889 => (59/60) # 59m 29s is rounded to 59m # 0.9919444444444444 => (1/1) # 59m 30s is rounded to 60m (h * 60).round / 60r else h end end # tyear, tmonth, tweek assigned where setting spent_on attributes # these attributes make time aggregations easier def spent_on=(date) super self.tyear = spent_on ? spent_on.year : nil self.tmonth = spent_on ? spent_on.month : nil self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil end # Returns true if the time entry can be edited by usr, otherwise false def editable_by?(usr) visible?(usr) && ( (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project) ) end # Returns the custom_field_values that can be edited by the given user def editable_custom_field_values(user=nil) visible_custom_field_values(user) end # Returns the custom fields that can be edited by the given user def editable_custom_fields(user=nil) editable_custom_field_values(user).map(&:custom_field).uniq end def visible_custom_field_values(user = nil) user ||= User.current custom_field_values.select do |value| value.custom_field.visible_by?(project, user) end end def assignable_users users = [] if project users = project.members.active.preload(:user) users = users.map(&:user).select{|u| u.allowed_to?(:log_time, project)} end users << User.current if User.current.logged? && !users.include?(User.current) users end private # Returns the hours that were logged in other time entries for the same user and the same day def other_hours_with_same_user_and_day if user_id && spent_on TimeEntry. where(:user_id => user_id, :spent_on => spent_on). where.not(:id => id). sum(:hours).to_f else 0.0 end end end redmine-6.0.5/app/models/time_entry_activity.rb000066400000000000000000000056001500112024600216200ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntryActivity < Enumeration has_many :time_entries, :foreign_key => 'activity_id' OptionName = :enumeration_activities def self.default(project=nil) default_activity = super() if default_activity.nil? || project.nil? || project.activities.blank? || project.activities.include?(default_activity) return default_activity end project.activities.detect { |activity| activity.parent_id == default_activity.id } end # Returns the available activities for the time entry def self.available_activities(project=nil) if project.nil? TimeEntryActivity.shared.active else project.activities end end def option_name OptionName end def objects TimeEntry.where(:activity_id => self_and_descendants(1).map(&:id)) end def objects_count objects.count end def transfer_relations(to) objects.update_all(:activity_id => to.id) end def self.default_activity_id(user=nil, project=nil) default_activities = [] default_activity = nil available_activities = self.available_activities(project) if project && user user_membership = user.membership(project) if user_membership default_activities = user_membership.roles.where.not(:default_time_entry_activity_id => nil).sort.pluck(:default_time_entry_activity_id) end project_default_activity = self.default(project) if project_default_activity && !default_activities.include?(project_default_activity.id) default_activities << project_default_activity.id end end global_activity = self.default if global_activity && !default_activities.include?(global_activity.id) default_activities << global_activity.id end if available_activities.count == 1 && !default_activities.include?(available_activities.first.id) default_activities << available_activities.first.id end default_activities.each do |id| default_activity = available_activities.detect{ |a| a.id == id || a.parent_id == id } break unless default_activity.nil? end default_activity&.id end end redmine-6.0.5/app/models/time_entry_activity_custom_field.rb000066400000000000000000000016351500112024600243610ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntryActivityCustomField < CustomField def type_name :enumeration_activities end end redmine-6.0.5/app/models/time_entry_custom_field.rb000066400000000000000000000022571500112024600224460ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntryCustomField < CustomField def type_name :label_spent_time end def visible_by?(project, user=User.current) super || roles.intersect?(user.roles_for_project(project)) end def validate_custom_field super errors.add(:base, l(:label_role_plural) + ' ' + l('activerecord.errors.messages.blank')) unless visible? || roles.present? end end redmine-6.0.5/app/models/time_entry_import.rb000066400000000000000000000102411500112024600212730ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntryImport < Import AUTO_MAPPABLE_FIELDS = { 'activity' => 'field_activity', 'user' => 'field_user', 'issue_id' => 'field_issue', 'spent_on' => 'field_spent_on', 'hours' => 'field_hours', 'comments' => 'field_comments' } def self.menu_item :time_entries end def self.authorized?(user) user.allowed_to?(:import_time_entries, nil, :global => true) && user.allowed_to?(:log_time, nil, :global => true) end # Returns the objects that were imported def saved_objects TimeEntry.where(:id => saved_items.pluck(:obj_id)).order(:id).preload(:activity, :project, :issue => [:tracker, :priority, :status]) end def mappable_custom_fields TimeEntryCustomField.all end def allowed_target_projects Project.allowed_to(user, :log_time).order(:lft) end def allowed_target_activities project.activities end def allowed_target_users users = [] if project users = project.members.active.preload(:user) users = users.map(&:user).select{|u| u.allowed_to?(:log_time, project)} end users << User.current if User.current.logged? && !users.include?(User.current) users end def project project_id = mapping['project_id'].to_i allowed_target_projects.find_by_id(project_id) || allowed_target_projects.first end def activity if mapping['activity'].to_s =~ /\Avalue:(\d+)\z/ activity_id = $1.to_i allowed_target_activities.find_by_id(activity_id) end end def user_value if mapping['user'].to_s =~ /\Avalue:(\d+)\z/ $1.to_i end end private def build_object(row, item) object = TimeEntry.new object.author = user activity_id = nil if activity activity_id = activity.id elsif activity_name = row_value(row, 'activity') activity_id = allowed_target_activities.named(activity_name).first.try(:id) end user_id = nil if user.allowed_to?(:log_time_for_other_users, project) if user_value user_id = user_value elsif user_name = row_value(row, 'user') user_id = Principal.detect_by_keyword(allowed_target_users, user_name).try(:id) end else user_id = user.id end attributes = { :activity_id => activity_id, :author_id => user.id, :user_id => user_id, :spent_on => row_date(row, 'spent_on'), :hours => row_value(row, 'hours'), :comments => row_value(row, 'comments') } if issue_id = row_value(row, 'issue_id').presence attributes[:issue_id] = issue_id object.project = issue_project(issue_id) else attributes[:project_id] = project.id object.project = project end attributes['custom_field_values'] = object.custom_field_values.inject({}) do |h, v| value = case v.custom_field.field_format when 'date' row_date(row, "cf_#{v.custom_field.id}") else row_value(row, "cf_#{v.custom_field.id}") end if value h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(value, object) end h end object.send(:safe_attributes=, attributes, user) object end def issue_project(issue_id) if issue_project_id = Issue.where(id: issue_id).limit(1).pick(:project_id) (@projects_cache ||= {})[issue_project_id] ||= allowed_target_projects.find_by_id(issue_project_id) end end end redmine-6.0.5/app/models/time_entry_query.rb000066400000000000000000000340401500112024600211310ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class TimeEntryQuery < Query self.queried_class = TimeEntry self.view_permission = :view_time_entries self.available_columns = [ QueryColumn.new(:project, :sortable => "#{Project.table_name}.name", :groupable => true), QueryColumn.new(:spent_on, :sortable => ["#{TimeEntry.table_name}.spent_on", "#{TimeEntry.table_name}.created_on"], :default_order => 'desc', :groupable => true), TimestampQueryColumn.new(:created_on, :sortable => "#{TimeEntry.table_name}.created_on", :default_order => 'desc', :groupable => true), QueryColumn.new(:tweek, :sortable => ["#{TimeEntry.table_name}.tyear", "#{TimeEntry.table_name}.tweek"], :caption => :label_week), QueryColumn.new(:author, :sortable => lambda {User.fields_for_order_statement}), QueryColumn.new(:user, :sortable => lambda {User.fields_for_order_statement}, :groupable => true), QueryColumn.new(:activity, :sortable => "#{TimeEntryActivity.table_name}.position", :groupable => true), QueryColumn.new(:issue, :sortable => "#{Issue.table_name}.id", :groupable => true), QueryAssociationColumn.new(:issue, :tracker, :caption => :field_tracker, :sortable => "#{Tracker.table_name}.position"), QueryAssociationColumn.new(:issue, :parent, :caption => :field_parent_issue, :sortable => ["#{Issue.table_name}.root_id", "#{Issue.table_name}.lft ASC"], :default_order => 'desc'), QueryAssociationColumn.new(:issue, :status, :caption => :field_status, :sortable => "#{IssueStatus.table_name}.position"), QueryAssociationColumn.new(:issue, :category, :caption => :field_category, :sortable => "#{IssueCategory.table_name}.name"), QueryAssociationColumn.new(:issue, :fixed_version, :caption => :field_fixed_version, :sortable => Version.fields_for_order_statement), QueryColumn.new(:comments), QueryColumn.new(:hours, :sortable => "#{TimeEntry.table_name}.hours", :totalable => true), ] def initialize(attributes=nil, *args) super(attributes) self.filters ||= {'spent_on' => {:operator => "*", :values => []}} end def initialize_available_filters add_available_filter "spent_on", :type => :date_past add_available_filter( "project_id", :type => :list, :values => lambda {project_values} ) if project.nil? if project && !project.leaf? add_available_filter( "subproject_id", :type => :list_subprojects, :values => lambda {subproject_values}) end add_available_filter("issue_id", :type => :tree, :label => :label_issue) add_available_filter( "issue.tracker_id", :type => :list, :name => l("label_attribute_of_issue", :name => l(:field_tracker)), :values => lambda {trackers.map {|t| [t.name, t.id.to_s]}}) add_available_filter( "issue.parent_id", :type => :tree, :name => l("label_attribute_of_issue", :name => l(:field_parent_issue))) add_available_filter( "issue.status_id", :type => :list, :name => l("label_attribute_of_issue", :name => l(:field_status)), :values => lambda {issue_statuses_values}) add_available_filter( "issue.fixed_version_id", :type => :list, :name => l("label_attribute_of_issue", :name => l(:field_fixed_version)), :values => lambda {fixed_version_values}) add_available_filter( "issue.category_id", :type => :list_optional, :name => l("label_attribute_of_issue", :name => l(:field_category)), :values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) if project add_available_filter( "issue.subject", :type => :text, :name => l("label_attribute_of_issue", :name => l(:field_subject)) ) add_available_filter( "user_id", :type => :list_optional, :values => lambda {author_values} ) add_available_filter( "user.group", :type => :list_optional, :name => l("label_attribute_of_user", :name => l(:label_group)), :values => lambda {Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) add_available_filter( "user.role", :type => :list_optional, :name => l("label_attribute_of_user", :name => l(:field_role)), :values => lambda {Role.givable.pluck(:name, :id).map {|name, id| [name, id.to_s]}} ) add_available_filter( "author_id", :type => :list_optional, :values => lambda {author_values} ) activities = (project ? project.activities : TimeEntryActivity.shared) add_available_filter( "activity_id", :type => :list, :values => activities.map {|a| [a.name, (a.parent_id || a.id).to_s]} ) add_available_filter( "project.status", :type => :list, :name => l(:label_attribute_of_project, :name => l(:field_status)), :values => lambda {project_statuses_values} ) if project.nil? || !project.leaf? add_available_filter "comments", :type => :text add_available_filter "hours", :type => :float add_custom_fields_filters(time_entry_custom_fields) add_associations_custom_fields_filters :project add_custom_fields_filters(issue_custom_fields, :issue) add_associations_custom_fields_filters :user end def available_columns return @available_columns if @available_columns @available_columns = self.class.available_columns.dup @available_columns += time_entry_custom_fields.visible. map {|cf| QueryCustomFieldColumn.new(cf)} @available_columns += issue_custom_fields.visible. map {|cf| QueryAssociationCustomFieldColumn.new(:issue, cf, :totalable => false)} @available_columns += project_custom_fields.visible. map {|cf| QueryAssociationCustomFieldColumn.new(:project, cf)} @available_columns end def default_columns_names @default_columns_names ||= begin default_columns = Setting.time_entry_list_defaults.symbolize_keys[:column_names].map(&:to_sym) project.present? ? default_columns : [:project] | default_columns end end def default_totalable_names Setting.time_entry_list_defaults.symbolize_keys[:totalable_names].map(&:to_sym) end def default_sort_criteria [['spent_on', 'desc']] end # If a filter against a single issue is set, returns its id, otherwise nil. def filtered_issue_id if value_for('issue_id').to_s =~ /\A(\d+)\z/ $1 end end def base_scope scope = TimeEntry.visible .joins(:project, :user) .includes(:activity) .references(:activity) .left_join_issue .where(statement) if Redmine::Database.mysql? && ActiveRecord::Base.connection.supports_optimizer_hints? # Provides MySQL with a hint to use a better join order and avoid slow response times scope.optimizer_hints('JOIN_ORDER(time_entries, projects, users)') else scope end end def results_scope(options={}) order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?) order_option << "#{TimeEntry.table_name}.id ASC" base_scope. order(order_option). joins(joins_for_order_statement(order_option.join(','))) end # Returns sum of all the spent hours def total_for_hours(scope) map_total(scope.sum(:hours)) {|t| t.to_f.round(2)} end def sql_for_issue_id_field(field, operator, value) case operator when "=" "#{TimeEntry.table_name}.issue_id = #{value.first.to_i}" when "~" issue = Issue.where(:id => value.first.to_i).first if issue && (issue_ids = issue.self_and_descendants.pluck(:id)).any? "#{TimeEntry.table_name}.issue_id IN (#{issue_ids.join(',')})" else "1=0" end when "!*" "#{TimeEntry.table_name}.issue_id IS NULL" when "*" "#{TimeEntry.table_name}.issue_id IS NOT NULL" end end def sql_for_issue_fixed_version_id_field(field, operator, value) issue_ids = Issue.where(:fixed_version_id => value.map(&:to_i)).pluck(:id) case operator when "=" if issue_ids.any? "#{TimeEntry.table_name}.issue_id IN (#{issue_ids.join(',')})" else "1=0" end when "!" if issue_ids.any? "#{TimeEntry.table_name}.issue_id NOT IN (#{issue_ids.join(',')})" else "1=1" end end end def sql_for_issue_parent_id_field(field, operator, value) case operator when "=" # accepts a comma separated list of ids parent_ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq issue_ids = Issue.where(:parent_id => parent_ids).pluck(:id) if issue_ids.present? "#{TimeEntry.table_name}.issue_id IN (#{issue_ids.join(',')})" else "1=0" end when "~" root_id, lft, rgt = Issue.where(:id => value.first.to_i).pick(:root_id, :lft, :rgt) issue_ids = Issue.where("#{Issue.table_name}.root_id = ? AND #{Issue.table_name}.lft > ? AND #{Issue.table_name}.rgt < ?", root_id, lft, rgt).pluck(:id) if root_id && lft && rgt if issue_ids.present? "#{TimeEntry.table_name}.issue_id IN (#{issue_ids.join(',')})" else "1=0" end else sql_for_field("parent_id", operator, value, Issue.table_name, "parent_id") end end def sql_for_activity_id_field(field, operator, value) ids = value.map(&:to_i).join(',') table_name = Enumeration.table_name if operator == '=' "(#{table_name}.id IN (#{ids}) OR #{table_name}.parent_id IN (#{ids}))" else "(#{table_name}.id NOT IN (#{ids}) AND (#{table_name}.parent_id IS NULL OR #{table_name}.parent_id NOT IN (#{ids})))" end end def sql_for_issue_tracker_id_field(field, operator, value) sql_for_field("tracker_id", operator, value, Issue.table_name, "tracker_id") end def sql_for_issue_status_id_field(field, operator, value) sql_for_field("status_id", operator, value, Issue.table_name, "status_id") end def sql_for_issue_category_id_field(field, operator, value) sql_for_field("category_id", operator, value, Issue.table_name, "category_id") end def sql_for_issue_subject_field(field, operator, value) sql_for_field("subject", operator, value, Issue.table_name, "subject") end def sql_for_project_status_field(field, operator, value, options={}) sql_for_field(field, operator, value, Project.table_name, "status") end def sql_for_user_group_field(field, operator, value) if operator == '*' # Any group groups = Group.givable operator = '=' elsif operator == '!*' groups = Group.givable operator = '!' else groups = Group.where(:id => value).to_a end groups ||= [] members_of_groups = groups.inject([]) do |user_ids, group| user_ids + group.user_ids end.uniq.compact.sort.collect(&:to_s) '(' + sql_for_field('user_id', operator, members_of_groups, TimeEntry.table_name, "user_id", false) + ')' end def sql_for_user_role_field(field, operator, value) case operator when "*", "!*" sw = operator == "!*" ? "NOT" : "" nl = operator == "!*" ? "#{TimeEntry.table_name}.user_id IS NULL OR" : "" subquery = "SELECT 1" + " FROM #{Member.table_name}" + " WHERE #{TimeEntry.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{TimeEntry.table_name}.user_id" "(#{nl} #{sw} EXISTS (#{subquery}))" when "=", "!" role_cond = if value.any? "#{MemberRole.table_name}.role_id IN (" + value.collect{|val| "'#{self.class.connection.quote_string(val)}'"}.join(",") + ")" else "1=0" end sw = operator == "!" ? 'NOT' : '' nl = operator == "!" ? "#{TimeEntry.table_name}.user_id IS NULL OR" : '' subquery = "SELECT 1" + " FROM #{Member.table_name} inner join #{MemberRole.table_name} on members.id = member_roles.member_id" + " WHERE #{TimeEntry.table_name}.project_id = #{Member.table_name}.project_id AND #{Member.table_name}.user_id = #{TimeEntry.table_name}.user_id AND #{role_cond}" "(#{nl} #{sw} EXISTS (#{subquery}))" end end # Accepts :from/:to params as shortcut filters def build_from_params(params, defaults={}) super if params[:from].present? && params[:to].present? add_filter('spent_on', '><', [params[:from], params[:to]]) elsif params[:from].present? add_filter('spent_on', '>=', [params[:from]]) elsif params[:to].present? add_filter('spent_on', '<=', [params[:to]]) end self end def joins_for_order_statement(order_options) joins = [super] if order_options if order_options.include?('issue_statuses') joins << "LEFT OUTER JOIN #{IssueStatus.table_name} ON #{IssueStatus.table_name}.id = #{Issue.table_name}.status_id" end if order_options.include?('trackers') joins << "LEFT OUTER JOIN #{Tracker.table_name} ON #{Tracker.table_name}.id = #{Issue.table_name}.tracker_id" end if order_options.include?('issue_categories') joins << "LEFT OUTER JOIN #{IssueCategory.table_name} ON #{IssueCategory.table_name}.id = #{Issue.table_name}.category_id" end if order_options.include?('versions') joins << "LEFT OUTER JOIN #{Version.table_name} ON #{Version.table_name}.id = #{Issue.table_name}.fixed_version_id" end end joins.compact! joins.any? ? joins.join(' ') : nil end end redmine-6.0.5/app/models/token.rb000066400000000000000000000110401500112024600166400ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Token < ApplicationRecord belongs_to :user validates_uniqueness_of :value, :case_sensitive => true before_create :delete_previous_tokens, :generate_new_token cattr_accessor :validity_time self.validity_time = 1.day class << self attr_reader :actions def add_action(name, options) options.assert_valid_keys(:max_instances, :validity_time) @actions ||= {} @actions[name.to_s] = options end end add_action :api, max_instances: 1, validity_time: nil add_action :autologin, max_instances: 10, validity_time: Proc.new {Setting.autologin.to_i.days} add_action :feeds, max_instances: 1, validity_time: nil add_action :recovery, max_instances: 1, validity_time: Proc.new {Token.validity_time} add_action :register, max_instances: 1, validity_time: Proc.new {Token.validity_time} add_action :session, max_instances: 10, validity_time: nil add_action :twofa_backup_code, max_instances: 10, validity_time: nil def generate_new_token self.value = Token.generate_token_value end # Return true if token has expired def expired? validity_time = self.class.invalid_when_created_before(action) validity_time.present? && created_on < validity_time end def max_instances Token.actions.has_key?(action) ? Token.actions[action][:max_instances] : 1 end def self.invalid_when_created_before(action = nil) if Token.actions.has_key?(action) validity_time = Token.actions[action][:validity_time] validity_time = validity_time.call(action) if validity_time.respond_to? :call else validity_time = self.validity_time end if validity_time Time.now - validity_time end end # Delete all expired tokens def self.destroy_expired t = Token.arel_table # Unknown actions have default validity_time condition = t[:action].not_in(self.actions.keys).and(t[:created_on].lt(invalid_when_created_before)) self.actions.each_key do |action| validity_time = invalid_when_created_before(action) # Do not delete tokens, which don't become invalid next if validity_time.nil? condition = condition.or( t[:action].eq(action).and(t[:created_on].lt(validity_time)) ) end Token.where(condition).delete_all end # Returns the active user who owns the key for the given action def self.find_active_user(action, key, validity_days=nil) user = find_user(action, key, validity_days) if user && user.active? user end end # Returns the user who owns the key for the given action def self.find_user(action, key, validity_days=nil) token = find_token(action, key, validity_days) if token token.user end end # Returns the token for action and key with an optional # validity duration (in number of days) def self.find_token(action, key, validity_days=nil) action = action.to_s key = key.to_s return nil unless action.present? && /\A[a-z0-9]+\z/i.match?(key) token = Token.find_by(:action => action, :value => key) return unless token return unless token.action == action return unless ActiveSupport::SecurityUtils.secure_compare(token.value.to_s, key) return unless token.user return unless validity_days.nil? || (token.created_on > validity_days.days.ago) token end def self.generate_token_value Redmine::Utils.random_hex(20) end private # Removes obsolete tokens (same user and action) def delete_previous_tokens if user scope = Token.where(:user_id => user.id, :action => action) if max_instances > 1 ids = scope.order(:updated_on => :desc).offset(max_instances - 1).ids if ids.any? Token.delete(ids) end else scope.delete_all end end end end redmine-6.0.5/app/models/tracker.rb000066400000000000000000000122121500112024600171550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Tracker < ApplicationRecord include Redmine::SafeAttributes CORE_FIELDS_UNDISABLABLE = %w(project_id tracker_id subject is_private).freeze # Fields that can be disabled # Other (future) fields should be appended, not inserted! CORE_FIELDS = %w(assigned_to_id category_id fixed_version_id parent_issue_id start_date due_date estimated_hours done_ratio description priority_id).freeze CORE_FIELDS_ALL = (CORE_FIELDS_UNDISABLABLE + CORE_FIELDS).freeze before_destroy :check_integrity belongs_to :default_status, :class_name => 'IssueStatus' has_many :issues has_many :workflow_rules, :dependent => :delete_all has_and_belongs_to_many :projects has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_trackers#{table_name_suffix}", :association_foreign_key => 'custom_field_id' acts_as_positioned validates_presence_of :default_status validates_presence_of :name validates_uniqueness_of :name, :case_sensitive => true validates_length_of :name, :maximum => 30 validates_length_of :description, :maximum => 255 scope :sorted, lambda {order(:position)} scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} # Returns the trackers that are visible by the user. # # Examples: # project.trackers.visible(user) # => returns the trackers that are visible by the user in project # # Tracker.visible(user) # => returns the trackers that are visible by the user in at least on project scope :visible, (lambda do |*args| user = args.shift || User.current condition = Project.allowed_to_condition(user, :view_issues) do |role, user| unless role.permissions_all_trackers?(:view_issues) tracker_ids = role.permissions_tracker_ids(:view_issues) if tracker_ids.any? "#{Tracker.table_name}.id IN (#{tracker_ids.join(',')})" else '1=0' end end end joins(:projects).where(condition).distinct end) safe_attributes( 'name', 'default_status_id', 'is_in_roadmap', 'core_fields', 'position', 'custom_field_ids', 'project_ids', 'description') def copy_from(arg, options={}) return if arg.blank? tracker = arg.is_a?(Tracker) ? arg : Tracker.find_by_id(arg.to_s) self.attributes = tracker.attributes.dup.except("id", "name", "position") self.custom_field_ids = tracker.custom_field_ids.dup self.project_ids = tracker.project_ids.dup self end def to_s; name end def <=>(tracker) return nil unless tracker.is_a?(Tracker) position <=> tracker.position end # Returns an array of IssueStatus that are used # in the tracker's workflows def issue_statuses @issue_statuses ||= IssueStatus.where(:id => issue_status_ids).to_a.sort end def issue_status_ids if new_record? [] else @issue_status_ids ||= WorkflowTransition.where(:tracker_id => id). where('old_status_id <> new_status_id'). distinct.pluck(:old_status_id, :new_status_id).flatten.uniq end end def disabled_core_fields i = -1 @disabled_core_fields ||= CORE_FIELDS.select do i += 1 (fields_bits || 0) & (1 << i) != 0 end end def core_fields CORE_FIELDS - disabled_core_fields end def core_fields=(fields) raise ArgumentError.new("Tracker.core_fields takes an array") unless fields.is_a?(Array) bits = 0 CORE_FIELDS.each_with_index do |field, i| unless fields.include?(field) bits |= 1 << i end end self.fields_bits = bits @disabled_core_fields = nil core_fields end def copy_workflow_rules(source_tracker) WorkflowRule.copy(source_tracker, nil, self, nil) end # Returns the fields that are disabled for all the given trackers def self.disabled_core_fields(trackers) if trackers.present? trackers.map(&:disabled_core_fields).reduce(:&) else [] end end # Returns the fields that are enabled for one tracker at least def self.core_fields(trackers) if trackers.present? trackers.uniq.map(&:core_fields).reduce(:|) else CORE_FIELDS.dup end end private def check_integrity raise "Cannot delete tracker" if Issue.where(:tracker_id => self.id).any? end end redmine-6.0.5/app/models/user.rb000066400000000000000000001013561500112024600165100ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require "digest/sha1" class User < Principal include Redmine::Ciphering include Redmine::SafeAttributes # Different ways of displaying/sorting users # rubocop:disable Lint/InterpolationCheck USER_FORMATS = { :firstname_lastname => { :string => '#{firstname} #{lastname}', :order => %w(firstname lastname id), :setting_order => 1 }, :firstname_lastinitial => { :string => '#{firstname} #{lastname.to_s.chars.first}.', :order => %w(firstname lastname id), :setting_order => 2 }, :firstinitial_lastname => { :string => '#{firstname.to_s.gsub(/(([[:alpha:]])[[:alpha:]]*\.?)/, \'\2.\')} #{lastname}', :order => %w(firstname lastname id), :setting_order => 2 }, :firstname => { :string => '#{firstname}', :order => %w(firstname id), :setting_order => 3 }, :lastname_firstname => { :string => '#{lastname} #{firstname}', :order => %w(lastname firstname id), :setting_order => 4 }, :lastnamefirstname => { :string => '#{lastname}#{firstname}', :order => %w(lastname firstname id), :setting_order => 5 }, :lastname_comma_firstname => { :string => '#{lastname}, #{firstname}', :order => %w(lastname firstname id), :setting_order => 6 }, :lastname => { :string => '#{lastname}', :order => %w(lastname id), :setting_order => 7 }, :username => { :string => '#{login}', :order => %w(login id), :setting_order => 8 }, } # rubocop:enable Lint/InterpolationCheck MAIL_NOTIFICATION_OPTIONS = [ ['all', :label_user_mail_option_all], ['selected', :label_user_mail_option_selected], ['only_my_events', :label_user_mail_option_only_my_events], ['only_assigned', :label_user_mail_option_only_assigned], ['only_owner', :label_user_mail_option_only_owner], ['none', :label_user_mail_option_none] ] has_and_belongs_to_many :groups, :join_table => "#{table_name_prefix}groups_users#{table_name_suffix}", :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} has_many :changesets, :dependent => :nullify has_one :preference, :dependent => :destroy, :class_name => 'UserPreference' has_one :atom_token, lambda {where "action='feeds'"}, :class_name => 'Token' has_one :api_token, lambda {where "action='api'"}, :class_name => 'Token' has_one :email_address, lambda {where :is_default => true}, :autosave => true has_many :email_addresses, :dependent => :delete_all belongs_to :auth_source scope :logged, lambda {where("#{User.table_name}.status <> #{STATUS_ANONYMOUS}")} scope :status, lambda {|arg| where(arg.blank? ? nil : {:status => arg.to_i})} acts_as_customizable attr_accessor :password, :password_confirmation, :generate_password attr_accessor :last_before_login_on attr_accessor :remote_ip LOGIN_LENGTH_LIMIT = 60 MAIL_LENGTH_LIMIT = 254 validates_presence_of :login, :firstname, :lastname, :if => Proc.new {|user| !user.is_a?(AnonymousUser)} validates_uniqueness_of :login, :if => Proc.new {|user| user.login_changed? && user.login.present?}, :case_sensitive => false # Login must contain letters, numbers, underscores only validates_format_of :login, :with => /\A[a-z0-9_\-@\.]*\z/i validates_length_of :login, :maximum => LOGIN_LENGTH_LIMIT validates_length_of :firstname, :maximum => 30 validates_length_of :lastname, :maximum => 255 validates_inclusion_of :mail_notification, :in => MAIL_NOTIFICATION_OPTIONS.collect(&:first), :allow_blank => true Setting::PASSWORD_CHAR_CLASSES.each do |k, v| validates_format_of :password, :with => v, :message => :"must_contain_#{k}", :allow_blank => true, :if => Proc.new {Setting.password_required_char_classes.include?(k)} end validate :validate_password_length validate :validate_password_complexity validate do if password_confirmation && password != password_confirmation errors.add(:password, :confirmation) end end self.valid_statuses = [STATUS_ACTIVE, STATUS_REGISTERED, STATUS_LOCKED] before_validation :instantiate_email_address before_save :generate_password_if_needed, :update_hashed_password before_create :set_mail_notification before_destroy :remove_references_before_destroy after_destroy :deliver_security_notification after_save :update_notified_project_ids, :destroy_tokens, :deliver_security_notification scope :admin, (lambda do |*args| admin = args.size > 0 ? !!args.first : true where(:admin => admin) end) scope :in_group, (lambda do |group| group_id = group.is_a?(Group) ? group.id : group.to_i where("#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id) end) scope :not_in_group, (lambda do |group| group_id = group.is_a?(Group) ? group.id : group.to_i where("#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id) end) scope :sorted, lambda {order(*User.fields_for_order_statement)} scope :having_mail, (lambda do |arg| addresses = Array.wrap(arg).map {|a| a.to_s.downcase} if addresses.any? joins(:email_addresses).where("LOWER(#{EmailAddress.table_name}.address) IN (?)", addresses).distinct else none end end) def set_mail_notification self.mail_notification = Setting.default_notification_option if self.mail_notification.blank? true end def update_hashed_password # update hashed_password if password was set if self.password && self.auth_source_id.blank? salt_password(password) end end alias :base_reload :reload def reload(*args) @name = nil @roles = nil @projects_by_role = nil @project_ids_by_role = nil @membership_by_project_id = nil @notified_projects_ids = nil @notified_projects_ids_changed = false @builtin_role = nil @visible_project_ids = nil @managed_roles = nil base_reload(*args) end def mail email_address.try(:address) end def mail=(arg) email = email_address || build_email_address email.address = arg end def mail_changed? email_address.try(:address_changed?) end def mails email_addresses.pluck(:address) end # Returns the user that matches provided login and password, or nil # AuthSource errors are caught, logged and nil is returned. def self.try_to_login(login, password, active_only=true) try_to_login!(login, password, active_only) rescue AuthSourceException => e logger.error "An error occured when authenticating #{login}: #{e.message}" nil end # Returns the user that matches provided login and password, or nil # AuthSource errors are passed through. def self.try_to_login!(login, password, active_only=true) login = login.to_s.strip password = password.to_s # Make sure no one can sign in with an empty login or password return nil if login.empty? || password.empty? user = find_by_login(login) if user # user is already in local database return nil unless user.check_password?(password) return nil if !user.active? && active_only else # user is not yet registered, try to authenticate with available sources attrs = AuthSource.authenticate(login, password) if attrs user = new(attrs) user.login = login user.language = Setting.default_language if user.save user.reload logger.info("User '#{user.login}' created from external auth source: #{user.auth_source.type} - #{user.auth_source.name}") if logger && user.auth_source end end end user.update_last_login_on! if user && !user.new_record? && user.active? user end # Returns the user who matches the given autologin +key+ or nil def self.try_to_autologin(key) user = Token.find_active_user('autologin', key, Setting.autologin.to_i) if user user.update_last_login_on! user end end def self.name_formatter(formatter = nil) USER_FORMATS[formatter || Setting.user_format] || USER_FORMATS[:firstname_lastname] end # Returns an array of fields names than can be used to make an order statement for users # according to how user names are displayed # Examples: # # User.fields_for_order_statement => ['users.login', 'users.id'] # User.fields_for_order_statement('authors') => ['authors.login', 'authors.id'] def self.fields_for_order_statement(table=nil) table ||= table_name name_formatter[:order].map {|field| "#{table}.#{field}"} end # Return user's full name for display def name(formatter = nil) f = self.class.name_formatter(formatter) if formatter eval('"' + f[:string] + '"') else @name ||= eval('"' + f[:string] + '"') end end def registered? self.status == STATUS_REGISTERED end def locked? self.status == STATUS_LOCKED end def activate self.status = STATUS_ACTIVE end def register self.status = STATUS_REGISTERED end def lock self.status = STATUS_LOCKED end def activate! update_attribute(:status, STATUS_ACTIVE) end def register! update_attribute(:status, STATUS_REGISTERED) end def lock! update_attribute(:status, STATUS_LOCKED) end def update_last_login_on! return if last_login_on.present? && last_login_on >= 1.minute.ago update_column(:last_login_on, Time.now) end # Returns true if +clear_password+ is the correct user's password, otherwise false def check_password?(clear_password) if auth_source_id.present? auth_source.authenticate(self.login, clear_password) else User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password end end # Generates a random salt and computes hashed_password for +clear_password+ # The hashed password is stored in the following form: SHA1(salt + SHA1(password)) def salt_password(clear_password) self.salt = User.generate_salt self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}") self.passwd_changed_on = Time.now.change(:usec => 0) end # Does the backend storage allow this user to change their password? def change_password_allowed? auth_source.nil? ? true : auth_source.allow_password_changes? end # Returns true if the user password has expired def password_expired? period = Setting.password_max_age.to_i if period.zero? false else changed_on = self.passwd_changed_on || Time.at(0) changed_on < period.days.ago end end def must_change_password? (must_change_passwd? || password_expired?) && change_password_allowed? end def generate_password? ActiveRecord::Type::Boolean.new.deserialize(generate_password) end # Generate and set a random password on given length def random_password(length=40) chars_list = [('A'..'Z').to_a, ('a'..'z').to_a, ('0'..'9').to_a] # auto-generated passwords contain special characters only when admins # require users to use passwords which contains special characters if Setting.password_required_char_classes.include?('special_chars') chars_list << ("\x20".."\x7e").to_a.select {|c| c =~ Setting::PASSWORD_CHAR_CLASSES['special_chars']} end chars_list.each {|v| v.reject! {|c| %(0O1l|'"`*).include?(c)}} password = +'' chars_list.each do |chars| password << chars[SecureRandom.random_number(chars.size)] length -= 1 end chars = chars_list.flatten length.times {password << chars[SecureRandom.random_number(chars.size)]} password = password.chars.shuffle(random: SecureRandom).join self.password = password self.password_confirmation = password self end def twofa_active? twofa_scheme.present? end def must_activate_twofa? return false if twofa_active? return true if Setting.twofa_required? return true if Setting.twofa_required_for_administrators? && admin? return true if Setting.twofa_optional? && groups.any?(&:twofa_required?) end def pref self.preference ||= UserPreference.new(:user => self) end def time_zone @time_zone ||= (self.pref.time_zone.blank? ? nil : ActiveSupport::TimeZone[self.pref.time_zone]) end def force_default_language? Setting.force_default_language_for_loggedin? end def language if force_default_language? Setting.default_language else super end end def wants_comments_in_reverse_order? self.pref[:comments_sorting] == 'desc' end # Return user's ATOM key (a 40 chars long string), used to access feeds def atom_key if atom_token.nil? create_atom_token(:action => 'feeds') end atom_token.value end # Return user's API key (a 40 chars long string), used to access the API def api_key if api_token.nil? create_api_token(:action => 'api') end api_token.value end # Generates a new session token and returns its value def generate_session_token token = Token.create!(:user_id => id, :action => 'session') token.value end def delete_session_token(value) Token.where(:user_id => id, :action => 'session', :value => value).delete_all end # Generates a new autologin token and returns its value def generate_autologin_token token = Token.create!(:user_id => id, :action => 'autologin') token.value end def delete_autologin_token(value) Token.where(:user_id => id, :action => 'autologin', :value => value).delete_all end def twofa_totp_key read_ciphered_attribute(:twofa_totp_key) end def twofa_totp_key=(key) write_ciphered_attribute(:twofa_totp_key, key) end # Returns true if token is a valid session token for the user whose id is user_id def self.verify_session_token(user_id, token) return false if user_id.blank? || token.blank? scope = Token.where(:user_id => user_id, :value => token.to_s, :action => 'session') if Setting.session_lifetime? scope = scope.where("created_on > ?", Setting.session_lifetime.to_i.minutes.ago) end if Setting.session_timeout? scope = scope.where("updated_on > ?", Setting.session_timeout.to_i.minutes.ago) end last_updated = scope.maximum(:updated_on) if last_updated.nil? false elsif last_updated <= 1.minute.ago scope.update_all(:updated_on => Time.now) == 1 else true end end # Return an array of project ids for which the user has explicitly turned mail notifications on def notified_projects_ids @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id) end def notified_project_ids=(ids) @notified_projects_ids_changed = true @notified_projects_ids = ids.map(&:to_i).uniq.select {|n| n > 0} end # Updates per project notifications (after_save callback) def update_notified_project_ids if @notified_projects_ids_changed ids = (mail_notification == 'selected' ? Array.wrap(notified_projects_ids).reject(&:blank?) : []) members.update_all(:mail_notification => false) members.where(:project_id => ids).update_all(:mail_notification => true) if ids.any? end end private :update_notified_project_ids def valid_notification_options self.class.valid_notification_options(self) end # Only users that belong to more than 1 project can select projects for which they are notified def self.valid_notification_options(user=nil) # Note that @user.membership.size would fail since AR ignores # :include association option when doing a count if user.nil? || user.memberships.length < 1 MAIL_NOTIFICATION_OPTIONS.reject {|option| option.first == 'selected'} else MAIL_NOTIFICATION_OPTIONS end end # Find a user account by matching the exact login and then a case-insensitive # version. Exact matches will be given priority. def self.find_by_login(login) login = Redmine::CodesetUtil.replace_invalid_utf8(login.to_s) if login.present? # First look for an exact match user = where(:login => login).detect {|u| u.login == login} unless user # Fail over to case-insensitive if none was found user = find_by("LOWER(login) = ?", login.downcase) end user end end def self.find_by_atom_key(key) Token.find_active_user('feeds', key) end def self.find_by_api_key(key) Token.find_active_user('api', key) end # Makes find_by_mail case-insensitive def self.find_by_mail(mail) having_mail(mail).first end # Returns true if the default admin account can no longer be used def self.default_admin_account_changed? !User.active.find_by_login("admin").try(:check_password?, "admin") end def to_s name end LABEL_BY_STATUS = { STATUS_ANONYMOUS => 'anon', STATUS_ACTIVE => 'active', STATUS_REGISTERED => 'registered', STATUS_LOCKED => 'locked' } def css_classes "user #{LABEL_BY_STATUS[status]}" end # Returns the current day according to user's time zone def today if time_zone.nil? Date.today else time_zone.today end end # Returns the day of +time+ according to user's time zone def time_to_date(time) self.convert_time_to_user_timezone(time).to_date end def convert_time_to_user_timezone(time) if self.time_zone time.in_time_zone(self.time_zone) else time.utc? ? time.localtime : time end end def logged? true end def anonymous? !logged? end # Returns user's membership for the given project # or nil if the user is not a member of project def membership(project) project_id = project.is_a?(Project) ? project.id : project @membership_by_project_id ||= Hash.new do |h, project_id| h[project_id] = memberships.where(:project_id => project_id).first end @membership_by_project_id[project_id] end def roles @roles ||= Role.joins(members: :project). where(["#{Project.table_name}.status <> ?", Project::STATUS_ARCHIVED]). where(Member.arel_table[:user_id].eq(id)).distinct if @roles.blank? group_class = anonymous? ? GroupAnonymous : GroupNonMember @roles = Role.joins(members: :project). where(["#{Project.table_name}.status <> ? AND #{Project.table_name}.is_public = ?", Project::STATUS_ARCHIVED, true]). where(Member.arel_table[:user_id].eq(group_class.first.id)).distinct end @roles end # Returns the user's bult-in role def builtin_role @builtin_role ||= Role.non_member end # Return user's roles for project def roles_for_project(project) # No role on archived projects return [] if project.nil? || project.archived? if membership = membership(project) membership.roles.to_a elsif project.is_public? project.override_roles(builtin_role) else [] end end # Returns a hash of user's projects grouped by roles # TODO: No longer used, should be deprecated def projects_by_role return @projects_by_role if @projects_by_role result = Hash.new([]) project_ids_by_role.each do |role, ids| result[role] = Project.where(:id => ids).to_a end @projects_by_role = result end # Returns a hash of project ids grouped by roles. # Includes the projects that the user is a member of and the projects # that grant custom permissions to the builtin groups. def project_ids_by_role # Clear project condition for when called from chained scopes # eg. project.children.visible(user) Project.unscoped do return @project_ids_by_role if @project_ids_by_role group_class = anonymous? ? GroupAnonymous.unscoped : GroupNonMember.unscoped group_id = group_class.pick(:id) members = Member.joins(:project, :member_roles). where("#{Project.table_name}.status <> 9"). where("#{Member.table_name}.user_id = ? OR (#{Project.table_name}.is_public = ? AND #{Member.table_name}.user_id = ?)", self.id, true, group_id). pluck(:user_id, :role_id, :project_id) hash = {} members.each do |user_id, role_id, project_id| # Ignore the roles of the builtin group if the user is a member of the project next if user_id != id && project_ids.include?(project_id) hash[role_id] ||= [] hash[role_id] << project_id end result = Hash.new([]) if hash.present? roles = Role.where(:id => hash.keys).to_a hash.each do |role_id, proj_ids| role = roles.detect {|r| r.id == role_id} if role result[role] = proj_ids.uniq end end end @project_ids_by_role = result end end # Returns the ids of visible projects def visible_project_ids @visible_project_ids ||= Project.visible(self).pluck(:id) end # Returns the roles that the user is allowed to manage for the given project def managed_roles(project) if admin? @managed_roles ||= Role.givable.to_a else membership(project).try(:managed_roles) || [] end end # Returns true if user is arg or belongs to arg def is_or_belongs_to?(arg) if arg.is_a?(User) self == arg elsif arg.is_a?(Group) arg.users.include?(self) else false end end # Return true if the user is allowed to do the specified action on a specific context # Action can be: # * a parameter-like Hash (eg. :controller => 'projects', :action => 'edit') # * a permission Symbol (eg. :edit_project) # Context can be: # * a project : returns true if user is allowed to do the specified action on this project # * an array of projects : returns true if user is allowed on every project # * nil with options[:global] set : check if user has at least one role allowed for this action, # or falls back to Non Member / Anonymous permissions depending if the user is logged def allowed_to?(action, context, options={}, &block) if context && context.is_a?(Project) return false unless context.allows_to?(action) # Admin users are authorized for anything else return true if admin? roles = roles_for_project(context) return false unless roles roles.any? do |role| (context.is_public? || role.member?) && role.allowed_to?(action) && (block ? yield(role, self) : true) end elsif context && context.is_a?(Array) if context.empty? false else # Authorize if user is authorized on every element of the array context.map {|project| allowed_to?(action, project, options, &block)}.reduce(:&) end elsif context raise ArgumentError.new("#allowed_to? context argument must be a Project, an Array of projects or nil") elsif options[:global] # Admin users are always authorized return true if admin? # authorize if user has at least one role that has this permission roles = self.roles.to_a | [builtin_role] roles.any? do |role| role.allowed_to?(action) && (block ? yield(role, self) : true) end else false end end # Is the user allowed to do the specified action on any project? # See allowed_to? for the actions and valid options. # # NB: this method is not used anywhere in the core codebase as of # 2.5.2, but it's used by many plugins so if we ever want to remove # it it has to be carefully deprecated for a version or two. def allowed_to_globally?(action, options={}, &) allowed_to?(action, nil, options.reverse_merge(:global => true), &) end def allowed_to_view_all_time_entries?(context) allowed_to?(:view_time_entries, context) do |role, user| role.time_entries_visibility == 'all' end end # Returns true if the user is allowed to delete the user's own account def own_account_deletable? Setting.unsubscribe? && (!admin? || User.active.admin.where("id <> ?", id).exists?) end safe_attributes( 'firstname', 'lastname', 'mail', 'mail_notification', 'notified_project_ids', 'language', 'custom_field_values', 'custom_fields') safe_attributes( 'login', :if => lambda {|user, current_user| user.new_record?}) safe_attributes( 'status', 'auth_source_id', 'generate_password', 'must_change_passwd', 'login', 'admin', :if => lambda {|user, current_user| current_user.admin?}) safe_attributes( 'group_ids', :if => lambda {|user, current_user| current_user.admin? && !user.new_record?}) # Utility method to help check if a user should be notified about an # event. # # TODO: only supports Issue events currently def notify_about?(object) if mail_notification == 'all' true elsif mail_notification.blank? || mail_notification == 'none' false else case object when Issue case mail_notification when 'selected', 'only_my_events' # user receives notifications for created/assigned issues on unselected projects object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.previous_assignee) when 'only_assigned' is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.previous_assignee) when 'only_owner' object.author == self end when News # always send to project members except when mail_notification is set to 'none' true end end end def notify_about_high_priority_issues? self.pref.notify_about_high_priority_issues end class CurrentUser < ActiveSupport::CurrentAttributes attribute :user end def self.current=(user) CurrentUser.user = user end def self.current CurrentUser.user ||= User.anonymous end # Returns the anonymous user. If the anonymous user does not exist, it is created. There can be only # one anonymous user per database. def self.anonymous anonymous_user = AnonymousUser.unscoped.find_by(:lastname => 'Anonymous') if anonymous_user.nil? anonymous_user = AnonymousUser.unscoped.create(:lastname => 'Anonymous', :firstname => '', :login => '', :status => 0) raise 'Unable to create the anonymous user.' if anonymous_user.new_record? end anonymous_user end # Salts all existing unsalted passwords # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password)) # This method is used in the SaltPasswords migration and is to be kept as is def self.salt_unsalted_passwords! transaction do User.where("salt IS NULL OR salt = ''").find_each do |user| next if user.hashed_password.blank? salt = User.generate_salt hashed_password = User.hash_password("#{salt}#{user.hashed_password}") User.where(:id => user.id).update_all(:salt => salt, :hashed_password => hashed_password) end end end def bookmarked_project_ids project_ids = [] bookmarked_project_ids = self.pref[:bookmarked_project_ids] project_ids = bookmarked_project_ids.split(',') unless bookmarked_project_ids.nil? project_ids.map(&:to_i) end def self.prune(age=30.days) User.where("created_on < ? AND status = ?", Time.now - age, STATUS_REGISTERED).destroy_all end protected def validate_password_length return if password.blank? && generate_password? # Password length validation based on setting if !password.nil? && password.size < Setting.password_min_length.to_i errors.add(:password, :too_short, :count => Setting.password_min_length.to_i) end end def validate_password_complexity return if password.blank? && generate_password? return if password.nil? # TODO: Enhance to check for more common and simple passwords # like 'password', '123456', 'qwerty', etc. bad_passwords = [login, firstname, lastname, mail] + email_addresses.map(&:address) errors.add(:password, :too_simple) if bad_passwords.any? {|p| password.casecmp?(p)} end def instantiate_email_address email_address || build_email_address end private def generate_password_if_needed if generate_password? && auth_source.nil? length = [Setting.password_min_length.to_i + 2, 10].max random_password(length) end end # Delete all outstanding password reset tokens on password change. # Delete the autologin tokens on password change to prohibit session leakage. # This helps to keep the account secure in case the associated email account # was compromised. def destroy_tokens if saved_change_to_hashed_password? || (saved_change_to_status? && !active?) || (saved_change_to_twofa_scheme? && twofa_scheme.present?) tokens = ['recovery', 'autologin', 'session'] Token.where(:user_id => id, :action => tokens).delete_all end end # Removes references that are not handled by associations # Things that are not deleted are reassociated with the anonymous user def remove_references_before_destroy return if self.id.nil? substitute = User.anonymous Attachment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) Comment.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) Issue.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL') Journal.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id]) Journal.where(['updated_by_id = ?', id]).update_all(['updated_by_id = ?', substitute.id]) JournalDetail. where(["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s]). update_all(['old_value = ?', substitute.id.to_s]) JournalDetail. where(["property = 'attr' AND prop_key = 'assigned_to_id' AND value = ?", id.to_s]). update_all(['value = ?', substitute.id.to_s]) Message.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) News.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) # Remove private queries and keep public ones ::Query.where('user_id = ? AND visibility = ?', id, ::Query::VISIBILITY_PRIVATE).delete_all ::Query.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id]) TimeEntry.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id]) Token.where('user_id = ?', id).delete_all Watcher.where('user_id = ?', id).delete_all WikiContent.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) WikiContentVersion.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) user_custom_field_ids = CustomField.where(field_format: 'user').ids if user_custom_field_ids.any? CustomValue.where(custom_field_id: user_custom_field_ids, value: self.id.to_s).delete_all end end # Singleton class method is public class << self # Return password digest def hash_password(clear_password) Digest::SHA1.hexdigest(clear_password || "") end # Returns a 128bits random salt as a hex string (32 chars long) def generate_salt Redmine::Utils.random_hex(16) end end # Send a security notification to all admins if the user has gained/lost admin privileges def deliver_security_notification options = { field: :field_admin, value: login, title: :label_user_plural, url: {controller: 'users', action: 'index'} } deliver = false if (admin? && saved_change_to_id? && active?) || # newly created admin (admin? && saved_change_to_admin? && active?) || # regular user became admin (admin? && saved_change_to_status? && active?) # locked admin became active again deliver = true options[:message] = :mail_body_security_notification_add elsif (admin? && destroyed? && active?) || # active admin user was deleted (!admin? && saved_change_to_admin? && active?) || # admin is no longer admin (admin? && saved_change_to_status? && !active?) # admin was locked deliver = true options[:message] = :mail_body_security_notification_remove end if deliver users = User.active.where(admin: true).to_a Mailer.deliver_security_notification(users, User.current, options) end end end redmine-6.0.5/app/models/user_custom_field.rb000066400000000000000000000016131500112024600212400ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class UserCustomField < CustomField def type_name :label_user_plural end end redmine-6.0.5/app/models/user_import.rb000066400000000000000000000065211500112024600201000ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class UserImport < Import AUTO_MAPPABLE_FIELDS = { 'login' => 'field_login', 'firstname' => 'field_firstname', 'lastname' => 'field_lastname', 'mail' => 'field_mail', 'language' => 'field_language', 'admin' => 'field_admin', 'auth_source' => 'field_auth_source', 'password' => 'field_password', 'must_change_passwd' => 'field_must_change_passwd', 'status' => 'field_status' } def self.menu_item :users end def self.layout 'admin' end def self.authorized?(user) user.admin? end # Returns the objects that were imported def saved_objects User.where(:id => saved_items.pluck(:obj_id)).order(:id) end def mappable_custom_fields UserCustomField.all end private def build_object(row, item) object = User.new attributes = { :login => row_value(row, 'login'), :firstname => row_value(row, 'firstname'), :lastname => row_value(row, 'lastname'), :mail => row_value(row, 'mail') } lang = nil if language = row_value(row, 'language') lang = find_language(language) end attributes[:language] = lang || Setting.default_language if admin = row_value(row, 'admin') if yes?(admin) attributes['admin'] = '1' end end if auth_source_name = row_value(row, 'auth_source') if auth_source = AuthSource.find_by(:name => auth_source_name) attributes[:auth_source_id] = auth_source.id end end if password = row_value(row, 'password') object.password = password object.password_confirmation = password end if must_change_passwd = row_value(row, 'must_change_passwd') if yes?(must_change_passwd) attributes[:must_change_passwd] = '1' end end if status_name = row_value(row, 'status') if status = User::LABEL_BY_STATUS.key(status_name) attributes[:status] = status end end attributes['custom_field_values'] = object.custom_field_values.each_with_object({}) do |v, h| value = case v.custom_field.field_format when 'date' row_date(row, "cf_#{v.custom_field.id}") else row_value(row, "cf_#{v.custom_field.id}") end if value h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(value, object) end end object.send(:safe_attributes=, attributes, user) object end def extend_object(row, item, object) Mailer.deliver_account_information(object, object.password) if yes?(settings['notifications']) end end redmine-6.0.5/app/models/user_preference.rb000066400000000000000000000153121500112024600207020ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/my_page' class UserPreference < ApplicationRecord include Redmine::SafeAttributes belongs_to :user serialize :others before_save :set_others_hash, :clear_unused_block_settings safe_attributes( 'hide_mail', 'time_zone', 'comments_sorting', 'warn_on_leaving_unsaved', 'no_self_notified', 'notify_about_high_priority_issues', 'textarea_font', 'recently_used_projects', 'history_default_tab', 'default_issue_query', 'default_project_query', 'toolbar_language_options', 'auto_watch_on') TEXTAREA_FONT_OPTIONS = ['monospace', 'proportional'] DEFAULT_TOOLBAR_LANGUAGE_OPTIONS = %w[c cpp csharp css diff go groovy html java javascript objc perl php python r ruby sass scala shell sql swift xml yaml] AUTO_WATCH_ON_OPTIONS = %w[issue_created issue_contributed_to] def initialize(attributes=nil, *args) super if new_record? unless attributes && attributes.key?(:hide_mail) self.hide_mail = Setting.default_users_hide_mail? end unless attributes && attributes.key?(:time_zone) self.time_zone = Setting.default_users_time_zone end unless attributes && attributes.key?(:no_self_notified) self.no_self_notified = Setting.default_users_no_self_notified end unless attributes && attributes.key?(:auto_watch_on) self.auto_watch_on = AUTO_WATCH_ON_OPTIONS end end self.others ||= {} end def set_others_hash self.others ||= {} end def [](attr_name) if has_attribute? attr_name super else others ? others[attr_name] : nil end end def []=(attr_name, value) if has_attribute? attr_name super else h = (read_attribute(:others) || {}).dup h.update(attr_name => value) write_attribute(:others, h) value end end def comments_sorting; self[:comments_sorting]; end def comments_sorting=(order); self[:comments_sorting]=order; end def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end def no_self_notified; (self[:no_self_notified] == true || self[:no_self_notified] == '1'); end def no_self_notified=(value); self[:no_self_notified]=value; end def notify_about_high_priority_issues; (self[:notify_about_high_priority_issues] == true || self[:notify_about_high_priority_issues] == '1'); end def notify_about_high_priority_issues=(value); self[:notify_about_high_priority_issues]=value; end def activity_scope; Array(self[:activity_scope]); end def activity_scope=(value); self[:activity_scope]=value; end def textarea_font; self[:textarea_font]; end def textarea_font=(value); self[:textarea_font]=value; end def recently_used_projects; (self[:recently_used_projects] || 3).to_i; end def recently_used_projects=(value); self[:recently_used_projects] = value.to_i; end def history_default_tab; self[:history_default_tab]; end def history_default_tab=(value); self[:history_default_tab]=value; end def toolbar_language_options self[:toolbar_language_options].presence || DEFAULT_TOOLBAR_LANGUAGE_OPTIONS.join(',') end def toolbar_language_options=(value) languages = value.to_s.delete(' ').split(',').select do |lang| Redmine::SyntaxHighlighting.language_supported?(lang) end.compact self[:toolbar_language_options] = languages.join(',') end def default_issue_query; self[:default_issue_query] end def default_issue_query=(value); self[:default_issue_query]=value; end def default_project_query; self[:default_project_query] end def default_project_query=(value); self[:default_project_query]=value; end def auto_watch_on; self[:auto_watch_on] || []; end def auto_watch_on=(values); self[:auto_watch_on]=values; end def auto_watch_on?(action); self.auto_watch_on.include?(action.to_s); end # Returns the names of groups that are displayed on user's page # Example: # preferences.my_page_groups # # => ['top', 'left, 'right'] def my_page_groups Redmine::MyPage.groups end def my_page_layout self[:my_page_layout] ||= Redmine::MyPage.default_layout.deep_dup end def my_page_layout=(arg) self[:my_page_layout] = arg end def my_page_settings(block=nil) s = self[:my_page_settings] ||= {} if block s[block] ||= {} else s end end def my_page_settings=(arg) self[:my_page_settings] = arg end # Removes block from the user page layout # Example: # preferences.remove_block('news') def remove_block(block) block = block.to_s.underscore my_page_layout.each_key do |group| my_page_layout[group].delete(block) end my_page_layout end # Adds block to the user page layout # Returns nil if block is not valid or if it's already # present in the user page layout def add_block(block) block = block.to_s.underscore return unless Redmine::MyPage.valid_block?(block, my_page_layout.values.flatten) remove_block(block) # add it to the first group group = my_page_groups.first my_page_layout[group] ||= [] my_page_layout[group].unshift(block) end # Sets the block order for the given group. # Example: # preferences.order_blocks('left', ['issueswatched', 'news']) def order_blocks(group, blocks) group = group.to_s if Redmine::MyPage.groups.include?(group) && blocks.present? blocks = blocks.map(&:underscore) & my_page_layout.values.flatten blocks.each {|block| remove_block(block)} my_page_layout[group] = blocks end end def update_block_settings(block, settings) block = block.to_s block_settings = my_page_settings(block).merge(settings.symbolize_keys) my_page_settings[block] = block_settings end def clear_unused_block_settings blocks = my_page_layout.values.flatten my_page_settings.keep_if {|block, settings| blocks.include?(block)} end private :clear_unused_block_settings end redmine-6.0.5/app/models/user_query.rb000066400000000000000000000156151500112024600177370ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software class UserQuery < Query self.layout = 'admin' self.queried_class = Principal # must be Principal (not User) for custom field filters to work self.available_columns = [ QueryColumn.new(:login, sortable: "#{User.table_name}.login"), QueryColumn.new(:firstname, sortable: "#{User.table_name}.firstname"), QueryColumn.new(:lastname, sortable: "#{User.table_name}.lastname"), QueryColumn.new(:mail, sortable: "#{EmailAddress.table_name}.address"), QueryColumn.new(:admin, sortable: "#{User.table_name}.admin"), QueryColumn.new(:created_on, :sortable => "#{User.table_name}.created_on"), QueryColumn.new(:updated_on, :sortable => "#{User.table_name}.updated_on"), QueryColumn.new(:last_login_on, :sortable => "#{User.table_name}.last_login_on"), QueryColumn.new(:passwd_changed_on, :sortable => "#{User.table_name}.passwd_changed_on"), QueryColumn.new(:status, sortable: "#{User.table_name}.status"), QueryAssociationColumn.new(:auth_source, :name, caption: :field_auth_source, sortable: "#{AuthSource.table_name}.name") ] def self.visible(*args) user = args.shift || User.current if user.admin? where('1=1') else where('1=0') end end def initialize(attributes=nil, *args) super(attributes) self.filters ||= { 'status' => {operator: "=", values: [User::STATUS_ACTIVE]} } end def initialize_available_filters add_available_filter "status", type: :list_optional, values: ->{ user_statuses_values } add_available_filter "auth_source_id", type: :list_optional, values: ->{ auth_sources_values } add_available_filter "is_member_of_group", type: :list_optional, values: ->{ Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]} } if Setting.twofa? add_available_filter "twofa_scheme", type: :list_optional, values: ->{ Redmine::Twofa.available_schemes.map {|s| [I18n.t("twofa__#{s}__name"), s] } } end add_available_filter "name", type: :text, label: :field_name_or_email_or_login add_available_filter "login", type: :string add_available_filter "firstname", type: :string add_available_filter "lastname", type: :string add_available_filter "mail", type: :string add_available_filter "created_on", type: :date_past add_available_filter "last_login_on", type: :date_past add_available_filter "admin", type: :list, values: [[l(:general_text_yes), '1'], [l(:general_text_no), '0']] add_custom_fields_filters(user_custom_fields) end def visible?(user=User.current) user&.admin? end def editable_by?(user) user&.admin? end def auth_sources_values AuthSource.order(name: :asc).pluck(:name, :id) end def user_statuses_values [ [l(:status_active), User::STATUS_ACTIVE.to_s], [l(:status_registered), User::STATUS_REGISTERED.to_s], [l(:status_locked), User::STATUS_LOCKED.to_s] ] end def available_columns return @available_columns if @available_columns @available_columns = self.class.available_columns.dup if Setting.twofa? @available_columns << QueryColumn.new(:twofa_scheme, sortable: "#{User.table_name}.twofa_scheme") end @available_columns += user_custom_fields.visible. map {|cf| QueryCustomFieldColumn.new(cf)} @available_columns end # Returns a scope of user custom fields that are available as columns or filters def user_custom_fields UserCustomField.sorted end def default_columns_names @default_columns_names ||= [:login, :firstname, :lastname, :mail, :admin, :created_on, :last_login_on] end def default_sort_criteria [['login', 'asc']] end def base_scope User.logged.where(statement).includes(:email_address) end def results_scope(options={}) order_option = [group_by_sort_order, (options[:order] || sort_clause)].flatten.reject(&:blank?) base_scope. order(order_option). joins(joins_for_order_statement(order_option.join(','))) end def sql_for_admin_field(field, operator, value) return unless value = value.first true_value = operator == '=' ? '1' : '0' val = if value.to_s == true_value self.class.connection.quoted_true else self.class.connection.quoted_false end "(#{User.table_name}.admin = #{val})" end def sql_for_is_member_of_group_field(field, operator, value) if ["*", "!*"].include? operator value = Group.givable.ids end e = operator.start_with?("!") ? "NOT EXISTS" : "EXISTS" "(#{e} (SELECT 1 FROM groups_users WHERE #{User.table_name}.id = groups_users.user_id AND #{sql_for_field(field, '=', value, 'groups_users', 'group_id')}))" end def sql_for_mail_field(field, operator, value) if operator == '!*' match = false operator = '*' else match = true end emails = EmailAddress.table_name <<-SQL #{match ? 'EXISTS' : 'NOT EXISTS'} (SELECT 1 FROM #{emails} WHERE #{emails}.user_id = #{User.table_name}.id AND #{sql_for_field(:mail, operator, value, emails, 'address')}) SQL end def joins_for_order_statement(order_options) joins = [super] if order_options if order_options.include?('auth_source') joins << "LEFT OUTER JOIN #{AuthSource.table_name} auth_sources ON auth_sources.id = #{queried_table_name}.auth_source_id" end end joins.any? ? joins.join(' ') : nil end def sql_for_name_field(field, operator, value) case operator when '*' '1=1' when '!*' '1=0' else # match = (operator == '~') match = !operator.start_with?('!') matching_operator = operator.sub /^!/, '' name_sql = %w(login firstname lastname).map{|field| sql_for_field(:name, operator, value, User.table_name, field)} emails = EmailAddress.table_name email_sql = <<-SQL #{match ? "EXISTS" : "NOT EXISTS"} (SELECT 1 FROM #{emails} WHERE #{emails}.user_id = #{User.table_name}.id AND #{sql_for_field(:name, matching_operator, value, emails, 'address')}) SQL conditions = name_sql + [email_sql] op = match ? " OR " : " AND " "(#{conditions.map{|s| "(#{s})"}.join(op)})" end end end redmine-6.0.5/app/models/version.rb000066400000000000000000000320701500112024600172130ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module FixedIssuesExtension # Returns the total estimated time for this version # (sum of leaves estimated_hours) def estimated_hours @estimated_hours ||= sum(:estimated_hours).to_f end # Returns the total estimated remaining time for this version # (sum of leaves remaining_estimated_hours) def estimated_remaining_hours @estimated_remaining_hours ||= sum(IssueQuery::ESTIMATED_REMAINING_HOURS_SQL).to_f end # Returns the total amount of open issues for this version. def open_count load_counts @open_count end # Returns the total amount of closed issues for this version. def closed_count load_counts @closed_count end # Returns the completion percentage of this version based on the amount of open/closed issues # and the time spent on the open issues. def completed_percent return 0 if open_count + closed_count == 0 return 100 if open_count == 0 issues_progress(false) + issues_progress(true) end # Returns the percentage of issues that have been marked as 'closed'. def closed_percent return 0 if open_count + closed_count == 0 return 100 if open_count == 0 issues_progress(false) end private def load_counts unless @open_count @open_count = 0 @closed_count = 0 self.group(:status).count.each do |status, count| if status.is_closed? @closed_count += count else @open_count += count end end end end # Returns the average estimated time of assigned issues # or 1 if no issue has an estimated time # Used to weight unestimated issues in progress calculation def estimated_average if @estimated_average.nil? issues_with_total_estimated_hours = select {|c| c.total_estimated_hours.to_f > 0.0} if issues_with_total_estimated_hours.any? average = issues_with_total_estimated_hours.sum(&:total_estimated_hours).to_f / issues_with_total_estimated_hours.count else average = 1.0 end @estimated_average = average end @estimated_average end # Returns the total progress of open or closed issues. The returned percentage takes into account # the amount of estimated time set for this version. # # Examples: # issues_progress(true) => returns the progress percentage for open issues. # issues_progress(false) => returns the progress percentage for closed issues. def issues_progress(open) @issues_progress ||= {} @issues_progress[open] ||= begin progress = 0 issues_count = open_count + closed_count if issues_count > 0 done = self.open(open).sum do |c| estimated = c.total_estimated_hours.to_f estimated = estimated_average unless estimated > 0.0 ratio = c.closed? ? 100 : (c.done_ratio || 0) estimated * ratio end progress = done / (estimated_average * issues_count) end progress end end end class Version < ApplicationRecord include Redmine::SafeAttributes after_update :update_issues_from_sharing_change before_destroy :nullify_projects_default_version after_save :update_default_project_version belongs_to :project has_many :fixed_issues, :class_name => 'Issue', :foreign_key => 'fixed_version_id', :dependent => :nullify, :extend => FixedIssuesExtension acts_as_customizable acts_as_attachable :view_permission => :view_files, :edit_permission => :manage_files, :delete_permission => :manage_files VERSION_STATUSES = %w(open locked closed) VERSION_SHARINGS = %w(none descendants hierarchy tree system) validates_presence_of :name validates_uniqueness_of :name, :scope => [:project_id], :case_sensitive => true validates_length_of :name, :maximum => 60 validates_length_of :description, :wiki_page_title, :maximum => 255 validates :effective_date, :date => true validates_inclusion_of :status, :in => VERSION_STATUSES validates_inclusion_of :sharing, :in => VERSION_SHARINGS scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)} scope :like, (lambda do |arg| if arg.present? pattern = "%#{sanitize_sql_like arg.to_s.strip}%" where([Redmine::Database.like("#{Version.table_name}.name", '?'), pattern]) end end) scope :open, lambda {where(:status => 'open')} scope :status, (lambda do |status| if status.present? where(:status => status.to_s) end end) scope :visible, (lambda do |*args| joins(:project). where(Project.allowed_to_condition(args.first || User.current, :view_issues)) end) safe_attributes 'name', 'description', 'effective_date', 'due_date', 'wiki_page_title', 'status', 'sharing', 'default_project_version', 'custom_field_values', 'custom_fields' def safe_attributes=(attrs, user=User.current) if attrs.respond_to?(:to_unsafe_hash) attrs = attrs.to_unsafe_hash end return unless attrs.is_a?(Hash) attrs = attrs.deep_dup # Reject custom fields values not visible by the user if attrs['custom_field_values'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_field_values'].reject! {|k, v| !editable_custom_field_ids.include?(k.to_s)} end # Reject custom fields not visible by the user if attrs['custom_fields'].present? editable_custom_field_ids = editable_custom_field_values(user).map {|v| v.custom_field_id.to_s} attrs['custom_fields'].reject! {|c| !editable_custom_field_ids.include?(c['id'].to_s)} end super end # Returns true if +user+ or current user is allowed to view the version def visible?(user=User.current) user.allowed_to?(:view_issues, self.project) end # Returns the custom_field_values that can be edited by the given user def editable_custom_field_values(user=nil) visible_custom_field_values(user) end def visible_custom_field_values(user = nil) user ||= User.current custom_field_values.select do |value| value.custom_field.visible_by?(project, user) end end # Version files have same visibility as project files def attachments_visible?(*args) project.present? && project.attachments_visible?(*args) end def attachments_deletable?(usr=User.current) project.present? && project.attachments_deletable?(usr) end alias :base_reload :reload def reload(*args) @default_project_version = nil @visible_fixed_issues = nil base_reload(*args) end def start_date @start_date ||= fixed_issues.minimum('start_date') end def due_date effective_date end def due_date=(arg) self.effective_date=(arg) end # Returns the total estimated time for this version # (sum of leaves estimated_hours) def estimated_hours fixed_issues.estimated_hours end # Returns the total estimated remaining time for this version # (sum of leaves estimated_remaining_hours) def estimated_remaining_hours @estimated_remaining_hours ||= fixed_issues.estimated_remaining_hours end # Returns the total reported time for this version def spent_hours @spent_hours ||= TimeEntry.joins(:issue).where("#{Issue.table_name}.fixed_version_id = ?", id).sum(:hours).to_f end def closed? status == 'closed' end def open? status == 'open' end # Returns true if the version is completed: closed or due date reached and no open issues def completed? closed? || (effective_date && (effective_date < User.current.today) && (open_issues_count == 0)) end def behind_schedule? # Blank due date, no issues, or 100% completed, so it's not late return false if due_date.nil? || start_date.nil? || completed_percent == 100 done_date = start_date + ((due_date - start_date + 1) * completed_percent / 100).floor done_date <= User.current.today end # Returns the completion percentage of this version based on the amount of open/closed issues # and the time spent on the open issues. def completed_percent fixed_issues.completed_percent end # Returns the percentage of issues that have been marked as 'closed'. def closed_percent fixed_issues.closed_percent end # Returns true if the version is overdue: due date reached and some open issues def overdue? effective_date && (effective_date < User.current.today) && (open_issues_count > 0) end # Returns assigned issues count def issues_count fixed_issues.count end # Returns the total amount of open issues for this version. def open_issues_count fixed_issues.open_count end # Returns the total amount of closed issues for this version. def closed_issues_count fixed_issues.closed_count end def visible_fixed_issues @visible_fixed_issues ||= fixed_issues.visible end def wiki_page if project.wiki && !wiki_page_title.blank? @wiki_page ||= project.wiki.find_page(wiki_page_title) end @wiki_page end def to_s; name end def to_s_with_project "#{project} - #{name}" end # Versions are sorted by effective_date and name # Those with no effective_date are at the end, sorted by name def <=>(version) return nil unless version.is_a?(Version) if self.effective_date if version.effective_date if self.effective_date == version.effective_date name == version.name ? id <=> version.id : name <=> version.name else self.effective_date <=> version.effective_date end else -1 end else if version.effective_date 1 else name == version.name ? id <=> version.id : name <=> version.name end end end # Sort versions by status (open, locked then closed versions) def self.sort_by_status(versions) versions.sort do |a, b| if a.status == b.status a <=> b else b.status <=> a.status end end end def css_classes [ completed? ? 'version-completed' : 'version-incompleted', "version-#{status}" ].join(' ') end def self.fields_for_order_statement(table=nil) table ||= table_name [Arel.sql("(CASE WHEN #{table}.effective_date IS NULL THEN 1 ELSE 0 END)"), "#{table}.effective_date", "#{table}.name", "#{table}.id"] end scope :sorted, lambda {order(fields_for_order_statement)} # Returns the sharings that +user+ can set the version to def allowed_sharings(user = User.current) VERSION_SHARINGS.select do |s| if sharing == s true else case s when 'system' # Only admin users can set a systemwide sharing user.admin? when 'hierarchy', 'tree' # Only users allowed to manage versions of the root project can # set sharing to hierarchy or tree project.nil? || user.allowed_to?(:manage_versions, project.root) else true end end end end # Returns true if the version is shared, otherwise false def shared? sharing != 'none' end def deletable? fixed_issues.empty? && !referenced_by_a_custom_field? && attachments.empty? end def default_project_version if @default_project_version.nil? project.present? && project.default_version == self else @default_project_version end end def default_project_version=(arg) @default_project_version = (arg == '1' || arg == true) end private # Update the issue's fixed versions. Used if a version's sharing changes. def update_issues_from_sharing_change if saved_change_to_sharing? if VERSION_SHARINGS.index(sharing_before_last_save).nil? || VERSION_SHARINGS.index(sharing).nil? || VERSION_SHARINGS.index(sharing_before_last_save) > VERSION_SHARINGS.index(sharing) Issue.update_versions_from_sharing_change self end end end def update_default_project_version if @default_project_version && project.present? project.update_columns :default_version_id => id end end def referenced_by_a_custom_field? CustomValue.joins(:custom_field). where(:value => id.to_s, :custom_fields => {:field_format => 'version'}).any? end def nullify_projects_default_version Project.where(:default_version_id => id).update_all(:default_version_id => nil) end end redmine-6.0.5/app/models/version_custom_field.rb000066400000000000000000000020051500112024600217430ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class VersionCustomField < CustomField def type_name :label_version_plural end def visible_by?(project, user=User.current) super || roles.intersect?(user.roles_for_project(project)) end end redmine-6.0.5/app/models/watcher.rb000066400000000000000000000052601500112024600171640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Watcher < ApplicationRecord belongs_to :watchable, :polymorphic => true belongs_to :user, :class_name => 'Principal' validates_presence_of :user validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id], :case_sensitive => true validate :validate_user # Returns true if at least one object among objects is watched by user def self.any_watched?(objects, user) objects = objects.reject(&:new_record?) if objects.any? objects.group_by {|object| object.class.base_class}.each do |base_class, objects| if Watcher.where(:watchable_type => base_class.name, :watchable_id => objects.map(&:id), :user_id => user.id).exists? return true end end end false end # Unwatch things that users are no longer allowed to view def self.prune(options={}) if options.has_key?(:user) prune_single_user(options[:user], options) else pruned = 0 User.where("id IN (SELECT DISTINCT user_id FROM #{table_name})").each do |user| pruned += prune_single_user(user, options) end pruned end end protected def validate_user errors.add :user_id, :invalid \ unless user.nil? || (user.is_a?(User) && user.active?) || (user.is_a?(Group) && user.givable?) end def self.prune_single_user(user, options={}) return unless user.is_a?(User) pruned = 0 where(:user_id => user.id).each do |watcher| next if watcher.watchable.nil? if options.has_key?(:project) unless watcher.watchable.respond_to?(:project) && watcher.watchable.project == options[:project] next end end if watcher.watchable.respond_to?(:visible?) unless watcher.watchable.visible?(user) watcher.destroy pruned += 1 end end end pruned end private_class_method :prune_single_user end redmine-6.0.5/app/models/wiki.rb000066400000000000000000000071741500112024600165000ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Wiki < ApplicationRecord include Redmine::SafeAttributes belongs_to :project has_many :pages, lambda {order(Arel.sql('LOWER(title)').asc)}, :class_name => 'WikiPage', :dependent => :destroy has_many :redirects, :class_name => 'WikiRedirect' acts_as_watchable validates_presence_of :start_page validates_format_of :start_page, :with => /\A[^,\.\/\?\;\|\:]*\z/ validates_length_of :start_page, maximum: 255 before_destroy :delete_redirects safe_attributes 'start_page' def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_wiki_pages, project) end # Returns the wiki page that acts as the sidebar content # or nil if no such page exists def sidebar @sidebar ||= find_page('Sidebar', :with_redirect => false) end # find the page with the given title # if page doesn't exist, return a new page def find_or_new_page(title) title = start_page if title.blank? find_page(title) || WikiPage.new(:wiki => self, :title => Wiki.titleize(title)) end # find the page with the given title def find_page(title, options = {}) @page_found_with_redirect = false title = start_page if title.blank? title = Wiki.titleize(title) page = pages.find_by("LOWER(title) = LOWER(?)", title) if page.nil? && options[:with_redirect] != false # search for a redirect redirect = redirects.where("LOWER(title) = LOWER(?)", title).first if redirect page = redirect.target_page @page_found_with_redirect = true end end page end # Returns true if the last page was found with a redirect def page_found_with_redirect? @page_found_with_redirect end # Deletes all redirects from/to the wiki def delete_redirects WikiRedirect.where(:wiki_id => id).delete_all WikiRedirect.where(:redirects_to_wiki_id => id).delete_all end # Finds a page by title # The given string can be of one of the forms: "title" or "project:title" # Examples: # Wiki.find_page("bar", project => foo) # Wiki.find_page("foo:bar") def self.find_page(title, options = {}) project = options[:project] if title.to_s =~ %r{^([^\:]+)\:(.*)$} project_identifier, title = $1, $2 project = Project.find_by_identifier(project_identifier) || Project.find_by_name(project_identifier) end if project && project.wiki page = project.wiki.find_page(title) if page && page.content page end end end def self.create_default(project) create(:project => project, :start_page => 'Wiki') end # turn a string into a valid page title def self.titleize(title) # replace spaces with _ and remove unwanted caracters title = title.gsub(/\s+/, '_').delete(',./?;|:') if title # upcase the first letter title = (title.slice(0..0).upcase + (title.slice(1..-1) || '')) if title title end end redmine-6.0.5/app/models/wiki_annotate.rb000066400000000000000000000041321500112024600203600ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WikiAnnotate attr_reader :lines, :content def initialize(content) @content = content current = content current_lines = current.text.split(/\r?\n/) @lines = current_lines.collect {|t| [nil, nil, t]} positions = [] current_lines.size.times {|i| positions << i} while current.previous d = current.previous.text.split(/\r?\n/).diff(current.text.split(/\r?\n/)).diffs.flatten d.each_slice(3) do |s| sign, line = s[0], s[1] if sign == '+' && positions[line] && positions[line] != -1 if @lines[positions[line]][0].nil? @lines[positions[line]][0] = current.version @lines[positions[line]][1] = current.author end end end d.each_slice(3) do |s| sign, line = s[0], s[1] if sign == '-' positions.insert(line, -1) else positions[line] = nil end end positions.compact! # Stop if every line is annotated break unless @lines.detect {|line| line[0].nil?} current = current.previous end @lines.each do |line| line[0] ||= current.version # if the last known version is > 1 (eg. history was cleared), we don't know the author line[1] ||= current.author if current.version == 1 end end end redmine-6.0.5/app/models/wiki_content.rb000066400000000000000000000055171500112024600202310ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'zlib' class WikiContent < ApplicationRecord self.locking_column = 'version' belongs_to :page, :class_name => 'WikiPage' belongs_to :author, :class_name => 'User' has_many :versions, :class_name => 'WikiContentVersion', :dependent => :delete_all acts_as_mentionable :attributes => ['text'] validates_presence_of :text validates_length_of :comments, :maximum => 1024, :allow_nil => true after_save :create_version after_create_commit :send_notification_create after_update_commit :send_notification_update scope :without_text, lambda {select(:id, :page_id, :version, :updated_on)} def initialize(*args) super if new_record? self.version = 1 end end def visible?(user=User.current) page.visible?(user) end def project page.project end def attachments page.nil? ? [] : page.attachments end def notified_users project.notified_users.reject {|user| !visible?(user)} end # Returns the mail addresses of users that should be notified def recipients notified_users.collect(&:mail) end # Return true if the content is the current page content def current_version? true end # Reverts the record to a previous version def revert_to!(version) if version.wiki_content_id == id update_columns( :author_id => version.author_id, :text => version.text, :comments => version.comments, :version => version.version, :updated_on => version.updated_on ) && reload end end private def create_version versions << WikiContentVersion.new(attributes.except("id")) end # Notifies users that a wiki page was created def send_notification_create if Setting.notified_events.include?('wiki_content_added') Mailer.deliver_wiki_content_added(self) end end # Notifies users that a wiki page was updated def send_notification_update if Setting.notified_events.include?('wiki_content_updated') && saved_change_to_text? Mailer.deliver_wiki_content_updated(self) end end end redmine-6.0.5/app/models/wiki_content_version.rb000066400000000000000000000076161500112024600220000ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'zlib' class WikiContentVersion < ApplicationRecord belongs_to :page, :class_name => 'WikiPage' belongs_to :author, :class_name => 'User' acts_as_event( :title => Proc.new do |o| "#{l(:label_wiki_edit)}: #{o.page.title} (##{o.version})" end, :description => :comments, :datetime => :updated_on, :type => 'wiki-page', :group => :page, :url => Proc.new do |o| {:controller => 'wiki', :action => 'show', :project_id => o.page.wiki.project, :id => o.page.title, :version => o.version} end ) acts_as_activity_provider( :type => 'wiki_edits', :timestamp => "#{table_name}.updated_on", :author_key => "#{table_name}.author_id", :permission => :view_wiki_edits, :scope => proc do select("#{table_name}.updated_on, #{table_name}.comments, " \ "#{table_name}.version, #{WikiPage.table_name}.title, " \ "#{table_name}.page_id, #{table_name}.author_id, " \ "#{table_name}.id"). joins("LEFT JOIN #{WikiPage.table_name} ON #{WikiPage.table_name}.id = #{table_name}.page_id " \ "LEFT JOIN #{Wiki.table_name} ON #{Wiki.table_name}.id = #{WikiPage.table_name}.wiki_id " \ "LEFT JOIN #{Project.table_name} ON #{Project.table_name}.id = #{Wiki.table_name}.project_id") end ) after_destroy :page_update_after_destroy def text=(plain) case Setting.wiki_compression when 'gzip' begin self.data = Zlib::Deflate.deflate(plain, Zlib::BEST_COMPRESSION) self.compression = 'gzip' rescue self.data = plain self.compression = '' end else self.data = plain self.compression = '' end plain end def text @text ||= begin str = case compression when 'gzip' Zlib::Inflate.inflate(data) else # uncompressed data data end (+str).force_encoding('UTF-8') end end def project page.project end def attachments page.nil? ? [] : page.attachments end # Return true if the content is the current page content def current_version? page.content.version == self.version end # Returns the previous version or nil def previous @previous ||= WikiContentVersion. reorder(version: :desc). includes(:author). where("wiki_content_id = ? AND version < ?", wiki_content_id, version).first end # Returns the next version or nil def next @next ||= WikiContentVersion. reorder(version: :asc). includes(:author). where("wiki_content_id = ? AND version > ?", wiki_content_id, version).first end private # Updates page's content if the latest version is removed # or destroys the page if it was the only version def page_update_after_destroy latest = page.content.versions.reorder(version: :desc).first if latest && page.content.version != latest.version raise ActiveRecord::Rollback unless page.content.revert_to!(latest) elsif latest.nil? raise ActiveRecord::Rollback unless page.destroy end end end redmine-6.0.5/app/models/wiki_diff.rb000066400000000000000000000020511500112024600174550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WikiDiff < Redmine::Helpers::Diff attr_reader :content_to, :content_from def initialize(content_to, content_from) @content_to = content_to @content_from = content_from super(content_to.text, content_from.text) end end redmine-6.0.5/app/models/wiki_page.rb000066400000000000000000000213331500112024600174650ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'redmine/string_array_diff/diff' class WikiPage < ApplicationRecord include Redmine::SafeAttributes belongs_to :wiki has_one :content, :class_name => 'WikiContent', :foreign_key => 'page_id', :dependent => :destroy has_one :content_without_text, lambda {without_text.readonly}, :class_name => 'WikiContent', :foreign_key => 'page_id' acts_as_attachable :delete_permission => :delete_wiki_pages_attachments acts_as_tree :dependent => :nullify, :order => 'title' acts_as_watchable acts_as_event( :title => proc {|o| "#{l(:label_wiki)}: #{o.title}"}, :description => :text, :datetime => :created_on, :url => proc do |o| {:controller => 'wiki', :action => 'show', :project_id => o.wiki.project, :id => o.title} end ) acts_as_searchable :columns => ['title', "#{WikiContent.table_name}.text"], :scope => joins(:content, {:wiki => :project}), :preload => [:content, {:wiki => :project}], :permission => :view_wiki_pages, :project_key => "#{Wiki.table_name}.project_id" attr_accessor :redirect_existing_links attr_writer :deleted_attachment_ids validates_presence_of :title validates_format_of :title, :with => /\A[^,\.\/\?\;\|\s]*\z/ validates_uniqueness_of :title, :scope => :wiki_id, :case_sensitive => false validates_length_of :title, maximum: 255 validates_associated :content validate :validate_parent_title before_save :handle_rename_or_move, :update_wiki_start_page before_destroy :delete_redirects after_save :handle_children_move, :delete_selected_attachments # eager load information about last updates, without loading text scope :with_updated_on, lambda {preload(:content_without_text)} # Wiki pages that are protected by default DEFAULT_PROTECTED_PAGES = %w(sidebar) safe_attributes 'parent_id', 'parent_title', 'title', 'redirect_existing_links', 'wiki_id', :if => lambda {|page, user| page.new_record? || user.allowed_to?(:rename_wiki_pages, page.project)} safe_attributes 'is_start_page', :if => lambda {|page, user| user.allowed_to?(:manage_wiki, page.project)} safe_attributes 'deleted_attachment_ids', :if => lambda {|page, user| page.attachments_deletable?(user)} def initialize(attributes=nil, *args) super if new_record? && DEFAULT_PROTECTED_PAGES.include?(title.to_s.downcase) self.protected = true end end def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_wiki_pages, project) end def title=(value) value = Wiki.titleize(value) write_attribute(:title, value) end def safe_attributes=(attrs, user=User.current) if attrs.respond_to?(:to_unsafe_hash) attrs = attrs.to_unsafe_hash end return unless attrs.is_a?(Hash) attrs = attrs.deep_dup # Project and Tracker must be set before since new_statuses_allowed_to depends on it. if (w_id = attrs.delete('wiki_id')) && safe_attribute?('wiki_id') if (w = Wiki.find_by_id(w_id)) && w.project && user.allowed_to?(:rename_wiki_pages, w.project) self.wiki = w end end super end # Manages redirects if page is renamed or moved def handle_rename_or_move if !new_record? && (title_changed? || wiki_id_changed?) # Update redirects that point to the old title WikiRedirect.where(:redirects_to => title_was, :redirects_to_wiki_id => wiki_id_was).each do |r| r.redirects_to = title r.redirects_to_wiki_id = wiki_id (r.title == r.redirects_to && r.wiki_id == r.redirects_to_wiki_id) ? r.destroy : r.save end # Remove redirects for the new title WikiRedirect.where(:wiki_id => wiki_id, :title => title).delete_all # Create a redirect to the new title unless redirect_existing_links == "0" WikiRedirect.create( :wiki_id => wiki_id_was, :title => title_was, :redirects_to_wiki_id => wiki_id, :redirects_to => title ) end end if !new_record? && wiki_id_changed? && parent.present? unless parent.wiki_id == wiki_id self.parent_id = nil end end end private :handle_rename_or_move # Moves child pages if page was moved def handle_children_move if !new_record? && saved_change_to_wiki_id? children.each do |child| child.wiki_id = wiki_id child.redirect_existing_links = redirect_existing_links unless child.save WikiPage.where(:id => child.id).update_all :parent_id => nil end end end end private :handle_children_move # Deletes redirects to this page def delete_redirects WikiRedirect.where(:redirects_to_wiki_id => wiki_id, :redirects_to => title).delete_all end def pretty_title WikiPage.pretty_title(title) end def content_for_version(version=nil) (content && version) ? content.versions.find_by_version(version.to_i) : content end def diff(version_to=nil, version_from=nil) version_to = version_to ? version_to.to_i : self.content.version content_to = content.versions.find_by_version(version_to) content_from = version_from ? content.versions.find_by_version(version_from.to_i) : content_to.try(:previous) return nil unless content_to && content_from if content_from.version > content_to.version content_to, content_from = content_from, content_to end (content_to && content_from) ? WikiDiff.new(content_to, content_from) : nil end def annotate(version=nil) version = version ? version.to_i : self.content.version c = content.versions.find_by_version(version) c ? WikiAnnotate.new(c) : nil end def self.pretty_title(str) (str && str.is_a?(String)) ? str.tr('_', ' ') : str end def project wiki.try(:project) end def text content.text if content end def updated_on content_attribute(:updated_on) end def version content_attribute(:version) end # Returns true if usr is allowed to edit the page, otherwise false def editable_by?(usr) !protected? || usr.allowed_to?(:protect_wiki_pages, wiki.project) end def attachments_deletable?(usr=User.current) editable_by?(usr) && super end def parent_title @parent_title || (self.parent && self.parent.pretty_title) end def parent_title=(t) @parent_title = t parent_page = t.blank? ? nil : self.wiki.find_page(t) self.parent = parent_page end def is_start_page if @is_start_page.nil? @is_start_page = wiki.try(:start_page) == title_was end @is_start_page end def is_start_page=(arg) @is_start_page = arg == '1' || arg == true end def update_wiki_start_page if is_start_page wiki.update_attribute :start_page, title end end private :update_wiki_start_page # Saves the page and its content if text was changed # Return true if the page was saved def save_with_content(content) ret = nil transaction do ret = save if content.text_changed? begin self.content = content rescue ActiveRecord::RecordNotSaved ret = false end end raise ActiveRecord::Rollback unless ret end ret end def deleted_attachment_ids Array(@deleted_attachment_ids).map(&:to_i) end def delete_selected_attachments if deleted_attachment_ids.present? objects = attachments.where(:id => deleted_attachment_ids.map(&:to_i)) attachments.delete(objects) end end protected def validate_parent_title errors.add(:parent_title, :invalid) if @parent_title.present? && parent.nil? errors.add(:parent_title, :circular_dependency) if parent && (parent == self || parent.ancestors.include?(self)) if parent_id_changed? && parent && (parent.wiki_id != wiki_id) errors.add(:parent_title, :not_same_project) end end private def content_attribute(name) (association(:content).loaded? ? content : content_without_text).try(name) end end redmine-6.0.5/app/models/wiki_redirect.rb000066400000000000000000000024101500112024600203450ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WikiRedirect < ApplicationRecord belongs_to :wiki validates_presence_of :wiki_id, :title, :redirects_to validates_length_of :title, :redirects_to, :maximum => 255 before_save :set_redirects_to_wiki_id def target_page wiki = Wiki.find_by_id(redirects_to_wiki_id) if wiki wiki.find_page(redirects_to, :with_redirect => false) end end private def set_redirects_to_wiki_id self.redirects_to_wiki_id ||= wiki_id end end redmine-6.0.5/app/models/workflow_permission.rb000066400000000000000000000051651500112024600216550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WorkflowPermission < WorkflowRule validates_inclusion_of :rule, :in => %w(readonly required) validates_presence_of :old_status validate :validate_field_name # Returns the workflow permissions for the given trackers and roles # grouped by status_id # # Example: # WorkflowPermission.rules_by_status_id trackers, roles # # => {1 => {'start_date' => 'required', 'due_date' => 'readonly'}} def self.rules_by_status_id(trackers, roles) WorkflowPermission.where(:tracker_id => trackers.map(&:id), :role_id => roles.map(&:id)).inject({}) do |h, w| h[w.old_status_id] ||= {} h[w.old_status_id][w.field_name] ||= [] h[w.old_status_id][w.field_name] << w.rule h end end # Replaces the workflow permissions for the given trackers and roles # # Example: # WorkflowPermission.replace_permissions trackers, roles, {'1' => {'start_date' => 'required', 'due_date' => 'readonly'}} def self.replace_permissions(trackers, roles, permissions) trackers = Array.wrap trackers roles = Array.wrap roles transaction do permissions.each do |status_id, rule_by_field| rule_by_field.each do |field, rule| where(:tracker_id => trackers.map(&:id), :role_id => roles.map(&:id), :old_status_id => status_id, :field_name => field).destroy_all if rule.present? trackers.each do |tracker| roles.each do |role| WorkflowPermission.create(:role_id => role.id, :tracker_id => tracker.id, :old_status_id => status_id, :field_name => field, :rule => rule) end end end end end end end protected def validate_field_name unless Tracker::CORE_FIELDS_ALL.include?(field_name) || /^\d+$/.match?(field_name.to_s) errors.add :field_name, :invalid end end end redmine-6.0.5/app/models/workflow_rule.rb000066400000000000000000000064171500112024600204350ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WorkflowRule < ApplicationRecord self.table_name = "#{table_name_prefix}workflows#{table_name_suffix}" belongs_to :role belongs_to :tracker belongs_to :old_status, :class_name => 'IssueStatus' belongs_to :new_status, :class_name => 'IssueStatus' validates_presence_of :role, :tracker # Copies workflows from source to targets def self.copy(source_tracker, source_role, target_trackers, target_roles) unless source_tracker.is_a?(Tracker) || source_role.is_a?(Role) raise ArgumentError.new( "source_tracker or source_role must be specified, given: " \ "#{source_tracker.class.name} and #{source_role.class.name}" ) end target_trackers = [target_trackers].flatten.compact target_roles = [target_roles].flatten.compact target_trackers = Tracker.sorted.to_a if target_trackers.empty? target_roles = Role.all.select(&:consider_workflow?) if target_roles.empty? target_trackers.each do |target_tracker| target_roles.each do |target_role| copy_one(source_tracker || target_tracker, source_role || target_role, target_tracker, target_role) end end end # Copies a single set of workflows from source to target def self.copy_one(source_tracker, source_role, target_tracker, target_role) unless source_tracker.is_a?(Tracker) && !source_tracker.new_record? && source_role.is_a?(Role) && !source_role.new_record? && target_tracker.is_a?(Tracker) && !target_tracker.new_record? && target_role.is_a?(Role) && !target_role.new_record? raise ArgumentError.new("arguments can not be nil or unsaved objects") end if source_tracker == target_tracker && source_role == target_role false else transaction do where(:tracker_id => target_tracker.id, :role_id => target_role.id).delete_all connection.insert( "INSERT INTO #{WorkflowRule.table_name}" \ " (tracker_id, role_id, old_status_id, new_status_id," \ " author, assignee, field_name, #{connection.quote_column_name 'rule'}, type)" \ " SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id," \ " author, assignee, field_name, #{connection.quote_column_name 'rule'}, type" \ " FROM #{WorkflowRule.table_name}" \ " WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}" ) end true end end end redmine-6.0.5/app/models/workflow_transition.rb000066400000000000000000000064501500112024600216550ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class WorkflowTransition < WorkflowRule validates_presence_of :new_status def self.replace_transitions(trackers, roles, transitions) trackers = Array.wrap trackers roles = Array.wrap roles transaction do records = WorkflowTransition.where(:tracker_id => trackers.map(&:id), :role_id => roles.map(&:id)).to_a transitions.each do |old_status_id, transitions_by_new_status| transitions_by_new_status.each do |new_status_id, transition_by_rule| transition_by_rule.each do |rule, transition| trackers.each do |tracker| roles.each do |role| w = records.select do |r| r.old_status_id == old_status_id.to_i && r.new_status_id == new_status_id.to_i && r.tracker_id == tracker.id && r.role_id == role.id && !r.destroyed? end if rule == 'always' w = w.select {|r| !r.author && !r.assignee} else w = w.select {|r| r.author || r.assignee} end if w.size > 1 w[1..-1].each(&:destroy) end w = w.first if ["1", true].include?(transition) unless w w = WorkflowTransition. new( :old_status_id => old_status_id, :new_status_id => new_status_id, :tracker_id => tracker.id, :role_id => role.id ) records << w end w.author = true if rule == "author" w.assignee = true if rule == "assignee" w.save if w.changed? elsif w if rule == 'always' w.destroy elsif rule == 'author' if w.assignee w.author = false w.save if w.changed? else w.destroy end elsif rule == 'assignee' if w.author w.assignee = false w.save if w.changed? else w.destroy end end end end end end end end end end end redmine-6.0.5/app/validators/000077500000000000000000000000001500112024600160645ustar00rootroot00000000000000redmine-6.0.5/app/validators/date_validator.rb000066400000000000000000000023021500112024600213700ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class DateValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) before_type_cast = record.attributes_before_type_cast[attribute.to_s] if before_type_cast.is_a?(String) && before_type_cast.present? unless /\A\d{4}-\d{2}-\d{2}( 00:00:00)?\z/.match?(before_type_cast) && value record.errors.add attribute, :not_a_date end end end end redmine-6.0.5/app/views/000077500000000000000000000000001500112024600150515ustar00rootroot00000000000000redmine-6.0.5/app/views/account/000077500000000000000000000000001500112024600165055ustar00rootroot00000000000000redmine-6.0.5/app/views/account/login.html.erb000066400000000000000000000020161500112024600212510ustar00rootroot00000000000000<%= call_hook :view_account_login_top %>
    <%= form_tag(signin_path, onsubmit: 'return keepAnchorOnSignIn(this);') do %> <%= back_url_hidden_field_tag %> <%= text_field_tag 'username', params[:username], :tabindex => '1', :autocomplete => 'username', :autofocus => params[:username].blank? %> <%= password_field_tag 'password', nil, :tabindex => '2', :autocomplete => 'current-password', :autofocus => params[:username].present? %> <% if Setting.autologin? %> <% end %> <% end %>
    <%= call_hook :view_account_login_bottom %> redmine-6.0.5/app/views/account/logout.html.erb000066400000000000000000000001271500112024600214530ustar00rootroot00000000000000<%= form_tag(signout_path) do %>

    <%= submit_tag l(:label_logout) %>

    <% end %> redmine-6.0.5/app/views/account/lost_password.html.erb000066400000000000000000000005011500112024600230410ustar00rootroot00000000000000

    <%=l(:label_password_lost)%>

    <%= form_tag(lost_password_path) do %>

    <%= text_field_tag 'mail', nil, :size => 40 %> <%= submit_tag l(:button_submit) %>

    <% end %> redmine-6.0.5/app/views/account/password_recovery.html.erb000066400000000000000000000020721500112024600237230ustar00rootroot00000000000000

    <%=l(:label_password_lost)%>

    <%= error_messages_for 'user' %> <%= form_tag(lost_password_path) do %> <%= hidden_field_tag 'token', @token.value %>

    <%= password_field_tag 'new_password', nil, :size => 25, :autocomplete => 'new-password' %> <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %> <% if Setting.password_required_char_classes.any? %> <%= l(:text_characters_must_contain, :character_classes => Setting.password_required_char_classes.collect{|c| l("label_password_char_class_#{c}")}.join(", ")) %> <% end %>

    <%= password_field_tag 'new_password_confirmation', nil, :size => 25, :autocomplete => 'new-password' %>

    <%= submit_tag l(:button_save) %>

    <% end %> redmine-6.0.5/app/views/account/register.html.erb000066400000000000000000000026441500112024600217740ustar00rootroot00000000000000

    <%=l(:label_register)%>

    <%= labelled_form_for @user, :url => register_path do |f| %> <%= error_messages_for 'user' %>
    <% if @user.auth_source_id.nil? %>

    <%= f.text_field :login, :size => 25, :required => true %>

    <%= f.password_field :password, :size => 25, :required => true %> <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %> <% if Setting.password_required_char_classes.any? %> <%= l(:text_characters_must_contain, :character_classes => Setting.password_required_char_classes.collect{|c| l("label_password_char_class_#{c}")}.join(", ")) %> <% end %>

    <%= f.password_field :password_confirmation, :size => 25, :required => true %>

    <% end %>

    <%= f.text_field :firstname, :required => true %>

    <%= f.text_field :lastname, :required => true %>

    <%= f.text_field :mail, :required => true %>

    <%= labelled_fields_for :pref, @user.pref do |pref_fields| %>

    <%= pref_fields.check_box :hide_mail %>

    <% end %> <% unless @user.force_default_language? %>

    <%= f.select :language, lang_options_for_select %>

    <% end %> <% @user.custom_field_values.select {|v| (Setting.show_custom_fields_on_registration? && v.editable?) || v.required?}.each do |value| %>

    <%= custom_field_tag_with_label :user, value %>

    <% end %>
    <%= submit_tag l(:button_submit) %> <% end %> redmine-6.0.5/app/views/account/twofa_confirm.html.erb000066400000000000000000000013011500112024600227720ustar00rootroot00000000000000

    <%=l :setting_twofa %>

    <%=l 'twofa_label_enter_otp' %>

    <%= form_tag({ action: 'twofa' }, { id: 'twofa_form', onsubmit: 'return keepAnchorOnSignIn(this);' }) do -%> <%= text_field_tag :twofa_code, nil, tabindex: '1', autocomplete: 'one-time-code', autofocus: true -%> <%= submit_tag l(:button_login), tabindex: '2', id: 'login-submit', name: :submit_otp -%> <% end %>
    redmine-6.0.5/app/views/activities/000077500000000000000000000000001500112024600172155ustar00rootroot00000000000000redmine-6.0.5/app/views/activities/_activities.html.erb000066400000000000000000000020541500112024600231560ustar00rootroot00000000000000
    <% events_by_day.keys.sort.reverse_each do |day| %>

    <%= format_activity_day(day) %>

    <% sort_activity_events(events_by_day[day]).each do |e, in_group| -%>
    <%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> <%= activity_event_type_icon e.event_type, plugin: Redmine::Activity.plugin_name(e.class) %> <%= avatar(e.event_author) if e.respond_to?(:event_author) %> <%= format_time(e.event_datetime, false) %> <%= content_tag('span', e.project, :class => 'project') if @project.nil? || @project != e.project %> <%= link_to format_activity_title(e.event_title), e.event_url %>
    "><%= format_activity_description(e.event_description) %> <%= link_to_user(e.event_author) if e.respond_to?(:event_author) %>
    <% end -%>
    <% end -%>
    redmine-6.0.5/app/views/activities/index.html.erb000066400000000000000000000053431500112024600217660ustar00rootroot00000000000000

    <%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)).html_safe %>

    <%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %>

    <%= render :partial => 'activities/activities', :locals => {:events_by_day => @events_by_day} %> <%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %>
      <% unless @date_to > User.current.today %><% end %>
      <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'Atom', 'from' => nil, :key => User.current.atom_key %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, :params => request.query_parameters.merge(:from => nil, :key => User.current.atom_key), :format => 'atom') %> <% end %> <% content_for :sidebar do %> <%= form_tag({}, :method => :get, :id => 'activity_scope_form') do %>

    <%= l(:label_activity) %>

    <%= t(:label_days_to_html, :days => @days, :date => date_field_tag('from', '', :value => (@date_to - 1), :size => 10)) %> <%= calendar_for('from') %>

    <%= l(:label_user) %> <%= select_tag('user_id', activity_authors_options_for_select(@project, params[:user_id]), include_blank: true) %>

      <% @activity.event_types.each do |t| %>
    • <%= check_box_tag "show_#{t}", 1, @activity.scope.include?(t) %>
    • <% end %>
    <% if @project && @project.descendants.visible.any? %> <%= hidden_field_tag 'with_subprojects', 0, :id => nil %>

    <% end %>

    <%= submit_tag l(:button_apply), :class => 'button-small', :name => 'submit' %>

    <% end %> <% end %> <% html_title(l(:label_activity), @author) -%> redmine-6.0.5/app/views/admin/000077500000000000000000000000001500112024600161415ustar00rootroot00000000000000redmine-6.0.5/app/views/admin/_menu.html.erb000066400000000000000000000000761500112024600207040ustar00rootroot00000000000000
    <%= render_menu :admin_menu %>
    redmine-6.0.5/app/views/admin/_no_data.html.erb000066400000000000000000000005401500112024600213410ustar00rootroot00000000000000
    <%= form_tag({:action => 'default_configuration'}) do %> <%= simple_format(l(:text_no_configuration_data)) %>

    <%= l(:field_language) %>: <%= select_tag 'lang', options_for_select(lang_options_for_select(false), current_language.to_s) %> <%= submit_tag l(:text_load_default_configuration) %>

    <% end %>
    redmine-6.0.5/app/views/admin/index.html.erb000066400000000000000000000003261500112024600207060ustar00rootroot00000000000000

    <%=l(:label_administration)%>

    <%= render :partial => 'no_data' if @no_configuration_data %> <%= render :partial => 'menu' %>
    <% html_title(l(:label_administration)) -%> redmine-6.0.5/app/views/admin/info.html.erb000066400000000000000000000011221500112024600205250ustar00rootroot00000000000000

    <%=l(:label_information_plural)%>

    <%= Redmine::Info.versioned_name %>

    <% @checklist.each do |label, result| %> <% end %>
    <%= label.is_a?(Symbol) ? l(label) : label %> "> <%= result ? sprite_icon('checked') : sprite_icon('warning') %>

    <%= Redmine::Info.environment %>
    <% html_title(l(:label_information_plural)) -%> redmine-6.0.5/app/views/admin/plugins.html.erb000066400000000000000000000054571500112024600212720ustar00rootroot00000000000000<%= title l(:label_plugins) %> <% if @plugins.any? %>
    <% @plugins.each do |plugin| %> <% end %>
    <%= l(:field_name) %> / <%= l(:field_description) %> <%= l(:field_author) %> <%= l(:label_version) %>
    <%= plugin.name %> <%= content_tag('span', plugin.description, :class => 'description') unless plugin.description.blank? %> <%= content_tag('span', link_to(plugin.url, plugin.url), :class => 'url') unless plugin.url.blank? %> <%= plugin.author_url.blank? ? plugin.author : link_to(plugin.author, plugin.author_url) %> <%= plugin.version %> <%= link_to(l(:button_configure), plugin_settings_path(plugin)) if plugin.configurable? %>

    <%= l(:label_check_for_updates) %>

    <% else %>

    <%= l(:label_no_data) %>

    <% end %> <%= javascript_tag do %> $(document).ready(function(){ $("#check-for-updates").click(function(e){ e.preventDefault(); $.ajax({ dataType: "jsonp", url: "https://www.redmine.org/plugins/check_updates", data: <%= raw_json plugin_data_for_updates(@plugins) %>, timeout: 10000, beforeSend: function(){ $('#ajax-indicator').show(); }, success: function(data){ $('#ajax-indicator').hide(); $("table.plugins td.version span").addClass("unknown"); $.each(data, function(plugin_id, plugin_data){ var s = $("tr#plugin-"+plugin_id+" td.version span"); s.removeClass("icon-ok icon-warning unknown"); if (plugin_data.url) { if (s.parent("a").length>0) { s.unwrap(); } s.addClass("found"); s.wrap($("").attr("href", plugin_data.url).attr("target", "_blank")); } if (plugin_data.c == s.text()) { s.addClass("icon-ok"); } else if (plugin_data.c) { s.addClass("icon-warning"); s.attr("title", "<%= escape_javascript l(:label_latest_compatible_version) %>: "+plugin_data.c); } }); $("table.plugins td.version span.unknown").addClass("icon-help").attr("title", "<%= escape_javascript l(:label_unknown_plugin) %>"); }, error: function(){ $('#ajax-indicator').hide(); alert("Unable to retrieve plugin informations from www.redmine.org"); } }); }); }); <% end if @plugins.any? %> redmine-6.0.5/app/views/admin/projects.html.erb000066400000000000000000000015411500112024600214300ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_project_new)), new_project_path, :class => 'icon icon-add' %>

    <%= @query.new_record? ? l(:label_project_plural) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag(admin_projects_path(@project, nil), :method => :get, :id => 'query_form') do %> <%= render :partial => 'queries/query_form' %> <% end %> <% if @query.valid? %> <%if @projects.any? %> <%= render :partial => 'projects/list', :locals => { :entries => @projects }%> <% else %>

    <%= l(:label_no_data) %>

    <% end %> <% end %> <% content_for :sidebar do %> <%= render_sidebar_queries(ProjectAdminQuery, @project) %> <%= call_hook(:view_admin_projects_sidebar_queries_bottom) %> <% end %> redmine-6.0.5/app/views/attachments/000077500000000000000000000000001500112024600173645ustar00rootroot00000000000000redmine-6.0.5/app/views/attachments/_form.html.erb000066400000000000000000000062241500112024600221270ustar00rootroot00000000000000<% attachment_param ||= 'attachments' %> <% attachment_format_custom_field ||= false %> <% saved_attachments ||= container.saved_attachments if defined?(container) && container %> <% multiple = true unless defined?(multiple) && multiple == false %> <% show_add = multiple || saved_attachments.blank? %> <% description = (defined?(description) && description == false ? false : true) %> <% css_class = (defined?(filedrop) && filedrop == false ? '' : (attachment_format_custom_field ? 'custom-field-filedrop' : 'filedrop')) %> <% if saved_attachments.present? %> <% saved_attachments.each_with_index do |attachment, i| %> <%= text_field_tag("#{attachment_param}[p#{i}][filename]", attachment.filename, :class => 'filename') %> <% if attachment.container_id.present? %> <%= link_to sprite_icon('del', l(:button_delete), icon_only: true), "#", :onclick => "$(this).closest('.attachments_form').find('.add_attachment').show(); $(this).parent().remove(); return false;", :class => 'icon-only icon-del' %> <%= hidden_field_tag "#{attachment_param}[p#{i}][id]", attachment.id %> <% else %> <%= text_field_tag("#{attachment_param}[p#{i}][description]", attachment.description, :maxlength => 255, :placeholder => l(:label_optional_description), :class => 'description') if description %> <%= link_to(sprite_icon('del', l(:button_delete), icon_only: true), attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'icon-only icon-del remove-upload') %> <%= hidden_field_tag "#{attachment_param}[p#{i}][token]", attachment.token %> <% end %> <% end %> <% end %> <%= file_field_tag "#{attachment_param}[dummy][file]", :id => nil, :class => "file_selector #{css_class}", :multiple => multiple, :onchange => 'addInputFiles(this);', :data => { :max_number_of_files_message => l(:error_attachments_too_many, :max_number_of_files => (multiple ? 10 : 1)), :max_file_size => Setting.attachment_max_size.to_i.kilobytes, :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)), :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i, :upload_path => uploads_path(:format => 'js'), :param => attachment_param, :description => description, :description_placeholder => l(:label_optional_description) } %> (<%= l(:label_max_size) %>: <%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>) <% content_for :header_tags do %> <%= javascript_include_tag 'attachments' %> <% end %> redmine-6.0.5/app/views/attachments/_links.html.erb000066400000000000000000000035461500112024600223100ustar00rootroot00000000000000
    <%= link_to(sprite_icon('edit', l(:label_edit_attachments)), container_attachments_edit_path(container), :title => l(:label_edit_attachments), :class => 'icon-only icon-edit ' ) if options[:editable] %> <%= link_to(sprite_icon('download', l(:label_download_all_attachments)), container_attachments_download_path(container), :title => l(:label_download_all_attachments), :class => 'icon-only icon-download ' ) if attachments.size > 1 %>
    <% for attachment in attachments %> <% end %>
    <%= link_to_attachment attachment, class: 'icon icon-attachment ', icon: 'attachment' -%> (<%= number_to_human_size attachment.filesize %>) <%= link_to_attachment attachment, class: 'icon-only icon-download ', title: l(:button_download), download: true, icon: 'download' -%> <%= attachment.description unless attachment.description.blank? %> <% if options[:author] %> <%= attachment.author %>, <%= format_time(attachment.created_on) %> <% end %> <% if options[:deletable] %> <%= link_to sprite_icon('del', l(:button_delete)), attachment_path(attachment), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete, :class => 'delete icon-only icon-del ', :title => l(:button_delete) %> <% end %>
    <% if defined?(thumbnails) && thumbnails %> <% images = attachments.select(&:thumbnailable?) %> <% if images.any? %>
    <% images.each do |attachment| %>
    <%= thumbnail_tag(attachment) %>
    <% end %>
    <% end %> <% end %>
    redmine-6.0.5/app/views/attachments/destroy.js.erb000066400000000000000000000002531500112024600221620ustar00rootroot00000000000000$('#attachments_<%= j params[:attachment_id] %>').closest('.attachments_form').find('.add_attachment').show(); $('#attachments_<%= j params[:attachment_id] %>').remove(); redmine-6.0.5/app/views/attachments/diff.html.erb000066400000000000000000000010751500112024600217340ustar00rootroot00000000000000<%= render :layout => 'layouts/file' do %> <%= form_tag({}, :method => 'get') do %>

    <%= l(:label_view_diff) %>:

    <% end %> <%= render :partial => 'common/diff', :locals => {:diff => @diff, :diff_type => @diff_type, :diff_style => nil} %> <% end %> redmine-6.0.5/app/views/attachments/edit_all.html.erb000066400000000000000000000023051500112024600225760ustar00rootroot00000000000000

    <%= safe_join([link_to_attachment_container(@container), l(:label_edit_attachments)].compact, ' » ') %>

    <%= error_messages_for *@attachments %> <%= form_tag(container_attachments_path(@container), :method => 'patch') do %> <%= back_url_hidden_field_tag %>
    <% @attachments.each do |attachment| %> <% end %>
    <%= sprite_icon('attachment', attachment.filename_was) %> (<%= number_to_human_size attachment.filesize %>) <%= attachment.author %>, <%= format_time(attachment.created_on) %>
    <%= text_field_tag "attachments[#{attachment.id}][filename]", attachment.filename, :size => 40 %> <%= text_field_tag "attachments[#{attachment.id}][description]", attachment.description, :size => 80, :placeholder => l(:label_optional_description) %>

    <%= submit_tag l(:button_save) %> <%= link_to l(:button_cancel), back_url if back_url.present? %>

    <% end %> redmine-6.0.5/app/views/attachments/file.html.erb000066400000000000000000000001621500112024600217370ustar00rootroot00000000000000<%= render :layout => 'layouts/file' do %>   <%= render_file_content(@attachment, @content) %> <% end %> redmine-6.0.5/app/views/attachments/image.html.erb000066400000000000000000000003271500112024600221050ustar00rootroot00000000000000<%= render :layout => 'layouts/file' do %> <%= render :partial => 'common/image', :locals => {:path => download_named_attachment_path(@attachment, @attachment.filename), :alt => @attachment.filename} %> <% end %> redmine-6.0.5/app/views/attachments/other.html.erb000066400000000000000000000013651500112024600221470ustar00rootroot00000000000000<%= render :layout => 'layouts/file' do %> <% kind = if @attachment.is_video? 'video' elsif @attachment.is_audio? 'audio' end %> <%= render :partial => "common/other", :locals => { :kind => kind, :path => download_named_attachment_url(@attachment, @attachment.filename), :download_link => link_to_attachment( @attachment, :text => l(:label_no_preview_download), :download => true, :class => 'icon icon-download' ) } %> <% end %> redmine-6.0.5/app/views/attachments/show.api.rsb000066400000000000000000000000501500112024600216170ustar00rootroot00000000000000render_api_attachment(@attachment, api) redmine-6.0.5/app/views/attachments/upload.api.rsb000066400000000000000000000001131500112024600221230ustar00rootroot00000000000000api.upload do api.id @attachment.id api.token @attachment.token end redmine-6.0.5/app/views/attachments/upload.js.erb000066400000000000000000000010001500112024600217440ustar00rootroot00000000000000var fileSpan = $('#attachments_<%= j params[:attachment_id] %>'); <% if @attachment.new_record? %> fileSpan.hide(); alert("<%= escape_javascript @attachment.errors.full_messages.join(', ') %>"); <% else %> fileSpan.find('input.token').val('<%= j @attachment.token %>'); fileSpan.find('a.remove-upload') .attr({ "data-remote": true, "data-method": 'delete', href: '<%= j attachment_path(@attachment, :attachment_id => params[:attachment_id], :format => 'js') %>' }) .off('click'); <% end %> redmine-6.0.5/app/views/auth_sources/000077500000000000000000000000001500112024600175555ustar00rootroot00000000000000redmine-6.0.5/app/views/auth_sources/_form.html.erb000066400000000000000000000003121500112024600223100ustar00rootroot00000000000000<%= error_messages_for 'auth_source' %>

    <%= f.text_field :name, :required => true %>

    <%= f.check_box :onthefly_register, :label => :field_onthefly %>

    redmine-6.0.5/app/views/auth_sources/_form_auth_source_ldap.html.erb000066400000000000000000000027001500112024600257140ustar00rootroot00000000000000<%= error_messages_for 'auth_source' %>

    <%= f.text_field :name, :required => true %>

    <%= f.text_field :host, :required => true %>

    <%= f.text_field :port, :required => true, :size => 6 %> <%= f.select :ldap_mode, AuthSourceLdap::LDAP_MODES.map { |m| [l("label_#{m}"), m] }, :no_label => true %> <%= l("label_ldaps_warning") %>

    <%= f.text_field :account %>

    <%= f.password_field :account_password, :label => :field_password, :name => 'dummy_password', :value => ((@auth_source.new_record? || @auth_source.account_password.blank?) ? '' : ('x'*15)), :onfocus => "this.value=''; this.name='auth_source[account_password]';", :onchange => "this.name='auth_source[account_password]';" %>

    <%= f.text_field :base_dn, :required => true, :size => 60 %>

    <%= f.text_area :filter, :size => 60, :label => :field_auth_source_ldap_filter %>

    <%= f.text_field :timeout, :size => 4 %>

    <%= f.check_box :onthefly_register, :label => :field_onthefly %>

    <%=l(:label_attribute_plural)%>

    <%= f.text_field :attr_login, :required => true, :size => 20 %>

    <%= f.text_field :attr_firstname, :size => 20 %>

    <%= f.text_field :attr_lastname, :size => 20 %>

    <%= f.text_field :attr_mail, :size => 20 %>

    redmine-6.0.5/app/views/auth_sources/edit.html.erb000066400000000000000000000005541500112024600221430ustar00rootroot00000000000000<%= title [l(:label_auth_source_plural), auth_sources_path], @auth_source.name %> <%= labelled_form_for @auth_source, :as => :auth_source, :url => auth_source_path(@auth_source), :html => {:id => 'auth_source_form'} do |f| %> <%= render :partial => auth_source_partial_name(@auth_source), :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/auth_sources/index.html.erb000066400000000000000000000017661500112024600223330ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_auth_source_new)), { :action => 'new'}, :class => 'icon icon-add' %>
    <%= title l(:label_auth_source_plural) %> <% for source in @auth_sources %> <% end %>
    <%=l(:field_name)%> <%=l(:field_type)%> <%=l(:field_host)%> <%=l(:label_user_plural)%>
    <%= link_to(source.name, :action => 'edit', :id => source)%> <%= source.auth_method_name %> <%= source.host %> <%= source.users.count %> <%= link_to sprite_icon('arrow-right', l(:button_test)), try_connection_auth_source_path(source), :class => 'icon icon-test' %> <%= delete_link auth_source_path(source) %>
    <%= pagination_links_full @auth_source_pages %> redmine-6.0.5/app/views/auth_sources/new.html.erb000066400000000000000000000007051500112024600220050ustar00rootroot00000000000000<%= title [l(:label_auth_source_plural), auth_sources_path], "#{l(:label_auth_source_new)} (#{@auth_source.auth_method_name})" %> <%= labelled_form_for @auth_source, :as => :auth_source, :url => auth_sources_path, :html => {:id => 'auth_source_form'} do |f| %> <%= hidden_field_tag 'type', @auth_source.type %> <%= render :partial => auth_source_partial_name(@auth_source), :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/boards/000077500000000000000000000000001500112024600163235ustar00rootroot00000000000000redmine-6.0.5/app/views/boards/_form.html.erb000066400000000000000000000005661500112024600210710ustar00rootroot00000000000000<%= error_messages_for @board %>

    <%= f.text_field :name, :required => true %>

    <%= f.text_field :description, :required => true, :size => 80 %>

    <% if @board.valid_parents.any? %>

    <%= f.select :parent_id, boards_options_for_select(@board.valid_parents), :include_blank => true, :label => :field_board_parent %>

    <% end %>
    redmine-6.0.5/app/views/boards/edit.html.erb000066400000000000000000000003351500112024600207060ustar00rootroot00000000000000

    <%= l(:label_board) %>

    <%= labelled_form_for @board, :url => project_board_path(@project, @board) do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/boards/index.html.erb000066400000000000000000000034711500112024600210740ustar00rootroot00000000000000
    <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_boards, @project) %>

    <%= l(:label_board_plural) %>

    <% Board.board_tree(@boards) do |board, level| %> <% if level > 0 %> <% else %> <% end %> <% end %>
    <%= l(:label_board) %> <%= l(:label_topic_plural) %> <%= l(:label_message_plural) %> <%= l(:label_message_last) %>
    <%= link_to sprite_icon('comment', board.name), project_board_path(board.project, board), :class => "board icon icon-comment" %>

    <%= board.description %>

    <%= board.topics_count %> <%= board.messages_count %> <% if board.last_message %> <%= authoring board.last_message.created_on, board.last_message.author %>
    <%= link_to_message board.last_message %> <% end %>
    <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_messages => 1, :key => User.current.atom_key} %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.atom_key}) %> <% end %> <% html_title l(:label_board_plural) %> redmine-6.0.5/app/views/boards/new.html.erb000066400000000000000000000003341500112024600205510ustar00rootroot00000000000000

    <%= l(:label_board_new) %>

    <%= labelled_form_for @board, :url => project_boards_path(@project) do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/boards/show.html.erb000066400000000000000000000061311500112024600207410ustar00rootroot00000000000000<%= board_breadcrumb(@board) %>
    <%= link_to sprite_icon('add', l(:label_message_new)), new_board_message_path(@board), :class => 'icon icon-add', :onclick => 'showAndScrollTo("add-message", "message_subject"); return false;' if User.current.allowed_to?(:add_messages, @board.project) %> <%= watcher_link(@board, User.current) %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'boards'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_boards, @project) %>

    <%= @board.name %>

    <%= @board.description %>

    <% if @topics.any? %> <%= sort_header_tag('created_on', :caption => l(:field_created_on)) %> <%= sort_header_tag('replies', :caption => l(:label_reply_plural)) %> <%= sort_header_tag('updated_on', :caption => l(:label_message_last)) %> <% @topics.each do |topic| %> <% end %>
    <%= l(:field_subject) %> <%= l(:field_author) %>
    <%= sprite_icon "arrow-right" if topic.sticky? %> <%= sprite_icon "lock" if topic.locked? %> <%= link_to topic.subject, board_message_path(@board, topic) %> <%= link_to_user(topic.author) %> <%= format_time(topic.created_on) %> <%= topic.replies_count %> <% if topic.last_reply %> <%= authoring topic.last_reply.created_on, topic.last_reply.author %>
    <%= link_to_message topic.last_reply %> <% end %>
    <%= pagination_links_full @topic_pages, @topic_count %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %> <% end %> <% html_title @board.name %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.atom_key}, :title => "#{@project}: #{@board}") %> <% end %> redmine-6.0.5/app/views/calendars/000077500000000000000000000000001500112024600170055ustar00rootroot00000000000000redmine-6.0.5/app/views/calendars/show.html.erb000066400000000000000000000065301500112024600214260ustar00rootroot00000000000000

    <%= @query.new_record? ? l(:label_calendar) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag({:controller => 'calendars', :action => 'show', :project_id => @project}, :method => :get, :id => 'query_form') do %> <%= hidden_field_tag 'set_filter', '1' %> <%= hidden_field_tag 'calendar', '1' %>
    "> "> <%= sprite_icon(@query.new_record? ? "angle-down" : "angle-right", rtl: !@query.new_record?) %> <%= l(:label_filter_plural) %>
    "> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>

    <%= label_tag('month', l(:label_month)) %> <%= select_month(@month, :prefix => "month", :discard_type => true) %> <%= label_tag('year', l(:label_year)) %> <%= select_year(@year, :prefix => "year", :discard_type => true) %> <%= link_to_function sprite_icon('checked', l(:button_apply)), '$("#query_form").submit()', :class => 'icon icon-checked' %> <%= link_to sprite_icon('reload', l(:button_clear)), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %> <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %> <%= link_to_function sprite_icon('save', l(:button_save_object, object_name: l(:label_query)).capitalize), "$('#query_form').attr('action', '#{ @project ? new_project_query_path(@project) : new_query_path }').submit();", :class => 'icon icon-save' %> <% end %> <% if !@query.new_record? && @query.editable_by?(User.current) %> <%= link_to sprite_icon('edit', l(:button_edit_object, object_name: l(:label_query)).capitalize), edit_query_path(@query, :calendar => 1), :class => 'icon icon-edit' %> <%= delete_link query_path(@query, :calendar => 1), {}, l(:button_delete_object, object_name: l(:label_query)).capitalize %> <% end %>

    <% end %> <%= error_messages_for 'query' %> <% if @query.valid? %> <%= render :partial => 'common/calendar', :locals => {:calendar => @calendar} %> <%= call_hook(:view_calendars_show_bottom, :year => @year, :month => @month, :project => @project, :query => @query) %>

    <%= sprite_icon('bullet-go', l(:text_tip_issue_begin_day)) %> <%= sprite_icon('bullet-end', l(:text_tip_issue_end_day)) %> <%= sprite_icon('bullet-go-end', l(:text_tip_issue_begin_end_day)) %>

    <% end %> <% content_for :sidebar do %> <%= render :partial => 'issues/sidebar' %> <% end %> <% html_title(l(:label_calendar)) -%> redmine-6.0.5/app/views/common/000077500000000000000000000000001500112024600163415ustar00rootroot00000000000000redmine-6.0.5/app/views/common/_calendar.html.erb000066400000000000000000000036361500112024600217160ustar00rootroot00000000000000<%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %>
    • <% 7.times do |i| %>
    • <%= day_name((calendar.first_wday + i) % 7) %>
    • <% end %> <% calendar.format_month.each_slice(7) do |week| %>
    • <%= l(:label_week) %> <%= calendar.week_number week.first %>
    • <% week.each do |day| %>
    • <%= day.day %> (<%= abbr_day_name(day.cwday) %>)

      <% calendar.events_on(day).each do |i| %> <% if i.is_a? Issue %> <% starting = day == i.start_date %> <% ending = day == i.due_date %> <%= tag.div class: [ i.css_classes, 'tooltip hascontextmenu', starting: starting, ending: ending] do %> <%= "#{i.project} -" unless @project && @project == i.project %> <%= sprite_icon('bullet-go') if starting && starting != ending %> <%= sprite_icon('bullet-end') if ending && starting != ending %> <%= sprite_icon('bullet-go-end') if starting && ending %> <%= link_to_issue i, :truncate => 30 %> <%= render_issue_tooltip i %> <%= check_box_tag 'ids[]', i.id, false, :style => 'display:none;', :id => nil %> <% end %> <% else %> <%= sprite_icon 'package' %> <%= "#{i.project} -" unless @project && @project == i.project %> <%= link_to_version i %> <% end %> <% end %>
    • <% end %> <% end %>
    <% end %> <%= context_menu %> redmine-6.0.5/app/views/common/_diff.html.erb000066400000000000000000000037411500112024600210520ustar00rootroot00000000000000<% diff = Redmine::UnifiedDiff.new( diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i, :style => diff_style) -%> <% diff.each do |table_file| -%>
    <% if diff.diff_type == 'sbs' -%> <% table_file.each_line do |spacing, line| -%> <% if spacing -%> <% end -%> <% end -%>
    <% if table_file.previous_file_name %> <%= table_file.previous_file_name %> → <% end %> <%= table_file.file_name %>
    <%= line.html_line_left.html_safe %>
    <%= line.html_line_right.html_safe %>
    <% else -%> <% table_file.each_line do |spacing, line| %> <% if spacing -%> <% end -%> <% end -%>
    <% if table_file.previous_file_name %> <%= table_file.previous_file_name %> → <% end %> <%= table_file.file_name %>
    ......
    <%= line.html_line.html_safe %>
    <% end -%>
    <% end -%> <%= l(:text_diff_truncated) if diff.truncated? %> redmine-6.0.5/app/views/common/_file.html.erb000066400000000000000000000010371500112024600210550ustar00rootroot00000000000000
    <% line_num = 1 %> <% syntax_highlight_lines(filename, Redmine::CodesetUtil.to_utf8_by_setting(content)).each do |line| %> <% line_num += 1 %> <% end %>
    <% if line == "\n" or line == "\r\n" %>
    <% else %>
    <%= line.html_safe %>
    <% end %>
    redmine-6.0.5/app/views/common/_image.html.erb000066400000000000000000000001021500112024600212100ustar00rootroot00000000000000<%= image_tag path, :alt => alt, :class => 'filecontent image' %> redmine-6.0.5/app/views/common/_markup.html.erb000066400000000000000000000002471500112024600214370ustar00rootroot00000000000000
    <%= Redmine::WikiFormatting.to_html(markup_text_formatting, Redmine::CodesetUtil.to_utf8_by_setting(markup_text)).html_safe %>
    redmine-6.0.5/app/views/common/_no_preview.html.erb000066400000000000000000000002611500112024600223110ustar00rootroot00000000000000

    <% if download_link %> <%= t(:label_no_preview_alternative_html, link: download_link) %> <% else %> <%= l(:label_no_preview) %> <% end %>

    redmine-6.0.5/app/views/common/_other.html.erb000066400000000000000000000014561500112024600212640ustar00rootroot00000000000000<% download_link = nil unless defined? download_link %> <% kind = nil unless defined? kind %> <% path = nil unless defined? path %> <% if path.present? %> <% if kind == 'video' %> <%= content_tag :video, class: 'filecontent', src: path, controls: true do %> <%= render partial: 'common/no_preview', locals: { download_link: download_link } %> <% end %> <% elsif kind == 'audio' %> <%= content_tag :audio, class: 'filecontent', src: path, controls: true do %> <%= render partial: 'common/no_preview', locals: { download_link: download_link } %> <% end %> <% else %> <%= render partial: 'common/no_preview', locals: { download_link: download_link } %> <% end %> <% else %> <%= render partial: 'common/no_preview', locals: { download_link: download_link } %> <% end %> redmine-6.0.5/app/views/common/_preview.html.erb000066400000000000000000000003021500112024600216110ustar00rootroot00000000000000<% unless @text.blank? %> <%= textilizable @text, :attachments => @attachments, :object => @previewed %> <% else %>

    <%= l(:label_nothing_to_preview) %>

    <% end %>redmine-6.0.5/app/views/common/_tabs.html.erb000066400000000000000000000024461500112024600210740ustar00rootroot00000000000000<% default_action = false %>
      <% tabs.each do |tab| -%> <% action = get_tab_action(tab) %>
    • <%= link_to l(tab[:label]), (tab[:url] || { :tab => tab[:name] }), :id => "tab-#{tab[:name]}", :class => (tab[:name] != selected_tab ? nil : 'selected'), :onclick => (action.nil? ? nil : "#{ action }; return false;") %>
    • <% default_action = action if tab[:name] == selected_tab %> <% end -%>
    <% tabs.each do |tab| -%> <%= content_tag('div', (render(:partial => tab[:partial], :locals => {:tab => tab}) if tab[:partial]) , :id => "tab-content-#{tab[:name]}", :style => (tab[:name] != selected_tab ? 'display:none' : nil), :class => 'tab-content') if tab[:partial] || tab[:remote] %> <% end -%> <%= javascript_tag default_action if default_action %> redmine-6.0.5/app/views/common/error.html.erb000066400000000000000000000007221500112024600211300ustar00rootroot00000000000000

    <%= @status %>

    <% if @message.present? %>

    <%= notice_icon('error') %> <%= @message %>

    <% end %> <% if @archived_project && User.current.admin? %>

    <%= link_to sprite_icon('unlock', l(:button_unarchive)), unarchive_project_path(@archived_project), :method => :post, :class => 'icon icon-unlock' %>

    <% end %>

    <%= l(:button_back) %>

    <% html_title @status %> redmine-6.0.5/app/views/common/error_messages.api.rsb000066400000000000000000000001311500112024600226340ustar00rootroot00000000000000api.array :errors do @error_messages.each do |message| api.error message end end redmine-6.0.5/app/views/common/feed.atom.builder000066400000000000000000000027101500112024600215530ustar00rootroot00000000000000# frozen_string_literal: true xml.instruct! xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do xml.title truncate_single_line_raw(@title, 300) xml.link "rel" => "self", "href" => url_for(:params => request.query_parameters, :only_path => false, :format => 'atom') xml.link "rel" => "alternate", "href" => url_for(:params => request.query_parameters.merge(:format => nil, :key => nil), :only_path => false) xml.id home_url xml.icon favicon_url xml.updated((@items.first ? @items.first.event_datetime : Time.now).xmlschema) xml.author {xml.name "#{Setting.app_title}"} xml.generator(:uri => Redmine::Info.url) {xml.text! Redmine::Info.app_name} @items.each do |item| xml.entry do url = url_for(item.event_url(:only_path => false)) if @project == item.project xml.title truncate_single_line_raw(item.event_title, 300) else xml.title truncate_single_line_raw("#{item.project} - #{item.event_title}", 300) end xml.link "rel" => "alternate", "href" => url xml.id url xml.updated item.event_datetime.xmlschema author = item.event_author if item.respond_to?(:event_author) xml.author do xml.name(author) xml.email(author.mail) if author.is_a?(User) && author.mail.present? && !author.pref.hide_mail end if author xml.content "type" => "html" do xml.text! textilizable(item, :event_description, :only_path => false) end end end end redmine-6.0.5/app/views/context_menus/000077500000000000000000000000001500112024600177445ustar00rootroot00000000000000redmine-6.0.5/app/views/context_menus/issues.html.erb000066400000000000000000000222331500112024600227160ustar00rootroot00000000000000
      <%= call_hook(:view_issues_context_menu_start, {:issues => @issues, :can => @can, :back => @back }) %> <% if @issue -%>
    • <%= context_menu_link sprite_icon('edit', l(:button_edit)), edit_issue_path(@issue), :class => 'icon icon-edit', :disabled => !@can[:edit] %>
    • <% else %>
    • <%= context_menu_link sprite_icon('edit', l(:label_bulk_edit)), bulk_edit_issues_path(:ids => @issue_ids), :class => 'icon icon-edit', :disabled => !@can[:edit] %>
    • <% end %> <% if @allowed_statuses.present? %>
    • <%= l(:field_status) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @allowed_statuses.each do |s| -%>
      • <%= context_menu_link( s.name, _bulk_update_issues_path( @issue, :ids => @issue_ids, :issue => {:status_id => s}, :back_url => @back ), :method => :patch, :selected => (@issue && s == @issue.status), :disabled => !@can[:edit] ) %>
      • <% end -%>
    • <% end %> <% if @trackers.present? %>
    • <%= l(:field_tracker) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @trackers.each do |t| -%>
      • <%= context_menu_link t.name, _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'tracker_id' => t}, :back_url => @back), :method => :patch, :selected => (@issue && t == @issue.tracker), :disabled => !@can[:edit] %>
      • <% end -%>
    • <% end %> <% if @safe_attributes.include?('priority_id') && @priorities.present? -%>
    • <%= l(:field_priority) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @priorities.each do |p| -%>
      • <%= context_menu_link p.name, _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'priority_id' => p}, :back_url => @back), :method => :patch, :selected => (@issue && p == @issue.priority), :disabled => (!@can[:edit] || @issues.any?(&:priority_derived?)) %>
      • <% end -%>
    • <% end %> <% if @safe_attributes.include?('fixed_version_id') && @versions.present? -%>
    • <%= l(:field_fixed_version) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @versions.sort.each do |v| -%>
      • <%= context_menu_link format_version_name(v), _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'fixed_version_id' => v}, :back_url => @back), :method => :patch, :selected => (@issue && v == @issue.fixed_version), :disabled => !@can[:edit] %>
      • <% end -%>
      • <%= context_menu_link l(:label_none), _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'fixed_version_id' => 'none'}, :back_url => @back), :method => :patch, :selected => (@issue && @issue.fixed_version.nil?), :disabled => !@can[:edit] %>
    • <% end %> <% if @safe_attributes.include?('assigned_to_id') && @assignables.present? -%>
    • <%= l(:field_assigned_to) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% if @assignables.include?(User.current) %>
      • <%= context_menu_link "<< #{l(:label_me)} >>", _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'assigned_to_id' => User.current}, :back_url => @back), :method => :patch, :disabled => !@can[:edit] %>
      • <% end %> <% @assignables.each do |u| -%>
      • <%= context_menu_link u.name, _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'assigned_to_id' => u}, :back_url => @back), :method => :patch, :selected => (@issue && u == @issue.assigned_to), :disabled => !@can[:edit] %>
      • <% end -%>
      • <%= context_menu_link l(:label_nobody), _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'assigned_to_id' => 'none'}, :back_url => @back), :method => :patch, :selected => (@issue && @issue.assigned_to.nil?), :disabled => !@can[:edit] %>
    • <% end %> <% if @safe_attributes.include?('category_id') && @project && @project.issue_categories.any? -%>
    • <%= l(:field_category) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @project.issue_categories.each do |u| -%>
      • <%= context_menu_link u.name, _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'category_id' => u}, :back_url => @back), :method => :patch, :selected => (@issue && u == @issue.category), :disabled => !@can[:edit] %>
      • <% end -%>
      • <%= context_menu_link l(:label_none), _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'category_id' => 'none'}, :back_url => @back), :method => :patch, :selected => (@issue && @issue.category.nil?), :disabled => !@can[:edit] %>
    • <% end -%> <% if @safe_attributes.include?('done_ratio') && Issue.use_field_for_done_ratio? %>
    • <%= l(:field_done_ratio) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% (0..10).map{|x|x*10}.each do |p| -%>
      • <%= context_menu_link "#{p}%", _bulk_update_issues_path(@issue, :ids => @issue_ids, :issue => {'done_ratio' => p}, :back_url => @back), :method => :patch, :selected => (@issue && p == @issue.done_ratio), :disabled => (!@can[:edit] || @issues.any?(&:done_ratio_derived?)) %>
      • <% end -%>
    • <% end %> <% @options_by_custom_field.each do |field, options| %>
    • <%= field.name %> <%= sprite_icon('angle-right', rtl: true) %>
        <% options.each do |text, value| %>
      • <%= bulk_update_custom_field_context_menu_link(field, text, value || text) %>
      • <% end %> <% unless field.is_required? %>
      • <%= bulk_update_custom_field_context_menu_link(field, l(:label_none), '__none__') %>
      • <% end %>
    • <% end %> <% if @can[:add_watchers] %>
    • <%= l(:label_issue_watchers) %> <%= sprite_icon('angle-right', rtl: true) %>
      • <%= context_menu_link sprite_icon('add', l(:button_add)), new_watchers_path(:object_type => 'issue', :object_id => @issue_ids), :remote => true, :class => 'icon icon-add' %>
    • <% end %> <% if User.current.logged? %>
    • <%= watcher_link(@issues, User.current) %>
    • <% end %> <% unless @issue %>
    • <%= context_menu_link sprite_icon('list', l(:button_filter)), _project_issues_path(@project, :set_filter => 1, :status_id => "*", :issue_id => @issue_ids.join(","), :c => @columns), :class => 'icon icon-list' %>
    • <% end %> <% if @issue.present? %> <% if @can[:log_time] -%>
    • <%= context_menu_link sprite_icon('time-add', l(:button_log_time)), new_issue_time_entry_path(@issue), :class => 'icon icon-time-add' %>
    • <% end %> <% if @can[:add_subtask] -%>
    • <%= context_menu_link sprite_icon('add', l(:button_add_subtask)), url_for_new_subtask(@issue), :class => 'icon icon-add' %>
    • <% end %>
    • <%= copy_object_url_link(issue_url(@issue)) %>
    • <%= context_menu_link sprite_icon('copy', l(:button_copy)), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy', :disabled => !@can[:copy] %>
    • <% else %>
    • <%= copy_object_url_link(_project_issues_url(@project, set_filter: 1, status_id: '*', issue_id: @issue_ids.join(','))) %>
    • <%= context_menu_link sprite_icon('copy', l(:button_copy)), bulk_edit_issues_path(:ids => @issue_ids, :copy => '1'), :class => 'icon icon-copy', :disabled => !@can[:copy] %>
    • <% end %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete_object, object_name: (@issue_ids.size > 1 ? l(:label_issue_plural) : l(:label_issue))).capitalize), issues_path(:ids => @issue_ids, :back_url => @back), :method => :delete, :data => {:confirm => issues_destroy_confirmation_message(@issues)}, :class => 'icon icon-del', :disabled => !@can[:delete] %>
    • <%= call_hook(:view_issues_context_menu_end, {:issues => @issues, :can => @can, :back => @back }) %>
    redmine-6.0.5/app/views/context_menus/projects.html.erb000066400000000000000000000022461500112024600232360ustar00rootroot00000000000000
      <% if @project && !@project.scheduled_for_deletion? %> <% if @project.archived? %>
    • <%= context_menu_link sprite_icon('unlock', l(:button_unarchive)), unarchive_project_path(@project), method: :post, class: 'icon icon-unlock' %>
    • <% else %>
    • <%= context_menu_link sprite_icon('lock', l(:button_archive)), archive_project_path(@project), data: { confirm: l(:text_project_archive_confirmation, @project.to_s)}, method: :post, class: 'icon icon-lock' %>
    • <% end %>
    • <%= context_menu_link sprite_icon('copy', l(:button_copy)), copy_project_path(@projects), class: 'icon icon-copy' %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete)), project_path(@project, back_url: @back), method: :delete, class: 'icon icon-del' %>
    • <% else %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete)), {controller: 'projects', action: 'bulk_destroy', ids: @projects.map(&:id), back_url: @back}, method: :delete, data: {confirm: l(:text_projects_bulk_destroy_confirmation)}, class: 'icon icon-del' %>
    • <% end %>
    redmine-6.0.5/app/views/context_menus/time_entries.html.erb000066400000000000000000000045651500112024600241020ustar00rootroot00000000000000
      <% if !@time_entry.nil? -%>
    • <%= context_menu_link sprite_icon('edit', l(:button_edit)), { :controller => 'timelog', :action => 'edit', :id => @time_entry}, :class => 'icon icon-edit', :disabled => !@can[:edit] %>
    • <% else %>
    • <%= context_menu_link sprite_icon('edit', l(:label_bulk_edit)), { :controller => 'timelog', :action => 'bulk_edit', :ids => @time_entries.collect(&:id)}, :class => 'icon icon-edit', :disabled => !@can[:edit] %>
    • <% end %> <%= call_hook(:view_time_entries_context_menu_start, {:time_entries => @time_entries, :can => @can, :back => @back }) %> <% if @activities.present? -%>
    • <%= l(:field_activity) %> <%= sprite_icon('angle-right', rtl: true) %>
        <% @activities.each do |u| -%>
      • <%= context_menu_link u.name, {:controller => 'timelog', :action => 'bulk_update', :ids => @time_entries.collect(&:id), :time_entry => {'activity_id' => u}, :back_url => @back}, :method => :post, :selected => (@time_entry && u == @time_entry.activity), :disabled => !@can[:edit] %>
      • <% end -%>
    • <% end %> <% @options_by_custom_field.each do |field, options| %>
    • <%= field.name %> <%= sprite_icon('angle-right', rtl: true) %>
        <% options.each do |text, value| %>
      • <%= bulk_update_time_entry_custom_field_context_menu_link(field, text, value || text) %>
      • <% end %> <% unless field.is_required? %>
      • <%= bulk_update_time_entry_custom_field_context_menu_link(field, l(:label_none), '__none__') %>
      • <% end %>
    • <% end %> <%= call_hook(:view_time_entries_context_menu_end, {:time_entries => @time_entries, :can => @can, :back => @back }) %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete)), {:controller => 'timelog', :action => 'destroy', :ids => @time_entries.collect(&:id), :back_url => @back}, :method => :delete, :data => {:confirm => l(:text_time_entries_destroy_confirmation)}, :class => 'icon icon-del', :disabled => !@can[:delete] %>
    redmine-6.0.5/app/views/context_menus/users.html.erb000066400000000000000000000031551500112024600225460ustar00rootroot00000000000000
      <% if @user %> <% if @user.locked? %>
    • <%= context_menu_link sprite_icon('unlock', l(:button_unlock)), user_path(@user, user: { status: User::STATUS_ACTIVE }, back_url: @back), method: :put, class: 'icon icon-unlock' %>
    • <% elsif User.current != @user %>
    • <%= context_menu_link sprite_icon('lock', l(:button_lock)), user_path(@user, user: { status: User::STATUS_LOCKED }, back_url: @back), method: :put, class: 'icon icon-lock' %>
    • <% end %>
    • <%= context_menu_link sprite_icon('edit', l(:button_edit)), edit_user_path(@user, back_url: @back), class: 'icon icon-edit' %>
    • <% unless User.current == @user %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete)), user_path(@user, back_url: @back), method: :delete, class: 'icon icon-del' %>
    • <% end %> <% else %> <% unless @users.all?(&:locked?) %>
    • <%= context_menu_link sprite_icon('lock', l(:button_lock)), bulk_lock_users_path(ids: @users.map(&:id)), method: :post, class: 'icon icon-lock' %>
    • <% else %>
    • <%= context_menu_link sprite_icon('unlock', l(:button_unlock)), bulk_unlock_users_path(ids: @users.map(&:id)), method: :post, class: 'icon icon-unlock' %>
    • <% end %>
    • <%= context_menu_link sprite_icon('del', l(:button_delete)), {controller: 'users', action: 'bulk_destroy', ids: @users.map(&:id)}, method: :delete, class: 'icon icon-del' %>
    • <% end %>
    redmine-6.0.5/app/views/custom_field_enumerations/000077500000000000000000000000001500112024600223175ustar00rootroot00000000000000redmine-6.0.5/app/views/custom_field_enumerations/create.js.erb000066400000000000000000000004731500112024600246730ustar00rootroot00000000000000$('#errorExplanation').remove(); <% if @value.valid? %> $('#content').html('<%= escape_javascript(render(:template => 'custom_field_enumerations/index')) %>'); <% else %> $('form#add-element').prepend('<%= escape_javascript(error_messages_for(@value)) %>'); <% end %> $('#custom_field_enumeration_name').focus(); redmine-6.0.5/app/views/custom_field_enumerations/destroy.html.erb000066400000000000000000000014721500112024600254510ustar00rootroot00000000000000<%= title [l(:label_custom_field_plural), custom_fields_path], [l(@custom_field.type_name), custom_fields_path(:tab => @custom_field.class.name)], @custom_field.name %> <%= form_tag(custom_field_enumeration_path(@custom_field, @value), :method => :delete) do %>

    <%= l(:text_enumeration_destroy_question, :name => @value.name, :count => @value.objects_count) %>

    <%= select_tag('reassign_to_id', content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '') + options_from_collection_for_select(@enumerations, 'id', 'name')) %>

    <%= submit_tag l(:button_apply) %> <%= link_to l(:button_cancel), custom_field_enumerations_path(@custom_field) %> <% end %> redmine-6.0.5/app/views/custom_field_enumerations/index.html.erb000066400000000000000000000033221500112024600250630ustar00rootroot00000000000000<%= custom_field_title @custom_field %> <% if @custom_field.enumerations.any? %> <%= form_tag custom_field_enumerations_path(@custom_field), :method => 'put' do %>
      <% @custom_field.enumerations.each_with_index do |value, position| %>
    • <%= tag.span(sprite_icon('reorder', ''), :class => 'icon-only icon-sort-handle sort-handle', :title => l(:button_move)) %> <%= hidden_field_tag "custom_field_enumerations[#{value.id}][position]", position, :class => 'position' %> <%= text_field_tag "custom_field_enumerations[#{value.id}][name]", value.name, :size => 40 %> <%= hidden_field_tag "custom_field_enumerations[#{value.id}][active]", 0 %> <%= delete_link custom_field_enumeration_path(@custom_field, value) %>
    • <% end %>

    <%= submit_tag(l(:button_save)) %> | <%= link_to l(:button_back), edit_custom_field_path(@custom_field) %>

    <% end %> <% end %> <%= form_tag custom_field_enumerations_path(@custom_field), :method => 'post', :remote => true, id: 'add-element' do %>

    <%= l(:label_enumeration_new) %>

    <%= text_field_tag 'custom_field_enumeration[name]', '', :size => 40 %> <%= submit_tag(l(:button_add)) %>

    <% end %> <%= javascript_tag do %> $(function() { $("#custom_field_enumerations").sortable({ handle: ".sort-handle", update: function(event, ui) { $("#custom_field_enumerations li").each(function(){ $(this).find("input.position").val($(this).index()+1); }); } }); }); <% end %> redmine-6.0.5/app/views/custom_fields/000077500000000000000000000000001500112024600177115ustar00rootroot00000000000000redmine-6.0.5/app/views/custom_fields/_form.html.erb000066400000000000000000000046251500112024600224570ustar00rootroot00000000000000<%= error_messages_for 'custom_field' %>

    <%= f.select :field_format, custom_field_formats_for_select(@custom_field), {}, :disabled => !@custom_field.new_record? %>

    <%= f.text_field :name, :size => 50, :required => true %>

    <%= f.text_area :description, :rows => 7 %>

    <% if @custom_field.format.multiple_supported %>

    <%= f.check_box :multiple %> <% if !@custom_field.new_record? && @custom_field.multiple %> <%= l(:text_turning_multiple_off) %> <% end %>

    <% end %> <%= render_custom_field_format_partial f, @custom_field %> <%= call_hook(:view_custom_fields_form_upper_box, :custom_field => @custom_field, :form => f) %>

    <% if @custom_field.new_record? %> <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <% else %> <%= submit_tag l(:button_save) %> <% end %>

    <%= f.check_box :is_required %>

    <% if %w(UserCustomField).include?(@custom_field.class.name) %>

    <%= f.check_box :visible %>

    <% end %> <% if @custom_field.is_a?(UserCustomField) %>

    <%= f.check_box :editable %>

    <% end %> <% if %w(IssueCustomField UserCustomField ProjectCustomField VersionCustomField GroupCustomField TimeEntryCustomField).include?(@custom_field.class.name) && @custom_field.format.is_filter_supported %>

    <%= f.check_box :is_filter %>

    <% end %> <% if %w(IssueCustomField ProjectCustomField).include?(@custom_field.class.name) && @custom_field.format.searchable_supported %>

    <%= f.check_box :searchable %>

    <% end %> <%= call_hook(:"view_custom_fields_form_#{@custom_field.type.to_s.underscore}", :custom_field => @custom_field, :form => f) %>
    <% if %w(IssueCustomField TimeEntryCustomField ProjectCustomField VersionCustomField).include?(@custom_field.class.name) %> <%= render :partial => 'visibility_by_role_selector', :locals => { :f => f } %> <% end %> <% if @custom_field.is_a?(IssueCustomField) %> <%= render :partial => 'visibility_by_tracker_selector', :locals => { :f => f } %> <%= render :partial => 'visibility_by_project_selector', :locals => { :f => f } %> <% end %>
    <% include_calendar_headers_tags %> redmine-6.0.5/app/views/custom_fields/_index.html.erb000066400000000000000000000027431500112024600226220ustar00rootroot00000000000000 <% if tab[:name] == 'IssueCustomField' %> <% end %> <% (@custom_fields_by_type[tab[:name]] || []).sort.each do |custom_field| -%> <% back_url = custom_fields_path(:tab => tab[:name]) %> <% if tab[:name] == 'IssueCustomField' %> <% end %> <% end %>
    <%=l(:field_name)%> <%=l(:field_field_format)%> <%=l(:field_is_required)%><%=l(:field_is_for_all)%> <%=l(:label_used_by)%>
    <%= link_to custom_field.name, edit_custom_field_path(custom_field) %> <%= l(custom_field.format.label) %> <%= checked_image custom_field.is_required? %><%= checked_image custom_field.is_for_all? %> <%= l(:label_x_projects, :count => @custom_fields_projects_count[custom_field.id] || 0) if custom_field.is_a? IssueCustomField and !custom_field.is_for_all? %> <%= reorder_handle(custom_field, :url => custom_field_path(custom_field), :param => 'custom_field') %> <%= link_to_function sprite_icon('copy', l(:button_copy)), "location.href = '#{new_custom_field_path(:copy => custom_field)}&type=' + encodeURIComponent(($('.tabs a.selected').attr('id')||'').split('tab-').pop())", :class => 'icon icon-copy' %> <%= delete_link custom_field_path(custom_field) %>
    redmine-6.0.5/app/views/custom_fields/_visibility_by_project_selector.html.erb000066400000000000000000000012101500112024600300060ustar00rootroot00000000000000
    <%= toggle_checkboxes_link("#custom_field_project_ids input[type=checkbox]:enabled") %><%= l(:label_project_plural) %>

    <%= f.check_box :is_for_all, :data => {:disables => '#custom_field_project_ids input'} %>

    <% project_ids = @custom_field.project_ids.to_a %> <%= render_project_nested_lists(Project.all) do |p| content_tag('label', check_box_tag('custom_field[project_ids][]', p.id, project_ids.include?(p.id), :id => nil) + ' ' + p.to_s) end %> <%= hidden_field_tag('custom_field[project_ids][]', '', :id => nil) %>
    redmine-6.0.5/app/views/custom_fields/_visibility_by_role_selector.html.erb000066400000000000000000000016621500112024600273140ustar00rootroot00000000000000
    <%= l(:field_visible) %> <% role_ids = @custom_field.role_ids %> <% Role.givable.sorted.each do |role| %> <% end %> <%= hidden_field_tag 'custom_field[role_ids][]', '' %>
    redmine-6.0.5/app/views/custom_fields/_visibility_by_tracker_selector.html.erb000066400000000000000000000012501500112024600277770ustar00rootroot00000000000000
    <%= toggle_checkboxes_link("#custom_field_tracker_ids input[type=checkbox]") %><%=l(:label_tracker_plural)%> <% tracker_ids = @custom_field.tracker_ids %> <% Tracker.sorted.each do |tracker| %> <%= check_box_tag "custom_field[tracker_ids][]", tracker.id, tracker_ids.include?(tracker.id), :id => "custom_field_tracker_ids_#{tracker.id}" %> <% end %> <%= hidden_field_tag "custom_field[tracker_ids][]", '' %>
    redmine-6.0.5/app/views/custom_fields/edit.html.erb000066400000000000000000000004131500112024600222710ustar00rootroot00000000000000<%= custom_field_title @custom_field %> <%= labelled_form_for :custom_field, @custom_field, :url => custom_field_path(@custom_field), :html => {:method => :put, :id => 'custom_field_form'} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% end %> redmine-6.0.5/app/views/custom_fields/formats/000077500000000000000000000000001500112024600213645ustar00rootroot00000000000000redmine-6.0.5/app/views/custom_fields/formats/_attachment.html.erb000066400000000000000000000003151500112024600253070ustar00rootroot00000000000000

    <%= f.text_field :extensions_allowed, :size => 50, :label => :setting_attachment_extensions_allowed %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: txt, png

    redmine-6.0.5/app/views/custom_fields/formats/_bool.html.erb000066400000000000000000000003431500112024600241130ustar00rootroot00000000000000

    <%= f.select :default_value, [[]]+@custom_field.possible_values_options %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    <%= edit_tag_style_tag f, :include_radio => true %>

    redmine-6.0.5/app/views/custom_fields/formats/_date.html.erb000066400000000000000000000003471500112024600241010ustar00rootroot00000000000000

    <%= f.date_field(:default_value, :value => @custom_field.default_value, :size => 10) %>

    <%= calendar_for('custom_field_default_value') %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    redmine-6.0.5/app/views/custom_fields/formats/_enumeration.erb000066400000000000000000000010411500112024600245370ustar00rootroot00000000000000<% unless @custom_field.new_record? %>

    <%= link_to sprite_icon('edit', l(:button_edit)), custom_field_enumerations_path(@custom_field), :class => 'icon icon-edit' %>

    <% if @custom_field.enumerations.active.any? %>

    <%= f.select :default_value, @custom_field.enumerations.active.map{|v| [v.name, v.id.to_s]}, :include_blank => true %>

    <% end %> <% end %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    <%= edit_tag_style_tag f %>

    redmine-6.0.5/app/views/custom_fields/formats/_link.html.erb000066400000000000000000000003441500112024600241160ustar00rootroot00000000000000<%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>

    <%= f.text_field :url_pattern, :size => 50, :label => :field_url %>

    <%= f.text_field(:default_value) %>

    redmine-6.0.5/app/views/custom_fields/formats/_list.html.erb000066400000000000000000000005661500112024600241420ustar00rootroot00000000000000

    <%= f.text_area :possible_values, :value => @custom_field.possible_values.to_a.join("\n"), :rows => 15, :required => true %> <%= l(:text_custom_field_possible_values_info) %>

    <%= f.text_field(:default_value) %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    <%= edit_tag_style_tag f %>

    redmine-6.0.5/app/views/custom_fields/formats/_numeric.html.erb000066400000000000000000000004361500112024600246250ustar00rootroot00000000000000<%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>

    <%= f.check_box :thousands_delimiter %>

    <%= f.text_field(:default_value) %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    redmine-6.0.5/app/views/custom_fields/formats/_regexp.html.erb000066400000000000000000000005031500112024600244500ustar00rootroot00000000000000

    <%= f.text_field :min_length, :size => 5, :no_label => true %> - <%= f.text_field :max_length, :size => 5, :no_label => true %>

    <%= f.text_field :regexp, :size => 50 %> <%= l(:text_regexp_info) %>

    redmine-6.0.5/app/views/custom_fields/formats/_string.html.erb000066400000000000000000000006011500112024600244630ustar00rootroot00000000000000<%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>

    <%= f.check_box :text_formatting, {:label => :setting_text_formatting, :data => {:disables => '#custom_field_url_pattern'}}, 'full', '' %>

    <%= f.text_field(:default_value) %>

    <%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

    redmine-6.0.5/app/views/custom_fields/formats/_text.html.erb000066400000000000000000000005601500112024600241450ustar00rootroot00000000000000<%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %>

    <%= f.check_box :text_formatting, {:label => :setting_text_formatting}, 'full', '' %>

    <% if @custom_field.class.name == "IssueCustomField" %>

    <%= f.check_box :full_width_layout %>

    <% end %>

    <%= f.text_area(:default_value, :rows => 5) %>

    redmine-6.0.5/app/views/custom_fields/formats/_user.html.erb000066400000000000000000000017241500112024600241420ustar00rootroot00000000000000

    <% Role.givable.sorted.each do |role| %> <% end %> <%= hidden_field_tag 'custom_field[user_role][]', '' %>

    <%= edit_tag_style_tag f %>

    redmine-6.0.5/app/views/custom_fields/formats/_version.html.erb000066400000000000000000000020411500112024600246420ustar00rootroot00000000000000

    <% Version::VERSION_STATUSES.each do |status| %> <% end %> <%= hidden_field_tag 'custom_field[version_status][]', '' %>

    <%= edit_tag_style_tag f %>

    redmine-6.0.5/app/views/custom_fields/index.api.rsb000066400000000000000000000027221500112024600223030ustar00rootroot00000000000000api.array :custom_fields do @custom_fields.each do |field| api.custom_field do api.id field.id api.name field.name api.description field.description api.customized_type field.class.customized_class.name.underscore if field.class.customized_class api.field_format field.field_format api.regexp field.regexp api.min_length field.min_length api.max_length field.max_length api.is_required field.is_required? api.is_filter field.is_filter? api.searchable field.searchable api.multiple field.multiple? api.default_value field.default_value api.visible field.visible? api.editable field.editable? values = field.possible_values_options if values.present? api.array :possible_values do values.each do |label, value| api.possible_value do api.value value || label api.label label end end end end if field.is_a?(IssueCustomField) api.array :trackers do field.trackers.each do |tracker| api.tracker :id => tracker.id, :name => tracker.name end end api.array :roles do field.roles.each do |role| api.role :id => role.id, :name => role.name end end end end end end redmine-6.0.5/app/views/custom_fields/index.html.erb000066400000000000000000000011151500112024600224530ustar00rootroot00000000000000
    <%= link_to_function sprite_icon('add', l(:label_custom_field_new)), "location.href = '#{new_custom_field_path}?tab=' + encodeURIComponent(($('.tabs a.selected').attr('id')||'').split('tab-').pop())", :class => 'icon icon-add' %>
    <%= title l(:label_custom_field_plural) %> <% if @custom_fields_by_type.present? %> <%= render_custom_fields_tabs(@custom_fields_by_type.keys) %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> <%= javascript_tag do %> $(function() { $("table.custom_fields tbody").positionedItems(); }); <% end %> redmine-6.0.5/app/views/custom_fields/new.html.erb000066400000000000000000000011421500112024600221350ustar00rootroot00000000000000<%= custom_field_title @custom_field %> <%= labelled_form_for :custom_field, @custom_field, :url => custom_fields_path, :html => {:id => 'custom_field_form'} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= hidden_field_tag 'type', @custom_field.type %> <%= hidden_field_tag 'copy', @copy_from.id if @copy_from %> <% end %> <%= javascript_tag do %> $('#custom_field_field_format').change(function(){ $.ajax({ url: '<%= new_custom_field_path(:format => 'js') %>', type: 'get', data: $('#custom_field_form').serialize(), complete: toggleDisabledInit }); }); <% end %> redmine-6.0.5/app/views/custom_fields/new.js.erb000066400000000000000000000001751500112024600216120ustar00rootroot00000000000000$('#content').html('<%= escape_javascript(render :template => 'custom_fields/new', :layout => nil, :formats => [:html]) %>') redmine-6.0.5/app/views/custom_fields/select_type.html.erb000066400000000000000000000005251500112024600236700ustar00rootroot00000000000000<%= custom_field_title @custom_field %> <%= form_tag new_custom_field_path, :method => 'get' do %>

    <%= l(:label_custom_field_select_type) %>:

    <%= select_type_radio_buttons(params[:tab]) %>

    <%= submit_tag l(:label_next).html_safe + " »".html_safe, :name => nil %>

    <% end %> redmine-6.0.5/app/views/documents/000077500000000000000000000000001500112024600170525ustar00rootroot00000000000000redmine-6.0.5/app/views/documents/_document.html.erb000066400000000000000000000005351500112024600224670ustar00rootroot00000000000000

    <%= link_to document.title, document_path(document) %>

    <%= format_time(document.updated_on) %>
    <%= textilizable(truncate_lines(document.description), :object => document) %>
    redmine-6.0.5/app/views/documents/_form.html.erb000066400000000000000000000014211500112024600216070ustar00rootroot00000000000000<%= error_messages_for @document %>

    <%= f.select :category_id, DocumentCategory.active.collect {|c| [c.name, c.id]} %>

    <%= f.text_field :title, :required => true, :size => 60 %>

    <%= f.text_area :description, :cols => 60, :rows => 15, :class => 'wiki-edit', :data => { :auto_complete => true } %>

    <% @document.custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :document, value %>

    <% end %> <% if @document.new_record? %>

    <%= render :partial => 'attachments/form', :locals => {:container => @document} %>

    <% end %>
    <%= wikitoolbar_for 'document_description' %> redmine-6.0.5/app/views/documents/edit.html.erb000066400000000000000000000003331500112024600214330ustar00rootroot00000000000000

    <%=l(:label_document)%>

    <%= labelled_form_for @document, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %>

    <%= submit_tag l(:button_save) %>

    <% end %> redmine-6.0.5/app/views/documents/index.html.erb000066400000000000000000000035221500112024600216200ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_document_new)), new_project_document_path(@project), :class => 'icon icon-add', :onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:add_documents, @project) %>

    <%=l(:label_document_plural)%>

    <% if @grouped.empty? %>

    <%= l(:label_no_data) %>

    <% end %> <% @grouped.keys.sort.__send__(@sort_by == 'date' ? :reverse_each : :each) do |group| %>

    <%= group %>

    <%= render :partial => 'documents/document', :collection => @grouped[group] %>
    <% end %>
    <% content_for :sidebar do %>

    <%= l(:label_sort_by, '') %>

    • <%= link_to(l(:field_category), {:sort_by => 'category'}, :class => (@sort_by == 'category' ? 'selected' :nil)) %>
    • <%= link_to(l(:label_date), {:sort_by => 'date'}, :class => (@sort_by == 'date' ? 'selected' :nil)) %>
    • <%= link_to(l(:field_title), {:sort_by => 'title'}, :class => (@sort_by == 'title' ? 'selected' :nil)) %>
    • <%= link_to(l(:field_author), {:sort_by => 'author'}, :class => (@sort_by == 'author' ? 'selected' :nil)) %>
    <% end %> <% html_title(l(:label_document_plural)) -%> redmine-6.0.5/app/views/documents/new.html.erb000066400000000000000000000004111500112024600212740ustar00rootroot00000000000000

    <%=l(:label_document_new)%>

    <%= labelled_form_for @document, :url => project_documents_path(@project), :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %>

    <%= submit_tag l(:button_create) %>

    <% end %> redmine-6.0.5/app/views/documents/show.html.erb000066400000000000000000000027751500112024600215020ustar00rootroot00000000000000
    <% if User.current.allowed_to?(:edit_documents, @project) %> <%= link_to sprite_icon('edit', l(:button_edit)), edit_document_path(@document), :class => 'icon icon-edit', :accesskey => accesskey(:edit) %> <% end %> <% if User.current.allowed_to?(:delete_documents, @project) %> <%= delete_link document_path(@document) %> <% end %>

    <%= @document.title %>

    <%= @document.category.name %>
    <%= format_date @document.created_on %>

    <% if @document.custom_field_values.any? %>
      <% render_custom_field_values(@document) do |custom_field, formatted| %>
    • <%= custom_field.name %>: <%= formatted %>
    • <% end %>
    <% end %>
    <%= textilizable @document, :description, :attachments => @document.attachments %>

    <%= l(:label_attachment_plural) %>

    <%= link_to_attachments @document, :thumbnails => true %> <% if authorize_for('documents', 'add_attachment') %>

    <%= link_to l(:label_attachment_new), {}, :onclick => "$('#add_attachment_form').show(); return false;", :id => 'attach_files_link' %>

    <%= form_tag({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true, :id => "add_attachment_form", :style => "display:none;") do %>

    <%= render :partial => 'attachments/form' %>

    <%= submit_tag l(:button_add) %> <% end %> <% end %> <% html_title @document.title -%> redmine-6.0.5/app/views/email_addresses/000077500000000000000000000000001500112024600201755ustar00rootroot00000000000000redmine-6.0.5/app/views/email_addresses/_index.html.erb000066400000000000000000000014121500112024600230760ustar00rootroot00000000000000<% if @addresses.present? %> <% @addresses.each do |address| %> <% end %> <% end %> <% unless @addresses.size >= Setting.max_additional_emails.to_i %>
    <%= form_for @address, :url => user_email_addresses_path(@user), :remote => true do |f| %>

    <%= l(:label_email_address_add) %>

    <%= error_messages_for @address %>

    <%= f.text_field :address, :size => 40 %> <%= submit_tag l(:button_add) %>

    <% end %>
    <% end %> redmine-6.0.5/app/views/email_addresses/index.html.erb000066400000000000000000000001151500112024600227360ustar00rootroot00000000000000

    <%= @user.name %>

    <%= render :partial => 'email_addresses/index' %> redmine-6.0.5/app/views/email_addresses/index.js.erb000066400000000000000000000003411500112024600224070ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'email_addresses/index') %>'); showModal('ajax-modal', '600px', '<%= escape_javascript l(:label_email_address_plural) %>'); $('#email_address_address').focus(); redmine-6.0.5/app/views/enumerations/000077500000000000000000000000001500112024600175625ustar00rootroot00000000000000redmine-6.0.5/app/views/enumerations/_form.html.erb000066400000000000000000000005011500112024600223150ustar00rootroot00000000000000<%= error_messages_for 'enumeration' %>

    <%= f.text_field :name %>

    <%= f.check_box :active %>

    <%= f.check_box :is_default %>

    <% @enumeration.custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :enumeration, value %>

    <% end %>
    redmine-6.0.5/app/views/enumerations/destroy.html.erb000066400000000000000000000012351500112024600227110ustar00rootroot00000000000000<%= title [l(@enumeration.option_name), enumerations_path], @enumeration.name %> <%= form_tag({}, :method => :delete) do %>

    <%= l(:text_enumeration_destroy_question, :name => @enumeration.name, :count => @enumeration.objects_count) %>

    <%= select_tag 'reassign_to_id', (content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '') + options_from_collection_for_select(@enumerations, 'id', 'name')) %>

    <%= submit_tag l(:button_apply) %> <%= link_to l(:button_cancel), enumerations_path %> <% end %> redmine-6.0.5/app/views/enumerations/edit.html.erb000066400000000000000000000005141500112024600221440ustar00rootroot00000000000000<%= title [l(@enumeration.option_name), enumerations_path], @enumeration.name %> <%= labelled_form_for :enumeration, @enumeration, :url => enumeration_path(@enumeration), :html => {:method => :put, :multipart => true} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/enumerations/index.api.rsb000066400000000000000000000005511500112024600221520ustar00rootroot00000000000000api.array @klass.name.underscore.pluralize do @enumerations.each do |enumeration| api.__send__ @klass.name.underscore do api.id enumeration.id api.name enumeration.name api.is_default enumeration.is_default api.active enumeration.active render_api_custom_values enumeration.visible_custom_field_values, api end end end redmine-6.0.5/app/views/enumerations/index.html.erb000066400000000000000000000023211500112024600223240ustar00rootroot00000000000000

    <%=l(:label_enumerations)%>

    <% Enumeration.get_subclasses.each do |klass| %>

    <%= l(klass::OptionName) %>

    <% enumerations = klass.shared %>

    <%= link_to sprite_icon('add', l(:label_enumeration_new)), new_enumeration_path(:type => klass.name), :class => 'icon icon-add' %>

    <% if enumerations.any? %> <% enumerations.each do |enumeration| %> <% end %>
    <%= l(:field_name) %> <%= l(:field_is_default) %> <%= l(:field_active) %>
    <%= link_to enumeration, edit_enumeration_path(enumeration) %> <%= checked_image enumeration.is_default? %> <%= checked_image enumeration.active? %> <%= reorder_handle(enumeration, :url => enumeration_path(enumeration), :param => 'enumeration') %> <%= delete_link enumeration_path(enumeration) %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> <% end %> <% html_title(l(:label_enumerations)) -%> <%= javascript_tag do %> $(function() { $("table.enumerations tbody").positionedItems(); }); <% end %> redmine-6.0.5/app/views/enumerations/new.html.erb000066400000000000000000000005271500112024600220140ustar00rootroot00000000000000<%= title [l(@enumeration.option_name), enumerations_path], l(:label_enumeration_new) %> <%= labelled_form_for :enumeration, @enumeration, :url => enumerations_path, :html => {:multipart => true} do |f| %> <%= f.hidden_field :type %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/files/000077500000000000000000000000001500112024600161535ustar00rootroot00000000000000redmine-6.0.5/app/views/files/index.api.rsb000066400000000000000000000006201500112024600205400ustar00rootroot00000000000000api.array :files do @containers.each do |container| container.attachments.each do |attachment| api.file do render_api_attachment_attributes(attachment, api) if container.is_a?(Version) api.version :id => container.id, :name => container.name end api.digest attachment.digest api.downloads attachment.downloads end end end end redmine-6.0.5/app/views/files/index.html.erb000066400000000000000000000041351500112024600207220ustar00rootroot00000000000000
    <%= link_to(sprite_icon('add', l(:label_attachment_new)), new_project_file_path(@project), :class => 'icon icon-add') if User.current.allowed_to?(:manage_files, @project) %>

    <%=l(:label_attachment_plural)%>

    <% delete_allowed = User.current.allowed_to?(:manage_files, @project) %>
    <%= sort_header_tag('filename', :caption => l(:field_filename)) %> <%= sort_header_tag('created_on', :caption => l(:label_date), :default_order => 'desc') %> <%= sort_header_tag('size', :caption => l(:field_filesize), :default_order => 'desc') %> <%= sort_header_tag('downloads', :caption => l(:label_downloads_abbr), :default_order => 'desc') %> <% @containers.each do |container| %> <% next if container.attachments.empty? -%> <% if container.is_a?(Version) -%> <% end -%> <% container.attachments.each do |file| %> <% end %> <% end %>
    <%= l(:field_digest) %>
    <%= link_to(sprite_icon('package', container), { :controller => 'versions', :action => 'show', :id => container}, :class => "icon icon-package") %>
    <%= link_to_attachment file, :title => file.description -%> <%= format_time(file.created_on) %> <%= number_to_human_size(file.filesize) %> <%= file.downloads %> <%= file.digest_type %>: <%= file.digest %> <%= link_to_attachment file, class: 'icon-only icon-download', title: l(:button_download), download: true, icon: 'download' %> <%= link_to(sprite_icon('del', l(:button_delete)), attachment_path(file), :class => 'icon-only icon-del', :data => {:confirm => l(:text_are_you_sure)}, :method => :delete) if delete_allowed %>
    <% html_title(l(:label_attachment_plural)) -%> redmine-6.0.5/app/views/files/new.html.erb000066400000000000000000000011071500112024600204000ustar00rootroot00000000000000

    <%=l(:label_attachment_new)%>

    <%= error_messages_for 'attachment' %> <%= form_tag(project_files_path(@project), :multipart => true, :class => "tabular") do %>
    <% if @versions.any? %>

    <%= select_tag "version_id", content_tag('option', '') + options_from_collection_for_select(@versions, "id", "name") %>

    <% end %>

    <%= render :partial => 'attachments/form' %>

    <%= submit_tag l(:button_add) %> <% end %> redmine-6.0.5/app/views/gantts/000077500000000000000000000000001500112024600163515ustar00rootroot00000000000000redmine-6.0.5/app/views/gantts/show.html.erb000066400000000000000000000360211500112024600207700ustar00rootroot00000000000000<% @gantt.view = self %>

    <%= @query.new_record? ? l(:label_gantt) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag({:controller => 'gantts', :action => 'show', :project_id => @project, :month => params[:month], :year => params[:year], :months => params[:months]}, :method => :get, :id => 'query_form') do %> <%= hidden_field_tag 'set_filter', '1' %> <%= hidden_field_tag 'gantt', '1' %>
    "> "> <%= sprite_icon(@query.new_record? ? "angle-down" : "angle-right", rtl: !@query.new_record?) %> <%= l(:label_filter_plural) %>
    "> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>

    <%= gantt_zoom_link(@gantt, :in) %> <%= gantt_zoom_link(@gantt, :out) %> <%= link_to_previous_month(@gantt.year_from, @gantt.month_from, :accesskey => accesskey(:previous)) %> | <%= link_to_next_month(@gantt.year_from, @gantt.month_from, :accesskey => accesskey(:next)) %>

    <%= number_field_tag 'months', @gantt.months, :min => 1, :max => Setting.gantt_months_limit.to_i, :autocomplete => false %> <%= l(:label_months_from) %> <%= select_month(@gantt.month_from, :prefix => "month", :discard_type => true) %> <%= select_year(@gantt.year_from, :prefix => "year", :discard_type => true) %> <%= hidden_field_tag 'zoom', @gantt.zoom %> <%= link_to_function sprite_icon('checked', l(:button_apply)), '$("#query_form").submit()', :class => 'icon icon-checked' %> <%= link_to sprite_icon('reload', l(:button_clear)), { :project_id => @project, :set_filter => 1 }, :class => 'icon icon-reload' %> <% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %> <%= link_to_function sprite_icon('save', l(:button_save_object, object_name: l(:label_query)).capitalize), "$('#query_form').attr('action', '#{ @project ? new_project_query_path(@project) : new_query_path }').submit();", :class => 'icon icon-save' %> <% end %> <% if !@query.new_record? && @query.editable_by?(User.current) %> <%= link_to sprite_icon('edit', l(:button_edit_object, object_name: l(:label_query)).capitalize), edit_query_path(@query, :gantt => 1), :class => 'icon icon-edit' %> <%= delete_link query_path(@query, :gantt => 1), {}, l(:button_delete_object, object_name: l(:label_query)).capitalize %> <% end %>

    <% end %> <%= error_messages_for 'query' %> <% if @query.valid? %> <% zoom = 1 @gantt.zoom.times { zoom = zoom * 2 } subject_width = 330 header_height = 18 headers_height = header_height show_weeks = false show_days = false show_day_num = false if @gantt.zoom > 1 show_weeks = true headers_height = 2 * header_height if @gantt.zoom > 2 show_days = true headers_height = 3 * header_height if @gantt.zoom > 3 show_day_num = true headers_height = 4 * header_height end end end # Width of the entire chart g_width = ((@gantt.date_to - @gantt.date_from + 1) * zoom).to_i @gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width) g_height = [(20 * (@gantt.number_of_rows + 6)) + 150, 206].max t_height = g_height + headers_height %> <% if @gantt.truncated %>

    <%= l(:notice_gantt_chart_truncated, :max => @gantt.max_rows) %>

    <% end %> <% @query.columns.each do |column| next if Redmine::Helpers::Gantt::UNAVAILABLE_COLUMNS.include?(column.name) column_name = column.name.to_s.tr('.', '_') %> <% end %>
    <% style = "" style += "position:relative;" style += "height: #{t_height + 24}px;" style += "width: #{subject_width + 1}px;" %> <%= content_tag(:div, :style => style, :class => "gantt_subjects_container #{'draw_selected_columns' if @query.draw_selected_columns}") do %> <% style = "" style += "width: #{subject_width + 1}px;" style += "height: #{headers_height}px;" style += 'background: #eee;' %> <%= content_tag(:div, "", :style => style, :class => "gantt_hdr") %> <% style = "" style += "z-index: 1;" style += "width: #{subject_width + 1}px;" style += "height: #{t_height}px;" style += 'overflow: hidden;' %> <%= content_tag(:div, "", :style => style, :class => "gantt_hdr") %> <%= content_tag(:div, :class => "gantt_subjects") do %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %> <%= @gantt.subjects.html_safe %> <% end %> <% end %> <% end %> <% style = "position: relative;" style += "height: #{t_height + 24}px;" %> <%= content_tag(:div, :style => style, :class => "gantt_#{column_name}_container gantt_selected_column_container") do %> <% style = "height: #{t_height}px;" style += 'overflow: hidden;' %> <%= content_tag(:div, '', :style => style, :class => "gantt_hdr") %> <% style = "height: #{headers_height}px;" style += 'background: #eee;' %> <%= content_tag(:div, content_tag(:p, column.caption, :class => 'gantt_hdr_selected_column_name'), :style => style, :class => "gantt_hdr") %> <%= content_tag(:div, :class => "gantt_#{column_name} gantt_selected_column_content") do %> <%= @gantt.selected_column_content({:column => column, :top => headers_height + 8, :zoom => zoom, :g_width => g_width}).html_safe %> <% end %> <% end %>
    <% style = "" style += "width: #{g_width - 1}px;" style += "height: #{headers_height}px;" style += 'background: #eee;' %> <%= content_tag(:div, ' '.html_safe, :style => style, :class => "gantt_hdr") %> <% ###### Months headers ###### %> <% month_f = @gantt.date_from left = 0 height = (show_weeks ? header_height : header_height + g_height) %> <% @gantt.months.times do %> <% width = (((month_f >> 1) - month_f) * zoom - 1).to_i style = "" style += "left: #{left}px;" style += "width: #{width}px;" style += "height: #{height}px;" %> <%= content_tag(:div, :style => style, :class => "gantt_hdr") do %> <%= link_to "#{month_f.year}-#{month_f.month}", @gantt.params.merge(:year => month_f.year, :month => month_f.month), :title => "#{month_name(month_f.month)} #{month_f.year}" %> <% end %> <% left = left + width + 1 month_f = month_f >> 1 %> <% end %> <% ###### Weeks headers ###### %> <% if show_weeks %> <% left = 0 height = (show_days ? header_height - 1 : header_height - 1 + g_height) %> <% if @gantt.date_from.cwday == 1 %> <% # @date_from is monday week_f = @gantt.date_from %> <% else %> <% # find next monday after @date_from week_f = @gantt.date_from + (7 - @gantt.date_from.cwday + 1) width = (7 - @gantt.date_from.cwday + 1) * zoom - 1 style = "" style += "left: #{left}px;" style += "top: 19px;" style += "width: #{width}px;" style += "height: #{height}px;" %> <%= content_tag(:div, ' '.html_safe, :style => style, :class => "gantt_hdr") %> <% left = left + width + 1 %> <% end %> <% while week_f <= @gantt.date_to %> <% width = ((week_f + 6 <= @gantt.date_to) ? 7 * zoom - 1 : (@gantt.date_to - week_f + 1) * zoom - 1).to_i style = "" style += "left: #{left}px;" style += "top: 19px;" style += "width: #{width}px;" style += "height: #{height}px;" %> <%= content_tag(:div, :style => style, :class => "gantt_hdr") do %> <%= content_tag(:small) do %> <%= week_f.cweek if width >= 16 %> <% end %> <% end %> <% left = left + width + 1 week_f = week_f + 7 %> <% end %> <% end %> <% ###### Day numbers headers ###### %> <% if show_day_num %> <% left = 0 height = g_height + header_height*2 - 1 wday = @gantt.date_from.cwday day_num = @gantt.date_from %> <% (@gantt.date_to - @gantt.date_from + 1).to_i.times do %> <% width = zoom - 1 style = "" style += "left:#{left}px;" style += "top:37px;" style += "width:#{width}px;" style += "height:#{height}px;" style += "font-size:0.7em;" clss = "gantt_hdr" clss << " nwday" if @gantt.non_working_week_days.include?(wday) %> <%= content_tag(:div, :style => style, :class => clss) do %> <%= day_num.day %> <% end %> <% left = left + width+1 day_num = day_num + 1 wday = wday + 1 wday = 1 if wday > 7 %> <% end %> <% end %> <% ###### Days headers ####### %> <% if show_days %> <% left = 0 height = g_height + header_height - 1 top = (show_day_num ? 55 : 37) %> <% (@gantt.date_from..@gantt.date_to).each do |g_date| %> <% width = zoom - 1 style = "" style += "left: #{left}px;" style += "top: #{top}px;" style += "width: #{width}px;" style += "height: #{height}px;" style += "font-size:0.7em;" clss = "gantt_hdr" clss << " nwday" if @gantt.non_working_week_days.include?(g_date.cwday) %> <%= content_tag(:div, :style => style, :class => clss) do %> <%= day_letter(g_date.cwday) %> <% end %> <% left = left + width + 1 %> <% end %> <% end %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %> <%= @gantt.lines.html_safe %> <% end %> <% ###### Today red line (excluded from cache) ###### %> <% if User.current.today >= @gantt.date_from and User.current.today <= @gantt.date_to %> <% today_left = (((User.current.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i style = "" style += "position: absolute;" style += "height: #{g_height}px;" style += "top: #{headers_height + 1}px;" style += "left: #{today_left}px;" style += "width:10px;" style += "border-left: 1px dashed red;" %> <%= content_tag(:div, ' '.html_safe, :style => style, :id => 'today_line') %> <% end %> <% style = "" style += "position: absolute;" style += "height: #{g_height}px;" style += "top: #{headers_height + 1}px;" style += "left: 0px;" style += "width: #{g_width - 1}px;" %> <%= content_tag(:div, '', :style => style, :id => "gantt_draw_area") %>
    <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'PDF', @gantt.params %> <%= f.link_to_with_query_parameters('PNG', @gantt.params) if @gantt.respond_to?('to_image') %> <% end %> <% end # query.valid? %> <% content_for :sidebar do %> <%= render :partial => 'issues/sidebar' %> <% end %> <% html_title(l(:label_gantt)) -%> <% content_for :header_tags do %> <%= javascript_include_tag 'raphael' %> <%= javascript_include_tag 'gantt' %> <% end %> <%= javascript_tag do %> var issue_relation_type = <%= raw Redmine::Helpers::Gantt::DRAW_TYPES.to_json %>; $(function() { disable_unavailable_columns('<%= Redmine::Helpers::Gantt::UNAVAILABLE_COLUMNS.map(&:to_s).join(',') %>'.split(',')); drawGanttHandler(); resizableSubjectColumn(); drawSelectedColumns(); $("#draw_relations, #draw_progress_line, #draw_selected_columns").change(drawGanttHandler); $('div.gantt_subjects .expander').on('click', ganttEntryClick); }); $(window).resize(function() { drawGanttHandler(); resizableSubjectColumn(); }); <% end %> <%= context_menu %> redmine-6.0.5/app/views/groups/000077500000000000000000000000001500112024600163705ustar00rootroot00000000000000redmine-6.0.5/app/views/groups/_form.html.erb000066400000000000000000000012461500112024600211320ustar00rootroot00000000000000<%= error_messages_for @group %>

    <%= f.text_field :name, :required => true, :size => 60, :disabled => !@group.safe_attribute?('name') %>

    <% unless @group.builtin? %>

    <%= f.check_box :twofa_required, disabled: !Setting.twofa_optional? %> <% if Setting.twofa_required? %> <%= l 'twofa_text_group_required' %> <% elsif !Setting.twofa_optional? %> <%= l 'twofa_text_group_disabled' %> <% end %>

    <% end %> <% @group.custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :group, value %>

    <% end %>
    redmine-6.0.5/app/views/groups/_general.html.erb000066400000000000000000000003071500112024600216010ustar00rootroot00000000000000<%= labelled_form_for @group, :url => group_path(@group), :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/groups/_memberships.html.erb000066400000000000000000000000531500112024600225000ustar00rootroot00000000000000<%= render_principal_memberships @group %> redmine-6.0.5/app/views/groups/_new_users_form.html.erb000066400000000000000000000005711500112024600232240ustar00rootroot00000000000000
    <%= label_tag "user_search", l(:label_user_search) %>

    <%= text_field_tag 'user_search', nil %>

    <%= javascript_tag "observeSearchfield('user_search', null, '#{ escape_javascript autocomplete_for_user_group_path(@group) }')" %>
    <%= render_principals_for_new_group_users(@group) %>
    redmine-6.0.5/app/views/groups/_new_users_modal.html.erb000066400000000000000000000005211500112024600233500ustar00rootroot00000000000000

    <%= l(:label_user_new) %>

    <%= form_for(@group, :url => group_users_path(@group), :remote => true, :method => :post) do |f| %> <%= render :partial => 'new_users_form' %>

    <%= submit_tag l(:button_add) %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/groups/_users.html.erb000066400000000000000000000012661500112024600213320ustar00rootroot00000000000000

    <%= link_to sprite_icon('add', l(:label_user_new)), new_group_users_path(@group), :remote => true, :class => "icon icon-add" %>

    <% if @group.users.any? %> <% @group.users.sort.each do |user| %> <% end %>
    <%= l(:label_user) %>
    <%= link_to_user user %> <%= delete_link group_user_path(@group, :user_id => user), :remote => true %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/groups/add_users.js.erb000066400000000000000000000003011500112024600214400ustar00rootroot00000000000000hideModal(); $('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); <% @users.each do |user| %> $('#user-<%= user.id %>').effect("highlight"); <% end %> redmine-6.0.5/app/views/groups/autocomplete_for_user.js.erb000066400000000000000000000001351500112024600241010ustar00rootroot00000000000000$('#users').html('<%= escape_javascript(render_principals_for_new_group_users(@group)) %>'); redmine-6.0.5/app/views/groups/destroy_membership.js.erb000066400000000000000000000001511500112024600233760ustar00rootroot00000000000000$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'groups/memberships') %>'); redmine-6.0.5/app/views/groups/edit.html.erb000066400000000000000000000001601500112024600207470ustar00rootroot00000000000000<%= title [l(:label_group_plural), groups_path], @group.name %> <%= render_tabs group_settings_tabs(@group) %> redmine-6.0.5/app/views/groups/edit_membership.js.erb000066400000000000000000000005331500112024600226360ustar00rootroot00000000000000<% if @membership.valid? %> $('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'groups/memberships') %>'); $('#member-<%= @membership.id %>').effect("highlight"); <% else %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))) %>'); <% end %> redmine-6.0.5/app/views/groups/index.api.rsb000066400000000000000000000004311500112024600207550ustar00rootroot00000000000000api.array :groups do @groups.each do |group| api.group do api.id group.id api.name group.lastname api.builtin group.builtin_type if group.builtin_type render_api_custom_values group.visible_custom_field_values, api end end end redmine-6.0.5/app/views/groups/index.html.erb000066400000000000000000000024761500112024600211450ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_group_new)), new_group_path, :class => 'icon icon-add' %>
    <%= title l(:label_group_plural) %> <%= form_tag(groups_path, :method => :get) do %>
    <%= l(:label_filter_plural) %> <%= text_field_tag 'name', params[:name], :size => 30 %> <%= submit_tag l(:button_apply), :class => "small", :name => nil %> <%= link_to sprite_icon('reload', l(:button_clear)), groups_path, :class => 'icon icon-reload' %>
    <% end %>   <% if @groups.any? %>
    <% @groups.each do |group| %> "> <% end %>
    <%=l(:label_group)%> <%=l(:label_user_plural)%>
    <%= link_to group, edit_group_path(group) %> <%= (@user_count_by_group_id[group.id] || 0) unless group.builtin? %> <%= delete_link group unless group.builtin? %>
    <%= pagination_links_full @group_pages, @group_count %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/groups/new.html.erb000066400000000000000000000005051500112024600206160ustar00rootroot00000000000000<%= title [l(:label_group_plural), groups_path], l(:label_group_new) %> <%= labelled_form_for @group, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %>

    <%= f.submit l(:button_create) %> <%= f.submit l(:button_create_and_continue), :name => 'continue' %>

    <% end %> redmine-6.0.5/app/views/groups/new_users.html.erb000066400000000000000000000003301500112024600220330ustar00rootroot00000000000000

    <%= l(:label_user_new) %>

    <%= form_for(@group, :url => group_users_path(@group), :method => :post) do |f| %> <%= render :partial => 'new_users_form' %>

    <%= submit_tag l(:button_add) %>

    <% end %> redmine-6.0.5/app/views/groups/new_users.js.erb000066400000000000000000000002021500112024600215010ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'groups/new_users_modal') %>'); showModal('ajax-modal', '700px'); redmine-6.0.5/app/views/groups/remove_user.js.erb000066400000000000000000000001351500112024600220270ustar00rootroot00000000000000$('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); redmine-6.0.5/app/views/groups/show.api.rsb000066400000000000000000000020451500112024600206310ustar00rootroot00000000000000api.group do api.id @group.id api.name @group.lastname api.builtin @group.builtin_type if @group.builtin_type render_api_custom_values @group.visible_custom_field_values, api api.array :users do @group.users.each do |user| api.user :id => user.id, :name => user.name end end if include_in_api_response?('users') && !@group.builtin? api.array :memberships do @group.memberships.preload(:roles, :project).each do |membership| api.membership do api.id membership.id api.project :id => membership.project.id, :name => membership.project.name api.array :roles do membership.member_roles.each do |member_role| if member_role.role attrs = {:id => member_role.role.id, :name => member_role.role.name} attrs.merge!(:inherited => true) if member_role.inherited_from.present? api.role attrs end end end end if membership.project end end if include_in_api_response?('memberships') end redmine-6.0.5/app/views/groups/show.html.erb000066400000000000000000000011321500112024600210020ustar00rootroot00000000000000
    <%= link_to(sprite_icon('edit', l(:button_edit)), edit_group_path(@group), :class => 'icon icon-edit') if User.current.admin? %>

    <%= @group.name %>

    <% if @group.custom_field_values.any? %>
      <% render_custom_field_values(@group) do |custom_field, formatted| %>
    • <%= custom_field.name %>: <%= formatted %>
    • <% end %>
    <% end %>

    <%= l(:label_member_plural) %>

      <% @group.users.visible.each do |user| %>
    • <%= link_to_user(user) %>
    • <% end %>
    <% html_title @group.name %> redmine-6.0.5/app/views/help/000077500000000000000000000000001500112024600160015ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/000077500000000000000000000000001500112024600203525ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/code_highlighting_languages.html.erb000066400000000000000000000012331500112024600274730ustar00rootroot00000000000000 List of languages supported by Redmine code highlighter <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    List of languages supported by Redmine code highlighter

    <% @available_lexers.each do |lexer| %> <% end %>
    Language Description
    <%= lexer.tag %> <%= lexer.desc %> <%= " [aliases: #{lexer.aliases.uniq.join(', ')}]" if lexer.aliases.any? %>
    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/000077500000000000000000000000001500112024600226545ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/common_mark/de/000077500000000000000000000000001500112024600232445ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/common_mark/de/wiki_syntax_common_mark.html.erb000066400000000000000000000134411500112024600316370ustar00rootroot00000000000000 Wikiformatierung <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Schnellreferenz (CommonMark Markdown (GitHub Flavored))

    Schriftarten (" target="_blank">mehr)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>**Fett**Fett
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>*Kursiv*Kursiv
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>~~Durchgestrichen~~Durchgestrichen
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>`Inline Code`Inline Code
    ```
     vorformatierte
     Textzeilen
    ```
     vorformatierte
     Textzeilen
    
    Hervorgehobener Programmcode (" target="_blank">mehr)
    <%= image_tag("jstoolbar/code.svg", { alt: "Hervorgehobener Programmcode" }) %>```ruby
    3.times do
      puts 'Hello'
    end
    ```
    3.times do
      puts 'Hello'
    end
    
    Zeilenumbrüche und Absätze
    Eine leere Zeile

    erstellt
    einen neuen Absatz.

    Eine leere Zeile

    erstellt einen neuen Absatz.

    Beenden Sie eine Zeile mit einem Backslash\
    oder zwei Leerzeichen, um einen manuellen Zeilenumbruch einzufügen.

    Beenden Sie eine Zeile mit einem Backslash
    oder zwei Leerzeichen, um einen manuellen Zeilenumbruch einzufügen.

    Listen
    <%= image_tag("jstoolbar/list.svg", { alt:"Ungeordnete Liste" }) %>* Element 1
      * Sub
    * Element 2
    • Element 1
      • Sub
    • Element 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt:"Geordnete Liste" }) %>1. Element 1
       1. Sub
    2. Element 2
    1. Element 1
      1. Sub
    2. Element 2
    <%= image_tag("jstoolbar/list-check.svg", { alt:"Ausgabenliste" }) %>* [ ] Element 1
    * [x] Element 2
    • Element 1
    • Element 2
    Überschriften (" target="_blank">mehr)
    <%= image_tag("jstoolbar/h1.svg", { alt:"Heading 1" }) %># Titel 1

    Titel 1

    <%= image_tag("jstoolbar/h2.svg", { alt:"Heading 2" }) %>## Titel 2

    Titel 2

    <%= image_tag("jstoolbar/h3.svg", { alt:"Heading 3" }) %>### Titel 3

    Titel 3

    Links (" target="_blank">mehr)
    www.foo.barwww.foo.bar
    http://foo.barhttp://foo.bar
    [Foo](http://foo.bar)Foo
    Redmine interne Links (" target="_blank">mehr)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt:"Link zu einer Wiki-Seite" }) %>[[Wiki page]]Wiki-Seite
    Ticket #12Ticket #12
    ##12Fehler #12: Titel des Tickets
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Eingebettete Bilder (" target="_blank">mehr)
    <%= image_tag("jstoolbar/image.svg", { alt:"Image" }) %>![](Bild_url)
    ![](Angehängtes_Bild)
    Tabellen
    | A | B | C |
    |---|---|---|
    | A | B | C |
    | D | E | F |
    ABC
    ABC
    DEF
    Roh HTML (" target="_blank">mehr)
    HTML ist <del>nicht</del> <u>erlaubt</u>.HTML ist nicht erlaubt.

    Weitere Informationen

    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/de/wiki_syntax_detailed_common_mark.html.erb000066400000000000000000000437531500112024600335030ustar00rootroot00000000000000 Redmine Wiki-Formatierung (CommonMark Markdown (GitHub Flavored))detailliert <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Redmine Wiki-Formatierung (CommonMark Markdown (GitHub Flavored))detailliert

    Links

    Redmine interne Links

    Redmine erlaubt Hyperlinks zwischen Ressourcen (Tickets, Änderungssätze, Wiki-Seiten...) überall dort, wo Wiki-Formatierung verwendet wird.

    • Link zu einem Ticket: #124 (zeigt #124, Link ist durchgestrichen, wenn das Ticket geschlossen ist)
    • Link zu einem Ticket mit Name und Betreff des Trackers: ##124 (zeigt Fehler #124: Die Massenbearbeitung ändert nicht die Eigenschaften der Kategorie oder der festen Versionseigenschaften)
    • Link zu einer Ticketnotiz: #124-6, oder #124#note-6
    • Link zu einer Ticketnotiz innerhalb des selben Tickets: #note-6

    Wiki-Links:

    • [[Anleitung]] zeigt einen Link zur Seite mit dem Namen „Anleitung“ an: Anleitung
    • [[Leitfaden#Unterpunkt]] führt Sie zum Anker "Unterpunkt". Überschriften bekommen automatisch Anker zugewiesen, damit Sie darauf verweisen können: Leitfaden Leitfaden
    • [[#Unterpunkt]]Link zum Anker "Unterpunkt" der aktuellen Seite: #Unterpunkt
    • [[Anleitung|Benutzerhandbuch]] zeigt einen Link zu derselben Seite, aber mit einem anderen Text: Benutzerhandbuch

    Sie können auch auf Seiten eines anderen Projekt-Wikis verlinken:

    • [[sandbox:Eine Seite]] zeigt einen Link zu der Seite namens 'Eine Seite' des Sandbox-Wikis an
    • [[sandbox:]] zeigt einen Link zur Hauptseite des Sandbox-Wikis an

    Wiki-Links werden rot angezeigt, wenn die Seite noch nicht existiert, zB: Nicht vorhandene Seite.

    Links zu anderen Ressourcen:

    • Dokumente:
      • document#17 (Link zum Dokument mit der ID 17)
      • document:Willkommen (Link zum Dokument mit dem Titel "Willkommen")
      • document:"Ein Dokument" (doppelte Anführungszeichen können verwendet werden, wenn der Dokumenttitel Leerzeichen enthält)
      • sandbox:document:"Ein Dokument" (Link zu einem Dokument mit dem Titel "Ein Dokument" in einem anderen Projekt "Sandbox")
    • Versionen:
      • version#3 (ink zur Version mit der ID 3)
      • version:1.0.0 (Link zur Version mit dem Namen "1.0.0")
      • version:"1.0 beta 2" (doppelte Anführungszeichen können verwendet werden, wenn die Version Leerzeichen enthält)
      • sandbox:version:1.0.0 (Link zu Version „1.0.0“ im Projekt „Sandbox“)
    • Anhänge:
      • attachment:file.zip (Link zum Anhang des aktuellen Objekts mit dem Namen file.zip)
      • Im Moment können nur Anhänge des aktuellen Objekts referenziert werden (wenn Sie sich in einem Problem befinden, können nur Anhänge dieses Problems referenziert werden).
    • Änderungssätze:
      • r758 (Link zu einem Changeset)
      • commit:c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash)
      • svn1|r758 (Link zu einem Changeset eines bestimmten Repositorys, für Projekte mit mehreren Repositorys)
      • commit:hg|c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash eines bestimmten Repositorys)
      • sandbox:r758 (Link zu einem Changeset eines anderen Projekts)
      • sandbox:commit:c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash eines anderen Projekts)
    • Repository-Dateien:
      • source:some/file (Link zu der Datei, die sich unter /some/file im Repository des Projekts befindet)
      • source:some/file@52 (Link zur Revision 52 der Datei)
      • source:some/file#L120 (Link zur Revision 52 der Datei)
      • source:some/file@52#L120 (Link zu Zeile 120 der Revision 52 der Datei)
      • source:"some file@52#L120" (verwenden Sie doppelte Anführungszeichen, wenn die URL Leerzeichen enthält)
      • export:some/file (Download der Datei erzwingen)
      • source:svn1|some/file (Link zu einer Datei eines bestimmten Repositorys, für Projekte mit mehreren Repositorys)
      • sandbox:source:some/file (Link zu der Datei, die sich unter /some/file im Repository des Projekts „Sandbox“ befindet)
      • sandbox:export:some/file (Download der Datei erzwingen)
    • Foren:
      • forum#1 (Link zum Forum mit der ID 1)
      • forum:Support (Link zum Forum namens Support)
      • forum:"Technischer Support" (verwenden Sie doppelte Anführungszeichen, wenn der Forumsname Leerzeichen enthält)
    • Forumsnachrichten:
      • message#1218 (Link zur Nachricht mit der ID 1218)
    • Projekte:
      • project#3 (Link zu Projekt mit ID 3)
      • project:Projekt (Link zu Projekt mit Namen oder Slug von „Projekt“)
      • project:"Ein Projekt" (verwenden Sie doppelte Anführungszeichen für Projektnamen mit Leerzeichen)
    • Nachrichten:
      • news#2 (lLink zur Nachricht mit der ID 2)
      • news:Willkommen (Link zum Nachrichtenartikel namens „Willkommen“)
      • news:"Erste Neuigkeiten" (verwenden Sie doppelte Anführungszeichen, wenn der Name der Nachricht Leerzeichen enthält)
    • Benutzer:
      • user#2 (Link zu Benutzer mit ID 2)
      • user:jsmith (Link zu Benutzer mit Login jsmith)
      • @jsmith (Link zu Benutzer mit Login jsmith)

    Link Unterdrückung:

    • Sie können verhindern, dass Redmine-Links geparst werden, indem Sie ihnen ein Ausrufezeichen voranstellen: !

    Externe Links

    URLs (beginnend mit: www, http, https, ftp, ftps, sftp und sftps) und E-Mail-Adressen werden automatisch in anklickbare Links umgewandelt:

    https://www.redmine.org, someone@foo.bar
    

    Anzeige: https://www.redmine.org,

    Wenn Sie anstelle der URL einen bestimmten Text anzeigen möchten, können Sie die Standard-Markdown-Syntax verwenden:

    [Redmine Webseite](https://www.redmine.org)
    

    Anzeige: Redmine Webseite

    Textformatierung

    Für Dinge wie Überschriften, Fettdruck, Tabellen, Listen unterstützt Redmine die Markdown-Syntax. Informationen zur Verwendung dieser Funktionen https://daringfireball.net/projects/markdown/syntax for information on using any of these features. Ein paar Beispiele sind unten enthalten, aber die Engine unterstützt noch viel mehr Funktionen.

    Schriftstil

    * **Fett gedruckt**
    * *kursiv*
    * ***Fett Kursiv***
    * ~~durchgestrichen~~
    

    Display:

    • Fett gedruckt
    • kursiv
    • Fett Kursiv
    • durchgestrichen

    Eingebettete Bilder

    • ![](image_url) zeigt ein Bild an, das sich unter image_url befindet (Markdown-Syntax)
    • Wenn Sie ein Bild an Ihre Wiki-Seite angehängt haben, kann es mit seinem Dateinamen inline angezeigt werden: ![](attached_image)
    • Bilder aus der Zwischenablage Ihres Computers können direkt mit Strg-v oder cmd-v eingefügt werden (beachten Sie, dass ältere Browser inklusive aller Versionen des "Internet Explorer" nicht unterstützt werden)
    • Bilddateien können zum Hochladen und Einbetten auf den Textbereich gezogen werden.

    Überschriften

    # Überschrift
    ## Untertitel
    ### untergeordneter Untertitel
    

    Redmine weist jeder dieser Überschriften einen Anker zu, sodass Sie mit „#Überschrift“, „#Untertitel“ usw. darauf verlinken können.

    Blockzitat

    Beginnen Sie den Absatz mit >

    > Rails ist ein Full-Stack-Framework zur Entwicklung datenbankgestützter Webanwendungen nach dem Model-View-Control-Muster.
    Um live zu gehen, müssen Sie lediglich eine Datenbank und einen Webserver hinzufügen.
    

    Anzeige:

    Rails ist ein Full-Stack-Framework zur Entwicklung datenbankgestützter Webanwendungen nach dem Model-View-Control-Muster.
    Um live zu gehen, müssen Sie lediglich eine Datenbank und einen Webserver hinzufügen.

    Inhaltsverzeichnis

    {{toc}} => linksbündiges Inhaltsverzeichnis
    {{>toc}} => rechtsbündiges Inhaltsverzeichnis
    

    Horizontale Linie

    ---
    

    Anzeige


    Makros

    Redmine hat folgende, eingebauten Makros:

    hello_world

    Beispielmakro

    macro_list

    Zeigt eine Liste aller verfügbaren Makros an, einschließlich Beschreibung, falls verfügbar.

    child_pages

    Zeigt eine Liste der untergeordneten Seiten an. Ohne Argument zeigt es die untergeordneten Seiten der aktuellen Wiki-Seite an. Beispiele:

    {{child_pages}} -- kann nur von einer Wiki-Seite aus verwendet werden
    {{child_pages(depth=2)}} -- nur Verschachtelung mit 2 Ebenen anzeigen
    include

    Fügt eine Wiki-Seite hinzu. Beispiel:

    {{include(Foo)}}

    oder um eine Seite eines bestimmten Projekt-Wikis einzufügen:

    {{include(projectname:Foo)}}
    collapse

    Einfügung von reduzierten Textblöcken. Beispiel:

    {{collapse(Details anzeigen...)
    Dies ist ein Textblock, der standardmäßig reduziert ist.
    Es kann durch Klicken auf einen Link erweitert werden.
    }}
    thumbnail

    Zeigt eine anklickbare Miniaturansicht eines angehängten Bildes an. Beispiele:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Fügt einen Link zu einem Ticket mit flexiblem Text ein. Beispiele:

    {{issue(123)}}                              -- Fehler #123: Makrofunktionen verbessern
    {{issue(123, project=true)}}                -- Andromeda – Fehler #123: Makrofähigkeiten verbessern
    {{issue(123, tracker=false)}}               -- #123: Makrofähigkeiten verbessern
    {{issue(123, subject=false, project=true)}} -- Andromeda - Fehler #123

    Code-Hervorhebung

    Die standardmäßige Code-Hervorhebung basiert auf Rouge, einem reinen Ruby-Code-Highlighter. Rouge unterstützt viele häufig verwendete Sprachen wie c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml und yaml (yml) - die Namen in Klammern sind Aliase. Bitte beachten Sie die Liste der Sprachen, die vom Redmine-Code-Highlighter unterstützt werden.

    Sie können Code an jeder Stelle hervorheben, die Wiki-Formatierung mit dieser Syntax unterstützt (beachten Sie, dass beim Sprachnamen oder Alias ​​die Groß-/Kleinschreibung nicht beachtet wird):

    ``` ruby
        Geben Sie hier Ihren Code ein.
    ```
    

    Beispiel:

    # Die Greeter-Klasse
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hallo #{@name}!"
      end
    end
    

    Roh HTML

    Sie können rohes HTML für komplexere Formatierungsaufgaben verwenden, z.B. komplexe Tabellen mit Zellen, die sich über mehrere Zeilen oder Spalten erstrecken:

    
        <table width="50%">
          <tr><td rowspan="2">Zwei Reihen</td><td>foo</td></tr>
          <tr><td>bar</td></tr>
          <tr><td align="center" colspan="2">bar</td></tr>
        </table>
      

    Ausgabe:

    Zwei Reihenfoo
    bar
    bar
    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/en/000077500000000000000000000000001500112024600232565ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/common_mark/en/wiki_syntax_common_mark.html.erb000066400000000000000000000130601500112024600316460ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference (CommonMark Markdown (GitHub Flavored))

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>**Strong**Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>*Italic*Italic
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>~~Deleted~~Deleted
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>`Inline Code`Inline Code
    ```
     lines
     of code
    ```
     lines
     of code
    
    Highlighted code (" target="_blank">more)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %>```ruby
    3.times do
      puts 'Hello'
    end
    ```
    3.times do
      puts 'Hello'
    end
    
    Line breaks and Paragraphs
    An empty line

    creates
    a new paragraph.

    An empty line

    creates a new paragraph.

    End a line with a backslash\
    or two spaces to insert a manual line break.

    End a line with a backslash
    or two spaces to insert a manual line break.

    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
      * Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %>1. Item 1
       1. Sub
    2. Item 2
    1. Item 1
      1. Sub
    2. Item 2
    <%= image_tag("jstoolbar/list-check.svg", { alt: "Task list" }) %>* [ ] Item 1
    * [x] Item 2
    • Item 1
    • Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %># Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>## Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>### Title 3

    Title 3

    Links (" target="_blank">more)
    www.foo.barwww.foo.bar
    http://foo.barhttp://foo.bar
    [Foo](http://foo.bar)Foo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>![](image_url)
    ![](attached_image)
    Tables
    | A | B | C |
    |---|---|---|
    | A | B | C |
    | D | E | F |
    ABC
    ABC
    DEF
    Raw HTML (" target="_blank">more)
    HTML is <del>not</del> <u>allowed</u>.HTML is not allowed.

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/en/wiki_syntax_detailed_common_mark.html.erb000066400000000000000000000421361500112024600335070ustar00rootroot00000000000000 RedmineWikiFormatting (CommonMark Markdown (GitHub Flavored)) <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting (CommonMark Markdown (GitHub Flavored))

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard markdown syntax:

    [Redmine web site](https://www.redmine.org)
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Markdown syntax according to CommonMark including some extensions commonly referred to as GitHub flavored Markdown. See the GitHub Flavored Markdown Spec for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * **bold**
    * *Italic*
    * ***bold italic***
    * ~~strike-through~~
    

    Display:

    • bold
    • italic
    • bold italic
    • strike-through

    Inline images

    • ![](image_url) displays an image located at image_url (markdown syntax)
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: ![](attached_image)
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v.
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    # Heading
    ## Subheading
    ### Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Blockquotes

    Start the paragraph with >

    > Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    ```ruby
      Place your code here.
    ```
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    

    Raw HTML

    You may use raw HTML for more complex formatting tasks, i.e. complex tables with cells spanning multiple rows or columns:

    
        <table width="50%">
          <tr><td rowspan="2">Two rows</td><td>foo</td></tr>
          <tr><td>bar</td></tr>
          <tr><td align="center" colspan="2">bar</td></tr>
        </table>
      

    yields

    Two rowsfoo
    bar
    bar

    The style attribute can be used in raw HTML to apply custom formatting. The following CSS properties are allowed:

    
      color background-color
      width
      height
      padding padding-left padding-right padding-top padding-bottom
      margin margin-left margin-right margin-top margin-bottom
      border border-left border-right border-top border-bottom border-radius border-style border-collapse border-spacing
      font font-style font-variant font-weight font-stretch font-size line-height font-family
      text-align
      float
    
    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/ta-in/000077500000000000000000000000001500112024600236645ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/common_mark/ta-in/wiki_syntax_common_mark.html.erb000066400000000000000000000170451500112024600322630ustar00rootroot00000000000000 விகà¯à®•ி வடிவமைபà¯à®ªà¯ <%= stylesheet_link_tag "wiki_syntax.css" %>

    விகà¯à®•ி தொடரியல௠விரைவ௠கà¯à®±à®¿à®ªà¯à®ªà¯ (CommonMark Markdown (GitHub Flavored))

    எழà¯à®¤à¯à®¤à¯à®°à¯ பாஙà¯à®•à¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %><**வலà¯à®µà®¾à®©**வலà¯à®µà®¾à®©
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>*சாயà¯à®µà¯*சாயà¯à®µà¯
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>~~நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯~~நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>`இனà¯à®²à¯ˆà®©à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯`இனà¯à®²à¯ˆà®©à¯ கà¯à®±à®¿à®¯à¯€à®Ÿ
    ```
     lines
     of code
    ```
     கோடà¯à®•ளà¯
     கà¯à®±à®¿à®¯à¯€à®Ÿà¯
    
    à®®à¯à®©à¯à®©à®¿à®²à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ (" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %>```ruby
    3.à®®à¯à®±à¯ˆ do
      puts 'வணகà¯à®•à®®à¯'
    à®®à¯à®Ÿà®¿à®µà¯
    ```
    3.à®®à¯à®±à¯ˆ do
      வைகà¯à®•ிறத௠'வணகà¯à®•à®®à¯'
    à®®à¯à®Ÿà®¿à®µà¯
    
    வரி à®®à¯à®±à®¿à®µà¯à®•ள௠மறà¯à®±à¯à®®à¯ பதà¯à®¤à®¿à®•ளà¯
    ஒர௠வெறà¯à®±à¯ வரி

    உரà¯à®µà®¾à®•à¯à®•à¯à®•ிறதà¯
    ஒர௠பà¯à®¤à®¿à®¯ பதà¯à®¤à®¿.

    ஒர௠வெறà¯à®±à¯ வரி

    ஒர௠பà¯à®¤à®¿à®¯ பதà¯à®¤à®¿à®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®•ிறதà¯.

    backslash மூலம௠ஒர௠வரியை à®®à¯à®Ÿà®¿à®•à¯à®•வà¯à®®à¯\
    அலà¯à®²à®¤à¯ கையேட௠வரி à®®à¯à®±à®¿à®µà¯ˆà®šà¯ செரà¯à®• இரணà¯à®Ÿà¯ இடைவெளிகளà¯.

    backslash மூலம௠ஒர௠வரியை à®®à¯à®Ÿà®¿à®•à¯à®•வà¯à®®à¯
    அலà¯à®²à®¤à¯ கையேட௠வரி à®®à¯à®±à®¿à®µà¯ˆà®šà¯ செரà¯à®• இரணà¯à®Ÿà¯ இடைவெளிகளà¯.

    படà¯à®Ÿà®¿à®¯à®²à¯à®•ளà¯
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* பொரà¯à®³à¯ 1
      * தà¯à®£à¯ˆ
    * பொரà¯à®³à¯ 2
    • பொரà¯à®³à¯ 1
      • தà¯à®£à¯ˆ
    • பொரà¯à®³à¯ 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %>1. பொரà¯à®³à¯ 1
       1. தà¯à®£à¯ˆ
    2. பொரà¯à®³à¯ 2
    1. பொரà¯à®³à¯ 1
      1. தà¯à®£à¯ˆ
    2. பொரà¯à®³à¯ 2
    <%= image_tag("jstoolbar/list-check.svg", { alt: "Task list" }) %>* [ ] பொரà¯à®³à¯ 1
    * [x] பொரà¯à®³à¯ 2
    • பொரà¯à®³à¯ 1
    • பொரà¯à®³à¯ 2
    தலைபà¯à®ªà¯à®•ள௠(மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %># தலைபà¯à®ªà¯ 1

    தலைபà¯à®ªà¯ 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>## தலைபà¯à®ªà¯ 2

    தலைபà¯à®ªà¯ 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>### தலைபà¯à®ªà¯ 3

    தலைபà¯à®ªà¯ 3

    இணைபà¯à®ªà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    www.foo.barwww.foo.bar
    http://foo.barhttp://foo.bar
    [Foo](http://foo.bar)Foo
    Redmine இணைபà¯à®ªà¯à®•ளà¯(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[விகà¯à®•ி பகà¯à®•à®®à¯]]விகà¯à®•ி பகà¯à®•à®®à¯
    பிரசà¯à®šà®¿à®©à¯ˆ #12பிரசà¯à®šà®¿à®©à¯ˆ #12
    ##12பிழை #12: பிரசà¯à®šà®¿à®©à¯ˆ பொரà¯à®³à¯
    திரà¯à®¤à¯à®¤à®®à¯ r43திரà¯à®¤à¯à®¤à®®à¯ r43
    உறà¯à®¤à®¿:f30e13e43f30e13e4
    ஆதாரமà¯:some/fileஆதாரமà¯:some/file
    இனà¯à®²à¯ˆà®©à¯ படஙà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>![](image_url)
    ![](attached_image)
    அடà¯à®Ÿà®µà®£à¯ˆà®•ளà¯
    | A | B | C |
    |---|---|---|
    | A | B | C |
    | D | E | F |
    ABC
    ABC
    DEF
    மூல HTML (" target="_blank">மேலà¯à®®à¯)
    HTML is <del>not</del> <u>அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯</u>.HTML is இலà¯à®²à¯ˆ அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.

    மேலà¯à®®à¯ தகவல

    redmine-6.0.5/app/views/help/wiki_syntax/common_mark/ta-in/wiki_syntax_detailed_common_mark.html.erb000066400000000000000000000701261500112024600341150ustar00rootroot00000000000000 RedmineWikiFormatting (CommonMark Markdown (GitHub Flavored)) <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    விகà¯à®•ி வடிவமைபà¯à®ªà¯ (CommonMark Markdown (GitHub Flavored))

    இணைபà¯à®ªà¯à®•ளà¯

    ரெடà¯à®®à¯ˆà®©à¯ இணைபà¯à®ªà¯à®•ளà¯

    ரெடà¯à®®à¯ˆà®©à¯ வளஙà¯à®•ளà¯à®•à¯à®•௠இடையில௠ஹைபà¯à®ªà®°à¯à®²à®¿à®™à¯à®•ை அனà¯à®®à®¤à®¿à®•à¯à®•ிறத௠(சிகà¯à®•லà¯à®•ளà¯, மாறà¯à®±à®™à¯à®•ளà¯, விகà¯à®•ி பகà¯à®•à®™à¯à®•ளà¯...) எஙà¯à®•ிரà¯à®¨à¯à®¤à¯à®®à¯ விகà¯à®•ி வடிவமைதà¯à®¤à®²à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯.

    • ஒர௠சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯: #124 (displays #124, சிகà¯à®•ல௠மூடபà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ இணைபà¯à®ªà¯ அடிதà¯à®¤à®¿à®°à¯à®•à¯à®•à¯à®®à¯)
    • தடம௠பெயர௠மறà¯à®±à¯à®®à¯ பொரà¯à®³à¯ உளà¯à®³à®¿à®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯: ##124 (காடà¯à®šà®¿à®•ளà¯Bug #124: bulk edit doesn't change the category or fixed version properties)
    • சிகà¯à®•ல௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯: #124-6, or #124#note-6
    • அதே சிகà¯à®•லà¯à®•à¯à®•à¯à®³à¯ ஒர௠சிகà¯à®•ல௠கà¯à®±à®¿à®ªà¯à®ªà¯à®Ÿà®©à¯ இணைகà¯à®•வà¯à®®à¯: #note-6

    Wiki links:

    • [[வழிகாடà¯à®Ÿà®¿]] 'கையேடà¯' பகà¯à®•தà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯ : வழிகாடà¯à®Ÿà®¿
    • [[Guide#further-reading]] உஙà¯à®•ளை "மேலà¯à®®à¯ படிகà¯à®•" இணைபà¯à®ªà¯à®•à¯à®•௠அழைதà¯à®¤à¯à®šà¯ செலà¯à®²à¯à®®à¯ . தலைபà¯à®ªà¯à®•ள௠தானாக இணைபà¯à®ªà¯ˆ பெறà¯à®µà®¤à®¾à®²à¯ அவறà¯à®±à¯ˆà®•௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®²à®¾à®®à¯ : Guide
    • [[#further-reading]] தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பகà¯à®•தà¯à®¤à®¿à®©à¯ "மேலà¯à®®à¯ படிகà¯à®•" இணைபà¯à®ªà¯ : #further-reading
    • [வழிகாடà¯à®Ÿà®¿|பயனர௠கையேடà¯]] ஒரே பகà¯à®•தà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯, ஆனால௠வேற௠உரையà¯à®Ÿà®©à¯: பயனர௠கையேடà¯

    நீஙà¯à®•ள௠வேற௠திடà¯à®Ÿ விகà¯à®•ியின௠பகà¯à®•à®™à¯à®•ளà¯à®•à¯à®•à¯à®®à¯ இணைகà¯à®•லாமà¯:

    • [[sandbox:சில பகà¯à®•à®®à¯]] Sandbox விகà¯à®•ியின௠'Some page' பகà¯à®•தà¯à®¤à®¿à®©à¯ இணைபà¯à®ªà¯
    • [[sandbox:]] Sandbox விகà¯à®•ியின௠பிரதான பகà¯à®•தà¯à®¤à®¿à®©à¯ இணைபà¯à®ªà¯

    பகà¯à®•ம௠இனà¯à®©à¯à®®à¯ இலà¯à®²à¯ˆà®¯à¯†à®©à¯à®±à®¾à®²à¯ விகà¯à®•ி இணைபà¯à®ªà¯à®•ள௠சிவபà¯à®ªà¯ நிறதà¯à®¤à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯, eg: Nonexistent page.

    பிற ஆவணஙà¯à®•ளின௠இணைபà¯à®ªà¯à®•ளà¯:

    • ஆவணஙà¯à®•ளà¯:
      • document#17 (17 ஆம௠ஆவணதà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • document:Greetings ("Greetings" தலைபà¯à®ªà¯à®Ÿà®©à¯ ஆவண இணைபà¯à®ªà¯)
      • document:"சில ஆவணமà¯" (ஆவண தலைபà¯à®ªà®¿à®²à¯ இடைவெளிகள௠இரà¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯)
      • sandbox:document:"Some document" ("sandbox" திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ "Some document" தலைபà¯à®ªà¯à®Ÿà®©à¯ ஆவண இணைபà¯à®ªà¯ )
    • பதிபà¯à®ªà¯à®•ளà¯:
      • version#3 (3 ஆம௠பதிபà¯à®ªà®¿à®©à¯ இணைபà¯à®ªà¯)
      • version:1.0.0 (1.0.0" பதிபà¯à®ªà®¿à®©à¯ இணைபà¯à®ªà¯)
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 ("sandbox" திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ "1.0.0" பதிபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯ )
    • Attachments:
      • attachment:file.zip (file.zip இணைபà¯à®ªà¯à®•à¯à®•ான இணைபà¯à®ªà¯ )
      • இபà¯à®ªà¯‹à®¤à¯ˆà®•à¯à®•à¯, தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பொரà¯à®³à®¿à®©à¯ இணைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ (நீஙà¯à®•ள௠ஒர௠சிகà¯à®•லில௠இரà¯à®¨à¯à®¤à®¾à®²à¯, இநà¯à®¤ சிகà¯à®•லின௠இணைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯)
    • மாறà¯à®±à®™à¯à®•ளà¯:
      • r758 (மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • commit:c6f4d0fd (எண௠அலà¯à®²à®¾à®¤ ஹாஷ௠கொணà¯à®Ÿ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • svn1|r758 (பல களஞà¯à®šà®¿à®¯à®™à¯à®•ளைக௠கொணà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯, ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • commit:hg|c6f4d0fd (ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ எண௠அலà¯à®²à®¾à®¤ ஹாஷà¯à®Ÿà®©à¯ ஒர௠மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:r758 (மறà¯à®±à¯Šà®°à¯ திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:commit:c6f4d0fd (மறà¯à®±à¯Šà®°à¯ திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ எண௠அலà¯à®²à®¾à®¤ ஹாஷà¯à®Ÿà®©à¯ ஒர௠மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
    • Repository files:
      • source:some/file (திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®²à¯ / சில / கோபà¯à®ªà®¿à®²à¯ அமைநà¯à®¤à¯à®³à¯à®³ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • source:some/file@52 (கோபà¯à®ªà®¿à®©à¯ திரà¯à®¤à¯à®¤à®®à¯ 52 உடன௠இணைபà¯à®ªà¯)
      • source:some/file#L120 (கோபà¯à®ªà®¿à®©à¯ 120 வத௠வரியà¯à®Ÿà®©à¯ இணைகà¯à®•வà¯à®®à¯)
      • source:some/file@52#L120 (கோபà¯à®ªà®¿à®©à¯ திரà¯à®¤à¯à®¤à®®à¯ 52 இன௠120 வத௠வரியின௠இணைபà¯à®ªà¯)
      • source:"some file@52#L120" (URL இடைவெளிகளைக௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
      • export:some/file (கோபà¯à®ªà¯ˆà®ªà¯ பதிவிறகà¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
      • source:svn1|some/file (பல களஞà¯à®šà®¿à®¯à®™à¯à®•ளைக௠கொணà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯, ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:source:some/file (திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®²à¯ / சில / கோபà¯à®ªà®¿à®²à¯ அமைநà¯à®¤à¯à®³à¯à®³ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯ "sandbox")
      • sandbox:export:some/file (கோபà¯à®ªà¯ˆà®ªà¯ பதிவிறகà¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • மனà¯à®±à®™à¯à®•ளà¯:
      • forum#1 (1 ஆம௠மனà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯
      • forum:Support (ஆதரவ௠எனà¯à®± மனà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • forum:"Technical Support" (மனà¯à®±à®¤à¯à®¤à®¿à®©à¯ பெயரில௠இடைவெளிகள௠இரà¯à®¨à¯à®¤à®¾à®²à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • கரà¯à®¤à¯à®¤à¯à®•à¯à®•ளம௠பதிவà¯à®•ளà¯:
      • message#1218 (1218 ஆம௠செயà¯à®¤à®¿à®•à¯à®•ான இணைபà¯à®ªà¯)
    • திடà¯à®Ÿà®™à¯à®•ளà¯:
      • project#3 (3 ஆம௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • project:some-project (பெயர௠அலà¯à®²à®¤à¯ slug மூலம௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯ "சில திடà¯à®Ÿà®®à¯"")
      • project:"Some Project" (இடைவெளிகளைக௠கொணà¯à®Ÿ திடà¯à®Ÿ பெயரà¯à®•à¯à®•௠இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • செயà¯à®¤à®¿:
      • news#2 (2 ஆம௠செயà¯à®¤à®¿à®¯à®¿à®©à¯ இணைபà¯à®ªà¯)
      • news:Greetings ("வாழà¯à®¤à¯à®¤à¯à®•à¯à®•ளà¯" செயà¯à®¤à®¿à®•à¯à®•ான இணைபà¯à®ªà¯)
      • news:"First Release" (செயà¯à®¤à®¿ உரà¯à®ªà¯à®ªà®Ÿà®¿ பெயரில௠இடைவெளிகள௠இரà¯à®¨à¯à®¤à®¾à®²à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • பயனரà¯à®•ளà¯:
      • user#2 (2 ஆம௠பயனர௠இணைபà¯à®ªà¯)
      • user:jsmith (உளà¯à®¨à¯à®´à¯ˆà®µà¯ jsmith உடன௠பயனரà¯à®•à¯à®•ான இணைபà¯à®ªà¯)
      • @jsmith (உளà¯à®¨à¯à®´à¯ˆà®µà¯ jsmith உடன௠பயனரà¯à®•à¯à®•ான இணைபà¯à®ªà¯)

    தபà¯à®ªà®¿à®¤à¯à®¤à®²à¯:

    • ரெடà¯à®®à¯ˆà®©à¯ இணைபà¯à®ªà¯à®•ள௠ஆசà¯à®šà®°à®¿à®¯à®•à¯à®•à¯à®±à®¿à®¯à¯à®Ÿà®©à¯ அவறà¯à®±à¯ˆ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ˆà®¤à¯ தடà¯à®•à¯à®•லாமà¯: !

    வெளி இணைபà¯à®ªà¯à®•ளà¯

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரிகள௠தானாக கிளிக௠செயà¯à®¯à®•à¯à®•ூடிய இணைபà¯à®ªà¯à®•ளாக மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®®à¯:

    https://www.redmine.org, someone@foo.bar
    

    காடà¯à®šà®¿à®•ளà¯: https://www.redmine.org,

    URL கà¯à®•௠பதிலாக ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ உரையைக௠காடà¯à®Ÿ விரà¯à®®à¯à®ªà®¿à®©à®¾à®²à¯, நீஙà¯à®•ள௠நிலையான மாரà¯à®•௠டவà¯à®©à¯ தொடரியல௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯:

    [Redmine web site](https://www.redmine.org)
    

    காடà¯à®šà®¿à®•ளà¯: ரெடà¯à®®à¯ˆà®©à¯ வலைதà¯à®¤à®³à®®à¯

    உரை வடிவமைதà¯à®¤à®²à¯

    தலைபà¯à®ªà¯à®šà¯ செயà¯à®¤à®¿à®•ளà¯, தடிமனà¯, அடà¯à®Ÿà®µà®£à¯ˆà®•ளà¯, படà¯à®Ÿà®¿à®¯à®²à¯à®•ள௠போனà¯à®± விஷயஙà¯à®•ளà¯à®•à¯à®•à¯, Redmine மாரà¯à®•௠டவà¯à®©à¯ தொடரியலை ஆதரிகà¯à®•ிறத௠காமனà¯à®®à®¾à®°à¯à®•௠பொதà¯à®µà®¾à®• கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ சில நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯à®•ள௠உடà¯à®ªà®Ÿ GitHub flavored Markdown. See the GitHub Flavored Markdown Spec இநà¯à®¤ à®…à®®à¯à®šà®™à¯à®•ளில௠à®à®¤à¯‡à®©à¯à®®à¯ ஒனà¯à®±à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ பறà¯à®±à®¿à®¯ தகவலà¯à®•à¯à®•à¯. ஒர௠சில மாதிரிகள௠கீழே சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©, ஆனால௠இயநà¯à®¤à®¿à®°à®®à¯ அதைவிட அதிகமான திறன௠கொணà¯à®Ÿà®¤à¯.

    Font style

    * **வலà¯à®µà®¾à®©**
    * *சாயà¯à®µà¯*
    * ***தைரியமான சாயà¯à®µà¯***
    * ~~வேலைநிறà¯à®¤à¯à®¤à®®à¯ மூலமà¯~~
    

    Display:

    • வலà¯à®µà®¾à®©
    • சாயà¯à®µà¯
    • தைரியமான சாயà¯à®µà¯
    • வேலைநிறà¯à®¤à¯à®¤à®®à¯ மூலமà¯

    இனà¯à®²à¯ˆà®©à¯ படஙà¯à®•ளà¯

    • ![](image_url) image_url இல௠அமைநà¯à®¤à¯à®³à¯à®³ ஒர௠படதà¯à®¤à¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறத௠(மாரà¯à®•௠டவà¯à®©à¯ தொடரியலà¯)
    • உஙà¯à®•ள௠விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®²à¯ ஒர௠படம௠இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¿à®°à¯à®¨à¯à®¤à®¾à®²à¯, அதன௠கோபà¯à®ªà¯ பெயரைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ இனà¯à®²à¯ˆà®©à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯: ![](attached_image)
    • உஙà¯à®•ள௠கணினியின௠கிளிபà¯à®ªà¯‹à®°à¯à®Ÿà®¿à®²à¯ உளà¯à®³ படஙà¯à®•ளை நேரடியாக Ctrl-v அலà¯à®²à®¤à¯ Command-v à®à®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ ஒடà¯à®Ÿà®²à®¾à®®à¯
    • படக௠கோபà¯à®ªà¯à®•ளை பதிவேறà¯à®± மறà¯à®±à¯à®®à¯ உடà¯à®ªà¯Šà®¤à®¿à®•à¯à®• உரை பகà¯à®¤à®¿à®•à¯à®•௠இழà¯à®•à¯à®•லாமà¯.

    தலைபà¯à®ªà¯à®•ளà¯

    # தலைபà¯à®ªà¯
    ## தà¯à®£à¯ˆ தலைபà¯à®ªà¯
    ### தà¯à®£à¯ˆ தலைபà¯à®ªà¯
    

    ரெடà¯à®®à¯ˆà®©à¯ அநà¯à®¤ ஒவà¯à®µà¯Šà®°à¯ தலைபà¯à®ªà®¿à®±à¯à®•à¯à®®à¯ ஒர௠நஙà¯à®•ூரதà¯à®¤à¯ˆ ஒதà¯à®•à¯à®•à¯à®•ிறதà¯, இதனால௠நீஙà¯à®•ள௠அவறà¯à®±à¯à®Ÿà®©à¯ இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ "#தலைபà¯à®ªà¯"", "#தà¯à®£à¯ˆ தலைபà¯à®ªà¯" மறà¯à®±à¯à®®à¯ à®®à¯à®©à¯à®©à¯à®®à¯ பினà¯à®©à¯à®®à®¾à®•.

    தொகà¯à®¤à®¿à®•ளà¯

    உடன௠பதà¯à®¤à®¿à®¯à¯ˆà®¤à¯ தொடஙà¯à®•à¯à®™à¯à®•ள௠>

    > ரெயிலà¯à®¸à¯ எனà¯à®ªà®¤à¯ மாடலà¯-வியூ-கணà¯à®Ÿà¯à®°à¯‹à®²à¯ à®®à¯à®±à¯ˆà®•à¯à®•௠à®à®±à¯à®ª தரவà¯à®¤à¯à®¤à®³ ஆதரவà¯à®Ÿà¯ˆà®¯ வலை பயனà¯à®ªà®¾à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•ான à®®à¯à®´à¯ அடà¯à®•à¯à®•௠கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¾à®•à¯à®®à¯.
    நேரலைகà¯à®•à¯à®šà¯ செலà¯à®², நீஙà¯à®•ள௠சேரà¯à®•à¯à®• வேணà¯à®Ÿà®¿à®¯à®¤à¯ தரவà¯à®¤à¯à®¤à®³à®®à¯ மறà¯à®±à¯à®®à¯ வலை சேவையகம௠மடà¯à®Ÿà¯à®®à¯‡.
    

    காடà¯à®šà®¿:

    ரெயிலà¯à®¸à¯ எனà¯à®ªà®¤à¯ மாடலà¯-வியூ-கணà¯à®Ÿà¯à®°à¯‹à®²à¯ à®®à¯à®±à¯ˆà®•à¯à®•௠à®à®±à¯à®ª தரவà¯à®¤à¯à®¤à®³ ஆதரவà¯à®Ÿà¯ˆà®¯ வலை பயனà¯à®ªà®¾à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•ான à®®à¯à®´à¯ அடà¯à®•à¯à®•௠கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¾à®•à¯à®®à¯.
    நேரலைகà¯à®•à¯à®šà¯ செலà¯à®², நீஙà¯à®•ள௠சேரà¯à®•à¯à®• வேணà¯à®Ÿà®¿à®¯à®¤à¯ தரவà¯à®¤à¯à®¤à®³à®®à¯ மறà¯à®±à¯à®®à¯ வலை சேவையகம௠மடà¯à®Ÿà¯à®®à¯‡.

    உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ

    {{toc}} => இடத௠சீரமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ
    {{>toc}} => வலத௠சீரமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ
    

    கிடைமடà¯à®Ÿ விதி

    ---
    

    கà¯à®±à¯à®¨à®¿à®°à®²à¯à®•ளà¯

    ரெடà¯à®®à¯ˆà®©à®¿à®²à¯ பினà¯à®µà®°à¯à®®à¯ பிலà¯à®Ÿà®¿à®©à¯ கà¯à®±à¯à®¨à®¿à®°à®²à¯à®•ள௠உளà¯à®³à®©:

    வணகà¯à®•à®®à¯_உலகமà¯

    மாதிரி கà¯à®±à¯à®¨à®¿à®°à®²à¯.

    மேகà¯à®°à¯‹_லிஸà¯à®Ÿà¯

    விளகà¯à®•ம௠கிடைதà¯à®¤à®¾à®²à¯ உடà¯à®ªà®Ÿ, கிடைகà¯à®•கà¯à®•ூடிய அனைதà¯à®¤à¯ மேகà¯à®°à¯‹à®•à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¯à¯à®®à¯ காடà¯à®Ÿà¯à®•ிறதà¯.

    கà¯à®´à®¨à¯à®¤à¯ˆ_பகà¯à®•à®™à¯à®•ளà¯

    கீழ௠பகà¯à®•à®™à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯. எநà¯à®¤ வாதமà¯à®®à¯ இலà¯à®²à®¾à®®à®²à¯, இத௠தறà¯à®ªà¯‹à®¤à¯ˆà®¯ விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®©à¯ கீழ௠பகà¯à®•à®™à¯à®•ளைக௠காடà¯à®Ÿà¯à®•ிறதà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{child_pages}} -- விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ மடà¯à®Ÿà¯à®®à¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯
    {{child_pages(depth=2)}} -- 2 நிலைகள௠கூடà¯à®•ளை மடà¯à®Ÿà¯à®®à¯ காணà¯à®ªà®¿
    சேரà¯à®•à¯à®•ிறதà¯

    விகà¯à®•ி பகà¯à®•தà¯à®¤à¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{include(Foo)}}

    அலà¯à®²à®¤à¯ ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ திடà¯à®Ÿ விகà¯à®•ியின௠பகà¯à®•தà¯à®¤à¯ˆ சேரà¯à®•à¯à®•:

    {{include(projectname:Foo)}}
    சரிவà¯

    சà¯à®°à¯à®™à¯à®•ிய தொகà¯à®¤à®¿à®¯à®¿à®©à¯ செரà¯à®•லà¯à®•ளà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{collapse(விபரஙà¯à®•ளை பாரà¯...)
    இத௠மà¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• சரிநà¯à®¤ உரையின௠தொகà¯à®¤à®¿.
    இணைபà¯à®ªà¯ˆà®•௠கிளிக௠செயà¯à®µà®¤à®©à¯ மூலம௠அதை விரிவாகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.
    }}
    சிறà¯à®ªà®Ÿà®®à¯

    இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ படதà¯à®¤à®¿à®©à¯ கிளிக௠செயà¯à®¯à®•à¯à®•ூடிய சிறà¯à®ªà®Ÿà®¤à¯à®¤à¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=சிறà¯à®ªà®Ÿà®®à¯)}}
    பிரசà¯à®šà®¿à®©à¯ˆ

    நெகிழà¯à®µà®¾à®© உரையà¯à®Ÿà®©à¯ சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯ˆà®šà¯ செரà¯à®•à¯à®®à¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    கà¯à®±à®¿à®¯à¯€à®Ÿà¯ சிறபà¯à®ªà®®à¯à®šà®®à®¾à®•

    இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ சிறபà¯à®ªà®®à¯à®šà®¤à¯à®¤à¯ˆ நமà¯à®ªà®¿à®¯à¯à®³à¯à®³à®¤à¯ Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    இநà¯à®¤ தொடரியல௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ விகà¯à®•ி வடிவமைபà¯à®ªà¯ˆ ஆதரிகà¯à®•à¯à®®à¯ எநà¯à®¤ இடதà¯à®¤à®¿à®²à¯à®®à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ à®®à¯à®©à¯à®©à®¿à®²à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯ (மொழி பெயர௠அலà¯à®²à®¤à¯ மாறà¯à®±à¯ வழகà¯à®•à¯-உணரà¯à®µà®±à¯à®±à®¤à¯ எனà¯à®ªà®¤à¯ˆ நினைவில௠கொளà¯à®•):

    ```ruby
       உஙà¯à®•ள௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ இஙà¯à®•ே வைகà¯à®•வà¯à®®à¯..
    ```
    

    உதாரணமாக:

    # வாழà¯à®¤à¯à®¤à¯à®°à¯ˆà®¯à®¾à®³à®°à¯ வகà¯à®ªà¯à®ªà¯
    class வாழà¯à®¤à¯à®¤à¯à®ªà®µà®°à¯
      def தà¯à®µà®•à¯à®•(பெயரà¯)
        @பெயர௠= பெயரà¯.மூலதனமாகà¯à®•à¯
      à®®à¯à®Ÿà®¿à®µà¯
    
      def salute
        வைகà¯à®•ிறத௠"வணகà¯à®•ம௠#{@பெயரà¯}!"
      à®®à¯à®Ÿà®¿à®µà¯
    à®®à¯à®Ÿà®¿à®µà¯
    

    Raw HTML

    You may use raw HTML for more complex formatting tasks, i.e. complex tables with cells spanning multiple rows or columns:

    
        <table width="50%">
          <tr><td rowspan="2">Two rows</td><td>foo</td></tr>
          <tr><td>bar</td></tr>
          <tr><td align="center" colspan="2">bar</td></tr>
        </table>
      

    yields

    இரணà¯à®Ÿà¯ வரிசைகளà¯foo
    bar
    bar

    The style தனிபà¯à®ªà®¯à®©à¯ வடிவமைபà¯à®ªà¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤, மூல HTML இல௠பணà¯à®ªà¯à®•à¯à®•ூற௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®²à®¾à®®à¯. பினà¯à®µà®°à¯à®®à¯ CSS பணà¯à®ªà¯à®•ள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®©:

    
      வணà¯à®£ பினà¯à®©à®£à®¿-நிறமà¯
      அகலமà¯
      உயரமà¯
      திணிபà¯à®ªà¯ திணிபà¯à®ªà¯-இடத௠திணிபà¯à®ªà¯-வலத௠திணிபà¯à®ªà¯-மேல௠திணிபà¯à®ªà¯-கீழà¯
      விளிமà¯à®ªà¯ விளிமà¯à®ªà¯-இடத௠விளிமà¯à®ªà¯-வலத௠விளிமà¯à®ªà¯-மேல௠விளிமà¯à®ªà¯-கீழà¯
      எலà¯à®²à¯ˆ எலà¯à®²à¯ˆ-இடத௠எலà¯à®²à¯ˆ-வலத௠எலà¯à®²à¯ˆ-மேல௠எலà¯à®²à¯ˆ-கீழ௠எலà¯à®²à¯ˆ-ஆரம௠எலà¯à®²à¯ˆ-பாணி எலà¯à®²à¯ˆ-சரிவ௠எலà¯à®²à¯ˆ-இடைவெளி
      எழà¯à®¤à¯à®¤à¯à®°à¯ எழà¯à®¤à¯à®¤à¯à®°à¯-பாணி எழà¯à®¤à¯à®¤à¯à®°à¯-மாறà¯à®ªà®¾à®Ÿà¯ எழà¯à®¤à¯à®¤à¯à®°à¯-எடை எழà¯à®¤à¯à®¤à¯à®°à¯-நீடà¯à®Ÿà¯à®®à¯ எழà¯à®¤à¯à®¤à¯à®°à¯ அளவ௠வரி-உயரம௠எழà¯à®¤à¯à®¤à¯à®°à¯-கà¯à®Ÿà¯à®®à¯à®ªà®®à¯
      உரை-சீரமைபà¯à®ªà¯
      மிதவை
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/000077500000000000000000000000001500112024600220305ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/bg/000077500000000000000000000000001500112024600224205ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/bg/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320250ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/bg/wiki_syntax_textile.html.erb000066400000000000000000000120621500112024600301650ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Вграден код" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/ca/000077500000000000000000000000001500112024600224135ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/ca/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320200ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/ca/wiki_syntax_textile.html.erb000066400000000000000000000122251500112024600301610ustar00rootroot00000000000000 Format de la Wiki <%= stylesheet_link_tag "wiki_syntax.css" %>

    Guia rapida de la Sintaxis de la Wiki

    Estil de font (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Negreta" }) %>*Negreta*Negreta
    <%= image_tag("jstoolbar/italic.svg", { alt: "Cursiva" }) %>_Cursiva_Cursiva
    <%= image_tag("jstoolbar/underline.svg", { alt: "Subratllat" }) %>+Subratllat+Subratllat
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Eliminat" }) %>-Eliminat-Eliminat
    ??Cita??Cita
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Codi en línia" }) %>@Codi en línia@Codi en línia
    <pre>
     linies
     de codi
    </pre>
     linies
     de codi
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Llistes
    <%= image_tag("jstoolbar/list.svg", { alt: "Llista desordenada" }) %>* Article 1
    ** Sub
    * Article 2
    • Article 1
      • Sub
    • Article 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Llista ordenada" }) %># Article 1
    ## Sub
    # Article 2
    1. Article 1
      1. Sub
    2. Article 2
    Capçaleres (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Encapçament 1" }) %>h1. Títol 1

    Títol 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Encapçament 2" }) %>h2. Títol 2

    Títol 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Encapçament 3" }) %>h3. Títol 3

    Títol 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Links del Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link a la pagina Wiki" }) %>[[Pagina Wiki]]Pagina Wiki
    Assumpte #12Assumpte #12
    ##12Bug #12: The issue subject
    Revisió r43Revisió r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Imatges (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Imatge" }) %>!imatge_url!
    !imatge_adjunta!
    Taules
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Més informació

    redmine-6.0.5/app/views/help/wiki_syntax/textile/cs/000077500000000000000000000000001500112024600224355ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/cs/wiki_syntax_detailed_textile.html.erb000066400000000000000000000410631500112024600320400ustar00rootroot00000000000000 Formátování Wiki v Redminu <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Syntaxe Wiki

    Odkazy

    Odkazy Redmine

    Redmine umožňuje hypertextové odkazy mezi jednotlivými zdroji (úkoly, revize, wiki stránky...) kdekoli, kde je použito Wiki formátování.

    • Odkaz na úkol: #124 (zobrazí #124, odkaz je pÅ™eÅ¡krtnutý, jestliže je úkol uzavÅ™en)
    • Odkaz na úkol vÄetnÄ› fronty a pÅ™edmÄ›tu: ##124 (zobrazí Bug #124: Hromadná zmÄ›na nezmÄ›ní kategorii úkolů
    • Odkaz na poznámku k úkolu: #124-6, nebo #124#note-6
    • Odkaz na poznámku k úkolu v tom samém úkole: #note-6

    Odkazy Wiki:

    • [[PříruÄka]] zobrazí odkaz na stránku nazvanou "PříruÄka": PříruÄka.
    • [[PříruÄka#ÄtÄ›te-více]] Vás pÅ™enese ke kotvÄ› "ÄtÄ›te-více". Nadpisy mají automaticky pÅ™iÅ™azené kotvy, na které se můžete odkazovat: PříruÄka.
    • [[#ÄtÄ›te-více]] odkaz na kotvu "ÄtÄ›te-více" na aktuální stránce: #ÄtÄ›te-více
    • [[PříruÄka|Uživatelský manuál]] zobrazí odkaz na tu samou stránku, ale s jiným textem: Uživatelský manuál.

    Můžete se také odkazovat na Wiki stránky jiného projektu:

    • [[projekt_test:NÄ›jaká stránka]] zobrazí odkaz na stránku s názvem "NÄ›jaká stránka" na Wiki projektu projekt_test.
    • [[projekt_test:]] zobrazí odkaz na hlavní Wiki stránku projektu projekt_test.

    Odkazy na Wiki stránky jsou zobrazeny ÄervenÄ› v případÄ›, že odkazovaná stránka dosud neexistuje, napÅ™.: Neexistující stránka.

    Odkazy na další zdroje:

    • Dokumenty:
      • document#17 (odkaz na dokument s ID 17)
      • document:Úvod (odkaz na dokument s názvem "Úvod")
      • document:"NÄ›jaký dokument" (Uvozovky se mohou použít v případÄ›, že název obsahuje mezery.)
      • projekt_test:document:"NÄ›jaký dokument" (odkaz na dokument s názvem "NÄ›jaký dokument" v jiném projektu "projekt_test")
    • Verze:
      • version#3 (odkaz na verzi s ID 3)
      • version:1.0.0 odkaz na verzi s názvem "1.0.0")
      • version:"1.0 beta 2"
      • projekt_test:version:1.0.0 (odkaz na verzi "1.0.0" jiného projektu "projekt_test")
    • Přílohy:
      • attachment:soubor.zip (odkaz na přílohu aktuálního objektu s názvem soubor.zip)
      • AktuálnÄ› mohou být odkazovány pouze přílohy aktuálního objektu (u úkolu mohou být odkazy pouze na přílohy danného úkolu).
    • Revize:
      • r758 (odkaz na revizi)
      • commit:c6f4d0fd (odkaz na revizi s neÄíselným oznaÄním revize)
      • svn1|r758 (odkaz na revizi urÄitého repozitáře, pro projekty s více repozitáři)
      • commit:hg|c6f4d0fd (odkaz na revizi s neÄíselným oznaÄním revize urÄitého repozitáře, pro projekty s více repozitáři)
      • projekt_test:r758 (odkaz na revizi jiného projektu)
      • projekt_test:commit:c6f4d0fd (odkaz na revizi s neÄíselným oznaÄním revize jiného projektu)
    • Soubory repositáře:
      • source:some/file (odkaz na soubor umístÄ›ný v /some/file respozitáře projektu)
      • source:some/file@52 (odkaz na revizi souboru Ä. 52)
      • source:some/file#L120 (odkaz na 120. řádek souboru)
      • source:some/file@52#L120 (odkaz na 120. řádek revize souboru Ä. 52)
      • source:"some file@52#L120" (použijte uvozovky, když URL obsahuje mezery)
      • export:some/file (vynutit stažení souboru)
      • source:svn1|some/file (odkaz na soubor urÄitého repozitáře, pro projekty s více repositáři)
      • projekt_test:source:some/file (odkaz na soubor umístÄ›ný v /some/file repositáře projektu "projekt_test")
      • projekt_test:export:some/file (vynutit stažení souboru umístÄ›ného v /some/file repositáře projektu "projekt_test")
    • Diskuzní fóra:
      • forum#1 (odkaz na fórum s id 1
      • forum:Support (odkaz na fórum pojmenované Support)
      • forum:"Technical Support" (Použij dvojté uvozovkym jestliže název fóra obsahuje mezery.)
    • PříspÄ›vky diskuzního fóra:
      • message#1218 (odkaz na příspÄ›vek s ID 1218)
    • Projekty:
      • project#3 (odkaz na projekt s ID 3)
      • project:projekt_test (odkaz na projekt pojmenovaný "projekt_test")
      • project:"projekt test" (odkaz na projekt pojmenovaný "projekt test")
    • Novinky:
      • news#2 (odkaz na novinku id 2)
      • news:Greetings (odkaz na novinku "Greetings")
      • news:"First Release" (použij dvojté uvozovky, jestliže název novinky obsahuje mezery)
    • Uživatelé:
      • user#2 (odkaz na uživatele s id 2)
      • user:jsmith (odkaz na uživatele s loginem jsmith)
      • @jsmith (odkaz na uživatele s loginem jsmith)

    Escape sekvence:

    • Zabránit parsování Redmine odkazů, lze vložením vykÅ™iÄníku pÅ™ed odkaz: !

    Externí odkazy

    URL (zaÄínající: www, http, https, ftp, ftps, sftp a sftps) a e-mailové adresy jsou automaticky pÅ™evedeny na klikací odkazy:

    https://www.redmine.org, someone@foo.bar
    

    zobrazí: https://www.redmine.org,

    Jestliže chcete zobrazit urÄitý text místo URL, můžete použít standardní syntaxi textile:

    "Webová stránka Redmine":https://www.redmine.org
    

    zobrazí: Webová stránka Redmine

    Formátování textu

    Pro nadpisy, tuÄný text, tabulky a seznamy, Redmine podporuje syntaxi Textile. Podívejte se na https://en.wikipedia.org/wiki/Textile_(markup_language) pro informace o využití tÄ›chto vlastností. NÄ›kolik příkladů je uvedeno níže, ale Textile toho dokáže mnohem víc.

    Styly písma

    * *tuÄný*
    * _kurzíva_
    * _*tuÄná kurzíva*_
    * +podtržený+
    * -přeškrtnutý-
    

    Zobrazí:

    • tuÄný
    • kurzíva
    • tuÄná kurzíva
    • podtržený
    • pÅ™eÅ¡krtnutý

    Vnořené obrázky

    • !image_url! zobrazí obrázek z odkazu (syntaxe textile)
    • !>image_url! obrázek zarovnaný napravo
    • Jestliže máte obrázek pÅ™iložený k Wiki stránce, může být zobrazen jako vnoÅ™ený obrázek pomocí jeho jména: !prilozeny_obrazek.png!
    • Soubory s obrázky mohou být vloženy přímo pomocí Ctrl-c/Command-v.
    • Soubory s obrázy mohou být přímo pÅ™etaženy do textového pole. Budou nahrány a vloženy.

    Nadpisy

    h1. Nadpis 1. úrovně
    
    h2. Nadpis 2. úrovně
    
    h3. Nadpis 3. úrovně
    

    Redmine přiřadí kotvu ke každému nadpisu, takže se na ně lze odkazovat pomocí "#Nadpis", "#Podnadpis" atd.

    Odstavce

    p>. zarovnaný doprava
    p=. zarovnaný na střed
    

    Toto je odstavec zarovnaný na střed.

    Citace

    ZaÄnÄ›te odstavec s bq.

    bq. Rails je framework pro vývoj webových aplikací podle modelu Model-View-Control.
    Vše, co je potřeba, je databázový a webový server.
    

    Zobrazí:

    Rails je framework pro vývoj webových aplikací podle modelu Model-View-Control.
    Vše, co je potřeba, je databázový a webový server.

    Obsah

    {{toc}} => obsah zarovnaný doleva
    {{>toc}} => obsah zarovnaný doprava
    

    Vodorovná Äára

    ---
    

    Makra

    Redmine obsahuje následující vestavěná makra:

    hello_world

    Jednoduché makro.

    macro_list

    Zobrazí seznam vÅ¡ech dostupných maker, vÄetnÄ› jejich popisu, existuje-li.

    child_pages

    Zobrazí seznam dětských stránek. Bez parametrů zobrazí dětské stránky aktuální wiki stránky. Např.:

    {{child_pages}} -- lze použít pouze z wiki stránky
    {{child_pages(depth=2)}} -- zobrazí dětské stránky pouze do 2. úrovně
    include

    Vloží Wiki stránku. Např.:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Vloží sbalený blok textu. Např.:

    {{collapse(Zobrazit detaily...)
    Toto je blok textu, který je sbalený.
    Pro rozbalení klikněte na odkaz.
    }}
    thumbnail

    Zobrazí klikací náhled obrázku. Např.:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Vloží odkaz na úkol s volitelným textem. Např:

    {{issue(123)}}                              -- Issue #123: Rozšířené možnosti maker
    {{issue(123, project=true)}}                -- Andromeda - Issue #123: Rozšířené možnosti maker
    {{issue(123, tracker=false)}}               -- #123: Rozšířené možnosti maker
    {{issue(123, subject=false, project=true)}} -- Andromeda - Úkol #123

    Zvýrazňování kódu

    Výchozí zvýrazňování kódu závisí na Rouge, zvýrazňovaÄi kódu napsaném v Ruby. Rouge podporuje mnoho běžných jazyků jako jsou c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) - jména z závorkách jsou aliasy. Podívejte se, prosím, na seznam jazyků podporovaných zvýrazňovaÄem kódu Redmine.

    Kód můžete na stránce zvýraznit pomocí následující syntaxe (záleží na velikosti písma jazyku nebo aliasu):

    <pre><code class="ruby">
      Zde vložte Váš kód.
    </code></pre>
    

    NapÅ™.:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Ahoj #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/cs/wiki_syntax_textile.html.erb000066400000000000000000000122761500112024600302110ustar00rootroot00000000000000 Wiki formátování <%= stylesheet_link_tag "wiki_syntax.css" %>

    Syntaxe Wiki - rychlý náhled

    Styly písma (" target="_blank">více)
    <%= image_tag("jstoolbar/bold.svg", { alt: "tuÄný" }) %>*tuÄný*tuÄný
    <%= image_tag("jstoolbar/italic.svg", { alt: "kurzíva" }) %>_kurzíva_kurzíva
    <%= image_tag("jstoolbar/underline.svg", { alt: "podtržený" }) %>+podtržený+podtržený
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "přeškrtnutý" }) %>-přeškrtnutý-přeškrtnutý
    ??Citace??Citace
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "vnořený kód" }) %>@vnořený kód@vnořený kód
    <pre>
     Å™Ã¡dky
     kódu
    </pre>
     řádky
     kódu
    
    Zvýrazněný kód (" target="_blank">více | podporované jazyky)
    <%= image_tag("jstoolbar/code.svg", { alt: "Zvýrazněný kód" }) %><pre><code class="ruby">
    3.times do
      puts 'Ahoj'
    end
    </code></pre>
    3.times do
      puts 'Ahoj'
    end
    
    Seznamy
    <%= image_tag("jstoolbar/list.svg", { alt: "Nesetříděný seznam" }) %>* Položka 1
    ** Pod
    * Položka 2
    • Položka 1
      • Pod
    • Položka 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Setříděný seznam" }) %># Položka 1
    ## Pod
    # Položka 2
    1. Položka 1
      1. Pod
    2. Položka 2
    Nadpisy (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Nadpis 1" }) %>h1. Nadpis 1

    Nadpis 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Nadpis 2" }) %>h2. Nadpis 2

    Nadpis 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Nadpis 3" }) %>h3. Nadpis 3

    Nadpis 3

    Odkazy (" target="_blank">více)
    http://foo.barhttp://foo.bar
    "Odkaz":http://foo.barOdkaz
    Redmine odkazy (" target="_blank">více)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Odkaz na Wiki stránku" }) %>[[Wiki stránka]]Wiki stránka
    Úkol #12Úkol #12
    ##12Úkol #12: Předmět úkolu
    Revize r43Revize r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Vnořené obrázky (" target="_blank">více)
    <%= image_tag("jstoolbar/image.svg", { alt: "Obrázek" }) %>!url_obrázku!
    !vnořený_obrázek!
    Tabulky
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Více informací

    redmine-6.0.5/app/views/help/wiki_syntax/textile/de/000077500000000000000000000000001500112024600224205ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/de/wiki_syntax_detailed_textile.html.erb000066400000000000000000000424131500112024600320230ustar00rootroot00000000000000 Redmine Wiki-Formatierung (Textile) detailliert <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Redmine Wiki-Formatierung (Textile) detailliert

    Links

    Redmine interne Links

    Redmine erlaubt Hyperlinks zwischen Ressourcen (Tickets, Änderungssätze, Wiki-Seiten...) überall dort, wo Wiki-Formatierung verwendet wird.

    • Link zu einem Ticket: #124 (wird durchgestrichen angezeigt #124, wenn das Ticket geschlossen ist)
    • Link zu einem Ticket mit Name des Tackers und Betreff des Tickets: ##124 (Zeigt Fehler #124: Fehlerbeschreibung)
    • Link zu einer Ticketnotiz: #124-6, oder #124#note-6
    • Link zu einer Ticketnotiz innerhalb des selben Tickets: #note-6

    Wiki-Links:

    • [[Anleitung]] zeigt einen Link zur Seite mit dem Namen „Anleitung“ an: Anleitung
    • [[Anleitung#Weiterlesen]] führt zum Anker "Weiterlesen". Überschriften bekommen automatisch Anker zugewiesen, damit Sie darauf verweisen können: Anleitung
    • [[[#Weiterlesen]] Link zum Anker "Weiterlesen" der aktuellen Seite: #Weiterlesen
    • [[Anleitung|Benutzerhandbuch]] zeigt einen Link zu derselben Seite, aber mit einem anderen Text: Benutzerhandbuch

    Sie können auch auf Seiten eines anderen Projekt-Wikis verlinken:

    • [[sandbox:Eine Seite]] zeigt einen Link zu der Seite namens 'Eine Seite' des Sandbox-Wikis an
    • [[sandbox:]] zeigt einen Link zur Hauptseite des Sandbox-Wikis an

    Wiki-Links werden rot angezeigt, wenn die Seite noch nicht existiert, z.B.: Nicht vorhandene Seite.

    Links zu anderen Ressourcen:

    • Dokumente:
      • document#17 (Link zum Dokument mit der ID 17)
      • document:Willkommen (Link zum Dokument mit dem Titel "Willkommen")
      • document:"Ein Dokument" (doppelte Anführungszeichen können verwendet werden, wenn der Dokumenttitel Leerzeichen enthält
      • sandbox:document:"Ein Dokument" (Link zu einem Dokument mit dem Titel "Ein Dokument" in einem anderen Projekt "Sandbox")
    • Versionem:
      • version#3 (Link zur Version mit der ID 3)
      • version:1.0.0 (Link zur Version mit dem Namen "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (Link zu Version „1.0.0“ im Projekt „Sandbox“)
    • Anhänge:
      • attachment:file.zip (Link zum Anhang des aktuellen Objekts mit dem Namen file.zip)
      • Im Moment können nur Anhänge des aktuellen Objekts referenziert werden (wenn Sie sich in einem Ticket befinden, können nur Anhänge dieses Tickets referenziert werden).
    • Änderungssätze:
      • r758 (Link zu einem Changeset)
      • commit:c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash)
      • svn1|r758 (Link zu einem Änderungssatz eines bestimmten Repositorys, für Projekte mit mehreren Repositorys)
      • commit:hg|c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash eines bestimmten Repositorys)
      • sandbox:r758 (Link zu einem Changeset eines anderen Projekts)
      • sandbox:commit:c6f4d0fd (Link zu einem Changeset mit einem nicht numerischen Hash eines anderen Projekts)
    • Repository-Dateien:
      • source:some/file (Link zu der Datei, die sich unter /some/file im Repository des Projekts befindet)
      • source:some/file@52 (Link zur Revision 52 der Datei)
      • source:some/file#L120 (Link zu Zeile 120 der Datei)
      • source:some/file@52#L120 (Link zu Zeile 120 der Revision 52 der Datei)
      • source:"some file@52#L120" (verwenden Sie doppelte Anführungszeichen, wenn die URL Leerzeichen enthält
      • export:some/file (Download der Datei erzwingen)
      • source:svn1|some/file (Link zu einer Datei eines bestimmten Repositorys, für Projekte mit mehreren Repositorys)
      • sandbox:source:some/file (Link zu der Datei, die sich unter /some/file im Repository des Projekts „Sandbox“ befindet)
      • sandbox:export:some/file (Download der Datei erzwingen)
    • Foren:
      • forum#1 (Link zum Forum mit der ID 1)
      • forum:Support (Link zum Forum namens Support)
      • forum:"Technical Support" (verwenden Sie doppelte Anführungszeichen, wenn der Forumsname Leerzeichen enthält)
    • Forumsnachrichten:
      • message#1218 (Link zur Nachricht mit der ID 1218)
    • Projekte:
      • project#3 (Link zu Projekt mit ID 3)
      • project:Ein-Projekt (Link zu Projekt mit Namen oder Slug von „Ein-Projekt“)
      • project:"Ein Projekt" (verwenden Sie doppelte Anführungszeichen für Projektnamen mit Leerzeichen)
    • Nachrichten:
      • news#2 (Link zur Nachricht mit der ID 2)
      • news:Willkommen (Link zum Nachrichtenartikel namens „Willkommen“)
      • news:"Erste Neuigkeiten (verwenden Sie doppelte Anführungszeichen, wenn der Name der Nachricht Leerzeichen enthält)
    • Benutzer:
      • user#2 (Link zu Benutzer mit ID 2)
      • user:jsmith (Link zu Benutzer mit Login jsmith)
      • @jsmith (Link zu Benutzer mit Login jsmith)

    Link Unterdrückung:

    • Sie können verhindern, dass Redmine-Links geparst werden, indem Sie ihnen ein Ausrufezeichen voranstellen: !

    Externe Links

    URLs (beginnend mit: www, http, https, ftp, ftps, sftp und sftps) und E-Mail-Adressen werden automatisch in anklickbare Links umgewandelt:

    https://www.redmine.org, someone@foo.bar
    

    zeigt: https://www.redmine.org,

    Wenn Sie anstelle der URL einen bestimmten Text anzeigen möchten, können Sie die Standard-Textil-Syntax verwenden:

    "Redmine Webseite":https://www.redmine.org
    

    zeigt: Redmine Webseite

    Textformatierung

    Für Dinge wie Überschriften, Fettdruck, Tabellen, Listen unterstützt Redmine die Textile-Syntax. Informationen zur Verwendung dieser Funktionen finden Sie unter https://de.wikipedia.org/wiki/Textile. Ein paar Beispiele sind unten enthalten, aber die Engine unterstützt jedoch noch viele weitere Funktionen.

    Schriftstil

    * *Fett gedruckt*
    * _kursiv_
    * _*Fett Kursiv*_
    * +unterstrichen+
    * -durchgestrichen-
    

    Anzeige:

    • Fett gedruckt
    • _kursiv
    • Fett Kursiv
    • unterstrichen
    • durchgestrichen

    Eingebettete Bilder

    • !image_url! zeigt ein Bild an, das sich unter image_url befindet (textiler Syntax)
    • !>image_url! rechts schwebendes Bild
    • Wenn Sie ein Bild an Ihre Wiki-Seite angehängt haben, kann es mit seinem Dateinamen inline angezeigt werden: !attached_image.png!
    • Bilder aus der Zwischenablage Ihres Computers können direkt mit Strg-v oder cmd-v eingefügt werden (beachten Sie, dass ältere Browser inklusive aller Versionen des "Internet Explorer" nicht unterstützt werden)
    • Bilddateien können zum Hochladen und Einbetten auf den Textbereich gezogen werden.

    Überschriften

    h1. Überschrift
    
    h2. Untertitel
    
    h3. untergeordneter Untertitel
    

    edmine weist jeder dieser Überschriften einen Anker zu, sodass Sie mit „#Überschrift“, „#Untertitel“ usw. darauf verlinken können.

    Absätze

    p>. rechts ausgerichtet
    p=. zentriert
    

    Dies ist ein zentrierter Absatz.

    Blockzitat

    Beginnen Sie den Absatz mit bq.

    bq. Rails ist ein Full-Stack-Framework zur Entwicklung datenbankgestützter Webanwendungen nach dem Model-View-Control-Muster.
    Um live zu gehen, müssen Sie lediglich eine Datenbank und einen Webserver hinzufügen.
    

    Anzeige:

    Rails ist ein Full-Stack-Framework zur Entwicklung datenbankgestützter Webanwendungen nach dem Model-View-Control-Muster.
    Um live zu gehen, müssen Sie lediglich eine Datenbank und einen Webserver hinzufügen.

    Inhaltsverzeichnis

    {{toc}} => linksbündiges Inhaltsverzeichnis
    {{>toc}} => rechtsbündiges Inhaltsverzeichnis
    

    Horizontale Linie

    ---
    

    Anzeige:


    Makros

    Redmine hat folgende, eingebauten Makros:

    hello_world

    Beispielmakro

    macro_list

    Zeigt eine Liste aller verfügbaren Makros an, einschließlich Beschreibung, falls verfügbar.

    child_pages

    Zeigt eine Liste der untergeordneten Seiten an. Ohne Argument zeigt es die untergeordneten Seiten der aktuellen Wiki-Seite an. Beispiele:

    {{child_pages}} -- kann nur von einer Wiki-Seite aus verwendet werden
    {{child_pages(depth=2)}} -- nur Verschachtelung mit 2 Ebenen anzeigen
    include

    Fügt eine Wiki-Seite hinzu. Beispiel:

    {{include(Foo)}}

    oder um eine Seite eines bestimmten Projekt-Wikis einzufügen:

    {{include(projectname:Foo)}}
    collapse

    Einfügungen von reduzierten Textblöcken. Beispiel:

    {{collapse(Details anzeigen...)
    Dies ist ein Textblock, der standardmäßig reduziert ist.
    Es kann durch Klicken auf einen Link erweitert werden.
    }}
    thumbnail

    Zeigt eine anklickbare Miniaturansicht eines angehängten Bildes an. Beispiele:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Fügt einen Link zu einem Ticket mit flexiblem Text ein. Beispiele:

    {{issue(123)}}                              -- Fehler #123: Makrofunktionen verbessern
    {{issue(123, project=true)}}                -- Andromeda – Fehler #123: Makrofähigkeiten verbessern
    {{issue(123, tracker=false)}}               -- #123: Makrofunktionen verbessern
    {{issue(123, subject=false, project=true)}} -- Andromeda - Fehler #123

    Code-Hervorhebung

    Die standardmäßige Code-Hervorhebung basiert auf Rouge, einem reinen Ruby-Code-Highlighter. Rouge unterstützt viele häufig verwendete Sprachen wie c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml und yaml (yml) - die Namen in Klammern sind Aliase. Bitte beachten Sie die Liste der Sprachen, die vom Redmine-Code-Highlighter unterstützt werden.

    Sie können Code an jeder Stelle hervorheben, die Wiki-Formatierung mit dieser Syntax unterstützt (beachten Sie, dass beim Sprachnamen oder Alias ​​die Groß-/Kleinschreibung nicht beachtet wird):

    <pre><code class="ruby">
      Geben Sie hier Ihren Code ein.
    </code></pre>
    

    Beispiel:

    # Die Greeter-Klasse
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hallo #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/de/wiki_syntax_textile.html.erb000066400000000000000000000124711500112024600301710ustar00rootroot00000000000000 Wikiformatierung <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Schnellreferenz (Textile)

    Schriftarten (" target="_blank">mehr)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Fett" }) %>*Fett*Fett
    <%= image_tag("jstoolbar/italic.svg", { alt: "Kursiv" }) %>_Kursiv_Kursiv
    <%= image_tag("jstoolbar/underline.svg", { alt: "Unterstrichen" }) %>+Unterstrichen+Unterstrichen
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Durchgestrichen" }) %>-Durchgestrichen-Durchgestrichen
    ??Zitat??Zitat
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline-Code" }) %>@Inline-Code@Inline-Code
    <pre>
     vorformatierte
     Codezeilen
    </pre>
     vorformartierte
     Codezeilen
    
    Hervorgehobener Programmcode (" target="_blank">mehr | Unterstützte Sprachen)
    <%= image_tag("jstoolbar/code.svg", { alt: "Hervorgehobener Programmcode" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Listen
    <%= image_tag("jstoolbar/list.svg", { alt: "Unsortierte Liste" }) %>* Element 1
    ** Sub
    * Element 2
    • Element 1
      • Sub
    • Element 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Sortierte Liste" }) %># Element 1
    ## Sub
    # Element 2
    1. Element 1
      1. Sub
    2. Element 2
    Überschriften (" target="_blank">mehr)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Überschrift 1" }) %>h1. Überschrift 1

    Überschrift 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Überschrift 2" }) %>h2. Überschrift 2

    Überschrift 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Überschrift 3" }) %>h3. Überschrift 3

    Überschrift 3

    Links (" target="_blank">mehr)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine Links (" target="_blank">mehr)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link zu einer Wiki Seite" }) %>[[Wiki Seite]]Wiki Seite
    Ticket #12Ticket #12
    ##12Bug #12: Titel der Aufgabe
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    eingebettete Bilder (" target="_blank">mehr)
    <%= image_tag("jstoolbar/image.svg", { alt: "Bild" }) %>!URL_zu_dem_Bild!
    !angehängtes_Bild!
    Tabellen
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. 2 Zeilen | B | C |
    |\2. 2 Spalten |
    ABC
    ABC
    2 ZeilenBC
    2 Spalten

    weitere Informationen

    redmine-6.0.5/app/views/help/wiki_syntax/textile/en/000077500000000000000000000000001500112024600224325ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/en/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320370ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/en/wiki_syntax_textile.html.erb000066400000000000000000000120551500112024600302010ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/es-pa/000077500000000000000000000000001500112024600230355ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/es-pa/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600324420ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/es-pa/wiki_syntax_textile.html.erb000066400000000000000000000131311500112024600306000ustar00rootroot00000000000000 Formato de la Wiki <%= stylesheet_link_tag "wiki_syntax.css" %>

    Guia Rápida de Sintaxis de la Wiki

    Estilo de fuentes (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Negrita" }) %>*Negrita*Negrita
    <%= image_tag("jstoolbar/italic.svg", { alt: "Cursiva" }) %>_Cursiva_Cursiva
    <%= image_tag("jstoolbar/underline.svg", { alt: "Subrayado" }) %>+Subrayado+Subrayado
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Tachado" }) %>-Tachado-Tachado
    ??Cita??Cita
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Código en linea" }) %>@Código en linea@Código en linea
    <pre>
     Líneas
     de có
    </pre>
     líneas
     de código
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Código resaltado" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Listas
    <%= image_tag("jstoolbar/list.svg", { alt: "Lista no ordenada" }) %>* artículo 1
    ** Sub
    * artículo 2
    • artículo 1
      • Sub
    • artículo
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Lista ordenada" }) %># artículo 1
    ## Sub
    # artículo 2
    1. artículo 1
      1. Sub
    2. artículo 2
    Cabeceras (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Cabecera 1" }) %>h1. Título 1

    Título 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Cabecera 2" }) %>h2. Título 2

    Título 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Cabecera 3" }) %>h3. Título 3

    Título 3

    Enlaces (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Enlaces de Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Enlace a una página de la Wiki" }) %>[[pagina Wiki]]Pagina Wiki
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Enlace a una página de la Wiki con nombre descripciptivo" }) %>[[pagina Wiki|Nombre descriptivo]]Nombre descriptivo
    Petición #12Petición #12
    ##12Bug #12: The issue subject
    Revisión r43Revisión r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Imágenes en línea (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Imagen" }) %>!imagen_url!
    !imagen_adjunta!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Más información

    redmine-6.0.5/app/views/help/wiki_syntax/textile/es/000077500000000000000000000000001500112024600224375ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/es/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320440ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/es/wiki_syntax_textile.html.erb000066400000000000000000000131311500112024600302020ustar00rootroot00000000000000 Formato de la Wiki <%= stylesheet_link_tag "wiki_syntax.css" %>

    Guia Rápida de Sintaxis de la Wiki

    Estilo de fuentes (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Negrita" }) %>*Negrita*Negrita
    <%= image_tag("jstoolbar/italic.svg", { alt: "Cursiva" }) %>_Cursiva_Cursiva
    <%= image_tag("jstoolbar/underline.svg", { alt: "Subrayado" }) %>+Subrayado+Subrayado
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Tachado" }) %>-Tachado-Tachado
    ??Cita??Cita
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Código en linea" }) %>@Código en linea@Código en linea
    <pre>
     Líneas
     de có
    </pre>
     líneas
     de código
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Código resaltado" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Listas
    <%= image_tag("jstoolbar/list.svg", { alt: "Lista no ordenada" }) %>* artículo 1
    ** Sub
    * artículo 2
    • artículo 1
      • Sub
    • artículo
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Lista ordenada" }) %># artículo 1
    ## Sub
    # artículo 2
    1. artículo 1
      1. Sub
    2. artículo 2
    Cabeceras (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Cabecera 1" }) %>h1. Título 1

    Título 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Cabecera 2" }) %>h2. Título 2

    Título 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Cabecera 3" }) %>h3. Título 3

    Título 3

    Enlaces (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Enlaces de Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Enlace a una página de la Wiki" }) %>[[pagina Wiki]]Pagina Wiki
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Enlace a una página de la Wiki con nombre descripciptivo" }) %>[[pagina Wiki|Nombre descriptivo]]Nombre descriptivo
    Petición #12Petición #12
    ##12Bug #12: The issue subject
    Revisión r43Revisión r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Imágenes en línea (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Imagen" }) %>!imagen_url!
    !imagen_adjunta!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Más información

    redmine-6.0.5/app/views/help/wiki_syntax/textile/fr/000077500000000000000000000000001500112024600224375ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/fr/wiki_syntax_detailed_textile.html.erb000066400000000000000000000411021500112024600320340ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Mise en page Wiki

    Liens

    Liens Redmine

    Redmine autorise les hyperliens entre différentes ressources (Demandes, révisions, pages wiki...) n'importe où la mise en page Wiki est utilisée.

    • Lien vers une demande: #124 (affiche #124, le lien est barré si la demande est fermée)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Lien vers une note d'une demande: #124-6, ou #124#note-6
    • Link to an issue note within the same issue: #note-6

    Liens entre Wiki:

    • [[Guide]] affiche un lien vers la page nommé 'Guide': Guide
    • [[Guide#balise-avancée]] vous emmène à la balise "balise-avancée". Les titres ont automatiquement une balise assignée afin de pouvoir s'y référer: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|Manuel Utilisateur]] affiche un lien vers la même page mais avec un texte différent: Manuel Utilisateur

    Vous pouvez aussi faire des liens vers des pages du Wiki d'un autre projet:

    • [[sandbox:une page]] affiche un lien vers une page nommée 'Une page' du Wiki du projet Sandbox
    • [[sandbox:]] affiche un lien vers la page principal du Wiki du projet Sandbox

    Les liens Wiki sont affichés en rouge si la page n'existe pas encore, ie: Page inexistante.

    Liens vers d'autres ressources:

    • Documents:
      • document#17 (lien vers le document dont l'id est 17)
      • document:Salutations (lien vers le document dont le titre est "Salutations")
      • document:"Un document" (Les guillements peuvent être utilisé quand le titre du document comporte des espaces)
      • sandbox:document:"Un document" (Lien vers le document dont le titre est "Un document" dans le projet différent "sandbox")
    • Versions:
      • version#3 (lien vers la version dont l'id est 3)
      • version:1.0.0 (lien vers la version nommée "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (lien vers la version nommée "1.0.0" dans le projet "sandbox")
    • Pièces jointes:
      • attachment:file.zip (lien vers la pièce jointe de l'objet nommée file.zip)
      • Pour le moment, seules les pièces jointes de l'objet peuvent être référencées (si vous êtes sur une demande, il est possibe de faire référence aux pièces jointes de cette demande uniquement)
    • Révisions:
      • r758 (lien vers une révision)
      • commit:c6f4d0fd (lien vers une révision sans référence numérique)
      • svn1|r758 (lien vers un dépôt spécifique, pour les projets ayant plusieurs dépôts)
      • commit:hg|c6f4d0fd (lien vers une révision sans référence numérique d'un dépôt spécifique)
      • sandbox:r758 (Lien vers une révision d'un projet différent)
      • sandbox:commit:c6f4d0fd (lien vers une révision sans référence numérique d'un autre projet)
    • Fichier de dépôt:
      • source:un/fichier (Lien vers le fichier situé dans /un/fichier dans le dépôt du projet)
      • source:un/fichier@52 (Lien vers le fichier de la révison 52)
      • source:un/fichier#L120 (Lien vers la ligne 120 du fichier fichier)
      • source:un/fichier@52#L120 (Lien vers la ligne 120 du fichier de la révison 52)
      • source:"un fichier@52#L120" (Utilisez des guillemets quand l'url contient des espaces)
      • export:un/fichier (Force le téléchargement du fichier)
      • source:svn1|un/fichier (Lien vers le fichier dans un dépôt spécifique, pour les projets contenant plusieurs dépôts)
      • sandbox:source:un/fichier (Lien vers le fichier situé dans /un/fichier dans le dépôt du projet "sandbox")
      • sandbox:export:un/fichier (Force le téléchargement du fichier dans le dépôt du projet "sandbox")
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Messages du forum:
      • message#1218 (Lien vers le message dont l'id est 1218)
    • Projet:
      • project#3 (Lien vers le projet dont l'id est 3)
      • project:unprojet (Lien vers le projet nommé "unprojet")
      • project:"un projet" (use double quotes if project name contains spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Eviter ces lien:

    • Vous pouvez empêcher les liens Redmine de se faire en les précédant d'un point d'exclamaion : !

    Liens externes

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    affiche: https://www.redmine.org,

    Si vous voulez afficher un texte spécifique à la place de l'URL, vous pouvez utilisez la syntaxe standard textile:

    "Site Web Redmine":https://www.redmine.org
    

    affiche: Site Web Redmine

    Formatage du texte

    Pour les éléments tel que, gras, tableau, listes, Redmine utilise la syntaxe Textile. Voir http://fr.wikipedia.org/wiki/Textile_(langage) pour les informations sur l'utilisation de ces fonctionnalités. Quelques exemples sont inclus ci-dessous, mais le moteur est capable de beaucoup plus.

    Police d'écriture

    * *gras*
    * _italique_
    * _*gras _italique_*_
    * +sous-ligné+
    * -barré-
    

    Affiche:

    • gras
    • _italique_
    • gras italique
    • sous-ligné
    • barré

    Afficher une image

    • !url_de_l_image! affiche une image situé à l'adresse displays an image located at url_de_l_image (syntaxe Textile)
    • !>url_de_l_image! Image affichée à droite
    • Si vous avez une image en pièce jointe de votre page Wiki, elle peut être affiché en utilisant simplement sont nom: !image_en_piece_jointe.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Titre

    h1. Titre
    
    h2. Sous-titre
    
    h3. Sous-sous-titre
    

    Redmine assigne une balise à chacun de ses titres, vous pouvez donc les lier avec "#Titre", "#Sous-titre" et ainsi de suite.

    Paragraphes

    p>. aligné à droite
    p=. centré
    

    Ceci est un paragraphe centré.

    Blockquotes

    Commencer le paragraphe par bq.

    bq. Ruby on Rails, également appelé RoR ou Rails est un framework web libre écrit en Ruby. Il suit le motif de conception Modèle-Vue-Contrôleur aussi nommé MVC.
    Pour commencer à l'utiliser, il ne vous faut qu'un serveur web et une base de données.
    

    Affiche

    Ruby on Rails, également appelé RoR ou Rails est un framework web libre écrit en Ruby. Il suit le motif de conception Modèle-Vue-Contrôleur aussi nommé MVC.
    Pour commencer à l'utiliser, il ne vous faut qu'un serveur web et une base de données.

    Table des matières

    {{toc}} =>  table des matières centrées à gauche
    {{>toc}} => table des matières centrées à droite
    

    Règle horizontale

    ---
    

    Macros

    Redmine possède les macros suivantes:

    hello_world

    Macro d'exemple.

    macro_list

    Affiche une liste de toutes les macros disponibles, les descriptions sont incluses si celles-ci sont disponibles.

    child_pages

    Affiche une liste des sous-pages. Sans argument, cela affiche les sous-pages de la page courante. Exemples :

    {{child_pages}} -- peut être utilisé depuis une page wiki uniquement
    {{child_pages(depth=2)}} -- affiche deux niveaux d'arborescence seulement
    include

    Inclut une page Wiki. Exemple :

    {{include(Foo)}}

    ou pour inclure une page d'un wiki de projet spécifique :

    {{include(projectname:Foo)}}
    collapse

    Insère un bloc de texte enroulé. Exemple :

    {{collapse(Voir les détails...)
    Ceci est un bloc de texte qui est caché par défaut.
    Il peut être déroulé en cliquant sur le lien.
    }}
    thumbnail

    Affiche une miniature cliquable d'une image jointe. Exemples :

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Miniature)}}

    Coloration syntaxique

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Placez votre code ici.
    </code></pre>
    

    Exemple:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/fr/wiki_syntax_textile.html.erb000066400000000000000000000121111500112024600301770ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Syntaxe rapide des Wikis

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Gras*Gras
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italique_Italique
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Sous-ligné+Sous-ligné
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Barré-Barré
    ??Citation??Citation
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Code en ligne@Code en ligne
    <pre>
     lignes
     de code
    </pre>
     lignes
     de code
    
    Code colorisé (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Code colorisé" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Listes
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Titres (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Titre 1

    Titre 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Titre 2

    Titre 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Titre 3

    Titre 3

    Liens (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Liens Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Demande #12Demande #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Images en ligne (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!url_de_l_image!
    !image_en_pièce_jointe!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Plus d'informations

    redmine-6.0.5/app/views/help/wiki_syntax/textile/gl/000077500000000000000000000000001500112024600224325ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/gl/wiki_syntax_detailed_textile.html.erb000066400000000000000000000403141500112024600320330ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/gl/wiki_syntax_textile.html.erb000066400000000000000000000120561500112024600302020ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Código resaltado" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/ja/000077500000000000000000000000001500112024600224225ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/ja/wiki_syntax_detailed_textile.html.erb000066400000000000000000000451551500112024600320330ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki記法

    リンク

    Redmine内ã®ãƒªãƒ³ã‚¯

    Redmineã¯Wiki記法ãŒä½¿ãˆã‚‹ç®‡æ‰€ã®ã©ã“ã‹ã‚‰ã§ã‚‚ã€ãƒã‚±ãƒƒãƒˆãƒ»ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆãƒ»Wikiページãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ã¸ã®ãƒªãƒ³ã‚¯ãŒã§ãã¾ã™ã€‚

    • ãƒã‚±ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯: #124 (終了ã—ãŸãƒã‚±ãƒƒãƒˆã¯ #124 ã®ã‚ˆã†ã«å–り消ã—線付ãã§è¡¨ç¤ºã•れã¾ã™)
    • ãƒã‚±ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯ (トラッカーåã¨é¡Œåも表示): ##124 (表示例: Bug #124: bulk edit doesn't change the category or fixed version properties)
    • ãƒã‚±ãƒƒãƒˆã®ã‚³ãƒ¡ãƒ³ãƒˆã¸ã®ãƒªãƒ³ã‚¯: #124-6 ã¾ãŸã¯ #124#note-6
    • åŒã˜ãƒã‚±ãƒƒãƒˆå†…ã®ã‚³ãƒ¡ãƒ³ãƒˆã¸ã®ãƒªãƒ³ã‚¯: #note-6

    Wikiã¸ã®ãƒªãƒ³ã‚¯:

    • [[Guide]] "Guide"ã¨ã„ã†åç§°ã®ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯: Guide
    • [[Guide#further-reading]] "Guide"ã¨ã„ã†ãƒšãƒ¼ã‚¸å†…ã®"further-reading"ã¨ã„ã†ã‚¢ãƒ³ã‚«ãƒ¼ã«é£›ã³ã¾ã™ã€‚見出ã—ã«ã¯è‡ªå‹•çš„ã«ã‚¢ãƒ³ã‚«ãƒ¼ãŒè¨­å®šã•れるã®ã§ã“ã®ã‚ˆã†ã«ãƒªãƒ³ã‚¯å…ˆã¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™: Guide
    • [[#further-reading]] åŒã˜ãƒšãƒ¼ã‚¸å†…ã®ã‚¢ãƒ³ã‚«ãƒ¼"further-reading"ã¸ã®ãƒªãƒ³ã‚¯: #further-reading
    • [[Guide|User manual]] "Guide"ã¨ã„ã†ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ã‚’ç•°ãªã‚‹ãƒ†ã‚­ã‚¹ãƒˆã§è¡¨ç¤º: User manual

    別ã®ãƒ—ロジェクトã®wikiã¸ã®ãƒªãƒ³ã‚¯ã‚‚å¯èƒ½ã§ã™:

    • [[sandbox:some page]] sandboxã¨ã„ã†ãƒ—ロジェクトã®wikiã®"some page"ã¨ã„ã†åç§°ã®ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯
    • [[sandbox:]] sanbdoxã¨ã„ã†ãƒ—ロジェクトã®wikiã®ãƒ¡ã‚¤ãƒ³ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯

    存在ã—ãªã„wikiページã¸ã®ãƒªãƒ³ã‚¯ã¯èµ¤ã§è¡¨ç¤ºã•れã¾ã™ã€‚ 例: Nonexistent page.

    ãã®ã»ã‹ã®ãƒªã‚½ãƒ¼ã‚¹ã¸ã®ãƒªãƒ³ã‚¯:

    • 文書:
      • document#17 (id 17ã®æ–‡æ›¸ã¸ã®ãƒªãƒ³ã‚¯)
      • document:Greetings ("Greetings" ã¨ã„ã†ã‚¿ã‚¤ãƒˆãƒ«ã®æ–‡æ›¸ã¸ã®ãƒªãƒ³ã‚¯)
      • document:"Some document" (文書ã®ã‚¿ã‚¤ãƒˆãƒ«ã«ç©ºç™½ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ãƒ€ãƒ–ルクォーテーションã§å›²ã‚“ã§ãã ã•ã„)
      • sandbox:document:"Some document" ("sandbox" ã¨ã„ã†ãƒ—ロジェクト㮠"Some document" ã¨ã„ã†ã‚¿ã‚¤ãƒˆãƒ«ã®æ–‡æ›¸ã¸ã®ãƒªãƒ³ã‚¯)
    • ãƒãƒ¼ã‚¸ãƒ§ãƒ³:
      • version#3 (id 3ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®ãƒªãƒ³ã‚¯)
      • version:1.0.0 ("1.0.0"ã¨ã„ã†åç§°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®ãƒªãƒ³ã‚¯)
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 ("sandbox"ã¨ã„ã†ãƒ—ロジェクト㮠"1.0.0" ã¨ã„ã†åç§°ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®ãƒªãƒ³ã‚¯)
    • 添付ファイル:
      • attachment:file.zip (ç¾åœ¨ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ·»ä»˜ã•れ㟠file.zip ã¨ã„ã†ãƒ•ァイルã¸ã®ãƒªãƒ³ã‚¯)
      • ç¾åœ¨ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆä¸Šã®æ·»ä»˜ãƒ•ァイルã®ã¿ãƒªãƒ³ã‚¯å…ˆã¨ã—ã¦æŒ‡å®šã§ãã¾ã™ (例ãˆã°ã‚ã‚‹ãƒã‚±ãƒƒãƒˆã‹ã‚‰ã¯ã€ãã®ãƒã‚±ãƒƒãƒˆã«æ·»ä»˜ã•れãŸãƒ•ァイルã®ã¿ãƒªãƒ³ã‚¯å…ˆã«ã§ãã¾ã™)
    • ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆ:
      • r758 (ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
      • commit:c6f4d0fd (ãƒãƒƒã‚·ãƒ¥å€¤ã«ã‚ˆã‚‹ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
      • svn1|r758 (複数ã®ãƒªãƒã‚¸ãƒˆãƒªãŒè¨­å®šã•れãŸãƒ—ロジェクトã§ã€ç‰¹å®šã®ãƒªãƒã‚¸ãƒˆãƒªã®ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
      • commit:hg|c6f4d0fd (ãƒãƒƒã‚·ãƒ¥å€¤ã«ã‚ˆã‚‹ã€ç‰¹å®šã®ãƒªãƒã‚¸ãƒˆãƒªã®ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
      • sandbox:r758 (ä»–ã®ãƒ—ロジェクトã®ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
      • sandbox:commit:c6f4d0fd (ãƒãƒƒã‚·ãƒ¥å€¤ã«ã‚ˆã‚‹ã€ä»–ã®ãƒ—ロジェクトã®ãƒã‚§ãƒ³ã‚¸ã‚»ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯)
    • リãƒã‚¸ãƒˆãƒªå†…ã®ãƒ•ァイル:
      • source:some/file (プロジェクトã®ãƒªãƒã‚¸ãƒˆãƒªå†…ã® /some/file ã¨ã„ã†ãƒ•ァイルã¸ã®ãƒªãƒ³ã‚¯)
      • source:some/file@52 (ファイルã®ãƒªãƒ“ジョン52ã¸ã®ãƒªãƒ³ã‚¯)
      • source:some/file#L120 (ファイルã®120行目ã¸ã®ãƒªãƒ³ã‚¯)
      • source:some/file@52#L120 (リビジョン52ã®ãƒ•ァイルã®120行目ã¸ã®ãƒªãƒ³ã‚¯)
      • source:"some file@52#L120" (URLã«ã‚¹ãƒšãƒ¼ã‚¹ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ãƒ€ãƒ–ルクォーテーションã§å›²ã‚“ã§ãã ã•ã„)
      • export:some/file (ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’強制)
      • source:svn1|some/file (複数ã®ãƒªãƒã‚¸ãƒˆãƒªãŒè¨­å®šã•れãŸãƒ—ロジェクトã§ã€ç‰¹å®šã®ãƒªãƒã‚¸ãƒˆãƒªã®ãƒ•ァイルã¸ã®ãƒªãƒ³ã‚¯)
      • sandbox:source:some/file ("sandbox" ã¨ã„ã†ãƒ—ロジェクトã®ãƒªãƒã‚¸ãƒˆãƒªä¸Šã® /some/file ã¨ã„ã†ãƒ•ァイルã¸ã®ãƒªãƒ³ã‚¯)
      • sandbox:export:some/file (ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’強制)
    • フォーラム:
      • forum#1 (id 1ã®ãƒ•ォーラムã¸ã®ãƒªãƒ³ã‚¯)
      • forum:Support ("Support"ã¨ã„ã†åç§°ã®ãƒ•ォーラムã¸ã®ãƒªãƒ³ã‚¯)
      • forum:"Technical Support" (フォーラムåã«ç©ºç™½ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ãƒ€ãƒ–ルクォーテーションã§å›²ã‚“ã§ãã ã•ã„)
    • フォーラムã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:
      • message#1218 (id 1218ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯)
    • プロジェクト:
      • project#3 (id 3ã®ãƒ—ロジェクトã¸ã®ãƒªãƒ³ã‚¯)
      • project:someproject ("someproject"ã¨ã„ã†åç§°ã®ãƒ—ロジェクトã¸ã®ãƒªãƒ³ã‚¯)
      • project:"some project" (プロジェクトåã«ç©ºç™½ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ãƒ€ãƒ–ルクォーテーションã§å›²ã‚“ã§ãã ã•ã„)
    • ニュース:
      • news#2 (id 2ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã¸ã®ãƒªãƒ³ã‚¯)
      • news:Greetings ("Greetings"ã¨ã„ã†ã‚¿ã‚¤ãƒˆãƒ«ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã¸ã®ãƒªãƒ³ã‚¯)
      • news:"First Release" (タイトルã«ç©ºç™½ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ãƒ€ãƒ–ルクォーテーションã§å›²ã‚“ã§ãã ã•ã„)
    • ユーザー:
      • user#2 (id 2ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ãƒªãƒ³ã‚¯)
      • user:jsmith (jsmith ã¨ã„ã†ãƒ­ã‚°ã‚¤ãƒ³IDã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ãƒªãƒ³ã‚¯)
      • @jsmith (jsmith ã¨ã„ã†ãƒ­ã‚°ã‚¤ãƒ³IDã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ãƒªãƒ³ã‚¯)

    エスケープ:

    • テキストをRedmineã®ãƒªãƒ³ã‚¯ã¨ã—ã¦è§£é‡ˆã•ã›ãŸããªã„å ´åˆã¯æ„Ÿå˜†ç¬¦ ! ã‚’å‰ã«ã¤ã‘ã¦ãã ã•ã„。

    外部リンク

    URL(starting with: www, http, https, ftp, ftps, sftp and sftps)ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯è‡ªå‹•çš„ã«ãƒªãƒ³ã‚¯ã«ãªã‚Šã¾ã™:

    https://www.redmine.org, someone@foo.bar
    

    上記記述ã®è¡¨ç¤ºä¾‹ã§ã™: https://www.redmine.org,

    URLã®ã‹ã‚りã«åˆ¥ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’表示ã•ã›ãŸã„å ´åˆã¯ã€æ¨™æº–çš„ãªtextile記法ãŒåˆ©ç”¨ã§ãã¾ã™:

    "Redmine web site":https://www.redmine.org
    

    上記記述ã®è¡¨ç¤ºä¾‹ã§ã™: Redmine web site

    ãƒ†ã‚­ã‚¹ãƒˆã®æ›¸å¼

    見出ã—ã€å¤ªå­—ã€ãƒ†ãƒ¼ãƒ–ルã€ãƒªã‚¹ãƒˆç­‰ã¯ã€Redmineã¯Textile記法ã§ã®è¨˜è¿°ã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚Textile記法ã®è©³ç´°ã¯ https://en.wikipedia.org/wiki/Textile_(markup_language) ã‚’å‚ç…§ã—ã¦ãã ã•ã„。Textileã®ä¸€ä¾‹ã‚’以下ã«ç¤ºã—ã¾ã™ãŒã€å®Ÿéš›ã«ã¯ã“ã“ã§å–り上ã’ãŸä»¥å¤–ã®è¨˜æ³•ã«ã‚‚対応ã—ã¦ã„ã¾ã™ã€‚

    æ–‡å­—ã®æ›¸å¼

    * *太字*
    * _斜体_
    * _*å¤ªå­—ã§æ–œä½“*_
    * +下線+
    * -å–り消ã—ç·š-
    

    表示例:

    • 太字
    • 斜体
    • å¤ªå­—ã§æ–œä½“
    • 下線
    • å–り消ã—ç·š

    ç”»åƒ

    • !image_url! image_urlã§æŒ‡å®šã•れãŸURLã®ç”»åƒã‚’表示 (Textile記法)
    • !>image_url! ç”»åƒã‚’å³å¯„ã›ãƒ»ãƒ†ã‚­ã‚¹ãƒˆå›žã‚Šè¾¼ã¿ã‚りã§è¡¨ç¤º
    • Wikiãƒšãƒ¼ã‚¸ã«æ·»ä»˜ã•れãŸç”»åƒãŒã‚れã°ã€ãƒ•ァイルåを指定ã—ã¦ç”»åƒã‚’表示ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™: !attached_image.png!
    • PCã®ã‚¯ãƒªãƒƒãƒ—ボード内ã®ç”»åƒã¯ Ctrl-v ã¾ãŸã¯ Command-v ã§ç›´æŽ¥è²¼ã‚Šä»˜ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ (Internet Explorerã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“)。
    • ç”»åƒãƒ•ァイルをテキストエリアã«ãƒ‰ãƒ­ãƒƒãƒ—ã™ã‚‹ã¨ã‚¢ãƒƒãƒ—ロードã¨ç”»åƒã®åŸ‹ã‚è¾¼ã¿ãŒè¡Œã‚れã¾ã™ã€‚

    見出ã—

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmineã¯è¦‹å‡ºã—ã«ã‚¢ãƒ³ã‚«ãƒ¼ã‚’設定ã™ã‚‹ã®ã§ã€"#Heading", "#Subheading"ã®ã‚ˆã†ã«è¨˜è¿°ã—ã¦è¦‹å‡ºã—ã¸ã®ãƒªãƒ³ã‚¯ãŒè¡Œãˆã¾ã™ã€‚

    段è½

    p>. å³å¯„ã›
    p=. センタリング
    

    センタリングã•ã‚ŒãŸæ®µè½

    引用

    段è½ã‚’ bq. ã§é–‹å§‹ã—ã¦ãã ã•ã„。

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    表示例:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    目次

    {{toc}} => 目次(左寄ã›)
    {{>toc}} => 目次(å³å¯„ã›)
    

    区切り線

    ---
    

    マクロ

    Redmineã«ã¯ä»¥ä¸‹ã®çµ„ã¿è¾¼ã¿ãƒžã‚¯ãƒ­ãŒç”¨æ„ã•れã¦ã„ã¾ã™:

    hello_world

    サンプルã®ãƒžã‚¯ãƒ­ã§ã™ã€‚

    macro_list

    利用å¯èƒ½ãªãƒžã‚¯ãƒ­ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚マクロã®èª¬æ˜ŽãŒã‚れã°ãれも表示ã—ã¾ã™ã€‚

    child_pages

    å­ãƒšãƒ¼ã‚¸ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚å¼•æ•°ã®æŒ‡å®šãŒç„¡ã‘れã°ç¾åœ¨ã®wikiページã®å­ãƒšãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã€‚以下ã¯ä½¿ç”¨ä¾‹ã§ã™:

    {{child_pages}} -- wikiページã§ã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™
    {{child_pages(depth=2)}} -- 2階層分ã®ã¿è¡¨ç¤ºã—ã¾ã™
    include

    別ã®Wikiページã®å†…容を挿入ã—ã¾ã™ã€‚ 以下ã¯ä½¿ç”¨ä¾‹ã§ã™:

    {{include(Foo)}}

    別プロジェクトã®Wikiページを挿入ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™:

    {{include(projectname:Foo)}}
    collapse

    折り畳ã¾ã‚ŒãŸçŠ¶æ…‹ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’挿入ã—ã¾ã™ã€‚以下ã¯ä½¿ç”¨ä¾‹ã§ã™:

    {{collapse(詳細を表示...)
    ã“ã®éƒ¨åˆ†ã¯ãƒ‡ãƒ•ォルトã§ã¯æŠ˜ã‚Šç•³ã¾ã‚ŒãŸçŠ¶æ…‹ã§è¡¨ç¤ºã•れã¾ã™ã€‚
    リンクをクリックã™ã‚‹ã¨å±•é–‹ã•れã¾ã™ã€‚
    }}
    thumbnail

    添付ファイルã®ã‚¯ãƒªãƒƒã‚¯å¯èƒ½ãªã‚µãƒ ãƒã‚¤ãƒ«ç”»åƒã‚’表示ã—ã¾ã™ã€‚以下ã¯ä½¿ç”¨ä¾‹ã§ã™:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    ãƒã‚±ãƒƒãƒˆã¸ã®ãƒªãƒ³ã‚¯ã‚’カスタマイズå¯èƒ½ãªãƒ†ã‚­ã‚¹ãƒˆã¨ã¨ã‚‚ã«æŒ¿å…¥ã—ã¾ã™ã€‚以下ã¯ä½¿ç”¨ä¾‹ã§ã™:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    コードãƒã‚¤ãƒ©ã‚¤ãƒˆ

    Redmineã¯Rubyã§è¨˜è¿°ã•れãŸã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ©ã‚¤ãƒˆç”¨ãƒ©ã‚¤ãƒ–ラリ Rouge を使用ã—ã¦ã„ã¾ã™ã€‚Rouge㯠c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml, yaml (yml) ãªã©ä¸€èˆ¬çš„ã«ä½¿ã‚れã¦ã„る多数ã®è¨€èªžã«å¯¾å¿œã—ã¦ã„ã¾ã™ï¼ˆæ‹¬å¼§å†…ã®åå‰ã¯ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ©ã‚¤ãƒˆã®æŒ‡å®šã«åˆ©ç”¨ã§ãる別åã§ã™ï¼‰ã€‚全対応言語ã®ä¸€è¦§ã¯ List of languages supported by Redmine code highlighter ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

    Wiki記法ã«å¯¾å¿œã—ã¦ã„る箇所ã§ã‚れã°ã©ã“ã§ã‚‚以下ã®è¨˜è¿°ã«ã‚ˆã‚Šã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ©ã‚¤ãƒˆãŒåˆ©ç”¨ã§ãã¾ã™ (言語å・別åã§ã¯å¤§æ–‡å­—ãƒ»å°æ–‡å­—ã¯åŒºåˆ¥ã•れã¾ã›ã‚“):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    表示例:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/ja/wiki_syntax_textile.html.erb000066400000000000000000000124731500112024600301750ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki記法 クイックリファレンス

    フォントスタイル (" target="_blank">詳細)
    <%= image_tag("jstoolbar/bold.svg", { alt: "太字" }) %>*太字*太字
    <%= image_tag("jstoolbar/italic.svg", { alt: "斜体" }) %>_斜体_斜体
    <%= image_tag("jstoolbar/underline.svg", { alt: "下線" }) %>+下線+下線
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "å–り消ã—ç·š" }) %>-å–り消ã—ç·š-å–り消ã—ç·š
    ??引用??引用
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "コード" }) %>@コード@コード
    <pre>
     è¤‡æ•°è¡Œã®
     ã‚³ãƒ¼ãƒ‰
    </pre>
    複数行ã®
    コード
    
    コードãƒã‚¤ãƒ©ã‚¤ãƒˆ (" target="_blank">詳細 | 対応言語)
    <%= image_tag("jstoolbar/code.svg", { alt: "コードãƒã‚¤ãƒ©ã‚¤ãƒˆ" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    リスト
    <%= image_tag("jstoolbar/list.svg", { alt: "リスト" }) %>* 項目1
    ** 下ä½éšŽå±¤ã®é …ç›®
    * é …ç›®2
    • é …ç›®1
      • 下ä½éšŽå±¤ã®é …ç›®
    • é …ç›®2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "é †åºä»˜ãリスト" }) %># é …ç›®1
    ## 下ä½éšŽå±¤ã®é …ç›®
    # é …ç›®2
    1. é …ç›®1
      1. 下ä½éšŽå±¤ã®é …ç›®
    2. é …ç›®2
    見出㗠(" target="_blank">詳細)
    <%= image_tag("jstoolbar/h1.svg", { alt: "見出ã—1" }) %>h1. タイトル1

    タイトル1

    <%= image_tag("jstoolbar/h2.svg", { alt: "見出ã—2" }) %>h2. タイトル2

    タイトル2

    <%= image_tag("jstoolbar/h3.svg", { alt: "見出ã—3" }) %>h3. タイトル3

    タイトル3

    リンク (" target="_blank">詳細)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine内ã®ãƒªãƒ³ã‚¯ (" target="_blank">詳細)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Wikiページã¸ã®ãƒªãƒ³ã‚¯" }) %>[[Wiki page]]Wiki page
    ãƒã‚±ãƒƒãƒˆ #12ãƒã‚±ãƒƒãƒˆ #12
    ##12Bug #12: The issue subject
    リビジョン r43リビジョン r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    ç”»åƒ (" target="_blank">詳細)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!ç”»åƒURL!
    !添付ファイルå!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    より詳細ãªãƒªãƒ•ァレンス

    redmine-6.0.5/app/views/help/wiki_syntax/textile/ko/000077500000000000000000000000001500112024600224415ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/ko/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320460ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/ko/wiki_syntax_textile.html.erb000066400000000000000000000120601500112024600302040ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "색ìƒí™”한 코드" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/lt/000077500000000000000000000000001500112024600224475ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/lt/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402471500112024600320550ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/lt/wiki_syntax_textile.html.erb000066400000000000000000000120551500112024600302160ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/nl/000077500000000000000000000000001500112024600224415ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/nl/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600320460ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/nl/wiki_syntax_textile.html.erb000066400000000000000000000120551500112024600302100ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki Syntax Quick Reference

    Font Styles (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Strong*Strong
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Italic_Italic
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Underline+Underline
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Deleted-Deleted
    ??Quote??Quote
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Inline Code@Inline Code
    <pre>
     lines
     of code
    </pre>
     lines
     of code
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Gemarkeerde code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Lists
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Headings (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Title 1

    Title 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Title 2

    Title 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Title 3

    Title 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine links (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    Issue #12Issue #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Inline images (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    More Information

    redmine-6.0.5/app/views/help/wiki_syntax/textile/pt-br/000077500000000000000000000000001500112024600230545ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/pt-br/wiki_syntax_detailed_textile.html.erb000066400000000000000000000402461500112024600324610ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki formatting

    Links

    Redmine links

    Redmine allows hyperlinking between resources (issues, changesets, wiki pages...) from anywhere wiki formatting is used.

    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • Link to an issue note: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[Guide]] displays a link to the page named 'Guide': Guide
    • [[Guide#further-reading]] takes you to the anchor "further-reading". Headings get automatically assigned anchors so that you can refer to them: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] displays a link to the same page but with a different text: User manual

    You can also link to pages of an other project wiki:

    • [[sandbox:some page]] displays a link to the page named 'Some page' of the Sandbox wiki
    • [[sandbox:]] displays a link to the Sandbox wiki main page

    Wiki links are displayed in red if the page doesn't exist yet, eg: Nonexistent page.

    Links to other resources:

    • Documents:
      • document#17 (link to document with id 17)
      • document:Greetings (link to the document with title "Greetings")
      • document:"Some document" (double quotes can be used when document title contains spaces)
      • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
    • Versions:
      • version#3 (link to version with id 3)
      • version:1.0.0 (link to version named "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
    • Attachments:
      • attachment:file.zip (link to the attachment of the current object named file.zip)
      • For now, attachments of the current object can be referenced only (if you're on an issue, it's possible to reference attachments of this issue only)
    • Changesets:
      • r758 (link to a changeset)
      • commit:c6f4d0fd (link to a changeset with a non-numeric hash)
      • svn1|r758 (link to a changeset of a specific repository, for projects with multiple repositories)
      • commit:hg|c6f4d0fd (link to a changeset with a non-numeric hash of a specific repository)
      • sandbox:r758 (link to a changeset of another project)
      • sandbox:commit:c6f4d0fd (link to a changeset with a non-numeric hash of another project)
    • Repository files:
      • source:some/file (link to the file located at /some/file in the project's repository)
      • source:some/file@52 (link to the file's revision 52)
      • source:some/file#L120 (link to line 120 of the file)
      • source:some/file@52#L120 (link to line 120 of the file's revision 52)
      • source:"some file@52#L120" (use double quotes when the URL contains spaces
      • export:some/file (force the download of the file)
      • source:svn1|some/file (link to a file of a specific repository, for projects with multiple repositories)
      • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
      • sandbox:export:some/file (force the download of the file)
    • Forums:
      • forum#1 (link to forum with id 1
      • forum:Support (link to forum named Support)
      • forum:"Technical Support" (use double quotes if forum name contains spaces)
    • Forum messages:
      • message#1218 (link to message with id 1218)
    • Projects:
      • project#3 (link to project with id 3)
      • project:some-project (link to project with name or slug of "some-project")
      • project:"Some Project" (use double quotes for project name containing spaces)
    • News:
      • news#2 (link to news item with id 2)
      • news:Greetings (link to news item named "Greetings")
      • news:"First Release" (use double quotes if news item name contains spaces)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Escaping:

    • You can prevent Redmine links from being parsed by preceding them with an exclamation mark: !

    External links

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    displays: https://www.redmine.org,

    If you want to display a specific text instead of the URL, you can use the standard textile syntax:

    "Redmine web site":https://www.redmine.org
    

    displays: Redmine web site

    Text formatting

    For things such as headlines, bold, tables, lists, Redmine supports Textile syntax. See https://en.wikipedia.org/wiki/Textile_(markup_language) for information on using any of these features. A few samples are included below, but the engine is capable of much more of that.

    Font style

    * *bold*
    * _italic_
    * _*bold italic*_
    * +underline+
    * -strike-through-
    

    Display:

    • bold
    • italic
    • bold italic
    • underline
    • strike-through

    Inline images

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • If you have an image attached to your wiki page, it can be displayed inline using its filename: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Headings

    h1. Heading
    
    h2. Subheading
    
    h3. Subsubheading
    

    Redmine assigns an anchor to each of those headings thus you can link to them with "#Heading", "#Subheading" and so forth.

    Paragraphs

    p>. right aligned
    p=. centered
    

    This is a centered paragraph.

    Blockquotes

    Start the paragraph with bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    Display:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    Table of content

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Horizontal Rule

    ---
    

    Macros

    Redmine has the following builtin macros:

    hello_world

    Sample macro.

    macro_list

    Displays a list of all available macros, including description if available.

    child_pages

    Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:

    {{child_pages}} -- can be used from a wiki page only
    {{child_pages(depth=2)}} -- display 2 levels nesting only
    include

    Include a wiki page. Example:

    {{include(Foo)}}

    or to include a page of a specific project wiki:

    {{include(projectname:Foo)}}
    collapse

    Inserts of collapsed block of text. Example:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    Displays a clickable thumbnail of an attached image. Examples:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    Code highlighting

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Example:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/pt-br/wiki_syntax_textile.html.erb000066400000000000000000000124531500112024600306250ustar00rootroot00000000000000 Formatação Wiki <%= stylesheet_link_tag "wiki_syntax.css" %>

    Sintaxe Wiki - Referência Rápida

    Estilos de Fonte (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*Negrito*Negrito
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_Itálico_Itálico
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+Sublinhado+Sublinhado
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-Tachado-Tachado
    ??Citação??Citação
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@Código Inline@Código Inline
    <pre>
     linhas
     de código
    </pre>
     linhas
     de código
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    Listas
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* Item 1
    ** Sub
    * Item 2
    • Item 1
      • Sub
    • Item 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># Item 1
    ## Sub
    # Item 2
    1. Item 1
      1. Sub
    2. Item 2
    Cabeçalhos (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. Título 1

    Título 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. Título 2

    Título 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. Título 3

    Título 3

    Links (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Links do Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Página Wiki]]Página Wiki
    Tarefa #12Tarefa #12
    ##12Bug #12: Título da tarefa
    Revisão r43Revisão r43
    commit:f30e13e43f30e13e4
    source:algum/arquivosource:algum/arquivo
    Imagens inline (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!url_da_imagem!
    !imagem_anexada!
    Tabelas
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Mais Informações

    redmine-6.0.5/app/views/help/wiki_syntax/textile/ru/000077500000000000000000000000001500112024600224565ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/ru/wiki_syntax_detailed_textile.html.erb000066400000000000000000000503521500112024600320620ustar00rootroot00000000000000 Форматирование Wiki Redmine <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Форматирование Wiki

    СÑылки

    СÑылки Redmine

    Redmine допуÑкает гиперÑÑылки между реÑурÑами (задачи, верÑии, wiki-Ñтраницы) отовÑюду в wiki-формате.

    • СÑылка на задачу: #124 ( #124 - ÑÑылка зачёркнута, еÑли задача закрыта)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • СÑылка на задачу: #124-6, или #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki ÑÑылки:

    • [[РуководÑтво]] выводит ÑÑылку на Ñтраницу Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ 'РуководÑтво': РуководÑтво
    • [[РуководÑтво#дальнейшее-чтение]] направлÑет на метку "дальнейшее-чтение". Заголовкам автоматичеÑки метки, таким образом, вы можете на них ÑÑылатьÑÑ: РуководÑтво
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[РуководÑтво|РуководÑтво пользователÑ]] выводит ÑÑылку на Ñаму Ñтраницу, но Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ текÑтом: РуководÑтво пользователÑ

    Также вы можете ÑÑылатьÑÑ Ð½Ð° wiki:

    • [[sandbox:ÐÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтраница]] выводит ÑÑылку на Ñтраницу Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ 'ÐÐµÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñтраница' wiki проекта Sandbox
    • [[sandbox:]] выводит ÑÑылку на главную Ñтраницу wiki проекта Sandbox

    СÑылки на wiki окрашены в краÑный, еÑли Ñтраница ещё не Ñоздана, пример: ÐеÑущеÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ñтраница.

    ССылки на другие реÑурÑÑ‹:

    • Документы:
      • document#17 (ÑÑылка на документ Ñ id 17)
      • document:ПриветÑтвие (ÑÑылка на документ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ "ПриветÑтвие")
      • document:"Ðекоторый документ" (двойные кавычки иÑпользоютÑÑ Ð² Ñлучае, когда название документа Ñодержит пробелы)
      • sandbox:document:"ПриветÑтвие" (ÑÑылка на документ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ "ПриветÑтвие" в проекте "sandbox")
    • Этапы:
      • version#3 (ÑÑылка на Ñтап Ñ id 3)
      • version:1.0.0 (ÑÑылка на Ñтап Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ "1.0.0")
      • version:"1.0 beta 2" (двойные кавычки иÑпользоютÑÑ Ð² Ñлучае, когда название Ñтапа Ñодержит пробелы)
      • sandbox:version:1.0.0 (ÑÑылка на Ñтап "1.0.0" проекта "sandbox")
    • ВложениÑ:
      • attachment:file.zip (ÑÑылка на вложение текущего объекта Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ file.zip)
      • Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ объекта (еÑли вы проÑматриваете задачу, то возможно ÑÑылатьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ на Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñтой задачи)
    • ВерÑии:
      • r758 (ÑÑылка на верÑию)
      • commit:c6f4d0fd (ÑÑылка неа верÑию Ñ Ð½ÐµÑ†Ð¸Ñ„Ñ€Ð¾Ð²Ñ‹Ð¼ хешем)
      • svn1|r758 (ÑÑылка на верÑию Ñпецифичного хранилища, Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð² лежащих в неÑкольких хранилищах)
      • commit:hg|c6f4d0fd (ÑÑылка на верÑию Ñ Ð½ÐµÑ†Ð¸Ñ„Ñ€Ð¾Ð²Ñ‹Ð¼ хешем в Ñпецифичном хранилище)
      • sandbox:r758 (ÑÑылка на верÑию в другом проекте)
      • sandbox:commit:c6f4d0fd (ÑÑылка на верÑию Ñ Ð½ÐµÑ†Ð¸Ñ„Ñ€Ð¾Ð²Ñ‹Ð¼ хешем в другом проекте)
    • Файлы хранилища:
      • source:some/file (ÑÑылка на файл /some/file, раÑположенный в хранилище проекта)
      • source:some/file@52 (ÑÑылка на 52 ревизию файла)
      • source:some/file#L120 (ÑÑылка на 120 Ñтроку файла)
      • source:some/file@52#L120 (ÑÑылка на 120 Ñтроку в 52 ревизии файла)
      • source:"some file@52#L120" (иÑпользуйте кавычки, еÑли в ÑÑылке еÑть пробелы)
      • export:some/file (ÑÑылка на загрузку файла)
      • source:svn1|some/file (ÑÑылка на верÑию Ñпецифичного хранилища, Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð² лежащих в неÑкольких хранилищах)
      • sandbox:source:some/file (ÑÑылка на файл /some/file, раÑположенный в хранилище проекта "sandbox")
      • sandbox:export:some/file (ÑÑылка на загрузку файла)
    • Форумы:
      • forum#1 (ÑÑылка на форум Ñ id 1)
      • forum:Support (ÑÑылка на форум "Support")
      • forum:"Technical Support" (иÑпользуйте кавычки, еÑли в названии еÑть пробелы)
    • Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°:
      • message#1218 (ÑÑылка на Ñообщение Ñ id 1218)
    • Проекты:
      • project#3 (ÑÑылка на проект Ñ id 3)
      • project:someproject (ÑÑылка на проект "someproject")
      • project:"Some Project" (иÑпользуйте кавычки, еÑли в названии еÑть пробелы)
    • ÐовоÑти:
      • news#2 (ÑÑылка на новоÑть Ñ id 2)
      • news:Greetings (ÑÑылка на новоÑть "Greetings")
      • news:"First Release" (иÑпользуйте кавычки, еÑли в названии еÑть пробелы)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    ИÑключениÑ:

    • Ð’Ñ‹ можете отменить обработку ÑÑылок Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ воÑклицательного знака перед ÑÑылкой: !http://foo.bar

    Внешние ÑÑылки

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    выводитÑÑ: https://www.redmine.org,

    ЕÑли же вы хотите, чтобы отобразилÑÑ Ñ‚ÐµÐºÑÑ‚ вмеÑто адреÑа URL, вы можете иÑпольовать Ñтандартный ÑинтакÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑта:

    "Сайт Redmine":https://www.redmine.org
    

    выводитÑÑ: Сайт Redmine

    Форматирование текÑта

    Ð”Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… вещей, как заголовки, выделение, таблицы и ÑпиÑки, Redmine поддерживает ÑÐ¸Ð½Ñ‚Ð°ÐºÑ Textile. ОбратитеÑÑŒ за руководÑтвом к Ñтранице https://en.wikipedia.org/wiki/Textile_(markup_language) . ÐеÑколько примеров приведены ниже, Ðо Ñам текÑтовый процеÑÑор ÑпоÑобен на гораздо большее.

    Стиль шрифта

    * *выделенный*
    * _наклонный_
    * _*выделенный наклонный*_
    * +подчёркнутый+
    * -зачёркнутый-
    

    ВыводитÑÑ:

    • выделенный
    • наклонный
    • выделенный наклонный
    • подчёркнутый
    • зачёркнутый

    Ð’Ñтавка изображений

    • !url_изображениÑ! выводит изображение, раÑположенное по адреÑу url_Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ (ÑÐ¸Ð½Ñ‚Ð°ÐºÑ textile)
    • !>url_изображениÑ! выводит изображение, выровненное по правому краю
    • Прикреплённое к wiki-Ñтранице изображение можно отобразить в текÑте, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°: !вложенное_изображение.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Заголовки

    h1. Заголовок
    
    h2. Подзаголовок
    
    h3. Подзаголовок подзаголовка
    

    Redmine приÑваивает Ñкорь каждому заголовку, поÑтому вы можете легко ÑоÑлатьÑÑ Ð½Ð° любой, указав в текÑте "#Заголовок", "#Подзаголовок" и Ñ‚.д.

    Параграфы

    p>. выровненный по правому краю
    p=. выровненный по центру
    

    Это - выровненный по центру параграф.

    Цитаты

    Ðачните параграф Ñ bq.

    bq. Rails - Ñто полноценный, многоуровневый фреймворк Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð²ÐµÐ±-приложений, иÑпользующих базы данных,
        который оÑнован на архитектуре Модель-ПредÑтавление-Контроллер (Model-View-Controller, MVC).
    

    ВыводитÑÑ:

    Rails - Ñто полноценный, многоуровневый фреймворк Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ Ð²ÐµÐ±-приложений, иÑпользующих базы данных, который оÑнован на архитектуре Модель-ПредÑтавление-Контроллер (Model-View-Controller, MVC).

    Содержание

    {{toc}} => Ñодержание, выровненное по левому краю
    {{>toc}} => Ñодержание, выровненное по правому краю
    

    Horizontal Rule

    ---
    

    МакроÑÑ‹

    Ð’ Redmine ÑущеÑтвуют Ñледующие вÑтроенные макроÑÑ‹:

    hello_world

    Ðекоторый макроÑ.

    macro_list

    Выводит ÑпиÑок доÑтупных макроÑов Ñ Ð¾Ð¿Ð¸ÑаниÑми, еÑли они имеютÑÑ.

    child_pages

    Вывод ÑпиÑка дочерних Ñтраниц. Без аргументов выводитÑÑ ÑпиÑок дочерних Ñтраниц Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ wiki-Ñтраницы. Пример:

    {{child_pages}} -- можно иÑпользователь только на wiki-Ñтранице
    {{child_pages(depth=2)}} -- вывеÑти только 2 ÑƒÑ€Ð¾Ð²Ð½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ñти
    include

    Ð’Ñтавить wiki-Ñтраницу. Пример:

    {{include(Foo)}}

    или вÑтавить Ñраницу wiki конкретного проекта:

    {{include(projectname:Foo)}}
    collapse

    Ð’Ñтавить Ñкрываемый текÑÑ‚. Пример:

    {{collapse(Читать дальше...)
    Этот блок текÑта по умолчанию Ñкрыт.
    Он раÑÑкроетÑÑ, еÑли нажать на ÑÑылку.
    }}
    thumbnail

    Отображет кликабельный ÑÑкиз приложенной картинки. Пример:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=ЭÑкиз)}}

    ПодÑветка кода

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    Ð’Ñ‹ можете подÑветить код в любом меÑте, где поддерживаетÑÑ wiki-форматирование (название Ñзыка не завиÑит от региÑтра):

    <pre><code class="ruby">
      ПомеÑтите Ñвой код Ñюда.
    </code></pre>
    

    Пример:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/ru/wiki_syntax_textile.html.erb000066400000000000000000000152061500112024600302260ustar00rootroot00000000000000 Форматирование Wiki <%= stylesheet_link_tag "wiki_syntax.css" %>

    СинтакÑÐ¸Ñ Wiki ÐšÑ€Ð°Ñ‚ÐºÐ°Ñ Ð¡Ð¿Ñ€Ð°Ð²ÐºÐ°

    Стили Шрифтов (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Выделенный" }) %> *Выделенный* Выделенный
    <%= image_tag("jstoolbar/italic.svg", { alt: "Ðаклонный" }) %> _Ðаклонный_ Ðаклонный
    <%= image_tag("jstoolbar/underline.svg", { alt: "Подчёркнутый" }) %> +Подчёркнутый+ Подчёркнутый
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Зачёркнутый" }) %> -Зачёркнутый- Зачёркнутый
    ??Цитата?? Цитата
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Ð’Ñтавка Кода" }) %> @Ð’Ñтавка Кода@ Ð’Ñтавка Кода
    <pre>
     Ñтроки
     ÐºÐ¾Ð´Ð°
    </pre>
     Ñтроки
     кода
                
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    СпиÑки
    <%= image_tag("jstoolbar/list.svg", { alt: "ÐеÑортированный ÑпиÑок" }) %>* Элемент 1
    ** ПодÑлемент
    * Элемент 2
    • Элемент 1
      • ПодÑлемент
    • Элемент 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Сортированный ÑпиÑок" }) %># Элемент 1
    ## ПодÑлемент
    # Элемент 2
    1. Элемент 1
      1. ПодÑлемент
    2. Элемент 2
    Заголовки (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Заголовок 1" }) %> h1. Ðазвание 1

    Ðазвание 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Заголовок 2" }) %> h2. Ðазвание 2

    Ðазвание 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Заголовок 3" }) %> h3. Ðазвание 3

    Ðазвание 3

    СÑылки (" target="_blank">more)
    http://foo.bar http://foo.bar
    "Foo":http://foo.bar Foo
    СÑылки Redmine (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "СÑылка на Wiki Ñтраницу" }) %> [[Wiki Ñтраница]] Wiki Ñтраница
    Задача #12 Задача #12
    ##12Bug #12: The issue subject
    ФикÑÐ°Ñ†Ð¸Ñ r43 ФикÑÐ°Ñ†Ð¸Ñ r43
    commit:f30e13e43 f30e13e4
    source:some/file source:some/file
    Ð’Ñтавка изображений (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Изображение" }) %> !url_картинки!
    !вложенный_файл!
    Tables
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    Больше информации

    redmine-6.0.5/app/views/help/wiki_syntax/textile/ta-in/000077500000000000000000000000001500112024600230405ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/ta-in/wiki_syntax_detailed_textile.html.erb000066400000000000000000000664261500112024600324550ustar00rootroot00000000000000 RedmineWikiவடிவமைதà¯à®¤à®²à¯ <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    விகà¯à®•ி வடிவமைதà¯à®¤à®²à¯

    இணைபà¯à®ªà¯à®•ளà¯

    ரெடà¯à®®à¯ˆà®©à¯ இணைபà¯à®ªà¯à®•ளà¯

    Redmine இரà¯à®ªà¯à®ªà®¿à®±à¯à®•à¯à®®à¯ இடையிலà¯à®³à¯à®³ ஹைபà¯à®ªà®°à¯à®²à®¿à®™à¯à®•ிங௠அனà¯à®®à®¤à®¿à®•à¯à®•ிறத௠(சிகà¯à®•லà¯à®•ளà¯, மாறà¯à®±à®™à¯à®•ளà¯, விகà¯à®•ி பகà¯à®•à®™à¯à®•ளà¯...) எஙà¯à®•ிரà¯à®¨à¯à®¤à¯à®®à¯ விகà¯à®•ி வடிவமைதà¯à®¤à®²à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯.

    • ஒர௠சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯: #124 (displays #124, சிகà¯à®•ல௠மூடபà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ இணைபà¯à®ªà¯ அடிதà¯à®¤à®¿à®°à¯à®•à¯à®•à¯à®®à¯)
    • தடம௠பெயர௠மறà¯à®±à¯à®®à¯ பொரà¯à®³à¯ உளà¯à®³à®¿à®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • >சிகà¯à®•ல௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki links:

    • [[வழிகாடà¯à®Ÿà®¿]] 'கையேடà¯' பகà¯à®•தà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯: வழிகாடà¯à®Ÿà®¿
    • [[Guide#further-reading]] உஙà¯à®•ளை "மேலà¯à®®à¯ படிகà¯à®•" இணைபà¯à®ªà¯à®•à¯à®•௠அழைதà¯à®¤à¯à®šà¯ செலà¯à®²à¯à®®à¯ . தலைபà¯à®ªà¯à®•ள௠தானாக இணைபà¯à®ªà¯ˆ பெறà¯à®µà®¤à®¾à®²à¯ அவறà¯à®±à¯ˆà®•௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®²à®¾à®®à¯ : Guide
    • [[#further-reading]] தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பகà¯à®•தà¯à®¤à®¿à®©à¯ "மேலà¯à®®à¯ படிகà¯à®•" இணைபà¯à®ªà¯: #further-reading
    • [[வழிகாடà¯à®Ÿà®¿|பயனர௠கையேடà¯]] ஒரே பகà¯à®•தà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯, ஆனால௠வேற௠உரையà¯à®Ÿà®©à¯: பயனர௠கையேடà¯

    நீஙà¯à®•ள௠வேற௠திடà¯à®Ÿ விகà¯à®•ியின௠பகà¯à®•à®™à¯à®•ளà¯à®•à¯à®•à¯à®®à¯ இணைகà¯à®•லாமà¯:

    • [[sandbox:சில பகà¯à®•à®®à¯]] Sandbox விகà¯à®•ியின௠'Some page' பகà¯à®•தà¯à®¤à®¿à®©à¯ இணைபà¯à®ªà¯
    • [[sandbox:]] Sandbox விகà¯à®•ியின௠பிரதான பகà¯à®•தà¯à®¤à®¿à®©à¯ இணைபà¯à®ªà¯

    பகà¯à®•ம௠இனà¯à®©à¯à®®à¯ இலà¯à®²à¯ˆà®¯à¯†à®©à¯à®±à®¾à®²à¯ விகà¯à®•ி இணைபà¯à®ªà¯à®•ள௠சிவபà¯à®ªà¯ நிறதà¯à®¤à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯, eg: இலà¯à®²à®¾à®¤ பகà¯à®•à®®à¯.

    பிற ஆதாரஙà¯à®•ளà¯à®•à¯à®•ான இணைபà¯à®ªà¯à®•ளà¯:

    • ஆவணஙà¯à®•ளà¯:
      • document#17 (17 ஆம௠ஆவணதà¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • document:Greetings ("Greetings" தலைபà¯à®ªà¯à®Ÿà®©à¯ ஆவண இணைபà¯à®ªà¯)
      • document:"சில ஆவணமà¯" (ஆவண தலைபà¯à®ªà®¿à®²à¯ இடைவெளிகள௠இரà¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯)
      • sandbox:document:"Some document" ("sandbox" திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ "Some document" தலைபà¯à®ªà¯à®Ÿà®©à¯ ஆவண இணைபà¯à®ªà¯)
    • பதிபà¯à®ªà¯à®•ளà¯:
      • version#3 (3 ஆம௠பதிபà¯à®ªà®¿à®©à¯ இணைபà¯à®ªà¯)
      • version:1.0.0 (.0.0" பதிபà¯à®ªà®¿à®©à¯ இணைபà¯à®ªà¯)
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 ("sandbox" திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ "1.0.0" பதிபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯ )
    • இணைபà¯à®ªà¯à®•ளà¯:
      • attachment:file.zip (file.zip இணைபà¯à®ªà¯à®•à¯à®•ான இணைபà¯à®ªà¯ )
      • இபà¯à®ªà¯‹à®¤à¯ˆà®•à¯à®•à¯, தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பொரà¯à®³à®¿à®©à¯ இணைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ (நீஙà¯à®•ள௠ஒர௠சிகà¯à®•லில௠இரà¯à®¨à¯à®¤à®¾à®²à¯, இநà¯à®¤ சிகà¯à®•லின௠இணைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯)
    • மாறà¯à®±à®™à¯à®•ளà¯:
      • r758 (மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • commit:c6f4d0fd (எண௠அலà¯à®²à®¾à®¤ ஹாஷ௠கொணà¯à®Ÿ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • svn1|r758 (பல களஞà¯à®šà®¿à®¯à®™à¯à®•ளைக௠கொணà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯, ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • commit:hg|c6f4d0fd (ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ எண௠அலà¯à®²à®¾à®¤ ஹாஷà¯à®Ÿà®©à¯ ஒர௠மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:r758 (மறà¯à®±à¯Šà®°à¯ திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:commit:c6f4d0fd (மறà¯à®±à¯Šà®°à¯ திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ எண௠அலà¯à®²à®¾à®¤ ஹாஷà¯à®Ÿà®©à¯ ஒர௠மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
    • Repository files:
      • source:some/file (திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®²à¯ / சில / கோபà¯à®ªà®¿à®²à¯ அமைநà¯à®¤à¯à®³à¯à®³ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • source:some/file@52 (கோபà¯à®ªà®¿à®©à¯ திரà¯à®¤à¯à®¤à®®à¯ 52 உடன௠இணைபà¯à®ªà¯)
      • source:some/file#L120 (கோபà¯à®ªà®¿à®©à¯ 120 வத௠வரியà¯à®Ÿà®©à¯ இணைகà¯à®•வà¯à®®à¯)
      • source:some/file@52#L120 (கோபà¯à®ªà®¿à®©à¯ திரà¯à®¤à¯à®¤à®®à¯ 52 இன௠120 வத௠வரியின௠இணைபà¯à®ªà¯)
      • source:"some file@52#L120" (URL இடைவெளிகளைக௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
      • export:some/file (கோபà¯à®ªà¯ˆà®ªà¯ பதிவிறகà¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
      • source:svn1|some/file (பல களஞà¯à®šà®¿à®¯à®™à¯à®•ளைக௠கொணà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯, ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®©à¯ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • sandbox:source:some/file (திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®²à¯ / சில / கோபà¯à®ªà®¿à®²à¯ அமைநà¯à®¤à¯à®³à¯à®³ கோபà¯à®ªà®¿à®±à¯à®•ான இணைபà¯à®ªà¯ "sandbox")
      • sandbox:export:some/file (கோபà¯à®ªà¯ˆà®ªà¯ பதிவிறகà¯à®• கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • மனà¯à®±à®™à¯à®•ளà¯:
      • forum#1 (1 ஆம௠மனà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • forum:Support (ஆதரவ௠எனà¯à®± மனà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • forum:"Technical Support" (மனà¯à®±à®¤à¯à®¤à®¿à®©à¯ பெயரில௠இடைவெளிகள௠இரà¯à®¨à¯à®¤à®¾à®²à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • கரà¯à®¤à¯à®¤à¯à®•à¯à®•ளம௠செயà¯à®¤à®¿à®•ளà¯:
      • message#1218 (1218 ஆம௠செயà¯à®¤à®¿à®•à¯à®•ான இணைபà¯à®ªà¯)
    • திடà¯à®Ÿà®™à¯à®•ளà¯:
      • project#3 (3 ஆம௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯)
      • project:some-project (பெயர௠அலà¯à®²à®¤à¯ slug மூலம௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•ான இணைபà¯à®ªà¯ "சில திடà¯à®Ÿà®®à¯")
      • project:"Some Project" (இடைவெளிகளைக௠கொணà¯à®Ÿ திடà¯à®Ÿ பெயரà¯à®•à¯à®•௠இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • செயà¯à®¤à®¿:
      • news#2 (2 ஆம௠செயà¯à®¤à®¿à®¯à®¿à®©à¯ இணைபà¯à®ªà¯)
      • news:Greetings ("வாழà¯à®¤à¯à®¤à¯à®•à¯à®•ளà¯" செயà¯à®¤à®¿à®•à¯à®•ான இணைபà¯à®ªà¯)
      • news:"First Release" (செயà¯à®¤à®¿ பெயரில௠இடைவெளிகள௠இரà¯à®¨à¯à®¤à®¾à®²à¯ இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோளà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯)
    • பயனரà¯à®•ளà¯:
      • user#2 (2 ஆம௠பயனர௠இணைபà¯à®ªà¯))
      • user:jsmith (உளà¯à®¨à¯à®´à¯ˆà®µà¯ jsmith உடன௠பயனரà¯à®•à¯à®•ான இணைபà¯à®ªà¯)
      • @jsmith (உளà¯à®¨à¯à®´à¯ˆà®µà¯ jsmith உடன௠பயனரà¯à®•à¯à®•ான இணைபà¯à®ªà¯))

    தபà¯à®ªà®¿à®¤à¯à®¤à®²à¯:

    • ரெடà¯à®®à¯ˆà®©à¯ இணைபà¯à®ªà¯à®•ள௠ஆசà¯à®šà®°à®¿à®¯à®•à¯à®•à¯à®±à®¿à®¯à¯à®Ÿà®©à¯ அவறà¯à®±à¯ˆ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ˆà®¤à¯ தடà¯à®•à¯à®•லாமà¯: !

    வெளி இணைபà¯à®ªà¯à®•ளà¯

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரிகள௠தானாக கிளிக௠செயà¯à®¯à®•à¯à®•ூடிய இணைபà¯à®ªà¯à®•ளாக மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®®à¯:

    https://www.redmine.org, someone@foo.bar
    

    காடà¯à®šà®¿à®•ளà¯: https://www.redmine.org,

    URL கà¯à®•௠பதிலாக ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ உரையைக௠காடà¯à®Ÿ விரà¯à®®à¯à®ªà®¿à®©à®¾à®²à¯, நீஙà¯à®•ள௠நிலையான மாரà¯à®•௠டவà¯à®©à¯ தொடரியல௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯:

    "Redmine web site":https://www.redmine.org
    

    காடà¯à®šà®¿à®•ளà¯: ரெடà¯à®®à¯ˆà®©à¯ வலைதà¯à®¤à®³à®®à¯

    உரை வடிவமைதà¯à®¤à®²à¯

    தலைபà¯à®ªà¯à®šà¯ செயà¯à®¤à®¿à®•ளà¯, தடிதà¯à®¤, அடà¯à®Ÿà®µà®£à¯ˆà®•ளà¯, படà¯à®Ÿà®¿à®¯à®²à¯à®•ள௠போனà¯à®± விஷயஙà¯à®•ளà¯à®•à¯à®•à¯, ரெடà¯à®®à¯ˆà®©à¯ மாரà¯à®•௠டவà¯à®©à¯ தொடரியல௠ஆதரிகà¯à®•ிறதà¯. See https://en.wikipedia.org/wiki/Textile_(markup_language) இநà¯à®¤ à®…à®®à¯à®šà®™à¯à®•ளில௠à®à®¤à¯‡à®©à¯à®®à¯ ஒனà¯à®±à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ பறà¯à®±à®¿à®¯ தகவலà¯à®•à¯à®•à¯. ஒர௠சில மாதிரிகள௠கீழே சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©, ஆனால௠இயநà¯à®¤à®¿à®°à®®à¯ அதைவிட அதிக திறன௠கொணà¯à®Ÿà®¤à¯.

    எழà¯à®¤à¯à®¤à¯à®°à¯ வகை

    * *வலà¯à®µà®¾à®©*
    * _சாயà¯à®µà¯_
    * _*வலà¯à®µà®¾à®© சாயà¯à®µà¯*_
    * +அடிகà¯à®•ோடிடà¯à®Ÿà¯à®•௠காடà¯à®Ÿà¯+
    * -வேலைநிறà¯à®¤à¯à®¤à®®à¯ மூலமà¯-
    

    காடà¯à®šà®¿:

    • வலà¯à®µà®¾à®©
    • சாயà¯à®µà¯
    • தைரியமான சாயà¯à®µà¯
    • அடிகà¯à®•ோடிடà¯à®Ÿà¯à®•௠காடà¯à®Ÿà¯
    • வேலைநிறà¯à®¤à¯à®¤à®®à¯ மூலமà¯

    இனà¯à®²à¯ˆà®©à¯ படஙà¯à®•ளà¯

    • !image_url! displays an image located at image_url (ஜவà¯à®³à®¿ தொடரியலà¯)
    • !>image_url! வலத௠மிதகà¯à®•à¯à®®à¯ படமà¯
    • உஙà¯à®•ள௠விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®²à¯ ஒர௠படம௠இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¿à®°à¯à®¨à¯à®¤à®¾à®²à¯, அதன௠கோபà¯à®ªà¯ பெயரைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ இனà¯à®²à¯ˆà®©à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯: !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    தலைபà¯à®ªà¯à®•ளà¯

    h1. தலைபà¯à®ªà¯
    
    h2. தà¯à®£à¯ˆ தலைபà¯à®ªà¯
    
    h3. தà¯à®£à¯ˆ தலைபà¯à®ªà¯
    

    ரெடà¯à®®à¯ˆà®©à¯ அநà¯à®¤ ஒவà¯à®µà¯Šà®°à¯ தலைபà¯à®ªà®¿à®±à¯à®•à¯à®®à¯ ஒர௠நஙà¯à®•ூரதà¯à®¤à¯ˆ ஒதà¯à®•à¯à®•à¯à®•ிறதà¯, இதனால௠நீஙà¯à®•ள௠அவறà¯à®±à¯à®Ÿà®©à¯ இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ "#தலைபà¯à®ªà¯", "#தà¯à®£à¯ˆ தலைபà¯à®ªà¯" மறà¯à®±à¯à®®à¯ à®®à¯à®©à¯à®©à¯à®®à¯ பினà¯à®©à¯à®®à®¾à®•.

    பதà¯à®¤à®¿à®•ளà¯

    p>. வலத௠சீரமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯
    p=. மையமாக
    

    இத௠ஒர௠மையபà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ பதà¯à®¤à®¿.

    தொகà¯à®¤à®¿à®•ளà¯

    உடன௠பதà¯à®¤à®¿à®¯à¯ˆà®¤à¯ தொடஙà¯à®•à¯à®™à¯à®•ள௠bq.

    bq. ரெயிலà¯à®¸à¯ எனà¯à®ªà®¤à¯ மாடலà¯-வியூ-கணà¯à®Ÿà¯à®°à¯‹à®²à¯ à®®à¯à®±à¯ˆà®•à¯à®•௠à®à®±à¯à®ª தரவà¯à®¤à¯à®¤à®³ ஆதரவà¯à®Ÿà¯ˆà®¯ வலை பயனà¯à®ªà®¾à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•ான à®®à¯à®´à¯ அடà¯à®•à¯à®•௠கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¾à®•à¯à®®à¯.
    நேரலைகà¯à®•à¯à®šà¯ செலà¯à®², நீஙà¯à®•ள௠சேரà¯à®•à¯à®• வேணà¯à®Ÿà®¿à®¯à®¤à¯ தரவà¯à®¤à¯à®¤à®³à®®à¯ மறà¯à®±à¯à®®à¯ வலை சேவையகம௠மடà¯à®Ÿà¯à®®à¯‡.
    

    காடà¯à®šà®¿:

    ரெயிலà¯à®¸à¯ எனà¯à®ªà®¤à¯ மாடலà¯-வியூ-கணà¯à®Ÿà¯à®°à¯‹à®²à¯ à®®à¯à®±à¯ˆà®•à¯à®•௠à®à®±à¯à®ª தரவà¯à®¤à¯à®¤à®³ ஆதரவà¯à®Ÿà¯ˆà®¯ வலை பயனà¯à®ªà®¾à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•ான à®®à¯à®´à¯ அடà¯à®•à¯à®•௠கடà¯à®Ÿà®®à¯ˆà®ªà¯à®ªà®¾à®•à¯à®®à¯.
    நேரலைகà¯à®•à¯à®šà¯ செலà¯à®², நீஙà¯à®•ள௠சேரà¯à®•à¯à®• வேணà¯à®Ÿà®¿à®¯à®¤à¯ தரவà¯à®¤à¯à®¤à®³à®®à¯ மறà¯à®±à¯à®®à¯ வலை சேவையகம௠மடà¯à®Ÿà¯à®®à¯‡.

    உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ

    {{toc}} => இடத௠சீரமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ
    {{>toc}} => வலத௠சீரமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உளà¯à®³à®Ÿà®•à¯à®• அடà¯à®Ÿà®µà®£à¯ˆ
    

    Hகிடைமடà¯à®Ÿ விதி

    ---
    

    கà¯à®±à¯à®¨à®¿à®°à®²à¯à®•ளà¯

    ரெடà¯à®®à¯ˆà®©à®¿à®²à¯ பினà¯à®µà®°à¯à®®à¯ பிலà¯à®Ÿà®¿à®©à¯ கà¯à®±à¯à®¨à®¿à®°à®²à¯à®•ள௠உளà¯à®³à®©:

    hello_world

    மாதிரி கà¯à®±à¯à®¨à®¿à®°à®²à¯.

    macro_list

    விளகà¯à®•ம௠கிடைதà¯à®¤à®¾à®²à¯ உடà¯à®ªà®Ÿ, கிடைகà¯à®•கà¯à®•ூடிய அனைதà¯à®¤à¯ மேகà¯à®°à¯‹à®•à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¯à¯à®®à¯ காடà¯à®Ÿà¯à®•ிறதà¯.

    child_pages

    கீழ௠பகà¯à®•à®™à¯à®•ளின௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯. எநà¯à®¤ வாதமà¯à®®à¯ இலà¯à®²à®¾à®®à®²à¯, இத௠தறà¯à®ªà¯‹à®¤à¯ˆà®¯ விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®©à¯ கீழ௠பகà¯à®•à®™à¯à®•ளைக௠காடà¯à®Ÿà¯à®•ிறதà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{child_pages}} -- விகà¯à®•ி பகà¯à®•தà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ மடà¯à®Ÿà¯à®®à¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯
    {{child_pages(depth=2)}} -- 2 நிலைகள௠கூடà¯à®•ளை மடà¯à®Ÿà¯à®®à¯ காணà¯à®ªà®¿
    include

    விகà¯à®•ி பகà¯à®•தà¯à®¤à¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{include(Foo)}}

    அலà¯à®²à®¤à¯ ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ திடà¯à®Ÿ விகà¯à®•ியின௠பகà¯à®•தà¯à®¤à¯ˆ சேரà¯à®•à¯à®•:

    {{include(projectname:Foo)}}
    collapse

    சà¯à®°à¯à®™à¯à®•ிய தொகà¯à®¤à®¿à®¯à®¿à®©à¯ செரà¯à®•லà¯à®•ளà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{collapse(விபரஙà¯à®•ளை பாரà¯...)
    இத௠மà¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• சரிநà¯à®¤ உரையின௠தொகà¯à®¤à®¿.
    இணைபà¯à®ªà¯ˆà®•௠கிளிக௠செயà¯à®µà®¤à®©à¯ மூலம௠அதை விரிவாகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.
    }}
    thumbnail

    இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ படதà¯à®¤à®¿à®©à¯ கிளிக௠செயà¯à®¯à®•à¯à®•ூடிய சிறà¯à®ªà®Ÿà®¤à¯à®¤à¯ˆà®•௠காடà¯à®Ÿà¯à®•ிறதà¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=சிறà¯à®ªà®Ÿà®®à¯)}}
    issue

    நெகிழà¯à®µà®¾à®© உரையà¯à®Ÿà®©à¯ சிகà¯à®•லà¯à®•à¯à®•ான இணைபà¯à®ªà¯ˆà®šà¯ செரà¯à®•à¯à®®à¯. எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    கà¯à®±à®¿à®¯à¯€à®Ÿà¯ சிறபà¯à®ªà®®à¯à®šà®®à®¾à®•

    இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ சிறபà¯à®ªà®®à¯à®šà®¤à¯à®¤à¯ˆ நமà¯à®ªà®¿à®¯à¯à®³à¯à®³à®¤à¯ Rouge, a syntax highlighting library written in pure Ruby. It supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages, where the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    இநà¯à®¤ தொடரியல௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ விகà¯à®•ி வடிவமைபà¯à®ªà¯ˆ ஆதரிகà¯à®•à¯à®®à¯ எநà¯à®¤ இடதà¯à®¤à®¿à®²à¯à®®à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ à®®à¯à®©à¯à®©à®¿à®²à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯ (மொழி பெயர௠அலà¯à®²à®¤à¯ மாறà¯à®±à¯ வழகà¯à®•à¯-உணரà¯à®µà®±à¯à®±à®¤à¯ எனà¯à®ªà®¤à¯ˆ நினைவில௠கொளà¯à®•):

    <pre><code class="ruby">
      உஙà¯à®•ள௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ இஙà¯à®•ே வைகà¯à®•வà¯à®®à¯.
    </code></pre>
    

    எடà¯à®¤à¯à®¤à¯à®•à¯à®•ாடà¯à®Ÿà¯à®•ளà¯:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/ta-in/wiki_syntax_textile.html.erb000066400000000000000000000142201500112024600306030ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    விகà¯à®•ி தொடரியல௠விரைவ௠கà¯à®±à®¿à®ªà¯à®ªà¯

    எழà¯à®¤à¯à®¤à¯à®°à¯ பாஙà¯à®•à¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Strong" }) %>*வலà¯à®µà®¾à®©*வலà¯à®µà®¾à®©
    <%= image_tag("jstoolbar/italic.svg", { alt: "Italic" }) %>_சாயà¯à®µà¯_சாயà¯à®µà¯
    <%= image_tag("jstoolbar/underline.svg", { alt: "Underline" }) %>+அடிகà¯à®•ோடிடà¯à®Ÿà¯+அடிகà¯à®•ோடிடà¯à®Ÿà¯
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "Deleted" }) %>-நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯-நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯
    ??மேறà¯à®•ோளà¯??மேறà¯à®•ோளà¯
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Inline code" }) %>@இனà¯à®²à¯ˆà®©à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯@இனà¯à®²à¯ˆà®©à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯
    <pre>
     à®•ோடà¯à®•ளà¯
     à®•à¯à®±à®¿à®¯à¯€à®Ÿà¯
    </pre>
     கோடà¯à®•ளà¯
     கà¯à®±à®¿à®¯à¯€à®Ÿà¯
    
    சிறபà¯à®ªà®®à¯à®šà®®à®¾à®• கà¯à®±à®¿à®¯à¯€à®Ÿà¯ (" target="_blank">மேலà¯à®®à¯) | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    படà¯à®Ÿà®¿à®¯à®²à¯à®•ளà¯
    <%= image_tag("jstoolbar/list.svg", { alt: "Unordered list" }) %>* பொரà¯à®³à¯ 1
    ** தà¯à®£à¯ˆ
    * பொரà¯à®³à¯ 2
    • பொரà¯à®³à¯ 1
      • தà¯à®£à¯ˆ
    • பொரà¯à®³à¯ 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ordered list" }) %># பொரà¯à®³à¯ 1
    ## தà¯à®£à¯ˆ
    # பொரà¯à®³à¯ 2
    1. பொரà¯à®³à¯ 1
      1. தà¯à®£à¯ˆ
    2. பொரà¯à®³à¯ 2
    தலைபà¯à®ªà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Heading 1" }) %>h1. தலைபà¯à®ªà¯ 1

    தலைபà¯à®ªà¯ 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Heading 2" }) %>h2. தலைபà¯à®ªà¯ 2

    தலைபà¯à®ªà¯ 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Heading 3" }) %>h3. தலைபà¯à®ªà¯ 3

    தலைபà¯à®ªà¯ 3

    இணைபà¯à®ªà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine இணைபà¯à®ªà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "Link to a Wiki page" }) %>[[Wiki page]]Wiki page
    சிகà¯à®•லà¯à®•ள௠#12சிகà¯à®•லà¯à®•ள௠#12
    ##12Bug #12: The issue subject
    திரà¯à®¤à¯à®¤à®®à¯ r43திரà¯à®¤à¯à®¤à®®à¯ r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    இனà¯à®²à¯ˆà®©à¯ படஙà¯à®•ள௠(" target="_blank">மேலà¯à®®à¯)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!படமà¯_url!
    !இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ_படமà¯!
    அடà¯à®Ÿà®µà®£à¯ˆ
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    row spanBC
    col span

    மேலà¯à®®à¯ தகவலà¯

    redmine-6.0.5/app/views/help/wiki_syntax/textile/uk/000077500000000000000000000000001500112024600224475ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/uk/wiki_syntax_detailed_textile.html.erb000066400000000000000000000527361500112024600320630ustar00rootroot00000000000000 Redmine - Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÑ– Ñторінок <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÑ– Ñторінок

    Лінки(поÑиланнÑ)

    Redmine лінки(поÑиланнÑ)

    Redmine дозволÑÑ” гіперпоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¼Ñ–Ð¶ реÑурÑами (завданнÑми, змінами, вікі-Ñторінками ...) з будь-Ñкого міÑцÑ, де викориÑтовуєтьÑÑ Ð²Ñ–ÐºÑ–-форматуваннÑ.

    • ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° завданнÑ: #124 (відображає #124, поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð°ÐºÑ€ÐµÑленим, Ñкщо Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ðµ)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° примітку до завданнÑ: #124-6, or #124#note-6
    • Link to an issue note within the same issue: #note-6

    Вікі поÑиланнÑ:

    • [[Керівництво кориÑтувача]] відображає поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñторінку під назвою 'Керівництво кориÑтувача': Керівництво кориÑтувача
    • [[Guide#further-reading]] приведе Ð²Ð°Ñ Ð´Ð¾ ÑÐºÐ¾Ñ€Ñ "further-reading". Заголовкам автоматично призначаютьÑÑ ÑÐºÐ¾Ñ€Ñ Ñ‚Ð°Ðº, що Ви можете звернутиÑÑ Ð´Ð¾ них: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] відображає поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° ту ж Ñаму Ñторінку, але з іншим текÑтом: User manual

    Ви також можете поÑилатиÑÑ Ð½Ð° Ñторінки з вікі іншого проекту:

    • [[sandbox:some page]] відображає поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñторінку з назвою 'Some page' з вікі Sandbox
    • [[sandbox:]] відображає поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° головну Ñторінку вікі Sandbox

    Вікі поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶Ð°ÑŽÑ‚ÑŒÑÑ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ кольором, Ñкщо Ñторінка ще не Ñ–Ñнує: ÐеіÑнуюча Ñторінка.

    ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° інші реÑурÑи:

    • Документи:
      • document#17 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° документ з id 17)
      • document:ÐŸÑ€Ð¸Ð²Ñ–Ñ‚Ð°Ð½Ð½Ñ (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° документ з заголовком "ПривітаннÑ")
      • document:"ДеÑкий документ" (подвійні лапки можна викориÑтовувати, Ñкщо заголовок документа міÑтить пропуÑки)
      • sandbox:document:"ДеÑкий документ" (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° документ з заголовком "ДеÑкий документ" з іншого проекту "sandbox")
    • ВерÑÑ–Ñ—:
      • version#3 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° верÑÑ–ÑŽ з id 3)
      • version:1.0.0 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° верÑÑ–ÑŽ з назвою "1.0.0")
      • version:"1.0 beta 2"
      • sandbox:version:1.0.0 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° верÑÑ–ÑŽ "1.0.0" з проекту "sandbox")
    • Вкладенні файли:
      • attachment:file.zip (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вкладенний файл з ім'Ñм file.zip)
      • Ðа даний момент можливо поÑилатиÑÑŒ тільки на Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð· поточного об'єкту (Ñкщо ви працюєте з завданнÑм, ви можете поÑилатиÑÑŒ тільки на Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ завданнÑ)
    • Зміни:
      • r758 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни)
      • commit:c6f4d0fd (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни з нечиÑловим хешем)
      • svn1|r758 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни вказаного Ñховища(репозиторіÑ), Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð² з декількома Ñховищами(репозиторіÑми))
      • commit:hg|c6f4d0fd (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни з нечиÑловим хешем вказаного репозиторіÑ)
      • sandbox:r758 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни іншого проекту)
      • sandbox:commit:c6f4d0fd (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зміни з нечиÑловим іншого проекту)
    • Файли у Ñховищах(репозиторіÑÑ…):
      • source:some/file (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° файл за шлÑхом /some/file у Ñховищі проекту)
      • source:some/file@52 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° file з ревізії 52)
      • source:some/file#L120 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñ€Ñдок 120 з file)
      • source:some/file@52#L120 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ñ€Ñдок 120 з file ревізії 52)
      • source:"some file@52#L120" (викориÑтовуте подвійні лапки у випадках, коли URL міÑтить пропуÑки
      • export:some/file (примуÑове Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ file)
      • source:svn1|some/file (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° file вказаного Ñховища, Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð² в Ñких викориÑтовуєтьÑÑ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñховищь)
      • sandbox:source:some/file (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° файл за шлÑхом /some/file з Ñховища проекту "sandbox")
      • sandbox:export:some/file (примуÑове Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ file)
    • Форуми:
      • forum#1 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° форум з id 1
      • forum:Support (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° форум з назвою Support)
      • forum:"Технічна підтримка" (викориÑтовуте подвійні лапки у випадках, коли назва форуму міÑтить пропуÑки)
    • ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ñ Ð½Ð° форумах:
      • message#1218 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· id 1218)
    • Проекти:
      • project#3 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° проект з id 3)
      • project:some-project (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° проект з назвою або ідентифікатором "some-project")
      • project:"Some Project" (викориÑтовуте подвійні лапки у випадках, коли назва проекту міÑтить пропуÑки))
    • Ðовини:
      • news#2 (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° новину з id 2)
      • news:Greetings (поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° новину з заголовком "Greetings")
      • news:"First Release" (викориÑтовуте подвійні лапки у випадках, коли назва новини міÑтить пропуÑки)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ(escaping):

    • Ви можете запобігти, щоб Redmine перетворював поÑиланнÑ, поÑтавивши перед поÑиланнÑм знак оклику: !

    Зовнішні поÑиланнÑ

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    відображаєтьÑÑ Ñк: https://www.redmine.org,

    Якщо ви хочете, відобразити текÑÑ‚ заміÑть URL, ви можете викориÑтовувати дужки:

    "Redmine web site":https://www.redmine.org
    

    відображаєтьÑÑ Ñк: Redmine web site

    Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту

    Ð”Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… речей Ñк: заголовки, жирний текÑÑ‚, таблиці, ÑпиÑки, Redmine підтримує Textile ÑинтакÑиÑ. ПереглÑньте https://uk.wikipedia.org/wiki/Textile Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ñк цим кориÑтуватиÑÑŒ. Ðижче наводитьÑÑ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° прикладів, але можливоÑті Textile набагато більщі ніж у наведених прикладах.

    Стиль шрифту

    * *Жирний*
    * _КурÑив_
    * _*Жирний курÑив*_
    * +ПідкреÑлений+
    * -ЗакреÑлений-
    

    ВідображеннÑ:

    • Жирний
    • КурÑив
    • Жирний курÑив
    • ПідкреÑлений
    • ЗакреÑлений

    Вбудовані(inline) зображеннÑ

    • !image_url! виводить зображеннÑ, розташоване за адреÑою image_url (textile syntax)
    • !>image_url! Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ”Ñ‚ÑŒÑÑ Ð· права(right floating)
    • !attached_image.png! Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñке додане до вашої Ñторінки вікі, може бути відображено, з викориÑтаннÑм ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    Заголовки

    h1. Заголовок
    
    h2. Підзаголовок
    
    h3. Підзаголовок
    

    Redmine призначає Ñкір кожному з цих заголовків, таким чином, ви можете поÑилатиÑÑŒ на них з "#Заголовок", "#Підзаголовок" Ñ– так далі.

    Параграфи

    p>. right aligned
    p=. centered
    

    Це центрований абзац.

    Цитати

    Почніть параграф з bq.

    bq. Redmine — Ñерверний веб-додаток з відкритим кодом Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ð¼Ð¸ та відÑÑ‚ÐµÐ¶ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº. До ÑиÑтеми входить календар-планувальник та діаграми Ганта
    Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ…Ð¾Ð´Ñƒ робіт за проектом та Ñтроків виконаннÑ.
    

    ВідображаєтьÑÑ:

    Redmine — Ñерверний веб-додаток з відкритим кодом Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ð¼Ð¸ та відÑÑ‚ÐµÐ¶ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº. До ÑиÑтеми входить календар-планувальник та діаграми Ганта
    Ð´Ð»Ñ Ð²Ñ–Ð·ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñ…Ð¾Ð´Ñƒ робіт за проектом та Ñтроків виконаннÑ.

    Таблиці зміÑту Ñторінки

    {{toc}} => left aligned toc
    {{>toc}} => right aligned toc
    

    Горизонтальна лініÑ

    ---
    

    МакроÑи

    Redmine має наÑтупні вбудовані макроÑи:

    hello_world

    Приклад макроÑу.

    macro_list

    Відображає ÑпиÑок вÑÑ–Ñ… доÑтупних макроÑів, в тому чиÑлі опиÑ, Ñкщо такий Ñ”.

    child_pages

    Відображає ÑпиÑок дочірніх Ñторінок. Без аргументів, він відображає дочірні Ñторінки поточної Ñторінки вікі. Приклад:

    {{child_pages}} -- може бути викориÑтаний тільки на вікі-Ñторінці
    {{child_pages(depth=2)}} -- відображає тільки 2 Ñ€Ñ–Ð²Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½ÑŒ
    include

    Ð’Ñтавити вікі-Ñторінку. Приклад:

    {{include(Foo)}}

    або вÑтавити Ñторінку з конкретного проекту вікі:

    {{include(projectname:Foo)}}
    collapse

    Втавте блок текÑту, Ñкий має з'ÑвлÑтиÑÑŒ при натиÑканні на "Детальніше...". Приклад:

    {{collapse(Детальніше...)
    Це блок текÑту прихований по замовчуванню.
    Його можливо показати натиÑнувши на поÑиланнÑ
    }}
    thumbnail

    Відображає інтерактивні мініатюри вкладеного зображеннÑ. Приклади:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    ПідÑвітка ÑинтакÑиÑу коду

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    Ви можете виділити підÑвіткою код в будь-Ñкому міÑці, Ñке підтримує вікі-форматуваннÑ, викориÑтовуючи наÑтупний ÑинтакÑÐ¸Ñ (зверніть увагу, що назва мови або пÑевдонім не чутливі до регіÑтру):

    <pre><code class="ruby">
      Place your code here.
    </code></pre>
    

    Приклад:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/uk/wiki_syntax_textile.html.erb000066400000000000000000000136651500112024600302260ustar00rootroot00000000000000 Вікі ÑинтакÑÐ¸Ñ <%= stylesheet_link_tag "wiki_syntax.css" %>

    Вікі ÑинтакÑÐ¸Ñ ÑˆÐ²Ð¸Ð´ÐºÐ° підказка

    Cтилі шрифтів (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "Жирний" }) %>*Жирний*Жирний
    <%= image_tag("jstoolbar/italic.svg", { alt: "КурÑив" }) %>_КурÑив_КурÑив
    <%= image_tag("jstoolbar/underline.svg", { alt: "ПідкреÑлений" }) %>+ПідкреÑлений+ПідкреÑлений
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "ЗакреÑлений" }) %>-ЗакреÑлений-ЗакреÑлений
    ??ЦитуваннÑ??ЦитуваннÑ
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "Інлайн код" }) %>@Інлайн код@Інлайн код
    <pre>
     ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾
     Ð²Ñ–дформатований
     Ñ‚екÑÑ‚
    </pre>
     Попередньо
     відформатований
     текÑÑ‚
    
    иділений код (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Виділений код" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    СпиÑки
    <%= image_tag("jstoolbar/list.svg", { alt: "Ðенумерованний ÑпиÑок" }) %>* Пункт
    ** Підпункт
    * Пункт
    • Пункт
      • Підпункт
    • Пункт
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "Ðумерований ÑпиÑок" }) %># Пункт
    ## Підпункт
    # Пункт
    1. Пункт
      1. Підпункт
    2. Пункт
    Заголовоки (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "Заголовок 1" }) %>h1. Заголовок 1

    Заголовок 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "Заголовок 2" }) %>h2. Заголовок 2

    Заголовок 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "Заголовок 3" }) %>h3. Заголовок 3

    Заголовок 3

    Лінки(поÑиланнÑ) (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine поÑÐ¸Ð»Ð°Ð½Ð½Ñ (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вікі Ñторінку" }) %>[[Вікі Ñторінка]]Вікі Ñторінка
    Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ #12Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ #12
    ##12Bug #12: The issue subject
    Revision r43Revision r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    Вбудоване(inline) Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "ЗображеннÑ" }) %>!image_url!
    !attached_image!
    Таблиці
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. об. Ñ€Ñдки | B | C |
    |\2. об. колонки |
    ABC
    ABC
    об'єднані Ñ€ÑдкиBC
    об'єднані колонки

    Детальніша інформаціÑ

    redmine-6.0.5/app/views/help/wiki_syntax/textile/zh-tw/000077500000000000000000000000001500112024600231015ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/zh-tw/wiki_syntax_detailed_textile.html.erb000066400000000000000000000411451500112024600325050ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki æ ¼å¼è¨­å®š

    連çµ

    Redmine 連çµ

    在任何å¯ä»¥ä½¿ç”¨ Wiki æ ¼å¼è¨­å®šçš„地方, Redmine 都å…è¨±åœ¨è³‡æº ï¼ˆè­°é¡Œã€è®Šæ›´é›†ã€ Wiki é é¢...) 間建立超連çµã€‚

    • 連çµè‡³ä¸€å€‹è­°é¡Œï¼š #124 (è‹¥è©²è­°é¡Œå·²ç¶“çµæŸï¼Œå‰‡ä½¿ç”¨åˆªé™¤ç·šé¡¯ç¤ºé€£çµï¼š #124)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • 連çµè‡³ä¸€å€‹è­°é¡Œçš„筆記: #124-6, 或 #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki 連çµï¼š

    • [[Guide]] 顯示一個é é¢å稱為 'Guide' 的連çµï¼š Guide
    • [[Guide#further-reading]] 會顯示連çµè‡³ä¸€å€‹ "further-reading" çš„ HTML 錨定 (anchor) 。æ¯å€‹æ¨™é¡Œæ–‡å­—都會被自動指定一個 HTML 錨定,以便您å¯ä»¥ç”¨ä¾†é€£çµå®ƒå€‘: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] 使用ä¸åŒçš„æ–‡å­—來顯示一個é é¢å稱為 'Guide' 的連çµï¼š User manual

    您也å¯ä»¥é€£çµè‡³å…¶ä»–專案的 Wiki é é¢ï¼š

    • [[sandbox:some page]] 顯示一個 Sanbox wiki 中é é¢å稱為 'Some page' 的連çµ
    • [[sandbox:]] 顯示 Sandbox wiki 首é é é¢çš„連çµ

    ç•¶é é¢ä¸å­˜åœ¨çš„æ™‚候, Wiki é€£çµæœƒä»¥ç´…色的方å¼é¡¯ç¤ºï¼Œä¾‹å¦‚: Nonexistent page.

    連çµè‡³å…¶ä»–資æºï¼š

    • 文件:
      • document#17 (連çµåˆ°ç·¨è™Ÿç‚º 17 的文件)
      • document:Greetings (連çµè‡³æ–‡ä»¶æ¨™é¡Œç‚º "Greetings" 的文件)
      • document:"Some document" (文件標題包å«ç©ºç™½å­—元時å¯ä»¥ä½¿ç”¨é›™å¼•號來標示)
      • sandbox:document:"Some document" (連çµè‡³å¦å¤–一個 "sandbox" 專案中,文件標題為 "Some document" 的文件)
    • 版本:
      • version#3 (連çµè‡³ç·¨è™Ÿç‚º 3 的版本)
      • version:1.0.0 (連çµè‡³å稱為 "1.0.0" 的版本)
      • version:"1.0 beta 2" (版本å稱包å«ç©ºç™½å­—元時å¯ä»¥ä½¿ç”¨é›™å¼•號來標示)
      • sandbox:version:1.0.0 (連çµè‡³ "sandbox" 專案中,å稱為 "1.0.0" 的版本)
    • 附加檔案:
      • attachment:file.zip (連çµè‡³ç›®å‰ç‰©ä»¶ä¸­ï¼Œå稱為 file.zip 的附加檔案)
      • ç›®å‰åƒ…æä¾›åƒè€ƒåˆ°ç›®å‰ç‰©ä»¶ä¸­çš„附加檔案 (è‹¥æ‚¨æ­£ä½æ–¼ä¸€å€‹è­°é¡Œä¸­ï¼Œåƒ…å¯åƒè€ƒä½æ–¼æ­¤è­°é¡Œä¸­ä¹‹é™„加檔案)
    • 變更集:
      • r758 (連çµè‡³ä¸€å€‹è®Šæ›´é›†)
      • commit:c6f4d0fd (使用雜湊碼連çµè‡³ä¸€å€‹è®Šæ›´é›†)
      • svn1|r758 (連çµè‡³æŒ‡å®šå„²å­˜æ©Ÿåˆ¶ä¸­ä¹‹è®Šæ›´é›†ï¼Œç”¨æ–¼å°ˆæ¡ˆä½¿ç”¨å¤šå€‹å„²å­˜æ©Ÿåˆ¶æ™‚之情æ³)
      • commit:hg|c6f4d0fd (使用æŸç‰¹å®šå„²å­˜æ©Ÿåˆ¶ä¸­çš„雜湊碼連çµè‡³ä¸€å€‹è®Šæ›´é›†)
      • sandbox:r758 (連çµè‡³å…¶ä»–專案的變更集)
      • sandbox:commit:c6f4d0fd (使用其他專案的雜湊碼連çµè‡³ä¸€å€‹è®Šæ›´é›†)
    • 儲存機制中之檔案:
      • source:some/file (連çµè‡³å°ˆæ¡ˆå„²å­˜æ©Ÿåˆ¶ä¸­ï¼Œä½æ–¼ /some/file 的檔案)
      • source:some/file@52 (連çµè‡³è©²æª”案的 52 版次)
      • source:some/file#L120 (連çµè‡³è©²æª”案的第 120 行)
      • source:some/file@52#L120 (連çµè‡³è©²æª”案的 52 版次中之第 120 行)
      • source:"some file@52#L120" (ç•¶ URL 中包å«ç©ºç™½å­—元時,使用雙引號來標示)
      • export:some/file (強制下載該檔案)
      • source:svn1|some/file (連çµè‡³æŒ‡å®šå„²å­˜æ©Ÿåˆ¶ä¸­çš„該檔案,用於專案使用多個儲存機制時之情æ³)
      • sandbox:source:some/file (連çµè‡³ "sandbox" å°ˆæ¡ˆçš„å„²å­˜æ©Ÿåˆ¶ä¸­ï¼Œä½æ–¼ /some/file 的檔案)
      • sandbox:export:some/file (強迫下載該檔案)
    • 論壇:
      • forum#1 (連çµè‡³ç·¨è™Ÿç‚º 1 的論壇)
      • forum:Support (連çµè‡³å稱為 Support 的論壇)
      • forum:"Technical Support" (當論壇å稱中包å«ç©ºç™½å­—元時,使用雙引號來標示)
    • 論壇訊æ¯ï¼š
      • message#1218 (連çµè‡³ç·¨è™Ÿç‚º 1218 的訊æ¯)
    • 專案:
      • project#3 (連çµè‡³ç·¨è™Ÿç‚º 3 的專案)
      • project:someproject (連çµè‡³å稱為 "someproject" 的專案)
      • project:"some project" (當專案å稱中包å«ç©ºç™½å­—元時,使用雙引號來標示)
    • æ–°èžï¼š
      • news#2 (連çµè‡³ç·¨è™Ÿç‚º 2 的新èžé …ç›®)
      • news:Greetings (連çµè‡³å稱為 "Greetings" 的新èžé …ç›®)
      • news:"First Release" (ç•¶æ–°èžé …ç›®å稱中包å«ç©ºç™½å­—元時,使用雙引號來標示)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    逸出字元:

    • 您å¯ä»¥åœ¨æ–‡å­—çš„å‰é¢åŠ ä¸Šé©šå˜†è™Ÿ (!) 來é¿å…è©²æ–‡å­—è¢«å‰–æžæˆ Redmine 連çµ

    外部連çµ

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    會顯示æˆï¼š https://www.redmine.org,

    若您想è¦é¡¯ç¤ºæŒ‡å®šçš„æ–‡å­—而éžè©² URL ,您å¯ä»¥ä½¿ç”¨ä¸‹åˆ—標準的 textile 語法:

    "Redmine web site":https://www.redmine.org
    

    會顯示æˆï¼š Redmine web site

    文字格å¼è¨­å®š

    å°æ–¼è«¸å¦‚標題ã€ç²—é«”ã€è¡¨æ ¼ã€æ¸…單等項目, Redmine 支æ´ä½¿ç”¨ Textile 語法。å¯åƒè€ƒ https://en.wikipedia.org/wiki/Textile_(markup_language) 中關於使用這些格å¼åŒ–功能的說明資訊。 下é¢åŒ…å«äº†ä¸€äº›ä½¿ç”¨ç¯„例,但格å¼åŒ–引擎的處ç†èƒ½åŠ›é å¤šæ–¼é€™äº›ç°¡å–®çš„使用範例。

    字型樣å¼

    * *ç²—é«”*
    * _斜體_
    * _*粗斜體*_
    * +底線+
    * -刪除線-
    

    會顯示æˆï¼š

    • ç²—é«”
    • 斜體
    • 粗斜體
    • 底線
    • 刪除線

    內嵌圖åƒ

    • !image_url! é¡¯ç¤ºä¸€å€‹ä½æ–¼ image_url ä½å€çš„åœ–åƒ (textile 語法)
    • !>image_url! å³å´æµ®å‹•圖åƒ
    • 若您附加了一個圖åƒåˆ° Wiki é é¢ä¸­ï¼Œå¯ä»¥ä½¿ç”¨ä»–的檔案å稱來顯示æˆå…§åµŒåœ–åƒï¼š !attached_image.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    標題

    h1. 標題
    
    h2. 次標題
    
    h3. 次次標題
    

    Redmine 為æ¯ä¸€ç¨®æ¨™é¡ŒæŒ‡å®šä¸€å€‹ HTML 錨定 (anchor) ,因此您å¯ä½¿ç”¨ "#標題" 〠"#次標題" 等方å¼é€£çµè‡³é€™äº›æ¨™é¡Œã€‚

    段è½

    p>. é å³å°é½Š
    p=. 置中å°é½Š
    

    這是一個置中å°é½Šçš„æ®µè½ã€‚

    å€å¡Šå¼•è¿°

    使用 bq. 啟動一個å€å¡Šå¼•述的段è½ã€‚

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    顯示為:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    目錄

    {{toc}} => é å·¦å°é½Šç›®éŒ„
    {{>toc}} => é å³å°é½Šç›®éŒ„
    

    水平線

    ---
    

    巨集

    Redmine 內建下列巨集:

    hello_world

    範例巨集。

    macro_list

    顯示所有å¯ç”¨å·¨é›†çš„æ¸…單,若巨集有æä¾›èªªæ˜Žä¹Ÿæœƒä¸€ä½µé¡¯ç¤ºã€‚

    child_pages

    顯示å­é é¢çš„æ¸…å–®ã€‚è‹¥æœªæŒ‡å®šåƒæ•¸ï¼Œå®ƒå°‡æœƒé¡¯ç¤ºç›®å‰ Wiki é é¢çš„å­é é¢æ¸…單。範例:

    {{child_pages}} -- åƒ…å¯æ–¼æŸ Wiki é é¢ä¸­è¢«ä½¿ç”¨
    {{child_pages(depth=2)}} -- 僅顯示兩層巢狀層次
    include

    引入一個 wiki é é¢ã€‚範例:

    {{include(Foo)}}

    或用以引入æŸç‰¹å®šå°ˆæ¡ˆçš„ Wiki é é¢ï¼š

    {{include(projectname:Foo)}}
    collapse

    æ’入一個摺疊的文字å€å¡Šã€‚範例:

    {{collapse(View details...)
    This is a block of text that is collapsed by default.
    It can be expanded by clicking a link.
    }}
    thumbnail

    顯示å¯è¢«é»žæ“Šçš„附加圖åƒä¹‹ç¸®åœ–。範例:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    程å¼ç¢¼é†’ç›®æç¤º

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    您å¯è¼‰ä»»ä½•æ”¯æ´ Wiki æ ¼å¼è¨­å®šçš„地方,使用這個語法來醒目æç¤ºç¨‹å¼ç¢¼ (注æ„語言與其別åçš„å稱ä¸é ˆå€åˆ†å¤§å°å¯«):

    <pre><code class="ruby">
      將程å¼ç¢¼æ”¾åœ¨é€™è£¡ã€‚
    </code></pre>
    

    範例:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/zh-tw/wiki_syntax_textile.html.erb000066400000000000000000000123571500112024600306550ustar00rootroot00000000000000 Wiki æ ¼å¼è¨­å®š <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki 語法快速å°ç…§è¡¨

    å­—åž‹æ¨£å¼ (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "強調粗體" }) %>*強調粗體*強調粗體
    <%= image_tag("jstoolbar/italic.svg", { alt: "斜體" }) %>_斜體_斜體
    <%= image_tag("jstoolbar/underline.svg", { alt: "底線" }) %>+底線+底線
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "刪除線" }) %>-刪除線-刪除線
    ??引文??引文
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "內嵌程å¼ç¢¼" }) %>@內嵌程å¼ç¢¼@內嵌程å¼ç¢¼ (inline code)
    <pre>
     æ ¼å¼åŒ–
     çš„æ®µè½æ–‡å­—
    </pre>
     æ ¼å¼åŒ–
     çš„æ®µè½æ–‡å­—
    
    å白程å¼ç¢¼ (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "å白程å¼ç¢¼" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    清單
    <%= image_tag("jstoolbar/list.svg", { alt: "ä¸æŽ’åºæ¸…å–®" }) %>* 清單項目 1
    ** å­æ¸…單項目
    * 清單項目 2
    • 清單項目 1
      • å­æ¸…單項目
    • 清單項目 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "æŽ’åºæ¸…å–®" }) %># 清單項目 1
    ## Sub
    # 清單項目 2
    1. 清單項目 1
      1. Sub
    2. 清單項目 2
    標題 (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "標題 1" }) %>h1. 標題 1

    標題 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "標題 2" }) %>h2. 標題 2

    標題 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "標題 3" }) %>h3. 標題 3

    標題 3

    é€£çµ (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine é€£çµ (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "連çµè‡³ä¸€å€‹ Wiki é é¢" }) %>[[Wiki é é¢]]Wiki é é¢
    議題 #12議題 #12
    ##12Bug #12: The issue subject
    版次 r43版次 r43
    commit:f30e13e43f30e13e4
    source:some/filesource:some/file
    å…§åµŒåœ–åƒ (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "圖åƒ" }) %>!圖åƒ_url!
    !附加_圖åƒ!
    表格
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. è³‡æ–™åˆ—ç¯„åœ | B | C |
    |\2. è³‡æ–™è¡Œç¯„åœ |
    ABC
    ABC
    資料列範åœBC
    資料行範åœ

    更多資訊

    redmine-6.0.5/app/views/help/wiki_syntax/textile/zh/000077500000000000000000000000001500112024600224515ustar00rootroot00000000000000redmine-6.0.5/app/views/help/wiki_syntax/textile/zh/wiki_syntax_detailed_textile.html.erb000066400000000000000000000401571500112024600320570ustar00rootroot00000000000000 RedmineWikiFormatting <%= stylesheet_link_tag "wiki_syntax_detailed.css" %>

    Wiki 文本格å¼

    链接

    Redmine 链接

    在任何使用文本格å¼çš„地方,Redmine都å…许在资æºï¼ˆé—®é¢˜ã€å˜æ›´ã€wiki页é¢...)间建立超链接。

    • 链接至一个问题: #124 (显示 #124,若该问题已结æŸåˆ™ä¼šç”¨åˆ é™¤çº¿æ¥è¡¨ç¤º)
    • Link to an issue including tracker name and subject: ##124 (displays Bug #124: bulk edit doesn't change the category or fixed version properties)
    • 链接至一个问题的说明: #124-6, 或者 #124#note-6
    • Link to an issue note within the same issue: #note-6

    Wiki链接

    • [[Guide]] 显示一个页é¢å为'Guide'的链接: Guide
    • [[Guide#further-reading]] 链接到页é¢å†…çš„"further-reading"标签. æ¯ä¸ªæ ‡é¢˜éƒ½ä¼šè‡ªåŠ¨ç»‘å®šä¸€ä¸ªæ ‡ç­¾ï¼Œæ–¹ä¾¿æ‚¨è¿›è¡Œé“¾æŽ¥: Guide
    • [[#further-reading]] link to the anchor "further-reading" of the current page: #further-reading
    • [[Guide|User manual]] 使用ä¸åŒçš„æ–‡å­—æ¥æ˜¾ç¤ºä¸€ä¸ªé¡µé¢å称为'Guide'的链接: User manual

    您也å¯ä»¥é“¾æŽ¥åˆ°å…¶ä»–项目的Wiki页é¢ï¼ˆä½¿ç”¨é¡¹ç›®æ ‡è¯†ï¼‰ï¼š

    • [[sandbox:some page]] 显示Sandbox项目wiki页é¢çš„一个å为'Some page'的链接
    • [[sandbox:]] 显示Sandbox项目wiki首页的链接

    当页é¢ä¸å­˜åœ¨çš„æ—¶å€™ï¼ŒWikié“¾æŽ¥ä¼šä»¥çº¢è‰²æ¥æ˜¾ç¤ºï¼Œä¾‹å¦‚: Nonexistent page.

    链接至其他资æºï¼š

    • 文档:
      • document#17 (链接到id为17的文档)
      • document:Greetings (链接到标题为“Greetingâ€çš„æ–‡æ¡£)
      • document:"Some document" (文档标题包å«ç©ºæ ¼æ—¶ä½¿ç”¨åŒå¼•å·æ¥è¡¨ç¤º)
      • sandbox:document:"Some document" (链接至sandbox项目中标题为“Some documentâ€çš„æ–‡æ¡£)
    • 版本:
      • version#3 (链接至id为3的版本)
      • version:1.0.0 (链接到å称为“1.0.0â€çš„版本)
      • version:"1.0 beta 2"(版本å称包å«ç©ºæ ¼æ—¶ä½¿ç”¨åŒå¼•å·æ¥è¡¨ç¤º)
      • sandbox:version:1.0.0 (连接至sandbox项目中的“1.0.0â€ç‰ˆæœ¬)
    • 附件:
      • attachment:file.zip (链接至当å‰é¡µé¢ä¸‹å为file.zip的附件)
      • ç›®å‰ï¼Œåªæœ‰å½“å‰é¡µé¢ä¸‹çš„附件能够被引用(如果您在一个问题中,则仅å¯ä»¥å¼•用此问题下的附件)
    • å˜æ›´é›†ï¼š
      • r758 (é“¾æŽ¥è‡³ä¸€ä¸ªå˜æ›´é›†)
      • commit:c6f4d0fd (é“¾æŽ¥è‡³ä¸€ä¸ªéžæ•°å­—å“ˆå¸Œçš„å˜æ›´é›†)
      • svn1|r758 (é“¾æŽ¥è‡³æŒ‡å®šç‰ˆæœ¬åº“ä¸­çš„å˜æ›´é›†ï¼Œç”¨äºŽä½¿ç”¨å¤šä¸ªç‰ˆæœ¬åº“的项目)
      • commit:hg|c6f4d0fd (é“¾æŽ¥è‡³æŒ‡å®šç‰ˆæœ¬åº“ä¸­ï¼Œä½¿ç”¨éžæ•°å­—å“ˆå¸Œçš„å˜æ›´é›†ï¼Œæ­¤ä¾‹å­ä¸­æ˜¯"hg"ç‰ˆæœ¬åº“ä¸‹çš„å“ˆå¸Œå˜æ›´é›†)
      • sandbox:r758 (é“¾æŽ¥è‡³å…¶ä»–é¡¹ç›®çš„å˜æ›´é›†)
      • sandbox:commit:c6f4d0fd (é“¾æŽ¥è‡³å…¶ä»–é¡¹ç›®ä¸­ï¼Œä½¿ç”¨éžæ•°å­—å“ˆå¸Œçš„å˜æ›´é›†)
    • 版本库文件:
      • source:some/file (链接至项目版本库中ä½äºŽ/some/file的文件)
      • source:some/file@52 (链接至此文件的第52版)
      • source:some/file#L120 (链接至此文件的第120行)
      • source:some/file@52#L120 (链接至此文件的第52版的第120行)
      • source:"some file@52#L120" (当URL中包å«ç©ºæ ¼æ—¶ä½¿ç”¨åŒå¼•å·æ¥è¡¨ç¤º)
      • export:some/file (å¼ºåˆ¶ä¸‹è½½æ­¤æ–‡ä»¶ï¼Œè€Œä¸æ˜¯åœ¨é¡µé¢ä¸ŠæŸ¥çœ‹)
      • source:svn1|some/file (链接至指定版本库中的文件, 用于使用多个版本库的项目)
      • sandbox:source:some/file (链接至"sandbox"项目的版本库中ä½äºŽ/some/file的文件)
      • sandbox:export:some/file (强制下载"sandbox"项目的版本库中ä½äºŽ/some/fileçš„æ–‡ä»¶ï¼Œè€Œä¸æ˜¯åœ¨é¡µé¢ä¸ŠæŸ¥çœ‹)
    • 论å›ï¼š
      • forum#1 (链接至id为2的论å›)
      • forum:Support (链接至å称为"Support"的论å›)
      • forum:"Technical Support" (论å›å称包å«ç©ºæ ¼æ—¶ä½¿ç”¨åŒå¼•å·è¡¨ç¤º)
    • è®ºå›æ¶ˆæ¯ï¼š
      • message#1218 (链接至id为1218çš„è®ºå›æ¶ˆæ¯)
    • 项目:
      • project#3 (链接至id为3的项目)
      • project:someproject (链接至å称为"someproject"的项目)
      • project:"Some Project" (项目å称包å«ç©ºæ ¼æ—¶ï¼Œä½¿ç”¨åŒå¼•å·æ¥è¡¨ç¤º)
    • æ–°é—»:
      • news#2 (链接至id为1的新闻)
      • news:Greetings (链接至å称为"Greetings"的新闻)
      • news:"First Release" (æ–°é—»å称包å«ç©ºæ ¼æ—¶ï¼Œä½¿ç”¨åŒå¼•å·æ¥è¡¨ç¤º)
    • Users:
      • user#2 (link to user with id 2)
      • user:jsmith (Link to user with login jsmith)
      • @jsmith (Link to user with login jsmith)

    转义字符:

    • 您å¯ä»¥åœ¨æ–‡æœ¬çš„å‰é¢åŠ ä¸Šæ„Ÿå¹å·(!)æ¥é¿å…è¯¥æ–‡æœ¬è¢«è§£æžæˆRedmine链接

    外部链接

    URLs (starting with: www, http, https, ftp, ftps, sftp and sftps) and email addresses are automatically turned into clickable links:

    https://www.redmine.org, someone@foo.bar
    

    显示为: https://www.redmine.org,

    å¦‚æžœæ‚¨æƒ³è¦æ˜¾ç¤ºæŒ‡å®šçš„æ–‡æœ¬è€Œä¸æ˜¯é“¾æŽ¥,您å¯ä»¥é€šè¿‡ä¸‹åˆ—标准的 textile 语法:

    "Redmine 官网":https://www.redmine.org
    

    显示为: Redmine 官网

    字体格å¼

    å¯¹äºŽåƒæ˜¯æ ‡é¢˜ã€ç²—体ã€è¡¨æ ¼ã€åˆ—表等文字格å¼ï¼Œ Redmine 支æŒä½¿ç”¨ https://en.wikipedia.org/wiki/Textile_(markup_language) 查找关于使用这些特性的信æ¯ã€‚下é¢å°†å±•示其中的一些常用的语法。

    字体风格

    * *粗体*
    * _斜体_
    * _*粗体 斜体*_
    * +下划线+
    * -中划线-
    

    显示为:

    • 粗体
    • 斜体
    • 粗体 斜体
    • 下划线
    • 中划线

    内嵌图片

    • !image_url! displays an image located at image_url (textile syntax)
    • !>image_url! right floating image
    • ä½ å¯ä»¥ä¸Šä¼ å›¾ç‰‡é™„件到 wiki 页é¢ï¼Œç„¶åŽä½¿ç”¨å®ƒçš„æ–‡ä»¶å作为路径: !已上传的图片.png!
    • Images in your computer's clipboard can be pasted directly using Ctrl-v or Command-v (note that Internet Explorer is not supported).
    • Image files can be dragged onto the text area in order to be uploaded and embedded.

    标题

    h1. 一级标题
    
    h2. 二级标题
    
    h3. 三级标题
    

    ä½ å¯ä»¥ä½¿ç”¨â€œ#一级标题â€ã€â€œ#二级标题â€ç­‰ç­‰æ¥é“¾æŽ¥åˆ°è¿™äº›æ ‡é¢˜

    段è½

    p>. å‘å³å¯¹é½
    p=. 居中
    

    这是一个居中对é½çš„æ®µè½

    引用文字

    在段è½å‰åŠ ä¸Š bq.

    bq. Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.
    

    显示为:

    Rails is a full-stack framework for developing database-backed web applications according to the Model-View-Control pattern.
    To go live, all you need to add is a database and a web server.

    目录

    {{toc}} => é å·¦å¯¹é½ç›®å½•
    {{>toc}} => é å³å¯¹é½ç›®å½•
    

    水平线

    ---
    

    å®

    Redmine内建了以下å®:

    hello_world

    å®ç¤ºä¾‹.

    macro_list

    显示所有å¯ç”¨çš„å®åˆ—è¡¨ï¼Œå¦‚æžœè¯¥å®æœ‰æä¾›è¯´æ˜Žä¹Ÿä¼šä¸€å¹¶æ˜¾ç¤ºã€‚

    child_pages

    显示一个å­é¡µé¢åˆ—表。默认显示当å‰Wiki页é¢çš„æ‰€æœ‰å­é¡µé¢ã€‚ 示例:

    {{child_pages}} -- åªèƒ½åœ¨Wiki页é¢è°ƒç”¨
    {{child_pages(depth=2)}} -- 显示两级å­é¡µé¢
    include

    引用一个Wiki页é¢ã€‚示例:

    {{include(Foo)}}

    或者引用一个指定项目的Wiki页é¢ï¼š

    {{include(projectname:Foo)}}
    collapse

    æ’å…¥ä¸€ä¸ªæŠ˜å æ–‡æœ¬å—。示例:

    {{collapse(View details...)
    这是一个默认折å çš„æ–‡æœ¬å—。
    点击链接åŽå°†ä¼šå±•开此文本å—.
    }}
    thumbnail

    显示一个图åƒé™„ä»¶çš„å¯ç‚¹å‡»ç¼©ç•¥å›¾ã€‚示例:

    {{thumbnail(image.png)}}
    {{thumbnail(image.png, size=300, title=Thumbnail)}}
    issue

    Inserts a link to an issue with flexible text. Examples:

    {{issue(123)}}                              -- Issue #123: Enhance macro capabilities
    {{issue(123, project=true)}}                -- Andromeda - Issue #123:Enhance macro capabilities
    {{issue(123, tracker=false)}}               -- #123: Enhance macro capabilities
    {{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123

    代ç é«˜äº®

    Default code highlighting relies on Rouge, a pure Ruby code highlighter. Rouge supports many commonly used languages such as c, cpp (c++), csharp (c#, cs), css, diff (patch, udiff), go (golang), groovy, html, java, javascript (js), kotlin, objective_c (objc), perl (pl), php, python (py), r, ruby (rb), sass, scala, shell (bash, zsh, ksh, sh), sql, swift, xml and yaml (yml) languages - the names inside parentheses are aliases. Please refer to the list of languages supported by Redmine code highlighter.

    You can highlight code at any place that supports wiki formatting using this syntax (note that the language name or alias is case-insensitive):

    <pre><code class="ruby">
      这里写 Ruby 代ç 
    </code></pre>
    

    示例:

    # The Greeter class
    class Greeter
      def initialize(name)
        @name = name.capitalize
      end
    
      def salute
        puts "Hello #{@name}!"
      end
    end
    
    redmine-6.0.5/app/views/help/wiki_syntax/textile/zh/wiki_syntax_textile.html.erb000066400000000000000000000122431500112024600302170ustar00rootroot00000000000000 Wiki formatting <%= stylesheet_link_tag "wiki_syntax.css" %>

    Wiki 语法快速å‚考

    字体风格 (" target="_blank">more)
    <%= image_tag("jstoolbar/bold.svg", { alt: "粗体" }) %>*粗体*粗体
    <%= image_tag("jstoolbar/italic.svg", { alt: "斜体" }) %>_Italic_斜体
    <%= image_tag("jstoolbar/underline.svg", { alt: "下划线" }) %>+下划线+下划线
    <%= image_tag("jstoolbar/strikethrough.svg", { alt: "删除线" }) %>-删除线-删除线
    ??引用??引用
    <%= image_tag("jstoolbar/letter-c.svg", { alt: "内嵌程åºä»£ç " }) %>@内嵌程åºä»£ç @内嵌程åºä»£ç 
    <pre>
     æ ¼å¼åŒ–
     çš„æ®µè½
    </pre>
     æ ¼å¼åŒ–
     的段è½
    
    Highlighted code (" target="_blank">more | supported languages)
    <%= image_tag("jstoolbar/code.svg", { alt: "Highlighted code" }) %><pre><code class="ruby">
    3.times do
      puts 'Hello'
    end
    </code></pre>
    3.times do
      puts 'Hello'
    end
    
    列表
    <%= image_tag("jstoolbar/list.svg", { alt: "䏿ޒåºåˆ—表" }) %>* 列表项 1
    ** Sub
    * 列表项 2
    • 列表项 1
      • å­é¡¹
    • 列表项 2
    <%= image_tag("jstoolbar/list-numbers.svg", { alt: "排åºåˆ—表" }) %># 列表项 1
    ## Sub
    # 列表项 2
    1. 列表项 1
      1. å­é¡¹
    2. 列表项 2
    标题 (" target="_blank">more)
    <%= image_tag("jstoolbar/h1.svg", { alt: "标题 1" }) %>h1. 标题 1

    标题 1

    <%= image_tag("jstoolbar/h2.svg", { alt: "标题 2" }) %>h2. 标题 2

    标题 2

    <%= image_tag("jstoolbar/h3.svg", { alt: "标题 3" }) %>h3. 标题 3

    标题 3

    链接 (" target="_blank">more)
    http://foo.barhttp://foo.bar
    "Foo":http://foo.barFoo
    Redmine 链接 (" target="_blank">more)
    <%= image_tag("jstoolbar/wiki_link.svg", { alt: "链接到一个Wiki 页é¢" }) %>[[Wiki 页é¢]]Wiki 页é¢
    问题 #12问题 #12
    ##12Bug #12: The issue subject
    修订 r43修订 r43
    commit:f30e13e43æäº¤: f30e13e4
    source:some/file代ç ï¼šsource:some/file
    内嵌图片 (" target="_blank">more)
    <%= image_tag("jstoolbar/image.svg", { alt: "Image" }) %>!image_url!
    !attached_image!
    表格
    |_. A |_. B |_. C |
    | A | B | C |
    |/2. row span | B | C |
    |\2. col span |
    ABC
    ABC
    行åˆå¹¶BC
    列åˆå¹¶

    更多帮助信æ¯

    redmine-6.0.5/app/views/imports/000077500000000000000000000000001500112024600165465ustar00rootroot00000000000000redmine-6.0.5/app/views/imports/_issues_fields_mapping.html.erb000066400000000000000000000057301500112024600247230ustar00rootroot00000000000000

    <%= select_tag 'import_settings[mapping][project_id]', options_for_select(project_tree_options_for_select(@import.allowed_target_projects, :selected => @import.project)), :id => 'import_mapping_project_id' %>

    <%= mapping_select_tag @import, 'tracker', :required => true, :values => @import.allowed_target_trackers.sorted.map {|t| [t.name, t.id]} %>

    <%= mapping_select_tag @import, 'status' %>

    <%= mapping_select_tag @import, 'subject', :required => true %>

    <%= mapping_select_tag @import, 'description' %>

    <%= mapping_select_tag @import, 'priority' %>

    <%= mapping_select_tag @import, 'category' %> <% if User.current.allowed_to?(:manage_categories, @import.project) %> <% end %>

    <%= mapping_select_tag @import, 'assigned_to' %>

    <%= mapping_select_tag @import, 'fixed_version' %> <% if User.current.allowed_to?(:manage_versions, @import.project) %> <% end %>

    <%= mapping_select_tag @import, 'is_private' %>

    <%= mapping_select_tag @import, 'start_date' %>

    <%= mapping_select_tag @import, 'due_date' %>

    <%= mapping_select_tag @import, 'estimated_hours' %>

    <%= mapping_select_tag @import, 'done_ratio' %>

    <% @custom_fields.each do |field| %>

    <%= mapping_select_tag @import, "cf_#{field.id}" %>

    <% end %>
    redmine-6.0.5/app/views/imports/_issues_mapping.html.erb000066400000000000000000000015051500112024600233710ustar00rootroot00000000000000
    <%= l(:label_fields_mapping) %>
    <%= render :partial => 'issues_fields_mapping' %>
    <%= javascript_tag do %> $('#fields-mapping').on('change', '#import_mapping_project_id, #import_mapping_tracker', function(){ $.ajax({ url: '<%= import_mapping_path(@import, :format => 'js') %>', type: 'post', data: $('#import-form').serialize() }); }); <% end %> redmine-6.0.5/app/views/imports/_issues_mapping.js.erb000066400000000000000000000001431500112024600230360ustar00rootroot00000000000000$('#fields-mapping').html('<%= escape_javascript(render :partial => 'issues_fields_mapping') %>'); redmine-6.0.5/app/views/imports/_issues_relations_mapping.html.erb000066400000000000000000000037651500112024600254630ustar00rootroot00000000000000

    <%= mapping_select_tag @import, 'unique_id' %>

    <%= mapping_select_tag @import, 'parent_issue_id' %>

    <%= mapping_select_tag @import, 'relation_duplicates' %>

    <%= mapping_select_tag @import, 'relation_duplicated' %>

    <%= mapping_select_tag @import, 'relation_blocks' %>

    <%= mapping_select_tag @import, 'relation_blocked' %>

    <%= mapping_select_tag @import, 'relation_relates' %>

    <%= mapping_select_tag @import, 'relation_precedes' %>

    <%= mapping_select_tag @import, 'relation_follows' %>

    <%= mapping_select_tag @import, 'relation_copied_to' %>

    <%= mapping_select_tag @import, 'relation_copied_from' %>

    redmine-6.0.5/app/views/imports/_issues_saved_objects.html.erb000066400000000000000000000004101500112024600245430ustar00rootroot00000000000000
      <% saved_objects.each do |issue| %>
    • <%= link_to_issue issue %>
    • <% end %>

    <%= link_to l(:label_issue_view_all), issues_path(:set_filter => 1, :status_id => '*', :issue_id => saved_objects.map(&:id).join(',')) %>

    redmine-6.0.5/app/views/imports/_time_entries_fields_mapping.html.erb000066400000000000000000000034731500112024600261010ustar00rootroot00000000000000

    <%= select_tag 'import_settings[mapping][project_id]', options_for_select(project_tree_options_for_select(@import.allowed_target_projects, :selected => @import.project)), :id => 'import_mapping_project_id' %>

    <%= mapping_select_tag @import, 'activity', :required => true, :values => @import.allowed_target_activities.sorted.map {|t| [t.name, t.id]} %>

    <% if User.current.allowed_to?(:log_time_for_other_users, @import.project) %>

    <%= mapping_select_tag @import, 'user', :required => true, :values => @import.allowed_target_users.map {|u| [u.name, u.id]}, :default_value => "value:#{User.current.id}" %>

    <% end %>

    <%= mapping_select_tag @import, 'issue_id' %>

    <%= mapping_select_tag @import, 'spent_on', :required => true %>

    <%= mapping_select_tag @import, 'hours', :required => true %>

    <%= mapping_select_tag @import, 'comments' %>

    <% @custom_fields.each do |field| %>

    <%= mapping_select_tag @import, "cf_#{field.id}", :required => field.is_required? %>

    <% end %>
    redmine-6.0.5/app/views/imports/_time_entries_mapping.html.erb000066400000000000000000000007601500112024600245470ustar00rootroot00000000000000
    <%= l(:label_fields_mapping) %>
    <%= render :partial => 'time_entries_fields_mapping' %>
    <%= javascript_tag do %> $(document).ready(function() { $('#fields-mapping').on('change', '#import_mapping_project_id', function(){ $.ajax({ url: '<%= import_mapping_path(@import, :format => 'js') %>', type: 'post', data: $('#import-form').serialize() }); }); }); <% end %> redmine-6.0.5/app/views/imports/_time_entries_mapping.js.erb000066400000000000000000000001511500112024600242110ustar00rootroot00000000000000$('#fields-mapping').html('<%= escape_javascript(render :partial => 'time_entries_fields_mapping') %>'); redmine-6.0.5/app/views/imports/_time_entries_saved_objects.html.erb000066400000000000000000000015501500112024600257250ustar00rootroot00000000000000 <% saved_objects.each do |time_entry| %> <% end %>
    <%= t(:field_project) %> <%= t(:field_user) %> <%= t(:field_activity) %> <%= t(:field_issue) %> <%= t(:field_spent_on) %> <%= t(:field_hours) %> <%= t(:field_comments) %>
    <%= link_to_project(time_entry.project, :jump => 'time_entries') if time_entry.project %> <%= link_to_user time_entry.user %> <%= time_entry.activity.name if time_entry.activity %> <%= link_to_issue time_entry.issue if time_entry.issue %> <%= format_date(time_entry.spent_on) %> <%= l_hours_short(time_entry.hours) %> <%= time_entry.comments %>
    redmine-6.0.5/app/views/imports/_users_fields_mapping.html.erb000066400000000000000000000034141500112024600245460ustar00rootroot00000000000000

    <%= mapping_select_tag @import, 'login', :required => true %>

    <%= mapping_select_tag @import, 'firstname', :required => true %>

    <%= mapping_select_tag @import, 'lastname', :required => true %>

    <%= mapping_select_tag @import, 'mail' %>

    <%= mapping_select_tag @import, 'language' %>

    <%= mapping_select_tag @import, 'admin' %>

    <%= mapping_select_tag @import, 'auth_source' %>

    <%= mapping_select_tag @import, 'password' %>

    <%= mapping_select_tag @import, 'must_change_passwd' %>

    <%= mapping_select_tag @import, 'status' %>

    <% @custom_fields.each do |field| %>

    <%= mapping_select_tag @import, "cf_#{field.id}", :required => field.is_required? %>

    <% end %>
    redmine-6.0.5/app/views/imports/_users_mapping.html.erb000066400000000000000000000002701500112024600232150ustar00rootroot00000000000000
    <%= l(:label_fields_mapping) %>
    <%= render :partial => 'users_fields_mapping' %>
    redmine-6.0.5/app/views/imports/_users_mapping.js.erb000066400000000000000000000001421500112024600226630ustar00rootroot00000000000000$('#fields-mapping').html('<%= escape_javascript(render :partial => 'users_fields_mapping') %>'); redmine-6.0.5/app/views/imports/_users_saved_objects.html.erb000066400000000000000000000013031500112024600243730ustar00rootroot00000000000000 <% saved_objects.each do |user| %> <% end %>
    <%= t(:field_login) %> <%= t(:field_firstname) %> <%= t(:field_lastname) %> <%= t(:field_mail) %> <%= t(:field_admin) %> <%= t(:field_status) %>
    <%= avatar(user, :size => "14") %><%= link_to user.login, edit_user_path(user) %> <%= user.firstname %> <%= user.lastname %> <%= mail_to(user.mail) %> <%= checked_image user.admin? %> <%= l(("status_#{User::LABEL_BY_STATUS[user.status]}")) %>
    redmine-6.0.5/app/views/imports/mapping.html.erb000066400000000000000000000016621500112024600216430ustar00rootroot00000000000000

    <%= import_title %>

    <%= form_tag(import_mapping_path(@import), :id => "import-form") do %> <%= render :partial => "#{import_partial_prefix}_mapping" %>
    <%= l(:label_file_content_preview) %>
    <% @import.first_rows.each do |row| %> <%= row.map {|c| content_tag 'td', truncate(c.to_s, :length => 50) }.join("").html_safe %> <% end %>

    <%= button_tag("\xc2\xab " + l(:label_previous), :name => 'previous') %> <%= submit_tag l(:button_import) %>

    <% end %> <%= javascript_tag do %> $(document).ready(function() { $('#import-form').submit(function(){ $('#import-details').show().addClass('ajax-loading'); $('#import-progress').progressbar({value: 0, max: <%= @import.total_items || 0 %>}); }); }); <% end %> redmine-6.0.5/app/views/imports/mapping.js.erb000066400000000000000000000000751500112024600213100ustar00rootroot00000000000000<%= render :partial => "#{import_partial_prefix}_mapping" %> redmine-6.0.5/app/views/imports/new.html.erb000066400000000000000000000006751500112024600210040ustar00rootroot00000000000000

    <%= import_title %>

    <%= form_tag(imports_path, :multipart => true) do %> <%= hidden_field_tag 'type', @import.type %> <%= hidden_field_tag 'project_id', params[:project_id] %>
    <%= l(:label_select_file_to_import) %> (CSV)

    <%= file_field_tag 'file' %>

    <%= submit_tag l(:label_next).html_safe + " »".html_safe, :name => nil %>

    <% end %> redmine-6.0.5/app/views/imports/run.html.erb000066400000000000000000000007221500112024600210100ustar00rootroot00000000000000

    <%= import_title %>

    0 / <%= @import.total_items.to_i %>
    <%= javascript_tag do %> $(document).ready(function() { $('#import-details').addClass('ajax-loading'); $('#import-progress').progressbar({value: 0, max: <%= @import.total_items.to_i %>}); $.ajax({ url: '<%= import_run_path(@import, :format => 'js') %>', type: 'post' }); }); <% end %> redmine-6.0.5/app/views/imports/run.js.erb000066400000000000000000000005231500112024600204570ustar00rootroot00000000000000$('#import-progress').progressbar({value: <%= @current.to_i %>}); $('#progress-label').text("<%= @current.to_i %> / <%= @import.total_items.to_i %>"); <% if @import.finished? %> window.location.href='<%= import_path(@import) %>'; <% else %> $.ajax({ url: '<%= import_run_path(@import, :format => 'js') %>', type: 'post' }); <% end %> redmine-6.0.5/app/views/imports/settings.html.erb000066400000000000000000000031211500112024600220400ustar00rootroot00000000000000

    <%= import_title %>

    <%= form_tag(import_settings_path(@import), :id => "import-form") do %>
    <%= l(:label_options) %>

    <%= select_tag 'import_settings[separator]', options_for_select([[l(:label_comma_char), ','], [l(:label_semi_colon_char), ';']], @import.settings['separator']) %>

    <%= select_tag 'import_settings[wrapper]', options_for_select([[l(:label_quote_char), "'"], [l(:label_double_quote_char), '"']], @import.settings['wrapper']) %>

    <%= select_tag 'import_settings[encoding]', options_for_select(Setting::ENCODINGS, @import.settings['encoding']) %>

    <%= select_tag 'import_settings[date_format]', options_for_select(date_format_options, @import.settings['date_format']) %>


    <%= hidden_field_tag 'import_settings[notifications]', '0', :id => nil %> <%= check_box_tag 'import_settings[notifications]', '1', "#{@import.settings['notifications']}" == '1' %>

    <%= submit_tag l(:label_next).html_safe + " »".html_safe, :name => nil %>

    <% end %> redmine-6.0.5/app/views/imports/show.html.erb000066400000000000000000000014561500112024600211710ustar00rootroot00000000000000

    <%= import_title %>

    <% if @import.saved_items.count > 0 %>

    <%= l(:notice_import_finished, :count => @import.saved_items.count) %>:

    <%= render :partial => "#{import_partial_prefix}_saved_objects", :locals => { saved_objects: @import.saved_objects } %> <% end %> <% if @import.unsaved_items.count > 0 %>

    <%= l(:notice_import_finished_with_errors, :count => @import.unsaved_items.count, :total => @import.total_items) %>:

    <% @import.unsaved_items.each do |item| %> <% end %>
    Position Message
    <%= item.position %> <%= simple_format_without_paragraph item.message %>
    <% end %> redmine-6.0.5/app/views/issue_categories/000077500000000000000000000000001500112024600204065ustar00rootroot00000000000000redmine-6.0.5/app/views/issue_categories/_form.html.erb000066400000000000000000000004301500112024600231420ustar00rootroot00000000000000<%= error_messages_for 'category' %>

    <%= f.text_field :name, :size => 60, :required => true %>

    <%= f.select :assigned_to_id, principals_options_for_select(@project.assignable_users, @category.assigned_to), :include_blank => true %>

    redmine-6.0.5/app/views/issue_categories/_new_modal.html.erb000066400000000000000000000006501500112024600241500ustar00rootroot00000000000000

    <%=l(:label_issue_category_new)%>

    <%= labelled_form_for @category, :as => 'issue_category', :url => project_issue_categories_path(@project), :remote => true do |f| %> <%= render :partial => 'issue_categories/form', :locals => { :f => f } %>

    <%= submit_tag l(:button_create), :name => nil %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/issue_categories/create.js.erb000066400000000000000000000004511500112024600227560ustar00rootroot00000000000000hideModal(); <% select = content_tag('select', content_tag('option') + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]') %> $('#issue_category_id').replaceWith('<%= escape_javascript(select) %>'); redmine-6.0.5/app/views/issue_categories/destroy.html.erb000066400000000000000000000015771500112024600235460ustar00rootroot00000000000000

    <%=l(:label_issue_category)%>: <%=h @category.name %>

    <%= form_tag(issue_category_path(@category), :method => :delete) do %>

    <%= l(:text_issue_category_destroy_question, @issue_count) %>


    <% if @categories.size > 0 %> : <%= label_tag "reassign_to_id", l(:description_issue_category_reassign), :class => "hidden-for-sighted" %> <%= select_tag 'reassign_to_id', options_from_collection_for_select(@categories, 'id', 'name') %>

    <% end %>
    <%= submit_tag l(:button_apply) %> <%= link_to l(:button_cancel), :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' %> <% end %> redmine-6.0.5/app/views/issue_categories/edit.html.erb000066400000000000000000000004711500112024600227720ustar00rootroot00000000000000

    <%=l(:label_issue_category)%>

    <%= labelled_form_for @category, :as => :issue_category, :url => issue_category_path(@category), :html => {:method => :put} do |f| %> <%= render :partial => 'issue_categories/form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/issue_categories/index.api.rsb000066400000000000000000000006641500112024600230030ustar00rootroot00000000000000api.array :issue_categories, api_meta(:total_count => @categories.size) do @categories.each do |category| api.issue_category do api.id category.id api.project(:id => category.project_id, :name => category.project.name) unless category.project.nil? api.name category.name api.assigned_to(:id => category.assigned_to_id, :name => category.assigned_to.name) unless category.assigned_to.nil? end end end redmine-6.0.5/app/views/issue_categories/new.html.erb000066400000000000000000000004551500112024600226400ustar00rootroot00000000000000

    <%=l(:label_issue_category_new)%>

    <%= labelled_form_for @category, :as => :issue_category, :url => project_issue_categories_path(@project) do |f| %> <%= render :partial => 'issue_categories/form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/issue_categories/new.js.erb000066400000000000000000000002061500112024600223020ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'issue_categories/new_modal') %>'); showModal('ajax-modal', '600px'); redmine-6.0.5/app/views/issue_categories/show.api.rsb000066400000000000000000000004561500112024600226530ustar00rootroot00000000000000api.issue_category do api.id @category.id api.project(:id => @category.project_id, :name => @category.project.name) unless @category.project.nil? api.name @category.name api.assigned_to(:id => @category.assigned_to_id, :name => @category.assigned_to.name) unless @category.assigned_to.nil? end redmine-6.0.5/app/views/issue_relations/000077500000000000000000000000001500112024600202615ustar00rootroot00000000000000redmine-6.0.5/app/views/issue_relations/_form.html.erb000066400000000000000000000022501500112024600230170ustar00rootroot00000000000000<% unsaved_relations_ids = '' %> <% if @unsaved_relations && @unsaved_relations.any? %> <% unsaved_relations_ids = @unsaved_relations.map(&:issue_to_id).compact.join(", ") %>
    <%= notice_icon('error') %>
      <% relation_error_messages(@unsaved_relations).each do |message| %>
    • <%= message %>
    • <% end %>
    <% end %>

    <%= f.select :relation_type, collection_for_relation_type_select, {}, :onchange => "setPredecessorFieldsVisibility();" %> <%= l(:label_issue) %> #<%= f.text_field :issue_to_id, :value => unsaved_relations_ids, :size => 10 %> <%= submit_tag l(:button_add) %> <%= link_to_function l(:button_cancel), '$("#new-relation-form").hide();'%>

    <%= javascript_tag "multipleAutocompleteField('relation_issue_to_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => (Setting.cross_project_issue_relations? ? 'all' : nil), :issue_id => @issue.id)}')" %> <%= javascript_tag "setPredecessorFieldsVisibility();" %> redmine-6.0.5/app/views/issue_relations/create.js.erb000066400000000000000000000004161500112024600226320ustar00rootroot00000000000000$('#relations').html('<%= escape_javascript(render :partial => 'issues/relations') %>'); <% if @relation.errors.empty? %> $('#relation_delay').val(''); $('#relation_issue_to_id').val(''); <% end %> $('#new-relation-form').show(); $('#relation_issue_to_id').focus(); redmine-6.0.5/app/views/issue_relations/destroy.js.erb000066400000000000000000000002231500112024600230540ustar00rootroot00000000000000$('#relation-<%= @relation.id %>').remove(); $(".issues-stat").replaceWith('<%= escape_javascript(render_relations_stats(@issue, @relations)) %>') redmine-6.0.5/app/views/issue_relations/index.api.rsb000066400000000000000000000004321500112024600226470ustar00rootroot00000000000000api.array :relations do @relations.each do |relation| api.relation do api.id relation.id api.issue_id relation.issue_from_id api.issue_to_id relation.issue_to_id api.relation_type relation.relation_type api.delay relation.delay end end end redmine-6.0.5/app/views/issue_relations/show.api.rsb000066400000000000000000000003011500112024600225130ustar00rootroot00000000000000api.relation do api.id @relation.id api.issue_id @relation.issue_from_id api.issue_to_id @relation.issue_to_id api.relation_type @relation.relation_type api.delay @relation.delay end redmine-6.0.5/app/views/issue_statuses/000077500000000000000000000000001500112024600201345ustar00rootroot00000000000000redmine-6.0.5/app/views/issue_statuses/_form.html.erb000066400000000000000000000010241500112024600226700ustar00rootroot00000000000000<%= error_messages_for 'issue_status' %>

    <%= f.text_field :name, :required => true %>

    <%= f.text_area :description, :rows => 4 %>

    <% if Issue.use_status_for_done_ratio? %>

    <%= f.select :default_done_ratio, ((0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]}), :include_blank => true, :label => :field_done_ratio %>

    <% end %>

    <%= f.check_box :is_closed %>

    <%= call_hook(:view_issue_statuses_form, :issue_status => @issue_status) %>
    redmine-6.0.5/app/views/issue_statuses/edit.html.erb000066400000000000000000000003541500112024600225200ustar00rootroot00000000000000<%= title [l(:label_issue_status_plural), issue_statuses_path], @issue_status.name %> <%= labelled_form_for @issue_status do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/issue_statuses/index.api.rsb000066400000000000000000000003521500112024600225230ustar00rootroot00000000000000api.array :issue_statuses do @issue_statuses.each do |status| api.issue_status do api.id status.id api.name status.name api.is_closed status.is_closed api.description status.description end end end redmine-6.0.5/app/views/issue_statuses/index.html.erb000066400000000000000000000033121500112024600226770ustar00rootroot00000000000000
    <%= link_to(sprite_icon('add', l(:label_issue_status_new)), new_issue_status_path, :class => 'icon icon-add') %> <%= link_to(sprite_icon('table-multiple', l(:label_update_issue_done_ratios)), update_issue_done_ratio_issue_statuses_path, :class => 'icon icon-multiple', :method => 'post', :data => { :confirm => l(:text_are_you_sure)}) if Issue.use_status_for_done_ratio? %>

    <%=l(:label_issue_status_plural)%>

    <% if Issue.use_status_for_done_ratio? %> <% end %> <% for status in @issue_statuses %> <% if Issue.use_status_for_done_ratio? %> <% end %> <% end %>
    <%=l(:field_status)%><%=l(:field_done_ratio)%><%=l(:field_is_closed)%> <%=l(:field_description)%>
    <%= link_to status.name, edit_issue_status_path(status) %><%= status.default_done_ratio %><%= checked_image status.is_closed? %> <%= status.description %> <% unless WorkflowTransition.where('old_status_id = ? OR new_status_id = ?', status.id, status.id).exists? %> <%= sprite_icon('warning', l(:text_status_no_workflow)) %> (<%= link_to l(:button_edit), edit_workflows_path(:used_statuses_only => 0) %>) <% end %> <%= reorder_handle(status) %> <%= delete_link issue_status_path(status) %>
    <% html_title(l(:label_issue_status_plural)) -%> <%= javascript_tag do %> $(function() { $("table.issue_statuses tbody").positionedItems(); }); <% end %> redmine-6.0.5/app/views/issue_statuses/new.html.erb000066400000000000000000000003661500112024600223670ustar00rootroot00000000000000<%= title [l(:label_issue_status_plural), issue_statuses_path], l(:label_issue_status_new) %> <%= labelled_form_for @issue_status do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/issues/000077500000000000000000000000001500112024600163645ustar00rootroot00000000000000redmine-6.0.5/app/views/issues/_action_menu.html.erb000066400000000000000000000021561500112024600224650ustar00rootroot00000000000000
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_issue_path(@issue), :onclick => 'showAndScrollTo("update", "issue_notes"); return false;', :class => 'icon icon-edit ', :accesskey => accesskey(:edit) if @issue.editable? %> <%= link_to sprite_icon('time-add', l(:button_log_time)), new_issue_time_entry_path(@issue), :class => 'icon icon-time-add ' if User.current.allowed_to?(:log_time, @project) %> <%= watcher_link(@issue, User.current) %> <%= link_to sprite_icon('copy', l(:button_copy)), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy ' if User.current.allowed_to?(:copy_issues, @project) && Issue.allowed_target_projects.any? %> <%= actions_dropdown do %> <%= copy_object_url_link(issue_url(@issue, only_path: false)) %> <%= link_to sprite_icon('del', l(:button_delete_object, object_name: l(:label_issue)).capitalize), issue_path(@issue), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del ' if @issue.deletable? %> <% end %>
    redmine-6.0.5/app/views/issues/_action_menu_edit.html.erb000066400000000000000000000004131500112024600234640ustar00rootroot00000000000000
    <%= render :partial => 'action_menu' %>
    <% if @issue.editable? %> <% end %> redmine-6.0.5/app/views/issues/_attributes.html.erb000066400000000000000000000122051500112024600223460ustar00rootroot00000000000000<%= labelled_fields_for :issue, @issue do |f| %>
    <% if @issue.safe_attribute?('status_id') && @allowed_statuses.present? %>

    <%= f.select :status_id, (@allowed_statuses.collect {|p| [p.name, p.id]}), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript(update_issue_form_path(@project, @issue))}', this)", :title => @issue.status.description %> <%= content_tag 'a', sprite_icon('help', l(:label_open_issue_statuses_description)), :class => 'icon-only icon-help', :title => l(:label_open_issue_statuses_description), :onclick => "showModal('issue_statuses_description', '500px'); return false;", :href => '#' if @allowed_statuses.any? {|s| s.description.present? } %> <% if @issue.transition_warning %> <%= sprite_icon('warning', l(:notice_issue_not_closable_by_open_tasks)) %> <% end %>

    <%= render partial: 'issues/issue_status_description', locals: { issue_statuses: @allowed_statuses } %> <%= hidden_field_tag 'was_default_status', @issue.status_id, :id => nil if @issue.status == @issue.default_status %> <% else %>

    <%= @issue.status %>

    <% end %> <% if @issue.safe_attribute? 'priority_id' %>

    <%= f.select :priority_id, (@priorities.collect {|p| [p.name, p.id]}), {:required => true} %>

    <% end %> <% if @issue.safe_attribute? 'assigned_to_id' %>

    <%= f.select :assigned_to_id, principals_options_for_select(@issue.assignable_users, @issue.assigned_to), :include_blank => true, :required => @issue.required_attribute?('assigned_to_id') %> <% if @issue.assignable_users.include?(User.current) %> <%= l(:label_assign_to_me) %> <% end %>

    <% end %> <% if @issue.safe_attribute?('category_id') && (category_options = @issue.project.issue_categories.pluck(:name, :id)).present? %>

    <%= f.select :category_id, category_options, {:include_blank => true, :required => @issue.required_attribute?('category_id')}, :onchange => ("updateIssueFrom('#{escape_javascript(update_issue_form_path(@project, @issue))}', this)" if @issue.new_record?) %> <%= link_to(sprite_icon('add', l(:label_issue_category_new)), new_project_issue_category_path(@issue.project), :remote => true, :method => 'get', :title => l(:label_issue_category_new), :tabindex => 200, :class => 'icon-only icon-add' ) if User.current.allowed_to?(:manage_categories, @issue.project) %>

    <% end %> <% if @issue.safe_attribute?('fixed_version_id') && @issue.assignable_versions.any? %>

    <%= f.select :fixed_version_id, version_options_for_select(@issue.assignable_versions, @issue.fixed_version), :include_blank => true, :required => @issue.required_attribute?('fixed_version_id') %> <%= link_to(sprite_icon('add', l(:label_version_new)), new_project_version_path(@issue.project), :remote => true, :method => 'get', :title => l(:label_version_new), :tabindex => 200, :class => 'icon-only icon-add' ) if User.current.allowed_to?(:manage_versions, @issue.project) %>

    <% end %>
    <% if @issue.safe_attribute? 'parent_issue_id' %>

    <%= f.text_field :parent_issue_id, :size => 10, :required => @issue.required_attribute?('parent_issue_id'), :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %>

    <%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript(auto_complete_issues_path(:project_id => @issue.project, :scope => Setting.cross_project_subtasks, :status => @issue.closed? ? 'c' : 'o', :issue_id => @issue.id))}')" %> <% end %> <% if @issue.safe_attribute? 'start_date' %>

    <%= f.date_field(:start_date, :size => 10, :required => @issue.required_attribute?('start_date')) %> <%= calendar_for('issue_start_date') %>

    <% end %> <% if @issue.safe_attribute? 'due_date' %>

    <%= f.date_field(:due_date, :size => 10, :required => @issue.required_attribute?('due_date')) %> <%= calendar_for('issue_due_date') %>

    <% end %> <% if @issue.safe_attribute? 'estimated_hours' %>

    <%= f.hours_field :estimated_hours, :size => 6, :required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %>

    <% end %> <% if @issue.safe_attribute?('done_ratio') && Issue.use_field_for_done_ratio? %>

    <%= f.select :done_ratio, ((0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]}), :required => @issue.required_attribute?('done_ratio') %>

    <% end %>
    <% if @issue.safe_attribute? 'custom_field_values' %> <%= render :partial => 'issues/form_custom_fields' %> <% end %> <% end %> <% include_calendar_headers_tags %> redmine-6.0.5/app/views/issues/_conflict.html.erb000066400000000000000000000024131500112024600217610ustar00rootroot00000000000000
    <%= notice_icon('warning') %> <%= l(:notice_issue_update_conflict) %> <% if @conflict_journals.present? %>
    <% @conflict_journals.sort_by(&:id).each do |journal| %>

    <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %>

    <% if journal.details.any? %>
      <% details_to_strings(journal.details).each do |string| %>
    • <%= string %>
    • <% end %>
    <% end %>
    <%= textilizable(journal, :notes) unless journal.notes.blank? %>
    <% end %>
    <% end %>


    <% if @issue.notes.present? %>
    <% end %>

    <%= submit_tag l(:button_submit) %>

    redmine-6.0.5/app/views/issues/_edit.html.erb000066400000000000000000000107651500112024600211160ustar00rootroot00000000000000<%= labelled_form_for @issue, :html => {:id => 'issue-form', :multipart => true} do |f| %> <%= error_messages_for 'issue', 'time_entry' %> <%= render :partial => 'conflict' if @conflict %>
    <% if @issue.attributes_editable? %>
    <%= l(:label_change_properties) %>
    <%= render :partial => 'form', :locals => {:f => f} %>
    <% end %> <% if User.current.allowed_to?(:log_time, @issue.project) %>
    <%= l(:button_log_time) %> <%= labelled_fields_for :time_entry, @time_entry do |time_entry| %>

    <%= time_entry.hours_field :hours, :size => 6, :label => :label_spent_time %> <%= l(:field_hours) %>

    <%= time_entry.select :activity_id, activity_collection_for_select_options %>

    <%= time_entry.text_field :comments, :size => 60 %>

    <% @time_entry.editable_custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :time_entry, value %>

    <% end %> <% end %>
    <% end %> <% if @issue.notes_addable? %>
    <%= l(:field_notes) %> <%= f.text_area :notes, :cols => 60, :rows => 10, :class => 'wiki-edit', :data => { :auto_complete => true }, :no_label => true %> <%= wikitoolbar_for 'issue_notes', preview_issue_path(:project_id => @project, :issue_id => @issue) %> <% if @issue.safe_attribute? 'private_notes' %> <%= f.check_box :private_notes, :no_label => true %> <% end %> <%= call_hook(:view_issues_edit_notes_bottom, { :issue => @issue, :notes => @notes, :form => f }) %>
    <% end %> <% if !@issue.attributes_editable? && User.current.allowed_to?(:add_issue_watchers, @issue.project) %> <%= update_data_sources_for_auto_complete({users: watchers_autocomplete_for_mention_path(project_id: @issue.project, q: '', object_type: 'issue', object_id: @issue.id)}) %> <% end %> <% if @issue.attachments_addable? %>
    <%= l(:label_attachment_plural) %> <% if @issue.attachments.any? && @issue.safe_attribute?('deleted_attachment_ids') %>
    <%= link_to l(:label_edit_attachments), '#', :onclick => "$('#existing-attachments').toggle(); return false;" %>
    <% @issue.attachments.each do |attachment| %> <%= sprite_icon('attachment', size: 12) %> <%= text_field_tag '', attachment.filename, :class => "icon icon-attachment filename", :disabled => true %> <% end %>
    <% end %>
    <%= render :partial => 'attachments/form', :locals => {:container => @issue} %>
    <% end %>
    <%= f.hidden_field :lock_version %> <%= hidden_field_tag 'last_journal_id', params[:last_journal_id] || @issue.last_journal_id %> <%= submit_tag l(:button_submit) %> <%= link_to( l(:button_cancel), issue_path(id: @issue.id), :onclick => params[:action] == 'show' ? "$('#update').hide(); return false;" : '' ) %> <%= hidden_field_tag 'prev_issue_id', @prev_issue_id if @prev_issue_id %> <%= hidden_field_tag 'next_issue_id', @next_issue_id if @next_issue_id %> <%= hidden_field_tag 'issue_position', @issue_position if @issue_position %> <%= hidden_field_tag 'issue_count', @issue_count if @issue_count %> <% end %> redmine-6.0.5/app/views/issues/_form.html.erb000066400000000000000000000101151500112024600211210ustar00rootroot00000000000000<%= labelled_fields_for :issue, @issue do |f| %> <%= call_hook(:view_issues_form_details_top, { :issue => @issue, :form => f }) %> <%= hidden_field_tag 'form_update_triggered_by', '' %> <%= hidden_field_tag 'back_url', params[:back_url], :id => nil if params[:back_url].present? %> <% if @issue.safe_attribute? 'is_private' %>

    <%= f.check_box :is_private, :no_label => true %>

    <% end %> <% projects = projects_for_select(@issue) %> <% if (@issue.safe_attribute?('project_id') || @issue.project_id_changed?) && (@project.nil? || projects.length > 1 || @issue.copy?) %>

    <%= f.select :project_id, project_tree_options_for_select(projects, :selected => @issue.project), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)" %>

    <% end %> <% if @issue.safe_attribute?('tracker_id') || (@issue.persisted? && @issue.tracker_id_changed?) %>

    <%= f.select :tracker_id, trackers_options_for_select(@issue), {:required => true}, :onchange => "updateIssueFrom('#{escape_javascript update_issue_form_path(@project, @issue)}', this)", :title => @issue.tracker.description %> <%= content_tag 'a', sprite_icon('help', l(:label_open_trackers_description)), :class => 'icon-only icon-help', :title => l(:label_open_trackers_description), :onclick => "showModal('trackers_description', '500px'); return false;", :href => '#' if trackers_for_select(@issue).any? {|t| t.description.present? } %>

    <%= render partial: 'issues/trackers_description', locals: {trackers: trackers_for_select(@issue)} %> <% end %> <% if @issue.safe_attribute? 'subject' %>

    <%= f.text_field :subject, :size => 80, :maxlength => 255, :required => true %>

    <% end %> <% if @issue.safe_attribute? 'description' %>

    <%= f.label_for_field :description, :required => @issue.required_attribute?('description') %> <%= content_tag 'span', :id => "issue_description_and_toolbar", :style => (@issue.new_record? ? nil : 'display:none') do %> <%= f.text_area :description, :cols => 60, :accesskey => accesskey(:edit), :class => 'wiki-edit', :rows => [[10, @issue.description.to_s.length / 50].max, 20].min, :data => { :auto_complete => true, }, :no_label => true %> <% end %> <%= link_to_function content_tag(:span, sprite_icon('edit', l(:button_edit)), :class => 'icon icon-edit'), '$(this).hide(); $("#issue_description_and_toolbar").show()' unless @issue.new_record? %>

    <%= wikitoolbar_for 'issue_description', preview_issue_path(:project_id => @issue.project, :issue_id => @issue.id) %> <% end %>
    <%= render :partial => 'issues/attributes' %>
    <%= call_hook(:view_issues_form_details_bottom, { :issue => @issue, :form => f }) %> <% end %> <% heads_for_wiki_formatter %> <%= heads_for_auto_complete(@issue.project) %> <% if User.current.allowed_to?(:add_issue_watchers, @issue.project)%> <%= update_data_sources_for_auto_complete({users: watchers_autocomplete_for_mention_path(project_id: @issue.project, q: '', object_type: 'issue', object_id: @issue.id)}) %> <% end %> <%= javascript_tag do %> $(document).ready(function(){ $("#issue_tracker_id, #issue_status_id").each(function(){ $(this).val($(this).find("option[selected=selected]").val()); }); $(".assign-to-me-link").click(function(event){ event.preventDefault(); var element = $(event.target); $('#issue_assigned_to_id').val(element.data('id')); element.hide(); }); $('#issue_assigned_to_id').change(function(event){ var assign_to_me_link = $(".assign-to-me-link"); if (assign_to_me_link.length > 0) { var user_id = $(event.target).val(); var current_user_id = assign_to_me_link.data('id'); if (user_id == current_user_id) { assign_to_me_link.hide(); } else { assign_to_me_link.show(); } } }); }); <% end %> redmine-6.0.5/app/views/issues/_form_custom_fields.html.erb000066400000000000000000000020651500112024600240460ustar00rootroot00000000000000<% custom_field_values = @issue.editable_custom_field_values %> <% custom_field_values_full_width = custom_field_values.select { |value| value.custom_field.full_width_layout? } %> <% custom_field_values -= custom_field_values_full_width %> <% if custom_field_values.present? %>
    <% i = 0 %> <% split_on = (custom_field_values.size / 2.0).ceil - 1 %> <% custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :issue, value, :required => @issue.required_attribute?(value.custom_field_id) %>

    <% if i == split_on -%>
    <% end -%> <% i += 1 -%> <% end -%>
    <% end %> <% custom_field_values_full_width.each do |value| %>

    <%= custom_field_tag_with_label :issue, value, :required => @issue.required_attribute?(value.custom_field_id) %>

    <%= wikitoolbar_for "issue_custom_field_values_#{value.custom_field_id}", preview_issue_path(:project_id => @issue.project, :issue_id => @issue.id) if value.custom_field.full_text_formatting? %> <% end %> redmine-6.0.5/app/views/issues/_issue_status_description.html.erb000066400000000000000000000016061500112024600253210ustar00rootroot00000000000000<% if issue_statuses.any? {|s| s.description.present? } %> <% end %> <%= javascript_tag do %> function selectIssueStatus(id) { var target = $('#issue_status_id'); target.attr("selected", false); target.find('option[value="' + id + '"]').prop('selected', true); target.trigger('change'); hideModal('#issue_statuses_description h3'); } <% end %> redmine-6.0.5/app/views/issues/_list.html.erb000066400000000000000000000046411500112024600211400ustar00rootroot00000000000000<% query_options = nil unless defined?(query_options) %> <% query_options ||= {} %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %> <%= query_columns_hidden_tags(query) %>
    <% query.inline_columns.each do |column| %> <%= column_header(query, column, query_options) %> <% end %> <% grouped_issue_list(issues, query) do |issue, level, group_name, group_count, group_totals| -%> <% if group_name %> <% reset_cycle %> <% end %> "> <% query.inline_columns.each do |column| %> <%= content_tag('td', column_content(column, issue), :class => column.css_classes) %> <% end %> <% query.block_columns.each do |column| if (text = column_content(column, issue)) && text.present? -%> <% end -%> <% end -%> <% end -%>
    <%= check_box_tag 'check_all', '', false, :class => 'toggle-selection', :title => "#{l(:button_check_all)} / #{l(:button_uncheck_all)}" %>
    <%= sprite_icon("angle-down") %> <%= group_name %> <%= group_count %> <%= group_totals %> <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
    <%= check_box_tag("ids[]", issue.id, false, :id => nil) %><%= link_to_context_menu %>
    <% if query.block_columns.count > 1 %> <%= column.caption %> <% end %> <%= text %>
    <% end -%> redmine-6.0.5/app/views/issues/_relations.html.erb000066400000000000000000000015461500112024600221660ustar00rootroot00000000000000
    <% if User.current.allowed_to?(:manage_issue_relations, @project) %> <%= toggle_link l(:button_add), 'new-relation-form', {:focus => 'relation_issue_to_id'} %> <% end %>

    <%=l(:label_related_issues)%> <%= render_relations_stats(@issue, @relations) if @relations.present? %>

    <% if @relations.present? %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %> <%= render_issue_relations(@issue, @relations) %> <% end %> <% end %> <%= form_for @relation, { :as => :relation, :remote => true, :url => issue_relations_path(@issue), :method => :post, :html => {:id => 'new-relation-form', :style => 'display: none;'} } do |f| %> <%= render :partial => 'issue_relations/form', :locals => {:f => f}%> <% end %> redmine-6.0.5/app/views/issues/_sidebar.html.erb000066400000000000000000000003271500112024600215730ustar00rootroot00000000000000<%= call_hook(:view_issues_sidebar_issues_bottom) %> <%= call_hook(:view_issues_sidebar_planning_bottom) %> <%= render_sidebar_queries(IssueQuery, @project) %> <%= call_hook(:view_issues_sidebar_queries_bottom) %> redmine-6.0.5/app/views/issues/_subtasks.html.erb000066400000000000000000000006051500112024600220200ustar00rootroot00000000000000
    <%= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %>

    <%=l(:label_subtask_plural)%> <%= render_descendants_stats(@issue) unless @issue.leaf? %>

    <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %> <%= render_descendants_tree(@issue) unless @issue.leaf? %> <% end %> redmine-6.0.5/app/views/issues/_trackers_description.html.erb000066400000000000000000000015031500112024600244000ustar00rootroot00000000000000<% if trackers.any? {|t| t.description.present? } %> <% end %> <%= javascript_tag do %> function selectTracker(id) { var target = $('#issue_tracker_id'); target.attr("selected", false); target.find('option[value="' + id + '"]').prop('selected', true); target.trigger('change'); hideModal('#trackers_description h3'); } <% end %> redmine-6.0.5/app/views/issues/_watchers_form.html.erb000066400000000000000000000012021500112024600230160ustar00rootroot00000000000000<% if @issue.safe_attribute? 'watcher_user_ids' -%> <%= hidden_field_tag 'issue[watcher_user_ids][]', '' %>

    <%= watchers_checkboxes(@issue, users_for_new_issue_watchers(@issue)) %> <%= link_to sprite_icon('add', l(:label_search_for_watchers), size: 12), {:controller => 'watchers', :action => 'new', :project_id => @issue.project}, :class => 'icon icon-add-bullet', :remote => true, :method => 'get' %>

    <% end %> redmine-6.0.5/app/views/issues/bulk_edit.html.erb000066400000000000000000000265461500112024600220000ustar00rootroot00000000000000

    <%= @copy ? l(:button_copy) : l(:label_bulk_edit_selected_issues) %>

    <% if @saved_issues && @unsaved_issues.present? %>
    <%= notice_icon('error') %> <%= l(:notice_failed_to_save_issues, :count => @unsaved_issues.size, :total => @saved_issues.size, :ids => @unsaved_issues.map {|i| "##{i.id}"}.join(', ')) %>
      <% bulk_edit_error_messages(@unsaved_issues).each do |message| %>
    • <%= message %>
    • <% end %>
    <% end %>
      <% @issues.each do |issue| %> <%= content_tag 'li', link_to_issue(issue) %> <% end %>
    <%= form_tag(bulk_update_issues_path, :id => 'bulk_edit_form') do %> <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id, :id => nil)}.join("\n").html_safe %>
    <%= l(:label_change_properties) %>
    <% if @allowed_projects.present? %>

    <%= select_tag('issue[project_id]', project_tree_options_for_select(@allowed_projects, :include_blank => ((!@copy || (@projects & @allowed_projects == @projects)) ? l(:label_no_change_option) : false), :selected => @target_project), :onchange => "updateBulkEditFrom('#{escape_javascript url_for(:action => 'bulk_edit', :format => 'js')}')") %>

    <% end %>

    <%= select_tag('issue[tracker_id]', content_tag('option', l(:label_no_change_option), :value => '') + options_from_collection_for_select(@trackers, :id, :name, @issue_params[:tracker_id]), :onchange => "updateBulkEditFrom('#{escape_javascript url_for(:action => 'bulk_edit', :format => 'js')}')") %>

    <% if @available_statuses.any? %>

    <%= select_tag('issue[status_id]', content_tag('option', l(:label_no_change_option), :value => '') + options_from_collection_for_select(@available_statuses, :id, :name, @issue_params[:status_id]), :onchange => "updateBulkEditFrom('#{escape_javascript url_for(:action => 'bulk_edit', :format => 'js')}')") %>

    <% end %> <% if @safe_attributes.include?('priority_id') -%>

    <%= select_tag('issue[priority_id]', content_tag('option', l(:label_no_change_option), :value => '') + options_from_collection_for_select(IssuePriority.active, :id, :name, @issue_params[:priority_id])) %>

    <% end %> <% if @safe_attributes.include?('assigned_to_id') -%>

    <%= select_tag('issue[assigned_to_id]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:label_nobody), :value => 'none', :selected => (@issue_params[:assigned_to_id] == 'none')) + principals_options_for_select(@assignables, @issue_params[:assigned_to_id])) %>

    <% end %> <% if @safe_attributes.include?('category_id') -%>

    <%= select_tag('issue[category_id]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:label_none), :value => 'none', :selected => (@issue_params[:category_id] == 'none')) + options_from_collection_for_select(@categories, :id, :name, @issue_params[:category_id])) %>

    <% end %> <% if @safe_attributes.include?('fixed_version_id') -%>

    <%= select_tag('issue[fixed_version_id]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:label_none), :value => 'none', :selected => (@issue_params[:fixed_version_id] == 'none')) + version_options_for_select(@versions.sort, @issue_params[:fixed_version_id])) %>

    <% end %> <% if @copy && Setting.link_copied_issue == 'ask' %>

    <%= hidden_field_tag 'link_copy', '0' %> <%= check_box_tag 'link_copy', '1', params[:link_copy] != 0 %>

    <% end %> <% if @copy && (@attachments_present || @subtasks_present || @watchers_present) %>

    <% if @attachments_present %> <% end %> <% if @subtasks_present %> <% end %> <% if @watchers_present %> <% end %>

    <% end %> <%= call_hook(:view_issues_bulk_edit_details_bottom, { :issues => @issues }) %>
    <% if @safe_attributes.include?('is_private') %>

    <%= select_tag('issue[is_private]', content_tag('option', l(:label_no_change_option), :value => '') + content_tag('option', l(:general_text_Yes), :value => '1', :selected => (@issue_params[:is_private] == '1')) + content_tag('option', l(:general_text_No), :value => '0', :selected => (@issue_params[:is_private] == '0'))) %>

    <% end %> <% if @safe_attributes.include?('parent_issue_id') && @project %>

    <%= text_field_tag 'issue[parent_issue_id]', '', :size => 10, :value => @issue_params[:parent_issue_id] %>

    <%= javascript_tag "observeAutocompleteField('issue_parent_issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => Setting.cross_project_subtasks)}')" %> <% end %> <% if @safe_attributes.include?('start_date') %>

    <%= date_field_tag 'issue[start_date]', '', :value => @issue_params[:start_date], :size => 10 %><%= calendar_for('issue_start_date') %>

    <% end %> <% if @safe_attributes.include?('due_date') %>

    <%= date_field_tag 'issue[due_date]', '', :value => @issue_params[:due_date], :size => 10 %><%= calendar_for('issue_due_date') %>

    <% end %> <% if @safe_attributes.include?('estimated_hours') %>

    <%= text_field_tag 'issue[estimated_hours]', '', :value => @issue_params[:estimated_hours], :size => 10 %>

    <% end %> <% if @safe_attributes.include?('done_ratio') && Issue.use_field_for_done_ratio? %>

    <%= select_tag 'issue[done_ratio]', options_for_select([[l(:label_no_change_option), '']] + (0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]}, @issue_params[:done_ratio]) %>

    <% end %>
    <% custom_fields = @custom_fields %> <% custom_fields_full_width = custom_fields.select { |value| value.full_width_layout? } %> <% custom_fields -= custom_fields_full_width %> <% if custom_fields.present? %>
    <% i = 0 %> <% split_on = (custom_fields.size / 2.0).ceil - 1 %> <% custom_fields.each do |custom_field| %>

    <%= custom_field_tag_for_bulk_edit('issue', custom_field, @issues, @issue_params[:custom_field_values][custom_field.id.to_s]) %>

    <% if i == split_on %>
    <% end %> <% i += 1 %> <% end %>
    <% end %> <% custom_fields_full_width.each do |custom_field| %>

    <%= custom_field_tag_for_bulk_edit('issue', custom_field, @issues, @issue_params[:custom_field_values][custom_field.id.to_s]) %>

    <%= wikitoolbar_for "issue_custom_field_values_#{custom_field.id}", preview_issue_path(:project_id => @project, :issue_id => nil) if custom_field.full_text_formatting? %> <% end %>
    <%= l(:field_notes) %> <%= text_area_tag 'notes', @notes, :cols => 60, :rows => 10, :class => 'wiki-edit', :data => { :auto_complete => true } %> <%= wikitoolbar_for 'notes' %> <% if User.current.allowed_to?(:add_issue_watchers, nil, global: true)%> <%= update_data_sources_for_auto_complete({users: watchers_autocomplete_for_mention_path(q: '', object_type: 'issue', object_id: @issues.map(&:id) )}) %> <% end %> <% if @safe_attributes.include?('private_notes') %> <% end %>
    <% if @values_by_custom_field.present? %>
    <%= notice_icon('warning') %> <%= l(:warning_fields_cleared_on_bulk_edit) %>:
    <%= safe_join(@values_by_custom_field.map {|field, ids| content_tag "span", "#{field.name} (#{ids.size})"}, ', ') %>
    <% end %>

    <% if @copy %> <%= hidden_field_tag 'copy', '1' %> <%= submit_tag l(:button_copy) %> <%= submit_tag l(:button_copy_and_follow), :name => 'follow' %> <% elsif @target_project %> <%= submit_tag l(:button_move) %> <%= submit_tag l(:button_move_and_follow), :name => 'follow' %> <% else %> <%= submit_tag l(:button_submit) %> <% end %>

    <% end %> <%= javascript_tag do %> $(window).on('load', function(){ $(document).on('change', 'input[data-disables]', function(){ if ($(this).prop('checked')){ $($(this).data('disables')).attr('disabled', true).val(''); } else { $($(this).data('disables')).attr('disabled', false); } }); }); $(document).ready(function(){ $('input[data-disables]').trigger('change'); }); <% end %> redmine-6.0.5/app/views/issues/bulk_edit.js.erb000066400000000000000000000001551500112024600214340ustar00rootroot00000000000000$('#content').html('<%= escape_javascript(render :template => 'issues/bulk_edit', :formats => [:html]) %>'); redmine-6.0.5/app/views/issues/destroy.html.erb000066400000000000000000000021551500112024600215150ustar00rootroot00000000000000

    <%= l(:label_confirmation) %>

    <%= form_tag({}, :method => :delete) do %> <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id, :id => nil)}.join("\n").html_safe %>

    <%= l(:text_destroy_time_entries_question, :hours => format_hours(@hours)) %>


    <% unless Setting.timelog_required_fields.include?('issue_id') %>
    <% end %> <% if @project %> <%= text_field_tag 'reassign_to_id', params[:reassign_to_id], :size => 6, :onfocus => '$("#todo_reassign").attr("checked", true);' %> <%= javascript_tag "observeAutocompleteField('reassign_to_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project)}')" %> <% end %>

    <%= submit_tag l(:button_apply) %> <% end %> redmine-6.0.5/app/views/issues/edit.html.erb000066400000000000000000000002431500112024600207450ustar00rootroot00000000000000

    <%= "#{@issue.tracker_was} ##{@issue.id}" %>

    <%= render :partial => 'edit' %> <% content_for :header_tags do %> <%= robot_exclusion_tag %> <% end %> redmine-6.0.5/app/views/issues/edit.js.erb000066400000000000000000000005711500112024600204210ustar00rootroot00000000000000replaceIssueFormWith('<%= escape_javascript(render :partial => 'form') %>'); <% if User.current.allowed_to?(:log_time, @issue.project) %> $('#log_time').show(); <% else %> $('#log_time').hide(); <% end %> <% if @issue.notes_addable? %> $('#add_notes').show(); $('#add_attachments').show(); <% else %> $('#add_notes').hide(); $('#add_attachments').hide(); <% end %>redmine-6.0.5/app/views/issues/index.api.rsb000066400000000000000000000044301500112024600207540ustar00rootroot00000000000000api.array :issues, api_meta(:total_count => @issue_count, :offset => @offset, :limit => @limit) do @issues.each do |issue| api.issue do api.id issue.id api.project(:id => issue.project_id, :name => issue.project.name) unless issue.project.nil? api.tracker(:id => issue.tracker_id, :name => issue.tracker.name) unless issue.tracker.nil? api.status(:id => issue.status_id, :name => issue.status.name, :is_closed => issue.status.is_closed) unless issue.status.nil? api.priority(:id => issue.priority_id, :name => issue.priority.name) unless issue.priority.nil? api.author(:id => issue.author_id, :name => issue.author.name) unless issue.author.nil? api.assigned_to(:id => issue.assigned_to_id, :name => issue.assigned_to.name) unless issue.assigned_to.nil? api.category(:id => issue.category_id, :name => issue.category.name) unless issue.category.nil? api.fixed_version(:id => issue.fixed_version_id, :name => issue.fixed_version.name) unless issue.fixed_version.nil? api.parent(:id => issue.parent_id) unless issue.parent.nil? api.subject issue.subject api.description issue.description api.start_date issue.start_date api.due_date issue.due_date api.done_ratio issue.done_ratio api.is_private issue.is_private api.estimated_hours issue.estimated_hours api.total_estimated_hours issue.total_estimated_hours if User.current.allowed_to?(:view_time_entries, issue.project) api.spent_hours(issue.spent_hours) api.total_spent_hours(issue.total_spent_hours) end render_api_custom_values issue.visible_custom_field_values, api api.created_on issue.created_on api.updated_on issue.updated_on api.closed_on issue.closed_on api.array :attachments do issue.attachments.each do |attachment| render_api_attachment(attachment, api) end end if include_in_api_response?('attachments') api.array :relations do issue.relations.each do |relation| api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay) end end if include_in_api_response?('relations') end end end redmine-6.0.5/app/views/issues/index.html.erb000066400000000000000000000107631500112024600211370ustar00rootroot00000000000000
    <% if User.current.allowed_to?(:add_issues, @project, :global => true) && (@project.nil? || Issue.allowed_target_trackers(@project).any?) %> <%= link_to sprite_icon('add', l(:label_issue_new)), _new_project_issue_path(@project), :class => 'icon icon-add new-issue' %> <% end %> <%= actions_dropdown do %> <% if @project %> <%= link_to sprite_icon('summary', l(:field_summary)), project_issues_report_path(@project), :class => 'icon icon-stats' %> <% end %> <% if User.current.allowed_to?(:import_issues, @project, :global => true) && User.current.allowed_to?(:add_issues, @project, :global => true) %> <%= link_to sprite_icon('import', l(:button_import)), new_issues_import_path(:project_id => @project), :class => 'icon icon-import' %> <% end %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'issues'}, :class => 'icon icon-settings' if User.current.allowed_to?(:edit_project, @project) %> <% end %>

    <%= @query.new_record? ? l(:label_issue_plural) : @query.name %>

    <% html_title(@query.new_record? ? l(:label_issue_plural) : @query.name) %> <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag(_project_issues_path(@project), :method => :get, :id => 'query_form') do %> <%= render :partial => 'queries/query_form' %> <% end %> <% if @query.valid? %> <% if @issues.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <%= render_query_totals(@query) %> <%= render :partial => 'issues/list', :locals => {:issues => @issues, :query => @query} %> <%= pagination_links_full @issue_pages, @issue_count %> <% end %> <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'Atom', :key => User.current.atom_key %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %> <%= f.link_to_with_query_parameters 'PDF' %> <% end %> <% end %> <%= call_hook(:view_issues_index_bottom, { :issues => @issues, :project => @project, :query => @query }) %> <% content_for :sidebar do %> <%= render :partial => 'issues/sidebar' %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.atom_key}, :title => l(:label_issue_plural)) %> <%= auto_discovery_link_tag(:atom, {:controller => 'journals', :action => 'index', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.atom_key}, :title => l(:label_changes_details)) %> <% end %> <%= context_menu %> redmine-6.0.5/app/views/issues/index.pdf.erb000066400000000000000000000000631500112024600207340ustar00rootroot00000000000000<%= raw issues_to_pdf(@issues, @project, @query) %>redmine-6.0.5/app/views/issues/new.html.erb000066400000000000000000000035051500112024600206150ustar00rootroot00000000000000<%= title l(:label_issue_new) %> <%= call_hook(:view_issues_new_top, {:issue => @issue}) %> <%= labelled_form_for @issue, :url => _project_issues_path(@project), :html => {:id => 'issue-form', :multipart => true} do |f| %> <%= error_messages_for 'issue' %> <%= hidden_field_tag 'copy_from', params[:copy_from] if params[:copy_from] %>
    <%= render :partial => 'issues/form', :locals => {:f => f} %>
    <% if @copy_from && Setting.link_copied_issue == 'ask' %>

    <%= check_box_tag 'link_copy', '1', @link_copy %>

    <% end %> <% if @copy_from && Setting.copy_attachments_on_issue_copy == 'ask' && @copy_from.attachments.any? %>

    <%= check_box_tag 'copy_attachments', '1', @copy_attachments %>

    <% end %> <% if @copy_from && !@copy_from.leaf? %>

    <%= check_box_tag 'copy_subtasks', '1', @copy_subtasks %>

    <% end %>

    <%= render :partial => 'attachments/form', :locals => {:container => @issue} %>

    <%= render :partial => 'issues/watchers_form' %>
    <%= submit_tag l(:button_create) %> <% if params[:back_url] && params[:issue] && params[:issue][:parent_issue_id] %> <%= submit_tag l(:button_create_and_follow), name: 'follow' %> <% end %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <% end %> <% content_for :header_tags do %> <%= robot_exclusion_tag %> <% end %> redmine-6.0.5/app/views/issues/new.js.erb000066400000000000000000000007471500112024600202720ustar00rootroot00000000000000replaceIssueFormWith('<%= escape_javascript(render :partial => 'form') %>'); <% case params[:form_update_triggered_by] %> <% when "issue_project_id" %> $("#watchers_form_container").html( '<%= escape_javascript(render :partial => 'issues/watchers_form') %>'); <% when "issue_category_id" %> $('#issue_assigned_to_id').find('option').first().html( '<%= escape_javascript( @issue.category.try(:assigned_to).try(:name)).presence || ' '.html_safe %>'); <% end %> redmine-6.0.5/app/views/issues/show.api.rsb000066400000000000000000000073631500112024600206350ustar00rootroot00000000000000api.issue do api.id @issue.id api.project(:id => @issue.project_id, :name => @issue.project.name) unless @issue.project.nil? api.tracker(:id => @issue.tracker_id, :name => @issue.tracker.name) unless @issue.tracker.nil? api.status(:id => @issue.status_id, :name => @issue.status.name, :is_closed => @issue.status.is_closed) unless @issue.status.nil? api.priority(:id => @issue.priority_id, :name => @issue.priority.name) unless @issue.priority.nil? api.author(:id => @issue.author_id, :name => @issue.author.name) unless @issue.author.nil? api.assigned_to(:id => @issue.assigned_to_id, :name => @issue.assigned_to.name) unless @issue.assigned_to.nil? api.category(:id => @issue.category_id, :name => @issue.category.name) unless @issue.category.nil? api.fixed_version(:id => @issue.fixed_version_id, :name => @issue.fixed_version.name) unless @issue.fixed_version.nil? api.parent(:id => @issue.parent_id) unless @issue.parent.nil? api.subject @issue.subject api.description @issue.description api.start_date @issue.start_date api.due_date @issue.due_date api.done_ratio @issue.done_ratio api.is_private @issue.is_private api.estimated_hours @issue.estimated_hours api.total_estimated_hours @issue.total_estimated_hours if User.current.allowed_to?(:view_time_entries, @project) api.spent_hours(@issue.spent_hours) api.total_spent_hours(@issue.total_spent_hours) end render_api_custom_values @issue.visible_custom_field_values, api api.created_on @issue.created_on api.updated_on @issue.updated_on api.closed_on @issue.closed_on render_api_issue_children(@issue, api) if include_in_api_response?('children') api.array :attachments do @issue.attachments.each do |attachment| render_api_attachment(attachment, api) end end if include_in_api_response?('attachments') api.array :relations do @relations.each do |relation| api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay) end end if include_in_api_response?('relations') && @relations.present? api.array :changesets do @changesets.each do |changeset| api.changeset :revision => changeset.revision do api.user(:id => changeset.user_id, :name => changeset.user.name) unless changeset.user.nil? api.comments changeset.comments api.committed_on changeset.committed_on end end end if include_in_api_response?('changesets') api.array :journals do @journals.each do |journal| api.journal :id => journal.id do api.user(:id => journal.user_id, :name => journal.user.name) unless journal.user.nil? api.notes journal.notes api.created_on journal.created_on api.updated_on journal.updated_on api.updated_by(:id => journal.updated_by.id, :name => journal.updated_by.name) unless journal.updated_by.nil? api.private_notes journal.private_notes api.array :details do journal.visible_details.each do |detail| api.detail :property => detail.property, :name => detail.prop_key do api.old_value detail.old_value api.new_value detail.value end end end end end end if include_in_api_response?('journals') api.array :watchers do @issue.watcher_users.each do |user| api.user :id => user.id, :name => user.name end end if include_in_api_response?('watchers') && User.current.allowed_to?(:view_issue_watchers, @issue.project) api.array :allowed_statuses do @allowed_statuses.each do |status| api.status :id => status.id, :name => status.name, :is_closed => status.is_closed end end if include_in_api_response?('allowed_statuses') end redmine-6.0.5/app/views/issues/show.html.erb000066400000000000000000000136551500112024600210130ustar00rootroot00000000000000<% content_for :header_tags do %> <%= javascripts_for_quote_reply_include_tag %> <% end %> <%= render :partial => 'action_menu' %>

    <%= issue_heading(@issue) %>

    <%= issue_status_type_badge(@issue.status) %> <% if @issue.is_private? %> <%= l(:field_is_private) %> <% end %>
    <% if @prev_issue_id || @next_issue_id %> <% end %>
    <%= author_avatar(@issue.author, :size => "50") %> <%= assignee_avatar(@issue.assigned_to, :size => "22", :class => "gravatar-child") if @issue.assigned_to %>
    <%= render_issue_subject_with_tree(@issue) %>

    <%= authoring @issue.created_on, @issue.author %>. <% if @issue.created_on != @issue.updated_on %> <%= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>. <% end %>

    <%= issue_fields_rows do |rows| rows.left l(:field_status), @issue.status.name, :class => 'status' unless @issue.disabled_core_fields.include?('priority_id') rows.left l(:field_priority), @issue.priority.name, :class => 'priority' end unless @issue.disabled_core_fields.include?('assigned_to_id') rows.left l(:field_assigned_to), (@issue.assigned_to ? link_to_principal(@issue.assigned_to) : "-"), :class => 'assigned-to' end unless @issue.disabled_core_fields.include?('category_id') || (@issue.category.nil? && @issue.project.issue_categories.none?) rows.left l(:field_category), (@issue.category ? @issue.category.name : "-"), :class => 'category' end unless @issue.disabled_core_fields.include?('fixed_version_id') || (@issue.fixed_version.nil? && @issue.assignable_versions.none?) rows.left l(:field_fixed_version), (@issue.fixed_version ? link_to_version(@issue.fixed_version) : "-"), :class => 'fixed-version' end unless @issue.disabled_core_fields.include?('start_date') rows.right l(:field_start_date), format_date(@issue.start_date), :class => 'start-date' end unless @issue.disabled_core_fields.include?('due_date') rows.right l(:field_due_date), issue_due_date_details(@issue), :class => 'due-date' end unless @issue.disabled_core_fields.include?('done_ratio') rows.right l(:field_done_ratio), progress_bar(@issue.done_ratio, :legend => "#{@issue.done_ratio}%"), :class => 'progress' end unless @issue.disabled_core_fields.include?('estimated_hours') rows.right l(:field_estimated_hours), issue_estimated_hours_details(@issue), :class => 'estimated-hours' end if User.current.allowed_to?(:view_time_entries, @project) && @issue.total_spent_hours > 0 rows.right l(:label_spent_time), issue_spent_hours_details(@issue), :class => 'spent-time' end end %> <%= render_half_width_custom_fields_rows(@issue) %> <%= call_hook(:view_issues_show_details_bottom, :issue => @issue) %>
    <% if @issue.description? %>
    <%= quote_reply(quoted_issue_path(@issue), '#issue_description_wiki') if @issue.notes_addable? %>

    <%=l(:field_description)%>

    <%= textilizable @issue, :description, :attachments => @issue.attachments %>
    <% end %> <% if @issue.attachments.any? %>

    <%=l(:label_attachment_plural)%>

    <%= link_to_attachments @issue, :thumbnails => true %> <% end %> <%= render_full_width_custom_fields_rows(@issue) %> <%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %> <% if !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>
    <%= render :partial => 'subtasks' %>
    <% end %> <% if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>
    <%= render :partial => 'relations' %>
    <% end %>
    <%= render partial: 'action_menu_edit' if User.current.wants_comments_in_reverse_order? %>
    <%= render_tabs issue_history_tabs, issue_history_default_tab %>
    <%= render partial: 'action_menu_edit' unless User.current.wants_comments_in_reverse_order? %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %> <%= f.link_to 'PDF' %> <% end %> <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> <% content_for :sidebar do %> <%= render :partial => 'issues/sidebar' %> <% if User.current.allowed_to?(:add_issue_watchers, @project) || (@issue.watchers.present? && User.current.allowed_to?(:view_issue_watchers, @project)) %>
    <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %>
    <% end %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.atom_key}, :title => "#{@issue.project} - #{@issue.tracker} ##{@issue.id}: #{@issue.subject}") %> <% end %> <%= context_menu %> redmine-6.0.5/app/views/issues/show.pdf.erb000066400000000000000000000000671500112024600206110ustar00rootroot00000000000000<%= raw issue_to_pdf(@issue, :journals => @journals) %>redmine-6.0.5/app/views/issues/tabs/000077500000000000000000000000001500112024600173155ustar00rootroot00000000000000redmine-6.0.5/app/views/issues/tabs/_changesets.html.erb000066400000000000000000000022411500112024600232340ustar00rootroot00000000000000<% @changesets.each do |changeset| %>

    <%= avatar(changeset.user, :size => "24") %> <%= authoring changeset.committed_on, changeset.author, :label => :label_added_time_by %>

    <%= "#{changeset.project.name} - " unless changeset.project == project %> <%= link_to_revision(changeset, changeset.repository, :text => "#{l(:label_revision)} #{changeset.format_identifier}") %> <% if changeset.filechanges.any? && User.current.allowed_to?(:browse_repository, changeset.project) %> (<%= link_to(l(:label_diff), :controller => 'repositories', :action => 'diff', :id => changeset.project, :repository_id => changeset.repository.identifier_param, :path => "", :rev => changeset.identifier) %>) <% end %>

    <%= format_changeset_comments changeset %>
    <%= call_hook(:view_issues_history_changeset_bottom, { :changeset => changeset }) %> <% end %> redmine-6.0.5/app/views/issues/tabs/_history.html.erb000066400000000000000000000031761500112024600226210ustar00rootroot00000000000000<% issue = tab[:locals][:issue] journals = tab[:locals][:journals] %> <% reply_links = issue.notes_addable? -%> <% for journal in journals %>
    <%= render_journal_actions(issue, journal, :reply_links => reply_links) %> #<%= journal.indice %>

    <%= avatar(journal.user) %> <%= authoring journal.created_on, journal.user, :label => :label_updated_time_by %> <%= render_private_notes_indicator(journal) %> <%= render_journal_update_info(journal) %>

    <% if journal.details.any? %>
      <% details_to_strings(journal.visible_details).each do |string| %>
    • <%= string %>
    • <% end %>
    <% if Setting.thumbnails_enabled? && (thumbnail_attachments = journal_thumbnail_attachments(journal)).any? %>
    <% thumbnail_attachments.each do |attachment| %>
    <%= thumbnail_tag(attachment) %>
    <% end %>
    <% end %> <% end %> <%= render_notes(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %>
    <%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %> <% end %> <% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %> redmine-6.0.5/app/views/issues/tabs/_time_entries.html.erb000066400000000000000000000024221500112024600236000ustar00rootroot00000000000000<% for time_entry in time_entries%>
    <% if time_entry.editable_by?(User.current) -%>
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_time_entry_path(time_entry), :title => l(:button_edit), :class => 'icon-only icon-edit ' %> <%= link_to sprite_icon('del', l(:button_delete)), time_entry_path(time_entry), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete, :title => l(:button_delete), :class => 'icon-only icon-del ' %>
    <% end -%>

    <%= avatar(time_entry.user, :size => "24") %> <%= authoring time_entry.created_on, time_entry.user, :label => :label_added_time_by %>

    • <%= l(:label_time_entry_plural) %>: <%= l_hours_short time_entry.hours %>

    <%= time_entry.comments %>

    <%= call_hook(:view_issues_history_time_entry_bottom, { :time_entry => time_entry }) %> <% end %> redmine-6.0.5/app/views/journals/000077500000000000000000000000001500112024600167065ustar00rootroot00000000000000redmine-6.0.5/app/views/journals/_notes_form.html.erb000066400000000000000000000025121500112024600226550ustar00rootroot00000000000000<%= form_tag(journal_path(@journal), :remote => true, :method => 'put', :id => "journal-#{@journal.id}-form") do %> <%= label_tag "notes", l(:description_notes), :class => "hidden-for-sighted", :for => "journal_#{@journal.id}_notes" %> <%= text_area_tag 'journal[notes]', @journal.notes, :id => "journal_#{@journal.id}_notes", :class => 'wiki-edit', :rows => (@journal.notes.blank? ? 10 : [[10, @journal.notes.length / 50].max, 100].min), :data => { :auto_complete => true } %> <% if @journal.safe_attribute? 'private_notes' %> <%= hidden_field_tag 'journal[private_notes]', '0' %> <%= check_box_tag 'journal[private_notes]', '1', @journal.private_notes, :id => "journal_#{@journal.id}_private_notes" %> <% end %> <%= call_hook(:view_journals_notes_form_after_notes, { :journal => @journal}) %>

    <%= submit_tag l(:button_save) %> <%= link_to l(:button_cancel), '#', :onclick => "$('#journal-#{@journal.id}-form').remove(); $('#journal-#{@journal.id}-notes').show(); return false;" %>

    <% end %> <%= wikitoolbar_for "journal_#{@journal.id}_notes", preview_issue_path(:project_id => @project, :issue_id => @journal.issue) %> redmine-6.0.5/app/views/journals/diff.html.erb000066400000000000000000000006471500112024600212620ustar00rootroot00000000000000

    <%= @issue.tracker %> #<%= @issue.id %>

    <%= authoring @journal.created_on, @journal.user, :label => :label_updated_time_by %>

    <%= @diff.to_html %>

    <%= link_to(l(:button_back), issue_path(@issue), :onclick => 'if (document.referrer != "") {history.back(); return false;}') %>

    <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> redmine-6.0.5/app/views/journals/edit.js.erb000066400000000000000000000011301500112024600207330ustar00rootroot00000000000000$("#journal-<%= @journal.id %>-notes").hide(); if ($("form#journal-<%= @journal.id %>-form").length > 0) { // journal edit form already loaded $("#journal-<%= @journal.id %>-form").show(); } else { $("#journal-<%= @journal.id %>-notes").after('<%= escape_javascript(render :partial => 'notes_form') %>'); } // Focus on the textarea (() => { const textarea = $("#journal-<%= @journal.id %>-form .wiki-edit"); if (textarea.length > 0) { textarea.focus(); const textareaLength = textarea.val().length; textarea.get(0).setSelectionRange(textareaLength, textareaLength); } })(); redmine-6.0.5/app/views/journals/index.builder000066400000000000000000000025111500112024600213640ustar00rootroot00000000000000# frozen_string_literal: true xml.instruct! xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do xml.title @title xml.link "rel" => "self", "href" => url_for(:format => 'atom', :key => User.current.atom_key, :only_path => false) xml.link "rel" => "alternate", "href" => home_url xml.id home_url xml.sprite_icon favicon_url xml.updated((@journals.first ? @journals.first.event_datetime : Time.now).xmlschema) xml.author {xml.name "#{Setting.app_title}"} @journals.each do |change| issue = change.issue xml.entry do xml.title "#{issue.project.name} - #{issue.tracker.name} ##{issue.id}: #{issue.subject}" xml.link "rel" => "alternate", "href" => issue_url(issue) xml.id issue_url(issue, :journal_id => change) xml.updated change.created_on.xmlschema xml.author do xml.name change.user.name xml.email(change.user.mail) if change.user.is_a?(User) && change.user.mail.present? && !change.user.pref.hide_mail end xml.content "type" => "html" do xml.text! '
      ' details_to_strings(change.visible_details, false).each do |string| xml.text! '
    • ' + string + '
    • ' end xml.text! '
    ' xml.text! textilizable(change, :notes, :only_path => false) unless change.notes.blank? end end end end redmine-6.0.5/app/views/journals/new.js.erb000066400000000000000000000005571500112024600206130ustar00rootroot00000000000000showAndScrollTo("update"); var notes = $('#issue_notes').val(); if (notes > "") { notes = notes + "\n\n"} $('#issue_notes').blur().focus().val(notes + "<%= raw escape_javascript(@content) %>"); <% # when quoting a private journal, check the private checkbox if @journal && @journal.private_notes? %> $('#issue_private_notes').prop('checked', true); <% end %> redmine-6.0.5/app/views/journals/update.js.erb000066400000000000000000000023671500112024600213050ustar00rootroot00000000000000<% if @journal.frozen? %> $("#change-<%= @journal.id %>").remove(); <% else %> $("#change-<%= @journal.id %>").attr('class', '<%= @journal.css_classes %>'); $("#change-<%= @journal.id %> .journal-actions").html('<%= escape_javascript(render_journal_actions(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>'); $("#journal-<%= @journal.id %>-private_notes").replaceWith('<%= escape_javascript(render_private_notes_indicator(@journal)) %>'); $("#journal-<%= @journal.id %>-notes").replaceWith('<%= escape_javascript(render_notes(@journal.issue, @journal, :reply_links => authorize_for('issues', 'edit'))) %>'); $("#journal-<%= @journal.id %>-notes").show(); $("#journal-<%= @journal.id %>-form").remove(); var journal_header = $("#change-<%= @journal.id %>>div.note>h4.note-header"); var journal_updated_info = journal_header.find("span.update-info"); if (journal_updated_info.length > 0) { journal_updated_info.replaceWith('<%= escape_javascript(render_journal_update_info(@journal)) %>'); } else { journal_header.append('<%= escape_javascript(render_journal_update_info(@journal)) %>'); } setupWikiTableSortableHeader(); <% end %> <%= call_hook(:view_journals_update_js_bottom, { :journal => @journal }) %> redmine-6.0.5/app/views/layouts/000077500000000000000000000000001500112024600165515ustar00rootroot00000000000000redmine-6.0.5/app/views/layouts/_file.html.erb000066400000000000000000000015111500112024600212620ustar00rootroot00000000000000
    <%= link_to_attachment @attachment, :text => "#{l(:button_download)} (#{number_to_human_size(@attachment.filesize)})", :download => true, :class => 'icon icon-download', :icon => "download" -%>

    <%= safe_join([link_to_attachment_container(@attachment.container), @attachment.filename].compact, ' » ') %>

    <%= "#{@attachment.description} - " unless @attachment.description.blank? %> <%= link_to_user(@attachment.author) %>, <%= format_time(@attachment.created_on) %>

    <%= yield %>
    <%= render_pagination %> <% html_title @attachment.filename %> <% content_for :header_tags do -%> <%= stylesheet_link_tag "scm" -%> <% end -%> redmine-6.0.5/app/views/layouts/admin.html.erb000066400000000000000000000003661500112024600213030ustar00rootroot00000000000000<% unless controller_name == 'admin' && action_name == 'index' %> <% content_for :sidebar do %>

    <%=l(:label_administration)%>

    <%= render :partial => 'admin/menu' %> <% end %> <% end %> <%= render template: 'layouts/base' %> redmine-6.0.5/app/views/layouts/base.html.erb000066400000000000000000000125011500112024600211170ustar00rootroot00000000000000 <%= html_title %> <%= csrf_meta_tag %> <%= favicon %> <%= stylesheet_link_tag 'jquery/jquery-ui-1.13.2', 'tribute-5.1.3', 'application', 'responsive', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_heads %> <%= heads_for_theme %> <%= heads_for_auto_complete(@project) %> <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> <%= call_hook :view_layouts_base_body_top %>
    <% if User.current.logged? || !Setting.login_required? %> <% end %> <% if User.current.logged? %>
    <% if Setting.gravatar_enabled? %> <%= link_to(avatar(User.current, :size => "80"), user_path(User.current)) %> <% end %> <%= link_to_user(User.current, :format => :username) %>
    <% end %> <% if display_main_menu?(@project) %>

    <%= l(:label_project) %>

    <% end %>

    <%= l(:label_general) %>

    <%= l(:label_profile) %>

    <%= render_menu :account_menu -%>
    <%= content_tag('div', "#{l(:label_logged_as)} #{link_to_user(User.current, :format => :username)}".html_safe, :id => 'loggedas') if User.current.logged? %> <%= render_menu :top_menu if User.current.logged? || !Setting.login_required? -%>
    <%= call_hook :view_layouts_base_body_bottom %> redmine-6.0.5/app/views/layouts/mailer.html.erb000066400000000000000000000035361500112024600214660ustar00rootroot00000000000000 <% if Setting.emails_header.present? -%> <%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_header).html_safe %> <% end -%> <%= yield %>
    <% if Setting.emails_footer.present? -%> <%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer).html_safe %> <% end -%> redmine-6.0.5/app/views/layouts/mailer.text.erb000066400000000000000000000002631500112024600215000ustar00rootroot00000000000000<% if Setting.emails_header.present? -%> <%= Setting.emails_header %> <% end -%> <%= yield %> <% if Setting.emails_footer.present? -%> -- <%= Setting.emails_footer %> <% end -%> redmine-6.0.5/app/views/mail_handler/000077500000000000000000000000001500112024600174705ustar00rootroot00000000000000redmine-6.0.5/app/views/mail_handler/new.html.erb000066400000000000000000000032201500112024600217130ustar00rootroot00000000000000

    Redmine Mail Handler

    <%= form_tag({}, :multipart => true, :action => 'post') do %> <%= hidden_field_tag 'key', params[:key] %>
    Raw Email <%= text_area_tag 'email', '', :style => 'width:95%; height:400px;' %>
    Options
    Issue attributes options

    <%= submit_tag 'Submit Email' %>

    <% end %> redmine-6.0.5/app/views/mailer/000077500000000000000000000000001500112024600163225ustar00rootroot00000000000000redmine-6.0.5/app/views/mailer/_issue.html.erb000066400000000000000000000011341500112024600212450ustar00rootroot00000000000000

    <%= link_to("#{issue.tracker.name} ##{issue.id}: #{issue.subject}", issue_url) %> <%= issue_status_type_badge(issue.status) %>

    <%= render_email_issue_attributes(issue, user, true) %> <%= textilizable(issue, :description, :only_path => false) %> <% if issue.attachments.any? %>
    <%= l(:label_attachment_plural) %> <% issue.attachments.each do |attachment| %> <%= link_to_attachment attachment, :download => true, :only_path => false %> (<%= number_to_human_size(attachment.filesize) %>)
    <% end %>
    <% end %> redmine-6.0.5/app/views/mailer/_issue.text.erb000066400000000000000000000006551500112024600212740ustar00rootroot00000000000000<%= "#{issue.tracker.name} ##{issue.id}: #{issue.subject}" %> <%= issue_url %> <%= render_email_issue_attributes(issue, user) %> ---------------------------------------- <%= issue.description %> <% if issue.attachments.any? -%> ---<%= l(:label_attachment_plural).ljust(37, '-') %> <% issue.attachments.each do |attachment| -%> <%= attachment.filename %> (<%= number_to_human_size(attachment.filesize) %>) <% end -%> <% end -%> redmine-6.0.5/app/views/mailer/account_activated.html.erb000066400000000000000000000001601500112024600234340ustar00rootroot00000000000000

    <%= l(:notice_account_activated) %>

    <%= l(:label_login) %>: <%= link_to @login_url, @login_url %>

    redmine-6.0.5/app/views/mailer/account_activated.text.erb000066400000000000000000000001161500112024600234550ustar00rootroot00000000000000<%= l(:notice_account_activated) %> <%= l(:label_login) %>: <%= @login_url %> redmine-6.0.5/app/views/mailer/account_activation_request.html.erb000066400000000000000000000001541500112024600254040ustar00rootroot00000000000000

    <%= l(:mail_body_account_activation_request, h(@new_user.login)) %>

    <%= link_to @url, @url %>

    redmine-6.0.5/app/views/mailer/account_activation_request.text.erb000066400000000000000000000001151500112024600254210ustar00rootroot00000000000000<%= l(:mail_body_account_activation_request, @new_user.login) %> <%= @url %> redmine-6.0.5/app/views/mailer/account_information.html.erb000066400000000000000000000006341500112024600240230ustar00rootroot00000000000000<% if @user.auth_source %>

    <%= l(:mail_body_account_information_external, h(@user.auth_source.name)) %>

    <% else %>

    <%= l(:mail_body_account_information) %>:

    • <%= l(:field_login) %>: <%= @user.login %>
    • <% if @password %>
    • <%= l(:field_password) %>: <%= @password %>
    • <% end %>
    <% end %>

    <%= l(:label_login) %>: <%= link_to @login_url, @login_url %>

    redmine-6.0.5/app/views/mailer/account_information.text.erb000066400000000000000000000005021500112024600240350ustar00rootroot00000000000000<% if @user.auth_source %><%= l(:mail_body_account_information_external, @user.auth_source.name) %> <% else %><%= l(:mail_body_account_information) %>: * <%= l(:field_login) %>: <%= @user.login %> <% if @password %>* <%= l(:field_password) %>: <%= @password %><% end %> <% end %> <%= l(:label_login) %>: <%= @login_url %> redmine-6.0.5/app/views/mailer/attachments_added.html.erb000066400000000000000000000002171500112024600234130ustar00rootroot00000000000000<%= link_to @added_to, @added_to_url %>
      <% @attachments.each do |attachment | %>
    • <%= attachment.filename %>
    • <% end %>
    redmine-6.0.5/app/views/mailer/attachments_added.text.erb000066400000000000000000000001651500112024600234350ustar00rootroot00000000000000<%= @added_to %><% @attachments.each do |attachment | %> - <%= attachment.filename %><% end %> <%= @added_to_url %> redmine-6.0.5/app/views/mailer/document_added.html.erb000066400000000000000000000002371500112024600227200ustar00rootroot00000000000000<%= link_to(@document.title, @document_url) %> (<%= @document.category.name %>)

    <%= textilizable(@document, :description, :only_path => false) %> redmine-6.0.5/app/views/mailer/document_added.text.erb000066400000000000000000000001531500112024600227350ustar00rootroot00000000000000<%= @document.title %> (<%= @document.category.name %>) <%= @document_url %> <%= @document.description %> redmine-6.0.5/app/views/mailer/issue_add.html.erb000066400000000000000000000003711500112024600217200ustar00rootroot00000000000000<%= l(:text_issue_added, :id => link_to("##{@issue.id}", @issue_url), :author => h(@issue.author)).html_safe %>
    <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> redmine-6.0.5/app/views/mailer/issue_add.text.erb000066400000000000000000000003721500112024600217410ustar00rootroot00000000000000<%= l(:text_issue_added, :id => "##{@issue.id}", :author => @issue.author) %> ---------------------------------------- <%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> redmine-6.0.5/app/views/mailer/issue_edit.html.erb000066400000000000000000000010531500112024600221130ustar00rootroot00000000000000<% if @journal.private_notes? %> (<%= l(:field_private_notes) %>) <% end %> <%= l(:text_issue_updated, :id => link_to("##{@issue.id}", @issue_url), :author => h(@journal.user)).html_safe %>
      <% details_to_strings(@journal_details, false, :only_path => false).each do |string| %>
    • <%= string %>
    • <% end %>
    <%= textilizable(@journal, :notes, :only_path => false) %>
    <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> redmine-6.0.5/app/views/mailer/issue_edit.text.erb000066400000000000000000000007271500112024600221420ustar00rootroot00000000000000<%= "(#{l(:field_private_notes)}) " if @journal.private_notes? -%><%= l(:text_issue_updated, :id => "##{@issue.id}", :author => @journal.user) %> <% details_to_strings(@journal_details, true).each do |string| -%> <%= string %> <% end -%> <% if @journal.notes? -%> <%= @journal.notes %> <% end -%> ---------------------------------------- <%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> redmine-6.0.5/app/views/mailer/lost_password.html.erb000066400000000000000000000002761500112024600226670ustar00rootroot00000000000000

    <%= l(:mail_body_lost_password) %>
    <%= link_to @url, @url %>

    <%= l(:mail_body_lost_password_validity) %>

    <%= l(:field_login) %>: <%= @token.user.login %>

    redmine-6.0.5/app/views/mailer/lost_password.text.erb000066400000000000000000000002161500112024600227010ustar00rootroot00000000000000<%= l(:mail_body_lost_password) %> <%= @url %> <%= l(:mail_body_lost_password_validity) %> <%= l(:field_login) %>: <%= @token.user.login %> redmine-6.0.5/app/views/mailer/message_posted.html.erb000066400000000000000000000010511500112024600227560ustar00rootroot00000000000000

    <%= @message.board.project.name %> - <%= @message.board.name %>: <%= link_to(@message.subject, @message_url) %>

    <%= @message.author %> <%= textilizable(@message, :content, :only_path => false) %> <% if @message.attachments.any? -%>
    <%= l(:label_attachment_plural) %> <% @message.attachments.each do |attachment| -%> <%= link_to_attachment attachment, :download => true, :only_path => false %> (<%= number_to_human_size(attachment.filesize) %>)
    <% end -%>
    <% end -%> redmine-6.0.5/app/views/mailer/message_posted.text.erb000066400000000000000000000004631500112024600230040ustar00rootroot00000000000000<%= @message_url %> <%= @message.author %> <%= @message.content %> <% if @message.attachments.any? -%> ---<%= l(:label_attachment_plural).ljust(37, '-') %> <% @message.attachments.each do |attachment| -%> <%= attachment.filename %> (<%= number_to_human_size(attachment.filesize) %>) <% end -%> <% end -%> redmine-6.0.5/app/views/mailer/news_added.html.erb000066400000000000000000000007341500112024600220600ustar00rootroot00000000000000

    <%= link_to(@news.title, @news_url) %>

    <%= @news.author.name %> <%= textilizable(@news, :description, :only_path => false) %> <% if @news.attachments.any? -%>
    <%= l(:label_attachment_plural) %> <% @news.attachments.each do |attachment| -%> <%= link_to_attachment attachment, :download => true, :only_path => false %> (<%= number_to_human_size(attachment.filesize) %>)
    <% end -%>
    <% end -%>redmine-6.0.5/app/views/mailer/news_added.text.erb000066400000000000000000000004771500112024600221040ustar00rootroot00000000000000<%= @news.title %> <%= @news_url %> <%= @news.author.name %> <%= @news.description %> <% if @news.attachments.any? -%> ---<%= l(:label_attachment_plural).ljust(37, '-') %> <% @news.attachments.each do |attachment| -%> <%= attachment.filename %> (<%= number_to_human_size(attachment.filesize) %>) <% end -%> <% end -%>redmine-6.0.5/app/views/mailer/news_comment_added.html.erb000066400000000000000000000002571500112024600236020ustar00rootroot00000000000000

    <%= link_to(@news.title, @news_url) %>

    <%= l(:text_user_wrote, :value => h(@comment.author)) %>

    <%= textilizable @comment, :comments, :only_path => false %> redmine-6.0.5/app/views/mailer/news_comment_added.text.erb000066400000000000000000000001651500112024600236200ustar00rootroot00000000000000<%= @news.title %> <%= @news_url %> <%= l(:text_user_wrote, :value => @comment.author) %> <%= @comment.comments %> redmine-6.0.5/app/views/mailer/register.html.erb000066400000000000000000000001051500112024600215770ustar00rootroot00000000000000

    <%= l(:mail_body_register) %>
    <%= link_to @url, @url %>

    redmine-6.0.5/app/views/mailer/register.text.erb000066400000000000000000000000521500112024600216200ustar00rootroot00000000000000<%= l(:mail_body_register) %> <%= @url %> redmine-6.0.5/app/views/mailer/reminder.html.erb000066400000000000000000000006641500112024600215720ustar00rootroot00000000000000

    <%= l(:mail_body_reminder, :count => link_to(@issues.size, @reminder_issues_url), :days => @days).html_safe %>

      <% @issues.each do |issue| -%>
    • <%= link_to_issue(issue, :project => true, :only_path => false) %> (<%= due_date_distance_in_words(issue.due_date) %>)
    • <% end -%>

    <%= link_to l(:label_issue_view_all), @open_issues_url %> (<%= l(:label_x_open_issues_abbr, :count => @open_issues_count) %>)

    redmine-6.0.5/app/views/mailer/reminder.text.erb000066400000000000000000000005541500112024600216100ustar00rootroot00000000000000<%= l(:mail_body_reminder, :count => @issues.size, :days => @days) %>: <% @issues.each do |issue| -%> * <%= "#{issue.project} - #{issue.tracker} ##{issue.id}: #{issue.subject} (#{due_date_distance_in_words(issue.due_date)})" %> <% end -%> <%= l(:label_issue_view_all)%> (<%= l(:label_x_open_issues_abbr, :count => @open_issues_count) %>) <%= @open_issues_url %> redmine-6.0.5/app/views/mailer/security_notification.html.erb000066400000000000000000000006211500112024600243730ustar00rootroot00000000000000

    <%= @message %>
    <% if @url && @title -%> <%= link_to @title, @url -%> <% elsif @url -%> <%= link_to @url -%> <% elsif @title -%> <%= content_tag :h1, @title -%> <% end %>

    <%= l(:field_user) %>: <%= @sender.login %>
    <%= l(:field_remote_ip) %>: <%= @remote_ip %>
    <%= l(:label_date) %>: <%= format_time Time.now, true %>

    redmine-6.0.5/app/views/mailer/security_notification.text.erb000066400000000000000000000002731500112024600244160ustar00rootroot00000000000000<%= @message %> <%= @url || @title %> <%= l(:field_user) %>: <%= @sender.login %> <%= l(:field_remote_ip) %>: <%= @remote_ip %> <%= l(:label_date) %>: <%= format_time Time.now, true %> redmine-6.0.5/app/views/mailer/settings_updated.html.erb000066400000000000000000000005741500112024600233330ustar00rootroot00000000000000

    <%= l(:mail_body_settings_updated) %>

      <% @changes.each do |name| %>
    • <%= l("setting_#{name}") %>
    • <% end %>
    <%= link_to @url, @url %>

    <%= l(:field_user) %>: <%= @sender.login %>
    <%= l(:field_remote_ip) %>: <%= @remote_ip %>
    <%= l(:label_date) %>: <%= format_time Time.now, true %>

    redmine-6.0.5/app/views/mailer/settings_updated.text.erb000066400000000000000000000004211500112024600233420ustar00rootroot00000000000000<%= l(:mail_body_settings_updated) %> <% @changes.each do |name| %> * <%= l("setting_#{name}") %> <% end %> <%= @url %> <%= l(:field_user) %>: <%= @sender.login %> <%= l(:field_remote_ip) %>: <%= @remote_ip %> <%= l(:label_date) %>: <%= format_time Time.now, true %> redmine-6.0.5/app/views/mailer/test_email.html.erb000066400000000000000000000001321500112024600221010ustar00rootroot00000000000000

    This is a test email sent by Redmine.
    Redmine URL: <%= link_to @url, @url %>

    redmine-6.0.5/app/views/mailer/test_email.text.erb000066400000000000000000000000771500112024600221310ustar00rootroot00000000000000This is a test email sent by Redmine. Redmine URL: <%= @url %> redmine-6.0.5/app/views/mailer/wiki_content_added.html.erb000066400000000000000000000003661500112024600236020ustar00rootroot00000000000000

    <%= l(:mail_body_wiki_content_added, :id => link_to(@wiki_content.page.pretty_title, @wiki_content_url), :author => h(@wiki_content.author)).html_safe %>
    <%= @wiki_content.comments %>

    redmine-6.0.5/app/views/mailer/wiki_content_added.text.erb000066400000000000000000000003241500112024600236140ustar00rootroot00000000000000<%= l(:mail_body_wiki_content_added, :id => h(@wiki_content.page.pretty_title), :author => h(@wiki_content.author)) %> <%= @wiki_content.comments %> <%= @wiki_content_url %> redmine-6.0.5/app/views/mailer/wiki_content_updated.html.erb000066400000000000000000000005221500112024600241610ustar00rootroot00000000000000

    <%= l(:mail_body_wiki_content_updated, :id => link_to(@wiki_content.page.pretty_title, @wiki_content_url), :author => h(@wiki_content.author)).html_safe %>
    <%= @wiki_content.comments %>

    <%= l(:label_view_diff) %>:
    <%= link_to @wiki_diff_url, @wiki_diff_url %>

    redmine-6.0.5/app/views/mailer/wiki_content_updated.text.erb000066400000000000000000000004621500112024600242040ustar00rootroot00000000000000<%= l(:mail_body_wiki_content_updated, :id => h(@wiki_content.page.pretty_title), :author => h(@wiki_content.author)) %> <%= @wiki_content.comments %> <%= @wiki_content.page.pretty_title %>: <%= @wiki_content_url %> <%= l(:label_view_diff) %>: <%= @wiki_diff_url %> redmine-6.0.5/app/views/members/000077500000000000000000000000001500112024600165035ustar00rootroot00000000000000redmine-6.0.5/app/views/members/_edit.html.erb000066400000000000000000000015771500112024600212360ustar00rootroot00000000000000<%= form_for(@member, :url => membership_path(@member), :as => :membership, :remote => request.xhr?, :method => :put) do |f| %>

    <% @roles.each do |role| %> <% end %>

    <%= hidden_field_tag 'membership[role_ids][]', '', :id => nil %>

    <%= submit_tag l(:button_save) %> <%= link_to_function l(:button_cancel), "$('#member-#{@member.id}-roles').show(); $('#member-#{@member.id}-form').empty(); return false;" if request.xhr? %>

    <% end %> redmine-6.0.5/app/views/members/_new_form.html.erb000066400000000000000000000014421500112024600221140ustar00rootroot00000000000000
    <%= label_tag("principal_search", l(:label_principal_search)) %>

    <%= text_field_tag('principal_search', nil) %>

    <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
    <%= render_principals_for_new_members(@project) %>
    <%= toggle_checkboxes_link('.roles-selection input') %><%= l(:label_role_plural) %>
    <% User.current.managed_roles(@project).each do |role| %> <% end %>
    redmine-6.0.5/app/views/members/_new_modal.html.erb000066400000000000000000000006071500112024600222470ustar00rootroot00000000000000

    <%= l(:label_member_new) %>

    <%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post do |f| %> <%= render :partial => 'new_form' %>

    <%= submit_tag l(:button_add), :id => 'member-add-submit' %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/members/autocomplete.js.erb000066400000000000000000000001571500112024600223140ustar00rootroot00000000000000$('#principals_for_new_member').html('<%= escape_javascript(render_principals_for_new_members(@project)) %>'); redmine-6.0.5/app/views/members/create.js.erb000066400000000000000000000010121500112024600210450ustar00rootroot00000000000000$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); hideOnLoad(); <% if @members.present? && @members.all? {|m| m.valid? } %> hideModal(); <% @members.each do |member| %> $("#member-<%= member.id %>").effect("highlight"); <% end %> <% elsif @members.present? %> <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); <% end %> redmine-6.0.5/app/views/members/destroy.js.erb000066400000000000000000000001721500112024600213010ustar00rootroot00000000000000$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); hideOnLoad(); redmine-6.0.5/app/views/members/edit.html.erb000066400000000000000000000001331500112024600210620ustar00rootroot00000000000000<%= title "#{@member.principal} - #{@member.project}" %> <%= render :partial => 'edit' %> redmine-6.0.5/app/views/members/edit.js.erb000066400000000000000000000002171500112024600205350ustar00rootroot00000000000000$("#member-<%= @member.id %>-roles").hide(); $("#member-<%= @member.id %>-form").html("<%= escape_javascript(render :partial => "edit") %>"); redmine-6.0.5/app/views/members/index.api.rsb000066400000000000000000000013621500112024600210740ustar00rootroot00000000000000api.array :memberships, api_meta(:total_count => @member_count, :offset => @offset, :limit => @limit) do @members.each do |membership| api.membership do api.id membership.id api.project :id => membership.project.id, :name => membership.project.name api.__send__ membership.principal.class.name.underscore, :id => membership.principal.id, :name => membership.principal.name api.array :roles do membership.member_roles.each do |member_role| if member_role.role attrs = {:id => member_role.role.id, :name => member_role.role.name} attrs.merge!(:inherited => true) if member_role.inherited_from.present? api.role attrs end end end end end end redmine-6.0.5/app/views/members/new.html.erb000066400000000000000000000004001500112024600207230ustar00rootroot00000000000000

    <%= l(:label_member_new) %>

    <%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :method => :post do |f| %> <%= render :partial => 'new_form' %>

    <%= submit_tag l(:button_add), :name => nil %>

    <% end %> redmine-6.0.5/app/views/members/new.js.erb000066400000000000000000000001731500112024600204020ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'members/new_modal') %>'); showModal('ajax-modal', '90%'); redmine-6.0.5/app/views/members/show.api.rsb000066400000000000000000000010221500112024600207360ustar00rootroot00000000000000api.membership do api.id @member.id api.project :id => @member.project.id, :name => @member.project.name api.__send__ @member.principal.class.name.underscore, :id => @member.principal.id, :name => @member.principal.name api.array :roles do @member.member_roles.each do |member_role| if member_role.role attrs = {:id => member_role.role.id, :name => member_role.role.name} attrs.merge!(:inherited => true) if member_role.inherited_from.present? api.role attrs end end end end redmine-6.0.5/app/views/members/update.js.erb000066400000000000000000000002561500112024600210750ustar00rootroot00000000000000$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); hideOnLoad(); $("#member-<%= @member.id %>").effect("highlight"); redmine-6.0.5/app/views/messages/000077500000000000000000000000001500112024600166605ustar00rootroot00000000000000redmine-6.0.5/app/views/messages/_form.html.erb000066400000000000000000000026121500112024600214200ustar00rootroot00000000000000<%= error_messages_for 'message' %> <% replying ||= false %>


    <%= f.text_field :subject, :size => 120, :id => "message_subject" %> <% unless replying %> <% if @message.safe_attribute? 'sticky' %> <%= f.check_box :sticky %> <%= label_tag 'message_sticky', l(:label_board_sticky) %> <% end %> <% if @message.safe_attribute? 'locked' %> <%= f.check_box :locked %> <%= label_tag 'message_locked', l(:label_board_locked) %> <% end %> <% end %>

    <% if !replying && !@message.new_record? && @message.safe_attribute?('board_id') %>


    <%= f.select :board_id, boards_options_for_select(@message.project.boards) %>

    <% end %>

    <%= label_tag "message_content", l(:description_message_content), :class => "hidden-for-sighted" %> <%= f.text_area :content, :cols => 80, :rows => 15, :class => 'wiki-edit', :id => 'message_content', :accesskey => accesskey(:edit), :data => { :auto_complete => true } %>

    <%= wikitoolbar_for 'message_content', preview_board_message_path(:board_id => @board, :id => @message) %>

    <%= l(:label_attachment_plural) %>
    <%= render :partial => 'attachments/form', :locals => {:container => @message} %>

    redmine-6.0.5/app/views/messages/edit.html.erb000066400000000000000000000007721500112024600212500ustar00rootroot00000000000000<%= board_breadcrumb(@message) %>

    <%= avatar(@topic.author) %><%= @topic.subject %>

    <%= form_for @message, { :as => :message, :url => {:action => 'edit'}, :html => {:multipart => true, :id => 'message-form', :method => :post} } do |f| %> <%= render :partial => 'form', :locals => {:f => f, :replying => !@message.parent.nil?} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/messages/new.html.erb000066400000000000000000000005701500112024600211100ustar00rootroot00000000000000

    <%= link_to @board.name, :controller => 'boards', :action => 'show', :project_id => @project, :id => @board %> » <%= l(:label_message_new) %>

    <%= form_for @message, :url => {:action => 'new'}, :html => {:multipart => true, :id => 'message-form'} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/messages/quote.js.erb000066400000000000000000000004421500112024600211220ustar00rootroot00000000000000$('#message_subject').val("<%= raw escape_javascript(@subject) %>"); $('#message_content').val("<%= raw escape_javascript(@content) %>"); showAndScrollTo("reply", "message_content"); $('#message_content').scrollTop = $('#message_content').scrollHeight - $('#message_content').clientHeight; redmine-6.0.5/app/views/messages/show.html.erb000066400000000000000000000077741500112024600213140ustar00rootroot00000000000000<% content_for :header_tags do %> <%= javascripts_for_quote_reply_include_tag %> <% end %> <%= board_breadcrumb(@message) %>
    <%= watcher_link(@topic, User.current) %> <%= quote_reply( url_for(:action => 'quote', :id => @topic, :format => 'js'), '#message_topic_wiki' ) if !@topic.locked? && authorize_for('messages', 'reply') %> <%= link_to( sprite_icon('edit', l(:button_edit)), {:action => 'edit', :id => @topic}, :class => 'icon icon-edit' ) if @message.editable_by?(User.current) %> <%= link_to( sprite_icon('del', l(:button_delete)), {:action => 'destroy', :id => @topic}, :method => :post, :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del' ) if @message.destroyable_by?(User.current) %>

    <%= avatar(@topic.author) %><%= @topic.subject %>

    <%= authoring @topic.created_on, @topic.author %>

    <%= textilizable(@topic, :content) %>
    <%= link_to_attachments @topic, :author => false, :thumbnails => true %>

    <% unless @replies.empty? %>

    <%= sprite_icon('comments', l(:label_reply_plural)) %> (<%= @reply_count %>)

    <% if !@topic.locked? && authorize_for('messages', 'reply') && @replies.size >= 3 %>

    <%= toggle_link l(:button_reply), "reply", :focus => 'message_content', :scroll => "message_content" %>

    <% end %> <% @replies.each do |message| %>
    ">
    <%= quote_reply( url_for(:action => 'quote', :id => message, :format => 'js'), "#message-#{message.id} .wiki", icon_only: true ) if !@topic.locked? && authorize_for('messages', 'reply') %> <%= link_to( sprite_icon('edit', l(:button_edit), icon_only: true), {:action => 'edit', :id => message}, :title => l(:button_edit), :class => 'icon icon-edit' ) if message.editable_by?(User.current) %> <%= link_to( sprite_icon('del', l(:button_delete), icon_only: true), {:action => 'destroy', :id => message}, :method => :post, :data => {:confirm => l(:text_are_you_sure)}, :title => l(:button_delete), :class => 'icon icon-del' ) if message.destroyable_by?(User.current) %>

    <%= avatar(message.author) %> <%= link_to message.subject, { :controller => 'messages', :action => 'show', :board_id => @board, :id => @topic, :r => message, :anchor => "message-#{message.id}" } %> - <%= authoring message.created_on, message.author %>

    <%= textilizable message, :content, :attachments => message.attachments %>
    <%= link_to_attachments message, :author => false, :thumbnails => true %>
    <% end %>
    <%= pagination_links_full @reply_pages, @reply_count, :per_page_links => false %> <% end %> <% if !@topic.locked? && authorize_for('messages', 'reply') %>

    <%= toggle_link l(:button_reply), "reply", :focus => 'message_content' %>

    <% end %> <% html_title @topic.subject %> <% content_for :sidebar do %> <% if User.current.allowed_to?(:add_message_watchers, @project) || (@topic.watchers.present? && User.current.allowed_to?(:view_message_watchers, @project)) %>
    <%= render :partial => 'watchers/watchers', :locals => {:watched => @topic} %>
    <% end %> <% end %> redmine-6.0.5/app/views/my/000077500000000000000000000000001500112024600154765ustar00rootroot00000000000000redmine-6.0.5/app/views/my/_sidebar.html.erb000066400000000000000000000023351500112024600207060ustar00rootroot00000000000000

    <%=l(:label_my_account)%>

    <%=l(:field_login)%>: <%= link_to_user(@user, :format => :username) %>
    <%=l(:field_created_on)%>: <%= format_time(@user.created_on) %>

    <% if @user.own_account_deletable? %>

    <%= link_to(sprite_icon('del', l(:button_delete_my_account)), delete_my_account_path, :class => 'icon icon-del') %>

    <% end %>

    <%= l(:label_feeds_access_key) %>

    <% if @user.atom_token %> <%= l(:label_feeds_access_key_created_on, distance_of_time_in_words(Time.now, @user.atom_token.created_on)) %> <% else %> <%= l(:label_missing_feeds_access_key) %> <% end %> (<%= link_to l(:button_reset), my_atom_key_path, :method => :post %>)

    <% if Setting.rest_api_enabled? %>

    <%= l(:label_api_access_key) %>

    <%= link_to l(:button_show), my_api_key_path, :remote => true %>
    
    
    <%= javascript_tag("$('#api-access-key').hide();") %>

    <% if @user.api_token %> <%= l(:label_api_access_key_created_on, distance_of_time_in_words(Time.now, @user.api_token.created_on)) %> <% else %> <%= l(:label_missing_api_access_key) %> <% end %> (<%= link_to l(:button_reset), my_api_key_path, :method => :post %>)

    <% end %> redmine-6.0.5/app/views/my/account.api.rsb000066400000000000000000000005561500112024600204200ustar00rootroot00000000000000api.user do api.id @user.id api.login @user.login api.admin @user.admin? api.firstname @user.firstname api.lastname @user.lastname api.mail @user.mail api.created_on @user.created_on api.last_login_on @user.last_login_on api.api_key @user.api_key render_api_custom_values @user.visible_custom_field_values, api end redmine-6.0.5/app/views/my/account.html.erb000066400000000000000000000056141500112024600205750ustar00rootroot00000000000000
    <%= additional_emails_link(@user) %> <%= link_to(sprite_icon('key', l(:button_change_password)), { :action => 'password'}, :class => 'icon icon-passwd') if @user.change_password_allowed? %> <%= call_hook(:view_my_account_contextual, :user => @user)%>

    <%= avatar_edit_link(@user, :size => "50") %> <%=l(:label_my_account)%>

    <%= error_messages_for 'user' %> <%= labelled_form_for :user, @user, :url => { :action => "account" }, :html => { :id => 'my_account_form', :method => :put, :multipart => true } do |f| %>
    <%=l(:label_information_plural)%>

    <%= f.text_field :firstname, :required => true %>

    <%= f.text_field :lastname, :required => true %>

    <%= f.text_field :mail, :required => true %>

    <% unless @user.force_default_language? %>

    <%= f.select :language, lang_options_for_select %>

    <% end %> <% if Setting.twofa? -%>

    <% if @user.twofa_active? %> <%=l 'twofa_currently_active', twofa_scheme_name: l("twofa__#{@user.twofa_scheme}__name") -%>
    <%= link_to l('button_disable'), { controller: 'twofa', action: 'deactivate_init', scheme: @user.twofa_scheme }, method: :post -%>
    <%= link_to l('twofa_generate_backup_codes'), { controller: 'twofa_backup_codes', action: 'init' }, method: :post, data: { confirm: Redmine::Twofa.for_user(User.current).backup_codes.any? ? t('twofa_text_generate_backup_codes_confirmation') : nil } -%> <% else %> <% Redmine::Twofa.available_schemes.each do |s| %> <%= link_to l("twofa__#{s}__label_activate"), { controller: 'twofa', action: 'activate_init', scheme: s }, method: :post -%>
    <% end %> <% end %>

    <% end -%> <% @user.custom_field_values.select(&:editable?).each do |value| %>

    <%= custom_field_tag_with_label :user, value %>

    <% end %> <%= call_hook(:view_my_account, :user => @user, :form => f) %>

    <%= submit_tag l(:button_save) %>

    <%=l(:field_mail_notification)%> <%= render :partial => 'users/mail_notifications' %>
    <%=l(:label_auto_watch_on)%> <%= render :partial => 'users/auto_watch_on' %>
    <%=l(:label_preferences)%> <%= render :partial => 'users/preferences' %> <%= call_hook(:view_my_account_preferences, :user => @user, :form => f) %>

    <%= submit_tag l(:button_save) %>

    <% end %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% end %> <% html_title(l(:label_my_account)) -%> redmine-6.0.5/app/views/my/add_block.js.erb000066400000000000000000000003351500112024600205060ustar00rootroot00000000000000$("#block-<%= escape_javascript @block %>").remove(); $("#list-top").prepend("<%= escape_javascript render_blocks([@block], @user) %>"); $("#block-select").replaceWith("<%= escape_javascript block_select_tag(@user) %>"); redmine-6.0.5/app/views/my/blocks/000077500000000000000000000000001500112024600167535ustar00rootroot00000000000000redmine-6.0.5/app/views/my/blocks/_activity.html.erb000066400000000000000000000004461500112024600224070ustar00rootroot00000000000000

    <%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => User.current, :from => events_by_day.keys.first %>

    <%= render :partial => 'activities/activities', :locals => {:events_by_day => events_by_day} %> redmine-6.0.5/app/views/my/blocks/_calendar.html.erb000066400000000000000000000001651500112024600223220ustar00rootroot00000000000000

    <%= l(:label_calendar) %>

    <%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %> redmine-6.0.5/app/views/my/blocks/_documents.html.erb000066400000000000000000000002231500112024600225450ustar00rootroot00000000000000

    <%=l(:label_document_plural)%>

    <%= render :partial => 'documents/document', :collection => documents %>
    redmine-6.0.5/app/views/my/blocks/_issue_query_selection.html.erb000066400000000000000000000007461500112024600252000ustar00rootroot00000000000000

    <%= l(:label_issue_plural) %>

    <%= form_tag(my_page_path, :remote => true) do %>

    <%= submit_tag l(:button_save) %>

    <% end %>
    redmine-6.0.5/app/views/my/blocks/_issues.erb000066400000000000000000000027551500112024600211300ustar00rootroot00000000000000
    <%= link_to_function sprite_icon('settings', l(:label_options)), "$('##{block}-settings').toggle();", :class => 'icon-only icon-settings', :title => l(:label_options) %>

    <%= "#{query.project} |" if query.project %> <%= link_to query.name, _project_issues_path(query.project, query.as_params) %> (<%= query.issue_count %>)

    <% if issues.any? %> <%= render :partial => 'issues/list', :locals => { :issues => issues, :query => query, :query_options => { :sort_param => "settings[#{block}][sort]", :sort_link_options => {:method => :post, :remote => true} } } %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, _project_issues_path(query.project, query.as_params.merge(:format => 'atom', :key => User.current.atom_key)), {:title => query.name}) %> <% end %> redmine-6.0.5/app/views/my/blocks/_news.html.erb000066400000000000000000000001401500112024600215160ustar00rootroot00000000000000

    <%=l(:label_news_latest)%>

    <%= render :partial => 'news/news', :collection => news %> redmine-6.0.5/app/views/my/blocks/_timelog.html.erb000066400000000000000000000046021500112024600222110ustar00rootroot00000000000000
    <%= link_to_function sprite_icon('settings', l(:label_options)), "$('#timelog-settings').toggle();", :class => 'icon-only icon-settings', :title => l(:label_options) %>

    <%= link_to l(:label_spent_time), time_entries_path(:user_id => 'me') %> (<%= l(:label_last_n_days, days) %>: <%= l_hours_short entries.sum(&:hours) %>) <%= link_to sprite_icon('time-add', l(:button_log_time)), new_time_entry_path, :class => "icon-only icon-add", :title => l(:button_log_time) if User.current.allowed_to?(:log_time, nil, :global => true) %>

    <% if entries.any? %> <%= form_tag({}, :data => {:cm_url => time_entries_context_menu_path}) do %> <% entries_by_day.keys.sort.reverse_each do |day| %> <% entries_by_day[day].each do |entry| -%> <% end -%> <% end -%>
    <%= l(:field_activity) %> <%= l(:label_project) %> <%= l(:field_comments) %> <%= l(:field_hours) %>
    <%= day == User.current.today ? l(:label_today).titleize : format_date(day) %> <%= html_hours(format_hours(entries_by_day[day].sum(&:hours))) %>
    <%= check_box_tag("ids[]", entry.id, false, :style => 'display:none;', :id => nil) %> <%= entry.activity %> <%= entry.project %> <%= h(' - ') + link_to_issue(entry.issue, :truncate => 50) if entry.issue %> <%= entry.comments %> <%= html_hours(format_hours(entry.hours)) %> <%= link_to_context_menu %>
    <% end %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/my/destroy.html.erb000066400000000000000000000005621500112024600206270ustar00rootroot00000000000000

    <%=l(:label_confirmation)%>

    <%= simple_format l(:text_account_destroy_confirmation)%>

    <%= form_tag({}) do %> <%= submit_tag l(:button_delete_my_account) %> | <%= link_to l(:button_cancel), :action => 'account' %> <% end %>

    redmine-6.0.5/app/views/my/page.html.erb000066400000000000000000000030211500112024600200430ustar00rootroot00000000000000
    <%= form_tag({:action => "add_block"}, :remote => true, :id => "block-form", authenticity_token: true) do %> <%= label_tag('block-select', l(:button_add)) %>: <%= block_select_tag(@user) %> <% end %> <%= call_hook(:view_my_page_contextual, :user => @user) %>

    <%=l(:label_my_page)%>

    <% @groups.each do |group| %>
    <%= render_blocks(@blocks[group], @user) %>
    <% end %> <%= call_hook(:view_my_page_splitcontent, :user => @user) %>
    <%= context_menu %> <%= javascript_tag do %> $(document).ready(function(){ $('#block-select').val(''); $('.block-receiver').sortable({ connectWith: '.block-receiver', tolerance: 'pointer', handle: '.sort-handle', start: function(event, ui){$(this).parent().addClass('dragging');}, stop: function(event, ui){$(this).parent().removeClass('dragging');}, update: function(event, ui){ // trigger the call on the list that receives the block only if ($(this).find(ui.item).length > 0) { $.ajax({ url: "<%= escape_javascript url_for(:action => "order_blocks") %>", type: 'post', data: { 'group': $(this).attr('id').replace(/^list-/, ''), 'blocks': $.map($(this).children(), function(el){return $(el).attr('id').replace(/^block-/, '');}) } }); } } }); }); <% end %> <% html_title(l(:label_my_page)) -%> redmine-6.0.5/app/views/my/password.html.erb000066400000000000000000000024071500112024600210000ustar00rootroot00000000000000

    <%=l(:button_change_password)%>

    <%= error_messages_for 'user' %> <%= form_tag({}, :class => "tabular") do %>

    <%= password_field_tag 'password', nil, :size => 25, :autocomplete => 'current-password' %>

    <%= password_field_tag 'new_password', nil, :size => 25, :autocomplete => 'new-password' %> <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %> <% if Setting.password_required_char_classes.any? %> <%= l(:text_characters_must_contain, :character_classes => Setting.password_required_char_classes.collect{|c| l("label_password_char_class_#{c}")}.join(", ")) %> <% end %>

    <%= password_field_tag 'new_password_confirmation', nil, :size => 25, :autocomplete => 'new-password' %>

    <%= submit_tag l(:button_apply) %> <% end %> <% unless @user.must_change_password? %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% end %> <% end %> redmine-6.0.5/app/views/my/remove_block.js.erb000066400000000000000000000002121500112024600212450ustar00rootroot00000000000000$("#block-<%= escape_javascript @block %>").remove(); $("#block-select").replaceWith("<%= escape_javascript block_select_tag(@user) %>"); redmine-6.0.5/app/views/my/show_api_key.html.erb000066400000000000000000000002361500112024600216150ustar00rootroot00000000000000

    <%= l :label_api_access_key %>

    <%= @user.api_key %>

    <%= link_to l(:button_back), action: 'account' %>

    redmine-6.0.5/app/views/my/show_api_key.js.erb000066400000000000000000000001161500112024600212620ustar00rootroot00000000000000$('#api-access-key').html('<%= escape_javascript @user.api_key %>').toggle(); redmine-6.0.5/app/views/my/update_page.js.erb000066400000000000000000000002241500112024600210570ustar00rootroot00000000000000<% @updated_blocks.each do |block| %> $("#block-<%= block %>").replaceWith("<%= escape_javascript render_block(block.to_s, @user) %>"); <% end %> redmine-6.0.5/app/views/news/000077500000000000000000000000001500112024600160255ustar00rootroot00000000000000redmine-6.0.5/app/views/news/_form.html.erb000066400000000000000000000017731500112024600205740ustar00rootroot00000000000000<%= error_messages_for @news %>
    <% if @project.nil? %>

    <%= select_tag :project_id, options_for_select(project_tree_options_for_select(Project.allowed_to(:manage_news).to_a), Project.allowed_to(:manage_news).first), {:required => true} %> <%= hidden_field_tag :cross_project, 1, id: nil %>

    <% end %>

    <%= f.text_field :title, :required => true, :size => 60 %>

    <%= f.text_area :summary, :cols => 60, :rows => 2 %>

    <%= f.text_area :description, :required => true, :cols => 60, :rows => 15, :class => 'wiki-edit', :data => { :auto_complete => true } %>

    <%= render :partial => 'attachments/form', :locals => {:container => @news} %>

    <%= wikitoolbar_for 'news_description', preview_news_path(:project_id => @project, :id => @news) %> redmine-6.0.5/app/views/news/_news.html.erb000066400000000000000000000006431500112024600206000ustar00rootroot00000000000000

    <%= link_to_project(news.project) + ': ' unless @project %> <%= link_to news.title, news_path(news) %> <% if news.comments_count > 0 %>(<%= l(:label_x_comments, :count => news.comments_count) %>)<% end %>
    <% unless news.summary.blank? %><%= news.summary %>
    <% end %> <%= authoring news.created_on, news.author %>

    redmine-6.0.5/app/views/news/edit.html.erb000066400000000000000000000004771500112024600204170ustar00rootroot00000000000000

    <%=l(:label_news)%>

    <%= labelled_form_for @news, :html => { :id => 'news-form', :multipart => true, :method => :put } do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> <% end %> redmine-6.0.5/app/views/news/index.api.rsb000066400000000000000000000010001500112024600204030ustar00rootroot00000000000000api.array :news, api_meta(:total_count => @news_count, :offset => @offset, :limit => @limit) do @newss.each do |news| api.news do api.id news.id api.project(:id => news.project_id, :name => news.project.name) unless news.project.nil? api.author(:id => news.author_id, :name => news.author.name) unless news.author.nil? api.title news.title api.summary news.summary api.description news.description api.created_on news.created_on end end end redmine-6.0.5/app/views/news/index.html.erb000066400000000000000000000040361500112024600205740ustar00rootroot00000000000000
    <%= link_to(sprite_icon('add', l(:label_news_new)), (@project ? project_news_index_path(@project) : news_index_path), :class => 'icon icon-add add-news-link', :onclick => 'showAndScrollTo("add-news", "news_title"); return false;') if User.current.allowed_to?(:manage_news, @project, global: true) %> <%= watcher_link(@project.enabled_module('news'), User.current) if @project && User.current.logged? %>

    <%=l(:label_news_plural)%>

    <% if @newss.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <% @newss.each do |news| %>

    <%= avatar(news.author) %><%= link_to_project(news.project) + ': ' unless news.project == @project %> <%= link_to h(news.title), news_path(news) %> <%= "(#{l(:label_x_comments, :count => news.comments_count)})" if news.comments_count > 0 %>

    <%= authoring news.created_on, news.author %>

    <%= textilizable(news, :description) %>
    <% end %> <% end %> <%= pagination_links_full @news_pages %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:project_id => @project, :key => User.current.atom_key} %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, _project_news_path(@project, :key => User.current.atom_key, :format => 'atom')) %> <%= stylesheet_link_tag 'scm' %> <% end %> <% html_title(l(:label_news_plural)) -%> redmine-6.0.5/app/views/news/new.html.erb000066400000000000000000000005421500112024600202540ustar00rootroot00000000000000

    <%=l(:label_news_new)%>

    <%= labelled_form_for @news, :url => (@project ? project_news_index_path(@project) : news_index_path), :html => { :id => 'news-form', :multipart => true } do |f| %> <%= render :partial => 'news/form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/news/show.api.rsb000066400000000000000000000015111500112024600202630ustar00rootroot00000000000000api.news do api.id @news.id api.project(:id => @news.project_id, :name => @news.project.name) unless @news.project.nil? api.author(:id => @news.author_id, :name => @news.author.name) unless @news.author.nil? api.title @news.title api.summary @news.summary unless @news.summary.blank? api.description @news.description api.created_on @news.created_on api.array :attachments do @news.attachments.each do |attachment| render_api_attachment(attachment, api) end end if include_in_api_response?('attachments') api.array :comments do @comments.each do |comment| api.comment :id => comment.id do api.author(:id => comment.author_id, :name => comment.author.name) unless comment.author.nil? api.content comment.content end end end if include_in_api_response?('comments') end redmine-6.0.5/app/views/news/show.html.erb000066400000000000000000000060141500112024600204430ustar00rootroot00000000000000<%= breadcrumb link_to(l(:label_news_plural), project_news_index_path(@project)) %>
    <%= watcher_link(@news, User.current) %> <%= link_to(sprite_icon('edit', l(:button_edit)), edit_news_path(@news), :class => 'icon icon-edit', :accesskey => accesskey(:edit), :onclick => '$("#edit-news").show(); return false;') if User.current.allowed_to?(:manage_news, @project) %> <%= delete_link news_path(@news) if User.current.allowed_to?(:manage_news, @project) %>

    <%= avatar(@news.author) %> <%=h @news.title %>

    <% if authorize_for('news', 'edit') %> <% end %>

    <% unless @news.summary.blank? %><%= @news.summary %>
    <% end %> <%= authoring @news.created_on, @news.author %>

    <%= textilizable(@news, :description) %>
    <%= link_to_attachments @news %>

    <%= l(:label_comment_plural) %>

    <% if @news.commentable? && @comments.size >= 3 %>

    <%= toggle_link l(:label_comment_add), "add_comment_form", :focus => "comment_comments", :scroll => "comment_comments" %>

    <% end %> <% @comments.each do |comment| %> <% next if comment.new_record? %>
    <%= link_to_if_authorized sprite_icon('del', l(:button_delete)), { :controller => 'comments', :action => 'destroy', :id => @news, :comment_id => comment}, :data => {:confirm => l(:text_are_you_sure)}, :method => :delete, :title => l(:button_delete), :class => 'icon-only icon-del' %>

    <%= avatar(comment.author) %><%= authoring comment.created_on, comment.author %>

    <%= textilizable(comment.comments) %>
    <% end if @comments.any? %>
    <% if @news.commentable? %>

    <%= toggle_link l(:label_comment_add), "add_comment_form", :focus => "comment_comments" %>

    <%= form_tag({:controller => 'comments', :action => 'create', :id => @news}, :id => "add_comment_form", :style => "display:none;") do %>
    <%= text_area 'comment', 'comments', :cols => 80, :rows => 15, :class => 'wiki-edit', :data => { :auto_complete => true } %> <%= wikitoolbar_for 'comment_comments', preview_news_path(:project_id => @project, :id => @news) %>

    <%= submit_tag l(:button_add) %>

    <% end %> <% end %> <% html_title @news.title -%> <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> <% end %> redmine-6.0.5/app/views/principal_memberships/000077500000000000000000000000001500112024600214305ustar00rootroot00000000000000redmine-6.0.5/app/views/principal_memberships/_edit.html.erb000066400000000000000000000016251500112024600241550ustar00rootroot00000000000000<%= form_for(@membership, :url => principal_membership_path(@principal, @membership), :as => :membership, :remote => request.xhr?, :method => :put) do %>

    <% @roles.each do |role| %> <% end %>

    <%= hidden_field_tag 'membership[role_ids][]', '', :id => nil %>

    <%= submit_tag l(:button_save) %> <%= link_to_function l(:button_cancel), "$('#member-#{@membership.id}-roles').show(); $('#member-#{@membership.id}-form').empty(); return false;" if request.xhr? %>

    <% end %> redmine-6.0.5/app/views/principal_memberships/_index.html.erb000066400000000000000000000026521500112024600243400ustar00rootroot00000000000000<% memberships = principal.memberships.preload(:member_roles, :roles).sorted_by_project.to_a %>

    <%= link_to sprite_icon('add', l(:label_add_projects)), new_principal_membership_path(principal), :remote => true, :class => "icon icon-add" %>

    <% if memberships.any? %> <%= call_table_header_hook principal %> <% memberships.each do |membership| %> <% next if membership.new_record? %> <%= call_table_row_hook principal, membership %> <% end %>
    <%= l(:label_project) %> <%= l(:label_role_plural) %>
    <%= link_to_project membership.project %> <%=h membership.roles.sort.collect(&:to_s).join(', ') %>
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_principal_membership_path(principal, membership), :remote => true, :class => 'icon icon-edit' %> <%= delete_link principal_membership_path(principal, membership), :remote => true if membership.deletable? %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/principal_memberships/_new_form.html.erb000066400000000000000000000014631500112024600250440ustar00rootroot00000000000000
    <%= toggle_checkboxes_link('.projects-selection input:enabled') %><%= l(:label_project_plural) %>
    <%= render_project_nested_lists(@projects) do |p| %> <% end %>
    <%= toggle_checkboxes_link('.roles-selection input') %><%= l(:label_role_plural) %>
    <% @roles.each do |role| %> <% end %>
    redmine-6.0.5/app/views/principal_memberships/_new_modal.html.erb000066400000000000000000000005521500112024600251730ustar00rootroot00000000000000

    <%= l(:label_add_projects) %>

    <%= form_for :membership, :remote => true, :url => user_memberships_path(@principal), :method => :post do |f| %> <%= render :partial => 'new_form' %>

    <%= submit_tag l(:button_add), :name => nil %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/principal_memberships/create.js.erb000066400000000000000000000010731500112024600240010ustar00rootroot00000000000000$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'principal_memberships/index', :locals => {:principal => @principal}) %>'); hideOnLoad(); <% if @members.present? && @members.all? {|m| m.persisted? } %> hideModal(); <% @members.each do |member| %> $("#member-<%= member.id %>").effect("highlight"); <% end %> <% elsif @members.present? %> <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); <% end %> redmine-6.0.5/app/views/principal_memberships/destroy.js.erb000066400000000000000000000002311500112024600242220ustar00rootroot00000000000000$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'principal_memberships/index', :locals => {:principal => @principal}) %>'); redmine-6.0.5/app/views/principal_memberships/edit.html.erb000066400000000000000000000001431500112024600240100ustar00rootroot00000000000000<%= title "#{@membership.principal} - #{@membership.project}" %> <%= render :partial => 'edit' %> redmine-6.0.5/app/views/principal_memberships/edit.js.erb000066400000000000000000000002261500112024600234620ustar00rootroot00000000000000$("#member-<%= @membership.id %>-roles").hide(); $("#member-<%= @membership.id %>-form").html("<%= escape_javascript(render :partial => "edit") %>"); redmine-6.0.5/app/views/principal_memberships/new.html.erb000066400000000000000000000003611500112024600236560ustar00rootroot00000000000000

    <%= l(:label_add_projects) %>

    <%= form_for :membership, :url => user_memberships_path(@principal), :method => :post do |f| %> <%= render :partial => 'new_form' %>

    <%= submit_tag l(:button_add), :name => nil %>

    <% end %> redmine-6.0.5/app/views/principal_memberships/new.js.erb000066400000000000000000000011071500112024600233250ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'principal_memberships/new_modal') %>'); showModal('ajax-modal', '700px'); $('.projects-selection').on('click', 'input[type=checkbox]', function(e){ if (!$(this).is(':checked')) { if ($(this).closest('li').find('ul input[type=checkbox]:not(:checked)').length > 0) { $(this).closest('li').find('ul input[type=checkbox]:not(:checked)').attr('checked', 'checked'); e.preventDefault(); } else { $(this).closest('li').find('ul input[type=checkbox]:checked').removeAttr('checked'); } } }); redmine-6.0.5/app/views/principal_memberships/update.js.erb000066400000000000000000000007731500112024600240260ustar00rootroot00000000000000<% if @membership.destroyed? %> $("#member-<%= @membership.id %>").remove(); <% elsif @membership.valid? %> $("#member-<%= @membership.id %>-form").empty(); $("#member-<%= @membership.id %>-roles").html("<%= escape_javascript @membership.roles.sort.collect(&:to_s).join(', ') %>").show(); $("#member-<%= @membership.id %>").effect("highlight"); <% else %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))) %>'); <% end %> redmine-6.0.5/app/views/projects/000077500000000000000000000000001500112024600167025ustar00rootroot00000000000000redmine-6.0.5/app/views/projects/_board.html.erb000066400000000000000000000001151500112024600215620ustar00rootroot00000000000000
    <%= render_project_hierarchy(@entries) %>
    redmine-6.0.5/app/views/projects/_edit.html.erb000066400000000000000000000002551500112024600214250ustar00rootroot00000000000000<%= labelled_form_for @project, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/projects/_form.html.erb000066400000000000000000000052251500112024600214450ustar00rootroot00000000000000<%= error_messages_for 'project' %>

    <%= f.text_field :name, :required => true, :size => 60 %>

    <%= f.text_area :description, :rows => 8, :class => 'wiki-edit' %>

    <%= f.text_field :identifier, :required => true, :size => 60, :disabled => @project.identifier_frozen?, :maxlength => Project::IDENTIFIER_MAX_LENGTH %> <% unless @project.identifier_frozen? %> <%= l(:text_length_between, :min => 1, :max => Project::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_project_identifier_info).html_safe %> <% end %>

    <%= f.text_field :homepage, :size => 60 %>

    <%= f.check_box :is_public, :disabled => !@project.safe_attribute?(:is_public) %> <%= Setting.login_required? ? l(:text_project_is_public_non_member) : l(:text_project_is_public_anonymous) %>

    <% unless @project.allowed_parents.compact.empty? %>

    <%= label(:project, :parent_id, l(:field_parent)) %><%= parent_project_select_tag(@project) %>

    <% end %> <% if @project.safe_attribute? 'inherit_members' %>

    <%= f.check_box :inherit_members %>

    <% end %> <%= wikitoolbar_for 'project_description' %> <% @project.visible_custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :project, value %>

    <% end %> <%= call_hook(:view_projects_form, :project => @project, :form => f) %>
    <% if @project.safe_attribute?('enabled_module_names') %>
    <%= toggle_checkboxes_link('#project_modules input[type="checkbox"]') %><%= l(:label_module_plural) %> <% Redmine::AccessControl.available_project_modules.each do |m| %> <% end %> <%= hidden_field_tag 'project[enabled_module_names][]', '' %>
    <% end %> <% unless @project.identifier_frozen? %> <% content_for :header_tags do %> <%= javascript_include_tag 'project_identifier' %> <% end %> <% end %> <% if !User.current.admin? && @project.inherit_members? && @project.parent && User.current.member_of?(@project.parent) %> <%= javascript_tag do %> $(document).ready(function() { $("#project_inherit_members").change(function(){ if (!$(this).is(':checked')) { if (!confirm("<%= escape_javascript(l(:text_own_membership_delete_confirmation)) %>")) { $("#project_inherit_members").attr("checked", true); } } }); }); <% end %> <% end %> redmine-6.0.5/app/views/projects/_list.html.erb000066400000000000000000000065651500112024600214650ustar00rootroot00000000000000<% @admin_list = User.current.admin? && controller_name == 'admin' && action_name == 'projects' %> <%= render_query_totals(@query) %> <%= form_tag({}, data: {cm_url: projects_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(params: request.query_parameters), id: nil %>
    <% if @admin_list %> <% end %> <% @query.inline_columns.each do |column| %> <%= column_header(@query, column) %> <% end %> <% if @admin_list %> <% end %> <% grouped_project_list(entries, @query) do |entry, level, group_name, group_count, group_totals| -%> <% if group_name %> <% reset_cycle %> <% if @admin_list %> <% end %> <% end %> "> <% if @admin_list %> <% if !entry.scheduled_for_deletion? %> <% else %> <% end %> <% end %> <% @query.inline_columns.each do |column| %> <%= content_tag('td', column_content(column, entry), :class => column.css_classes) %> <% end %> <% if @admin_list %> <% if !entry.scheduled_for_deletion? %> <% else %> <% end %> <% end %> <% end -%>
    <%= check_box_tag 'check_all', '', false, :class => 'toggle-selection', :title => "#{l(:button_check_all)} / #{l(:button_uncheck_all)}" %>
    <%= sprite_icon("angle-down") %> <%= group_name %> <% if group_count %> <%= group_count %> <% end %> <%= group_totals %> <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
    <%= check_box_tag("ids[]", entry.id, false, :id => nil) %><%= link_to_context_menu %>
    <% end -%> <%= pagination_links_full @entry_pages, @entry_count %> <%= context_menu if @admin_list %> redmine-6.0.5/app/views/projects/_members_box.html.erb000066400000000000000000000006721500112024600230050ustar00rootroot00000000000000 <% if @principals_by_role.any? %>

    <%= sprite_icon('group', l(:label_member_plural)) %>

    <% @principals_by_role.keys.sort.each do |role| %>

    <%= role %>: <%= @principals_by_role[role].sort.collect{|p| link_to_principal(p, :class => p.is_a?(Group) ? 'icon icon-group' : nil)}.join(", ").html_safe %>

    <% end %>
    <% end %> redmine-6.0.5/app/views/projects/_sidebar.html.erb000066400000000000000000000001561500112024600221110ustar00rootroot00000000000000<%= render_sidebar_queries(ProjectQuery, @project) %> <%= call_hook(:view_projects_sidebar_queries_bottom) %> redmine-6.0.5/app/views/projects/autocomplete.js.erb000066400000000000000000000004031500112024600225050ustar00rootroot00000000000000<% s = '' if @projects.any? s = render_projects_for_jump_box(@projects, query: params[:q]) elsif params[:q].present? s = content_tag('span', l(:label_no_data)) end %> $('#project-jump .drdn-items.projects').html('<%= escape_javascript s %>'); redmine-6.0.5/app/views/projects/bookmark.js.erb000066400000000000000000000003441500112024600216150ustar00rootroot00000000000000$('#project-jump div.drdn-items.projects').html('<%= j render_projects_for_jump_box(projects_for_jump_box(User.current), selected: @project) %>'); $('.contextual a.icon.bookmark').replaceWith('<%= j bookmark_link @project %>'); redmine-6.0.5/app/views/projects/bulk_destroy.html.erb000066400000000000000000000013701500112024600230460ustar00rootroot00000000000000<%= title l(:label_confirmation) %> <%= form_tag(bulk_destroy_projects_path(ids: @projects.map(&:id)), method: :delete) do %>

    <%= simple_format l :text_projects_bulk_destroy_head %>

    <% @projects.each do |project| %>

    <%= l(:label_project) %>: <%= project.to_s %> <% if project.descendants.any? %>
    <%= l :text_subprojects_bulk_destroy, project.descendants.map(&:to_s).join(', ') %> <% end %>

    <% end %>

    <%= l :text_projects_bulk_destroy_confirm, yes: l(:general_text_Yes) %>

    <%= text_field_tag 'confirm' %>

    <%= submit_tag l(:button_delete), class: 'btn-alert btn-small' %> <%= link_to l(:button_cancel), admin_projects_path %>

    <% end %> redmine-6.0.5/app/views/projects/copy.html.erb000066400000000000000000000043311500112024600213120ustar00rootroot00000000000000

    <%=l(:label_project_new)%>

    <%= labelled_form_for @project, :url => { :action => "copy" } do |f| %> <%= render :partial => 'form', :locals => { :f => f } %>
    <%= toggle_checkboxes_link('.box input[type="checkbox"][name="only[]"]') %><%= l(:button_copy) %> <%= call_hook :view_projects_copy_only_items, project: @source_project, f: f %> <%= hidden_field_tag 'only[]', '' %>
    <% @project.tracker_ids.each do |tracker_id| %> <%= hidden_field_tag 'project[tracker_ids][]', tracker_id %> <% end %> <% @project.issue_custom_field_ids.each do |issue_custom_field_id| %> <%= hidden_field_tag 'project[issue_custom_field_ids][]', issue_custom_field_id %> <% end %> <%= submit_tag l(:button_copy) %> <% end %> redmine-6.0.5/app/views/projects/destroy.html.erb000066400000000000000000000014661500112024600220370ustar00rootroot00000000000000<%= title l(:label_confirmation) %> <%= form_tag(project_path(@project_to_destroy), :method => :delete) do %>

    <%=h @project_to_destroy %>

    <%=l(:text_project_destroy_confirmation)%> <% if @project_to_destroy.descendants.any? %>
    <%= l(:text_subprojects_destroy_warning, content_tag('strong', @project_to_destroy.descendants.collect{|p| p.to_s}.join(', '))).html_safe %> <% end %>

    <%= l :text_project_destroy_enter_identifier, identifier: @project_to_destroy.identifier %>

    <%= text_field_tag 'confirm' %>

    <%= submit_tag l(:button_delete) %> <%= link_to l(:button_cancel), User.current.admin? ? admin_projects_path : projects_path %>

    <% end %> redmine-6.0.5/app/views/projects/index.api.rsb000066400000000000000000000014431500112024600212730ustar00rootroot00000000000000api.array :projects, api_meta(:total_count => @project_count, :offset => @offset, :limit => @limit) do @projects.each do |project| api.project do api.id project.id api.name project.name api.identifier project.identifier api.description project.description api.homepage project.homepage api.parent(:id => project.parent.id, :name => project.parent.name) if project.parent && project.parent.visible? api.status project.status api.is_public project.is_public? api.inherit_members project.inherit_members? render_api_custom_values project.visible_custom_field_values, api render_api_includes(project, api) api.created_on project.created_on api.updated_on project.updated_on end end end redmine-6.0.5/app/views/projects/index.html.erb000066400000000000000000000025541500112024600214540ustar00rootroot00000000000000
    <%= form_tag({}, :method => :get) do %> <% end %> <%= render_project_action_links %>

    <%= @query.new_record? ? l(:label_project_plural) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag(projects_path(@project, nil), :method => :get, :id => 'query_form') do %> <%= render :partial => 'queries/query_form' %> <% end %> <% if @query.valid? %> <% if @entries.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <%= render :partial => @query.display_type, :locals => { :entries => @entries }%> <% end %> <% end %> <% if User.current.logged? %>

    <%= sprite_icon('user', l(:label_my_projects)) %> <%= sprite_icon('bookmarked', l(:label_my_bookmarks)) %>

    <% end %> <% content_for :sidebar do %> <%= render :partial => 'projects/sidebar' %> <% end %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %> <% if @query.display_type == 'list' %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %> <% end %> <% end %> <% html_title(l(:label_project_plural)) -%> redmine-6.0.5/app/views/projects/new.html.erb000066400000000000000000000004311500112024600211260ustar00rootroot00000000000000<%= title l(:label_project_new) %> <%= labelled_form_for @project, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <% end %> redmine-6.0.5/app/views/projects/settings.html.erb000066400000000000000000000001621500112024600221760ustar00rootroot00000000000000

    <%=l(:label_settings)%>

    <%= render_tabs project_settings_tabs %> <% html_title(l(:label_settings)) -%> redmine-6.0.5/app/views/projects/settings/000077500000000000000000000000001500112024600205425ustar00rootroot00000000000000redmine-6.0.5/app/views/projects/settings/_activities.html.erb000066400000000000000000000030101500112024600244740ustar00rootroot00000000000000
    <%= link_to(sprite_icon('del', l(:button_reset)), project_enumerations_path(@project), :method => :delete, :data => {:confirm => l(:text_are_you_sure)}, :class => 'icon icon-del') %> <% if User.current.admin? %> <%= link_to sprite_icon('settings', l(:label_administration)), enumerations_path, :class => "icon icon-settings" %> <% end %>
    <%= form_tag(project_enumerations_path(@project), :method => :put, :class => "tabular") do %> <% TimeEntryActivity.new.available_custom_fields.each do |value| %> <% end %> <% @project.activities(true).each do |enumeration| %> <%= fields_for "enumerations[#{enumeration.id}]", enumeration do |ff| %> <% enumeration.custom_field_values.each do |value| %> <% end %> <% end %> <% end %>
    <%= l(:field_name) %> <%= l(:enumeration_system_activity) %><%= value.name %><%= toggle_checkboxes_link('input.enumerations_active') %> <%= l(:field_active) %>
    <%= ff.hidden_field :parent_id, :value => enumeration.id unless enumeration.project %> <%= enumeration %> <%= checked_image !enumeration.project %> <%= custom_field_tag "enumerations[#{enumeration.id}]", value %> <%= ff.check_box :active, :class => 'enumerations_active' %>
    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/projects/settings/_boards.html.erb000066400000000000000000000023341500112024600236120ustar00rootroot00000000000000<% if User.current.allowed_to?(:manage_boards, @project) %>

    <%= link_to sprite_icon('add', l(:label_board_new)), new_project_board_path(@project), :class => 'icon icon-add' %>

    <% end %> <% if @project.boards.any? %>
    <%= l(:label_board) %>
    <%= render_boards_tree(@project.boards) do |board, level| %>
    <%= link_to board.name, project_board_path(@project, board) %>
    <%= board.description %>
    <% if User.current.allowed_to?(:manage_boards, @project) %> <%= reorder_handle(board) %> <%= link_to sprite_icon('edit', l(:button_edit)), edit_project_board_path(@project, board), :class => 'icon icon-edit' %> <%= delete_link project_board_path(@project, board) %> <% end %>
    <% end %>
    <%= javascript_tag do %> $(function() { $("div.sort-level").positionedItems(); }); <% end %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/projects/settings/_issue_categories.html.erb000066400000000000000000000020111500112024600256650ustar00rootroot00000000000000

    <%= link_to sprite_icon('add', l(:label_issue_category_new)), new_project_issue_category_path(@project), :class => 'icon icon-add' if User.current.allowed_to?(:manage_categories, @project) %>

    <% if @project.issue_categories.any? %> <% for category in @project.issue_categories %> <% unless category.new_record? %> <% end %> <% end %>
    <%= l(:label_issue_category) %> <%= l(:field_assigned_to) %>
    <%= category.name %> <%= category.assigned_to.name if category.assigned_to %> <% if User.current.allowed_to?(:manage_categories, @project) %> <%= link_to sprite_icon('edit', l(:button_edit)), edit_issue_category_path(category), :class => 'icon icon-edit' %> <%= delete_link issue_category_path(category) %> <% end %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/projects/settings/_issues.html.erb000066400000000000000000000050361500112024600236550ustar00rootroot00000000000000<%= labelled_form_for @project, html: {id: 'project_issue_tracking' } do |f| %> <%= hidden_field_tag 'tab', 'issues' %> <% unless @trackers.empty? %>
    <%= toggle_checkboxes_link('#project_trackers input[type=checkbox]') %><%= l(:label_tracker_plural)%> <% if User.current.admin? %>
    <%= link_to sprite_icon('settings', l(:label_administration)), trackers_path, :class => "icon icon-settings" %>
    <% end %> <% @trackers.each do |tracker| %> <% end %> <%= hidden_field_tag 'project[tracker_ids][]', '' %>
    <% end %> <% unless @issue_custom_fields.empty? %>
    <%= toggle_checkboxes_link('#project_issue_custom_fields input[type=checkbox]:enabled') %><%=l(:label_custom_field_plural)%> <% if User.current.admin? %>
    <%= link_to sprite_icon('settings', l(:label_administration)), custom_fields_path, :class => "icon icon-settings" %>
    <% end %> <% all_issue_custom_field_ids = @project.all_issue_custom_fields.ids %> <% @issue_custom_fields.each do |custom_field| %> <% end %> <%= hidden_field_tag 'project[issue_custom_field_ids][]', '' %>
    <% end %>
    <% if @project.safe_attribute?('default_version_id') %>

    <%= f.select :default_version_id, project_default_version_options(@project), include_blank: l(:label_none) %>

    <% end %> <% if @project.safe_attribute?('default_assigned_to_id') %>

    <%= f.select :default_assigned_to_id, project_default_assigned_to_options(@project), include_blank: l(:label_none) %>

    <% end %> <% if @project.safe_attribute?('default_issue_query_id') %>

    <%= f.select :default_issue_query_id, project_default_issue_query_options(@project), include_blank: l(:label_none) %><%=l 'text_allowed_queries_to_select' %>

    <% end %>

    <%= submit_tag l(:button_save) %>

    <% end %> redmine-6.0.5/app/views/projects/settings/_members.html.erb000066400000000000000000000035641500112024600240000ustar00rootroot00000000000000<% members = @project.memberships.preload(:project).sorted.to_a %> <% if User.current.admin? %>
    <%= link_to sprite_icon('settings', l(:label_administration)), users_path, :class => "icon icon-settings" %>
    <% end %>

    <%= link_to sprite_icon('add', l(:label_member_new)), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %>

    <% if members.any? %> <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> <% members.each do |member| %> <% next if member.new_record? %> <%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %> <% end %>
    <%= l(:label_user) %> / <%= l(:label_group) %> <%= l(:label_role_plural) %>
    <% if member.principal %> <%= principal_icon(member.principal) %> <%= link_to_user member.principal %> <% end %> <%= member.roles.sort.collect(&:to_s).join(', ') %>
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_membership_path(member), :remote => true, :class => 'icon icon-edit' %> <%= delete_link membership_path(member), :remote => true, :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/projects/settings/_repositories.html.erb000066400000000000000000000031461500112024600250710ustar00rootroot00000000000000<% if User.current.allowed_to?(:manage_repository, @project) %>

    <%= link_to sprite_icon('add', l(:label_repository_new)), new_project_repository_path(@project), :class => 'icon icon-add' %>

    <% end %> <% if @project.repositories.any? %>
    <% @project.repositories.sort.each do |repository| %> <% end %>
    <%= l(:field_identifier) %> <%= l(:field_repository_is_default) %> <%= l(:label_scm) %> <%= l(:label_repository) %>
    <%= link_to repository.identifier, {:controller => 'repositories', :action => 'show',:id => @project, :repository_id => repository.identifier_param} if repository.identifier.present? %> <%= checked_image repository.is_default? %> <%= repository.scm_name %> <%= repository.url %> <% if User.current.allowed_to?(:manage_repository, @project) %> <%= link_to(sprite_icon('user', l(:label_user_plural)), committers_repository_path(repository), :class => 'icon icon-user') %> <%= link_to(sprite_icon('edit', l(:button_edit)), edit_repository_path(repository), :class => 'icon icon-edit') %> <%= delete_link repository_path(repository) %> <% end %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/projects/settings/_versions.html.erb000066400000000000000000000057501500112024600242150ustar00rootroot00000000000000<% if @versions.any? %>
    <%= link_to sprite_icon('lock', l(:label_close_versions)), close_completed_project_versions_path(@project), :class => 'icon icon-locked', :method => :put %>
    <% end %>

    <%= link_to sprite_icon('add', l(:label_version_new)), new_project_version_path(@project, :back_url => ''), :class => 'icon icon-add' if User.current.allowed_to?(:manage_versions, @project) %>

    <%= form_tag(settings_project_path(@project, :tab => 'versions'), :method => :get) do %>
    <%= l(:label_filter_plural) %> <%= select_tag 'version_status', options_for_select([[l(:label_all), '']] + Version::VERSION_STATUSES.collect {|s| [l("version_status_#{s}"), s]}, @version_status), :onchange => "this.form.submit(); return false;" %> <%= text_field_tag 'version_name', @version_name, :size => 30 %> <%= submit_tag l(:button_apply), :name => nil %> <%= link_to sprite_icon('reload', l(:button_clear)), settings_project_path(@project, :tab => 'versions'), :class => 'icon icon-reload' %>
    <% end %>   <% if @versions.present? %> <% @versions.each do |version| %> <% is_shared = version.project != @project %> <% end %>
    <%= l(:label_version) %> <%= l(:field_default_version) %> <%= l(:field_effective_date) %> <%= l(:field_description) %> <%= l(:field_status) %> <%= l(:field_sharing) %> <%= l(:label_wiki_page) %>
    <%= sprite_icon('link') if is_shared %> <%= link_to_version version %> <%= checked_image(version.id == @project.default_version_id) %> <%= format_date(version.effective_date) %> <%= version.description %> <%= l("version_status_#{version.status}") %> <%= link_to_if_authorized(version.wiki_page_title, {:controller => 'wiki', :action => 'show', :project_id => version.project, :id => Wiki.titleize(version.wiki_page_title)}) || h(version.wiki_page_title) unless version.wiki_page_title.blank? || version.project.wiki.nil? %> <% if version.project == @project && User.current.allowed_to?(:manage_versions, @project) %> <%= link_to sprite_icon('edit', l(:button_edit)), edit_version_path(version), :class => 'icon icon-edit' %> <%= delete_link version_path(version) %> <% end %>
    <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/projects/show.api.rsb000066400000000000000000000015771500112024600211540ustar00rootroot00000000000000api.project do api.id @project.id api.name @project.name api.identifier @project.identifier api.description @project.description api.homepage @project.homepage api.parent(:id => @project.parent.id, :name => @project.parent.name) if @project.parent && @project.parent.visible? api.status @project.status api.is_public @project.is_public? api.inherit_members @project.inherit_members? api.default_version(:id => @project.default_version.id, :name => @project.default_version.name) if @project.default_version api.default_assignee(:id => @project.project.default_assigned_to.id, :name => @project.project.default_assigned_to.name) if @project.default_assigned_to render_api_custom_values @project.visible_custom_field_values, api render_api_includes(@project, api) api.created_on @project.created_on api.updated_on @project.updated_on end redmine-6.0.5/app/views/projects/show.html.erb000066400000000000000000000150311500112024600213170ustar00rootroot00000000000000
    <%= bookmark_link @project %> <%= actions_dropdown do %> <% if User.current.allowed_to?(:add_subprojects, @project) %> <%= link_to sprite_icon('add', l(:label_subproject_new)), new_project_path(:parent_id => @project), :class => 'icon icon-add' %> <% end %> <% if User.current.allowed_to?(:close_project, @project) %> <% if @project.active? %> <%= link_to sprite_icon('lock', l(:button_close)), close_project_path(@project), :data => { :confirm => l(:text_project_close_confirmation, @project.to_s)}, :method => :post, :class => 'icon icon-lock' %> <% else %> <%= link_to sprite_icon('unlock', l(:button_reopen)), reopen_project_path(@project), :data => { :confirm => l(:text_project_reopen_confirmation, @project.to_s)}, :method => :post, :class => 'icon icon-unlock' %> <% end %> <% end %> <% if @project.deletable? %> <%= link_to sprite_icon('del', l(:button_delete)), project_path(@project), :method => :delete, :class => 'icon icon-del' %> <% end %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project}, :class => 'icon icon-settings' if User.current.allowed_to?(:edit_project, @project) %> <% end %>

    <%=l(:label_overview)%>

    <% unless @project.active? %>

    <%= sprite_icon('lock', l(:text_project_closed)) %>

    <% end %>
    <% if @project.description.present? %>
    <%= textilizable @project.description %>
    <% end %> <% if @project.homepage.present? || @project.visible_custom_field_values.any? { |o| o.value.present? } %>
      <% unless @project.homepage.blank? %>
    • <%=l(:field_homepage)%>: <%= link_to_if uri_with_safe_scheme?(@project.homepage), @project.homepage, @project.homepage %>
    • <% end %> <% render_custom_field_values(@project) do |custom_field, formatted| %>
    • <%= custom_field.name %>: <%= formatted %>
    • <% end %>
    <% end %> <% if User.current.allowed_to?(:view_issues, @project) %>

    <%= sprite_icon('issue', l(:label_issue_tracking)) %>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'tracker'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <% if @trackers.present? %> <% @trackers.each do |tracker| %> <% end %>
    <%=l(:label_open_issues_plural)%> <%=l(:label_closed_issues_plural)%> <%=l(:label_total)%>
    <%= link_to tracker.name, project_issues_path(@project, :set_filter => 1, :tracker_id => tracker.id), :title => tracker.description %> <%= link_to @open_issues_by_tracker[tracker].to_i, project_issues_path(@project, :set_filter => 1, :tracker_id => tracker.id) %> <%= link_to (@total_issues_by_tracker[tracker].to_i - @open_issues_by_tracker[tracker].to_i), project_issues_path(@project, :set_filter => 1, :tracker_id => tracker.id, :status_id => 'c') %> <%= link_to @total_issues_by_tracker[tracker].to_i, project_issues_path(@project, :set_filter => 1, :tracker_id => tracker.id, :status_id => '*') %>
    <% end %>

    <%= link_to l(:label_issue_view_all), project_issues_path(@project, :set_filter => 1) %> | <%= link_to l(:field_summary), project_issues_report_path(@project) %> <% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> | <%= link_to l(:label_calendar), project_calendar_path(@project) %> <% end %> <% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> | <%= link_to l(:label_gantt), project_gantt_path(@project) %> <% end %>

    <% end %> <% if User.current.allowed_to?(:view_time_entries, @project) %>

    <%= sprite_icon('time', l(:label_time_tracking)) %>

      <% if @total_estimated_hours.present? %>
    • <%= l(:field_estimated_hours) %>: <%= l_hours(@total_estimated_hours) %> <% end %> <% if @total_hours.present? %>
    • <%= l(:label_spent_time) %>: <%= l_hours(@total_hours) %> <% end %>

    <% if User.current.allowed_to?(:log_time, @project) %> <%= link_to l(:button_log_time), new_project_time_entry_path(@project) %> | <% end %> <%= link_to(l(:label_details), project_time_entries_path(@project)) %> | <%= link_to(l(:label_report), report_project_time_entries_path(@project)) %>

    <% end %> <%= call_hook(:view_projects_show_left, :project => @project) %>
    <% if @news.any? && authorize_for('news', 'index') %>

    <%= sprite_icon('news', l(:label_news_latest))%>

    <%= render :partial => 'news/news', :collection => @news %>

    <%= link_to l(:label_news_view_all), project_news_index_path(@project) %>

    <% end %> <%= render :partial => 'members_box' %> <% if @subprojects.any? %>

    <%= sprite_icon('projects', l(:label_subproject_plural)) %>

      <% @subprojects.each do |project| %>
    • <%= link_to(project.name, project_path(project), :class => project.css_classes).html_safe %>
    • <% end %>
    <% end %> <%= call_hook(:view_projects_show_right, :project => @project) %>
    <% content_for :sidebar do %> <%= call_hook(:view_projects_show_sidebar_bottom, :project => @project) %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :key => User.current.atom_key}) %> <% end %> <% html_title(l(:label_overview)) -%> redmine-6.0.5/app/views/queries/000077500000000000000000000000001500112024600165265ustar00rootroot00000000000000redmine-6.0.5/app/views/queries/_columns.html.erb000066400000000000000000000037321500112024600220070ustar00rootroot00000000000000<% tag_id = tag_name.gsub(/[\[\]]+/, '_').sub(/_+$/, '') %> <% available_tag_id = "available_#{tag_id}" %> <% selected_tag_id = "selected_#{tag_id}" %>
    <%= label_tag available_tag_id, l(:description_available_columns) %> <%= select_tag 'available_columns', options_for_select(query_available_inline_columns_options(query)), :id => available_tag_id, :multiple => true, :size => 10, :ondblclick => "moveOptions(this.form.#{available_tag_id}, this.form.#{selected_tag_id});" %>
    <%= label_tag selected_tag_id, l(:description_selected_columns) %> <%= select_tag tag_name, options_for_select(query_selected_inline_columns_options(query)), :id => selected_tag_id, :multiple => true, :size => 10, :ondblclick => "moveOptions(this.form.#{selected_tag_id}, this.form.#{available_tag_id});" %>
    <%= javascript_tag do %> $(document).ready(function(){ $('.query-columns').closest('form').submit(function(){ $('#<%= selected_tag_id %> option:not(:disabled)').prop('selected', true); }); }); <% end %> redmine-6.0.5/app/views/queries/_filters.html.erb000066400000000000000000000017501500112024600217750ustar00rootroot00000000000000<%= javascript_tag do %> var operatorLabels = <%= raw_json Query.operators_labels %>; var operatorByType = <%= raw_json Query.operators_by_filter_type %>; var availableFilters = <%= raw_json query.available_filters_as_json %>; var labelDayPlural = <%= raw_json l(:label_day_plural) %>; var filtersUrl = <%= raw_json queries_filter_path(:project_id => @query.project.try(:id), :type => @query.type) %>; $(document).ready(function(){ initFilters(); <% query.filters.each do |field, options| %> addFilter("<%= field %>", <%= raw_json query.operator_for(field) %>, <%= raw_json query.values_for(field) %>); <% end %> }); <% end %>
    <%= label_tag('add_filter_select', l(:label_filter_add)) %> <%= select_tag 'add_filter_select', filters_options_for_select(query), :name => nil %>
    <%= hidden_field_tag 'f[]', '' %> <% include_calendar_headers_tags %> redmine-6.0.5/app/views/queries/_form.html.erb000066400000000000000000000144071500112024600212730ustar00rootroot00000000000000<%= error_messages_for 'query' %>
    <%= hidden_field_tag 'gantt', '1' if params[:gantt] %> <%= hidden_field_tag 'calendar', '1' if params[:calendar] %>

    <%= text_field 'query', 'name', :size => 80 %>

    <%= text_field 'query', 'description', :size => 80 %>

    <% if User.current.admin? || User.current.allowed_to?(:manage_public_queries, @query.project) %>

    <% unless @query.is_a?(ProjectQuery) %> <% Role.givable.sorted.each do |role| %> <% end %> <%= hidden_field_tag 'query[role_ids][]', '' %> <% end %>

    <% end %> <% unless @query.is_a?(ProjectQuery) %>

    <%= check_box_tag 'query_is_for_all', 1, @query.project.nil?, :disabled => (!@query.new_record? && @query.project.nil?), :class => (User.current.admin? ? '' : 'disable-unless-private') %>

    <% end %> <% unless params[:calendar] %>
    <%= l(:label_options) %> <% if @query.available_display_types.size > 1 %>

    <%= available_display_types_tags(@query) %>

    <% elsif @query.available_display_types.size == 1 %> <%= hidden_field_tag 'query[display_type]', @query.available_display_types.first %> <% end %>

    <%= check_box_tag 'default_columns', 1, @query.has_default_columns?, :id => 'query_default_columns', :data => {:disables => "#columns, .block_columns input"} %>

    <% unless params[:gantt] %>

    <%= select 'query', 'group_by', @query.groupable_columns.collect {|c| [c.caption, c.name.to_s]}, :include_blank => true %>

    <% unless @query.available_block_columns.empty? %>

    <%= available_block_columns_tags(@query) %>

    <% end %> <% unless @query.available_totalable_columns.empty? %>

    <%= available_totalable_columns_tags(@query) %>

    <% end %> <% else %>

    <%= hidden_field_tag 'query[draw_relations]', '0' %> <%= hidden_field_tag 'query[draw_progress_line]', '0' %> <%= hidden_field_tag 'query[draw_selected_columns]', '0' %>

    <% end %>
    <% end %>
    <%= l(:label_filter_plural) %> <%= render :partial => 'queries/filters', :locals => {:query => query}%>
    <% if params[:calendar].nil? && params[:gantt].nil? %>
    <%= l(:label_sort) %> <% 3.times do |i| %> <%= content_tag(:span, "#{i+1}:", :class => 'query_sort_criteria_count')%> <%= label_tag "query_sort_criteria_attribute_" + i.to_s, l(:description_query_sort_criteria_attribute), :class => "hidden-for-sighted" %> <%= select_tag("query[sort_criteria][#{i}][]", options_for_select([[]] + query.available_columns.select(&:sortable?).collect {|column| [column.caption, column.name.to_s]}, @query.sort_criteria_key(i)), :id => "query_sort_criteria_attribute_" + i.to_s)%> <%= label_tag "query_sort_criteria_direction_" + i.to_s, l(:description_query_sort_criteria_direction), :class => "hidden-for-sighted" %> <%= select_tag("query[sort_criteria][#{i}][]", options_for_select([[], [l(:label_ascending), 'asc'], [l(:label_descending), 'desc']], @query.sort_criteria_order(i)), :id => "query_sort_criteria_direction_" + i.to_s) %>
    <% end %>
    <% end %> <% unless params[:calendar] %> <%= content_tag 'fieldset', :id => 'columns' do %> <%= l(:field_column_names) %>
    <%= render_query_columns_selection(query) %>
    <% end %> <% end %>
    <%= javascript_tag do %> $(document).ready(function(){ $("input[name='query[visibility]']").change(function(){ var roles_checked = $('#query_visibility_1').is(':checked'); var private_checked = $('#query_visibility_0').is(':checked'); $("input[name='query[role_ids][]'][type=checkbox]").attr('disabled', !roles_checked); if (!private_checked) $("input.disable-unless-private").attr('checked', false); $("input.disable-unless-private").attr('disabled', !private_checked); }).trigger('change'); }); $(function ($) { $('input[name=display_type]').change(function () { var option = $('input[name=display_type]:checked').val(); if (option == 'board') { $('fieldset#columns, fieldset#sort, p#default_columns, p#group_by').hide(); } else { $('fieldset#columns, fieldset#sort, p#default_columns, p#group_by').show(); } }).change(); }); <% end %> redmine-6.0.5/app/views/queries/_query_form.html.erb000066400000000000000000000076021500112024600225170ustar00rootroot00000000000000<%= hidden_field_tag 'set_filter', '1' %> <%= hidden_field_tag 'type', @query.type, :disabled => true, :id => 'query_type' %> <%= query_hidden_sort_tag(@query) %>
    "> "> <%= sprite_icon(@query.new_record? ? "angle-down" : "angle-right", rtl: !@query.new_record?) %> <%= l(:label_filter_plural) %>
    "> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
    <% if @query.available_columns.any? %> <% end %>

    <%= link_to_function sprite_icon('checked', l(:button_apply)), '$("#query_form").submit()', :class => 'icon icon-checked' %> <%= link_to sprite_icon('reload', l(:button_clear)), { :set_filter => 1, :sort => '', :project_id => @project }, :class => 'icon icon-reload' %> <% if @query.new_record? %> <% if User.current.allowed_to?(:save_queries, @project, :global => true) %> <%= link_to_function sprite_icon('save', l(:button_save_object, object_name: l(:label_query)).capitalize), "$('#query_type').prop('disabled',false);$('#query_form').attr('action', '#{ @project ? new_project_query_path(@project) : new_query_path }').submit()", :class => 'icon icon-save' %> <% end %> <% else %> <% if @query.editable_by?(User.current) %> <%= link_to sprite_icon('edit', l(:button_edit_object, object_name: l(:label_query)).capitalize), edit_query_path(@query), :class => 'icon icon-edit' %> <%= delete_link query_path(@query), {}, l(:button_delete_object, object_name: l(:label_query)).capitalize %> <% end %> <% end %>

    <%= error_messages_for @query %> <%= javascript_tag do %> $(function ($) { $('input[name=display_type]').change(function (e) { if ($("#display_type_list").is(':checked')) { $('table#list-definition').show(); } else { $('table#list-definition').hide(); } }) }); <% end %> redmine-6.0.5/app/views/queries/edit.html.erb000066400000000000000000000003361500112024600211120ustar00rootroot00000000000000

    <%= l(:label_query) %>

    <%= form_tag(query_path(@query), :method => :put, :id => "query-form") do %> <%= render :partial => 'form', :locals => {:query => @query} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/queries/index.api.rsb000066400000000000000000000004601500112024600211150ustar00rootroot00000000000000api.array :queries, api_meta(:total_count => @query_count, :offset => @offset, :limit => @limit) do @queries.each do |query| api.query do api.id query.id api.name query.name api.is_public query.is_public? api.project_id query.project_id end end end redmine-6.0.5/app/views/queries/index.html.erb000066400000000000000000000014431500112024600212740ustar00rootroot00000000000000
    <%= link_to_if_authorized l(:label_query_new), new_project_query_path(:project_id => @project), :class => 'icon icon-add' %>

    <%= l(:label_query_plural) %>

    <% if @queries.empty? %>

    <%=l(:label_no_data)%>

    <% else %> <% @queries.each do |query| %> <% end %>
    <%= link_to query.name, :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query %> <% if query.editable_by?(User.current) %> <%= link_to sprite_icon('edit', l(:button_edit)), edit_query_path(query), :class => 'icon icon-edit' %> <%= delete_link query_path(query) %> <% end %>
    <% end %> redmine-6.0.5/app/views/queries/new.html.erb000066400000000000000000000004531500112024600207560ustar00rootroot00000000000000

    <%= l(:label_query_new) %>

    <%= form_tag(@project ? project_queries_path(@project) : queries_path, :id => "query-form") do %> <%= hidden_field_tag 'type', @query.class.name %> <%= render :partial => 'form', :locals => {:query => @query} %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/reports/000077500000000000000000000000001500112024600165475ustar00rootroot00000000000000redmine-6.0.5/app/views/reports/_details.html.erb000066400000000000000000000112501500112024600217670ustar00rootroot00000000000000<% if @statuses.empty? or rows.empty? %>

    <%=l(:label_no_data)%>

    <% else %> <% for status in @statuses %> <% end %> <% for row in rows %> <% for status in @statuses %> <% end %> <% end %> <% for status in @statuses %> <% end %>
    <%= status.name %><%=l(:label_open_issues_plural)%> <%=l(:label_closed_issues_plural)%> <%=l(:label_total)%>
    <%= link_to row.name, aggregate_path(@project, field_name, row, :subproject_id => nil) %><%= aggregate_link data, { field_name => row.id, "status_id" => status.id }, aggregate_path(@project, field_name, row, :status_id => status.id, :subproject_id => nil) %><%= aggregate_link data, { field_name => row.id, "closed" => 0 }, aggregate_path(@project, field_name, row, :status_id => "o", :subproject_id => nil) %> <%= aggregate_link data, { field_name => row.id, "closed" => 1 }, aggregate_path(@project, field_name, row, :status_id => "c", :subproject_id => nil) %> <%= aggregate_link data, { field_name => row.id }, aggregate_path(@project, field_name, row, :status_id => "*", :subproject_id => nil) %>
    <%= l(:label_total) %><%= aggregate data, { "status_id" => status.id } %><%= aggregate data, { "closed" => 0 } %> <%= aggregate data, { "closed" => 1 } %> <%= aggregate data, { } %>
    <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <% end %>
    <%= javascript_tag do %> function renderChart(canvas_id, title, chartData){ var backgroundColors = ['rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)']; var borderColors = ['rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)']; for (var i = 0; i < chartData.datasets.length; i++) { chartData.datasets[i].backgroundColor = backgroundColors[i % backgroundColors.length]; chartData.datasets[i].borderColor = borderColors[i % borderColors.length]; chartData.datasets[i].borderWidth = 1; } new Chart($(canvas_id), { type: 'bar', data: chartData, options: { indexAxis: 'y', elements: { bar: {borderWidth: 2} }, responsive: true, plugins: { legend: {position: 'right'}, title: { display: true, text: title } }, scales: { yAxis: {stacked: true}, xAxis: {stacked: true, ticks: {precision: 0}} } } }); } $(document).ready(function(){ var chartData1 = { labels: <%= raw rows.collect{|row| row.name}.to_json %>, datasets: <%= raw @statuses.collect{|status| {"label" => status.name, "hidden" => status.is_closed?, "data" => rows.collect{|row| aggregate(data, {field_name => row.id, "status_id" => status.id})}}}.to_json %> }; var chartData2 = { labels: <%= raw @statuses.collect{|status| status.name}.to_json %>, datasets: <%= raw rows.collect{|row| {"label" => row.name, "data" => @statuses.collect{|status| aggregate(data, {field_name => row.id, "status_id" => status.id})}}}.to_json %> }; renderChart("#issues_by_<%= params[:detail] %>", "<%= l(:label_issues_by, @report_title) %>", chartData1); renderChart("#issues_by_status", "<%= l(:label_issues_by, l(:field_status)) %>", chartData2); }); <% end %> <% content_for :header_tags do %> <%= javascript_include_tag "chart.min" %> <% end %> <% end %> redmine-6.0.5/app/views/reports/_simple.html.erb000066400000000000000000000022211500112024600216310ustar00rootroot00000000000000<% if @statuses.empty? or rows.empty? %>

    <%=l(:label_no_data)%>

    <% else %> <% for row in rows %> <% end %>
    <%=l(:label_open_issues_plural)%> <%=l(:label_closed_issues_plural)%> <%=l(:label_total)%>
    <%= link_to row.name, aggregate_path(@project, field_name, row, :subproject_id => nil) %> <%= aggregate_link data, { field_name => row.id, "closed" => 0 }, aggregate_path(@project, field_name, row, :status_id => "o", :subproject_id => nil) %> <%= aggregate_link data, { field_name => row.id, "closed" => 1 }, aggregate_path(@project, field_name, row, :status_id => "c", :subproject_id => nil) %> <%= aggregate_link data, { field_name => row.id }, aggregate_path(@project, field_name, row, :status_id => "*", :subproject_id => nil) %>
    <%= l(:label_total) %> <%= aggregate data, { "closed" => 0 } %> <%= aggregate data, { "closed" => 1 } %> <%= aggregate data, { } %>
    <% end %> redmine-6.0.5/app/views/reports/issue_report.html.erb000066400000000000000000000063251500112024600227350ustar00rootroot00000000000000

    <%=l(:label_report_plural)%>

    <%=l(:field_tracker)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'tracker'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_tracker, :field_name => "tracker_id", :rows => @trackers } %>

    <%=l(:field_priority)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'priority'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_priority, :field_name => "priority_id", :rows => @priorities } %>

    <%=l(:field_assigned_to)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'assigned_to'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_assigned_to, :field_name => "assigned_to_id", :rows => @assignees } %>

    <%=l(:field_author)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'author'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_author, :field_name => "author_id", :rows => @authors } %>
    <%= call_hook(:view_reports_issue_report_split_content_left, :project => @project) %>

    <%=l(:field_version)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'version'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_version, :field_name => "fixed_version_id", :rows => @versions } %>
    <% if @project.children.any? %>

    <%=l(:field_subproject)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'subproject'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_subproject, :field_name => "project_id", :rows => @subprojects } %>
    <% end %>

    <%=l(:field_category)%>  <%= link_to sprite_icon('zoom-in', l(:label_details)), project_issues_report_details_path(@project, :detail => 'category'), :class => 'icon-only icon-zoom-in', :title => l(:label_details) %>

    <%= render :partial => 'simple', :locals => { :data => @issues_by_category, :field_name => "category_id", :rows => @categories } %>
    <%= call_hook(:view_reports_issue_report_split_content_right, :project => @project) %>
    redmine-6.0.5/app/views/reports/issue_report_details.html.erb000066400000000000000000000004541500112024600244370ustar00rootroot00000000000000

    <%= link_to l(:label_report_plural), project_issues_report_path(@project) %> »

    <%=@report_title%>

    <%= render :partial => 'details', :locals => { :data => @data, :field_name => @field, :rows => @rows } %>
    <%= link_to l(:button_back), project_issues_report_path(@project) %> redmine-6.0.5/app/views/repositories/000077500000000000000000000000001500112024600176005ustar00rootroot00000000000000redmine-6.0.5/app/views/repositories/_breadcrumbs.html.erb000066400000000000000000000021771500112024600236740ustar00rootroot00000000000000<% dirs = path.split('/') if 'file' == kind filename = dirs.pop end breadcrumbs = [] breadcrumbs << link_to( @repository.identifier.presence || 'root', :action => 'show', :id => @project, :repository_id => @repository.identifier_param, :path => nil, :rev => @rev) link_path = '' dirs.each do |dir| next if dir.blank? link_path << '/' unless link_path.empty? link_path << "#{dir}" breadcrumbs << link_to(dir, :action => 'show', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(link_path), :rev => @rev) end if filename breadcrumbs << link_to(filename, :action => 'entry', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev) end %> <%= breadcrumbs.join(tag.span('/', :class => 'separator')).html_safe -%> <% # @rev is revsion or Git and Mercurial branch or tag. # For Mercurial *tip*, @rev and @changeset are nil. rev_text = @changeset.nil? ? @rev : format_revision(@changeset) %> <%= " @ #{rev_text}" unless rev_text.blank? -%> <% html_title(with_leading_slash(path)) %> redmine-6.0.5/app/views/repositories/_changeset.html.erb000066400000000000000000000042151500112024600233370ustar00rootroot00000000000000

    <%= l(:label_revision) %> <%= format_revision(@changeset) %>

    <%= avatar(@changeset.user) %> <%= authoring(@changeset.committed_on, @changeset.author) %>

    <% if @changeset.scmid.present? || @changeset.parents.present? || @changeset.children.present? %>
      <% if @changeset.scmid.present? %>
    • ID <%= @changeset.scmid %>
    • <% end %> <% if @changeset.parents.present? %>
    • <%= l(:label_parent_revision) %> <%= @changeset.parents.collect{ |p| link_to_revision(p, @repository, :text => format_revision(p)) }.join(", ").html_safe %>
    • <% end %> <% if @changeset.children.present? %>
    • <%= l(:label_child_revision) %> <%= @changeset.children.collect{ |p| link_to_revision(p, @repository, :text => format_revision(p)) }.join(", ").html_safe %>
    • <% end %>
    <% end %>
    <%= format_changeset_comments @changeset %>
    <% if @changeset.issues.visible.any? || User.current.allowed_to?(:manage_related_issues, @repository.project) %> <%= render :partial => 'related_issues' %> <% end %> <% if User.current.allowed_to?(:browse_repository, @repository.project) %> <% tabs = [] tabs << { name: 'revision', label: :label_change_plural, url: { :action => 'revision', :id => @project, :repository_id => @repository.identifier_param, :path => nil, :rev => @changeset.identifier} } tabs << { name: 'diff', label: :label_view_diff, url: { :action => 'diff', :id => @project, :repository_id => @repository.identifier_param, :path => "", :rev => @changeset.identifier } } if action_name == 'diff' || @changeset.filechanges.any? %> <%= render :partial => 'common/tabs', :locals => {:tabs => tabs, :selected_tab => action_name} %> <% end %> redmine-6.0.5/app/views/repositories/_dir_list.html.erb000066400000000000000000000006731500112024600232130ustar00rootroot00000000000000
    <% if @repository.report_last_commit %> <% end %> <%= render :partial => 'dir_list_content' %>
    <%= l(:field_name) %> <%= l(:field_filesize) %><%= l(:label_revision) %> <%= l(:label_age) %> <%= l(:field_author) %> <%= l(:field_comments) %>
    redmine-6.0.5/app/views/repositories/_dir_list_content.html.erb000066400000000000000000000035731500112024600247470ustar00rootroot00000000000000<% @entries.each do |entry| %> <% tr_id = ActiveSupport::Digest.hexdigest(entry.path) depth = params[:depth].to_i %> <% ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path) %> <% ent_name = Redmine::CodesetUtil.replace_invalid_utf8(entry.name) %> "> <% if entry.is_dir? %> <%= sprite_icon('angle-right', rtl: true) %> <% end %> <%= link_to file_icon(entry, ent_name), {:action => (entry.is_dir? ? 'show' : 'entry'), :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(ent_path), :rev => @rev}, :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%> <%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %> <% if @repository.report_last_commit %> <%= link_to_revision(entry.changeset, @repository) if entry.changeset %> <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %> <%= entry.author %> <%= entry.changeset.comments.truncate(50) if entry.changeset %> <% end %> <% end %> redmine-6.0.5/app/views/repositories/_form.html.erb000066400000000000000000000020671500112024600223440ustar00rootroot00000000000000<%= error_messages_for 'repository' %>

    <%= label_tag('repository_scm', l(:label_scm)) %><%= scm_select_tag(@repository) %> <% if @repository && ! @repository.class.scm_available %> <%= l(:text_scm_command_not_available) %> <% end %>

    <%= f.check_box :is_default, :label => :field_repository_is_default %>

    <%= f.text_field :identifier, :disabled => @repository.identifier_frozen? %> <% unless @repository.identifier_frozen? %> <%= l(:text_length_between, :min => 1, :max => Repository::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_repository_identifier_info).html_safe %> <% end %>

    <% button_disabled = true %> <% if @repository %> <% button_disabled = ! @repository.class.scm_available %> <%= repository_field_tags(f, @repository) %> <% end %>

    <%= submit_tag(@repository.new_record? ? l(:button_create) : l(:button_save), :disabled => button_disabled) %> <%= link_to l(:button_cancel), settings_project_path(@project, :tab => 'repositories') %>

    redmine-6.0.5/app/views/repositories/_link_to_functions.html.erb000066400000000000000000000015721500112024600251300ustar00rootroot00000000000000<% if @entry && @entry.kind == 'file' %> <% tabs = [] tabs << { name: 'entry', label: :button_view, url: {:action => 'entry', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } } if @repository.supports_cat? tabs << { name: 'changes', label: :label_history, url: {:action => 'changes', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } } if @repository.supports_history? tabs << { name: 'annotate', label: :button_annotate, url: {:action => 'annotate', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev } } if @repository.supports_annotate? %> <%= render :partial => 'common/tabs', :locals => {:tabs => tabs, :selected_tab => action_name} %> <% end %> redmine-6.0.5/app/views/repositories/_navigation.html.erb000066400000000000000000000046121500112024600235360ustar00rootroot00000000000000<% content_for :header_tags do %> <%= javascript_include_tag 'repository_navigation' %> <% end %> <% if @entry && !@entry.is_dir? && @repository.supports_cat? %> <% download_label = @entry.size ? "#{l :button_download} (#{number_to_human_size @entry.size})" : l(:button_download) %> <%= link_to(sprite_icon('download', download_label), {:action => 'raw', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => @rev}, class: 'icon icon-download') %> <% end %> <%= link_to sprite_icon('stats', l(:label_statistics)), {:action => 'stats', :id => @project, :repository_id => @repository.identifier_param}, :class => 'icon icon-stats' if @repository.supports_history? %> <%= actions_dropdown do %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'repositories'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_repository, @project) %> <%= link_to sprite_icon('reload', l(:button_fetch_changesets)), {:action => :fetch_changesets, :id => @project, :repository_id => @repository.identifier_param}, :class => 'icon icon-reload', :method => :post if User.current.allowed_to?(:manage_repository, @project) && !Setting.autofetch_changesets? %> <% end %> <%= form_tag({:action => controller.action_name, :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev => nil}, {:method => :get, :id => 'revision_selector'}) do -%> <% if !@repository.branches.nil? && @repository.branches.length > 0 -%> | <%= l(:label_branch) %>: <%= select_tag :branch, options_for_select([''] + @repository.branches, @rev), :id => 'branch' %> <% end -%> <% if !@repository.tags.nil? && @repository.tags.length > 0 -%> | <%= l(:label_tag) %>: <%= select_tag :tag, options_for_select([''] + @repository.tags, @rev), :id => 'tag' %> <% end -%> <% if @repository.supports_history? %> | <%= l(:label_revision) %>: <%= text_field_tag 'rev', @rev, :size => 8 %> <% end %> <% end -%> redmine-6.0.5/app/views/repositories/_related_issues.html.erb000066400000000000000000000033531500112024600244130ustar00rootroot00000000000000<% manage_allowed = User.current.allowed_to?(:manage_related_issues, @repository.project) %> <%= javascript_tag "observeAutocompleteField('issue_id', '#{escape_javascript auto_complete_issues_path(:project_id => @project, :scope => 'all')}')" %> redmine-6.0.5/app/views/repositories/_revision_graph.html.erb000066400000000000000000000007071500112024600244170ustar00rootroot00000000000000<%= javascript_tag do %> function revisionGraphHandler(){ drawRevisionGraph( document.getElementById('holder'), <%= commits.to_json.html_safe %>, <%= space %> ); } $(document).ready(revisionGraphHandler); $(window).resize(revisionGraphHandler); <% end %>
    <% content_for :header_tags do %> <%= javascript_include_tag 'raphael' %> <%= javascript_include_tag 'revision_graph' %> <% end %> redmine-6.0.5/app/views/repositories/_revisions.html.erb000066400000000000000000000051241500112024600234170ustar00rootroot00000000000000<%= form_tag( {:controller => 'repositories', :action => 'diff', :id => project, :repository_id => @repository.identifier_param, :path => to_path_param(path)}, :method => :get ) do %> <% show_diff = revisions.size > 1 && User.current.allowed_to?(:browse_repository, @repository.project) %> <% if show_diff %>

    <%= submit_tag(l(:label_view_diff), :name => nil) %>

    <% end %>
    <% show_revision_graph = ( @repository.supports_revision_graph? && path.blank? ) %> <%= if show_revision_graph && revisions && revisions.any? indexed_commits, graph_space = index_commits(revisions, @repository.branches) do |scmid| url_for( :controller => 'repositories', :action => 'revision', :id => project, :repository_id => @repository.identifier_param, :rev => scmid) end render :partial => 'revision_graph', :locals => { :commits => indexed_commits, :space => graph_space } end %> <% line_num = 1 %> <% revisions.each do |changeset| %> <% id_style = (show_revision_graph ? "padding-left:#{(graph_space + 1) * 20}px" : nil) %> <%= content_tag(:td, :class => 'id', :style => id_style) do %> <%= link_to_revision(changeset, @repository) %> <% end %> <% line_num += 1 %> <% end %>
    # <%= l(:label_date) %> <%= l(:field_author) %> <%= l(:field_comments) %>
    <%= radio_button_tag('rev', changeset.identifier, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('#cbto-#{line_num+1}').prop('checked',true);") if show_diff && (line_num < revisions.size) %> <%= radio_button_tag('rev_to', changeset.identifier, (line_num==2), :id => "cbto-#{line_num}", :onclick => "if ($('#cb-#{line_num}').prop('checked')) {$('#cb-#{line_num-1}').prop('checked',true);}") if show_diff && (line_num > 1) %> <%= format_time(changeset.committed_on) %> <%= changeset.user.blank? ? changeset.author.to_s.truncate(30) : link_to_user(changeset.user) %> <%= textilizable(truncate_at_line_break(changeset.comments), :formatting => Setting.commit_logs_formatting?) %>
    <% if show_diff %>

    <%= submit_tag(l(:label_view_diff), :name => nil) %>

    <% end %> <% end %> redmine-6.0.5/app/views/repositories/add_related_issue.js.erb000066400000000000000000000005061500112024600243460ustar00rootroot00000000000000<% if @issue %> $('#related-issues').html('<%= escape_javascript(render :partial => "related_issues") %>'); $('#related-issue-<%= @issue.id %>').effect("highlight"); $('#issue_id').focus(); <% else %> alert("<%= raw(escape_javascript(l(:label_issue) + ' ' + l('activerecord.errors.messages.invalid'))) %>"); <% end %> redmine-6.0.5/app/views/repositories/annotate.html.erb000066400000000000000000000052241500112024600230510ustar00rootroot00000000000000<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %>
    <%= render :partial => 'navigation' %>
    <%= render :partial => 'link_to_functions' %> <% if @annotate %> <% colors = Hash.new {|k,v| k[v] = (k.size % 12) } %>
    <% line_num = 1; previous_revision = nil %> <% syntax_highlight_lines(@path, Redmine::CodesetUtil.to_utf8_by_setting(@annotate.content)).each do |line| %> <% revision = @annotate.revisions[line_num - 1] %> <% previous_annot = @annotate.previous_annotations[line_num - 1] %> <% if @has_previous %> <% end %> <% if line == "\n" or line == "\r\n" %> <% else %> <% end %> <% line_num += 1; previous_revision = revision %> <% end %>
    <% if revision && revision != previous_revision %> <%= revision.identifier ? link_to_revision(revision, @repository) : format_revision(revision) %> <% end %> <% if revision && revision != previous_revision %> <% author = Redmine::CodesetUtil.to_utf8(revision.author.to_s, @repository.repo_log_encoding) %> <%= author.split('<').first %> <% end %> <% if previous_annot && revision && revision != previous_revision %> <%= link_to '', {:action => 'annotate', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(previous_annot.split[1] || @path), :rev => previous_annot.split[0] }, :title => l(:label_view_previous_annotation), :class => 'icon icon-history' %> <% end %>
    <%= line.html_safe %>
    <% else %>

    <%= notice_icon('error') %> <%= @error_message %>

    <% end %> <% html_title(l(:button_annotate)) -%> <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> <% end %> redmine-6.0.5/app/views/repositories/changes.html.erb000066400000000000000000000013241500112024600226450ustar00rootroot00000000000000<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %>
    <%= render :partial => 'navigation' %>
    <%= render :partial => 'link_to_functions' %> <%= render_properties(@properties) %> <%= render(:partial => 'revisions', :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => @entry }) unless @changesets.empty? %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> <% html_title(l(:label_change_plural)) -%> redmine-6.0.5/app/views/repositories/committers.html.erb000066400000000000000000000020541500112024600234240ustar00rootroot00000000000000

    <%= l(:label_repository) %>

    <%= simple_format(l(:text_repository_usernames_mapping)) %> <% if @committers.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <%= form_tag({}) do %> <% i = 0 -%> <% @committers.each do |committer, user_id| -%> <% i += 1 -%> <% end -%>
    <%= l(:field_login) %> <%= l(:label_user) %>
    <%= committer %> <%= hidden_field_tag "committers[#{i}][]", committer, :id => nil %> <%= select_tag "committers[#{i}][]", content_tag( 'option', "-- #{l :actionview_instancetag_blank_option} --", :value => '' ) + options_from_collection_for_select( @users, 'id', 'name', user_id.to_i ) %>

    <%= submit_tag(l(:button_save)) %>

    <% end %> <% end %> redmine-6.0.5/app/views/repositories/diff.html.erb000066400000000000000000000041471500112024600221530ustar00rootroot00000000000000<% if @changeset && @changeset_to.nil? %>
    « <% unless @changeset.previous.nil? -%> <%= link_to_revision(@changeset.previous, @repository, :text => l(:label_previous), :accesskey => accesskey(:previous)) %> <% else -%> <%= l(:label_previous) %> <% end -%> | <% unless @changeset.next.nil? -%> <%= link_to_revision(@changeset.next, @repository, :text => l(:label_next), :accesskey => accesskey(:next)) %> <% else -%> <%= l(:label_next) %> <% end -%> »  <%= form_tag({:controller => 'repositories', :action => 'revision', :id => @project, :repository_id => @repository.identifier_param, :rev => nil}, :method => :get) do %> <%= text_field_tag 'rev', @rev, :size => 8 %> <%= submit_tag l(:button_view), :name => nil %> <% end %>
    <%= render :partial => 'changeset' %> <% else %>

    <%= l(:label_revision) %> <%= @diff_format_revisions %> <%= @path %>

    <% end %> <%= form_tag({:action => 'diff', :id => @project, :repository_id => @repository.identifier_param, :path => to_path_param(@path), :rev=> @rev}, :method => 'get') do %> <%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %>

    <%= l(:label_view_diff) %>:

    <% end %> <% cache(@cache_key) do -%> <%= render :partial => 'common/diff', :locals => {:diff => @diff, :diff_type => @diff_type, :diff_style => @repository.class.scm_name} %> <% end -%> <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'Diff', { path: nil }, :caption => 'Unified diff' %> <% end %> <% html_title(with_leading_slash(@path), 'Diff') -%> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> redmine-6.0.5/app/views/repositories/edit.html.erb000066400000000000000000000003761500112024600221700ustar00rootroot00000000000000

    <%= l(:label_repository) %>

    <%= labelled_form_for :repository, @repository, :url => repository_path(@repository), :html => {:method => :put, :id => 'repository-form'} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <% end %> redmine-6.0.5/app/views/repositories/entry.html.erb000066400000000000000000000032241500112024600223770ustar00rootroot00000000000000<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %>
    <%= render :partial => 'navigation' %>
    <%= render :partial => 'link_to_functions' %> <% if Redmine::MimeType.is_type?('image', @path) %> <%= render :partial => 'common/image', :locals => {:path => @raw_url, :alt => @path} %> <% elsif Redmine::MimeType.of(@path) == 'text/x-textile' %> <%= render :partial => 'common/markup', :locals => {:markup_text_formatting => 'textile', :markup_text => @content} %> <% elsif Redmine::MimeType.of(@path) == 'text/markdown' %> <%= render :partial => 'common/markup', :locals => {:markup_text_formatting => 'common_mark', :markup_text => @content} %> <% elsif @content %> <%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %> <% else %> <% kind = if Redmine::MimeType.is_type?('video', @path) 'video' elsif Redmine::MimeType.is_type?('audio', @path) 'audio' end %> <%= render :partial => 'common/other', :locals => { :path => (@raw_url if @repository.supports_cat?), :kind => kind, :download_link => @repository.supports_cat? ? link_to( l(:label_no_preview_download), @raw_url, :class => 'icon icon-download') : nil } %> <% end %> <%= render_pagination %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> redmine-6.0.5/app/views/repositories/new.html.erb000066400000000000000000000003701500112024600220260ustar00rootroot00000000000000

    <%= l(:label_repository_new) %>

    <%= labelled_form_for :repository, @repository, :url => project_repositories_path(@project), :html => {:id => 'repository-form'} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <% end %> redmine-6.0.5/app/views/repositories/new.js.erb000066400000000000000000000001551500112024600214770ustar00rootroot00000000000000$('#content').html('<%= escape_javascript(render :template => 'repositories/new', :formats => [:html]) %>'); redmine-6.0.5/app/views/repositories/remove_related_issue.js.erb000066400000000000000000000000571500112024600251140ustar00rootroot00000000000000$('#related-issue-<%= @issue.id %>').remove(); redmine-6.0.5/app/views/repositories/revision.html.erb000066400000000000000000000032731500112024600231000ustar00rootroot00000000000000
    « <% unless @changeset.previous.nil? -%> <%= link_to_revision(@changeset.previous, @repository, :text => l(:label_previous), :accesskey => accesskey(:previous)) %> <% else -%> <%= l(:label_previous) %> <% end -%> | <% unless @changeset.next.nil? -%> <%= link_to_revision(@changeset.next, @repository, :text => l(:label_next), :accesskey => accesskey(:next)) %> <% else -%> <%= l(:label_next) %> <% end -%> »  <%= form_tag({:controller => 'repositories', :action => 'revision', :id => @project, :repository_id => @repository.identifier_param, :rev => nil}, :method => :get) do %> <%= text_field_tag 'rev', @rev, :size => 8 %> <%= submit_tag l(:button_view), :name => nil %> <% end %>
    <%= render :partial => 'changeset' %> <% if User.current.allowed_to?(:browse_repository, @project) %>
    • <%= scm_change_icon("A", (:label_added)) %>
    • <%= scm_change_icon("M", l(:label_modified)) %>
    • <%= scm_change_icon("C", l(:label_copied)) %>
    • <%= scm_change_icon("R", l(:label_renamed)) %>
    • <%= scm_change_icon("D", l(:label_deleted)) %>
    <%= render_changeset_changes %>
    <% end %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> <% title = "#{l(:label_revision)} #{format_revision(@changeset)}" title << " - #{@changeset.comments.truncate(80)}" html_title(title) -%> redmine-6.0.5/app/views/repositories/revisions.html.erb000066400000000000000000000021501500112024600232540ustar00rootroot00000000000000
    <%= form_tag( {:controller => 'repositories', :action => 'revision', :id => @project, :repository_id => @repository.identifier_param}, :method => :get ) do %> <%= l(:label_revision) %>: <%= text_field_tag 'rev', nil, :size => 8 %> <%= submit_tag l(:button_view) %> <% end %>

    <%= l(:label_revision_plural) %>

    <%= render :partial => 'revisions', :locals => {:project => @project, :path => '', :revisions => @changesets, :entry => nil } %> <%= pagination_links_full @changeset_pages,@changeset_count %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <%= auto_discovery_link_tag( :atom, :params => request.query_parameters.merge(:page => nil, :key => User.current.atom_key), :format => 'atom') %> <% end %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:key => User.current.atom_key} %> <% end %> <% html_title(l(:label_revision_plural)) -%> redmine-6.0.5/app/views/repositories/show.html.erb000066400000000000000000000055051500112024600222220ustar00rootroot00000000000000<%= call_hook(:view_repositories_show_contextual, { :repository => @repository, :project => @project }) %>
    <%= render :partial => 'navigation' %>
    <% if !@entries.nil? && authorize_for('repositories', 'browse') %> <%= render :partial => 'dir_list' %> <% end %> <%= render_properties(@properties) %> <% if authorize_for('repositories', 'revisions') %> <% if @changesets && !@changesets.empty? %>

    <%= l(:label_latest_revision_plural) %>

    <%= render :partial => 'revisions', :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => nil }%> <% end %>

    <% has_branches = (!@repository.branches.nil? && @repository.branches.length > 0) sep = '' %> <% if @repository.supports_history? && @path.blank? %> <%= link_to l(:label_view_all_revisions), :action => 'revisions', :id => @project, :repository_id => @repository.identifier_param %> <% sep = '|' %> <% end %> <% if @repository.supports_directory_revisions? && ( has_branches || !@path.blank? || !@rev.blank? ) %> <%= sep %> <%= link_to l(:label_view_revisions), :action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev %> <% end %>

    <% if @repository.supports_history? %> <% content_for :header_tags do %> <%= auto_discovery_link_tag( :atom, :action => 'revisions', :id => @project, :repository_id => @repository.identifier_param, :key => User.current.atom_key) %> <% end %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:action => 'revisions', :id => @project, :repository_id => @repository.identifier_param, :key => User.current.atom_key} %> <% end %> <% end %> <% end %> <% if @repositories.size > 1 %> <% content_for :sidebar do %>

    <%= l(:label_repository_plural) %>

    <%= @repositories.sort.collect {|repo| link_to repo.name, {:controller => 'repositories', :action => 'show', :id => @project, :repository_id => repo.identifier_param, :rev => nil, :path => nil}, :class => 'repository' + (repo == @repository ? ' selected' : '') }.join('
    ').html_safe %>

    <% end %> <% end %> <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> <% end %> <% html_title(l(:label_repository)) -%> redmine-6.0.5/app/views/repositories/stats.html.erb000066400000000000000000000056221500112024600224000ustar00rootroot00000000000000

    <%= l(:label_statistics) %>

    <%= javascript_tag do %> $(document).ready(function(){ $.getJSON(<%= raw url_for(:controller => 'repositories', :action => 'graph', :id => @project, :repository_id => @repository.identifier_param, :graph => "commits_per_month").to_json %>, function(data){ var chartData = { labels: data['labels'], datasets: [{ label: <%= raw l(:label_revision_plural).to_json %>, backgroundColor: 'rgba(255, 99, 132, 0.7)', borderColor: 'rgb(255, 99, 132)', borderWidth: 1, data: data['commits'] }, { label: <%= raw l(:label_change_plural).to_json %>, backgroundColor: 'rgba(54, 162, 235, 0.7)', borderColor: 'rgb(54, 162, 235)', data: data['changes'] }] }; new Chart(document.getElementById("commits_per_month").getContext("2d"), { type: 'bar', data: chartData, options: { elements: { bar: {borderWidth: 2} }, responsive: true, plugins: { legend: {position: 'right'}, title: { display: true, text: <%= raw l(:label_commits_per_month).to_json %> } }, scales: { yAxis: {ticks: {precision: 0}} } } }); }); $.getJSON(<%= raw url_for(:controller => 'repositories', :action => 'graph', :id => @project, :repository_id => @repository.identifier_param, :graph => "commits_per_author").to_json %>, function(data){ var chartData = { labels: data['labels'], datasets: [{ label: <%= raw l(:label_revision_plural).to_json %>, backgroundColor: 'rgba(255, 99, 132, 0.7)', borderColor: 'rgb(255, 99, 132)', borderWidth: 1, data: data['commits'] }, { label: <%= raw l(:label_change_plural).to_json %>, backgroundColor: 'rgba(54, 162, 235, 0.7)', borderColor: 'rgb(54, 162, 235)', data: data['changes'] }] }; new Chart(document.getElementById("commits_per_author").getContext("2d"), { type: 'bar', data: chartData, options: { indexAxis: 'y', elements: { bar: {borderWidth: 2} }, responsive: true, plugins: { legend: {position: 'right'}, title: { display: true, text: <%= raw l(:label_commits_per_author).to_json %> } }, scales: { xAxis: {ticks: {precision: 0}} } } }); }); }); <% end %>

    <%= link_to l(:button_back), :action => 'show', :id => @project %>

    <% html_title(l(:label_repository), l(:label_statistics)) -%> <% content_for :header_tags do %> <%= javascript_include_tag "chart.min" %> <% end %> redmine-6.0.5/app/views/roles/000077500000000000000000000000001500112024600161755ustar00rootroot00000000000000redmine-6.0.5/app/views/roles/_form.html.erb000066400000000000000000000125621500112024600207420ustar00rootroot00000000000000<%= error_messages_for 'role' %>
    <% unless @role.builtin? %>

    <%= f.text_field :name, :required => true %>

    <%= f.check_box :assignable %>

    <% end %> <% unless @role.anonymous? %>

    <%= f.select :issues_visibility, Role::ISSUES_VISIBILITY_OPTIONS.collect {|v| [l(v.last), v.first]} %>

    <% end %> <% unless @role.anonymous? %>

    <%= f.select :time_entries_visibility, Role::TIME_ENTRIES_VISIBILITY_OPTIONS.collect {|v| [l(v.last), v.first]} %>

    <% end %>

    <%= f.select :users_visibility, Role::USERS_VISIBILITY_OPTIONS.collect {|v| [l(v.last), v.first]} %>

    <% unless @role.builtin? %>

    <% Role.givable.sorted.each do |role| %> <% end %> <%= hidden_field_tag 'role[managed_role_ids][]', '' %>

    <% end %> <% unless @role.anonymous? %>

    <%= f.select :default_time_entry_activity_id, options_from_collection_for_select(TimeEntryActivity.active.shared, :id, :name, @role.default_time_entry_activity_id), :include_blank => l(:label_none) %>

    <% end %> <% if @role.new_record? && @roles.any? %>

    <%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@roles, :id, :name, params[:copy_workflow_from] || @copy_from.try(:id))) %>

    <% end %>

    <%= l(:label_permissions) %>

    <% setable_permissions = @role.setable_permissions %> <% perms_by_module = setable_permissions.group_by {|p| p.project_module.to_s} %> <% perms_by_module.keys.sort.each do |mod| %> <% module_name = mod.blank? ? 'module_project' : "module_#{mod}" %>
    <%= toggle_checkboxes_link("##{module_name}\ input") %><%= mod.blank? ? l(:label_project) : l_or_humanize(mod, :prefix => 'project_module_') %> <% perms_by_module[mod].each do |permission| %> <% end %>
    <% end %>
    <%= check_all_links 'permissions' %> <%= hidden_field_tag 'role[permissions][]', '' %>

    <%= l(:label_issue_tracking) %>

    <% permissions = [:view_issues, :add_issues, :edit_issues, :add_issue_notes, :delete_issues] & setable_permissions.collect(&:name) %>
    <% permissions.each do |permission| %> <% end %> <% permissions.each do |permission| %> <% end %> <% Tracker.sorted.all.each do |tracker| %> <% permissions.each do |permission| %> <% end %> <% end %>
    <%= l(:label_tracker) %>"><%= l("permission_#{permission}") %>
    <%= toggle_checkboxes_link('tr.permissions-all-trackers input[type="checkbox"]') %><%= l(:label_tracker_all) %>"> <%= hidden_field_tag "role[permissions_all_trackers][#{permission}]", '0', :id => nil %> <%= check_box_tag "role[permissions_all_trackers][#{permission}]", '1', @role.permissions_all_trackers?(permission), :class => "#{permission}_shown", :data => {:disables => ".#{permission}_tracker"} %>
    <%= toggle_checkboxes_link("tr.permissions-tracker-#{tracker.id} input:enabled") %><%= tracker.name %>"><%= check_box_tag "role[permissions_tracker_ids][#{permission}][]", tracker.id, @role.permissions_tracker_ids?(permission, tracker.id), :class => "#{permission}_tracker", :id => "role_permissions_tracker_ids_add_issues_#{tracker.id}" %>
    <% permissions.each do |permission| %> <%= hidden_field_tag "role[permissions_tracker_ids][#{permission}][]", '' %> <% end %>
    redmine-6.0.5/app/views/roles/edit.html.erb000066400000000000000000000003111500112024600205520ustar00rootroot00000000000000<%= title [l(:label_role_plural), roles_path], @role.name %> <%= labelled_form_for @role do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/roles/index.api.rsb000066400000000000000000000001741500112024600205660ustar00rootroot00000000000000api.array :roles do @roles.each do |role| api.role do api.id role.id api.name role.name end end end redmine-6.0.5/app/views/roles/index.html.erb000066400000000000000000000025071500112024600207450ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_role_new)), new_role_path, :class => 'icon icon-add' %> <%= link_to sprite_icon('summary', l(:label_permissions_report)), permissions_roles_path, :class => 'icon icon-summary' %>

    <%=l(:label_role_plural)%>

    <% for role in @roles %> "> <% end %>
    <%=l(:label_role)%>
    <%= content_tag(role.builtin? ? 'em' : 'span', link_to(role.name, edit_role_path(role))) %> <% unless role.builtin? || role.workflow_rules.exists? %> <%= sprite_icon('warning', l(:text_role_no_workflow)) %> (<%= link_to l(:button_edit), edit_workflows_path(:role_id => role) %>) <% end %> <%= reorder_handle(role) unless role.builtin? %> <%= link_to sprite_icon('copy', l(:button_copy)), new_role_path(:copy => role), :class => 'icon icon-copy' %> <%= delete_link role_path(role) unless role.builtin? %>
    <% html_title(l(:label_role_plural)) -%> <%= javascript_tag do %> $(function() { $("table.roles tbody").positionedItems({items: ".givable"}); }); <% end %> redmine-6.0.5/app/views/roles/new.html.erb000066400000000000000000000003231500112024600204210ustar00rootroot00000000000000<%= title [l(:label_role_plural), roles_path], l(:label_role_new) %> <%= labelled_form_for @role do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/roles/permissions.html.erb000066400000000000000000000072371500112024600222160ustar00rootroot00000000000000<%= title [l(:label_role_plural), roles_path], l(:label_permissions_report) %>
    <%= form_tag(permissions_roles_path, :id => 'permissions_form') do %> <% @roles.each do |role| %> <%= hidden_field_tag "permissions[#{role.id}][]", '', :id => nil %> <% end %>
    <% @roles.each do |role| %> <% end %> <% perms_by_module = @permissions.group_by {|p| p.project_module.to_s} %> <% perms_by_module.keys.sort.each do |mod| %> <% unless mod.blank? %> <% @roles.each do |role| %> <% end %> <% end %> <% perms_by_module[mod].each do |permission| %> <% humanized_perm_name = l_or_humanize(permission.name, :prefix => 'permission_') %> <% @roles.each do |role| %> <% if role.setable_permissions.include? permission %> <% else %> <% end %> <% end %> <% end %> <% end %>
    <%=l(:label_permissions)%> <%= toggle_checkboxes_link("input.role-#{role.id}") %> <%= content_tag(role.builtin? ? 'em' : 'span', role.name) %>
    <%= sprite_icon("angle-down") %> <%= l_or_humanize(mod, :prefix => 'project_module_') %> <%= role.name %>
    <%= toggle_checkboxes_link(".permission-#{permission.name} input") %> <%= humanized_perm_name %> "> <%= check_box_tag "permissions[#{role.id}][]", permission.name, (role.permissions.include? permission.name), :id => nil, :class => "role-#{role.id}" %>

    <%= check_all_links 'permissions_form' %>

    <%= submit_tag l(:button_save) %>

    <% end %> <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <% end %> redmine-6.0.5/app/views/roles/show.api.rsb000066400000000000000000000005431500112024600204370ustar00rootroot00000000000000api.role do api.id @role.id api.name @role.name api.assignable @role.assignable api.issues_visibility @role.issues_visibility api.time_entries_visibility @role.time_entries_visibility api.users_visibility @role.users_visibility api.array :permissions do @role.permissions.each do |perm| api.permission(perm.to_s) end end end redmine-6.0.5/app/views/search/000077500000000000000000000000001500112024600163165ustar00rootroot00000000000000redmine-6.0.5/app/views/search/index.api.rsb000066400000000000000000000006661500112024600207150ustar00rootroot00000000000000api.array :results, api_meta(:total_count => @result_count, :offset => @offset, :limit => @limit) do @results.each do |result| api.result do api.id result.id api.title result.event_title api.type result.event_type api.url url_for(result.event_url(:only_path => false)) api.description result.event_description api.datetime result.event_datetime end end end redmine-6.0.5/app/views/search/index.html.erb000066400000000000000000000074541500112024600210740ustar00rootroot00000000000000

    <%= l(:label_search) %>

    <%= form_tag({}, :method => :get, :id => 'search-form') do %>
    <%= label_tag "search-input", l(:description_search), :class => "hidden-for-sighted" %>

    <%= text_field_tag 'q', @question, :size => 60, :id => 'search-input', :data => { :auto_complete => true } %> <%= project_select_tag %> <%= hidden_field_tag 'all_words', '', :id => nil %> <%= hidden_field_tag 'titles_only', '', :id => nil %>

    <%= toggle_checkboxes_link('p#search-types input') %>

    <% @object_types.each do |t| %> <% end %>

    <%= hidden_field_tag 'options', '', :id => 'show-options' %>

    <%= submit_tag l(:label_search) %>

    <% end %> <% if @results %>
    <%= render_results_by_type(@result_count_by_type) unless @scope.size == 1 %>

    <%= l(:label_result_plural) %> (<%= @result_count %>)

    <% if @result_count_by_type['issues'].to_i > 0 && @search_attachments == '0' %>

    <%= link_to sprite_icon('list', l(:button_apply_issues_filter)), issues_filter_path(@question, projects_scope: params[:scope], all_words: @all_words, titles_only: @titles_only, open_issues: @open_issues), :class => 'icon icon-list' %>

    <% end %>
    <% @results.each do |e| %>
    <%= sprite_icon(e.event_type) %> <%= content_tag('span', e.project, :class => 'project') unless @project == e.project %> <%= link_to(highlight_tokens(e.event_title.truncate(255), @tokens), e.event_url) %>
    <%= highlight_tokens(e.event_description, @tokens) %> <%= format_time(e.event_datetime) %>
    <% end %>
    <% end %> <% if @result_pages %> <%= pagination_links_full @result_pages, @result_count, :per_page_links => false %> <% end %> <% html_title(l(:label_search)) -%> <%= javascript_tag do %> $("#search-types a").click(function(e){ e.preventDefault(); $("#search-types input[type=checkbox]").prop('checked', false); $(this).siblings("input[type=checkbox]").prop('checked', true); if ($("#search-input").val() != "") { $("#search-form").submit(); } }); $("#search-form").submit(function(){ $("#show-options").val($("#options-content").is(":visible") ? '1' : '0'); }); <% if params[:options] == '1' %> toggleFieldset($("#options-content")); <% end %> <% end %> redmine-6.0.5/app/views/settings/000077500000000000000000000000001500112024600167115ustar00rootroot00000000000000redmine-6.0.5/app/views/settings/_api.html.erb000066400000000000000000000003611500112024600212560ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'api'}) do %>

    <%= setting_check_box :rest_api_enabled %>

    <%= setting_check_box :jsonp_enabled %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_attachments.html.erb000066400000000000000000000017561500112024600230310ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'attachments'}) do %>

    <%= setting_text_field :attachment_max_size, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :bulk_download_max_size, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_area :attachment_extensions_allowed %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: txt, png

    <%= setting_text_area :attachment_extensions_denied %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: js, swf

    <%= setting_text_field :file_max_size_displayed, :size => 6 %> <%= l(:"number.human.storage_units.units.kb") %>

    <%= setting_text_field :diff_max_lines_displayed, :size => 6 %>

    <%= setting_text_field :repositories_encodings, :size => 60 %> <%= l(:text_comma_separated) %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_authentication.html.erb000066400000000000000000000053611500112024600235310ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'authentication'}) do %>

    <%= setting_select :login_required, [[l(:label_login_required_yes), "1"], [l(:label_login_required_no), "0"]] %> <%= t(:text_login_required_html, anonymous_role_path: edit_role_path(Role.anonymous)) %>

    <%= setting_select :autologin, [[l(:label_disabled), 0]] + [1, 7, 30, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]} %>

    <%= setting_select :self_registration, [[l(:label_disabled), "0"], [l(:label_registration_activation_by_email), "1"], [l(:label_registration_manual_activation), "2"], [l(:label_registration_automatic_activation), "3"]], :onchange => "if (this.value != '0') { $('#settings_show_custom_fields_on_registration').removeAttr('disabled'); } else { $('#settings_show_custom_fields_on_registration').attr('disabled', true); }" %>

    <%= setting_check_box :show_custom_fields_on_registration, :disabled => !Setting.self_registration? %>

    <%= setting_text_field :password_min_length, :size => 6 %>

    <%= setting_multiselect :password_required_char_classes, Setting::PASSWORD_CHAR_CLASSES.keys.collect {|c| [l("label_password_char_class_#{c}"), c]} , :inline => true %>

    <%= setting_select :password_max_age, [[l(:label_disabled), 0]] + [7, 30, 60, 90, 180, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]} %>

    <%= setting_check_box :lost_password %>

    <%= setting_select :twofa, [[l(:label_disabled), "0"], [l(:label_optional), "1"], [l(:label_required_administrators), "3"], [l(:label_required_lower), "2"]] -%> <%= t 'twofa_hint_disabled_html', label: t(:label_disabled) -%>
    <%= t 'twofa_hint_optional_html', label: t(:label_optional) -%>
    <%= t 'twofa_hint_required_administrators_html', label: t(:label_required_administrators) -%>
    <%= t 'twofa_hint_required_html', label: t(:label_required_lower) -%>

    <%= l(:label_session_expiration) %>

    <%= setting_select :session_lifetime, session_lifetime_options %>

    <%= setting_select :session_timeout, session_timeout_options %>

    <%= l(:text_session_expiration_settings) %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_display.html.erb000066400000000000000000000034761500112024600221640ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'display'}) do %>

    <%= setting_select :ui_theme, Redmine::Themes.themes.collect {|t| [t.name, t.id]}, :blank => :label_default, :label => :label_theme %>

    <%= setting_select :default_language, lang_options_for_select(false) %>

    <%= setting_check_box :force_default_language_for_anonymous %>

    <%= setting_check_box :force_default_language_for_loggedin %>

    <%= setting_select :start_of_week, [[day_name(1),'1'], [day_name(6),'6'], [day_name(7),'7']], :blank => :label_language_based %>

    <% locale = User.current.language.blank? ? ::I18n.locale : User.current.language %>

    <%= setting_select :date_format, date_format_setting_options(locale), :blank => :label_language_based %>

    <%= setting_select :time_format, Setting::TIME_FORMATS.collect {|f| [::I18n.l(Time.now, :locale => locale, :format => f), f]}, :blank => :label_language_based %>

    <%= setting_select :timespan_format, [["%.2f" % 0.75, 'decimal'], ['0:45 h', 'minutes']], :blank => false %>

    <%= setting_select :user_format, @options[:user_format] %>

    <%= setting_check_box :gravatar_enabled, :data => {:enables => '#settings_gravatar_default'} %> <%= t(:text_avatar_server_config_html, :url => Redmine::Configuration['avatar_server_url']) %>

    <%= setting_select :gravatar_default, gravatar_default_setting_options, :blank => :label_none %>

    <%= setting_check_box :thumbnails_enabled, :data => {:enables => '#settings_thumbnails_size'} %>

    <%= setting_text_field :thumbnails_size, :size => 6 %>

    <%= setting_select :new_item_menu_tab, [[l(:label_none), '0'], [l(:label_new_project_issue_tab_enabled), '1'], [l(:label_new_object_tab_enabled), '2']] %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_general.html.erb000066400000000000000000000035721500112024600221310ustar00rootroot00000000000000<%= form_tag({:action => 'edit'}) do %>

    <%= setting_text_field :app_title, :size => 30 %>

    <%= setting_text_area :welcome_text, :cols => 60, :rows => 5, :class => 'wiki-edit' %>

    <%= wikitoolbar_for 'settings_welcome_text' %>

    <%= setting_text_field :per_page_options, :size => 20 %> <%= l(:text_comma_separated) %>

    <%= setting_text_field :search_results_per_page, :size => 6 %>

    <%= setting_text_field :activity_days_default, :size => 6 %> <%= l(:label_day_plural) %>

    <%= setting_text_field :host_name, :size => 60 %> <%= l(:label_example) %>: <%= @guessed_host_and_path %>

    <%= setting_select :protocol, [['HTTP', 'http'], ['HTTPS', 'https']] %>

    <%= setting_select :text_formatting, Redmine::WikiFormatting.formats_for_select, :blank => :label_none %> "> <%= l(:text_setting_config_change) %>

    <%= setting_check_box :cache_formatted_text %>

    <%= setting_select :wiki_compression, [['Gzip', 'gzip']], :blank => :label_none %>

    <%= setting_text_field :feeds_limit, :size => 6 %>

    <%= call_hook(:view_settings_general_form) %>
    <%= submit_tag l(:button_save) %> <% end %> <%= javascript_tag do %> $('#settings_text_formatting').on('change', function(e){ const formatter = e.target.value; const parent_block = document.getElementById("common_mark_info"); if (formatter == "common_mark") { parent_block.classList.remove('hidden'); } else { parent_block.classList.add('hidden'); } }); <% end %> redmine-6.0.5/app/views/settings/_issues.html.erb000066400000000000000000000050021500112024600220150ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'issues'}) do %>

    <%= setting_check_box :cross_project_issue_relations %>

    <%= setting_select :link_copied_issue, link_copied_issue_options %>

    <%= setting_select :copy_attachments_on_issue_copy, copy_attachments_on_issue_copy_options %>

    <%= setting_select :cross_project_subtasks, cross_project_subtasks_options %>

    <%= setting_check_box :close_duplicate_issues %>

    <%= setting_check_box :issue_group_assignment %>

    <%= setting_check_box :default_issue_start_date_to_creation_date %>

    <%= setting_check_box :display_subprojects_issues %>

    <%= setting_select :issue_done_ratio, Issue::DONE_RATIO_OPTIONS.collect {|i| [l("setting_issue_done_ratio_#{i}"), i]} %>

    <%= setting_select :issue_done_ratio_interval, [5, 10].collect {|i| ["#{i} %", i]} %>

    <%= setting_multiselect :non_working_week_days, (1..7).map {|d| [day_name(d), d.to_s]}, :inline => true %>

    <%= setting_text_field :issues_export_limit, :size => 6 %>

    <%= setting_text_field :gantt_items_limit, :size => 6 %>

    <%= setting_text_field :gantt_months_limit, :size => 6 %>

    <%= l(:label_parent_task_attributes) %>

    <%= setting_select :parent_issue_dates, parent_issue_dates_options, :label => "#{l(:field_start_date)} / #{l(:field_due_date)}" %>

    <%= setting_select :parent_issue_priority, parent_issue_priority_options, :label => :field_priority %>

    <%= setting_select :parent_issue_done_ratio, parent_issue_done_ratio_options, :label => :field_done_ratio %>

    <%= l(:setting_issue_list_default_columns) %>
    <%= render_query_columns_selection( IssueQuery.new(:column_names => Setting.issue_list_default_columns), :name => 'settings[issue_list_default_columns]') %>

    <%= setting_multiselect :issue_list_default_totals, IssueQuery.new(:totalable_names => Setting.issue_list_default_totals).available_totalable_columns.map {|c| [c.caption, c.name.to_s]}, :inline => true, :label => :label_total_plural %>

    <%= setting_select :default_issue_query, default_global_issue_query_options, label: false %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_mail_handler.html.erb000066400000000000000000000032401500112024600231230ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'mail_handler'}) do %>

    <%= setting_text_area :mail_handler_body_delimiters, :rows => 5 %> <%= l(:text_line_separated) %>

    <%= setting_text_area :mail_handler_excluded_filenames %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: smime.p7s, *.vcf

    <%= setting_select :mail_handler_preferred_body_part, [[l(:label_preferred_body_part_text), 'plain'], [l(:label_preferred_body_part_html), 'html']] %>

    <%= setting_check_box :mail_handler_api_enabled, :onclick => "if (this.checked) { $('#settings_mail_handler_api_key').removeAttr('disabled'); } else { $('#settings_mail_handler_api_key').attr('disabled', true); }"%>

    <%= setting_text_field :mail_handler_api_key, :size => 30, :id => 'settings_mail_handler_api_key', :disabled => !Setting.mail_handler_api_enabled? %> <%= link_to_function l(:label_generate_key), "if (!$('#settings_mail_handler_api_key').attr('disabled')) { $('#settings_mail_handler_api_key').val(randomKey(20)) }" %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_notifications.html.erb000066400000000000000000000024701500112024600233610ustar00rootroot00000000000000<% if @deliveries %> <%= form_tag({:action => 'edit', :tab => 'notifications'}) do %>

    <%= setting_text_field :mail_from, :size => 60 %>

    <%= setting_check_box :plain_text_mail %>

    <%= setting_check_box :show_status_changes_in_mail_subject %>

    <%=l(:text_select_mail_notifications)%> <%= hidden_field_tag 'settings[notified_events][]', '' %> <% @notifiables.each do |notifiable| %> <%= notification_field notifiable %>
    <% end %>

    <%= check_all_links('notified_events') %>

    <%= l(:setting_emails_header) %> <%= setting_text_area :emails_header, :label => false, :class => 'wiki-edit', :rows => 5 %> <%= wikitoolbar_for 'settings_emails_header' %>
    <%= l(:setting_emails_footer) %> <%= setting_text_area :emails_footer, :label => false, :class => 'wiki-edit', :rows => 5 %> <%= wikitoolbar_for 'settings_emails_footer' %>
    <%= link_to l(:label_send_test_email), test_email_path, :method => :post %>
    <%= submit_tag l(:button_save) %> <% end %> <% else %>
    <%= simple_format(l(:text_email_delivery_not_configured)) %>
    <% end %> redmine-6.0.5/app/views/settings/_projects.html.erb000066400000000000000000000033111500112024600223340ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'projects'}) do %>

    <%= setting_check_box :default_projects_public %>

    <%= setting_multiselect(:default_projects_modules, Redmine::AccessControl.available_project_modules.collect {|m| [l_or_humanize(m, :prefix => "project_module_"), m.to_s]}) %>

    <%= setting_multiselect(:default_projects_tracker_ids, Tracker.sorted.collect {|t| [t.name, t.id.to_s]}) %>

    <%= setting_check_box :sequential_project_identifiers %>

    <%= setting_select :new_project_user_role_id, Role.find_all_givable.collect {|r| [r.name, r.id.to_s]}, :blank => "--- #{l(:actionview_instancetag_blank_option)} ---" %>

    <%= l(:setting_project_list_defaults) %> <% query = ProjectQuery.new(Setting.project_list_defaults) %>

    <% query.available_display_types.each do |t| %> <%= radio_button_tag('settings[project_list_display_type]', t, Setting.project_list_display_type == t, :id => "setting_project_list_display_type_#{t}") %> <%= content_tag('label', l(:"label_display_type_#{t}"), :for => "settings_project_list_display_type_#{t}", :class => "inline") %> <% end %>

    <%= render_query_columns_selection(query, :name => 'settings[project_list_defaults][column_names]') %>

    <%= setting_select :default_project_query, default_global_project_query_options, label: false %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_repositories.html.erb000066400000000000000000000134141500112024600232370ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'repositories'}) do %>
    <%= l(:setting_enabled_scm) %> <%= hidden_field_tag 'settings[enabled_scm][]', '' %> <% Redmine::Scm::Base.all.collect do |choice| %> <% scm_class = "Repository::#{choice}".constantize %> <% text, value = (choice.is_a?(Array) ? choice : [choice, choice]) %> <% setting = :enabled_scm %> <% enabled = Setting.send(setting).include?(value) %> <% end %>
    <%= l(:text_scm_command) %> <%= l(:text_scm_command_version) %>
    <% if enabled %> <%= scm_class.scm_command %> <% end %> <%= scm_class.scm_version_string if enabled %>

    <%= l(:text_scm_config) %>

    <%= setting_check_box :autofetch_changesets %>

    <%= setting_check_box :sys_api_enabled, :onclick => "if (this.checked) { $('#settings_sys_api_key').removeAttr('disabled'); } else { $('#settings_sys_api_key').attr('disabled', true); }" %>

    <%= setting_text_field :sys_api_key, :size => 30, :id => 'settings_sys_api_key', :disabled => !Setting.sys_api_enabled? %> <%= link_to_function l(:label_generate_key), "if (!$('#settings_sys_api_key').attr('disabled')) { $('#settings_sys_api_key').val(randomKey(20)) }" %>

    <%= setting_text_field :repository_log_display_limit, :size => 6 %>

    <%= setting_check_box :commit_logs_formatting %>

    <%= l(:text_issues_ref_in_commit_messages) %>

    <%= setting_text_field :commit_ref_keywords, :size => 30 %> <%= l(:text_comma_separated) %>

    <%= setting_check_box :commit_cross_project_ref %>

    <%= setting_check_box :commit_logtime_enabled, :onclick => "if (this.checked) { $('#settings_commit_logtime_activity_id').removeAttr('disabled'); } else { $('#settings_commit_logtime_activity_id').attr('disabled', true); }"%>

    <%= setting_select :commit_logtime_activity_id, [[l(:label_default), 0]] + TimeEntryActivity.shared.active.collect{|activity| [activity.name, activity.id.to_s]}, :disabled => !Setting.commit_logtime_enabled?%>

    <% @commit_update_keywords.each do |rule| %> <% end %>
    <%= l(:label_tracker) %> <%= l(:setting_commit_fix_keywords) %> <%= l(:label_applied_status) %> <%= l(:field_done_ratio) %>
    <%= select_tag( "settings[commit_update_keywords][if_tracker_id][]", options_for_select( [[l(:label_all), ""]] + Tracker.sorted.map {|t| [t.name, t.id.to_s]}, rule['if_tracker_id']), :id => nil ) %> <%= text_field_tag("settings[commit_update_keywords][keywords][]", rule['keywords'], :id => nil, :size => 30) %> <%= select_tag("settings[commit_update_keywords][status_id][]", options_for_select( [["", 0]] + IssueStatus.sorted. collect{|status| [status.name, status.id.to_s]}, rule['status_id']), :id => nil ) %> <%= select_tag("settings[commit_update_keywords][done_ratio][]", options_for_select( [["", ""]] + (0..100).step(Setting.issue_done_ratio_interval.to_i).to_a.collect {|r| ["#{r} %", r]}, rule['done_ratio']), :id => nil ) %> <%= link_to(sprite_icon('del', l(:button_delete)), '#', :class => 'delete-commit-keywords icon-only icon-del', :title => l(:button_delete)) %>
    <%= l(:text_comma_separated) %> <%= link_to(sprite_icon('add', l(:button_add)), '#', :class => 'add-commit-keywords icon-only icon-add', :title => l(:button_add)) %>

    <%= submit_tag l(:button_save) %>

    <% end %> <%= javascript_tag do %> $('#commit-keywords').on('click', 'a.delete-commit-keywords', function(e){ e.preventDefault(); if ($('#commit-keywords tbody tr.commit-keywords').length > 1) { $(this).parents('#commit-keywords tr').remove(); } else { $('#commit-keywords tbody tr.commit-keywords').find('input, select').val(''); } }); $('#commit-keywords').on('click', 'a.add-commit-keywords', function(e){ e.preventDefault(); var row = $('#commit-keywords tr.commit-keywords:last'); row.clone().insertAfter(row).find('input, select').val(''); }); <% end %> redmine-6.0.5/app/views/settings/_timelog.html.erb000066400000000000000000000021121500112024600221410ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'timelog'}) do %>

    <%= setting_multiselect(:timelog_required_fields, [[l(:field_issue), 'issue_id'], [l(:field_comments), 'comments'] ]) %>

    <%= setting_text_field :timelog_max_hours_per_day, :size => 6 %>

    <%= setting_check_box :timelog_accept_0_hours %>

    <%= setting_check_box :timelog_accept_future_dates %>

    <%= l(:setting_time_entry_list_defaults) %> <% query = TimeEntryQuery.new(Setting.time_entry_list_defaults) %> <%= hidden_field_tag('settings[time_entry_list_defaults][column_names][]', '') %>
    <%= render_query_columns_selection(query, :name => 'settings[time_entry_list_defaults][column_names]') %>

    <%= available_totalable_columns_tags(query, :name => 'settings[time_entry_list_defaults][totalable_names]') %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/_users.html.erb000066400000000000000000000024231500112024600216470ustar00rootroot00000000000000<%= form_tag({:action => 'edit', :tab => 'users'}) do %>

    <%= setting_text_field :max_additional_emails, :size => 6 %>

    <%= setting_text_area :email_domains_allowed %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: example.com, example.org

    <%= setting_text_area :email_domains_denied %> <%= l(:text_comma_separated) %> <%= l(:label_example) %>: .example.com, foo.example.org, example.net

    <%= setting_check_box :unsubscribe %>

    <%= l(:label_default_values_for_new_users) %>

    <%= setting_check_box :default_users_hide_mail, :label => :field_hide_mail %>

    <%= setting_select(:default_notification_option, User.valid_notification_options.collect {|o| [l(o.last), o.first.to_s]}) %>

    <%= setting_check_box :default_users_no_self_notified, :label => :label_user_mail_no_self_notified %>

    <%= setting_select :default_users_time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :label => :field_time_zone, :blank => :label_none %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/settings/edit.html.erb000066400000000000000000000003031500112024600212670ustar00rootroot00000000000000

    <%= l(:label_settings) %>

    <%= render_settings_error @setting_errors %> <%= render_tabs administration_settings_tabs %> <% html_title(l(:label_settings), l(:label_administration)) -%> redmine-6.0.5/app/views/settings/plugin.html.erb000066400000000000000000000005531500112024600216470ustar00rootroot00000000000000<%= title [l(:label_plugins), {:controller => 'admin', :action => 'plugins'}], @plugin.name %>
    <%= form_tag({:action => 'plugin'}) do %>
    <%= render :partial => @partial, :locals => {:settings => @settings}%>
    <%= submit_tag l(:button_apply) %> <% end %>
    redmine-6.0.5/app/views/sudo_mode/000077500000000000000000000000001500112024600170275ustar00rootroot00000000000000redmine-6.0.5/app/views/sudo_mode/_new_modal.html.erb000066400000000000000000000015531500112024600225740ustar00rootroot00000000000000

    <%= l(:label_password_required) %>

    <%= t 'sudo_mode_new_info_html' %>

    <%= form_tag({}, remote: true) do %> <%= hidden_field_tag '_method', request.request_method %> <%= hash_to_hidden_fields @sudo_form.original_fields %> <%= render_flash_messages %>

    <%= password_field_tag :sudo_password, nil, size: 25, :autocomplete => 'current-password' %>
    <%= link_to l(:label_password_lost), lost_password_path, :class => "lost_password" if Setting.lost_password? %>

    <%= submit_tag l(:button_submit), onclick: "hideModal(this);" %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/sudo_mode/new.html.erb000066400000000000000000000013531500112024600212570ustar00rootroot00000000000000

    <%= l :label_password_required %>

    <%= t 'sudo_mode_new_info_html' %>

    <%= form_tag({}, method: :post, class: 'tabular', id: 'sudo-form') do %> <%= hidden_field_tag '_method', request.request_method %> <%= hash_to_hidden_fields @sudo_form.original_fields %>

    <%= password_field_tag :sudo_password, nil, size: 25, :autocomplete => 'current-password', autofocus: true %>
    <%= link_to l(:label_password_lost), lost_password_path, :class => "lost_password" if Setting.lost_password? %>

    <%= submit_tag l(:button_submit) %> <% end %> redmine-6.0.5/app/views/sudo_mode/new.js.erb000066400000000000000000000004131500112024600207230ustar00rootroot00000000000000var sudo_modal = $('#sudo-modal').length ? $('#sudo-modal') : $("
    ", {id: "sudo-modal"}).appendTo($("body")); sudo_modal.hide().html('<%= escape_javascript render partial: 'sudo_mode/new_modal' %>'); showModal('sudo-modal', '400px'); $('#sudo_password').focus(); redmine-6.0.5/app/views/timelog/000077500000000000000000000000001500112024600165115ustar00rootroot00000000000000redmine-6.0.5/app/views/timelog/_date_range.html.erb000066400000000000000000000010541500112024600223760ustar00rootroot00000000000000<%= render :partial => 'queries/query_form' %>
    <% query_params = request.query_parameters %>
    • <%= link_to(l(:label_details), _time_entries_path(@project, nil, :params => query_params), :class => (action_name == 'index' ? 'selected' : nil)) %>
    • <%= link_to(l(:label_report), _report_time_entries_path(@project, nil, :params => query_params), :class => (action_name == 'report' ? 'selected' : nil)) %>
    redmine-6.0.5/app/views/timelog/_form.html.erb000066400000000000000000000064731500112024600212620ustar00rootroot00000000000000<%= error_messages_for 'time_entry' %> <%= back_url_hidden_field_tag %>
    <% if @time_entry.new_record? && params[:project_id] %> <%= hidden_field_tag 'project_id', params[:project_id] %> <% elsif @time_entry.new_record? && params[:issue_id] %> <%= hidden_field_tag 'issue_id', params[:issue_id] %> <% else %>

    <%= f.select :project_id, project_tree_options_for_select(Project.allowed_to(:log_time).to_a, :selected => @time_entry.project, :include_blank => true), :required => true %>

    <% end %>

    <%= f.text_field :issue_id, :size => 6, :required => Setting.timelog_required_fields.include?('issue_id') %> <%= link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>

    <% if User.current.allowed_to?(:log_time_for_other_users, @project) %>

    <%= f.select :user_id, user_collection_for_select_options(@time_entry), :required => true %>

    <% elsif !@time_entry.new_record? %>

    <%= f.label_for_field :user_id %> <%= link_to_user(@time_entry.user) %>

    <% end %>

    <%= f.date_field :spent_on, :size => 10, :required => true %><%= calendar_for('time_entry_spent_on') %>

    <%= f.hours_field :hours, :size => 6, :required => true %>

    <%= f.text_field :comments, :size => 100, :maxlength => 1024, :required => Setting.timelog_required_fields.include?('comments') %>

    <%= f.select :activity_id, activity_collection_for_select_options(@time_entry), :required => true %>

    <% @time_entry.editable_custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :time_entry, value %>

    <% if value.custom_field.full_text_formatting? %> <%= wikitoolbar_for "time_entry_custom_field_values_#{value.custom_field_id}", preview_issue_path(:project_id => @project) %> <% end %> <% end %> <%= call_hook(:view_timelog_edit_form_bottom, { :time_entry => @time_entry, :form => f }) %>
    <%= javascript_tag do %> $(document).ready(function(){ $('#time_entry_project_id').change(function(){ $('#time_entry_issue_id').val(''); }); $('#time_entry_project_id, #time_entry_issue_id').change(function(){ $.ajax({ url: '<%= escape_javascript(@time_entry.new_record? ? new_time_entry_path(:format => 'js') : edit_time_entry_path(:format => 'js')) %>', type: 'post', data: $(this).closest('form').serialize() }); }); }); observeAutocompleteField('time_entry_issue_id', function(request, callback) { var url = '<%= j auto_complete_issues_path %>'; var data = { term: request.term }; var project_id; <% if @time_entry.new_record? && @project %> project_id = '<%= @project.id %>'; <% else %> project_id = $('#time_entry_project_id').val(); <% end %> if(project_id){ data['project_id'] = project_id; } else { data['scope'] = 'all'; } $.get(url, data, null, 'json') .done(function(data){ callback(data); }) .fail(function(jqXHR, status, error){ callback([]); }); }, { select: function(event, ui) { $('#time_entry_issue').text(''); $('#time_entry_issue_id').val(ui.item.value).change(); } } ); <% end %> redmine-6.0.5/app/views/timelog/_list.html.erb000066400000000000000000000054171500112024600212670ustar00rootroot00000000000000<%= form_tag({}, :data => {:cm_url => time_entries_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(:params => request.query_parameters), :id => nil %>
    <% @query.inline_columns.each do |column| %> <%= column_header(@query, column) %> <% end %> <% grouped_query_results(entries, @query) do |entry, group_name, group_count, group_totals| -%> <% if group_name %> <% reset_cycle %> <% end %> hascontextmenu"> <% @query.inline_columns.each do |column| %> <%= content_tag('td', column_content(column, entry), :class => column.css_classes) %> <% end %> <% @query.block_columns.each do |column| if (text = column_content(column, entry)) && text.present? -%> <% end -%> <% end -%> <% end -%>
    <%= check_box_tag 'check_all', '', false, :class => 'toggle-selection', :title => "#{l(:button_check_all)} / #{l(:button_uncheck_all)}" %>
    <%= sprite_icon("angle-down") %> <%= group_name %> <% if group_count %> <%= group_count %> <% end %> <%= group_totals %> <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
    <%= check_box_tag("ids[]", entry.id, false, :id => nil) %> <% if entry.editable_by?(User.current) -%> <%= link_to sprite_icon('edit', l(:button_edit)), edit_time_entry_path(entry), :title => l(:button_edit), :class => 'icon-only icon-edit' %> <%= link_to sprite_icon('del', l(:button_delete)), time_entry_path(entry), :data => {:confirm => l(:text_are_you_sure)}, :method => :delete, :title => l(:button_delete), :class => 'icon-only icon-del' %> <% end -%> <%= link_to_context_menu %>
    <% if @query.block_columns.count > 1 %> <%= column.caption %> <% end %> <%= text %>
    <% end -%> <%= context_menu %> redmine-6.0.5/app/views/timelog/_report_criteria.html.erb000066400000000000000000000017471500112024600235130ustar00rootroot00000000000000<% @report.hours.collect {|h| h[criterias[level]].to_s}.uniq.each do |value| %> <% hours_for_value = select_hours(hours, criterias[level], value) -%> <% next if hours_for_value.empty? -%> <%= ("" * level).html_safe %> <%= format_criteria_value(@report.available_criteria[criterias[level]], value) %> <%= ("" * (criterias.length - level - 1)).html_safe -%> <% total = 0 -%> <% @report.periods.each do |period| -%> <% sum = sum_hours(select_hours(hours_for_value, @report.columns, period.to_s)); total += sum -%> <%= html_hours(format_hours(sum)) if sum > 0 %> <% end -%> <%= html_hours(format_hours(total)) if total > 0 %> <% if criterias.length > level+1 -%> <%= render(:partial => 'report_criteria', :locals => {:criterias => criterias, :hours => hours_for_value, :level => (level + 1)}) %> <% end -%> <% end %> redmine-6.0.5/app/views/timelog/_sidebar.html.erb000066400000000000000000000000701500112024600217130ustar00rootroot00000000000000<%= render_sidebar_queries(TimeEntryQuery, @project) %> redmine-6.0.5/app/views/timelog/bulk_edit.html.erb000066400000000000000000000107401500112024600221120ustar00rootroot00000000000000

    <%= l(:label_bulk_edit_selected_time_entries) %>

    <% if @unsaved_time_entries.present? %>
    <%= notice_icon('error') %> <%= l(:notice_failed_to_save_time_entries, :count => @unsaved_time_entries.size, :total => @saved_time_entries.size, :ids => @unsaved_time_entries.map {|i| "##{i.id}"}.join(', ')) %>
      <% bulk_edit_error_messages(@unsaved_time_entries).each do |message| %>
    • <%= message %>
    • <% end %>
    <% end %>
      <% @time_entries.each do |entry| %> <%= content_tag 'li', link_to( "#{format_date(entry.spent_on)} - #{entry.project}: #{l(:label_f_hour_plural, :value => format_hours(entry.hours))} (#{entry.user})", edit_time_entry_path(entry) ) %> <% end %>
    <%= form_tag(bulk_update_time_entries_path, :id => 'bulk_edit_form') do %> <%= @time_entries.collect {|i| hidden_field_tag('ids[]', i.id, :id => nil)}.join.html_safe %>

    <%= select_tag('time_entry[project_id]', project_tree_options_for_select(@target_projects, :include_blank => l(:label_no_change_option), :selected => @target_project), :onchange => "updateBulkEditFrom('#{escape_javascript url_for(:action => 'bulk_edit', :format => 'js')}')" ) %>

    <%= text_field :time_entry, :issue_id, :size => 6 %>

    <%= date_field :time_entry, :spent_on, :size => 10, :value => @time_entry_params[:spent_on] %><%= calendar_for('time_entry_spent_on') %>

    <%= text_field :time_entry, :hours, :size => 6, :value => @time_entry_params[:hours] %>

    <% if @available_activities.any? %>

    <%= select_tag('time_entry[activity_id]', content_tag('option', l(:label_no_change_option), :value => '') + options_from_collection_for_select(@available_activities, :id, :name, @time_entry_params[:activity_id])) %>

    <% end %>

    <%= text_field(:time_entry, :comments, :size => 100, :value => @time_entry_params[:comments]) %>

    <% @custom_fields.each do |custom_field| %>

    <%= custom_field_tag_for_bulk_edit('time_entry', custom_field, @time_entries, @time_entry_params[:custom_field_values][custom_field.id.to_s]) %>

    <%= wikitoolbar_for "time_entry_custom_field_values_#{custom_field.id}", preview_issue_path(:project_id => @project) if custom_field.full_text_formatting? %> <% end %> <%= call_hook(:view_time_entries_bulk_edit_details_bottom, { :time_entries => @time_entries }) %>

    <%= submit_tag l(:button_submit) %>

    <% end %> <%= javascript_tag do %> $(document).ready(function(){ $('#time_entry_project_id').change(function(){ $('#time_entry_issue').text(''); }); }); <% if @project || @target_project %> observeAutocompleteField('time_entry_issue_id', function(request, callback) { var url = '<%= j auto_complete_issues_path %>'; var data = { term: request.term }; var project_id; <% if @project %> project_id = '<%= @project.id %>'; <% end %> current_project_id = $('#time_entry_project_id').val(); if(current_project_id === ''){ data['project_id'] = project_id; } else { data['project_id'] = current_project_id; } $.get(url, data, null, 'json') .done(function(data){ callback(data); }) .fail(function(jqXHR, status, error){ callback([]); }); }, { select: function(event, ui, data) { $('#time_entry_issue').text(ui.item.label); } } ); <% end %> <% end %> redmine-6.0.5/app/views/timelog/bulk_edit.js.erb000066400000000000000000000001561500112024600215620ustar00rootroot00000000000000$('#content').html('<%= escape_javascript(render :template => 'timelog/bulk_edit', :formats => [:html]) %>'); redmine-6.0.5/app/views/timelog/edit.html.erb000066400000000000000000000004621500112024600210750ustar00rootroot00000000000000

    <%= l(:label_spent_time) %>

    <%= labelled_form_for @time_entry, :url => time_entry_path(@time_entry), :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_save) %> <%= cancel_button_tag_for_time_entry(@project) %> <% end %> redmine-6.0.5/app/views/timelog/edit.js.erb000066400000000000000000000004361500112024600205460ustar00rootroot00000000000000$('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), @time_entry.activity_id) %>'); $('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>'); redmine-6.0.5/app/views/timelog/index.api.rsb000066400000000000000000000015771500112024600211120ustar00rootroot00000000000000api.array :time_entries, api_meta(:total_count => @entry_count, :offset => @offset, :limit => @limit) do @entries.each do |time_entry| api.time_entry do api.id time_entry.id api.project(:id => time_entry.project_id, :name => time_entry.project.name) unless time_entry.project.nil? api.issue(:id => time_entry.issue_id) unless time_entry.issue.nil? api.user(:id => time_entry.user_id, :name => time_entry.user.name) unless time_entry.user.nil? api.activity(:id => time_entry.activity_id, :name => time_entry.activity.name) unless time_entry.activity.nil? api.hours time_entry.hours.round(2).to_f api.comments time_entry.comments api.spent_on time_entry.spent_on api.created_on time_entry.created_on api.updated_on time_entry.updated_on render_api_custom_values time_entry.visible_custom_field_values, api end end end redmine-6.0.5/app/views/timelog/index.html.erb000066400000000000000000000067141500112024600212650ustar00rootroot00000000000000
    <%= link_to sprite_icon('time-add', l(:button_log_time)), _new_time_entry_path(@project, @query.filtered_issue_id), :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project, :global => true) %> <%= actions_dropdown do %> <% if User.current.allowed_to?(:import_time_entries, @project, :global => true) && User.current.allowed_to?(:log_time, @project, :global => true) %> <%= link_to sprite_icon('import', l(:button_import)), new_time_entries_import_path(:project_id => @project), :class => 'icon icon-import' %> <% end %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'activities'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_project_activities, @project) %> <% end %>

    <%= @query.new_record? ? l(:label_spent_time) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag(_time_entries_path(@project, nil), :method => :get, :id => 'query_form') do %> <%= render :partial => 'date_range' %> <% end %> <% if @query.valid? %> <% if @entries.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <%= render_query_totals(@query) %> <%= render :partial => 'list', :locals => { :entries => @entries }%> <%= pagination_links_full @entry_pages, @entry_count %> <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'Atom', :key => User.current.atom_key %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <% end %> <% end %> <% end %> <% content_for :sidebar do %> <%= render :partial => 'timelog/sidebar' %> <% end %> <% html_title(@query.new_record? ? l(:label_spent_time) : @query.name, l(:label_details)) %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.atom_key}, :title => l(:label_spent_time)) %> <% end %> redmine-6.0.5/app/views/timelog/new.html.erb000066400000000000000000000005611500112024600207410ustar00rootroot00000000000000

    <%= l(:label_spent_time) %>

    <%= labelled_form_for @time_entry, :url => time_entries_path, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => {:f => f} %> <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <%= cancel_button_tag_for_time_entry(@project) %> <% end %> redmine-6.0.5/app/views/timelog/new.js.erb000066400000000000000000000004441500112024600204110ustar00rootroot00000000000000$('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), default_activity(@time_entry)) %>'); $('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>'); redmine-6.0.5/app/views/timelog/report.html.erb000066400000000000000000000114061500112024600214630ustar00rootroot00000000000000
    <%= link_to sprite_icon('time-add', l(:button_log_time)), _new_time_entry_path(@project, @issue), :class => 'icon icon-time-add' if User.current.allowed_to?(:log_time, @project, :global => true) %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'activities'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_project_activities, @project) %>

    <%= @query.new_record? ? l(:label_spent_time) : @query.name %>

    <%= form_tag(_report_time_entries_path(@project, nil), :method => :get, :id => 'query_form') do %> <% @report.criteria.each do |criterion| %> <%= hidden_field_tag 'criteria[]', criterion, :id => nil %> <% end %> <%= render :partial => 'timelog/date_range' %>

    : <%= select_tag 'columns', options_for_select([[l(:label_year), 'year'], [l(:label_month), 'month'], [l(:label_week), 'week'], [l(:label_day_plural).titleize, 'day']], @report.columns), :onchange => "this.form.submit();" %> : <%= select_tag('criteria[]', options_for_select([[]] + (@report.available_criteria.keys - @report.criteria).collect{|k| [l_or_humanize(@report.available_criteria[k][:label]), k]}), :onchange => "this.form.submit();", :style => 'width: 200px', :disabled => (@report.criteria.length >= 3), :id => "criterias") %> <%= link_to sprite_icon('reload', l(:button_clear)), {:params => request.query_parameters.merge(:criteria => nil)}, :class => 'icon icon-reload' %>

    <%= hidden_field_tag 'encoding', l(:general_csv_encoding) unless l(:general_csv_encoding).casecmp('UTF-8') == 0 %> <% end %> <% if @query.valid? %> <% unless @report.criteria.empty? %> <% if @report.hours.empty? %>

    <%= l(:label_no_data) %>

    <% else %>
    <% @report.criteria.each do |criteria| %> <% end %> <% columns_width = (40 / (@report.periods.length+1)).to_i %> <% @report.periods.each do |period| %> <% end %> <%= render :partial => 'report_criteria', :locals => {:criterias => @report.criteria, :hours => @report.hours, :level => 0} %> <%= ('' * (@report.criteria.size - 1)).html_safe %> <% total = 0 -%> <% @report.periods.each do |period| -%> <% sum = sum_hours(select_hours(@report.hours, @report.columns, period.to_s)); total += sum -%> <% end -%>
    <%= l_or_humanize(@report.available_criteria[criteria][:label]) %><%= period %><%= l(:label_total_time) %>
    <%= l(:label_total_time) %><%= html_hours(format_hours(sum)) if sum > 0 %><%= html_hours(format_hours(total)) if total > 0 %>
    <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '330px'); return false;" %> <% end %> <% end %> <% end %> <% end %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% end %> <% html_title(@query.new_record? ? l(:label_spent_time) : @query.name, l(:label_report)) %> <%= javascript_tag do %> $(document).ready(function(){ $('input#csv-export-button').click(function(){ $('form input#encoding').val($('select#encoding option:selected').val()); $('form#query_form').attr('action', '<%= _report_time_entries_path(@project, nil, :format => 'csv') %>').submit(); $('form#query_form').attr('action', '<%= _report_time_entries_path(@project, nil) %>'); hideModal(this); }); }); <% end %> redmine-6.0.5/app/views/timelog/show.api.rsb000066400000000000000000000013021500112024600207450ustar00rootroot00000000000000api.time_entry do api.id @time_entry.id api.project(:id => @time_entry.project_id, :name => @time_entry.project.name) unless @time_entry.project.nil? api.issue(:id => @time_entry.issue_id) unless @time_entry.issue.nil? api.user(:id => @time_entry.user_id, :name => @time_entry.user.name) unless @time_entry.user.nil? api.activity(:id => @time_entry.activity_id, :name => @time_entry.activity.name) unless @time_entry.activity.nil? api.hours @time_entry.hours.round(2).to_f api.comments @time_entry.comments api.spent_on @time_entry.spent_on api.created_on @time_entry.created_on api.updated_on @time_entry.updated_on render_api_custom_values @time_entry.custom_field_values, api end redmine-6.0.5/app/views/trackers/000077500000000000000000000000001500112024600166675ustar00rootroot00000000000000redmine-6.0.5/app/views/trackers/_form.html.erb000066400000000000000000000043431500112024600214320ustar00rootroot00000000000000<%= error_messages_for 'tracker' %>

    <%= f.text_field :name, :required => true %>

    <%= f.select :default_status_id, IssueStatus.sorted.map {|s| [s.name, s.id]}, :include_blank => @tracker.default_status.nil?, :required => true %>

    <%= f.check_box :is_in_roadmap %>

    <%= f.text_area :description, :rows => 4 %>

    <% Tracker::CORE_FIELDS.each do |field| %> <% end %>

    <%= hidden_field_tag 'tracker[core_fields][]', '' %> <% @issue_custom_fields = IssueCustomField.sorted %> <% if @issue_custom_fields.present? %>

    <% @issue_custom_fields.each do |field| %> <% end %>

    <%= hidden_field_tag 'tracker[custom_field_ids][]', '' %> <% end %> <% if @tracker.new_record? && @trackers.any? %>

    <%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@trackers, :id, :name, params[:copy_workflow_from] || @copy_from.try(:id))) %>

    <% end %>
    <%= submit_tag l(@tracker.new_record? ? :button_create : :button_save) %>
    <% if @projects.any? %>
    <%= toggle_checkboxes_link("#tracker_project_ids input[type=checkbox]") %><%= l(:label_project_plural) %> <% project_ids = @tracker.project_ids.to_a %> <%= render_project_nested_lists(@projects) do |p| content_tag('label', check_box_tag('tracker[project_ids][]', p.id, project_ids.include?(p.id), :id => nil) + ' ' + h(p)) end %> <%= hidden_field_tag('tracker[project_ids][]', '', :id => nil) %>
    <% end %>
    redmine-6.0.5/app/views/trackers/edit.html.erb000066400000000000000000000002631500112024600212520ustar00rootroot00000000000000<%= title [l(:label_tracker_plural), trackers_path], @tracker.name %> <%= labelled_form_for @tracker do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% end %> redmine-6.0.5/app/views/trackers/fields.html.erb000066400000000000000000000052231500112024600215740ustar00rootroot00000000000000<%= title [l(:label_tracker_plural), trackers_path], l(:field_summary) %> <% if @trackers.any? %> <%= form_tag fields_trackers_path do %>
    <% @trackers.each do |tracker| %> <% end %> <% Tracker::CORE_FIELDS.each do |field| %> <% field_name = l("field_#{field}".delete_suffix('_id')) %> <% @trackers.each do |tracker| %> <% end %> <% end %> <% if @custom_fields.any? %> <% @custom_fields.each do |field| %> <% @trackers.each do |tracker| %> <% end %> <% end %> <% end %>
    <%= toggle_checkboxes_link("input.tracker-#{tracker.id}") %> <%= tracker.name %>
    <%= sprite_icon("angle-down") %> <%= l(:field_core_fields) %>
    <%= toggle_checkboxes_link("input.core-field-#{field}") %> <%= field_name %> "> <%= check_box_tag "trackers[#{tracker.id}][core_fields][]", field, tracker.core_fields.include?(field), :class => "tracker-#{tracker.id} core-field-#{field}", :id => nil %>
    <%= sprite_icon("angle-down") %> <%= l(:label_custom_field_plural) %>
    <%= toggle_checkboxes_link("input.custom-field-#{field.id}") %> <%= field.name %> "> <%= check_box_tag "trackers[#{tracker.id}][custom_field_ids][]", field.id, tracker.custom_fields.include?(field), :class => "tracker-#{tracker.id} custom-field-#{field.id}", :id => nil %>

    <%= submit_tag l(:button_save) %>

    <% @trackers.each do |tracker| %> <%= hidden_field_tag "trackers[#{tracker.id}][core_fields][]", '' %> <%= hidden_field_tag "trackers[#{tracker.id}][custom_field_ids][]", '' %> <% end %> <% end %> <% else %>

    <%= l(:label_no_data) %>

    <% end %> redmine-6.0.5/app/views/trackers/index.api.rsb000066400000000000000000000007041500112024600212570ustar00rootroot00000000000000api.array :trackers do @trackers.each do |tracker| api.tracker do api.id tracker.id api.name tracker.name api.default_status(:id => tracker.default_status.id, :name => tracker.default_status.name) unless tracker.default_status.nil? api.description tracker.description api.array :enabled_standard_fields do tracker.core_fields.each do |field| api.field field end end end end end redmine-6.0.5/app/views/trackers/index.html.erb000066400000000000000000000025761500112024600214450ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_tracker_new)), new_tracker_path, :class => 'icon icon-add' %> <%= link_to sprite_icon('summary', l(:field_summary)), fields_trackers_path, :class => 'icon icon-summary' %>

    <%=l(:label_tracker_plural)%>

    <% for tracker in @trackers %> <% end %>
    <%=l(:label_tracker)%> <%=l(:field_default_status)%> <%=l(:field_description)%>
    <%= link_to tracker.name, edit_tracker_path(tracker) %> <%= tracker.default_status.name %> <%= tracker.description %> <% unless tracker.workflow_rules.exists? %> <%= sprite_icon('warning', l(:text_tracker_no_workflow)) %> (<%= link_to l(:button_edit), edit_workflows_path(:tracker_id => tracker) %>) <% end %> <%= reorder_handle(tracker) %> <%= link_to sprite_icon('copy', l(:button_copy)), new_tracker_path(:copy => tracker), :class => 'icon icon-copy' %> <%= delete_link tracker_path(tracker) %>
    <% html_title(l(:label_tracker_plural)) -%> <%= javascript_tag do %> $(function() { $("table.trackers tbody").positionedItems(); }); <% end %> redmine-6.0.5/app/views/trackers/new.html.erb000066400000000000000000000002731500112024600211170ustar00rootroot00000000000000<%= title [l(:label_tracker_plural), trackers_path], l(:label_tracker_new) %> <%= labelled_form_for @tracker do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% end %> redmine-6.0.5/app/views/twofa/000077500000000000000000000000001500112024600161715ustar00rootroot00000000000000redmine-6.0.5/app/views/twofa/_twofa_code_form.html.erb000066400000000000000000000004031500112024600231170ustar00rootroot00000000000000

    <%=l 'twofa_label_enter_otp' %>

    <%= text_field_tag :twofa_code, nil, autocomplete: 'one-time-code' -%>

    redmine-6.0.5/app/views/twofa/activate_confirm.html.erb000066400000000000000000000020451500112024600231440ustar00rootroot00000000000000

    <%=l 'twofa_label_setup' -%>

    <%= form_tag({ action: :activate, scheme: @twofa_view[:scheme_name] }, { method: :post, id: 'twofa_form' }) do -%>

    <%=t "twofa__#{@twofa_view[:scheme_name]}__text_pairing_info_html" -%>

    <%= render partial: "twofa/#{@twofa_view[:scheme_name]}/new", locals: { twofa_view: @twofa_view } -%>

    <%= text_field_tag :twofa_code, nil, autocomplete: 'one-time-code', autofocus: true -%>

    <%= submit_tag l('button_activate'), name: :submit_otp -%> <%= link_to l('twofa_resend_code'), { action: 'activate_init', scheme: @twofa_view[:scheme_name] }, method: :post if @twofa_view[:resendable] -%> <% end %>
    <% unless @user.must_activate_twofa? %> <% content_for :sidebar do %> <%= render :partial => 'my/sidebar' %> <% end %> <% end %> redmine-6.0.5/app/views/twofa/deactivate_confirm.html.erb000066400000000000000000000011511500112024600234520ustar00rootroot00000000000000

    <%=l 'twofa_label_deactivation_confirmation' -%>

    <%= form_tag({ action: :deactivate, scheme: @twofa_view[:scheme_name] }, { method: :post, id: 'twofa_form' }) do -%> <%= render partial: 'twofa_code_form' -%> <%= submit_tag l('button_disable'), name: :submit_otp -%> <%= link_to l('twofa_resend_code'), { action: 'deactivate_init', scheme: @twofa_view[:scheme_name] }, method: :post if @twofa_view[:resendable] -%> <% end %>
    <% content_for :sidebar do %> <%= render :partial => 'my/sidebar' %> <% end %> redmine-6.0.5/app/views/twofa/select_scheme.html.erb000066400000000000000000000011461500112024600224330ustar00rootroot00000000000000<%= title l('twofa_label_setup') %> <%= form_tag({ controller: 'twofa', action: 'activate_init' }, method: :post) do %>

    <%=l 'twofa_notice_select' -%>

    <% Redmine::Twofa.available_schemes.each_with_index do |s, idx| %> <% end %>

    <%= submit_tag l(:label_next).html_safe + " »".html_safe -%>

    <% end %> <% unless @user.must_activate_twofa? %> <% content_for :sidebar do %> <%= render partial: 'my/sidebar' %> <% end %> <% end %> redmine-6.0.5/app/views/twofa/totp/000077500000000000000000000000001500112024600171575ustar00rootroot00000000000000redmine-6.0.5/app/views/twofa/totp/_new.html.erb000066400000000000000000000005501500112024600215440ustar00rootroot00000000000000

    <%= image_tag RQRCode::QRCode.new(twofa_view[:provisioning_uri]).as_png(fill: ChunkyPNG::Color::TRANSPARENT, resize_exactly_to: 280, border_modules: 0).to_data_url, id: 'twofa_code' -%>

    <%= twofa_view[:totp_key].scan(/.{4}/).join(' ') -%>

    redmine-6.0.5/app/views/twofa_backup_codes/000077500000000000000000000000001500112024600206735ustar00rootroot00000000000000redmine-6.0.5/app/views/twofa_backup_codes/confirm.html.erb000066400000000000000000000007761500112024600237770ustar00rootroot00000000000000

    <%=l 'twofa_generate_backup_codes' -%>

    <%= form_tag({ action: :create }, { method: :post, id: 'twofa_form' }) do -%> <%= render partial: 'twofa/twofa_code_form' -%> <%= submit_tag l('button_submit'), name: :submit_otp -%> <%= link_to l('twofa_resend_code'), { action: 'init' }, method: :post if @twofa_view[:resendable] -%> <% end %>
    <% content_for :sidebar do %> <%= render :partial => 'my/sidebar' %> <% end %> redmine-6.0.5/app/views/twofa_backup_codes/show.html.erb000066400000000000000000000010141500112024600233040ustar00rootroot00000000000000

    <%=l 'twofa_label_backup_codes' -%>

    <%=l 'twofa_text_backup_codes_hint' -%>

      <% @backup_codes.each do |code| -%>
    • <%= code.scan(/.{4}/).join(' ') -%>
    • <% end -%>

    <%=l 'twofa_text_backup_codes_created_at', datetime: format_time(@created_at) -%>

    <% content_for :sidebar do %> <%= render :partial => 'my/sidebar' %> <% end %> redmine-6.0.5/app/views/users/000077500000000000000000000000001500112024600162125ustar00rootroot00000000000000redmine-6.0.5/app/views/users/_auto_watch_on.html.erb000066400000000000000000000004171500112024600226420ustar00rootroot00000000000000<%= labelled_fields_for :pref, @user.pref do |pref_fields| %> <%= pref_fields.collection_check_boxes :auto_watch_on, auto_watch_on_options, :last, :first, :checked => @user.pref.auto_watch_on do |b| %>

    <%= b.check_box %> <%= b.label %>

    <% end %> <% end %> redmine-6.0.5/app/views/users/_form.html.erb000066400000000000000000000070641500112024600207600ustar00rootroot00000000000000<%= error_messages_for 'user' %>
    <%=l(:label_information_plural)%>

    <%= f.text_field :login, :required => true, :size => 25 %>

    <%= f.text_field :firstname, :required => true %>

    <%= f.text_field :lastname, :required => true %>

    <%= f.text_field :mail, :required => true %>

    <% unless @user.force_default_language? %>

    <%= f.select :language, lang_options_for_select %>

    <% end %> <% @user.custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :user, value %>

    <% end %>

    <%= f.check_box :admin, :disabled => (@user == User.current) %>

    <%= call_hook(:view_users_form, :user => @user, :form => f) %>
    <%=l(:label_authentication)%> <% unless @auth_sources.empty? %>

    <%= f.select :auth_source_id, ([[l(:label_internal), ""]] + @auth_sources.collect { |a| [a.name, a.id] }), {}, :onchange => "if (this.value=='') {$('#password_fields').show();} else {$('#password_fields').hide();}" %>

    <% end %>

    <%= f.password_field :password, :required => @user.new_record?, :size => 25 %> <%= l(:text_caracters_minimum, :count => Setting.password_min_length) %> <% if Setting.password_required_char_classes.any? %> <%= l(:text_characters_must_contain, :character_classes => Setting.password_required_char_classes.collect{|c| l("label_password_char_class_#{c}")}.join(", ")) %> <% end %>

    <%= f.password_field :password_confirmation, :required => @user.new_record?, :size => 25 %>

    <%= f.check_box :generate_password %>

    <%= f.check_box :must_change_passwd %>

    <% if Setting.twofa? && !@user.new_record? -%>

    <% if @user.twofa_active? %> <%=l 'twofa_currently_active', twofa_scheme_name: l("twofa__#{@user.twofa_scheme}__name") -%>
    <% if @user == User.current # administrators cannot deactivate their own 2FA without confirmation code %> <%= link_to l('button_disable'), { controller: 'twofa', action: 'deactivate_init', scheme: @user.twofa_scheme }, method: :post -%> <% else %> <%= link_to l('button_disable'), { controller: 'twofa', action: 'admin_deactivate', user_id: @user }, method: :post -%> <% end %> <% else %> <%=l 'twofa_not_active' %> <% end %>

    <% end -%>
    <%=l(:field_mail_notification)%> <%= render :partial => 'users/mail_notifications' %>
    <%=l(:label_auto_watch_on)%> <%= render :partial => 'users/auto_watch_on' %>
    <%=l(:label_preferences)%> <%= render :partial => 'users/preferences' %> <%= call_hook(:view_users_form_preferences, :user => @user, :form => f) %>
    <%= javascript_tag do %> $(document).ready(function(){ $('#user_generate_password').change(function(){ var passwd = $('#user_password, #user_password_confirmation'); if ($(this).is(':checked')){ passwd.val('').attr('disabled', true); }else{ passwd.removeAttr('disabled'); } }).trigger('change'); }); <% end %> redmine-6.0.5/app/views/users/_general.html.erb000066400000000000000000000006221500112024600214230ustar00rootroot00000000000000<%= labelled_form_for @user, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% if @user.active? && email_delivery_enabled? && @user != User.current -%>

    <% end -%>

    <%= submit_tag l(:button_save) %>

    <% end %> redmine-6.0.5/app/views/users/_groups.html.erb000066400000000000000000000007721500112024600213330ustar00rootroot00000000000000<%= form_for(:user, :url => { :action => 'update' }, :html => {:method => :put}) do %>
    <% user_group_ids = @user.group_ids %> <% Group.givable.sort.each do |group| %>
    <% end %> <%= hidden_field_tag 'user[group_ids][]', '' %>

    <%= check_all_links 'user_group_ids' %>

    <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/users/_list.html.erb000066400000000000000000000045061500112024600207660ustar00rootroot00000000000000<%= form_tag({}, data: {cm_url: users_context_menu_path}) do -%> <%= hidden_field_tag 'back_url', url_for(params: request.query_parameters), id: nil %>
    <% @query.inline_columns.each do |column| %> <%= column_header(@query, column) %> <% end %> <% grouped_query_results(users, @query) do |user, group_name, group_count, group_totals| -%> <% if group_name %> <% reset_cycle %> <% end %> hascontextmenu"> <% @query.inline_columns.each do |column| %> <% if column.name == :login %> <%= content_tag('td', link_to(user.login, edit_user_path(user)), class: column.css_classes) %> <% else %> <%= content_tag('td', column_content(column, user), class: column.css_classes) %> <% end %> <% end %> <% @query.block_columns.each do |column| if (text = column_content(column, issue)) && text.present? -%> <% end -%> <% end -%> <% end -%>
    <%= check_box_tag 'check_all', '', false, :class => 'toggle-selection', :title => "#{l(:button_check_all)} / #{l(:button_uncheck_all)}" %>
    <%= sprite_icon("angle-down") %> <%= group_name %> <% if group_count %> <%= group_count %> <% end %> <%= group_totals %> <%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", "toggleAllRowGroups(this)", :class => 'toggle-all') %>
    <%= check_box_tag("ids[]", user.id, false, id: nil) %> <%= link_to_context_menu %>
    <% if query.block_columns.count > 1 %> <%= column.caption %> <% end %> <%= text %>
    <% end -%> <%= context_menu %> redmine-6.0.5/app/views/users/_mail_notifications.html.erb000066400000000000000000000033101500112024600236560ustar00rootroot00000000000000

    <%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted" %> <%= select_tag( 'user[mail_notification]', options_for_select( user_mail_notification_options(@user), @user.mail_notification), :onchange => 'if (this.value == "selected") {$("#notified-projects").show();} else {$("#notified-projects").hide();}' ) %>

    <%= content_tag 'fieldset', :id => 'notified-projects', :style => (@user.mail_notification == 'selected' ? '' : 'display:none;') do %> <%= toggle_checkboxes_link("#notified-projects input[type=checkbox]") %><%=l(:label_project_plural)%> <%= render_project_nested_lists(@user.projects) do |project| content_tag('label', check_box_tag( 'user[notified_project_ids][]', project.id, @user.notified_projects_ids.include?(project.id), :id => nil ) + ' ' + h(project.name) ) end %> <%= hidden_field_tag 'user[notified_project_ids][]', '' %>

    <%= l(:text_user_mail_option) %>

    <% end %> <%= fields_for :pref, @user.pref do |pref_fields| %> <% if IssuePriority.default_or_middle and high_priority = IssuePriority.where(['position > ?', IssuePriority.default_or_middle.position]).first %>

    <%= pref_fields.check_box :notify_about_high_priority_issues %>

    <% end %>

    <%= pref_fields.check_box :no_self_notified %>

    <% end %> redmine-6.0.5/app/views/users/_memberships.html.erb000066400000000000000000000000521500112024600223210ustar00rootroot00000000000000<%= render_principal_memberships @user %> redmine-6.0.5/app/views/users/_preferences.html.erb000066400000000000000000000016701500112024600223130ustar00rootroot00000000000000<%= labelled_fields_for :pref, @user.pref do |pref_fields| %>

    <%= pref_fields.check_box :hide_mail %>

    <%= pref_fields.time_zone_select :time_zone, nil, :include_blank => true %>

    <%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>

    <%= pref_fields.check_box :warn_on_leaving_unsaved %>

    <%= pref_fields.select :textarea_font, textarea_font_options %>

    <%= pref_fields.text_field :recently_used_projects, :size => 2 %>

    <%= pref_fields.select :history_default_tab, history_default_tab_options %>

    <%= pref_fields.text_area :toolbar_language_options, :rows => 4 %>

    <%= pref_fields.select :default_issue_query, default_issue_query_options(@user), include_blank: l(:label_none) %>

    <%= pref_fields.select :default_project_query, default_project_query_options(@user), include_blank: l(:label_none) %>

    <% end %> redmine-6.0.5/app/views/users/bulk_destroy.html.erb000066400000000000000000000012401500112024600223520ustar00rootroot00000000000000<%= title l(:label_confirmation) %> <%= form_tag(bulk_destroy_users_path(ids: @users.map(&:id)), method: :delete) do %>

    <%= simple_format l :text_users_bulk_destroy_head %>

    <% @users.each do |user| %>

    <%= user.name %> (<%= user.login %>)

    <% end %>

    <%= l :text_users_bulk_destroy_confirm, yes: l(:general_text_Yes) %>

    <%= text_field_tag 'confirm' %>

    <%= submit_tag l(:button_delete), class: 'btn-alert btn-small' %> <% end %> <%= button_to l(:button_lock), bulk_lock_users_path(ids: @users.map(&:id)), method: :post, class: 'btn', name: 'lock' %> <%= link_to l(:button_cancel), users_path %>redmine-6.0.5/app/views/users/destroy.html.erb000066400000000000000000000011131500112024600213340ustar00rootroot00000000000000<%= title l(:label_confirmation) %> <%= form_tag user_path(@user), method: :delete do %>

    <%= @user.name %> (<%= @user.login %>)

    <%= l :text_user_destroy_confirmation, login: @user.login %>

    <%= text_field_tag 'confirm' %>

    <%= submit_tag l(:button_delete) %> <% end %> <%= button_to l(:button_lock), bulk_lock_users_path(ids: [@user.id]), method: :post, class: 'btn', name: 'lock' unless @user.locked? %> <%= link_to l(:button_cancel), users_path %>redmine-6.0.5/app/views/users/destroy_membership.js.erb000066400000000000000000000001501500112024600232170ustar00rootroot00000000000000$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'users/memberships') %>'); redmine-6.0.5/app/views/users/edit.html.erb000066400000000000000000000007001500112024600205710ustar00rootroot00000000000000
    <%= link_to sprite_icon('user', l(:label_profile)), user_path(@user), :class => 'icon icon-user' %> <%= additional_emails_link(@user) %> <%= change_status_link(@user) %> <%= delete_link user_path(@user) if User.current != @user %>
    <%= page_title = title [l(:label_user_plural), users_path], @user.login page_title.insert(page_title.rindex(' ') + 1, avatar(@user).to_s) %> <%= render_tabs user_settings_tabs %> redmine-6.0.5/app/views/users/edit_membership.js.erb000066400000000000000000000005321500112024600224570ustar00rootroot00000000000000<% if @membership.valid? %> $('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'users/memberships') %>'); $("#member-<%= @membership.id %>").effect("highlight"); <% else %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))) %>'); <% end %> redmine-6.0.5/app/views/users/index.api.rsb000066400000000000000000000017241500112024600206050ustar00rootroot00000000000000api.array :users, api_meta(:total_count => @user_count, :offset => @offset, :limit => @limit) do @users.each do |user| api.user do api.id user.id api.login user.login api.admin user.admin? api.firstname user.firstname api.lastname user.lastname api.mail user.mail api.created_on user.created_on api.updated_on user.updated_on api.last_login_on user.last_login_on api.passwd_changed_on user.passwd_changed_on api.avatar_url gravatar_url(user.mail, {rating: nil, size: nil, default: Setting.gravatar_default}) if Setting.gravatar_enabled? api.twofa_scheme user.twofa_scheme api.status user.status api.auth_source do api.id user.auth_source.id api.name user.auth_source.name end if include_in_api_response?('auth_source') && user.auth_source.present? render_api_custom_values user.visible_custom_field_values, api end end end redmine-6.0.5/app/views/users/index.html.erb000066400000000000000000000052351500112024600207630ustar00rootroot00000000000000
    <%= link_to sprite_icon('add', l(:label_user_new)), new_user_path, :class => 'icon icon-add' %> <%= actions_dropdown do %> <% if User.current.allowed_to?(:import_users, nil, :global => true) %> <%= link_to sprite_icon('import', l(:button_import)), new_users_import_path, :class => 'icon icon-import' %> <% end %> <% end %>

    <%= @query.new_record? ? l(:label_user_plural) : @query.name %>

    <%= @query.persisted? && @query.description.present? ? content_tag('p', @query.description, class: 'subtitle') : '' %> <%= form_tag(users_path, method: :get, id: 'query_form') do %> <%= render partial: 'queries/query_form' %> <% end %> <% if @query.valid? %> <% if @users.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <%= render_query_totals(@query) %> <%= render partial: 'list', :locals => { :users => @users }%> <%= pagination_links_full @user_pages, @user_count %> <% end %> <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'CSV', {}, :onclick => "showModal('csv-export-options', '350px'); return false;" %> <% end %> <% end %> <% content_for :sidebar do %> <%= render_sidebar_queries(UserQuery, nil) %> <%= call_hook(:view_users_sidebar_queries_bottom) %> <% end %> <% html_title(l(:label_user_plural)) -%> redmine-6.0.5/app/views/users/new.html.erb000066400000000000000000000023041500112024600204370ustar00rootroot00000000000000<%= title [l(:label_user_plural), users_path], l(:label_user_new) %> <%= labelled_form_for @user, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <% if email_delivery_enabled? %>

    <% end %>

    <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %>

    <% end %> <% if @auth_sources.present? && @auth_sources.any?(&:searchable?) %> <%= javascript_tag do %> observeAutocompleteField('user_login', '<%= escape_javascript autocomplete_for_new_user_auth_sources_path %>', { select: function(event, ui) { $('input#user_firstname').val(ui.item.firstname); $('input#user_lastname').val(ui.item.lastname); $('input#user_mail').val(ui.item.mail); $('select#user_auth_source_id option').each(function(){ if ($(this).attr('value') == ui.item.auth_source_id) { $(this).prop('selected', true); $('select#user_auth_source_id').trigger('change'); } }); } }); <% end %> <% end %> redmine-6.0.5/app/views/users/show.api.rsb000066400000000000000000000036261500112024600204610ustar00rootroot00000000000000api.user do api.id @user.id api.login @user.login api.admin @user.admin? if User.current.admin? || (User.current == @user) api.firstname @user.firstname api.lastname @user.lastname api.mail @user.mail if User.current.admin? || !@user.pref.hide_mail api.created_on @user.created_on api.updated_on @user.updated_on api.last_login_on @user.last_login_on api.passwd_changed_on @user.passwd_changed_on api.avatar_url gravatar_url(@user.mail, {rating: nil, size: nil, default: Setting.gravatar_default}) if @user.mail && Setting.gravatar_enabled? api.twofa_scheme @user.twofa_scheme if User.current.admin? || (User.current == @user) api.api_key @user.api_key if User.current.admin? || (User.current == @user) api.status @user.status if User.current.admin? render_api_custom_values @user.visible_custom_field_values, api api.auth_source do api.id @user.auth_source.id api.name @user.auth_source.name end if User.current.admin? && include_in_api_response?('auth_source') && @user.auth_source.present? api.array :groups do |groups| @user.groups.each do |group| api.group :id => group.id, :name => group.name end end if User.current.admin? && include_in_api_response?('groups') api.array :memberships do @memberships.each do |membership| api.membership do api.id membership.id api.project :id => membership.project.id, :name => membership.project.name api.array :roles do membership.member_roles.each do |member_role| if member_role.role attrs = {:id => member_role.role.id, :name => member_role.role.name} attrs.merge!(:inherited => true) if member_role.inherited_from.present? api.role attrs end end end end if membership.project end end if include_in_api_response?('memberships') && @memberships end redmine-6.0.5/app/views/users/show.html.erb000066400000000000000000000113541500112024600206330ustar00rootroot00000000000000
    <%= link_to(sprite_icon('edit', l(:button_edit)), edit_user_path(@user), :class => 'icon icon-edit') if User.current.admin? && @user.logged? %>

    <%= avatar @user, :size => "50" %> <%= @user.name %>

    • <%=l(:field_login)%>: <%= @user.login %>
    • <% unless @user.pref.hide_mail %>
    • <%=l(:field_mail)%>: <%= user_emails(@user) %>
    • <% end %> <% @user.visible_custom_field_values.each do |custom_value| %> <% if !custom_value.value.blank? %>
    • <%= custom_value.custom_field.name %>: <%= show_value(custom_value) %>
    • <% end %> <% end %>
    • <%=l(:label_registered_on)%>: <%= format_date(@user.created_on) %>
    • <% unless @user.last_login_on.nil? %>
    • <%=l(:field_last_login_on)%>: <%= format_date(@user.last_login_on) %>
    • <% end %>

    <%=l(:label_issue_plural)%>

    <% assigned_to_ids = ([@user.id] + @user.group_ids).join("|") %> <% sort_cond = 'priority:desc,updated_on:desc' %>
    <%=l(:label_open_issues_plural)%> <%=l(:label_closed_issues_plural)%> <%=l(:label_total)%>
    <%= link_to l(:label_assigned_issues), issues_path(:set_filter => 1, :assigned_to_id => assigned_to_ids, :sort => sort_cond) %> <%= link_to @issue_counts[:assigned][:open], issues_path(:set_filter => 1, :assigned_to_id => assigned_to_ids, :sort => sort_cond) %> <%= link_to @issue_counts[:assigned][:total] - @issue_counts[:assigned][:open], issues_path(:set_filter => 1, :status_id => 'c', :assigned_to_id => assigned_to_ids, :sort => sort_cond) %> <%= link_to @issue_counts[:assigned][:total], issues_path(:set_filter => 1, :status_id => '*', :assigned_to_id => assigned_to_ids, :sort => sort_cond) %>
    <%= link_to l(:label_reported_issues), issues_path(:set_filter => 1, :author_id => @user.id, :sort => sort_cond) %> <%= link_to @issue_counts[:reported][:open], issues_path(:set_filter => 1, :author_id => @user.id, :sort => sort_cond) %> <%= link_to @issue_counts[:reported][:total] - @issue_counts[:reported][:open], issues_path(:set_filter => 1, :status_id => 'c', :author_id => @user.id, :sort => sort_cond) %> <%= link_to @issue_counts[:reported][:total], issues_path(:set_filter => 1, :status_id => '*', :author_id => @user.id, :sort => sort_cond) %>
    <% unless @memberships.empty? %>

    <%=l(:label_project_plural)%>

    <% memberships_by_project = @memberships.group_by(&:project) %> <% project_tree(memberships_by_project.keys, :init_level => true) do |project, level| %> <% membership = memberships_by_project[project].first %> "> <% end %>
    <%=l(:label_project)%> <%=l(:label_role_plural)%> <%=l(:label_registered_on)%>
    <%= link_to_project(project) %> <%= membership.roles.sort.collect(&:to_s).join(', ') %> <%= format_date(membership.created_on) %>
    <% end %> <% if (User.current == @user || User.current.admin?) && @user.groups.any? %>

    <%=l(:label_group_plural)%>

      <% for group in @user.groups %>
    • <%= link_to_group(group) %> <% end %>
    <% end %> <%= call_hook :view_account_left_bottom, :user => @user %>
    <% unless @events_by_day.empty? %>

    <%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %>

    <%= render :partial => 'activities/activities', :locals => {:events_by_day => @events_by_day} %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.atom_key} %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.atom_key) %> <% end %> <% end %> <%= call_hook :view_account_right_bottom, :user => @user %>
    <% html_title @user.name %> redmine-6.0.5/app/views/versions/000077500000000000000000000000001500112024600167215ustar00rootroot00000000000000redmine-6.0.5/app/views/versions/_form.html.erb000066400000000000000000000017061500112024600214640ustar00rootroot00000000000000<%= back_url_hidden_field_tag %> <%= error_messages_for 'version' %>

    <%= f.text_field :name, :maxlength => 60, :size => 60, :required => true %>

    <%= f.text_field :description, :size => 60 %>

    <% unless @version.new_record? %>

    <%= f.select :status, Version::VERSION_STATUSES.collect {|s| [l("version_status_#{s}"), s]} %>

    <% end %>

    <%= f.text_field :wiki_page_title, :label => :label_wiki_page, :size => 60, :disabled => @project.wiki.nil? %>

    <%= f.date_field :effective_date, :size => 10 %><%= calendar_for('version_effective_date') %>

    <%= f.select :sharing, @version.allowed_sharings.collect {|v| [format_version_sharing(v), v]} %>

    <% if @version.new_record? %>

    <%= f.check_box :default_project_version, :label => :field_default_version %>

    <% end %> <% @version.visible_custom_field_values.each do |value| %>

    <%= custom_field_tag_with_label :version, value %>

    <% end %>
    redmine-6.0.5/app/views/versions/_issue_counts.html.erb000066400000000000000000000023421500112024600232410ustar00rootroot00000000000000<%= form_tag({}, :id => "status_by_form") do -%>
    <%= l(:label_issues_by, select_tag('status_by', status_by_options_for_select(criteria), :id => 'status_by_select', :data => {:remote => true, :method => 'post', :url => status_by_version_path(version)})).html_safe %> <% if counts.empty? %>

    <%= l(:label_no_data) %>

    <% else %> <% counts.each do |count| %> <% end %>
    <% if count[:group] -%> <%= link_to(count[:group], project_issues_path(version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => version, "#{criteria}_id" => count[:group])) %> <% else -%> <%= link_to(l(:label_none), project_issues_path(version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => version, "#{criteria}_id" => "!*")) %> <% end %> <%= progress_bar((count[:closed].to_f / count[:total])*100, :legend => "#{count[:closed]}/#{count[:total]}") %>
    <% end %>
    <% end %> redmine-6.0.5/app/views/versions/_new_modal.html.erb000066400000000000000000000006261500112024600224660ustar00rootroot00000000000000

    <%=l(:label_version_new)%>

    <%= labelled_form_for @version, :url => project_versions_path(@project), :html => {:multipart => true}, :remote => true do |f| %> <%= render :partial => 'versions/form', :locals => { :f => f } %>

    <%= submit_tag l(:button_create), :name => nil %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/versions/_overview.html.erb000066400000000000000000000035601500112024600223670ustar00rootroot00000000000000
    <% if version.completed? %>

    <%= format_date(version.effective_date) %>

    <% elsif version.effective_date %>

    <%= due_date_distance_in_words(version.effective_date) %> (<%= format_date(version.effective_date) %>)

    <% end %>

    <%=h version.description %>

    <% if version.custom_field_values.any? %>
      <% render_custom_field_values(version) do |custom_field, formatted| %>
    • <%= custom_field.name %>: <%= formatted %>
    • <% end %>
    <% end %> <% if version.visible_fixed_issues.count > 0 %> <%= progress_bar([version.visible_fixed_issues.closed_percent, version.visible_fixed_issues.completed_percent], :titles => ["%s: %i%%" % [l(:label_closed_issues_plural), version.visible_fixed_issues.closed_percent], "%s: %i%%" % [l(:field_done_ratio), version.visible_fixed_issues.completed_percent]], :legend => ('%i%%' % version.visible_fixed_issues.completed_percent)) %>

    <%= link_to(l(:label_x_issues, :count => version.visible_fixed_issues.count), version_filtered_issues_path(version, :status_id => '*')) %>   (<%= link_to_if(version.visible_fixed_issues.closed_count > 0, l(:label_x_closed_issues_abbr, :count => version.visible_fixed_issues.closed_count), version_filtered_issues_path(version, :status_id => 'c')) %> — <%= link_to_if(version.visible_fixed_issues.open_count > 0, l(:label_x_open_issues_abbr, :count => version.visible_fixed_issues.open_count), version_filtered_issues_path(version, :status_id => 'o')) %>)

    <% else %>

    <%= l(:label_roadmap_no_issues) %>

    <% end %>
    redmine-6.0.5/app/views/versions/_sidebar.html.erb000066400000000000000000000033331500112024600221300ustar00rootroot00000000000000<%= form_tag({}, :method => :get) do %> <%= hidden_field_tag "tracker_ids[]", nil, :id => nil %>

    <%= l(:label_roadmap) %>

      <% @trackers.each do |tracker| %>
    • <% end %>

    • <% if @project.descendants.allowed_to(:view_issues).any? %>
    • <%= hidden_field_tag 'with_subprojects', 0, :id => nil %>
    • <% end %>

    <%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %>

    <% end %>

    <%= l(:label_version_plural) %>

      <% @versions.each do |version| %>
    • <%= link_to(format_version_name(version), "##{version_anchor(version)}") %>
    • <% end %>
    <% if @completed_versions.present? %>

    <%= link_to_function sprite_icon('angle-right', l(:label_completed_versions), rtl: true), '$("#toggle-completed-versions").toggleClass("icon-collapsed icon-expanded"); $("#completed-versions").toggle(); toggleExpendCollapseIcon(this);', :id => 'toggle-completed-versions', :class => 'icon icon-collapsed collapsible' %>

    <% end %> redmine-6.0.5/app/views/versions/create.js.erb000066400000000000000000000004421500112024600212710ustar00rootroot00000000000000hideModal(); <% select = content_tag('select', content_tag('option') + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]') %> $('#issue_fixed_version_id').replaceWith('<%= escape_javascript(select) %>'); redmine-6.0.5/app/views/versions/edit.html.erb000066400000000000000000000003171500112024600213040ustar00rootroot00000000000000

    <%=l(:label_version)%>

    <%= labelled_form_for @version, :html => {:multipart => true} do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> redmine-6.0.5/app/views/versions/index.api.rsb000066400000000000000000000012521500112024600213100ustar00rootroot00000000000000api.array :versions, api_meta(:total_count => @versions.size) do @versions.each do |version| api.version do api.id version.id api.project(:id => version.project_id, :name => version.project.name) unless version.project.nil? api.name version.name api.description version.description api.status version.status api.due_date version.effective_date api.sharing version.sharing api.wiki_page_title version.wiki_page_title render_api_custom_values version.visible_custom_field_values, api api.created_on version.created_on api.updated_on version.updated_on end end end redmine-6.0.5/app/views/versions/index.html.erb000066400000000000000000000052121500112024600214650ustar00rootroot00000000000000
    <%= link_to(sprite_icon('add', l(:label_version_new)), new_project_version_path(@project), :class => 'icon icon-add') if User.current.allowed_to?(:manage_versions, @project) %> <%= actions_dropdown do %> <%= link_to_if_authorized sprite_icon('settings', l(:label_settings)), {:controller => 'projects', :action => 'settings', :id => @project, :tab => 'versions'}, :class => 'icon icon-settings' if User.current.allowed_to?(:manage_versions, @project) %> <% end %>

    <%=l(:label_roadmap)%>

    <% if @versions.empty? %>

    <%= l(:label_no_data) %>

    <% else %>
    <% @versions.each do |version| %>
    <% if User.current.allowed_to?(:manage_versions, version.project) %>
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_version_path(version), :title => l(:button_edit), :class => 'icon-only icon-edit' %>
    <% end %>

    <%= sprite_icon 'package' %> <%= link_to_version version, :name => version_anchor(version) %>

    <%= l("version_status_#{version.status}") %>
    <%= render :partial => 'versions/overview', :locals => {:version => version} %> <%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %> <% if (issues = @issues_by_version[version]) && issues.size > 0 %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <% issues.each do |issue| -%> <% end -%> <% end %> <% end %> <%= call_hook :view_projects_roadmap_version_bottom, :version => version %>
    <% end %>
    <% end %> <% content_for :sidebar do %> <%= render :partial => 'versions/sidebar' %> <% end %> <% html_title(l(:label_roadmap)) %> <%= context_menu %> redmine-6.0.5/app/views/versions/new.html.erb000066400000000000000000000004061500112024600211470ustar00rootroot00000000000000

    <%=l(:label_version_new)%>

    <%= labelled_form_for @version, :url => project_versions_path(@project), :html => {:multipart => true} do |f| %> <%= render :partial => 'versions/form', :locals => { :f => f } %> <%= submit_tag l(:button_create) %> <% end %> redmine-6.0.5/app/views/versions/new.js.erb000066400000000000000000000001761500112024600206230ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'versions/new_modal') %>'); showModal('ajax-modal', '600px'); redmine-6.0.5/app/views/versions/show.api.rsb000066400000000000000000000013151500112024600211610ustar00rootroot00000000000000api.version do api.id @version.id api.project(:id => @version.project_id, :name => @version.project.name) unless @version.project.nil? api.name @version.name api.description @version.description api.status @version.status api.due_date @version.effective_date api.sharing @version.sharing api.wiki_page_title @version.wiki_page_title if User.current.allowed_to?(:view_time_entries, @project) api.estimated_hours(@version.visible_fixed_issues.estimated_hours) api.spent_hours(@version.spent_hours) end render_api_custom_values @version.visible_custom_field_values, api api.created_on @version.created_on api.updated_on @version.updated_on end redmine-6.0.5/app/views/versions/show.html.erb000066400000000000000000000073171500112024600213460ustar00rootroot00000000000000
    <%= link_to(sprite_icon('edit', l(:button_edit)), edit_version_path(@version), :class => 'icon icon-edit') if User.current.allowed_to?(:manage_versions, @version.project) %> <%= link_to_if_authorized(sprite_icon('edit', l(:button_edit_associated_wikipage, :page_title => @version.wiki_page_title)), { :controller => 'wiki', :action => 'edit', :project_id => @version.project, :id => Wiki.titleize(@version.wiki_page_title)}, :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @version.project.wiki.nil? %> <%= delete_link version_path(@version, :back_url => url_for(:controller => 'versions', :action => 'index', :project_id => @version.project)) if User.current.allowed_to?(:manage_versions, @version.project) %> <%= link_to_new_issue(@version, @project) %> <%= call_hook(:view_versions_show_contextual, { :version => @version, :project => @project }) %>

    <%= @version.name %>

    <%= l("version_status_#{@version.status}") %> <%= render :partial => 'versions/overview', :locals => {:version => @version} %> <%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %>
    <% if @version.visible_fixed_issues.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %>
    <%= l(:label_time_tracking) %> <% if User.current.allowed_to_view_all_time_entries?(@project) %> <% end %>
    <%= l(:field_estimated_hours) %> <%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_hours)), project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_hours], :t => [:estimated_hours]) %>
    <%= l(:field_estimated_remaining_hours) %> <%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_remaining_hours)), project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_remaining_hours], :t => [:estimated_remaining_hours]) %>
    <%= l(:label_spent_time) %> <%= link_to html_hours(l_hours(@version.spent_hours)), project_time_entries_path(@version.project, :set_filter => 1, :"issue.fixed_version_id" => @version.id) %>
    <% end %>
    <%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.exists? %>
    <% if @issues.present? %> <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> <%- @issues.each do |issue| -%> <% end %> <% end %> <%= context_menu %> <% end %>
    <% other_formats_links do |f| %> <%= f.link_to_with_query_parameters 'TXT' %> <% end %> <%= call_hook :view_versions_show_bottom, :version => @version %> <% html_title @version.name %> redmine-6.0.5/app/views/versions/status_by.js.erb000066400000000000000000000001501500112024600220370ustar00rootroot00000000000000$('#status_by').html('<%= escape_javascript(render_issue_status_by(@version, params[:status_by])) %>'); redmine-6.0.5/app/views/watchers/000077500000000000000000000000001500112024600166715ustar00rootroot00000000000000redmine-6.0.5/app/views/watchers/_new.html.erb000066400000000000000000000031411500112024600212550ustar00rootroot00000000000000<% title = if watchables.present? l(:"permission_add_#{watchables.first.class.name.underscore}_watchers") else l(:permission_add_issue_watchers) end -%>

    <%= title %>

    <%= form_tag(watchables.present? ? watchers_path : watchers_append_path, :remote => true, :method => :post, :id => 'new-watcher-form') do %> <% if watchables.present? %> <%= hidden_field_tag 'object_type', watchables.first.class.name.underscore %> <% watchables.each do |watchable| %> <%= hidden_field_tag 'object_id[]', watchable.id %> <% end %> <% end %> <%= hidden_field_tag 'project_id', @project.id if @project %>

    <%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %>

    <%= javascript_tag( "observeSearchfield( 'user_search', 'users_for_watcher', '#{escape_javascript( url_for( :controller => 'watchers', :action => 'autocomplete_for_user', :object_type => (watchables.present? ? watchables.first.class.name.underscore : nil), :object_id => (watchables.present? ? watchables.map(&:id) : nil), :project_id => @project ) )}' )" ) %>
    <%= principals_check_box_tags('watcher[user_ids][]', users) %>

    <%= submit_tag l(:button_add), :name => nil, :onclick => "hideModal(this);" %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/watchers/_set_watcher.js.erb000066400000000000000000000004421500112024600224450ustar00rootroot00000000000000<% selector = ".#{watcher_css(watched)}" %> $("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")}); $('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => watched.first})) %>'); redmine-6.0.5/app/views/watchers/_watchers.html.erb000066400000000000000000000012111500112024600223000ustar00rootroot00000000000000<% watched_klass_name = watched.class.name.underscore -%> <% if User.current.allowed_to?(:"add_#{watched_klass_name}_watchers", watched.project) %>
    <%= link_to l(:button_add), new_watchers_path(:object_type => watched_klass_name, :object_id => watched), :remote => true, :method => 'get' %>
    <% end %> <% if User.current.allowed_to?(:"view_#{watched_klass_name}_watchers", watched.project) %>

    <%= l(:"label_#{watched_klass_name}_watchers") %> (<%= watched.watcher_users.size %>)

    <%= watchers_list(watched) %> <% else %>

    <%= l(:"label_#{watched_klass_name}_watchers") %>

    <% end %> redmine-6.0.5/app/views/watchers/append.js.erb000066400000000000000000000003001500112024600212360ustar00rootroot00000000000000<% @users.each do |user| %> $("#issue_watcher_user_ids_<%= user.id %>").remove(); <% end %> $('#watchers_inputs').append('<%= escape_javascript(watchers_checkboxes(nil, @users, true)) %>'); redmine-6.0.5/app/views/watchers/autocomplete_for_user.html.erb000066400000000000000000000000771500112024600247370ustar00rootroot00000000000000<%= principals_check_box_tags 'watcher[user_ids][]', @users %> redmine-6.0.5/app/views/watchers/create.js.erb000066400000000000000000000005271500112024600212450ustar00rootroot00000000000000$('#ajax-modal').html( '<%= escape_javascript( render(:partial => 'watchers/new', :locals => {:watchables => @watchables, :users => @users})) %>'); <% if @watchables.size == 1 %> <%= render(:partial => 'watchers/set_watcher', :locals => {:watched => @watchables, :user => User.current}) %> <% end %> redmine-6.0.5/app/views/watchers/destroy.js.erb000066400000000000000000000002461500112024600214710ustar00rootroot00000000000000<% if @watchables.size == 1 %> <%= render(:partial => 'watchers/set_watcher', :locals => {:watched => @watchables, :user => User.current}) %> <% end %> redmine-6.0.5/app/views/watchers/new.js.erb000066400000000000000000000004031500112024600205640ustar00rootroot00000000000000$('#ajax-modal').html( '<%= escape_javascript( render(:partial => 'watchers/new', :locals => {:watchables => @watchables, :users => @users}) ) %>'); showModal('ajax-modal', '400px'); $('#ajax-modal').addClass('new-watcher'); redmine-6.0.5/app/views/welcome/000077500000000000000000000000001500112024600165045ustar00rootroot00000000000000redmine-6.0.5/app/views/welcome/index.html.erb000066400000000000000000000021071500112024600212500ustar00rootroot00000000000000

    <%= l(:label_home) %>

    <%= textilizable Setting.welcome_text %>
    <%= call_hook(:view_welcome_index_left) %>
    <% if @news.any? %>

    <%= sprite_icon('news', l(:label_news_latest))%>

    <%= render :partial => 'news/news', :collection => @news %> <%= link_to l(:label_news_view_all), :controller => 'news' %>
    <% end %> <%= call_hook(:view_welcome_index_right) %>
    <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.atom_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %> <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.atom_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_activity)}") %> <% end %> redmine-6.0.5/app/views/welcome/robots.text.erb000066400000000000000000000017101500112024600214700ustar00rootroot00000000000000User-agent: * <% if Setting.login_required? -%> Disallow: / <% else -%> <% @projects.each do |project| -%> <% [project, project.id].each do |p| -%> Disallow: <%= url_for(:controller => 'repositories', :action => :show, :id => p) %> Disallow: <%= url_for(project_issues_path(:project_id => p)) %> Disallow: <%= url_for(project_activity_path(:id => p)) %> <% end -%> <% end -%> Disallow: <%= url_for(issues_gantt_path) %> Disallow: <%= url_for(issues_calendar_path) %> Disallow: <%= url_for(activity_path) %> Disallow: <%= url_for(search_path) %> Disallow: <%= url_for(issues_path) %>?*sort= Disallow: <%= url_for(issues_path) %>?*query_id= Disallow: <%= url_for(issues_path) %>?*set_filter= Disallow: <%= url_for(issues_path(:trailing_slash => true)) %>*.pdf$ Disallow: <%= url_for(projects_path(:trailing_slash => true)) %>*.pdf$ Disallow: <%= url_for(signin_path) %> Disallow: <%= url_for(register_path) %> Disallow: <%= url_for(lost_password_path) %> <% end -%> redmine-6.0.5/app/views/wiki/000077500000000000000000000000001500112024600160145ustar00rootroot00000000000000redmine-6.0.5/app/views/wiki/_content.html.erb000066400000000000000000000004101500112024600212550ustar00rootroot00000000000000
    <%= textilizable content, :text, :attachments => content.page.attachments, :edit_section_links => (@sections_editable && {:controller => 'wiki', :action => 'edit', :project_id => @page.project, :id => @page.title}) %>
    redmine-6.0.5/app/views/wiki/_new_modal.html.erb000066400000000000000000000016021500112024600215540ustar00rootroot00000000000000

    <%=l(:label_wiki_page_new)%>

    <%= labelled_form_for :page, @page, :url => new_project_wiki_page_path(@project), :method => 'post', :remote => true do |f| %> <%= render_error_messages @page.errors.full_messages_for(:title) %>

    <%= f.text_field :title, :name => 'title', :size => 60, :required => true %> <%= l(:text_unallowed_characters) %>: , . / ? ; : |

    <% if params[:parent].present? %> <% end %>

    <%= submit_tag l(:label_next), :name => nil %> <%= link_to_function l(:button_cancel), "hideModal(this);" %>

    <% end %> redmine-6.0.5/app/views/wiki/_sidebar.html.erb000066400000000000000000000016171500112024600212260ustar00rootroot00000000000000<% if User.current.allowed_to?(:edit_wiki_pages, @project) && (@wiki && @wiki.find_or_new_page('Sidebar').editable_by?(User.current)) %>
    <%= link_to sprite_icon('edit', l(:button_edit)), edit_project_wiki_page_path(@project, 'sidebar'), :class => 'icon icon-edit' %>
    <% end -%> <% if @wiki && @wiki.sidebar -%>
    <%= textilizable @wiki.sidebar.content, :text %>
    <% end -%>

    <%= l(:label_wiki) %>

    • <%= link_to(l(:field_start_page), {:action => 'show', :id => nil}) %>
    • <%= link_to(l(:label_index_by_title), {:action => 'index'}) %>
    • <%= link_to(l(:label_index_by_date), {:controller => 'wiki', :project_id => @project, :action => 'date_index'}) %>
    <%= call_hook(:view_wiki_show_sidebar_bottom, :wiki => @wiki, :page => @page) %> redmine-6.0.5/app/views/wiki/annotate.html.erb000066400000000000000000000031121500112024600212570ustar00rootroot00000000000000
    <%= link_to(sprite_icon('edit', l(:button_edit)), { :action => 'edit', :id => @page.title}, :class => 'icon icon-edit') %> <%= link_to(sprite_icon('history', l(:label_history)), {:action => 'history', :id => @page.title}, :class => 'icon icon-history') %>
    <%= wiki_page_breadcrumb(@page) %> <%= title [@page.pretty_title, project_wiki_page_path(@page.project, @page.title, :version => nil)], [l(:label_history), history_project_wiki_page_path(@page.project, @page.title)], "#{l(:label_version)} #{@annotate.content.version}" %>

    <%= @annotate.content.author ? link_to_user(@annotate.content.author) : l(:label_user_anonymous) %>, <%= format_time(@annotate.content.updated_on) %>
    <%= @annotate.content.comments %>

    <% colors = Hash.new {|k,v| k[v] = (k.size % 12) } %> <% line_num = 1; prev_version = nil %> <% @annotate.lines.each do |line| -%> <% line_num += 1; prev_version = line[0] %> <% end -%>
    <%= line_num %> <%= link_to line[0], :controller => 'wiki', :action => 'show', :project_id => @project, :id => @page.title, :version => line[0] unless prev_version == line[0] %> <%= line[1] unless prev_version == line[0] %>
    <%= line[2] %>
    <% content_for :header_tags do %> <%= stylesheet_link_tag 'scm' %> <% end %> redmine-6.0.5/app/views/wiki/date_index.html.erb000066400000000000000000000031561500112024600215620ustar00rootroot00000000000000
    <% if User.current.allowed_to?(:edit_wiki_pages, @project) %> <%= link_to sprite_icon('add', l(:label_wiki_page_new)), new_project_wiki_page_path(@project), :remote => true, :class => 'icon icon-add' %> <% end %> <%= watcher_link(@wiki, User.current) %> <% if User.current.allowed_to?(:manage_wiki, @project) %> <%= link_to sprite_icon('del', l(:button_delete)), { :controller => 'wikis', :action => 'destroy', :id => @project}, :class => 'icon icon-del' %> <% end %>

    <%= l(:label_index_by_date) %>

    <% if @pages.empty? %>

    <%= l(:label_no_data) %>

    <% end %> <% @pages_by_date.keys.sort.reverse_each do |date| %>

    <%= format_date(date) %>

      <% @pages_by_date[date].each do |page| %>
    • <%= link_to page.pretty_title, :action => 'show', :id => page.title, :project_id => page.project %>
    • <% end %>
    <% end %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% end %> <% unless @pages.empty? %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.atom_key} %> <% if User.current.allowed_to?(:export_wiki_pages, @project) %> <%= f.link_to('PDF', :url => {:action => 'export', :format => 'pdf'}) %> <%= f.link_to('HTML', :url => {:action => 'export'}) %> <% end %> <% end %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.atom_key) %> <% end %> redmine-6.0.5/app/views/wiki/destroy.html.erb000066400000000000000000000020621500112024600211420ustar00rootroot00000000000000<%= wiki_page_breadcrumb(@page) %>

    <%= @page.pretty_title %>

    <%= form_tag({}, :method => :delete) do %>

    <%= l(:text_wiki_page_destroy_question, :descendants => @descendants_count) %>


    <% if @reassignable_to.any? %>
    : <%= label_tag "reassign_to_id", l(:description_wiki_subpages_reassign), :class => "hidden-for-sighted" %> <%= select_tag 'reassign_to_id', wiki_page_options_for_select(@reassignable_to), :onclick => "$('#todo_reassign').prop('checked', true);" %> <% end %>

    <%= submit_tag l(:button_apply) %> <%= link_to l(:button_cancel), :controller => 'wiki', :action => 'show', :project_id => @project, :id => @page.title %> <% end %> redmine-6.0.5/app/views/wiki/diff.html.erb000066400000000000000000000025101500112024600203570ustar00rootroot00000000000000
    <%= link_to(sprite_icon('history', l(:label_history)), { :action => 'history', :id => @page.title}, :class => 'icon icon-history') %>
    <%= wiki_page_breadcrumb(@page) %> <%= title [@page.pretty_title, project_wiki_page_path(@page.project, @page.title, :version => nil)], [l(:label_history), history_project_wiki_page_path(@page.project, @page.title)], "#{l(:label_revision)} #{@diff.content_to.version}" %>

    <%= l(:label_revision) %> <%= link_to @diff.content_from.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_from.version %> (<%= @diff.content_from.author ? @diff.content_from.author.name : l(:label_user_anonymous) %>, <%= format_time(@diff.content_from.updated_on) %>) → <%= l(:label_revision) %> <%= link_to @diff.content_to.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => @diff.content_to.version %>/<%= @page.content.version %> (<%= @diff.content_to.author ? link_to_user(@diff.content_to.author.name) : l(:label_user_anonymous) %>, <%= format_time(@diff.content_to.updated_on) %>)

    <%= @diff.to_html %>
    redmine-6.0.5/app/views/wiki/edit.html.erb000066400000000000000000000057541500112024600204110ustar00rootroot00000000000000<%= wiki_page_breadcrumb(@page) %>

    <%= @page.pretty_title %>

    <%= form_for @content, :as => :content, :url => {:action => 'update', :id => @page.title}, :html => {:method => :put, :multipart => true, :id => 'wiki_form'} do |f| %> <%= f.hidden_field :version %> <% if @section %> <%= hidden_field_tag 'section', @section %> <%= hidden_field_tag 'section_hash', @section_hash %> <% end %> <%= error_messages_for 'content' %>
    <%= text_area_tag 'content[text]', @text, :cols => 100, :rows => 25, :accesskey => accesskey(:edit), :class => 'wiki-edit', :data => { :auto_complete => true } %> <% if @page.safe_attribute_names.include?('parent_id') && @wiki.pages.any? %> <%= fields_for @page do |fp| %>

    <%= fp.select :parent_id, content_tag('option', '', :value => '') + wiki_page_options_for_select( @wiki.pages.includes(:parent).to_a - @page.self_and_descendants, @page.parent) %>

    <% end %> <% end %>

    <%= f.text_field :comments, :size => 120, :maxlength => 1024 %>

    <%=l(:label_attachment_plural)%> <% if @page.attachments.any? && @page.safe_attribute?('deleted_attachment_ids') %>
    <%= link_to l(:label_edit_attachments), '#', :onclick => "$('#existing-attachments').toggle(); return false;" %>
    <% @page.attachments.each do |attachment| %> <%= sprite_icon('attachment', size: 12) %> <%= text_field_tag '', attachment.filename, :class => "icon icon-attachment filename", :disabled => true %> <% end %>
    <% end %>
    <%= render :partial => 'attachments/form' %>

    <%= submit_tag l(:button_save) %> <%= link_to l(:button_cancel), wiki_page_edit_cancel_path(@page) %>

    <%= wikitoolbar_for 'content_text', preview_project_wiki_page_path(:project_id => @project, :id => @page.title) %> <% if User.current.allowed_to?(:add_wiki_page_watchers, @project)%> <%= update_data_sources_for_auto_complete({users: watchers_autocomplete_for_mention_path(project_id: @project, q: '', object_type: 'wiki_page', object_id: @page.id)}) %> <% end %> <% end %> <% content_for :header_tags do %> <%= robot_exclusion_tag %> <% end %> <% html_title @page.pretty_title %> redmine-6.0.5/app/views/wiki/export.html.erb000066400000000000000000000016571500112024600210030ustar00rootroot00000000000000 <%= @page.pretty_title %> <%= textilizable @content, :text, :wiki_links => :local, :only_path => false %> redmine-6.0.5/app/views/wiki/export.pdf.erb000066400000000000000000000000561500112024600206000ustar00rootroot00000000000000<%= raw wiki_pages_to_pdf(@pages, @project) %>redmine-6.0.5/app/views/wiki/export_multiple.html.erb000066400000000000000000000022101500112024600227000ustar00rootroot00000000000000 <%= @wiki.project.name %> <%= l(:label_index_by_title) %> <%= render_page_hierarchy(@pages.group_by(&:parent_id), nil, :timestamp => true) %> <% @pages.each do |page| %>
    <%= textilizable page.content ,:text, :wiki_links => :anchor, :only_path => false %> <% end %> redmine-6.0.5/app/views/wiki/history.html.erb000066400000000000000000000037111500112024600211540ustar00rootroot00000000000000<%= wiki_page_breadcrumb(@page) %> <%= title [@page.pretty_title, project_wiki_page_path(@page.project, @page.title, :version => nil)], l(:label_history) %> <%= form_tag({:controller => 'wiki', :action => 'diff', :project_id => @page.project, :id => @page.title}, :method => :get) do %> <% show_diff = @versions.size > 1 %> <% if show_diff %>

    <%= submit_tag l(:label_view_diff) %>

    <% end %> <% line_num = 1 %> <% @versions.each do |ver| %> <% line_num += 1 %> <% end %>
    # <%= l(:field_updated_on) %> <%= l(:field_author) %> <%= l(:field_comments) %>
    <%= link_to ver.version, :action => 'show', :id => @page.title, :project_id => @page.project, :version => ver.version %> <%= radio_button_tag('version', ver.version, (line_num==1), :id => "cb-#{line_num}", :onclick => "$('#cbto-#{line_num+1}').prop('checked', true);") if show_diff && (line_num < @versions.size) %> <%= radio_button_tag('version_from', ver.version, (line_num==2), :id => "cbto-#{line_num}") if show_diff && (line_num > 1) %> <%= format_time(ver.updated_on) %> <%= link_to_user ver.author %> <%= ver.comments %> <%= link_to l(:button_annotate), :action => 'annotate', :id => @page.title, :version => ver.version %> <%= delete_link wiki_page_path(@page, :version => ver.version) if User.current.allowed_to?(:delete_wiki_pages, @page.project) && @version_count > 1 %>
    <% if show_diff %>

    <%= submit_tag l(:label_view_diff) %>

    <% end %> <%= pagination_links_full @version_pages, @version_count %> <% end %> redmine-6.0.5/app/views/wiki/index.api.rsb000066400000000000000000000004521500112024600204040ustar00rootroot00000000000000api.array :wiki_pages do @pages.each do |page| api.wiki_page do api.title page.title if page.parent api.parent :title => page.parent.title end api.version page.version api.created_on page.created_on api.updated_on page.updated_on end end end redmine-6.0.5/app/views/wiki/index.html.erb000066400000000000000000000027751500112024600205730ustar00rootroot00000000000000
    <% if User.current.allowed_to?(:edit_wiki_pages, @project) %> <%= link_to sprite_icon('add', l(:label_wiki_page_new)), new_project_wiki_page_path(@project), :remote => true, :class => 'icon icon-add' %> <% end %> <%= watcher_link(@wiki, User.current) %> <% if User.current.allowed_to?(:manage_wiki, @project) %> <%= link_to sprite_icon('del', l(:button_delete)), { :controller => 'wikis', :action => 'destroy', :id => @project}, :class => 'icon icon-del' %> <% end %>

    <%= l(:label_index_by_title) %>

    <% if @pages.empty? %>

    <%= l(:label_no_data) %>

    <% end %> <%= render_page_hierarchy(@pages_by_parent_id, nil, :timestamp => true) %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% end %> <% unless @pages.empty? %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.atom_key} %> <% if User.current.allowed_to?(:export_wiki_pages, @project) %> <%= f.link_to('PDF', :url => {:action => 'export', :format => 'pdf'}) %> <%= f.link_to('HTML', :url => {:action => 'export'}) %> <% end %> <% end %> <% end %> <% content_for :header_tags do %> <%= auto_discovery_link_tag( :atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.atom_key) %> <% end %> redmine-6.0.5/app/views/wiki/new.html.erb000066400000000000000000000007361500112024600202500ustar00rootroot00000000000000<%= title l(:label_wiki_page_new) %> <%= labelled_form_for :page, @page, :url => new_project_wiki_page_path(@project) do |f| %> <%= render_error_messages @page.errors.full_messages_for(:title) %>

    <%= f.text_field :title, :name => 'title', :size => 60, :required => true %> <%= l(:text_unallowed_characters) %>: , . / ? ; : |

    <%= submit_tag(l(:label_next)) %> <% end %> redmine-6.0.5/app/views/wiki/new.js.erb000066400000000000000000000001721500112024600177120ustar00rootroot00000000000000$('#ajax-modal').html('<%= escape_javascript(render :partial => 'wiki/new_modal') %>'); showModal('ajax-modal', '600px'); redmine-6.0.5/app/views/wiki/rename.html.erb000066400000000000000000000024671500112024600207310ustar00rootroot00000000000000<%= wiki_page_breadcrumb(@page) %>

    <%= @original_title %>

    <%= error_messages_for 'page' %> <%= labelled_form_for :wiki_page, @page, :url => { :action => 'rename' }, :html => { :method => :post } do |f| %>

    <%= f.text_field :title, :required => true, :size => 100 %>

    <% if @page.safe_attribute? 'is_start_page' %>

    <%= f.check_box :is_start_page, :label => :field_start_page, :disabled => @page.is_start_page %>

    <% end %>

    <%= f.check_box :redirect_existing_links %>

    <% if @page.safe_attribute? 'wiki_id' %>

    <%= f.select :wiki_id, wiki_page_wiki_options_for_select(@page), :label => :label_project %>

    <% end %>

    <%= f.select :parent_id, content_tag('option', '', :value => '') + wiki_page_options_for_select( @wiki.pages.includes(:parent).to_a - @page.self_and_descendants, @page.parent), :label => :field_parent_title %>

    <%= submit_tag l(:button_rename) %> <% end %> <%= javascript_tag do %> $('#wiki_page_wiki_id').change(function() { $.ajax({ url: '<%= rename_project_wiki_page_path(@wiki, :format => 'js') %>', type: 'get', data: { 'wiki_page[wiki_id]': $('#wiki_page_wiki_id').val() } }); }); <% end %> redmine-6.0.5/app/views/wiki/show.api.rsb000066400000000000000000000010451500112024600202540ustar00rootroot00000000000000api.wiki_page do api.title @page.title if @page.parent api.parent :title => @page.parent.title end api.text @content.text api.version @content.version api.author(:id => @content.author_id, :name => @content.author.name) unless @content.author_id.nil? api.comments @content.comments api.created_on @page.created_on api.updated_on @content.updated_on api.array :attachments do @page.attachments.each do |attachment| render_api_attachment(attachment, api) end end if include_in_api_response?('attachments') end redmine-6.0.5/app/views/wiki/show.html.erb000066400000000000000000000124101500112024600204270ustar00rootroot00000000000000
    <% if @editable %> <% if @content.current_version? %> <%= link_to_if_authorized(sprite_icon('edit', l(:button_edit)), { :action => 'edit', :id => @page.title}, :class => 'icon icon-edit', :accesskey => accesskey(:edit)) %> <%= watcher_link(@page, User.current) %> <% end %> <% end %> <%= actions_dropdown do %> <%= link_to_if_authorized(sprite_icon('history', l(:label_history)), { :action => 'history', :id => @page.title}, :class => 'icon icon-history') %> <% if @editable %> <% if @content.current_version? %> <%= link_to_if_authorized(sprite_icon('lock', l(:button_lock)), { :action => 'protect', :id => @page.title, :protected => 1}, :method => :post, :class => 'icon icon-lock') if !@page.protected? %> <%= link_to_if_authorized(sprite_icon('unlock', l(:button_unlock)), { :action => 'protect', :id => @page.title, :protected => 0}, :method => :post, :class => 'icon icon-unlock') if @page.protected? %> <%= link_to_if_authorized(sprite_icon('move', l(:button_rename)), { :action => 'rename', :id => @page.title}, :class => 'icon icon-move') %> <%= link_to_if_authorized(sprite_icon('del', l(:button_delete)), { :action => 'destroy', :id => @page.title}, :method => :delete, :data => { :confirm => l(:text_are_you_sure)}, :class => 'icon icon-del') %> <% else %> <%= link_to_if_authorized(sprite_icon('cancel', l(:button_rollback)), { :action => 'edit', :id => @page.title, :version => @content.version }, :class => 'icon icon-cancel') %> <% end %> <% end %> <% if User.current.allowed_to?(:edit_wiki_pages, @project) %> <%= link_to sprite_icon('add', l(:label_wiki_page_new)), new_project_wiki_page_path(@project, :parent => @page.title), :remote => true, :class => 'icon icon-add' %> <% end %> <% end %>
    <%= wiki_page_breadcrumb(@page) %> <% unless @content.current_version? %> <%= title [@page.pretty_title, project_wiki_page_path(@page.project, @page.title, :version => nil)], [l(:label_history), history_project_wiki_page_path(@page.project, @page.title)], "#{l(:label_revision)} #{@content.version}" %>

    <% if @content.previous %> <%= link_to ("\xc2\xab " + l(:label_previous)), :action => 'show', :id => @page.title, :project_id => @page.project, :version => @content.previous.version %> | <% end %> <%= "#{l(:label_revision)} #{@content.version}/#{@page.content.version}" %> <% if @content.previous %> (<%= link_to l(:label_diff), :controller => 'wiki', :action => 'diff', :id => @page.title, :project_id => @page.project, :version => @content.version %>) <% end %> <% if @content.next %> | <%= link_to (l(:label_next) + " \xc2\xbb"), :action => 'show', :id => @page.title, :project_id => @page.project, :version => @content.next.version %> <% end %>
    <%= @content.author ? link_to_user(@content.author) : l(:label_user_anonymous) %>, <%= format_time(@content.updated_on) %>
    <%= @content.comments %>


    <% end %> <%= render(:partial => "wiki/content", :locals => {:content => @content}) %>

    <% if User.current.allowed_to?(:view_wiki_edits, @project) %> <%= wiki_content_update_info(@content) %> · <%= link_to l(:label_x_revisions, :count => @page.content.versions.size), {:action => 'history', :id => @page.title} %> <% end %> <% if @page.protected? %> <%= l('status_locked') %> <% end %>

    <% other_formats_links do |f| %> <%= f.link_to 'PDF', :url => {:id => @page.title, :version => params[:version]} %> <%= f.link_to 'HTML', :url => {:id => @page.title, :version => params[:version]} %> <%= f.link_to 'TXT', :url => {:id => @page.title, :version => params[:version]} %> <% end if User.current.allowed_to?(:export_wiki_pages, @project) %> <% content_for :sidebar do %> <%= render :partial => 'sidebar' %> <% if User.current.allowed_to?(:add_wiki_page_watchers, @project) || (@page.watchers.present? && User.current.allowed_to?(:view_wiki_page_watchers, @project)) %>
    <%= render :partial => 'watchers/watchers', :locals => {:watched => @page} %>
    <% end %> <% end %> <% content_for :header_tags do %> <%= robot_exclusion_tag unless @content.current_version? %> <% end %> <% html_title @page.pretty_title %> redmine-6.0.5/app/views/wiki/show.pdf.erb000066400000000000000000000000541500112024600202350ustar00rootroot00000000000000<%= raw wiki_page_to_pdf(@page, @project) %>redmine-6.0.5/app/views/wikis/000077500000000000000000000000001500112024600161775ustar00rootroot00000000000000redmine-6.0.5/app/views/wikis/destroy.html.erb000066400000000000000000000005661500112024600213340ustar00rootroot00000000000000

    <%=l(:label_confirmation)%>

    <%= @project.name %>
    <%=l(:text_wiki_destroy_confirmation)%>

    <%= form_tag({:controller => 'wikis', :action => 'destroy', :id => @project}) do %> <%= hidden_field_tag "confirm", 1 %> <%= submit_tag l(:button_delete) %> <%= link_to l(:button_cancel), :back %> <% end %> redmine-6.0.5/app/views/workflows/000077500000000000000000000000001500112024600171065ustar00rootroot00000000000000redmine-6.0.5/app/views/workflows/_action_menu.html.erb000066400000000000000000000003651500112024600232070ustar00rootroot00000000000000
    <%= link_to sprite_icon('copy', l(:button_copy)), { :action => 'copy'}, :class => 'icon icon-copy' %> <%= link_to sprite_icon('summary', l(:field_summary)), { :action => 'index'}, :class => 'icon icon-summary' %>
    redmine-6.0.5/app/views/workflows/_form.html.erb000066400000000000000000000033631500112024600216520ustar00rootroot00000000000000 <% for new_status in @statuses %> <% end %> <% transition_counts = workflows.each_with_object(Hash.new(0)) {|w,memo| memo[[w.old_status, w.new_status]] += 1} %> <% for old_status in [nil] + @statuses %> <% next if old_status.nil? && name != 'always' %> <% for new_status in @statuses -%> <% checked = (old_status == new_status) || (transition_counts[[old_status, new_status]] > 0) %> <% end -%> <% end %>
    <%= toggle_checkboxes_link("table.transitions-#{name} input[type=checkbox]:not(:disabled)", { class: 'no-tooltip' }) %> <%=l(:label_current_status)%> <%=l(:label_new_statuses_allowed)%>
    <%= toggle_checkboxes_link("table.transitions-#{name} input[type=checkbox]:not(:disabled).new-status-#{new_status.id}", { class: 'no-tooltip' }) %> <%= new_status.name %>
    <%= toggle_checkboxes_link("table.transitions-#{name} input[type=checkbox]:not(:disabled).old-status-#{old_status.try(:id) || 0}", { class: 'no-tooltip' }) %> <% if old_status %> <% old_status_name = old_status.name %> <%= old_status_name %> <% else %> <% old_status_name = l(:label_issue_new) %> <%= content_tag('em', old_status_name) %> <% end %> <%= transition_tag transition_counts[[old_status, new_status]], old_status, new_status, name %>
    redmine-6.0.5/app/views/workflows/copy.html.erb000066400000000000000000000036171500112024600215240ustar00rootroot00000000000000<%= title [l(:label_workflow), edit_workflows_path], l(:button_copy) %> <%= form_tag duplicate_workflows_path, method: :post, id: 'workflow_copy_form' do %>
    <%= l(:label_copy_source) %>

    <%= select_tag('source_tracker_id', content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '') + content_tag('option', "--- #{ l(:label_copy_same_as_target) } ---", :value => 'any') + options_from_collection_for_select(@trackers, 'id', 'name', @source_tracker && @source_tracker.id)) %>

    <%= select_tag('source_role_id', content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '') + content_tag('option', "--- #{ l(:label_copy_same_as_target) } ---", :value => 'any') + options_from_collection_for_select(@roles, 'id', 'name', @source_role && @source_role.id)) %>

    <%= l(:label_copy_target) %>

    <%= select_tag 'target_tracker_ids', content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '', :disabled => true) + options_from_collection_for_select(@trackers, 'id', 'name', @target_trackers && @target_trackers.map(&:id)), :multiple => true %>

    <%= select_tag 'target_role_ids', content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---", :value => '', :disabled => true) + options_from_collection_for_select(@roles, 'id', 'name', @target_roles && @target_roles.map(&:id)), :multiple => true %>

    <%= submit_tag l(:button_copy) %> <% end %> redmine-6.0.5/app/views/workflows/edit.html.erb000066400000000000000000000064101500112024600214710ustar00rootroot00000000000000<%= render :partial => 'action_menu' %> <%= title l(:label_workflow) %>
    • <%= link_to l(:label_status_transitions), edit_workflows_path(:role_id => @roles, :tracker_id => @trackers), :class => 'selected' %>
    • <%= link_to l(:label_fields_permissions), permissions_workflows_path(:role_id => @roles, :tracker_id => @trackers) %>

    <%=l(:text_workflow_edit)%>:

    <%= form_tag({}, :method => 'get') do %>

    <%= submit_tag l(:button_edit), :name => nil %> <%= hidden_field_tag 'used_statuses_only', '0', :id => nil %>

    <% end %> <% if @trackers && @roles && @statuses.any? %> <%= form_tag workflows_path, method: :patch, id: 'workflow_form' do %> <%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %> <%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %> <%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %>
    <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %>
    "> <%= sprite_icon(@workflows['author'].present? ? "angle-down" : "angle-right", rtl: !@workflows['author'].present?) %> <%= l(:label_additional_workflow_transitions_for_author) %>
    <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %>
    <%= javascript_tag "hideFieldset($('#author_workflows'))" unless @workflows['author'].present? %>
    "> <%= sprite_icon(@workflows['assignee'].present? ? "angle-down" : "angle-right", rtl: !@workflows['assignee'].present?) %> <%= l(:label_additional_workflow_transitions_for_assignee) %>
    <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %>
    <%= javascript_tag "hideFieldset($('#assignee_workflows'))" unless @workflows['assignee'].present? %>
    <%= submit_tag l(:button_save) %> <% end %> <% end %> redmine-6.0.5/app/views/workflows/index.html.erb000066400000000000000000000015501500112024600216530ustar00rootroot00000000000000<%= title [l(:label_workflow), edit_workflows_path], l(:field_summary) %> <% if @roles.empty? || @trackers.empty? %>

    <%= l(:label_no_data) %>

    <% else %>
    <% @roles.each do |role| %> <% end %> <% @trackers.each do |tracker| -%> <% @roles.each do |role| -%> <% count = @workflow_counts[[tracker.id, role.id]] || 0 %> <% end -%> <% end -%>
    <%= content_tag(role.builtin? ? 'em' : 'span', role.name) %>
    <%= tracker.name %> <%= link_to(count, {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit), :class => ('decoration-red' if count == 0)) %>
    <% end %> redmine-6.0.5/app/views/workflows/permissions.html.erb000066400000000000000000000103301500112024600231130ustar00rootroot00000000000000<%= render :partial => 'action_menu' %> <%= title l(:label_workflow) %>
    • <%= link_to l(:label_status_transitions), edit_workflows_path(:role_id => @roles, :tracker_id => @trackers) %>
    • <%= link_to l(:label_fields_permissions), permissions_workflows_path(:role_id => @roles, :tracker_id => @trackers), :class => 'selected' %>

    <%=l(:text_workflow_edit)%>:

    <%= form_tag({}, :method => 'get') do %>

    <%= submit_tag l(:button_edit), :name => nil %> <%= hidden_field_tag 'used_statuses_only', '0', :id => nil %>

    <% end %> <% if @trackers && @roles && @statuses.any? %> <%= form_tag update_permissions_workflows_path, method: :patch, id: 'workflow_form' do %> <%= @trackers.map {|tracker| hidden_field_tag 'tracker_id[]', tracker.id, :id => nil}.join.html_safe %> <%= @roles.map {|role| hidden_field_tag 'role_id[]', role.id, :id => nil}.join.html_safe %> <%= hidden_field_tag 'used_statuses_only', params[:used_statuses_only], :id => nil %>
    <% for status in @statuses %> <% end %> <% @fields.each do |field, name| %> <% for status in @statuses -%> <% end -%> <% end %> <% if @custom_fields.any? %> <% @custom_fields.each do |field| %> <% for status in @statuses -%> <% end -%> <% end %> <% end %>
    <%=l(:label_issue_status)%>
    <%= status.name %>
    <%= sprite_icon("angle-down") %> <%= l(:field_core_fields) %>
    <%= name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %> <%= field_permission_tag(@permissions, status, field, @roles) %> <% unless status == @statuses.last %>»<% end %>
    <%= sprite_icon("angle-down") %> <%= l(:label_custom_field_plural) %>
    <%= field.name %> <%= content_tag('span', '*', :class => 'required') if field_required?(field) %> <%= field_permission_tag(@permissions, status, field, @roles) %> <% unless status == @statuses.last %>»<% end %>
    <%= submit_tag l(:button_save) %> <% end %> <% end %> <%= javascript_tag do %> $("a.repeat-value").click(function(e){ e.preventDefault(); var td = $(this).closest('td'); var selected = td.find("select").find(":selected").val(); td.nextAll('td').find("select").val(selected); }); <% end %> redmine-6.0.5/bin/000077500000000000000000000000001500112024600137045ustar00rootroot00000000000000redmine-6.0.5/bin/about000077500000000000000000000002471500112024600147470ustar00rootroot00000000000000#!/usr/bin/env ruby ENV["RAILS_ENV"] ||= "production" require File.expand_path(File.dirname(__FILE__) + "/../config/environment") puts puts Redmine::Info.environment redmine-6.0.5/bin/bundle000077500000000000000000000002021500112024600150750ustar00rootroot00000000000000#!/usr/bin/env ruby ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) load Gem.bin_path('bundler', 'bundle') redmine-6.0.5/bin/changelog.rb000077500000000000000000000245511500112024600161720ustar00rootroot00000000000000#!/usr/bin/env ruby require 'optparse' require 'ostruct' require 'date' VERSION = '1.0.0' ARGV << '-h' if ARGV.empty? class OptionsParser def self.parse(args) options = OpenStruct.new options.version_name = '' options.release_date = '' options.new_branch = 'auto' opt_parser = OptionParser.new do |opts| opts.banner = 'Usage: changelog_generator.rb [options]' opts.separator '' opts.separator 'Required specific options:' opts.on('-i', '--version_id VERSIONID', 'Numerical id of the version [int]') do |i| options.version_id = i end opts.separator '' opts.separator 'Optional specific options:' opts.on('-n', '--version_name VERSIONNAME', 'Name of the version [string]') do |n| options.version_name = n end opts.on('-d', '--release_date RELEASEDATE', 'Date of the release [string: YYYY-MM-DD]') do |d| options.release_date = d end opts.on('-b', '--new_branch NEWBRANCH', 'New release branch indicator [string: true/false/auto (default)]') do |b| options.new_branch = b end opts.separator '' opts.separator 'Common options:' opts.on_tail('-h', '--help', 'Prints this help') do puts opts exit end opts.on_tail('-v', '--version', 'Show version') do puts VERSION exit end end opt_parser.parse!(args) options end end # Gracely handle missing required options begin options = OptionsParser.parse(ARGV) required = [:version_id] missing = required.select{ |param| options[param].nil? } unless missing.empty? raise OptionParser::MissingArgument.new(missing.join(', ')) end rescue OptionParser::ParseError => e puts e exit end # Extract options values into global variables $v_id = options[:version_id] $v_name = options[:version_name] $r_date = options[:release_date] $n_branch = options[:new_branch] module Redmine module ChangelogGenerator require 'nokogiri' require 'open-uri' @v_id = $v_id @v_name = $v_name @r_date = $r_date @n_branch = $n_branch ISSUES_URL = 'https://www.redmine.org/projects/redmine/issues' + '?utf8=%E2%9C%93&set_filter=1' + '&f%5B%5D=status_id&op%5Bstatus_id%5D=*' + '&f%5B%5D=fixed_version_id&op%5Bfixed_version_id%5D=%3D' + '&v%5Bfixed_version_id%5D%5B%5D=' + @v_id + '&f%5B%5D=&c%5B%5D=tracker&c%5B%5D=subject' + '&c%5B%5D=category&group_by=' VERSIONS_URL = 'https://www.redmine.org/versions/' + @v_id PAGINATION_ITEMS_SPAN_SELECTOR = 'div#content span.pagination span.items' ISSUE_TR_SELECTOR = 'div#content table.list.issues > tbody > tr' VERSION_DETAILS_SELECTOR = 'div#content' VERSION_NAME_SELECTOR = 'div#roadmap > h2' RELEASE_DATE_SELECTOR = 'div#roadmap > div.version-overview p' PAGINATION_ITEMS_SPAN_REGEX = %r{(?:[(])([\d]+)(?:-)([\d]+)(?:[\/])([\d]+)(?:[)])} RELEASE_DATE_REGEX_INCOMPLETE = %r{\((\d{4}-\d{2}-\d{2})\)} RELEASE_DATE_REGEX_COMPLETE = %r{^(\d{4}-\d{2}-\d{2})} VERSION_REGEX = %r{^(\d+)(?:\.(\d+))?(?:\.(\d+))?} CONNECTION_ERROR_MSG = "Connection error: couldn't retrieve data from " + "https://www.redmine.org.\n" + "Please try again later..." class << self def generate parse_pagination_items_span_content get_changelog_items(@no_of_pages) sort_changelog_items build_output(@changelog_items, @no_of_issues, version_name, release_date, new_branch?, 'packaged_file') build_output(@changelog_items, @no_of_issues, version_name, release_date, new_branch?, 'website') end def parse_pagination_items_span_content items_span = retrieve_pagination_items_span_content items_span = items_span.match(PAGINATION_ITEMS_SPAN_REGEX) items_per_page = items_span[2].to_i @no_of_issues = items_span[3].to_i begin raise if items_per_page == 0 || @no_of_issues == 0 rescue => e puts "No changelog items to process.\n" + "Make sure to provide a valid version id as the -i parameter." exit end @no_of_pages = @no_of_issues / items_per_page @no_of_pages += 1 if @no_of_issues % items_per_page > 0 end def retrieve_pagination_items_span_content begin Nokogiri::HTML(URI.open(ISSUES_URL)).css(PAGINATION_ITEMS_SPAN_SELECTOR).text rescue OpenURI::HTTPError puts CONNECTION_ERROR_MSG exit end end def get_changelog_items(no_of_pages) # Initialize @changelog_items hash # # We'll store categories as hash keys and issues, as nested # hashes, in nested arrays as the hash'es values: # # {"categoryX"=> # [{"id"=>1, "tracker"=>"tracker1", "subject"=>"subject1"}, # {"id"=>2, "tracker"=>"tracker2", "subject"=>"subject2"}], # "categoryY"=> # [{"id"=>3, "tracker"=>"tracker3", "subject"=>"subject3"}, # {"id"=>4, "tracker"=>"tracker4", "subject"=>"subject4"}]} # @changelog_items = Hash.new (1..no_of_pages).each do |page_number| page = retrieve_issues_list_page(page_number) page_trs = page.css(ISSUE_TR_SELECTOR).to_a store_changelog_items(page_trs) end end def retrieve_issues_list_page(page_number) begin Nokogiri::HTML(URI.open(ISSUES_URL + '&page=' + page_number.to_s)) rescue OpenURI::HTTPError puts CONNECTION_ERROR_MSG exit end end def store_changelog_items(page_trs) page_trs.each do |tr| cat = tr.css('td.category').text unless @changelog_items.keys.include?(cat) @changelog_items.store(cat, []) end issue_hash = { 'id' => tr.css('td.id > a').text.to_i, 'tracker' => tr.css('td.tracker').text, 'subject' => tr.css('td.subject> a').text.strip } @changelog_items[cat].push(issue_hash) end end # Sort the changelog items hash def sort_changelog_items # Sort changelog items hash values; first by tracker, then by id @changelog_items.each do |key, value| @changelog_items[key] = value.sort_by{ |a| [a['tracker'], a['id']] } end # Sort changelog items hash keys; by category @changelog_items = @changelog_items.sort end def version_name @v_name.empty? ? (@version_name || parse_version_name) : @v_name end def parse_version_name version_details = retrieve_version_details @version_name = version_details.css(VERSION_NAME_SELECTOR).text end def release_date @r_date.empty? ? (@release_date || Date.today.strftime("%Y-%m-%d")) : @r_date end def retrieve_version_details begin Nokogiri::HTML(URI.open(VERSIONS_URL)).css(VERSION_DETAILS_SELECTOR) rescue OpenURI::HTTPError puts CONNECTION_ERROR_MSG exit end end def new_branch? @new_branch.nil? ? parse_new_branch : @new_branch end def parse_new_branch @version_name =~ VERSION_REGEX version = Array.new([$1, $2, $3]) case @n_branch when 'auto' # New branch version detection logic: # # [x.x.0] => true # [x.x.>0] => false # [x.x] => true # [x] => true # if (version[2] != nil && version[2] == '0') || (version[2] == nil && version[1] != nil) || (version[2] == nil && version[1] == nil && version[0] != nil) new_branch = true end when 'true' new_branch = true when 'false' new_branch = false end @new_branch = new_branch end # Build and write the changelog file def build_output(items, no_of_issues, v_name, r_date, n_branch, target) target = target output_filename = v_name + '_changelog_for_' + target + '.txt' out_file = File.new(output_filename, 'w') # Categories counter c_cnt = 0 # Issues with category counter i_cnt = 0 # Issues without category counter nc_i_cnt = 0 if target == 'packaged_file' out_file << "== #{r_date} v#{v_name}\n\n" elsif target == 'website' out_file << "h1. Changelog #{v_name}\n\n" if n_branch == true out_file << "h2. version:#{v_name} (#{r_date})\n\n" end # Print the categories... items.each do |key, values| key = key.empty? ? '-none-' : key if target == 'packaged_file' out_file << "=== [#{key}]\n" elsif target == 'website' out_file << "h3. [#{key}]\n" end out_file << "\n" (c_cnt += 1) unless key == '-none-' # ...and their associated issues values.each do |val| out_file << "* #{val['tracker']} ##{val['id']}: #{val['subject']}\n" key == '-none-' ? (nc_i_cnt += 1) : (i_cnt += 1) end out_file << "\n" end summary(v_name, target, i_cnt, nc_i_cnt, no_of_issues, c_cnt) out_file.close end def summary(v_name, target, i_cnt, nc_i_cnt, no_of_issues, c_cnt) summary = (('-' * 72) + "\n") summary << "Generation of the #{v_name} changelog for '#{target}' has " + "#{result_label(i_cnt, nc_i_cnt, no_of_issues)}:\n" summary << "* #{i_cnt} #{issue_label(i_cnt)} within #{c_cnt} issue " + "#{category_label(c_cnt)}\n" if nc_i_cnt > 0 summary << "* #{nc_i_cnt} #{issue_label(nc_i_cnt)} without issue category\n" end puts summary return summary end def result_label(i_cnt, nc_i_cnt, no_of_issues) result = i_cnt + nc_i_cnt == no_of_issues ? 'succeeded' : 'failed' result.upcase end def issue_label(count) count > 1 ? 'issues' : 'issue' end def category_label(count) count > 1 ? 'categories' : 'category' end end end end Redmine::ChangelogGenerator.generate redmine-6.0.5/bin/rails000077500000000000000000000002221500112024600147400ustar00rootroot00000000000000#!/usr/bin/env ruby APP_PATH = File.expand_path('../../config/application', __FILE__) require_relative '../config/boot' require 'rails/commands' redmine-6.0.5/bin/rake000077500000000000000000000001321500112024600145500ustar00rootroot00000000000000#!/usr/bin/env ruby require_relative '../config/boot' require 'rake' Rake.application.run redmine-6.0.5/config.ru000066400000000000000000000002011500112024600147420ustar00rootroot00000000000000# This file is used by Rack-based servers to start the application. require_relative 'config/environment' run Rails.application redmine-6.0.5/config/000077500000000000000000000000001500112024600144015ustar00rootroot00000000000000redmine-6.0.5/config/additional_environment.rb.example000066400000000000000000000010111500112024600231050ustar00rootroot00000000000000# Copy this file to additional_environment.rb and add any statements # that need to be passed to the Rails::Initializer. `config` is # available in this context. # # Examples: # # config.log_level = :debug # # # Force access via SSL connection and set the "secure" flag on cookies # config.force_ssl = true if Rails.env.production? # # # Use the Inline adapter for Active Job when you don't want to # # set up external systems like Sidekiq and Redis. # config.active_job.queue_adapter = :inline # # ... # redmine-6.0.5/config/application.rb000066400000000000000000000103511500112024600172310ustar00rootroot00000000000000# frozen_string_literal: true require File.expand_path('../boot', __FILE__) require 'rails' # Pick the frameworks you want: require 'active_model/railtie' require 'active_job/railtie' require 'active_record/railtie' # require 'active_storage/engine' require 'action_controller/railtie' require 'action_mailer/railtie' require 'action_view/railtie' require 'action_cable/engine' # require 'sprockets/railtie' require 'rails/test_unit/railtie' Bundler.require(*Rails.groups) module RedmineApp class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. # Adds `lib` to `config.autoload_paths` and `config.eager_load_paths`. config.autoload_lib(ignore: %w(tasks generators plugins)) # Only load the plugins named here, in the order given (default is alphabetical). # :all can be used as a placeholder for all plugins not explicitly named. # config.plugins = [ :exception_notification, :ssl_requirement, :all ] config.active_support.remove_deprecated_time_with_zone_name = true config.active_support.cache_format_version = 7.0 config.active_record.store_full_sti_class = true config.active_record.default_timezone = :local config.active_record.yaml_column_permitted_classes = [ Date, Time, Symbol, ActiveSupport::HashWithIndifferentAccess, ActionController::Parameters ] config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob" # Stop appending "utf8=✓" to form URLs config.action_view.default_enforce_utf8 = false # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] # config.i18n.default_locale = :de config.i18n.enforce_available_locales = true config.i18n.fallbacks = true config.i18n.default_locale = 'en' # Configure the default encoding used in templates for Ruby 1.9. config.encoding = "utf-8" # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] config.action_mailer.perform_deliveries = false # Do not include all helpers config.action_controller.include_all_helpers = false # Add forgery protection config.action_controller.default_protect_from_forgery = true # Sets the Content-Length header on responses with fixed-length bodies config.middleware.insert_before Rack::Sendfile, Rack::ContentLength # Verify validity of user sessions config.redmine_verify_sessions = true # Specific cache for search results, the default file store cache is not # a good option as it could grow fast. A memory store (32MB max) is used # as the default. If you're running multiple server processes, it's # recommended to switch to a shared cache store (eg. mem_cache_store). # See http://guides.rubyonrails.org/caching_with_rails.html#cache-stores # for more options (same options as config.cache_store). config.redmine_search_cache_store = :memory_store # Sets default plugin directory config.redmine_plugins_directory = 'plugins' # Paths for plugin and theme assets. Nothing is set here, as the actual # configuration is performed in the initializer. config.assets.redmine_extension_paths = [] # Configure log level here so that additional environment file # can change it (environments/ENV.rb would take precedence over it) config.log_level = Rails.env.production? ? :info : :debug config.session_store( :cookie_store, :key => '_redmine_session', :path => config.relative_url_root || '/', :same_site => :lax ) if File.exist?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) end end end redmine-6.0.5/config/boot.rb000066400000000000000000000003111500112024600156640ustar00rootroot00000000000000# frozen_string_literal: true # Set up gems listed in the Gemfile. ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) redmine-6.0.5/config/configuration.yml.example000066400000000000000000000210621500112024600214260ustar00rootroot00000000000000# = Redmine configuration file # # Each environment has its own configuration options. If you are only # running in production, only the production block needs to be configured. # Environment specific configuration options override the default ones. # # Note that this file needs to be a valid YAML file. # DO NOT USE TABS! Use 2 spaces instead of tabs for indentation. # default configuration options for all environments default: # Outgoing emails configuration # See the examples below and the Rails guide for more configuration options: # http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration email_delivery: # ==== Simple SMTP server at localhost # # email_delivery: # delivery_method: :smtp # smtp_settings: # address: "localhost" # port: 25 # # ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com # # email_delivery: # delivery_method: :smtp # smtp_settings: # address: "example.com" # port: 25 # authentication: :login # domain: 'foo.com' # user_name: 'myaccount' # password: 'password' # # ==== SMTP server at example.com using PLAIN authentication # # email_delivery: # delivery_method: :smtp # smtp_settings: # address: "example.com" # port: 25 # authentication: :plain # domain: 'example.com' # user_name: 'myaccount' # password: 'password' # # ==== SMTP server at using TLS (GMail) # This might require some additional configuration. See the guides at: # http://www.redmine.org/projects/redmine/wiki/EmailConfiguration # # email_delivery: # delivery_method: :smtp # smtp_settings: # enable_starttls_auto: true # address: "smtp.gmail.com" # port: 587 # domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps # authentication: :plain # user_name: "your_email@gmail.com" # password: "your_password" # # ==== Sendmail command # # email_delivery: # delivery_method: :sendmail # Absolute path to the directory where attachments are stored. # The default is the 'files' directory in your Redmine instance. # Your Redmine instance needs to have write permission on this # directory. # Examples: # attachments_storage_path: /var/redmine/files # attachments_storage_path: D:/redmine/files attachments_storage_path: # Configuration of the autologin cookie. # autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_path: the cookie path (default: /) # autologin_cookie_secure: true sets the cookie secure flag (default: false) autologin_cookie_name: autologin_cookie_path: autologin_cookie_secure: # Configuration of SCM executable command. # # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) # On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. # # On Windows + JRuby 1.6.2, path which contains spaces does not work. # For example, "C:\Program Files\TortoiseHg\hg.exe". # If you want to this feature, you need to install to the path which does not contains spaces. # For example, "C:\TortoiseHg\hg.exe". # # Examples: # scm_subversion_command: svn # (default: svn) # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) # scm_git_command: /usr/local/bin/git # (default: git) # scm_cvs_command: cvs # (default: cvs) # scm_bazaar_command: bzr.exe # (default: bzr) # scm_subversion_command: scm_mercurial_command: scm_git_command: scm_cvs_command: scm_bazaar_command: # SCM paths validation. # # You can configure a regular expression for each SCM that will be used to # validate the path of new repositories (eg. path entered by users with the # "Manage repositories" permission and path returned by reposman.rb). # The regexp will be wrapped with \A \z, so it must match the whole path. # And the regexp is case sensitive. # # You can match the project identifier by using %project% in the regexp. # # You can also set a custom hint message for each SCM that will be displayed # on the repository form instead of the default one. # # Examples: # scm_subversion_path_regexp: file:///svnpath/[a-z0-9_]+ # scm_subversion_path_info: SVN URL (eg. file:///svnpath/foo) # # scm_git_path_regexp: /gitpath/%project%(\.[a-z0-9_])?/ # scm_subversion_path_regexp: scm_mercurial_path_regexp: scm_git_path_regexp: scm_cvs_path_regexp: scm_bazaar_path_regexp: scm_filesystem_path_regexp: # Absolute path to the SCM commands errors (stderr) log file. # The default is to log in the 'log' directory of your Redmine instance. # Example: # scm_stderr_log_file: /var/log/redmine_scm_stderr.log scm_stderr_log_file: # Key used to encrypt sensitive data in the database (SCM passwords, # LDAP passwords, and TOTP (two-factor authentication) secret keys). # If you don't want to enable data encryption, just leave it blank. # WARNING: losing/changing this key will make encrypted data unreadable. # # If you want to encrypt existing data in your database: # * set the cipher key here in your configuration file # * encrypt data using 'rake db:encrypt RAILS_ENV=production' # # If you have encrypted data and want to change this key, you have to: # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first # * change the cipher key here in your configuration file # * encrypt data using 'rake db:encrypt RAILS_ENV=production' database_cipher_key: # Your secret key for verifying cookie session data integrity. If you # change this key, all old sessions will become invalid! Make sure the # secret is at least 30 characters and all random, no regular words or # you'll be exposed to dictionary attacks. # # If you have a load-balancing Redmine cluster, you have to use the # same secret token on each machine. #secret_token: 'change it to a long random string' # Requires users to re-enter their password for sensitive actions (editing # of account data, project memberships, application settings, user, group, # role, auth source management and project deletion). Disabled by default. # Timeout is set in minutes. # #sudo_mode: true #sudo_mode_timeout: 15 # Absolute path (e.g. /usr/bin/convert, c:/im/convert.exe) to # the ImageMagick's `convert` binary. Used to generate attachment thumbnails. #imagemagick_convert_command: # Absolute path (e.g. /usr/bin/gs, c:/ghostscript/gswin64c.exe) to # the `gs` binary. Used to generate attachment thumbnails of PDF files. #gs_command: # Timeout when generating thumbnails using the `convert` or `gs` command. # Timeout is set in seconds. #thumbnails_generation_timeout: 10 # Configuration of MiniMagick font. # # Redmine uses MiniMagick in order to export a gantt chart to a PNG image. # This setting is necessary to properly display CJK (Chinese, Japanese, # and Korean) characters in the PNG image. Please make sure that the # specified font is installed in the Redmine server. # # This setting is necessary only when CJK characters are used in gantt. # # Note that rmagick_font_path in prior to Redmine 4.1.0 has been renamed # to minimagick_font_path. # # Examples for Japanese: # Windows: # minimagick_font_path: C:\windows\fonts\msgothic.ttc # Linux: # minimagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf # minimagick_font_path: # Maximum number of simultaneous AJAX uploads #max_concurrent_ajax_uploads: 2 # URL of the avatar server # # By default, Redmine uses Gravatar as the avatar server for displaying # user icons. You can switch to another Gravatar-compatible server such # as Libravatar and opensource servers listed on # https://wiki.libravatar.org/running_your_own/ # # URL of each avatar is: #{avatar_server_url}/avatar/#{hash} # #avatar_server_url: https://www.gravatar.com # default #avatar_server_url: https://seccdn.libravatar.org # Configure CommonMark hardbreaks behaviour # # allowed values: true, false # true: treats regular line break (\n) as hardbreaks # false: switches to default common mark where two or more spaces are required # common_mark_enable_hardbreaks: true # specific configuration options for production environment # that overrides the default ones production: # specific configuration options for development environment # that overrides the default ones development: redmine-6.0.5/config/database.yml.example000066400000000000000000000033341500112024600203250ustar00rootroot00000000000000# Default setup is given for MySQL 5.7.7 or later. # Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end. # Line indentation must be 2 spaces (no tabs). production: adapter: mysql2 database: redmine host: localhost username: root password: "" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4 variables: # Recommended `transaction_isolation` for MySQL to avoid concurrency issues is # `READ-COMMITTED`. # In case of MySQL lower than 8, the variable name is `tx_isolation`. # See https://www.redmine.org/projects/redmine/wiki/MySQL_configuration transaction_isolation: "READ-COMMITTED" development: adapter: mysql2 database: redmine_development host: localhost username: root password: "" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4 variables: transaction_isolation: "READ-COMMITTED" # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: mysql2 database: redmine_test host: localhost username: root password: "" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4 variables: transaction_isolation: "READ-COMMITTED" # PostgreSQL configuration example #production: # adapter: postgresql # database: redmine # host: localhost # username: postgres # password: "postgres" # SQLite3 configuration example #production: # adapter: sqlite3 # database: db/redmine.sqlite3 # SQL Server configuration example #production: # adapter: sqlserver # database: redmine # host: localhost # username: jenkins # password: jenkins redmine-6.0.5/config/environment.rb000066400000000000000000000011511500112024600172700ustar00rootroot00000000000000# frozen_string_literal: true # Load the Rails application require File.expand_path('../application', __FILE__) # Make sure there's no plugin in vendor/plugin before starting vendor_plugins_dir = File.join(Rails.root, "vendor", "plugins") if Dir.glob(File.join(vendor_plugins_dir, "*")).any? $stderr.puts "Plugins in vendor/plugins (#{vendor_plugins_dir}) are no longer allowed. " \ "Please, put your Redmine plugins in the `plugins` directory at the root of your " \ "Redmine directory (#{File.join(Rails.root, "plugins")})" exit 1 end # Initialize the Rails application Rails.application.initialize! redmine-6.0.5/config/environments/000077500000000000000000000000001500112024600171305ustar00rootroot00000000000000redmine-6.0.5/config/environments/development.rb000066400000000000000000000043251500112024600220030ustar00rootroot00000000000000# frozen_string_literal: true require 'active_support/core_ext/integer/time' Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # In the development environment your application's code is reloaded any time # it changes. This slows down response time but is perfect for development # since you don't have to restart the web server when you make code changes. config.enable_reloading = true # Do not eager load code on boot. config.eager_load = false # Show full error reports. config.consider_all_requests_local = true # Enable/disable caching. By default caching is disabled. # Run rails dev:cache to toggle caching. if Rails.root.join('tmp', 'caching-dev.txt').exist? config.action_controller.perform_caching = true config.action_controller.enable_fragment_cache_logging = true config.cache_store = :memory_store config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{2.days.to_i}" } else config.action_controller.perform_caching = false config.cache_store = :null_store end # Print deprecation notices to the Rails logger. config.active_support.deprecation = [:stderr, :log] # Raise exceptions for disallowed deprecations. config.active_support.disallowed_deprecation = :raise # Tell Active Support which deprecation messages to disallow. config.active_support.disallowed_deprecation_warnings = [] # Raise an error on page load if there are pending migrations. config.active_record.migration_error = :page_load # Highlight code that triggered database queries in logs. config.active_record.verbose_query_logs = true # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true # Annotate rendered view with file names. config.action_view.annotate_rendered_view_with_filenames = true # Use an evented file watcher to asynchronously detect changes in source code, # routes, locales, etc. This feature depends on the listen gem. config.file_watcher = ActiveSupport::EventedFileUpdateChecker # Uncomment if you wish to allow Action Cable access from any origin. # config.action_cable.disable_request_forgery_protection = true end redmine-6.0.5/config/environments/production.rb000066400000000000000000000102151500112024600216420ustar00rootroot00000000000000# frozen_string_literal: true require 'active_support/core_ext/integer/time' Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. # Code is not reloaded between requests. config.enable_reloading = false # Eager load code on boot. This eager loads most of Rails and # your application in memory, allowing both threaded web servers # and those relying on copy on write to perform better. # Rake tasks automatically ignore this option for performance. config.eager_load = true # Full error reports are disabled and caching is turned on. config.consider_all_requests_local = false config.action_controller.perform_caching = true # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). # config.require_master_key = true # Disable serving static files from the `/public` folder by default since # Apache or NGINX already handles this. # config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? # Enable serving of images, stylesheets, and JavaScripts from an asset server. # config.asset_host = 'http://assets.example.com' # Specifies the header that your server uses for sending files. # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. # config.force_ssl = true # Prepend all log lines with the following tags. config.log_tags = [:request_id] # Use a different cache store in production. # config.cache_store = :mem_cache_store # Send deprecation notices to registered listeners. config.active_support.deprecation = :log # Log disallowed deprecations. config.active_support.disallowed_deprecation = :log # Tell Active Support which deprecation messages to disallow. config.active_support.disallowed_deprecation_warnings = [] # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new # Use a different logger for distributed setups. # require "syslog/logger" # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') if ENV["RAILS_LOG_TO_STDOUT"].present? logger = ActiveSupport::Logger.new(STDOUT) logger.formatter = config.log_formatter config.logger = ActiveSupport::TaggedLogging.new(logger) end # Do not dump schema after migrations. # config.active_record.dump_schema_after_migration = false # Inserts middleware to perform automatic connection switching. # The `database_selector` hash is used to pass options to the DatabaseSelector # middleware. The `delay` is used to determine how long to wait after a write # to send a subsequent read to the primary. # # The `database_resolver` class is used by the middleware to determine which # database is appropriate to use based on the time delay. # # The `database_resolver_context` class is used by the middleware to set # timestamps for the last write to the primary. The resolver uses the context # class timestamps to determine how long to wait before reading from the # replica. # # By default Rails will store a last write timestamp in the session. The # DatabaseSelector middleware is designed as such you can define your own # strategy for connection switching and pass that into the middleware through # these configuration options. # config.active_record.database_selector = { delay: 2.seconds } # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session # Disable delivery errors config.action_mailer.raise_delivery_errors = false # No email in production log config.action_mailer.logger = nil # Automatically execute asset precompilation on startup in case of changes have been detected in assets config.assets.redmine_detect_update = true end redmine-6.0.5/config/environments/test.rb000066400000000000000000000057141500112024600204430ustar00rootroot00000000000000# frozen_string_literal: true require 'active_support/core_ext/integer/time' # The test environment is used exclusively to run your application's # test suite. You never need to work with it otherwise. Remember that # your test database is "scratch space" for the test suite and is wiped # and recreated between test runs. Don't rely on the data there! Rails.application.configure do # Settings specified here will take precedence over those in config/application.rb. config.enable_reloading = false # config.action_view.cache_template_loading = true # Do not eager load code on boot. This avoids loading your whole application # just for the purpose of running a single test. If you are using a tool that # preloads Rails for running tests, you may have to set it to true. config.eager_load = false # Change default plugins dir if env variable is present # This is used by redmine plugins autoload test. if ENV["REDMINE_PLUGINS_DIRECTORY"].present? config.redmine_plugins_directory = ENV["REDMINE_PLUGINS_DIRECTORY"] end # Configure public file server for tests with Cache-Control for performance. config.public_file_server.enabled = true config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{1.hour.to_i}" } # Show full error reports and disable caching. config.consider_all_requests_local = true config.action_controller.perform_caching = false config.cache_store = :null_store # Raise exceptions instead of rendering exception templates. config.action_dispatch.show_exceptions = :all # Disable request forgery protection in test environment. config.action_controller.allow_forgery_protection = false # Disable sessions verifications in test environment. config.redmine_verify_sessions = false # Store uploaded files on the local file system in a temporary directory. # config.active_storage.service = :test config.action_mailer.perform_caching = false config.action_mailer.perform_deliveries = true # Tell Action Mailer not to deliver emails to the real world. # The :test delivery method accumulates sent emails in the # ActionMailer::Base.deliveries array. config.action_mailer.delivery_method = :test # Disable Async delivery config.active_job.queue_adapter = :inline # Print deprecation notices to the stderr. config.active_support.deprecation = [:stderr, :log] # Raise exceptions for disallowed deprecations. config.active_support.disallowed_deprecation = :raise # Tell Active Support which deprecation messages to disallow. config.active_support.disallowed_deprecation_warnings = [] config.active_support.test_order = :random # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true # Annotate rendered view with file names. # config.action_view.annotate_rendered_view_with_filenames = true config.secret_key_base = 'a secret token for running the tests' config.active_support.assertionless_tests_behavior = :raise end redmine-6.0.5/config/environments/test_pgsql.rb000066400000000000000000000001671500112024600216460ustar00rootroot00000000000000# frozen_string_literal: true # Same as test.rb instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb')) redmine-6.0.5/config/environments/test_sqlite3.rb000066400000000000000000000001671500112024600221040ustar00rootroot00000000000000# frozen_string_literal: true # Same as test.rb instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb')) redmine-6.0.5/config/icon_source.yml000066400000000000000000000104701500112024600174360ustar00rootroot00000000000000# Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # This file is used by icons rake task to download SVG icons from Tabler # Keys description: # - name: destination icon name # svg: source icon name from Github repository # style: outline (default) or filled - name: edit svg: pencil - name: add svg: circle-plus - name: copy svg: copy - name: del svg: trash - name: save svg: device-floppy - name: download svg: download - name: attachment svg: paperclip - name: time-add svg: clock-plus - name: time svg: clock - name: fav svg: star - name: copy-link svg: clipboard-copy - name: 3-bullets svg: dots - name: history svg: history - name: folder svg: folder - name: folder-open svg: folder-open - name: lock svg: lock - name: unlock svg: lock-open - name: link-break svg: link-off - name: zoom-in svg: zoom-in - name: zoom-out svg: zoom-out - name: settings svg: settings - name: news svg: news - name: user svg: user - name: group svg: users-group - name: bookmarked svg: bookmark - name: bookmark-delete svg: bookmark-off - name: bookmark-add svg: bookmark-plus - name: import svg: database-export - name: summary svg: bolt - name: angle-down svg: chevron-down - name: angle-right svg: chevron-right - name: angle-up svg: chevron-up - name: angle-left svg: chevron-left - name: email svg: mail - name: email-disabled svg: mail-off - name: stats svg: chart-bar - name: reorder svg: menu-order - name: close svg: square-x - name: checked svg: check - name: reload svg: refresh - name: link svg: link - name: plugins svg: puzzle - name: roles svg: shield-cog - name: list svg: list - name: workflows svg: jump-rope - name: server-authentication svg: server - name: table-multiple svg: refresh - name: projects svg: packages - name: project svg: packages - name: package svg: package - name: custom-fields svg: input-check - name: help svg: info-circle - name: changeset svg: code - name: clear-query svg: square-x - name: warning svg: alert-triangle - name: comments svg: message - name: comment svg: message - name: message svg: message - name: reply svg: messages - name: arrow-right svg: arrow-big-right - name: wiki-page svg: notebook - name: bullet-end svg: circle-arrow-left - name: bullet-go svg: circle-arrow-right - name: bullet-go-end svg: diamonds - name: move svg: arrow-forward-up - name: cancel svg: arrow-back-up - name: document svg: file-text - name: issue svg: note - name: issue-closed svg: square-check - name: issue-edit svg: edit - name: issue-note svg: message-plus - name: file svg: file - name: text-plain svg: file-text - name: text-x-c svg: file-code - name: text-x-csharp svg: brand-c-sharp - name: text-x-java svg: file-code - name: text-x-php svg: file-type-php - name: text-x-ruby svg: file-code - name: text-xml svg: file-type-xml - name: text-css svg: file-type-css - name: text-html svg: file-type-html - name: image-gif svg: file - name: image-jpeg svg: file-type-jpg - name: image-png svg: file-type-png - name: image-tiff svg: file - name: application-javascript svg: file-type-js - name: application-pdf svg: file-type-pdf - name: application-zip svg: file-type-zip - name: application-gzip svg: file-zip - name: chevrons-right svg: chevrons-right - name: chevrons-left svg: chevrons-left - name: key svg: key - name: search svg: search - name: toggle-plus svg: square-rounded-plus - name: toggle-minus svg: square-rounded-minus - name: circle-minus svg: circle-minus - name: circle-dot-filled svg: circle-dot style: filled redmine-6.0.5/config/initializers/000077500000000000000000000000001500112024600171075ustar00rootroot00000000000000redmine-6.0.5/config/initializers/00-core_plugins.rb000066400000000000000000000005621500112024600223450ustar00rootroot00000000000000# frozen_string_literal: true # Loads the core plugins located in lib/plugins Dir.glob(Rails.root.join('lib/plugins/*')).each do |directory| next unless File.directory?(directory) initializer = File.join(directory, 'init.rb') if File.file?(initializer) config = RedmineApp::Application.config eval(File.read(initializer), binding, initializer) end end redmine-6.0.5/config/initializers/10-patches.rb000066400000000000000000000076451500112024600213150ustar00rootroot00000000000000# frozen_string_literal: true module ActiveRecord # Undefines private Kernel#open method to allow using `open` scopes in models. # See Defect #11545 (http://www.redmine.org/issues/11545) for details. class Base class << self undef open end end class Relation ; undef open ; end end module ActionView module Helpers module DateHelper # distance_of_time_in_words breaks when difference is greater than 30 years def distance_of_date_in_words(from_date, to_date = 0, options = {}) from_date = from_date.to_date if from_date.respond_to?(:to_date) to_date = to_date.to_date if to_date.respond_to?(:to_date) distance_in_days = (to_date - from_date).abs I18n.with_options :locale => options[:locale], :scope => :'datetime.distance_in_words' do |locale| case distance_in_days when 0..60 then locale.t :x_days, :count => distance_in_days.round when 61..720 then locale.t :about_x_months, :count => (distance_in_days / 30).round else locale.t :over_x_years, :count => (distance_in_days / 365).floor end end end end end end ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| html_tag || ''.html_safe } module ActionView module Helpers module FormHelper alias :date_field_without_max :date_field def date_field(object_name, method, options = {}) date_field_without_max(object_name, method, options.reverse_merge(max: '9999-12-31')) end end module FormTagHelper alias :date_field_tag_without_max :date_field_tag def date_field_tag(name, value = nil, options = {}) date_field_tag_without_max(name, value, options.reverse_merge(max: '9999-12-31')) end end end end require 'mail' module DeliveryMethods class TmpFile def initialize(*args); end def deliver!(mail) dest_dir = File.join(Rails.root, 'tmp', 'emails') Dir.mkdir(dest_dir) unless File.directory?(dest_dir) filename = "#{Time.now.to_i}_#{mail.message_id.gsub(/[<>]/, '')}.eml" File.binwrite(File.join(dest_dir, filename), mail.encoded) end end end ActionMailer::Base.add_delivery_method :tmp_file, DeliveryMethods::TmpFile module ActionController module MimeResponds class Collector def api(&) any(:xml, :json, &) end end end end module ActionController class Base # Displays an explicit message instead of a NoMethodError exception # when trying to start Redmine with an old session_store.rb # TODO: remove it in a later version def self.session=(*args) $stderr.puts "Please remove config/initializers/session_store.rb and run `rake generate_secret_token`.\n" + "Setting the session secret with ActionController.session= is no longer supported." exit 1 end end end module ActionView LookupContext.prepend(Module.new do def formats=(values) if Array(values).intersect?([:xml, :json]) values << :api end super end end) end module ActionController Base.prepend(Module.new do def rendered_format if lookup_context.formats.first == :api return request.format end super end end) end Mime::SET << 'api' module Propshaft Assembly.prepend(Module.new do def initialize(config) super if Rails.application.config.assets.redmine_detect_update && (!config.manifest_path.exist? || manifest_outdated?) processor.process end end def manifest_outdated? !!load_path.asset_files.detect{|f| f.mtime > config.manifest_path.mtime} end def load_path @load_path ||= Redmine::AssetLoadPath.new(config, compilers) end end) Helper.prepend(Module.new do def compute_asset_path(path, options = {}) super rescue MissingAssetError => e File.join Rails.application.assets.resolver.prefix, path end end) end redmine-6.0.5/config/initializers/20-mime_types.rb000066400000000000000000000001221500112024600220210ustar00rootroot00000000000000# frozen_string_literal: true # Add new mime types for use in respond_to blocks: redmine-6.0.5/config/initializers/30-redmine.rb000066400000000000000000000027661500112024600213120ustar00rootroot00000000000000# frozen_string_literal: true require 'redmine/configuration' require 'redmine/plugin_loader' Rails.application.config.to_prepare do I18n.backend = Redmine::I18n::Backend.new # Forces I18n to load available locales from the backend I18n.config.available_locales = nil # Use Nokogiri as XML backend instead of Rexml ActiveSupport::XmlMini.backend = 'Nokogiri' Redmine::Preparation.prepare end # Load the secret token from the Redmine configuration file secret = Redmine::Configuration['secret_token'] if secret.present? RedmineApp::Application.config.secret_token = secret end Redmine::PluginLoader.load Rails.application.config.to_prepare do default_paths = [] default_paths << Rails.root.join("app/assets/javascripts") default_paths << Rails.root.join("app/assets/images") default_paths << Rails.root.join("app/assets/stylesheets") Rails.application.config.assets.redmine_default_asset_path = Redmine::AssetPath.new(Rails.root.join('app/assets'), default_paths) Redmine::FieldFormat::RecordList.subclasses.each do |klass| klass.instance.reset_target_class end Redmine::Plugin.all.each do |plugin| paths = plugin.asset_paths Rails.application.config.assets.redmine_extension_paths << paths if paths.present? end Redmine::Themes.themes.each do |theme| paths = theme.asset_paths Rails.application.config.assets.redmine_extension_paths << paths if paths.present? end end Rails.application.deprecators[:redmine] = ActiveSupport::Deprecation.new('7.0', 'Redmine') redmine-6.0.5/config/initializers/backtrace_silencers.rb000066400000000000000000000011351500112024600234220ustar00rootroot00000000000000# frozen_string_literal: true # Be sure to restart your server when you modify this file. # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } # You can also remove all the silencers if you're trying do debug a problem that might steem from framework code. # Rails.backtrace_cleaner.remove_silencers! # Do not remove plugins backtrace Rails.backtrace_cleaner.remove_silencers! Rails.backtrace_cleaner.add_silencer { |line| line !~ /^\/?(app|config|lib|plugins|test)/ } redmine-6.0.5/config/initializers/inflections.rb000066400000000000000000000006271500112024600217560ustar00rootroot00000000000000# frozen_string_literal: true # Be sure to restart your server when you modify this file. # Add new inflection rules using the following format # (all these examples are active by default): # ActiveSupport::Inflector.inflections do |inflect| # inflect.plural /^(ox)$/i, '\1en' # inflect.singular /^(ox)en/i, '\1' # inflect.irregular 'person', 'people' # inflect.uncountable %w( fish sheep ) # end redmine-6.0.5/config/initializers/zeitwerk.rb000066400000000000000000000011511500112024600212760ustar00rootroot00000000000000# frozen_string_literal: true lib = Rails.root.join('lib/redmine') IGNORE_LIST = [ 'wiki_formatting/textile/redcloth3.rb', 'core_ext.rb', 'core_ext' ] class RedmineInflector < Zeitwerk::Inflector def camelize(basename, abspath) abspath.match?('redmine\/version.rb\z') ? 'VERSION' : super end end Rails.autoloaders.each do |loader| loader.inflector = RedmineInflector.new loader.inflector.inflect( 'html' => 'HTML', 'csv' => 'CSV', 'pdf' => 'PDF', 'url' => 'URL', 'pop3' => 'POP3', 'imap' => 'IMAP' ) IGNORE_LIST.each do |mod| loader.ignore lib.join(mod) end end redmine-6.0.5/config/locales/000077500000000000000000000000001500112024600160235ustar00rootroot00000000000000redmine-6.0.5/config/locales/ar.yml000066400000000000000000002362161500112024600171620ustar00rootroot00000000000000ar: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: rtl date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y" day_names: [الاحد, الاثنين, الثلاثاء, الاربعاء, الخميس, الجمعة, السبت] abbr_day_names: [أح, اث, Ø«, ار, Ø®, ج, س] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, كانون الثاني, شباط, آذار, نيسان, أيار, حزيران, تموز, آب, أيلول, تشرين الأول, تشرين الثاني, كانون الأول] abbr_month_names: [~, كانون الثاني, شباط, آذار, نيسان, أيار, حزيران, تموز, آب, أيلول, تشرين الأول, تشرين الثاني, كانون الأول] # Used in date_select and datime_select. order: - :السنة - :الشهر - :اليوم time: formats: default: "%m/%d/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "صباحا" pm: "مساءاً" datetime: distance_in_words: half_a_minute: "نص٠دقيقة" less_than_x_seconds: one: "أقل من ثانية" other: "ثواني %{count}أقل من " x_seconds: one: "ثانية" other: "%{count}ثواني " less_than_x_minutes: one: "أقل من دقيقة" other: "دقائق%{count}أقل من " x_minutes: one: "دقيقة" other: "%{count} دقائق" about_x_hours: one: "حوالي ساعة" other: "ساعات %{count}حوالي " x_hours: one: "%{count} ساعة" other: "%{count} ساعات" x_days: one: "يوم" other: "%{count} أيام" about_x_months: one: "حوالي شهر" other: "أشهر %{count} حوالي" x_months: one: "شهر" other: "%{count} أشهر" about_x_years: one: "حوالي سنة" other: "سنوات %{count}حوالي " over_x_years: one: "اكثر من سنة" other: "سنوات %{count}أكثر من " almost_x_years: one: "تقريبا سنة" other: "سنوات %{count} نقريبا" number: format: separator: "." delimiter: "," precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "Ùˆ" skip_last_comma: false activerecord: errors: template: header: one: " %{model} خطأ يمنع تخزين" other: " %{model} يمنع تخزين%{count}خطأ رقم " messages: inclusion: "غير مدرجة على القائمة" exclusion: "محجوز" invalid: "غير صالح" confirmation: "غير متطابق" accepted: "مقبولة" empty: "لا يمكن ان تكون ÙØ§Ø±ØºØ©" blank: "لا يمكن ان تكون ÙØ§Ø±ØºØ©" too_long: " %{count} طويلة جدا، الحد الاقصى هو " too_short: " %{count} قصيرة جدا، الحد الادنى هو " wrong_length: " %{count} خطأ ÙÙŠ الطول، يجب ان يكون " taken: "لقد اتخذت سابقا" not_a_number: "ليس رقما" not_a_date: "ليس تاريخا صالحا" greater_than: "%{count}يجب ان تكون اكثر من " greater_than_or_equal_to: "%{count} يجب ان تكون اكثر من او تساوي" equal_to: "%{count}يجب ان تساوي" less_than: " %{count}يجب ان تكون اقل من" less_than_or_equal_to: " %{count} يجب ان تكون اقل من او تساوي" odd: "must be odd" even: "must be even" greater_than_start_date: "يجب ان تكون اكثر من تاريخ البداية" not_same_project: "لا ينتمي الى Ù†ÙØ³ المشروع" circular_dependency: "هذه العلاقة سو٠تخلق علاقة تبعية دائرية" cant_link_an_issue_with_a_descendant: "لا يمكن ان تكون المشكلة مرتبطة بواحدة من المهام Ø§Ù„ÙØ±Ø¹ÙŠØ©" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: الرجاء التحديد general_text_No: 'لا' general_text_Yes: 'نعم' general_text_no: 'لا' general_text_yes: 'نعم' general_lang_name: 'Arabic (عربي)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: DejaVuSans general_pdf_monospaced_fontname: DejaVuSansMono general_first_day_of_week: '7' notice_account_updated: لقد تم تجديد الحساب بنجاح. notice_account_invalid_credentials: اسم المستخدم او كلمة المرور غير صحيحة notice_account_password_updated: لقد تم تجديد كلمة المرور بنجاح. notice_account_wrong_password: كلمة المرور غير صحيحة notice_account_register_done: لقد تم انشاء حسابك بنجاح، الرجاء تأكيد الطلب من البريد الالكتروني notice_can_t_change_password: هذا الحساب يستخدم جهاز خارجي غير مصرح به لا يمكن تغير كلمة المرور notice_account_lost_email_sent: لقد تم ارسال رسالة على بريدك بالتعليمات اللازمة لتغير كلمة المرور notice_account_activated: لقد تم ØªÙØ¹ÙŠÙ„ حسابك، يمكنك الدخول الان notice_successful_create: لقد تم الانشاء بنجاح notice_successful_update: لقد تم التحديث بنجاح notice_successful_delete: لقد تم الحذ٠بنجاح notice_successful_connection: لقد تم الربط بنجاح notice_file_not_found: Ø§Ù„ØµÙØ­Ø© التي تحاول الدخول اليها غير موجوده او تم حذÙها notice_locking_conflict: تم تحديث البيانات عن طريق مستخدم آخر. notice_not_authorized: غير مصرح لك الدخول الى هذه المنطقة. notice_not_authorized_archived_project: المشروع الذي تحاول الدخول اليه تم Ø§Ø±Ø´ÙØªÙ‡ notice_email_sent: "%{value}تم ارسال رسالة الى " notice_email_error: " (%{value})لقد حدث خطأ ما اثناء ارسال الرسالة الى " notice_feeds_access_key_reseted: كلمة الدخول Atomلقد تم تعديل . notice_api_access_key_reseted: كلمة الدخولAPIلقد تم تعديل . notice_failed_to_save_issues: "ÙØ´Ù„ ÙÙŠ Ø­ÙØ¸ الملÙ" notice_failed_to_save_members: "ÙØ´Ù„ ÙÙŠ Ø­ÙØ¸ الاعضاء: %{errors}." notice_account_pending: "لقد تم انشاء حسابك، الرجاء الانتظار حتى تتم المواÙقة" notice_default_data_loaded: تم تحميل التكوين Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ Ø¨Ù†Ø¬Ø§Ø­ notice_unable_delete_version: غير قادر على مسح النسخة. notice_unable_delete_time_entry: غير قادر على مسح وقت الدخول. notice_issue_done_ratios_updated: لقد تم تحديث النسب. notice_gantt_chart_truncated: " (%{max})لقد تم اقتطاع الرسم البياني لانه تجاوز الاحد الاقصى لعدد العناصر المسموح عرضها " notice_issue_successful_create: "%{id}لقد تم انشاء " error_can_t_load_default_data: "لم يتم تحميل التكوين Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ ÙƒØ§Ù…Ù„Ø§ %{value}" error_scm_not_found: "لم يتم العثور على ادخال ÙÙŠ المستودع" error_scm_command_failed: "حدث خطأ عند محاولة الوصول الى المستودع: %{value}" error_scm_annotate: "الادخال غير موجود." error_scm_annotate_big_text_file: "لا يمكن Ø­ÙØ¸ الادخال لانه تجاوز الحد الاقصى لحجم الملÙ." error_issue_not_found_in_project: 'لم يتم العثور على المخرج او انه ينتمي الى مشروع اخر' error_no_tracker_in_project: 'لا يوجد انواع بنود عمل لهذا المشروع، الرجاء التحقق من إعدادات المشروع. ' error_no_default_issue_status: 'لم يتم التعر٠على اي وضع Ø§ÙØªØ±Ø§Ø¶ÙŠØŒ الرجاء التحقق من التكوين الخاص بك (اذهب الى إدارة-إصدار الحالات)' error_can_not_delete_custom_field: غير قادر على حذ٠الحقل المظلل error_can_not_delete_tracker_html: "هذا النوع من بنود العمل يحتوي على بنود نشطة ولا يمكن حذÙÙ‡

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "هذا الدور قيد الاستخدام، لا يمكن حذÙÙ‡" error_can_not_reopen_issue_on_closed_version: 'لا يمكن إعادة ÙØªØ­ بند عمل معين لاصدار مقÙÙ„' error_can_not_archive_project: لا يمكن Ø§Ø±Ø´ÙØ© هذا المشروع error_issue_done_ratios_not_updated: "لم يتم تحديث النسب" error_workflow_copy_source: 'الرجاء اختيار نوع بند العمل او الادوار' error_workflow_copy_target: 'الرجاء اختيار نوع بند العمل المستهد٠او الادوار Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ©' error_unable_delete_issue_status: 'غير قادر على حذ٠حالة بند العمل (%{value})' error_unable_to_connect: "تعذر الاتصال(%{value})" error_attachment_too_big: " (%{max_size})لا يمكن تحميل هذا Ø§Ù„Ù…Ù„ÙØŒ لقد تجاوز الحد الاقصى المسموح به " warning_attachments_not_saved: "%{count}تعذر Ø­ÙØ¸ الملÙ" mail_subject_lost_password: " %{value}كلمة المرور الخاصة بك " mail_body_lost_password: 'لتغير كلمة المرور، انقر على الروابط التالية:' mail_subject_register: " %{value}ØªÙØ¹ÙŠÙ„ حسابك " mail_body_register: 'Ù„ØªÙØ¹ÙŠÙ„ حسابك، انقر على الروابط التالية:' mail_body_account_information_external: " %{value}اصبح بامكانك استخدام حسابك للدخول" mail_body_account_information: معلومات حسابك mail_subject_account_activation_request: "%{value}طلب ØªÙØ¹ÙŠÙ„ الحساب " mail_body_account_activation_request: " (%{value})تم تسجيل حساب جديد، بانتظار المواÙقة:" mail_subject_reminder: "%{count}تم تأجيل المهام التالية " mail_body_reminder: "%{count}يجب ان تقوم بتسليم المهام التالية:" mail_subject_wiki_content_added: "'%{id}' تم Ø§Ø¶Ø§ÙØ© ØµÙØ­Ø© ويكي" mail_body_wiki_content_added: "The '%{id}' تم Ø§Ø¶Ø§ÙØ© ØµÙØ­Ø© ويكي من قبل %{author}." mail_subject_wiki_content_updated: "'%{id}' تم تحديث ØµÙØ­Ø© ويكي" mail_body_wiki_content_updated: "The '%{id}'تم تحديث ØµÙØ­Ø© ويكي من قبل %{author}." field_name: الاسم field_description: الوص٠field_summary: الملخص field_is_required: مطلوب field_firstname: الاسم الاول field_lastname: الاسم الاخير field_mail: البريد الالكتروني field_filename: اسم المل٠field_filesize: حجم المل٠field_downloads: التنزيل field_author: المؤل٠field_created_on: تم الانشاء ÙÙŠ field_updated_on: تم التحديث field_field_format: تنسيق الحقل field_is_for_all: لكل المشروعات field_possible_values: قيم محتملة field_regexp: التعبير العادي field_min_length: الحد الادنى للطول field_max_length: الحد الاعلى للطول field_value: القيمة field_category: Ø§Ù„ÙØ¦Ø© field_title: العنوان field_project: المشروع field_issue: بند العمل field_status: الحالة field_notes: ملاحظات field_is_closed: بند العمل مغلق field_is_default: القيمة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© field_tracker: نوع بند العمل field_subject: الموضوع field_due_date: تاريخ النهاية field_assigned_to: المحال اليه field_priority: الأولوية field_fixed_version: الاصدار المستهد٠field_user: المستخدم field_principal: User or Group field_role: دور field_homepage: Ø§Ù„ØµÙØ­Ø© الرئيسية field_is_public: عام field_parent: مشروع ÙØ±Ø¹ÙŠ Ù…Ù† field_is_in_roadmap: معروض ÙÙŠ خارطة الطريق field_login: تسجيل الدخول field_mail_notification: ملاحظات على البريد الالكتروني field_admin: المدير field_last_login_on: اخر اتصال field_language: لغة field_effective_date: تاريخ field_password: كلمة المرور field_new_password: كلمة المرور الجديدة field_password_confirmation: تأكيد field_version: إصدار field_type: نوع field_host: المضي٠field_port: Ø§Ù„Ù…Ù†ÙØ° field_account: الحساب field_base_dn: DN قاعدة field_attr_login: سمة الدخول field_attr_firstname: سمة الاسم الاول field_attr_lastname: سمة الاسم الاخير field_attr_mail: سمة البريد الالكتروني field_onthefly: إنشاء حساب مستخدم على تحرك field_start_date: تاريخ البداية field_done_ratio: "نسبة الانجاز" field_auth_source: وضع المصادقة field_hide_mail: Ø¥Ø®ÙØ§Ø¡ بريدي الإلكتروني field_comments: تعليق field_url: رابط field_start_page: ØµÙØ­Ø© البداية field_subproject: المشروع Ø§Ù„ÙØ±Ø¹ÙŠ field_hours: ساعات field_activity: النشاط field_spent_on: تاريخ field_identifier: المعر٠field_is_filter: استخدم كتصÙية field_issue_to: بنود العمل المتصلة field_delay: تأخير field_assignable: يمكن اسناد بنود العمل الى هذا الدور field_redirect_existing_links: إعادة توجيه الروابط الموجودة field_estimated_hours: الوقت المتوقع field_column_names: أعمدة field_time_entries: وقت الدخول field_time_zone: المنطقة الزمنية field_searchable: يمكن البحث Ùيه field_default_value: القيمة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© field_comments_sorting: اعرض التعليقات field_parent_title: ØµÙØ­Ø© الوالدين field_editable: يمكن اعادة تحريره field_watcher: مراقب field_content: المحتويات field_group_by: تصني٠النتائج بواسطة field_sharing: مشاركة field_parent_issue: بند العمل الأصلي field_member_of_group: "مجموعة المحال" field_assigned_to_role: "دور المحال" field_text: حقل نصي field_visible: غير مرئي field_warn_on_leaving_unsaved: "الرجاء التحذير عند مغادرة ØµÙØ­Ø© والنص غير محÙوظ" field_issues_visibility: بنود العمل المرئية field_is_private: خاص field_commit_logs_encoding: رسائل الترميز field_scm_path_encoding: ترميز المسار field_path_to_repository: مسار المستودع field_root_directory: دليل الجذر field_cvsroot: CVSجذر field_cvs_module: وحدة setting_app_title: عنوان التطبيق setting_welcome_text: نص الترحيب setting_default_language: اللغة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© setting_login_required: مطلوب المصادقة setting_self_registration: التسجيل الذاتي setting_attachment_max_size: الحد الاقصى Ù„Ù„Ù…Ù„ÙØ§Øª المرÙقة setting_issues_export_limit: الحد الاقصى لتصدير بنود العمل Ù„Ù…Ù„ÙØ§Øª خارجية setting_mail_from: انبعاثات عنوان بريدك setting_plain_text_mail: نص عادي (no HTML) setting_host_name: اسم ومسار المستخدم setting_text_formatting: تنسيق النص setting_wiki_compression: ضغط تاريخ الويكي setting_feeds_limit: Atom feeds الحد الاقصى لعدد البنود ÙÙŠ setting_default_projects_public: المشاريع الجديده متاحة للجميع Ø§ÙØªØ±Ø§Ø¶ÙŠØ§ setting_autofetch_changesets: الإحضار التلقائي setting_sys_api_enabled: من ادارة المستودع WS تمكين setting_commit_ref_keywords: مرجعية الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠØ© setting_commit_fix_keywords: تصحيح الكلمات Ø§Ù„Ù…ÙØªØ§Ø­ÙŠØ© setting_autologin: الدخول التلقائي setting_date_format: تنسيق التاريخ setting_time_format: تنسيق الوقت setting_cross_project_issue_relations: السماح بإدراج بنود العمل ÙÙŠ هذا المشروع setting_issue_list_default_columns: الاعمدة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© المعروضة ÙÙŠ قائمة بند العمل setting_repositories_encodings: ترميز المرÙقات والمستودعات setting_emails_header: رأس رسائل البريد الإلكتروني setting_emails_footer: ذيل رسائل البريد الإلكتروني setting_protocol: بروتوكول setting_per_page_options: الكائنات لكل خيارات Ø§Ù„ØµÙØ­Ø© setting_user_format: تنسيق عرض المستخدم setting_activity_days_default: الايام المعروضة على نشاط المشروع setting_display_subprojects_issues: عرض بنود العمل للمشارع الرئيسية بشكل Ø§ÙØªØ±Ø§Ø¶ÙŠ setting_enabled_scm: SCM تمكين setting_mail_handler_body_delimiters: "اقتطاع رسائل البريد الإلكتروني بعد هذه الخطوط" setting_mail_handler_api_enabled: للرسائل الواردةWS تمكين setting_mail_handler_api_key: API Ù…ÙØªØ§Ø­ setting_sequential_project_identifiers: انشاء Ù…Ø¹Ø±ÙØ§Øª المشروع المتسلسلة setting_gravatar_enabled: كأيقونة مستخدمGravatar استخدام setting_gravatar_default: Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ©Gravatar صورة setting_diff_max_lines_displayed: الحد الاقصى لعدد الخطوط setting_file_max_size_displayed: الحد الأقصى لحجم النص المعروض على Ø§Ù„Ù…Ù„ÙØ§Øª المرÙقة setting_repository_log_display_limit: الحد الاقصى لعدد التنقيحات المعروضة على مل٠السجل setting_password_min_length: الحد الادني لطول كلمة المرور setting_new_project_user_role_id: الدور المسند الى المستخدم غير المسؤول الذي يقوم بإنشاء المشروع setting_default_projects_modules: تمكين الوحدات النمطية للمشاريع الجديدة بشكل Ø§ÙØªØ±Ø§Ø¶ÙŠ setting_issue_done_ratio: حساب نسبة بند العمل المنتهية setting_issue_done_ratio_issue_field: استخدم حقل بند العمل setting_issue_done_ratio_issue_status: استخدم وضع بند العمل setting_start_of_week: بدأ التقويم setting_rest_api_enabled: تمكين باقي خدمات الويب setting_cache_formatted_text: النص المسبق تنسيقه ÙÙŠ ذاكرة التخزين المؤقت setting_default_notification_option: خيار الاعلام Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ setting_commit_logtime_enabled: تميكن وقت الدخول setting_commit_logtime_activity_id: النشاط ÙÙŠ وقت الدخول setting_gantt_items_limit: الحد الاقصى لعدد العناصر المعروضة على مخطط جانت setting_issue_group_assignment: السماح للإحالة الى المجموعات setting_default_issue_start_date_to_creation_date: استخدام التاريخ الحالي كتاريخ بدأ لبنود العمل الجديدة permission_add_project: إنشاء مشروع permission_add_subprojects: إنشاء مشاريع ÙØ±Ø¹ÙŠØ© permission_edit_project: تعديل مشروع permission_select_project_modules: تحديد شكل المشروع permission_manage_members: إدارة الاعضاء permission_manage_project_activities: ادارة اصدارات المشروع permission_manage_versions: ادارة الاصدارات permission_manage_categories: ادارة انواع بنود العمل permission_view_issues: عرض بنود العمل permission_add_issues: Ø§Ø¶Ø§ÙØ© بنود العمل permission_edit_issues: تعديل بنود العمل permission_manage_issue_relations: ادارة علاقات بنود العمل permission_set_issues_private: تعين بنود العمل عامة او خاصة permission_set_own_issues_private: تعين بنود العمل الخاصة بك كبنود عمل عامة او خاصة permission_add_issue_notes: Ø§Ø¶Ø§ÙØ© ملاحظات permission_edit_issue_notes: تعديل ملاحظات permission_edit_own_issue_notes: تعديل ملاحظاتك permission_delete_issues: حذ٠بنود العمل permission_manage_public_queries: ادارة الاستعلامات العامة permission_save_queries: Ø­ÙØ¸ الاستعلامات permission_view_gantt: عرض طريقة"جانت" permission_view_calendar: عرض التقويم permission_view_issue_watchers: عرض قائمة المراقبين permission_add_issue_watchers: Ø§Ø¶Ø§ÙØ© مراقبين permission_delete_issue_watchers: حذ٠مراقبين permission_log_time: الوقت المستغرق بالدخول permission_view_time_entries: عرض الوقت المستغرق permission_edit_time_entries: تعديل الدخولات الزمنية permission_edit_own_time_entries: تعديل الدخولات الشخصية permission_manage_news: ادارة الاخبار permission_comment_news: اخبار التعليقات permission_view_documents: عرض المستندات permission_manage_files: ادارة Ø§Ù„Ù…Ù„ÙØ§Øª permission_view_files: عرض Ø§Ù„Ù…Ù„ÙØ§Øª permission_manage_wiki: ادارة ويكي permission_rename_wiki_pages: اعادة تسمية ØµÙØ­Ø§Øª ويكي permission_delete_wiki_pages: حذق ØµÙØ­Ø§Øª ويكي permission_view_wiki_pages: عرض ويكي permission_view_wiki_edits: عرض تاريخ ويكي permission_edit_wiki_pages: تعديل ØµÙØ­Ø§Øª ويكي permission_delete_wiki_pages_attachments: حذ٠المرÙقات permission_protect_wiki_pages: حماية ØµÙØ­Ø§Øª ويكي permission_manage_repository: ادارة المستودعات permission_browse_repository: استعراض المستودعات permission_view_changesets: عرض طاقم التغيير permission_commit_access: الوصول permission_manage_boards: ادارة المنتديات permission_view_messages: عرض الرسائل permission_add_messages: نشر الرسائل permission_edit_messages: تحرير الرسائل permission_edit_own_messages: تحرير الرسائل الخاصة permission_delete_messages: حذ٠الرسائل permission_delete_own_messages: حذ٠الرسائل الخاصة permission_export_wiki_pages: تصدير ØµÙØ­Ø§Øª ويكي permission_manage_subtasks: ادارة المهام Ø§Ù„ÙØ±Ø¹ÙŠØ© project_module_issue_tracking: تعقب بنود العمل project_module_time_tracking: التعقب الزمني project_module_news: الاخبار project_module_documents: المستندات project_module_files: Ø§Ù„Ù…Ù„ÙØ§Øª project_module_wiki: ويكي project_module_repository: المستودع project_module_boards: المنتديات project_module_calendar: التقويم project_module_gantt: جانت label_user: المستخدم label_user_plural: المستخدمين label_user_new: مستخدم جديد label_user_anonymous: مجهول الهوية label_project: مشروع label_project_new: مشروع جديد label_project_plural: مشاريع label_x_projects: zero: لا يوجد مشاريع one: مشروع واحد other: "%{count} مشاريع" label_project_all: كل المشاريع label_project_latest: احدث المشاريع label_issue: بند عمل label_issue_new: بند عمل جديد label_issue_plural: بنود عمل label_issue_view_all: عرض كل بنود العمل label_issues_by: " %{value}بند العمل لصحابها" label_issue_added: تم Ø§Ø¶Ø§ÙØ© بند العمل label_issue_updated: تم تحديث بند العمل label_issue_note_added: تم Ø§Ø¶Ø§ÙØ© الملاحظة label_issue_status_updated: تم تحديث الحالة label_issue_priority_updated: تم تحديث الاولويات label_document: مستند label_document_new: مستند جديد label_document_plural: مستندات label_document_added: تم Ø§Ø¶Ø§ÙØ© مستند label_role: دور label_role_plural: ادوار label_role_new: دور جديد label_role_and_permissions: الأدوار والصلاحيات label_role_anonymous: مجهول الهوية label_role_non_member: ليس عضو label_member: عضو label_member_new: عضو جديد label_member_plural: اعضاء label_tracker: نوع بند عمل label_tracker_plural: أنواع بنود العمل label_tracker_new: نوع بند عمل جديد label_workflow: سير العمل label_issue_status: حالة بند العمل label_issue_status_plural: حالات بند العمل label_issue_status_new: حالة جديدة label_issue_category: ÙØ¦Ø© بند العمل label_issue_category_plural: ÙØ¦Ø§Øª بنود العمل label_issue_category_new: ÙØ¦Ø© جديدة label_custom_field: تخصيص حقل label_custom_field_plural: تخصيص حقول label_custom_field_new: حقل مخصص جديد label_enumerations: التعدادات label_enumeration_new: قيمة جديدة label_information: معلومة label_information_plural: معلومات label_register: تسجيل label_password_lost: Ùقدت كلمة السر label_home: "Ø§Ù„ØµÙØ­Ø© الرئيسية" label_my_page: Ø§Ù„ØµÙØ­Ø© الخاصة بي label_my_account: حسابي label_my_projects: مشاريعي الخاصة label_administration: إدارة النظام label_login: تسجيل الدخول label_logout: تسجيل الخروج label_help: مساعدة label_reported_issues: بنود العمل التي أدخلتها label_assigned_to_me_issues: بنود العمل المسندة إلي label_registered_on: مسجل على label_activity: النشاط label_user_activity: "قيمة النشاط" label_new: جديدة label_logged_as: تم تسجيل دخولك label_environment: البيئة label_authentication: المصادقة label_auth_source: وضع المصادقة label_auth_source_new: وضع مصادقة جديدة label_auth_source_plural: أوضاع المصادقة label_subproject_plural: مشاريع ÙØ±Ø¹ÙŠØ© label_subproject_new: مشروع ÙØ±Ø¹ÙŠ Ø¬Ø¯ÙŠØ¯ label_and_its_subprojects: "قيمة المشاريع Ø§Ù„ÙØ±Ø¹ÙŠØ© الخاصة بك" label_min_max_length: الحد الاقصى والادنى للطول label_list: قائمة label_date: تاريخ label_integer: عدد صحيح label_float: عدد كسري label_boolean: "نعم/لا" label_string: نص label_text: نص طويل label_attribute: سمة label_attribute_plural: السمات label_no_data: لا توجد بيانات للعرض label_change_status: تغيير الحالة label_history: التاريخ label_attachment: المل٠label_attachment_new: مل٠جديد label_attachment_delete: حذ٠المل٠label_attachment_plural: Ø§Ù„Ù…Ù„ÙØ§Øª label_file_added: المل٠المضا٠label_report: تقرير label_report_plural: التقارير label_news: الأخبار label_news_new: Ø¥Ø¶Ø§ÙØ© الأخبار label_news_plural: الأخبار label_news_latest: آخر الأخبار label_news_view_all: عرض كل الأخبار label_news_added: الأخبار Ø§Ù„Ù…Ø¶Ø§ÙØ© label_news_comment_added: Ø¥Ø¶Ø§ÙØ© التعليقات على أخبار label_settings: إعدادات label_overview: لمحة عامة label_version: الإصدار label_version_new: الإصدار الجديد label_version_plural: الإصدارات label_close_versions: أكملت إغلاق الإصدارات label_confirmation: تأكيد label_export_to: 'Ù…ØªÙˆÙØ±Ø© أيضا ÙÙŠ:' label_read: القراءة... label_public_projects: المشاريع العامة label_open_issues: Ù…ÙØªÙˆØ­ label_open_issues_plural: بنود عمل Ù…ÙØªÙˆØ­Ø© label_closed_issues: مغلق label_closed_issues_plural: بنود عمل مغلقة label_x_open_issues_abbr: zero: 0 Ù…ÙØªÙˆØ­ one: 1 مقتوح other: "%{count} Ù…ÙØªÙˆØ­" label_x_closed_issues_abbr: zero: 0 مغلق one: 1 مغلق other: "%{count} مغلق" label_total: الإجمالي label_permissions: صلاحيات label_current_status: الحالة الحالية label_new_statuses_allowed: يسمح بادراج حالات جديدة label_all: جميع label_none: لا شيء label_nobody: لا أحد label_next: القادم label_previous: السابق label_used_by: التي يستخدمها label_details: Ø§Ù„ØªÙØ§ØµÙŠÙ„ label_add_note: Ø¥Ø¶Ø§ÙØ© ملاحظة label_calendar: التقويم label_months_from: بعد أشهر من label_gantt: جانت label_internal: الداخلية label_last_changes: "آخر التغييرات %{count}" label_change_view_all: عرض ÙƒØ§ÙØ© التغييرات label_comment: تعليق label_comment_plural: تعليقات label_x_comments: zero: لا يوجد تعليقات one: تعليق واحد other: "%{count} تعليقات" label_comment_add: Ø¥Ø¶Ø§ÙØ© تعليق label_comment_added: تم Ø¥Ø¶Ø§ÙØ© التعليق label_comment_delete: حذ٠التعليقات label_query: استعلام مخصص label_query_plural: استعلامات مخصصة label_query_new: استعلام جديد label_my_queries: استعلاماتي المخصصة label_filter_add: Ø¥Ø¶Ø§ÙØ© عامل تصÙية label_filter_plural: عوامل التصÙية label_equals: يساوي label_not_equals: لا يساوي label_in_less_than: أقل من label_in_more_than: أكثر من label_greater_or_equal: '>=' label_less_or_equal: '< =' label_between: بين label_in: ÙÙŠ label_today: اليوم label_yesterday: بالأمس label_this_week: هذا الأسبوع label_last_week: الأسبوع الماضي label_last_n_days: "آخر %{count} أيام" label_this_month: هذا الشهر label_last_month: الشهر الماضي label_this_year: هذا العام label_date_range: نطاق التاريخ label_less_than_ago: أقل من عدد أيام label_more_than_ago: أكثر من عدد أيام label_ago: منذ أيام label_contains: يحتوي على label_not_contains: لا يحتوي على label_day_plural: أيام label_repository: المستودع label_repository_plural: المستودعات label_branch: ÙØ±Ø¹ label_tag: ربط label_revision: مراجعة label_revision_plural: تنقيحات label_revision_id: " %{value}مراجعة" label_associated_revisions: التنقيحات المرتبطة label_added: مضا٠label_modified: معدل label_copied: منسوخ label_renamed: إعادة تسمية label_deleted: محذو٠label_latest_revision: آخر تنقيح label_latest_revision_plural: أحدث المراجعات label_view_revisions: عرض التنقيحات label_view_all_revisions: عرض ÙƒØ§ÙØ© المراجعات label_max_size: الحد الأقصى للحجم label_roadmap: خارطة الطريق label_roadmap_due_in: " %{value}تستحق ÙÙŠ " label_roadmap_overdue: "%{value}تأخير" label_roadmap_no_issues: لا يوجد بنود عمل لهذا الإصدار label_search: البحث label_result_plural: النتائج label_all_words: كل الكلمات label_wiki: ويكي label_wiki_edit: تحرير ويكي label_wiki_edit_plural: عمليات تحرير ويكي label_wiki_page: ØµÙØ­Ø© ويكي label_wiki_page_plural: ويكي ØµÙØ­Ø§Øª label_index_by_title: الÙهرس حسب العنوان label_index_by_date: الÙهرس حسب التاريخ label_current_version: الإصدار الحالي label_preview: معاينة label_feed_plural: موجز ويب label_changes_details: ØªÙØ§ØµÙŠÙ„ جميع التغييرات label_issue_tracking: تعقب بنود العمل label_spent_time: ما تم Ø¥Ù†ÙØ§Ù‚Ù‡ من الوقت label_f_hour: "%{value} ساعة" label_f_hour_plural: "%{value} ساعات" label_time_tracking: تعقب الوقت label_change_plural: التغييرات label_statistics: إحصاءات label_commits_per_month: يثبت ÙÙŠ الشهر label_commits_per_author: يثبت لكل مؤل٠label_diff: Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øª label_view_diff: عرض Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øª label_diff_inline: مضمنة label_diff_side_by_side: جنبا إلى جنب label_options: خيارات label_copy_workflow_from: نسخ سير العمل من label_permissions_report: تقرير الصلاحيات label_watched_issues: بنود العمل المتابعة بريدياً label_related_issues: بنود العمل ذات الصلة label_applied_status: الحالة المطبقة label_loading: تحميل... label_relation_new: علاقة جديدة label_relation_delete: حذ٠العلاقة label_relates_to: ذات علاقة بـ label_duplicates: مكرر من label_duplicated_by: مكرر بواسطة label_blocks: يجب تنÙيذه قبل label_blocked_by: لا يمكن تنÙيذه إلا بعد label_precedes: يسبق label_follows: يتبع label_stay_logged_in: تسجيل الدخول ÙÙŠ label_disabled: تعطيل label_show_completed_versions: إظهار الإصدارات الكاملة label_me: لي label_board: المنتدى label_board_new: منتدى جديد label_board_plural: المنتديات label_board_locked: تأمين label_board_sticky: لزجة label_topic_plural: المواضيع label_message_plural: رسائل label_message_last: آخر رسالة label_message_new: رسالة جديدة label_message_posted: تم Ø§Ø¶Ø§ÙØ© الرسالة label_reply_plural: الردود label_send_information: إرسال معلومات الحساب للمستخدم label_year: سنة label_month: شهر label_week: أسبوع label_date_from: من label_date_to: إلى label_language_based: استناداً إلى لغة المستخدم label_sort_by: " %{value}الترتيب حسب " label_send_test_email: ارسل رسالة الكترونية كاختبار label_feeds_access_key: Atom Ù…ÙØªØ§Ø­ دخول label_missing_feeds_access_key: Ù…ÙقودAtom Ù…ÙØªØ§Ø­ دخول label_feeds_access_key_created_on: "Atom تم انشاء Ù…ÙØªØ§Ø­ %{value} منذ" label_module_plural: الوحدات النمطية label_added_time_by: " تم Ø§Ø¶Ø§ÙØªÙ‡ من قبل %{author} منذ %{age}" label_updated_time_by: " تم تحديثه من قبل %{author} منذ %{age}" label_updated_time: "تم التحديث منذ %{value}" label_jump_to_a_project: الانتقال إلى مشروع... label_file_plural: Ø§Ù„Ù…Ù„ÙØ§Øª label_changeset_plural: اعدادات التغير label_default_columns: الاعمدة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© label_no_change_option: (لا تغيير) label_bulk_edit_selected_issues: تحرير بنود العمل المظللة label_bulk_edit_selected_time_entries: تعديل بنود الأوقات المظللة label_theme: الموضوع label_default: Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ label_search_titles_only: البحث ÙÙŠ العناوين Ùقط label_user_mail_option_all: "جميع الخيارات" label_user_mail_option_selected: "الخيارات المظللة Ùقط" label_user_mail_option_none: "لم يتم تحديد اي خيارات" label_user_mail_option_only_my_events: "السماح لي Ùقط بمشاهدة الاحداث الخاصة" label_user_mail_no_self_notified: "لا تريد إعلامك بالتغيرات التي تجريها Ø¨Ù†ÙØ³Ùƒ" label_registration_activation_by_email: حساب التنشيط عبر البريد الإلكتروني label_registration_manual_activation: تنشيط الحساب اليدوي label_registration_automatic_activation: تنشيط الحساب التلقائي label_display_per_page: "لكل ØµÙØ­Ø©: %{value}" label_age: العمر label_change_properties: تغيير الخصائص label_general: عامة label_scm: scm label_plugins: Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª label_ldap_authentication: مصادقة LDAP label_downloads_abbr: تنزيل label_optional_description: وص٠اختياري label_add_another_file: Ø¥Ø¶Ø§ÙØ© مل٠آخر label_preferences: ØªÙØ¶ÙŠÙ„ات label_chronological_order: ÙÙŠ ترتيب زمني label_reverse_chronological_order: ÙÙŠ ترتيب زمني عكسي label_incoming_emails: رسائل البريد الإلكتروني الوارد label_generate_key: إنشاء Ù…ÙØªØ§Ø­ label_issue_watchers: المراقبون label_example: مثال label_display: العرض label_sort: ÙØ±Ø² label_ascending: تصاعدي label_descending: تنازلي label_date_from_to: من %{start} الى %{end} label_wiki_content_added: Ø¥Ø¶Ø§ÙØ© ØµÙØ­Ø© ويكي label_wiki_content_updated: تحديث ØµÙØ­Ø© ويكي label_group: مجموعة label_group_plural: المجموعات label_group_new: مجموعة جديدة label_time_entry_plural: الأوقات المنÙقة label_version_sharing_none: غير متاح label_version_sharing_descendants: متاح للمشاريع Ø§Ù„ÙØ±Ø¹ÙŠØ© label_version_sharing_hierarchy: متاح للتسلسل الهرمي للمشروع label_version_sharing_tree: مع شجرة المشروع label_version_sharing_system: مع جميع المشاريع label_update_issue_done_ratios: تحديث نسبة الأداء لبند العمل label_copy_source: المصدر label_copy_target: الهد٠label_copy_same_as_target: مطابق للهد٠label_display_used_statuses_only: عرض الحالات المستخدمة من قبل هذا النوع من بنود العمل Ùقط label_api_access_key: Ù…ÙØªØ§Ø­ الوصول إلى API label_missing_api_access_key: API لم يتم الحصول على Ù…ÙØªØ§Ø­ الوصول label_api_access_key_created_on: " API إنشاء Ù…ÙØªØ§Ø­ الوصول إلى" label_profile: المل٠الشخصي label_subtask_plural: المهام Ø§Ù„ÙØ±Ø¹ÙŠØ© label_project_copy_notifications: إرسال إشعار الى البريد الإلكتروني عند نسخ المشروع label_principal_search: "البحث عن مستخدم أو مجموعة:" label_user_search: "البحث عن المستخدم:" label_additional_workflow_transitions_for_author: الانتقالات الإضاÙية المسموح بها عند المستخدم صاحب البلاغ label_additional_workflow_transitions_for_assignee: الانتقالات الإضاÙية المسموح بها عند المستخدم المحال إليه label_issues_visibility_all: جميع بنود العمل label_issues_visibility_public: جميع بنود العمل الخاصة label_issues_visibility_own: بنود العمل التي أنشأها المستخدم label_git_report_last_commit: اعتماد التقرير الأخير Ù„Ù„Ù…Ù„ÙØ§Øª والدلائل label_parent_revision: الوالدين label_child_revision: الطÙÙ„ label_export_options: "%{export_format} خيارات التصدير" button_login: دخول button_submit: تثبيت button_save: Ø­ÙØ¸ button_check_all: تحديد الكل button_uncheck_all: عدم تحديد الكل button_collapse_all: تقليص الكل button_expand_all: عرض الكل button_delete: حذ٠button_create: إنشاء button_create_and_continue: إنشاء واستمرار button_test: اختبار button_edit: تعديل button_edit_associated_wikipage: "تغير ØµÙØ­Ø© ويكي: %{page_title}" button_add: Ø¥Ø¶Ø§ÙØ© button_change: تغيير button_apply: تطبيق button_clear: إخلاء الحقول button_lock: Ù‚ÙÙ„ button_unlock: الغاء القÙÙ„ button_download: تنزيل button_list: قائمة button_view: عرض button_move: تحرك button_move_and_follow: تحرك واتبع button_back: رجوع button_cancel: إلغاء button_activate: تنشيط button_sort: ترتيب button_log_time: وقت الدخول button_rollback: الرجوع الى هذا الاصدار button_watch: تابع عبر البريد button_unwatch: إلغاء المتابعة عبر البريد button_reply: رد button_archive: Ø£Ø±Ø´ÙØ© button_unarchive: إلغاء Ø§Ù„Ø£Ø±Ø´ÙØ© button_reset: إعادة button_rename: إعادة التسمية button_change_password: تغير كلمة المرور button_copy: نسخ button_copy_and_follow: نسخ واتباع button_annotate: تعليق button_update: تحديث button_configure: تكوين button_quote: اقتباس button_show: إظهار button_edit_section: تعديل هذا الجزء button_export: تصدير لمل٠status_active: نشيط status_registered: مسجل status_locked: مقÙÙ„ version_status_open: Ù…ÙØªÙˆØ­ version_status_locked: مقÙÙ„ version_status_closed: مغلق field_active: ÙØ¹Ø§Ù„ text_select_mail_notifications: حدد الامور التي يجب ابلاغك بها عن طريق البريد الالكتروني text_regexp_info: مثال. ^[A-Z0-9]+$ text_project_destroy_confirmation: هل أنت متأكد من أنك تريد حذ٠هذا المشروع والبيانات ذات الصلة؟ text_subprojects_destroy_warning: "المشاريع Ø§Ù„ÙØ±Ø¹ÙŠØ©: %{value} سيتم حذÙها أيضاً." text_workflow_edit: حدد دوراً Ùˆ نوع بند عمل لتحرير سير العمل text_are_you_sure: هل أنت متأكد؟ text_journal_changed: "%{label} تغير %{old} الى %{new}" text_journal_changed_no_detail: "%{label} تم التحديث" text_journal_set_to: "%{label} تغير الى %{value}" text_journal_deleted: "%{label} تم الحذ٠(%{old})" text_journal_added: "%{label} %{value} تم Ø§Ù„Ø§Ø¶Ø§ÙØ©" text_tip_issue_begin_day: بند عمل بدأ اليوم text_tip_issue_end_day: بند عمل انتهى اليوم text_tip_issue_begin_end_day: بند عمل بدأ وانتهى اليوم text_caracters_maximum: "%{count} الحد الاقصى." text_caracters_minimum: "الحد الادنى %{count}" text_length_between: "الطول %{min} بين %{max} رمز" text_tracker_no_workflow: لم يتم تحديد سير العمل لهذا النوع من بنود العمل text_unallowed_characters: رموز غير مسموحة text_comma_separated: مسموح رموز متنوعة ÙŠÙØµÙ„ها ÙØ§ØµÙ„Ø© . text_line_separated: مسموح رموز متنوعة ÙŠÙØµÙ„ها سطور text_issues_ref_in_commit_messages: الارتباط وتغيير حالة بنود العمل ÙÙŠ رسائل تحرير Ø§Ù„Ù…Ù„ÙØ§Øª text_issue_added: "بند العمل %{id} تم ابلاغها عن طريق %{author}." text_issue_updated: "بند العمل %{id} تم تحديثها عن طريق %{author}." text_wiki_destroy_confirmation: هل انت متأكد من رغبتك ÙÙŠ حذ٠هذا الويكي ومحتوياته؟ text_issue_category_destroy_question: "بعض بنود العمل (%{count}) مرتبطة بهذه Ø§Ù„ÙØ¦Ø©ØŒ ماذا تريد ان ØªÙØ¹Ù„ بها؟" text_issue_category_destroy_assignments: Ø­Ø°Ù Ø§Ù„ÙØ¦Ø© text_issue_category_reassign_to: اعادة تثبيت البنود ÙÙŠ Ø§Ù„ÙØ¦Ø© text_user_mail_option: "بالنسبة للمشاريع غير المحددة، سو٠يتم ابلاغك عن المشاريع التي تشاهدها او تشارك بها Ùقط!" text_no_configuration_data: "الادوار والمتتبع وحالات بند العمل ومخطط سير العمل لم يتم تحديد وضعها Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ Ø¨Ø¹Ø¯. " text_load_default_configuration: تحميل الاعدادات Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© text_status_changed_by_changeset: " طبق التغيرات المعينة على %{value}." text_time_logged_by_changeset: "تم تطبيق التغيرات المعينة على %{value}." text_issues_destroy_confirmation: هل انت متأكد من حذ٠البنود المظللة؟' text_issues_destroy_descendants_confirmation: "سو٠يؤدي هذا الى حذ٠%{count} المهام Ø§Ù„ÙØ±Ø¹ÙŠØ© ايضا." text_time_entries_destroy_confirmation: "هل انت متأكد من رغبتك ÙÙŠ حذ٠الادخالات الزمنية المحددة؟" text_select_project_modules: قم بتحديد الوضع المناسب لهذا المشروع:' text_default_administrator_account_changed: تم تعديل الاعدادات Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© لحساب المدير text_file_repository_writable: المرÙقات قابلة للكتابة text_plugin_assets_writable: الدليل المساعد قابل للكتابة text_destroy_time_entries_question: " ساعة على بند العمل التي تود حذÙها، ماذا تريد ان ØªÙØ¹Ù„ØŸ %{hours} تم تثبيت" text_destroy_time_entries: قم بحذ٠الساعات المسجلة text_assign_time_entries_to_project: ثبت الساعات المسجلة على التقرير text_reassign_time_entries: 'اعادة تثبيت الساعات المسجلة لبند العمل هذا:' text_user_wrote: "%{value} كتب:" text_user_wrote_in: "%{value} كتب (%{link}):" text_enumeration_destroy_question: "%{count} الكائنات المعنية لهذه القيمة" text_enumeration_category_reassign_to: اعادة تثبيت الكائنات التالية لهذه القيمة:' text_email_delivery_not_configured: "لم يتم تسليم البريد الالكتروني" text_diff_truncated: '... لقد تم اقتطاع هذا الجزء لانه تجاوز الحد الاقصى المسموح بعرضه' text_custom_field_possible_values_info: 'سطر لكل قيمة' text_wiki_page_nullify_children: "Ø§Ù„Ø§Ø­ØªÙØ§Ø¸ Ø¨ØµÙØ­Ø§Øª الابن ÙƒØµÙØ­Ø§Øª جذر" text_wiki_page_destroy_children: "Ø­Ø°Ù ØµÙØ­Ø§Øª الابن وجميع أولادهم" text_wiki_page_reassign_children: "إعادة تعيين ØµÙØ­Ø§Øª تابعة لهذه Ø§Ù„ØµÙØ­Ø© الأصلية" text_own_membership_delete_confirmation: "انت على وشك إزالة بعض أو ÙƒØ§ÙØ© الصلاحيات الخاصة بك، لن تكون قادراً على تحرير هذا المشروع بعد ذلك. هل أنت متأكد من أنك تريد المتابعة؟" text_zoom_in: تصغير text_zoom_out: تكبير text_warn_on_leaving_unsaved: "Ø§Ù„ØµÙØ­Ø© تحتوي على نص غير مخزن، سو٠يÙقد النص اذا تم الخروج من Ø§Ù„ØµÙØ­Ø©." text_scm_path_encoding_note: "Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠ: UTF-8" text_git_repository_note: مستودع ÙØ§Ø±Øº ومحلي text_mercurial_repository_note: مستودع محلي text_scm_command: امر text_scm_command_version: اصدار text_scm_config: الرجاء اعادة تشغيل التطبيق text_scm_command_not_available: الامر غير Ù…ØªÙˆÙØ±ØŒ الرجاء التحقق من لوحة التحكم default_role_manager: مدير default_role_developer: مطور default_role_reporter: مراسل default_tracker_bug: الشوائب default_tracker_feature: خاصية default_tracker_support: دعم default_issue_status_new: جديد default_issue_status_in_progress: جاري التحميل default_issue_status_resolved: الحل default_issue_status_feedback: التغذية الراجعة default_issue_status_closed: مغلق default_issue_status_rejected: مرÙوض default_doc_category_user: مستندات المستخدم default_doc_category_tech: المستندات التقنية default_priority_low: قليل default_priority_normal: عادي default_priority_high: عالي default_priority_urgent: طارئ default_priority_immediate: طارئ الآن default_activity_design: تصميم default_activity_development: تطوير enumeration_issue_priorities: الاولويات enumeration_doc_categories: تصني٠المستندات enumeration_activities: الانشطة enumeration_system_activity: نشاط النظام description_filter: Ùلترة description_search: حقل البحث description_choose_project: المشاريع description_project_scope: مجال البحث description_notes: ملاحظات description_message_content: محتويات الرسالة description_query_sort_criteria_attribute: نوع الترتيب description_query_sort_criteria_direction: اتجاه الترتيب description_user_mail_notification: إعدادات البريد الالكتروني description_available_columns: الاعمدة Ø§Ù„Ù…ØªÙˆÙØ±Ø© description_selected_columns: الاعمدة المحددة description_all_columns: كل الاعمدة description_issue_category_reassign: اختر التصني٠description_wiki_subpages_reassign: اختر ØµÙØ­Ø© جديدة text_minimagick_available: MiniMagick available (optional) text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do? text_repository_usernames_mapping: |- Select or update the Redmine user mapped to each username found in the repository log. Users with the same Redmine and repository username or email are automatically mapped. notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: لا يوجد بنود عمل one: بند عمل واحد other: "%{count} بنود عمل" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: منسوخ لـ label_copied_from: منسوخ من label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: جميع label_last_n_weeks: آخر %{count} أسبوع/أسابيع setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: متاح للمشاريع Ø§Ù„ÙØ±Ø¹ÙŠØ© label_cross_project_tree: متاح مع شجرة المشروع label_cross_project_hierarchy: متاح مع التسلسل الهرمي للمشروع label_cross_project_system: متاح مع جميع المشاريع button_hide: Ø¥Ø®ÙØ§Ø¡ setting_non_working_week_days: "أيام أجازة/راحة أسبوعية" label_in_the_next_days: ÙÙŠ الأيام المقبلة label_in_the_past_days: ÙÙŠ الأيام الماضية label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: الإجمالي notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please
    click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: البريد الالكتروني setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: الوقت الذي تم Ø§Ù†ÙØ§Ù‚Ù‡ كاملا notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API Ù…ÙØªØ§Ø­ setting_lost_password: Ùقدت كلمة السر mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: حذ٠العلاقة error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/az.yml000066400000000000000000002362031500112024600171660ustar00rootroot00000000000000# # Translated by Saadat Mutallimova # Data Processing Center of the Ministry of Communication and Information Technologies # az: direction: ltr date: formats: default: "%d.%m.%Y" short: "%d %b" long: "%d %B %Y" day_names: [bazar, bazar ertÉ™si, çərÅŸÉ™nbÉ™ axÅŸamı, çərÅŸÉ™nbÉ™, cümÉ™ axÅŸamı, cümÉ™, ÅŸÉ™nbÉ™] standalone_day_names: [Bazar, Bazar ertÉ™si, ÇərÅŸÉ™nbÉ™ axÅŸamı, ÇərÅŸÉ™nbÉ™, CümÉ™ axÅŸamı, CümÉ™, ŞənbÉ™] abbr_day_names: [B, Be, Ça, Ç, Ca, C, Åž] month_names: [~, yanvar, fevral, mart, aprel, may, iyun, iyul, avqust, sentyabr, oktyabr, noyabr, dekabr] # see russian gem for info on "standalone" day names standalone_month_names: [~, Yanvar, Fevral, Mart, Aprel, May, İyun, İyul, Avqust, Sentyabr, Oktyabr, Noyabr, Dekabr] abbr_month_names: [~, yan., fev., mart, apr., may, iyun, iyul, avq., sent., okt., noy., dek.] standalone_abbr_month_names: [~, yan., fev., mart, apr., may, iyun, iyul, avq., sent., okt., noy., dek.] order: - :day - :month - :year time: formats: default: "%a, %d %b %Y, %H:%M:%S %z" time: "%H:%M" short: "%d %b, %H:%M" long: "%d %B %Y, %H:%M" am: "sÉ™hÉ™r" pm: "axÅŸam" number: format: separator: "," delimiter: " " precision: 3 currency: format: format: "%n %u" unit: "man." separator: "." delimiter: " " precision: 2 percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] # Rails 2.3 storage_units: # Storage units output formatting. # %u is the storage unit, %n is the number (default: 2 MB) format: "%n %u" units: byte: one: "bayt" few: "bayt" many: "bayt" other: "bayt" kb: "KB" mb: "MB" gb: "GB" tb: "TB" datetime: distance_in_words: half_a_minute: "bir dÉ™qiqÉ™dÉ™n az" less_than_x_seconds: one: "%{count} saniyÉ™dÉ™n az" few: "%{count} saniyÉ™dÉ™n az" many: "%{count} saniyÉ™dÉ™n az" other: "%{count} saniyÉ™dÉ™n az" x_seconds: one: "%{count} saniyÉ™" few: "%{count} saniyÉ™" many: "%{count} saniyÉ™" other: "%{count} saniyÉ™" less_than_x_minutes: one: "%{count} dÉ™qiqÉ™dÉ™n az" few: "%{count} dÉ™qiqÉ™dÉ™n az" many: "%{count} dÉ™qiqÉ™dÉ™n az" other: "%{count} dÉ™qiqÉ™dÉ™n az" x_minutes: one: "%{count} dÉ™qiqÉ™" few: "%{count} dÉ™qiqÉ™" many: "%{count} dÉ™qiqÉ™" other: "%{count} dÉ™qiqÉ™" about_x_hours: one: "tÉ™xminÉ™n %{count} saat" few: "tÉ™xminÉ™n %{count} saat" many: "tÉ™xminÉ™n %{count} saat" other: "tÉ™xminÉ™n %{count} saat" x_hours: one: "1 saat" other: "%{count} saat" x_days: one: "%{count} gün" few: "%{count} gün" many: "%{count} gün" other: "%{count} gün" about_x_months: one: "tÉ™xminÉ™n %{count} ay" few: "tÉ™xminÉ™n %{count} ay" many: "tÉ™xminÉ™n %{count} ay" other: "tÉ™xminÉ™n %{count} ay" x_months: one: "%{count} ay" few: "%{count} ay" many: "%{count} ay" other: "%{count} ay" about_x_years: one: "tÉ™xminÉ™n %{count} il" few: "tÉ™xminÉ™n %{count} il" many: "tÉ™xminÉ™n %{count} il" other: "tÉ™xminÉ™n %{count} il" over_x_years: one: "%{count} ildÉ™n çox" few: "%{count} ildÉ™n çox" many: "%{count} ildÉ™n çox" other: "%{count} ildÉ™n çox" almost_x_years: one: "tÉ™xminÉ™n 1 il" few: "tÉ™xminÉ™n %{count} il" many: "tÉ™xminÉ™n %{count} il" other: "tÉ™xminÉ™n %{count} il" prompts: year: "İl" month: "Ay" day: "Gün" hour: "Saat" minute: "DÉ™qiqÉ™" second: "SaniyÉ™" activerecord: errors: template: header: one: "%{model}: %{count} sÉ™hvÉ™ görÉ™ yadda saxlamaq mümkün olmadı" few: "%{model}: %{count} sÉ™hvlÉ™rÉ™ görÉ™ yadda saxlamaq mümkün olmadı" many: "%{model}: %{count} sÉ™hvlÉ™rÉ™ görÉ™ yadda saxlamaq mümkün olmadı" other: "%{model}: %{count} sÉ™hvÉ™ görÉ™ yadda saxlamaq mümkün olmadı" body: "ProblemlÉ™r aÅŸağıdakı sahÉ™lÉ™rdÉ™ yarandı:" messages: inclusion: "nÉ™zÉ™rdÉ™ tutulmamış tÉ™yinata malikdir" exclusion: "ehtiyata götürülmÉ™miÅŸ tÉ™yinata malikdir" invalid: "düzgün tÉ™yinat deyildir" confirmation: "tÉ™sdiq ilÉ™ üst-üstÉ™ düşmür" accepted: "tÉ™sdiq etmÉ™k lazımdır" empty: "boÅŸ saxlanıla bilmÉ™z" blank: "boÅŸ saxlanıla bilmÉ™z" too_long: one: "çox böyük uzunluq (%{count} simvoldan çox ola bilmÉ™z)" few: "çox böyük uzunluq (%{count} simvoldan çox ola bilmÉ™z)" many: "çox böyük uzunluq (%{count} simvoldan çox ola bilmÉ™z)" other: "çox böyük uzunluq (%{count} simvoldan çox ola bilmÉ™z)" too_short: one: "uzunluq kifayÉ™t qÉ™dÉ™r deyildir (%{count} simvoldan az ola bilmÉ™z)" few: "uzunluq kifayÉ™t qÉ™dÉ™r deyildir (%{count} simvoldan az ola bilmÉ™z)" many: "uzunluq kifayÉ™t qÉ™dÉ™r deyildir (%{count} simvoldan az ola bilmÉ™z)" other: "uzunluq kifayÉ™t qÉ™dÉ™r deyildir (%{count} simvoldan az ola bilmÉ™z)" wrong_length: one: "düzgün olmayan uzunluq (tam %{count} simvol ola bilÉ™r)" few: "düzgün olmayan uzunluq (tam %{count} simvol ola bilÉ™r)" many: "düzgün olmayan uzunluq (tam %{count} simvol ola bilÉ™r)" other: "düzgün olmayan uzunluq (tam %{count} simvol ola bilÉ™r)" taken: "artıq mövcuddur" not_a_number: "say kimi hesab edilmir" greater_than: "%{count} çox tÉ™yinata malik ola bilÉ™r" greater_than_or_equal_to: "%{count} çox vÉ™ ya ona bÉ™rabÉ™r tÉ™yinata malik ola bilÉ™r" equal_to: "yalnız %{count} bÉ™rabÉ™r tÉ™yinata malik ola bilÉ™r" less_than: "%{count} az tÉ™yinata malik ola bilÉ™r" less_than_or_equal_to: "%{count} az vÉ™ ya ona bÉ™rabÉ™r tÉ™yinata malik ola bilÉ™r" odd: "yalnız tÉ™k tÉ™yinata malik ola bilÉ™r" even: "yalnız cüt tÉ™yinata malik ola bilÉ™r" greater_than_start_date: "baÅŸlanğıc tarixindÉ™n sonra olmalıdır" not_same_project: "tÉ™kcÉ™ bir layihÉ™yÉ™ aid deyildir" circular_dependency: "BelÉ™ É™laqÉ™ dövri asılılığa gÉ™tirib çıxaracaq" cant_link_an_issue_with_a_descendant: "Tapşırıq özünün alt tapşırığı ilÉ™ É™laqÉ™li ola bilmÉ™z" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" support: array: # Rails 2.2 sentence_connector: "vÉ™" skip_last_comma: true # Rails 2.3 words_connector: ", " two_words_connector: " vÉ™" last_word_connector: " vÉ™ " actionview_instancetag_blank_option: Seçim edin button_activate: AktivləşdirmÉ™k button_add: ÆlavÉ™ etmÉ™k button_annotate: Müəlliflik button_apply: TÉ™tbiq etmÉ™k button_archive: ArxivləşdirmÉ™k button_back: GeriyÉ™ button_cancel: İmtina button_change_password: Parolu dÉ™yiÅŸmÉ™k button_change: DÉ™yiÅŸmÉ™k button_check_all: Hamını qeyd etmÉ™k button_clear: TÉ™mizlÉ™mÉ™k button_configure: ParametlÉ™r button_copy: SürÉ™tini çıxarmaq button_create: Yaratmaq button_create_and_continue: Yaratmaq vÉ™ davam etmÉ™k button_delete: SilmÉ™k button_download: YüklÉ™mÉ™k button_edit: RedaktÉ™ etmÉ™k button_edit_associated_wikipage: "ÆlaqÉ™li wiki-sÉ™hifÉ™ni redaktÉ™ etmÉ™k: %{page_title}" button_list: Siyahı button_lock: Bloka salmaq button_login: GiriÅŸ button_log_time: SÉ™rf olunan vaxt button_move: Yerini dÉ™yiÅŸmÉ™k button_quote: Sitat gÉ™tirmÉ™k button_rename: Adını dÉ™yiÅŸmÉ™k button_reply: Cavablamaq button_reset: Sıfırlamaq button_rollback: Bu versiyaya qayıtmaq button_save: Yadda saxlamaq button_sort: ÇeÅŸidlÉ™mÉ™k button_submit: QÉ™bul etmÉ™k button_test: Yoxlamaq button_unarchive: ArxivdÉ™n çıxarmaq button_uncheck_all: TÉ™mizlÉ™mÉ™k button_unlock: Blokdan çıxarmaq button_unwatch: İzlÉ™mÉ™mÉ™k button_update: YenilÉ™mÉ™k button_view: Baxmaq button_watch: İzlÉ™mÉ™k default_activity_design: LayihÉ™nin hazırlanması default_activity_development: Hazırlanma prosesi default_doc_category_tech: Texniki sÉ™nÉ™dləşmÉ™ default_doc_category_user: İstifadəçi sÉ™nÉ™di default_issue_status_in_progress: İşlÉ™nmÉ™kdÉ™dir default_issue_status_closed: BaÄŸlanıb default_issue_status_feedback: Æks É™laqÉ™ default_issue_status_new: Yeni default_issue_status_rejected: RÉ™dd etmÉ™ default_issue_status_resolved: HÉ™ll edilib default_priority_high: YüksÉ™k default_priority_immediate: TÉ™xirsiz default_priority_low: AÅŸağı default_priority_normal: Normal default_priority_urgent: TÉ™cili default_role_developer: Hazırlayan default_role_manager: Menecer default_role_reporter: Reportyor default_tracker_bug: SÉ™hv default_tracker_feature: TÉ™kmilləşmÉ™ default_tracker_support: DÉ™stÉ™k enumeration_activities: HÉ™rÉ™kÉ™tlÉ™r (vaxtın uçotu) enumeration_doc_categories: SÉ™nÉ™dlÉ™rin kateqoriyası enumeration_issue_priorities: Tapşırıqların prioriteti error_can_not_remove_role: Bu rol istifadÉ™ edilir vÉ™ silinÉ™ bilmÉ™z. error_can_not_delete_custom_field: Sazlanmış sahÉ™ni silmÉ™k mümkün deyildir error_can_not_delete_tracker_html: Bu treker tapşırıqlardan ibarÉ™t olduÄŸu üçün silinÉ™ bilmÉ™z.

    The following projects have issues with this tracker:
    %{projects}

    error_can_t_load_default_data: "Susmaya görÉ™ konfiqurasiya yüklÉ™nmÉ™miÅŸdir: %{value}" error_issue_not_found_in_project: Tapşırıq tapılmamışdır vÉ™ ya bu layihÉ™yÉ™ bÉ™rkidilmÉ™miÅŸdir error_scm_annotate: "VerilÉ™nlÉ™r mövcud deyildir vÉ™ ya imzalana bilmÉ™z." error_scm_command_failed: "Saxlayıcıya giriÅŸ imkanı sÉ™hvi: %{value}" error_scm_not_found: Saxlayıcıda yazı vÉ™/ vÉ™ ya düzÉ™liÅŸ yoxdur. error_unable_to_connect: QoÅŸulmaq mümkün deyildir (%{value}) error_unable_delete_issue_status: Tapşırığın statusunu silmÉ™k mümkün deyildir (%{value}) field_account: İstifadəçi hesabı field_activity: FÉ™aliyyÉ™t field_admin: İnzibatçı field_assignable: Tapşırıq bu rola tÉ™yin edilÉ™ bilÉ™r field_assigned_to: TÉ™yin edilib field_attr_firstname: Ad field_attr_lastname: Soyad field_attr_login: Atribut Login field_attr_mail: e-poçt field_author: Müəllif field_auth_source: Autentifikasiya rejimi field_base_dn: BaseDN field_category: Kateqoriya field_column_names: Sütunlar field_comments: ŞərhlÉ™r field_comments_sorting: ŞərhlÉ™rin tÉ™sviri field_content: Content field_created_on: Yaradılıb field_default_value: Susmaya görÉ™ tÉ™yinat field_delay: TÉ™xirÉ™ salmaq field_description: TÉ™svir field_done_ratio: Hazırlıq field_downloads: YüklÉ™mÉ™lÉ™r field_due_date: YerinÉ™ yetirilmÉ™ tarixi field_editable: RedaktÉ™ edilÉ™n field_effective_date: Tarix field_estimated_hours: Vaxtın dÉ™yÉ™rlÉ™ndirilmÉ™si field_field_format: Format field_filename: Fayl field_filesize: Ölçü field_firstname: Ad field_fixed_version: Variant field_hide_mail: E-poçtumu gizlÉ™t field_homepage: BaÅŸlanğıc sÉ™hifÉ™ field_host: Kompyuter field_hours: saat field_identifier: Unikal identifikator field_is_closed: Tapşırıq baÄŸlanıb field_is_default: Susmaya görÉ™ tapşırıq field_is_filter: Filtr kimi istifadÉ™ edilir field_is_for_all: Bütün layihÉ™lÉ™r üçün field_is_in_roadmap: Operativ planda É™ks olunan tapşırıqlar field_is_public: Ümümaçıq field_is_required: MütlÉ™q field_issue_to: ÆlaqÉ™li tapşırıqlar field_issue: Tapşırıq field_language: Dil field_last_login_on: Son qoÅŸulma field_lastname: Soyad field_login: İstifadəçi field_mail: e-poçt field_mail_notification: e-poçt ilÉ™ bildiriÅŸ field_max_length: maksimal uzunluq field_min_length: minimal uzunluq field_name: Ad field_new_password: Yeni parol field_notes: Qeyd field_onthefly: Tez bir zamanda istifadəçinin yaradılması field_parent_title: Valideyn sÉ™hifÉ™ field_parent: Valideyn layihÉ™ field_parent_issue: Valideyn tapşırıq field_password_confirmation: TÉ™sdiq field_password: Parol field_port: Port field_possible_values: Mümkün olan tÉ™yinatlar field_priority: Prioritet field_project: LayihÉ™ field_redirect_existing_links: Mövcud olan istinadları istiqamÉ™tlÉ™ndirmÉ™k field_regexp: MüntÉ™zÉ™m ifadÉ™ field_role: Rol field_searchable: Axtarış üçün açıqdır field_spent_on: Tarix field_start_date: BaÅŸlanıb field_start_page: BaÅŸlanğıc sÉ™hifÉ™ field_status: Status field_subject: Mövzu field_subproject: AltlayihÉ™ field_summary: Qısa tÉ™svir field_text: MÉ™tn sahÉ™si field_time_entries: SÉ™rf olunan zaman field_time_zone: Saat qurÅŸağı field_title: BaÅŸlıq field_tracker: Treker field_type: Tip field_updated_on: YenilÉ™nib field_url: URL field_user: İstifadəçi field_value: TÉ™yinat field_version: Variant field_watcher: NÉ™zarÉ™tçi general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'Azerbaijani (Azeri)' general_text_no: 'xeyr' general_text_No: 'Xeyr' general_text_yes: 'bÉ™li' general_text_Yes: 'BÉ™li' label_activity: GörülÉ™n iÅŸlÉ™r label_add_another_file: Bir fayl daha É™lavÉ™ etmÉ™k label_added_time_by: "ÆlavÉ™ etdi %{author} %{age} É™vvÉ™l" label_added: É™lavÉ™ edilib label_add_note: Qeydi É™lavÉ™ etmÉ™k label_administration: İnzibatçılıq label_age: YaÅŸ label_ago: gün É™vvÉ™l label_all_words: Bütün sözlÉ™r label_all: hamı label_and_its_subprojects: "%{value} vÉ™ bütün altlayihÉ™lÉ™r" label_applied_status: TÉ™tbiq olunan status label_ascending: Artmaya görÉ™ label_assigned_to_me_issues: MÉ™nim tapşırıqlarım label_associated_revisions: ÆlaqÉ™li redaksiyalar label_attachment: Fayl label_attachment_delete: Faylı silmÉ™k label_attachment_new: Yeni fayl label_attachment_plural: Fayllar label_attribute: Atribut label_attribute_plural: Atributlar label_authentication: Autentifikasiya label_auth_source: Autentifikasiyanın rejimi label_auth_source_new: Autentifikasiyanın yeni rejimi label_auth_source_plural: Autentifikasiyanın rejimlÉ™ri label_blocked_by: bloklanır label_blocks: bloklayır label_board: Forum label_board_new: Yeni forum label_board_plural: Forumlar label_boolean: MÉ™ntiqi label_bulk_edit_selected_issues: SeçilÉ™n bütün tapşırıqları redaktÉ™ etmÉ™k label_calendar: TÉ™qvim label_change_plural: DÉ™yiÅŸikliklÉ™r label_change_properties: XassÉ™lÉ™ri dÉ™yiÅŸmÉ™k label_change_status: Statusu dÉ™yiÅŸmÉ™k label_change_view_all: Bütün dÉ™yiÅŸikliklÉ™rÉ™ baxmaq label_changes_details: Bütün dÉ™yiÅŸikliklÉ™rÉ™ görÉ™ tÉ™fsilatlar label_changeset_plural: DÉ™yiÅŸikliklÉ™r label_chronological_order: Xronoloji ardıcıllıq ilÉ™ label_closed_issues: BaÄŸlıdır label_closed_issues_plural: baÄŸlıdır label_closed_issues_plural2: baÄŸlıdır label_closed_issues_plural5: baÄŸlıdır label_comment: ÅŸÉ™rhlÉ™r label_comment_add: ŞərhlÉ™ri qeyd etmÉ™k label_comment_added: ÆlavÉ™ olunmuÅŸ ÅŸÉ™rhlÉ™r label_comment_delete: Şərhi silmÉ™k label_comment_plural: ŞərhlÉ™r label_comment_plural2: ŞərhlÉ™r label_comment_plural5: ÅŸÉ™rhlÉ™rin label_commits_per_author: İstifadəçi üzÉ™rindÉ™ dÉ™yiÅŸikliklÉ™r label_commits_per_month: Ay üzÉ™rindÉ™ dÉ™yiÅŸikliklÉ™r label_confirmation: TÉ™sdiq label_contains: tÉ™rkibi label_copied: surÉ™ti köçürülüb label_copy_workflow_from: görülÉ™n iÅŸlÉ™rin ardıcıllığının surÉ™tini köçürmÉ™k label_current_status: Cari status label_current_version: Cari variant label_custom_field: Sazlanan sahÉ™ label_custom_field_new: Yeni sazlanan sahÉ™ label_custom_field_plural: Sazlanan sahÉ™lÉ™r label_date_from: С label_date_from_to: С %{start} по %{end} label_date_range: vaxt intervalı label_date_to: üzrÉ™ label_date: Tarix label_day_plural: gün label_default: Susmaya görÉ™ label_default_columns: Susmaya görÉ™ sütunlar label_deleted: silinib label_descending: Azalmaya görÉ™ label_details: TÉ™fsilatlar label_diff_inline: mÉ™tndÉ™ label_diff_side_by_side: Yanaşı label_disabled: söndürülüb label_display: TÉ™svir label_display_per_page: "SÉ™hifÉ™yÉ™: %{value}" label_document: SÉ™nÉ™d label_document_added: SÉ™nÉ™d É™lavÉ™ edilib label_document_new: Yeni sÉ™nÉ™d label_document_plural: SÉ™nÉ™dlÉ™r label_downloads_abbr: YüklÉ™mÉ™lÉ™r label_duplicated_by: çoxaldılır label_duplicates: çoxaldır label_enumeration_new: Yeni qiymÉ™t label_enumerations: QiymÉ™tlÉ™rin siyahısı label_environment: Mühit label_equals: sayılır label_example: NümunÉ™ label_export_to: ixrac etmÉ™k label_feed_plural: Atom label_feeds_access_key_created_on: "Atom-É™ giriÅŸ açarı %{value} É™vvÉ™l yaradılıb" label_f_hour: "%{value} saat" label_f_hour_plural: "%{value} saat" label_file_added: Fayl É™lavÉ™ edilib label_file_plural: Fayllar label_filter_add: Filtr É™lavÉ™ etmÉ™k label_filter_plural: FiltrlÉ™r label_float: HÉ™qiqi É™dÉ™d label_follows: ÆvvÉ™lki label_gantt: Qant diaqramması label_general: Ümumi label_generate_key: Açarı generasiya etmÉ™k label_greater_or_equal: ">=" label_help: KömÉ™k label_history: Tarixçə label_home: Ana sÉ™hifÉ™ label_incoming_emails: MÉ™lumatların qÉ™bulu label_index_by_date: SÉ™hifÉ™lÉ™rin tarixçəsi label_index_by_title: BaÅŸlıq label_information_plural: İnformasiya label_information: İnformasiya label_in_less_than: az label_in_more_than: çox label_integer: Tam label_internal: Daxili label_in: da (dÉ™) label_issue: Tapşırıq label_issue_added: Tapşırıq É™lavÉ™ edilib label_issue_category_new: Yeni kateqoriya label_issue_category_plural: Tapşırığın kateqoriyası label_issue_category: Tapşırığın kateqoriyası label_issue_new: Yeni tapşırıq label_issue_plural: Tapşırıqlar label_issues_by: "%{value} üzrÉ™ çeÅŸidlÉ™mÉ™k" label_issue_status_new: Yeni status label_issue_status_plural: Tapşırıqların statusu label_issue_status: Tapşırığın statusu label_issue_tracking: Tapşırıqlar label_issue_updated: Tapşırıq yenilÉ™nib label_issue_view_all: Bütün tapşırıqlara baxmaq label_issue_watchers: NÉ™zarÉ™tçilÉ™r label_jump_to_a_project: ... layihÉ™yÉ™ keçid label_language_based: Dilin É™sasında label_last_changes: "%{count} az dÉ™yiÅŸiklik" label_last_month: sonuncu ay label_last_n_days: "son %{count} gün" label_last_week: sonuncu hÉ™ftÉ™ label_latest_revision: Sonuncu redaksiya label_latest_revision_plural: Sonuncu redaksiyalar label_ldap_authentication: LDAP vasitÉ™silÉ™ avtorizasiya label_less_or_equal: <= label_less_than_ago: gündÉ™n az label_list: Siyahı label_loading: YüklÉ™mÉ™... label_logged_as: Daxil olmusunuz label_login: Daxil olmaq label_logout: Çıxış label_max_size: Maksimal ölçü label_member_new: Yeni iÅŸtirakçı label_member: İştirakçı label_member_plural: İştirakçılar label_message_last: Sonuncu mÉ™lumat label_message_new: Yeni mÉ™lumat label_message_plural: MÉ™lumatlar label_message_posted: MÉ™lumat É™lavÉ™ olunub label_me: mÉ™nÉ™ label_min_max_length: Minimal - maksimal uzunluq label_modified: dÉ™yiÅŸilib label_module_plural: Modullar label_months_from: ay label_month: Ay label_more_than_ago: gündÉ™n É™vvÉ™l label_my_account: MÉ™nim hesabım label_my_page: MÉ™nim sÉ™hifÉ™m label_my_projects: MÉ™nim layihÉ™lÉ™rim label_new: Yeni label_new_statuses_allowed: İcazÉ™ verilÉ™n yeni statuslar label_news_added: XÉ™bÉ™r É™lavÉ™ edilib label_news_latest: Son xÉ™bÉ™rlÉ™r label_news_new: XÉ™bÉ™r É™lavÉ™ etmÉ™k label_news_plural: XÉ™bÉ™rlÉ™r label_news_view_all: Bütün xÉ™bÉ™rlÉ™rÉ™ baxmaq label_news: XÉ™bÉ™rlÉ™r label_next: NövbÉ™ti label_nobody: heç kim label_no_change_option: (DÉ™yiÅŸiklik yoxdur) label_no_data: TÉ™svir üçün verilÉ™nlÉ™r yoxdur label_none: yoxdur label_not_contains: mövcud deyil label_not_equals: sayılmır label_open_issues: açıqdır label_open_issues_plural: açıqdır label_open_issues_plural2: açıqdır label_open_issues_plural5: açıqdır label_optional_description: TÉ™svir (vacib deyil) label_options: Opsiyalar label_overview: Baxış label_password_lost: Parolun bÉ™rpası label_permissions_report: GiriÅŸ hüquqları üzrÉ™ hesabat label_permissions: GiriÅŸ hüquqları label_plugins: Modullar label_precedes: növbÉ™ti label_preferences: Üstünlük label_preview: İlkin baxış label_previous: ÆvvÉ™lki label_profile: Profil label_project: LayihÉ™ label_project_all: Bütün layihÉ™lÉ™r label_project_copy_notifications: LayihÉ™nin surÉ™tinin çıxarılması zamanı elektron poçt ilÉ™ bildiriÅŸ göndÉ™rmÉ™k label_project_latest: Son layihÉ™lÉ™r label_project_new: Yeni layihÉ™ label_project_plural: LayihÉ™lÉ™r label_project_plural2: layihÉ™ni label_project_plural5: layihÉ™lÉ™ri label_public_projects: Ümumi layihÉ™lÉ™r label_query: Yadda saxlanılmış sorÄŸu label_query_new: Yeni sorÄŸu label_query_plural: Yadda saxlanılmış sorÄŸular label_read: Oxu... label_register: Qeydiyyat label_registered_on: Qeydiyyatdan keçib label_registration_activation_by_email: e-poçt üzrÉ™ hesabımın aktivləşdirilmÉ™si label_registration_automatic_activation: uçot qeydlÉ™rinin avtomatik aktivləşdirilmÉ™si label_registration_manual_activation: uçot qeydlÉ™rini É™l ilÉ™ aktivləşdirmÉ™k label_related_issues: ÆlaqÉ™li tapşırıqlar label_relates_to: É™laqÉ™lidir label_relation_delete: ÆlaqÉ™ni silmÉ™k label_relation_new: Yeni münasibÉ™t label_renamed: adını dÉ™yiÅŸmÉ™k label_reply_plural: Cavablar label_report: Hesabat label_report_plural: Hesabatlar label_reported_issues: Yaradılan tapşırıqlar label_repository: Saxlayıcı label_repository_plural: Saxlayıcı label_result_plural: NÉ™ticÉ™lÉ™r label_reverse_chronological_order: Æks ardıcıllıqda label_revision: Redaksiya label_revision_plural: Redaksiyalar label_roadmap: Operativ plan label_roadmap_due_in: "%{value} müddÉ™tindÉ™" label_roadmap_no_issues: bu versiya üçün tapşırıq yoxdur label_roadmap_overdue: "gecikmÉ™ %{value}" label_role: Rol label_role_and_permissions: Rollar vÉ™ giriÅŸ hüquqları label_role_new: Yeni rol label_role_plural: Rollar label_scm: Saxlayıcının tipi label_search: Axtarış label_search_titles_only: Ancaq adlarda axtarmaq label_send_information: İstifadəçiyÉ™ uçot qeydlÉ™ri üzrÉ™ informasiyanı göndÉ™rmÉ™k label_send_test_email: Yoxlama üçün email göndÉ™rmÉ™k label_settings: Sazlamalar label_show_completed_versions: BitmiÅŸ variantları göstÉ™rmÉ™k label_sort: ÇeÅŸidlÉ™mÉ™k label_sort_by: "%{value} üzrÉ™ çeÅŸidlÉ™mÉ™k" label_spent_time: SÉ™rf olunan vaxt label_statistics: Statistika label_stay_logged_in: SistemdÉ™ qalmaq label_string: MÉ™tn label_subproject_plural: AltlayihÉ™lÉ™r label_subtask_plural: Alt tapşırıqlar label_text: Uzun mÉ™tn label_theme: Mövzu label_this_month: bu ay label_this_week: bu hÉ™ftÉ™ label_this_year: bu il label_time_tracking: Vaxtın uçotu label_today: bu gün label_topic_plural: Mövzular label_total: CÉ™mi label_tracker: Treker label_tracker_new: Yeni treker label_tracker_plural: TrekerlÉ™r label_updated_time: "%{value} É™vvÉ™l yenilÉ™nib" label_updated_time_by: "%{author} %{age} É™vvÉ™l yenilÉ™nib" label_used_by: İstifadÉ™ olunur label_user: İstifasdəçi label_user_activity: "İstifadəçinin gördüyü iÅŸlÉ™r %{value}" label_user_mail_no_self_notified: "TÉ™rÉ™fimdÉ™n edilÉ™n dÉ™yiÅŸikliklÉ™r haqqında mÉ™ni xÉ™bÉ™rdar etmÉ™mÉ™k" label_user_mail_option_all: "MÉ™nim layihÉ™lÉ™rimdÉ™ki bütün hadisÉ™lÉ™r haqqında" label_user_mail_option_selected: "Yalnız seçilÉ™n layihÉ™dÉ™ki bütün hadisÉ™lÉ™r haqqında..." label_user_mail_option_only_my_events: Yalnız izlÉ™diyim vÉ™ ya iÅŸtirak etdiyim obyektlÉ™r üçün label_user_new: Yeni istifadəçi label_user_plural: İstifadəçilÉ™r label_version: Variant label_version_new: Yeni variant label_version_plural: Variantlar label_view_diff: FÉ™rqlÉ™rÉ™ baxmaq label_view_revisions: Redaksiyalara baxmaq label_watched_issues: Tapşırığın izlÉ™nilmÉ™si label_week: HÉ™ftÉ™ label_wiki: Wiki label_wiki_edit: Wiki-nin redaktÉ™si label_wiki_edit_plural: Wiki label_wiki_page: Wiki sÉ™hifÉ™si label_wiki_page_plural: Wiki sÉ™hifÉ™lÉ™ri label_workflow: GörülÉ™n iÅŸlÉ™rin ardıcıllığı label_x_closed_issues_abbr: zero: "0 baÄŸlıdır" one: "1 baÄŸlanıb" few: "%{count} baÄŸlıdır" many: "%{count} baÄŸlıdır" other: "%{count} baÄŸlıdır" label_x_comments: zero: "ÅŸÉ™rh yoxdur" one: "1 ÅŸÉ™rh" few: "%{count} ÅŸÉ™rhlÉ™r" many: "%{count} ÅŸÉ™rh" other: "%{count} ÅŸÉ™rh" label_x_open_issues_abbr: zero: "0 açıqdır" one: "1 açıq" few: "%{count} açıqdır" many: "%{count} açıqdır" other: "%{count} açıqdır" label_x_projects: zero: "layihÉ™lÉ™r yoxdur" one: "1 layihÉ™" few: "%{count} layihÉ™" many: "%{count} layihÉ™" other: "%{count} layihÉ™" label_year: İl label_yesterday: dünÉ™n mail_body_account_activation_request: "Yeni istifadəçi qeydiyyatdan keçib (%{value}). Uçot qeydi Sizin tÉ™sdiqinizi gözlÉ™yir:" mail_body_account_information: Sizin uçot qeydiniz haqqında informasiya mail_body_account_information_external: "Siz özünüzün %{value} uçot qeydinizi giriÅŸ üçün istifadÉ™ edÉ™ bilÉ™rsiniz." mail_body_lost_password: 'Parolun dÉ™yiÅŸdirilmÉ™si üçün aÅŸağıdakı linkÉ™ keçin:' mail_body_register: 'Uçot qeydinin aktivləşdirilmÉ™si üçün aÅŸağıdakı linkÉ™ keçin:' mail_body_reminder: "növbÉ™ti %{days} gün üçün SizÉ™ tÉ™yin olunan %{count}:" mail_subject_account_activation_request: "SistemdÉ™ istifadəçinin aktivləşdirilmÉ™si üçün sorÄŸu %{value}" mail_subject_lost_password: "Sizin %{value} parolunuz" mail_subject_register: "Uçot qeydinin aktivləşdirilmÉ™si %{value}" mail_subject_reminder: "yaxın %{days} gün üçün SizÉ™ tÉ™yin olunan %{count}" notice_account_activated: Sizin uçot qeydiniz aktivləşdirilib. SistemÉ™ daxil ola bilÉ™rsiniz. notice_account_invalid_credentials: İstifadəçi adı vÉ™ ya parolu düzgün deyildir notice_account_lost_email_sent: SizÉ™ yeni parolun seçimi ilÉ™ baÄŸlı tÉ™limatı É™ks etdirÉ™n mÉ™ktub göndÉ™rilmiÅŸdir. notice_account_password_updated: Parol müvÉ™ffÉ™qiyyÉ™tlÉ™ yenilÉ™ndi. notice_account_pending: "Sizin uçot qeydiniz yaradıldı vÉ™ inzibatçının tÉ™sdiqini gözlÉ™yir." notice_account_register_done: Uçot qeydi müvÉ™ffÉ™qiyyÉ™tlÉ™ yaradıldı. Sizin uçot qeydinizin aktivləşdirilmÉ™si üçün elektron poçtunuza göndÉ™rilÉ™n linkÉ™ keçin. notice_account_updated: Uçot qeydi müvÉ™ffÉ™qiyyÉ™tlÉ™ yenilÉ™ndi. notice_account_wrong_password: Parol düzgün deyildir notice_can_t_change_password: Bu uçot qeydi üçün xarici autentifikasiya mÉ™nbÉ™yi istifadÉ™ olunur. Parolu dÉ™yiÅŸmÉ™k mümkün deyildir. notice_default_data_loaded: Susmaya görÉ™ konfiqurasiya yüklÉ™nilmiÅŸdir. notice_email_error: "MÉ™ktubun göndÉ™rilmÉ™si zamanı sÉ™hv baÅŸ vermiÅŸdi (%{value})" notice_email_sent: "MÉ™ktub göndÉ™rilib %{value}" notice_failed_to_save_issues: "SeçilÉ™n %{total} içərisindÉ™n %{count} bÉ™ndlÉ™ri saxlamaq mümkün olmadı: %{ids}." notice_failed_to_save_members: "İştirakçını (ları) yadda saxlamaq mümkün olmadı: %{errors}." notice_feeds_access_key_reseted: Sizin Atom giriÅŸ açarınız sıfırlanmışdır. notice_file_not_found: Daxil olmaÄŸa çalışdığınız sÉ™hifÉ™ mövcud deyildir vÉ™ ya silinib. notice_locking_conflict: İnformasiya digÉ™r istifadəçi tÉ™rÉ™findÉ™n yenilÉ™nib. notice_not_authorized: Sizin bu sÉ™hifÉ™yÉ™ daxil olmaq hüququnuz yoxdur. notice_successful_connection: QoÅŸulma müvÉ™ffÉ™qiyyÉ™tlÉ™ yerinÉ™ yetirilib. notice_successful_create: Yaratma müvÉ™ffÉ™qiyyÉ™tlÉ™ yerinÉ™ yetirildi. notice_successful_delete: SilinmÉ™ müvÉ™ffÉ™qiyyÉ™tlÉ™ yerinÉ™ yetirildi. notice_successful_update: YenilÉ™mÉ™ müvÉ™ffÉ™qiyyÉ™tlÉ™ yerinÉ™ yetirildi. notice_unable_delete_version: Variantı silmÉ™k mümkün olmadı. permission_add_issues: Tapşırıqların É™lavÉ™ edilmÉ™si permission_add_issue_notes: QeydlÉ™rin É™lavÉ™ edilmÉ™si permission_add_issue_watchers: NÉ™zarÉ™tçilÉ™rin É™lavÉ™ edilmÉ™si permission_add_messages: MÉ™lumatların göndÉ™rilmÉ™si permission_browse_repository: Saxlayıcıya baxış permission_comment_news: XÉ™bÉ™rlÉ™rÉ™ ÅŸÉ™rh permission_commit_access: Saxlayıcıda faylların dÉ™yiÅŸdirilmÉ™si permission_delete_issues: Tapşırıqların silinmÉ™si permission_delete_messages: MÉ™lumatların silinmÉ™si permission_delete_own_messages: Şəxsi mÉ™lumatların silinmÉ™si permission_delete_wiki_pages: Wiki-sÉ™hifÉ™lÉ™rin silinmÉ™si permission_delete_wiki_pages_attachments: BÉ™rkidilÉ™n faylların silinmÉ™si permission_edit_issue_notes: QeydlÉ™rin redaktÉ™ edilmÉ™si permission_edit_issues: Tapşırıqların redaktÉ™ edilmÉ™si permission_edit_messages: MÉ™lumatların redaktÉ™ edilmÉ™si permission_edit_own_issue_notes: Şəxsi qeydlÉ™rin redaktÉ™ edilmÉ™si permission_edit_own_messages: Şəxsi mÉ™lumatların redaktÉ™ edilmÉ™si permission_edit_own_time_entries: Şəxsi vaxt uçotunun redaktÉ™ edilmÉ™si permission_edit_project: LayihÉ™lÉ™rin redaktÉ™ edilmÉ™si permission_edit_time_entries: Vaxt uçotunun redaktÉ™ edilmÉ™si permission_edit_wiki_pages: Wiki-sÉ™hifÉ™nin redaktÉ™ edilmÉ™si permission_export_wiki_pages: Wiki-sÉ™hifÉ™nin ixracı permission_log_time: SÉ™rf olunan vaxtın uçotu permission_view_changesets: Saxlayıcı dÉ™yiÅŸikliklÉ™rinÉ™ baxış permission_view_time_entries: SÉ™rf olunan vaxta baxış permission_manage_project_activities: LayihÉ™ üçün hÉ™rÉ™kÉ™t tiplÉ™rinin idarÉ™ edilmÉ™si permission_manage_boards: Forumların idarÉ™ edilmÉ™si permission_manage_categories: Tapşırıq kateqoriyalarının idarÉ™ edilmÉ™si permission_manage_files: Faylların idarÉ™ edilmÉ™si permission_manage_issue_relations: Tapşırıq baÄŸlantılarının idarÉ™ edilmÉ™si permission_manage_members: İştirakçıların idarÉ™ edilmÉ™si permission_manage_news: XÉ™bÉ™rlÉ™rin idarÉ™ edilmÉ™si permission_manage_public_queries: Ümumi sorÄŸuların idarÉ™ edilmÉ™si permission_manage_repository: Saxlayıcının idarÉ™ edilmÉ™si permission_manage_subtasks: Alt tapşırıqların idarÉ™ edilmÉ™si permission_manage_versions: Variantların idarÉ™ edilmÉ™si permission_manage_wiki: Wiki-nin idarÉ™ edilmÉ™si permission_protect_wiki_pages: Wiki-sÉ™hifÉ™lÉ™rin bloklanması permission_rename_wiki_pages: Wiki-sÉ™hifÉ™lÉ™rin adının dÉ™yiÅŸdirilmÉ™si permission_save_queries: SorÄŸuların yadda saxlanılması permission_select_project_modules: LayihÉ™ modulunun seçimi permission_view_calendar: TÉ™qvimÉ™ baxış permission_view_documents: SÉ™nÉ™dlÉ™rÉ™ baxış permission_view_files: Fayllara baxış permission_view_gantt: Qant diaqramına baxış permission_view_issue_watchers: NÉ™zarÉ™tçilÉ™rin siyahılarına baxış permission_view_messages: MÉ™lumatlara baxış permission_view_wiki_edits: Wiki tarixçəsinÉ™ baxış permission_view_wiki_pages: Wiki-yÉ™ baxış project_module_boards: Forumlar project_module_documents: SÉ™nÉ™dlÉ™r project_module_files: Fayllar project_module_issue_tracking: Tapşırıqlar project_module_news: XÉ™bÉ™rlÉ™r project_module_repository: Saxlayıcı project_module_time_tracking: Vaxtın uçotu project_module_wiki: Wiki project_module_gantt: Qant diaqramı project_module_calendar: TÉ™qvim setting_activity_days_default: GörülÉ™n iÅŸlÉ™rdÉ™ É™ks olunan günlÉ™rin sayı setting_app_title: ÆlavÉ™nin adı setting_attachment_max_size: YerləşdirmÉ™nin maksimal ölçüsü setting_autofetch_changesets: Saxlayıcının dÉ™yiÅŸikliklÉ™rini avtomatik izlÉ™mÉ™k setting_autologin: Avtomatik giriÅŸ setting_cache_formatted_text: FormatlaÅŸdırılmış mÉ™tnin heÅŸlÉ™nmÉ™si setting_commit_fix_keywords: Açar sözlÉ™rin tÉ™yini setting_commit_ref_keywords: Axtarış üçün açar sözlÉ™r setting_cross_project_issue_relations: LayihÉ™lÉ™r üzrÉ™ tapşırıqların kÉ™siÅŸmÉ™sinÉ™ icazÉ™ vermÉ™k setting_date_format: Tarixin formatı setting_default_language: Susmaya görÉ™ dil setting_default_notification_option: Susmaya görÉ™ xÉ™bÉ™rdarlıq üsulu setting_default_projects_public: Yeni layihÉ™lÉ™r ümumaçıq hesab edilir setting_diff_max_lines_displayed: diff üçün sÉ™tirlÉ™rin maksimal sayı setting_display_subprojects_issues: Susmaya görÉ™ altlayihÉ™lÉ™rin É™ks olunması setting_emails_footer: MÉ™ktubun sÉ™tiraltı qeydlÉ™ri setting_enabled_scm: Daxil edilÉ™n SCM setting_feeds_limit: Atom axını üçün baÅŸlıqların sayının mÉ™hdudlaÅŸdırılması setting_file_max_size_displayed: Æks olunma üçün mÉ™tn faylının maksimal ölçüsü setting_gravatar_enabled: İstifadəçi avatarını Gravatar-dan istifadÉ™ etmÉ™k setting_host_name: Kompyuterin adı setting_issue_list_default_columns: Susmaya görÉ™ tapşırıqların siyahısında É™ks oluna sütunlar setting_issues_export_limit: İxrac olunan tapşırıqlar üzrÉ™ mÉ™hdudiyyÉ™tlÉ™r setting_login_required: Autentifikasiya vacibdir setting_mail_from: Çıxan e-poçt ünvanı setting_mail_handler_api_enabled: Daxil olan mÉ™lumatlar üçün veb-servisi qoÅŸmaq setting_mail_handler_api_key: API açar setting_per_page_options: SÉ™hifÉ™ üçün qeydlÉ™rin sayı setting_plain_text_mail: Yalnız sadÉ™ mÉ™tn (HTML olmadan) setting_protocol: Protokol setting_repository_log_display_limit: DÉ™yiÅŸikliklÉ™r jurnalında É™ks olunan redaksiyaların maksimal sayı setting_self_registration: Özünüqeydiyyat setting_sequential_project_identifiers: LayihÉ™lÉ™rin ardıcıl identifikatorlarını generasiya etmÉ™k setting_sys_api_enabled: Saxlayıcının idarÉ™ edilmÉ™si üçün veb-servisi qoÅŸmaq setting_text_formatting: MÉ™tnin formatlaÅŸdırılması setting_time_format: Vaxtın formatı setting_user_format: Adın É™ks olunma formatı setting_welcome_text: Salamlama mÉ™tni setting_wiki_compression: Wiki tarixçəsinin sıxlaÅŸdırılması status_active: aktivdir status_locked: bloklanıb status_registered: qeydiyyatdan keçib text_are_you_sure: Siz É™minsinizmi? text_assign_time_entries_to_project: Qeydiyyata alınmış vaxtı layihÉ™yÉ™ bÉ™rkitmÉ™k text_caracters_maximum: "Maksimum %{count} simvol." text_caracters_minimum: "%{count} simvoldan az olmamalıdır." text_comma_separated: Bir neçə qiymÉ™t mümkündür (vergül vasitÉ™silÉ™). text_custom_field_possible_values_info: 'HÉ™r sÉ™tirÉ™ bir qiymÉ™t' text_default_administrator_account_changed: İnzibatçının uçot qeydi susmaya görÉ™ dÉ™yiÅŸmiÅŸdir text_destroy_time_entries_question: "Bu tapşırıq üçün sÉ™rf olunan vaxta görÉ™ %{hours} saat qeydiyyata alınıb. Siz nÉ™ etmÉ™k istÉ™yirsiniz?" text_destroy_time_entries: Qeydiyyata alınmış vaxtı silmÉ™k text_diff_truncated: '... Bu diff mÉ™hduddur, çünki É™ks olunan maksimal ölçünü keçir.' text_email_delivery_not_configured: "Poçt serveri ilÉ™ iÅŸin parametrlÉ™ri sazlanmayıb vÉ™ e-poçt ilÉ™ bildiriÅŸ funksiyası aktiv deyildir.\nSizin SMTP-server üçün parametrlÉ™ri config/configuration.yml faylından sazlaya bilÉ™rsiniz. DÉ™yiÅŸikliklÉ™rin tÉ™tbiq edilmÉ™si üçün É™lavÉ™ni yenidÉ™n baÅŸladın." text_enumeration_category_reassign_to: 'Onlara aÅŸağıdakı qiymÉ™tlÉ™ri tÉ™yin etmÉ™k:' text_enumeration_destroy_question: "%{count} obyekt bu qiymÉ™tlÉ™ baÄŸlıdır." text_file_repository_writable: QeydÉ™ giriÅŸ imkanı olan saxlayıcı text_issue_added: "Yeni tapşırıq yaradılıb %{id} (%{author})." text_issue_category_destroy_assignments: Kateqoriyanın tÉ™yinatını silmÉ™k text_issue_category_destroy_question: "Bir neçə tapşırıq (%{count}) bu kateqoriya üçün tÉ™yin edilib. Siz nÉ™ etmÉ™k istÉ™yirsiniz?" text_issue_category_reassign_to: Bu kateqoriya üçün tapşırığı yenidÉ™n tÉ™yin etmÉ™k text_issues_destroy_confirmation: 'SeçilÉ™n tapşırıqları silmÉ™k istÉ™diyinizÉ™ É™minsinizmi?' text_issues_ref_in_commit_messages: MÉ™lumatın mÉ™tnindÉ™n çıxış edÉ™rÉ™k tapşırıqların statuslarının tutuÅŸdurulması vÉ™ dÉ™yiÅŸdirilmÉ™si text_issue_updated: "Tapşırıq %{id} yenilÉ™nib (%{author})." text_journal_changed: "Parametr %{label} %{old} - %{new} dÉ™yiÅŸib" text_journal_deleted: "Parametrin %{old} qiymÉ™ti %{label} silinib" text_journal_set_to: "%{label} parametri %{value} dÉ™yiÅŸib" text_length_between: "%{min} vÉ™ %{max} simvollar arasındakı uzunluq." text_load_default_configuration: Susmaya görÉ™ konfiqurasiyanı yüklÉ™mÉ™k text_no_configuration_data: "Rollar, trekerlÉ™r, tapşırıqların statusları vÉ™ operativ plan konfiqurasiya olunmayıblar.\nSusmaya görÉ™ konfiqurasiyanın yüklÉ™nmÉ™si tÉ™kidlÉ™ xahiÅŸ olunur. Siz onu sonradan dÉ™yiÅŸÉ™ bilÉ™rsiniz." text_plugin_assets_writable: Modullar kataloqu qeyd üçün açıqdır text_project_destroy_confirmation: Siz bu layihÉ™ vÉ™ ona aid olan bütün informasiyanı silmÉ™k istÉ™diyinizÉ™ É™minsinizmi? text_reassign_time_entries: 'Qeydiyyata alınmış vaxtı aÅŸağıdakı tapşırığa keçir:' text_regexp_info: "mÉ™sÉ™lÉ™n: ^[A-Z0-9]+$" text_repository_usernames_mapping: "Saxlayıcının jurnalında tapılan adlarla baÄŸlı olan Redmine istifadəçisini seçin vÉ™ ya yenilÉ™yin.\nEyni ad vÉ™ e-poçta sahib olan istifadəçilÉ™r Redmine vÉ™ saxlayıcıda avtomatik É™laqÉ™lÉ™ndirilir." text_minimagick_available: MiniMagick istifadÉ™si mümkündür (opsional olaraq) text_select_mail_notifications: Elektron poçta bildiriÅŸlÉ™rin göndÉ™rilmÉ™si seçim edÉ™cÉ™yiniz hÉ™rÉ™kÉ™tlÉ™rdÉ™n asılıdır. text_select_project_modules: 'LayihÉ™dÉ™ istifadÉ™ olunacaq modulları seçin:' text_status_changed_by_changeset: "%{value} redaksiyada reallaÅŸdırılıb." text_subprojects_destroy_warning: "AltlayihÉ™lÉ™r: %{value} hÉ™mçinin silinÉ™cÉ™k." text_tip_issue_begin_day: tapşırığın baÅŸlanğıc tarixi text_tip_issue_begin_end_day: elÉ™ hÉ™min gün tapşırığın baÅŸlanğıc vÉ™ bitmÉ™ tarixi text_tip_issue_end_day: tapşırığın baÅŸa çatma tarixi text_tracker_no_workflow: Bu treker üçün hÉ™rÉ™kÉ™tlÉ™rin ardıcıllığı müəyyÉ™n edimÉ™yib text_unallowed_characters: QadaÄŸan edilmiÅŸ simvollar text_user_mail_option: "SeçilmÉ™yÉ™n layihÉ™lÉ™r üçün Siz yalnız baxdığınız vÉ™ ya iÅŸtirak etdiyiniz layihÉ™lÉ™r barÉ™dÉ™ bildiriÅŸ alacaqsınız mÉ™sÉ™lÉ™n, müəllifi olduÄŸunuz layihÉ™lÉ™r vÉ™ ya o layihÉ™lÉ™r ki, SizÉ™ tÉ™yin edilib)." text_user_wrote: "%{value} yazıb:" text_user_wrote_in: "%{value} yazıb (%{link}):" text_wiki_destroy_confirmation: Siz bu Wiki vÉ™ onun tÉ™rkibindÉ™kilÉ™ri silmÉ™k istÉ™diyinizÉ™ É™minsinizmi? text_workflow_edit: VÉ™ziyyÉ™tlÉ™rin ardıcıllığını redaktÉ™ etmÉ™k üçün rol vÉ™ trekeri seçin warning_attachments_not_saved: "faylın (ların) %{count} yadda saxlamaq mümkün deyildir." text_wiki_page_destroy_question: Bu sÉ™hifÉ™ %{descendants} yaxın vÉ™ çox yaxın sÉ™hifÉ™lÉ™rÉ™ malikdir. Siz nÉ™ etmÉ™k istÉ™yirsiniz? text_wiki_page_reassign_children: Cari sÉ™hifÉ™ üçün yaxın sÉ™hifÉ™lÉ™ri yenidÉ™n tÉ™yin etmÉ™k text_wiki_page_nullify_children: Yaxın sÉ™hifÉ™lÉ™ri baÅŸ sÉ™hifÉ™lÉ™r etmÉ™k text_wiki_page_destroy_children: Yaxın vÉ™ çox yaxın sÉ™hifÉ™lÉ™ri silmÉ™k setting_password_min_length: Parolun minimal uzunluÄŸu field_group_by: NÉ™ticÉ™lÉ™ri qruplaÅŸdırmaq mail_subject_wiki_content_updated: "Wiki-sÉ™hifÉ™ '%{id}' yenilÉ™nmiÅŸdir" label_wiki_content_added: Wiki-sÉ™hifÉ™ É™lavÉ™ olunub mail_subject_wiki_content_added: "Wiki-sÉ™hifÉ™ '%{id}' É™lavÉ™ edilib" mail_body_wiki_content_added: "%{author} Wiki-sÉ™hifÉ™ni '%{id}' É™lavÉ™ edib." label_wiki_content_updated: Wiki-sÉ™hifÉ™ yenilÉ™nib mail_body_wiki_content_updated: "%{author} Wiki-sÉ™hifÉ™ni '%{id}' yenilÉ™yib." permission_add_project: LayihÉ™nin yaradılması setting_new_project_user_role_id: LayihÉ™ni yaradan istifadəçiyÉ™ tÉ™yin olunan rol label_view_all_revisions: Bütün yoxlamaları göstÉ™rmÉ™k label_tag: NiÅŸan label_branch: ŞöbÉ™ error_no_tracker_in_project: Bu layihÉ™ ilÉ™ heç bir treker assosiasiya olunmayıb. LayihÉ™nin sazlamalarını yoxlayın. error_no_default_issue_status: Susmaya görÉ™ tapşırıqların statusu müəyyÉ™n edilmÉ™yib. Sazlamaları yoxlayın (bax. "İnzibatçılıq -> Tapşırıqların statusu"). label_group_plural: Qruplar label_group: Qrup label_group_new: Yeni qrup label_time_entry_plural: SÉ™rf olunan vaxt text_journal_added: "%{label} %{value} É™lavÉ™ edilib" field_active: Aktiv enumeration_system_activity: Sistemli permission_delete_issue_watchers: NÉ™zarÉ™tçilÉ™rin silinmÉ™si version_status_closed: BaÄŸlanıb version_status_locked: bloklanıb version_status_open: açıqdır error_can_not_reopen_issue_on_closed_version: BaÄŸlı varianta tÉ™yin edilÉ™n tapşırıq yenidÉ™n açıq ola bilmÉ™z label_user_anonymous: Anonim button_move_and_follow: YerləşdirmÉ™k vÉ™ keçid setting_default_projects_modules: Yeni layihÉ™lÉ™r üçün susmaya görÉ™ daxil edilÉ™n modullar setting_gravatar_default: Susmaya görÉ™ Gravatar tÉ™sviri field_sharing: BirgÉ™ istifadÉ™ label_version_sharing_hierarchy: LayihÉ™lÉ™rin iyerarxiyasına görÉ™ label_version_sharing_system: bütün layihÉ™lÉ™r ilÉ™ label_version_sharing_descendants: Alt layihÉ™lÉ™r ilÉ™ label_version_sharing_tree: LayihÉ™lÉ™rin iyerarxiyası ilÉ™ label_version_sharing_none: BirgÉ™ istifadÉ™ olmadan error_can_not_archive_project: Bu layihÉ™ arxivləşdirilÉ™ bilmÉ™z button_copy_and_follow: SurÉ™tini çıxarmaq vÉ™ davam etmÉ™k label_copy_source: MÉ™nbÉ™ setting_issue_done_ratio: SahÉ™nin kömÉ™yi ilÉ™ tapşırığın hazırlığını nÉ™zÉ™rÉ™ almaq setting_issue_done_ratio_issue_status: Tapşırığın statusu error_issue_done_ratios_not_updated: Tapşırıqların hazırlıq parametri yenilÉ™nmÉ™yib error_workflow_copy_target: MÉ™qsÉ™dÉ™ uyÄŸun trekerlÉ™ri vÉ™ rolları seçin setting_issue_done_ratio_issue_field: Tapşırığın hazırlıq sÉ™viyyÉ™si label_copy_same_as_target: MÉ™qsÉ™ddÉ™ olduÄŸu kimi label_copy_target: MÉ™qsÉ™d notice_issue_done_ratios_updated: Parametr «hazırlıq» yenilÉ™nib. error_workflow_copy_source: Cari trekeri vÉ™ ya rolu seçin label_update_issue_done_ratios: Tapşırığın hazırlıq sÉ™viyyÉ™sini yenilÉ™mÉ™k setting_start_of_week: HÉ™ftÉ™nin birinci günü label_api_access_key: API-yÉ™ giriÅŸ açarı text_line_separated: Bİr neçə qiymÉ™t icazÉ™ verilib (hÉ™r sÉ™tirÉ™ bir qiymÉ™t). label_revision_id: Yoxlama %{value} permission_view_issues: Tapşırıqlara baxış label_display_used_statuses_only: Yalnız bu trekerdÉ™ istifadÉ™ olunan statusları É™ks etdirmÉ™k label_api_access_key_created_on: API-yÉ™ giriÅŸ açarı %{value} É™vvÉ™l aradılıb label_feeds_access_key: Atom giriÅŸ açarı notice_api_access_key_reseted: Sizin API giriÅŸ açarınız sıfırlanıb. setting_rest_api_enabled: REST veb-servisini qoÅŸmaq button_show: GöstÉ™rmÉ™k label_missing_api_access_key: API-yÉ™ giriÅŸ açarı mövcud deyildir label_missing_feeds_access_key: Atom-É™ giriÅŸ açarı mövcud deyildir setting_mail_handler_body_delimiters: Bu sÉ™tirlÉ™rin birindÉ™n sonra mÉ™ktubu qısaltmaq permission_add_subprojects: Alt layihÉ™lÉ™rin yaradılması label_subproject_new: Yeni alt layihÉ™ text_own_membership_delete_confirmation: |- Siz bÉ™zi vÉ™ ya bütün hüquqları silmÉ™yÉ™ çalışırsınız, nÉ™ticÉ™dÉ™ bu layihÉ™ni redaktÉ™ etmÉ™k hüququnu da itirÉ™ bilÉ™rsiniz. Davam etmÉ™k istÉ™diyinizÉ™ É™minsinizmi? label_close_versions: BaÅŸa çatmış variantları baÄŸlamaq label_board_sticky: BÉ™rkidilib label_board_locked: Bloklanıb field_principal: User or Group text_zoom_out: UzaqlaÅŸdırmaq text_zoom_in: YaxınlaÅŸdırmaq notice_unable_delete_time_entry: Jurnalın qeydini silmÉ™k mümkün deyildir. label_user_mail_option_none: HadisÉ™ yoxdur field_member_of_group: TÉ™yin olunmuÅŸ qrup field_assigned_to_role: TÉ™yin olunmuÅŸ rol notice_not_authorized_archived_project: SorÄŸulanan layihÉ™ arxivləşdirilib. label_principal_search: "İstifadəçini vÉ™ ya qrupu tapmaq:" label_user_search: "İstifadəçini tapmaq:" field_visible: GörünmÉ™ dÉ™rÉ™cÉ™si setting_emails_header: MÉ™ktubun baÅŸlığı setting_commit_logtime_activity_id: Vaxtın uçotu üçün görülÉ™n hÉ™rÉ™kÉ™tlÉ™r text_time_logged_by_changeset: "%{value} redaksiyada nÉ™zÉ™rÉ™ alınıb." setting_commit_logtime_enabled: Vaxt uçotunu qoÅŸmaq notice_gantt_chart_truncated: Æks oluna bilÉ™cÉ™k elementlÉ™rin maksimal sayı artdığına görÉ™ diaqram kÉ™silÉ™cÉ™k (%{max}) setting_gantt_items_limit: Qant diaqramında É™ks olunan elementlÉ™rin maksimal sayı field_warn_on_leaving_unsaved: Yadda saxlanılmayan mÉ™tnin sÉ™hifÉ™si baÄŸlanan zaman xÉ™bÉ™rdarlıq etmÉ™k text_warn_on_leaving_unsaved: TÉ™rk etmÉ™k istÉ™diyiniz cari sÉ™hifÉ™dÉ™ yadda saxlanılmayan vÉ™ itÉ™ bilÉ™cÉ™k mÉ™tn vardır. label_my_queries: MÉ™nim yadda saxlanılan sorÄŸularım text_journal_changed_no_detail: "%{label} yenilÉ™nib" label_news_comment_added: XÉ™bÉ™rÉ™ ÅŸÉ™rh É™lavÉ™ olunub button_expand_all: Hamısını aç button_collapse_all: Hamısını çevir label_additional_workflow_transitions_for_assignee: İstifadəçi icraçı olduÄŸu zaman É™lavÉ™ keçidlÉ™r label_additional_workflow_transitions_for_author: İstifadəçi müəllif olduÄŸu zaman É™lavÉ™ keçidlÉ™r label_bulk_edit_selected_time_entries: SÉ™rf olunan vaxtın seçilÉ™n qeydlÉ™rinin kütlÉ™vi ÅŸÉ™kildÉ™ dÉ™yiÅŸdirilmÉ™si text_time_entries_destroy_confirmation: Siz sÉ™rf olunan vaxtın seçilÉ™n qeydlÉ™rini silmÉ™k istÉ™diyinizÉ™ É™minsinizmi? label_role_anonymous: Anonim label_role_non_member: İştirakçı deyil label_issue_note_added: Qeyd É™lavÉ™ olunub label_issue_status_updated: Status yenilÉ™nib label_issue_priority_updated: Prioritet yenilÉ™nib label_issues_visibility_own: İstifadəçi üçün yaradılan vÉ™ ya ona tÉ™yin olunan tapşırıqlar field_issues_visibility: Tapşırıqların görünmÉ™ dÉ™rÉ™cÉ™si label_issues_visibility_all: Bütün tapşırıqlar permission_set_own_issues_private: Şəxsi tapşırıqlar üçün görünmÉ™ dÉ™rÉ™cÉ™sinin (ümumi/ÅŸÉ™xsi) qurulması field_is_private: Şəxsi permission_set_issues_private: Tapşırıqlar üçün görünmÉ™ dÉ™rÉ™cÉ™sinin (ümumi/ÅŸÉ™xsi) qurulması label_issues_visibility_public: Yalnız ümumi tapşırıqlar text_issues_destroy_descendants_confirmation: HÉ™mçinin %{count} tapşırıq (lar) silinÉ™cÉ™k. field_commit_logs_encoding: Saxlayıcıda ÅŸÉ™rhlÉ™rin kodlaÅŸdırılması field_scm_path_encoding: Yolun kodlaÅŸdırılması text_scm_path_encoding_note: "Susmaya görÉ™: UTF-8" field_path_to_repository: Saxlayıcıya yol field_root_directory: Kök direktoriya field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokal saxlayıcı (mÉ™sÉ™lÉ™n, /hgrepo, c:\hgrepo) text_scm_command: Komanda text_scm_command_version: Variant label_git_report_last_commit: Fayllar vÉ™ direktoriyalar üçün son dÉ™yiÅŸikliklÉ™ri göstÉ™rmÉ™k text_scm_config: Siz config/configuration.yml faylında SCM komandasını sazlaya bilÉ™rsiniz. XahiÅŸ olunur, bu faylın redaktÉ™sindÉ™n sonra É™lavÉ™ni iÅŸÉ™ salın. text_scm_command_not_available: Variantların nÉ™zarÉ™t sisteminin komandasına giriÅŸ mümkün deyildir. XahiÅŸ olunur, inzibatçı panelindÉ™ki sazlamaları yoxlayın. notice_issue_successful_create: Tapşırıq %{id} yaradılıb. label_between: arasında setting_issue_group_assignment: İstifadəçi qruplarına tÉ™yinata icazÉ™ vermÉ™k label_diff: FÉ™rq(diff) text_git_repository_note: "Saxlama yerini göstÉ™rin (mÉ™s: /gitrepo, c:\\gitrepo)" description_query_sort_criteria_direction: ÇeÅŸidlÉ™mÉ™ qaydası description_project_scope: LayihÉ™nin hÉ™cmi description_filter: Filtr description_user_mail_notification: E-poçt Mail xÉ™bÉ™rdarlıqlarının sazlaması description_message_content: Mesajın kontenti description_available_columns: Mövcud sütunlar description_issue_category_reassign: MÉ™sÉ™lÉ™nin kateqoriyasını seçin description_search: Axtarış sahÉ™si description_notes: Qeyd description_choose_project: LayihÉ™lÉ™r description_query_sort_criteria_attribute: ÇeÅŸidlÉ™mÉ™ meyarları description_wiki_subpages_reassign: Yeni valideyn sÉ™hifÉ™sini seçmÉ™k description_selected_columns: SeçilmiÅŸ sütunlar label_parent_revision: Valideyn label_child_revision: Æsas error_scm_annotate_big_text_file: MÉ™tn faylının maksimal ölçüsü artdığına görÉ™ ÅŸÉ™rh mümkün deyildir. setting_default_issue_start_date_to_creation_date: Yeni tapşırıqlar üçün cari tarixi baÅŸlanğıc tarixi kimi istifadÉ™ etmÉ™k button_edit_section: Bu bölmÉ™ni redaktÉ™ etmÉ™k setting_repositories_encodings: ÆlavÉ™lÉ™rin vÉ™ saxlayıcıların kodlaÅŸdırılması description_all_columns: Bütün sütunlar button_export: İxrac label_export_options: "%{export_format} ixracın parametrlÉ™ri" error_attachment_too_big: Faylın maksimal ölçüsü artdığına görÉ™ bu faylı yüklÉ™mÉ™k mümkün deyildir (%{max_size}) notice_failed_to_save_time_entries: "SÉ™hv N %{ids}. %{total} giriÅŸdÉ™n %{count} yaddaÅŸa saxlanıla bilmÉ™di." label_x_issues: zero: 0 Tapşırıq one: 1 Tapşırıq few: "%{count} Tapşırıq" many: "%{count} Tapşırıq" other: "%{count} Tapşırıq" label_repository_new: Yeni saxlayıcı field_repository_is_default: Susmaya görÉ™ saxlayıcı label_copy_attachments: ÆlavÉ™nin surÉ™tini çıxarmaq label_item_position: "%{position}/%{count}" label_completed_versions: BaÅŸa çatdırılmış variantlar text_project_identifier_info: Yalnız kiçik latın hÉ™rflÉ™rinÉ™ (a-z), rÉ™qÉ™mlÉ™rÉ™, tire vÉ™ çicgilÉ™rÉ™ icazÉ™ verilir.
    Yadda saxladıqdan sonra identifikatoru dÉ™yiÅŸmÉ™k olmaz. field_multiple: Çoxsaylı qiymÉ™tlÉ™r setting_commit_cross_project_ref: DigÉ™r bütün layihÉ™lÉ™rdÉ™ tapşırıqları düzÉ™ltmÉ™k vÉ™ istinad etmÉ™k text_issue_conflict_resolution_add_notes: QeydlÉ™rimi É™lavÉ™ etmÉ™k vÉ™ mÉ™nim dÉ™yiÅŸikliklÉ™rimdÉ™n imtina etmÉ™k text_issue_conflict_resolution_overwrite: DÉ™yiÅŸikliklÉ™rimi tÉ™tbiq etmÉ™k (É™vvÉ™lki bütün qeydlÉ™r yadda saxlanacaq, lakin bÉ™zi qeydlÉ™r yenidÉ™n yazıla bilÉ™r) notice_issue_update_conflict: Tapşırığı redaktÉ™ etdiyiniz zaman kimsÉ™ onu artıq dÉ™yiÅŸib. text_issue_conflict_resolution_cancel: MÉ™nim dÉ™yiÅŸikliklÉ™rimi ləğv etmÉ™k vÉ™ tapşırığı yenidÉ™n göstÉ™rmÉ™k %{link} permission_manage_related_issues: ÆlaqÉ™li tapşırıqların idarÉ™ edilmÉ™si field_auth_source_ldap_filter: LDAP filtri label_search_for_watchers: NÉ™zarÉ™tçilÉ™ri axtarmaq notice_account_deleted: "Sizin uçot qeydiniz tam olaraq silinib" setting_unsubscribe: "İstifadəçilÉ™rÉ™ ÅŸÉ™xsi uçot qeydlÉ™rini silmÉ™yÉ™ icazÉ™ vermÉ™k" button_delete_my_account: "MÉ™nim uçot qeydlÉ™rimi silmÉ™k" text_account_destroy_confirmation: "Sizin uçot qeydiniz bir daha bÉ™rpa edilmÉ™dÉ™n tam olaraq silinÉ™cÉ™k.\nDavam etmÉ™k istÉ™diyinizÉ™ É™minsinizmi?" error_session_expired: Sizin sessiya bitmiÅŸdir. XahiÅŸ edirik yenidÉ™n daxil olun. text_session_expiration_settings: "DiqqÉ™t: bu sazlamaların dÉ™yiÅŸmÉ™yi cari sessiyanın baÄŸlanmasına çıxara bilÉ™r." setting_session_lifetime: Sessiyanın maksimal Session maximum hÉ™yat müddÉ™ti setting_session_timeout: Sessiyanın qeyri aktivlik müddÉ™ti label_session_expiration: Sessiyanın bitmÉ™si permission_close_project: LayihÉ™ni baÄŸla / yenidÉ™n aç button_close: BaÄŸla button_reopen: YenidÉ™n aç project_status_active: aktiv project_status_closed: baÄŸlı project_status_archived: arxiv text_project_closed: Bu layihÉ™ baÄŸlıdı vÉ™ yalnız oxuma olar. notice_user_successful_create: İstifadəçi %{id} yaradıldı. field_core_fields: Standart sahÉ™lÉ™r field_timeout: Zaman aşımı (saniyÉ™ ilÉ™) setting_thumbnails_enabled: ÆlavÉ™lÉ™rin kiçik ÅŸÉ™klini göstÉ™r setting_thumbnails_size: Kiçik ÅŸÉ™killÉ™rin ölçüsü (piksel ilÉ™) label_status_transitions: Status keçidlÉ™ri label_fields_permissions: SahÉ™lÉ™rin icazÉ™lÉ™ri label_readonly: Ancaq oxumaq üçün label_required: TÉ™lÉ™b olunur text_repository_identifier_info: Yalnız kiçik latın hÉ™rflÉ™rinÉ™ (a-z), rÉ™qÉ™mlÉ™rÉ™, tire vÉ™ çicgilÉ™rÉ™ icazÉ™ verilir.
    Yadda saxladıqdan sonra identifikatoru dÉ™yiÅŸmÉ™k olmaz. field_board_parent: Ana forum label_attribute_of_project: LayihÉ™ %{name} label_attribute_of_author: Müəllif %{name} label_attribute_of_assigned_to: TÉ™yin edilib %{name} label_attribute_of_fixed_version: Æsas versiya %{name} label_copy_subtasks: Alt tapşırığın surÉ™tini çıxarmaq label_cross_project_hierarchy: With project hierarchy permission_edit_documents: Edit documents button_hide: Hide text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_any: any label_cross_project_system: With all projects label_last_n_weeks: last %{count} weeks label_in_the_past_days: in the past label_copied_to: Copied to permission_set_notes_private: Set notes as private label_in_the_next_days: in the next label_attribute_of_issue: Issue's %{name} label_any_issues_in_project: any issues in project label_cross_project_descendants: With subprojects field_private_notes: Private notes setting_jsonp_enabled: Enable JSONP support label_gantt_progress_line: Progress line permission_add_documents: Add documents permission_view_private_notes: View private notes label_attribute_of_user: User's %{name} permission_delete_documents: Delete documents field_inherit_members: Inherit members setting_cross_project_subtasks: Allow cross-project subtasks label_no_issues_in_project: no issues in project label_copied_from: Copied from setting_non_working_week_days: Non-working days label_any_issues_not_in_project: any issues not in project label_cross_project_tree: With project tree field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: CÉ™mi notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: e-poçt setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: CÉ™mi sÉ™rf olunan vaxt notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API açar setting_lost_password: Parolun bÉ™rpası mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: ÆlaqÉ™ni silmÉ™k error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/bg.yml000066400000000000000000003134301500112024600171420ustar00rootroot00000000000000# Bulgarian translation by Nikolay Solakov and Ivan Cenov bg: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d-%m-%Y" short: "%b %d" long: "%B %d, %Y" day_names: [ÐеделÑ, Понеделник, Вторник, СрÑда, Четвъртък, Петък, Събота] abbr_day_names: [Ðед, Пон, Вто, СрÑ, Чет, Пет, Съб] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Януари, Февруари, Март, Ðприл, Май, Юни, Юли, ÐвгуÑÑ‚, Септември, Октомври, Ðоември, Декември] abbr_month_names: [~, Яну, Фев, Мар, Ðпр, Май, Юни, Юли, Ðвг, Сеп, Окт, Ðое, Дек] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "half a minute" less_than_x_seconds: one: "по-малко от 1 Ñекунда" other: "по-малко от %{count} Ñекунди" x_seconds: one: "1 Ñекунда" other: "%{count} Ñекунди" less_than_x_minutes: one: "по-малко от 1 минута" other: "по-малко от %{count} минути" x_minutes: one: "1 минута" other: "%{count} минути" about_x_hours: one: "около 1 чаÑ" other: "около %{count} чаÑа" x_hours: one: "1 чаÑ" other: "%{count} чаÑа" x_days: one: "1 ден" other: "%{count} дена" about_x_months: one: "около 1 меÑец" other: "около %{count} меÑеца" x_months: one: "1 меÑец" other: "%{count} меÑеца" about_x_years: one: "около 1 година" other: "около %{count} години" over_x_years: one: "над 1 година" other: "над %{count} години" almost_x_years: one: "почти 1 година" other: "почти %{count} години" number: format: separator: "." delimiter: " " precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: байт other: байта kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "и" skip_last_comma: false activerecord: errors: template: header: one: "1 грешка попречи този %{model} да бъде запиÑан" other: "%{count} грешки попречиха този %{model} да бъде запиÑан" messages: inclusion: "не ÑъщеÑтвува в ÑпиÑъка" exclusion: "е запазено" invalid: "е невалидно" confirmation: "липÑва одобрение" accepted: "трÑбва да Ñе приеме" empty: "не може да е празно" blank: "не може да е празно" too_long: "е прекалено дълго" too_short: "е прекалено къÑо" wrong_length: "е Ñ Ð³Ñ€ÐµÑˆÐ½Ð° дължина" taken: "вече ÑъщеÑтвува" not_a_number: "не е чиÑло" not_a_date: "е невалидна дата" greater_than: "трÑбва да бъде по-голÑм[a/о] от %{count}" greater_than_or_equal_to: "трÑбва да бъде по-голÑм[a/о] от или равен[a/o] на %{count}" equal_to: "трÑбва да бъде равен[a/o] на %{count}" less_than: "трÑбва да бъде по-малък[a/o] от %{count}" less_than_or_equal_to: "трÑбва да бъде по-малък[a/o] от или равен[a/o] на %{count}" odd: "трÑбва да бъде нечетен[a/o]" even: "трÑбва да бъде четен[a/o]" greater_than_start_date: "трÑбва да е Ñлед началната дата" not_same_project: "не е от ÑÑŠÑ‰Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" circular_dependency: "Тази Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ Ñ‰Ðµ доведе до безкрайна завиÑимоÑÑ‚" cant_link_an_issue_with_a_descendant: "Една задача не може да бъде Ñвързвана към ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°" earlier_than_minimum_start_date: "не може да бъде по-рано от %{date} поради предхождащи задачи" not_a_regexp: "не е валиден регулÑрен израз" open_issue_with_closed_parent: "Отворена задача не може да бъде аÑоциирана към затворена родителÑка задача" must_contain_uppercase: "трÑбва да Ñъдържа големи букви (A-Z)" must_contain_lowercase: "трÑбва да Ñъдържа малки букви (a-z)" must_contain_digits: "трÑбва да Ñъдържа цифри (0-9)" must_contain_special_chars: "трÑбва да Ñъдържа Ñпециални Ñимволи (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Изберете general_text_No: 'Ðе' general_text_Yes: 'Да' general_text_no: 'не' general_text_yes: 'да' general_lang_name: 'Bulgarian (БългарÑки)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Профилът е обновен уÑпешно. notice_account_invalid_credentials: Ðевалиден потребител или парола. notice_account_password_updated: Паролата е уÑпешно променена. notice_account_wrong_password: Грешна парола notice_account_register_done: Профилът е Ñъздаден уÑпешно. E-mail, Ñъдържащ инÑтрукции за активиране на профила е изпратен на %{email}. notice_account_not_activated_yet: Вие не Ñте активирали Ð²Ð°ÑˆÐ¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð» вÑе още. Ðко иÑкате да получите нов e-mail за активиране, Ð¼Ð¾Ð»Ñ Ð½Ð°Ñ‚Ð¸Ñнете тази връзка. notice_account_locked: ВашиÑÑ‚ профил е блокиран. notice_can_t_change_password: Този профил е Ñ Ð²ÑŠÐ½ÑˆÐµÐ½ метод за оторизациÑ. Ðевъзможна ÑмÑна на паролата. notice_account_lost_email_sent: Изпратен ви е e-mail Ñ Ð¸Ð½Ñтрукции за избор на нова парола. notice_account_activated: Профилът ви е активиран. Вече може да влезете в Redmine. notice_successful_create: УÑпешно Ñъздаване. notice_successful_update: УÑпешно обновÑване. notice_successful_delete: УÑпешно изтриване. notice_successful_connection: УÑпешно Ñвързване. notice_file_not_found: ÐеÑъщеÑтвуваща или премеÑтена Ñтраница. notice_locking_conflict: Друг потребител Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ‚ÐµÐ·Ð¸ данни в момента. notice_not_authorized: ÐÑмате право на доÑтъп до тази Ñтраница. notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. Ðко ÑмÑтате, че това не е правилно, обърнете Ñе към админиÑтратора за разархивиране. notice_email_sent: "Изпратен e-mail на %{value}" notice_email_error: "Грешка при изпращане на e-mail (%{value})" notice_feeds_access_key_reseted: Ð’Ð°ÑˆÐ¸Ñ ÐºÐ»ÑŽÑ‡ за Atom доÑтъп беше променен. notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} задачи от %{total} избрани: %{ids}." notice_failed_to_save_time_entries: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} запиÑа за използвано време от %{total} избрани: %{ids}." notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): %{errors}." notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." notice_default_data_loaded: Примерната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ заредена уÑпешно. notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° използвано време. notice_issue_done_ratios_updated: Обновен процент на завършените задачи. notice_gantt_chart_truncated: МрежовиÑÑ‚ график е Ñъкратен, понеже броÑÑ‚ на обектите, които могат да бъдат показани е твърде голÑм (%{max}) notice_issue_successful_create: Задача %{id} е Ñъздадена. notice_issue_update_conflict: Задачата е била променена от друг потребител, докато вие Ñте Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð»Ð¸. notice_account_deleted: ВашиÑÑ‚ профил беше премахнат без възможноÑÑ‚ за възÑтановÑване. notice_user_successful_create: Потребител %{id} е Ñъздаден. notice_new_password_must_be_different: Ðовата парола трÑбва да бъде различна от Ñегашната парола notice_import_finished: "%{count} обекта бÑха импортирани" notice_import_finished_with_errors: "%{count} от общо %{total} обекта не бÑха импортирани" notice_issue_not_closable_by_open_tasks: Тази задача не може да бъде затворена, понеже има поне една отворена подзадача. notice_issue_not_closable_by_blocking_issue: Тази задача не може да бъде затворена, понеже е блокирана от поне една отворена задача. notice_issue_not_reopenable_by_closed_parent_issue: Тази задача не може да бъде отворена отново, понеже нейната родителÑка задача е затворена. notice_invalid_watcher: 'Ðевалиден наблюдател: ПотребителÑÑ‚ нÑма да приема извеÑÑ‚Ð¸Ñ Ð¿Ð¾Ð½ÐµÐ¶Ðµ той/Ñ‚Ñ Ð½Ñма доÑтъп до този обект.' error_can_t_load_default_data: "Грешка при зареждане на началната информациÑ: %{value}" error_scm_not_found: ÐеÑъщеÑтвуващ обект в хранилището. error_scm_command_failed: "Грешка при опит за ÐºÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ: %{value}" error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." error_scm_annotate_big_text_file: "Файлът не може да бъде анотиран, понеже Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ за текÑтови файлове." error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле error_can_not_delete_tracker_html: Този тракер Ñъдържа задачи и не може да бъде изтрит.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново error_can_not_archive_project: Този проект не може да бъде архивиран error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача (%{value}) error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) error_attachments_too_many: Този файл не може да бъде качен, понеже Ñ Ð½ÐµÐ³Ð¾ Ñе Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑималниÑÑ‚ брой файлове, които могат да бъдат качени заедно (%{max_number_of_files}) error_attachment_too_big: Този файл не може да бъде качен, понеже Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑималната възможна големина (%{max_size}) error_bulk_download_size_too_big: Тези файлове не могат да бъдат изтеглени заедно, понеже общиÑÑ‚ им обем Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑимално Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐ¼ (%{max_size}) error_session_expired: Вашата ÑеÑÐ¸Ñ Ðµ изтекла. ÐœÐ¾Ð»Ñ Ð²Ð»ÐµÐ·ÐµÑ‚Ðµ в Redmine отново. error_token_expired: Връзката за възÑтановÑване на паролата вече е невалидна. Опитайте отново. warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." error_password_expired: Вашата парола е Ñ Ð¸Ð·Ñ‚ÐµÐºÑŠÐ» Ñрок или админиÑтраторът изиÑква да Ñ Ñмените. error_invalid_file_encoding: Файлът нÑма валидно %{encoding} кодиране. error_invalid_csv_file_or_settings: Файлът не е CSV файл или не ÑъответÑтва на зададеното по-долу (%{value}) error_can_not_read_import_file: Грешка по време на четене на Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» error_no_data_in_file: файлът не Ñъдържа никакви данни error_attachment_extension_not_allowed: Файлове от тип %{extension} не Ñа позволени error_ldap_bind_credentials: Ðевалидни LDAP име/парола error_no_tracker_allowed_for_new_issue_in_project: Проектът нÑма тракери, за които да Ñъздавате задачи error_no_projects_with_tracker_allowed_for_new_issue: ÐÑма проекти Ñ Ñ‚Ñ€Ð°ÐºÐµÑ€Ð¸ за които можете да Ñъздавате задачи error_move_of_child_not_possible: 'Подзадача %{child} не беше премеÑтена в Ð½Ð¾Ð²Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Употребеното време не може да бъде прехвърлено на задача, коÑто ще бъде изтрита warning_fields_cleared_on_bulk_edit: Промените ще предизвикат автоматично изтриване на ÑтойноÑти от едно или повече полета на избраните обекти error_exceeds_maximum_hours_per_day: Ðе можете да запишете повече от %{max_hours} чаÑа на един ден (%{logged_hours} чаÑове вече Ñа запиÑани) error_can_not_delete_auth_source: Този режим за Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñе използва и не може да бъде премахнат. error_spent_on_future_date: Ðе е възможно да Ñе отчете изразходвано време на дата в бъдещето error_not_allowed_to_log_time_for_other_users: Вие нÑмате разрешение да запиÑвате изразходвано време за други потребители error_can_not_execute_macro_html: Грешка при изпълнение на %{name} Ð¼Ð°ÐºÑ€Ð¾Ñ (%{error}) error_macro_does_not_accept_block: Този Ð¼Ð°ÐºÑ€Ð¾Ñ Ð½Ðµ приема текÑтов блок error_childpages_macro_no_argument: Без аргумент този Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¼Ð¾Ð¶Ðµ да бъде викан Ñамо от wiki Ñтраници error_circular_inclusion: Ðамерено е циклично включване error_page_not_found: Страницата не е намерена error_filename_required: ИзиÑква Ñе име на файл error_invalid_size_parameter: Ðевалиден параметър за размер error_attachment_not_found: ПрикачениÑÑ‚ файл %{name} не е намерен error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: Изпълнението на заÑвката завърши Ñ Ð³Ñ€ÐµÑˆÐºÐ° и Ñ‚Ñ Ð±ÐµÑˆÐµ запиÑана. ÐœÐ¾Ð»Ñ Ð´Ð¾ÐºÐ»Ð°Ð´Ð²Ð°Ð¹Ñ‚Ðµ тази грешка на админиÑтратора на Redmine. mail_subject_lost_password: "Вашата парола (%{value})" mail_body_lost_password: 'За да Ñмените паролата Ñи, използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' mail_body_lost_password_validity: ÐœÐ¾Ð»Ñ Ð¸Ð¼Ð°Ð¹Ñ‚Ðµ предвид, че можете да използвате тази връзка Ñамо един път, за да промените паролата. mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° профил (%{value})" mail_body_register: 'За да активирате профила Ñи използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ %{value} профил за вход." mail_body_account_information: ИнформациÑта за профила ви mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в %{value}" mail_body_account_activation_request: "Има новорегиÑтриран потребител (%{value}), очакващ вашето одобрение:" mail_subject_reminder: "%{count} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите %{days} дни" mail_body_reminder: "%{count} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите %{days} дни:" mail_subject_wiki_content_added: "Wiki Ñтраницата '%{id}' беше добавена" mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' беше обновена" mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. mail_subject_security_notification: ИзвеÑтие за промÑна в ÑигурноÑтта mail_body_security_notification_change: ! '%{field} беше променено.' mail_body_security_notification_change_to: ! '%{field} беше променено на %{value}.' mail_body_security_notification_add: ! '%{field} %{value} беше добавено.' mail_body_security_notification_remove: ! '%{field} %{value} беше премахнато.' mail_body_security_notification_notify_enabled: Имейл Ð°Ð´Ñ€ÐµÑ %{value} вече получава извеÑтиÑ. mail_body_security_notification_notify_disabled: Имейл Ð°Ð´Ñ€ÐµÑ %{value} вече не получава извеÑтиÑ. mail_body_settings_updated: ! 'Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конфигурациÑта:' mail_body_password_updated: Вашата парола е Ñменена. mail_destroy_project_failed: Проект %{value} не беше изтрит. mail_destroy_project_successful: Проект %{value} беше изтрит уÑпешно. mail_destroy_project_with_subprojects_successful: Проект %{value} и неговите подпроекти бÑха изтрити уÑпешно. field_name: Име field_description: ОпиÑание field_summary: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ field_is_required: Задължително field_firstname: Име field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ field_mail: Имейл field_address: Имейл field_filename: Файл field_filesize: Големина field_downloads: Изтеглени файлове field_author: Ðвтор field_created_on: От дата field_updated_on: Обновена field_closed_on: Затворена field_field_format: Тип field_is_for_all: За вÑички проекти field_possible_values: Възможни ÑтойноÑти field_regexp: РегулÑрен израз field_min_length: Мин. дължина field_max_length: МакÑ. дължина field_value: СтойноÑÑ‚ field_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ field_title: Заглавие field_project: Проект field_issue: Задача field_is_member_of_group: Член на група field_status: СъÑтоÑние field_notes: Бележка field_is_closed: Затворена задача field_is_default: СъÑтоÑние по подразбиране field_tracker: Тракер field_subject: Заглавие field_due_date: Крайна дата field_assigned_to: Възложена на field_priority: Приоритет field_fixed_version: Планувана верÑÐ¸Ñ field_user: Потребител field_principal: User or Group field_role: Ð Ð¾Ð»Ñ field_homepage: Ðачална Ñтраница field_is_public: Публичен field_parent: Подпроект на field_is_in_roadmap: Да Ñе вижда ли в Пътна карта field_login: Потребител field_mail_notification: ИзвеÑÑ‚Ð¸Ñ Ð¿Ð¾ пощата field_admin: ÐдминиÑтратор field_last_login_on: ПоÑледно Ñвързване field_passwd_changed_on: Паролата е променена поÑледно на field_language: Език field_effective_date: Дата field_password: Парола field_current_password: Текуща парола field_new_password: Ðова парола field_password_confirmation: Потвърждение field_twofa_scheme: Схема за двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ field_version: ВерÑÐ¸Ñ field_type: Тип field_host: ХоÑÑ‚ field_port: Порт field_account: Профил field_base_dn: Base DN field_attr_login: Ðтрибут Login field_attr_firstname: Ðтрибут Първо име (Firstname) field_attr_lastname: Ðтрибут Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ (Lastname) field_attr_mail: Ðтрибут Email field_onthefly: Динамично Ñъздаване на потребител field_start_date: Ðачална дата field_done_ratio: "% ПрогреÑ" field_auth_source: Ðачин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ field_hide_mail: Скрий e-mail адреÑа ми field_comments: Коментар field_url: ÐÐ´Ñ€ÐµÑ field_start_page: Ðачална Ñтраница field_subproject: Подпроект field_hours: ЧаÑове field_activity: ДейноÑÑ‚ field_spent_on: Дата field_identifier: Идентификатор field_is_filter: Използва Ñе за филтър field_issue_to: Свързана задача field_delay: ОтмеÑтване field_assignable: Възможно е възлагане на задачи за тази Ñ€Ð¾Ð»Ñ field_redirect_existing_links: ПренаÑочване на ÑъщеÑтвуващи линкове field_estimated_hours: ИзчиÑлено време field_column_names: Колони field_time_entries: Log time field_time_zone: ЧаÑова зона field_searchable: С възможноÑÑ‚ за търÑене field_default_value: СтойноÑÑ‚ по подразбиране field_comments_sorting: Сортиране на коментарите field_parent_title: РодителÑка Ñтраница field_editable: Editable field_watcher: Ðаблюдател field_content: Съдържание field_group_by: Групиране на резултатите по field_sharing: Sharing field_parent_issue: РодителÑка задача field_parent_issue_subject: Заглавие на родителÑката задача field_member_of_group: Член на група field_assigned_to_role: Assignee's role field_text: ТекÑтово поле field_visible: Видим field_warn_on_leaving_unsaved: Предупреди ме, когато напуÑкам Ñтраница Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñано Ñъдържание field_issues_visibility: ВидимоÑÑ‚ на задачите field_is_private: Лична field_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване field_scm_path_encoding: Кодова таблица на пътищата (path) field_path_to_repository: Път до хранилището field_root_directory: Коренна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (папка) field_cvsroot: CVSROOT field_cvs_module: Модул field_repository_is_default: Главно хранилище field_multiple: Избор на повече от една ÑтойноÑÑ‚ field_auth_source_ldap_filter: LDAP филтър field_core_fields: Стандартни полета field_timeout: Таймаут (в Ñекунди) field_board_parent: РодителÑки форум field_private_notes: Лични бележки field_inherit_members: ÐаÑледÑване на членовете на родителÑÐºÐ¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚ field_generate_password: Генериране на парола field_must_change_passwd: Паролата трÑбва да бъде Ñменена при Ñледващото влизане в Redmine field_default_status: СъÑтоÑние по подразбиране field_users_visibility: ВидимоÑÑ‚ на потребителите field_time_entries_visibility: ВидимоÑÑ‚ на запиÑи за използвано време field_total_estimated_hours: Общо изчиÑлено време field_default_version: ВерÑÐ¸Ñ Ð¿Ð¾ подразбиране field_remote_ip: IP Ð°Ð´Ñ€ÐµÑ field_textarea_font: Шрифт за текÑтови блокове field_updated_by: Обновено от field_last_updated_by: ПоÑледно обновено от field_full_width_layout: Пълна широчина field_digest: Контролна Ñума field_default_assigned_to: Ðазначение по подразбиране field_recently_used_projects: Брой на поÑледно използваните проекти в ÑпиÑъка за бърз избор на проекти field_history_default_tab: Таб по подразбиране в иÑториÑта на задачите field_unique_id: Уникален ID field_toolbar_language_options: Езици за избор в
     бутон
      field_twofa_required: ИзиÑкване за двуфакторна автентикациÑ
      field_default_issue_query: ЗаÑвка по подразбиране
      field_default_project_query: ЗаÑвка по подразбиране за проекта
      field_default_time_entry_activity: ДейноÑÑ‚ по подразбиране за изразходвано време
      field_estimated_remaining_hours: ИзчиÑлено оÑтаващо време
      field_any_searchable: Ð’Ñички обекти Ñ Ñ‚ÐµÐºÑÑ‚ (заглавие, опиÑание, коментари на задачи, потребителÑки полета)
      field_last_activity_date: ПоÑледна активноÑÑ‚
      field_thousands_delimiter: Раделител на хилÑдите
    
      setting_app_title: Заглавие
      setting_welcome_text: Допълнителен текÑÑ‚
      setting_default_language: Език по подразбиране
      setting_login_required: ИзиÑкване за вход в Redmine
      setting_self_registration: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ потребители
      setting_show_custom_fields_on_registration: Показване на потребителÑките полета при региÑтрациÑта
      setting_attachment_max_size: МакÑимална големина на прикачен файл
      setting_bulk_download_max_size: МакÑимален обем за групово изтеглÑне
      setting_issues_export_limit: МакÑимален брой задачи за екÑпорт
      setting_mail_from: E-mail Ð°Ð´Ñ€ÐµÑ Ð·Ð° емиÑии
      setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML)
      setting_host_name: ХоÑÑ‚
      setting_text_formatting: Форматиране на текÑта
      setting_wiki_compression: КомпреÑиране на Wiki иÑториÑта
      setting_feeds_limit: МакÑимален брой запиÑи в ATOM емиÑии
      setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране
      setting_autofetch_changesets: Ðвтоматично извличане на ревизиите
      setting_sys_api_enabled: Разрешаване на WS за управление
      setting_commit_ref_keywords: ОтбелÑзващи ключови думи
      setting_commit_fix_keywords: Приключващи ключови думи
      setting_autologin: Ðвтоматичен вход
      setting_date_format: Формат на датата
      setting_time_format: Формат на чаÑа
      setting_timespan_format: Формат на интервал от време
      setting_cross_project_issue_relations: Релации на задачи между проекти
      setting_cross_project_subtasks: Подзадачи от други проекти
      setting_issue_list_default_columns: Показвани колони по подразбиране
      setting_repositories_encodings: Кодова таблица на прикачените файлове и хранилищата
      setting_emails_header: Email header
      setting_emails_footer: ПодтекÑÑ‚ за e-mail
      setting_protocol: Протокол
      setting_per_page_options: Опции за Ñтраниране
      setting_user_format: ПотребителÑки формат
      setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚
      setting_display_subprojects_issues: Задачите от подпроектите по подразбиране Ñе показват в главните проекти
      setting_enabled_scm: Разрешена SCM
      setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове
      setting_mail_handler_enable_regex: Разрешаванен на регулÑрни изрази
      setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и
      setting_mail_handler_api_key: API ключ за входÑщи e-mail-и
      setting_mail_handler_preferred_body_part: Предпочитана чаÑÑ‚ от multipart (HTML) имейли
      setting_sys_api_key: API ключ за хранилища
      setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори
      setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar
      setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar
      setting_diff_max_lines_displayed: МакÑимален брой показвани diff редове
      setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline
      setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла
      setting_password_max_age: ИзиÑкване за ÑмÑна на паролата Ñлед
      setting_password_min_length: Минимална дължина на парола
      setting_password_required_char_classes: Задължителни Ñимволни клаÑове за пароли
      setting_lost_password: Забравена парола
      setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор
      setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект
      setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ
      setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ'
      setting_issue_done_ratio_interval: Done ratio options interval
      setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите
      setting_start_of_week: Първи ден на Ñедмицата
      setting_rest_api_enabled: Разрешаване на REST web ÑървиÑ
      setting_cache_formatted_text: Кеширане на форматираните текÑтове
      setting_default_notification_option: Подразбиращ Ñе начин за извеÑÑ‚Ñване
      setting_commit_logtime_enabled: Разрешаване на отчитането на работното време
      setting_commit_logtime_activity_id: ДейноÑÑ‚ при отчитане на работното време
      setting_gantt_items_limit: МакÑимален брой обекти, които да Ñе показват в мрежов график
      setting_gantt_months_limit: МакÑимален брой меÑеци, които да Ñе показват в мрежов график
      setting_issue_group_assignment: Разрешено назначаването на задачи на групи
      setting_default_issue_start_date_to_creation_date: Ðачална дата на новите задачи по подразбиране да бъде днешната дата
      setting_commit_cross_project_ref: ОтбелÑзване и приключване на задачи от други проекти, неÑвързани Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ñ‚Ð¾ хранилище
      setting_unsubscribe: Потребителите могат да премахват профилите Ñи
      setting_session_lifetime: МакÑимален живот на ÑеÑиите
      setting_session_timeout: Таймаут за неактивноÑÑ‚ преди прекратÑване на ÑеÑиите
      setting_thumbnails_enabled: Показване на миниатюри на прикачените изображениÑ
      setting_thumbnails_size: Размер на миниатюрите (в пикÑели)
      setting_non_working_week_days: Ðе работни дни
      setting_jsonp_enabled: Разрешаване на поддръжка на JSONP
      setting_default_projects_tracker_ids: Тракери по подразбиране за нови проекти
      setting_mail_handler_excluded_filenames: Имена на прикачени файлове, които да Ñе пропуÑкат при приемане на e-mail-и (например *.vcf, companylogo.gif).
      setting_force_default_language_for_anonymous: Задължително език по подразбиране за анонимните потребители
      setting_force_default_language_for_loggedin: Задължително език по подразбиране за потребителите, влезли в Redmine
      setting_link_copied_issue: Свързване на задачите при копиране
      setting_copy_attachments_on_issue_copy: Копиране на файловете при копиране
      setting_max_additional_emails: МакÑимален брой на допълнителните имейл адреÑи
      setting_email_domains_allowed: Разрешени имейл домейни
      setting_email_domains_denied: Забранени имейл домейни
      setting_search_results_per_page: Резултати от търÑене на Ñтраница
      setting_attachment_extensions_allowed: Позволени типове на файлове
      setting_attachment_extensions_denied: Разрешени типове на файлове
      setting_new_item_menu_tab: Меню-елемент за добавÑне на нови обекти (+)
      setting_commit_logs_formatting: Прилагане на форматиране за ÑъобщениÑта при поверÑване
      setting_timelog_required_fields: Задължителни полета за запиÑи за изразходваното време
      setting_close_duplicate_issues: ЗатварÑне на дублираните задачи автоматично
      setting_time_entry_list_defaults: ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ подразбиране за запиÑите за изразходваното време
      setting_timelog_accept_0_hours: Приемане на запиÑи Ñ 0 чаÑа
      setting_timelog_max_hours_per_day: МакÑимум чаÑове, които могат да бъдат запиÑани за ден и за потребител
      setting_timelog_accept_future_dates: Разрешено отчитане на изразходвано време на дата в бъдещето
      setting_show_status_changes_in_mail_subject: Показване на промените на ÑÑŠÑтоÑнието на задачите в поле ОтноÑно на имейлите
      setting_project_list_defaults: Проектен ÑпиÑък
      setting_twofa: Двуфакторна автентикациÑ
    
      permission_add_project: Създаване на проект
      permission_add_subprojects: Създаване на подпроекти
      permission_edit_project: Редактиране на проект
      permission_close_project: ЗатварÑне / отварÑне на проект
      permission_delete_project: Изтриване на проект
      permission_select_project_publicity: УÑтановÑване на проект публичен или чаÑтен
      permission_select_project_modules: Избор на проектни модули
      permission_manage_members: Управление на членовете (на екип)
      permission_manage_project_activities: Управление на дейноÑтите на проекта
      permission_manage_versions: Управление на верÑиите
      permission_manage_categories: Управление на категориите
      permission_view_issues: Разглеждане на задачите
      permission_add_issues: ДобавÑне на задачи
      permission_edit_issues: Редактиране на задачи
      permission_edit_own_issues: Редактиране на ÑобÑтвените задачи
      permission_copy_issues: Копиране на задачи
      permission_manage_issue_relations: Управление на връзките между задачите
      permission_set_own_issues_private: УÑтановÑване на ÑобÑтвените задачи публични или лични
      permission_set_issues_private: УÑтановÑване на задачите публични или лични
      permission_add_issue_notes: ДобавÑне на бележки
      permission_edit_issue_notes: Редактиране на бележки
      permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки
      permission_view_private_notes: Разглеждане на лични бележки
      permission_set_notes_private: УÑтановÑване на бележките лични
      permission_delete_issues: Изтриване на задачи
      permission_manage_public_queries: Управление на публичните заÑвки
      permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries)
      permission_view_gantt: Разглеждане на мрежов график
      permission_view_calendar: Разглеждане на календари
      permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸
      permission_add_issue_watchers: ДобавÑне на наблюдатели
      permission_delete_issue_watchers: Изтриване на наблюдатели
      permission_log_time: Log spent time
      permission_view_time_entries: Разглеждане на запиÑите за изразходваното време
      permission_edit_time_entries: Редактиране на запиÑите за изразходваното време
      permission_edit_own_time_entries: Редактиране на ÑобÑтвените запиÑи за изразходваното време
      permission_view_news: Разглеждане на новини
      permission_manage_news: Управление на новини
      permission_comment_news: Коментиране на новини
      permission_view_documents: Разглеждане на документи
      permission_add_documents: ДобавÑне на документи
      permission_edit_documents: Редактиране на документи
      permission_delete_documents: Изтриване на документи
      permission_manage_files: Управление на файлове
      permission_view_files: Разглеждане на файлове
      permission_manage_wiki: Управление на wiki
      permission_rename_wiki_pages: Преименуване на wiki Ñтраници
      permission_delete_wiki_pages: Изтриване на wiki Ñтраници
      permission_view_wiki_pages: Разглеждане на wiki
      permission_view_wiki_edits: Разглеждане на wiki иÑториÑ
      permission_edit_wiki_pages: Редактиране на wiki Ñтраници
      permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki Ñтраници
      permission_view_wiki_page_watchers: Разглеждане на ÑпиÑъци Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ на wiki Ñтраници
      permission_add_wiki_page_watchers: ДобавÑне на наблюдатели на wiki Ñтраници
      permission_delete_wiki_page_watchers: Изтриване на наблюдатели на wiki Ñтраници
      permission_protect_wiki_pages: Заключване на wiki Ñтраници
      permission_manage_repository: Управление на хранилища
      permission_browse_repository: Разглеждане на хранилища
      permission_view_changesets: Разглеждане на changesets
      permission_commit_access: ПоверÑване
      permission_manage_boards: Управление на boards
      permission_view_messages: Разглеждане на ÑъобщениÑ
      permission_add_messages: Публикуване на ÑъобщениÑ
      permission_edit_messages: Редактиране на ÑъобщениÑ
      permission_edit_own_messages: Редактиране на ÑобÑтвени ÑъобщениÑ
      permission_delete_messages: Изтриване на ÑъобщениÑ
      permission_delete_own_messages: Изтриване на ÑобÑтвени ÑъобщениÑ
      permission_view_message_watchers: Разглеждане на ÑпиÑъка на наблюдателите на ÑъобщениÑ
      permission_add_message_watchers: ДобавÑне на наблюдатели на ÑъобщениÑ
      permission_delete_message_watchers: Изтриване на наблюдатели на ÑъобщениÑ
      permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници
      permission_manage_subtasks: Управление на подзадачите
      permission_manage_related_issues: Управление на връзките между задачи и ревизии
      permission_import_issues: Импорт на задачи
      permission_log_time_for_other_users: ЗапиÑване на изразходвано време за други потребители
    
      project_module_issue_tracking: Тракинг
      project_module_time_tracking: ОтделÑне на време
      project_module_news: Ðовини
      project_module_documents: Документи
      project_module_files: Файлове
      project_module_wiki: Wiki
      project_module_repository: Хранилище
      project_module_boards: Форуми
      project_module_calendar: Календар
      project_module_gantt: Мрежов график
    
      label_user: Потребител
      label_user_plural: Потребители
      label_user_new: Ðов потребител
      label_user_anonymous: Ðнонимен
      label_project: Проект
      label_project_new: Ðов проект
      label_project_plural: Проекти
      label_x_projects:
        zero:  0 проекта
        one:   1 проект
        other: "%{count} проекта"
      label_project_all: Ð’Ñички проекти
      label_project_latest: ПоÑледни проекти
      label_issue: Задача
      label_issue_new: Ðова задача
      label_issue_plural: Задачи
      label_issue_view_all: Ð’Ñички задачи
      label_issues_by: "Задачи по %{value}"
      label_issue_added: Добавена задача
      label_issue_updated: Обновена задача
      label_issue_note_added: Добавена бележка
      label_issue_status_updated: Обновено ÑÑŠÑтоÑние
      label_issue_assigned_to_updated: Задачата е Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½ нов изпълнител
      label_issue_priority_updated: Обновен приоритет
      label_issue_fixed_version_updated: Променена верÑиÑ
      label_issue_attachment_added: Добавен файл
      label_document: Документ
      label_document_new: Ðов документ
      label_document_plural: Документи
      label_document_added: Добавен документ
      label_role: РолÑ
      label_role_plural: Роли
      label_role_new: Ðова ролÑ
      label_role_and_permissions: Роли и права
      label_role_anonymous: Ðнонимен
      label_role_non_member: Ðе член
      label_member: Член
      label_member_new: Ðов член
      label_member_plural: Членове
      label_tracker: Тракер
      label_tracker_plural: Тракери
      label_tracker_all: Ð’Ñички тракери
      label_tracker_new: Ðов тракер
      label_workflow: Работен процеÑ
      label_issue_status: СъÑтоÑние на задача
      label_issue_status_plural: СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи
      label_issue_status_new: Ðово ÑÑŠÑтоÑние
      label_issue_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°
      label_issue_category_plural: Категории задачи
      label_issue_category_new: Ðова категориÑ
      label_custom_field: ПотребителÑко поле
      label_custom_field_plural: ПотребителÑки полета
      label_custom_field_new: Ðово потребителÑко поле
      label_enumerations: СпиÑъци
      label_enumeration_new: Ðова ÑтойноÑÑ‚
      label_information: ИнформациÑ
      label_information_plural: ИнформациÑ
      label_register: РегиÑтрациÑ
      label_password_lost: Забравена парола
      label_password_required: Потвърдете вашата парола, за да продължите
      label_home: Ðачало
      label_my_page: Лична Ñтраница
      label_my_account: Профил
      label_my_projects: Проекти, в които учаÑтвам
      label_administration: ÐдминиÑтрациÑ
      label_login: Вход
      label_logout: Изход
      label_help: Помощ
      label_reported_issues: Публикувани задачи
      label_assigned_issues: Ðазначени задачи
      label_assigned_to_me_issues: Възложени на мен
      label_updated_issues: Задачи Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð¸
      label_registered_on: РегиÑтрациÑ
      label_activity: ДейноÑÑ‚
      label_user_activity: "ÐктивноÑÑ‚ на %{value}"
      label_new: Ðов
      label_logged_as: Здравейте,
      label_environment: Среда
      label_authentication: УдоÑтоверÑване
      label_auth_source: Ðачин на удоÑтоверÑване
      label_auth_source_new: Ðов начин на удоÑтоверÑване
      label_auth_source_plural: Ðачини на удоÑтоверÑване
      label_subproject_plural: Подпроекти
      label_subproject_new: Ðов подпроект
      label_and_its_subprojects: "%{value} и неговите подпроекти"
      label_min_max_length: Минимална - макÑимална дължина
      label_list: СпиÑък
      label_date: Дата
      label_integer: ЦелочиÑлен
      label_float: Дробно
      label_boolean: ЧекбокÑ
      label_string: ТекÑÑ‚
      label_text: Дълъг текÑÑ‚
      label_attribute: Ðтрибут
      label_attribute_plural: Ðтрибути
      label_no_data: ÐÑма изходни данни
      label_no_preview: ÐÑма наличен преглед (preview)
      label_no_preview_alternative_html: ÐÑма наличен преглед (preview). %{link} файл вмеÑто това.
      label_no_preview_download: ИзтеглÑне
      label_change_status: ПромÑна на ÑÑŠÑтоÑнието
      label_history: ИÑториÑ
      label_attachment: Файл
      label_attachment_new: Ðов файл
      label_attachment_delete: Изтриване
      label_attachment_plural: Файлове
      label_file_added: Добавен файл
      label_attachment_description: ОпиÑание на файла
      label_attachment_summary:
        zero: "%{filename}"
        one: "%{filename} и 1 файл"
        other: "%{filename} и %{count} файла"
      label_report: Справка
      label_report_plural: Справки
      label_news: Ðовини
      label_news_new: Ðова новина
      label_news_plural: Ðовини
      label_news_latest: ПоÑледни новини
      label_news_view_all: Виж вÑички
      label_news_added: Добавена новина
      label_news_comment_added: Добавен коментар към новина
      label_settings: ÐаÑтройки
      label_overview: Общ изглед
      label_version: ВерÑиÑ
      label_version_new: Ðова верÑиÑ
      label_version_plural: ВерÑии
      label_version_and_files: ВерÑии (%{count}) и файлове
      label_close_versions: ЗатварÑне на завършените верÑии
      label_confirmation: Одобрение
      label_export_to: ЕкÑпорт към
      label_read: Read...
      label_public_projects: Публични проекти
      label_open_issues: отворена
      label_open_issues_plural: отворени
      label_closed_issues: затворена
      label_closed_issues_plural: затворени
      label_x_open_issues_abbr:
        zero:  0 отворени
        one:   1 отворена
        other: "%{count} отворени"
      label_x_closed_issues_abbr:
        zero:  0 затворени
        one:   1 затворена
        other: "%{count} затворени"
      label_x_issues:
        zero:  0 задачи
        one:   1 задача
        other: "%{count} задачи"
      label_total: Общо
      label_total_plural: Общо
      label_total_time: Общо
      label_permissions: Права
      label_current_status: Текущо ÑÑŠÑтоÑние
      label_new_statuses_allowed: Позволени ÑÑŠÑтоÑниÑ
      label_all: вÑички
      label_any: без значение
      label_none: никакви
      label_nobody: никой
      label_next: Следващ
      label_previous: Предишен
      label_used_by: Използва Ñе от
      label_details: Детайли
      label_add_note: ДобавÑне на бележка
      label_calendar: Календар
      label_months_from: меÑеца от
      label_gantt: Мрежов график
      label_internal: Вътрешен
      label_last_changes: "поÑледни %{count} промени"
      label_change_view_all: Виж вÑички промени
      label_comment: Коментар
      label_comment_plural: Коментари
      label_x_comments:
        zero: 0 коментара
        one: 1 коментар
        other: "%{count} коментара"
      label_comment_add: ДобавÑне на коментар
      label_comment_added: Добавен коментар
      label_comment_delete: Изтриване на коментари
      label_query: ПотребителÑка Ñправка
      label_query_plural: ПотребителÑки Ñправки
      label_query_new: Ðова заÑвка
      label_my_queries: Моите заÑвки
      label_filter_add: Добави филтър
      label_filter_plural: Филтри
      label_equals: е
      label_not_equals: не е
      label_in_less_than: Ñлед по-малко от
      label_in_more_than: Ñлед повече от
      label_in_the_next_days: в Ñледващите
      label_in_the_past_days: в предишните
      label_greater_or_equal: ">="
      label_less_or_equal: <=
      label_between: между
      label_in: в Ñледващите
      label_today: днеÑ
      label_yesterday: вчера
      label_tomorrow: утре
      label_this_week: тази Ñедмица
      label_last_week: поÑледната Ñедмица
      label_next_week: Ñледващата Ñедмица
      label_last_n_weeks: поÑледните %{count} Ñедмици
      label_last_n_days: "поÑледните %{count} дни"
      label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец
      label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец
      label_next_month: ÑледващиÑÑ‚ меÑец
      label_this_year: текущата година
      label_date_range: Период
      label_less_than_ago: преди по-малко от
      label_more_than_ago: преди повече от
      label_ago: преди
      label_contains: Ñъдържа
      label_contains_any_of: Ñъдържа което и да е от
      label_not_contains: не Ñъдържа
      label_starts_with: започва Ñ
      label_ends_with: завършва Ñ
      label_any_issues_in_project: задачи от проект
      label_any_issues_not_in_project: задачи, които не Ñа в проект
      label_no_issues_in_project: никакви задачи в проект
      label_any_open_issues: отворени задачи
      label_no_open_issues: без отворени задачи
      label_has_been: нÑкога е било
      label_has_never_been: никога не е било
      label_changed_from: променено от
      label_day_plural: дни
      label_repository: Хранилище
      label_repository_new: Ðово хранилище
      label_repository_plural: Хранилища
      label_branch: работен вариант
      label_tag: ВерÑиÑ
      label_revision: РевизиÑ
      label_revision_plural: Ревизии
      label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}
      label_associated_revisions: ÐÑоциирани ревизии
      label_added: добавено
      label_modified: променено
      label_copied: копирано
      label_renamed: преименувано
      label_deleted: изтрито
      label_latest_revision: ПоÑледна ревизиÑ
      label_latest_revision_plural: ПоÑледни ревизии
      label_view_revisions: Виж ревизиите
      label_view_all_revisions: Разглеждане на вÑички ревизии
      label_view_previous_annotation: Показване на анотациÑта преди промÑната
      label_x_revisions: "%{count} ревизии"
      label_max_size: МакÑимална големина
      label_roadmap: Пътна карта
      label_roadmap_due_in: "Излиза Ñлед %{value}"
      label_roadmap_overdue: "%{value} закъÑнение"
      label_roadmap_no_issues: ÐÑма задачи за тази верÑиÑ
      label_search: ТърÑене
      label_result_plural: Pезултати
      label_all_words: Ð’Ñички думи
      label_wiki: Wiki
      label_wiki_edit: Wiki редакциÑ
      label_wiki_edit_plural: Wiki редакции
      label_wiki_page: Wiki Ñтраница
      label_wiki_page_plural: Wiki Ñтраници
      label_wiki_page_new: Ðова wiki Ñтраница
      label_index_by_title: ИндекÑ
      label_index_by_date: Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ дата
      label_current_version: Текуща верÑиÑ
      label_preview: Преглед
      label_feed_plural: ЕмиÑии
      label_changes_details: Подробни промени
      label_issue_tracking: Тракинг
      label_spent_time: Отделено време
      label_total_spent_time: Общо употребено време
      label_f_hour: "%{value} чаÑ"
      label_f_hour_plural: "%{value} чаÑа"
      label_f_hour_short: '%{value} чаÑ'
      label_time_tracking: ОтделÑне на време
      label_change_plural: Промени
      label_statistics: СтатиÑтика
      label_commits_per_month: Ревизии по меÑеци
      label_commits_per_author: Ревизии по автор
      label_diff: diff
      label_view_diff: Виж разликите
      label_diff_inline: хоризонтално
      label_diff_side_by_side: вертикално
      label_options: Опции
      label_option_auto_lang: автоматично
      label_copy_workflow_from: Копирай Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¾Ñ‚
      label_permissions_report: Справка за права
      label_watched_issues: Ðаблюдавани задачи
      label_related_issues: Свързани задачи
      label_applied_status: УÑтановено ÑÑŠÑтоÑние
      label_loading: Зареждане...
      label_relation_new: Ðова релациÑ
      label_relation_delete: Изтриване на релациÑ
      label_relates_to: Ñвързана ÑÑŠÑ
      label_delete_link_to_subtask: Изтриване на релациÑ
      label_duplicates: дублира
      label_duplicated_by: дублирана от
      label_blocks: блокира
      label_blocked_by: блокирана от
      label_precedes: предшеÑтва
      label_follows: изпълнÑва Ñе Ñлед
      label_copied_to: копирана в
      label_copied_from: копирана от
      label_stay_logged_in: Запомни ме
      label_disabled: забранено
      label_optional: по избор
      label_show_completed_versions: Показване на реализирани верÑии
      label_me: аз
      label_board: Форум
      label_board_new: Ðов форум
      label_board_plural: Форуми
      label_board_locked: Заключена
      label_board_sticky: Sticky
      label_topic_plural: Теми
      label_message_plural: СъобщениÑ
      label_message_last: ПоÑледно Ñъобщение
      label_message_new: Ðова тема
      label_message_posted: Добавено Ñъобщение
      label_reply_plural: Отговори
      label_send_information: Изпращане на информациÑта до потребителÑ
      label_year: Година
      label_month: МеÑец
      label_week: Седмица
      label_date_from: От
      label_date_to: До
      label_language_based: Ð’ завиÑимоÑÑ‚ от езика
      label_sort_by: "Сортиране по %{value}"
      label_send_test_email: Изпращане на теÑтов e-mail
      label_feeds_access_key: Atom access ключ
      label_missing_feeds_access_key: ЛипÑващ Atom ключ за доÑтъп
      label_feeds_access_key_created_on: "%{value} от Ñъздаването на Atom ключа"
      label_module_plural: Модули
      label_added_time_by: "Публикувана от %{author} преди %{age}"
      label_updated_time_by: "Обновена от %{author} преди %{age}"
      label_updated_time: "Обновена преди %{value}"
      label_jump_to_a_project: Проект...
      label_file_plural: Файлове
      label_changeset_plural: Ревизии
      label_default_columns: По подразбиране
      label_no_change_option: (Без промÑна)
      label_bulk_edit: Групово редактиране
      label_bulk_edit_selected_issues: Групово редактиране на задачи
      label_bulk_edit_selected_time_entries: Групово редактиране на запиÑи за използвано време
      label_theme: Тема
      label_default: По подразбиране
      label_search_titles_only: Само в заглавиÑта
      label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам"
      label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..."
      label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)"
      label_user_mail_option_only_my_events: Само за неща, в които Ñъм включен/а
      label_user_mail_option_only_assigned: Само за неща, които наблюдавам или Ñа назначени на мен
      label_user_mail_option_only_owner: Само за неща, които наблюдавам или Ñъм техен ÑобÑтвеник
      label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени"
      label_user_mail_notify_about_high_priority_issues_html: ИзвеÑÑ‚Ñвайте ме и за задачи Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ %{prio} или по-голÑм
      label_registration_activation_by_email: активиране на профила по email
      label_registration_manual_activation: ръчно активиране
      label_registration_automatic_activation: автоматично активиране
      label_display_per_page: "Ðа Ñтраница по: %{value}"
      label_age: ВъзраÑÑ‚
      label_change_properties: ПромÑна на наÑтройки
      label_general: ОÑновни
      label_scm: SCM (СиÑтема за контрол на верÑиите)
      label_plugins: Плъгини
      label_ldap: LDAP
      label_ldap_authentication: LDAP удоÑтоверÑване
      label_ldaps_verify_none: LDAP удоÑтоверÑване
      label_ldaps_verify_peer: LDAPS
      label_ldaps_warning: Препоръчително е да Ñе използва криптирана LDAPS връзка ÑÑŠÑ Ñертификат за предотвратÑване на намеÑа по време на процеÑа на удоÑтоверÑване.
      label_downloads_abbr: D/L
      label_optional_description: Ðезадължително опиÑание
      label_add_another_file: ДобавÑне на друг файл
      label_auto_watch_on: Ðвтоматично включване в наблюдателите
      label_auto_watch_on_issue_created: Задачи, които Ñъм Ñъздал
      label_auto_watch_on_issue_contributed_to: Задачи, в които имам учаÑтие
      label_preferences: ПредпочитаниÑ
      label_chronological_order: Хронологичен ред
      label_reverse_chronological_order: Обратен хронологичен ред
      label_incoming_emails: ВходÑщи e-mail-и
      label_generate_key: Генериране на ключ
      label_issue_watchers: Ðаблюдатели
      label_message_watchers: Ðаблюдатели
      label_wiki_page_watchers: Ðаблюдатели
      label_example: Пример
      label_display: Показване
      label_sort: Сортиране
      label_ascending: ÐараÑтващ
      label_descending: ÐамалÑващ
      label_date_from_to: От %{start} до %{end}
      label_days_to_html: "%{days} дена до %{date} включително"
      label_wiki_content_added: Wiki Ñтраница беше добавена
      label_wiki_content_updated: Wiki Ñтраница беше обновена
      label_group: Група
      label_group_plural: Групи
      label_group_new: Ðова група
      label_group_anonymous: Ðнонимни потребители
      label_group_non_member: Потребители, които не Ñа членове на проекта
      label_time_entry_plural: Използвано време
      label_version_sharing_none: Ðе Ñподелен
      label_version_sharing_descendants: С подпроекти
      label_version_sharing_hierarchy: С проектна йерархиÑ
      label_version_sharing_tree: С дърво на проектите
      label_version_sharing_system: С вÑички проекти
      label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи
      label_copy_source: Източник
      label_copy_target: Цел
      label_copy_same_as_target: Също като целта
      label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер
      label_api_access_key: API ключ за доÑтъп
      label_missing_api_access_key: ЛипÑващ API ключ
      label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди %{value}
      label_profile: Профил
      label_subtask: Подзадача
      label_subtask_plural: Подзадачи
      label_project_copy_notifications: Изпращане на e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта
      label_import_notifications: Изпращане e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на импортирането
      label_principal_search: "ТърÑене на потребител или група:"
      label_user_search: "ТърÑене на потребител:"
      label_additional_workflow_transitions_for_author: Позволени Ñа допълнителни преходи, когато потребителÑÑ‚ е авторът
      label_additional_workflow_transitions_for_assignee:  Позволени Ñа допълнителни преходи, когато потребителÑÑ‚ е назначениÑÑ‚ към задачата
      label_issues_visibility_all: Ð’Ñички задачи
      label_issues_visibility_public: Ð’Ñички не-лични задачи
      label_issues_visibility_own: Задачи, Ñъздадени от или назначени на потребителÑ
      label_git_report_last_commit: Извеждане на поÑледното поверÑване за файлове и папки
      label_parent_revision: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»
      label_child_revision: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ Ð½Ð°Ñледник
      label_export_options: "%{export_format} опции за екÑпорт"
      label_copy_attachments: Копиране на прикачените файлове
      label_copy_subtasks: Копиране на подзадачите
      label_item_position: "%{position}/%{count}"
      label_completed_versions: Завършени верÑии
      label_search_for_watchers: ТърÑене на потребители за наблюдатели
      label_session_expiration: Изтичане на ÑеÑиите
      label_status_transitions: Преходи между ÑÑŠÑтоÑниÑта
      label_fields_permissions: ВидимоÑÑ‚ на полетата
      label_readonly: Само за четене
      label_required: Задължително
      label_required_lower: задължително
      label_required_administrators: изиÑквано за админиÑтратори
      label_hidden: Скрит
      label_attribute_of_project: Project's %{name}
      label_attribute_of_issue: Issue's %{name}
      label_attribute_of_author: Author's %{name}
      label_attribute_of_assigned_to: Assignee's %{name}
      label_attribute_of_user: User's %{name}
      label_attribute_of_fixed_version: Target version's %{name}
      label_attribute_of_object: "%{name} на %{object_name}"
      label_cross_project_descendants: С подпроекти
      label_cross_project_tree: С дърво на проектите
      label_cross_project_hierarchy: С проектна йерархиÑ
      label_cross_project_system: С вÑички проекти
      label_gantt_progress_line: Ð›Ð¸Ð½Ð¸Ñ Ð½Ð° изпълнението
      label_visibility_private: лични (Ñамо за мен)
      label_visibility_roles: Ñамо за тези роли
      label_visibility_public: за вÑички потребители
      label_link: Връзка
      label_only: Ñамо
      label_drop_down_list: drop-down ÑпиÑък
      label_checkboxes: чек-бокÑ
      label_radio_buttons: радио-бутони
      label_link_values_to: URL (опциÑ)
      label_custom_field_select_type: "Изберете тип на обект, към който потребителÑкото поле да бъде аÑоциирано"
      label_check_for_updates: Проверка за нови верÑии
      label_latest_compatible_version: ПоÑледна ÑъвмеÑтима верÑиÑ
      label_unknown_plugin: Ðепознат плъгин
      label_add_projects: ДобавÑне на проекти
      label_users_visibility_all: Ð’Ñички активни потребители
      label_users_visibility_members_of_visible_projects: Членовете на видимите проекти
      label_edit_attachments: Редактиране на прикачените файлове
      label_download_all_attachments: ИзтеглÑне на вÑички файлове
      label_link_copied_issue: Създаване на връзка между задачите
      label_ask: Питане преди копиране
      label_search_attachments_yes: ТърÑене на имената на прикачените файлове и техните опиÑаниÑ
      label_search_attachments_no: Да не Ñе претърÑват прикачените файлове
      label_search_attachments_only: ТърÑене Ñамо на прикачените файлове
      label_search_open_issues_only: ТърÑене Ñамо на задачите
      label_email_address_plural: Имейли
      label_email_address_add: ДобавÑне на имейл адреÑ
      label_enable_notifications: Разрешаване на извеÑтиÑта
      label_disable_notifications: Забрана на извеÑтиÑта
      label_blank_value: празно
      label_parent_task_attributes: Ðтрибути на родителÑките задачи
      label_parent_task_attributes_derived: ИзчиÑлени от подзадачите
      label_parent_task_attributes_independent: ÐезавиÑими от подзадачите
      label_time_entries_visibility_all: Ð’Ñички запиÑи за използвано време
      label_time_entries_visibility_own: ЗапиÑи за използвано време Ñъздадени от потребителÑ
      label_member_management: Управление на членовете
      label_member_management_all_roles: Ð’Ñички роли
      label_member_management_selected_roles_only: Само тези роли
      label_import_issues: Импорт на задачи
      permission_import_time_entries: Импортиране на запиÑи за използвано време
      label_select_file_to_import: Файл за импортиране
      label_fields_separator: Разделител между полетата
      label_fields_wrapper: Разделител в полетата (wrapper)
      label_encoding: Кодиране
      label_comma_char: ЗапетаÑ
      label_semi_colon_char: Точка и запетаÑ
      label_quote_char: Кавичка
      label_double_quote_char: Двойна кавичка
      label_fields_mapping: СъответÑтвие между полетата
      label_relations_mapping: СъответÑтвие между релациите
      label_file_content_preview: Предварителен преглед на Ñъдържанието на файла
      label_create_missing_values: Създаване на липÑващи ÑтойноÑти
      label_api: API
      label_field_format_enumeration: СпиÑък ключ/ÑтойноÑÑ‚
      label_default_values_for_new_users: СтойноÑти по подразбиране за нови потребители
      label_relations: Релации
      label_new_project_issue_tab_enabled: Показване на меню-елемент "Ðова задача"
      label_new_object_tab_enabled: Показване на изпадащ ÑпиÑък за меню-елемент "+"
      label_table_of_contents: Съдържание
      label_font_default: Шрифт по подразбиране
      label_font_monospace: Monospaced шрифт
      label_font_proportional: Пропорционален шрифт
      label_optgroup_bookmarks: Отметки
      label_optgroup_recents: ПоÑледно използвани
      label_last_notes: ПоÑледни коментари
      label_default_queries:
        for_all_projects: За вÑички проекти
        for_current_project: За този проект
        for_all_users: За вÑички потребители
        for_this_user: For this user
      label_nothing_to_preview: ÐÑма нищо за предварителен преглед
      label_inherited_from_parent_project: ÐаÑледени от родителÑÐºÐ¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚
      label_inherited_from_group: ÐаÑледени от група %{name}
      label_trackers_description: ОпиÑание на тракерите
      label_open_trackers_description: Показване на опиÑаниÑта на вÑички тракери
      label_issue_statuses_description: ОпиÑание на ÑÑŠÑтоÑниÑта на задачите
      label_open_issue_statuses_description: Показване на вÑички опиÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑÑŠÑтоÑниÑта на задачите
      label_preferred_body_part_text: ТекÑÑ‚
      label_preferred_body_part_html: HTML
      label_issue_history_properties: Промени в ÑÑŠÑтоÑнието (ÑÑŠÑтоÑние, верÑии, категории, процент на изпълнение...)
      label_issue_history_notes: Коментари
      label_last_tab_visited: ПоÑледно поÑетен таб
      label_password_char_class_uppercase: големи букви
      label_password_char_class_lowercase: малки букви
      label_password_char_class_digits: цифри
      label_password_char_class_special_chars: Ñпециални Ñимволи
      label_display_type: Показване на резултатите като
      label_display_type_list: СпиÑък
      label_display_type_board: Таблица
      label_my_bookmarks: Моите отметки
      label_assign_to_me: Ðазначи на мен
      label_default_query: ЗаÑвка по подразбиране
      label_edited: Редактирано
      label_time_by_author: "%{time} от %{author}"
      label_involved_principals: Ðвтор / Предишен назначен
    
      button_login: Вход
      button_submit: Изпращане
      button_save: ЗапиÑ
      button_check_all: Избор на вÑички
      button_uncheck_all: ИзчиÑтване на вÑички
      button_collapse_all: Скриване вÑички
      button_expand_all: Разгъване вÑички
      button_delete: Изтриване
      button_create: Създаване
      button_create_and_continue: Създаване и продължаване
      button_test: ТеÑÑ‚
      button_edit: РедакциÑ
      button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}"
      button_add: ДобавÑне
      button_change: ПромÑна
      button_apply: Приложи
      button_clear: ИзчиÑти
      button_lock: Заключване
      button_unlock: Отключване
      button_download: ИзтеглÑне
      button_list: СпиÑък
      button_view: Преглед
      button_move: ПремеÑтване
      button_move_and_follow: ПремеÑтване и продължаване
      button_back: Ðазад
      button_cancel: Отказ
      button_activate: ÐктивациÑ
      button_disable: Забрана
      button_sort: Сортиране
      button_log_time: ОтделÑне на време
      button_rollback: Върни Ñе към тази ревизиÑ
      button_watch: Ðаблюдаване
      button_unwatch: Край на наблюдението
      button_reply: Отговор
      button_archive: Ðрхивиране
      button_unarchive: Разархивиране
      button_reset: Генериране наново
      button_rename: Преименуване
      button_change_password: ПромÑна на парола
      button_copy: Копиране
      button_copy_and_follow: Копиране и продължаване
      button_copy_link: Копиране на връзката
      button_annotate: ÐнотациÑ
      button_fetch_changesets: Извличане на ревизиите
      button_update: ОбновÑване
      button_configure: Конфигуриране
      button_quote: Цитат
      button_show: Показване
      button_hide: Скриване
      button_edit_section: Редактиране на тази ÑекциÑ
      button_export: ЕкÑпорт
      button_delete_my_account: Премахване на Ð¼Ð¾Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»
      button_close: ЗатварÑне
      button_reopen: ОтварÑне
      button_import: Импорт
      button_project_bookmark: ДобавÑне на отметка
      button_project_bookmark_delete: Премахване на отметка
      button_filter: Филтър
      button_actions: ДейÑтвиÑ
      button_add_subtask: ДобавÑне на подзадача
      button_save_object: Ð—Ð°Ð¿Ð¸Ñ %{object_name}
      button_edit_object: Редактиране %{object_name}
      button_delete_object: Изтриване %{object_name}
      button_create_and_follow: Създаване и продължаване
      button_apply_issues_filter: Прилагане на филтъра
    
      status_active: активен
      status_registered: региÑтриран
      status_locked: заключен
    
      project_status_active: активен
      project_status_closed: затворен
      project_status_archived: архивиран
      project_status_scheduled_for_deletion: определен за изтриване
    
      version_status_open: отворена
      version_status_locked: заключена
      version_status_closed: затворена
    
      field_active: Ðктивен
    
      text_select_mail_notifications: Изберете ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° изпращане на e-mail.
      text_regexp_info: пр. ^[A-Z0-9]+$
      text_project_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете проекта и данните в него?
      text_projects_bulk_destroy_confirmation: Сигурен ли Ñте, че иÑкате да изтриете избраните проекти и техните данни?
      text_projects_bulk_destroy_head: |
        Вие Ñте на път да изтриете Ñледващите проекти, включително и техните подпроекти и Ñвързаните Ñ Ñ‚ÑÑ… данни.
        ÐœÐ¾Ð»Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ð¹Ñ‚Ðµ информациÑта по-долу и потвърдете, че това наиÑтина е вашето намерение.
        Това дейÑтвие не може да бъде върнато назад.
      text_projects_bulk_destroy_confirm: За да потвърдите, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ "%{yes}" в полето отдолу.
      text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} Ñъщо ще бъдат изтрити."
      text_subprojects_bulk_destroy: 'включително и неговите подпроекти: %{value}'
      text_project_close_confirmation: Сигурни ли Ñте, че желаете да затворите проект '%{value}' и да го направите доÑтъпен Ñамо за четене?
      text_project_reopen_confirmation: Сигурни ли Ñте, че желаете да отворите отново проект %{value}'?
      text_project_archive_confirmation: Сигурни ли Ñте, че желаете да архивирате проект '%{value}'?
      text_users_bulk_destroy_head: Вие Ñте на път да изтриете Ñледните потребители и вÑички връзки към Ñ‚ÑÑ…. Това не може да бъде върнато назад. ЧеÑто заключването на потребителите вмеÑто изтриването им е по-добро решение.
      text_users_bulk_destroy_confirm: За да потвърдите, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ "%{yes}" по-долу.
      text_workflow_edit: Изберете Ñ€Ð¾Ð»Ñ Ð¸ тракер за да редактирате Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ
      text_are_you_sure: Сигурни ли Ñте?
      text_journal_changed: "%{label} променен от %{old} на %{new}"
      text_journal_changed_no_detail: "%{label} променен"
      text_journal_set_to: "%{label} уÑтановен на %{value}"
      text_journal_deleted: "%{label} изтрит (%{old})"
      text_journal_added: "Добавено %{label} %{value}"
      text_tip_issue_begin_day: задача, започваща този ден
      text_tip_issue_end_day: задача, завършваща този ден
      text_tip_issue_begin_end_day: задача, започваща и завършваща този ден
      text_project_identifier_info: 'Позволени Ñа малки букви (a-z), цифри, тирета и _.
    ПромÑна Ñлед Ñъздаването му не е възможна.' text_caracters_maximum: "До %{count} Ñимвола." text_caracters_minimum: "Минимум %{count} Ñимвола." text_characters_must_contain: ТрÑбва да Ñъдържа %{character_classes}. text_length_between: "От %{min} до %{max} Ñимвола." text_tracker_no_workflow: ÐÑма дефиниран работен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° този тракер text_role_no_workflow: ÐÑма дефиниран работен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° тази Ñ€Ð¾Ð»Ñ text_status_no_workflow: Ðито един тракер не използва това ÑÑŠÑтоÑние в работен Ð¿Ñ€Ð¾Ñ†ÐµÑ text_unallowed_characters: Ðепозволени Ñимволи text_comma_separated: Позволено е изброÑване (Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ» запетаÑ). text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). text_issues_ref_in_commit_messages: ОтбелÑзване и приключване на задачи от ревизии text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ %{id} (от %{author})." text_issue_updated: "Задача %{id} е обновена (от %{author})." text_wiki_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете това Wiki и цÑлото му Ñъдържание? text_issue_category_destroy_question: "Има задачи (%{count}) обвързани Ñ Ñ‚Ð°Ð·Ð¸ категориÑ. Какво ще изберете?" text_issue_category_destroy_assignments: Премахване на връзките Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñта text_issue_category_reassign_to: Преобвързване Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}." text_time_logged_by_changeset: Приложено в Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}. text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' text_issues_destroy_descendants_confirmation: Тази Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‰Ðµ премахне и %{count} подзадача(и). text_time_entries_destroy_confirmation: Сигурен ли Ñте, че изтриете избраните запиÑи за изразходвано време? text_select_project_modules: 'Изберете активните модули за този проект:' text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ text_all_migrations_have_been_run: Ð’Ñички миграции на базата данни Ñа изпълнени text_minimagick_available: Ðаличен MiniMagick (по избор) text_convert_available: Ðаличен ImageMagick convert (по избор) text_gs_available: Ðалична поддръжка за ImageMagick PDF (по избор) text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed text_destroy_time_entries_question: "%{hours} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" text_destroy_time_entries: Изтриване на отделеното време text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' text_user_wrote: "%{value} напиÑа:" text_user_wrote_in: "%{value} напиÑа (%{link}):" text_enumeration_destroy_question: "%{count} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/configuration.yml и реÑтартирайте Redmine, за да ги разрешите." text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, ÑъответÑтващи на потребителите в дневника на хранилището (repository).\nПотребителите Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¸ имена в Redmine и хранилищата Ñе ÑъвмеÑÑ‚Ñват автоматично." text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница text_own_membership_delete_confirmation: "Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това да не можете да редактирате този проект.\nСигурен ли Ñте, че иÑкате да продължите?" text_zoom_in: Увеличаване text_zoom_out: ÐамалÑване text_warn_on_leaving_unsaved: Страницата Ñъдържа незапиÑано Ñъдържание, което може да бъде загубено, ако Ñ Ð½Ð°Ð¿ÑƒÑнете. text_scm_path_encoding_note: "По подразбиране: UTF-8" text_subversion_repository_note: 'Примери: file:///, http://, https://, svn://, svn+[tunnelscheme]://' text_git_repository_note: Празно и локално хранилище (например /gitrepo, c:\gitrepo) text_mercurial_repository_note: Локално хранилище (например /hgrepo, c:\hgrepo) text_scm_command: SCM команда text_scm_command_version: ВерÑÐ¸Ñ text_scm_config: Можете да конфигурирате SCM командите в config/configuration.yml. За да активирате промените, реÑтартирайте Redmine. text_scm_command_not_available: SCM командата не е налична или доÑтъпна. Проверете конфигурациÑта в админиÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ». text_issue_conflict_resolution_overwrite: Прилагане на моите промени (предишните коментари ще бъдат запазени, но нÑкои други промени може да бъдат презапиÑани) text_issue_conflict_resolution_add_notes: ДобавÑне на моите коментари и отхвърлÑне на другите мои промени text_issue_conflict_resolution_cancel: ОтхвърлÑне на вÑички мои промени и презареждане на %{link} text_account_destroy_confirmation: "Сигурен/на ли Ñте, че желаете да продължите?\nВашиÑÑ‚ профил ще бъде премахнат без възможноÑÑ‚ за възÑтановÑване." text_session_expiration_settings: "Внимание: промÑната на тези уÑтановÑÐ²Ð°Ð½Ð¾Ñ Ð¼Ð¾Ð¶Ðµ да прекрати вÑички активни ÑеÑии, включително и вашата." text_project_closed: Този проект е затворен и е Ñамо за четене. text_turning_multiple_off: Ðко забраните възможноÑтта за повече от една ÑтойноÑÑ‚, повечето ÑтойноÑти ще бъдат премахнати Ñ Ñ†ÐµÐ» да оÑтане Ñамо по една ÑтойноÑÑ‚ за поле. text_select_apply_tracker: Изберете тракер text_select_apply_issue_status: Изберете ÑÑŠÑтоÑние text_avatar_server_config_html: ТекущиÑÑ‚ Ñървър на аватари е %{url}. Бие можете да го конфигурирате в config/configuration.yml. text_allowed_queries_to_select: Само публичните (за вÑички потребители) заÑвки Ñа доÑтъпни за избор text_setting_config_change: Вие можете да конфигурирате поведението в config/configuration.yml. МолÑ, реÑтартирайте Redmine Ñлед редактиране на файла. default_role_manager: Мениджър default_role_developer: Разработчик default_role_reporter: Публикуващ default_tracker_bug: Грешка default_tracker_feature: ФункционалноÑÑ‚ default_tracker_support: Поддръжка default_issue_status_new: Ðова default_issue_status_in_progress: Изпълнение default_issue_status_resolved: Приключена default_issue_status_feedback: Обратна връзка default_issue_status_closed: Затворена default_issue_status_rejected: Отхвърлена default_doc_category_user: Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð·Ð° Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ default_doc_category_tech: ТехничеÑка Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ default_priority_low: ÐиÑък default_priority_normal: Ðормален default_priority_high: ВиÑок default_priority_urgent: Спешен default_priority_immediate: Веднага default_activity_design: Дизайн default_activity_development: Разработка text_no_subject: нÑма заглавие enumeration_issue_priorities: Приоритети на задачи enumeration_doc_categories: Категории документи enumeration_activities: ДейноÑти (time tracking) enumeration_system_activity: СиÑтемна активноÑÑ‚ description_filter: Филтър description_search: ТърÑене description_choose_project: Проекти description_project_scope: Обхват на търÑенето description_notes: Бележки description_message_content: Съдържание на Ñъобщението description_query_sort_criteria_attribute: Ðтрибут на Ñортиране description_query_sort_criteria_direction: ПоÑока на Ñортиране description_user_mail_notification: ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð²ÐµÑтиÑта по пощата description_available_columns: Ðалични колони description_selected_columns: Избрани колони description_all_columns: Ð’Ñички колони description_issue_category_reassign: Изберете ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ description_wiki_subpages_reassign: Изберете нова родителÑка Ñтраница text_repository_identifier_info: 'Позволени Ñа малки букви (a-z), цифри, тирета и _.
    ПромÑна Ñлед Ñъздаването му не е възможна.' text_login_required_html: Когато не Ñе изиÑква удоÑтоверÑване, публичните проекти и Ñ‚Ñхното Ñъдържание Ñа видими без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² мрежата. Вие можете да редактирате приложимите права. label_login_required_yes: 'Да' label_login_required_no: Ðе, разрешаване на анонимен доÑтъп до публичните проекти. text_project_is_public_non_member: Публичните проекти Ñа доÑтъпни за вÑички влезли в Redmine потребители. text_project_is_public_anonymous: Публичните проекти Ñа доÑтъпни и Ñ‚Ñхното Ñъдържание е видимо без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð² мрежата. label_import_time_entries: Импортиране на запиÑи за използвано време label_import_users: Импортиране на потребители sudo_mode_new_info_html: "Какво Ñе Ñлучва? ТрÑбва да потвърдите вашата парола преди да предприемете админиÑтративни дейÑтвиÑ. Това оÑигурÑва вашиÑÑ‚ акаунт." twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Сканирайте този QR код или въведете текÑÑ‚Ð¾Ð²Ð¸Ñ ÐºÐ»ÑŽÑ‡ в TOTP приложение (например Google Authenticator, Authy, Duo Mobile) и въведете кода в полето по-долу, за да активирате двуфакторна автентикациÑ. twofa__totp__label_plain_text_key: ТекÑтов ключ twofa__totp__label_activate: Разрешаване на приложение за Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ twofa_currently_active: 'Ðктивна автентикациÑ: %{twofa_scheme_name}' twofa_not_active: Ðе е активирана twofa_label_code: Код twofa_hint_disabled_html: ÐаÑтройка %{label} ще деактивира двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° вÑички потребители. twofa_hint_optional_html: Този избор %{label} ще позволи на потребителите да уÑтановÑÑ‚ двуфакторна автентикациÑ27 по желание, оÑвен ако Ñ‚Ñ Ð½Ðµ е задължителна от нÑÐºÐ¾Ñ Ð¾Ñ‚ техните групи. twofa_hint_required_html: ÐаÑтройка %{label} ще изиÑква вÑички потребители да уÑтановÑÑ‚ двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ Ñ‚Ñхното Ñледващо влизане в Redmine. twofa_hint_required_administrators_html: %{label} изглежда като по желание, но ще изиÑква вÑички потребители Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтративни права да уÑтановÑÑ‚ двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ Ñ‚Ñхното Ñледващо влизане. twofa_label_setup: Ðктивиране на двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ twofa_label_deactivation_confirmation: Ð”ÐµÐ°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ twofa_notice_select: 'ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ двуфакторна Ñхема, коÑто желаете да използвате:' twofa_warning_require: ÐдминиÑтраторът изиÑква да активирате двуфакторна автентикациÑ. twofa_activated: Двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ активирана уÑпешно. Препоръчително е да генерирате резервни кодове за Ð²Ð°ÑˆÐ¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñки профил. twofa_deactivated: Двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ деактивирана. twofa_mail_body_security_notification_paired: Двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ активирана уÑпешно Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ðµ на %{field}. twofa_mail_body_security_notification_unpaired: Двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ деактивирана за Ð²Ð°ÑˆÐ¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð». twofa_mail_body_backup_codes_generated: Генерирани Ñа нови резервни кодове за двуфакторна автентикациÑ. twofa_mail_body_backup_code_used: Беше използван резервен код за двуфакторна автентикациÑ. twofa_invalid_code: Кодът е невалиден или оÑтарÑл. twofa_label_enter_otp: ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ð²Ð°ÑˆÐ¸Ñ Ð´Ð²ÑƒÑ„Ð°ÐºÑ‚Ð¾Ñ€ÐµÐ½ код за автентикациÑ.. twofa_too_many_tries: Твърде много опити. twofa_resend_code: Повторно изпращане на кода twofa_code_sent: Код за Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð¸ беше изпратен. twofa_generate_backup_codes: Генериране на резервни кодове twofa_text_generate_backup_codes_confirmation: Това дейÑтвие ще направи невалидни вÑички ÑъщеÑтвуващи резервни кодове и ще генерира нови. Желаете ли да продължите? twofa_notice_backup_codes_generated: Вашите резервни кодове Ñа генерирани. twofa_warning_backup_codes_generated_invalidated: Ðови резервни кодове бÑха генерирани. Вашите доÑегашни кодове Ñа невалидни от %{time}. twofa_label_backup_codes: Кодове за двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ twofa_text_backup_codes_hint: Използвайте тези кодове вмеÑто еднократна парола, ако нÑмате доÑтъп до Ð²Ñ‚Ð¾Ñ€Ð¸Ñ Ñ„Ð°ÐºÑ‚Ð¾Ñ€. Ð’Ñеки код може да бъде използван Ñамо един път. Препоръчително е да разпечатите и Ñъхраните тези кодове на Ñигурно мÑÑто. twofa_text_backup_codes_created_at: Резервни кодове генерирани на %{datetime}. twofa_backup_codes_already_shown: Резервните кодове не могат да бъдат показани отново, Ð¼Ð¾Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ нови резервни кодове, ако е необходимо. twofa_text_group_required: Този избор е ефективен Ñамо, когато глобалната двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ уÑтановена на 'по избор'. ПонаÑтоÑщем, двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñе изиÑква за вÑички потребители. twofa_text_group_disabled: Този избор е ефективен Ñамо, когато глобалната двуфакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ уÑтановена на 'по избор'. ПонаÑтоÑщем, двуфакторната Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ забранена. text_user_destroy_confirmation: ÐаиÑтина ли желаете да изтриете този потребител и вÑички Ð¿Ð¾Ð·Ð¾Ð²Ð°Ð²Ð°Ð½Ð¸Ñ (references) на него? Това дейÑтвие не може да бъде отменено. ЧеÑто заключването на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ðµ по-добро решение от изтриването му. За да потвърдите, въведете името (%{login}) по-долу. text_project_destroy_enter_identifier: За да потвърдите дейÑтвието, въведете идентификатора на проекта (%{identifier}) по-долу. field_name_or_email_or_login: Име, e-mail или login име redmine-6.0.5/config/locales/bs.yml000066400000000000000000002163311500112024600171600ustar00rootroot00000000000000# Original translation by Ernad Husremovic # Update to r17530 by Kenan DerviÅ¡ević bs: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y" short: "%e. %b" long: "%e. %B %Y" only_day: "%e" day_names: [nedjelja, ponedjeljak, utorak, srijeda, Äetvrtak, petak, subota] abbr_day_names: [ned, pon, uto, sri, Äet, pet, sub] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, januar, februar, mart, april, maj, juni, juli, avgust, septembar, oktobar, novembar, decembar] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%A, %e. %B %Y, %H:%M" short: "%e. %B, %H:%M Uhr" long: "%A, %e. %B %Y, %H:%M" time: "%H:%M" am: "prijepodne" pm: "poslijepodne" datetime: distance_in_words: half_a_minute: "pola minute" less_than_x_seconds: one: "manje od 1 sekunde" other: "manje od %{count} sekundi" x_seconds: one: "1 sekunda" other: "%{count} sekundi" less_than_x_minutes: one: "manje od 1 minute" other: "manje od %{count} minuta" x_minutes: one: "1 minuta" other: "%{count} minuta" about_x_hours: one: "oko 1 sat" other: "oko %{count} sati" x_hours: one: "1 sat" other: "%{count} sati" x_days: one: "1 dan" other: "%{count} dana" about_x_months: one: "oko 1 mjesec" other: "oko %{count} mjeseci" x_months: one: "1 mjesec" other: "%{count} mjeseci" about_x_years: one: "oko 1 godine" other: "oko %{count} godina" over_x_years: one: "viÅ¡e od 1 godine" other: "viÅ¡e od %{count} godina" almost_x_years: one: "skoro 1 godina" other: "skoro %{count} godina" number: format: precision: 2 separator: ',' delimiter: '.' currency: format: unit: 'KM' format: '%u %n' negative_format: '%u -%n' delimiter: '' percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Bajt" other: "Bajta" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "i" skip_last_comma: false activerecord: errors: template: header: one: "1 greÅ¡ka je sprijeÄila snimanje %{model}" other: "%{count} greÅ¡aka je sprijeÄilo snimanje %{model}" messages: inclusion: "nije ukljuÄeno u listu" exclusion: "je rezervisano" invalid: "nije ispravno" confirmation: "ne odgovara potvrdi" accepted: "mora se prihvatiti" empty: "ne može biti prazno" blank: "ne može biti znak razmaka" too_long: "je predugo" too_short: "je prekratko" wrong_length: "je pogreÅ¡ne dužine" taken: "već je zauzeto" not_a_number: "nije broj" not_a_date: "nije ispravan datum" greater_than: "mora bit veće od %{count}" greater_than_or_equal_to: "mora bit veće ili jednako %{count}" equal_to: "mora biti jednako %{count}" less_than: "mora biti manje od %{count}" less_than_or_equal_to: "mora bit manje ili jednako %{count}" odd: "mora biti neparno" even: "mora biti parno" greater_than_start_date: "mora biti veće od poÄetnog datuma" not_same_project: "ne pripada istom projektu" circular_dependency: "Ova relacija stvara cirkularnu zavisnost" cant_link_an_issue_with_a_descendant: "Tiket ne može biti povezan sa jednim od svojih vlastitih podzadataka" earlier_than_minimum_start_date: "ne može biti ranije od %{date} zbog prethodnih tiketa" not_a_regexp: "nije ispravan regularni izraz" open_issue_with_closed_parent: "Otvoreni tiket ne može biti dodan u zatvoreni matiÄni tiket" actionview_instancetag_blank_option: Molimo odaberite general_text_No: 'Da' general_text_Yes: 'Ne' general_text_no: 'ne' general_text_yes: 'da' general_lang_name: 'Bosnian (Bosanski)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_activated: VaÅ¡ raÄun je aktiviran. Možete se prijaviti. notice_account_invalid_credentials: PogreÅ¡an korisnik ili Å¡ifra notice_account_lost_email_sent: Email sa uputstvima o izboru nove Å¡ifre je poslan na vaÅ¡u adresu. notice_account_password_updated: Å ifra je uspjeÅ¡no promjenjena. notice_account_pending: "VaÅ¡ raÄun je kreiran i Äeka odobrenje administratora." notice_account_register_done: RaÄun je uspjeÅ¡no kreiran. Za aktivaciju vaÅ¡eg raÄuna kliknite na link koji smo vam poslali. notice_account_updated: RaÄun je uspjeÅ¡no promijenjen. notice_account_wrong_password: PogreÅ¡na Å¡ifra notice_can_t_change_password: Ovaj raÄun koristi eksterni izvor prijavljivanja. Nije moguće promijeniti Å¡ifru. notice_default_data_loaded: UobiÄajena konfiguracija uspjeÅ¡no uÄitana. notice_email_error: DoÅ¡lo je do greÅ¡ke pri slanju emaila (%{value}) notice_email_sent: "Email je poslan %{value}" notice_failed_to_save_issues: "NeuspjeÅ¡no snimanje %{count} aktivnosti na %{total} izabranih: %{ids}." notice_feeds_access_key_reseted: VaÅ¡ Atom pristup je resetovan. notice_file_not_found: Stranica kojoj pokuÅ¡avate da pristupite ne postoji ili je uklonjena. notice_locking_conflict: "Konflikt: podaci su izmjenjeni od strane drugog korisnika." notice_not_authorized: Nemate dozvol za pristup ovoj stranici. notice_successful_connection: Povezivanje uspjeÅ¡no. notice_successful_create: UspjeÅ¡no kreiranje. notice_successful_delete: Brisanje izvrÅ¡eno. notice_successful_update: Promjene uspjeÅ¡no izvrÅ¡ene. error_can_t_load_default_data: "UobiÄajene postavke se ne mogu uÄitati %{value}" error_scm_command_failed: "Desila se greÅ¡ka pri pristupu repozitoriju: %{value}" error_scm_not_found: "Unos i/ili revizija ne postoji u repozitoriju." error_scm_annotate: "Ova stavka ne postoji ili nije oznaÄena." error_issue_not_found_in_project: 'Tiket nije pronaÄ‘en ili ne pripada ovom projektu' warning_attachments_not_saved: "%{count} fajlova ne može biti snimljeno." mail_subject_lost_password: "VaÅ¡a %{value} Å¡ifra" mail_body_lost_password: 'Za promjenu Å¡ifre, kliknite na sljedeći link:' mail_subject_register: "Aktivirajte %{value} vaÅ¡ korisniÄki raÄun" mail_body_register: 'Za aktivaciju vaÅ¡eg korisniÄkog raÄuna, kliknite na sljedeći link:' mail_body_account_information_external: "Možete koristiti vaÅ¡ %{value} korisniÄki raÄun za prijavu u sistem." mail_body_account_information: Informacija o vaÅ¡em korisniÄkom raÄunu mail_subject_account_activation_request: "%{value} zahtjev za aktivaciju korisniÄkog raÄuna" mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. KorisniÄki raÄun Äeka vaÅ¡e odobrenje za aktivaciju:" mail_subject_reminder: "%{count} aktivnosti u kaÅ¡njenju u narednih %{days} danima" mail_body_reminder: "%{count} aktivnost(i) koje su dodjeljenje vama u narednim %{days} dana:" field_name: Naziv field_description: Opis field_summary: IzvjeÅ¡taj field_is_required: Obavezno field_firstname: Ime field_lastname: Prezime field_mail: Email field_filename: Fajl field_filesize: VeliÄina field_downloads: Preuzimanja field_author: Autor field_created_on: Kreirano field_updated_on: Izmjenjeno field_field_format: Format field_is_for_all: Za sve projekte field_possible_values: Moguće vrijednosti field_regexp: '"Regularni izraz"' field_min_length: Minimalna veliÄina field_max_length: Maksimalna veliÄina field_value: Vrijednost field_category: Kategorija field_title: Naslov field_project: Projekat field_issue: Tiket field_status: Status field_notes: Komentari field_is_closed: Aktivnost zatvorena field_is_default: UobiÄajena vrijednost field_tracker: Vrsta field_subject: Naslov field_due_date: ZavrÅ¡etak field_assigned_to: Odgovorna osoba field_priority: Prioritet field_fixed_version: Ciljna verzija field_user: Korisnik field_role: Uloga field_homepage: Naslovna strana field_is_public: Javni field_parent: Podprojekt field_is_in_roadmap: Aktivnosti prikazane u planu realizacije field_login: Prijava field_mail_notification: Email obavijesti field_admin: Administrator field_last_login_on: Posljednja konekcija field_language: Jezik field_effective_date: Datum field_password: Å ifra field_new_password: Nova Å¡ifra field_password_confirmation: Potvrda field_version: Verzija field_type: Tip field_host: Host field_port: Port field_account: KorisniÄki raÄun field_base_dn: Base DN field_attr_login: Attribut za prijavu field_attr_firstname: Attribut za ime field_attr_lastname: Atribut za prezime field_attr_mail: Atribut za email field_onthefly: 'Kreiranje korisnika "On-the-fly"' field_start_date: PoÄetak field_done_ratio: "% zavrÅ¡eno" field_auth_source: Mod za authentifikaciju field_hide_mail: Sakrij moju email adresu field_comments: Komentar field_url: URL field_start_page: PoÄetna stranica field_subproject: Podprojekat field_hours: Sati field_activity: Operacija field_spent_on: Datum field_identifier: Identifikator field_is_filter: Koristi se filter field_issue_to: Povezana aktivnost field_delay: OdgaÄ‘anje field_assignable: Aktivnosti dodijeljene ovoj ulozi field_redirect_existing_links: IzvrÅ¡i redirekciju postojećih linkova field_estimated_hours: Procjena vremena field_column_names: Kolone field_time_zone: Vremenska zona field_searchable: Pretraživo field_default_value: UobiÄajena vrijednost field_comments_sorting: Prikaži komentare field_parent_title: 'Stranica "roditelj"' field_editable: Može se mijenjati field_watcher: PosmatraÄ field_content: Sadržaj setting_app_title: Naziv aplikacije setting_welcome_text: Tekst dobrodoÅ¡lice setting_default_language: UobiÄajeni jezik setting_login_required: Authentifikacija obavezna setting_self_registration: Samoregistracija setting_attachment_max_size: Maksimalna veliÄina fajlova setting_issues_export_limit: Limit za eksport aktivnosti setting_mail_from: Mail adresa - poÅ¡aljilac setting_plain_text_mail: Email sa obiÄnim tekstom (bez HTML-a) setting_host_name: Ime hosta i putanja setting_text_formatting: Formatiranje teksta setting_wiki_compression: Kompresija Wiki historije setting_feeds_limit: 'Limit za "Atom" feedove' setting_default_projects_public: Podrazumijeva se da je novi projekat javni setting_autofetch_changesets: 'Automatski uÄitavaj commite' setting_sys_api_enabled: 'Omogući "WS" za upravljanje repozitorijom' setting_commit_ref_keywords: KljuÄne rijeÄi za referenciranje setting_commit_fix_keywords: 'KljuÄne rijeÄi za status "zatvoreno"' setting_autologin: Automatska prijava setting_date_format: Format datuma setting_time_format: Format vremena setting_cross_project_issue_relations: Omogući relacije izmeÄ‘u aktivnosti na razliÄitim projektima setting_issue_list_default_columns: Podrazumijevane koleone za prikaz na listi aktivnosti setting_emails_footer: Potpis na emailovima setting_protocol: Protokol setting_per_page_options: Broj objekata po stranici setting_user_format: Format korisniÄkog prikaza setting_activity_days_default: Prikaz promjena na projektu - opseg dana setting_display_subprojects_issues: Prikaz podprojekata na glavnom projektima (uobiÄajeno) setting_enabled_scm: Omogući SCM (source code management) setting_mail_handler_api_enabled: Omogući automatsku obradu ulaznih emailova setting_mail_handler_api_key: API kljuÄ (obrada ulaznih mailova) setting_sequential_project_identifiers: GeneriÅ¡i identifikatore projekta sekvencijalno setting_gravatar_enabled: 'Koristi "gravatar" korisniÄke ikone' setting_diff_max_lines_displayed: Maksimalan broj linija za prikaz razlika izmeÄ‘u dva fajla setting_file_max_size_displayed: Maksimalna veliÄina fajla kod prikaza razlika unutar fajla (inline) setting_repository_log_display_limit: Maksimalna veliÄina revizija prikazanih na log fajlu permission_edit_project: UreÄ‘ivanje projekta permission_select_project_modules: Odabir modula projekta permission_manage_members: Upravljanje Älanovima permission_manage_versions: Upravljanje verzijama permission_manage_categories: Upravljanje kategorijama aktivnosti permission_add_issues: Dodavanje aktivnosti permission_edit_issues: UreÄ‘ivanje aktivnosti permission_manage_issue_relations: Upravljanje relacijama meÄ‘u aktivnostima permission_add_issue_notes: Dodavanje komentara permission_edit_issue_notes: UreÄ‘ivanje komentara permission_edit_own_issue_notes: Ispravka sopstvenih komentara permission_delete_issues: Brisanje tiketa permission_manage_public_queries: Upravljanje javnim upitima permission_save_queries: Snimi upite permission_view_gantt: Pregled gantograma permission_view_calendar: Pregled kalendara permission_view_issue_watchers: Pregled liste posmatraÄa tiketa permission_add_issue_watchers: Dodavanje posmatraÄa tiketa permission_log_time: Evidentiranje utroÅ¡ka vremena permission_view_time_entries: Pregled utroÅ¡ka vremena permission_edit_time_entries: UreÄ‘ivanje utroÅ¡ka vremena permission_edit_own_time_entries: UreÄ‘ivanje vlastitog utroÅ¡ka vremena permission_manage_news: Upravljanje novostima permission_comment_news: Komentarisanje novosti permission_view_documents: Pregled dokumenata permission_manage_files: Upravljanje fajlovima permission_view_files: Pregled fajlova permission_manage_wiki: Upravljanje wiki stranica permission_rename_wiki_pages: Preimenenovanje wiki stranice permission_delete_wiki_pages: Brisanje wiki stranice permission_view_wiki_pages: Pregled wiki sadržaja permission_view_wiki_edits: Pregled wiki historije permission_edit_wiki_pages: UreÄ‘ivanje wiki stranica permission_delete_wiki_pages_attachments: Brisanje fajlova dodanih na wiki permission_protect_wiki_pages: ZaÅ¡tita wiki stranice permission_manage_repository: Upravljanje repozitorijem permission_browse_repository: Pregled repozitorija permission_view_changesets: Pregled setova promjena permission_commit_access: 'Pristup commitu' permission_manage_boards: Upravljanje forumima permission_view_messages: Pregled poruka permission_add_messages: Slanje poruka permission_edit_messages: UreÄ‘ivanje poruka permission_edit_own_messages: UreÄ‘ivanje vlastitih poruka permission_delete_messages: Brisanje poruka permission_delete_own_messages: Brisanje vlastitih poruka project_module_issue_tracking: Tiketi project_module_time_tracking: Aktivnosti project_module_news: Novosti project_module_documents: Dokumenti project_module_files: Fajlovi project_module_wiki: Wiki stranice project_module_repository: Repozitorij project_module_boards: Forumi label_user: Korisnik label_user_plural: Korisnici label_user_new: Novi korisnik label_project: Projekat label_project_new: Novi projekat label_project_plural: Projekti label_x_projects: zero: 0 projekata one: 1 projekat other: "%{count} projekata" label_project_all: Svi projekti label_project_latest: Najnoviji projekti label_issue: Tiket label_issue_new: Novi tiket label_issue_plural: Tiketi label_issue_view_all: Pregled svih tiketa label_issues_by: "Tiketi po %{value}" label_issue_added: Tiket je dodan label_issue_updated: Tiket je izmijenjen label_document: Dokument label_document_new: Novi dokument label_document_plural: Dokumenti label_document_added: Dokument je dodan label_role: Uloga label_role_plural: Uloge label_role_new: Nove uloge label_role_and_permissions: Uloge i dozvole label_member: ÄŒlan label_member_new: Novi Älan label_member_plural: ÄŒlanovi label_tracker: Vrsta label_tracker_plural: Vrste label_tracker_new: Nova vrsta label_workflow: Tok rada label_issue_status: Status aktivnosti label_issue_status_plural: Statusi aktivnosti label_issue_status_new: Novi status label_issue_category: Kategorija aktivnosti label_issue_category_plural: Kategorije aktivnosti label_issue_category_new: Nova kategorija label_custom_field: Proizvoljno polje label_custom_field_plural: Proizvoljna polja label_custom_field_new: Novo proizvoljno polje label_enumerations: Enumeracije label_enumeration_new: Nova vrijednost label_information: Informacija label_information_plural: Informacije label_register: Registracija label_password_lost: Zaboravljena Å¡ifra label_home: Naslovnica label_my_page: Moja stranica label_my_account: Moj raÄun label_my_projects: Moji projekti label_administration: Administracija label_login: Prijava label_logout: Odjava label_help: Pomoć label_reported_issues: Prijavljeni tiketi label_assigned_to_me_issues: Tiketi dodijeljeni meni label_registered_on: Datum registracije label_activity: Aktivnost label_user_activity: "Promjene izvrÅ¡ene od: %{value}" label_new: Kreiraj label_logged_as: Prijavljen kao label_environment: Sistemsko okruženje label_authentication: Authentifikacija label_auth_source: Mod authentifikacije label_auth_source_new: Novi mod authentifikacije label_auth_source_plural: Modovi authentifikacije label_subproject_plural: Podprojekti label_and_its_subprojects: "%{value} i njegovi podprojekti" label_min_max_length: Min-maks dužina label_list: Lista label_date: Datum label_integer: Cijeli broj label_float: PomiÄni zarez label_boolean: LogiÄka vrijednost label_string: Tekst label_text: Dugi tekst label_attribute: Atribut label_attribute_plural: Atributi label_no_data: Nema podataka za prikaz label_change_status: Promjeni status label_history: Historija label_attachment: Fajl label_attachment_new: Novi fajl label_attachment_delete: IzbriÅ¡i fajl label_attachment_plural: Fajlovi label_file_added: Fajl je dodan label_report: IzvjeÅ¡taj label_report_plural: IzvjeÅ¡taji label_news: Novosti label_news_new: Nova novost label_news_plural: Novosti label_news_latest: Najnovije novosti label_news_view_all: Pregled svih novosti label_news_added: Novosti su dodane label_settings: Postavke label_overview: Pregled label_version: Verzija label_version_new: Nova verzija label_version_plural: Verzije label_confirmation: Potvrda label_export_to: 'TakoÄ‘er dostupno kao' label_read: ÄŒitaj... label_public_projects: Javni projekti label_open_issues: Otvoren label_open_issues_plural: Otvoreni label_closed_issues: Zatvoren label_closed_issues_plural: Zatvoreni label_x_open_issues_abbr: zero: 0 otvoreno one: 1 otvoren other: "%{count} otvorenih" label_x_closed_issues_abbr: zero: 0 zatvoreno one: 1 zatvoren other: "%{count} zatvorenih" label_total: Ukupno label_permissions: Dozvole label_current_status: Trenutni status label_new_statuses_allowed: Novi dozvoljeni statusi label_all: sve label_none: niÅ¡ta label_nobody: niko label_next: Sljedeće label_previous: Prethodno label_used_by: KoriÅ¡teno od label_details: Detalji label_add_note: Dodaj biljeÅ¡ku label_calendar: Kalendar label_months_from: mjeseci od label_gantt: Gantogram label_internal: Interno label_last_changes: "posljednjih %{count} promjena" label_change_view_all: Pregledaj sve promjene label_comment: Komentar label_comment_plural: Komentari label_x_comments: zero: bez komentara one: 1 komentar other: "%{count} komentara" label_comment_add: Dodaj komentar label_comment_added: Komentar je dodan label_comment_delete: IzbriÅ¡i komentar label_query: Proizvoljan upit label_query_plural: Proizvoljni upiti label_query_new: Novi upit label_filter_add: Dodaj filter label_filter_plural: Filteri label_equals: je label_not_equals: nije label_in_less_than: je manji nego label_in_more_than: je viÅ¡e nego label_in: u label_today: danas label_yesterday: juÄe label_this_week: ova sedmica label_last_week: posljednja sedmica label_last_n_days: "posljednjih %{count} dana" label_this_month: ovaj mjesec label_last_month: posljednji mjesec label_this_year: ova godina label_date_range: Datumski opseg label_less_than_ago: ranije nego (dani) label_more_than_ago: starije nego (dani) label_ago: prije (dani) label_contains: sadrži label_not_contains: ne sadrži label_day_plural: dani label_repository: Repozitorij label_repository_plural: Repozitoriji label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Doddjeljene revizije label_added: dodano label_modified: izmjenjeno label_copied: kopirano label_renamed: preimenovano label_deleted: izbrisano label_latest_revision: Posljednja revizija label_latest_revision_plural: Posljednje revizije label_view_revisions: Pregledaj revizije label_max_size: Maksimalna veliÄina label_roadmap: Planiranje label_roadmap_due_in: "Obavezan do %{value}" label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema aktivnosti za ovu verziju label_search: Traži label_result_plural: Rezultati label_all_words: Sve rijeÄi label_wiki: Wiki stranice label_wiki_edit: Izmjena wikija label_wiki_edit_plural: Izmjene wikija label_wiki_page: Wiki stranica label_wiki_page_plural: Wiki stranice label_index_by_title: Indeks prema naslovima label_index_by_date: Indeks po datumima label_current_version: Tekuća verzija label_preview: Pregled label_feed_plural: Feedovi label_changes_details: Detalji svih promjena label_issue_tracking: Tiketi label_spent_time: UtroÅ¡ak vremena label_f_hour: "%{value} sat" label_f_hour_plural: "%{value} sati" label_time_tracking: Evidencija vremena label_change_plural: Promjene label_statistics: Statistika label_commits_per_month: 'Commita po mjesecu' label_commits_per_author: 'Commita po autoru' label_view_diff: Pregled razlika label_diff_inline: zajedno label_diff_side_by_side: jedna pored druge label_options: Opcije label_copy_workflow_from: Kopiraj tok rada iz label_permissions_report: IzvjeÅ¡taj label_watched_issues: Tiketi koje pratim label_related_issues: Povezani tiketi label_applied_status: Status je primjenjen label_loading: UÄitavam... label_relation_new: Nova relacija label_relation_delete: IzbriÅ¡i relaciju label_relates_to: korelira sa label_duplicates: duplikat label_duplicated_by: duplicirano od label_blocks: blokira label_blocked_by: blokirano od label_precedes: prethodi label_follows: slijedi nakon label_stay_logged_in: Ostani prijavljen label_disabled: onemogućen label_show_completed_versions: Prikaži zavrÅ¡ene verzije label_me: ja label_board: Forum label_board_new: Novi forum label_board_plural: Forumi label_topic_plural: Teme label_message_plural: Poruke label_message_last: Posljednja poruka label_message_new: Nova poruka label_message_posted: Poruka je dodana label_reply_plural: Odgovori label_send_information: PoÅ¡alji informaciju o korisniÄkom raÄunu label_year: Godina label_month: Mjesec label_week: Sedmica label_date_from: Od label_date_to: Do label_language_based: Bazirano na korisnikovom jeziku label_sort_by: "Sortiraj po %{value}" label_send_test_email: PoÅ¡alji testni email label_feeds_access_key_created_on: "Atom pristupni kljuÄ kreiran prije %{value} dana" label_module_plural: Moduli label_added_time_by: "Dodano od %{author} prije %{age}" label_updated_time_by: "Izmjenjeno od %{author} prije %{age}" label_updated_time: "Izmjenjeno prije %{value}" label_jump_to_a_project: Idi na projekat... label_file_plural: Fajlovi label_changeset_plural: Setovi promjena label_default_columns: UobiÄajene kolone label_no_change_option: (Bez promjene) label_bulk_edit_selected_issues: Grupna izmjena oznaÄenih tiketa label_theme: Tema label_default: UobiÄajeno label_search_titles_only: Pretraži samo naslove label_user_mail_option_all: "Za bilo koji dogaÄ‘aj na svim mojim projektima" label_user_mail_option_selected: "Za bilo koji dogaÄ‘aj na odabranim projektima..." label_user_mail_no_self_notified: "Ne želim notifikacije za vlastite promjene" label_registration_activation_by_email: aktivacija korisniÄkog raÄuna pomoću emaila label_registration_manual_activation: ruÄna aktivacija korisniÄkog raÄuna label_registration_automatic_activation: automatsko kreiranje korisniÄkog raÄuna label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promjena svojstava label_general: Općenito label_scm: SCM label_plugins: Plugini label_ldap_authentication: LDAP authentifikacija label_downloads_abbr: D/L label_optional_description: Opis (neobavezno) label_add_another_file: Dodaj joÅ¡ jedan fajl label_preferences: Postavke label_chronological_order: HronoloÅ¡ki poredak label_reverse_chronological_order: Obrnuti hronoloÅ¡ki poredak label_incoming_emails: Dolazni emailovi label_generate_key: GeneriÅ¡i kljuÄ label_issue_watchers: PosmatraÄi label_example: Primjer label_display: Prikaz button_apply: Primijeni button_add: Dodaj button_archive: Arhiviraj button_back: Nazad button_cancel: Odustani button_change: Promijeni button_change_password: Izmjena Å¡ifre button_check_all: OznaÄi sve button_clear: OÄisti button_copy: Kopiraj button_create: Kreiraj button_delete: ObriÅ¡i button_download: Preuzmi button_edit: Uredi button_list: Lista button_lock: ZakljuÄaj button_log_time: Dodaj vrijeme button_login: Prijava button_move: Premjesti button_rename: Promjena imena button_reply: Odgovor button_reset: Resetuj button_rollback: Vrati prethodno stanje button_save: Snimi button_sort: Sortiranje button_submit: PoÅ¡alji button_test: Testiraj button_unarchive: Raspakuj arhivu button_uncheck_all: IskljuÄi sve button_unlock: OtkljuÄaj button_unwatch: Prekini notifikaciju button_update: Promjena na aktivnosti button_view: Pregled button_watch: Posmatraj button_configure: Konfiguracija button_quote: Citat status_active: aktivan status_registered: registrovan status_locked: zakljuÄan text_select_mail_notifications: Odaberi dogaÄ‘aje za koje će se slati email notifikacija. text_regexp_info: npr. ^[A-Z0-9]+$ text_project_destroy_confirmation: Sigurno želite izbrisati ovaj projekat i njegove podatke? text_subprojects_destroy_warning: "Podprojekt(i): %{value} će takoÄ‘e biti izbrisani." text_workflow_edit: Odaberite ulogu i vrstu za ispravku toka rada na tiketima text_are_you_sure: Da li ste sigurni? text_tip_issue_begin_day: Tiket poÄinje danas text_tip_issue_end_day: Tiket zavrÅ¡ava danas text_tip_issue_begin_end_day: Tiket zapoÄinje i zavrÅ¡ava danas text_caracters_maximum: "maksimalno %{count} znakova." text_caracters_minimum: "Dužina mora biti najmanje %{count} znakova." text_length_between: "Broj znakova izmeÄ‘u %{min} i %{max}." text_tracker_no_workflow: Tok rada nije definisan za ovu vrstu tiketa text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti dozvoljene (odvojiti zarezom). text_issues_ref_in_commit_messages: 'Referenciranje i zatvaranje tiketa putem "commit" poruka' text_issue_added: "Tiket %{id} dodan od %{author}." text_issue_updated: "Tiket %{id} izmjenjen od %{author}." text_wiki_destroy_confirmation: Sigurno želite izbrisati ovaj wiki i Äitav njegov sadržaj? text_issue_category_destroy_question: "Neki tiketi (%{count}) pripadaju ovoj kategoriji. Sigurno to želite uraditi?" text_issue_category_destroy_assignments: Ukloni kategoriju text_issue_category_reassign_to: Ponovo dodijeli ovu kategoriju text_user_mail_option: "Za projekte koje niste odabrali, primit ćete samo notifikacije o stavkama koje pratite ili ste u njih ukljuÄeni (npr. vi ste autor ili su vama dodijeljene)." text_no_configuration_data: "Uloge, vrste, statusi tiketa i tok rada nisu konfigurisani.\nKrajnje je preporuÄeno da uÄitate uobiÄajene postavke. Kasnije ćete ih moći mjenjati po svojim potrebama." text_load_default_configuration: UÄitaj uobiÄajenu konfiguraciju text_status_changed_by_changeset: "Primjenjeno u setu promjena %{value}." text_issues_destroy_confirmation: 'Sigurno želite izbrisati odabranu/e aktivnost/i ?' text_select_project_modules: 'Odaberi module koje želite u ovom projektu:' text_default_administrator_account_changed: UobiÄajeni administratorski raÄun je promjenjen text_file_repository_writable: U folder sa fajlovima koji su prilozi se može zapisivati text_plugin_assets_writable: U folder sa pluginima se može zapisivati text_minimagick_available: MiniMagick available (optional) text_destroy_time_entries_question: "%{hours} sati je prijavljeno na aktivnostima koje želite brisati. Želite li to uÄiniti ?" text_destroy_time_entries: IzbriÅ¡i prijavljeno vrijeme text_assign_time_entries_to_project: Dodaj prijavljenoo vrijeme projektu text_reassign_time_entries: 'Preraspodjeli prijavljeno vrijeme na ovu aktivnost:' text_user_wrote: "%{value} je napisao/la:" text_user_wrote_in: "%{value} wrote in %{link}:" text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost." text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:' text_email_delivery_not_configured: "Email dostava nije konfigurisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga." text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisniÄko ima naÄ‘eno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju." text_diff_truncated: '... Ovaj prikaz razlike je odsjeÄen poÅ¡to premaÅ¡uje maksimalnu veliÄinu za prikaz' text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost' default_role_manager: Menadžer default_role_developer: Programer default_role_reporter: Reporter default_tracker_bug: GreÅ¡ka default_tracker_feature: Nova funkcija default_tracker_support: PodrÅ¡ka default_issue_status_new: Novi default_issue_status_in_progress: U toku default_issue_status_resolved: RijeÅ¡en default_issue_status_feedback: MiÅ¡ljenje default_issue_status_closed: Zatvoren default_issue_status_rejected: Odbijen default_doc_category_user: KorisniÄka dokumentacija default_doc_category_tech: TehniÄka dokumentacija default_priority_low: Nizak default_priority_normal: Normalan default_priority_high: Visok default_priority_urgent: Hitno default_priority_immediate: Odmah default_activity_design: Dizajn default_activity_development: Programiranje enumeration_issue_priorities: Prioritet aktivnosti enumeration_doc_categories: Kategorije dokumenata enumeration_activities: Operacije (utroÅ¡ak vremena) notice_unable_delete_version: Nie moguće izbrisati verziju. button_create_and_continue: Kreiraj i nastavi button_annotate: Zabilježi button_activate: Aktiviraj label_sort: Sortiranje label_date_from_to: Od %{start} do %{end} label_ascending: Rastuće label_descending: Opadajuće label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Ova stranica ima %{descendants} podstranica i potomaka. Å ta želite uraditi? text_wiki_page_reassign_children: Dodijeli podstranice ovoj matiÄnoj stranici text_wiki_page_nullify_children: Zadrži podstranice kao root stranice text_wiki_page_destroy_children: ObriÅ¡i podstranice i sve njihove potomke setting_password_min_length: Minimalna dužina Å¡ifre field_group_by: GrupiÅ¡i rezultate po mail_subject_wiki_content_updated: "'%{id}' wiki stranica je ažurirana" label_wiki_content_added: Wiki stranica je dodana mail_subject_wiki_content_added: "'%{id}' wiki stranica je dodana" mail_body_wiki_content_added: Wiki stranicu '%{id}' je dodana od %{author}. label_wiki_content_updated: Wiki stranica ažurirana mail_body_wiki_content_updated: Wiki stranica '%{id}' je ažurirana od %{author}. permission_add_project: Kreiranje projekta setting_new_project_user_role_id: Uloga data neadministratorskom korisniku koji kreira projekat label_view_all_revisions: Pregledaj sve revizije label_tag: Tag label_branch: Branch error_no_tracker_in_project: Nijedna vrsta tiketa nije aktivna u ovom projektu. Molimo provjerite postavke projekta. error_no_default_issue_status: Nije definisan nijedan uobiÄajeni status tiketa. Molimo provjerite vaÅ¡u konfiguraciju (Otvorite "Administracija -> Statusi tiketa"). text_journal_changed: "%{label} promijenjeno iz %{old} u %{new}" text_journal_set_to: "%{label} postavljeno na %{value}" text_journal_deleted: "%{label} obrisano (%{old})" label_group_plural: Grupe label_group: Grupa label_group_new: Nova grupa label_time_entry_plural: UtroÅ¡eno vrijeme text_journal_added: "%{label} %{value} dodano" field_active: Aktivno enumeration_system_activity: Sistemska aktivnost permission_delete_issue_watchers: ObriÅ¡i posmatraÄe version_status_closed: zatvorena version_status_locked: zakljuÄana version_status_open: otvorena error_can_not_reopen_issue_on_closed_version: Tiket dodijeljen zatvorenoj verziji nije moguće ponovo otvoriti label_user_anonymous: Anoniman button_move_and_follow: Premjesti i slijedi setting_default_projects_modules: UobiÄajeni aktivni moduli za nove projekte setting_gravatar_default: UobiÄajena Gravatar slika field_sharing: NasljeÄ‘ivanje label_version_sharing_hierarchy: Sa hijerarhijom projekta label_version_sharing_system: Sa svim projektima label_version_sharing_descendants: Sa podprojektima label_version_sharing_tree: Sa stablom projekta label_version_sharing_none: Bez nasljeÄ‘ivanja error_can_not_archive_project: Ovaj projekat nije moguće arhivirati button_copy_and_follow: Kopiraj i slijedi label_copy_source: Izvor setting_issue_done_ratio: IzraÄunaj postotak uraÄ‘enog pomoću setting_issue_done_ratio_issue_status: Koristi status tiketa error_issue_done_ratios_not_updated: Postotak uraÄ‘enog za tiket nije ažuriran. error_workflow_copy_target: Molimo odaberite odrediÅ¡ne vrste tiketa i uloge setting_issue_done_ratio_issue_field: Koristi polje tiket label_copy_same_as_target: Isto kao i odrediÅ¡te label_copy_target: OdrediÅ¡te notice_issue_done_ratios_updated: Postotak uraÄ‘enog ažuriran. error_workflow_copy_source: Molimo odaberiti izvoriÅ¡nu vrstu tiketa ili ulogu label_update_issue_done_ratios: Ažuriraj postotak uraÄ‘enog za tikete setting_start_of_week: Prvi dan u kalendaru permission_view_issues: Pregled tiketa label_display_used_statuses_only: Prikazuj samo statuse koriÅ¡tene u ovoj vrsti tiketa label_revision_id: Revizija %{value} label_api_access_key: API pristupni kljuÄ label_api_access_key_created_on: API pristupni kljuÄ kreiran %{value} label_feeds_access_key: Atom pristupni kljuÄ notice_api_access_key_reseted: VaÅ¡ API pristupni kljuÄ je resetovan. setting_rest_api_enabled: Omogući REST web servis label_missing_api_access_key: Nedostaje API pristupni kljuÄ label_missing_feeds_access_key: Nedostaje Atom pristupni kljuÄ button_show: Prikaži text_line_separated: Dozvoljene viÅ¡estruke vrijednosti (jedan red za svaku vrijednost). setting_mail_handler_body_delimiters: Skraćuj emailove nakon jedne od ovih linija permission_add_subprojects: Kreiraj podprojekte label_subproject_new: Novi podprojekat text_own_membership_delete_confirmation: "Upravo ćete ukloniti neke ili sve vaÅ¡e dozvole i možda nećete biti u mogućnosti da ureÄ‘ujete ovaj projekat nakon toga.\nJeste li sigurni da želite nastaviti?" label_close_versions: Zatvori dovrÅ¡ene verzije label_board_sticky: Istaknuto label_board_locked: ZakljuÄano permission_export_wiki_pages: Eksport wiki stranica setting_cache_formatted_text: KeÅ¡iraj formatirani tekst permission_manage_project_activities: Upravljanje aktivnostima projekta error_unable_delete_issue_status: Nije moguće obrisati status tiketa label_profile: Profil permission_manage_subtasks: Upravljanje podzadacima field_parent_issue: MatiÄni zadatak label_subtask_plural: Podzadaci label_project_copy_notifications: Å alji email notifikacije prilikom kopiranja projekta error_can_not_delete_custom_field: Nije moguće obrisati proizvoljno polje error_unable_to_connect: Nije se moguće povezati (%{value}) error_can_not_remove_role: Ova uloga je u upotrebi i nije je moguće obrisati. error_can_not_delete_tracker_html: Ovaj tok rada sadrži tikete i nije ga moguće obrisati.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: Glavni notice_failed_to_save_members: "NeuspjeÅ¡no snimanje Älanova: %{errors}." text_zoom_out: Smanji text_zoom_in: Uvećaj notice_unable_delete_time_entry: Nije moguće obrisati unos utroÅ¡ka vremena. field_time_entries: UtroÅ¡ak vremena project_module_gantt: Gant project_module_calendar: Kalendar button_edit_associated_wikipage: "Uredi povezanu Wiki stranicu: %{page_title}" field_text: Tekstualno polje setting_default_notification_option: UobiÄajena opcija notifikacija label_user_mail_option_only_my_events: Samo za stvari koje pratim ili sam radim na njima label_user_mail_option_none: Bez obavijesti field_member_of_group: Grupa odgovorne osobe field_assigned_to_role: Uloga odgovorne osobe notice_not_authorized_archived_project: Projekat kojem pokuÅ¡avate pristupiti je arhiviran. label_principal_search: "Traži korisnika ili grupu:" label_user_search: "Traži korisnika:" field_visible: Vidljivost setting_commit_logtime_activity_id: Aktivnost za utroÅ¡eno vrijeme text_time_logged_by_changeset: Primijenjeno u setu promjena %{value}. setting_commit_logtime_enabled: Omogući praćenje utroÅ¡ka vremena notice_gantt_chart_truncated: Dijagram je skraćen iz razloga Å¡to prekraÄuje maksimalni broj stavki koje mogu biti prikazane (%{max}) setting_gantt_items_limit: Maksimalan broj stavki prikazanih na gantogramu field_warn_on_leaving_unsaved: Upozori me kada napuÅ¡tam stranicu sa tekstom koji nije saÄuvan text_warn_on_leaving_unsaved: Trenutna stranica sadrži nesaÄuvani tekst koji će biti izgubljen ako stranicu napustite. label_my_queries: Moji upiti text_journal_changed_no_detail: "%{label} ažurirano" label_news_comment_added: Komentari dodani u novosti button_expand_all: Prikaži button_collapse_all: Sakrij label_additional_workflow_transitions_for_assignee: Dodatne tranzicije dozvoljene kada je korisnik odgovorna osoba label_additional_workflow_transitions_for_author: Dodatne tranzicije dozvoljene kada je korisnik autor label_bulk_edit_selected_time_entries: Grupno ureÄ‘ivanje oznaÄenih utroÅ¡aka vremena text_time_entries_destroy_confirmation: Jeste li sigurni da želite obrisati oznaÄene utroÅ¡ke vremena? label_role_anonymous: Anoniman label_role_non_member: Nije Älan label_issue_note_added: Komentar dodan label_issue_status_updated: Status ažuriran label_issue_priority_updated: Prioritet ažuriran label_issues_visibility_own: Tiketi kreirani ili dodijeljeni korisniku field_issues_visibility: Vidljivost tiketa label_issues_visibility_all: Svi tiketi permission_set_own_issues_private: OznaÄiti vlastite tikete javnim ili privatnim field_is_private: Privatno permission_set_issues_private: OznaÄiti tikete javnim ili privatnim label_issues_visibility_public: Svi neprivatni tiketi text_issues_destroy_descendants_confirmation: Ovo će takoÄ‘er obrisati %{count} podzadataka. field_commit_logs_encoding: 'Kodiranje commit poruka' field_scm_path_encoding: Kodiranje putanje text_scm_path_encoding_note: "UobiÄajeno: UTF-8" field_path_to_repository: Putanja do repozitorija field_root_directory: Root folder field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokalni repozitorij (npr. /hgrepo, c:\hgrepo) text_scm_command: Komanda text_scm_command_version: Verzija label_git_report_last_commit: Prijavi posljednji commit za fajlove i foldere notice_issue_successful_create: Tiket %{id} kreiran. label_between: izmeÄ‘u setting_issue_group_assignment: Dozvoli dodjelu tiketa grupama label_diff: diff text_git_repository_note: Repozitorij je prazan i lokalni (npr. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Smjer sortiranja description_project_scope: Opseg pretrage description_filter: Filter description_user_mail_notification: Postavke email notifikacija description_message_content: Sadržaj poruke description_available_columns: Dostupne kolone description_issue_category_reassign: Odaberite kategoriju tiketa description_search: Polje pretrage description_notes: Komentari description_choose_project: Projekti description_query_sort_criteria_attribute: Atributi sortiranja description_wiki_subpages_reassign: Odaberite novu matiÄnu stranicu description_selected_columns: OznaÄene kolone label_parent_revision: MatiÄna label_child_revision: Potomak error_scm_annotate_big_text_file: Unos ne može biti oznaÄen zato Å¡to prekraÄuje maksimalnu veliÄinu tekstualnog fajla. setting_default_issue_start_date_to_creation_date: Koristi danaÅ¡nji datum kao poÄetni datum novih tiketa button_edit_section: Uredi ovu sekciju setting_repositories_encodings: Kodiranje priloga i repozitorija description_all_columns: Sve kolone button_export: Eksport label_export_options: "%{export_format} eksport opcije" error_attachment_too_big: Ovaj fajl ne može biti dodan zato Å¡to prekraÄuje maksimalnu dozvoljenu veliÄinu fajla (%{max_size}) notice_failed_to_save_time_entries: "Nije moguće snimiti %{count} utroÅ¡aka vremena od %{total} odabranih: %{ids}." label_x_issues: zero: 0 aktivnost one: 1 aktivnost other: "%{count} aktivnosti" label_repository_new: Novi repozitorij field_repository_is_default: Glavni repozitorij label_copy_attachments: Kopiraj priloge label_item_position: "%{position}/%{count}" label_completed_versions: DovrÅ¡ene verzije text_project_identifier_info: Dozvoljena su samo mala slova (a-z), brojevi, crtice i podvuÄene crtice.
    Jednom saÄuvan identifikator nije moguće promijeniti. field_multiple: ViÅ¡estruke vrijednosti setting_commit_cross_project_ref: Dozvoli referenciranje i zatvaranje tiketa iz svih ostalih projekata text_issue_conflict_resolution_add_notes: Dodaj moje komentare i odbaci ostale promjene text_issue_conflict_resolution_overwrite: Ipak dodaj moje promjene (prethodni komentari će biti saÄuvani ali neke promjene će biti prebrisane) notice_issue_update_conflict: Tiket je ažuriran od strane drugog korisnika dok ste ga vi ureÄ‘ivali. text_issue_conflict_resolution_cancel: Odbaci sve moje promjene i ponovo prikaži %{link} permission_manage_related_issues: Upravljanje povezanim tiketima field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Traži i dodaj posmatraÄe notice_account_deleted: VaÅ¡ raÄun je trajno obrisan. setting_unsubscribe: Dozvoli korisnicima da obriÅ¡u vlastiti raÄun button_delete_my_account: ObriÅ¡i moj raÄun text_account_destroy_confirmation: "Jeste li sigurni da želite nastaviti?\nVaÅ¡ raÄun će biti trajno obrisan bez mogućnosti njegove reaktivacije." error_session_expired: VaÅ¡a sesija je istekla. Molimo vas da se ponovo prijavite. text_session_expiration_settings: "Upozorenje: promjenom ovih postavki možete poniÅ¡titi trenutne sesije ukljuÄujući i vaÅ¡u vlastitu." setting_session_lifetime: Maksimalna dužina sesije setting_session_timeout: Vremensko ograniÄenje neaktivnosti sesije label_session_expiration: Istek sesije permission_close_project: Zatvori / ponovo otvori projekat button_close: Zatvori button_reopen: Ponovo otvori project_status_active: aktivan project_status_closed: zatvoren project_status_archived: arhiviran text_project_closed: Ovaj projekat je zatvoren i samo za Äitanje. notice_user_successful_create: Korisnik %{id} kreiran. field_core_fields: Standardna polja field_timeout: Vremensko ograniÄenje (sekunde) setting_thumbnails_enabled: Prikaži sliÄice priloga setting_thumbnails_size: VeliÄina sliÄice (pikseli) label_status_transitions: Tranzicije statusa label_fields_permissions: Dozvole za polja label_readonly: Samo za Äitanje label_required: Obavezno text_repository_identifier_info: Dozvoljena su samo mala slova (a-z), brojevi, crtice i podvuÄene crtice.
    Jednom saÄuvan identifikator nije moguće promijeniti. field_board_parent: MatiÄni forum label_attribute_of_project: Projekat %{name} label_attribute_of_author: Autor %{name} label_attribute_of_assigned_to: Odgovorna osoba %{name} label_attribute_of_fixed_version: Ciljna verzija %{name} label_copy_subtasks: Kopiraj podzadatke label_copied_to: kopiranu u label_copied_from: kopirano iz label_any_issues_in_project: bilo koji tiket u projektu label_any_issues_not_in_project: bilo koji tiket koji nije u projektu field_private_notes: Privatni komentari permission_view_private_notes: Pregled privatnih komentara permission_set_notes_private: Oznaka komentara kao privatnih label_no_issues_in_project: nema tiketa u projektu label_any: sve label_last_n_weeks: posljednjih %{count} sedmica setting_cross_project_subtasks: Dozvoli podzadatke izmeÄ‘u projekata label_cross_project_descendants: Sa podprojektima label_cross_project_tree: Sa stablom projekta label_cross_project_hierarchy: Sa hijerarhijom projekta label_cross_project_system: Sa svim projektima button_hide: Sakrij setting_non_working_week_days: Neradni dani label_in_the_next_days: u sljedećih label_in_the_past_days: u proÅ¡lih label_attribute_of_user: Korisnik %{name} text_turning_multiple_off: Ako iskljuÄite viÅ¡estruke vrijednosti, one će biti uklonjene kako bi se saÄuvala samo jedna vrijednost za svaku stavku. label_attribute_of_issue: Tiket %{name} permission_add_documents: Dodavanje dokumenata permission_edit_documents: UreÄ‘ivanje dokumenata permission_delete_documents: Brisanje dokumenata label_gantt_progress_line: Tok napretka setting_jsonp_enabled: Omogući JSONP podrÅ¡ku field_inherit_members: Naslijedi Älanove field_closed_on: Zatvoreno field_generate_password: GeneriÅ¡i Å¡ifru setting_default_projects_tracker_ids: Osnovni tokovi rada za nove projekte label_total_time: Ukupno text_scm_config: VaÅ¡e SCM komande možete definisati u config/configuration.yml. Nakon toga, molimo da ponovo pokrenete aplikaciju. text_scm_command_not_available: SCM komanda nije dostupna. Molimo provjerite postavke u administraciji. setting_emails_header: Email zaglavlje notice_account_not_activated_yet: JoÅ¡ niste aktivirali svoj raÄun. Ako želite da dobijete novi aktivacijski email, molimo kliknite na ovaj link. notice_account_locked: VaÅ¡ raÄun je zakljuÄan. label_hidden: Sakriveno label_visibility_private: samo za mene label_visibility_roles: samo za ove uloge label_visibility_public: za sve korisnike field_must_change_passwd: Mora promijeniti Å¡ifru prilikom sljedeće prijave notice_new_password_must_be_different: Nova Å¡ifra se mora razlikovati od postojeće setting_mail_handler_excluded_filenames: Izuzmi priloge na osnovu imena text_convert_available: ImageMagick konverzija dostupna (neobavezno) label_link: Link label_only: samo label_drop_down_list: padajuća list label_checkboxes: potvrdni kvadratić label_link_values_to: Poveži vrijednost sa URL-om setting_force_default_language_for_anonymous: Forsiraj uobiÄajeni jezik za anonimne korisnike setting_force_default_language_for_loggedin: Forsiraj uobiÄajeni jezik za prijavljene korisnike label_custom_field_select_type: Odaberite tik objekta za koji želite vezati proizvoljno polje label_issue_assigned_to_updated: Odgovorna osoba ažurirana label_check_for_updates: Provjeri ažuriranja label_latest_compatible_version: Najnovija kompatibilna verzija label_unknown_plugin: Nepoznat plugin label_radio_buttons: radio dugmad label_group_anonymous: Anonimni korisnici label_group_non_member: Korisnici neÄlanovi label_add_projects: Dodaj projekte field_default_status: Osnovni status text_subversion_repository_note: 'Naprimjer: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Vidljivost korisnika label_users_visibility_all: Svi aktivni korisnici label_users_visibility_members_of_visible_projects: ÄŒlanovi vidljivih projekata label_edit_attachments: Uredi priložene fajlove setting_link_copied_issue: Poveži tiketi prilikom kopiranja label_link_copied_issue: Poveži kopirane tikete label_ask: Pitaj label_search_attachments_yes: Pretraga naziva i opisa priloga label_search_attachments_no: Ne pretražuj priloge label_search_attachments_only: Pretražuj samo priloge label_search_open_issues_only: Samo otvorene tikete field_address: Email setting_max_additional_emails: Maksimalan broj dodatnih email adresa label_email_address_plural: Emailovi label_email_address_add: Dodaj email adresu label_enable_notifications: Omogući notifikacije label_disable_notifications: Onemogući notifikacije setting_search_results_per_page: Broj rezultata po stranici label_blank_value: prazno permission_copy_issues: Kopiraj tikete error_password_expired: VaÅ¡a Å¡ifra je istekla i administrator od vas traži njenu promjenu. field_time_entries_visibility: Vidljivost utroÅ¡enog vremena setting_password_max_age: Zahtjevaj promjenu Å¡ifre nakon label_parent_task_attributes: Atributi matiÄnih zadataka label_parent_task_attributes_derived: IzraÄunaj iz podzadataka label_parent_task_attributes_independent: Neovisno od podzadataka label_time_entries_visibility_all: Svi utroÅ¡ci vremena label_time_entries_visibility_own: UtroÅ¡ci vremena korisnika label_member_management: Upravljanje Älanovima label_member_management_all_roles: Sve uloge label_member_management_selected_roles_only: Samo ove uloge label_password_required: Za nastavak potvrdite vaÅ¡u Å¡ifru label_total_spent_time: Ukupno utroÅ¡eno vrijeme notice_import_finished: "%{count} stavki je importovano" notice_import_finished_with_errors: "%{count} od ukupno %{total} stavki nije moglo biti importovano" error_invalid_file_encoding: Fajl nije ispravno kodiran %{encoding} fajl error_invalid_csv_file_or_settings: Ovaj fajl nije CSV fajl i ne sadrži postavke odabrane ispod error_can_not_read_import_file: Desila se greÅ¡ka prilikom Äitanja fajla za import permission_import_issues: Import tiketa label_import_issues: Import tiketa label_select_file_to_import: Odaberi fajl za import label_fields_separator: Razdvajanje polja label_fields_wrapper: Oznaka polja label_encoding: Kodiranje label_comma_char: Zarez label_semi_colon_char: TaÄka zarez label_quote_char: Jednostruki navodnici label_double_quote_char: Dvostruki navodnici label_fields_mapping: Mapiranje polja label_file_content_preview: Pregled sadržaja fajla label_create_missing_values: Kreiraj nedostajuće vrijednosti button_import: Import field_total_estimated_hours: Ukupno procijenjeno vrijeme label_api: API label_total_plural: Ukupno label_assigned_issues: Dodijeljeni tiketi label_field_format_enumeration: Lista kljuÄ/vrijednost label_f_hour_short: '%{value} h' field_default_version: UobiÄajena verzija error_attachment_extension_not_allowed: Ekstenzija priloga %{extension} nije dozvoljena setting_attachment_extensions_allowed: Dozvoljene ekstenzije setting_attachment_extensions_denied: Nedozvoljene ekstenzije label_any_open_issues: bilo koji otvoreni tiket label_no_open_issues: bez otvorenih tiketa label_default_values_for_new_users: Osnovne vrijednosti za nove korisnike error_ldap_bind_credentials: NetaÄan LDAP raÄun/Å¡ifra setting_sys_api_key: API kljuÄ (obrada ulaznih mailova) setting_lost_password: Zaboravljena Å¡ifra mail_subject_security_notification: Sigurnosne notifikacije mail_body_security_notification_change: ! '%{field} je promijenjeno.' mail_body_security_notification_change_to: ! '%{field} je promijenjeno u %{value}.' mail_body_security_notification_add: ! '%{field} %{value} je dodano.' mail_body_security_notification_remove: ! '%{field} %{value} je uklonjeno.' mail_body_security_notification_notify_enabled: Email adresa %{value} sada prima notifikacije. mail_body_security_notification_notify_disabled: Email adresa %{value} viÅ¡e ne prima notifikacije. mail_body_settings_updated: ! 'Sljedeće postavke su promijenjene:' field_remote_ip: IP adresa label_wiki_page_new: Nova wiki stranica label_relations: Relacije button_filter: Filter mail_body_password_updated: VaÅ¡a Å¡ifra je promijenjena. label_no_preview: Pregled nije dostupan error_no_tracker_allowed_for_new_issue_in_project: Projekat nema nijedan tok rada za koji možete kreirati tiket label_tracker_all: Svi tokovi rada label_new_project_issue_tab_enabled: Prikaži tab "Novi tiket" setting_new_item_menu_tab: Tab projektnog menija za kreiranje novih objekata label_new_object_tab_enabled: Prikaži "+" listu error_no_projects_with_tracker_allowed_for_new_issue: Nema projekata sa tokovima rada za koje možete kreirati tiket field_textarea_font: Font koriÅ¡ten u tekstualnim oblastima label_font_default: UobiÄajeni font label_font_monospace: Neproporcionalni (Monospaced) font label_font_proportional: Proporcionalni font setting_timespan_format: Format vremena label_table_of_contents: Sadržaj setting_commit_logs_formatting: Primijenjuj formatiranje teksts na commit poruke setting_mail_handler_enable_regex: Omogući regularne izraze error_move_of_child_not_possible: 'Podzadatak %{child} ne može biti premjeÅ¡ten u novi projekat: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: UtroÅ¡eno vrijeme nije moguće ponovo dodijeliti za tiket koji će upravo biti obrisan setting_timelog_required_fields: Obavezna polja za praćenje vremena label_attribute_of_object: '%{object_name} %{name}' label_user_mail_option_only_assigned: Samo za stvari koje pratim ili su mi dodijenjene label_user_mail_option_only_owner: Samo za stvari koje pratim ili Äiji sam vlasnik warning_fields_cleared_on_bulk_edit: Promjene će rezultirati u automatskom brisanju vrijednost iz jednog ili viÅ¡e polja oznaÄenih objekata field_updated_by: Ažurirano od field_last_updated_by: Posljednje ažuriranje od field_full_width_layout: Raspored sa punom Å¡irinom label_last_notes: Posljednji komentari field_digest: Kontrolni broj field_default_assigned_to: UobiÄajena odgovorna osoba setting_show_custom_fields_on_registration: Prikaži proizvoljna polja prilikom registracije permission_view_news: Pregled novosti label_no_preview_alternative_html: Pregled nije dostupna. %{link} fajl umjesto toga. label_no_preview_download: Preuzmi setting_close_duplicate_issues: Automatski zatvori duplikate tiketa error_exceeds_maximum_hours_per_day: Nije moguće zapisati viÅ¡e od %{max_hours} sati na isti dan (%{logged_hours} sati je već zapisano) setting_time_entry_list_defaults: Zadane vrijednosti liste praćenja vremena setting_timelog_accept_0_hours: Prihvati izvjeÅ¡taje o vremenu sa 0 sati setting_timelog_max_hours_per_day: Maksimalni broj sati koje dnevno može prijaviti korisnik label_x_revisions: "%{count} revizija" error_can_not_delete_auth_source: Ovaj autentifikacijski mod je u upotrebi i nije ga moguće obrisati. button_actions: Akcije mail_body_lost_password_validity: Imajte na umu da pomoću ovog linka Å¡ifru možete promijeniti samo jednom. text_login_required_html: Kada autentifikacija nije obavezna, javni projekti i njihov sadržaj će biti dostupni svima na mreži. Možete promijeniti dozvole aplikacije. label_login_required_yes: 'Da' label_login_required_no: Ne, dozovoli anonimni pristup javnim projektima text_project_is_public_non_member: Javni projekti i njihov sadržaj je dostupan svim prijavljenim korisnicima. text_project_is_public_anonymous: Javni projekti i njihov sadržaj je dostupan svima na mreži bez ograniÄenja. label_version_and_files: Verzija (%{count}) i fajlovi label_ldap: LDAP label_ldaps_verify_none: LDAPS (bez provjere certifikata) label_ldaps_verify_peer: LDAPS label_ldaps_warning: PreporuÄeno je da koristite Å¡ifriranu LDAPS konekciju sa certifikatom, kako biste sprijeÄili bilo kakve manipulacije prilikom procesa autentifikacije. label_nothing_to_preview: NiÅ¡ta za pregled error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: IzbriÅ¡i relaciju error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/ca.yml000066400000000000000000002306161500112024600171410ustar00rootroot00000000000000# Redmine Catalan translation: # by Joan Duran # Contributors: @gimstein (Helder Manuel Torres Vieira) ca: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: "ltr" date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d-%m-%Y" short: "%e de %b" long: "%a, %e de %b de %Y" day_names: [Diumenge, Dilluns, Dimarts, Dimecres, Dijous, Divendres, Dissabte] abbr_day_names: [dg, dl, dt, dc, dj, dv, ds] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Gener, Febrer, Març, Abril, Maig, Juny, Juliol, Agost, Setembre, Octubre, Novembre, Desembre] abbr_month_names: [~, Gen, Feb, Mar, Abr, Mai, Jun, Jul, Ago, Set, Oct, Nov, Des] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%d-%m-%Y %H:%M" time: "%H:%M" short: "%e de %b, %H:%M" long: "%a, %e de %b de %Y, %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "mig minut" less_than_x_seconds: one: "menys d'un segon" other: "menys de %{count} segons" x_seconds: one: "1 segons" other: "%{count} segons" less_than_x_minutes: one: "menys d'un minut" other: "menys de %{count} minuts" x_minutes: one: "1 minut" other: "%{count} minuts" about_x_hours: one: "aproximadament 1 hora" other: "aproximadament %{count} hores" x_hours: one: "1 hora" other: "%{count} hores" x_days: one: "1 dia" other: "%{count} dies" about_x_months: one: "aproximadament 1 mes" other: "aproximadament %{count} mesos" x_months: one: "1 mes" other: "%{count} mesos" about_x_years: one: "aproximadament 1 any" other: "aproximadament %{count} anys" over_x_years: one: "més d'un any" other: "més de %{count} anys" almost_x_years: one: "quasi 1 any" other: "quasi %{count} anys" number: # Default format for numbers format: separator: "." delimiter: "," precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "i" skip_last_comma: false activerecord: errors: template: header: one: "no s'ha pogut desar aquest %{model} perquè s'ha trobat 1 error" other: "no s'ha pogut desar aquest %{model} perquè s'han trobat %{count} errors" messages: inclusion: "no està inclòs a la llista" exclusion: "està reservat" invalid: "no és vàlid" confirmation: "la confirmació no coincideix" accepted: "s'ha d'acceptar" empty: "no pot estar buit" blank: "no pot estar en blanc" too_long: "és massa llarg" too_short: "és massa curt" wrong_length: "la longitud és incorrecta" taken: "ja s'està utilitzant" not_a_number: "no és un número" not_a_date: "no és una data vàlida" greater_than: "ha de ser més gran que %{count}" greater_than_or_equal_to: "ha de ser més gran o igual a %{count}" equal_to: "ha de ser igual a %{count}" less_than: "ha de ser menys que %{count}" less_than_or_equal_to: "ha de ser menys o igual a %{count}" odd: "ha de ser senar" even: "ha de ser parell" greater_than_start_date: "ha de ser superior que la data inicial" not_same_project: "no pertany al mateix projecte" circular_dependency: "Aquesta relació crearia una dependència circular" cant_link_an_issue_with_a_descendant: "Una incidència no es pot enllaçar a una de les seves subtasques" earlier_than_minimum_start_date: "no pot ser anterior a %{date} derivat a les peticions precedents" not_a_regexp: "no és una expressió regular vàlida" open_issue_with_closed_parent: "Una incidència oberta no es pot assignar auna tasca pare tancada " must_contain_uppercase: "ha de tenir lletres majuscules (A-Z)" must_contain_lowercase: "ha de tenir lletres minúscules (a-z)" must_contain_digits: "ha de tenir digits (0-9)" must_contain_special_chars: "ha de tenir caràcters especials (!, $, %, ...)" domain_not_allowed: "conté un domini no permès (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: "Seleccionar" general_text_No: "No" general_text_Yes: "Si" general_text_no: "no" general_text_yes: "si" general_lang_name: "Catalan (Català)" general_csv_separator: ";" general_csv_decimal_separator: "," general_csv_encoding: "ISO-8859-15" general_pdf_fontname: "freesans" general_pdf_monospaced_fontname: "freemono" general_first_day_of_week: "1" notice_account_updated: "El compte s'ha actualitzat correctament." notice_account_invalid_credentials: "Usuari o contrasenya invàlid" notice_account_password_updated: "La contrasenya s'ha modificat correctament." notice_account_wrong_password: "Contrasenya incorrecta" notice_account_register_done: "El compte s'ha creat correctament. Per a activar el compte, feu clic en l'enllaç que us han enviat per correu electrònic." notice_can_t_change_password: "Aquest compte utilitza una font d'autenticació externa. No és possible canviar la contrasenya." notice_account_lost_email_sent: "S'ha enviat un correu electrònic amb instruccions per a seleccionar una contrasenya nova." notice_account_activated: "El compte s'ha activat correctament. Ara ja podeu entrar." notice_successful_create: "S'ha creat correctament." notice_successful_update: "S'ha modificat correctament." notice_successful_delete: "S'ha suprimit correctament." notice_successful_connection: "S'ha connectat correctament." notice_file_not_found: "La pàgina a la que intenteu accedir no existeix o s'ha suprimit." notice_locking_conflict: "Un altre usuari ha actualitzat les dades." notice_not_authorized: "No teniu permís per accedir a aquesta pàgina." notice_email_sent: "S'ha enviat un correu electrònic a %{value}" notice_email_error: "S'ha produït un error en enviar el correu (%{value})" notice_feeds_access_key_reseted: "S'ha reiniciat la clau d'accés del Atom." notice_api_access_key_reseted: "S'ha reiniciat la clau d'accés a l'API." notice_failed_to_save_issues: "No s'han pogut desar %{count} incidències de %{total} seleccionades: %{ids}." notice_failed_to_save_members: "No s'han pogut desar els membres: %{errors}." notice_account_pending: "S'ha creat el compte i ara està pendent de l'aprovació de l'administrador." notice_default_data_loaded: "S'ha carregat correctament la configuració predeterminada." notice_unable_delete_version: "No s'ha pogut suprimir la versió." notice_unable_delete_time_entry: "No s'ha pogut suprimir l'entrada del registre de temps." notice_issue_done_ratios_updated: "S'ha actualitzat el percentatge de les incidències." error_can_t_load_default_data: "No s'ha pogut carregar la configuració predeterminada: %{value} " error_scm_not_found: "No s'ha trobat l'entrada o la revisió en el repositori." error_scm_command_failed: "S'ha produït un error en intentar accedir al repositori: %{value}" error_scm_annotate: "L'entrada no existeix o no s'ha pogut anotar." error_issue_not_found_in_project: "No s'ha trobat la incidència o no pertany a aquest projecte" error_no_tracker_in_project: "Aquest projecte no té cap tipus d'incidència associada. Comproveu els paràmetres del projecte." error_no_default_issue_status: "No s'ha definit cap estat d'incidència predeterminada. Comproveu la configuració (aneu a «Administració -> Estats de la incidència»)." error_can_not_delete_custom_field: "No s'ha pogut suprimir el camp personalitat" error_can_not_delete_tracker_html: "Aquest tipus d'incidència conté incidències i no es pot suprimir.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Aquest rol s'està utilitzant i no es pot suprimir." error_can_not_reopen_issue_on_closed_version: "Una incidència assignada a una versió tancada no es pot tornar a obrir" error_can_not_archive_project: "Aquest projecte no es pot arxivar" error_issue_done_ratios_not_updated: "No s'ha actualitzat el percentatge de les incidències." error_workflow_copy_source: "Seleccioneu un tipus d'incidència o rol font" error_workflow_copy_target: "Seleccioneu tipus de incidències i rols objectiu" error_unable_delete_issue_status: "No s'ha pogut suprimir l'estat de la incidència (%{value})" error_unable_to_connect: "No s'ha pogut connectar (%{value})" warning_attachments_not_saved: "No s'han pogut desar %{count} fitxers." error_ldap_bind_credentials: "Compte/Contrasenya LDAP incorrecte" mail_subject_lost_password: "Contrasenya de %{value}" mail_body_lost_password: "Per a canviar la contrasenya, feu clic en l'enllaç següent:" mail_subject_register: "Activació del compte de %{value}" mail_body_register: "Per a activar el compte, feu clic en l'enllaç següent:" mail_body_account_information_external: "Podeu utilitzar el compte «%{value}» per entrar." mail_body_account_information: "Informació del compte" mail_subject_account_activation_request: "Sol·licitud d'activació del compte de %{value}" mail_body_account_activation_request: "S'ha registrat un usuari nou (%{value}). El seu compte està pendent d'aprovació:" mail_subject_reminder: "%{count} incidències venceran els següents %{days} dies" mail_body_reminder: "%{count} incidències que teniu assignades venceran els següents %{days} dies:" mail_subject_wiki_content_added: "S'ha afegit la pàgina wiki «%{id}»" mail_body_wiki_content_added: "En %{author} ha afegit la pàgina wiki «%{id}»." mail_subject_wiki_content_updated: "S'ha actualitzat la pàgina wiki «%{id}»" mail_body_wiki_content_updated: "L'autor %{author} ha actualitzat la pàgina wiki «%{id}»." field_name: "Nom" field_description: "Descripció" field_summary: "Resum" field_is_required: "Necessari" field_firstname: "Nom" field_lastname: "Cognom" field_mail: "Correu electrònic" field_filename: "Fitxer" field_filesize: "Mida" field_downloads: "Baixades" field_author: "Autor" field_created_on: "Creat" field_updated_on: "Actualitzat" field_field_format: "Format" field_is_for_all: "Per tots els projectes" field_possible_values: "Valors possibles" field_regexp: "Expressió regular" field_min_length: "Longitud mínima" field_max_length: "Longitud màxima" field_value: "Valor" field_category: "Categoria" field_title: "Títol" field_project: "Projecte" field_issue: "Incidència" field_status: "Estat" field_notes: "Notes" field_is_closed: "Incidència tancada" field_is_default: "Estat predeterminat" field_tracker: "Tipus d'incidència" field_subject: "Tema" field_due_date: "Data de venciment" field_assigned_to: "Assignat a" field_priority: "Prioritat" field_fixed_version: "Versió prevista" field_user: "Usuari" field_principal: User or Group field_role: "Rol" field_homepage: "Pàgina web" field_is_public: "Públic" field_parent: "Subprojecte de" field_is_in_roadmap: "Incidències mostrades en la planificació" field_login: "Identificador" field_mail_notification: "Notificacions per correu electrònic" field_admin: "Administrador" field_last_login_on: "Última connexió" field_language: "Idioma" field_effective_date: "Data" field_password: "Contrasenya" field_new_password: "Nova contrasenya" field_password_confirmation: "Confirmació" field_version: "Versió" field_type: "Tipus" field_host: "Servidor" field_port: "Port" field_account: "Compte" field_base_dn: "Base DN" field_attr_login: "Atribut d'entrada" field_attr_firstname: "Atribut del nom" field_attr_lastname: "Atribut del cognom" field_attr_mail: "Atribut del correu electrònic" field_onthefly: "Creació de l'usuari «al vol»" field_start_date: "Inici" field_done_ratio: "% realitzat" field_auth_source: "Mode d'autenticació" field_hide_mail: "Oculta l'adreça de correu electrònic" field_comments: "Comentari" field_url: "URL" field_start_page: "Pàgina inicial" field_subproject: "Subprojecte" field_hours: "Hores" field_activity: "Activitat" field_spent_on: "Data" field_identifier: "Identificador" field_is_filter: "Utilitzat com filtre" field_issue_to: "Incidència relacionada" field_delay: "Retràs" field_assignable: "Es poden assignar incidències a aquest rol" field_redirect_existing_links: "Redirigeix els enllaços existents" field_estimated_hours: "Temps previst" field_column_names: "Columnes" field_time_entries: "Registre de temps" field_time_zone: "Zona horària" field_searchable: "Es pot cercar" field_default_value: "Valor predeterminat" field_comments_sorting: "Mostra els comentaris" field_parent_title: "Pàgina pare" field_editable: "Es pot editar" field_watcher: "Vigilant" field_content: "Contingut" field_group_by: "Agrupa els resultats per" field_sharing: "Compartir" field_parent_issue: "Tasca pare" setting_app_title: "Títol de l'aplicació" setting_welcome_text: "Text de benvinguda" setting_default_language: "Idioma predeterminat" setting_login_required: "Es necessita autenticació" setting_self_registration: "Registre automàtic" setting_attachment_max_size: "Mida màxima dels fitxers adjunts" setting_issues_export_limit: "Límit d'exportació d'incidències" setting_mail_from: "Adreça de correu electrònic d'emissió" setting_plain_text_mail: "només text pla (no HTML)" setting_host_name: "Nom del Servidor" setting_text_formatting: "Format del text" setting_wiki_compression: "Comprimeix l'historial de la wiki" setting_feeds_limit: "Límit de contingut del canal" setting_default_projects_public: "Els projectes nous són públics per defecte" setting_autofetch_changesets: "Omple automàticament les publicacions" setting_sys_api_enabled: "Activar WS per a la gestió del repositori" setting_commit_ref_keywords: "Paraules claus per a la referència" setting_commit_fix_keywords: "Paraules claus per a la correcció" setting_autologin: "Entrada automàtica" setting_date_format: "Format de la data" setting_time_format: "Format de hora" setting_cross_project_issue_relations: "Permet les relacions d'incidències entre projectes" setting_issue_list_default_columns: "Columnes mostrades per defecte en la llista d'incidències" setting_emails_footer: "Peu dels correus electrònics" setting_protocol: "Protocol" setting_per_page_options: "Opcions dels objectes per pàgina" setting_user_format: "Format de com mostrar l'usuari" setting_activity_days_default: "Dies a mostrar l'activitat del projecte" setting_display_subprojects_issues: "Mostra les incidències d'un subprojecte en el projecte pare per defecte" setting_enabled_scm: "Activar SCM" setting_mail_handler_body_delimiters: "Trunca els correus electrònics després d'una d'aquestes línies" setting_mail_handler_api_enabled: "Activar WS per correus electrònics d'entrada" setting_mail_handler_api_key: "Clau API" setting_sequential_project_identifiers: "Genera identificadors de projecte seqüencials" setting_gravatar_enabled: "Utilitza les icones d'usuari Gravatar" setting_gravatar_default: "Imatge Gravatar predeterminada" setting_diff_max_lines_displayed: "Número màxim de línies amb diferències mostrades" setting_file_max_size_displayed: "Mida màxima dels fitxers de text mostrats en línia" setting_repository_log_display_limit: "Número màxim de revisions que es mostren al registre de fitxers" setting_password_min_length: "Longitud mínima de la contrasenya" setting_new_project_user_role_id: "Aquest rol es dóna a un usuari no administrador per a crear projectes" setting_default_projects_modules: "Mòduls activats per defecte en els projectes nous" setting_issue_done_ratio: "Calcula tant per cent realitzat de la incidència amb" setting_issue_done_ratio_issue_status: "Utilitza l'estat de la incidència" setting_issue_done_ratio_issue_field: "Utilitza el camp de la incidència" setting_start_of_week: "Inicia les setmanes en" setting_rest_api_enabled: "Habilita el servei web REST" setting_cache_formatted_text: "Recorda el text formatat" permission_add_project: "Crear projecte" permission_add_subprojects: "Crear subprojectes" permission_edit_project: "Editar projecte" permission_select_project_modules: "Selecciona els mòduls del projecte" permission_manage_members: "Gestionar els membres" permission_manage_project_activities: "Gestionar les activitats del projecte" permission_manage_versions: "Gestionar les versions" permission_manage_categories: "Gestionar les categories de les incidències" permission_view_issues: "Visualitza les incidències" permission_add_issues: "Afegir incidències" permission_edit_issues: "Editar incidències" permission_manage_issue_relations: "Gestiona les relacions de les incidències" permission_add_issue_notes: "Afegir notes" permission_edit_issue_notes: "Editar notes" permission_edit_own_issue_notes: "Editar notes pròpies" permission_delete_issues: "Suprimir incidències" permission_manage_public_queries: "Gestionar consultes públiques" permission_save_queries: "Desar consultes" permission_view_gantt: "Visualitzar gràfica de Gantt" permission_view_calendar: "Visualitzar calendari" permission_view_issue_watchers: "Veure la llista de vigilants" permission_add_issue_watchers: "Afegir vigilants" permission_delete_issue_watchers: "Eliminar vigilants" permission_log_time: "Registrar el temps invertit" permission_view_time_entries: "Visualitzar el temps invertit" permission_edit_time_entries: "Editar els registres de temps" permission_edit_own_time_entries: "Editar els registres de temps propis" permission_manage_news: "Gestionar noticies" permission_comment_news: "Comentar noticies" permission_view_documents: "Visualitzar documents" permission_manage_files: "Gestionar fitxers" permission_view_files: "Visualitzar fitxers" permission_manage_wiki: "Gestionar la wiki" permission_rename_wiki_pages: "Canviar el nom de les pàgines wiki" permission_delete_wiki_pages: "Suprimir les pàgines wiki" permission_view_wiki_pages: "Visualitzar la wiki" permission_view_wiki_edits: "Visualitza l'historial de la wiki" permission_edit_wiki_pages: "Editar les pàgines wiki" permission_delete_wiki_pages_attachments: "Suprimir adjunts" permission_protect_wiki_pages: "Protegir les pàgines wiki" permission_manage_repository: "Gestionar el repositori" permission_browse_repository: "Navegar pel repositori" permission_view_changesets: "Visualitzar els canvis realitzats" permission_commit_access: "Accés a les publicacions" permission_manage_boards: "Gestionar els taulers" permission_view_messages: "Visualitzar els missatges" permission_add_messages: "Enviar missatges" permission_edit_messages: "Editar missatges" permission_edit_own_messages: "Editar missatges propis" permission_delete_messages: "Suprimir els missatges" permission_delete_own_messages: Suprimir els missatges propis permission_export_wiki_pages: "Exportar les pàgines wiki" permission_manage_subtasks: "Gestionar subtasques" project_module_issue_tracking: "Tipus d'incidències" project_module_time_tracking: "Seguidor de temps" project_module_news: "Noticies" project_module_documents: "Documents" project_module_files: "Fitxers" project_module_wiki: "Wiki" project_module_repository: "Repositori" project_module_boards: "Taulers" project_module_calendar: "Calendari" project_module_gantt: "Gantt" label_user: "Usuari" label_user_plural: "Usuaris" label_user_new: "Nou usuari" label_user_anonymous: "Anònim" label_project: "Projecte" label_project_new: "Nou projecte" label_project_plural: "Projectes" label_x_projects: zero: "cap projecte" one: "1 projecte" other: "%{count} projectes" label_project_all: "Tots els projectes" label_project_latest: "Els últims projectes" label_issue: "Incidència" label_issue_new: "Nova incidència" label_issue_plural: "Incidències" label_issue_view_all: "Visualitzar totes les incidències" label_issues_by: "Incidències per %{value}" label_issue_added: "Incidència afegida" label_issue_updated: "Incidència actualitzada" label_document: "Document" label_document_new: "Nou document" label_document_plural: "Documents" label_document_added: "Document afegit" label_role: "Rol" label_role_plural: "Rols" label_role_new: "Nou rol" label_role_and_permissions: "Rols i permisos" label_member: "Membre" label_member_new: "Nou membre" label_member_plural: "Membres" label_tracker: "Tipus d'incidència" label_tracker_plural: "Tipus d'incidències" label_tracker_new: "Nou tipus d'incidència" label_workflow: "Flux de treball" label_issue_status: "Estat de la incidència" label_issue_status_plural: "Estats de les incidències" label_issue_status_new: "Nou estat" label_issue_category: "Categoria de la incidència" label_issue_category_plural: "Categories de la incidència" label_issue_category_new: "Nova categoria" label_custom_field: "Camp personalitzat" label_custom_field_plural: "Camps personalitzats" label_custom_field_new: "Nou camp personalitzat" label_enumerations: "Llistat de valors" label_enumeration_new: "Nou valor" label_information: "Informació" label_information_plural: "Informació" label_register: "Registrar" label_password_lost: "Has oblidat la contrasenya?" label_home: "Inici" label_my_page: "La meva pàgina" label_my_account: "El meu compte" label_my_projects: "Els meus projectes" label_administration: "Administració" label_login: "Iniciar sessió" label_logout: "Tancar sessió" label_help: "Ajuda" label_reported_issues: "Incidències informades" label_assigned_to_me_issues: "Incidències assignades a mi" label_registered_on: "Informat el" label_activity: "Activitat" label_user_activity: "Activitat de %{value}" label_new: "Nou" label_logged_as: "Heu entrat com a" label_environment: "Entorn" label_authentication: "Autenticació" label_auth_source: "Mode d'autenticació" label_auth_source_new: "Nou mode d'autenticació" label_auth_source_plural: "Modes d'autenticació" label_subproject_plural: "Subprojectes" label_subproject_new: "Nou subprojecte" label_and_its_subprojects: "%{value} i els seus subprojectes" label_min_max_length: "Longitud mín - màx" label_list: "Llista" label_date: "Data" label_integer: "Numero" label_float: "Flotant" label_boolean: "Booleà" label_string: "Text" label_text: "Text llarg" label_attribute: "Atribut" label_attribute_plural: "Atributs" label_no_data: "Sense dades a mostrar" label_change_status: "Canvia l'estat" label_history: "Historial" label_attachment: "Fitxer" label_attachment_new: "Nou fitxer" label_attachment_delete: "Suprimir fitxer" label_attachment_plural: "Fitxers" label_file_added: "Fitxer afegit" label_report: "Informe" label_report_plural: "Informes" label_news: "Noticies" label_news_new: "Nova noticia" label_news_plural: "Noticies" label_news_latest: "Últimes noticies" label_news_view_all: "Visualitza totes les noticies" label_news_added: "Noticies afegides" label_settings: "Paràmetres" label_overview: "Resum" label_version: "Versió" label_version_new: "Nova versió" label_version_plural: "Versions" label_close_versions: "Tancar versions completades" label_confirmation: "Confirmació" label_export_to: "També disponible a:" label_read: "Llegir..." label_public_projects: "Projectes públics" label_open_issues: "obert" label_open_issues_plural: "oberts" label_closed_issues: "tancat" label_closed_issues_plural: "tancats" label_x_open_issues_abbr: zero: "0 oberts" one: "1 obert" other: "%{count} oberts" label_x_closed_issues_abbr: zero: "0 tancats" one: "1 tancat" other: "%{count} tancats" label_total: "Total" label_permissions: "Permisos" label_current_status: "Estat actual" label_new_statuses_allowed: "Nous estats autoritzats" label_all: "tots" label_none: "cap" label_nobody: "ningú" label_next: "Següent" label_previous: "Anterior" label_used_by: "Utilitzat per" label_details: "Detalls" label_add_note: "Afegir una nota" label_calendar: "Calendari" label_months_from: "mesos des de" label_gantt: "Gantt" label_internal: "Intern" label_last_changes: "últims %{count} canvis" label_change_view_all: "Visualitza tots els canvis" label_comment: "Comentari" label_comment_plural: "Comentaris" label_x_comments: zero: "sense comentaris" one: "1 comentari" other: "%{count} comentaris" label_comment_add: "Afegir un comentari" label_comment_added: "Comentari afegit" label_comment_delete: "Suprimir comentaris" label_query: "Consulta personalitzada" label_query_plural: "Consultes personalitzades" label_query_new: "Nova consulta" label_filter_add: "Afegir un filtre" label_filter_plural: "Filtres" label_equals: "és" label_not_equals: "no és" label_in_less_than: "en menys de" label_in_more_than: "en més de" label_greater_or_equal: ">=" label_less_or_equal: "<=" label_in: "en" label_today: "avui" label_yesterday: "ahir" label_this_week: "aquesta setmana" label_last_week: "l'última setmana" label_last_n_days: "els últims %{count} dies" label_this_month: "aquest més" label_last_month: "l'últim més" label_this_year: "aquest any" label_date_range: "Rang de dates" label_less_than_ago: "fa menys de" label_more_than_ago: "fa més de" label_ago: "fa" label_contains: "conté" label_not_contains: "no conté" label_day_plural: "dies" label_repository: "Repositori" label_repository_plural: "Repositoris" label_branch: "Branca" label_tag: "Etiqueta" label_revision: "Revisió" label_revision_plural: "Revisions" label_revision_id: "Revisió %{value}" label_associated_revisions: "Revisions associades" label_added: "afegit" label_modified: "modificat" label_copied: "copiat" label_renamed: "reanomenat" label_deleted: "suprimit" label_latest_revision: "Última revisió" label_latest_revision_plural: "Últimes revisions" label_view_revisions: "Visualitzar revisions" label_view_all_revisions: "Visualitza totes les revisions" label_max_size: "Mida màxima" label_roadmap: "Planificació" label_roadmap_due_in: "Venç en %{value}" label_roadmap_overdue: "%{value} tard" label_roadmap_no_issues: "No hi ha incidències per a aquesta versió" label_search: "Cerca" label_result_plural: "Resultats" label_all_words: "Totes les paraules" label_wiki: "Wiki" label_wiki_edit: "Edició wiki" label_wiki_edit_plural: "Edicions wiki" label_wiki_page: "Pàgina wiki" label_wiki_page_plural: "Pàgines wiki" label_index_by_title: "Ãndex per títol" label_index_by_date: "Ãndex per data" label_current_version: "Versió actual" label_preview: "Previsualitzar" label_feed_plural: "Canals" label_changes_details: "Detalls de tots els canvis" label_issue_tracking: "Seguiment d'incidències" label_spent_time: "Temps invertit" label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} hores" label_time_tracking: "Temps de seguiment" label_change_plural: "Canvis" label_statistics: "Estadístiques" label_commits_per_month: "Publicacions per mes" label_commits_per_author: "Publicacions per autor" label_view_diff: "Visualitza les diferències" label_diff_inline: "en línia" label_diff_side_by_side: "costat per costat" label_options: "Opcions" label_copy_workflow_from: "Copia el flux de treball des de" label_permissions_report: "Informe de permisos" label_watched_issues: "Incidències vigilades" label_related_issues: "Incidències relacionades" label_applied_status: "Estat aplicat" label_loading: "S'està carregant..." label_relation_new: "Nova Relació" label_relation_delete: "Suprimir relació" label_relates_to: "relacionat amb" label_duplicates: "duplicats" label_duplicated_by: "duplicat per" label_blocks: "bloqueja" label_blocked_by: "bloquejats per" label_precedes: "anterior a" label_follows: "posterior a" label_stay_logged_in: "Manté l'entrada" label_disabled: "inhabilitat" label_show_completed_versions: "Mostra les versions completes" label_me: "jo mateix" label_board: "Tauler" label_board_new: "Nou Tauler" label_board_plural: "Taulers" label_board_locked: "Bloquejat" label_board_sticky: "Sticky" label_topic_plural: "Temes" label_message_plural: "Missatges" label_message_last: "Últim missatge" label_message_new: "Nou missatge" label_message_posted: "Missatge afegit" label_reply_plural: "Respostes" label_send_information: "Envia la informació del compte a l'usuari" label_year: "Any" label_month: "Mes" label_week: "Setmana" label_date_from: "Des de" label_date_to: "A" label_language_based: "Basat en l'idioma de l'usuari" label_sort_by: "Ordenar per %{value}" label_send_test_email: "Enviar correu electrònic de prova" label_feeds_access_key: "Clau d'accés Atom" label_missing_feeds_access_key: "Falta una clau d'accés Atom" label_feeds_access_key_created_on: "Clau d'accés Atom creada fa %{value}" label_module_plural: "Mòduls" label_added_time_by: "Afegit per %{author} fa %{age}" label_updated_time_by: "Actualitzat per %{author} fa %{age}" label_updated_time: "Actualitzat fa %{value}" label_jump_to_a_project: "Anar al projecte..." label_file_plural: "Fitxers" label_changeset_plural: "Conjunt de canvis" label_default_columns: "Columnes predeterminades" label_no_change_option: (sense canvis) label_bulk_edit_selected_issues: "Editar en bloc les incidències seleccionades" label_theme: "Tema" label_default: "Predeterminat" label_search_titles_only: "Cerca només per títol" label_user_mail_option_all: "Per qualsevol esdeveniment en tots els meus projectes" label_user_mail_option_selected: "Per qualsevol esdeveniment en els projectes seleccionats..." label_user_mail_no_self_notified: "No vull ser notificat pels canvis que faig jo mateix" label_registration_activation_by_email: "activació del compte per correu electrònic" label_registration_manual_activation: "activació del compte manual" label_registration_automatic_activation: "activació del compte automàtica" label_display_per_page: "Per pàgina: %{value}" label_age: "Edat" label_change_properties: "Canvia les propietats" label_general: "General" label_scm: "SCM" label_plugins: "Complements" label_ldap_authentication: "Autenticació LDAP" label_downloads_abbr: "Baixades" label_optional_description: "Descripció opcional" label_add_another_file: "Afegir un altre fitxer" label_preferences: "Preferències" label_chronological_order: "En ordre cronològic" label_reverse_chronological_order: "En ordre cronològic invers" label_incoming_emails: "Correu electrònics d'entrada" label_generate_key: "Generar una clau" label_issue_watchers: "Vigilants" label_example: "Exemple" label_display: "Mostrar" label_sort: "Ordenar" label_ascending: "Ascendent" label_descending: "Descendent" label_date_from_to: "Des de %{start} a %{end}" label_wiki_content_added: "S'ha afegit la pàgina wiki" label_wiki_content_updated: "S'ha actualitzat la pàgina wiki" label_group: "Grup" label_group_plural: "Grups" label_group_new: "Nou grup" label_time_entry_plural: "Temps invertit" label_version_sharing_hierarchy: "Amb la jerarquia del projecte" label_version_sharing_system: "Amb tots els projectes" label_version_sharing_descendants: "Amb tots els subprojectes" label_version_sharing_tree: "Amb l'arbre del projecte" label_version_sharing_none: "Sense compartir" label_update_issue_done_ratios: "Actualitza el tant per cent de les incidències realitzades" label_copy_source: "Font" label_copy_target: "Objectiu" label_copy_same_as_target: "El mateix que l'objectiu" label_display_used_statuses_only: "Mostra només els estats que utilitza aquest tipus d'incidència" label_api_access_key: "Clau d'accés API" label_missing_api_access_key: "Falta una clau d'accés API" label_api_access_key_created_on: "Clau d'accés API creada fa %{value}" label_profile: "Perfil" label_subtask_plural: "Subtasques" label_project_copy_notifications: "Envia notificacions de correu electrònic durant la còpia del projecte" button_login: "Accedir" button_submit: "Acceptar" button_save: "Desar" button_check_all: "Selecciona-ho tot" button_uncheck_all: "No seleccionar res" button_delete: "Eliminar" button_create: "Crear" button_create_and_continue: "Crear i continuar" button_test: "Provar" button_edit: "Editar" button_add: "Afegir" button_change: "Canviar" button_apply: "Aplicar" button_clear: "Netejar" button_lock: "Bloquejar" button_unlock: "Desbloquejar" button_download: "Baixar" button_list: "Llistar" button_view: "Visualitzar" button_move: "Moure" button_move_and_follow: "Moure i continuar" button_back: "Enrere" button_cancel: "Cancel·lar" button_activate: "Activar" button_sort: "Ordenar" button_log_time: "Registre de temps" button_rollback: "Tornar a aquesta versió" button_watch: "Vigilar" button_unwatch: "No vigilar" button_reply: "Resposta" button_archive: "Arxivar" button_unarchive: "Desarxivar" button_reset: "Reiniciar" button_rename: "Reanomenar" button_change_password: "Canviar la contrasenya" button_copy: "Copiar" button_copy_and_follow: "Copiar i continuar" button_annotate: "Anotar" button_update: "Actualitzar" button_configure: "Configurar" button_quote: "Citar" button_show: "Mostrar" status_active: "actiu" status_registered: "registrat" status_locked: "bloquejat" version_status_open: "oberta" version_status_locked: "bloquejada" version_status_closed: "tancada" field_active: "Actiu" text_select_mail_notifications: "Seleccionar les accions per les quals s'hauria d'enviar una notificació per correu electrònic." text_regexp_info: "ex. ^[A-Z0-9]+$" text_project_destroy_confirmation: "Segur que voleu suprimir aquest projecte i les dades relacionades?" text_subprojects_destroy_warning: "També seran suprimits els seus subprojectes: %{value}." text_workflow_edit: "Seleccioneu un rol i un tipus d'incidència per a editar el flux de treball" text_are_you_sure: "Segur?" text_journal_changed: "%{label} ha canviat de %{old} a %{new}" text_journal_set_to: "%{label} s'ha establert a %{value}" text_journal_deleted: "%{label} s'ha suprimit (%{old})" text_journal_added: "S'ha afegit %{label} %{value}" text_tip_issue_begin_day: "tasca que s'inicia aquest dia" text_tip_issue_end_day: "tasca que finalitza aquest dia" text_tip_issue_begin_end_day: "tasca que s'inicia i finalitza aquest dia" text_caracters_maximum: "%{count} caràcters com a màxim." text_caracters_minimum: "Com a mínim ha de tenir %{count} caràcters." text_length_between: "Longitud entre %{min} i %{max} caràcters." text_tracker_no_workflow: "No s'ha definit cap flux de treball per a aquest tipus d'incidència" text_unallowed_characters: "Caràcters no permesos" text_comma_separated: "Es permeten valors múltiples (separats per una coma)." text_line_separated: "Es permeten diversos valors (una línia per cada valor)." text_issues_ref_in_commit_messages: "Referència i soluciona les incidències en els missatges publicats" text_issue_added: "la incidència %{id} ha sigut informada per %{author}." text_issue_updated: "la incidència %{id} ha sigut actualitzada per %{author}." text_wiki_destroy_confirmation: "Segur que voleu suprimir aquesta wiki i tot el seu contingut?" text_issue_category_destroy_question: "Algunes incidències (%{count}) estan assignades a aquesta categoria. Què voleu fer?" text_issue_category_destroy_assignments: "Suprimir les assignacions de la categoria" text_issue_category_reassign_to: "Tornar a assignar les incidències a aquesta categoria" text_user_mail_option: "Per als projectes no seleccionats, només rebreu notificacions sobre les coses que vigileu o que hi esteu implicat (ex. incidències on sou l'autor o hi esteu assignat)." text_no_configuration_data: "Encara no s'han configurat els rols, tipus d'incidència, estats de la incidència i flux de treball.\nÉs altament recomanable que carregueu la configuració predeterminada. Podreu modificar-la un cop carregada." text_load_default_configuration: "Carregar la configuració predeterminada" text_status_changed_by_changeset: "Aplicat en el conjunt de canvis %{value}." text_issues_destroy_confirmation: "Segur que voleu suprimir les incidències seleccionades?" text_select_project_modules: "Seleccionar els mòduls a habilitar per a aquest projecte:" text_default_administrator_account_changed: "S'ha canviat el compte d'administrador predeterminat" text_file_repository_writable: "Es pot escriure en el repositori de fitxers" text_plugin_assets_writable: "Es pot escriure als complements actius" text_minimagick_available: "MiniMagick disponible (opcional)" text_destroy_time_entries_question: "S'han informat %{hours} hores en les incidències que aneu a suprimir. Què voleu fer?" text_destroy_time_entries: "Suprimir les hores informades" text_assign_time_entries_to_project: "Assignar les hores informades al projecte" text_reassign_time_entries: "Tornar a assignar les hores informades a aquesta incidència:" text_user_wrote: "%{value} va escriure:" text_user_wrote_in: "%{value} va escriure (%{link}):" text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor." text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:" text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo." text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al repositori.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del repositori s'assignaran automàticament." text_diff_truncated: "... Aquestes diferències s'han truncat perquè excedeixen la mida màxima que es pot mostrar." text_custom_field_possible_values_info: "Una línia per a cada valor" text_wiki_page_destroy_question: "Aquesta pàgina té %{descendants} pàgines fill(es) i descendent(s). Què voleu fer?" text_wiki_page_nullify_children: "Deixar les pàgines filles com a pàgines arrel" text_wiki_page_destroy_children: "Suprimir les pàgines filles i tots els seus descendents" text_wiki_page_reassign_children: "Reassignar les pàgines filles a aquesta pàgina pare" text_own_membership_delete_confirmation: "Esteu a punt de suprimir algun o tots els vostres permisos i potser no podreu editar més aquest projecte.\nSegur que voleu continuar?" text_zoom_in: "Reduir" text_zoom_out: "Ampliar" default_role_manager: "Gestor" default_role_developer: "Desenvolupador" default_role_reporter: "Informador" default_tracker_bug: "Error" default_tracker_feature: "Característica" default_tracker_support: "Suport" default_issue_status_new: "Nou" default_issue_status_in_progress: "En Progrés" default_issue_status_resolved: "Resolt" default_issue_status_feedback: "Comentaris" default_issue_status_closed: "Tancat" default_issue_status_rejected: "Rebutjat" default_doc_category_user: "Documentació d'usuari" default_doc_category_tech: "Documentació tècnica" default_priority_low: "Baixa" default_priority_normal: "Normal" default_priority_high: "Alta" default_priority_urgent: "Urgent" default_priority_immediate: "Immediata" default_activity_design: "Disseny" default_activity_development: "Desenvolupament" enumeration_issue_priorities: "Prioritat de les incidències" enumeration_doc_categories: "Categories del document" enumeration_activities: "Activitats (seguidor de temps)" enumeration_system_activity: "Activitat del sistema" button_edit_associated_wikipage: "Editar pàgines Wiki asociades: %{page_title}" field_text: "Camp de text" setting_default_notification_option: "Opció de notificació per defecte" label_user_mail_option_only_my_events: "Només pels objectes on estic en vigilància o involucrat" label_user_mail_option_none: "Sense notificacions" field_member_of_group: "Assignat al grup" field_assigned_to_role: "Assignat al rol" notice_not_authorized_archived_project: "El projecte al que intenta accedir està arxivat." label_principal_search: "Cercar per usuari o grup:" label_user_search: "Cercar per usuari:" field_visible: "Visible" setting_commit_logtime_activity_id: "Activitat dels temps registrats" text_time_logged_by_changeset: "Aplicat en el canvi %{value}." setting_commit_logtime_enabled: "Habilitar registre d'hores" notice_gantt_chart_truncated: "S'ha retallat el diagrama perquè excedeix del número màxim d'elements que es poden mostrar (%{max})" setting_gantt_items_limit: "Numero màxim d'elements mostrats dins del diagrama de Gantt" field_warn_on_leaving_unsaved: "Avisa'm quan surti d'una pàgina sense desar els canvis" text_warn_on_leaving_unsaved: "Aquesta pàgina conté text sense desar i si surt els seus canvis es perdran" label_my_queries: "Les meves consultes" text_journal_changed_no_detail: "S'ha actualitzat %{label}" label_news_comment_added: "S'ha afegit un comentari a la notícia" button_expand_all: "Expandir tot" button_collapse_all: "Col·lapsar tot" label_additional_workflow_transitions_for_assignee: "Operacions addicionals permeses quan l'usuari té assignat la incidència" label_additional_workflow_transitions_for_author: "Operacions addicionals permeses quan l'usuari és propietari de la incidència" label_bulk_edit_selected_time_entries: "Editar en bloc els registres de temps seleccionats" text_time_entries_destroy_confirmation: "Està segur de voler eliminar (l'hora seleccionada/les hores seleccionades)?" label_role_anonymous: "Anònim" label_role_non_member: "No membre" label_issue_note_added: "Nota afegida" label_issue_status_updated: "Estat actualitzat" label_issue_priority_updated: "Prioritat actualitzada" label_issues_visibility_own: "Peticions creades per l'usuari o assignades a ell" field_issues_visibility: "Visibilitat de les peticions" label_issues_visibility_all: "Totes les peticions" permission_set_own_issues_private: "Posar les teves peticions pròpies com publica o privada" field_is_private: "Privat" permission_set_issues_private: "Posar les peticions com publica o privada" label_issues_visibility_public: "Totes les peticions no privades" text_issues_destroy_descendants_confirmation: "Es procedira a eliminar tambe %{count} subtas/ca/ques." field_commit_logs_encoding: "Codificació dels missatges publicats" field_scm_path_encoding: "Codificació de les rutes" text_scm_path_encoding_note: "Per defecte: UTF-8" field_path_to_repository: "Ruta al repositori " field_root_directory: "Directori arrel" field_cvs_module: "Modul" field_cvsroot: "CVSROOT" text_mercurial_repository_note: Repositori local (p.e. /hgrepo, c:\hgrepo) text_scm_command: "Comanda" text_scm_command_version: "Versió" label_git_report_last_commit: "Informar de l'ultim canvi(commit) per fitxers i directoris" notice_issue_successful_create: "Incidència %{id} creada correctament." label_between: "entre" setting_issue_group_assignment: "Permetre assignar incidències als grups" label_diff: "diferencies" text_git_repository_note: Directori repositori local (p.e. /hgrepo, c:\hgrepo) description_query_sort_criteria_direction: "Ordre d'ordenació" description_project_scope: "Àmbit de la cerca" description_filter: "Filtre" description_user_mail_notification: "Configuració de les notificacions per correu" description_message_content: "Contingut del missatge" description_available_columns: "Columnes disponibles" description_issue_category_reassign: "Escollir una categoria de la incidència" description_search: "Camp de cerca" description_notes: "Notes" description_choose_project: "Projectes" description_query_sort_criteria_attribute: "Atribut d'ordenació" description_wiki_subpages_reassign: "Esculli la nova pàgina pare" description_selected_columns: "Columnes seleccionades" label_parent_revision: "Pare" label_child_revision: "Fill" error_scm_annotate_big_text_file: "L'entrada no es pot anotar, ja que supera la mida màxima per fitxers de text." setting_default_issue_start_date_to_creation_date: "Utilitzar la data actual com a data inici per les noves peticions" button_edit_section: "Editar aquest apartat" setting_repositories_encodings: "Codificació per defecte pels fitxers adjunts i repositoris" description_all_columns: "Totes les columnes" button_export: "Exportar" label_export_options: "%{export_format} opcions d'exportació" error_attachment_too_big: "Aquest fitxer no es pot pujar perquè excedeix de la mida màxima (%{max_size})" notice_failed_to_save_time_entries: "Error al desar %{count} entrades de temps de les %{total} selecionades: %{ids}." label_x_issues: zero: "0 incidències" one: "1 incidència" other: "%{count} incidències" label_repository_new: "Nou repositori" field_repository_is_default: "Repositori principal" label_copy_attachments: "Copiar adjunts" label_item_position: "%{position}/%{count}" label_completed_versions: "Versions completades" text_project_identifier_info: "Només es permeten lletres en minúscula (a-z), números i guions.
    Una vegada desat, l'identificador no es pot canviar." field_multiple: "Valors múltiples" setting_commit_cross_project_ref: "Permetre referenciar i resoldre peticions de tots els altres projectes" text_issue_conflict_resolution_add_notes: "Afegir les meves notes i descartar els altres canvis" text_issue_conflict_resolution_overwrite: "Aplicar els meus canvis de totes formes (les notes anteriors es mantindran però alguns canvis poden ser sobreescrits)" notice_issue_update_conflict: "la incidència ha sigut actualitzada per un altre membre mentre s'editava" text_issue_conflict_resolution_cancel: "Descartar tots els meus canvis i mostrar de nou %{link}" permission_manage_related_issues: "Gestionar peticions relacionades" field_auth_source_ldap_filter: "Filtre LDAP" label_search_for_watchers: "Cercar vigilants per afegir-los" notice_account_deleted: "El seu compte ha sigut eliminat de forma permanent." setting_unsubscribe: "Permetre als usuaris eliminar el seu propi compte" button_delete_my_account: "Eliminar el meu compte" text_account_destroy_confirmation: |- Estàs segur de continuar? El seu compte s'eliminarà de forma permanent, sense la possibilitat de reactivar-lo. error_session_expired: "La seva sessió ha expirat. Si us plau, torni a identificar-se" text_session_expiration_settings: "Advertència: el canvi d'aquestes opcions poden provocar la expiració de les sessions actives, incloent la seva." setting_session_lifetime: "Temps de vida màxim de les sessions" setting_session_timeout: "Temps màxim d'inactivitat de les sessions" label_session_expiration: "Expiració de les sessions" permission_close_project: "Tancar / reobrir el projecte" button_close: "Tancar" button_reopen: "Reobrir" project_status_active: "actiu" project_status_closed: "tancat" project_status_archived: "arxivat" text_project_closed: "Aquest projecte està tancat i només és de lectura." notice_user_successful_create: "Usuari %{id} creat correctament." field_core_fields: "Camps bàsics" field_timeout: "Temps d'inactivitat (en segons)" setting_thumbnails_enabled: "Mostrar miniatures dels fitxers adjunts" setting_thumbnails_size: "Mida de les miniatures (en píxels)" label_status_transitions: "Transicions d'estat" label_fields_permissions: "Permisos sobre els camps" label_readonly: "Només lectura" label_required: "Requerit" text_repository_identifier_info: "Només es permeten lletres en minúscula (a-z), números i guions.
    Una vegada desat, l'identificador no es pot canviar." field_board_parent: "Tauler pare" label_attribute_of_project: "%{name} del projecte" label_attribute_of_author: "%{name} de l'autor" label_attribute_of_assigned_to: "{name} de l'assignat" label_attribute_of_fixed_version: "%{name} de la versió objectiu" label_copy_subtasks: "Copiar subtasques" label_copied_to: "copiada a" label_copied_from: "copiada des de" label_any_issues_in_project: "qualsevol incidència del projecte" label_any_issues_not_in_project: "qualsevol incidència que no sigui del projecte" field_private_notes: "Notes privades" permission_view_private_notes: "Veure notes privades" permission_set_notes_private: "Posar notes com privades" label_no_issues_in_project: "sense peticions al projecte" label_any: "tots" label_last_n_weeks: "en les darreres %{count} setmanes" setting_cross_project_subtasks: "Permetre subtasques creuades entre projectes" label_cross_project_descendants: "Amb tots els subprojectes" label_cross_project_tree: "Amb l'arbre del projecte" label_cross_project_hierarchy: "Amb la jerarquia del projecte" label_cross_project_system: "Amb tots els projectes" button_hide: "Amagar" setting_non_working_week_days: "Dies no laborables" label_in_the_next_days: "en els pròxims" label_in_the_past_days: "en els anteriors" label_attribute_of_user: "%{name} de l'usuari" text_turning_multiple_off: "Si es desactiva els valors múltiples, aquest seran eliminats per deixar només un únic valor per element." label_attribute_of_issue: "%{name} de la incidència" permission_add_documents: "Afegir document" permission_edit_documents: "Editar document" permission_delete_documents: "Eliminar document" label_gantt_progress_line: "Línia de progres" setting_jsonp_enabled: "Habilitar suport JSONP" field_inherit_members: "Heretar membres" field_closed_on: "Tancada" field_generate_password: "Generar contrasenya" setting_default_projects_tracker_ids: "Tipus d'estats d'incidència habilitat per defecte" label_total_time: "Total" text_scm_config: "Pot configurar les ordres SCM en el fitxer config/configuration.yml. Sis us plau, una vegada fet ha de reiniciar l'aplicació per aplicar els canvis." text_scm_command_not_available: "L'ordre SCM que es vol utilitzar no és troba disponible. Si us plau, comprovi la configuració dins del menú d'administració" setting_emails_header: "Encapçalament dels correus" notice_account_not_activated_yet: Encara no ha activat el seu compte. Si vol rebre un nou correu d'activació, si us plau faci clic en aquest enllaç. notice_account_locked: "Aquest compte està bloquejat." label_hidden: "Amagada" label_visibility_private: "només per mi" label_visibility_roles: "només per aquests rols" label_visibility_public: "per qualsevol usuari" field_must_change_passwd: "Canvi de contrasenya al pròxim inici de sessió" notice_new_password_must_be_different: "La nova contrasenya ha de ser diferent de l'actual." setting_mail_handler_excluded_filenames: "Excloure fitxers adjunts per nom" text_convert_available: "Conversió ImageMagick disponible (opcional)" label_link: "Enllaç" label_only: "només" label_drop_down_list: "Llista desplegable (Drop down)" label_checkboxes: "Camps de selecció (Checkboxes)" label_link_values_to: "Enllaçar valors a la URL" setting_force_default_language_for_anonymous: "Forçar llenguatge per defecte als usuaris anònims." setting_force_default_language_for_loggedin: "Forçar llenguatge per defecte als usuaris identificats." label_custom_field_select_type: "Seleccioni el tipus d'objecte al qual vol posar el camp personalitzat" label_issue_assigned_to_updated: "Persona assignada actualitzada" label_check_for_updates: "Comprovar actualitzacions" label_latest_compatible_version: "Ultima versió compatible" label_unknown_plugin: "Complement desconegut" label_radio_buttons: "Camps de selecció (Radiobutton)" label_group_anonymous: "Usuaris anònims" label_group_non_member: "Usuaris no membres" label_add_projects: "Afegir projectes" field_default_status: "Estat per defecte" text_subversion_repository_note: "Exemples: file:///, http://, https://, svn://, svn+[tunnelscheme]://" field_users_visibility: "Visibilitat dels usuaris" label_users_visibility_all: "Tots els usuaris actius" label_users_visibility_members_of_visible_projects: "Membres dels projectes visibles" label_edit_attachments: "Editar fitxers adjunts" setting_link_copied_issue: "Enllaçar incidència quan es realitzi la còpia" label_link_copied_issue: "Enllaçar incidència copiada" label_ask: "Demanar" label_search_attachments_yes: "Cercar per fitxer adjunt i descripció" label_search_attachments_no: "Sense fitxers adjunts" label_search_attachments_only: "Només fitxers adjunts" label_search_open_issues_only: "Només peticions obertes" field_address: "Correu electrònic" setting_max_additional_emails: "Màxim número de correus electrònics addicionals" label_email_address_plural: "Correus electrònics" label_email_address_add: "Afegir adreça de correu electrònic" label_enable_notifications: "Activar notificacions" label_disable_notifications: "Desactivar notificacions" setting_search_results_per_page: "Cercar resultats per pàgina" label_blank_value: "blanc" permission_copy_issues: "Copiar incidència" error_password_expired: "La teva contrasenya ha expirat, és necessari canviar-la" field_time_entries_visibility: "Visibilitat de les entrades de temps" setting_password_max_age: "Requereix canviar la contrasenya després de" label_parent_task_attributes: "Atributs de la tasca pare" label_parent_task_attributes_derived: "Calculat de les subtasques" label_parent_task_attributes_independent: "Independent de les subtasques" label_time_entries_visibility_all: "Tots els registres de temps" label_time_entries_visibility_own: "Els registres de temps creats per mi" label_member_management: "Administració de membres" label_member_management_all_roles: "Tots els rols" label_member_management_selected_roles_only: "Només aquests rols" label_password_required: "Confirmi la seva contrasenya per continuar" label_total_spent_time: "Temps total invertit" notice_import_finished: "%{count} element/s han sigut importats" notice_import_finished_with_errors: "%{count} de %{total} elements no s'ha pogut importar" error_invalid_file_encoding: "El fitxer no utilitza una codificació valida (%{encoding})" error_invalid_csv_file_or_settings: "El fitxer no es un CSV o no coincideix amb la configuració (%{value})" error_can_not_read_import_file: "S'ha produït un error mentre es llegia el fitxer a importar" permission_import_issues: "Importar incidències" label_import_issues: "Importar incidències" label_select_file_to_import: "Escull el fitxer per importar" label_fields_separator: "Separador dels camps" label_fields_wrapper: "Envoltori dels camps" label_encoding: "Codificació" label_comma_char: "Coma" label_semi_colon_char: "Punt i coma" label_quote_char: "Cometa simple" label_double_quote_char: "Cometa doble" label_fields_mapping: "Mapejat de camps" label_file_content_preview: "Vista prèvia del contingut" label_create_missing_values: "Crear valors no presents" button_import: "Importar" field_total_estimated_hours: "Temps total estimat" label_api: "API" label_total_plural: "Totals" label_assigned_issues: "Incidències assignades" label_field_format_enumeration: "Llistat clau/valor" label_f_hour_short: "%{value} h" field_default_version: "Versió per defecte" error_attachment_extension_not_allowed: "L'extensió %{extension} no està permesa" setting_attachment_extensions_allowed: "Extensions permeses" setting_attachment_extensions_denied: "Extensions no permeses" label_any_open_issues: "qualsevol incidència oberta" label_no_open_issues: "cap incidència oberta" label_default_values_for_new_users: "Valors per defecte pels nous usuaris" setting_sys_api_key: "Clau API" setting_lost_password: "Has oblidat la contrasenya?" mail_subject_security_notification: "Notificació de seguretat" mail_body_security_notification_change: ! '%{field} actualitzat.' mail_body_security_notification_change_to: ! '%{field} actualitzat per %{value}.' mail_body_security_notification_add: ! '%{field} %{value} afegit.' mail_body_security_notification_remove: ! '%{field} %{value} eliminat.' mail_body_security_notification_notify_enabled: "S'han activat les notificacions per l'adreça de correu %{value}" mail_body_security_notification_notify_disabled: "S'han desactivat les notificacions per l'adreça de correu %{value}" mail_body_settings_updated: ! "Les següents opcions s'han actualitzat:" field_remote_ip: Adreça IP label_wiki_page_new: Nova pàgina wiki label_relations: Relacions button_filter: Filtre mail_body_password_updated: "La seva contrasenya s'ha canviat." label_no_preview: Previsualització no disponible error_no_tracker_allowed_for_new_issue_in_project: "El projecte no disposa de cap tipus d'incidència sobre el qual vostè pugui crear una incidència" label_tracker_all: "Tots els tipus d'incidència" label_new_project_issue_tab_enabled: Mostrar la pestanya "Nova incidència" setting_new_item_menu_tab: Pestanya de nous objectes en el menu de cada projecte label_new_object_tab_enabled: Mostrar el llistat desplegable "+" error_no_projects_with_tracker_allowed_for_new_issue: "Cap projecte disposa d'un tipus d'incidència sobre el qual vostè pugui crear una incidència" field_textarea_font: Font utilitzada en les text àrea label_font_default: Font per defecte label_font_monospace: Font Monospaced label_font_proportional: Font Proportional setting_timespan_format: Time span format label_table_of_contents: Taula de continguts setting_commit_logs_formatting: Aplicar format de text als missatges de commit setting_mail_handler_enable_regex: Activar les expressions regulars error_move_of_child_not_possible: 'La subtasca %{child} no s''ha pogut moure al nou projecte: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: El temps consumit no es pot reassignar a una incidència que està a punt d'eliminar-se setting_timelog_required_fields: Camps obligatoria per el registre de temps label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Només per coses que segueixo o a les que estic assignat label_user_mail_option_only_owner: Només per coses que segueixo o a les que soc propietari warning_fields_cleared_on_bulk_edit: Els canvis implicaran en l'esborrat automàtic dels valors de un o més camps dels objectes seleccionats field_updated_by: Actualitzat per field_last_updated_by: Última actualtizació per field_full_width_layout: Amplada sencera label_last_notes: Últimes notes field_digest: Checksum field_default_assigned_to: Assignat per defecte setting_show_custom_fields_on_registration: Mostrar els camps personalitzat al registrar-se permission_view_news: Veure notícies label_no_preview_alternative_html: Sense vista prèvia. %{link} el fitxer. label_no_preview_download: Descarreguèu setting_close_duplicate_issues: Tanca incidències duplicades automàticament error_exceeds_maximum_hours_per_day: No es poden registrar més de %{max_hours} hores el mateix dia (ja s'han registrat %{logged_hours} hores) setting_time_entry_list_defaults: Llista del registre de temps per defecte setting_timelog_accept_0_hours: Accepta registres de temps amb 0 hores setting_timelog_max_hours_per_day: Màxim d'hores que es poden registrar per usuari i dia label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: Aquest mode d'autenticació està en ús i no es pot eliminar. button_actions: Accions mail_body_lost_password_validity: Tingueu en compte que podeu canviar la contrasenya només un cop fent servir aquest enllaç. text_login_required_html: Quan no es requereix autenticació, els projectes públics i el seu contingut son visibles per tothom a la xarxa. Podeu editar els permisos disponibles. label_login_required_yes: 'Yes' label_login_required_no: No, permetre accés anonim als projectes públics text_project_is_public_non_member: Els projectes públics i el seu contingut son disponibles per tots els usuaris registrats. text_project_is_public_anonymous: Els projectes públics i el seu contingut son disponibles de forma oberta a la xarxa. label_version_and_files: Versions (%{count}) i Fitxers label_ldap: LDAP label_ldaps_verify_none: LDAPS (sense comprovació de certificat) label_ldaps_verify_peer: LDAPS label_ldaps_warning: La recomanació es fer servir una connexió xifrada amb LDSPS amb verificació del certificat certificat per prevenir qualsevol manipulació durant el procés d'autenticació. label_nothing_to_preview: Res a previsualitzar error_token_expired: Aquests enllaç de recuperació de contrasenya ha caducat, proveu-ho de nou. error_spent_on_future_date: No es pot registrar temps en dates futures setting_timelog_accept_future_dates: Accceptar registres de temps en dates futures label_delete_link_to_subtask: "Suprimir relació" error_not_allowed_to_log_time_for_other_users: No podeu registrar temps dedicat per altres usuaris permission_log_time_for_other_users: Registrar el temps dedicat per altres usuaris label_tomorrow: demà label_next_week: la setmana vinent label_next_month: el mes vinent text_role_no_workflow: No hi cap flux de treball definit per aquest rol text_status_no_workflow: Cap tipus d'incidència fa servir aquest estat en els fluxes de treball setting_mail_handler_preferred_body_part: Part preferida dels correus multipart (HTML) setting_show_status_changes_in_mail_subject: Mostrar els canvis d'estat de les incidències en l'assumpte de les notificacions per correu label_inherited_from_parent_project: Heretats del projecte pare label_inherited_from_group: Heretats del grup %{name} label_trackers_description: Descripció dels tipus d'incidència label_open_trackers_description: Veure la descripció de tots els tipus d'incidència label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Assumpte de la tasca pare permission_edit_own_issues: Editar les pròpies incidències text_select_apply_tracker: Seleccionar tipus d'incidència label_updated_issues: Incidències actualitzades text_avatar_server_config_html: El servidor d'avatars actual és %{url}. El podeu configurar a config/configuration.yml. setting_gantt_months_limit: Nombre màxim de mesos mostrats en el diagrama de gantt permission_import_time_entries: Importar entrades de temps label_import_notifications: Enviar notificacions de correu durant la importació text_gs_available: Suport de ImageMagick PDF disponible (opcional) field_recently_used_projects: Nombre de projectes recents amb accés directe label_optgroup_bookmarks: Preferits label_optgroup_recents: Usats recentment button_project_bookmark: Afegir preferit button_project_bookmark_delete: Treure preferit field_history_default_tab: Pestanya per defecte de l'historic de la incidència label_issue_history_properties: Canvis de propietat label_issue_history_notes: Notes label_last_tab_visited: Última pestanya visitada field_unique_id: ID únic text_no_subject: sense assumpte setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: lletres majuscules label_password_char_class_lowercase: lletres minúscules label_password_char_class_digits: digits label_password_char_class_special_chars: caràcters especials text_characters_must_contain: Ha de tenir %{character_classes}. label_starts_with: comença amb label_ends_with: acaba amb label_issue_fixed_version_updated: Versió de destí al dia setting_project_list_defaults: Llista per defecte dels Projectes label_display_type: Mostrar resultats en label_display_type_list: Llista label_display_type_board: Taula label_my_bookmarks: El meus preferits label_import_time_entries: Importar entrades de temps field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Informar-me també de les incidències with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: Aquesta incidència no es pot tancar perquè té almenys una subtasca oberta. notice_issue_not_closable_by_blocking_issue: Aquesta incidència no es pot tancar perquè està bloquejada al menys per una incidència oberta. notice_issue_not_reopenable_by_closed_parent_issue: Aquesta incidència no es pot reobrir perquè la incidència pare ja està tancada. error_bulk_download_size_too_big: Aquests adjunts no es poden descarregar en lot perquè la mida total excedeix el màxim permès (%{max_size}) setting_bulk_download_max_size: Mida màxima per descàrrega el lot label_download_all_attachments: Descarregar tots els fitxers error_attachments_too_many: Aquest fitxer no es pot pujar perquè sobrepassa el nombre màxim de fitxers que es poden adjuntar simultaniament (%{max_number_of_files}) setting_email_domains_allowed: Dominis de correu permesos setting_email_domains_denied: Dominis de correu no permesos field_passwd_changed_on: Últim canvi de contrasenya label_relations_mapping: Mapa de les relacions label_import_users: Importar usuaris label_days_to_html: "%{days} dies fins %{date}" setting_twofa: Autenticació de doble factor label_optional: opcional label_required_lower: obligatoria button_disable: Desactivar twofa__totp__name: App autenticador twofa__totp__text_pairing_info_html: Escaneja aquest codi QR o entra la clau en text pla a una app TOTP (p.ex. Google Authenticator, Authy, Duo Mobile) i entra el codi en el camp de sotat per activar l'autenticació amb doble factor. twofa__totp__label_plain_text_key: Clau en text pla twofa__totp__label_activate: Activar app autenticador twofa_currently_active: 'Actualment actius<: %{twofa_scheme_name}' twofa_not_active: Sense activar twofa_label_code: Codi twofa_hint_disabled_html: Configurar %{label} desactivarà i desaparellarà l'autenticació de doble factor per tots els usuaris. twofa_hint_required_html: Configurar %{label} requerirà que tots els usuaris autenticació de doble factor en el pròxim login. twofa_label_setup: Habilitar el doble factor twofa_label_deactivation_confirmation: Desactivar el doble factor twofa_notice_select: 'Indiqueu quin esquema de doble factor voleu fer servir:' twofa_warning_require: L'administrador requereix que activeu el doble factor d'autenticació. twofa_activated: Autenticació amb doble factor correctament habilitada. Recomanem de generar codis de reserva pel vostre compte. twofa_deactivated: Doble factor deshablitat twofa_mail_body_security_notification_paired: S'ha activat l'autenticació amb doble factor correctament fent servir %{field}. twofa_mail_body_security_notification_unpaired: S'ha desactivat el dobler factor pel vostre compte. twofa_mail_body_backup_codes_generated: S'han generat nous codis d'autenticació de doble factor. twofa_mail_body_backup_code_used: S'ha fet servir un codi de reserva de doble factor. twofa_invalid_code: El codi és invalid o obsolet. twofa_label_enter_otp: Entreu el codi de segon factor. twofa_too_many_tries: Massa intents. twofa_resend_code: Reenviar codi twofa_code_sent: Us hem enviat un codi d'autenticació twofa_generate_backup_codes: generar codis de reserva twofa_text_generate_backup_codes_confirmation: Això invalidarà tots els codis de reserva i en generaraà de nous. Voleu seguir? twofa_notice_backup_codes_generated: Els codis de reserva s'han generat. twofa_warning_backup_codes_generated_invalidated: S'han generat nous codis de reserva. Els codis existents de %{time} ja no son vàlids. twofa_label_backup_codes: Codis de reserva del segon factor twofa_text_backup_codes_hint: Feu servir aquesta codis enlloc de una contrasenya única en cas que no tingueu accés al vostre segon factor. Cada codi es pot fer servir només una vegada. Recomanem imprimir-los i guardar-los en un lloc segur. twofa_text_backup_codes_created_at: Codis de reserva generats %{datetime}. twofa_backup_codes_already_shown: Els codis de reserva no es poden mostrar de nougenereu nous codis si és necessari. error_can_not_execute_macro_html: Error executant la macro %{name} (%{error}) error_macro_does_not_accept_block: Aquesta macro no accept un bloc de text error_childpages_macro_no_argument: Sense cap argument, aquesta macro només es pot cridar des de pàgines de wiki error_circular_inclusion: Detectada inclusió circular error_page_not_found: Pàgina no trobada error_filename_required: Nom de fitxer obligatori error_invalid_size_parameter: Paràmetre de mida incorrecte error_attachment_not_found: No s'ha trobat l'adjunt %{name} permission_delete_project: Esborra el projecte field_twofa_scheme: Esquem d'autenticació de doble factor text_user_destroy_confirmation: Esteu segurs que voleu eliminiar aquest usuari i totes les seves referències? Això no es pot desfer. Sovint, bloquejar un usuari en lloc d'eliminar-lo es millor solució. Per cofirmar, entreu el seu inici de sessió (%{login}) below. text_project_destroy_enter_identifier: Per confirmar, entreu l'indentificador del projecte (%{identifier}) a sota. button_add_subtask: Afegir subtasca notice_invalid_watcher: 'Vigilant incorrecte: L''usuari no rebrà notificacions perquè no te accés a veure aquest objecte.' button_fetch_changesets: Otenir comissions permission_view_message_watchers: Veure la llista de vigilants del missatge permission_add_message_watchers: Afegir vigilants al missatge permission_delete_message_watchers: Eliminar vigilants del missatge label_message_watchers: Vigilants button_copy_link: Copiar enllaç error_invalid_authenticity_token: Tipus de token d'autenticació invalid. error_query_statement_invalid: Hi ha hagut un error quan s'executava la consulta i s'ha registrat. Reporteu aquest error a l'administrador del Redmine. permission_view_wiki_page_watchers: Veure els vigilants de la pàgina de la wiki permission_add_wiki_page_watchers: Afegir vigilants a la pàgina de la wiki permission_delete_wiki_page_watchers: Eliminar vigilants de la pàgina de la wiki label_wiki_page_watchers: Vigilants label_attachment_description: Descripció del fitxer error_no_data_in_file: El fitxer no conté dades field_twofa_required: Requerir doble factor twofa_hint_optional_html: Posar %{label} permetrà els usuaris configurar autenticació de doble factor com vulguin, a no se que ho requereixi algun dels seus grups. twofa_text_group_required: Aquesta configuració només és efectiva quen l'autenticació de segon factor global està posada coma 'opcional'. Actualment, l'autenticació amb segon factor és obligatoria per tots els usuaris. twofa_text_group_disabled: Aquesta configuració només és efectiva quan l'autenticació de segon factor global està posada com a 'opcional'. Actualtment, l'autenticació amb segon factor està desactivada. field_default_issue_query: Consulta per defecte de incidències label_default_queries: for_all_projects: Per tots els projectes for_current_project: Per el projecte actual for_all_users: Per tots els usuaris for_this_user: Per aquest usuari text_allowed_queries_to_select: Publicar (a quasevol usuari) consultes només que puguin seleccionar text_all_migrations_have_been_run: Totes les migracions de base de dades s'han fet button_save_object: Guardar %{object_name} button_edit_object: Editar %{object_name} button_delete_object: Eliminar %{object_name} text_setting_config_change: Podeu configurar aquest comportament a config/configuration.yml. Reinicieu l'aplicació després d'editar. label_bulk_edit: Edició en bloc button_create_and_follow: Crear i seguir label_subtask: Subtasca label_default_query: Consulta per defecte field_default_project_query: Consulta per defecte del projecte label_required_administrators: requirit per administradors twofa_hint_required_administrators_html: Indicar %{label} es comporta com opcional, per requerirà que tots els usuaris amb drets d'administració configurin l'autenticació amb doble factor quan tornin a entrar. label_auto_watch_on: Vigilar automàticament label_auto_watch_on_issue_contributed_to: Incidències on he contribuït text_project_close_confirmation: Esteu segur que voleu tancar el projecte '%{value}' per fer-lo només de lectura? text_project_reopen_confirmation: Esteu segur que voleu reobrir el projecte '%{value}'? text_project_archive_confirmation: Esteu segur que voleu arxivar el projecte '%{value}'? mail_destroy_project_failed: El projecte %{value} no s'ha pogut eliminar. mail_destroy_project_successful: El projecte %{value} s'ha eliminat correctament. mail_destroy_project_with_subprojects_successful: El projecte %{value} i els seus subprojectes s'han eliminat correctament. project_status_scheduled_for_deletion: programat per eliminar text_projects_bulk_destroy_confirmation: Esteu segur que voleu eliminar els projectes seleccionats i les seves dades relacionades? text_projects_bulk_destroy_head: | Esteu a punt d'eliminar permanentment els següents projectes, incloent possible subprojectes i dades relacionades. Reviseu la informació de sotat i confirmeu si és el que voleu fer. Aquesta acció no es pot desfer. text_projects_bulk_destroy_confirm: Per confirmar, entreu "%{yes}" en el recuadre de sota. text_subprojects_bulk_destroy: 'incloent el(s) subprojecte(s): %{value}' field_current_password: Contrasenya actual sudo_mode_new_info_html: "Que està passant? Necesiteu reconfirmar la contrasenya abans de fer cap canvi adminstratiu, això assegura que el vostre compte segueix protegit." label_edited: Editat label_time_by_author: "%{time} per %{author}" field_default_time_entry_activity: Temps consumit per defecte de l'activitat field_is_member_of_group: Membre del grup text_users_bulk_destroy_head: Esteu a punt d'eliminar els següents usuaris i totes les referències cap a ells. Aquesta acció no es pot desfer. Sovint, bloquejar usuaris enlloc de eliminar-los és una solució millor. text_users_bulk_destroy_confirm: Per confirmar, entreu "%{yes}" a sota. permission_select_project_publicity: Marcar projecte com a públic o privat label_auto_watch_on_issue_created: Incidències que he creat field_any_searchable: Qualsevol text buscable label_contains_any_of: conté algun de button_apply_issues_filter: Aplicar el filtre de incidències label_view_previous_annotation: Veure nota d'abans d'aquest canvi label_has_been: ha sigut label_has_never_been: mai ha sigut label_changed_from: canviat de label_issue_statuses_description: Descripció de l'estat de les incidències label_open_issue_statuses_description: Veure totes les descpricions dels estats de les incidències text_default_active_job_queue_changed: L'adaptador de cua per defecte només és adequat per proves ha canviat text_select_apply_issue_status: Marca l'estat de la incidència field_name_or_email_or_login: Nom, correu o login label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/cs.yml000066400000000000000000002227001500112024600171560ustar00rootroot00000000000000# Update to 1.1 by Michal Gebauer # Updated by Josef LiÅ¡ka # CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz # Based on original CZ translation by Jan KadleÄek cs: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b %d" long: "%B %d, %Y" day_names: [nedÄ›le, pondÄ›lí, úterý, stÅ™eda, Ätvrtek, pátek, sobota] abbr_day_names: [ne, po, út, st, Ät, pá, so] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, leden, únor, bÅ™ezen, duben, kvÄ›ten, Äerven, Äervenec, srpen, září, říjen, listopad, prosinec] abbr_month_names: [~, led, úno, bÅ™e, dub, kvÄ›, Äer, Äec, srp, zář, říj, lis, pro] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "dop." pm: "odp." datetime: distance_in_words: half_a_minute: "půl minuty" less_than_x_seconds: one: "ménÄ› než sekunda" other: "ménÄ› než %{count} sekund(y)" x_seconds: one: "1 sekunda" other: "%{count} sekund" less_than_x_minutes: one: "ménÄ› než minuta" other: "ménÄ› než %{count} minut(y)" x_minutes: one: "1 minuta" other: "%{count} minut" about_x_hours: one: "asi 1 hodina" other: "asi %{count} hodin(y)" x_hours: one: "1 hodina" other: "%{count} hodin(y)" x_days: one: "1 den" other: "%{count} dny(ů)" about_x_months: one: "asi 1 mÄ›síc" other: "asi %{count} mÄ›síce(ů)" x_months: one: "1 mÄ›síc" other: "%{count} mÄ›síc(ů)" about_x_years: one: "asi 1 rok" other: "asi %{count} roky(ů)" over_x_years: one: "více než 1 rok" other: "více než %{count} roky(ů)" almost_x_years: one: "témeÅ™ 1 rok" other: "téměř %{count} roky(ů)" number: # Výchozí formát pro Äísla format: separator: "." delimiter: "" precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Bajt" other: "Bajtů" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "a" skip_last_comma: false activerecord: errors: template: header: one: "1 chyba zabránila uložení %{model}" other: "%{count} chyb zabránilo uložení %{model}" messages: inclusion: "není zahrnuto v seznamu" exclusion: "je rezervováno" invalid: "je neplatné" confirmation: "se neshoduje s potvrzením" accepted: "musí být akceptováno" empty: "nemůže být prázdný" blank: "nemůže být prázdný" too_long: "je příliÅ¡ dlouhý" too_short: "je příliÅ¡ krátký" wrong_length: "má chybnou délku" taken: "je již použito" not_a_number: "není Äíslo" not_a_date: "není platné datum" greater_than: "musí být vÄ›tší než %{count}" greater_than_or_equal_to: "musí být vÄ›tší nebo rovno %{count}" equal_to: "musí být pÅ™esnÄ› %{count}" less_than: "musí být ménÄ› než %{count}" less_than_or_equal_to: "musí být ménÄ› nebo rovno %{count}" odd: "musí být liché" even: "musí být sudé" greater_than_start_date: "musí být vÄ›tší než poÄáteÄní datum" not_same_project: "nepatří stejnému projektu" circular_dependency: "Tento vztah by vytvoÅ™il cyklickou závislost" cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílÄích úkolů" earlier_than_minimum_start_date: "nemůže být dříve než %{date} kvůli pÅ™edÅ™azeným úkolům" not_a_regexp: "není platný regulární výraz" open_issue_with_closed_parent: "OtevÅ™ený úkol nemůže být pÅ™iÅ™azen pod uzavÅ™ený rodiÄovský úkol" must_contain_uppercase: "musí obsahovat velká písmena (A-Z)" must_contain_lowercase: "musí obsahovat malá písmena (a-z)" must_contain_digits: "musí obsahovat Äísla (0-9)" must_contain_special_chars: "musí obsahovat speciální znaky (!, $, %, ...)" domain_not_allowed: "obsahuje nepovolenou doménu (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Prosím vyberte general_text_No: 'Ne' general_text_Yes: 'Ano' general_text_no: 'ne' general_text_yes: 'ano' general_lang_name: 'Czech (ÄŒeÅ¡tina)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: ÚÄet byl úspěšnÄ› zmÄ›nÄ›n. notice_account_invalid_credentials: Chybné jméno nebo heslo notice_account_password_updated: Heslo bylo úspěšnÄ› zmÄ›nÄ›no. notice_account_wrong_password: Chybné heslo notice_account_register_done: ÚÄet byl úspěšnÄ› vytvoÅ™en. Pro aktivaci úÄtu kliknÄ›te na odkaz v emailu, který vám byl zaslán. notice_can_t_change_password: Tento úÄet používá externí autentifikaci. Zde heslo zmÄ›nit nemůžete. notice_account_lost_email_sent: Byl vám zaslán email s intrukcemi jak si nastavíte nové heslo. notice_account_activated: Váš úÄet byl aktivován. Nyní se můžete pÅ™ihlásit. notice_successful_create: ÚspěšnÄ› vytvoÅ™eno. notice_successful_update: ÚspěšnÄ› aktualizováno. notice_successful_delete: ÚspěšnÄ› odstranÄ›no. notice_successful_connection: Úspěšné pÅ™ipojení. notice_file_not_found: Stránka, kterou se snažíte zobrazit, neexistuje nebo byla smazána. notice_locking_conflict: Údaje byly zmÄ›nÄ›ny jiným uživatelem. notice_not_authorized: Nemáte dostateÄná práva pro zobrazení této stránky. notice_not_authorized_archived_project: Projekt, ke kterému se snažíte pÅ™istupovat, byl archivován. notice_email_sent: "Na adresu %{value} byl odeslán email" notice_email_error: "PÅ™i odesílání emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃ­Ä pro přístup k Atom byl resetován. notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. notice_failed_to_save_issues: "Chyba pÅ™i uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}." notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." notice_account_pending: "Váš úÄet byl vytvoÅ™en, nyní Äeká na schválení administrátorem." notice_default_data_loaded: Výchozí konfigurace úspěšnÄ› nahrána. notice_unable_delete_version: Nemohu odstanit verzi notice_unable_delete_time_entry: Nelze smazat záznam Äasu. notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. notice_gantt_chart_truncated: Graf byl oříznut, poÄet položek pÅ™esáhl limit pro zobrazení (%{max}) error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}" error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři." error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: %{value}" error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu' error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. error_no_default_issue_status: Není nastaven výchozí stav úkolů. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). error_can_not_delete_custom_field: Nelze smazat volitelné pole error_can_not_delete_tracker_html: Tato fronta obsahuje úkoly a nemůže být smazána.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en error_can_not_archive_project: Tento projekt nemůže být archivován error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roli error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roli(e) error_unable_delete_issue_status: Nelze smazat stavy úkolů (%{value}) error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pro zmÄ›nu vaÅ¡eho hesla kliknÄ›te na následující odkaz:' mail_subject_register: "Aktivace úÄtu (%{value})" mail_body_register: 'Pro aktivaci vaÅ¡eho úÄtu kliknÄ›te na následující odkaz:' mail_body_account_information_external: "Pomocí vaÅ¡eho úÄtu %{value} se můžete pÅ™ihlásit." mail_body_account_information: Informace o vaÅ¡em úÄtu mail_subject_account_activation_request: "Aktivace %{value} úÄtu" mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolika dní (%{days}):" mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." field_name: Název field_description: Popis field_summary: PÅ™ehled field_is_required: Povinné pole field_firstname: Jméno field_lastname: Příjmení field_mail: Email field_filename: Soubor field_filesize: Velikost field_downloads: Staženo field_author: Autor field_created_on: VytvoÅ™eno field_updated_on: Aktualizováno field_field_format: Formát field_is_for_all: Pro vÅ¡echny projekty field_possible_values: Možné hodnoty field_regexp: Regulární výraz field_min_length: Minimální délka field_max_length: Maximální délka field_value: Hodnota field_category: Kategorie field_title: Název field_project: Projekt field_issue: Úkol field_status: Stav field_notes: Poznámka field_is_closed: Úkol uzavÅ™en field_is_default: Výchozí stav field_tracker: Fronta field_subject: PÅ™edmÄ›t field_due_date: Uzavřít do field_assigned_to: PÅ™iÅ™azeno field_priority: Priorita field_fixed_version: Cílová verze field_user: Uživatel field_principal: Uživatel nebo skupina field_role: Role field_homepage: Domovská stránka field_is_public: VeÅ™ejný field_parent: NadÅ™azený projekt field_is_in_roadmap: Úkoly zobrazené v plánu field_login: PÅ™ihlášení field_mail_notification: Emailová oznámení field_admin: Administrátor field_last_login_on: Poslední pÅ™ihlášení field_language: Jazyk field_effective_date: Datum field_password: Heslo field_new_password: Nové heslo field_password_confirmation: Potvrzení field_version: Verze field_type: Typ field_host: Host field_port: Port field_account: ÚÄet field_base_dn: Base DN field_attr_login: PÅ™ihlášení (atribut) field_attr_firstname: Jméno (atribut) field_attr_lastname: Příjmení (atribut) field_attr_mail: Email (atribut) field_onthefly: Automatické vytváření uživatelů field_start_date: ZaÄátek field_done_ratio: "% Hotovo" field_auth_source: AutentifikaÄní mód field_hide_mail: Nezobrazovat můj email field_comments: Komentář field_url: URL field_start_page: Výchozí stránka field_subproject: Podprojekt field_hours: Hodiny field_activity: Aktivita field_spent_on: Datum field_identifier: Identifikátor field_is_filter: Použít jako filtr field_issue_to: Související úkol field_delay: ZpoždÄ›ní field_assignable: Úkoly mohou být pÅ™iÅ™azeny této roli field_redirect_existing_links: PÅ™esmÄ›rovat stávající odkazy field_estimated_hours: Odhadovaná doba field_column_names: Sloupce field_time_entries: Zaznamenaný Äas field_time_zone: ÄŒasové pásmo field_searchable: Umožnit vyhledávání field_default_value: Výchozí hodnota field_comments_sorting: Zobrazit komentáře field_parent_title: RodiÄovská stránka field_editable: Editovatelný field_watcher: Sleduje field_content: Obsah field_group_by: Seskupovat výsledky podle field_sharing: Sdílení field_parent_issue: RodiÄovský úkol field_member_of_group: Skupina pÅ™iÅ™aditele field_assigned_to_role: Role pÅ™iÅ™aditele field_text: Textové pole field_visible: Viditelný setting_app_title: Název aplikace setting_welcome_text: Uvítací text setting_default_language: Výchozí jazyk setting_login_required: Autentifikace vyžadována setting_self_registration: Povolena automatická registrace setting_attachment_max_size: Maximální velikost přílohy setting_issues_export_limit: Limit pro export úkolů setting_mail_from: Odesílat emaily z adresy setting_plain_text_mail: pouze prostý text (ne HTML) setting_host_name: Jméno serveru setting_text_formatting: Formátování textu setting_wiki_compression: Komprese historie Wiki setting_feeds_limit: Limit obsahu příspÄ›vků setting_default_projects_public: Nové projekty nastavovat jako veÅ™ejné setting_autofetch_changesets: Automaticky stahovat commity setting_sys_api_enabled: Povolit WS pro správu repozitory setting_commit_ref_keywords: KlíÄová slova pro odkazy setting_commit_fix_keywords: KlíÄová slova pro uzavÅ™ení setting_autologin: Automatické pÅ™ihlaÅ¡ování setting_date_format: Formát data setting_time_format: Formát Äasu setting_cross_project_issue_relations: Povolit vazby úkolů napÅ™Ã­Ä projekty setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů setting_emails_header: Záhlaví emailů setting_emails_footer: Zápatí emailů setting_protocol: Protokol setting_per_page_options: Povolené poÄty řádků na stránce setting_user_format: Formát zobrazení uživatele setting_activity_days_default: Dny zobrazené v Äinnosti projektu setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu setting_enabled_scm: Povolené SCM setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily setting_mail_handler_api_key: API klÃ­Ä setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů setting_gravatar_enabled: Použít uživatelské ikony Gravatar setting_gravatar_default: Výchozí Gravatar setting_diff_max_lines_displayed: Maximální poÄet zobrazených řádků rozdílu setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru setting_password_min_length: Minimální délka hesla setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s setting_issue_done_ratio_issue_field: Použít pole úkolu setting_issue_done_ratio_issue_status: Použít stav úkolu setting_start_of_week: ZaÄínat kalendáře setting_rest_api_enabled: Zapnout službu REST setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti setting_default_notification_option: Výchozí nastavení oznámení setting_commit_logtime_enabled: Povolit zapisování Äasu setting_commit_logtime_activity_id: Aktivita pro zapsaný Äas setting_gantt_items_limit: Maximální poÄet položek zobrazený na ganttovÄ› diagramu permission_add_project: VytvoÅ™it projekt permission_add_subprojects: VytvoÅ™it podprojekty permission_edit_project: Úprava projektů permission_select_project_modules: VýbÄ›r modulů projektu permission_manage_members: Spravování Älenství permission_manage_project_activities: Spravovat aktivity projektu permission_manage_versions: Spravování verzí permission_manage_categories: Spravování kategorií úkolů permission_view_issues: Zobrazit úkoly permission_add_issues: PÅ™idávání úkolů permission_edit_issues: Upravování úkolů permission_manage_issue_relations: Spravování vazeb mezi úkoly permission_add_issue_notes: PÅ™idávání poznámek permission_edit_issue_notes: Upravování poznámek permission_edit_own_issue_notes: Upravování vlastních poznámek permission_delete_issues: Mazání úkolů permission_manage_public_queries: Správa veÅ™ejných dotazů permission_save_queries: Ukládání dotazů permission_view_gantt: Zobrazení ganttova diagramu permission_view_calendar: Prohlížení kalendáře permission_view_issue_watchers: Zobrazení seznamu sledujících uživatelů permission_add_issue_watchers: PÅ™idání sledujících uživatelů permission_delete_issue_watchers: Smazat sledující uživatele permission_log_time: Zaznamenávání stráveného Äasu permission_view_time_entries: Zobrazení stráveného Äasu permission_edit_time_entries: Upravování záznamů o stráveném Äasu permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase permission_manage_news: Spravování novinek permission_comment_news: Komentování novinek permission_view_documents: Prohlížení dokumentů permission_manage_files: Spravování souborů permission_view_files: Prohlížení souborů permission_manage_wiki: Spravování Wiki permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek permission_delete_wiki_pages: Mazání stránek na Wiki permission_view_wiki_pages: Prohlížení Wiki permission_view_wiki_edits: Prohlížení historie Wiki permission_edit_wiki_pages: Upravování stránek Wiki permission_delete_wiki_pages_attachments: Mazání příloh permission_protect_wiki_pages: ZabezpeÄení Wiki stránek permission_manage_repository: Spravování repozitáře permission_browse_repository: Procházení repozitáře permission_view_changesets: Zobrazování revizí permission_commit_access: Commit přístup permission_manage_boards: Správa diskusních fór permission_view_messages: Prohlížení příspÄ›vků permission_add_messages: Posílání příspÄ›vků permission_edit_messages: Upravování příspÄ›vků permission_edit_own_messages: Upravit vlastní příspÄ›vky permission_delete_messages: Mazání příspÄ›vků permission_delete_own_messages: Smazat vlastní příspÄ›vky permission_export_wiki_pages: Exportovat Wiki stránky permission_manage_subtasks: Spravovat dílÄí úkoly project_module_issue_tracking: Sledování úkolů project_module_time_tracking: Sledování Äasu project_module_news: Novinky project_module_documents: Dokumenty project_module_files: Soubory project_module_wiki: Wiki project_module_repository: Repozitář project_module_boards: Diskuse project_module_calendar: Kalendář project_module_gantt: Gantt label_user: Uživatel label_user_plural: Uživatelé label_user_new: Nový uživatel label_user_anonymous: Anonymní label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty label_x_projects: zero: žádné projekty one: 1 projekt other: "%{count} projekty(ů)" label_project_all: VÅ¡echny projekty label_project_latest: Poslední projekty label_issue: Úkol label_issue_new: Nový úkol label_issue_plural: Úkoly label_issue_view_all: VÅ¡echny úkoly label_issues_by: "Úkoly podle %{value}" label_issue_added: Úkol pÅ™idán label_issue_updated: Úkol aktualizován label_document: Dokument label_document_new: Nový dokument label_document_plural: Dokumenty label_document_added: Dokument pÅ™idán label_role: Role label_role_plural: Role label_role_new: Nová role label_role_and_permissions: Role a práva label_member: ÄŒlen label_member_new: Nový Älen label_member_plural: ÄŒlenové label_tracker: Fronta label_tracker_plural: Fronty label_tracker_new: Nová fronta label_workflow: PrůbÄ›h práce label_issue_status: Stav úkolu label_issue_status_plural: Stavy úkolů label_issue_status_new: Nový stav label_issue_category: Kategorie úkolu label_issue_category_plural: Kategorie úkolů label_issue_category_new: Nová kategorie label_custom_field: Uživatelské pole label_custom_field_plural: Uživatelská pole label_custom_field_new: Nové uživatelské pole label_enumerations: Seznamy label_enumeration_new: Nová hodnota label_information: Informace label_information_plural: Informace label_register: Registrovat label_password_lost: Zapomenuté heslo label_home: Úvodní label_my_page: Moje stránka label_my_account: Můj úÄet label_my_projects: Moje projekty label_administration: Administrace label_login: PÅ™ihlášení label_logout: Odhlášení label_help: NápovÄ›da label_reported_issues: Nahlášené úkoly label_assigned_to_me_issues: Mé úkoly label_registered_on: Registrován label_activity: Aktivita label_user_activity: "Aktivita uživatele: %{value}" label_new: Nový label_logged_as: PÅ™ihlášen jako label_environment: ProstÅ™edí label_authentication: Autentifikace label_auth_source: Mód autentifikace label_auth_source_new: Nový mód autentifikace label_auth_source_plural: Módy autentifikace label_subproject_plural: Podprojekty label_subproject_new: Nový podprojekt label_and_its_subprojects: "%{value} a jeho podprojekty" label_min_max_length: Min - Max délka label_list: Seznam label_date: Datum label_integer: Celé Äíslo label_float: Desetinné Äíslo label_boolean: Ano/Ne label_string: Text label_text: Dlouhý text label_attribute: Atribut label_attribute_plural: Atributy label_no_data: Žádné položky label_change_status: ZmÄ›nit stav label_history: Historie label_attachment: Soubor label_attachment_new: Nový soubor label_attachment_delete: Odstranit soubor label_attachment_plural: Soubory label_file_added: Soubor pÅ™idán label_report: PÅ™ehled label_report_plural: PÅ™ehledy label_news: Novinky label_news_new: PÅ™idat novinku label_news_plural: Novinky label_news_latest: Poslední novinky label_news_view_all: Zobrazit vÅ¡echny novinky label_news_added: Novinka pÅ™idána label_settings: Nastavení label_overview: PÅ™ehled label_version: Verze label_version_new: Nová verze label_version_plural: Verze label_close_versions: Zavřít dokonÄené verze label_confirmation: Potvrzení label_export_to: 'Také k dispozici:' label_read: NaÄítá se... label_public_projects: VeÅ™ejné projekty label_open_issues: otevÅ™ený label_open_issues_plural: otevÅ™ené label_closed_issues: uzavÅ™ený label_closed_issues_plural: uzavÅ™ené label_x_open_issues_abbr: zero: 0 otevÅ™ených one: 1 otevÅ™ený other: "%{count} otevÅ™ených" label_x_closed_issues_abbr: zero: 0 uzavÅ™ených one: 1 uzavÅ™ený other: "%{count} uzavÅ™ených" label_total: Celkem label_permissions: Práva label_current_status: Aktuální stav label_new_statuses_allowed: Nové povolené stavy label_all: vÅ¡e label_none: nic label_nobody: nikdo label_next: Další label_previous: PÅ™edchozí label_used_by: Použito label_details: Detaily label_add_note: PÅ™idat poznámku label_calendar: Kalendář label_months_from: mÄ›síců od label_gantt: Ganttův diagram label_internal: Interní label_last_changes: "posledních %{count} zmÄ›n" label_change_view_all: Zobrazit vÅ¡echny zmÄ›ny label_comment: Komentář label_comment_plural: Komentáře label_x_comments: zero: žádné komentáře one: 1 komentář other: "%{count} komentářů" label_comment_add: PÅ™idat komentáře label_comment_added: Komentář pÅ™idán label_comment_delete: Odstranit komentář label_query: Uživatelský dotaz label_query_plural: Uživatelské dotazy label_query_new: Nový dotaz label_filter_add: PÅ™idat filtr label_filter_plural: Filtry label_equals: je label_not_equals: není label_in_less_than: je měší než label_in_more_than: je vÄ›tší než label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: v label_today: dnes label_yesterday: vÄera label_this_week: tento týden label_last_week: minulý týden label_last_n_days: "posledních %{count} dnů" label_this_month: tento mÄ›síc label_last_month: minulý mÄ›síc label_this_year: tento rok label_date_range: ÄŒasový rozsah label_less_than_ago: pÅ™ed ménÄ› jak (dny) label_more_than_ago: pÅ™ed více jak (dny) label_ago: pÅ™ed (dny) label_contains: obsahuje label_not_contains: neobsahuje label_day_plural: dny label_repository: Repozitář label_repository_plural: Repozitáře label_branch: VÄ›tev label_tag: Tag label_revision: Revize label_revision_plural: Revizí label_revision_id: "Revize %{value}" label_associated_revisions: Související verze label_added: pÅ™idáno label_modified: zmÄ›nÄ›no label_copied: zkopírováno label_renamed: pÅ™ejmenováno label_deleted: odstranÄ›no label_latest_revision: Poslední revize label_latest_revision_plural: Poslední revize label_view_revisions: Zobrazit revize label_view_all_revisions: Zobrazit vÅ¡echny revize label_max_size: Maximální velikost label_roadmap: Plán label_roadmap_due_in: "Zbývá %{value}" label_roadmap_overdue: "%{value} pozdÄ›" label_roadmap_no_issues: Pro tuto verzi nejsou žádné úkoly label_search: Hledat label_result_plural: Výsledky label_all_words: VÅ¡echna slova label_wiki: Wiki label_wiki_edit: Wiki úprava label_wiki_edit_plural: Wiki úpravy label_wiki_page: Wiki stránka label_wiki_page_plural: Wiki stránky label_index_by_title: Index dle názvu label_index_by_date: Index dle data label_current_version: Aktuální verze label_preview: Náhled label_feed_plural: PříspÄ›vky label_changes_details: Detail vÅ¡ech zmÄ›n label_issue_tracking: Sledování úkolů label_spent_time: Strávený Äas label_f_hour: "%{value} hodina" label_f_hour_plural: "%{value} hodin" label_time_tracking: Sledování Äasu label_change_plural: ZmÄ›ny label_statistics: Statistiky label_commits_per_month: Commitů za mÄ›síc label_commits_per_author: Commitů za autora label_view_diff: Zobrazit rozdíly label_diff_inline: uvnitÅ™ label_diff_side_by_side: vedle sebe label_options: Nastavení label_copy_workflow_from: Kopírovat průbÄ›h práce z label_permissions_report: PÅ™ehled práv label_watched_issues: Sledované úkoly label_related_issues: Související úkoly label_applied_status: Použitý stav label_loading: Nahrávám... label_relation_new: Nová vazba label_relation_delete: Odstranit vazbu label_relates_to: související s label_duplicates: duplikuje label_duplicated_by: duplikován label_blocks: blokuje label_blocked_by: blokován label_precedes: pÅ™edchází label_follows: následuje label_stay_logged_in: Zůstat pÅ™ihlášený label_disabled: zakázán label_show_completed_versions: Zobrazit dokonÄené verze label_me: já label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra label_board_locked: ZamÄeno label_board_sticky: Nálepka label_topic_plural: Témata label_message_plural: PříspÄ›vky label_message_last: Poslední příspÄ›vek label_message_new: Nový příspÄ›vek label_message_posted: PříspÄ›vek pÅ™idán label_reply_plural: OdpovÄ›di label_send_information: Zaslat informace o úÄtu uživateli label_year: Rok label_month: MÄ›síc label_week: Týden label_date_from: Od label_date_to: Do label_language_based: Podle výchozího jazyka label_sort_by: "SeÅ™adit podle %{value}" label_send_test_email: Poslat testovací email label_feeds_access_key: Přístupový klÃ­Ä pro Atom label_missing_feeds_access_key: Postrádá přístupový klÃ­Ä pro Atom label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro Atom byl vytvoÅ™en pÅ™ed %{value}" label_module_plural: Moduly label_added_time_by: "PÅ™idáno uživatelem %{author} pÅ™ed %{age}" label_updated_time_by: "Aktualizováno uživatelem %{author} pÅ™ed %{age}" label_updated_time: "Aktualizováno pÅ™ed %{value}" label_jump_to_a_project: Vyberte projekt... label_file_plural: Soubory label_changeset_plural: Revize label_default_columns: Výchozí sloupce label_no_change_option: (beze zmÄ›ny) label_bulk_edit_selected_issues: Hromadná úprava vybraných úkolů label_theme: Téma label_default: Výchozí label_search_titles_only: Vyhledávat pouze v názvech label_user_mail_option_all: Pro vÅ¡echny události vÅ¡ech mých projektech label_user_mail_option_selected: Pro vÅ¡echny události na vybraných projektech... label_user_mail_option_none: Žádné události label_user_mail_option_only_my_events: Jen pro vÄ›ci, co sleduji nebo jsem v nich zapojen label_user_mail_no_self_notified: Nezasílat informace o mnou vytvoÅ™ených zmÄ›nách label_registration_activation_by_email: aktivace úÄtu emailem label_registration_manual_activation: manuální aktivace úÄtu label_registration_automatic_activation: automatická aktivace úÄtu label_display_per_page: "%{value} na stránku" label_age: VÄ›k label_change_properties: ZmÄ›nit vlastnosti label_general: Obecné label_scm: SCM label_plugins: Doplňky label_ldap_authentication: Autentifikace LDAP label_downloads_abbr: Staž. label_optional_description: Volitelný popis label_add_another_file: PÅ™idat další soubor label_preferences: Nastavení label_chronological_order: V chronologickém poÅ™adí label_reverse_chronological_order: V obrácaném chronologickém poÅ™adí label_incoming_emails: Příchozí e-maily label_generate_key: Generovat klÃ­Ä label_issue_watchers: Sledování label_example: Příklad label_display: Zobrazit label_sort: Řazení label_ascending: VzestupnÄ› label_descending: SestupnÄ› label_date_from_to: Od %{start} do %{end} label_wiki_content_added: Wiki stránka pÅ™idána label_wiki_content_updated: Wiki stránka aktualizována label_group: Skupina label_group_plural: Skupiny label_group_new: Nová skupina label_time_entry_plural: Strávený Äas label_version_sharing_none: Nesdíleno label_version_sharing_descendants: S podprojekty label_version_sharing_hierarchy: S hierarchií projektu label_version_sharing_tree: Se stromem projektu label_version_sharing_system: Se vÅ¡emi projekty label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů label_copy_source: Zdroj label_copy_target: Cíl label_copy_same_as_target: Stejný jako cíl label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou label_api_access_key: API přístupový klÃ­Ä label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} label_profile: Profil label_subtask_plural: DílÄí úkoly label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu label_principal_search: "Hledat uživatele nebo skupinu:" label_user_search: "Hledat uživatele:" button_login: PÅ™ihlásit button_submit: Potvrdit button_save: Uložit button_check_all: ZaÅ¡rtnout vÅ¡e button_uncheck_all: OdÅ¡rtnout vÅ¡e button_delete: Odstranit button_create: VytvoÅ™it button_create_and_continue: VytvoÅ™it a pokraÄovat button_test: Testovat button_edit: Upravit button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" button_add: PÅ™idat button_change: ZmÄ›nit button_apply: Použít button_clear: Smazat button_lock: Zamknout button_unlock: Odemknout button_download: Stáhnout button_list: Vypsat button_view: Zobrazit button_move: PÅ™esunout button_move_and_follow: PÅ™esunout a následovat button_back: ZpÄ›t button_cancel: Storno button_activate: Aktivovat button_sort: SeÅ™adit button_log_time: PÅ™idat Äas button_rollback: ZpÄ›t k této verzi button_watch: Sledovat button_unwatch: Nesledovat button_reply: OdpovÄ›dÄ›t button_archive: Archivovat button_unarchive: Dearchivovat button_reset: Resetovat button_rename: PÅ™ejmenovat button_change_password: ZmÄ›nit heslo button_copy: Kopírovat button_copy_and_follow: Kopírovat a následovat button_annotate: Komentovat button_update: Aktualizovat button_configure: Konfigurovat button_quote: Citovat button_show: Zobrazit status_active: aktivní status_registered: registrovaný status_locked: zamÄený version_status_open: otevÅ™ený version_status_locked: zamÄený version_status_closed: zavÅ™ený field_active: Aktivní text_select_mail_notifications: Vyberte akci, pÅ™i které bude zasláno upozornÄ›ní emailem. text_regexp_info: napÅ™. ^[A-Z0-9]+$ text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a vÅ¡echna související data? text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." text_workflow_edit: Vyberte roli a frontu k editaci průbÄ›hu práce text_are_you_sure: Jste si jisti? text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" text_journal_set_to: "%{label} nastaven na %{value}" text_journal_deleted: "%{label} smazán (%{old})" text_journal_added: "%{label} %{value} pÅ™idán" text_tip_issue_begin_day: úkol zaÄíná v tento den text_tip_issue_end_day: úkol konÄí v tento den text_tip_issue_begin_end_day: úkol zaÄíná a konÄí v tento den text_caracters_maximum: "%{count} znaků maximálnÄ›." text_caracters_minimum: "Musí být alespoň %{count} znaků dlouhé." text_length_between: "Délka mezi %{min} a %{max} znaky." text_tracker_no_workflow: Pro tuto frontu není definován žádný průbÄ›h práce text_unallowed_characters: Nepovolené znaky text_comma_separated: Povoleno více hodnot (oddÄ›lÄ›né Äárkou). text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). text_issues_ref_in_commit_messages: Odkazování a opravování úkolů v poznámkách commitů text_issue_added: "Úkol %{id} byl vytvoÅ™en uživatelem %{author}." text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}." text_wiki_destroy_confirmation: Opravdu si pÅ™ejete odstranit tuto Wiki a celý její obsah? text_issue_category_destroy_question: "NÄ›které úkoly (%{count}) jsou pÅ™iÅ™azeny k této kategorii. Co s nimi chtete udÄ›lat?" text_issue_category_destroy_assignments: ZruÅ¡it pÅ™iÅ™azení ke kategorii text_issue_category_reassign_to: PÅ™iÅ™adit úkoly do této kategorie text_user_mail_option: "U projektů, které nebyly vybrány, budete dostávat oznámení pouze o vaÅ¡ich Äi o sledovaných položkách (napÅ™. o položkách jejichž jste autor nebo ke kterým jste pÅ™iÅ™azen(a))." text_no_configuration_data: "Role, fronty, stavy úkolů ani průbÄ›h práce nebyly zatím nakonfigurovány.\nVelice doporuÄujeme nahrát výchozí konfiguraci. Po té si můžete vÅ¡e upravit" text_load_default_configuration: Nahrát výchozí konfiguraci text_status_changed_by_changeset: "Použito v sadÄ› zmÄ›n %{value}." text_time_logged_by_changeset: Aplikováno v sadÄ› zmÄ›n %{value}. text_issues_destroy_confirmation: 'Opravdu si pÅ™ejete odstranit vÅ¡echny zvolené úkoly?' text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_default_administrator_account_changed: Výchozí nastavení administrátorského úÄtu zmÄ›nÄ›no text_file_repository_writable: Povolen zápis do adresáře ukládání souborů text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets text_minimagick_available: MiniMagick k dispozici (volitelné) text_destroy_time_entries_question: "U úkolů, které chcete odstranit, je evidováno %{hours} práce. Co chete udÄ›lat?" text_destroy_time_entries: Odstranit zaznamenané hodiny. text_assign_time_entries_to_project: PÅ™iÅ™adit zaznamenané hodiny projektu text_reassign_time_entries: 'PÅ™eÅ™adit zaznamenané hodiny k tomuto úkolu:' text_user_wrote: "%{value} napsal:" text_user_wrote_in: "%{value} napsal (%{link}):" text_enumeration_destroy_question: "NÄ›kolik (%{count}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' text_email_delivery_not_configured: "DoruÄování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/configuration.yml a restartujte aplikaci." text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapováni automaticky." text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi text_own_membership_delete_confirmation: "Chystáte se odebrat si nÄ›která nebo vÅ¡echna svá oprávnÄ›ní, potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokraÄovat?" text_zoom_in: PÅ™iblížit text_zoom_out: Oddálit default_role_manager: Manažer default_role_developer: Vývojář default_role_reporter: Reportér default_tracker_bug: Chyba default_tracker_feature: Požadavek default_tracker_support: Podpora default_issue_status_new: Nový default_issue_status_in_progress: Ve vývoji default_issue_status_resolved: VyÅ™eÅ¡ený default_issue_status_feedback: ÄŒeká se default_issue_status_closed: UzavÅ™ený default_issue_status_rejected: Odmítnutý default_doc_category_user: Uživatelská dokumentace default_doc_category_tech: Technická dokumentace default_priority_low: Nízká default_priority_normal: Normální default_priority_high: Vysoká default_priority_urgent: Urgentní default_priority_immediate: Okamžitá default_activity_design: Návhr default_activity_development: Vývoj enumeration_issue_priorities: Priority úkolů enumeration_doc_categories: Kategorie dokumentů enumeration_activities: Aktivity (sledování Äasu) enumeration_system_activity: Systémová aktivita field_warn_on_leaving_unsaved: Varuj mÄ› pÅ™ed opuÅ¡tÄ›ním stránky s neuloženým textem text_warn_on_leaving_unsaved: Aktuální stránka obsahuje neuložený text, který bude ztracen, když opustíte stránku. label_my_queries: Moje vlastní dotazy text_journal_changed_no_detail: "%{label} aktualizován" label_news_comment_added: K novince byl pÅ™idán komentář button_expand_all: Rozbal vÅ¡e button_collapse_all: Sbal vÅ¡e label_additional_workflow_transitions_for_assignee: Další zmÄ›na stavu povolena, jestliže je uživatel pÅ™iÅ™azen label_additional_workflow_transitions_for_author: Další zmÄ›na stavu povolena, jestliže je uživatel autorem label_bulk_edit_selected_time_entries: Hromadná zmÄ›na záznamů Äasu text_time_entries_destroy_confirmation: Jste si jistí, že chcete smazat vybraný záznam(y) Äasu? label_role_anonymous: Anonymní label_role_non_member: Není Älenem label_issue_note_added: PÅ™idána poznámka label_issue_status_updated: Aktualizován stav label_issue_priority_updated: Aktualizována priorita label_issues_visibility_own: Úkol vytvoÅ™en nebo pÅ™iÅ™azen uživatel(i/em) field_issues_visibility: Viditelnost úkolů label_issues_visibility_all: VÅ¡echny úkoly permission_set_own_issues_private: Nastavit vlastní úkoly jako veÅ™ejné nebo soukromé field_is_private: Soukromý permission_set_issues_private: Nastavit úkoly jako veÅ™ejné nebo soukromé label_issues_visibility_public: VÅ¡echny úkoly, které nejsou soukromé text_issues_destroy_descendants_confirmation: "%{count} dílÄí(ch) úkol(ů) bude rovněž smazán(o)." field_commit_logs_encoding: Kódování zpráv pÅ™i commitu field_scm_path_encoding: Kódování cesty SCM text_scm_path_encoding_note: "Výchozí: UTF-8" field_path_to_repository: Cesta k repositáři field_root_directory: KoÅ™enový adresář field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokální repositář (napÅ™. /hgrepo, c:\hgrepo) text_scm_command: Příkaz text_scm_command_version: Verze label_git_report_last_commit: Reportovat poslední commit pro soubory a adresáře text_scm_config: Můžete si nastavit vaÅ¡e SCM příkazy v config/configuration.yml. Restartujte, prosím, aplikaci po jejich úpravÄ›. text_scm_command_not_available: SCM příkaz není k dispozici. Zkontrolujte, prosím, nastavení v panelu Administrace. notice_issue_successful_create: Úkol %{id} byl vytvoÅ™en. label_between: mezi setting_issue_group_assignment: Povolit pÅ™iÅ™azení úkolu skupinÄ› label_diff: rozdíl text_git_repository_note: Repositář je "bare and local" (napÅ™. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: SmÄ›r třídÄ›ní description_project_scope: Rozsah vyhledávání description_filter: Filtr description_user_mail_notification: Nastavení emailových notifikací description_message_content: Obsah zprávy description_available_columns: Dostupné sloupce description_issue_category_reassign: Zvolte kategorii úkolu description_search: Vyhledávací pole description_notes: Poznámky description_choose_project: Projekty description_query_sort_criteria_attribute: Třídící atribut description_wiki_subpages_reassign: Zvolte novou rodiÄovskou stránku description_selected_columns: Vybraný sloupec label_parent_revision: RodiÄ label_child_revision: Potomek error_scm_annotate_big_text_file: Vstup nemůže být komentován, protože pÅ™ekraÄuje povolenou velikost textového souboru setting_default_issue_start_date_to_creation_date: Použij aktuální datum jako poÄáteÄní datum pro nové úkoly button_edit_section: Uprav tuto Äást setting_repositories_encodings: Kódování příloh a repositářů description_all_columns: VÅ¡echny sloupce button_export: Export label_export_options: "nastavení exportu %{export_format}" error_attachment_too_big: Soubor nemůže být nahrán, protože jeho velikost je vÄ›tší než maximální (%{max_size}) notice_failed_to_save_time_entries: "Chyba pÅ™i ukládání %{count} Äasov(ých/ého) záznam(ů) z %{total} vybraného: %{ids}." label_x_issues: zero: 0 úkol one: 1 úkol other: "%{count} úkolů" label_repository_new: Nový repositář field_repository_is_default: Hlavní repositář label_copy_attachments: Kopírovat přílohy label_item_position: "%{position}/%{count}" label_completed_versions: DokonÄené verze text_project_identifier_info: Jsou povolena pouze malá písmena (a-z), Äíslice, pomlÄky a podtržítka.
    Po uložení již nelze identifikátor mÄ›nit. field_multiple: Více hodnot setting_commit_cross_project_ref: Povolit reference a opravy úkolů ze vÅ¡ech ostatních projektů text_issue_conflict_resolution_add_notes: PÅ™idat moje poznámky a zahodit ostatní zmÄ›ny text_issue_conflict_resolution_overwrite: PÅ™esto pÅ™ijmout moje úpravy (pÅ™edchozí poznámky budou zachovány, ale nÄ›které zmÄ›ny mohou být pÅ™epsány) notice_issue_update_conflict: BÄ›hem vaÅ¡ich úprav byl úkol aktualizován jiným uživatelem. text_issue_conflict_resolution_cancel: ZahoÄ vÅ¡echny moje zmÄ›ny a znovu zobraz %{link} permission_manage_related_issues: Spravuj související úkoly field_auth_source_ldap_filter: LDAP filtr label_search_for_watchers: Hledej sledující pro pÅ™idání notice_account_deleted: Váš úÄet byl trvale smazán. setting_unsubscribe: Povolit uživatelům smazání jejich vlastního úÄtu button_delete_my_account: Smazat můj úÄet text_account_destroy_confirmation: |- SkuteÄnÄ› chcete pokraÄovat? Váš úÄet bude nenávratnÄ› smazán. error_session_expired: VaÅ¡e sezení vyprÅ¡elo. Znovu se pÅ™ihlaste, prosím. text_session_expiration_settings: "Varování: zmÄ›nou tohoto nastavení mohou vyprÅ¡et aktuální sezení vÄetnÄ› toho vaÅ¡eho." setting_session_lifetime: Maximální Äas sezení setting_session_timeout: VyprÅ¡ení sezení bez aktivity label_session_expiration: VyprÅ¡ení sezení permission_close_project: Zavřít / Otevřít projekt button_close: Zavřít button_reopen: Znovu otevřít project_status_active: aktivní project_status_closed: zavÅ™ený project_status_archived: archivovaný text_project_closed: Tento projekt je uzevÅ™ený a je pouze pro Ätení. notice_user_successful_create: Uživatel %{id} vytvoÅ™en. field_core_fields: Standardní pole field_timeout: VyprÅ¡ení (v sekundách) setting_thumbnails_enabled: Zobrazit náhled přílohy setting_thumbnails_size: Velikost náhledu (v pixelech) label_status_transitions: ZmÄ›na stavu label_fields_permissions: Práva k polím label_readonly: Pouze pro Ätení label_required: Vyžadováno text_repository_identifier_info: Jsou povoleny pouze malá písmena (a-z), Äíslice, pomlÄky a podtržítka.
    Po uložení již nelze identifikátor zmÄ›nit. field_board_parent: RodiÄovské fórum label_attribute_of_project: "%{name} projektu" label_attribute_of_author: "%{name} autora" label_attribute_of_assigned_to: "%{name} pÅ™iÅ™azené(ho)" label_attribute_of_fixed_version: Cílová verze %{name} label_copy_subtasks: Kopírovat dílÄí úkoly label_copied_to: zkopírováno do label_copied_from: zkopírováno z label_any_issues_in_project: jakékoli úkoly v projektu label_any_issues_not_in_project: jakékoli úkoly mimo projekt field_private_notes: Soukromé poznámky permission_view_private_notes: Zobrazit soukromé poznámky permission_set_notes_private: Nastavit poznámky jako soukromé label_no_issues_in_project: žádné úkoly v projektu label_any: vÅ¡e label_last_n_weeks: poslední %{count} týdny setting_cross_project_subtasks: Povolit dílÄí úkoly napÅ™Ã­Ä projekty label_cross_project_descendants: S podprojekty label_cross_project_tree: Se stromem projektu label_cross_project_hierarchy: S hierarchií projektu label_cross_project_system: Se vÅ¡emi projekty button_hide: Skrýt setting_non_working_week_days: Dny pracovního volna/klidu label_in_the_next_days: v přístích label_in_the_past_days: v minulých label_attribute_of_user: "%{name} uživatele" text_turning_multiple_off: Jestliže zakážete více hodnot, hodnoty budou smazány za úÄelem rezervace pouze jediné hodnoty na položku. label_attribute_of_issue: "%{name} úkolu" permission_add_documents: PÅ™idat dokument permission_edit_documents: Upravit dokumenty permission_delete_documents: Smazet dokumenty label_gantt_progress_line: Vývojová Äára setting_jsonp_enabled: Povolit podporu JSONP field_inherit_members: ZdÄ›dit Äleny field_closed_on: UzavÅ™eno field_generate_password: Generovat heslo setting_default_projects_tracker_ids: Výchozí fronta pro nové projekty label_total_time: Celkem notice_account_not_activated_yet: Neaktivovali jste si dosud Váš úÄet. Pro opÄ›tovné zaslání aktivaÄního emailu kliknÄ›te na tento odkaz, prosím. notice_account_locked: Váš úÄet je uzamÄen. label_hidden: Skrytý label_visibility_private: pouze pro mÄ› label_visibility_roles: pouze pro tyto role label_visibility_public: pro vÅ¡echny uživatele field_must_change_passwd: Musí zmÄ›nit heslo pÅ™i příštím pÅ™ihlášení notice_new_password_must_be_different: Nové heslo se musí liÅ¡it od stávajícího setting_mail_handler_excluded_filenames: VyÅ™adit přílohy podle jména text_convert_available: ImageMagick convert k dispozici (volitelné) label_link: Odkaz label_only: jenom label_drop_down_list: rozbalovací seznam label_checkboxes: zaÅ¡krtávátka label_link_values_to: Propojit hodnoty s URL setting_force_default_language_for_anonymous: Vynutit výchozí jazyk pro anonymní uživatele setting_force_default_language_for_loggedin: Vynutit výchozí jazyk pro pÅ™ihlášené uživatele label_custom_field_select_type: Vybrat typ objektu, ke kterému bude pÅ™iÅ™azeno uživatelské pole label_issue_assigned_to_updated: PÅ™iÅ™azený uživatel aktualizován label_check_for_updates: Zkontroluj aktualizace label_latest_compatible_version: Poslední kompatibilní verze label_unknown_plugin: Nezámý plugin label_radio_buttons: radio tlaÄítka label_group_anonymous: Anonymní uživatelé label_group_non_member: NeÄleni label_add_projects: PÅ™idat projekty field_default_status: Výchozí stav text_subversion_repository_note: 'NapÅ™.: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Viditelnost uživatelů label_users_visibility_all: VÅ¡ichni aktivní uživatelé label_users_visibility_members_of_visible_projects: ÄŒlenové viditelných projektů label_edit_attachments: Editovat pÅ™iložené soubory setting_link_copied_issue: VytvoÅ™it odkazy na kopírované úkol label_link_copied_issue: VytvoÅ™it odkaz na kopírovaný úkol label_ask: Zeptat se label_search_attachments_yes: Vyhledat názvy a popisy souborů label_search_attachments_no: Nevyhledávat soubory label_search_attachments_only: Vyhledávat pouze soubory label_search_open_issues_only: Pouze otevÅ™ené úkoly field_address: Email setting_max_additional_emails: Maximální poÄet dalších emailových adres label_email_address_plural: Emaily label_email_address_add: PÅ™idat emailovou adresu label_enable_notifications: Povolit notifikace label_disable_notifications: Zakázat notifikace setting_search_results_per_page: Vyhledaných výsledků na stránku label_blank_value: prázdný permission_copy_issues: Kopírovat úkoly error_password_expired: Platnost vaÅ¡eho hesla vyprÅ¡ela a administrátor vás žádá o jeho zmÄ›nu. field_time_entries_visibility: Viditelnost Äasových záznamů setting_password_max_age: ZmÄ›na hesla je vyžadována po label_parent_task_attributes: Atributy rodiÄovského úkolu label_parent_task_attributes_derived: VypoÄteno z dílÄích úkolů label_parent_task_attributes_independent: Nezávisle na dílÄích úkolech label_time_entries_visibility_all: VÅ¡echny zaznamenané Äasy label_time_entries_visibility_own: Zaznamenané Äasy vytvoÅ™ené uživatelem label_member_management: Správa Älenů label_member_management_all_roles: VÅ¡echny role label_member_management_selected_roles_only: Pouze tyto role label_password_required: Pro pokraÄování potvrÄte vaÅ¡e heslo label_total_spent_time: Celkem strávený Äas notice_import_finished: "%{count} položek bylo naimportováno" notice_import_finished_with_errors: "%{count} z %{total} položek nemohlo být naimportováno" error_invalid_file_encoding: Soubor není platným souborem s kódováním %{encoding} error_invalid_csv_file_or_settings: Soubor není CSV soubor nebo neodpovídá níže uvedenému nastavení (%{value}) error_can_not_read_import_file: Chyba pÅ™i Ätení souboru pro import permission_import_issues: Import úkolů label_import_issues: Import úkolů label_select_file_to_import: Vyberte soubor pro import label_fields_separator: OddÄ›lovaÄ pole label_fields_wrapper: OddÄ›lovaÄ textu label_encoding: Kódování label_comma_char: Čárka label_semi_colon_char: StÅ™edník label_quote_char: Uvozovky label_double_quote_char: Dvojté uvozovky label_fields_mapping: Mapování polí label_file_content_preview: Náhled obsahu souboru label_create_missing_values: VytvoÅ™it chybÄ›jící hodnoty button_import: Import field_total_estimated_hours: Celkový odhadovaný Äas label_api: API label_total_plural: Celkem label_assigned_issues: PÅ™iÅ™azené úkoly label_field_format_enumeration: Seznam klíÄů/hodnot label_f_hour_short: '%{value}hod' field_default_version: Výchozí verze error_attachment_extension_not_allowed: Přípona přílohy %{extension} není povolena setting_attachment_extensions_allowed: Povolené přípony setting_attachment_extensions_denied: Nepovolené přípony label_any_open_issues: otevÅ™ené úkoly label_no_open_issues: bez otevÅ™ených úkolů label_default_values_for_new_users: Výchozí hodnoty pro nové uživatele error_ldap_bind_credentials: Neplatný úÄet/heslo LDAP setting_sys_api_key: API klÃ­Ä setting_lost_password: Zapomenuté heslo mail_subject_security_notification: BezpeÄnostní upozornÄ›ní mail_body_security_notification_change: "%{field} bylo zmÄ›nÄ›no." mail_body_security_notification_change_to: "%{field} bylo zmÄ›nÄ›no na %{value}." mail_body_security_notification_add: "%{field} %{value} bylo pÅ™idáno." mail_body_security_notification_remove: "%{field} %{value} bylo odebráno." mail_body_security_notification_notify_enabled: Email %{value} nyní dostává notifikace. mail_body_security_notification_notify_disabled: Email %{value} už nedostává notifikace. mail_body_settings_updated: "Následující nastavení byla zmÄ›nÄ›na:" field_remote_ip: IP adresa label_wiki_page_new: Nová wiki stránka label_relations: Vazby button_filter: Filtr mail_body_password_updated: VaÅ¡e heslo bylo zmÄ›nÄ›no. label_no_preview: Náhled není k dispozici error_no_tracker_allowed_for_new_issue_in_project: Projekt neobsahuje žádnou frontu, pro kterou lze vytvoÅ™it úkol label_tracker_all: VÅ¡echny fronty label_new_project_issue_tab_enabled: Zobraz záložku "Nový úkol" setting_new_item_menu_tab: Záložka v menu projektu pro vytváření nových objektů label_new_object_tab_enabled: Zobrazit rozbalovací menu "+" error_no_projects_with_tracker_allowed_for_new_issue: Neexistují projekty s frontou, pro kterou lze vytvoÅ™it úkol field_textarea_font: Písmo použité pro textová pole label_font_default: Výchozí písmo label_font_monospace: Neproporcionální písmo label_font_proportional: Proporciální písmo setting_timespan_format: Formát Äasového intervalu label_table_of_contents: Obsah setting_commit_logs_formatting: Použij textové formátování pro popisky comitů setting_mail_handler_enable_regex: Povol regulární výrazy error_move_of_child_not_possible: "DílÄí úkol %{child} nemůže být pÅ™esunut do nového projektu: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Strávený Äas nemůže být pÅ™iÅ™azen k úkolu, který se bude mazat setting_timelog_required_fields: Požadovaná pole pro zapisování Äasu label_attribute_of_object: "%{object_name} %{name}" label_user_mail_option_only_assigned: Pouze pro vÄ›ci, které sleduji nebo jsem na nÄ› pÅ™iÅ™azený label_user_mail_option_only_owner: Pouze pro vÄ›ci, které sleduji nebo jsem jejich vlastníkem warning_fields_cleared_on_bulk_edit: ZmÄ›ny způsobí automatické smazání hodnot z jednoho nebo více polí vybraných objektů field_updated_by: Aktualizoval field_last_updated_by: Naposledy zmÄ›nil field_full_width_layout: Celá šířka schematu label_last_notes: Poslední poznámky field_digest: Kontrolní souÄet field_default_assigned_to: Výchozí pÅ™iÅ™azený uživatel setting_show_custom_fields_on_registration: Zobraz uživatelská pole pÅ™i registraci permission_view_news: Zobraz novinky label_no_preview_alternative_html: "Náhled není k dispozici. Soubor: %{link}." label_no_preview_download: Stažení setting_close_duplicate_issues: Automaticky uzavÅ™i duplicitní úkoly error_exceeds_maximum_hours_per_day: Není možné zapsat více než %{max_hours}hod v ten samý den (%{logged_hours}hod bylo již vykázáno) setting_time_entry_list_defaults: Výchozí hodnoty pro zápis stráveného Äasu setting_timelog_accept_0_hours: Akceptovat zápis Äasu 0hod setting_timelog_max_hours_per_day: Maximum hodin, které mohou být vykázány jedním uživatelem za jeden den label_x_revisions: "%{count} revizí" error_can_not_delete_auth_source: Tento autentifikaÄní mód se používá a nemůže být smazán. button_actions: Akce mail_body_lost_password_validity: MÄ›jte na pamÄ›ti, že pomocí tohoto odkazu můžete zmÄ›nit heslo pouze jednou. text_login_required_html: Pokud není vyžadována autentifikace, veÅ™ejné projekty a jejich obsah jsou veÅ™ejnÄ› přístupné na webu. Můžete upravit přísluÅ¡ná práva. label_login_required_yes: 'Ano' label_login_required_no: Ne, umožnit anonymní přístup k veÅ™ejným projektům text_project_is_public_non_member: VeÅ™ejné projekty a jejich obsah je přístupný pro vÅ¡echny pÅ™ihlášené uživatele. text_project_is_public_anonymous: VeÅ™ejné projekty a jejich obsah je otevÅ™enÄ› přístupný na webu. label_version_and_files: Verze (%{count}) a soubory label_ldap: LDAP label_ldaps_verify_none: LDAPS (bez ověření certifikátu) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Je doporuÄeno použít Å¡ifrované LDAPS pÅ™ipojení s certifikátem pro zabránÄ›ní jakékoliv manipulace bÄ›hem autentifikaÄního procesu. label_nothing_to_preview: Žádný náhled error_token_expired: Tento odkaz na obnovu hesla vyprÅ¡el, prosím zkuste to znovu. error_spent_on_future_date: Nelze zapsat Äas do budoucna setting_timelog_accept_future_dates: Akceptovat zápis Äasu do budoucna label_delete_link_to_subtask: Odstranit souvislost error_not_allowed_to_log_time_for_other_users: Nejste oprávnÄ›ni k zápisu Äasu ostatních uživatelů permission_log_time_for_other_users: Záznam stráveného Äasu ostatních uživatelů label_tomorrow: zítra label_next_week: příští týden label_next_month: příští mÄ›síc text_role_no_workflow: Tato role nemá definován průbÄ›h práce text_status_no_workflow: Žádná fronta nepoužívá tento stav v průbÄ›hu práce setting_mail_handler_preferred_body_part: Preferovaná Äást (HTML) emailu setting_show_status_changes_in_mail_subject: Zobrazit zmÄ›ny stavů v pÅ™edmetu mailové notifikace úkolů label_inherited_from_parent_project: PodÄ›dÄ›né z rodiÄovského projektu label_inherited_from_group: PodÄ›dÄ›né ze skupiny %{name} label_trackers_description: Popis front label_open_trackers_description: Zobrazit popis vÅ¡ech trackerů label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: PÅ™edmÄ›t rodiÄovského úkolu permission_edit_own_issues: Upravování vlastních úkolů text_select_apply_tracker: Použít frontu label_updated_issues: Aktualizované úkoly text_avatar_server_config_html: Aktuální avatar server je %{url}. Nastavení lze zmÄ›nit v config/configuration.yml. setting_gantt_months_limit: Maximální poÄet mÄ›síců zobrazených v ganttovÄ› diagramu permission_import_time_entries: Import stráveného Äasu label_import_notifications: Odeslat emailové notifikace bÄ›hem importu text_gs_available: ImageMagick PDF podpora k dispozici (volitelné) field_recently_used_projects: PoÄet nedávno použitých projektů v rychlém výbÄ›ru label_optgroup_bookmarks: Záložky label_optgroup_recents: Nedávno použité button_project_bookmark: PÅ™idat záložku button_project_bookmark_delete: Odstranit záložku field_history_default_tab: Výchozí karta historie úkolů label_issue_history_properties: ZmÄ›ny vlastností label_issue_history_notes: Poznámky label_last_tab_visited: Poslední zobrazená karta field_unique_id: Unikátní ID text_no_subject: bez pÅ™edmÄ›tu setting_password_required_char_classes: Vyžadované třídy znaků pro hesla label_password_char_class_uppercase: velká písmena label_password_char_class_lowercase: malá písmena label_password_char_class_digits: Äíslice label_password_char_class_special_chars: speciální znaky text_characters_must_contain: Musí obsahovat %{character_classes}. label_starts_with: zaÄíná label_ends_with: konÄí label_issue_fixed_version_updated: Cílová verze aktualizována setting_project_list_defaults: Výchozí nastavení seznamu projektů label_display_type: Zobrazit výsledky jako label_display_type_list: Seznam label_display_type_board: Fórum label_my_bookmarks: Moje záložky label_import_time_entries: Import stráveného Äasu field_toolbar_language_options: Jazyky zvýrazňování syntaxe kódu label_user_mail_notify_about_high_priority_issues_html: Notifikuj mÄ› o úkolech s prioritou %{prio} nebo vyšší label_assign_to_me: PÅ™iÅ™adit na mÄ› notice_issue_not_closable_by_open_tasks: Tento úkol nemůže být uzavÅ™en, protože má alespoň jeden otevÅ™ený podúkol. notice_issue_not_closable_by_blocking_issue: Tento úkol nemůže být uzavÅ™en, protože je blokován alespoň jedním otevÅ™eným úkolem. notice_issue_not_reopenable_by_closed_parent_issue: Tento úkol nemůže být znovu otevÅ™en, protože jeho rodiÄovský úkol je uzavÅ™en. error_bulk_download_size_too_big: Tyto přílohy nemohou být hromadnÄ› staženy, protože celková velikost souboru pÅ™esahuje maximální povolenou velikost (%{max_size}) setting_bulk_download_max_size: Maximální celková velikost pro hromadné stažení label_download_all_attachments: Stáhnout vÅ¡echny soubory error_attachments_too_many: Tento soubor nemůže být nahrán, protože byl pÅ™ekroÄen maximální poÄet souborů, které mohou být souÄasnÄ› pÅ™iloženy (%{max_number_of_files}) setting_email_domains_allowed: Povolené emailové domény setting_email_domains_denied: Zakázané emailové domény field_passwd_changed_on: Poslední zmÄ›na hesla label_relations_mapping: Mapování vazeb label_import_users: Import uživatelů label_days_to_html: "%{days} dní do %{date}" setting_twofa: Dvoufázové ověření label_optional: volitelné label_required_lower: povinné button_disable: Zakázat twofa__totp__name: Ověřování aplikace twofa__totp__text_pairing_info_html: Oskenujte tento QR kód nebo zadejte klÃ­Ä v prostém textu do TOTP aplikace (napÅ™. Google Authenticator, Authy, Duo Mobile) následnÄ› zadejte kód do pole níže pro aktivaci dvoufázového ověření. twofa__totp__label_plain_text_key: KlÃ­Ä v prostém textu twofa__totp__label_activate: Povolit ověřování aplikace twofa_currently_active: 'AktuálnÄ› aktivní: %{twofa_scheme_name}' twofa_not_active: Neaktivní twofa_label_code: Kód twofa_hint_disabled_html: Nastavení %{label} deaktivuje a odpáruje dvoufázové ověření zařízení pro vÅ¡echny uživatele. twofa_hint_required_html: Nastavení %{label} bude vyžadovat od vÅ¡ech uživatelů aktivaci dvoufázového ověření pÅ™i příštím pÅ™ihlášení. twofa_label_setup: Povolit dvoufázové ověření twofa_label_deactivation_confirmation: Deaktivovat dvoufázové ověření twofa_notice_select: 'Prosím vyberte schéma dvoufázového ověření, které chcete použít:' twofa_warning_require: Administrátor Vás žádá o povolení dvoufázového ověření. twofa_activated: Dvoufázové ověření úspěšnÄ› povoleno. Je doporuÄeno vygenerovat záložní kódy pro Váš úÄet. twofa_deactivated: Dvoufázové ověření zakázáno. twofa_mail_body_security_notification_paired: Dvoufázové ověření úspěšnÄ› povoleno s použitím %{field}. twofa_mail_body_security_notification_unpaired: Dvoufázové ověření bylo na VaÅ¡em úÄtu deaktivováno. twofa_mail_body_backup_codes_generated: Nové záložní kódy dvoufázového ověření byly vygenerovány. twofa_mail_body_backup_code_used: Byl použit záložní kód dvoufázového ověření. twofa_invalid_code: Kód je neplatný nebo zastralý. twofa_label_enter_otp: Prosím zadejte Váš kód dvoufázového ověření. twofa_too_many_tries: PříliÅ¡ mnoho pokusů. twofa_resend_code: Znovu zaslat kód twofa_code_sent: Ověřovací kód Vám byl zaslán. twofa_generate_backup_codes: Vygenerovat záložní kódy twofa_text_generate_backup_codes_confirmation: Toto zneplatní vÅ¡echny existující záložní kódy a vygeneruje nové. Chcete pokraÄovat? twofa_notice_backup_codes_generated: VaÅ¡e záložní kódy byly vygenerovány. twofa_warning_backup_codes_generated_invalidated: Nové záložní kódy byly vygenerovány. VaÅ¡e souÄasné kódy z %{time} jsou nyní zneplatnÄ›ny. twofa_label_backup_codes: Záložní kódy dvoufázového ověření twofa_text_backup_codes_hint: Použijte tyto kódy místo jednorázového hesla v případÄ›, že nemáte přístup k VaÅ¡emu původnímu ověření. Každý z kódů lze použít pouze jednou. Je doporuÄeno vytisknout a uložit je na bezpeÄné místo. twofa_text_backup_codes_created_at: Záložní kódy vygenerovány %{datetime}. twofa_backup_codes_already_shown: Záložní kódy nemohou být zobrazeny znovu, v případÄ› nutnosti prosím vygenerujte nové záložní kódy. error_can_not_execute_macro_html: Chyba pÅ™i vykonávání %{name} makra (%{error}) error_macro_does_not_accept_block: Toto makro nepÅ™ijímá blok textu error_childpages_macro_no_argument: Bez argumentů může být toto makro voláno pouze z wiki stránek error_circular_inclusion: ZjiÅ¡tÄ›no cyklické zahrnutí error_page_not_found: Stránka nenalezena error_filename_required: Název souboru vyžadován error_invalid_size_parameter: Neplatný parametr velikosti error_attachment_not_found: Příloha %{name} nenalezena permission_delete_project: Odstranit projekt field_twofa_scheme: Schéma dvoufázového ověření text_user_destroy_confirmation: Jste si jisti, že chcete odstranit tohoto uživatele a vÅ¡echny reference na nÄ›j? Tato akce nemůže být vzata zpÄ›t. ÄŒasto je užamÄení uživatele místo jeho smazání vhodnÄ›jším Å™eÅ¡ením. Pro potvrzení, prosím zadjte níže jeho login (%{login}). text_project_destroy_enter_identifier: Pro potvrzení, prosím zadejte níže identifikátor projektu (%{identifier}). button_add_subtask: PÅ™idat podúkol notice_invalid_watcher: 'Neplatný sledovatel: Uživatel nebude dostávat žádné notifikace, protože nemá přístup pro zobrazení tohoto objektu.' button_fetch_changesets: Stáhnout commity permission_view_message_watchers: Zobrazení seznamu sledovatelů příspÄ›vků permission_add_message_watchers: PÅ™idávání sledovatelů příspÄ›vků permission_delete_message_watchers: Mazání sledovatelů příspÄ›vků label_message_watchers: Sledující button_copy_link: Kopírovat odkaz error_invalid_authenticity_token: Neplatný token pravosti formuláře. error_query_statement_invalid: Nastala chyba pÅ™i vykonávání dotazu a byla zaznamenána. Prosím oznamte tuto chybu svému Redmine administrátorovi. permission_view_wiki_page_watchers: Zobrazení seznamu sledovatelů Wiki stránek permission_add_wiki_page_watchers: PÅ™idávání sledovatelů na Wiki stránky permission_delete_wiki_page_watchers: Mazání sledovatelů Wiki stránek label_wiki_page_watchers: Sledující label_attachment_description: Popis souboru error_no_data_in_file: Soubor neobsahuje žádná data field_twofa_required: Vyžadovat dvoufázové ověření twofa_hint_optional_html: Nastavení %{label} nechá uživatele nastavit dvoufázové ověření dle přání, pokud není vyžadováno nÄ›kterou z jeho skupin. twofa_text_group_required: Toto nastavení je úÄinné pouze pokud je globální nastavení dvoufázového ověření nastaveno jako 'volitelné'. AktuálnÄ› je dvoufázové ověření vyžadováno pro vÅ¡echny uživatele. twofa_text_group_disabled: Toto nastavení je úÄinné pouze pokud je globální nastavení dvoufázového ověření nastaveno jako 'volitelné'. AktuálnÄ› je dvoufázové ověření vypnuté. field_default_issue_query: Výchozí dotaz úkolů label_default_queries: for_all_projects: Pro vÅ¡echny projekty for_current_project: Pro aktuální projekt for_all_users: Pro vÅ¡echny uživatele for_this_user: For this user text_allowed_queries_to_select: Lze vybrat pouze veÅ™ejné dotazy (viditelné pro vÅ¡echny uživatele) text_all_migrations_have_been_run: VÅ¡echny databázové migrace byly spuÅ¡teny button_save_object: Uložit %{object_name} button_edit_object: Upravit %{object_name} button_delete_object: Smazat %{object_name} text_setting_config_change: Můžete nastavit chování v config/configuration.yml. Po úpravÄ› prosím restartujte aplikaci. label_bulk_edit: Hromadná úprava button_create_and_follow: VytvoÅ™it a pokraÄovat label_subtask: Podúkol label_default_query: Výchozí dotaz field_default_project_query: Výchozí dotaz projektů label_required_administrators: vyžadováno pro administrátory twofa_hint_required_administrators_html: Nastavení %{label} se chová jako volitelné, ale bude vyžadovat od vÅ¡ech uživatelů s administrátorskými právy nastavení dvoufázového ověření pÅ™i jejich příštím pÅ™ihlášení. label_auto_watch_on: Automaticky sledovat label_auto_watch_on_issue_contributed_to: Úkoly ke kterým jsem pÅ™ispÄ›l text_project_close_confirmation: Opravdu chcete uzavřít projekt '%{value}' a zmÄ›nit ho na pouze pro Ätení? text_project_reopen_confirmation: Opravdu chcete znovu otevřít projekt '%{value}'? text_project_archive_confirmation: Opravdu chcete archivovat projekt '%{value}' project? mail_destroy_project_failed: Projekt %{value} nemůže být smazán. mail_destroy_project_successful: Projekt %{value} byl úspěšnÄ› smazán. mail_destroy_project_with_subprojects_successful: Projekt %{value} a jeho podprojekty byly úspěšnÄ› smazány. project_status_scheduled_for_deletion: naplánován pro smazání text_projects_bulk_destroy_confirmation: Opravdu chcete smazat vybrané projekty a jejich data? text_projects_bulk_destroy_head: | Chystáte se permanentnÄ› smazat následující projekty, vÄetnÄ› možných podprojektů a jejich dat. Zkontrolujte informace uvedené níže a potvrÄte, že to je to, co opravdu chcete. Tato operace je nevratná. text_projects_bulk_destroy_confirm: Pro potvrzení zadejte, prosím, "%{yes}" do textového pole dole. text_subprojects_bulk_destroy: 'vÄetnÄ› jeho prodprojektu/ů: %{value}' field_current_password: Aktuální heslo sudo_mode_new_info_html: "Co se dÄ›je? Musíte znovu potvrdit vaÅ¡e heslo, než uÄiníte jakoukoli administrativní akci. To zaruÄí, že Váš úÄet zůstane chránÄ›ný." label_edited: Upraveno label_time_by_author: "%{time} %{author}" field_default_time_entry_activity: Výchozí aktivita stráveného Äasu field_is_member_of_group: ÄŒlen skupiny text_users_bulk_destroy_head: Chystáte se smazat následující uživatele a vÅ¡echna jejich data. Tato operace je nevratná. ZamÄení uživatelů bývá lepším Å™eÅ¡ením. text_users_bulk_destroy_confirm: Pro potvrzení zadejte "%{yes}" níže. permission_select_project_publicity: Nastav projekt jako veÅ™ejný nebo soukromý label_auto_watch_on_issue_created: Úkoly, které jsem vytvoÅ™il field_any_searchable: Jakýkoli vyhledávatelný text label_contains_any_of: obsahuje jakýkoli z button_apply_issues_filter: Použít filtr úkolů label_view_previous_annotation: Zobrazit poznámky pÅ™ed touto zmÄ›nou label_has_been: byl label_has_never_been: nikdy nebyl label_changed_from: zmÄ›nÄ›no od label_issue_statuses_description: Popis stavů úkolů label_open_issue_statuses_description: Zobraz popis vÅ¡ech stavů úkolů text_select_apply_issue_status: Vyberte stav úkolu field_name_or_email_or_login: Jméno, email nebo pÅ™ihlášení text_default_active_job_queue_changed: Výchozí adaptér fronty, vhodný pouze pro vývoj/testování, byl zmÄ›nÄ›n label_option_auto_lang: auto label_issue_attachment_added: Příloha pÅ™idána field_estimated_remaining_hours: Odhadovaný zbývající Äas field_last_activity_date: Poslední aktivita setting_issue_done_ratio_interval: Krok koeficientu dokonÄení setting_copy_attachments_on_issue_copy: Kopírovat přílohy pÅ™i kopírování field_thousands_delimiter: OddÄ›lovaÄ tisíců label_involved_principals: Autor / PÅ™edchozí pÅ™iÅ™azený uživatel label_attachment_summary: zero: "%{filename}" one: "%{filename} a 1 soubor" other: "%{filename} a %{count} soubory(ů)" redmine-6.0.5/config/locales/da.yml000066400000000000000000002131461500112024600171410ustar00rootroot00000000000000# Danish translation file for standard Ruby on Rails internationalization # by Lars Hoeg (http://www.lenio.dk/) # updated and upgraded to 0.9 by Morten Krogh Andersen (http://www.krogh.net) da: direction: ltr date: formats: default: "%d.%m.%Y" short: "%e. %b %Y" long: "%e. %B %Y" day_names: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] abbr_day_names: [sø, ma, ti, 'on', to, fr, lø] month_names: [~, januar, februar, marts, april, maj, juni, juli, august, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] order: - :day - :month - :year time: formats: default: "%e. %B %Y, %H:%M" time: "%H:%M" short: "%e. %b %Y, %H:%M" long: "%A, %e. %B %Y, %H:%M" am: "" pm: "" support: array: sentence_connector: "og" skip_last_comma: true datetime: distance_in_words: half_a_minute: "et halvt minut" less_than_x_seconds: one: "mindre end et sekund" other: "mindre end %{count} sekunder" x_seconds: one: "et sekund" other: "%{count} sekunder" less_than_x_minutes: one: "mindre end et minut" other: "mindre end %{count} minutter" x_minutes: one: "et minut" other: "%{count} minutter" about_x_hours: one: "cirka en time" other: "cirka %{count} timer" x_hours: one: "1 time" other: "%{count} timer" x_days: one: "en dag" other: "%{count} dage" about_x_months: one: "cirka en mÃ¥ned" other: "cirka %{count} mÃ¥neder" x_months: one: "en mÃ¥ned" other: "%{count} mÃ¥neder" about_x_years: one: "cirka et Ã¥r" other: "cirka %{count} Ã¥r" over_x_years: one: "mere end et Ã¥r" other: "mere end %{count} Ã¥r" almost_x_years: one: "næsten 1 Ã¥r" other: "næsten %{count} Ã¥r" number: format: separator: "," delimiter: "." precision: 3 currency: format: format: "%u %n" unit: "DKK" separator: "," delimiter: "." precision: 2 precision: format: # separator: delimiter: "" # precision: human: format: # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" percentage: format: # separator: delimiter: "" # precision: activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "er ikke i listen" exclusion: "er reserveret" invalid: "er ikke gyldig" confirmation: "stemmer ikke overens" accepted: "skal accepteres" empty: "mÃ¥ ikke udelades" blank: "skal udfyldes" too_long: "er for lang (højst %{count} tegn)" too_short: "er for kort (mindst %{count} tegn)" wrong_length: "har forkert længde (skulle være %{count} tegn)" taken: "er allerede anvendt" not_a_number: "er ikke et tal" greater_than: "skal være større end %{count}" greater_than_or_equal_to: "skal være større end eller lig med %{count}" equal_to: "skal være lig med %{count}" less_than: "skal være mindre end %{count}" less_than_or_equal_to: "skal være mindre end eller lig med %{count}" odd: "skal være ulige" even: "skal være lige" greater_than_start_date: "skal være senere end startdatoen" not_same_project: "hører ikke til samme projekt" circular_dependency: "Denne relation vil skabe et afhængighedsforhold" cant_link_an_issue_with_a_descendant: "En sag kan ikke relateres til en af dens underopgaver" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" template: header: one: "En fejl forhindrede %{model} i at blive gemt" other: "%{count} fejl forhindrede denne %{model} i at blive gemt" body: "Der var problemer med følgende felter:" actionview_instancetag_blank_option: Vælg venligst general_text_No: 'Nej' general_text_Yes: 'Ja' general_text_no: 'nej' general_text_yes: 'ja' general_lang_name: 'Danish (Dansk)' general_csv_separator: ',' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Kontoen er opdateret. notice_account_invalid_credentials: Ugyldig bruger og/eller kodeord notice_account_password_updated: Kodeordet er opdateret. notice_account_wrong_password: Forkert kodeord notice_account_register_done: Kontoen er oprettet. For at aktivere kontoen skal du klikke pÃ¥ linket i den tilsendte email. notice_can_t_change_password: Denne konto benytter en ekstern sikkerhedsgodkendelse. Det er ikke muligt at skifte kodeord. notice_account_lost_email_sent: En email med instruktioner til at vælge et nyt kodeord er afsendt til dig. notice_account_activated: Din konto er aktiveret. Du kan nu logge ind. notice_successful_create: Succesfuld oprettelse. notice_successful_update: Succesfuld opdatering. notice_successful_delete: Succesfuld sletning. notice_successful_connection: Succesfuld forbindelse. notice_file_not_found: Siden du forsøger at tilgÃ¥ eksisterer ikke eller er blevet fjernet. notice_locking_conflict: Data er opdateret af en anden bruger. notice_not_authorized: Du har ikke adgang til denne side. notice_email_sent: "En email er sendt til %{value}" notice_email_error: "En fejl opstod under afsendelse af email (%{value})" notice_feeds_access_key_reseted: Din adgangsnøgle til Atom er nulstillet. notice_failed_to_save_issues: "Det mislykkedes at gemme %{count} sage(r) pÃ¥ %{total} valgt: %{ids}." notice_account_pending: "Din konto er oprettet, og afventer administrators godkendelse." notice_default_data_loaded: Standardopsætningen er indlæst. error_can_t_load_default_data: "Standardopsætning kunne ikke indlæses: %{value}" error_scm_not_found: "Adgang nægtet og/eller revision blev ikke fundet i det valgte repository." error_scm_command_failed: "En fejl opstod under forbindelsen til det valgte repository: %{value}" mail_subject_lost_password: "Dit %{value} kodeord" mail_body_lost_password: 'Klik pÃ¥ dette link for at ændre dit kodeord:' mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klik pÃ¥ dette link for at aktivere din konto:' mail_body_account_information_external: "Du kan bruge din %{value} konto til at logge ind." mail_body_account_information: Din kontoinformation mail_subject_account_activation_request: "%{value} kontoaktivering" mail_body_account_activation_request: "En ny bruger (%{value}) er registreret. Godkend venligst kontoen:" field_name: Navn field_description: Beskrivelse field_summary: Sammenfatning field_is_required: Skal udfyldes field_firstname: Fornavn field_lastname: Efternavn field_mail: Email field_filename: Fil field_filesize: Størrelse field_downloads: Downloads field_author: Forfatter field_created_on: Oprettet field_updated_on: Opdateret field_field_format: Format field_is_for_all: For alle projekter field_possible_values: Mulige værdier field_regexp: Regulære udtryk field_min_length: Mindste længde field_max_length: Største længde field_value: Værdi field_category: Kategori field_title: Titel field_project: Projekt field_issue: Sag field_status: Status field_notes: Noter field_is_closed: Sagen er lukket field_is_default: Standardværdi field_tracker: Type field_subject: Emne field_due_date: Deadline field_assigned_to: Tildelt til field_priority: Prioritet field_fixed_version: Udgave field_user: Bruger field_role: Rolle field_homepage: Hjemmeside field_is_public: Offentlig field_parent: Underprojekt af field_is_in_roadmap: Sager vist i roadmap field_login: Login field_mail_notification: Email-pÃ¥mindelser field_admin: Administrator field_last_login_on: Sidste forbindelse field_language: Sprog field_effective_date: Dato field_password: Kodeord field_new_password: Nyt kodeord field_password_confirmation: Bekræft field_version: Version field_type: Type field_host: Vært field_port: Port field_account: Kode field_base_dn: Base DN field_attr_login: Login attribut field_attr_firstname: Fornavn attribut field_attr_lastname: Efternavn attribut field_attr_mail: Email attribut field_onthefly: løbende brugeroprettelse field_start_date: Start dato field_done_ratio: "% færdig" field_auth_source: Sikkerhedsmetode field_hide_mail: Skjul min email field_comments: Kommentar field_url: URL field_start_page: Startside field_subproject: Underprojekt field_hours: Timer field_activity: Aktivitet field_spent_on: Dato field_identifier: Identifikator field_is_filter: Brugt som et filter field_issue_to: Beslægtede sag field_delay: Udsættelse field_assignable: Sager kan tildeles denne rolle field_redirect_existing_links: Videresend eksisterende links field_estimated_hours: AnslÃ¥et tid field_column_names: Kolonner field_time_zone: Tidszone field_searchable: Søgbar field_default_value: Standardværdi setting_app_title: Applikationstitel setting_welcome_text: Velkomsttekst setting_default_language: Standardsporg setting_login_required: Sikkerhed pÃ¥krævet setting_self_registration: Brugeroprettelse setting_attachment_max_size: Vedhæftede filers max størrelse setting_issues_export_limit: Sagseksporteringsbegrænsning setting_mail_from: Afsender-email setting_host_name: Værtsnavn setting_text_formatting: Tekstformatering setting_wiki_compression: Komprimering af wiki-historik setting_feeds_limit: Feed indholdsbegrænsning setting_autofetch_changesets: Hent automatisk commits setting_sys_api_enabled: Aktiver webservice for automatisk administration af repository setting_commit_ref_keywords: Referencenøgleord setting_commit_fix_keywords: Afslutningsnøgleord setting_autologin: Automatisk login setting_date_format: Datoformat setting_time_format: Tidsformat setting_cross_project_issue_relations: Tillad sagsrelationer pÃ¥ tværs af projekter setting_issue_list_default_columns: Standardkolonner pÃ¥ sagslisten setting_emails_footer: Email-fodnote setting_protocol: Protokol setting_user_format: Brugervisningsformat project_module_issue_tracking: Sagssøgning project_module_time_tracking: Tidsstyring project_module_news: Nyheder project_module_documents: Dokumenter project_module_files: Filer project_module_wiki: Wiki project_module_repository: Repository project_module_boards: Fora label_user: Bruger label_user_plural: Brugere label_user_new: Ny bruger label_project: Projekt label_project_new: Nyt projekt label_project_plural: Projekter label_x_projects: zero: Ingen projekter one: 1 projekt other: "%{count} projekter" label_project_all: Alle projekter label_project_latest: Seneste projekter label_issue: Sag label_issue_new: Opret sag label_issue_plural: Sager label_issue_view_all: Vis alle sager label_issues_by: "Sager fra %{value}" label_issue_added: Sagen er oprettet label_issue_updated: Sagen er opdateret label_document: Dokument label_document_new: Nyt dokument label_document_plural: Dokumenter label_document_added: Dokument tilføjet label_role: Rolle label_role_plural: Roller label_role_new: Ny rolle label_role_and_permissions: Roller og rettigheder label_member: Medlem label_member_new: Nyt medlem label_member_plural: Medlemmer label_tracker: Type label_tracker_plural: Typer label_tracker_new: Ny type label_workflow: Arbejdsgang label_issue_status: Sagsstatus label_issue_status_plural: Sagsstatusser label_issue_status_new: Ny status label_issue_category: Sagskategori label_issue_category_plural: Sagskategorier label_issue_category_new: Ny kategori label_custom_field: Brugerdefineret felt label_custom_field_plural: Brugerdefinerede felter label_custom_field_new: Nyt brugerdefineret felt label_enumerations: Værdier label_enumeration_new: Ny værdi label_information: Information label_information_plural: Information label_register: Registrér label_password_lost: Glemt kodeord label_home: Forside label_my_page: Min side label_my_account: Min konto label_my_projects: Mine projekter label_administration: Administration label_login: Log ind label_logout: Log ud label_help: Hjælp label_reported_issues: Rapporterede sager label_assigned_to_me_issues: Sager tildelt til mig label_registered_on: Registreret den label_activity: Aktivitet label_new: Ny label_logged_as: Registreret som label_environment: Miljø label_authentication: Sikkerhed label_auth_source: Sikkerhedsmetode label_auth_source_new: Ny sikkerhedsmetode label_auth_source_plural: Sikkerhedsmetoder label_subproject_plural: Underprojekter label_min_max_length: Min - Max længde label_list: Liste label_date: Dato label_integer: Heltal label_float: Kommatal label_boolean: Sand/falsk label_string: Tekst label_text: Lang tekst label_attribute: Attribut label_attribute_plural: Attributter label_no_data: Ingen data at vise label_change_status: Ændringsstatus label_history: Historik label_attachment: Fil label_attachment_new: Ny fil label_attachment_delete: Slet fil label_attachment_plural: Filer label_file_added: Fil tilføjet label_report: Rapport label_report_plural: Rapporter label_news: Nyheder label_news_new: Tilføj nyheder label_news_plural: Nyheder label_news_latest: Seneste nyheder label_news_view_all: Vis alle nyheder label_news_added: Nyhed tilføjet label_settings: Indstillinger label_overview: Oversigt label_version: Udgave label_version_new: Ny udgave label_version_plural: Udgaver label_confirmation: Bekræftelser label_export_to: Eksporter til label_read: Læs... label_public_projects: Offentlige projekter label_open_issues: Ã¥ben label_open_issues_plural: Ã¥bne label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr: zero: 0 Ã¥bne one: 1 Ã¥ben other: "%{count} Ã¥bne" label_x_closed_issues_abbr: zero: 0 lukkede one: 1 lukket other: "%{count} lukkede" label_total: Total label_permissions: Rettigheder label_current_status: Nuværende status label_new_statuses_allowed: Ny status tilladt label_all: alle label_none: intet label_nobody: ingen label_next: Næste label_previous: Forrige label_used_by: Brugt af label_details: Detaljer label_add_note: Tilføj note label_calendar: Kalender label_months_from: mÃ¥neder frem label_gantt: Gantt label_internal: Intern label_last_changes: "sidste %{count} ændringer" label_change_view_all: Vis alle ændringer label_comment: Kommentar label_comment_plural: Kommentarer label_x_comments: zero: ingen kommentarer one: 1 kommentar other: "%{count} kommentarer" label_comment_add: Tilføj en kommentar label_comment_added: Kommentaren er tilføjet label_comment_delete: Slet kommentar label_query: Brugerdefineret forespørgsel label_query_plural: Brugerdefinerede forespørgsler label_query_new: Ny forespørgsel label_filter_add: Tilføj filter label_filter_plural: Filtre label_equals: er label_not_equals: er ikke label_in_less_than: er mindre end label_in_more_than: er større end label_in: indeholdt i label_today: i dag label_yesterday: i gÃ¥r label_this_week: denne uge label_last_week: sidste uge label_last_n_days: "sidste %{count} dage" label_this_month: denne mÃ¥ned label_last_month: sidste mÃ¥ned label_this_year: dette Ã¥r label_date_range: Dato interval label_less_than_ago: mindre end dage siden label_more_than_ago: mere end dage siden label_ago: dage siden label_contains: indeholder label_not_contains: ikke indeholder label_day_plural: dage label_repository: Repository label_repository_plural: Repositories label_revision: Revision label_revision_plural: Revisioner label_associated_revisions: Tilknyttede revisioner label_added: tilføjet label_modified: ændret label_deleted: slettet label_latest_revision: Seneste revision label_latest_revision_plural: Seneste revisioner label_view_revisions: Se revisioner label_max_size: Maksimal størrelse label_roadmap: Roadmap label_roadmap_due_in: Deadline label_roadmap_overdue: "%{value} forsinket" label_roadmap_no_issues: Ingen sager i denne version label_search: Søg label_result_plural: Resultater label_all_words: Alle ord label_wiki: Wiki label_wiki_edit: Wiki ændring label_wiki_edit_plural: Wiki ændringer label_wiki_page: Wiki side label_wiki_page_plural: Wiki sider label_index_by_title: Indhold efter titel label_index_by_date: Indhold efter dato label_current_version: Nuværende version label_preview: ForhÃ¥ndsvisning label_feed_plural: Feeds label_changes_details: Detaljer for alle ændringer label_issue_tracking: Sagssøgning label_spent_time: Anvendt tid label_f_hour: "%{value} time" label_f_hour_plural: "%{value} timer" label_time_tracking: Tidsstyring label_change_plural: Ændringer label_statistics: Statistik label_commits_per_month: Commits pr. mÃ¥ned label_commits_per_author: Commits pr. bruger label_view_diff: Vis forskelle label_diff_inline: inline label_diff_side_by_side: side om side label_options: Formatering label_copy_workflow_from: Kopier arbejdsgang fra label_permissions_report: Godkendelsesrapport label_watched_issues: OvervÃ¥gede sager label_related_issues: Relaterede sager label_applied_status: Anvendte statusser label_loading: Indlæser... label_relation_new: Ny relation label_relation_delete: Slet relation label_relates_to: relaterer til label_duplicates: duplikater label_blocks: blokerer label_blocked_by: blokeret af label_precedes: kommer før label_follows: følger label_stay_logged_in: Forbliv indlogget label_disabled: deaktiveret label_show_completed_versions: Vis færdige versioner label_me: mig label_board: Forum label_board_new: Nyt forum label_board_plural: Fora label_topic_plural: Emner label_message_plural: Beskeder label_message_last: Sidste besked label_message_new: Ny besked label_message_posted: Besked tilføjet label_reply_plural: Besvarer label_send_information: Send konto information til bruger label_year: Ã…r label_month: MÃ¥ned label_week: Uge label_date_from: Fra label_date_to: Til label_language_based: Baseret pÃ¥ brugerens sprog label_sort_by: "Sortér efter %{value}" label_send_test_email: Send en test email label_feeds_access_key_created_on: "Atom adgangsnøgle dannet for %{value} siden" label_module_plural: Moduler label_added_time_by: "Tilføjet af %{author} for %{age} siden" label_updated_time: "Opdateret for %{value} siden" label_jump_to_a_project: Skift til projekt... label_file_plural: Filer label_changeset_plural: Ændringer label_default_columns: Standardkolonner label_no_change_option: (Ingen ændringer) label_bulk_edit_selected_issues: Masse-ret de valgte sager label_theme: Tema label_default: standard label_search_titles_only: Søg kun i titler label_user_mail_option_all: "For alle hændelser pÃ¥ mine projekter" label_user_mail_option_selected: "For alle hændelser pÃ¥ de valgte projekter..." label_user_mail_no_self_notified: "Jeg ønsker ikke besked om ændring foretaget af mig selv" label_registration_activation_by_email: kontoaktivering pÃ¥ email label_registration_manual_activation: manuel kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering label_display_per_page: "Per side: %{value}" label_age: Alder label_change_properties: Ændre indstillinger label_general: Generelt label_scm: SCM label_plugins: Plugins label_ldap_authentication: LDAP-godkendelse label_downloads_abbr: D/L button_login: Login button_submit: Send button_save: Gem button_check_all: Vælg alt button_uncheck_all: Fravælg alt button_delete: Slet button_create: Opret button_test: Test button_edit: Ret button_add: Tilføj button_change: Ændre button_apply: Anvend button_clear: Nulstil button_lock: LÃ¥s button_unlock: LÃ¥s op button_download: Download button_list: List button_view: Vis button_move: Flyt button_back: Tilbage button_cancel: Annullér button_activate: Aktivér button_sort: Sortér button_log_time: Log tid button_rollback: Tilbagefør til denne version button_watch: OvervÃ¥g button_unwatch: Stop overvÃ¥gning button_reply: Besvar button_archive: Arkivér button_unarchive: Fjern fra arkiv button_reset: Nulstil button_rename: Omdøb button_change_password: Skift kodeord button_copy: Kopiér button_annotate: Annotér button_update: Opdatér button_configure: Konfigurér status_active: aktiv status_registered: registreret status_locked: lÃ¥st text_select_mail_notifications: Vælg handlinger der skal sendes email besked for. text_regexp_info: f.eks. ^[A-ZÆØÅ0-9]+$ text_project_destroy_confirmation: Er du sikker pÃ¥ at du vil slette dette projekt og alle relaterede data? text_workflow_edit: Vælg en rolle samt en type, for at redigere arbejdsgangen text_are_you_sure: Er du sikker? text_tip_issue_begin_day: opgaven begynder denne dag text_tip_issue_end_day: opaven slutter denne dag text_tip_issue_begin_end_day: opgaven begynder og slutter denne dag text_caracters_maximum: "max %{count} karakterer." text_caracters_minimum: "Skal være mindst %{count} karakterer lang." text_length_between: "Længde skal være mellem %{min} og %{max} karakterer." text_tracker_no_workflow: Ingen arbejdsgang defineret for denne type text_unallowed_characters: Ikke-tilladte karakterer text_comma_separated: Adskillige værdier tilladt (adskilt med komma). text_issues_ref_in_commit_messages: Referer og løser sager i commit-beskeder text_issue_added: "Sag %{id} er rapporteret af %{author}." text_issue_updated: "Sag %{id} er blevet opdateret af %{author}." text_wiki_destroy_confirmation: Er du sikker pÃ¥ at du vil slette denne wiki og dens indhold? text_issue_category_destroy_question: "Nogle sager (%{count}) er tildelt denne kategori. Hvad ønsker du at gøre?" text_issue_category_destroy_assignments: Slet tildelinger af kategori text_issue_category_reassign_to: Tildel sager til denne kategori text_user_mail_option: "For ikke-valgte projekter vil du kun modtage beskeder omhandlende ting du er involveret i eller overvÃ¥ger (f.eks. sager du har indberettet eller ejer)." text_no_configuration_data: "Roller, typer, sagsstatusser og arbejdsgange er endnu ikke konfigureret.\nDet er anbefalet at indlæse standardopsætningen. Du vil kunne ændre denne nÃ¥r den er indlæst." text_load_default_configuration: Indlæs standardopsætningen text_status_changed_by_changeset: "Anvendt i ændring %{value}." text_issues_destroy_confirmation: 'Er du sikker pÃ¥ du ønsker at slette den/de valgte sag(er)?' text_select_project_modules: 'Vælg moduler er skal være aktiveret for dette projekt:' text_default_administrator_account_changed: Standardadministratorkonto ændret text_file_repository_writable: Filarkiv er skrivbar text_minimagick_available: MiniMagick tilgængelig (valgfri) default_role_manager: Leder default_role_developer: Udvikler default_role_reporter: Rapportør default_tracker_bug: Fejl default_tracker_feature: Funktion default_tracker_support: Support default_issue_status_new: Ny default_issue_status_in_progress: Igangværende default_issue_status_resolved: Løst default_issue_status_feedback: Feedback default_issue_status_closed: Lukket default_issue_status_rejected: Afvist default_doc_category_user: Brugerdokumentation default_doc_category_tech: Teknisk dokumentation default_priority_low: Lav default_priority_normal: Normal default_priority_high: Høj default_priority_urgent: Akut default_priority_immediate: OmgÃ¥ende default_activity_design: Design default_activity_development: Udvikling enumeration_issue_priorities: Sagsprioriteter enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsstyring) label_add_another_file: Tilføj endnu en fil label_chronological_order: I kronologisk rækkefølge setting_activity_days_default: Antal dage der vises under projektaktivitet text_destroy_time_entries_question: "%{hours} timer er registreret pÃ¥ denne sag som du er ved at slette. Hvad vil du gøre?" error_issue_not_found_in_project: 'Sagen blev ikke fundet eller tilhører ikke dette projekt' text_assign_time_entries_to_project: Tildel raporterede timer til projektet setting_display_subprojects_issues: Vis sager for underprojekter pÃ¥ hovedprojektet som standard label_optional_description: Valgfri beskrivelse text_destroy_time_entries: Slet registrerede timer field_comments_sorting: Vis kommentar text_reassign_time_entries: 'Tildel registrerede timer til denne sag igen' label_reverse_chronological_order: I omvendt kronologisk rækkefølge label_preferences: Præferencer setting_default_projects_public: Nye projekter er offentlige som standard error_scm_annotate: "Filen findes ikke, eller kunne ikke annoteres." text_subprojects_destroy_warning: "Dets underprojekter(er): %{value} vil ogsÃ¥ blive slettet." permission_edit_issues: Redigér sager setting_diff_max_lines_displayed: Højeste antal forskelle der vises permission_edit_own_issue_notes: Redigér egne noter setting_enabled_scm: Aktiveret SCM button_quote: Citér permission_view_files: Se filer permission_add_issues: Tilføj sager permission_edit_own_messages: Redigér egne beskeder permission_delete_own_messages: Slet egne beskeder permission_manage_public_queries: Administrér offentlig forespørgsler permission_log_time: Registrér anvendt tid label_renamed: omdøbt label_incoming_emails: Indkommende emails permission_view_changesets: Se ændringer permission_manage_versions: Administrér versioner permission_view_time_entries: Se anvendt tid label_generate_key: Generér en nøglefil permission_manage_categories: Administrér sagskategorier permission_manage_wiki: Administrér wiki setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer setting_plain_text_mail: Emails som almindelig tekst (ingen HTML) field_parent_title: Siden over text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slÃ¥et fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse." permission_protect_wiki_pages: Beskyt wiki sider permission_add_issue_watchers: Tilføj overvÃ¥gere warning_attachments_not_saved: "der var %{count} fil(er), som ikke kunne gemmes." permission_comment_news: Kommentér nyheder text_enumeration_category_reassign_to: 'Flyt dem til denne værdi:' permission_select_project_modules: Vælg projektmoduler permission_view_gantt: Se Gantt diagram permission_delete_messages: Slet beskeder permission_edit_wiki_pages: Redigér wiki sider label_user_activity: "%{value}'s aktivitet" permission_manage_issue_relations: Administrér sags-relationer label_issue_watchers: OvervÃ¥gere permission_delete_wiki_pages: Slet wiki sider notice_unable_delete_version: Kan ikke slette versionen. permission_view_wiki_edits: Se wiki historik field_editable: Redigérbar label_duplicated_by: dubleret af permission_manage_boards: Administrér fora permission_delete_wiki_pages_attachments: Slet filer vedhæftet wiki sider permission_view_messages: Se beskeder text_enumeration_destroy_question: "%{count} objekter er tildelt denne værdi." permission_manage_files: Administrér filer permission_add_messages: Opret beskeder permission_edit_issue_notes: Redigér noter permission_manage_news: Administrér nyheder text_plugin_assets_writable: Der er skriverettigheder til plugin assets folderen label_display: Vis label_and_its_subprojects: "%{value} og dets underprojekter" permission_view_calendar: Se kalender button_create_and_continue: Opret og fortsæt setting_gravatar_enabled: Anvend Gravatar brugerikoner label_updated_time_by: "Opdateret af %{author} for %{age} siden" text_diff_truncated: '... Listen over forskelle er blevet afkortet da den overstiger den maksimale størrelse der kan vises.' text_user_wrote: "%{value} skrev:" text_user_wrote_in: "%{value} skrev (%{link}):" setting_mail_handler_api_enabled: Aktiver webservice for indkomne emails permission_delete_issues: Slet sager permission_view_documents: Se dokumenter permission_browse_repository: Gennemse repository permission_manage_repository: Administrér repository permission_manage_members: Administrér medlemmer mail_subject_reminder: "%{count} sag(er) har deadline i de kommende dage (%{days})" permission_add_issue_notes: Tilføj noter permission_edit_messages: Redigér beskeder permission_view_issue_watchers: Se liste over overvÃ¥gere permission_commit_access: Commit adgang setting_mail_handler_api_key: API nøgle label_example: Eksempel permission_rename_wiki_pages: Omdøb wiki sider text_custom_field_possible_values_info: 'En linje for hver værdi' permission_view_wiki_pages: Se wiki permission_edit_project: Redigér projekt permission_save_queries: Gem forespørgsler label_copied: kopieret text_repository_usernames_mapping: "Vælg eller opdatér de Redmine brugere der svarer til de enkelte brugere fundet i repository loggen.\nBrugere med samme brugernavn eller email adresse i bÃ¥de Redmine og det valgte repository bliver automatisk koblet sammen." permission_edit_time_entries: Redigér tidsregistreringer general_csv_decimal_separator: ',' permission_edit_own_time_entries: Redigér egne tidsregistreringer setting_repository_log_display_limit: Højeste antal revisioner vist i fil-log setting_file_max_size_displayed: Maksimale størrelse pÃ¥ tekstfiler vist inline field_watcher: OvervÃ¥ger setting_per_page_options: Enheder per side muligheder mail_body_reminder: "%{count} sage(er) som er tildelt dig har deadline indenfor de næste %{days} dage:" field_content: Indhold label_descending: Aftagende label_sort: Sortér label_ascending: Tiltagende label_date_from_to: Fra %{start} til %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Denne side har %{descendants} underside(r) og afledte. Hvad vil du gøre? text_wiki_page_reassign_children: Flyt undersider til denne side text_wiki_page_nullify_children: Behold undersider som rod-sider text_wiki_page_destroy_children: Slet undersider ogalle deres afledte sider. setting_password_min_length: Mindste længde pÃ¥ kodeord field_group_by: Gruppér resultater efter mail_subject_wiki_content_updated: "'%{id}' wikisiden er blevet opdateret" label_wiki_content_added: Wiki side tilføjet mail_subject_wiki_content_added: "'%{id}' wikisiden er blevet tilføjet" mail_body_wiki_content_added: The '%{id}' wikiside er blevet tilføjet af %{author}. label_wiki_content_updated: Wikiside opdateret mail_body_wiki_content_updated: Wikisiden '%{id}' er blevet opdateret af %{author}. permission_add_project: Opret projekt setting_new_project_user_role_id: Denne rolle gives til en bruger, som ikke er administrator, og som opretter et projekt label_view_all_revisions: Se alle revisioner label_tag: Tag label_branch: Branch error_no_tracker_in_project: Der er ingen sagshÃ¥ndtering for dette projekt. Kontrollér venligst projektindstillingerne. error_no_default_issue_status: Der er ikke defineret en standardstatus. Kontrollér venligst indstillingerne (gÃ¥ til "Administration -> Sagsstatusser"). text_journal_changed: "%{label} ændret fra %{old} til %{new}" text_journal_set_to: "%{label} sat til %{value}" text_journal_deleted: "%{label} slettet (%{old})" label_group_plural: Grupper label_group: Grupper label_group_new: Ny gruppe label_time_entry_plural: Anvendt tid text_journal_added: "%{label} %{value} tilføjet" field_active: Aktiv enumeration_system_activity: System Aktivitet permission_delete_issue_watchers: Slet overvÃ¥gere version_status_closed: lukket version_status_locked: lÃ¥st version_status_open: Ã¥ben error_can_not_reopen_issue_on_closed_version: En sag tildelt en lukket version kan ikke genÃ¥bnes label_user_anonymous: Anonym button_move_and_follow: Flyt og overvÃ¥g setting_default_projects_modules: Standard moduler, aktiveret for nye projekter setting_gravatar_default: Standard Gravatar billede field_sharing: Delning label_version_sharing_hierarchy: Med projekthierarki label_version_sharing_system: Med alle projekter label_version_sharing_descendants: Med underprojekter label_version_sharing_tree: Med projekttræ label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette projekt kan ikke arkiveres button_copy_and_follow: Kopiér og overvÃ¥g label_copy_source: Kilde setting_issue_done_ratio: Beregn sagsløsning ratio setting_issue_done_ratio_issue_status: Benyt sagsstatus error_issue_done_ratios_not_updated: Sagsløsnings ratio, ikke opdateret. error_workflow_copy_target: Vælg venligst mÃ¥ltracker og rolle(r) setting_issue_done_ratio_issue_field: Benyt sagsfelt label_copy_same_as_target: Samme som mÃ¥l label_copy_target: MÃ¥l notice_issue_done_ratios_updated: Sagsløsningsratio opdateret. error_workflow_copy_source: Vælg venligst en kildetracker eller rolle label_update_issue_done_ratios: Opdater sagsløsningsratio setting_start_of_week: Start kalendre pÃ¥ permission_view_issues: Vis sager label_display_used_statuses_only: Vis kun statusser der er benyttet af denne tracker label_revision_id: Revision %{value} label_api_access_key: API nøgle label_api_access_key_created_on: API nøgle genereret %{value} siden label_feeds_access_key: Atom nøgle notice_api_access_key_reseted: Din API nøgle er nulstillet. setting_rest_api_enabled: Aktiver REST web service label_missing_api_access_key: Mangler en API nøgle label_missing_feeds_access_key: Mangler en Atom nøgle button_show: Vis text_line_separated: Flere væredier tilladt (en linje for hver værdi). setting_mail_handler_body_delimiters: Trunkér emails efter en af disse linjer permission_add_subprojects: Lav underprojekter label_subproject_new: Nyt underprojekt text_own_membership_delete_confirmation: |- Du er ved at fjerne en eller flere af dine rettigheder, og kan muligvis ikke redigere projektet bagefter. Er du sikker pÃ¥ du ønsker at fortsætte? label_close_versions: Luk færdige versioner label_board_sticky: Klistret label_board_locked: LÃ¥st permission_export_wiki_pages: Eksporter wiki sider setting_cache_formatted_text: Cache formatteret tekst permission_manage_project_activities: Administrer projektaktiviteter error_unable_delete_issue_status: Det var ikke muligt at slette sagsstatus (%{value}) label_profile: Profil permission_manage_subtasks: Administrer underopgaver field_parent_issue: Hovedopgave label_subtask_plural: Underopgaver label_project_copy_notifications: Send email notifikationer, mens projektet kopieres error_can_not_delete_custom_field: Kan ikke slette brugerdefineret felt error_unable_to_connect: Kan ikke forbinde (%{value}) error_can_not_remove_role: Denne rolle er i brug og kan ikke slettes. error_can_not_delete_tracker_html: Denne type indeholder sager og kan ikke slettes.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Fejl under lagring af medlem(mer): %{errors}." text_zoom_out: Zoom ud text_zoom_in: Zoom ind notice_unable_delete_time_entry: Kan ikke slette tidsregistrering. field_time_entries: Log tid project_module_gantt: Gantt project_module_calendar: Kalender button_edit_associated_wikipage: "Redigér tilknyttet Wiki side: %{page_title}" field_text: Tekstfelt setting_default_notification_option: Standardpåmindelsesmulighed label_user_mail_option_only_my_events: Kun for ting jeg overvåger eller er involveret i label_user_mail_option_none: Ingen hændelser field_member_of_group: Medlem af gruppe field_assigned_to_role: Medlem af rolle notice_not_authorized_archived_project: Projektet du prøver at tilgå, er blevet arkiveret. label_principal_search: "Søg efter bruger eller gruppe:" label_user_search: "Søg efter bruger:" field_visible: Synlig setting_commit_logtime_activity_id: Aktivitet for registreret tid text_time_logged_by_changeset: Anvendt i changeset %{value}. setting_commit_logtime_enabled: Aktiver tidsregistrering notice_gantt_chart_truncated: Kortet er blevet afkortet, fordi det overstiger det maksimale antal elementer, der kan vises (%{max}) setting_gantt_items_limit: Maksimalt antal af elementer der kan vises på gantt kortet field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Kodning af Commit beskeder field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 sag one: 1 sag other: "%{count} sager" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: alle label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Med underprojekter label_cross_project_tree: Med projekttræ label_cross_project_hierarchy: Med projekthierarki label_cross_project_system: Med alle projekter button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Total text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overordnet forbrug af tid notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API nøgle setting_lost_password: Glemt kodeord mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Slet relation error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/de.yml000066400000000000000000002265711500112024600171530ustar00rootroot00000000000000# German translations for Ruby on Rails # by Clemens Kofler (clemens@railway.at) # additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com) de: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y" short: "%e. %b" long: "%e. %B %Y" day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%d.%m.%Y %H:%M" time: "%H:%M" short: "%e. %b %H:%M" long: "%A, %e. %B %Y, %H:%M Uhr" am: "vormittags" pm: "nachmittags" datetime: distance_in_words: half_a_minute: 'einer halben Minute' less_than_x_seconds: one: 'weniger als 1 Sekunde' other: 'weniger als %{count} Sekunden' x_seconds: one: '1 Sekunde' other: '%{count} Sekunden' less_than_x_minutes: one: 'weniger als 1 Minute' other: 'weniger als %{count} Minuten' x_minutes: one: '1 Minute' other: '%{count} Minuten' about_x_hours: one: 'etwa 1 Stunde' other: 'etwa %{count} Stunden' x_hours: one: "1 Stunde" other: "%{count} Stunden" x_days: one: '1 Tag' other: '%{count} Tagen' about_x_months: one: 'etwa 1 Monat' other: 'etwa %{count} Monaten' x_months: one: '1 Monat' other: '%{count} Monaten' about_x_years: one: 'etwa 1 Jahr' other: 'etwa %{count} Jahren' over_x_years: one: 'mehr als 1 Jahr' other: 'mehr als %{count} Jahren' almost_x_years: one: "fast 1 Jahr" other: "fast %{count} Jahren" number: # Default format for numbers format: separator: ',' delimiter: '.' precision: 2 currency: format: unit: '€' format: '%n %u' delimiter: '' percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "und" skip_last_comma: true activerecord: errors: template: header: one: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." other: "Dieses %{model}-Objekt konnte nicht gespeichert werden: %{count} Fehler." body: "Bitte überprüfen Sie die folgenden Felder:" messages: inclusion: "ist kein gültiger Wert" exclusion: "ist nicht verfügbar" invalid: "ist nicht gültig" confirmation: "stimmt nicht mit der Bestätigung überein" accepted: "muss akzeptiert werden" empty: "muss ausgefüllt werden" blank: "muss ausgefüllt werden" too_long: "ist zu lang (nicht mehr als %{count} Zeichen)" too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)" wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)" taken: "ist bereits vergeben" not_a_number: "ist keine Zahl" not_a_date: "ist kein gültiges Datum" greater_than: "muss größer als %{count} sein" greater_than_or_equal_to: "muss größer oder gleich %{count} sein" equal_to: "muss genau %{count} sein" less_than: "muss kleiner als %{count} sein" less_than_or_equal_to: "muss kleiner oder gleich %{count} sein" odd: "muss ungerade sein" even: "muss gerade sein" greater_than_start_date: "muss größer als der Beginn sein" not_same_project: "gehört nicht zum selben Projekt" circular_dependency: "Diese Beziehung würde eine zyklische Abhängigkeit erzeugen" cant_link_an_issue_with_a_descendant: "Ein Ticket kann nicht mit einem seiner untergeordneten Tickets verlinkt werden" earlier_than_minimum_start_date: "kann wegen eines Vorgängertickets nicht vor %{date} liegen" not_a_regexp: "ist kein gültiger regulärer Ausdruck" open_issue_with_closed_parent: "Ein offenes Ticket kann nicht an ein geschlossenes übergeordnetes Ticket angehängt werden" must_contain_uppercase: "muss Großbuchstaben (A-Z) enthalten" must_contain_lowercase: "muss Kleinbuchstaben (a-z) enthalten" must_contain_digits: "muss Zahlen (0-9) enthalten" must_contain_special_chars: "muss Sonderzeichen (!, $, %, ...) enthalten" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Bitte auswählen button_activate: Aktivieren button_disable: Deaktivieren button_add: Hinzufügen button_annotate: Annotieren button_apply: Anwenden button_archive: Archivieren button_back: Zurück button_cancel: Abbrechen button_change: Wechseln button_change_password: Passwort ändern button_check_all: Alles auswählen button_clear: Zurücksetzen button_close: Schließen button_collapse_all: Alle einklappen button_configure: Konfigurieren button_copy: Kopieren button_copy_and_follow: Kopieren und Ticket anzeigen button_create: Anlegen button_create_and_continue: Anlegen und weiter button_delete: Löschen button_delete_my_account: Mein Benutzerkonto löschen button_download: Herunterladen button_edit: Bearbeiten button_edit_associated_wikipage: "Zugehörige Wikiseite bearbeiten: %{page_title}" button_edit_section: Diesen Bereich bearbeiten button_expand_all: Alle ausklappen button_export: Exportieren button_hide: Verstecken button_list: Liste button_lock: Sperren button_log_time: Aufwand buchen button_login: Anmelden button_move: Verschieben button_move_and_follow: Verschieben und Ticket anzeigen button_quote: Zitieren button_rename: Umbenennen button_reopen: Öffnen button_reply: Antworten button_reset: Zurücksetzen button_rollback: Auf diese Version zurücksetzen button_save: Speichern button_show: Anzeigen button_sort: Sortieren button_submit: OK button_test: Testen button_unarchive: Entarchivieren button_uncheck_all: Alles abwählen button_unlock: Entsperren button_unwatch: Nicht beobachten button_update: Aktualisieren button_view: Anzeigen button_watch: Beobachten button_actions: Aktionen default_activity_design: Design default_activity_development: Entwicklung default_doc_category_tech: Technische Dokumentation default_doc_category_user: Benutzerdokumentation default_issue_status_closed: Erledigt default_issue_status_feedback: Feedback default_issue_status_in_progress: In Bearbeitung default_issue_status_new: Neu default_issue_status_rejected: Abgewiesen default_issue_status_resolved: Gelöst default_priority_high: Hoch default_priority_immediate: Sofort default_priority_low: Niedrig default_priority_normal: Normal default_priority_urgent: Dringend default_role_developer: Entwickler default_role_manager: Manager default_role_reporter: Reporter default_tracker_bug: Fehler default_tracker_feature: Feature default_tracker_support: Unterstützung description_all_columns: Alle Spalten description_available_columns: Verfügbare Spalten description_choose_project: Projekte description_filter: Filter description_issue_category_reassign: Neue Kategorie wählen description_message_content: Nachrichteninhalt description_notes: Kommentare description_project_scope: Suchbereich description_query_sort_criteria_attribute: Sortierattribut description_query_sort_criteria_direction: Sortierrichtung description_search: Suchfeld description_selected_columns: Ausgewählte Spalten description_user_mail_notification: Einstellungen für E-Mail-Benachrichtigung description_wiki_subpages_reassign: Neue übergeordnete Seite wählen enumeration_activities: Aktivitäten (Zeiterfassung) enumeration_doc_categories: Dokumentenkategorien enumeration_issue_priorities: Ticket-Prioritäten enumeration_system_activity: System-Aktivität error_attachment_too_big: Diese Datei kann nicht hochgeladen werden, da sie die maximale Dateigröße von (%{max_size}) überschreitet. error_can_not_archive_project: Dieses Projekt kann nicht archiviert werden. error_can_not_delete_custom_field: Kann das benutzerdefinierte Feld nicht löschen. error_can_not_delete_tracker_html: Dieser Tracker enthält Tickets und kann nicht gelöscht werden.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: Diese Rolle wird verwendet und kann nicht gelöscht werden. error_can_not_reopen_issue_on_closed_version: Das Ticket ist einer abgeschlossenen Version zugeordnet und kann daher nicht wieder geöffnet werden. error_can_t_load_default_data: "Die Standard-Konfiguration konnte nicht geladen werden: %{value}" error_issue_done_ratios_not_updated: Der Ticket-Fortschritt wurde nicht aktualisiert. error_issue_not_found_in_project: 'Das Ticket wurde nicht gefunden oder gehört nicht zu diesem Projekt.' error_no_default_issue_status: Es ist kein Status als Standard definiert. Bitte überprüfen Sie Ihre Konfiguration (unter "Administration -> Ticket-Status"). error_no_tracker_in_project: Diesem Projekt ist kein Tracker zugeordnet. Bitte überprüfen Sie die Projekteinstellungen. error_scm_annotate: "Der Eintrag existiert nicht oder kann nicht annotiert werden." error_scm_annotate_big_text_file: Der Eintrag kann nicht annotiert werden, da er die maximale Textlänge überschreitet. error_scm_command_failed: "Beim Zugriff auf das Repository ist ein Fehler aufgetreten: %{value}" error_scm_not_found: Eintrag und/oder Revision existiert nicht im Repository. error_session_expired: Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an. error_token_expired: "Dieser Link zum Zurücksetzen des Passworts ist nicht mehr gültig. Bitte versuchen Sie es erneut." error_unable_delete_issue_status: "Der Ticket-Status konnte nicht gelöscht werden. (%{value})" error_unable_to_connect: Fehler beim Verbinden (%{value}) error_workflow_copy_source: Bitte wählen Sie einen Quell-Tracker und eine Quell-Rolle. error_workflow_copy_target: Bitte wählen Sie die Ziel-Tracker und -Rollen. error_move_of_child_not_possible: "Untergeordnetes Ticket %{child} konnte nicht in das neue Projekt verschoben werden: %{errors}" field_account: Konto field_active: Aktiv field_activity: Aktivität field_admin: Administrator field_any_searchable: Durchsuchbarer Text field_assignable: Tickets können dieser Rolle zugewiesen werden field_assigned_to: Zugewiesen an field_assigned_to_role: Zuständigkeitsrolle field_attr_firstname: Vorname-Attribut field_attr_lastname: Name-Attribut field_attr_login: Mitgliedsname-Attribut field_attr_mail: E-Mail-Attribut field_auth_source: Authentifizierungs-Modus field_auth_source_ldap_filter: LDAP-Filter field_author: Autor field_base_dn: Base DN field_board_parent: Übergeordnetes Forum field_category: Kategorie field_column_names: Spalten field_closed_on: Geschlossen am field_comments: Kommentar field_comments_sorting: Kommentare anzeigen field_commit_logs_encoding: Kodierung der Commit-Nachrichten field_content: Inhalt field_core_fields: Standardwerte field_created_on: Angelegt field_cvs_module: Modul field_cvsroot: CVSROOT field_default_value: Standardwert field_default_status: Standardstatus field_delay: Pufferzeit field_description: Beschreibung field_done_ratio: "% erledigt" field_downloads: Downloads field_due_date: Abgabedatum field_editable: Bearbeitbar field_effective_date: Datum field_estimated_hours: Geschätzter Aufwand field_field_format: Format field_filename: Datei field_filesize: Größe field_firstname: Vorname field_fixed_version: Zielversion field_generate_password: Passwort generieren field_group_by: Gruppiere Ergebnisse nach field_hide_mail: E-Mail-Adresse nicht anzeigen field_homepage: Projekt-Homepage field_host: Host field_hours: Stunden field_identifier: Kennung field_inherit_members: Benutzer erben field_is_closed: Ticket geschlossen field_is_default: Standardeinstellung field_is_filter: Als Filter benutzen field_is_for_all: Für alle Projekte field_is_in_roadmap: In der Roadmap anzeigen field_is_member_of_group: Mitglied in Gruppe field_is_private: Privat field_is_public: Öffentlich field_is_required: Erforderlich field_issue: Ticket field_issue_to: Zugehöriges Ticket field_issues_visibility: Ticket-Sichtbarkeit field_language: Sprache field_last_login_on: Letzte Anmeldung field_lastname: Nachname field_login: Mitgliedsname field_mail: E-Mail field_mail_notification: Mailbenachrichtigung field_max_length: Maximale Länge field_member_of_group: Zuständigkeitsgruppe field_min_length: Minimale Länge field_multiple: Mehrere Werte field_must_change_passwd: Passwort bei der nächsten Anmeldung ändern field_name: Name field_new_password: Neues Passwort field_notes: Kommentare field_onthefly: On-the-fly-Benutzererstellung field_parent: Unterprojekt von field_parent_issue: Übergeordnetes Ticket field_parent_title: Übergeordnete Seite field_password: Passwort field_password_confirmation: Bestätigung field_path_to_repository: Pfad zum Repository field_port: Port field_possible_values: Mögliche Werte field_principal: Benutzer oder Gruppe field_priority: Priorität field_private_notes: Privater Kommentar field_project: Projekt field_redirect_existing_links: Existierende Links umleiten field_regexp: Regulärer Ausdruck field_repository_is_default: Haupt-Repository field_role: Rolle field_root_directory: Wurzelverzeichnis field_scm_path_encoding: Pfad-Kodierung field_searchable: Durchsuchbar field_sharing: Gemeinsame Verwendung field_spent_on: Datum field_start_date: Beginn field_start_page: Hauptseite field_status: Status field_subject: Thema field_subproject: Unterprojekt von field_summary: Zusammenfassung field_text: Textfeld field_time_entries: Aufwand buchen field_time_zone: Zeitzone field_timeout: Auszeit (in Sekunden) field_title: Titel field_tracker: Tracker field_type: Typ field_updated_on: Aktualisiert field_url: URL field_user: Benutzer field_users_visibility: Benutzer-Sichtbarkeit field_value: Wert field_version: Version field_visible: Sichtbar field_warn_on_leaving_unsaved: Vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen field_watcher: Beobachter field_default_assigned_to: Standardbearbeiter field_unique_id: Eindeutige ID field_estimated_remaining_hours: Geschätzter verbleibender Aufwand general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'German (Deutsch)' general_text_No: 'Nein' general_text_Yes: 'Ja' general_text_no: 'nein' general_text_yes: 'ja' label_activity: Aktivität label_add_another_file: Eine weitere Datei hinzufügen label_add_note: Kommentar hinzufügen label_add_projects: Projekt hinzufügen label_added: hinzugefügt label_added_time_by: "Von %{author} vor %{age} hinzugefügt" label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen, wenn der Benutzer der Zugewiesene ist label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen, wenn der Benutzer der Autor ist label_administration: Administration label_age: Geändert vor label_ago: vor label_all: alle label_all_words: Alle Wörter label_and_its_subprojects: "%{value} und dessen Unterprojekte" label_any: alle label_any_issues_in_project: irgendein Ticket im Projekt label_any_issues_not_in_project: irgendein Ticket nicht im Projekt label_api_access_key: API-Zugriffsschlüssel label_api_access_key_created_on: Der API-Zugriffsschlüssel wurde vor %{value} erstellt label_applied_status: Zugewiesener Status label_ascending: Aufsteigend label_ask: Nachfragen label_assigned_to_me_issues: Mir zugewiesene Tickets label_associated_revisions: Zugehörige Revisionen label_attachment: Datei label_attachment_delete: Anhang löschen label_attachment_new: Neue Datei label_attachment_plural: Dateien label_attribute: Attribut label_attribute_of_assigned_to: "%{name} des Bearbeiters" label_attribute_of_author: "%{name} des Autors" label_attribute_of_fixed_version: "%{name} der Zielversion" label_attribute_of_issue: "%{name} des Tickets" label_attribute_of_project: "%{name} des Projekts" label_attribute_of_user: "%{name} des Benutzers" label_attribute_plural: Attribute label_auth_source: Authentifizierungs-Modus label_auth_source_new: Neuer Authentifizierungs-Modus label_auth_source_plural: Authentifizierungs-Arten label_authentication: Authentifizierung label_between: zwischen label_blocked_by: Blockiert durch label_blocks: Blockiert label_board: Forum label_board_locked: Gesperrt label_board_new: Neues Forum label_board_plural: Foren label_board_sticky: Wichtig (immer oben) label_boolean: Boolean label_branch: Zweig label_bulk_edit_selected_issues: Alle ausgewählten Tickets bearbeiten label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten label_calendar: Kalender label_change_plural: Änderungen label_change_properties: Eigenschaften ändern label_change_status: Statuswechsel label_change_view_all: Alle Änderungen anzeigen label_changes_details: Details aller Änderungen label_changeset_plural: Changesets label_checkboxes: Checkboxen label_check_for_updates: Auf Updates prüfen label_child_revision: Nachfolger label_chronological_order: in zeitlicher Reihenfolge label_close_versions: Vollständige Versionen schließen label_closed_issues: geschlossen label_closed_issues_plural: geschlossen label_comment: Kommentar label_comment_add: Kommentar hinzufügen label_comment_added: Kommentar hinzugefügt label_comment_delete: Kommentar löschen label_comment_plural: Kommentare label_commits_per_author: Commits pro Autor label_commits_per_month: Commits pro Monat label_completed_versions: Abgeschlossene Versionen label_confirmation: Bestätigung label_contains: enthält label_copied: kopiert label_copied_from: Kopiert von label_copied_to: Kopiert nach label_copy_attachments: Anhänge kopieren label_copy_same_as_target: So wie das Ziel label_copy_source: Quelle label_copy_subtasks: Untergeordnetes Ticket kopieren label_copy_target: Ziel label_copy_workflow_from: Workflow kopieren von label_cross_project_descendants: Mit Unterprojekten label_cross_project_hierarchy: Mit Projekthierarchie label_cross_project_system: Mit allen Projekten label_cross_project_tree: Mit Projektbaum label_current_status: Gegenwärtiger Status label_current_version: Gegenwärtige Version label_custom_field: Benutzerdefiniertes Feld label_custom_field_new: Neues Feld label_custom_field_plural: Benutzerdefinierte Felder label_custom_field_select_type: Bitte wählen Sie den Objekttyp, zu dem das benutzerdefinierte Feld hinzugefügt werden soll label_date: Datum label_date_from: Von label_date_from_to: von %{start} bis %{end} label_date_range: Zeitraum label_date_to: Bis label_day_plural: Tage label_default: Standard label_default_columns: Standard-Spalten label_default_queries: for_all_projects: Für alle Projekte for_current_project: Für das aktuelle Projekt for_all_users: Für alle Benutzer for_this_user: Für diesen Benutzer label_deleted: gelöscht label_descending: Absteigend label_details: Details label_diff: Vergleich label_diff_inline: einspaltig label_diff_side_by_side: nebeneinander label_disabled: gesperrt label_display: Anzeige label_display_per_page: "Pro Seite: %{value}" label_display_used_statuses_only: Zeige nur Status an, die von diesem Tracker verwendet werden label_document: Dokument label_document_added: Dokument hinzugefügt label_document_new: Neues Dokument label_document_plural: Dokumente label_downloads_abbr: D/L label_drop_down_list: Dropdown-Liste label_duplicated_by: Dupliziert durch label_duplicates: Duplikat von label_edit_attachments: Angehängte Dateien bearbeiten label_enumeration_new: Neuer Wert label_enumerations: Aufzählungen label_environment: Umgebung label_equals: ist label_example: Beispiel label_export_options: "%{export_format} Export-Eigenschaften" label_export_to: "Auch abrufbar als:" label_f_hour: "%{value} Stunde" label_f_hour_plural: "%{value} Stunden" label_feed_plural: Feeds label_feeds_access_key: Atom-Zugriffsschlüssel label_feeds_access_key_created_on: "Atom-Zugriffsschlüssel vor %{value} erstellt" label_fields_permissions: Feldberechtigungen label_file_added: Datei hinzugefügt label_file_plural: Dateien label_filter_add: Filter hinzufügen label_filter_plural: Filter label_float: Fließkommazahl label_follows: Nachfolger von label_gantt: Gantt-Diagramm label_gantt_progress_line: Fortschrittslinie label_general: Allgemein label_generate_key: Generieren label_git_report_last_commit: Letzte Commit-Nachricht für Dateien und Verzeichnisse anzeigen label_greater_or_equal: ">=" label_group: Gruppe label_group_anonymous: Anonyme Benutzer label_group_new: Neue Gruppe label_group_non_member: Nichtmitglieder label_group_plural: Gruppen label_help: Hilfe label_hidden: Versteckt label_history: Historie label_home: Hauptseite label_in: in label_in_less_than: in weniger als label_in_more_than: in mehr als label_in_the_next_days: in den nächsten label_in_the_past_days: in den letzten label_incoming_emails: Eingehende E-Mails label_index_by_date: Seiten nach Datum sortiert label_index_by_title: Seiten nach Titel sortiert label_information: Information label_information_plural: Informationen label_integer: Zahl label_internal: Intern label_issue: Ticket label_issue_added: Ticket hinzugefügt label_issue_assigned_to_updated: Bearbeiter aktualisiert label_issue_category: Ticket-Kategorie label_issue_category_new: Neue Kategorie label_issue_category_plural: Ticket-Kategorien label_issue_new: Neues Ticket label_issue_note_added: Notiz hinzugefügt label_issue_plural: Tickets label_issue_priority_updated: Priorität aktualisiert label_issue_status: Ticket-Status label_issue_status_new: Neuer Status label_issue_status_plural: Ticket-Status label_issue_status_updated: Status aktualisiert label_issue_tracking: Tickets label_issue_updated: Ticket aktualisiert label_issue_view_all: Alle Tickets anzeigen label_issue_watchers: Beobachter label_issues_by: "Tickets pro %{value}" label_issues_visibility_all: Alle Tickets label_issues_visibility_own: Tickets, die der Benutzer erstellt hat oder die ihm zugewiesen sind label_issues_visibility_public: Alle öffentlichen Tickets label_item_position: "%{position}/%{count}" label_jump_to_a_project: Zu einem Projekt springen... label_language_based: Sprachabhängig label_last_changes: "%{count} letzte Änderungen" label_last_month: voriger Monat label_last_n_days: "die letzten %{count} Tage" label_last_n_weeks: letzte %{count} Wochen label_last_week: vorige Woche label_latest_compatible_version: Letzte kompatible Version label_latest_revision: Aktuellste Revision label_latest_revision_plural: Aktuellste Revisionen label_ldap: LDAP label_ldap_authentication: LDAP-Authentifizierung label_ldaps_verify_none: LDAPS (ohne Zertifikatsprüfung) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Es wird empfohlen, eine verschlüsselte LDAPS-Verbindung mit Zertifikatsprüfung zu verwenden, um Manipulationen während der Authentifizierung zu verhindern. label_less_or_equal: "<=" label_less_than_ago: vor weniger als label_link: Link label_link_copied_issue: Kopierte Tickets verlinken label_link_values_to: Werte mit URL verknüpfen label_list: Liste label_loading: Lade... label_logged_as: Angemeldet als label_login: Anmelden label_logout: Abmelden label_only: nur label_max_size: Maximale Größe label_me: ich label_member: Mitglied label_member_new: Neues Mitglied label_member_plural: Mitglieder label_message_last: Letzter Forenbeitrag label_message_new: Neues Thema label_message_plural: Forenbeiträge label_message_posted: Forenbeitrag hinzugefügt label_min_max_length: Länge (Min. - Max.) label_missing_api_access_key: Der API-Zugriffsschlüssel fehlt. label_missing_feeds_access_key: Der Atom-Zugriffsschlüssel fehlt. label_modified: geändert label_module_plural: Module label_month: Monat label_months_from: Monate ab label_more_than_ago: vor mehr als label_my_account: Mein Konto label_my_page: Meine Seite label_my_projects: Meine Projekte label_my_queries: Meine eigenen Abfragen label_new: Neu label_new_statuses_allowed: Neue Berechtigungen label_news: News label_news_added: News hinzugefügt label_news_comment_added: Kommentar zu einer News hinzugefügt label_news_latest: Letzte News label_news_new: News hinzufügen label_news_plural: News label_news_view_all: Alle News anzeigen label_next: Weiter label_no_change_option: (Keine Änderung) label_no_data: Nichts anzuzeigen label_no_preview: Keine Vorschau verfügbar label_no_preview_alternative_html: Keine Vorschau verfügbar. Sie können die Datei stattdessen %{link}. label_no_preview_download: herunterladen label_no_issues_in_project: keine Tickets im Projekt label_nobody: Niemand label_none: kein label_not_contains: enthält nicht label_not_equals: ist nicht label_open_issues: offen label_open_issues_plural: offen label_optional_description: Beschreibung (optional) label_options: Optionen label_overview: Übersicht label_parent_revision: Vorgänger label_password_lost: Passwort vergessen label_password_required: Bitte geben Sie Ihr Passwort ein label_permissions: Berechtigungen label_permissions_report: Berechtigungsübersicht label_plugins: Plugins label_precedes: Vorgänger von label_preferences: Präferenzen label_preview: Vorschau label_previous: Zurück label_principal_search: "Nach Benutzer oder Gruppe suchen:" label_profile: Profil label_project: Projekt label_project_all: Alle Projekte label_project_copy_notifications: Sende Mailbenachrichtigungen beim Kopieren des Projekts. label_project_latest: Neueste Projekte label_project_new: Neues Projekt label_project_plural: Projekte label_public_projects: Öffentliche Projekte label_query: Abfrage label_query_new: Neue Abfrage label_query_plural: Abfragen label_radio_buttons: Radio-Buttons label_read: Lesen... label_readonly: Nur-Lese-Zugriff label_register: Registrieren label_registered_on: Angemeldet am label_registration_activation_by_email: Kontoaktivierung durch E-Mail label_registration_automatic_activation: Automatische Kontoaktivierung label_registration_manual_activation: Manuelle Kontoaktivierung label_related_issues: Zugehörige Tickets label_relates_to: Beziehung mit label_relation_delete: Beziehung löschen label_relation_new: Neue Beziehung label_renamed: umbenannt label_reply_plural: Antworten label_report: Bericht label_report_plural: Berichte label_reported_issues: Erstellte Tickets label_repository: Repository label_repository_new: Neues Repository label_repository_plural: Repositories label_required: Erforderlich label_required_lower: erforderlich label_result_plural: Resultate label_reverse_chronological_order: in umgekehrter zeitlicher Reihenfolge label_revision: Revision label_revision_id: Revision %{value} label_revision_plural: Revisionen label_roadmap: Roadmap label_roadmap_due_in: "Fällig in %{value}" label_roadmap_no_issues: Keine Tickets für diese Version label_roadmap_overdue: "seit %{value} verspätet" label_role: Rolle label_role_and_permissions: Rollen und Rechte label_role_anonymous: Anonym label_role_new: Neue Rolle label_role_non_member: Nichtmitglied label_role_plural: Rollen label_scm: Versionskontrollsystem label_search: Suche label_search_for_watchers: Nach hinzufügbaren Beobachtern suchen label_search_titles_only: Nur Titel durchsuchen label_send_information: Sende Kontoinformationen an Benutzer label_send_test_email: Test-E-Mail senden label_session_expiration: Ende einer Sitzung label_settings: Konfiguration label_show_completed_versions: Abgeschlossene Versionen anzeigen label_sort: Sortierung label_sort_by: "Sortiert nach %{value}" label_spent_time: Aufgewendete Zeit label_statistics: Statistiken label_status_transitions: Statusänderungen label_stay_logged_in: Angemeldet bleiben label_string: Text label_subproject_new: Neues Unterprojekt label_subproject_plural: Unterprojekte label_subtask_plural: Untergeordnete Tickets label_tag: Markierung label_text: Langer Text label_theme: Design-Stil label_this_month: aktueller Monat label_this_week: aktuelle Woche label_this_year: aktuelles Jahr label_time_entry_plural: Benötigte Zeit label_time_tracking: Zeiterfassung label_today: heute label_topic_plural: Themen label_total: Gesamtzahl label_total_time: Gesamtzeit label_tracker: Tracker label_tracker_new: Neuer Tracker label_tracker_plural: Tracker label_unknown_plugin: Unbekanntes Plugin label_update_issue_done_ratios: Ticket-Fortschritt aktualisieren label_updated_time: "Vor %{value} aktualisiert" label_updated_time_by: "Von %{author} vor %{age} aktualisiert" label_used_by: Benutzt von label_user: Benutzer label_user_activity: "Aktivität von %{value}" label_user_anonymous: Anonym label_user_mail_no_self_notified: "Ich möchte nicht über Änderungen benachrichtigt werden, die ich selbst durchführe." label_user_mail_notify_about_high_priority_issues_html: "Benachrichtige mich zusätzlich über Aufgaben mit einer Priorität von %{prio} oder höher" label_user_mail_option_all: "Für alle Ereignisse in all meinen Projekten" label_user_mail_option_none: Keine Ereignisse label_user_mail_option_only_my_events: Nur für Angelegenheiten, die ich beobachte oder an denen ich beteiligt bin label_user_mail_option_selected: "Für alle Ereignisse in den ausgewählten Projekten" label_user_new: Neuer Benutzer label_user_plural: Benutzer label_user_search: "Nach Benutzer suchen:" label_users_visibility_all: Alle aktiven Benutzer label_users_visibility_members_of_visible_projects: Mitglieder von sichtbaren Projekten label_version: Version label_version_new: Neue Version label_version_plural: Versionen label_version_and_files: Versionen (%{count}) und Dateien label_version_sharing_descendants: Mit Unterprojekten label_version_sharing_hierarchy: Mit Projekthierarchie label_version_sharing_none: Nicht gemeinsam verwenden label_version_sharing_system: Mit allen Projekten label_version_sharing_tree: Mit Projektbaum label_view_all_revisions: Alle Revisionen anzeigen label_view_diff: Unterschiede anzeigen label_view_revisions: Revisionen anzeigen label_visibility_private: nur für mich label_visibility_public: für jeden Benutzer label_visibility_roles: nur für diese Rollen label_watched_issues: Beobachtete Tickets label_week: Woche label_wiki: Wiki label_wiki_content_added: Wiki-Seite hinzugefügt label_wiki_content_updated: Wiki-Seite aktualisiert label_wiki_edit: Wiki-Bearbeitung label_wiki_edit_plural: Wiki-Bearbeitungen label_wiki_page: Wiki-Seite label_wiki_page_plural: Wiki-Seiten label_wiki_page_new: Neue Wiki-Seite label_workflow: Workflow label_x_closed_issues_abbr: zero: 0 geschlossen one: 1 geschlossen other: "%{count} geschlossen" label_x_comments: zero: keine Kommentare one: 1 Kommentar other: "%{count} Kommentare" label_x_issues: zero: 0 Tickets one: 1 Ticket other: "%{count} Tickets" label_x_open_issues_abbr: zero: 0 offen one: 1 offen other: "%{count} offen" label_x_projects: zero: keine Projekte one: 1 Projekt other: "%{count} Projekte" label_year: Jahr label_yesterday: gestern label_default_query: Standardabfrage mail_body_account_activation_request: "Ein neuer Benutzer (%{value}) hat sich registriert. Sein Konto wartet auf Ihre Genehmigung:" mail_body_account_information: Ihre Konto-Informationen mail_body_account_information_external: "Sie können sich mit Ihrem Konto %{value} anmelden." mail_body_lost_password: 'Benutzen Sie den folgenden Link, um Ihr Passwort zu ändern:' mail_body_lost_password_validity: 'Bitte beachten Sie, dass mit Hilfe dieses Links das Passwort nur einmalig geändert werden kann.' mail_body_register: 'Um Ihr Konto zu aktivieren, benutzen Sie folgenden Link:' mail_body_reminder: "%{count} Tickets, die Ihnen zugewiesen sind, müssen in den nächsten %{days} Tagen abgegeben werden:" mail_body_wiki_content_added: "Die Wiki-Seite '%{id}' wurde von %{author} hinzugefügt." mail_body_wiki_content_updated: "Die Wiki-Seite '%{id}' wurde von %{author} aktualisiert." mail_subject_account_activation_request: "Antrag auf %{value} Kontoaktivierung" mail_subject_lost_password: "Ihr %{value} Passwort" mail_subject_register: "%{value} Kontoaktivierung" mail_subject_reminder: "%{count} Tickets müssen in den nächsten %{days} Tagen abgegeben werden" mail_subject_wiki_content_added: "Wiki-Seite '%{id}' hinzugefügt" mail_subject_wiki_content_updated: "Wiki-Seite '%{id}' erfolgreich aktualisiert" mail_subject_security_notification: "Sicherheitshinweis" mail_body_security_notification_change: "%{field} wurde geändert." mail_body_security_notification_change_to: "%{field} wurde zu %{value} geändert." mail_body_security_notification_add: "%{field} %{value} wurde hinzugefügt." mail_body_security_notification_remove: "%{field} %{value} wurde entfernt." mail_body_security_notification_notify_enabled: "E-Mail-Adresse %{value} erhält nun Benachrichtigungen." mail_body_security_notification_notify_disabled: "E-Mail-Adresse %{value} erhält keine Benachrichtigungen mehr." notice_account_activated: Ihr Konto ist aktiviert. Sie können sich jetzt anmelden. notice_account_deleted: Ihr Benutzerkonto wurde unwiderruflich gelöscht. notice_account_invalid_credentials: Benutzer oder Passwort ist ungültig. notice_account_lost_email_sent: Eine E-Mail mit Anweisungen, ein neues Passwort zu wählen, wurde Ihnen geschickt. notice_account_locked: Ihr Konto ist gesperrt. notice_account_not_activated_yet: Sie haben Ihr Konto noch nicht aktiviert. Wenn Sie die Aktivierungs-E-Mail erneut erhalten wollen, klicken Sie bitte hier. notice_account_password_updated: Passwort wurde erfolgreich aktualisiert. notice_account_pending: "Ihr Konto wurde erstellt und wartet jetzt auf die Genehmigung des Administrators." notice_account_register_done: Konto wurde erfolgreich angelegt. Eine E-Mail mit Hinweisen zur Kontoaktivierung wurde an %{email} gesendet. notice_account_updated: Konto wurde erfolgreich aktualisiert. notice_account_wrong_password: Falsches Passwort. notice_api_access_key_reseted: Ihr API-Zugriffsschlüssel wurde zurückgesetzt. notice_can_t_change_password: Dieses Konto verwendet eine externe Authentifizierungs-Quelle. Das Passwort kann nicht geändert werden. notice_default_data_loaded: Die Standard-Konfiguration wurde erfolgreich geladen. notice_email_error: "Beim Senden einer E-Mail ist ein Fehler aufgetreten (%{value})." notice_email_sent: "Eine E-Mail wurde an %{value} gesendet." notice_failed_to_save_issues: "%{count} von %{total} ausgewählten Tickets konnte(n) nicht gespeichert werden: %{ids}." notice_failed_to_save_members: "Benutzer konnte nicht gespeichert werden: %{errors}." notice_failed_to_save_time_entries: "%{count} von %{total} ausgewählten Zeiteinträgen konnte(n) nicht gespeichert werden: %{ids}" notice_feeds_access_key_reseted: Ihr Atom-Zugriffsschlüssel wurde zurückgesetzt. notice_file_not_found: Die angefragte Seite existiert nicht oder wurde entfernt. notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Tickets überschritten wurde (%{max}) notice_issue_done_ratios_updated: Der Ticket-Fortschritt wurde aktualisiert. notice_issue_successful_create: Ticket %{id} erstellt. notice_issue_update_conflict: Das Ticket wurde während Ihrer Bearbeitung von einem anderen Nutzer aktualisiert. notice_locking_conflict: Die Daten wurden von einem anderen Benutzer geändert. notice_new_password_must_be_different: Das neue Passwort muss sich vom dem aktuellen unterscheiden notice_not_authorized: Sie sind nicht berechtigt, auf diese Seite zuzugreifen. notice_not_authorized_archived_project: Das Projekt wurde archiviert und ist daher nicht verfügbar. notice_successful_connection: Verbindung erfolgreich. notice_successful_create: Erfolgreich angelegt notice_successful_delete: Erfolgreich gelöscht. notice_successful_update: Erfolgreich aktualisiert. notice_unable_delete_time_entry: Der Aufwand konnte nicht gelöscht werden. notice_unable_delete_version: Die Version konnte nicht gelöscht werden. notice_user_successful_create: Benutzer %{id} angelegt. permission_add_issue_notes: Kommentare hinzufügen permission_add_issue_watchers: Beobachter hinzufügen permission_add_issues: Tickets hinzufügen permission_add_messages: Forenbeiträge hinzufügen permission_add_project: Projekt erstellen permission_add_subprojects: Unterprojekte erstellen permission_add_documents: Dokumente hinzufügen permission_browse_repository: Repository ansehen permission_close_project: Schließen / erneutes Öffnen eines Projekts permission_comment_news: News kommentieren permission_commit_access: Commit-Zugriff permission_delete_issue_watchers: Beobachter löschen permission_delete_issues: Tickets löschen permission_delete_messages: Forenbeiträge löschen permission_delete_own_messages: Eigene Forenbeiträge löschen permission_delete_project: Projekt löschen permission_delete_wiki_pages: Wiki-Seiten löschen permission_delete_wiki_pages_attachments: Anhänge löschen permission_delete_documents: Dokumente löschen permission_edit_issue_notes: Kommentare bearbeiten permission_edit_issues: Tickets bearbeiten permission_edit_messages: Forenbeiträge bearbeiten permission_edit_own_issue_notes: Eigene Kommentare bearbeiten permission_edit_own_messages: Eigene Forenbeiträge bearbeiten permission_edit_own_time_entries: Selbst gebuchte Aufwände bearbeiten permission_edit_project: Projekt bearbeiten permission_edit_time_entries: Gebuchte Aufwände bearbeiten permission_edit_wiki_pages: Wiki-Seiten bearbeiten permission_edit_documents: Dokumente bearbeiten permission_export_wiki_pages: Wiki-Seiten exportieren permission_log_time: Aufwände buchen permission_manage_boards: Foren verwalten permission_manage_categories: Ticket-Kategorien verwalten permission_manage_files: Dateien verwalten permission_manage_issue_relations: Ticket-Beziehungen verwalten permission_manage_members: Mitglieder verwalten permission_view_news: News ansehen permission_manage_news: News verwalten permission_manage_project_activities: Aktivitäten (Zeiterfassung) verwalten permission_manage_public_queries: Öffentliche Filter verwalten permission_manage_related_issues: Zugehörige Tickets verwalten permission_manage_repository: Repository verwalten permission_manage_subtasks: Untergeordnete Tickets verwalten permission_manage_versions: Versionen verwalten permission_manage_wiki: Wiki verwalten permission_protect_wiki_pages: Wiki-Seiten schützen permission_rename_wiki_pages: Wiki-Seiten umbenennen permission_save_queries: Filter speichern permission_select_project_modules: Projektmodule auswählen permission_select_project_publicity: Projekt als privat oder öffentlich markieren permission_set_issues_private: Tickets als privat oder öffentlich markieren permission_set_notes_private: Kommentar als privat markieren permission_set_own_issues_private: Eigene Tickets als privat oder öffentlich markieren permission_view_calendar: Kalender ansehen permission_view_changesets: Changesets ansehen permission_view_documents: Dokumente ansehen permission_view_files: Dateien ansehen permission_view_gantt: Gantt-Diagramm ansehen permission_view_issue_watchers: Liste der Beobachter ansehen permission_view_issues: Tickets anzeigen permission_view_messages: Forenbeiträge ansehen permission_view_private_notes: Private Kommentare sehen permission_view_time_entries: Gebuchte Aufwände ansehen permission_view_wiki_edits: Wiki-Versionsgeschichte ansehen permission_view_wiki_pages: Wiki ansehen project_module_boards: Foren project_module_calendar: Kalender project_module_documents: Dokumente project_module_files: Dateien project_module_gantt: Gantt project_module_issue_tracking: Tickets project_module_news: News project_module_repository: Repository project_module_time_tracking: Zeiterfassung project_module_wiki: Wiki project_status_active: aktiv project_status_archived: archiviert project_status_closed: geschlossen setting_activity_days_default: Anzahl Tage pro Seite der Projekt-Aktivität setting_app_title: Applikationstitel setting_attachment_max_size: Maximale Dateigröße setting_autofetch_changesets: Changesets automatisch abrufen setting_autologin: Automatische Anmeldung läuft ab nach setting_cache_formatted_text: Formatierten Text im Cache speichern setting_commit_cross_project_ref: Erlauben, Tickets aller anderen Projekte zu referenzieren setting_commit_fix_keywords: Schlüsselwörter (Status) setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung setting_commit_logtime_enabled: Aktiviere Zeiterfassung via Commit-Nachricht setting_commit_ref_keywords: Schlüsselwörter (Beziehungen) setting_cross_project_issue_relations: Ticket-Beziehungen zwischen Projekten erlauben setting_cross_project_subtasks: Projektübergreifende untergeordnete Tickets erlauben setting_date_format: Datumsformat setting_default_issue_start_date_to_creation_date: Aktuelles Datum als Beginn für neue Tickets verwenden setting_default_language: Standardsprache setting_default_notification_option: Standard Benachrichtigungsoptionen setting_default_projects_modules: Standardmäßig aktivierte Module für neue Projekte setting_default_projects_public: Neue Projekte sind standardmäßig öffentlich setting_default_projects_tracker_ids: Standardmäßig aktivierte Tracker für neue Projekte setting_diff_max_lines_displayed: Maximale Anzahl anzuzeigender Diff-Zeilen setting_display_subprojects_issues: Tickets von Unterprojekten im Hauptprojekt anzeigen setting_emails_footer: E-Mail-Fußzeile setting_emails_header: E-Mail-Kopfzeile setting_enabled_scm: Aktivierte Versionskontrollsysteme setting_feeds_limit: Maximale Anzahl Einträge pro Atom-Feed setting_file_max_size_displayed: Maximale Größe inline angezeigter Textdateien setting_force_default_language_for_anonymous: Standardsprache für anonyme Benutzer erzwingen setting_force_default_language_for_loggedin: Standardsprache für angemeldete Benutzer erzwingen setting_gantt_items_limit: Maximale Anzahl von Tickets, die im Gantt-Diagramm angezeigt werden setting_gravatar_default: Standard-Gravatar-Bild setting_gravatar_enabled: Gravatar-Benutzerbilder benutzen setting_host_name: Hostname setting_issue_done_ratio: Berechne den Ticket-Fortschritt mittels setting_issue_done_ratio_issue_field: Ticket-Feld % erledigt setting_issue_done_ratio_issue_status: Ticket-Status setting_issue_group_assignment: Ticketzuweisung an Gruppen erlauben setting_issue_list_default_columns: Standard-Spalten in der Ticket-Auflistung setting_issues_export_limit: Maximale Anzahl Tickets bei CSV/PDF-Export setting_jsonp_enabled: JSONP Unterstützung aktivieren setting_link_copied_issue: Tickets beim Kopieren verlinken setting_login_required: Authentifizierung erforderlich setting_mail_from: E-Mail-Absender setting_mail_handler_api_enabled: Abruf eingehender E-Mails aktivieren setting_mail_handler_api_key: API-Schlüssel für eingehende E-Mails setting_sys_api_key: API-Schlüssel für Webservice zur Repository-Verwaltung setting_mail_handler_body_delimiters: "Schneide E-Mails nach einer dieser Zeilen ab" setting_mail_handler_excluded_filenames: Anhänge nach Namen ausschließen setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt setting_non_working_week_days: Arbeitsfreie Tage setting_password_min_length: Mindestlänge des Passworts setting_password_max_age: Erzwinge Passwortwechsel nach setting_lost_password: Zurücksetzen des Passworts per E-Mail erlauben setting_per_page_options: Objekte pro Seite setting_plain_text_mail: Nur reinen Text (kein HTML) senden setting_protocol: Protokoll setting_repositories_encodings: Kodierung von Anhängen und Repositories setting_repository_log_display_limit: Maximale Anzahl anzuzeigender Revisionen in der Historie einer Datei setting_rest_api_enabled: REST-Schnittstelle aktivieren setting_self_registration: Registrierung ermöglichen setting_show_custom_fields_on_registration: Benutzerdefinierte Felder bei der Registrierung abfragen setting_sequential_project_identifiers: Fortlaufende Projektkennungen generieren setting_session_lifetime: Längste Dauer einer Sitzung setting_session_timeout: Zeitüberschreitung bei Inaktivität setting_start_of_week: Wochenanfang setting_sys_api_enabled: Webservice zur Verwaltung der Repositories benutzen setting_text_formatting: Textformatierung setting_thumbnails_enabled: Vorschaubilder von Dateianhängen anzeigen setting_thumbnails_size: Größe der Vorschaubilder (in Pixeln) setting_time_format: Zeitformat setting_timespan_format: Format für Zeitspannen setting_unsubscribe: Benutzern erlauben, das eigene Benutzerkonto zu löschen setting_user_format: Benutzer-Anzeigeformat setting_welcome_text: Willkommenstext setting_wiki_compression: Wiki-Historie komprimieren status_active: aktiv status_locked: gesperrt status_registered: nicht aktivierte text_account_destroy_confirmation: "Möchten Sie wirklich fortfahren?\nIhr Benutzerkonto wird für immer gelöscht und kann nicht wiederhergestellt werden." text_allowed_queries_to_select: Nur für alle sichtbare Abfragen können ausgewählt werden text_are_you_sure: Sind Sie sicher? text_assign_time_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen text_caracters_maximum: "Max. %{count} Zeichen." text_caracters_minimum: "Muss mindestens %{count} Zeichen lang sein." text_comma_separated: Mehrere Werte erlaubt (durch Komma getrennt). text_convert_available: ImageMagick-Konvertierung verfügbar (optional) text_gs_available: ImageMagick PDF-Unterstützung verfügbar (optional) text_custom_field_possible_values_info: 'Eine Zeile pro Wert' text_default_administrator_account_changed: Administrator-Passwort geändert text_destroy_time_entries: Gebuchte Aufwände löschen text_destroy_time_entries_question: Es wurden bereits %{hours} Stunden auf dieses Ticket gebucht. Was soll mit den Aufwänden geschehen? text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu." text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet." text_file_repository_writable: Verzeichnis für Dateien beschreibbar text_git_repository_note: Repository hat kein Arbeitsverzeichnis (bare) und liegt lokal (z.B. /gitrepo, C:\gitrepo) text_issue_added: "Ticket %{id} wurde erstellt von %{author}." text_issue_category_destroy_assignments: Kategorie-Zuordnung entfernen text_issue_category_destroy_question: "Einige Tickets (%{count}) sind dieser Kategorie zugeordnet. Was möchten Sie tun?" text_issue_category_reassign_to: Tickets dieser Kategorie zuordnen text_issue_conflict_resolution_add_notes: Nur meine Kommentare hinzufügen und meine übrigen Änderungen verwerfen text_issue_conflict_resolution_cancel: Meine Kommentare und Änderungen verwerfen und %{link} neu anzeigen text_issue_conflict_resolution_overwrite: Meine Änderungen trotzdem übernehmen (bisherige Kommentare bleiben bestehen, weitere Änderungen werden möglicherweise überschrieben) text_issue_updated: "Ticket %{id} wurde aktualisiert von %{author}." text_issues_destroy_confirmation: 'Sind Sie sicher, dass Sie die ausgewählten Tickets löschen möchten?' text_issues_destroy_descendants_confirmation: Dies wird auch %{count} untergeordnete Tickets(s) löschen. text_issues_ref_in_commit_messages: Ticket-Beziehungen und -Status in Commit-Nachrichten text_journal_added: "%{label} %{value} wurde hinzugefügt" text_journal_changed: "%{label} wurde von %{old} zu %{new} geändert" text_journal_changed_no_detail: "%{label} aktualisiert" text_journal_deleted: "%{label} %{old} wurde gelöscht" text_journal_set_to: "%{label} wurde auf %{value} gesetzt" text_length_between: "Länge zwischen %{min} und %{max} Zeichen." text_line_separated: Mehrere Werte sind erlaubt (eine Zeile pro Wert). text_load_default_configuration: Standard-Konfiguration laden text_mercurial_repository_note: Lokales Repository (z. B. /hgrepo, C:\hgrepo) text_no_configuration_data: "Rollen, Tracker, Ticket-Status und Workflows wurden noch nicht konfiguriert.\nEs ist sehr zu empfehlen, die Standard-Konfiguration zu laden. Sobald sie geladen ist, können Sie diese abändern." text_own_membership_delete_confirmation: "Sie sind dabei, einige oder alle Ihre Berechtigungen zu entfernen. Es ist möglich, dass Sie danach das Projekt nicht mehr ansehen oder bearbeiten dürfen.\nSind Sie sicher, dass Sie dies tun möchten?" text_plugin_assets_writable: Verzeichnis für Plugin-Assets beschreibbar text_project_closed: Dieses Projekt ist geschlossen und kann nicht bearbeitet werden. text_project_destroy_confirmation: Sind Sie sicher, dass Sie das Projekt löschen wollen? text_project_close_confirmation: Sind Sie sicher, dass Sie das Projekt '%{value}' schließen wollen? text_project_reopen_confirmation: Sind Sie sicher, dass Sie das Projekt '%{value}' wieder öffnen wollen? text_project_archive_confirmation: Sind Sie sicher, dass Sie das Projekt '%{value}' archivieren wollen? text_project_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.
    Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' text_reassign_time_entries: 'Gebuchte Aufwände diesem Ticket zuweisen:' text_regexp_info: z. B. ^[A-Z0-9]+$ text_repository_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.
    Einmal gespeichert, kann die Kennung nicht mehr geändert werden.' text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Nachrichten des Repositories fest.\nBenutzer mit identischen Redmine- und Repository-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." text_minimagick_available: MiniMagick verfügbar (optional) text_scm_command: Kommando text_scm_command_not_available: SCM-Kommando ist nicht verfügbar. Bitte prüfen Sie die Einstellungen im Administrationspanel. text_scm_command_version: Version text_scm_config: Die SCM-Kommandos können in config/configuration.yml festgelegt werden. Bitte starten Sie die Applikation danach neu. text_scm_path_encoding_note: "Standard: UTF-8" text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine E-Mail-Benachrichtigung gesendet werden soll. text_select_project_modules: 'Bitte wählen Sie die Module aus, die in diesem Projekt aktiviert sein sollen:' text_session_expiration_settings: "Achtung: Änderungen können aktuelle Sitzungen beenden, Ihre eingeschlossen!" text_status_changed_by_changeset: "Status geändert durch Changeset %{value}." text_subprojects_destroy_warning: "Dessen Unterprojekte (%{value}) werden ebenfalls gelöscht." text_subversion_repository_note: 'Beispiele: file:///, http://, https://, svn://, svn+[tunnelscheme]://' text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Aufwände löschen möchten? text_time_logged_by_changeset: Angewendet in Changeset %{value}. text_tip_issue_begin_day: Ticket, das an diesem Tag beginnt text_tip_issue_begin_end_day: Ticket, das an diesem Tag beginnt und endet text_tip_issue_end_day: Ticket, das an diesem Tag endet text_tracker_no_workflow: Kein Workflow für diesen Tracker definiert. text_turning_multiple_off: Wenn Sie die Mehrfachauswahl deaktivieren, werden Felder mit Mehrfachauswahl bereinigt. Dadurch wird sichergestellt, dass lediglich ein Wert pro Feld ausgewählt ist. text_unallowed_characters: Nicht erlaubte Zeichen text_user_mail_option: "Für nicht ausgewählte Projekte werden Sie nur Benachrichtigungen für Dinge erhalten, die Sie beobachten oder an denen Sie beteiligt sind (z. B. Tickets, deren Autor Sie sind oder die Ihnen zugewiesen sind)." text_user_wrote: "%{value} schrieb:" text_user_wrote_in: "%{value} schrieb (%{link}):" text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. text_wiki_destroy_confirmation: Sind Sie sicher, dass Sie dieses Wiki mit sämtlichem Inhalt löschen möchten? text_wiki_page_destroy_children: Lösche alle Unterseiten text_wiki_page_destroy_question: "Diese Seite hat %{descendants} Unterseite(n). Was möchten Sie tun?" text_wiki_page_nullify_children: Verschiebe die Unterseiten auf die oberste Ebene text_wiki_page_reassign_children: Ordne die Unterseiten dieser Seite zu text_workflow_edit: Workflow zum Bearbeiten auswählen text_zoom_in: Ansicht vergrößern text_zoom_out: Ansicht verkleinern version_status_closed: abgeschlossen version_status_locked: gesperrt version_status_open: offen warning_attachments_not_saved: "%{count} Datei(en) konnten nicht gespeichert werden." label_search_attachments_yes: Namen und Beschreibungen von Anhängen durchsuchen label_search_attachments_no: Keine Anhänge suchen label_search_attachments_only: Nur Anhänge suchen label_search_open_issues_only: Nur offene Tickets field_address: E-Mail setting_max_additional_emails: Maximale Anzahl zusätzlicher E-Mail-Adressen label_email_address_plural: E-Mails label_email_address_add: E-Mail-Adresse hinzufügen label_enable_notifications: Benachrichtigungen aktivieren label_disable_notifications: Benachrichtigungen deaktivieren setting_search_results_per_page: Suchergebnisse pro Seite label_blank_value: leer permission_copy_issues: Tickets kopieren error_password_expired: Ihr Passwort ist abgelaufen oder der Administrator verlangt eine Passwortänderung. field_time_entries_visibility: Zeiten-Sichtbarkeit field_remote_ip: IP-Adresse label_parent_task_attributes: Eigenschaften übergeordneter Tickets label_parent_task_attributes_derived: Abgeleitet von untergeordneten Tickets label_parent_task_attributes_independent: Unabhängig von untergeordneten Tickets label_time_entries_visibility_all: Alle Zeitaufwände label_time_entries_visibility_own: Nur eigene Aufwände label_member_management: Mitglieder verwalten label_member_management_all_roles: Alle Rollen label_member_management_selected_roles_only: Nur diese Rollen label_total_spent_time: Aufgewendete Zeit aller Projekte anzeigen notice_import_finished: "%{count} Einträge wurden importiert" notice_import_finished_with_errors: "%{count} von %{total} Einträgen konnten nicht importiert werden" error_invalid_file_encoding: Die Datei ist keine gültige %{encoding}-kodierte Datei error_invalid_csv_file_or_settings: Die Datei ist keine CSV-Datei oder entspricht nicht den unten stehenden Einstellungen (%{value}) error_can_not_read_import_file: Beim Einlesen der Datei ist ein Fehler aufgetreten permission_import_issues: Tickets importieren label_import_issues: Tickets importieren label_select_file_to_import: Bitte wählen Sie eine Datei für den Import aus label_fields_separator: Trennzeichen label_fields_wrapper: Textqualifizierer label_encoding: Kodierung label_comma_char: Komma label_semi_colon_char: Semikolon label_quote_char: Anführungszeichen label_double_quote_char: Doppelte Anführungszeichen label_fields_mapping: Zuordnung der Felder label_relations_mapping: Zuordnung von Beziehungen label_file_content_preview: Inhaltsvorschau label_create_missing_values: Ergänze fehlende Werte button_import: Importieren field_total_estimated_hours: Summe des geschätzten Aufwands label_api: API label_total_plural: Summe label_assigned_issues: Zugewiesene Tickets label_field_format_enumeration: Eigenschaft/Wert-Paare label_f_hour_short: '%{value} h' field_default_version: Standard-Version error_attachment_extension_not_allowed: Der Dateityp %{extension} des Anhangs ist nicht zugelassen setting_attachment_extensions_allowed: Zugelassene Dateitypen setting_attachment_extensions_denied: Nicht zugelassene Dateitypen label_any_open_issues: irgendein offenes Ticket label_no_open_issues: kein offenes Ticket label_default_values_for_new_users: Standardwerte für neue Benutzer error_ldap_bind_credentials: Ungültiges LDAP-Konto oder -Passwort mail_body_settings_updated: ! 'Die folgenden Einstellungen wurden geändert:' label_relations: Beziehungen button_filter: Filter mail_body_password_updated: Ihr Passwort wurde geändert. error_no_tracker_allowed_for_new_issue_in_project: Für dieses Projekt wurden keine Tracker aktiviert. label_tracker_all: Alle Tracker label_new_project_issue_tab_enabled: Tab "Neues Ticket" anzeigen setting_new_item_menu_tab: Menü zum Anlegen neuer Objekte label_new_object_tab_enabled: Dropdown-Menü "+" anzeigen label_table_of_contents: Inhaltsverzeichnis error_no_projects_with_tracker_allowed_for_new_issue: Es gibt keine Projekte mit Trackern, für die sie Tickets erzeugen können field_textarea_font: Schriftart für Textbereiche label_font_default: Standardschrift label_font_monospace: Nichtproportionale Schrift label_font_proportional: Proportionale Schrift setting_commit_logs_formatting: Textformatierung für Commit-Nachrichten setting_mail_handler_enable_regex: Reguläre Ausdrücke verwenden error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Zeitbuchungen für Tickets, die gelöscht werden sind nicht möglich setting_timelog_required_fields: Erforderliche Felder für Zeitbuchungen label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Nur für Dinge, die ich beobachte oder die mir zugewiesen sind label_user_mail_option_only_owner: Nur für Dinge, die ich beobachte oder die mir gehören warning_fields_cleared_on_bulk_edit: Diese Änderungen werden eine automatische Löschung von ein oder mehreren Werten der ausgewählten Objekte zur Folge haben field_updated_by: Geändert von field_last_updated_by: Zuletzt geändert von field_full_width_layout: Layout mit voller Breite label_last_notes: Letzte Kommentare field_digest: Prüfsumme setting_close_duplicate_issues: Duplikate automatisch schließen error_exceeds_maximum_hours_per_day: Es können nicht mehr als %{max_hours} Stunden am selben Tag gebucht werden (%{logged_hours} Stunden wurden bereits gebucht) setting_time_entry_list_defaults: Standard-Spalten in der Zeiten-Auflistung setting_timelog_accept_0_hours: Akzeptiere Buchungen mit 0 Stunden setting_timelog_max_hours_per_day: Maximale Anzahl der täglich buchbaren Stunden pro Benutzer label_x_revisions: "%{count} Revisionen" error_can_not_delete_auth_source: Diese Authentifizierungsmethode ist in Verwendung und kann nicht gelöscht werden. text_login_required_html: Ohne erforderliche Authentifizierung sind öffentlichen Projekte und deren Inhalte ohne Anmeldung frei zugänglich. Sie können die verwendeten Berechtigungen anpassen. label_login_required_yes: "Ja" label_login_required_no: "Nein, anonymen Zugriff auf öffentliche Projekte erlauben" text_project_is_public_non_member: Öffentliche Projekte und deren Inhalte sind für alle angemeldeten Benutzer zugänglich. text_project_is_public_anonymous: Öffentliche Projekte und deren Inhalte sind ohne Anmeldung frei zugänglich. label_nothing_to_preview: Keine Vorschau vorhanden error_spent_on_future_date: Zeitbuchung nicht möglich. Das Datum liegt in der Zukunft setting_timelog_accept_future_dates: Akzeptiere Zeitbuchungen in der Zukunft label_delete_link_to_subtask: Beziehung löschen error_not_allowed_to_log_time_for_other_users: Sie sind nicht berechtigt, Aufwände für andere Benutzer zu buchen. permission_log_time_for_other_users: Aufwände für andere Benutzer buchen label_tomorrow: morgen label_next_week: nächste Woche label_next_month: nächster Monat text_role_no_workflow: Für diese Rolle ist kein Workflow definiert text_status_no_workflow: Kein Tracker verwendet diesen Status in den Workflows setting_mail_handler_preferred_body_part: Bevorzugter Teil von E-Mails im Multipart-Format setting_show_status_changes_in_mail_subject: Zeige Statusänderungen im Betreff der E-Mail-Benachrichtigung für Tickets label_inherited_from_parent_project: Vom Hauptprojekt geerbt label_inherited_from_group: Von der Gruppe %{name} geerbt label_trackers_description: Beschreibung des Trackers label_open_trackers_description: Beschreibung aller Tracker anzeigen label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Thema des übergeordneten Tickets permission_edit_own_issues: Eigene Tickets bearbeiten text_select_apply_tracker: Tracker wählen label_updated_issues: Aktualisierte Tickets text_avatar_server_config_html: Der aktuelle Avatar-Server ist %{url}. Die URL kann in config/configuration.yml angepasst werden. setting_gantt_months_limit: Maximal anzeigbare Monate im Gantt-Diagramm permission_import_time_entries: Zeitbuchungen importieren label_import_notifications: Versende E-Mail-Benachrichtigungen während des Imports field_recently_used_projects: Anzahl kürzlich verwendeter Projekte in der Projekt-Jump-Box label_optgroup_bookmarks: Lesezeichen label_optgroup_recents: Kürzlich verwendet button_project_bookmark: Lesezeichen hinzufügen button_project_bookmark_delete: Lesezeichen entfernen field_history_default_tab: Standard-Tab für Tickethistorie label_issue_history_properties: Eigenschaftsänderungen label_issue_history_notes: Notizen label_last_tab_visited: Zuletzt geöffneter Tab text_no_subject: kein Thema setting_password_required_char_classes: Für Passwörter benötigte Zeichenklassen label_password_char_class_uppercase: Großbuchstaben label_password_char_class_lowercase: Kleinbuchstaben label_password_char_class_digits: Ziffern label_password_char_class_special_chars: Sonderzeichen text_characters_must_contain: Muss enthalten %{character_classes}. label_starts_with: beginnt mit label_ends_with: endet mit label_issue_fixed_version_updated: Zielversion aktualisiert setting_project_list_defaults: Voreinstellungen Projektliste label_display_type: Ergebnisse anzeigen als label_display_type_list: Liste label_display_type_board: Karte label_my_bookmarks: Meine Lesezeichen label_import_time_entries: Zeitbuchungen importieren field_toolbar_language_options: Sprachen für Code-Hervorhebung, Editor-Symbolleiste label_assign_to_me: Mir zuweisen notice_issue_not_closable_by_open_tasks: Dieses Ticket kann nicht geschlossen werden da mindest ein untergeordnetes Ticket noch geöffnet ist. notice_issue_not_closable_by_blocking_issue: Dieses Ticket kann nicht geschlossen werden da es noch von mindestens einem geöffneten Ticket blockiert wird. notice_issue_not_reopenable_by_closed_parent_issue: Dieses Ticket kann nicht wiedereröffnet werden da das übergeordnete Ticket bereits geschlossen wurde. error_bulk_download_size_too_big: Das Herunterladen dieser Anhänge in aggregierter Form ist nicht möglich, da die Dateigröße des aggregierten Downloads die erlaubte Maximalgröße (%{max_size}) überschreitet. setting_bulk_download_max_size: Maximalgröße für den aggregierten Download von Anhängen label_download_all_attachments: Alle Dateien heruterladen error_attachments_too_many: Diese Datei kann nicht hochgeladen werden, da die maximale Anzahl (%{max_number_of_files}) an Dateien, die gleichzeitig angehängt werden können, überschritten wurde. setting_email_domains_allowed: Erlaubte E-Mail Domains setting_email_domains_denied: Gesperrte E-Mail Domains field_passwd_changed_on: Passwort zuletzt geändert label_import_users: Benutzer importieren label_days_to_html: "%{days} Tage bis %{date}" sudo_mode_new_info_html: Warum das ganze? Zu Ihrem Schutz bitten wir Sie Ihr Kennwort zu bestätigen, bevor Sie sicherheitsrelevante Einstellungen ändern. setting_twofa: Zwei-Faktor-Authentifizierung twofa__totp__name: Authentifizierungs-App twofa__totp__text_pairing_info_html: 'Bitte scannen Sie diesen QR-Code oder verwenden Sie den Klartext-Schlüssel in einer TOTP-kompatiblen Authentifizierungs-App (z.B. Google Authenticator, Authy, Duo Mobile). Anschließend geben Sie bitte den in der App generierten Code unten ein.' twofa__totp__label_plain_text_key: Klartext-Schlüssel twofa__totp__label_activate: 'Authentifizierungs-App aktivieren' twofa_currently_active: "Aktiv: %{twofa_scheme_name}" twofa_not_active: "Nicht aktiv" twofa_label_code: Code twofa_hint_disabled_html: Die Einstellung %{label} deaktiviert Zwei-Faktor-Authentifizierung für alle Nutzer und löscht verbundene Apps. twofa_hint_required_html: Die Einstellung %{label} fordert alle Nutzer bei ihrem nächsten Login dazu auf Zwei-Faktor-Authentifizierung einzurichten. twofa_label_setup: Zwei-Faktor-Authentifizierung einrichten twofa_label_deactivation_confirmation: Zwei-Faktor-Authentifizierung abschalten twofa_notice_select: "Bitte wählen Sie Ihr gewünschtes Schema für die Zwei-Faktor-Authentifizierung:" twofa_warning_require: Der Administrator fordert Sie dazu auf Zwei-Faktor-Authentifizierung einzurichten. twofa_activated: Zwei-Faktor-Authentifizierung erfolgreich eingerichtet. Es ist empfohlen hierzu Backup-Codes zu generieren. twofa_deactivated: Zwei-Faktor-Authentifizierung abgeschaltet. twofa_mail_body_security_notification_paired: "Zwei-Faktor-Authentifizierung per %{field} eingerichtet." twofa_mail_body_security_notification_unpaired: "Zwei-Faktor-Authentifizierung für Ihr Konto abgeschaltet." twofa_mail_body_backup_codes_generated: "Neue Backup-Codes für Zwei-Faktor-Authentifizierung generiert." twofa_mail_body_backup_code_used: "Ein Backup-Code für Zwei-Faktor-Authentifizierung ist verwendet worden." twofa_invalid_code: Der eingegebene Code ist ungültig oder abgelaufen. twofa_label_enter_otp: Bitte geben Sie Ihren Code für die Zwei-Faktor-Authentifizierung ein. twofa_too_many_tries: Zu viele Versuche. twofa_resend_code: Code erneut senden twofa_code_sent: Ein Code für die Zwei-Faktor-Authentifizierung wurde Ihnen zugesendet. twofa_generate_backup_codes: Backup-Codes generieren twofa_text_generate_backup_codes_confirmation: Im nächsten Schritt werden alle bestehenden Backup-Codes ungültig gemacht und neue generiert. Möchten Sie fortfahren? twofa_notice_backup_codes_generated: Ihre Backup-Codes wurden generiert. twofa_warning_backup_codes_generated_invalidated: Es wurden neue Backup-Codes generiert. Die bestehenden Codes vom %{time} sind nicht mehr gültig. twofa_label_backup_codes: Zwei-Faktor-Authentifizierung Backup-Codes twofa_text_backup_codes_hint: Sie können einen dieser Codes benutzen wenn Sie vorübergehend keinen Zugriff auf Ihren zweiten Faktor haben. Jeder Code kann nur ein Mal verwendet werden. Es wird empfohlen, diese Codes auszudrucken und sie an einem sicheren Ort zu verwahren. twofa_text_backup_codes_created_at: Backup-Codes generiert am %{datetime}. twofa_backup_codes_already_shown: Aus Sicherheitsgründen können Backup-Codes nicht erneut angezeigt werden. Bitte generieren Sie neue Codes falls nötig. label_optional: optional error_can_not_execute_macro_html: Fehler bei der Ausführung des Makros %{name} (%{error}) error_macro_does_not_accept_block: Dieses Makro akzeptiert keinen Textblock error_childpages_macro_no_argument: Ohne Angabe eines Arguments kann dieses Makro nur von Wikiseiten aus augerufen werden error_circular_inclusion: Zirkuläre Einbindung erkannt error_page_not_found: Seite nicht gefunden error_filename_required: Dateiname benötigt error_invalid_size_parameter: Ungültige Größenangabe error_attachment_not_found: Anhang %{name} nicht gefunden field_twofa_scheme: Zwei-Faktor-Authentifizierungsschema text_user_destroy_confirmation: "Wollen Sie diesen Benutzer inklusive aller Referenzen darauf wirklich löschen? Dies kann nicht rückgängig gemacht werden. Oftmals ist es besser, einen Benutzer lediglich zu sperren. Geben Sie bitte zur Bestätigung den Login des Benutzers (%{login}) ein." text_project_destroy_enter_identifier: "Zur Bestätigung bitte die Projektkennung (%{identifier}) eingeben." button_add_subtask: Untergeordnetes Ticket hinzufügen notice_invalid_watcher: 'Ungültiger Beobachter: Benutzer wird keine Benachrichtigungen erhalten, da er über keine Leseberechtigung für dieses Objekt verfügt.' button_fetch_changesets: Changesets abrufen permission_view_message_watchers: Beobachterliste einsehen permission_add_message_watchers: Beobachter hinzufügen permission_delete_message_watchers: Beobachter löschen label_message_watchers: Beobachter button_copy_link: Link kopieren error_invalid_authenticity_token: Ungültiges Authentizitätstoken für Formular. error_query_statement_invalid: Während der Ausführung einer Abfrage ist ein Fehler aufgetreten, dieser wurde protokolliert. Bitte melden Sie diesen Fehler an ihren Redmine-Administrator. permission_view_wiki_page_watchers: Beobachterliste einsehen permission_add_wiki_page_watchers: Beobachter hinzufügen permission_delete_wiki_page_watchers: Beobachter löschen label_wiki_page_watchers: Beobachter label_attachment_description: Dateibeschreibung error_no_data_in_file: Diese Datei beinhaltet keine Daten field_twofa_required: Zwei-Faktor-Authentifizierung erforderlich twofa_hint_optional_html: Die Einstellung %{label} läßt den Benutzer Zwei-Faktor-Authentifizierung optional verwenden, solange diese nicht durch eine Benutzergruppe erforderlich ist. twofa_text_group_required: Die Einstellung wird nur verwendet, wenn die globale Zwei-Faktor-Authentifizierung 'optional' ist. Aktuell ist Zwei-Faktor-Authentifizierung für alle Benutzer erforderlich. twofa_text_group_disabled: Die Einstellung wird nur verwendet, wenn die globale Zwei-Faktor-Authentifizierung 'optional' ist. Aktuell ist Zwei-Faktor-Authentifizierung deaktiviert. field_default_issue_query: Standard-Ticketabfrage text_all_migrations_have_been_run: Alle Datenbank-Migrationen wurden ausgeführt button_save_object: "%{object_name} speichern" button_edit_object: "%{object_name} bearbeiten" button_delete_object: "%{object_name} löschen" text_setting_config_change: Diese Verhalten kann in der Datei config/configuration.yml konfiguriert werden. Ein Neustart der Anwendung ist nach einer Änderung erforderlich. label_bulk_edit: Auswahl bearbeiten button_create_and_follow: Erstellen und Ticket anzeigen label_subtask: Untergeordnetes Ticket field_default_project_query: Standard-Projektabfrage label_required_administrators: erforderlich für Administratoren twofa_hint_required_administrators_html: Die Einstellung %{label} verhält sich wie 'optional', erfordert aber zusätzlich für alle Benutzer mit Administrator-Rechten die Aktivierung der Zwei-Faktor-Authentifizierung beim nächsten Login. label_auto_watch_on: Automatisch beobachten label_auto_watch_on_issue_contributed_to: Tickets, zu denen ich beigetragen habe mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. label_auto_watch_on_issue_created: Issues I created label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/el.yml000066400000000000000000002470331500112024600171570ustar00rootroot00000000000000# Greek translations for Ruby on Rails # by Vaggelis Typaldos (vtypal@gmail.com), Spyros Raptis (spirosrap@gmail.com) el: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y" day_names: [ΚυÏιακή, ΔευτέÏα, ΤÏίτη, ΤετάÏτη, Πέμπτη, ΠαÏασκευή, Σάββατο] abbr_day_names: [ΚυÏ, Δευ, ΤÏι, Τετ, Πεμ, ΠαÏ, Σαβ] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, ΙανουάÏιος, ΦεβÏουάÏιος, ΜάÏτιος, ΑπÏίλιος, Μάϊος, ΙοÏνιος, ΙοÏλιος, ΑÏγουστος, ΣεπτέμβÏιος, ΟκτώβÏιος, ÎοέμβÏιος, ΔεκέμβÏιος] abbr_month_names: [~, Ιαν, Φεβ, ΜαÏ, ΑπÏ, Μαϊ, Ιον, Ιολ, Αυγ, Σεπ, Οκτ, Îοε, Δεκ] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%m/%d/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "πμ" pm: "μμ" datetime: distance_in_words: half_a_minute: "μισό λεπτό" less_than_x_seconds: one: "λιγότεÏο από 1 δευτεÏόλεπτο" other: "λιγότεÏο από %{count} δευτεÏόλεπτα" x_seconds: one: "1 δευτεÏόλεπτο" other: "%{count} δευτεÏόλεπτα" less_than_x_minutes: one: "λιγότεÏο από ένα λεπτό" other: "λιγότεÏο από %{count} λεπτά" x_minutes: one: "1 λεπτό" other: "%{count} λεπτά" about_x_hours: one: "πεÏίπου 1 ÏŽÏα" other: "πεÏίπου %{count} ÏŽÏες" x_hours: one: "1 ÏŽÏα" other: "%{count} ÏŽÏες" x_days: one: "1 ημέÏα" other: "%{count} ημέÏες" about_x_months: one: "πεÏίπου 1 μήνα" other: "πεÏίπου %{count} μήνες" x_months: one: "1 μήνα" other: "%{count} μήνες" about_x_years: one: "πεÏίπου 1 χÏόνο" other: "πεÏίπου %{count} χÏόνια" over_x_years: one: "πάνω από 1 χÏόνο" other: "πάνω από %{count} χÏόνια" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: separator: "." delimiter: "" precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: KB tb: TB gb: GB byte: one: Byte other: Bytes mb: MB # Used in array.to_sentence. support: array: sentence_connector: "and" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "δεν πεÏιέχεται στη λίστα" exclusion: "έχει κατοχυÏωθεί" invalid: "είναι άκυÏο" confirmation: "δεν αντιστοιχεί με την επιβεβαίωση" accepted: "Ï€Ïέπει να γίνει αποδοχή" empty: "δε μποÏεί να είναι άδειο" blank: "δε μποÏεί να είναι κενό" too_long: "έχει πολλοÏÏ‚ (μέγ.επιτÏ. %{count} χαÏακτήÏες)" too_short: "έχει λίγους (ελάχ.επιτÏ. %{count} χαÏακτήÏες)" wrong_length: "δεν είναι σωστός ο αÏιθμός χαÏακτήÏων (Ï€Ïέπει να έχει %{count} χαÏακτήÏες)" taken: "έχει ήδη κατοχυÏωθεί" not_a_number: "δεν είναι αÏιθμός" not_a_date: "δεν είναι σωστή ημεÏομηνία" greater_than: "Ï€Ïέπει να είναι μεγαλÏτεÏο από %{count}" greater_than_or_equal_to: "Ï€Ïέπει να είναι μεγαλÏτεÏο από ή ίσο με %{count}" equal_to: "Ï€Ïέπει να είναι ίσον με %{count}" less_than: "Ï€Ïέπει να είναι μικÏότεÏη από %{count}" less_than_or_equal_to: "Ï€Ïέπει να είναι μικÏότεÏο από ή ίσο με %{count}" odd: "Ï€Ïέπει να είναι μονός" even: "Ï€Ïέπει να είναι ζυγός" greater_than_start_date: "Ï€Ïέπει να είναι αÏγότεÏα από την ημεÏομηνία έναÏξης" not_same_project: "δεν ανήκει στο ίδιο έÏγο" circular_dependency: "Αυτή η σχέση θα δημιουÏγήσει κυκλικές εξαÏτήσεις" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: ΠαÏακαλώ επιλέξτε general_text_No: 'Όχι' general_text_Yes: 'Îαι' general_text_no: 'όχι' general_text_yes: 'ναι' general_lang_name: 'Greek (Ελληνικά)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: Ο λογαÏιασμός ενημεÏώθηκε επιτυχώς. notice_account_invalid_credentials: ΆκυÏο όνομα χÏήστη ή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης notice_account_password_updated: Ο κωδικός Ï€Ïόσβασης ενημεÏώθηκε επιτυχώς. notice_account_wrong_password: Λάθος κωδικός Ï€Ïόσβασης notice_account_register_done: Ο λογαÏιασμός δημιουÏγήθηκε επιτυχώς. Για να ενεÏγοποιήσετε το λογαÏιασμό σας, πατήστε το σÏνδεσμο που σας έχει αποσταλεί με email. notice_can_t_change_password: Αυτός ο λογαÏιασμός χÏησιμοποιεί εξωτεÏική πηγή πιστοποίησης. Δεν είναι δυνατόν να αλλάξετε τον κωδικό Ï€Ïόσβασης. notice_account_lost_email_sent: Σας έχει αποσταλεί email με οδηγίες για την επιλογή νέου ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης. notice_account_activated: Ο λογαÏιασμός σας έχει ενεÏγοποιηθεί. ΤώÏα μποÏείτε να συνδεθείτε. notice_successful_create: Επιτυχής δημιουÏγία. notice_successful_update: Επιτυχής ενημέÏωση. notice_successful_delete: Επιτυχής διαγÏαφή. notice_successful_connection: Επιτυχής σÏνδεση. notice_file_not_found: Η σελίδα που ζητήσατε δεν υπάÏχει ή έχει αφαιÏεθεί. notice_locking_conflict: Τα δεδομένα έχουν ενημεÏωθεί από άλλο χÏήστη. notice_not_authorized: Δεν έχετε δικαίωμα Ï€Ïόσβασης σε αυτή τη σελίδα. notice_email_sent: "Ένα μήνυμα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου εστάλη στο %{value}" notice_email_error: "Σφάλμα κατά την αποστολή του μηνÏματος στο (%{value})" notice_feeds_access_key_reseted: Έγινε επαναφοÏά στο κλειδί Ï€Ïόσβασης Atom. notice_failed_to_save_issues: "Αποτυχία αποθήκευσης %{count} θεμα(των) από τα %{total} επιλεγμένα: %{ids}." notice_account_pending: "Ο λογαÏιασμός σας έχει δημιουÏγηθεί και είναι σε στάδιο έγκÏισης από τον διαχειÏιστή." notice_default_data_loaded: Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις φοÏτώθηκαν επιτυχώς. notice_unable_delete_version: ΑδÏνατον να διαγÏαφεί η έκδοση. error_can_t_load_default_data: "Οι Ï€Ïοεπιλεγμένες Ïυθμίσεις δεν μπόÏεσαν να φοÏτωθοÏν:: %{value}" error_scm_not_found: "Η εγγÏαφή ή η αναθεώÏηση δεν βÏέθηκε στο αποθετήÏιο." error_scm_command_failed: "ΠαÏουσιάστηκε σφάλμα κατά την Ï€Ïοσπάθεια Ï€Ïόσβασης στο αποθετήÏιο: %{value}" error_scm_annotate: "Η καταχώÏιση δεν υπάÏχει ή δεν μποÏεί να σχολιαστεί." error_issue_not_found_in_project: 'Το θέμα δεν βÏέθηκε ή δεν ανήκει σε αυτό το έÏγο' error_no_tracker_in_project: 'Δεν υπάÏχει ανιχνευτής για αυτό το έÏγο. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις του έÏγου.' error_no_default_issue_status: 'Δεν έχει οÏιστεί η Ï€Ïοεπιλογή κατάστασης θεμάτων. ΠαÏακαλώ ελέγξτε τις Ïυθμίσεις σας (Μεταβείτε στην "ΔιαχείÏιση -> Κατάσταση θεμάτων").' warning_attachments_not_saved: "%{count} αÏχείο(α) δε μποÏοÏν να αποθηκευτοÏν." mail_subject_lost_password: "Ο κωδικός σας %{value}" mail_body_lost_password: 'Για να αλλάξετε τον κωδικό Ï€Ïόσβασης, πατήστε τον ακόλουθο σÏνδεσμο:' mail_subject_register: "ΕνεÏγοποίηση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Ï‡Ïήστη %{value} " mail_body_register: 'Για να ενεÏγοποιήσετε το λογαÏιασμό σας, επιλέξτε τον ακόλουθο σÏνδεσμο:' mail_body_account_information_external: "ΜποÏείτε να χÏησιμοποιήσετε τον λογαÏιασμό %{value} για να συνδεθείτε." mail_body_account_information: ΠληÏοφοÏίες του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ mail_subject_account_activation_request: "αίτημα ενεÏγοποίησης λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï %{value}" mail_body_account_activation_request: "'Ένας νέος χÏήστης (%{value}) έχει εγγÏαφεί. Ο λογαÏιασμός είναι σε στάδιο αναμονής της έγκÏισης σας:" mail_subject_reminder: "%{count} θέμα(τα) με Ï€Ïοθεσμία στις επόμενες %{days} ημέÏες" mail_body_reminder: "%{count}θέμα(τα) που έχουν ανατεθεί σε σας, με Ï€Ïοθεσμία στις επόμενες %{days} ημέÏες:" mail_subject_wiki_content_added: "'Ï€Ïοστέθηκε η σελίδα wiki %{id}' " mail_body_wiki_content_added: "Η σελίδα wiki '%{id}' Ï€Ïοστέθηκε από τον %{author}." mail_subject_wiki_content_updated: "'ενημεÏώθηκε η σελίδα wiki %{id}' " mail_body_wiki_content_updated: "Η σελίδα wiki '%{id}' ενημεÏώθηκε από τον %{author}." field_name: Όνομα field_description: ΠεÏιγÏαφή field_summary: Συνοπτικά field_is_required: Απαιτείται field_firstname: Όνομα field_lastname: Επώνυμο field_mail: Email field_filename: ΑÏχείο field_filesize: Μέγεθος field_downloads: ΜεταφοÏτώσεις field_author: ΣυγγÏαφέας field_created_on: ΔημιουÏγήθηκε field_updated_on: ΕνημεÏώθηκε field_field_format: ΜοÏφοποίηση field_is_for_all: Για όλα τα έÏγα field_possible_values: Πιθανές τιμές field_regexp: Κανονική παÏάσταση field_min_length: Ελάχιστο μήκος field_max_length: Μέγιστο μήκος field_value: Τιμή field_category: ΚατηγοÏία field_title: Τίτλος field_project: ΈÏγο field_issue: Θέμα field_status: Κατάσταση field_notes: Σημειώσεις field_is_closed: Κλειστά θέματα field_is_default: ΠÏοεπιλεγμένη τιμή field_tracker: Ανιχνευτής field_subject: Θέμα field_due_date: ΠÏοθεσμία field_assigned_to: Ανάθεση σε field_priority: ΠÏοτεÏαιότητα field_fixed_version: Στόχος έκδοσης field_user: ΧÏήστης field_role: Ρόλος field_homepage: ΑÏχική σελίδα field_is_public: Δημόσιο field_parent: ΕπιμέÏους έÏγο του field_is_in_roadmap: ΠÏοβολή θεμάτων στο χάÏτη ποÏείας field_login: Όνομα χÏήστη field_mail_notification: Ειδοποιήσεις email field_admin: ΔιαχειÏιστής field_last_login_on: Τελευταία σÏνδεση field_language: Γλώσσα field_effective_date: ΗμεÏομηνία field_password: Κωδικός Ï€Ïόσβασης field_new_password: Îέος κωδικός Ï€Ïόσβασης field_password_confirmation: Επιβεβαίωση field_version: Έκδοση field_type: ΤÏπος field_host: Κόμβος field_port: ΘÏÏα field_account: ΛογαÏιασμός field_base_dn: Βάση DN field_attr_login: Ιδιότητα εισόδου field_attr_firstname: Ιδιότητα ονόματος field_attr_lastname: Ιδιότητα επωνÏμου field_attr_mail: Ιδιότητα email field_onthefly: Άμεση δημιουÏγία χÏήστη field_start_date: Εκκίνηση field_done_ratio: "% επιτεÏχθη" field_auth_source: ΤÏόπος πιστοποίησης field_hide_mail: ΑπόκÏυψη διεÏθυνσης email field_comments: Σχόλιο field_url: URL field_start_page: ΠÏώτη σελίδα field_subproject: ΕπιμέÏους έÏγο field_hours: ÎÏες field_activity: ΔÏαστηÏιότητα field_spent_on: ΗμεÏομηνία field_identifier: Στοιχείο αναγνώÏισης field_is_filter: ΧÏήση ως φίλτÏο field_issue_to: Σχετικά θέματα field_delay: ΚαθυστέÏηση field_assignable: Θέματα που μποÏοÏν να ανατεθοÏν σε αυτό το Ïόλο field_redirect_existing_links: ΑνακατεÏθυνση των Ï„Ïεχόντων συνδέσμων field_estimated_hours: Εκτιμώμενος χÏόνος field_column_names: Στήλες field_time_zone: ΩÏιαία ζώνη field_searchable: ΕÏευνήσιμο field_default_value: ΠÏοκαθοÏισμένη τιμή field_comments_sorting: ΠÏοβολή σχολίων field_parent_title: Γονική σελίδα field_editable: ΕπεξεÏγάσιμο field_watcher: ΠαÏατηÏητής field_content: ΠεÏιεχόμενο field_group_by: Ομαδικά αποτελέσματα από setting_app_title: Τίτλος εφαÏμογής setting_welcome_text: Κείμενο υποδοχής setting_default_language: ΠÏοεπιλεγμένη γλώσσα setting_login_required: Απαιτείται πιστοποίηση setting_self_registration: Αυτο-εγγÏαφή setting_attachment_max_size: Μέγ. μέγεθος συνημμένου setting_issues_export_limit: Θέματα πεÏιοÏÎ¹ÏƒÎ¼Î¿Ï ÎµÎ¾Î±Î³Ï‰Î³Î®Ï‚ setting_mail_from: Μετάδοση διεÏθυνσης email setting_plain_text_mail: Email Î±Ï€Î»Î¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï… (όχι HTML) setting_host_name: Όνομα κόμβου και διαδÏομή setting_text_formatting: ΜοÏφοποίηση κειμένου setting_wiki_compression: Συμπίεση ιστοÏÎ¹ÎºÎ¿Ï wiki setting_feeds_limit: Feed πεÏιοÏÎ¹ÏƒÎ¼Î¿Ï Ï€ÎµÏιεχομένου setting_default_projects_public: Τα νέα έÏγα έχουν Ï€Ïοεπιλεγεί ως δημόσια setting_autofetch_changesets: Αυτόματη λήψη commits setting_sys_api_enabled: ΕνεÏγοποίηση WS για διαχείÏιση αποθετηÏίου setting_commit_ref_keywords: ΑναφοÏά σε λέξεις-κλειδιά setting_commit_fix_keywords: ΚαθοÏισμός σε λέξεις-κλειδιά setting_autologin: Αυτόματη σÏνδεση setting_date_format: ΜοÏφή ημεÏομηνίας setting_time_format: ΜοÏφή ÏŽÏας setting_cross_project_issue_relations: ΕπιτÏέψτε συσχετισμό θεμάτων σε διασταÏÏωση-έÏγων setting_issue_list_default_columns: ΠÏοκαθοÏισμένες εμφανιζόμενες στήλες στη λίστα θεμάτων setting_emails_footer: Υποσέλιδο στα email setting_protocol: ΠÏωτόκολο setting_per_page_options: Αντικείμενα ανά σελίδα επιλογών setting_user_format: ΜοÏφή εμφάνισης χÏηστών setting_activity_days_default: ΗμέÏες που εμφανίζεται στη δÏαστηÏιότητα έÏγου setting_display_subprojects_issues: Εμφάνιση από Ï€Ïοεπιλογή θεμάτων επιμέÏους έÏγων στα κÏÏια έÏγα setting_enabled_scm: ΕνεÏγοποίηση SCM setting_mail_handler_api_enabled: ΕνεÏγοποίηση WS για εισεÏχόμενα email setting_mail_handler_api_key: κλειδί API setting_sequential_project_identifiers: ΔημιουÏγία διαδοχικών αναγνωÏιστικών έÏγου setting_gravatar_enabled: ΧÏήση Gravatar εικονιδίων χÏηστών setting_diff_max_lines_displayed: Μεγ.αÏιθμός εμφάνισης γÏαμμών diff setting_file_max_size_displayed: Μεγ.μέγεθος των αÏχείων Î±Ï€Î»Î¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï… που εμφανίζονται σε σειÏά setting_repository_log_display_limit: Μέγιστος αÏιθμός αναθεωÏήσεων που εμφανίζονται στο ιστοÏικό αÏχείου setting_password_min_length: Ελάχιστο μήκος ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης setting_new_project_user_role_id: Απόδοση Ïόλου σε χÏήστη μη-διαχειÏιστή όταν δημιουÏγεί ένα έÏγο permission_add_project: ΔημιουÏγία έÏγου permission_edit_project: ΕπεξεÏγασία έÏγου permission_select_project_modules: Επιλογή μονάδων έÏγου permission_manage_members: ΔιαχείÏιση μελών permission_manage_versions: ΔιαχείÏιση εκδόσεων permission_manage_categories: ΔιαχείÏιση κατηγοÏιών θεμάτων permission_add_issues: ΠÏοσθήκη θεμάτων permission_edit_issues: ΕπεξεÏγασία θεμάτων permission_manage_issue_relations: ΔιαχείÏιση συσχετισμών θεμάτων permission_add_issue_notes: ΠÏοσθήκη σημειώσεων permission_edit_issue_notes: ΕπεξεÏγασία σημειώσεων permission_edit_own_issue_notes: ΕπεξεÏγασία δικών μου σημειώσεων permission_delete_issues: ΔιαγÏαφή θεμάτων permission_manage_public_queries: ΔιαχείÏιση δημόσιων αναζητήσεων permission_save_queries: Αποθήκευση αναζητήσεων permission_view_gantt: ΠÏοβολή διαγÏάμματος gantt permission_view_calendar: ΠÏοβολή ημεÏολογίου permission_view_issue_watchers: ΠÏοβολή λίστας παÏατηÏητών permission_add_issue_watchers: ΠÏοσθήκη παÏατηÏητών permission_log_time: ΙστοÏικό χÏόνου που δαπανήθηκε permission_view_time_entries: ΠÏοβολή χÏόνου που δαπανήθηκε permission_edit_time_entries: ΕπεξεÏγασία ιστοÏÎ¹ÎºÎ¿Ï Ï‡Ïόνου permission_edit_own_time_entries: ΕπεξεÏγασία Î´Î¹ÎºÎ¿Ï Î¼Î¿Ï… ιστοÏÎ¹ÎºÎ¿Ï Ï‡Ïόνου permission_manage_news: ΔιαχείÏιση νέων permission_comment_news: Σχολιασμός νέων permission_view_documents: ΠÏοβολή εγγÏάφων permission_manage_files: ΔιαχείÏιση αÏχείων permission_view_files: ΠÏοβολή αÏχείων permission_manage_wiki: ΔιαχείÏιση wiki permission_rename_wiki_pages: Μετονομασία σελίδων wiki permission_delete_wiki_pages: ΔιαγÏαφή σελίδων wiki permission_view_wiki_pages: ΠÏοβολή wiki permission_view_wiki_edits: ΠÏοβολή ιστοÏÎ¹ÎºÎ¿Ï wiki permission_edit_wiki_pages: ΕπεξεÏγασία σελίδων wiki permission_delete_wiki_pages_attachments: ΔιαγÏαφή συνημμένων permission_protect_wiki_pages: ΠÏοστασία σελίδων wiki permission_manage_repository: ΔιαχείÏιση αποθετηÏίου permission_browse_repository: ΔιαχείÏιση εγγÏάφων permission_view_changesets: ΠÏοβολή changesets permission_commit_access: ΠÏόσβαση commit permission_manage_boards: ΔιαχείÏιση πινάκων συζητήσεων permission_view_messages: ΠÏοβολή μηνυμάτων permission_add_messages: Αποστολή μηνυμάτων permission_edit_messages: ΕπεξεÏγασία μηνυμάτων permission_edit_own_messages: ΕπεξεÏγασία δικών μου μηνυμάτων permission_delete_messages: ΔιαγÏαφή μηνυμάτων permission_delete_own_messages: ΔιαγÏαφή δικών μου μηνυμάτων project_module_issue_tracking: Ανίχνευση θεμάτων project_module_time_tracking: Ανίχνευση χÏόνου project_module_news: Îέα project_module_documents: ΈγγÏαφα project_module_files: ΑÏχεία project_module_wiki: Wiki project_module_repository: ΑποθετήÏιο project_module_boards: Πίνακες συζητήσεων label_user: ΧÏήστης label_user_plural: ΧÏήστες label_user_new: Îέος ΧÏήστης label_project: ΈÏγο label_project_new: Îέο έÏγο label_project_plural: ΈÏγα label_x_projects: zero: κανένα έÏγο one: 1 έÏγο other: "%{count} έÏγα" label_project_all: Όλα τα έÏγα label_project_latest: Τελευταία έÏγα label_issue: Θέμα label_issue_new: Îέο θέμα label_issue_plural: Θέματα label_issue_view_all: ΠÏοβολή όλων των θεμάτων label_issues_by: "Θέματα του %{value}" label_issue_added: Το θέμα Ï€Ïοστέθηκε label_issue_updated: Το θέμα ενημεÏώθηκε label_document: ΈγγÏαφο label_document_new: Îέο έγγÏαφο label_document_plural: ΈγγÏαφα label_document_added: ΈγγÏαφο Ï€Ïοστέθηκε label_role: Ρόλος label_role_plural: Ρόλοι label_role_new: Îέος Ïόλος label_role_and_permissions: Ρόλοι και άδειες label_member: Μέλος label_member_new: Îέο μέλος label_member_plural: Μέλη label_tracker: Ανιχνευτής label_tracker_plural: Ανιχνευτές label_tracker_new: Îέος Ανιχνευτής label_workflow: Ροή εÏγασίας label_issue_status: Κατάσταση θέματος label_issue_status_plural: Κατάσταση θέματος label_issue_status_new: Îέα κατάσταση label_issue_category: ΚατηγοÏία θέματος label_issue_category_plural: ΚατηγοÏίες θεμάτων label_issue_category_new: Îέα κατηγοÏία label_custom_field: ΠÏοσαÏμοσμένο πεδίο label_custom_field_plural: ΠÏοσαÏμοσμένα πεδία label_custom_field_new: Îέο Ï€ÏοσαÏμοσμένο πεδίο label_enumerations: ΑπαÏιθμήσεις label_enumeration_new: Îέα τιμή label_information: ΠληÏοφοÏία label_information_plural: ΠληÏοφοÏίες label_register: ΕγγÏαφή label_password_lost: Ανάκτηση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης label_home: ΑÏχική σελίδα label_my_page: Η σελίδα μου label_my_account: Ο λογαÏιασμός μου label_my_projects: Τα έÏγα μου label_administration: ΔιαχείÏιση label_login: ΣÏνδεση label_logout: ΑποσÏνδεση label_help: Βοήθεια label_reported_issues: Εισηγμένα θέματα label_assigned_to_me_issues: Θέματα που έχουν ανατεθεί σε μένα label_registered_on: ΕγγÏάφηκε την label_activity: ΔÏαστηÏιότητα label_user_activity: "δÏαστηÏιότητα του %{value}" label_new: Îέο label_logged_as: ΣÏνδεδεμένος ως label_environment: ΠεÏιβάλλον label_authentication: Πιστοποίηση label_auth_source: ΤÏόπος πιστοποίησης label_auth_source_new: Îέος Ï„Ïόπος πιστοποίησης label_auth_source_plural: ΤÏόποι πιστοποίησης label_subproject_plural: ΕπιμέÏους έÏγα label_and_its_subprojects: "%{value} και τα επιμέÏους έÏγα του" label_min_max_length: Ελάχ. - Μέγ. μήκος label_list: Λίστα label_date: ΗμεÏομηνία label_integer: ΑκέÏαιος label_float: ΑÏιθμός κινητής υποδιαστολής label_boolean: Λογικός label_string: Κείμενο label_text: ΜακÏοσκελές κείμενο label_attribute: Ιδιότητα label_attribute_plural: Ιδιότητες label_no_data: Δεν υπάÏχουν δεδομένα label_change_status: Αλλαγή κατάστασης label_history: ΙστοÏικό label_attachment: ΑÏχείο label_attachment_new: Îέο αÏχείο label_attachment_delete: ΔιαγÏαφή αÏχείου label_attachment_plural: ΑÏχεία label_file_added: Το αÏχείο Ï€Ïοστέθηκε label_report: ΑναφοÏά label_report_plural: ΑναφοÏές label_news: Îέα label_news_new: ΠÏοσθήκη νέων label_news_plural: Îέα label_news_latest: Τελευταία νέα label_news_view_all: ΠÏοβολή όλων των νέων label_news_added: Τα νέα Ï€Ïοστέθηκαν label_settings: Ρυθμίσεις label_overview: Επισκόπηση label_version: Έκδοση label_version_new: Îέα έκδοση label_version_plural: Εκδόσεις label_confirmation: Επιβεβαίωση label_export_to: 'Επίσης διαθέσιμο σε:' label_read: Διάβασε... label_public_projects: Δημόσια έÏγα label_open_issues: Ανοικτό label_open_issues_plural: Ανοικτά label_closed_issues: Κλειστό label_closed_issues_plural: Κλειστά label_x_open_issues_abbr: zero: 0 ανοικτά one: 1 ανοικτό other: "%{count} ανοικτά" label_x_closed_issues_abbr: zero: 0 κλειστά one: 1 κλειστό other: "%{count} κλειστά" label_total: ΣÏνολο label_permissions: Άδειες label_current_status: ΤÏέχουσα κατάσταση label_new_statuses_allowed: Îέες καταστάσεις επιτÏέπονται label_all: όλα label_none: κανένα label_nobody: κανείς label_next: Επόμενο label_previous: ΠÏοηγοÏμενο label_used_by: ΧÏησιμοποιήθηκε από label_details: ΛεπτομέÏειες label_add_note: ΠÏοσθήκη σημείωσης label_calendar: ΗμεÏολόγιο label_months_from: μηνών από label_gantt: Gantt label_internal: ΕσωτεÏικό label_last_changes: "Τελευταίες %{count} αλλαγές" label_change_view_all: ΠÏοβολή όλων των αλλαγών label_comment: Σχόλιο label_comment_plural: Σχόλια label_x_comments: zero: δεν υπάÏχουν σχόλια one: 1 σχόλιο other: "%{count} σχόλια" label_comment_add: ΠÏοσθήκη σχολίου label_comment_added: Τα σχόλια Ï€Ïοστέθηκαν label_comment_delete: ΔιαγÏαφή σχολίων label_query: ΠÏοσαÏμοσμένη αναζήτηση label_query_plural: ΠÏοσαÏμοσμένες αναζητήσεις label_query_new: Îέα αναζήτηση label_filter_add: ΠÏοσθήκη φίλτÏου label_filter_plural: ΦίλτÏα label_equals: είναι label_not_equals: δεν είναι label_in_less_than: μικÏότεÏο από label_in_more_than: πεÏισσότεÏο από label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: σε label_today: σήμεÏα label_yesterday: χθες label_this_week: αυτή την εβδομάδα label_last_week: την Ï€ÏοηγοÏμενη εβδομάδα label_last_n_days: "τελευταίες %{count} μέÏες" label_this_month: αυτό το μήνα label_last_month: τον Ï€ÏοηγοÏμενο μήνα label_this_year: αυτό το χÏόνο label_date_range: ΧÏονικό διάστημα label_less_than_ago: σε λιγότεÏο από ημέÏες Ï€Ïιν label_more_than_ago: σε πεÏισσότεÏο από ημέÏες Ï€Ïιν label_ago: ημέÏες Ï€Ïιν label_contains: πεÏιέχει label_not_contains: δεν πεÏιέχει label_day_plural: μέÏες label_repository: ΑποθετήÏιο label_repository_plural: ΑποθετήÏια label_branch: Branch label_tag: Tag label_revision: ΑναθεώÏηση label_revision_plural: ΑναθεωÏήσεις label_associated_revisions: ΣυνεταιÏικές αναθεωÏήσεις label_added: Ï€Ïοστέθηκε label_modified: Ï„Ïοποποιήθηκε label_copied: αντιγÏάφηκε label_renamed: μετονομάστηκε label_deleted: διαγÏάφηκε label_latest_revision: Τελευταία αναθεώÏιση label_latest_revision_plural: Τελευταίες αναθεωÏήσεις label_view_revisions: ΠÏοβολή αναθεωÏήσεων label_view_all_revisions: ΠÏοβολή όλων των αναθεωÏήσεων label_max_size: Μέγιστο μέγεθος label_roadmap: ΧάÏτης ποÏείας label_roadmap_due_in: "ΠÏοθεσμία σε %{value}" label_roadmap_overdue: "%{value} καθυστεÏημένο" label_roadmap_no_issues: Δεν υπάÏχουν θέματα για αυτή την έκδοση label_search: Αναζήτηση label_result_plural: Αποτελέσματα label_all_words: Όλες οι λέξεις label_wiki: Wiki label_wiki_edit: ΕπεξεÏγασία wiki label_wiki_edit_plural: ΕπεξεÏγασία wiki label_wiki_page: Σελίδα Wiki label_wiki_page_plural: Σελίδες Wiki label_index_by_title: Δείκτης ανά τίτλο label_index_by_date: Δείκτης ανά ημεÏομηνία label_current_version: ΤÏέχουσα έκδοση label_preview: ΠÏοεπισκόπηση label_feed_plural: Feeds label_changes_details: ΛεπτομέÏειες όλων των αλλαγών label_issue_tracking: Ανίχνευση θεμάτων label_spent_time: Δαπανημένος χÏόνος label_f_hour: "%{value} ÏŽÏα" label_f_hour_plural: "%{value} ÏŽÏες" label_time_tracking: Ανίχνευση χÏόνου label_change_plural: Αλλαγές label_statistics: Στατιστικά label_commits_per_month: Commits ανά μήνα label_commits_per_author: Commits ανά συγγÏαφέα label_view_diff: ΠÏοβολή διαφοÏών label_diff_inline: σε σειÏά label_diff_side_by_side: αντικÏυστά label_options: Επιλογές label_copy_workflow_from: ΑντιγÏαφή Ïοής εÏγασίας από label_permissions_report: Συνοπτικός πίνακας αδειών label_watched_issues: Θέματα υπό παÏακολοÏθηση label_related_issues: Σχετικά θέματα label_applied_status: ΕφαÏμογή κατάστασης label_loading: ΦοÏτώνεται... label_relation_new: Îέα συσχέτιση label_relation_delete: ΔιαγÏαφή συσχέτισης label_relates_to: σχετικό με label_duplicates: αντίγÏαφα label_duplicated_by: αντιγÏάφηκε από label_blocks: φÏαγές label_blocked_by: φÏαγή από τον label_precedes: Ï€Ïοηγείται label_follows: ακολουθεί label_stay_logged_in: ΠαÏαμονή σÏνδεσης label_disabled: απενεÏγοποιημένη label_show_completed_versions: ΠÏοβολή ολοκληÏωμένων εκδόσεων label_me: εγώ label_board: ΦόÏουμ label_board_new: Îέο φόÏουμ label_board_plural: ΦόÏουμ label_topic_plural: Θέματα label_message_plural: ΜηνÏματα label_message_last: Τελευταίο μήνυμα label_message_new: Îέο μήνυμα label_message_posted: Το μήνυμα Ï€Ïοστέθηκε label_reply_plural: Απαντήσεις label_send_information: Αποστολή πληÏοφοÏιών λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÏ„Î¿ χÏήστη label_year: Έτος label_month: Μήνας label_week: Εβδομάδα label_date_from: Από label_date_to: Έως label_language_based: Με βάση τη γλώσσα του χÏήστη label_sort_by: "Ταξινόμηση ανά %{value}" label_send_test_email: Αποστολή Î´Î¿ÎºÎ¹Î¼Î±ÏƒÏ„Î¹ÎºÎ¿Ï email label_feeds_access_key_created_on: "το κλειδί Ï€Ïόσβασης Atom δημιουÏγήθηκε Ï€Ïιν από %{value}" label_module_plural: Μονάδες label_added_time_by: "ΠÏοστέθηκε από τον %{author} Ï€Ïιν από %{age}" label_updated_time_by: "ΕνημεÏώθηκε από τον %{author} Ï€Ïιν από %{age}" label_updated_time: "ΕνημεÏώθηκε Ï€Ïιν από %{value}" label_jump_to_a_project: Μεταβείτε σε ένα έÏγο... label_file_plural: ΑÏχεία label_changeset_plural: Changesets label_default_columns: ΠÏοεπιλεγμένες στήλες label_no_change_option: (Δεν υπάÏχουν αλλαγές) label_bulk_edit_selected_issues: Μαζική επεξεÏγασία επιλεγμένων θεμάτων label_theme: Θέμα label_default: ΠÏοεπιλογή label_search_titles_only: Αναζήτηση τίτλων μόνο label_user_mail_option_all: "Για όλες τις εξελίξεις σε όλα τα έÏγα μου" label_user_mail_option_selected: "Για όλες τις εξελίξεις μόνο στα επιλεγμένα έÏγα..." label_user_mail_no_self_notified: "Δεν θέλω να ειδοποιοÏμαι για τις δικές μου αλλαγές" label_registration_activation_by_email: ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î¼Îµ email label_registration_manual_activation: χειÏοκίνητη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï label_registration_automatic_activation: αυτόματη ενεÏγοποίηση λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï label_display_per_page: "Ανά σελίδα: %{value}" label_age: Ηλικία label_change_properties: Αλλαγή ιδιοτήτων label_general: Γενικά label_scm: SCM label_plugins: Plugins label_ldap_authentication: Πιστοποίηση LDAP label_downloads_abbr: Μ/Φ label_optional_description: ΠÏοαιÏετική πεÏιγÏαφή label_add_another_file: ΠÏοσθήκη άλλου αÏχείου label_preferences: ΠÏοτιμήσεις label_chronological_order: Κατά χÏονολογική σειÏά label_reverse_chronological_order: Κατά αντίστÏοφη χÏονολογική σειÏά label_incoming_emails: ΕισεÏχόμενα email label_generate_key: ΔημιουÏγία ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï label_issue_watchers: ΠαÏατηÏητές label_example: ΠαÏάδειγμα label_display: ΠÏοβολή label_sort: Ταξινόμηση label_ascending: ΑÏξουσα label_descending: Φθίνουσα label_date_from_to: Από %{start} έως %{end} label_wiki_content_added: Η σελίδα Wiki Ï€Ïοστέθηκε label_wiki_content_updated: Η σελίδα Wiki ενημεÏώθηκε button_login: ΣÏνδεση button_submit: Αποστολή button_save: Αποθήκευση button_check_all: Επιλογή όλων button_uncheck_all: Αποεπιλογή όλων button_delete: ΔιαγÏαφή button_create: ΔημιουÏγία button_create_and_continue: ΔημιουÏγία και συνέχεια button_test: Τεστ button_edit: ΕπεξεÏγασία button_add: ΠÏοσθήκη button_change: Αλλαγή button_apply: ΕφαÏμογή button_clear: ΚαθαÏισμός button_lock: Κλείδωμα button_unlock: Ξεκλείδωμα button_download: ΜεταφόÏτωση button_list: Λίστα button_view: ΠÏοβολή button_move: Μετακίνηση button_back: Πίσω button_cancel: ΑκÏÏωση button_activate: ΕνεÏγοποίηση button_sort: Ταξινόμηση button_log_time: ΙστοÏικό χÏόνου button_rollback: ΕπαναφοÏά σε αυτή την έκδοση button_watch: ΠαÏακολοÏθηση button_unwatch: ΑναίÏεση παÏακολοÏθησης button_reply: Απάντηση button_archive: ΑÏχειοθέτηση button_unarchive: ΑναίÏεση αÏχειοθέτησης button_reset: ΕπαναφοÏά button_rename: Μετονομασία button_change_password: Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης button_copy: ΑντιγÏαφή button_annotate: Σχολιασμός button_update: ΕνημέÏωση button_configure: ΡÏθμιση button_quote: ΠαÏάθεση status_active: ενεÏγό(Ï‚)/ή status_registered: εγεγγÏαμμένο(Ï‚)/η status_locked: κλειδωμένο(Ï‚)/η text_select_mail_notifications: Επιλογή ενεÏγειών για τις οποίες θα Ï€Ïέπει να αποσταλεί ειδοποίηση με email. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Είστε σίγουÏοι ότι θέλετε να διαγÏάψετε αυτό το έÏγο και τα σχετικά δεδομένα του; text_subprojects_destroy_warning: "Επίσης το(α) επιμέÏους έÏγο(α): %{value} θα διαγÏαφοÏν." text_workflow_edit: Επιλέξτε ένα Ïόλο και έναν ανιχνευτή για να επεξεÏγαστείτε τη Ïοή εÏγασίας text_are_you_sure: Είστε σίγουÏος ; text_tip_issue_begin_day: καθήκοντα που ξεκινάνε σήμεÏα text_tip_issue_end_day: καθήκοντα που τελειώνουν σήμεÏα text_tip_issue_begin_end_day: καθήκοντα που ξεκινάνε και τελειώνουν σήμεÏα text_caracters_maximum: "μέγιστος αÏιθμός %{count} χαÏακτήÏες." text_caracters_minimum: "ΠÏέπει να πεÏιέχει τουλάχιστον %{count} χαÏακτήÏες." text_length_between: "Μήκος Î¼ÎµÏ„Î±Î¾Ï %{min} και %{max} χαÏακτήÏες." text_tracker_no_workflow: Δεν έχει οÏιστεί Ïοή εÏγασίας για αυτό τον ανιχνευτή text_unallowed_characters: Μη επιτÏεπόμενοι χαÏακτήÏες text_comma_separated: ΕπιτÏέπονται πολλαπλές τιμές (χωÏισμένες με κόμμα). text_issues_ref_in_commit_messages: ΑναφοÏά και καθοÏισμός θεμάτων σε μηνÏματα commit text_issue_added: "Το θέμα %{id} παÏουσιάστηκε από τον %{author}." text_issue_updated: "Το θέμα %{id} ενημεÏώθηκε από τον %{author}." text_wiki_destroy_confirmation: Είστε σίγουÏοι ότι θέλετε να διαγÏάψετε αυτό το wiki και όλο το πεÏιεχόμενο του ; text_issue_category_destroy_question: "Κάποια θέματα (%{count}) έχουν εκχωÏηθεί σε αυτή την κατηγοÏία. Τι θέλετε να κάνετε ;" text_issue_category_destroy_assignments: ΑφαίÏεση εκχωÏήσεων κατηγοÏίας text_issue_category_reassign_to: ΕπανεκχώÏηση θεμάτων σε αυτή την κατηγοÏία text_user_mail_option: "Για μη επιλεγμένα έÏγα, θα λάβετε ειδοποιήσεις μόνο για Ï€Ïάγματα που παÏακολουθείτε ή στα οποία συμμετέχω ενεÏγά (Ï€.χ. θέματα των οποίων είστε συγγÏαφέας ή σας έχουν ανατεθεί)." text_no_configuration_data: "Οι Ïόλοι, οι ανιχνευτές, η κατάσταση των θεμάτων και η Ïοή εÏγασίας δεν έχουν Ïυθμιστεί ακόμα.\nΣυνιστάται ιδιαίτεÏα να φοÏτώσετε τις Ï€Ïοεπιλεγμένες Ïυθμίσεις. Θα είστε σε θέση να τις Ï„Ïοποποιήσετε μετά τη φόÏτωση τους." text_load_default_configuration: ΦόÏτωση Ï€Ïοεπιλεγμένων Ïυθμίσεων text_status_changed_by_changeset: "ΕφαÏμόστηκε στο changeset %{value}." text_issues_destroy_confirmation: 'Είστε σίγουÏος ότι θέλετε να διαγÏάψετε το επιλεγμένο θέμα(τα);' text_select_project_modules: 'Επιλέξτε ποιες μονάδες θα ενεÏγοποιήσετε για αυτό το έÏγο:' text_default_administrator_account_changed: Ο Ï€ÏοκαθοÏισμένος λογαÏιασμός του διαχειÏιστή άλλαξε text_file_repository_writable: ΕγγÏάψιμος κατάλογος συνημμένων text_plugin_assets_writable: ΕγγÏάψιμος κατάλογος plugin assets text_minimagick_available: Διαθέσιμο MiniMagick (Ï€ÏοαιÏετικό) text_destroy_time_entries_question: "%{hours} δαπανήθηκαν σχετικά με τα θέματα που Ï€Ïόκειται να διαγÏάψετε. Τι θέλετε να κάνετε ;" text_destroy_time_entries: ΔιαγÏαφή αναφεÏόμενων ωÏών text_assign_time_entries_to_project: Ανάθεση αναφεÏόμενων ωÏών στο έÏγο text_reassign_time_entries: 'Ανάθεση εκ νέου των αναφεÏόμενων ωÏών στο θέμα:' text_user_wrote: "%{value} έγÏαψε:" text_user_wrote_in: "%{value} έγÏαψε (%{link}):" text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή." text_enumeration_category_reassign_to: 'ΕπανεκχώÏηση τους στην παÏοÏσα αξία:' text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." text_repository_usernames_mapping: "Επιλέξτε ή ενημεÏώστε τον χÏήστη Redmine που αντιστοιχεί σε κάθε όνομα χÏήστη στο ιστοÏικό του αποθετηÏίου.\nΧÏήστες με το ίδιο όνομα χÏήστη ή email στο Redmine και στο αποθετηÏίο αντιστοιχίζονται αυτόματα." text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπεÏβαίνει το μέγιστο μέγεθος που μποÏεί να Ï€Ïοβληθεί.' text_custom_field_possible_values_info: 'Μία γÏαμμή για κάθε τιμή' text_wiki_page_destroy_question: "Αυτή η σελίδα έχει %{descendants} σελίδες τέκνων και απογόνων. Τι θέλετε να κάνετε ;" text_wiki_page_nullify_children: "ΔιατηÏήστε τις σελίδες τέκνων ως σελίδες root" text_wiki_page_destroy_children: "ΔιαγÏάψτε όλες τις σελίδες τέκνων και των απογόνων τους" text_wiki_page_reassign_children: "ΕπανεκχώÏιση των σελίδων τέκνων στη γονική σελίδα" default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter default_tracker_bug: Σφάλματα default_tracker_feature: ΛειτουÏγίες default_tracker_support: ΥποστήÏιξη default_issue_status_new: Îέα default_issue_status_in_progress: In Progress default_issue_status_resolved: Επιλυμένο default_issue_status_feedback: Σχόλια default_issue_status_closed: Κλειστό default_issue_status_rejected: ΑποÏÏιπτέο default_doc_category_user: ΤεκμηÏίωση χÏήστη default_doc_category_tech: Τεχνική τεκμηÏίωση default_priority_low: Χαμηλή default_priority_normal: Κανονική default_priority_high: Υψηλή default_priority_urgent: Επείγον default_priority_immediate: Άμεση default_activity_design: Σχεδιασμός default_activity_development: Ανάπτυξη enumeration_issue_priorities: ΠÏοτεÏαιότητα θέματος enumeration_doc_categories: ΚατηγοÏία εγγÏάφων enumeration_activities: ΔÏαστηÏιότητες (κατακεÏματισμός χÏόνου) text_journal_changed: "%{label} άλλαξε από %{old} σε %{new}" text_journal_set_to: "%{label} οÏίζεται σε %{value}" text_journal_deleted: "%{label} διαγÏάφηκε (%{old})" label_group_plural: Ομάδες label_group: Ομάδα label_group_new: Îέα ομάδα label_time_entry_plural: ΧÏόνος που δαπανήθηκε text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers version_status_closed: closed version_status_locked: locked version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous button_move_and_follow: Move and follow setting_default_projects_modules: Default enabled modules for new projects setting_gravatar_default: Default Gravatar image field_sharing: Sharing label_version_sharing_hierarchy: With project hierarchy label_version_sharing_system: With all projects label_version_sharing_descendants: With subprojects label_version_sharing_tree: With project tree label_version_sharing_none: Not shared error_can_not_archive_project: This project can not be archived button_copy_and_follow: Copy and follow label_copy_source: Source setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. error_workflow_copy_target: Please select target tracker(s) and role(s) setting_issue_done_ratio_issue_field: Use the issue field label_copy_same_as_target: Same as target label_copy_target: Target notice_issue_done_ratios_updated: Issue done ratios updated. error_workflow_copy_source: Please select a source tracker or role label_update_issue_done_ratios: Update issue done ratios setting_start_of_week: Start calendars on permission_view_issues: View Issues label_display_used_statuses_only: Only display statuses that are used by this tracker label_revision_id: Revision %{value} label_api_access_key: API access key label_api_access_key_created_on: API access key created %{value} ago label_feeds_access_key: Atom access key notice_api_access_key_reseted: Your API access key was reset. setting_rest_api_enabled: Enable REST web service label_missing_api_access_key: Missing an API access key label_missing_feeds_access_key: Missing a Atom access key button_show: Show text_line_separated: Multiple values allowed (one line for each value). setting_mail_handler_body_delimiters: Truncate emails after one of these lines permission_add_subprojects: Create subprojects label_subproject_new: New subproject text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Κωδικοποίηση μηνυμάτων commit field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 Θέμα one: 1 Θέμα other: "%{count} Θέματα" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: όλα label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: ΣÏνολο text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: κλειδί API setting_lost_password: Ανάκτηση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: ΔιαγÏαφή συσχέτισης error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/en-GB.yml000066400000000000000000002106431500112024600174440ustar00rootroot00000000000000en-GB: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d/%m/%Y" short: "%d %b" long: "%d %B, %Y" day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%d/%m/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" other: "less than %{count} seconds" x_seconds: one: "1 second" other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" other: "less than %{count} minutes" x_minutes: one: "1 minute" other: "%{count} minutes" about_x_hours: one: "about 1 hour" other: "about %{count} hours" x_hours: one: "1 hour" other: "%{count} hours" x_days: one: "1 day" other: "%{count} days" about_x_months: one: "about 1 month" other: "about %{count} months" x_months: one: "1 month" other: "%{count} months" about_x_years: one: "about 1 year" other: "about %{count} years" over_x_years: one: "over 1 year" other: "over %{count} years" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: separator: "." delimiter: "," precision: 3 currency: format: format: "%u%n" unit: "£" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "and" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "is not included in the list" exclusion: "is reserved" invalid: "is invalid" confirmation: "doesn't match confirmation" accepted: "must be accepted" empty: "cannot be empty" blank: "cannot be blank" too_long: "is too long (maximum is %{count} characters)" too_short: "is too short (minimum is %{count} characters)" wrong_length: "is the wrong length (should be %{count} characters)" taken: "has already been taken" not_a_number: "is not a number" not_a_date: "is not a valid date" greater_than: "must be greater than %{count}" greater_than_or_equal_to: "must be greater than or equal to %{count}" equal_to: "must be equal to %{count}" less_than: "must be less than %{count}" less_than_or_equal_to: "must be less than or equal to %{count}" odd: "must be odd" even: "must be even" greater_than_start_date: "must be greater than start date" not_same_project: "doesn't belong to the same project" circular_dependency: "This relation would create a circular dependency" cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Please select general_text_No: 'No' general_text_Yes: 'Yes' general_text_no: 'no' general_text_yes: 'yes' general_lang_name: 'English (British)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Account was successfully updated. notice_account_invalid_credentials: Invalid user or password notice_account_password_updated: Password was successfully updated. notice_account_wrong_password: Wrong password notice_account_register_done: Account was successfully created. An email containing the instructions to activate your account was sent to %{email}. notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. notice_account_activated: Your account has been activated. You can now log in. notice_successful_create: Successful creation. notice_successful_update: Successful update. notice_successful_delete: Successful deletion. notice_successful_connection: Successful connection. notice_file_not_found: The page you were trying to access doesn't exist or has been removed. notice_locking_conflict: Data has been updated by another user. notice_not_authorized: You are not authorised to access this page. notice_not_authorized_archived_project: The project you're trying to access has been archived. notice_email_sent: "An email was sent to %{value}" notice_email_error: "An error occurred while sending mail (%{value})" notice_feeds_access_key_reseted: Your Atom access key was reset. notice_api_access_key_reseted: Your API access key was reset. notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." notice_failed_to_save_members: "Failed to save member(s): %{errors}." notice_account_pending: "Your account was created and is now pending administrator approval." notice_default_data_loaded: Default configuration successfully loaded. notice_unable_delete_version: Unable to delete version. notice_unable_delete_time_entry: Unable to delete time log entry. notice_issue_done_ratios_updated: Issue done ratios updated. notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" error_scm_annotate: "The entry does not exist or cannot be annotated." error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size." error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_delete_custom_field: Unable to delete custom field error_can_not_delete_tracker_html: "This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "This role is in use and cannot be deleted." error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' error_can_not_archive_project: This project cannot be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' error_unable_delete_issue_status: 'Unable to delete issue status (%{value})' error_unable_to_connect: "Unable to connect (%{value})" warning_attachments_not_saved: "%{count} file(s) could not be saved." mail_subject_lost_password: "Your %{value} password" mail_body_lost_password: 'To change your password, click on the following link:' mail_subject_register: "Your %{value} account activation" mail_body_register: 'To activate your account, click on the following link:' mail_body_account_information_external: "You can use your %{value} account to log in." mail_body_account_information: Your account information mail_subject_account_activation_request: "%{value} account activation request" mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." field_name: Name field_description: Description field_summary: Summary field_is_required: Required field_firstname: First name field_lastname: Last name field_mail: Email field_filename: File field_filesize: Size field_downloads: Downloads field_author: Author field_created_on: Created field_updated_on: Updated field_field_format: Format field_is_for_all: For all projects field_possible_values: Possible values field_regexp: Regular expression field_min_length: Minimum length field_max_length: Maximum length field_value: Value field_category: Category field_title: Title field_project: Project field_issue: Issue field_status: Status field_notes: Notes field_is_closed: Issue closed field_is_default: Default value field_tracker: Tracker field_subject: Subject field_due_date: Due date field_assigned_to: Assignee field_priority: Priority field_fixed_version: Target version field_user: User field_principal: User or Group field_role: Role field_homepage: Homepage field_is_public: Public field_parent: Subproject of field_is_in_roadmap: Issues displayed in roadmap field_login: Login field_mail_notification: Email notifications field_admin: Administrator field_last_login_on: Last sign in field_language: Language field_effective_date: Due date field_password: Password field_new_password: New password field_password_confirmation: Confirmation field_version: Version field_type: Type field_host: Host field_port: Port field_account: Account field_base_dn: Base DN field_attr_login: Login attribute field_attr_firstname: Firstname attribute field_attr_lastname: Lastname attribute field_attr_mail: Email attribute field_onthefly: On-the-fly user creation field_start_date: Start date field_done_ratio: "% Done" field_auth_source: Authentication mode field_hide_mail: Hide my email address field_comments: Comment field_url: URL field_start_page: Start page field_subproject: Subproject field_hours: Hours field_activity: Activity field_spent_on: Date field_identifier: Identifier field_is_filter: Used as a filter field_issue_to: Related issue field_delay: Delay field_assignable: Issues can be assigned to this role field_redirect_existing_links: Redirect existing links field_estimated_hours: Estimated time field_column_names: Columns field_time_entries: Log time field_time_zone: Time zone field_searchable: Searchable field_default_value: Default value field_comments_sorting: Display comments field_parent_title: Parent page field_editable: Editable field_watcher: Watcher field_content: Content field_group_by: Group results by field_sharing: Sharing field_parent_issue: Parent task field_member_of_group: "Assignee's group" field_assigned_to_role: "Assignee's role" field_text: Text field field_visible: Visible field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" setting_app_title: Application title setting_welcome_text: Welcome text setting_default_language: Default language setting_login_required: Authentication required setting_self_registration: Self-registration setting_attachment_max_size: Attachment max. size setting_issues_export_limit: Issues export limit setting_mail_from: Emission email address setting_plain_text_mail: Plain text mail (no HTML) setting_host_name: Host name and path setting_text_formatting: Text formatting setting_wiki_compression: Wiki history compression setting_feeds_limit: Feed content limit setting_default_projects_public: New projects are public by default setting_autofetch_changesets: Autofetch commits setting_sys_api_enabled: Enable WS for repository management setting_commit_ref_keywords: Referencing keywords setting_commit_fix_keywords: Fixing keywords setting_autologin: Autologin setting_date_format: Date format setting_time_format: Time format setting_cross_project_issue_relations: Allow cross-project issue relations setting_issue_list_default_columns: Default columns displayed on the issue list setting_emails_header: Email header setting_emails_footer: Email footer setting_protocol: Protocol setting_per_page_options: Objects per page options setting_user_format: Users display format setting_activity_days_default: Days displayed on project activity setting_display_subprojects_issues: Display subprojects issues on main projects by default setting_enabled_scm: Enabled SCM setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key setting_sequential_project_identifiers: Generate sequential project identifiers setting_gravatar_enabled: Use Gravatar user icons setting_gravatar_default: Default Gravatar image setting_diff_max_lines_displayed: Max number of diff lines displayed setting_file_max_size_displayed: Max size of text files displayed inline setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_password_min_length: Minimum password length setting_new_project_user_role_id: Role given to a non-admin user who creates a project setting_default_projects_modules: Default enabled modules for new projects setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status setting_start_of_week: Start calendars on setting_rest_api_enabled: Enable REST web service setting_cache_formatted_text: Cache formatted text setting_default_notification_option: Default notification option setting_commit_logtime_enabled: Enable time logging setting_commit_logtime_activity_id: Activity for logged time setting_gantt_items_limit: Maximum number of items displayed on the gantt chart setting_issue_group_assignment: Allow issue assignment to groups setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues permission_add_project: Create project permission_add_subprojects: Create subprojects permission_edit_project: Edit project permission_select_project_modules: Select project modules permission_manage_members: Manage members permission_manage_project_activities: Manage project activities permission_manage_versions: Manage versions permission_manage_categories: Manage issue categories permission_view_issues: View Issues permission_add_issues: Add issues permission_edit_issues: Edit issues permission_manage_issue_relations: Manage issue relations permission_add_issue_notes: Add notes permission_edit_issue_notes: Edit notes permission_edit_own_issue_notes: Edit own notes permission_delete_issues: Delete issues permission_manage_public_queries: Manage public queries permission_save_queries: Save queries permission_view_gantt: View gantt chart permission_view_calendar: View calendar permission_view_issue_watchers: View watchers list permission_add_issue_watchers: Add watchers permission_delete_issue_watchers: Delete watchers permission_log_time: Log spent time permission_view_time_entries: View spent time permission_edit_time_entries: Edit time logs permission_edit_own_time_entries: Edit own time logs permission_manage_news: Manage news permission_comment_news: Comment news permission_view_documents: View documents permission_manage_files: Manage files permission_view_files: View files permission_manage_wiki: Manage wiki permission_rename_wiki_pages: Rename wiki pages permission_delete_wiki_pages: Delete wiki pages permission_view_wiki_pages: View wiki permission_view_wiki_edits: View wiki history permission_edit_wiki_pages: Edit wiki pages permission_delete_wiki_pages_attachments: Delete attachments permission_protect_wiki_pages: Protect wiki pages permission_manage_repository: Manage repository permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Commit access permission_manage_boards: Manage forums permission_view_messages: View messages permission_add_messages: Post messages permission_edit_messages: Edit messages permission_edit_own_messages: Edit own messages permission_delete_messages: Delete messages permission_delete_own_messages: Delete own messages permission_export_wiki_pages: Export wiki pages permission_manage_subtasks: Manage subtasks project_module_issue_tracking: Issue tracking project_module_time_tracking: Time tracking project_module_news: News project_module_documents: Documents project_module_files: Files project_module_wiki: Wiki project_module_repository: Repository project_module_boards: Forums project_module_calendar: Calendar project_module_gantt: Gantt label_user: User label_user_plural: Users label_user_new: New user label_user_anonymous: Anonymous label_project: Project label_project_new: New project label_project_plural: Projects label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: All Projects label_project_latest: Latest projects label_issue: Issue label_issue_new: New issue label_issue_plural: Issues label_issue_view_all: View all issues label_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated label_document: Document label_document_new: New document label_document_plural: Documents label_document_added: Document added label_role: Role label_role_plural: Roles label_role_new: New role label_role_and_permissions: Roles and permissions label_role_anonymous: Anonymous label_role_non_member: Non member label_member: Member label_member_new: New member label_member_plural: Members label_tracker: Tracker label_tracker_plural: Trackers label_tracker_new: New tracker label_workflow: Workflow label_issue_status: Issue status label_issue_status_plural: Issue statuses label_issue_status_new: New status label_issue_category: Issue category label_issue_category_plural: Issue categories label_issue_category_new: New category label_custom_field: Custom field label_custom_field_plural: Custom fields label_custom_field_new: New custom field label_enumerations: Enumerations label_enumeration_new: New value label_information: Information label_information_plural: Information label_register: Register label_password_lost: Lost password label_home: Home label_my_page: My page label_my_account: My account label_my_projects: My projects label_administration: Administration label_login: Sign in label_logout: Sign out label_help: Help label_reported_issues: Reported issues label_assigned_to_me_issues: Issues assigned to me label_registered_on: Registered on label_activity: Activity label_user_activity: "%{value}'s activity" label_new: New label_logged_as: Logged in as label_environment: Environment label_authentication: Authentication label_auth_source: Authentication mode label_auth_source_new: New authentication mode label_auth_source_plural: Authentication modes label_subproject_plural: Subprojects label_subproject_new: New subproject label_and_its_subprojects: "%{value} and its subprojects" label_min_max_length: Min - Max length label_list: List label_date: Date label_integer: Integer label_float: Float label_boolean: Boolean label_string: Text label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes label_no_data: No data to display label_no_preview: No preview available label_change_status: Change status label_history: History label_attachment: File label_attachment_new: New file label_attachment_delete: Delete file label_attachment_plural: Files label_file_added: File added label_report: Report label_report_plural: Reports label_news: News label_news_new: Add news label_news_plural: News label_news_latest: Latest news label_news_view_all: View all news label_news_added: News added label_news_comment_added: Comment added to a news label_settings: Settings label_overview: Overview label_version: Version label_version_new: New version label_version_plural: Versions label_version_and_files: Versions (%{count}) and Files label_close_versions: Close completed versions label_confirmation: Confirmation label_export_to: 'Also available in:' label_read: Read... label_public_projects: Public projects label_open_issues: open label_open_issues_plural: open label_closed_issues: closed label_closed_issues_plural: closed label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_total: Total label_permissions: Permissions label_current_status: Current status label_new_statuses_allowed: New statuses allowed label_all: all label_none: none label_nobody: nobody label_next: Next label_previous: Previous label_used_by: Used by label_details: Details label_add_note: Add a note label_calendar: Calendar label_months_from: months from label_gantt: Gantt label_internal: Internal label_last_changes: "last %{count} changes" label_change_view_all: View all changes label_comment: Comment label_comment_plural: Comments label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_comment_add: Add a comment label_comment_added: Comment added label_comment_delete: Delete comments label_query: Custom query label_query_plural: Custom queries label_query_new: New query label_my_queries: My custom queries label_filter_add: Add filter label_filter_plural: Filters label_equals: is label_not_equals: is not label_in_less_than: in less than label_in_more_than: in more than label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: in label_today: today label_yesterday: yesterday label_this_week: this week label_last_week: last week label_last_n_days: "last %{count} days" label_this_month: this month label_last_month: last month label_this_year: this year label_date_range: Date range label_less_than_ago: less than days ago label_more_than_ago: more than days ago label_ago: days ago label_contains: contains label_not_contains: doesn't contain label_day_plural: days label_repository: Repository label_repository_plural: Repositories label_branch: Branch label_tag: Tag label_revision: Revision label_revision_plural: Revisions label_revision_id: "Revision %{value}" label_associated_revisions: Associated revisions label_added: added label_modified: modified label_copied: copied label_renamed: renamed label_deleted: deleted label_latest_revision: Latest revision label_latest_revision_plural: Latest revisions label_view_revisions: View revisions label_view_all_revisions: View all revisions label_max_size: Maximum size label_roadmap: Roadmap label_roadmap_due_in: "Due in %{value}" label_roadmap_overdue: "%{value} late" label_roadmap_no_issues: No issues for this version label_search: Search label_result_plural: Results label_all_words: All words label_wiki: Wiki label_wiki_edit: Wiki edit label_wiki_edit_plural: Wiki edits label_wiki_page: Wiki page label_wiki_page_plural: Wiki pages label_index_by_title: Index by title label_index_by_date: Index by date label_current_version: Current version label_preview: Preview label_feed_plural: Feeds label_changes_details: Details of all changes label_issue_tracking: Issue tracking label_spent_time: Spent time label_f_hour: "%{value} hour" label_f_hour_plural: "%{value} hours" label_time_tracking: Time tracking label_change_plural: Changes label_statistics: Statistics label_commits_per_month: Commits per month label_commits_per_author: Commits per author label_view_diff: View differences label_diff_inline: inline label_diff_side_by_side: side by side label_options: Options label_copy_workflow_from: Copy workflow from label_permissions_report: Permissions report label_watched_issues: Watched issues label_related_issues: Related issues label_applied_status: Applied status label_loading: Loading... label_relation_new: New relation label_relation_delete: Delete relation label_relates_to: related to label_duplicates: is duplicate of label_duplicated_by: has duplicate label_blocks: blocks label_blocked_by: blocked by label_precedes: precedes label_follows: follows label_stay_logged_in: Stay logged in label_disabled: disabled label_show_completed_versions: Show completed versions label_me: me label_board: Forum label_board_new: New forum label_board_plural: Forums label_board_locked: Locked label_board_sticky: Sticky label_topic_plural: Topics label_message_plural: Messages label_message_last: Last message label_message_new: New message label_message_posted: Message added label_reply_plural: Replies label_send_information: Send account information to the user label_year: Year label_month: Month label_week: Week label_date_from: From label_date_to: To label_language_based: Based on user's language label_sort_by: "Sort by %{value}" label_send_test_email: Send a test email label_feeds_access_key: Atom access key label_missing_feeds_access_key: Missing a Atom access key label_feeds_access_key_created_on: "Atom access key created %{value} ago" label_module_plural: Modules label_added_time_by: "Added by %{author} %{age} ago" label_updated_time_by: "Updated by %{author} %{age} ago" label_updated_time: "Updated %{value} ago" label_jump_to_a_project: Jump to a project... label_file_plural: Files label_changeset_plural: Changesets label_default_columns: Default columns label_no_change_option: (No change) label_bulk_edit_selected_issues: Bulk edit selected issues label_theme: Theme label_default: Default label_search_titles_only: Search titles only label_user_mail_option_all: "For any event on all my projects" label_user_mail_option_selected: "For any event on the selected projects only..." label_user_mail_option_none: "No events" label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" label_registration_activation_by_email: account activation by email label_registration_manual_activation: manual account activation label_registration_automatic_activation: automatic account activation label_display_per_page: "Per page: %{value}" label_age: Age label_change_properties: Change properties label_general: General label_scm: SCM label_plugins: Plugins label_ldap_authentication: LDAP authentication label_downloads_abbr: D/L label_optional_description: Optional description label_add_another_file: Add another file label_preferences: Preferences label_chronological_order: In chronological order label_reverse_chronological_order: In reverse chronological order label_incoming_emails: Incoming emails label_generate_key: Generate a key label_issue_watchers: Watchers label_example: Example label_display: Display label_sort: Sort label_ascending: Ascending label_descending: Descending label_date_from_to: From %{start} to %{end} label_wiki_content_added: Wiki page added label_wiki_content_updated: Wiki page updated label_group: Group label_group_plural: Groups label_group_new: New group label_time_entry_plural: Spent time label_version_sharing_none: Not shared label_version_sharing_descendants: With subprojects label_version_sharing_hierarchy: With project hierarchy label_version_sharing_tree: With project tree label_version_sharing_system: With all projects label_update_issue_done_ratios: Update issue done ratios label_copy_source: Source label_copy_target: Target label_copy_same_as_target: Same as target label_display_used_statuses_only: Only display statuses that are used by this tracker label_api_access_key: API access key label_missing_api_access_key: Missing an API access key label_api_access_key_created_on: "API access key created %{value} ago" label_profile: Profile label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy label_principal_search: "Search for user or group:" label_user_search: "Search for user:" button_login: Login button_submit: Submit button_save: Save button_check_all: Check all button_uncheck_all: Uncheck all button_collapse_all: Collapse all button_expand_all: Expand all button_delete: Delete button_create: Create button_create_and_continue: Create and add another button_test: Test button_edit: Edit button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" button_add: Add button_change: Change button_apply: Apply button_clear: Clear button_lock: Lock button_unlock: Unlock button_download: Download button_list: List button_view: View button_move: Move button_move_and_follow: Move and follow button_back: Back button_cancel: Cancel button_activate: Activate button_sort: Sort button_log_time: Log time button_rollback: Rollback to this version button_watch: Watch button_unwatch: Unwatch button_reply: Reply button_archive: Archive button_unarchive: Unarchive button_reset: Reset button_rename: Rename button_change_password: Change password button_copy: Copy button_copy_and_follow: Copy and follow button_annotate: Annotate button_update: Update button_configure: Configure button_quote: Quote button_show: Show status_active: active status_registered: registered status_locked: locked version_status_open: open version_status_locked: locked version_status_closed: closed field_active: Active text_select_mail_notifications: Select actions for which email notifications should be sent. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Are you sure you want to delete this project and related data? text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Are you sure? text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_changed_no_detail: "%{label} updated" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: task beginning this day text_tip_issue_end_day: task ending this day text_tip_issue_begin_end_day: task beginning and ending this day text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed.' text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." text_length_between: "Length between %{min} and %{max} characters." text_tracker_no_workflow: No workflow defined for this tracker text_unallowed_characters: Unallowed characters text_comma_separated: Multiple values allowed (comma separated). text_line_separated: Multiple values allowed (one line for each value). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Issue %{id} has been reported by %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" text_issue_category_destroy_assignments: Remove category assignments text_issue_category_reassign_to: Reassign issues to this category text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." text_load_default_configuration: Load the default configuration text_status_changed_by_changeset: "Applied in changeset %{value}." text_time_logged_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' text_select_project_modules: 'Select modules to enable for this project:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Attachments directory writable text_plugin_assets_writable: Plugin assets directory writable text_minimagick_available: MiniMagick available (optional) text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" text_destroy_time_entries: Delete reported hours text_assign_time_entries_to_project: Assign reported hours to the project text_reassign_time_entries: 'Reassign reported hours to this issue:' text_user_wrote: "%{value} wrote:" text_user_wrote_in: "%{value} wrote in %{link}:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_zoom_in: Zoom in text_zoom_out: Zoom out text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter default_tracker_bug: Bug default_tracker_feature: Feature default_tracker_support: Support default_issue_status_new: New default_issue_status_in_progress: In Progress default_issue_status_resolved: Resolved default_issue_status_feedback: Feedback default_issue_status_closed: Closed default_issue_status_rejected: Rejected default_doc_category_user: User documentation default_doc_category_tech: Technical documentation default_priority_low: Low default_priority_normal: Normal default_priority_high: High default_priority_urgent: Urgent default_priority_immediate: Immediate default_activity_design: Design default_activity_development: Development enumeration_issue_priorities: Issue priorities enumeration_doc_categories: Document categories enumeration_activities: Activities (time tracking) enumeration_system_activity: System Activity label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. notice_issue_successful_create: Issue %{id} created. label_between: between label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 issue one: 1 issue other: "%{count} issues" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position} of %{count}" label_completed_versions: Completed versions field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed.' field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any_open_issues: any open issues label_no_open_issues: no open issues label_any: all label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Total notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) text_gs_available: ImageMagick PDF support available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API key setting_lost_password: Lost password mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Delete relation error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/en.yml000066400000000000000000002105671500112024600171630ustar00rootroot00000000000000en: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y" day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%m/%d/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" other: "less than %{count} seconds" x_seconds: one: "1 second" other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" other: "less than %{count} minutes" x_minutes: one: "1 minute" other: "%{count} minutes" about_x_hours: one: "about 1 hour" other: "about %{count} hours" x_hours: one: "1 hour" other: "%{count} hours" x_days: one: "1 day" other: "%{count} days" about_x_months: one: "about 1 month" other: "about %{count} months" x_months: one: "1 month" other: "%{count} months" about_x_years: one: "about 1 year" other: "about %{count} years" over_x_years: one: "over 1 year" other: "over %{count} years" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: separator: "." delimiter: "," precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "and" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "is not included in the list" exclusion: "is reserved" invalid: "is invalid" confirmation: "doesn't match confirmation" accepted: "must be accepted" empty: "cannot be empty" blank: "cannot be blank" too_long: "is too long (maximum is %{count} characters)" too_short: "is too short (minimum is %{count} characters)" wrong_length: "is the wrong length (should be %{count} characters)" taken: "has already been taken" not_a_number: "is not a number" not_a_date: "is not a valid date" greater_than: "must be greater than %{count}" greater_than_or_equal_to: "must be greater than or equal to %{count}" equal_to: "must be equal to %{count}" less_than: "must be less than %{count}" less_than_or_equal_to: "must be less than or equal to %{count}" odd: "must be odd" even: "must be even" greater_than_start_date: "must be greater than start date" not_same_project: "doesn't belong to the same project" circular_dependency: "This relation would create a circular dependency" cant_link_an_issue_with_a_descendant: "An issue cannot be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Please select general_text_No: 'No' general_text_Yes: 'Yes' general_text_no: 'no' general_text_yes: 'yes' general_lang_name: 'English' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: Account was successfully updated. notice_account_invalid_credentials: Invalid user or password notice_account_password_updated: Password was successfully updated. notice_account_wrong_password: Wrong password notice_account_register_done: Account was successfully created. An email containing the instructions to activate your account was sent to %{email}. notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. notice_account_activated: Your account has been activated. You can now log in. notice_successful_create: Successful creation. notice_successful_update: Successful update. notice_successful_delete: Successful deletion. notice_successful_connection: Successful connection. notice_file_not_found: The page you were trying to access doesn't exist or has been removed. notice_locking_conflict: Data has been updated by another user. notice_not_authorized: You are not authorized to access this page. notice_not_authorized_archived_project: The project you're trying to access has been archived. notice_email_sent: "An email was sent to %{value}" notice_email_error: "An error occurred while sending mail (%{value})" notice_feeds_access_key_reseted: Your Atom access key was reset. notice_api_access_key_reseted: Your API access key was reset. notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." notice_failed_to_save_members: "Failed to save member(s): %{errors}." notice_account_pending: "Your account was created and is now pending administrator approval." notice_default_data_loaded: Default configuration successfully loaded. notice_unable_delete_version: Unable to delete version. notice_unable_delete_time_entry: Unable to delete time log entry. notice_issue_done_ratios_updated: Issue done ratios updated. notice_gantt_chart_truncated: "The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})" notice_issue_successful_create: "Issue %{id} created." notice_issue_update_conflict: "The issue has been updated by an other user while you were editing it." notice_account_deleted: "Your account has been permanently deleted." notice_user_successful_create: "User %{id} created." notice_new_password_must_be_different: The new password must be different from the current password notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" notice_issue_not_closable_by_open_tasks: "This issue cannot be closed because it has at least one open subtask." notice_issue_not_closable_by_blocking_issue: "This issue cannot be closed because it is blocked by at least one open issue." notice_issue_not_reopenable_by_closed_parent_issue: "This issue cannot be reopened because its parent issue is closed." notice_invalid_watcher: "Invalid watcher: User will not receive any notifications because they do not have access to view this object." error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" error_scm_annotate: "The entry does not exist or cannot be annotated." error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size." error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_delete_custom_field: Unable to delete custom field error_can_not_delete_tracker_html: "This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "This role is in use and cannot be deleted." error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' error_can_not_archive_project: This project cannot be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' error_unable_delete_issue_status: 'Unable to delete issue status (%{value})' error_unable_to_connect: "Unable to connect (%{value})" error_attachments_too_many: "This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files})" error_attachment_too_big: "This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size})" error_bulk_download_size_too_big: "These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size})" error_session_expired: "Your session has expired. Please login again." error_token_expired: "This password recovery link has expired, please try again." warning_attachments_not_saved: "%{count} file(s) could not be saved." error_password_expired: "Your password has expired or the administrator requires you to change it." error_invalid_file_encoding: "The file is not a valid %{encoding} encoded file" error_invalid_csv_file_or_settings: "The file is not a CSV file or does not match the settings below (%{value})" error_can_not_read_import_file: "An error occurred while reading the file to import" error_no_data_in_file: "The file does not contain any data" error_attachment_extension_not_allowed: "Attachment extension %{extension} is not allowed" error_ldap_bind_credentials: "Invalid LDAP Account/Password" error_no_tracker_allowed_for_new_issue_in_project: "The project doesn't have any trackers for which you can create an issue" error_no_projects_with_tracker_allowed_for_new_issue: "There are no projects with trackers for which you can create an issue" error_move_of_child_not_possible: "Subtask %{child} could not be moved to the new project: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "Spent time cannot be reassigned to an issue that is about to be deleted" warning_fields_cleared_on_bulk_edit: "Changes will result in the automatic deletion of values from one or more fields on the selected objects" error_exceeds_maximum_hours_per_day: "Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged)" error_can_not_delete_auth_source: "This authentication mode is in use and cannot be deleted." error_spent_on_future_date: "Cannot log time on a future date" error_not_allowed_to_log_time_for_other_users: "You are not allowed to log time for other users" error_can_not_execute_macro_html: "Error executing the %{name} macro (%{error})" error_macro_does_not_accept_block: "This macro does not accept a block of text" error_childpages_macro_no_argument: "With no argument, this macro can be called from wiki pages only" error_circular_inclusion: "Circular inclusion detected" error_page_not_found: "Page not found" error_filename_required: "Filename required" error_invalid_size_parameter: "Invalid size parameter" error_attachment_not_found: "Attachment %{name} not found" error_invalid_authenticity_token: "Invalid form authenticity token." error_query_statement_invalid: "An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator." mail_subject_lost_password: "Your %{value} password" mail_body_lost_password: 'To change your password, click on the following link:' mail_body_lost_password_validity: 'Please be aware that you may change the password only once using this link.' mail_subject_register: "Your %{value} account activation" mail_body_register: 'To activate your account, click on the following link:' mail_body_account_information_external: "You can use your %{value} account to log in." mail_body_account_information: Your account information mail_subject_account_activation_request: "%{value} account activation request" mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." mail_subject_security_notification: "Security notification" mail_body_security_notification_change: "%{field} was changed." mail_body_security_notification_change_to: "%{field} was changed to %{value}." mail_body_security_notification_add: "%{field} %{value} was added." mail_body_security_notification_remove: "%{field} %{value} was removed." mail_body_security_notification_notify_enabled: "Email address %{value} now receives notifications." mail_body_security_notification_notify_disabled: "Email address %{value} no longer receives notifications." mail_body_settings_updated: "The following settings were changed:" mail_body_password_updated: "Your password has been changed." mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. field_name: Name field_description: Description field_summary: Summary field_is_required: Required field_firstname: First name field_lastname: Last name field_mail: Email field_address: Email field_filename: File field_filesize: Size field_downloads: Downloads field_author: Author field_created_on: Created field_updated_on: Updated field_closed_on: Closed field_field_format: Format field_is_for_all: For all projects field_possible_values: Possible values field_regexp: Regular expression field_min_length: Minimum length field_max_length: Maximum length field_value: Value field_category: Category field_title: Title field_project: Project field_issue: Issue field_is_member_of_group: Member of group field_status: Status field_notes: Notes field_is_closed: Issue closed field_is_default: Default value field_tracker: Tracker field_subject: Subject field_due_date: Due date field_assigned_to: Assignee field_priority: Priority field_fixed_version: Target version field_user: User field_principal: User or Group field_role: Role field_homepage: Homepage field_is_public: Public field_parent: Subproject of field_is_in_roadmap: Issues displayed in roadmap field_login: Login field_mail_notification: Email notifications field_admin: Administrator field_last_login_on: Last sign in field_passwd_changed_on: Password last changed field_language: Language field_effective_date: Due date field_password: Password field_current_password: Current password field_new_password: New password field_password_confirmation: Confirmation field_twofa_scheme: Two-factor authentication scheme field_version: Version field_type: Type field_host: Host field_port: Port field_account: Account field_base_dn: Base DN field_attr_login: Login attribute field_attr_firstname: Firstname attribute field_attr_lastname: Lastname attribute field_attr_mail: Email attribute field_onthefly: On-the-fly user creation field_start_date: Start date field_done_ratio: "% Done" field_auth_source: Authentication mode field_hide_mail: Hide my email address field_comments: Comment field_url: URL field_start_page: Start page field_subproject: Subproject field_hours: Hours field_activity: Activity field_spent_on: Date field_identifier: Identifier field_is_filter: Used as a filter field_issue_to: Related issue field_delay: Delay field_assignable: Issues can be assigned to users with this role field_redirect_existing_links: Redirect existing links field_estimated_hours: Estimated time field_column_names: Columns field_time_entries: Log time field_time_zone: Time zone field_searchable: Searchable field_default_value: Default value field_comments_sorting: Display comments field_parent_title: Parent page field_editable: Editable field_watcher: Watcher field_content: Content field_group_by: Group results by field_sharing: Sharing field_parent_issue: Parent task field_parent_issue_subject: Parent task subject field_member_of_group: "Assignee's group" field_assigned_to_role: "Assignee's role" field_text: Text field field_visible: Visible field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" field_issues_visibility: Issues visibility field_is_private: Private field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding field_path_to_repository: Path to repository field_root_directory: Root directory field_cvsroot: CVSROOT field_cvs_module: Module field_repository_is_default: Main repository field_multiple: Multiple values field_auth_source_ldap_filter: LDAP filter field_core_fields: Standard fields field_timeout: "Timeout (in seconds)" field_board_parent: Parent forum field_private_notes: Private notes field_inherit_members: Inherit members field_generate_password: Generate password field_must_change_passwd: Must change password at next logon field_default_status: Default status field_users_visibility: Users visibility field_time_entries_visibility: Time logs visibility field_total_estimated_hours: Total estimated time field_default_version: Default version field_remote_ip: IP address field_textarea_font: Font used for text areas field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout field_digest: Checksum field_default_assigned_to: Default assignee field_recently_used_projects: Number of recently used projects in jump box field_history_default_tab: Issue's history default tab field_unique_id: Unique ID field_toolbar_language_options: Code highlighting toolbar languages field_twofa_required: Require two factor authentication field_default_issue_query: Default issue query field_default_project_query: Default project query field_default_time_entry_activity: Default spent time activity field_any_searchable: Any searchable text field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity field_thousands_delimiter: Thousands delimiter setting_app_title: Application title setting_welcome_text: Welcome text setting_default_language: Default language setting_login_required: Authentication required setting_self_registration: Self-registration setting_show_custom_fields_on_registration: Show custom fields on registration setting_attachment_max_size: Maximum attachment size setting_bulk_download_max_size: Maximum total size for bulk download setting_issues_export_limit: Issues export limit setting_mail_from: Emission email address setting_plain_text_mail: Plain text mail (no HTML) setting_host_name: Host name and path setting_text_formatting: Text formatting setting_wiki_compression: Wiki history compression setting_feeds_limit: Maximum number of items in Atom feeds setting_default_projects_public: New projects are public by default setting_autofetch_changesets: Fetch commits automatically setting_sys_api_enabled: Enable WS for repository management setting_commit_ref_keywords: Referencing keywords setting_commit_fix_keywords: Fixing keywords setting_autologin: Autologin setting_date_format: Date format setting_time_format: Time format setting_timespan_format: Time span format setting_cross_project_issue_relations: Allow cross-project issue relations setting_cross_project_subtasks: Allow cross-project subtasks setting_issue_list_default_columns: Issues list defaults setting_repositories_encodings: Attachments and repositories encodings setting_emails_header: Email header setting_emails_footer: Email footer setting_protocol: Protocol setting_per_page_options: Objects per page options setting_user_format: Users display format setting_activity_days_default: Days displayed on project activity setting_display_subprojects_issues: Display subprojects issues on main projects by default setting_enabled_scm: Enabled SCM setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" setting_mail_handler_enable_regex: "Enable regular expressions" setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: Incoming email WS API key setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_sys_api_key: Repository management WS API key setting_sequential_project_identifiers: Generate sequential project identifiers setting_gravatar_enabled: Use Gravatar user icons setting_gravatar_default: Default Gravatar image setting_diff_max_lines_displayed: Maximum number of diff lines displayed setting_file_max_size_displayed: Maximum size of text files displayed inline setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_password_max_age: Require password change after setting_password_min_length: Minimum password length setting_password_required_char_classes : Required character classes for passwords setting_lost_password: Allow password reset via email setting_new_project_user_role_id: Role given to a non-admin user who creates a project setting_default_projects_modules: Default enabled modules for new projects setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_interval: Done ratio options interval setting_issue_done_ratio_issue_status: Use the issue status setting_start_of_week: Start calendars on setting_rest_api_enabled: Enable REST web service setting_cache_formatted_text: Cache formatted text setting_default_notification_option: Default notification option setting_commit_logtime_enabled: Enable time logging setting_commit_logtime_activity_id: Activity for logged time setting_gantt_items_limit: Maximum number of items displayed on the gantt chart setting_gantt_months_limit: Maximum number of months displayed on the gantt chart setting_issue_group_assignment: Allow issue assignment to groups setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed setting_unsubscribe: Allow users to delete their own account setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) setting_non_working_week_days: Non-working days setting_jsonp_enabled: Enable JSONP support setting_default_projects_tracker_ids: Default trackers for new projects setting_mail_handler_excluded_filenames: Exclude attachments by name setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users setting_link_copied_issue: Link issues on copy setting_copy_attachments_on_issue_copy: Copy attachments on copy setting_max_additional_emails: Maximum number of additional email addresses setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains setting_search_results_per_page: Search results per page setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions setting_new_item_menu_tab: Project menu tab for creating new objects setting_commit_logs_formatting: Apply text formatting to commit messages setting_timelog_required_fields: Required fields for time logs setting_close_duplicate_issues: Close duplicate issues automatically setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user setting_timelog_accept_future_dates: Accept time logs on future dates setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject setting_project_list_defaults: Projects list defaults setting_twofa: Two-factor authentication permission_add_project: Create project permission_add_subprojects: Create subprojects permission_edit_project: Edit project permission_close_project: Close / reopen the project permission_delete_project: Delete the project permission_select_project_publicity: Set project public or private permission_select_project_modules: Select project modules permission_manage_members: Manage members permission_manage_project_activities: Manage project activities permission_manage_versions: Manage versions permission_manage_categories: Manage issue categories permission_view_issues: View Issues permission_add_issues: Add issues permission_edit_issues: Edit issues permission_edit_own_issues: Edit own issues permission_copy_issues: Copy issues permission_manage_issue_relations: Manage issue relations permission_set_issues_private: Set issues public or private permission_set_own_issues_private: Set own issues public or private permission_add_issue_notes: Add notes permission_edit_issue_notes: Edit notes permission_edit_own_issue_notes: Edit own notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private permission_delete_issues: Delete issues permission_manage_public_queries: Manage public queries permission_save_queries: Save queries permission_view_gantt: View gantt chart permission_view_calendar: View calendar permission_view_issue_watchers: View watchers list permission_add_issue_watchers: Add watchers permission_delete_issue_watchers: Delete watchers permission_log_time: Log spent time permission_view_time_entries: View spent time permission_edit_time_entries: Edit time logs permission_edit_own_time_entries: Edit own time logs permission_view_news: View news permission_manage_news: Manage news permission_comment_news: Comment news permission_view_documents: View documents permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents permission_manage_files: Manage files permission_view_files: View files permission_manage_wiki: Manage wiki permission_rename_wiki_pages: Rename wiki pages permission_delete_wiki_pages: Delete wiki pages permission_view_wiki_pages: View wiki permission_view_wiki_edits: View wiki history permission_edit_wiki_pages: Edit wiki pages permission_delete_wiki_pages_attachments: Delete attachments permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers permission_protect_wiki_pages: Protect wiki pages permission_manage_repository: Manage repository permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Commit access permission_manage_boards: Manage forums permission_view_messages: View messages permission_add_messages: Post messages permission_edit_messages: Edit messages permission_edit_own_messages: Edit own messages permission_delete_messages: Delete messages permission_delete_own_messages: Delete own messages permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers permission_export_wiki_pages: Export wiki pages permission_manage_subtasks: Manage subtasks permission_manage_related_issues: Manage related issues permission_import_issues: Import issues permission_log_time_for_other_users: Log spent time for other users project_module_issue_tracking: Issue tracking project_module_time_tracking: Time tracking project_module_news: News project_module_documents: Documents project_module_files: Files project_module_wiki: Wiki project_module_repository: Repository project_module_boards: Forums project_module_calendar: Calendar project_module_gantt: Gantt label_user: User label_user_plural: Users label_user_new: New user label_user_anonymous: Anonymous label_project: Project label_project_new: New project label_project_plural: Projects label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: All Projects label_project_latest: Latest projects label_issue: Issue label_issue_new: New issue label_issue_plural: Issues label_issue_view_all: View all issues label_issues_by: "Issues by %{value}" label_issue_added: Issue added label_issue_updated: Issue updated label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_assigned_to_updated: Assignee updated label_issue_priority_updated: Priority updated label_issue_fixed_version_updated: Target version updated label_issue_attachment_added: Attachment added label_document: Document label_document_new: New document label_document_plural: Documents label_document_added: Document added label_role: Role label_role_plural: Roles label_role_new: New role label_role_and_permissions: Roles and permissions label_role_anonymous: Anonymous label_role_non_member: Non member label_member: Member label_member_new: New member label_member_plural: Members label_tracker: Tracker label_tracker_plural: Trackers label_tracker_all: All trackers label_tracker_new: New tracker label_workflow: Workflow label_issue_status: Issue status label_issue_status_plural: Issue statuses label_issue_status_new: New status label_issue_category: Issue category label_issue_category_plural: Issue categories label_issue_category_new: New category label_custom_field: Custom field label_custom_field_plural: Custom fields label_custom_field_new: New custom field label_enumerations: Enumerations label_enumeration_new: New value label_information: Information label_information_plural: Information label_register: Register label_password_lost: Lost password label_password_required: Confirm your password to continue label_home: Home label_my_page: My page label_my_account: My account label_my_projects: My projects label_administration: Administration label_login: Sign in label_logout: Sign out label_help: Help label_reported_issues: Reported issues label_assigned_issues: Assigned issues label_assigned_to_me_issues: Issues assigned to me label_updated_issues: Updated issues label_registered_on: Registered on label_activity: Activity label_user_activity: "%{value}'s activity" label_new: New label_logged_as: Logged in as label_environment: Environment label_authentication: Authentication label_auth_source: Authentication mode label_auth_source_new: New authentication mode label_auth_source_plural: Authentication modes label_subproject_plural: Subprojects label_subproject_new: New subproject label_and_its_subprojects: "%{value} and its subprojects" label_min_max_length: Min - Max length label_list: List label_date: Date label_integer: Integer label_float: Float label_boolean: Boolean label_string: Text label_text: Long text label_attribute: Attribute label_attribute_plural: Attributes label_no_data: No data to display label_no_preview: No preview available label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download label_change_status: Change status label_history: History label_attachment: File label_attachment_new: New file label_attachment_delete: Delete file label_attachment_plural: Files label_file_added: File added label_attachment_description: File description label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" label_report: Report label_report_plural: Reports label_news: News label_news_new: Add news label_news_plural: News label_news_latest: Latest news label_news_view_all: View all news label_news_added: News added label_news_comment_added: Comment added to a news label_settings: Settings label_overview: Overview label_version: Version label_version_new: New version label_version_plural: Versions label_version_and_files: Versions (%{count}) and Files label_close_versions: Close completed versions label_confirmation: Confirmation label_export_to: 'Also available in:' label_read: Read... label_public_projects: Public projects label_open_issues: open label_open_issues_plural: open label_closed_issues: closed label_closed_issues_plural: closed label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_x_issues: zero: 0 issues one: 1 issue other: "%{count} issues" label_total: Total label_total_plural: Totals label_total_time: Total time label_permissions: Permissions label_current_status: Current status label_new_statuses_allowed: New statuses allowed label_all: all label_any: any label_none: none label_nobody: nobody label_next: Next label_previous: Previous label_used_by: Used by label_details: Details label_add_note: Add a note label_calendar: Calendar label_months_from: months from label_gantt: Gantt label_internal: Internal label_last_changes: "last %{count} changes" label_change_view_all: View all changes label_comment: Comment label_comment_plural: Comments label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_comment_add: Add a comment label_comment_added: Comment added label_comment_delete: Delete comments label_query: Custom query label_query_plural: Custom queries label_query_new: New query label_my_queries: My custom queries label_filter_add: Add filter label_filter_plural: Filters label_equals: is label_not_equals: is not label_in_less_than: in less than label_in_more_than: in more than label_in_the_next_days: in the next label_in_the_past_days: in the past label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: between label_in: in label_today: today label_yesterday: yesterday label_tomorrow: tomorrow label_this_week: this week label_last_week: last week label_next_week: next week label_last_n_weeks: "last %{count} weeks" label_last_n_days: "last %{count} days" label_this_month: this month label_last_month: last month label_next_month: next month label_this_year: this year label_date_range: Date range label_less_than_ago: less than days ago label_more_than_ago: more than days ago label_ago: days ago label_contains: contains label_contains_any_of: contains any of label_not_contains: doesn't contain label_starts_with: starts with label_ends_with: ends with label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project label_no_issues_in_project: no issues in project label_any_open_issues: any open issues label_no_open_issues: no open issues label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_day_plural: days label_repository: Repository label_repository_new: New repository label_repository_plural: Repositories label_branch: Branch label_tag: Tag label_revision: Revision label_revision_plural: Revisions label_revision_id: "Revision %{value}" label_associated_revisions: Associated revisions label_added: added label_modified: modified label_copied: copied label_renamed: renamed label_deleted: deleted label_latest_revision: Latest revision label_latest_revision_plural: Latest revisions label_view_revisions: View revisions label_view_all_revisions: View all revisions label_view_previous_annotation: View annotation prior to this change label_x_revisions: "%{count} revisions" label_max_size: Maximum size label_roadmap: Roadmap label_roadmap_due_in: "Due in %{value}" label_roadmap_overdue: "%{value} late" label_roadmap_no_issues: No issues for this version label_search: Search label_result_plural: Results label_all_words: All words label_wiki: Wiki label_wiki_edit: Wiki edit label_wiki_edit_plural: Wiki edits label_wiki_page: Wiki page label_wiki_page_plural: Wiki pages label_wiki_page_new: New wiki page label_index_by_title: Index by title label_index_by_date: Index by date label_current_version: Current version label_preview: Preview label_feed_plural: Feeds label_changes_details: Details of all changes label_issue_tracking: Issue tracking label_spent_time: Spent time label_total_spent_time: Total spent time label_f_hour: "%{value} hour" label_f_hour_plural: "%{value} hours" label_f_hour_short: "%{value} h" label_time_tracking: Time tracking label_change_plural: Changes label_statistics: Statistics label_commits_per_month: Commits per month label_commits_per_author: Commits per author label_diff: diff label_view_diff: View differences label_diff_inline: inline label_diff_side_by_side: side by side label_options: Options label_option_auto_lang: auto label_copy_workflow_from: Copy workflow from label_permissions_report: Permissions report label_watched_issues: Watched issues label_related_issues: Related issues label_applied_status: Applied status label_loading: Loading... label_relation_new: New relation label_relation_delete: Delete relation label_relates_to: Related to label_delete_link_to_subtask: Delete link to subtask label_duplicates: Is duplicate of label_duplicated_by: Has duplicate label_blocks: Blocks label_blocked_by: Blocked by label_precedes: Precedes label_follows: Follows label_copied_to: Copied to label_copied_from: Copied from label_stay_logged_in: Stay logged in label_disabled: disabled label_optional: optional label_show_completed_versions: Show completed versions label_me: me label_board: Forum label_board_new: New forum label_board_plural: Forums label_board_locked: Locked label_board_sticky: Sticky label_topic_plural: Topics label_message_plural: Messages label_message_last: Last message label_message_new: New message label_message_posted: Message added label_reply_plural: Replies label_send_information: Send account information to the user label_year: Year label_month: Month label_week: Week label_date_from: From label_date_to: To label_language_based: Based on user's language label_sort_by: "Sort by %{value}" label_send_test_email: Send a test email label_feeds_access_key: Atom access key label_missing_feeds_access_key: Missing a Atom access key label_feeds_access_key_created_on: "Atom access key created %{value} ago" label_module_plural: Modules label_added_time_by: "Added by %{author} %{age} ago" label_updated_time_by: "Updated by %{author} %{age} ago" label_updated_time: "Updated %{value} ago" label_jump_to_a_project: Jump to a project... label_file_plural: Files label_changeset_plural: Changesets label_default_columns: Default columns label_no_change_option: (No change) label_bulk_edit: Bulk edit label_bulk_edit_selected_issues: Bulk edit selected issues label_bulk_edit_selected_time_entries: Bulk edit selected time entries label_theme: Theme label_default: Default label_search_titles_only: Search titles only label_user_mail_option_all: "For any event on all my projects" label_user_mail_option_selected: "For any event on the selected projects only..." label_user_mail_option_none: "No events" label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" label_user_mail_option_only_assigned: "Only for things I watch or I am assigned to" label_user_mail_option_only_owner: "Only for things I watch or I am the owner of" label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" label_user_mail_notify_about_high_priority_issues_html: "Also notify me about issues with a priority of %{prio} or higher" label_registration_activation_by_email: account activation by email label_registration_manual_activation: manual account activation label_registration_automatic_activation: automatic account activation label_display_per_page: "Per page: %{value}" label_age: Age label_change_properties: Change properties label_general: General label_scm: SCM label_plugins: Plugins label_ldap: LDAP label_ldap_authentication: LDAP authentication label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_downloads_abbr: D/L label_optional_description: Optional description label_add_another_file: Add another file label_auto_watch_on: Auto watch label_auto_watch_on_issue_created: Issues I created label_auto_watch_on_issue_contributed_to: Issues I contributed to label_preferences: Preferences label_chronological_order: In chronological order label_reverse_chronological_order: In reverse chronological order label_incoming_emails: Incoming emails label_generate_key: Generate a key label_issue_watchers: Watchers label_message_watchers: Watchers label_wiki_page_watchers: Watchers label_example: Example label_display: Display label_sort: Sort label_ascending: Ascending label_descending: Descending label_date_from_to: From %{start} to %{end} label_days_to_html: "%{days} days up to %{date}" label_wiki_content_added: Wiki page added label_wiki_content_updated: Wiki page updated label_group: Group label_group_plural: Groups label_group_new: New group label_group_anonymous: Anonymous users label_group_non_member: Non member users label_time_entry_plural: Spent time label_version_sharing_none: Not shared label_version_sharing_descendants: With subprojects label_version_sharing_hierarchy: With project hierarchy label_version_sharing_tree: With project tree label_version_sharing_system: With all projects label_update_issue_done_ratios: Update issue done ratios label_copy_source: Source label_copy_target: Target label_copy_same_as_target: Same as target label_display_used_statuses_only: Only display statuses that are used by this tracker label_api_access_key: API access key label_missing_api_access_key: Missing an API access key label_api_access_key_created_on: "API access key created %{value} ago" label_profile: Profile label_subtask: Subtask label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy label_import_notifications: Send email notifications during the import label_principal_search: "Search for user or group:" label_user_search: "Search for user:" label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_issues_visibility_all: All issues label_issues_visibility_public: All non private issues label_issues_visibility_own: Issues created by or assigned to the user label_git_report_last_commit: Report last commit for files and directories label_parent_revision: Parent label_child_revision: Child label_export_options: "%{export_format} export options" label_copy_attachments: Copy attachments label_copy_subtasks: Copy subtasks label_item_position: "%{position} of %{count}" label_completed_versions: Completed versions label_search_for_watchers: Search for watchers to add label_session_expiration: Session expiration label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required label_required_lower: required label_required_administrators: required for administrators label_hidden: Hidden label_attribute_of_project: "Project's %{name}" label_attribute_of_issue: "Issue's %{name}" label_attribute_of_author: "Author's %{name}" label_attribute_of_assigned_to: "Assignee's %{name}" label_attribute_of_user: "User's %{name}" label_attribute_of_fixed_version: "Target version's %{name}" label_attribute_of_object: "%{object_name}'s %{name}" label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects label_gantt_progress_line: Progress line label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_radio_buttons: radio buttons label_link_values_to: Link values to URL label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_add_projects: Add projects label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files label_download_all_attachments: Download all files label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications label_blank_value: blank label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_import_issues: Import issues permission_import_time_entries: Import time entries label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_relations_mapping: Relations mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values label_api: API label_field_format_enumeration: Key/value list label_default_values_for_new_users: Default values for new users label_relations: Relations label_new_project_issue_tab_enabled: Display the "New issue" tab label_new_object_tab_enabled: Display the "+" drop-down label_table_of_contents: Table of contents label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used label_last_notes: Last notes label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user label_nothing_to_preview: Nothing to preview label_inherited_from_parent_project: "Inherited from parent project" label_inherited_from_group: "Inherited from group %{name}" label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_assign_to_me: Assign to me label_default_query: Default query label_edited: Edited label_time_by_author: "%{time} by %{author}" label_involved_principals: Author / Previous assignee button_login: Login button_submit: Submit button_save: Save button_check_all: Check all button_uncheck_all: Uncheck all button_collapse_all: Collapse all button_expand_all: Expand all button_delete: Delete button_create: Create button_create_and_continue: Create and add another button_test: Test button_edit: Edit button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" button_add: Add button_change: Change button_apply: Apply button_clear: Clear button_lock: Lock button_unlock: Unlock button_download: Download button_list: List button_view: View button_move: Move button_move_and_follow: Move and follow button_back: Back button_cancel: Cancel button_activate: Activate button_disable: Disable button_sort: Sort button_log_time: Log time button_rollback: Rollback to this version button_watch: Watch button_unwatch: Unwatch button_reply: Reply button_archive: Archive button_unarchive: Unarchive button_reset: Reset button_rename: Rename button_change_password: Change password button_copy: Copy button_copy_and_follow: Copy and follow button_copy_link: Copy link button_annotate: Annotate button_fetch_changesets: Fetch commits button_update: Update button_configure: Configure button_quote: Quote button_show: Show button_hide: Hide button_edit_section: Edit this section button_export: Export button_delete_my_account: Delete my account button_close: Close button_reopen: Reopen button_import: Import button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark button_filter: Filter button_actions: Actions button_add_subtask: Add subtask button_save_object: "Save %{object_name}" button_edit_object: "Edit %{object_name}" button_delete_object: "Delete %{object_name}" button_create_and_follow: Create and follow button_apply_issues_filter: Apply issues filter status_active: active status_registered: registered status_locked: locked project_status_active: active project_status_closed: closed project_status_archived: archived project_status_scheduled_for_deletion: scheduled for deletion version_status_open: open version_status_locked: locked version_status_closed: closed field_active: Active text_select_mail_notifications: Select actions for which email notifications should be sent. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Are you sure you want to delete this project and related data? text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." text_subprojects_bulk_destroy: "including its subproject(s): %{value}" text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? text_users_bulk_destroy_head: 'You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution.' text_users_bulk_destroy_confirm: 'To confirm, please enter "%{yes}" below.' text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Are you sure? text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_changed_no_detail: "%{label} updated" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: issue beginning this day text_tip_issue_end_day: issue ending this day text_tip_issue_begin_end_day: issue beginning and ending this day text_project_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed.' text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." text_characters_must_contain: "Must contain %{character_classes}." text_length_between: "Length between %{min} and %{max} characters." text_tracker_no_workflow: No workflow defined for this tracker text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows text_unallowed_characters: Unallowed characters text_comma_separated: Multiple values allowed (comma separated). text_line_separated: Multiple values allowed (one line for each value). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Issue %{id} has been reported by %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" text_issue_category_destroy_assignments: Remove category assignments text_issue_category_reassign_to: Reassign issues to this category text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." text_load_default_configuration: Load the default configuration text_status_changed_by_changeset: "Applied in changeset %{value}." text_time_logged_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' text_issues_destroy_descendants_confirmation: "This will also delete %{count} subtask(s)." text_time_entries_destroy_confirmation: 'Are you sure you want to delete the selected time entr(y/ies)?' text_select_project_modules: 'Select modules to enable for this project:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Attachments directory writable text_plugin_assets_writable: Plugin assets directory writable text_all_migrations_have_been_run: All database migrations have been run text_minimagick_available: MiniMagick available (optional) text_convert_available: ImageMagick convert available (optional) text_gs_available: ImageMagick PDF support available (optional) text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" text_destroy_time_entries: Delete reported hours text_assign_time_entries_to_project: Assign reported hours to the project text_reassign_time_entries: 'Reassign reported hours to this issue:' text_user_wrote: "%{value} wrote:" text_user_wrote_in: "%{value} wrote in %{link}:" text_enumeration_destroy_question: "%{count} objects are assigned to the value “%{name}â€." text_enumeration_category_reassign_to: 'Reassign them to this value:' text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_zoom_in: Zoom in text_zoom_out: Zoom out text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." text_scm_path_encoding_note: "Default: UTF-8" text_subversion_repository_note: "Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. text_issue_conflict_resolution_overwrite: "Apply my changes anyway (previous notes will be kept but some changes may be overwritten)" text_issue_conflict_resolution_add_notes: "Add my notes and discard my other changes" text_issue_conflict_resolution_cancel: "Discard all my changes and redisplay %{link}" text_account_destroy_confirmation: "Are you sure you want to proceed?\nYour account will be permanently deleted, with no way to reactivate it." text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." text_project_closed: This project is closed and read-only. text_turning_multiple_off: "If you disable multiple values, multiple values will be removed in order to preserve only one value per item." text_select_apply_tracker: "Select tracker" text_select_apply_issue_status: "Select issue status" text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. text_no_subject: no subject text_allowed_queries_to_select: Public (to any users) queries only selectable text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. default_role_manager: Manager default_role_developer: Developer default_role_reporter: Reporter default_tracker_bug: Bug default_tracker_feature: Feature default_tracker_support: Support default_issue_status_new: New default_issue_status_in_progress: In Progress default_issue_status_resolved: Resolved default_issue_status_feedback: Feedback default_issue_status_closed: Closed default_issue_status_rejected: Rejected default_doc_category_user: User documentation default_doc_category_tech: Technical documentation default_priority_low: Low default_priority_normal: Normal default_priority_high: High default_priority_urgent: Urgent default_priority_immediate: Immediate default_activity_design: Design default_activity_development: Development enumeration_issue_priorities: Issue priorities enumeration_doc_categories: Document categories enumeration_activities: Activities (time tracking) enumeration_system_activity: System Activity description_filter: Filter description_search: Searchfield description_choose_project: Projects description_project_scope: Search scope description_notes: Notes description_message_content: Message content description_query_sort_criteria_attribute: Sort attribute description_query_sort_criteria_direction: Sort direction description_user_mail_notification: Mail notification settings description_available_columns: Available Columns description_selected_columns: Selected Columns description_all_columns: All Columns description_issue_category_reassign: Choose issue category description_wiki_subpages_reassign: Choose new parent page text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed.' text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: "Yes" label_login_required_no: "No, allow anonymous access to public projects" text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_import_time_entries: Import time entries label_import_users: Import users sudo_mode_new_info_html: What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected. twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: 'Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication.' twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: 'Enable authenticator app' twofa_currently_active: "Currently active: %{twofa_scheme_name}" twofa_not_active: "Not activated" twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: "Please select the two-factor scheme you would like to use:" twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: "Two-factor authentication successfully enabled using %{field}." twofa_mail_body_security_notification_unpaired: "Two-factor authentication disabled for your account." twofa_mail_body_backup_codes_generated: "New two-factor authentication backup codes generated." twofa_mail_body_backup_code_used: "A two-factor authentication backup code has been used." twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. twofa_text_group_required: "This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users." twofa_text_group_disabled: "This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled." text_user_destroy_confirmation: "Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below." text_project_destroy_enter_identifier: "To confirm, please enter the project's identifier (%{identifier}) below." field_name_or_email_or_login: Name, email or login redmine-6.0.5/config/locales/es-PA.yml000066400000000000000000002255711500112024600174670ustar00rootroot00000000000000# Spanish translations for Rails # by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) # Redmine spanish translation: # by J. Cayetano Delgado (Cayetano _dot_ Delgado _at_ ioko _dot_ com) # Contributors: @borjacampina @jgutierrezvega # Modified by: Leonel Iturralde # For use to spanish panama es-PA: number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) separator: "." # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) delimiter: "," # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) precision: 3 # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) format: "%n %u" unit: "$" # These three are to override number.format and are optional separator: "," delimiter: "." precision: 2 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: half_a_minute: "medio minuto" less_than_x_seconds: one: "menos de 1 segundo" other: "menos de %{count} segundos" x_seconds: one: "1 segundo" other: "%{count} segundos" less_than_x_minutes: one: "menos de 1 minuto" other: "menos de %{count} minutos" x_minutes: one: "1 minuto" other: "%{count} minutos" about_x_hours: one: "alrededor de 1 hora" other: "alrededor de %{count} horas" x_hours: one: "1 hora" other: "%{count} horas" x_days: one: "1 día" other: "%{count} días" about_x_months: one: "alrededor de 1 mes" other: "alrededor de %{count} meses" x_months: one: "1 mes" other: "%{count} meses" about_x_years: one: "alrededor de 1 año" other: "alrededor de %{count} años" over_x_years: one: "más de 1 año" other: "más de %{count} años" almost_x_years: one: "casi 1 año" other: "casi %{count} años" activerecord: errors: template: header: one: "no se pudo guardar este %{model} porque se encontró 1 error" other: "no se pudo guardar este %{model} porque se encontraron %{count} errores" # The variable :count is also available body: "Se encontraron problemas con los siguientes campos:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: inclusion: "no está incluido en la lista" exclusion: "está reservado" invalid: "no es válido" confirmation: "no coincide con la confirmación" accepted: "debe ser aceptado" empty: "no puede estar vacío" blank: "no puede estar en blanco" too_long: "es demasiado largo (%{count} caracteres máximo)" too_short: "es demasiado corto (%{count} caracteres mínimo)" wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" taken: "ya está en uso" not_a_number: "no es un número" greater_than: "debe ser mayor que %{count}" greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" equal_to: "debe ser igual a %{count}" less_than: "debe ser menor que %{count}" less_than_or_equal_to: "debe ser menor que o igual a %{count}" odd: "debe ser impar" even: "debe ser par" greater_than_start_date: "debe ser posterior a la fecha de comienzo" not_same_project: "no pertenece al mismo proyecto" circular_dependency: "Esta relación podría crear una dependencia circular" cant_link_an_issue_with_a_descendant: "Esta incidencia no puede ser ligada a una de estas tareas" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" # Append your own errors here or at the model/attributes scope. models: # Overrides default messages attributes: # Overrides model and default messages. direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%d de %b" long: "%d de %B de %Y" day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%A, %d de %B de %Y %H:%M:%S %z" time: "%H:%M" short: "%d de %b %H:%M" long: "%d de %B de %Y %H:%M" am: "am" pm: "pm" # Used in array.to_sentence. support: array: sentence_connector: "y" actionview_instancetag_blank_option: Por favor seleccione button_activate: Activar button_add: Añadir button_annotate: Anotar button_apply: Aceptar button_archive: Archivar button_back: Atrás button_cancel: Cancelar button_change: Cambiar button_change_password: Cambiar contraseña button_check_all: Seleccionar todo button_clear: Anular button_configure: Configurar button_copy: Copiar button_create: Crear button_delete: Borrar button_download: Descargar button_edit: Modificar button_list: Listar button_lock: Bloquear button_log_time: Tiempo dedicado button_login: Acceder button_move: Mover button_quote: Citar button_rename: Renombrar button_reply: Responder button_reset: Reestablecer button_rollback: Volver a esta versión button_save: Guardar button_sort: Ordenar button_submit: Aceptar button_test: Probar button_unarchive: Desarchivar button_uncheck_all: No seleccionar nada button_unlock: Desbloquear button_unwatch: No monitorizar button_update: Actualizar button_view: Ver button_watch: Monitorizar default_activity_design: Diseño default_activity_development: Desarrollo default_doc_category_tech: Documentación técnica default_doc_category_user: Documentación de usuario default_issue_status_in_progress: En curso default_issue_status_closed: Cerrada default_issue_status_feedback: Comentarios default_issue_status_new: Nueva default_issue_status_rejected: Rechazada default_issue_status_resolved: Resuelta default_priority_high: Alta default_priority_immediate: Inmediata default_priority_low: Baja default_priority_normal: Normal default_priority_urgent: Urgente default_role_developer: Desarrollador default_role_manager: Jefe de proyecto default_role_reporter: Informador default_tracker_bug: Errores default_tracker_feature: Tareas default_tracker_support: Soporte enumeration_activities: Actividades (tiempo dedicado) enumeration_doc_categories: Categorías del documento enumeration_issue_priorities: Prioridad de las incidencias error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}" error_issue_not_found_in_project: 'La incidencia no se encuentra o no está asociada a este proyecto' error_scm_annotate: "No existe la entrada o no ha podido ser anotada" error_scm_annotate_big_text_file: "La entrada no puede anotarse, al superar el tamaño máximo para archivos de texto." error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}" error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio." error_ldap_bind_credentials: "Cuenta/Contraseña LDAP incorrecta" field_account: Cuenta field_activity: Actividad field_admin: Administrador field_assignable: Se pueden asignar incidencias a este perfil field_assigned_to: Asignado a field_attr_firstname: Cualidad del nombre field_attr_lastname: Cualidad del apellido field_attr_login: Cualidad del identificador field_attr_mail: Cualidad del Email field_auth_source: Modo de identificación field_author: Autor field_base_dn: DN base field_category: Categoría field_column_names: Columnas field_comments: Comentario field_comments_sorting: Mostrar comentarios field_created_on: Creado field_default_value: Estado por defecto field_delay: Retraso field_description: Descripción field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Fecha fin field_effective_date: Fecha field_estimated_hours: Tiempo estimado field_field_format: Formato field_filename: Archivo field_filesize: Tamaño field_firstname: Nombre field_fixed_version: Versión prevista field_hide_mail: Ocultar mi dirección de correo field_homepage: Sitio web field_host: Anfitrión field_hours: Horas field_identifier: Identificador field_is_closed: Incidencia resuelta field_is_default: Estado por defecto field_is_filter: Usado como filtro field_is_for_all: Para todos los proyectos field_is_in_roadmap: Consultar las incidencias en la planificación field_is_public: Público field_is_required: Obligatorio field_issue: Incidencia field_issue_to: Incidencia relacionada field_language: Idioma field_last_login_on: Última conexión field_lastname: Apellido field_login: Identificador field_mail: Correo electrónico field_mail_notification: Notificaciones por correo field_max_length: Longitud máxima field_min_length: Longitud mínima field_name: Nombre field_new_password: Nueva contraseña field_notes: Notas field_onthefly: Creación del usuario "al vuelo" field_parent: Proyecto padre field_parent_title: Página padre field_password: Contraseña field_password_confirmation: Confirmación field_port: Puerto field_possible_values: Valores posibles field_priority: Prioridad field_project: Proyecto field_redirect_existing_links: Redireccionar enlaces existentes field_regexp: Expresión regular field_role: Perfil field_searchable: Incluir en las búsquedas field_spent_on: Fecha field_start_date: Fecha de inicio field_start_page: Página principal field_status: Estado field_subject: Asunto field_subproject: Proyecto secundario field_summary: Resumen field_time_zone: Zona horaria field_title: Título field_tracker: Tipo field_type: Tipo field_updated_on: Actualizado field_url: URL field_user: Usuario field_value: Valor field_version: Versión general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-15 general_csv_separator: ',' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'Spanish/Panama (Español/Panamá)' general_text_No: 'No' general_text_Yes: 'Sí' general_text_no: 'no' general_text_yes: 'sí' label_activity: Actividad label_add_another_file: Añadir otro archivo label_add_note: Añadir una nota label_added: añadido label_added_time_by: "Añadido por %{author} hace %{age}" label_administration: Administración label_age: Edad label_ago: hace label_all: todos label_all_words: Todas las palabras label_and_its_subprojects: "%{value} y proyectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Incidencias que me asignaron label_associated_revisions: Revisiones asociadas label_attachment: Archivo label_attachment_delete: Borrar el archivo label_attachment_new: Nuevo archivo label_attachment_plural: Archivos label_attribute: Cualidad label_attribute_plural: Cualidades label_auth_source: Modo de autenticación label_auth_source_new: Nuevo modo de autenticación label_auth_source_plural: Modos de autenticación label_authentication: Autenticación label_blocked_by: bloqueado por label_blocks: bloquea a label_board: Foro label_board_new: Nuevo foro label_board_plural: Foros label_boolean: Booleano label_bulk_edit_selected_issues: Editar las incidencias seleccionadas label_calendar: Calendario label_change_plural: Cambios label_change_properties: Cambiar propiedades label_change_status: Cambiar el estado label_change_view_all: Ver todos los cambios label_changes_details: Detalles de todos los cambios label_changeset_plural: Cambios label_chronological_order: En orden cronológico label_closed_issues: cerrada label_closed_issues_plural: cerradas label_x_open_issues_abbr: zero: 0 abiertas one: 1 abierta other: "%{count} abiertas" label_x_closed_issues_abbr: zero: 0 cerradas one: 1 cerrada other: "%{count} cerradas" label_comment: Comentario label_comment_add: Añadir un comentario label_comment_added: Comentario añadido label_comment_delete: Borrar comentarios label_comment_plural: Comentarios label_x_comments: zero: sin comentarios one: 1 comentario other: "%{count} comentarios" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación label_contains: contiene label_copied: copiado label_copy_workflow_from: Copiar flujo de trabajo desde label_current_status: Estado actual label_current_version: Versión actual label_custom_field: Campo personalizado label_custom_field_new: Nuevo campo personalizado label_custom_field_plural: Campos personalizados label_date: Fecha label_date_from: Desde label_date_range: Rango de fechas label_date_to: Hasta label_day_plural: días label_default: Por defecto label_default_columns: Columnas por defecto label_deleted: suprimido label_details: Detalles label_diff_inline: en línea label_diff_side_by_side: cara a cara label_disabled: deshabilitado label_display_per_page: "Por página: %{value}" label_document: Documento label_document_added: Documento añadido label_document_new: Nuevo documento label_document_plural: Documentos label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de label_enumeration_new: Nuevo valor label_enumerations: Listas de valores label_environment: Entorno label_equals: igual label_example: Ejemplo label_export_to: 'Exportar a:' label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds label_feeds_access_key_created_on: "Clave de acceso por Atom creada hace %{value}" label_file_added: Archivo añadido label_file_plural: Archivos label_filter_add: Añadir el filtro label_filter_plural: Filtros label_float: Flotante label_follows: posterior a label_gantt: Gantt label_general: General label_generate_key: Generar clave label_help: Ayuda label_history: Histórico label_home: Inicio label_in: en label_in_less_than: en menos que label_in_more_than: en más que label_incoming_emails: Correos entrantes label_index_by_date: Ãndice por fecha label_index_by_title: Ãndice por título label_information: Información label_information_plural: Información label_integer: Número label_internal: Interno label_issue: Incidencias label_issue_added: Incidencias añadida label_issue_category: Categoría de las incidencias label_issue_category_new: Nueva categoría label_issue_category_plural: Categorías de las incidencias label_issue_new: Nueva incidencia label_issue_plural: Incidencias label_issue_status: Estado de la incidencias label_issue_status_new: Nuevo estado label_issue_status_plural: Estados de las incidencias label_issue_tracking: Incidencias label_issue_updated: Incidencia actualizada label_issue_view_all: Ver todas las incidencias label_issue_watchers: Seguidores label_issues_by: "Incidencias por %{value}" label_jump_to_a_project: Ir al proyecto... label_language_based: Basado en el idioma label_last_changes: "últimos %{count} cambios" label_last_month: último mes label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisiones label_ldap_authentication: Autenticación LDAP label_less_than_ago: hace menos de label_list: Lista label_loading: Cargando... label_logged_as: Conectado como label_login: Iniciar sesión label_logout: Terminar sesión label_max_size: Tamaño máximo label_me: yo mismo label_member: Miembro label_member_new: Nuevo miembro label_member_plural: Miembros label_message_last: Último mensaje label_message_new: Nuevo mensaje label_message_plural: Mensajes label_message_posted: Mensaje añadido label_min_max_length: Longitud mín - máx label_modified: modificado label_module_plural: Módulos label_month: Mes label_months_from: meses de label_more_than_ago: hace más de label_my_account: Mi cuenta label_my_page: Mi página label_my_projects: Mis proyectos label_new: Nuevo label_new_statuses_allowed: Nuevos estados autorizados label_news: Noticia label_news_added: Noticia añadida label_news_latest: Últimas noticias label_news_new: Nueva noticia label_news_plural: Noticias label_news_view_all: Ver todas las noticias label_next: Siguiente label_no_change_option: (Sin cambios) label_no_data: Ningún dato disponible label_nobody: nadie label_none: ninguno label_not_contains: no contiene label_not_equals: no igual label_open_issues: abierta label_open_issues_plural: abiertas label_optional_description: Descripción opcional label_options: Opciones label_overview: Vistazo label_password_lost: ¿Olvidaste la contraseña? label_permissions: Permisos label_permissions_report: Informe de permisos label_plugins: Extensiones label_precedes: anterior a label_preferences: Preferencias label_preview: Previsualizar label_previous: Anterior label_project: Proyecto label_project_all: Todos los proyectos label_project_latest: Últimos proyectos label_project_new: Nuevo proyecto label_project_plural: Proyectos label_x_projects: zero: sin proyectos one: 1 proyecto other: "%{count} proyectos" label_public_projects: Proyectos públicos label_query: Consulta personalizada label_query_new: Nueva consulta label_query_plural: Consultas personalizadas label_read: Leer... label_register: Registrar label_registered_on: Inscrito el label_registration_activation_by_email: activación de cuenta por correo label_registration_automatic_activation: activación automática de cuenta label_registration_manual_activation: activación manual de cuenta label_related_issues: Incidencias relacionadas label_relates_to: relacionada con label_relation_delete: Eliminar relación label_relation_new: Nueva relación label_renamed: renombrado label_reply_plural: Respuestas label_report: Informe label_report_plural: Informes label_reported_issues: Incidencias registradas por mí label_repository: Repositorio label_repository_plural: Repositorios label_result_plural: Resultados label_reverse_chronological_order: En orden cronológico inverso label_revision: Revisión label_revision_plural: Revisiones label_roadmap: Planificación label_roadmap_due_in: "Finaliza en %{value}" label_roadmap_no_issues: No hay incidencias para esta versión label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles y permisos label_role_new: Nuevo perfil label_role_plural: Perfiles label_scm: SCM label_search: Búsqueda label_search_titles_only: Buscar sólo en títulos label_send_information: Enviar información de la cuenta al usuario label_send_test_email: Enviar un correo de prueba label_settings: Configuración label_show_completed_versions: Muestra las versiones terminadas label_sort_by: "Ordenar por %{value}" label_spent_time: Tiempo dedicado label_statistics: Estadísticas label_stay_logged_in: Mantener la sesión abierta label_string: Texto label_subproject_plural: Proyectos secundarios label_text: Texto largo label_theme: Tema label_this_month: este mes label_this_week: esta semana label_this_year: este año label_time_tracking: Control de tiempo label_today: hoy label_topic_plural: Temas label_total: Total label_tracker: Tipo label_tracker_new: Nuevo tipo label_tracker_plural: Tipos de incidencias label_updated_time: "Actualizado hace %{value}" label_updated_time_by: "Actualizado por %{author} hace %{age}" label_used_by: Utilizado por label_user: Usuario label_user_activity: "Actividad de %{value}" label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." label_user_new: Nuevo usuario label_user_plural: Usuarios label_version: Versión label_version_new: Nueva versión label_version_plural: Versiones label_view_diff: Ver diferencias label_view_revisions: Ver las revisiones label_watched_issues: Incidencias monitorizadas label_week: Semana label_wiki: Wiki label_wiki_edit: Modificación Wiki label_wiki_edit_plural: Modificaciones Wiki label_wiki_page: Página Wiki label_wiki_page_plural: Páginas Wiki label_workflow: Flujo de trabajo label_year: Año label_yesterday: ayer mail_body_account_activation_request: "Se ha inscrito un nuevo usuario (%{value}). La cuenta está pendiende de aprobación:" mail_body_account_information: Información sobre su cuenta mail_body_account_information_external: "Puede usar su cuenta %{value} para conectarse." mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' mail_body_reminder: "%{count} incidencia(s) asignadas a ti finalizan en los próximos %{days} días:" mail_subject_account_activation_request: "Incidencia de activación de cuenta %{value}" mail_subject_lost_password: "Tu contraseña del %{value}" mail_subject_register: "Activación de la cuenta del %{value}" mail_subject_reminder: "%{count} incidencia(s) finalizan en los próximos %{days} días" notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. notice_account_invalid_credentials: Usuario o contraseña inválido. notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. notice_account_password_updated: Contraseña modificada correctamente. notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte del administrador." notice_account_register_done: Cuenta creada correctamente. Para activarla, haga clic sobre el enlace que le ha sido enviado por correo. notice_account_updated: Cuenta actualizada correctamente. notice_account_wrong_password: Contraseña incorrecta. notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación externa. No es posible cambiar la contraseña. notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ha ocurrido un error mientras enviando el correo (%{value})" notice_email_sent: "Se ha enviado un correo a %{value}" notice_failed_to_save_issues: "Imposible grabar %{count} incidencia(s) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: Su clave de acceso para Atom ha sido reiniciada. notice_file_not_found: La página a la que intenta acceder no existe. notice_locking_conflict: Los datos han sido modificados por otro usuario. notice_not_authorized: No tiene autorización para acceder a esta página. notice_successful_connection: Conexión correcta. notice_successful_create: Creación correcta. notice_successful_delete: Borrado correcto. notice_successful_update: Modificación correcta. notice_unable_delete_version: No se puede borrar la versión permission_add_issue_notes: Añadir notas permission_add_issue_watchers: Añadir seguidores permission_add_issues: Añadir incidencias permission_add_messages: Enviar mensajes permission_browse_repository: Hojear repositiorio permission_comment_news: Comentar noticias permission_commit_access: Acceso de escritura permission_delete_issues: Borrar incidencias permission_delete_messages: Borrar mensajes permission_delete_own_messages: Borrar mensajes propios permission_delete_wiki_pages: Borrar páginas wiki permission_delete_wiki_pages_attachments: Borrar archivos permission_edit_issue_notes: Modificar notas permission_edit_issues: Modificar incidencias permission_edit_messages: Modificar mensajes permission_edit_own_issue_notes: Modificar notas propias permission_edit_own_messages: Editar mensajes propios permission_edit_own_time_entries: Modificar tiempos dedicados propios permission_edit_project: Modificar proyecto permission_edit_time_entries: Modificar tiempos dedicados permission_edit_wiki_pages: Modificar páginas wiki permission_log_time: Anotar tiempo dedicado permission_manage_boards: Administrar foros permission_manage_categories: Administrar categorías de incidencias permission_manage_files: Administrar archivos permission_manage_issue_relations: Administrar relación con otras incidencias permission_manage_members: Administrar miembros permission_manage_news: Administrar noticias permission_manage_public_queries: Administrar consultas públicas permission_manage_repository: Administrar repositorio permission_manage_versions: Administrar versiones permission_manage_wiki: Administrar wiki permission_protect_wiki_pages: Proteger páginas wiki permission_rename_wiki_pages: Renombrar páginas wiki permission_save_queries: Grabar consultas permission_select_project_modules: Seleccionar módulos del proyecto permission_view_calendar: Ver calendario permission_view_changesets: Ver cambios permission_view_documents: Ver documentos permission_view_files: Ver archivos permission_view_gantt: Ver diagrama de Gantt permission_view_issue_watchers: Ver lista de seguidores permission_view_messages: Ver mensajes permission_view_time_entries: Ver tiempo dedicado permission_view_wiki_edits: Ver histórico del wiki permission_view_wiki_pages: Ver wiki project_module_boards: Foros project_module_documents: Documentos project_module_files: Archivos project_module_issue_tracking: Incidencias project_module_news: Noticias project_module_repository: Repositorio project_module_time_tracking: Control de tiempo project_module_wiki: Wiki setting_activity_days_default: Días a mostrar en la actividad de proyecto setting_app_title: Título de la aplicación setting_attachment_max_size: Tamaño máximo del archivo setting_autofetch_changesets: Autorellenar los commits del repositorio setting_autologin: Inicio de sesión automático setting_commit_fix_keywords: Palabras clave para la corrección setting_commit_ref_keywords: Palabras clave para la referencia setting_cross_project_issue_relations: Permitir relacionar incidencias de distintos proyectos setting_date_format: Formato de fecha setting_default_language: Idioma por defecto setting_default_projects_public: Los proyectos nuevos son públicos por defecto setting_diff_max_lines_displayed: Número máximo de diferencias mostradas setting_display_subprojects_issues: Mostrar por defecto incidencias de proy. secundarios en el principal setting_emails_footer: Pie de mensajes setting_enabled_scm: Activar SCM setting_feeds_limit: Límite de contenido para sindicación setting_gravatar_enabled: Usar iconos de usuario (Gravatar) setting_host_name: Nombre y ruta del servidor setting_issue_list_default_columns: Columnas por defecto para la lista de incidencias setting_issues_export_limit: Límite de exportación de incidencias setting_login_required: Se requiere identificación setting_mail_from: Correo desde el que enviar mensajes setting_mail_handler_api_enabled: Activar SW para mensajes entrantes setting_mail_handler_api_key: Clave de la API setting_per_page_options: Objetos por página setting_plain_text_mail: sólo texto plano (no HTML) setting_protocol: Protocolo setting_self_registration: Registro permitido setting_sequential_project_identifiers: Generar identificadores de proyecto setting_sys_api_enabled: Habilitar SW para la gestión del repositorio setting_text_formatting: Formato de texto setting_time_format: Formato de hora setting_user_format: Formato de nombre de usuario setting_welcome_text: Texto de bienvenida setting_wiki_compression: Compresión del historial del Wiki status_active: activo status_locked: bloqueado status_registered: registrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar las horas al proyecto text_caracters_maximum: "%{count} caracteres como máximo." text_caracters_minimum: "%{count} caracteres como mínimo." text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Cuenta de administrador por defecto modificada text_destroy_time_entries: Borrar las horas text_destroy_time_entries_question: Existen %{hours} horas asignadas a la incidencia que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio text_issue_added: "Incidencia %{id} añadida por %{author}." text_issue_category_destroy_assignments: Dejar las incidencias sin categoría text_issue_category_destroy_question: "Algunas incidencias (%{count}) están asignadas a esta categoría. ¿Qué desea hacer?" text_issue_category_reassign_to: Reasignar las incidencias a la categoría text_issue_updated: "La incidencia %{id} ha sido actualizada por %{author}." text_issues_destroy_confirmation: '¿Seguro que quiere borrar las incidencias seleccionadas?' text_issues_ref_in_commit_messages: Referencia y incidencia de corrección en los mensajes text_length_between: "Longitud entre %{min} y %{max} caracteres." text_load_default_configuration: Cargar la configuración por defecto text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a incidencias. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto? text_reassign_time_entries: 'Reasignar las horas a esta incidencia:' text_regexp_info: ej. ^[A-Z0-9]+$ text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente." text_minimagick_available: MiniMagick disponible (opcional) text_select_mail_notifications: Seleccionar los eventos a notificar text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' text_status_changed_by_changeset: "Aplicado en los cambios %{value}" text_subprojects_destroy_warning: "Los proyectos secundarios: %{value} también se eliminarán" text_tip_issue_begin_day: tarea que comienza este día text_tip_issue_begin_end_day: tarea que comienza y termina este día text_tip_issue_end_day: tarea que termina este día text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de incidencia text_unallowed_characters: Caracteres no permitidos text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, incidencia de las que usted sea autor o asignadas a usted)." text_user_wrote: "%{value} escribió:" text_user_wrote_in: "%{value} escribió (%{link}):" text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? text_workflow_edit: Seleccionar un flujo de trabajo para actualizar text_plugin_assets_writable: Se puede escribir en el directorio público de las extensiones warning_attachments_not_saved: "No se han podido grabar %{count} archivos." button_create_and_continue: Crear y continuar text_custom_field_possible_values_info: 'Un valor en cada línea' label_display: Mostrar field_editable: Modificable setting_repository_log_display_limit: Número máximo de revisiones mostradas en el archivo de trazas setting_file_max_size_displayed: Tamaño máximo de los archivos de texto mostrados field_watcher: Seguidor field_content: Contenido label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente label_date_from_to: Desde %{start} hasta %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Esta página tiene %{descendants} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? text_wiki_page_reassign_children: Reasignar páginas hijas a esta página text_wiki_page_nullify_children: Dejar páginas hijas como páginas raíz text_wiki_page_destroy_children: Eliminar páginas hijas y todos sus descendientes setting_password_min_length: Longitud mínima de la contraseña field_group_by: Agrupar resultados por mail_subject_wiki_content_updated: "La página wiki '%{id}' ha sido actualizada" label_wiki_content_added: Página wiki añadida mail_subject_wiki_content_added: "Se ha añadido la página wiki '%{id}'." mail_body_wiki_content_added: "%{author} ha añadido la página wiki '%{id}'." label_wiki_content_updated: Página wiki actualizada mail_body_wiki_content_updated: La página wiki '%{id}' ha sido actualizada por %{author}. permission_add_project: Crear proyecto setting_new_project_user_role_id: Permiso asignado a un usuario no-administrador para crear proyectos label_view_all_revisions: Ver todas las revisiones label_tag: Etiqueta label_branch: Rama error_no_tracker_in_project: Este proyecto no tiene asociados tipos de incidencias. Por favor, revise la configuración. error_no_default_issue_status: No se ha definido un estado de incidencia por defecto. Por favor, revise la configuración (en "Administración" -> "Estados de las incidencias"). text_journal_changed: "%{label} cambiado de %{old} a %{new}" text_journal_set_to: "%{label} establecido a %{value}" text_journal_deleted: "%{label} eliminado (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Nuevo grupo label_time_entry_plural: Tiempo dedicado text_journal_added: "Añadido %{label} %{value}" field_active: Activo enumeration_system_activity: Actividad del sistema permission_delete_issue_watchers: Borrar seguidores version_status_closed: cerrado version_status_locked: bloqueado version_status_open: abierto error_can_not_reopen_issue_on_closed_version: No se puede reabrir una incidencia asignada a una versión cerrada label_user_anonymous: Anónimo button_move_and_follow: Mover y seguir setting_default_projects_modules: Módulos activados por defecto en proyectos nuevos setting_gravatar_default: Imagen Gravatar por defecto field_sharing: Compartir button_copy_and_follow: Copiar y seguir label_version_sharing_hierarchy: Con la jerarquía del proyecto label_version_sharing_tree: Con el árbol del proyecto label_version_sharing_descendants: Con proyectos hijo label_version_sharing_system: Con todos los proyectos label_version_sharing_none: No compartir error_can_not_archive_project: Este proyecto no puede ser archivado label_copy_source: Fuente setting_issue_done_ratio: Calcular el ratio de tareas realizadas con setting_issue_done_ratio_issue_status: Usar el estado de tareas error_issue_done_ratios_not_updated: Ratios de tareas realizadas no actualizado. error_workflow_copy_target: Por favor, elija categoría(s) y perfil(es) destino setting_issue_done_ratio_issue_field: Utilizar el campo de incidencia label_copy_same_as_target: El mismo que el destino label_copy_target: Destino notice_issue_done_ratios_updated: Ratios de tareas realizadas actualizados. error_workflow_copy_source: Por favor, elija una categoría o rol de origen label_update_issue_done_ratios: Actualizar ratios de tareas realizadas setting_start_of_week: Comenzar las semanas en permission_view_issues: Ver incidencias label_display_used_statuses_only: Sólo mostrar los estados usados por este tipo de incidencia label_revision_id: Revisión %{value} label_api_access_key: Clave de acceso de la API label_api_access_key_created_on: Clave de acceso de la API creada hace %{value} label_feeds_access_key: Clave de acceso Atom notice_api_access_key_reseted: Clave de acceso a la API regenerada. setting_rest_api_enabled: Activar servicio web REST label_missing_api_access_key: Clave de acceso a la API ausente label_missing_feeds_access_key: Clave de accesso Atom ausente button_show: Mostrar text_line_separated: Múltiples valores permitidos (un valor en cada línea). setting_mail_handler_body_delimiters: Truncar correos tras una de estas líneas permission_add_subprojects: Crear subproyectos label_subproject_new: Nuevo subproyecto text_own_membership_delete_confirmation: |- Está a punto de eliminar algún o todos sus permisos y podría perder la posibilidad de modificar este proyecto tras hacerlo. ¿Está seguro de querer continuar? label_close_versions: Cerrar versiones completadas label_board_sticky: Pegajoso label_board_locked: Bloqueado permission_export_wiki_pages: Exportar páginas wiki setting_cache_formatted_text: Cachear texto formateado permission_manage_project_activities: Gestionar actividades del proyecto error_unable_delete_issue_status: Fue imposible eliminar el estado de la incidencia (%{value}) label_profile: Perfil permission_manage_subtasks: Gestionar subtareas field_parent_issue: Tarea padre label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado error_unable_to_connect: Fue imposible conectarse (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker_html: Este tipo contiene incidencias y no puede ser eliminado.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Fallo al guardar miembro(s): %{errors}." text_zoom_out: Alejar text_zoom_in: Acercar notice_unable_delete_time_entry: Fue imposible eliminar la entrada de tiempo dedicado. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendario button_edit_associated_wikipage: "Editar paginas Wiki asociadas: %{page_title}" field_text: Campo de texto setting_default_notification_option: Opcion de notificacion por defecto label_user_mail_option_only_my_events: Solo para objetos que soy seguidor o estoy involucrado label_user_mail_option_none: Sin eventos field_member_of_group: Asignado al grupo field_assigned_to_role: Asignado al perfil notice_not_authorized_archived_project: El proyecto al que intenta acceder ha sido archivado. label_principal_search: "Buscar por usuario o grupo:" label_user_search: "Buscar por usuario:" field_visible: Visible setting_emails_header: Encabezado de Correos setting_commit_logtime_activity_id: Actividad de los tiempos registrados text_time_logged_by_changeset: Aplicado en los cambios %{value}. setting_commit_logtime_enabled: Habilitar registro de horas notice_gantt_chart_truncated: Se recortó el diagrama porque excede el número máximo de elementos que pueden ser mostrados (%{max}) setting_gantt_items_limit: Número máximo de elementos mostrados en el diagrama de Gantt field_warn_on_leaving_unsaved: Avisarme cuando vaya a abandonar una página con texto no guardado text_warn_on_leaving_unsaved: Esta página contiene texto no guardado y si la abandona sus cambios se perderán label_my_queries: Mis consultas personalizadas text_journal_changed_no_detail: "Se actualizó %{label}" label_news_comment_added: Comentario añadido a noticia button_expand_all: Expandir todo button_collapse_all: Contraer todo label_additional_workflow_transitions_for_assignee: Transiciones adicionales permitidas cuando la incidencia está asignada al usuario label_additional_workflow_transitions_for_author: Transiciones adicionales permitidas cuando el usuario es autor de la incidencia label_bulk_edit_selected_time_entries: Editar en bloque las horas seleccionadas text_time_entries_destroy_confirmation: ¿Está seguro de querer eliminar (la hora seleccionada/las horas seleccionadas)? label_role_anonymous: Anónimo label_role_non_member: No miembro label_issue_note_added: Nota añadida label_issue_status_updated: Estado actualizado label_issue_priority_updated: Prioridad actualizada label_issues_visibility_own: Incidencias creadas por el usuario o asignadas a él field_issues_visibility: Visibilidad de las incidencias label_issues_visibility_all: Todas las incidencias permission_set_own_issues_private: Poner las incidencias propias como públicas o privadas field_is_private: Privada permission_set_issues_private: Poner incidencias como públicas o privadas label_issues_visibility_public: Todas las incidencias no privadas text_issues_destroy_descendants_confirmation: Se procederá a borrar también %{count} subtarea(s). field_commit_logs_encoding: Codificación de los mensajes de commit field_scm_path_encoding: Codificación de las rutas text_scm_path_encoding_note: "Por defecto: UTF-8" field_path_to_repository: Ruta al repositorio field_root_directory: Directorio raíz field_cvs_module: Módulo field_cvsroot: CVSROOT text_mercurial_repository_note: Repositorio local (e.g. /hgrepo, c:\hgrepo) text_scm_command: Orden text_scm_command_version: Versión label_git_report_last_commit: Informar del último commit para archivos y directorios text_scm_config: Puede configurar las órdenes de cada scm en configuration/configuration.yml. Por favor, reinicie la aplicación después de editarlo text_scm_command_not_available: La orden para el Scm no está disponible. Por favor, compruebe la configuración en el panel de administración. notice_issue_successful_create: Incidencia %{id} creada. label_between: entre setting_issue_group_assignment: Permitir asignar incidencias a grupos label_diff: diferencias text_git_repository_note: El repositorio es básico y local (p.e. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Dirección de ordenación description_project_scope: Ãmbito de búsqueda description_filter: Filtro description_user_mail_notification: Configuración de notificaciones por correo description_message_content: Contenido del mensaje description_available_columns: Columnas disponibles description_issue_category_reassign: Elija la categoría de la incidencia description_search: Campo de búsqueda description_notes: Notas description_choose_project: Proyectos description_query_sort_criteria_attribute: Atributo de ordenación description_wiki_subpages_reassign: Elija la nueva página padre description_selected_columns: Columnas seleccionadas label_parent_revision: Padre label_child_revision: Hijo setting_default_issue_start_date_to_creation_date: Utilizar la fecha actual como fecha de inicio para nuevas incidencias button_edit_section: Editar esta sección setting_repositories_encodings: Codificación de adjuntos y repositorios description_all_columns: Todas las columnas button_export: Exportar label_export_options: "%{export_format} opciones de exportación" error_attachment_too_big: Este archivo no se puede adjuntar porque excede el tamaño máximo de archivo (%{max_size}) notice_failed_to_save_time_entries: "Error al guardar %{count} entradas de tiempo de las %{total} seleccionadas: %{ids}." label_x_issues: zero: 0 incidencia one: 1 incidencia other: "%{count} incidencias" label_repository_new: Nuevo repositorio field_repository_is_default: Repositorio principal label_copy_attachments: Copiar adjuntos label_item_position: "%{position}/%{count}" label_completed_versions: Versiones completadas text_project_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.
    Una vez guardado, el identificador no se puede cambiar. field_multiple: Valores múltiples setting_commit_cross_project_ref: Permitir referenciar y resolver incidencias de todos los demás proyectos text_issue_conflict_resolution_add_notes: Añadir mis notas y descartar mis otros cambios text_issue_conflict_resolution_overwrite: Aplicar mis campos de todas formas (las notas anteriores se mantendrán pero algunos cambios podrían ser sobreescritos) notice_issue_update_conflict: La incidencia ha sido actualizada por otro usuario mientras la editaba. text_issue_conflict_resolution_cancel: Descartar todos mis cambios y mostrar de nuevo %{link} permission_manage_related_issues: Gestionar incidencias relacionadas field_auth_source_ldap_filter: Filtro LDAP label_search_for_watchers: Buscar seguidores para añadirlos notice_account_deleted: Su cuenta ha sido eliminada setting_unsubscribe: Permitir a los usuarios borrar sus propias cuentas button_delete_my_account: Borrar mi cuenta text_account_destroy_confirmation: |- ¿Está seguro de querer proceder? Su cuenta quedará borrada permanentemente, sin la posibilidad de reactivarla. error_session_expired: Su sesión ha expirado. Por favor, vuelva a identificarse. text_session_expiration_settings: "Advertencia: el cambio de estas opciones podría hacer expirar las sesiones activas, incluyendo la suya." setting_session_lifetime: Tiempo de vida máximo de las sesiones setting_session_timeout: Tiempo máximo de inactividad de las sesiones label_session_expiration: Expiración de sesiones permission_close_project: Cerrar / reabrir el proyecto button_close: Cerrar button_reopen: Reabrir project_status_active: activo project_status_closed: cerrado project_status_archived: archivado text_project_closed: Este proyecto está cerrado y es de sólo lectura notice_user_successful_create: Usuario %{id} creado. field_core_fields: Campos básicos field_timeout: Tiempo de inactividad (en segundos) setting_thumbnails_enabled: Mostrar miniaturas de los adjuntos setting_thumbnails_size: Tamaño de las miniaturas (en píxeles) label_status_transitions: Transiciones de estado label_fields_permissions: Permisos sobre los campos label_readonly: Sólo lectura label_required: Requerido text_repository_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.
    Una vez guardado, el identificador no se puede cambiar. field_board_parent: Foro padre label_attribute_of_project: "%{name} del proyecto" label_attribute_of_author: "%{name} del autor" label_attribute_of_assigned_to: "%{name} de la persona asignada" label_attribute_of_fixed_version: "%{name} de la versión indicada" label_copy_subtasks: Copiar subtareas label_copied_to: copiada a label_copied_from: copiada desde label_any_issues_in_project: cualquier incidencia del proyecto label_any_issues_not_in_project: cualquier incidencia que no sea del proyecto field_private_notes: Notas privadas permission_view_private_notes: Ver notas privadas permission_set_notes_private: Poner notas como privadas label_no_issues_in_project: no hay incidencias en el proyecto label_any: todos label_last_n_weeks: en las últimas %{count} semanas setting_cross_project_subtasks: Permitir subtareas cruzadas entre proyectos label_cross_project_descendants: Con proyectos hijo label_cross_project_tree: Con el árbol del proyecto label_cross_project_hierarchy: Con la jerarquía del proyecto label_cross_project_system: Con todos los proyectos button_hide: Ocultar setting_non_working_week_days: Días no laborables label_in_the_next_days: en los próximos label_in_the_past_days: en los anteriores label_attribute_of_user: "%{name} del usuario" text_turning_multiple_off: Si desactiva los valores múltiples, éstos serán eliminados para dejar un único valor por elemento. label_attribute_of_issue: "%{name} de la incidencia" permission_add_documents: Añadir documentos permission_edit_documents: Editar documentos permission_delete_documents: Borrar documentos label_gantt_progress_line: Línea de progreso setting_jsonp_enabled: Habilitar soporte de JSONP field_inherit_members: Heredar miembros field_closed_on: Cerrada field_generate_password: Generar contraseña setting_default_projects_tracker_ids: Tipos de incidencia habilitados por defecto label_total_time: Total notice_account_not_activated_yet: No ha activado su cuenta aún. Si quiere recibir un nuevo correo de activación, por favor haga clic en este enlace. notice_account_locked: Su cuenta está bloqueada. label_hidden: Oculto label_visibility_private: sólo para mí label_visibility_roles: sólo para estos roles label_visibility_public: para cualquier usuario field_must_change_passwd: Cambiar contraseña en el próximo inicio de sesión notice_new_password_must_be_different: La nueva contraseña debe ser diferente de la actual setting_mail_handler_excluded_filenames: Excluir adjuntos por nombre text_convert_available: Conversión ImageMagick disponible (opcional) label_link: Enlace label_only: sólo label_drop_down_list: Lista desplegable label_checkboxes: casillas de selección label_link_values_to: Enlazar valores a la URL setting_force_default_language_for_anonymous: Forzar lenguaje por defecto a usuarios anónimos setting_force_default_language_for_loggedin: Forzar lenguaje por defecto para usuarios identificados label_custom_field_select_type: Seleccione el tipo de objeto al que unir el campo personalizado label_issue_assigned_to_updated: Persona asignada actualizada label_check_for_updates: Comprobar actualizaciones label_latest_compatible_version: Útima versión compatible label_unknown_plugin: Plugin desconocido label_radio_buttons: Botones de selección excluyentes label_group_anonymous: Usuarios anónimos label_group_non_member: Usuarios no miembros label_add_projects: Añadir Proyectos field_default_status: Estado Predeterminado text_subversion_repository_note: 'Ejemplos: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Visibilidad de Usuarios label_users_visibility_all: Todos los Usuarios Activos label_users_visibility_members_of_visible_projects: Miembros de Proyectos Visibles label_edit_attachments: Editar archivos adjuntos setting_link_copied_issue: Enlazar incidencia cuando se copia label_link_copied_issue: Enlazar incidencia copiada label_ask: Preguntar label_search_attachments_yes: Buscar adjuntos por nombre de archivo y descripciones label_search_attachments_no: No buscar adjuntos label_search_attachments_only: Sólo Buscar adjuntos label_search_open_issues_only: Sólo Abrir Incidencias field_address: Correo electrónico setting_max_additional_emails: Número Máximo de correos electrónicos adicionales label_email_address_plural: Correo Electrónicos label_email_address_add: Añadir correos electrónicos label_enable_notifications: Permitir Notificaciones label_disable_notifications: No Permitir Notificaciones setting_search_results_per_page: Buscar resultados por página label_blank_value: blanco permission_copy_issues: Copiar incidencias error_password_expired: Tu contraseña ha expirado o tu administrador requiere que la cambies. field_time_entries_visibility: Visibilidad de las entradas de tiempo setting_password_max_age: Requiere cambiar de contraseña después de label_parent_task_attributes: Atributos de la tarea padre label_parent_task_attributes_derived: Calculada de las subtareas label_parent_task_attributes_independent: Independiente de las subtareas label_time_entries_visibility_all: Todos los registros de tiempo label_time_entries_visibility_own: Los registros de tiempo creados por el usuario label_member_management: Administración de Miembros label_member_management_all_roles: Todos los roles label_member_management_selected_roles_only: Sólo estos roles label_password_required: Confirme su contraseña para continuar label_total_spent_time: Tiempo total dedicado notice_import_finished: "%{count} elementos han sido importados" notice_import_finished_with_errors: "%{count} de %{total} elementos no pudieron ser importados" error_invalid_file_encoding: El archivo no utiliza %{encoding} válida error_invalid_csv_file_or_settings: El archivo no es un archivo CSV o no coincide con la configuración (%{value}) error_can_not_read_import_file: Ocurrió un error mientras se leía el archivo a importar permission_import_issues: Importar incidencias label_import_issues: Importar incidencias label_select_file_to_import: Selecciona el archivo a importar label_fields_separator: Separador de Campos label_fields_wrapper: Envoltorio de Campo label_encoding: Codificación label_comma_char: Coma label_semi_colon_char: Punto y Coma label_quote_char: Comilla Simple label_double_quote_char: Comilla Doble label_fields_mapping: Mapeo de Campos label_file_content_preview: Vista Previa del contenido label_create_missing_values: Crear valores no presentes button_import: Importar field_total_estimated_hours: Total de Tiempo Estimado label_api: API label_total_plural: Totales label_assigned_issues: Incidencias Asignadas label_field_format_enumeration: Lista Llave/valor label_f_hour_short: '%{value} h' field_default_version: Version Predeterminada error_attachment_extension_not_allowed: Extensión adjuntada %{extension} no es permitida setting_attachment_extensions_allowed: Extensiones Permitidas setting_attachment_extensions_denied: Extensiones Prohibidas label_any_open_issues: cualquier incidencias abierta label_no_open_issues: incidencias cerradas label_default_values_for_new_users: Valor predeterminado para nuevos usuarios setting_sys_api_key: Clave de la API setting_lost_password: ¿Olvidaste la contraseña? mail_subject_security_notification: Notificación de seguridad mail_body_security_notification_change: ! '%{field} modificado.' mail_body_security_notification_change_to: ! '%{field} modificado por %{value}.' mail_body_security_notification_add: ! '%{field} %{value} añadido.' mail_body_security_notification_remove: ! '%{field} %{value} eliminado.' mail_body_security_notification_notify_enabled: Se han activado las notificaciones para el correo electrónico %{value} mail_body_security_notification_notify_disabled: Se han desactivado las notificaciones para el correo electrónico %{value} mail_body_settings_updated: ! 'Las siguientes opciones han sido actualizadas:' field_remote_ip: Dirección IP label_wiki_page_new: Nueva pagina wiki label_relations: Relaciones button_filter: Filtro mail_body_password_updated: Su contraseña se ha cambiado. label_no_preview: No hay vista previa disponible error_no_tracker_allowed_for_new_issue_in_project: El proyecto no dispone de ningún tipo sobre el cual puedas crear una petición label_tracker_all: Todos los tipos label_new_project_issue_tab_enabled: Mostrar la pestaña "Nueva incidencia" setting_new_item_menu_tab: Pestaña de creación de nuevos objetos en el menú de cada proyecto label_new_object_tab_enabled: Mostrar la lista desplegable "+" error_no_projects_with_tracker_allowed_for_new_issue: Ningún proyecto dispone de un tipo sobre el cual puedas crear una petición field_textarea_font: Fuente usada en las áreas de texto label_font_default: Fuente por defecto label_font_monospace: Fuente Monospaced label_font_proportional: Fuente Proportional setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Eliminar relación error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/es.yml000066400000000000000000002323221500112024600171610ustar00rootroot00000000000000# Spanish translations for Rails # by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) # Redmine spanish translation: # by J. Cayetano Delgado (Cayetano _dot_ Delgado _at_ ioko _dot_ com) # Contributors: @borjacampina @jgutierrezvega es: number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) separator: "," # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) delimiter: "." # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) precision: 3 # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) format: "%n %u" unit: "€" # These three are to override number.format and are optional separator: "," delimiter: "." precision: 2 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: half_a_minute: "medio minuto" less_than_x_seconds: one: "menos de 1 segundo" other: "menos de %{count} segundos" x_seconds: one: "1 segundo" other: "%{count} segundos" less_than_x_minutes: one: "menos de 1 minuto" other: "menos de %{count} minutos" x_minutes: one: "1 minuto" other: "%{count} minutos" about_x_hours: one: "alrededor de 1 hora" other: "alrededor de %{count} horas" x_hours: one: "1 hora" other: "%{count} horas" x_days: one: "1 día" other: "%{count} días" about_x_months: one: "alrededor de 1 mes" other: "alrededor de %{count} meses" x_months: one: "1 mes" other: "%{count} meses" about_x_years: one: "alrededor de 1 año" other: "alrededor de %{count} años" over_x_years: one: "más de 1 año" other: "más de %{count} años" almost_x_years: one: "casi 1 año" other: "casi %{count} años" activerecord: errors: template: header: one: "no se pudo guardar este %{model} porque se encontró 1 error" other: "no se pudo guardar este %{model} porque se encontraron %{count} errores" # The variable :count is also available body: "Se encontraron problemas con los siguientes campos:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: inclusion: "no está incluido en la lista" exclusion: "está reservado" invalid: "no es válido" confirmation: "no coincide con la confirmación" accepted: "debe ser aceptado" empty: "no puede estar vacío" blank: "no puede estar en blanco" too_long: "es demasiado largo (%{count} caracteres máximo)" too_short: "es demasiado corto (%{count} caracteres mínimo)" wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" taken: "ya está en uso" not_a_number: "no es un número" greater_than: "debe ser mayor que %{count}" greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" equal_to: "debe ser igual a %{count}" less_than: "debe ser menor que %{count}" less_than_or_equal_to: "debe ser menor que o igual a %{count}" odd: "debe ser impar" even: "debe ser par" greater_than_start_date: "debe ser posterior a la fecha de comienzo" not_same_project: "no pertenece al mismo proyecto" circular_dependency: "Esta relación podría crear una dependencia circular" cant_link_an_issue_with_a_descendant: "Esta petición no puede ser ligada a una de estas tareas" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" # Append your own errors here or at the model/attributes scope. models: # Overrides default messages attributes: # Overrides model and default messages. direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%d de %b" long: "%d de %B de %Y" day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%A, %d de %B de %Y %H:%M:%S %z" time: "%H:%M" short: "%d de %b %H:%M" long: "%d de %B de %Y %H:%M" am: "am" pm: "pm" # Used in array.to_sentence. support: array: sentence_connector: "y" actionview_instancetag_blank_option: Por favor seleccione button_activate: Activar button_add: Añadir button_annotate: Anotar button_apply: Aceptar button_archive: Archivar button_back: Atrás button_cancel: Cancelar button_change: Cambiar button_change_password: Cambiar contraseña button_check_all: Seleccionar todo button_clear: Anular button_configure: Configurar button_copy: Copiar button_create: Crear button_delete: Borrar button_download: Descargar button_edit: Modificar button_list: Listar button_lock: Bloquear button_log_time: Tiempo dedicado button_login: Acceder button_move: Mover button_quote: Citar button_rename: Renombrar button_reply: Responder button_reset: Reestablecer button_rollback: Volver a esta versión button_save: Guardar button_sort: Ordenar button_submit: Aceptar button_test: Probar button_unarchive: Desarchivar button_uncheck_all: No seleccionar nada button_unlock: Desbloquear button_unwatch: No monitorizar button_update: Actualizar button_view: Ver button_watch: Monitorizar default_activity_design: Diseño default_activity_development: Desarrollo default_doc_category_tech: Documentación técnica default_doc_category_user: Documentación de usuario default_issue_status_in_progress: En curso default_issue_status_closed: Cerrada default_issue_status_feedback: Comentarios default_issue_status_new: Nueva default_issue_status_rejected: Rechazada default_issue_status_resolved: Resuelta default_priority_high: Alta default_priority_immediate: Inmediata default_priority_low: Baja default_priority_normal: Normal default_priority_urgent: Urgente default_role_developer: Desarrollador default_role_manager: Jefe de proyecto default_role_reporter: Informador default_tracker_bug: Errores default_tracker_feature: Tareas default_tracker_support: Soporte enumeration_activities: Actividades (tiempo dedicado) enumeration_doc_categories: Categorías del documento enumeration_issue_priorities: Prioridad de las peticiones error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}" error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto' error_scm_annotate: "No existe la entrada o no ha podido ser anotada" error_scm_annotate_big_text_file: "La entrada no puede anotarse, al superar el tamaño máximo para ficheros de texto." error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}" error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio." error_ldap_bind_credentials: Cuenta/Contraseña LDAP incorrecta field_account: Cuenta field_activity: Actividad field_admin: Administrador field_assignable: Se pueden asignar peticiones a este perfil field_assigned_to: Asignado a field_attr_firstname: Cualidad del nombre field_attr_lastname: Cualidad del apellido field_attr_login: Cualidad del identificador field_attr_mail: Cualidad del Email field_auth_source: Modo de identificación field_author: Autor field_base_dn: DN base field_category: Categoría field_column_names: Columnas field_comments: Comentario field_comments_sorting: Mostrar comentarios field_created_on: Creado field_default_value: Estado por defecto field_delay: Retraso field_description: Descripción field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Fecha fin field_effective_date: Fecha field_estimated_hours: Tiempo estimado field_field_format: Formato field_filename: Fichero field_filesize: Tamaño field_firstname: Nombre field_fixed_version: Versión prevista field_hide_mail: Ocultar mi dirección de correo field_homepage: Sitio web field_host: Anfitrión field_hours: Horas field_identifier: Identificador field_is_closed: Petición resuelta field_is_default: Estado por defecto field_is_filter: Usado como filtro field_is_for_all: Para todos los proyectos field_is_in_roadmap: Consultar las peticiones en la planificación field_is_public: Público field_is_required: Obligatorio field_issue: Petición field_issue_to: Petición relacionada field_language: Idioma field_last_login_on: Última conexión field_lastname: Apellido field_login: Identificador field_mail: Correo electrónico field_mail_notification: Notificaciones por correo field_max_length: Longitud máxima field_min_length: Longitud mínima field_name: Nombre field_new_password: Nueva contraseña field_notes: Notas field_onthefly: Creación del usuario "al vuelo" field_parent: Proyecto padre field_parent_title: Página padre field_password: Contraseña field_password_confirmation: Confirmación field_port: Puerto field_possible_values: Valores posibles field_priority: Prioridad field_project: Proyecto field_redirect_existing_links: Redireccionar enlaces existentes field_regexp: Expresión regular field_role: Perfil field_searchable: Incluir en las búsquedas field_spent_on: Fecha field_start_date: Fecha de inicio field_start_page: Página principal field_status: Estado field_subject: Asunto field_subproject: Proyecto secundario field_summary: Resumen field_time_zone: Zona horaria field_title: Título field_tracker: Tipo field_type: Tipo field_updated_on: Actualizado field_url: URL field_user: Usuario field_value: Valor field_version: Versión general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'Spanish (Español)' general_text_No: 'No' general_text_Yes: 'Sí' general_text_no: 'no' general_text_yes: 'sí' label_activity: Actividad label_add_another_file: Añadir otro fichero label_add_note: Añadir una nota label_added: añadido label_added_time_by: "Añadido por %{author} hace %{age}" label_administration: Administración label_age: Edad label_ago: hace label_all: todos label_all_words: Todas las palabras label_and_its_subprojects: "%{value} y proyectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: Peticiones que me están asignadas label_associated_revisions: Revisiones asociadas label_attachment: Fichero label_attachment_delete: Borrar el fichero label_attachment_new: Nuevo fichero label_attachment_plural: Ficheros label_attribute: Cualidad label_attribute_plural: Cualidades label_auth_source: Modo de autenticación label_auth_source_new: Nuevo modo de autenticación label_auth_source_plural: Modos de autenticación label_authentication: Autenticación label_blocked_by: bloqueado por label_blocks: bloquea a label_board: Foro label_board_new: Nuevo foro label_board_plural: Foros label_boolean: Booleano label_bulk_edit_selected_issues: Editar las peticiones seleccionadas label_calendar: Calendario label_change_plural: Cambios label_change_properties: Cambiar propiedades label_change_status: Cambiar el estado label_change_view_all: Ver todos los cambios label_changes_details: Detalles de todos los cambios label_changeset_plural: Cambios label_chronological_order: En orden cronológico label_closed_issues: cerrada label_closed_issues_plural: cerradas label_x_open_issues_abbr: zero: 0 abiertas one: 1 abierta other: "%{count} abiertas" label_x_closed_issues_abbr: zero: 0 cerradas one: 1 cerrada other: "%{count} cerradas" label_comment: Comentario label_comment_add: Añadir un comentario label_comment_added: Comentario añadido label_comment_delete: Borrar comentarios label_comment_plural: Comentarios label_x_comments: zero: sin comentarios one: 1 comentario other: "%{count} comentarios" label_commits_per_author: Commits por autor label_commits_per_month: Commits por mes label_confirmation: Confirmación label_contains: contiene label_copied: copiado label_copy_workflow_from: Copiar flujo de trabajo desde label_current_status: Estado actual label_current_version: Versión actual label_custom_field: Campo personalizado label_custom_field_new: Nuevo campo personalizado label_custom_field_plural: Campos personalizados label_date: Fecha label_date_from: Desde label_date_range: Rango de fechas label_date_to: Hasta label_day_plural: días label_default: Por defecto label_default_columns: Columnas por defecto label_deleted: suprimido label_details: Detalles label_diff_inline: en línea label_diff_side_by_side: cara a cara label_disabled: deshabilitado label_display_per_page: "Por página: %{value}" label_document: Documento label_document_added: Documento añadido label_document_new: Nuevo documento label_document_plural: Documentos label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de label_enumeration_new: Nuevo valor label_enumerations: Listas de valores label_environment: Entorno label_equals: igual label_example: Ejemplo label_export_to: 'Exportar a:' label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds label_feeds_access_key_created_on: "Clave de acceso por Atom creada hace %{value}" label_file_added: Fichero añadido label_file_plural: Archivos label_filter_add: Añadir el filtro label_filter_plural: Filtros label_float: Flotante label_follows: posterior a label_gantt: Gantt label_general: General label_generate_key: Generar clave label_help: Ayuda label_history: Histórico label_home: Inicio label_in: en label_in_less_than: en menos que label_in_more_than: en más que label_incoming_emails: Correos entrantes label_index_by_date: Ãndice por fecha label_index_by_title: Ãndice por título label_information: Información label_information_plural: Información label_integer: Número label_internal: Interno label_issue: Petición label_issue_added: Petición añadida label_issue_category: Categoría de las peticiones label_issue_category_new: Nueva categoría label_issue_category_plural: Categorías de las peticiones label_issue_new: Nueva petición label_issue_plural: Peticiones label_issue_status: Estado de la petición label_issue_status_new: Nuevo estado label_issue_status_plural: Estados de las peticiones label_issue_tracking: Peticiones label_issue_updated: Petición actualizada label_issue_view_all: Ver todas las peticiones label_issue_watchers: Seguidores label_issues_by: "Peticiones por %{value}" label_jump_to_a_project: Ir al proyecto... label_language_based: Basado en el idioma label_last_changes: "últimos %{count} cambios" label_last_month: último mes label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisiones label_ldap_authentication: Autenticación LDAP label_less_than_ago: hace menos de label_list: Lista label_loading: Cargando... label_logged_as: Conectado como label_login: Iniciar sesión label_logout: Terminar sesión label_max_size: Tamaño máximo label_me: yo mismo label_member: Miembro label_member_new: Nuevo miembro label_member_plural: Miembros label_message_last: Último mensaje label_message_new: Nuevo mensaje label_message_plural: Mensajes label_message_posted: Mensaje añadido label_min_max_length: Longitud mín - máx label_modified: modificado label_module_plural: Módulos label_month: Mes label_months_from: meses de label_more_than_ago: hace más de label_my_account: Mi cuenta label_my_page: Mi página label_my_projects: Mis proyectos label_new: Nuevo label_new_statuses_allowed: Nuevos estados autorizados label_news: Noticia label_news_added: Noticia añadida label_news_latest: Últimas noticias label_news_new: Nueva noticia label_news_plural: Noticias label_news_view_all: Ver todas las noticias label_next: Siguiente label_no_change_option: (Sin cambios) label_no_data: Ningún dato disponible label_nobody: nadie label_none: ninguno label_not_contains: no contiene label_not_equals: no igual label_open_issues: abierta label_open_issues_plural: abiertas label_optional_description: Descripción opcional label_options: Opciones label_overview: Vistazo label_password_lost: ¿Olvidaste la contraseña? label_permissions: Permisos label_permissions_report: Informe de permisos label_plugins: Extensiones label_precedes: anterior a label_preferences: Preferencias label_preview: Previsualizar label_previous: Anterior label_project: Proyecto label_project_all: Todos los proyectos label_project_latest: Últimos proyectos label_project_new: Nuevo proyecto label_project_plural: Proyectos label_x_projects: zero: sin proyectos one: 1 proyecto other: "%{count} proyectos" label_public_projects: Proyectos públicos label_query: Consulta personalizada label_query_new: Nueva consulta label_query_plural: Consultas personalizadas label_read: Leer... label_register: Registrar label_registered_on: Inscrito el label_registration_activation_by_email: activación de cuenta por correo label_registration_automatic_activation: activación automática de cuenta label_registration_manual_activation: activación manual de cuenta label_related_issues: Peticiones relacionadas label_relates_to: relacionada con label_relation_delete: Eliminar relación label_relation_new: Nueva relación label_renamed: renombrado label_reply_plural: Respuestas label_report: Informe label_report_plural: Informes label_reported_issues: Peticiones registradas por mí label_repository: Repositorio label_repository_plural: Repositorios label_result_plural: Resultados label_reverse_chronological_order: En orden cronológico inverso label_revision: Revisión label_revision_plural: Revisiones label_roadmap: Planificación label_roadmap_due_in: "Finaliza en %{value}" label_roadmap_no_issues: No hay peticiones para esta versión label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfiles y permisos label_role_new: Nuevo perfil label_role_plural: Perfiles label_scm: SCM label_search: Búsqueda label_search_titles_only: Buscar sólo en títulos label_send_information: Enviar información de la cuenta al usuario label_send_test_email: Enviar un correo de prueba label_settings: Configuración label_show_completed_versions: Muestra las versiones terminadas label_sort_by: "Ordenar por %{value}" label_spent_time: Tiempo dedicado label_statistics: Estadísticas label_stay_logged_in: Mantener la sesión abierta label_string: Texto label_subproject_plural: Proyectos secundarios label_text: Texto largo label_theme: Tema label_this_month: este mes label_this_week: esta semana label_this_year: este año label_time_tracking: Control de tiempo label_today: hoy label_topic_plural: Temas label_total: Total label_tracker: Tipo label_tracker_new: Nuevo tipo label_tracker_plural: Tipos de peticiones label_updated_time: "Actualizado hace %{value}" label_updated_time_by: "Actualizado por %{author} hace %{age}" label_used_by: Utilizado por label_user: Usuario label_user_activity: "Actividad de %{value}" label_user_mail_no_self_notified: "No quiero ser avisado de cambios hechos por mí" label_user_mail_option_all: "Para cualquier evento en todos mis proyectos" label_user_mail_option_selected: "Para cualquier evento de los proyectos seleccionados..." label_user_new: Nuevo usuario label_user_plural: Usuarios label_version: Versión label_version_new: Nueva versión label_version_plural: Versiones label_view_diff: Ver diferencias label_view_revisions: Ver las revisiones label_watched_issues: Peticiones monitorizadas label_week: Semana label_wiki: Wiki label_wiki_edit: Modificación Wiki label_wiki_edit_plural: Modificaciones Wiki label_wiki_page: Página Wiki label_wiki_page_plural: Páginas Wiki label_workflow: Flujo de trabajo label_year: Año label_yesterday: ayer mail_body_account_activation_request: "Se ha inscrito un nuevo usuario (%{value}). La cuenta está pendiende de aprobación:" mail_body_account_information: Información sobre su cuenta mail_body_account_information_external: "Puede usar su cuenta %{value} para conectarse." mail_body_lost_password: 'Para cambiar su contraseña, haga clic en el siguiente enlace:' mail_body_register: 'Para activar su cuenta, haga clic en el siguiente enlace:' mail_body_reminder: "%{count} peticion(es) asignadas a ti finalizan en los próximos %{days} días:" mail_subject_account_activation_request: "Petición de activación de cuenta %{value}" mail_subject_lost_password: "Tu contraseña del %{value}" mail_subject_register: "Activación de la cuenta del %{value}" mail_subject_reminder: "%{count} peticion(es) finalizan en los próximos %{days} días" notice_account_activated: Su cuenta ha sido activada. Ya puede conectarse. notice_account_invalid_credentials: Usuario o contraseña inválido. notice_account_lost_email_sent: Se le ha enviado un correo con instrucciones para elegir una nueva contraseña. notice_account_password_updated: Contraseña modificada correctamente. notice_account_pending: "Su cuenta ha sido creada y está pendiende de la aprobación por parte del administrador." notice_account_register_done: Cuenta creada correctamente. Para activarla, haga clic sobre el enlace que le ha sido enviado por correo. notice_account_updated: Cuenta actualizada correctamente. notice_account_wrong_password: Contraseña incorrecta. notice_can_t_change_password: Esta cuenta utiliza una fuente de autenticación externa. No es posible cambiar la contraseña. notice_default_data_loaded: Configuración por defecto cargada correctamente. notice_email_error: "Ha ocurrido un error mientras enviando el correo (%{value})" notice_email_sent: "Se ha enviado un correo a %{value}" notice_failed_to_save_issues: "Imposible grabar %{count} peticion(es) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: Su clave de acceso para Atom ha sido reiniciada. notice_file_not_found: La página a la que intenta acceder no existe. notice_locking_conflict: Los datos han sido modificados por otro usuario. notice_not_authorized: No tiene autorización para acceder a esta página. notice_successful_connection: Conexión correcta. notice_successful_create: Creación correcta. notice_successful_delete: Borrado correcto. notice_successful_update: Modificación correcta. notice_unable_delete_version: No se puede borrar la versión permission_add_issue_notes: Añadir notas permission_add_issue_watchers: Añadir seguidores permission_add_issues: Añadir peticiones permission_add_messages: Enviar mensajes permission_browse_repository: Hojear repositiorio permission_comment_news: Comentar noticias permission_commit_access: Acceso de escritura permission_delete_issues: Borrar peticiones permission_delete_messages: Borrar mensajes permission_delete_own_messages: Borrar mensajes propios permission_delete_wiki_pages: Borrar páginas wiki permission_delete_wiki_pages_attachments: Borrar ficheros permission_edit_issue_notes: Modificar notas permission_edit_issues: Modificar peticiones permission_edit_messages: Modificar mensajes permission_edit_own_issue_notes: Modificar notas propias permission_edit_own_messages: Editar mensajes propios permission_edit_own_time_entries: Modificar tiempos dedicados propios permission_edit_project: Modificar proyecto permission_edit_time_entries: Modificar tiempos dedicados permission_edit_wiki_pages: Modificar páginas wiki permission_log_time: Anotar tiempo dedicado permission_manage_boards: Administrar foros permission_manage_categories: Administrar categorías de peticiones permission_manage_files: Administrar ficheros permission_manage_issue_relations: Administrar relación con otras peticiones permission_manage_members: Administrar miembros permission_manage_news: Administrar noticias permission_manage_public_queries: Administrar consultas públicas permission_manage_repository: Administrar repositorio permission_manage_versions: Administrar versiones permission_manage_wiki: Administrar wiki permission_protect_wiki_pages: Proteger páginas wiki permission_rename_wiki_pages: Renombrar páginas wiki permission_save_queries: Grabar consultas permission_select_project_modules: Seleccionar módulos del proyecto permission_view_calendar: Ver calendario permission_view_changesets: Ver cambios permission_view_documents: Ver documentos permission_view_files: Ver ficheros permission_view_gantt: Ver diagrama de Gantt permission_view_issue_watchers: Ver lista de seguidores permission_view_messages: Ver mensajes permission_view_time_entries: Ver tiempo dedicado permission_view_wiki_edits: Ver histórico del wiki permission_view_wiki_pages: Ver wiki project_module_boards: Foros project_module_documents: Documentos project_module_files: Ficheros project_module_issue_tracking: Peticiones project_module_news: Noticias project_module_repository: Repositorio project_module_time_tracking: Control de tiempo project_module_wiki: Wiki setting_activity_days_default: Días a mostrar en la actividad de proyecto setting_app_title: Título de la aplicación setting_attachment_max_size: Tamaño máximo del fichero setting_autofetch_changesets: Autorellenar los commits del repositorio setting_autologin: Inicio de sesión automático setting_commit_fix_keywords: Palabras clave para la corrección setting_commit_ref_keywords: Palabras clave para la referencia setting_cross_project_issue_relations: Permitir relacionar peticiones de distintos proyectos setting_date_format: Formato de fecha setting_default_language: Idioma por defecto setting_default_projects_public: Los proyectos nuevos son públicos por defecto setting_diff_max_lines_displayed: Número máximo de diferencias mostradas setting_display_subprojects_issues: Mostrar por defecto peticiones de proy. secundarios en el principal setting_emails_footer: Pie de mensajes setting_enabled_scm: Activar SCM setting_feeds_limit: Límite de contenido para sindicación setting_gravatar_enabled: Usar iconos de usuario (Gravatar) setting_host_name: Nombre y ruta del servidor setting_issue_list_default_columns: Columnas por defecto para la lista de peticiones setting_issues_export_limit: Límite de exportación de peticiones setting_login_required: Se requiere identificación setting_mail_from: Correo desde el que enviar mensajes setting_mail_handler_api_enabled: Activar SW para mensajes entrantes setting_mail_handler_api_key: Clave de la API setting_per_page_options: Objetos por página setting_plain_text_mail: Sólo texto plano (no HTML) setting_protocol: Protocolo setting_self_registration: Registro permitido setting_sequential_project_identifiers: Generar identificadores de proyecto setting_sys_api_enabled: Habilitar SW para la gestión del repositorio setting_text_formatting: Formato de texto setting_time_format: Formato de hora setting_user_format: Formato de nombre de usuario setting_welcome_text: Texto de bienvenida setting_wiki_compression: Compresión del historial del Wiki status_active: activo status_locked: bloqueado status_registered: registrado text_are_you_sure: ¿Está seguro? text_assign_time_entries_to_project: Asignar las horas al proyecto text_caracters_maximum: "%{count} caracteres como máximo." text_caracters_minimum: "%{count} caracteres como mínimo." text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: Cuenta de administrador por defecto modificada text_destroy_time_entries: Borrar las horas text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio text_issue_added: "Petición %{id} añadida por %{author}." text_issue_category_destroy_assignments: Dejar las peticiones sin categoría text_issue_category_destroy_question: "Algunas peticiones (%{count}) están asignadas a esta categoría. ¿Qué desea hacer?" text_issue_category_reassign_to: Reasignar las peticiones a la categoría text_issue_updated: "La petición %{id} ha sido actualizada por %{author}." text_issues_destroy_confirmation: '¿Seguro que quiere borrar las peticiones seleccionadas?' text_issues_ref_in_commit_messages: Referencia y petición de corrección en los mensajes text_length_between: "Longitud entre %{min} y %{max} caracteres." text_load_default_configuration: Cargar la configuración por defecto text_no_configuration_data: "Todavía no se han configurado perfiles, ni tipos, estados y flujo de trabajo asociado a peticiones. Se recomiendo encarecidamente cargar la configuración por defecto. Una vez cargada, podrá modificarla." text_project_destroy_confirmation: ¿Estás seguro de querer eliminar el proyecto? text_reassign_time_entries: 'Reasignar las horas a esta petición:' text_regexp_info: ej. ^[A-Z0-9]+$ text_repository_usernames_mapping: "Establezca la correspondencia entre los usuarios de Redmine y los presentes en el log del repositorio.\nLos usuarios con el mismo nombre o correo en Redmine y en el repositorio serán asociados automáticamente." text_minimagick_available: MiniMagick disponible (opcional) text_select_mail_notifications: Seleccionar los eventos a notificar text_select_project_modules: 'Seleccione los módulos a activar para este proyecto:' text_status_changed_by_changeset: "Aplicado en los cambios %{value}" text_subprojects_destroy_warning: "Los proyectos secundarios: %{value} también se eliminarán" text_tip_issue_begin_day: tarea que comienza este día text_tip_issue_begin_end_day: tarea que comienza y termina este día text_tip_issue_end_day: tarea que termina este día text_tracker_no_workflow: No hay ningún flujo de trabajo definido para este tipo de petición text_unallowed_characters: Caracteres no permitidos text_user_mail_option: "De los proyectos no seleccionados, sólo recibirá notificaciones sobre elementos monitorizados o elementos en los que esté involucrado (por ejemplo, peticiones de las que usted sea autor o asignadas a usted)." text_user_wrote: "%{value} escribió:" text_user_wrote_in: "%{value} escribió (%{link}):" text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido? text_workflow_edit: Seleccionar un flujo de trabajo para actualizar text_plugin_assets_writable: Se puede escribir en el directorio público de las extensiones warning_attachments_not_saved: "No se han podido grabar %{count} ficheros." button_create_and_continue: Crear y continuar text_custom_field_possible_values_info: 'Un valor en cada línea' label_display: Mostrar field_editable: Modificable setting_repository_log_display_limit: Número máximo de revisiones mostradas en el fichero de trazas setting_file_max_size_displayed: Tamaño máximo de los ficheros de texto mostrados field_watcher: Seguidor field_content: Contenido label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente label_date_from_to: Desde %{start} hasta %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Esta página tiene %{descendants} página(s) hija(s) y descendiente(s). ¿Qué desea hacer? text_wiki_page_reassign_children: Reasignar páginas hijas a esta página text_wiki_page_nullify_children: Dejar páginas hijas como páginas raíz text_wiki_page_destroy_children: Eliminar páginas hijas y todos sus descendientes setting_password_min_length: Longitud mínima de la contraseña field_group_by: Agrupar resultados por mail_subject_wiki_content_updated: "La página wiki '%{id}' ha sido actualizada" label_wiki_content_added: Página wiki añadida mail_subject_wiki_content_added: "Se ha añadido la página wiki '%{id}'." mail_body_wiki_content_added: "%{author} ha añadido la página wiki '%{id}'." label_wiki_content_updated: Página wiki actualizada mail_body_wiki_content_updated: La página wiki '%{id}' ha sido actualizada por %{author}. permission_add_project: Crear proyecto setting_new_project_user_role_id: Permiso asignado a un usuario no-administrador para crear proyectos label_view_all_revisions: Ver todas las revisiones label_tag: Etiqueta label_branch: Rama error_no_tracker_in_project: Este proyecto no tiene asociados tipos de peticiones. Por favor, revise la configuración. error_no_default_issue_status: No se ha definido un estado de petición por defecto. Por favor, revise la configuración (en "Administración" -> "Estados de las peticiones"). text_journal_changed: "%{label} cambiado de %{old} a %{new}" text_journal_set_to: "%{label} establecido a %{value}" text_journal_deleted: "%{label} eliminado (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Nuevo grupo label_time_entry_plural: Tiempo dedicado text_journal_added: "Añadido %{label} %{value}" field_active: Activo enumeration_system_activity: Actividad del sistema permission_delete_issue_watchers: Borrar seguidores version_status_closed: cerrado version_status_locked: bloqueado version_status_open: abierto error_can_not_reopen_issue_on_closed_version: No se puede reabrir una petición asignada a una versión cerrada label_user_anonymous: Anónimo button_move_and_follow: Mover y seguir setting_default_projects_modules: Módulos activados por defecto en proyectos nuevos setting_gravatar_default: Imagen Gravatar por defecto field_sharing: Compartir button_copy_and_follow: Copiar y seguir label_version_sharing_hierarchy: Con la jerarquía del proyecto label_version_sharing_tree: Con el árbol del proyecto label_version_sharing_descendants: Con proyectos hijo label_version_sharing_system: Con todos los proyectos label_version_sharing_none: No compartir error_can_not_archive_project: Este proyecto no puede ser archivado label_copy_source: Fuente setting_issue_done_ratio: Calcular el ratio de tareas realizadas con setting_issue_done_ratio_issue_status: Usar el estado de tareas error_issue_done_ratios_not_updated: Ratios de tareas realizadas no actualizado. error_workflow_copy_target: Por favor, elija categoría(s) y perfil(es) destino setting_issue_done_ratio_issue_field: Utilizar el campo de petición label_copy_same_as_target: El mismo que el destino label_copy_target: Destino notice_issue_done_ratios_updated: Ratios de tareas realizadas actualizados. error_workflow_copy_source: Por favor, elija una categoría o rol de origen label_update_issue_done_ratios: Actualizar ratios de tareas realizadas setting_start_of_week: Comenzar las semanas en permission_view_issues: Ver peticiones label_display_used_statuses_only: Sólo mostrar los estados usados por este tipo de petición label_revision_id: Revisión %{value} label_api_access_key: Clave de acceso de la API label_api_access_key_created_on: Clave de acceso de la API creada hace %{value} label_feeds_access_key: Clave de acceso Atom notice_api_access_key_reseted: Clave de acceso a la API regenerada. setting_rest_api_enabled: Activar servicio web REST label_missing_api_access_key: Clave de acceso a la API ausente label_missing_feeds_access_key: Clave de accesso Atom ausente button_show: Mostrar text_line_separated: Múltiples valores permitidos (un valor en cada línea). setting_mail_handler_body_delimiters: Truncar correos tras una de estas líneas permission_add_subprojects: Crear subproyectos label_subproject_new: Nuevo subproyecto text_own_membership_delete_confirmation: |- Está a punto de eliminar algún o todos sus permisos y podría perder la posibilidad de modificar este proyecto tras hacerlo. ¿Está seguro de querer continuar? label_close_versions: Cerrar versiones completadas label_board_sticky: Fijado label_board_locked: Bloqueado permission_export_wiki_pages: Exportar páginas wiki setting_cache_formatted_text: Cachear texto formateado permission_manage_project_activities: Gestionar actividades del proyecto error_unable_delete_issue_status: Fue imposible eliminar el estado de la petición (%{value}) label_profile: Perfil permission_manage_subtasks: Gestionar subtareas field_parent_issue: Tarea padre label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado error_unable_to_connect: Fue imposible conectarse (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker_html: Este tipo contiene peticiones y no puede ser eliminado.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Fallo al guardar miembro(s): %{errors}." text_zoom_out: Alejar text_zoom_in: Acercar notice_unable_delete_time_entry: Fue imposible eliminar la entrada de tiempo dedicado. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendario button_edit_associated_wikipage: "Editar paginas Wiki asociadas: %{page_title}" field_text: Campo de texto setting_default_notification_option: Opción de notificación por defecto label_user_mail_option_only_my_events: Solo para objetos que soy seguidor o estoy involucrado label_user_mail_option_none: Sin eventos field_member_of_group: Asignado al grupo field_assigned_to_role: Asignado al perfil notice_not_authorized_archived_project: El proyecto al que intenta acceder ha sido archivado. label_principal_search: "Buscar por usuario o grupo:" label_user_search: "Buscar por usuario:" field_visible: Visible setting_emails_header: Encabezado de Correos setting_commit_logtime_activity_id: Actividad de los tiempos registrados text_time_logged_by_changeset: Aplicado en los cambios %{value}. setting_commit_logtime_enabled: Habilitar registro de horas notice_gantt_chart_truncated: Se recortó el diagrama porque excede el número máximo de elementos que pueden ser mostrados (%{max}) setting_gantt_items_limit: Número máximo de elementos mostrados en el diagrama de Gantt field_warn_on_leaving_unsaved: Avisarme cuando vaya a abandonar una página con texto no guardado text_warn_on_leaving_unsaved: Esta página contiene texto no guardado y si la abandona sus cambios se perderán label_my_queries: Mis consultas personalizadas text_journal_changed_no_detail: "Se actualizó %{label}" label_news_comment_added: Comentario añadido a noticia button_expand_all: Expandir todo button_collapse_all: Contraer todo label_additional_workflow_transitions_for_assignee: Transiciones adicionales permitidas cuando la petición está asignada al usuario label_additional_workflow_transitions_for_author: Transiciones adicionales permitidas cuando el usuario es autor de la petición label_bulk_edit_selected_time_entries: Editar en bloque las horas seleccionadas text_time_entries_destroy_confirmation: ¿Está seguro de querer eliminar (la hora seleccionada/las horas seleccionadas)? label_role_anonymous: Anónimo label_role_non_member: No miembro label_issue_note_added: Nota añadida label_issue_status_updated: Estado actualizado label_issue_priority_updated: Prioridad actualizada label_issues_visibility_own: Peticiones creadas por el usuario o asignadas a él field_issues_visibility: Visibilidad de las peticiones label_issues_visibility_all: Todas las peticiones permission_set_own_issues_private: Poner las peticiones propias como públicas o privadas field_is_private: Privada permission_set_issues_private: Poner peticiones como públicas o privadas label_issues_visibility_public: Todas las peticiones no privadas text_issues_destroy_descendants_confirmation: Se procederá a borrar también %{count} subtarea(s). field_commit_logs_encoding: Codificación de los mensajes de commit field_scm_path_encoding: Codificación de las rutas text_scm_path_encoding_note: "Por defecto: UTF-8" field_path_to_repository: Ruta al repositorio field_root_directory: Directorio raíz field_cvs_module: Módulo field_cvsroot: CVSROOT text_mercurial_repository_note: Repositorio local (e.g. /hgrepo, c:\hgrepo) text_scm_command: Orden text_scm_command_version: Versión label_git_report_last_commit: Informar del último commit para ficheros y directorios text_scm_config: Puede configurar las órdenes de cada scm en configuration/configuration.yml. Por favor, reinicie la aplicación después de editarlo text_scm_command_not_available: La orden para el Scm no está disponible. Por favor, compruebe la configuración en el panel de administración. notice_issue_successful_create: Petición %{id} creada. label_between: entre setting_issue_group_assignment: Permitir asignar peticiones a grupos label_diff: diferencias text_git_repository_note: El repositorio es básico y local (p.e. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Dirección de ordenación description_project_scope: Ãmbito de búsqueda description_filter: Filtro description_user_mail_notification: Configuración de notificaciones por correo description_message_content: Contenido del mensaje description_available_columns: Columnas disponibles description_issue_category_reassign: Elija la categoría de la petición description_search: Campo de búsqueda description_notes: Notas description_choose_project: Proyectos description_query_sort_criteria_attribute: Atributo de ordenación description_wiki_subpages_reassign: Elija la nueva página padre description_selected_columns: Columnas seleccionadas label_parent_revision: Padre label_child_revision: Hijo setting_default_issue_start_date_to_creation_date: Utilizar la fecha actual como fecha de inicio para nuevas peticiones button_edit_section: Editar esta sección setting_repositories_encodings: Codificación de adjuntos y repositorios description_all_columns: Todas las columnas button_export: Exportar label_export_options: "%{export_format} opciones de exportación" error_attachment_too_big: Este fichero no se puede adjuntar porque excede el tamaño máximo de fichero (%{max_size}) notice_failed_to_save_time_entries: "Error al guardar %{count} entradas de tiempo de las %{total} seleccionadas: %{ids}." label_x_issues: zero: 0 petición one: 1 petición other: "%{count} peticiones" label_repository_new: Nuevo repositorio field_repository_is_default: Repositorio principal label_copy_attachments: Copiar adjuntos label_item_position: "%{position}/%{count}" label_completed_versions: Versiones completadas text_project_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.
    Una vez guardado, el identificador no se puede cambiar. field_multiple: Valores múltiples setting_commit_cross_project_ref: Permitir referenciar y resolver peticiones de todos los demás proyectos text_issue_conflict_resolution_add_notes: Añadir mis notas y descartar mis otros cambios text_issue_conflict_resolution_overwrite: Aplicar mis campos de todas formas (las notas anteriores se mantendrán pero algunos cambios podrían ser sobreescritos) notice_issue_update_conflict: La petición ha sido actualizada por otro usuario mientras la editaba. text_issue_conflict_resolution_cancel: Descartar todos mis cambios y mostrar de nuevo %{link} permission_manage_related_issues: Gestionar peticiones relacionadas field_auth_source_ldap_filter: Filtro LDAP label_search_for_watchers: Buscar seguidores para añadirlos notice_account_deleted: Su cuenta ha sido eliminada setting_unsubscribe: Permitir a los usuarios borrar sus propias cuentas button_delete_my_account: Borrar mi cuenta text_account_destroy_confirmation: |- ¿Está seguro de querer proceder? Su cuenta quedará borrada permanentemente, sin la posibilidad de reactivarla. error_session_expired: Su sesión ha expirado. Por favor, vuelva a identificarse. text_session_expiration_settings: "Advertencia: el cambio de estas opciones podría hacer expirar las sesiones activas, incluyendo la suya." setting_session_lifetime: Tiempo de vida máximo de las sesiones setting_session_timeout: Tiempo máximo de inactividad de las sesiones label_session_expiration: Expiración de sesiones permission_close_project: Cerrar / reabrir el proyecto button_close: Cerrar button_reopen: Reabrir project_status_active: activo project_status_closed: cerrado project_status_archived: archivado text_project_closed: Este proyecto está cerrado y es de sólo lectura notice_user_successful_create: Usuario %{id} creado. field_core_fields: Campos básicos field_timeout: Tiempo de inactividad (en segundos) setting_thumbnails_enabled: Mostrar miniaturas de los adjuntos setting_thumbnails_size: Tamaño de las miniaturas (en píxeles) label_status_transitions: Transiciones de estado label_fields_permissions: Permisos sobre los campos label_readonly: Sólo lectura label_required: Requerido text_repository_identifier_info: Solo se permiten letras en minúscula (a-z), números, guiones y barras bajas.
    Una vez guardado, el identificador no se puede cambiar. field_board_parent: Foro padre label_attribute_of_project: "%{name} del proyecto" label_attribute_of_author: "%{name} del autor" label_attribute_of_assigned_to: "%{name} de la persona asignada" label_attribute_of_fixed_version: "%{name} de la versión indicada" label_copy_subtasks: Copiar subtareas label_copied_to: copiada a label_copied_from: copiada desde label_any_issues_in_project: cualquier petición del proyecto label_any_issues_not_in_project: cualquier petición que no sea del proyecto field_private_notes: Notas privadas permission_view_private_notes: Ver notas privadas permission_set_notes_private: Poner notas como privadas label_no_issues_in_project: no hay peticiones en el proyecto label_any: todos label_last_n_weeks: en las últimas %{count} semanas setting_cross_project_subtasks: Permitir subtareas cruzadas entre proyectos label_cross_project_descendants: Con proyectos hijo label_cross_project_tree: Con el árbol del proyecto label_cross_project_hierarchy: Con la jerarquía del proyecto label_cross_project_system: Con todos los proyectos button_hide: Ocultar setting_non_working_week_days: Días no laborables label_in_the_next_days: en los próximos label_in_the_past_days: en los anteriores label_attribute_of_user: "%{name} del usuario" text_turning_multiple_off: Si desactiva los valores múltiples, éstos serán eliminados para dejar un único valor por elemento. label_attribute_of_issue: "%{name} de la petición" permission_add_documents: Añadir documentos permission_edit_documents: Editar documentos permission_delete_documents: Borrar documentos label_gantt_progress_line: Línea de progreso setting_jsonp_enabled: Habilitar soporte de JSONP field_inherit_members: Heredar miembros field_closed_on: Cerrada field_generate_password: Generar contraseña setting_default_projects_tracker_ids: Tipos de petición habilitados por defecto label_total_time: Total notice_account_not_activated_yet: No ha activado su cuenta aún. Si quiere recibir un nuevo correo de activación, por favor haga clic en este enlace. notice_account_locked: Su cuenta está bloqueada. label_hidden: Oculto label_visibility_private: solamente para mí label_visibility_roles: solamente para estos roles label_visibility_public: para cualquier usuario field_must_change_passwd: Cambiar contraseña en el próximo inicio de sesión notice_new_password_must_be_different: La nueva contraseña debe ser diferente de la actual setting_mail_handler_excluded_filenames: Excluir adjuntos por nombre text_convert_available: Conversión ImageMagick disponible (opcional) label_link: Enlace label_only: sólo label_drop_down_list: Lista desplegable label_checkboxes: casillas de selección label_link_values_to: Enlazar valores a la URL setting_force_default_language_for_anonymous: Forzar lenguaje por defecto a usuarios anónimos setting_force_default_language_for_loggedin: Forzar lenguaje por defecto para usuarios identificados label_custom_field_select_type: Seleccione el tipo de objeto al que unir el campo personalizado label_issue_assigned_to_updated: Persona asignada actualizada label_check_for_updates: Comprobar actualizaciones label_latest_compatible_version: Útima versión compatible label_unknown_plugin: Plugin desconocido label_radio_buttons: Botones de selección excluyentes label_group_anonymous: Usuarios anónimos label_group_non_member: Usuarios no miembros label_add_projects: Añadir Proyectos field_default_status: Estado Predeterminado text_subversion_repository_note: 'Ejemplos: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Visibilidad de Usuarios label_users_visibility_all: Todos los Usuarios Activos label_users_visibility_members_of_visible_projects: Miembros de Proyectos Visibles label_edit_attachments: Editar archivos adjuntos setting_link_copied_issue: Enlazar petición cuando se copia label_link_copied_issue: Enlazar petición copiada label_ask: Preguntar label_search_attachments_yes: Buscar adjuntos por nombre de archivo y descripciones label_search_attachments_no: No buscar adjuntos label_search_attachments_only: Sólo Buscar adjuntos label_search_open_issues_only: Sólo Peticiones Abiertas field_address: Correo electrónico setting_max_additional_emails: Número Máximo de correos electrónicos adicionales label_email_address_plural: Correo Electrónicos label_email_address_add: Añadir correos electrónicos label_enable_notifications: Permitir Notificaciones label_disable_notifications: No Permitir Notificaciones setting_search_results_per_page: Buscar resultados por página label_blank_value: blanco permission_copy_issues: Copiar petición error_password_expired: Tu contraseña ha expirado o tu administrador requiere que la cambies. field_time_entries_visibility: Visibilidad de las entradas de tiempo setting_password_max_age: Requiere cambiar de contraseña después de label_parent_task_attributes: Atributos de la tarea padre label_parent_task_attributes_derived: Calculada de las subtareas label_parent_task_attributes_independent: Independiente de las subtareas label_time_entries_visibility_all: Todos los registros de tiempo label_time_entries_visibility_own: Los registros de tiempo creados por el usuario label_member_management: Administración de Miembros label_member_management_all_roles: Todos los roles label_member_management_selected_roles_only: Sólo estos roles label_password_required: Confirme su contraseña para continuar label_total_spent_time: Tiempo total dedicado notice_import_finished: "%{count} elementos han sido importados" notice_import_finished_with_errors: "%{count} de %{total} elementos no pudieron ser importados" error_invalid_file_encoding: El archivo no utiliza %{encoding} válida error_invalid_csv_file_or_settings: El archivo no es un archivo CSV o no coincide con la configuración (%{value}) error_can_not_read_import_file: Ocurrió un error mientras se leía el archivo a importar permission_import_issues: Importar Peticiones label_import_issues: Importar petición label_select_file_to_import: Selecciona el archivo a importar label_fields_separator: Separador de Campos label_fields_wrapper: Envoltorio de Campo label_encoding: Codificación label_comma_char: Coma label_semi_colon_char: Punto y Coma label_quote_char: Comilla Simple label_double_quote_char: Comilla Doble label_fields_mapping: Mapeo de Campos label_file_content_preview: Vista Previa del contenido label_create_missing_values: Crear valores no presentes button_import: Importar field_total_estimated_hours: Total de Tiempo Estimado label_api: API label_total_plural: Totales label_assigned_issues: Peticiones Asignadas label_field_format_enumeration: Lista Llave/valor label_f_hour_short: '%{value} h' field_default_version: Version Predeterminada error_attachment_extension_not_allowed: Extensión adjuntada %{extension} no es permitida setting_attachment_extensions_allowed: Extensiones Permitidas setting_attachment_extensions_denied: Extensiones Prohibidas label_any_open_issues: cualquier peticiones abierta label_no_open_issues: peticiones cerradas label_default_values_for_new_users: Valor predeterminado para nuevos usuarios setting_sys_api_key: Clave de la API setting_lost_password: ¿Olvidaste la contraseña? mail_subject_security_notification: Notificación de seguridad mail_body_security_notification_change: ! '%{field} modificado.' mail_body_security_notification_change_to: ! '%{field} modificado por %{value}.' mail_body_security_notification_add: ! '%{field} %{value} añadido.' mail_body_security_notification_remove: ! '%{field} %{value} eliminado.' mail_body_security_notification_notify_enabled: Se han activado las notificaciones para el correo electrónico %{value} mail_body_security_notification_notify_disabled: Se han desactivado las notificaciones para el correo electrónico %{value} mail_body_settings_updated: ! 'Las siguientes opciones han sido actualizadas:' field_remote_ip: Dirección IP label_wiki_page_new: Nueva pagina wiki label_relations: Relaciones button_filter: Filtro mail_body_password_updated: Su contraseña se ha cambiado. label_no_preview: No hay vista previa disponible error_no_tracker_allowed_for_new_issue_in_project: El proyecto no dispone de ningún tipo sobre el cual puedas crear una petición label_tracker_all: Todos los tipos label_new_project_issue_tab_enabled: Mostrar la pestaña "Nueva petición" setting_new_item_menu_tab: Pestaña de creación de nuevos objetos en el menú de cada proyecto label_new_object_tab_enabled: Mostrar la lista desplegable "+" error_no_projects_with_tracker_allowed_for_new_issue: Ningún proyecto dispone de un tipo sobre el cual puedas crear una petición field_textarea_font: Fuente usada en las áreas de texto label_font_default: Fuente por defecto label_font_monospace: Fuente Monospaced label_font_proportional: Fuente Proportional setting_timespan_format: Formato de timespan label_table_of_contents: Ãndice de contenidos setting_commit_logs_formatting: Aplicar formato de texto a los mensajes de commits setting_mail_handler_enable_regex: Habilitar expresiones regulares error_move_of_child_not_possible: 'Subtarea %{child} no ha podido ser movida al nuevo proyecto: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: El tiempo dedicado no puede ser reasignado a una petición que va a ser borrada setting_timelog_required_fields: Campos requeridos para imputación de tiempo label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Sólo para asuntos que sigo o en los que estoy asignado label_user_mail_option_only_owner: Sólo para asuntos que sigo o de los que soy propietario warning_fields_cleared_on_bulk_edit: Los cambios conllevarán la eliminación automática de valores de uno o más campos de los objetos seleccionados field_updated_by: Actualizado por field_last_updated_by: Última actualización de field_full_width_layout: Diseño de ancho completo label_last_notes: Últimas notas field_digest: Checksum field_default_assigned_to: Asignado por defecto setting_show_custom_fields_on_registration: Mostrar campos personalizados en el registro permission_view_news: Ver noticias label_no_preview_alternative_html: No hay vista previa disponible. %{link} el archivo en su lugar. label_no_preview_download: Descargar setting_close_duplicate_issues: Cerrar peticiones duplicadas automáticamente error_exceeds_maximum_hours_per_day: No se pueden registrar más de %{max_hours} horas en el mismo día (se han registrado ya %{logged_hours} horas) setting_time_entry_list_defaults: Listas por defecto del Timelog setting_timelog_accept_0_hours: Aceptar registros de tiempo de 0 horas setting_timelog_max_hours_per_day: Número de horas máximo que se puede imputar por día y usuario label_x_revisions: "%{count} revisiones" error_can_not_delete_auth_source: Este modo de autenticación está en uso y no puede ser eliminado. button_actions: Acciones mail_body_lost_password_validity: Por favor, tenga en cuenta que sólo puede cambiar la contraseña una vez usando este enlace. text_login_required_html: Cuando no se requiera autenticación, los proyectos públicos y sus contenidos están abiertos en la red. Puede editar los permisos aplicables. label_login_required_yes: 'Sí' label_login_required_no: No, permitir acceso anónimo a los proyectos públicos text_project_is_public_non_member: Los proyectos públicos y sus contenidos están disponibles a todos los usuarios identificados. text_project_is_public_anonymous: Los proyectos públicos y sus contenidos están disponibles libremente en la red. label_version_and_files: Versionees (%{count}) y Ficheros label_ldap: LDAP label_ldaps_verify_none: LDAPS (sin chequeo de certificado) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Se recomienda usar una conexión LDAPS encriptada con chequeo de certificado para prevenir cualquier manipulación durante el proceso de autenticación. label_nothing_to_preview: Nada que previsualizar error_token_expired: Este enlace de recuperación de contraseña ha expirado, por favor, inténtelo de nuevo. error_spent_on_future_date: No se puede registrar tiempo en una fecha futura setting_timelog_accept_future_dates: Aceptar registros de tiempo en fechas futuras label_delete_link_to_subtask: Eliminar relación error_not_allowed_to_log_time_for_other_users: No está autorizado a registrar tiempo para otros usuarios permission_log_time_for_other_users: Registrar tiempo para otros usuarios label_tomorrow: mañana label_next_week: próxima semana label_next_month: próximo mes text_role_no_workflow: No se ha definido un flujo de trabajo para este perfil text_status_no_workflow: Ningún tipo de petición utiliza este estado en los flujos de trabajo setting_mail_handler_preferred_body_part: Parte preferida de los correos electrónicos multiparte (HTML) setting_show_status_changes_in_mail_subject: Mostrar los cambios de estado en el asunto de las notificaciones de correo electrónico de las peticiones label_inherited_from_parent_project: Heredado del proyecto padre label_inherited_from_group: Heredado del grupo %{name} label_trackers_description: Descripción del tipo de petición label_open_trackers_description: Ver todas las descripciones de los tipos de petición label_preferred_body_part_text: Texto label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_parent_issue_subject: Asunto de la tarea padre permission_edit_own_issues: Editar sus propias peticiones text_select_apply_tracker: Seleccionar tipo de petición label_updated_issues: Peticiones actualizadas text_avatar_server_config_html: El servidor actual de avatares es %{url}. Puede configurarlo en config/configuration.yml. setting_gantt_months_limit: Máximo número de meses mostrados en el diagrama de Gantt permission_import_time_entries: Importar registros de tiempo label_import_notifications: Enviar notificaciones de correo electrónico durante la importación text_gs_available: Disponible soporte ImageMagick PDF (opcional) field_recently_used_projects: Número de proyectos recientemente usados en el selector label_optgroup_bookmarks: Marcadores label_optgroup_recents: Utilizados recientemente button_project_bookmark: Añadir marcador button_project_bookmark_delete: Quitar marcador field_history_default_tab: Pstaña por defecto del historial de la petición label_issue_history_properties: Cambios de propiedades label_issue_history_notes: Notas label_last_tab_visited: Última pestaña visitada field_unique_id: ID único text_no_subject: sin asunto setting_password_required_char_classes: Clases de caracteres requeridos para las contraseñas label_password_char_class_uppercase: mayúsculas label_password_char_class_lowercase: minúsculas label_password_char_class_digits: dígitos label_password_char_class_special_chars: caracteres especiales text_characters_must_contain: Debe contener %{character_classes}. label_starts_with: empieza con label_ends_with: termina con label_issue_fixed_version_updated: Versión objetivo actualizada setting_project_list_defaults: Por defecto para la lista de proyectos label_display_type: Mostrar resultados como label_display_type_list: Lista label_display_type_board: Tablón label_my_bookmarks: Mis marcadores label_import_time_entries: Importar registros de tiempo field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/et.yml000066400000000000000000002176101500112024600171650ustar00rootroot00000000000000# Estonian localization for Redmine # Copyright (C) 2012 Kaitseministeerium # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. et: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y" short: "%d.%b" long: "%d. %B %Y" day_names: [Pühapäev, Esmaspäev, Teisipäev, Kolmapäev, Neljapäev, Reede, Laupäev] abbr_day_names: [P, E, T, K, N, R, L] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Jaanuar, Veebruar, Märts, Aprill, Mai, Juuni, Juuli, August, September, Oktoober, November, Detsember] abbr_month_names: [~, jaan, veebr, märts, apr, mai, juuni, juuli, aug, sept, okt, nov, dets] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%d.%m.%Y %H:%M" time: "%H:%M" short: "%d.%b %H:%M" long: "%d. %B %Y %H:%M %z" am: "enne lõunat" pm: "peale lõunat" datetime: distance_in_words: half_a_minute: "pool minutit" less_than_x_seconds: one: "vähem kui sekund" other: "vähem kui %{count} sekundit" x_seconds: one: "1 sekund" other: "%{count} sekundit" less_than_x_minutes: one: "vähem kui minut" other: "vähem kui %{count} minutit" x_minutes: one: "1 minut" other: "%{count} minutit" about_x_hours: one: "umbes tund" other: "umbes %{count} tundi" x_hours: one: "1 tund" other: "%{count} tundi" x_days: one: "1 päev" other: "%{count} päeva" about_x_months: one: "umbes kuu" other: "umbes %{count} kuud" x_months: one: "1 kuu" other: "%{count} kuud" about_x_years: one: "umbes aasta" other: "umbes %{count} aastat" over_x_years: one: "rohkem kui aasta" other: "rohkem kui %{count} aastat" almost_x_years: one: "peaaegu aasta" other: "peaaegu %{count} aastat" number: format: separator: "." delimiter: " " precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "bait" other: "baiti" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "ja" skip_last_comma: false activerecord: errors: template: header: one: "1 viga ei võimaldanud selle %{model} salvestamist" other: "%{count} viga ei võimaldanud selle %{model} salvestamist" messages: inclusion: "ei ole nimekirjas" exclusion: "on reserveeritud" invalid: "ei sobi" confirmation: "ei lange kinnitusega kokku" accepted: "peab olema aktsepteeritud" empty: "ei või olla tühi" blank: "ei või olla täitmata" too_long: "on liiga pikk (lubatud on kuni %{count} märki)" too_short: "on liiga lühike (vaja on vähemalt %{count} märki)" wrong_length: "on vale pikkusega (peaks olema %{count} märki)" taken: "on juba võetud" not_a_number: "ei ole arv" not_a_date: "ei ole korrektne kuupäev" greater_than: "peab olema suurem kui %{count}" greater_than_or_equal_to: "peab olema võrdne või suurem kui %{count}" equal_to: "peab võrduma %{count}-ga" less_than: "peab olema väiksem kui %{count}" less_than_or_equal_to: "peab olema võrdne või väiksem kui %{count}" odd: "peab olema paaritu arv" even: "peab olema paarisarv" greater_than_start_date: "peab olema suurem kui alguskuupäev" not_same_project: "ei kuulu sama projekti juurde" circular_dependency: "See suhe looks vastastikuse sõltuvuse" cant_link_an_issue_with_a_descendant: "Teemat ei saa sidustada tema enda alamteemaga" earlier_than_minimum_start_date: "Tähtpäev ei saa olla varasem kui %{date} eelnevate teemade tähtpäevade tõttu" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: "Palun vali" general_text_No: "Ei" general_text_Yes: "Jah" general_text_no: "ei" general_text_yes: "jah" general_lang_name: "Estonian (Eesti)" general_csv_separator: "," general_csv_decimal_separator: "." general_csv_encoding: ISO-8859-13 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: "1" notice_account_updated: "Konto uuendamine õnnestus." notice_account_invalid_credentials: "Sobimatu kasutajanimi või parool" notice_account_password_updated: "Parooli uuendamine õnnestus." notice_account_wrong_password: "Vale parool" notice_account_register_done: "Konto loomine õnnestus. Konto aktiveerimiseks vajuta vastaval lingil Sulle saadetud e-kirjas." notice_can_t_change_password: "See konto kasutab välist autentimisallikat. Siin ei saa selle konto parooli vahetada." notice_account_lost_email_sent: "Sulle saadeti e-kiri parooli vahetamise juhistega." notice_account_activated: "Su konto on aktiveeritud. Saad nüüd sisse logida." notice_successful_create: "Loomine õnnestus." notice_successful_update: "Uuendamine õnnestus." notice_successful_delete: "Kustutamine õnnestus." notice_successful_connection: "Ühenduse loomine õnnestus." notice_file_not_found: "Sellist lehte ei leitud." notice_locking_conflict: "Teine kasutaja uuendas vahepeal neid andmeid." notice_not_authorized: "Sul ei ole sellele lehele ligipääsuks õigusi." notice_not_authorized_archived_project: "See projekt on arhiveeritud." notice_email_sent: "%{value}-le saadeti kiri" notice_email_error: "Kirja saatmisel tekkis viga (%{value})" notice_feeds_access_key_reseted: "Sinu Atom juurdepääsuvõti nulliti." notice_api_access_key_reseted: "Sinu API juurdepääsuvõti nulliti." notice_failed_to_save_issues: "%{count} teemat %{total}-st ei õnnestunud salvestada: %{ids}." notice_failed_to_save_time_entries: "%{count} ajakulu kannet %{total}-st ei õnnestunud salvestada: %{ids}." notice_failed_to_save_members: "Liiget/liikmeid ei õnnestunud salvestada: %{errors}." notice_account_pending: "Sinu konto on loodud ja ootab nüüd administraatori kinnitust." notice_default_data_loaded: "Algseadistuste laadimine õnnestus." notice_unable_delete_version: "Versiooni kustutamine ei õnnestunud." notice_unable_delete_time_entry: "Ajakulu kande kustutamine ei õnnestunud." notice_issue_done_ratios_updated: "Teema edenemise astmed on uuendatud." notice_gantt_chart_truncated: "Diagrammi kärbiti kuna ületati kuvatavate objektide suurim hulk (%{max})" notice_issue_successful_create: "Teema %{id} loodud." notice_issue_update_conflict: "Teine kasutaja uuendas seda teemat Sinuga samaaegselt." notice_account_deleted: "Sinu konto on lõplikult kustutatud." error_can_t_load_default_data: "Algseadistusi ei saanud laadida: %{value}" error_scm_not_found: "Seda sissekannet hoidlast ei leitud." error_scm_command_failed: "Hoidla poole pöördumisel tekkis viga: %{value}" error_scm_annotate: "Sissekannet ei eksisteeri või ei saa annoteerida." error_scm_annotate_big_text_file: "Sissekannet ei saa annoteerida, kuna see on liiga pikk." error_issue_not_found_in_project: "Teemat ei leitud või see ei kuulu siia projekti" error_no_tracker_in_project: "Selle projektiga ei ole seostatud ühtegi valdkonda. Palun vaata üle projekti seaded." error_no_default_issue_status: 'Teema algolek on määramata. Palun vaata asetused üle ("Seadistused -> Olekud").' error_can_not_delete_custom_field: "Omaloodud välja kustutamine ei õnnestunud" error_can_not_delete_tracker_html: "See valdkond on mõnes teemas kasutusel ja seda ei saa kustutada.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "See roll on mõnes projektis kasutusel ja seda ei saa kustutada." error_can_not_reopen_issue_on_closed_version: "Suletud versiooni juurde kuulunud teemat ei saa taasavada" error_can_not_archive_project: "Seda projekti ei saa arhiveerida" error_issue_done_ratios_not_updated: "Teema edenemise astmed jäid uuendamata." error_workflow_copy_source: "Palun vali algne valdkond või roll" error_workflow_copy_target: "Palun vali sihtvaldkon(na)d või -roll(id)" error_unable_delete_issue_status: "Oleku kustutamine ei õnnestunud (%{value})" error_unable_to_connect: "Ühenduse loomine ei õnnestunud (%{value})" error_attachment_too_big: "Faili ei saa üles laadida, sest see on lubatust (%{max_size}) mahukam" warning_attachments_not_saved: "%{count} faili salvestamine ei õnnestunud." mail_subject_lost_password: "Sinu %{value} parool" mail_body_lost_password: "Parooli vahetamiseks vajuta järgmisele lingile:" mail_subject_register: "Sinu %{value} konto aktiveerimine" mail_body_register: "Konto aktiveerimiseks vajuta järgmisele lingile:" mail_body_account_information_external: "Sisse logimiseks saad kasutada oma %{value} kontot." mail_body_account_information: "Sinu konto teave" mail_subject_account_activation_request: "%{value} konto aktiveerimise nõue" mail_body_account_activation_request: "Registreerus uus kasutaja (%{value}). Konto avamine ootab Sinu kinnitust:" mail_subject_reminder: "%{count} teema tähtpäev jõuab kätte järgmise %{days} päeva jooksul" mail_body_reminder: "%{count} Sulle määratud teema tähtpäev jõuab kätte järgmise %{days} päeva jooksul:" mail_subject_wiki_content_added: "Lisati vikileht '%{id}'" mail_body_wiki_content_added: "Vikileht '%{id}' lisati %{author} poolt." mail_subject_wiki_content_updated: "Uuendati '%{id}' vikilehte" mail_body_wiki_content_updated: "Vikilehte '%{id}' uuendati %{author} poolt." field_name: "Nimi" field_description: "Kirjeldus" field_summary: "Kokkuvõte" field_is_required: "Kohustuslik" field_firstname: "Eesnimi" field_lastname: "Perekonnanimi" field_mail: "E-post" field_filename: "Fail" field_filesize: "Maht" field_downloads: "Allalaadimist" field_author: "Autor" field_created_on: "Loodud" field_updated_on: "Uuendatud" field_field_format: "Tüüp" field_is_for_all: "Kõigile projektidele" field_possible_values: "Võimalikud väärtused" field_regexp: "Regulaaravaldis" field_min_length: "Vähim maht" field_max_length: "Suurim naht" field_value: "Väärtus" field_category: "Kategooria" field_title: "Pealkiri" field_project: "Projekt" field_issue: "Teema" field_status: "Olek" field_notes: "Märkused" field_is_closed: "Sulgeb teema" field_is_default: "Algolek" field_tracker: "Valdkond" field_subject: "Teema" field_due_date: "Tähtaeg" field_assigned_to: "Tegeleja" field_priority: "Prioriteet" field_fixed_version: "Sihtversioon" field_user: "Kasutaja" field_principal: User or Group field_role: "Roll" field_homepage: "Koduleht" field_is_public: "Avalik" field_parent: "Emaprojekt" field_is_in_roadmap: "Teemad on teekaardil näha" field_login: "Kasutajanimi" field_mail_notification: "Teated e-kirjaga" field_admin: "Admin" field_last_login_on: "Viimane ühendus" field_language: "Keel" field_effective_date: "Tähtaeg" field_password: "Parool" field_new_password: "Uus parool" field_password_confirmation: "Kinnitus" field_version: "Versioon" field_type: "Tüüp" field_host: "Server" field_port: "Port" field_account: "Konto" field_base_dn: "Baas DN" field_attr_login: "Kasutajanime atribuut" field_attr_firstname: "Eesnime atribuut" field_attr_lastname: "Perekonnanime atribuut" field_attr_mail: "E-posti atribuut" field_onthefly: "Kasutaja automaatne loomine" field_start_date: "Alguskuupäev" field_done_ratio: "% tehtud" field_auth_source: "Autentimise viis" field_hide_mail: "Peida e-posti aadress" field_comments: "Kommentaar" field_url: "URL" field_start_page: "Esileht" field_subproject: "Alamprojekt" field_hours: "tundi" field_activity: "Tegevus" field_spent_on: "Kuupäev" field_identifier: "Tunnus" field_is_filter: "Kasutatav filtrina" field_issue_to: "Seotud teema" field_delay: "Viivitus" field_assignable: "Saab määrata teemadega tegelema" field_redirect_existing_links: "Suuna olemasolevad lingid ringi" field_estimated_hours: "Eeldatav ajakulu" field_column_names: "Veerud" field_time_entries: "Ajakulu" field_time_zone: "Ajatsoon" field_searchable: "Otsitav" field_default_value: "Vaikimisi" field_comments_sorting: "Kommentaaride järjestus" field_parent_title: "Pärineb lehest" field_editable: "Muudetav" field_watcher: "Jälgija" field_content: "Sisu" field_group_by: "Rühmita tulemus" field_sharing: "Teemade jagamine" field_parent_issue: "Pärineb teemast" field_member_of_group: "Tegeleja rühm" field_assigned_to_role: "Tegeleja roll" field_text: "Tekstiväli" field_visible: "Nähtav" field_warn_on_leaving_unsaved: "Hoiata salvestamata sisuga lehtedelt lahkumisel" field_issues_visibility: "See roll näeb" field_is_private: "Privaatne" field_commit_logs_encoding: "Sissekannete kodeering" field_scm_path_encoding: "Teeraja märkide kodeering" field_path_to_repository: "Hoidla teerada" field_root_directory: "Juurkataloog" field_cvsroot: "CVSROOT" field_cvs_module: "Moodul" field_repository_is_default: "Peamine hoidla" field_multiple: "Korraga mitu väärtust" field_auth_source_ldap_filter: "LDAP filter" setting_app_title: "Veebilehe pealkiri" setting_welcome_text: "Tervitustekst" setting_default_language: "Vaikimisi keel" setting_login_required: "Autentimine on kohustuslik" setting_self_registration: "Omaloodud konto aktiveerimine" setting_attachment_max_size: "Manuse suurim maht" setting_issues_export_limit: "Teemade ekspordi limiit" setting_mail_from: "Saatja e-posti aadress" setting_plain_text_mail: "E-kiri tavalise tekstina (ilma HTML-ta)" setting_host_name: "Serveri nimi ja teerada" setting_text_formatting: "Vormindamise abi" setting_wiki_compression: "Viki ajaloo pakkimine" setting_feeds_limit: "Atom voogude suurim objektide arv" setting_default_projects_public: "Uued projektid on vaikimisi avalikud" setting_autofetch_changesets: "Lae uuendused automaatselt" setting_sys_api_enabled: "Hoidlate haldamine veebiteenuse kaudu" setting_commit_ref_keywords: "Viitade võtmesõnad" setting_commit_fix_keywords: "Paranduste võtmesõnad" setting_autologin: "Automaatne sisselogimine" setting_date_format: "Kuupäeva formaat" setting_time_format: "Ajaformaat" setting_cross_project_issue_relations: "Luba siduda eri projektide teemasid" setting_issue_list_default_columns: "Teemade nimekirja vaikimisi veerud" setting_repositories_encodings: "Manuste ja hoidlate kodeering" setting_emails_header: "E-kirja päis" setting_emails_footer: "E-kirja jalus" setting_protocol: "Protokoll" setting_per_page_options: "Objekte lehe kohta variandid" setting_user_format: "Kasutaja nime esitamise vorm" setting_activity_days_default: "Projektide ajalugu näidatakse" setting_display_subprojects_issues: "Näita projektis vaikimisi ka alamprojektide teemasid" setting_enabled_scm: "Kasutatavad lähtekoodi haldusvahendid" setting_mail_handler_body_delimiters: "Kärbi e-kirja lõpp peale sellist rida" setting_mail_handler_api_enabled: "E-kirjade vastuvõtt veebiteenuse kaudu" setting_mail_handler_api_key: "Veebiteenuse API võti" setting_sequential_project_identifiers: "Genereeri järjestikused projektitunnused" setting_gravatar_enabled: "Kasuta Gravatari kasutajaikoone" setting_gravatar_default: "Vaikimisi kasutatav ikoon" setting_diff_max_lines_displayed: "Enim korraga näidatavaid erinevusi" setting_file_max_size_displayed: "Kuvatava tekstifaili suurim maht" setting_repository_log_display_limit: "Enim ajaloos näidatavaid sissekandeid" setting_password_min_length: "Lühim lubatud parooli pikkus" setting_new_project_user_role_id: "Projekti looja roll oma projektis" setting_default_projects_modules: "Vaikimisi moodulid uutes projektides" setting_issue_done_ratio: "Määra teema edenemise aste" setting_issue_done_ratio_issue_field: "kasutades vastavat välja" setting_issue_done_ratio_issue_status: "kasutades teema olekut" setting_start_of_week: "Nädala alguspäev" setting_rest_api_enabled: "Luba REST API kasutamine" setting_cache_formatted_text: "Puhverda vormindatud teksti" setting_default_notification_option: "Vaikimisi teavitatakse" setting_commit_logtime_enabled: "Luba ajakulu sisestamine" setting_commit_logtime_activity_id: "Tegevus kulunud ajal" setting_gantt_items_limit: "Gantti diagrammi objektide suurim hulk" setting_issue_group_assignment: "Luba teemade andmine gruppidele" setting_default_issue_start_date_to_creation_date: "Uute teemade alguskuupäevaks on teema loomise päev" setting_commit_cross_project_ref: "Luba viiteid ja parandusi ka kõigi teiste projektide teemadele" setting_unsubscribe: "Luba kasutajal oma konto kustutada" permission_add_project: "Projekte luua" permission_add_subprojects: "Alamprojekte luua" permission_edit_project: "Projekte muuta" permission_select_project_modules: "Projektimooduleid valida" permission_manage_members: "Liikmeid hallata" permission_manage_project_activities: "Projekti tegevusi hallata" permission_manage_versions: "Versioone hallata" permission_manage_categories: "Kategooriaid hallata" permission_view_issues: "Teemasid näha" permission_add_issues: "Teemasid lisada" permission_edit_issues: "Teemasid uuendada" permission_manage_issue_relations: "Teemade seoseid hallata" permission_set_issues_private: "Teemasid avalikeks või privaatseiks seada" permission_set_own_issues_private: "Omi teemasid avalikeks või privaatseiks seada" permission_add_issue_notes: "Märkusi lisada" permission_edit_issue_notes: "Märkusi muuta" permission_edit_own_issue_notes: "Omi märkusi muuta" permission_delete_issues: "Teemasid kustutada" permission_manage_public_queries: "Avalikke päringuid hallata" permission_save_queries: "Päringuid salvestada" permission_view_gantt: "Gantti diagramme näha" permission_view_calendar: "Kalendrit näha" permission_view_issue_watchers: "Jälgijate nimekirja näha" permission_add_issue_watchers: "Jälgijaid lisada" permission_delete_issue_watchers: "Jälgijaid kustutada" permission_log_time: "Ajakulu sisestada" permission_view_time_entries: "Ajakulu näha" permission_edit_time_entries: "Ajakulu kandeid muuta" permission_edit_own_time_entries: "Omi ajakulu kandeid muuta" permission_manage_news: "Uudiseid hallata" permission_comment_news: "Uudiseid kommenteerida" permission_view_documents: "Dokumente näha" permission_manage_files: "Faile hallata" permission_view_files: "Faile näha" permission_manage_wiki: "Vikit hallata" permission_rename_wiki_pages: "Vikilehti ümber nimetada" permission_delete_wiki_pages: "Vikilehti kustutada" permission_view_wiki_pages: "Vikit näha" permission_view_wiki_edits: "Viki ajalugu näha" permission_edit_wiki_pages: "Vikilehti muuta" permission_delete_wiki_pages_attachments: "Vikilehe manuseid kustutada" permission_protect_wiki_pages: "Vikilehti kaitsta" permission_manage_repository: "Hoidlaid hallata" permission_browse_repository: "Hoidlaid sirvida" permission_view_changesets: "Sissekandeid näha" permission_commit_access: "Sissekandeid teha" permission_manage_boards: "Foorumeid hallata" permission_view_messages: "Postitusi näha" permission_add_messages: "Postitusi lisada" permission_edit_messages: "Postitusi muuta" permission_edit_own_messages: "Omi postitusi muuta" permission_delete_messages: "Postitusi kustutada" permission_delete_own_messages: "Omi postitusi kustutada" permission_export_wiki_pages: "Vikilehti eksportida" permission_manage_subtasks: "Alamteemasid hallata" permission_manage_related_issues: "Seotud teemasid hallata" project_module_issue_tracking: "Teemade jälgimine" project_module_time_tracking: "Ajakulu arvestus" project_module_news: "Uudised" project_module_documents: "Dokumendid" project_module_files: "Failid" project_module_wiki: "Viki" project_module_repository: "Hoidlad" project_module_boards: "Foorumid" project_module_calendar: "Kalender" project_module_gantt: "Gantt" label_user: "Kasutaja" label_user_plural: "Kasutajad" label_user_new: "Uus kasutaja" label_user_anonymous: "Anonüümne" label_project: "Projekt" label_project_new: "Uus projekt" label_project_plural: "Projektid" label_x_projects: zero: "pole projekte" one: "1 projekt" other: "%{count} projekti" label_project_all: "Kõik projektid" label_project_latest: "Viimased projektid" label_issue: "Teema" label_issue_new: "Uus teema" label_issue_plural: "Teemad" label_issue_view_all: "Teemade nimekiri" label_issues_by: "Teemad %{value} järgi" label_issue_added: "Teema lisatud" label_issue_updated: "Teema uuendatud" label_issue_note_added: "Märkus lisatud" label_issue_status_updated: "Olek uuendatud" label_issue_priority_updated: "Prioriteet uuendatud" label_document: "Dokument" label_document_new: "Uus dokument" label_document_plural: "Dokumendid" label_document_added: "Dokument lisatud" label_role: "Roll" label_role_plural: "Rollid" label_role_new: "Uus roll" label_role_and_permissions: "Rollid ja õigused" label_role_anonymous: "Registreerimata kasutaja" label_role_non_member: "Projekti kaasamata kasutaja" label_member: "Liige" label_member_new: "Uus liige" label_member_plural: "Liikmed" label_tracker: "Valdkond" label_tracker_plural: "Valdkonnad" label_tracker_new: "Uus valdkond" label_workflow: "Töövood" label_issue_status: "Olek" label_issue_status_plural: "Olekud" label_issue_status_new: "Uus olek" label_issue_category: "Kategooria" label_issue_category_plural: "Kategooriad" label_issue_category_new: "Uus kategooria" label_custom_field: "Omaloodud väli" label_custom_field_plural: "Omaloodud väljad" label_custom_field_new: "Uus väli" label_enumerations: "Loetelud" label_enumeration_new: "Lisa" label_information: "Teave" label_information_plural: "Teave" label_register: "Registreeru" label_password_lost: "Kui parool on ununud..." label_home: "Kodu" label_my_page: "Minu leht" label_my_account: "Minu konto" label_my_projects: "Minu projektid" label_administration: "Seadistused" label_login: "Logi sisse" label_logout: "Logi välja" label_help: "Abi" label_reported_issues: "Minu poolt lisatud teemad" label_assigned_to_me_issues: "Minu teha olevad teemad" label_registered_on: "Registreeritud" label_activity: "Ajalugu" label_user_activity: "%{value} tegevuste ajalugu" label_new: "Uus" label_logged_as: "Sisse logitud kasutajana" label_environment: "Keskkond" label_authentication: "Autentimine" label_auth_source: "Autentimisallikas" label_auth_source_new: "Uus autentimisallikas" label_auth_source_plural: "Autentimisallikad" label_subproject_plural: "Alamprojektid" label_subproject_new: "Uus alamprojekt" label_and_its_subprojects: "%{value} ja selle alamprojektid" label_min_max_length: "Min.-maks. pikkus" label_list: "Nimekiri" label_date: "Kuupäev" label_integer: "Täisarv" label_float: "Ujukomaarv" label_boolean: "Tõeväärtus" label_string: "Tekst" label_text: "Pikk tekst" label_attribute: "Atribuut" label_attribute_plural: "Atribuudid" label_no_data: "Pole" label_change_status: "Muuda olekut" label_history: "Ajalugu" label_attachment: "Fail" label_attachment_new: "Uus fail" label_attachment_delete: "Kustuta fail" label_attachment_plural: "Failid" label_file_added: "Fail lisatud" label_report: "Aruanne" label_report_plural: "Aruanded" label_news: "Uudised" label_news_new: "Lisa uudis" label_news_plural: "Uudised" label_news_latest: "Viimased uudised" label_news_view_all: "Kõik uudised" label_news_added: "Uudis lisatud" label_news_comment_added: "Kommentaar uudisele lisatud" label_settings: "Seaded" label_overview: "Ülevaade" label_version: "Versioon" label_version_new: "Uus versioon" label_version_plural: "Versioonid" label_close_versions: "Sulge lõpetatud versioonid" label_confirmation: "Kinnitus" label_export_to: "Saadaval ka formaadis" label_read: "Loe..." label_public_projects: "Avalikud projektid" label_open_issues: "avatud" label_open_issues_plural: "avatud" label_closed_issues: "suletud" label_closed_issues_plural: "suletud" label_x_open_issues_abbr: zero: "0 avatud" one: "1 avatud" other: "%{count} avatud" label_x_closed_issues_abbr: zero: "0 suletud" one: "1 suletud" other: "%{count} suletud" label_x_issues: zero: "0 teemat" one: "1 teema" other: "%{count} teemat" label_total: "Kokku" label_permissions: "Õigused" label_current_status: "Praegune olek" label_new_statuses_allowed: "Uued lubatud olekud" label_all: "kõik" label_none: "pole" label_nobody: "eikeegi" label_next: "Järgmine" label_previous: "Eelmine" label_used_by: "Kasutab" label_details: "Üksikasjad" label_add_note: "Lisa märkus" label_calendar: "Kalender" label_months_from: "kuu kaugusel" label_gantt: "Gantt" label_internal: "Sisemine" label_last_changes: "viimased %{count} muudatust" label_change_view_all: "Kõik muudatused" label_comment: "Kommentaar" label_comment_plural: "Kommentaarid" label_x_comments: zero: "kommentaare pole" one: "1 kommentaar" other: "%{count} kommentaari" label_comment_add: "Lisa kommentaar" label_comment_added: "Kommentaar lisatud" label_comment_delete: "Kustuta kommentaar" label_query: "Omaloodud päring" label_query_plural: "Omaloodud päringud" label_query_new: "Uus päring" label_my_queries: "Mu omaloodud päringud" label_filter_add: "Lisa filter" label_filter_plural: "Filtrid" label_equals: "on" label_not_equals: "ei ole" label_in_less_than: "on väiksem kui" label_in_more_than: "on suurem kui" label_greater_or_equal: "suurem-võrdne" label_less_or_equal: "väiksem-võrdne" label_between: "vahemikus" label_in: "sisaldub hulgas" label_today: "täna" label_yesterday: "eile" label_this_week: "sel nädalal" label_last_week: "eelmisel nädalal" label_last_n_days: "viimase %{count} päeva jooksul" label_this_month: "sel kuul" label_last_month: "eelmisel kuul" label_this_year: "sel aastal" label_date_range: "Kuupäevavahemik" label_less_than_ago: "uuem kui" label_more_than_ago: "vanem kui" label_ago: "vanus" label_contains: "sisaldab" label_not_contains: "ei sisalda" label_day_plural: "päeva" label_repository: "Hoidla" label_repository_new: "Uus hoidla" label_repository_plural: "Hoidlad" label_branch: "Haru" label_tag: "Sildiga" label_revision: "Sissekanne" label_revision_plural: "Sissekanded" label_revision_id: "Sissekande kood %{value}" label_associated_revisions: "Seotud sissekanded" label_added: "lisatud" label_modified: "muudetud" label_copied: "kopeeritud" label_renamed: "ümber nimetatud" label_deleted: "kustutatud" label_latest_revision: "Viimane sissekanne" label_latest_revision_plural: "Viimased sissekanded" label_view_revisions: "Haru ajalugu" label_view_all_revisions: "Kogu ajalugu" label_max_size: "Suurim maht" label_roadmap: "Teekaart" label_roadmap_due_in: "Tähtaeg %{value}" label_roadmap_overdue: "%{value} hiljaks jäänud" label_roadmap_no_issues: "Selles versioonis ei ole teemasid" label_search: "Otsi" label_result_plural: "Tulemused" label_all_words: "Kõik sõnad" label_wiki: "Viki" label_wiki_edit: "Viki muutmine" label_wiki_edit_plural: "Viki muutmised" label_wiki_page: "Vikileht" label_wiki_page_plural: "Vikilehed" label_index_by_title: "Järjesta pealkirja järgi" label_index_by_date: "Järjesta kuupäeva järgi" label_current_version: "Praegune versioon" label_preview: "Eelvaade" label_feed_plural: "Vood" label_changes_details: "Kõigi muudatuste üksikasjad" label_issue_tracking: "Teemade jälgimine" label_spent_time: "Kulutatud aeg" label_f_hour: "%{value} tund" label_f_hour_plural: "%{value} tundi" label_time_tracking: "Ajakulu arvestus" label_change_plural: "Muudatused" label_statistics: "Statistika" label_commits_per_month: "Sissekandeid kuu kohta" label_commits_per_author: "Sissekandeid autori kohta" label_diff: "erinevused" label_view_diff: "Vaata erinevusi" label_diff_inline: "teksti sees" label_diff_side_by_side: "kõrvuti" label_options: "Valikud" label_copy_workflow_from: "Kopeeri see töövoog" label_permissions_report: "Õiguste aruanne" label_watched_issues: "Jälgitud teemad" label_related_issues: "Seotud teemad" label_applied_status: "Kehtestatud olek" label_loading: "Laadimas..." label_relation_new: "Uus seos" label_relation_delete: "Kustuta seos" label_relates_to: "seostub" label_duplicates: "duplitseerib" label_duplicated_by: "duplitseerijaks" label_blocks: "blokeerib" label_blocked_by: "blokeerijaks" label_precedes: "eelneb" label_follows: "järgneb" label_stay_logged_in: "Püsi sisselogituna" label_disabled: "pole võimalik" label_show_completed_versions: "Näita lõpetatud versioone" label_me: "mina" label_board: "Foorum" label_board_new: "Uus foorum" label_board_plural: "Foorumid" label_board_locked: "Lukus" label_board_sticky: "Püsiteema" label_topic_plural: "Teemad" label_message_plural: "Postitused" label_message_last: "Viimane postitus" label_message_new: "Uus postitus" label_message_posted: "Postitus lisatud" label_reply_plural: "Vastused" label_send_information: "Saada teave konto kasutajale" label_year: "Aasta" label_month: "Kuu" label_week: "Nädal" label_date_from: "Alates" label_date_to: "Kuni" label_language_based: "Kasutaja keele põhjal" label_sort_by: "Sorteeri %{value} järgi" label_send_test_email: "Saada kontrollkiri" label_feeds_access_key: "Atom juurdepääsuvõti" label_missing_feeds_access_key: "Atom juurdepääsuvõti on puudu" label_feeds_access_key_created_on: "Atom juurdepääsuvõti loodi %{value} tagasi" label_module_plural: "Moodulid" label_added_time_by: "Lisatud %{author} poolt %{age} tagasi" label_updated_time_by: "Uuendatud %{author} poolt %{age} tagasi" label_updated_time: "Uuendatud %{value} tagasi" label_jump_to_a_project: "Ava projekt..." label_file_plural: "Failid" label_changeset_plural: "Muudatused" label_default_columns: "Vaikimisi veerud" label_no_change_option: "(Ei muutu)" label_bulk_edit_selected_issues: "Muuda valitud teemasid korraga" label_bulk_edit_selected_time_entries: "Muuda valitud ajakandeid korraga" label_theme: "Visuaalne teema" label_default: "Tavaline" label_search_titles_only: "Ainult pealkirjadest" label_user_mail_option_all: "Kõigist tegevustest kõigis mu projektides" label_user_mail_option_selected: "Kõigist tegevustest ainult valitud projektides..." label_user_mail_option_none: "Teavitusi ei saadeta" label_user_mail_option_only_my_events: "Ainult mu jälgitavatest või minuga seotud tegevustest" label_user_mail_no_self_notified: "Ära teavita mind mu enda tehtud muudatustest" label_registration_activation_by_email: "e-kirjaga" label_registration_manual_activation: "käsitsi" label_registration_automatic_activation: "automaatselt" label_display_per_page: "Lehe kohta: %{value}" label_age: "Vanus" label_change_properties: "Muuda omadusi" label_general: "Üldine" label_scm: "Lähtekoodi haldusvahend" label_plugins: "Lisamoodulid" label_ldap_authentication: "LDAP autentimine" label_downloads_abbr: "A/L" label_optional_description: "Teave" label_add_another_file: "Lisa veel üks fail" label_preferences: "Eelistused" label_chronological_order: "kronoloogiline" label_reverse_chronological_order: "tagurpidi kronoloogiline" label_incoming_emails: "Sissetulevad e-kirjad" label_generate_key: "Genereeri võti" label_issue_watchers: "Jälgijad" label_example: "Näide" label_display: "Kujundus" label_sort: "Sorteeri" label_ascending: "Kasvavalt" label_descending: "Kahanevalt" label_date_from_to: "Alates %{start} kuni %{end}" label_wiki_content_added: "Vikileht lisatud" label_wiki_content_updated: "Vikileht uuendatud" label_group: "Rühm" label_group_plural: "Rühmad" label_group_new: "Uus rühm" label_time_entry_plural: "Kulutatud aeg" label_version_sharing_none: "ei toimu" label_version_sharing_descendants: "alamprojektidega" label_version_sharing_hierarchy: "projektihierarhiaga" label_version_sharing_tree: "projektipuuga" label_version_sharing_system: "kõigi projektidega" label_update_issue_done_ratios: "Uuenda edenemise astmeid" label_copy_source: "Allikas" label_copy_target: "Sihtkoht" label_copy_same_as_target: "Sama mis sihtkoht" label_display_used_statuses_only: "Näita ainult selles valdkonnas kasutusel olekuid" label_api_access_key: "API juurdepääsuvõti" label_missing_api_access_key: "API juurdepääsuvõti on puudu" label_api_access_key_created_on: "API juurdepääsuvõti loodi %{value} tagasi" label_profile: "Profiil" label_subtask_plural: "Alamteemad" label_project_copy_notifications: "Saada projekti kopeerimise kohta teavituskiri" label_principal_search: "Otsi kasutajat või rühma:" label_user_search: "Otsi kasutajat:" label_additional_workflow_transitions_for_author: "Luba ka järgmisi üleminekuid, kui kasutaja on teema looja" label_additional_workflow_transitions_for_assignee: "Luba ka järgmisi üleminekuid, kui kasutaja on teemaga tegeleja" label_issues_visibility_all: "kõiki teemasid" label_issues_visibility_public: "kõiki mitteprivaatseid teemasid" label_issues_visibility_own: "enda poolt loodud või enda teha teemasid" label_git_report_last_commit: "Viimase sissekande teave otse failinimekirja" label_parent_revision: "Eellane" label_child_revision: "Järglane" label_export_options: "%{export_format} ekspordivalikud" label_copy_attachments: "Kopeeri manused" label_item_position: "%{position}/%{count}" label_completed_versions: "Lõpetatud versioonid" label_search_for_watchers: "Otsi lisamiseks jälgijaid" button_login: "Logi sisse" button_submit: "Sisesta" button_save: "Salvesta" button_check_all: "Märgi kõik" button_uncheck_all: "Nulli valik" button_collapse_all: "Voldi kõik kokku" button_expand_all: "Voldi kõik lahti" button_delete: "Kustuta" button_create: "Loo" button_create_and_continue: "Loo ja jätka" button_test: "Testi" button_edit: "Muuda" button_edit_associated_wikipage: "Muuda seotud vikilehte: %{page_title}" button_add: "Lisa" button_change: "Muuda" button_apply: "Lae" button_clear: "Puhasta" button_lock: "Lukusta" button_unlock: "Ava lukust" button_download: "Lae alla" button_list: "Listi" button_view: "Vaata" button_move: "Tõsta" button_move_and_follow: "Tõsta ja järgne" button_back: "Tagasi" button_cancel: "Katkesta" button_activate: "Aktiveeri" button_sort: "Sorteeri" button_log_time: "Ajakulu" button_rollback: "Rulli tagasi sellesse versiooni" button_watch: "Jälgi" button_unwatch: "Ära jälgi" button_reply: "Vasta" button_archive: "Arhiveeri" button_unarchive: "Arhiivist tagasi" button_reset: "Nulli" button_rename: "Nimeta ümber" button_change_password: "Vaheta parool" button_copy: "Kopeeri" button_copy_and_follow: "Kopeeri ja järgne" button_annotate: "Annoteeri" button_update: "Muuda" button_configure: "Konfigureeri" button_quote: "Tsiteeri" button_show: "Näita" button_edit_section: "Muuda seda sektsiooni" button_export: "Ekspordi" button_delete_my_account: "Kustuta oma konto" status_active: "aktiivne" status_registered: "registreeritud" status_locked: "lukus" version_status_open: "avatud" version_status_locked: "lukus" version_status_closed: "suletud" field_active: "Aktiivne" text_select_mail_notifications: "Tegevused, millest e-kirjaga teavitatakse" text_regexp_info: "nt. ^[A-Z0-9]+$" text_project_destroy_confirmation: "Oled Sa kindel oma soovis see projekt täielikult kustutada?" text_subprojects_destroy_warning: "Alamprojekt(id) - %{value} - kustutatakse samuti." text_workflow_edit: "Töövoo muutmiseks vali roll ja valdkond" text_are_you_sure: "Oled Sa kindel?" text_journal_changed: "%{label} muudetud %{old} -> %{new}" text_journal_changed_no_detail: "%{label} uuendatud" text_journal_set_to: "%{label} uus väärtus on %{value}" text_journal_deleted: "%{label} kustutatud (%{old})" text_journal_added: "%{label} %{value} lisatud" text_tip_issue_begin_day: "teema avamise päev" text_tip_issue_end_day: "teema sulgemise päev" text_tip_issue_begin_end_day: "teema avati ja suleti samal päeval" text_project_identifier_info: "Lubatud on ainult väikesed tähed (a-z), numbrid ja kriipsud.
    Peale salvestamist ei saa tunnust enam muuta." text_caracters_maximum: "%{count} märki kõige rohkem." text_caracters_minimum: "Peab olema vähemalt %{count} märki pikk." text_length_between: "Pikkus %{min} kuni %{max} märki." text_tracker_no_workflow: "Selle valdkonna jaoks ei ole ühtegi töövoogu kirjeldatud" text_unallowed_characters: "Lubamatud märgid" text_comma_separated: "Lubatud erinevad väärtused (komaga eraldatult)." text_line_separated: "Lubatud erinevad väärtused (igaüks eraldi real)." text_issues_ref_in_commit_messages: "Teemadele ja parandustele viitamine sissekannete märkustes" text_issue_added: "%{author} lisas uue teema %{id}." text_issue_updated: "%{author} uuendas teemat %{id}." text_wiki_destroy_confirmation: "Oled Sa kindel oma soovis kustutada see Viki koos kogu sisuga?" text_issue_category_destroy_question: "Kustutatavat kategooriat kasutab %{count} teema(t). Mis Sa soovid nendega ette võtta?" text_issue_category_destroy_assignments: "Jäta teemadel kategooria määramata" text_issue_category_reassign_to: "Määra teemad teise kategooriasse" text_user_mail_option: "Valimata projektidest saad teavitusi ainult jälgitavate või Sinuga seotud asjade kohta (nt. Sinu loodud või teha teemad)." text_no_configuration_data: "Rollid, valdkonnad, olekud ja töövood ei ole veel seadistatud.\nVäga soovitav on laadida vaikeasetused. Peale laadimist saad neid ise muuta." text_load_default_configuration: "Lae vaikeasetused" text_status_changed_by_changeset: "Kehtestatakse muudatuses %{value}." text_time_logged_by_changeset: "Kehtestatakse muudatuses %{value}." text_issues_destroy_confirmation: "Oled Sa kindel oma soovis valitud teema(d) kustutada?" text_issues_destroy_descendants_confirmation: "See kustutab samuti %{count} alamteemat." text_time_entries_destroy_confirmation: "Oled Sa kindel oma soovis valitud ajakulu kanne/kanded kustutada?" text_select_project_modules: "Projektis kasutatavad moodulid" text_default_administrator_account_changed: "Algne administraatori konto on muudetud" text_file_repository_writable: "Manuste kataloog on kirjutatav" text_plugin_assets_writable: "Lisamoodulite abifailide kataloog on kirjutatav" text_minimagick_available: "MiniMagick on kasutatav (ei ole kohustuslik)" text_destroy_time_entries_question: "Kustutatavatele teemadele oli kirja pandud %{hours} tundi. Mis Sa soovid ette võtta?" text_destroy_time_entries: "Kustuta need tunnid" text_assign_time_entries_to_project: "Vii tunnid üle teise projekti" text_reassign_time_entries: "Määra tunnid sellele teemale:" text_user_wrote: "%{value} kirjutas:" text_user_wrote_in: "%{value} kirjutas (%{link}):" text_enumeration_destroy_question: "Selle väärtusega on seotud %{count} objekt(i)." text_enumeration_category_reassign_to: "Seo nad teise väärtuse külge:" text_email_delivery_not_configured: "E-kirjade saatmine ei ole seadistatud ja teavitusi ei saadeta.\nKonfigureeri oma SMTP server failis config/configuration.yml ja taaskäivita Redmine." text_repository_usernames_mapping: "Seosta Redmine kasutaja hoidlasse sissekannete tegijaga.\nSama nime või e-postiga kasutajad seostatakse automaatselt." text_diff_truncated: "... Osa erinevusi jäi välja, sest neid on näitamiseks liiga palju." text_custom_field_possible_values_info: "Üks rida iga väärtuse jaoks" text_wiki_page_destroy_question: "Sel lehel on %{descendants} järglasleht(e) ja järeltulija(t). Mis Sa soovid ette võtta?" text_wiki_page_nullify_children: "Muuda järglaslehed uuteks juurlehtedeks" text_wiki_page_destroy_children: "Kustuta järglaslehed ja kõik nende järglased" text_wiki_page_reassign_children: "Määra järglaslehed teise lehe külge" text_own_membership_delete_confirmation: "Sa võtad endalt ära osa või kõik õigused ega saa edaspidi seda projekti võib-olla enam muuta.\nOled Sa jätkamises kindel?" text_zoom_in: "Vaata lähemalt" text_zoom_out: "Vaata kaugemalt" text_warn_on_leaving_unsaved: "Sel lehel on salvestamata teksti, mis läheb kaduma, kui siit lehelt lahkud." text_scm_path_encoding_note: "Vaikimisi UTF-8" text_git_repository_note: "Hoidla peab olema paljas (bare) ja kohalik (nt. /gitrepo, c:\\gitrepo)" text_mercurial_repository_note: "Hoidla peab olema kohalik (nt. /hgrepo, c:\\hgrepo)" text_scm_command: "Hoidla poole pöördumise käsk" text_scm_command_version: "Versioon" text_scm_config: "Hoidlate poole pöördumist saab konfigureerida failis config/configuration.yml. Peale selle muutmist taaskäivita Redmine." text_scm_command_not_available: "Hoidla poole pöördumine ebaõnnestus. Palun kontrolli seadistusi." text_issue_conflict_resolution_overwrite: "Kehtesta oma muudatused (kõik märkused jäävad, ent muu võidakse üle kirjutada)" text_issue_conflict_resolution_add_notes: "Lisa oma märkused, aga loobu teistest muudatustest" text_issue_conflict_resolution_cancel: "Loobu kõigist muudatustest ja lae %{link} uuesti" text_account_destroy_confirmation: "Oled Sa kindel?\nSu konto kustutatakse jäädavalt ja seda pole võimalik taastada." default_role_manager: "Haldaja" default_role_developer: "Arendaja" default_role_reporter: "Edastaja" default_tracker_bug: "Veaparandus" default_tracker_feature: "Täiendus" default_tracker_support: "Klienditugi" default_issue_status_new: "Avatud" default_issue_status_in_progress: "Töös" default_issue_status_resolved: "Lahendatud" default_issue_status_feedback: "Tagasiside" default_issue_status_closed: "Suletud" default_issue_status_rejected: "Tagasi lükatud" default_doc_category_user: "Juhend lõppkasutajale" default_doc_category_tech: "Tehniline dokumentatsioon" default_priority_low: "Aega on" default_priority_normal: "Tavaline" default_priority_high: "Pakiline" default_priority_urgent: "Täna vaja" default_priority_immediate: "Kohe vaja" default_activity_design: "Kavandamine" default_activity_development: "Arendamine" enumeration_issue_priorities: "Teemade prioriteedid" enumeration_doc_categories: "Dokumentide kategooriad" enumeration_activities: "Tegevused (ajakulu)" enumeration_system_activity: "Süsteemi aktiivsus" description_filter: "Filter" description_search: "Otsinguväli" description_choose_project: "Projektid" description_project_scope: "Otsingu ulatus" description_notes: "Märkused" description_message_content: "Postituse sisu" description_query_sort_criteria_attribute: "Sorteerimise kriteerium" description_query_sort_criteria_direction: "Sorteerimise suund" description_user_mail_notification: "E-kirjaga teavitamise seaded" description_available_columns: "Kasutatavad veerud" description_selected_columns: "Valitud veerud" description_all_columns: "Kõik veerud" description_issue_category_reassign: "Vali uus kategooria" description_wiki_subpages_reassign: "Vali lehele uus vanem" error_session_expired: "Sinu sessioon on aegunud. Palun logi uuesti sisse" text_session_expiration_settings: "Hoiatus! Nende sätete muutmine võib kehtivad sessioonid lõpetada. Ka sinu enda oma!" setting_session_lifetime: "Sessiooni eluiga" setting_session_timeout: "Sessiooni aegumine jõudeoleku tõttu" label_session_expiration: "Sessiooni aegumine" permission_close_project: "Sule projekt/ava projekt uuesti" button_close: "Sulge" button_reopen: "Ava uuesti" project_status_active: "Aktiivne" project_status_closed: "Suletud" project_status_archived: "Arhiveeritud" text_project_closed: "See projekt on suletud ja projekti muuta ei saa" notice_user_successful_create: "Kasutaja %{id} loodud." field_core_fields: "Standardväljad" field_timeout: "Aegumine (sekundites)" setting_thumbnails_enabled: "Näita manustest väikest pilti" setting_thumbnails_size: "Väikese pildi suurus (pikslites)" label_status_transitions: "Staatuse muutumine" label_fields_permissions: "Väljade õigused" label_readonly: "Muuta ei saa" label_required: "Kohtustuslik" text_repository_identifier_info: "Lubatud on ainult väikesed tähed (a-z), numbrid ja kriipsud.
    Peale salvestamist ei saa tunnust enam muuta." field_board_parent: "Ülemfoorum" label_attribute_of_project: "Projekti nimi: %{name}" label_attribute_of_author: "Autori nimi: %{name}" label_attribute_of_assigned_to: "Tegeleja nimi: %{name}" label_attribute_of_fixed_version: "Sihtversiooni nimi: %{name}" label_copy_subtasks: "Kopeeri alamülesanded" label_copied_to: "Kopeeritud siia: " label_copied_from: "Kopeeritud kohast:" label_any_issues_in_project: "Kõik projekti teemad" label_any_issues_not_in_project: "Kõik teemad, mis pole projektis" field_private_notes: "Privaatsed märkmed" permission_view_private_notes: "Vaata privaatseid märkmeid" permission_set_notes_private: "Õigus märkmeid privaatseks teha" label_no_issues_in_project: "Projektis pole teemasid" label_any: "kõik" label_last_n_weeks: "viimased %{count} nädalat" setting_cross_project_subtasks: "Luba projektide vahelisi alamülesandeid" label_cross_project_descendants: "alamprojektidega" label_cross_project_tree: "projektipuuga" label_cross_project_hierarchy: "projektihierarhiaga" label_cross_project_system: "kõigi projektidega" button_hide: "Peida" setting_non_working_week_days: "Puhkepäevad" label_in_the_next_days: "järgmisel päeval" label_in_the_past_days: "eelmisel päeval" label_attribute_of_user: "Kasutaja nimi: %{name}" text_turning_multiple_off: "Kui sa keelad mitme väärtuse võimaluse, siis need eemaldatakse nii, et jääb ainult üks väärtus asja kohta." label_attribute_of_issue: "Teema %{name}" permission_add_documents: "Lisa dokumente" permission_edit_documents: "Muuda dokumente" permission_delete_documents: "Kustuta dokumente" label_gantt_progress_line: "Progressi graafik" setting_jsonp_enabled: "JSONP tugi sees" field_inherit_members: "Päri liikmed" field_closed_on: "Suletud kuupäeval" field_generate_password: "Loo parool" setting_default_projects_tracker_ids: "Uute projektide vaikimisi jälgijad" label_total_time: "Kokku" notice_account_not_activated_yet: "Sa pole veel oma kontot aktiveerinud. Kui sa soovid saada uut aktiveerimise e-posti, siis vajuta siia." notice_account_locked: "Sinu konto on lukus" label_hidden: "Peidetud" label_visibility_private: "ainult minule" label_visibility_roles: "ainult neile rollidele" label_visibility_public: "kõigile kasutajatele" field_must_change_passwd: "Peab parooli järgmisel sisselogimisel ära muutma" notice_new_password_must_be_different: "Uus parool peab olema eelmisest erinev" setting_mail_handler_excluded_filenames: "Välista manuseid nime kaudu" text_convert_available: "ImageMagick teisendaja on saadaval (pole kohustuslik)" label_link: "Viit" label_only: "ainult" label_drop_down_list: "hüpikmenüü" label_checkboxes: "märkeruudud" label_link_values_to: "Lingi väärtused URLiga" setting_force_default_language_for_anonymous: "Anonüümsed kasutajad on vaikimisi keelega" setting_force_default_language_for_loggedin: "Sisse logitud kasutajad on vaikimisi keelega" label_custom_field_select_type: "Vali objekti tüüp, millele omaloodud väli külge pannakse" label_issue_assigned_to_updated: "Tegeleja uuendatud" label_check_for_updates: "Vaata uuendusi" label_latest_compatible_version: "Värskeim ühilduv versioon" label_unknown_plugin: "Tundmatu plugin" label_radio_buttons: "raadionupud" label_group_anonymous: "Anonüümsed kasutajad" label_group_non_member: "Rühmata kasutajad" label_add_projects: "Lisa projekte" field_default_status: "Vaikimisi staatus" text_subversion_repository_note: 'Näited: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: "Kasutajate nähtavus" label_users_visibility_all: "Kõik aktiivsed kasutajad" label_users_visibility_members_of_visible_projects: "Nähtavate projektide liikmed" label_edit_attachments: "Muuda lisatud faile" setting_link_copied_issue: "Kopeerimisel lingi teemad" label_link_copied_issue: "Lingi kopeeritud teema" label_ask: "Küsi" label_search_attachments_yes: "Otsi manuste nimedest ja kirjeldustest" label_search_attachments_no: "Ära manustest otsi" label_search_attachments_only: "Otsi ainult manustest" label_search_open_issues_only: "Otsi ainult avatud teemadest" field_address: "E-post" setting_max_additional_emails: "Lisa e-posti aadresside suurim kogus" label_email_address_plural: "E-posti aadressid" label_email_address_add: "Lisa e-posti aadress" label_enable_notifications: "Saada teavitusi" label_disable_notifications: "Ära saada teavitusi" setting_search_results_per_page: "Otsitulemusi lehe kohta" label_blank_value: "tühi" permission_copy_issues: "Kopeeri teemad" error_password_expired: "Su parool on aegunud või administraator nõuab sult selle vahetamist" field_time_entries_visibility: "Ajakannete nähtavus" setting_password_max_age: "Parooli kehtivus" label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: "Tuletatud alateemadest" label_parent_task_attributes_independent: "Sõltumatu alateemadest" label_time_entries_visibility_all: "Kõik ajakanded" label_time_entries_visibility_own: "Kasutaja poolt loodud ajakanded" label_member_management: "Liikmete haldus" label_member_management_all_roles: "Kõik rollid" label_member_management_selected_roles_only: "Ainult need rollid" label_password_required: "Jätkamiseks kinnita oma parool" label_total_spent_time: "Kokku kulutatud aeg" notice_import_finished: "%{count} rida imporditud" notice_import_finished_with_errors: "%{count} rida %{total}st ei õnnestunud importida" error_invalid_file_encoding: "See fail ei ole õige %{encoding} kodeeringuga" error_invalid_csv_file_or_settings: "See fail kas ei ole CSV formaadis või ei klapi allolevate sätetega (%{value})" error_can_not_read_import_file: "Importfaili sisselugemisel ilmnes viga" permission_import_issues: "Impordi teemasid" label_import_issues: "Impordi teemad" label_select_file_to_import: "Vali fail mida importida" label_fields_separator: "Väljade eristaja" label_fields_wrapper: "Väljade wrapper" label_encoding: "Kodeering" label_comma_char: "Koma" label_semi_colon_char: "Semikoolon" label_quote_char: "Ülakoma" label_double_quote_char: "Jutumärgid" label_fields_mapping: "Väljade mäppimine" label_file_content_preview: "Sisu eelvaade" label_create_missing_values: "Loo puuduolevad väärtused" button_import: "Import" field_total_estimated_hours: "Ennustatud aja summa" label_api: "API" label_total_plural: "Summad" label_assigned_issues: "Määratud väärtused" label_field_format_enumeration: "Võtme/väärtuse nimekiri" label_f_hour_short: "%{value} h" field_default_version: "Vaikimisi versioon" error_attachment_extension_not_allowed: "Manuse laiend %{extension} on keelatud" setting_attachment_extensions_allowed: "Lubatud manuse laiendid" setting_attachment_extensions_denied: "Keelatud manuse laiendid" label_any_open_issues: "Kõik avatud teemad" label_no_open_issues: "Mitte ühtki avatud teemat" label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: "Veebiteenuse API võti" setting_lost_password: "Kui parool on ununud..." mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: "Kustuta seos" error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/eu.yml000066400000000000000000002161471500112024600171720ustar00rootroot00000000000000# Redmine EU language # Author: Ales Zabala Alava (Shagi), # 2010-01-25 # Distributed under the same terms as the Redmine itself. eu: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y/%m/%d" short: "%b %d" long: "%Y %B %d" day_names: [Igandea, Astelehena, Asteartea, Asteazkena, Osteguna, Ostirala, Larunbata] abbr_day_names: [Ig., Al., Ar., Az., Og., Or., La.] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Urtarrila, Otsaila, Martxoa, Apirila, Maiatza, Ekaina, Uztaila, Abuztua, Iraila, Urria, Azaroa, Abendua] abbr_month_names: [~, Urt, Ots, Mar, Api, Mai, Eka, Uzt, Abu, Ira, Urr, Aza, Abe] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%Y/%m/%d %H:%M" time: "%H:%M" short: "%b %d %H:%M" long: "%Y %B %d %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "minutu erdi" less_than_x_seconds: one: "segundu bat baino gutxiago" other: "%{count} segundu baino gutxiago" x_seconds: one: "segundu 1" other: "%{count} segundu" less_than_x_minutes: one: "minutu bat baino gutxiago" other: "%{count} minutu baino gutxiago" x_minutes: one: "minutu 1" other: "%{count} minutu" about_x_hours: one: "ordu 1 inguru" other: "%{count} ordu inguru" x_hours: one: "ordu 1" other: "%{count} ordu" x_days: one: "egun 1" other: "%{count} egun" about_x_months: one: "hilabete 1 inguru" other: "%{count} hilabete inguru" x_months: one: "hilabete 1" other: "%{count} hilabete" about_x_years: one: "urte 1 inguru" other: "%{count} urte inguru" over_x_years: one: "urte 1 baino gehiago" other: "%{count} urte baino gehiago" almost_x_years: one: "ia urte 1" other: "ia %{count} urte" number: format: separator: "." delimiter: "" precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Byte" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "eta" skip_last_comma: false activerecord: errors: template: header: one: "Errore batek %{model} hau godetzea galarazi du." other: "%{count} errorek %{model} hau gordetzea galarazi dute." messages: inclusion: "ez dago zerrendan" exclusion: "erreserbatuta dago" invalid: "baliogabea da" confirmation: "ez du berrespenarekin bat egiten" accepted: "onartu behar da" empty: "ezin da hutsik egon" blank: "ezin da hutsik egon" too_long: "luzeegia da (maximoa %{count} karaktere dira)" too_short: "laburregia da (minimoa %{count} karaktere dira)" wrong_length: "luzera ezegokia da (%{count} karakter izan beharko litzake)" taken: "dagoeneko hartuta dago" not_a_number: "ez da zenbaki bat" not_a_date: "ez da baliozko data" greater_than: "%{count} baino handiagoa izan behar du" greater_than_or_equal_to: "%{count} edo handiagoa izan behar du" equal_to: "%{count} izan behar du" less_than: "%{count} baino gutxiago izan behar du" less_than_or_equal_to: "%{count} edo gutxiago izan behar du" odd: "bakoitia izan behar du" even: "bikoitia izan behar du" greater_than_start_date: "hasiera data baino handiagoa izan behar du" not_same_project: "ez dago proiektu berdinean" circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Hautatu mesedez general_text_No: 'Ez' general_text_Yes: 'Bai' general_text_no: 'ez' general_text_yes: 'bai' general_lang_name: 'Basque (Euskara)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Kontua ongi eguneratu da. notice_account_invalid_credentials: Erabiltzaile edo pasahitz ezegokia notice_account_password_updated: Pasahitza ongi eguneratu da. notice_account_wrong_password: Pasahitz ezegokia. notice_account_register_done: Kontua ongi sortu da. Kontua gaitzeko klikatu epostan adierazi zaizun estekan. notice_can_t_change_password: Kontu honek kanpoko autentikazio bat erabiltzen du. Ezinezkoa da pasahitza aldatzea. notice_account_lost_email_sent: Pasahitz berria aukeratzeko jarraibideak dituen eposta bat bidali zaizu. notice_account_activated: Zure kontua gaituta dago. Orain saioa has dezakezu notice_successful_create: Sortze arrakastatsua. notice_successful_update: Eguneratze arrakastatsua. notice_successful_delete: Ezabaketa arrakastatsua. notice_successful_connection: Konexio arrakastatsua. notice_file_not_found: Atzitu nahi duzun orria ez da exisitzen edo ezabatua izan da. notice_locking_conflict: Beste erabiltzaile batek datuak eguneratu ditu. notice_not_authorized: Ez duzu orri hau atzitzeko baimenik. notice_email_sent: "%{value} helbidera eposta bat bidali da" notice_email_error: "Errorea eposta bidaltzean (%{value})" notice_feeds_access_key_reseted: Zure Atom atzipen giltza berrezarri da. notice_api_access_key_reseted: Zure API atzipen giltza berrezarri da. notice_failed_to_save_issues: "Hautatutako %{total} zereginetatik %{count} ezin izan dira konpondu: %{ids}." notice_account_pending: "Zure kontua sortu da, orain kudeatzailearen onarpenaren zain dago." notice_default_data_loaded: Lehenetsitako konfigurazioa ongi kargatu da. notice_unable_delete_version: Ezin da bertsioa ezabatu. notice_issue_done_ratios_updated: Burututako zereginen erlazioa eguneratu da. error_can_t_load_default_data: "Ezin izan da lehenetsitako konfigurazioa kargatu: %{value}" error_scm_not_found: "Sarrera edo berrikuspena ez da biltegian topatu." error_scm_command_failed: "Errorea gertatu da biltegia atzitzean: %{value}" error_scm_annotate: "Sarrera ez da existitzen edo ezin da anotatu." error_issue_not_found_in_project: 'Zeregina ez da topatu edo ez da proiektu honetakoa' error_no_tracker_in_project: 'Proiektu honek ez du aztarnaririk esleituta. Mesedez egiaztatu Proiektuaren ezarpenak.' error_no_default_issue_status: 'Zereginek ez dute lehenetsitako egoerarik. Mesedez egiaztatu zure konfigurazioa ("Kudeaketa -> Arazoen egoerak" atalera joan).' error_can_not_reopen_issue_on_closed_version: 'Itxitako bertsio batera esleitutako zereginak ezin dira berrireki' error_can_not_archive_project: Proiektu hau ezin da artxibatu error_issue_done_ratios_not_updated: "Burututako zereginen erlazioa ez da eguneratu." error_workflow_copy_source: 'Mesedez hautatu iturburuko aztarnari edo rola' error_workflow_copy_target: 'Mesedez hautatu helburuko aztarnari(ak) edo rola(k)' warning_attachments_not_saved: "%{count} fitxategi ezin izan d(ir)a gorde." mail_subject_lost_password: "Zure %{value} pasahitza" mail_body_lost_password: 'Zure pasahitza aldatzeko hurrengo estekan klikatu:' mail_subject_register: "Zure %{value} kontuaren gaitzea" mail_body_register: 'Zure kontua gaitzeko hurrengo estekan klikatu:' mail_body_account_information_external: "Zure %{value} kontua erabil dezakezu saioa hasteko." mail_body_account_information: Zure kontuaren informazioa mail_subject_account_activation_request: "%{value} kontu gaitzeko eskaera" mail_body_account_activation_request: "Erabiltzaile berri bat (%{value}) erregistratu da. Kontua zure onarpenaren zain dago:" mail_subject_reminder: "%{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a" mail_body_reminder: "Zuri esleituta dauden %{count} arazo hurrengo %{days} egunetan amaitzen d(ir)a:" mail_subject_wiki_content_added: "'%{id}' wiki orria gehitu da" mail_body_wiki_content_added: "%{author}-(e)k '%{id}' wiki orria gehitu du." mail_subject_wiki_content_updated: "'%{id}' wiki orria eguneratu da" mail_body_wiki_content_updated: "%{author}-(e)k '%{id}' wiki orria eguneratu du." field_name: Izena field_description: Deskribapena field_summary: Laburpena field_is_required: Beharrezkoa field_firstname: Izena field_lastname: Abizenak field_mail: Eposta field_filename: Fitxategia field_filesize: Tamaina field_downloads: Deskargak field_author: Egilea field_created_on: Sortuta field_updated_on: Eguneratuta field_field_format: Formatua field_is_for_all: Proiektu guztietarako field_possible_values: Balio posibleak field_regexp: Expresio erregularra field_min_length: Luzera minimoa field_max_length: Luzera maxioma field_value: Balioa field_category: Kategoria field_title: Izenburua field_project: Proiektua field_issue: Zeregina field_status: Egoera field_notes: Oharrak field_is_closed: Itxitako arazoa field_is_default: Lehenetsitako balioa field_tracker: Aztarnaria field_subject: Gaia field_due_date: Amaiera data field_assigned_to: Esleituta field_priority: Lehentasuna field_fixed_version: Helburuko bertsioa field_user: Erabiltzilea field_role: Rola field_homepage: Orri nagusia field_is_public: Publikoa field_parent: "Honen azpiproiektua:" field_is_in_roadmap: Arazoak ibilbide-mapan erakutsi field_login: Erabiltzaile izena field_mail_notification: Eposta jakinarazpenak field_admin: Kudeatzailea field_last_login_on: Azken konexioa field_language: Hizkuntza field_effective_date: Data field_password: Pasahitza field_new_password: Pasahitz berria field_password_confirmation: Berrespena field_version: Bertsioa field_type: Mota field_host: Ostalaria field_port: Portua field_account: Kontua field_base_dn: Base DN field_attr_login: Erabiltzaile atributua field_attr_firstname: Izena atributua field_attr_lastname: Abizenak atributua field_attr_mail: Eposta atributua field_onthefly: Zuzeneko erabiltzaile sorrera field_start_date: Hasiera field_done_ratio: Egindako % field_auth_source: Autentikazio modua field_hide_mail: Nire eposta helbidea ezkutatu field_comments: Iruzkina field_url: URL field_start_page: Hasierako orria field_subproject: Azpiproiektua field_hours: Ordu field_activity: Jarduera field_spent_on: Data field_identifier: Identifikatzailea field_is_filter: Iragazki moduan erabilita field_issue_to: Erlazionatutako zereginak field_delay: Atzerapena field_assignable: Arazoak rol honetara esleitu daitezke field_redirect_existing_links: Existitzen diren estekak berbideratu field_estimated_hours: Estimatutako denbora field_column_names: Zutabeak field_time_zone: Ordu zonaldea field_searchable: Bilagarria field_default_value: Lehenetsitako balioa field_comments_sorting: Iruzkinak erakutsi field_parent_title: Orri gurasoa field_editable: Editagarria field_watcher: Behatzailea field_content: Edukia field_group_by: Emaitzak honegatik taldekatu field_sharing: Partekatzea setting_app_title: Aplikazioaren izenburua setting_welcome_text: Ongietorriko testua setting_default_language: Lehenetsitako hizkuntza setting_login_required: Autentikazioa derrigorrezkoa setting_self_registration: Norberak erregistratu setting_attachment_max_size: Eranskinen tamaina max. setting_issues_export_limit: Zereginen esportatze limitea setting_mail_from: Igorlearen eposta helbidea setting_plain_text_mail: Testu soileko epostak (HTML-rik ez) setting_host_name: Ostalari izena eta bidea setting_text_formatting: Testu formatua setting_wiki_compression: Wikiaren historia konprimitu setting_feeds_limit: Jarioaren edukiera limitea setting_default_projects_public: Proiektu berriak defektuz publikoak dira setting_autofetch_changesets: Commit-ak automatikoki hartu setting_sys_api_enabled: Biltegien kudeaketarako WS gaitu setting_commit_ref_keywords: Erreferentzien gako-hitzak setting_commit_fix_keywords: Konpontze gako-hitzak setting_autologin: Saioa automatikoki hasi setting_date_format: Data formatua setting_time_format: Ordu formatua setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak setting_emails_footer: Eposten oina setting_protocol: Protokoloa setting_per_page_options: Orriko objektuen aukerak setting_user_format: Erabiltzaileak erakusteko formatua setting_activity_days_default: Proiektuen jardueran erakusteko egunak setting_display_subprojects_issues: Azpiproiektuen zereginak proiektu nagusian erakutsi defektuz setting_enabled_scm: Gaitutako IKKak setting_mail_handler_body_delimiters: "Lerro hauteko baten ondoren epostak moztu" setting_mail_handler_api_enabled: Sarrerako epostentzako WS gaitu setting_mail_handler_api_key: API giltza setting_sequential_project_identifiers: Proiektuen identifikadore sekuentzialak sortu setting_gravatar_enabled: Erabili Gravatar erabiltzaile ikonoak setting_gravatar_default: Lehenetsitako Gravatar irudia setting_diff_max_lines_displayed: Erakutsiko diren diff lerro kopuru maximoa setting_file_max_size_displayed: Barnean erakuzten diren testu fitxategien tamaina maximoa setting_repository_log_display_limit: Egunkari fitxategian erakutsiko diren berrikuspen kopuru maximoa. setting_password_min_length: Pasahitzen luzera minimoa setting_new_project_user_role_id: Proiektu berriak sortzerakoan kudeatzaile ez diren erabiltzaileei esleitutako rola setting_default_projects_modules: Proiektu berrientzako defektuz gaitutako moduluak setting_issue_done_ratio: "Zereginen burututako tasa kalkulatzean erabili:" setting_issue_done_ratio_issue_field: Zeregin eremua erabili setting_issue_done_ratio_issue_status: Zeregin egoera erabili setting_start_of_week: "Egutegiak noiz hasi:" setting_rest_api_enabled: Gaitu REST web zerbitzua permission_add_project: Proiektua sortu permission_add_subprojects: Azpiproiektuak sortu permission_edit_project: Proiektua editatu permission_select_project_modules: Proiektuaren moduluak hautatu permission_manage_members: Kideak kudeatu permission_manage_versions: Bertsioak kudeatu permission_manage_categories: Arazoen kategoriak kudeatu permission_view_issues: Zereginak ikusi permission_add_issues: Zereginak gehitu permission_edit_issues: Zereginak aldatu permission_manage_issue_relations: Zereginen erlazioak kudeatu permission_add_issue_notes: Oharrak gehitu permission_edit_issue_notes: Oharrak aldatu permission_edit_own_issue_notes: Nork bere oharrak aldatu permission_delete_issues: Zereginak ezabatu permission_manage_public_queries: Galdera publikoak kudeatu permission_save_queries: Galderak gorde permission_view_gantt: Gantt grafikoa ikusi permission_view_calendar: Egutegia ikusi permission_view_issue_watchers: Behatzaileen zerrenda ikusi permission_add_issue_watchers: Behatzaileak gehitu permission_delete_issue_watchers: Behatzaileak ezabatu permission_log_time: Igarotako denbora erregistratu permission_view_time_entries: Igarotako denbora ikusi permission_edit_time_entries: Denbora egunkariak editatu permission_edit_own_time_entries: Nork bere denbora egunkariak editatu permission_manage_news: Berriak kudeatu permission_comment_news: Berrien iruzkinak egin permission_view_documents: Dokumentuak ikusi permission_manage_files: Fitxategiak kudeatu permission_view_files: Fitxategiak ikusi permission_manage_wiki: Wikia kudeatu permission_rename_wiki_pages: Wiki orriak berrizendatu permission_delete_wiki_pages: Wiki orriak ezabatu permission_view_wiki_pages: Wikia ikusi permission_view_wiki_edits: Wikiaren historia ikusi permission_edit_wiki_pages: Wiki orriak editatu permission_delete_wiki_pages_attachments: Eranskinak ezabatu permission_protect_wiki_pages: Wiki orriak babestu permission_manage_repository: Biltegiak kudeatu permission_browse_repository: Biltegia arakatu permission_view_changesets: Aldaketak ikusi permission_commit_access: Commit atzipena permission_manage_boards: Foroak kudeatu permission_view_messages: Mezuak ikusi permission_add_messages: Mezuak bidali permission_edit_messages: Mezuak aldatu permission_edit_own_messages: Nork bere mezuak aldatu permission_delete_messages: Mezuak ezabatu permission_delete_own_messages: Nork bere mezuak ezabatu project_module_issue_tracking: Zereginen jarraipena project_module_time_tracking: Denbora jarraipena project_module_news: Berriak project_module_documents: Dokumentuak project_module_files: Fitxategiak project_module_wiki: Wiki project_module_repository: Biltegia project_module_boards: Foroak label_user: Erabiltzailea label_user_plural: Erabiltzaileak label_user_new: Erabiltzaile berria label_user_anonymous: Ezezaguna label_project: Proiektua label_project_new: Proiektu berria label_project_plural: Proiektuak label_x_projects: zero: proiekturik ez one: proiektu bat other: "%{count} proiektu" label_project_all: Proiektu guztiak label_project_latest: Azken proiektuak label_issue: Zeregina label_issue_new: Zeregin berria label_issue_plural: Zereginak label_issue_view_all: Zeregin guztiak ikusi label_issues_by: "Zereginak honengatik: %{value}" label_issue_added: Zeregina gehituta label_issue_updated: Zeregina eguneratuta label_document: Dokumentua label_document_new: Dokumentu berria label_document_plural: Dokumentuak label_document_added: Dokumentua gehituta label_role: Rola label_role_plural: Rolak label_role_new: Rol berria label_role_and_permissions: Rolak eta baimenak label_member: Kidea label_member_new: Kide berria label_member_plural: Kideak label_tracker: Aztarnaria label_tracker_plural: Aztarnariak label_tracker_new: Aztarnari berria label_workflow: Lan-fluxua label_issue_status: Zeregin egoera label_issue_status_plural: Zeregin egoerak label_issue_status_new: Egoera berria label_issue_category: Zeregin kategoria label_issue_category_plural: Zeregin kategoriak label_issue_category_new: Kategoria berria label_custom_field: Eremu pertsonalizatua label_custom_field_plural: Eremu pertsonalizatuak label_custom_field_new: Eremu pertsonalizatu berria label_enumerations: Enumerazioak label_enumeration_new: Balio berria label_information: Informazioa label_information_plural: Informazioa label_register: Erregistratu label_password_lost: Pasahitza galduta label_home: Hasiera label_my_page: Nire orria label_my_account: Nire kontua label_my_projects: Nire proiektuak label_administration: Kudeaketa label_login: Saioa hasi label_logout: Saioa bukatu label_help: Laguntza label_reported_issues: Berri emandako zereginak label_assigned_to_me_issues: Niri esleitutako arazoak label_registered_on: Noiz erregistratuta label_activity: Jarduerak label_user_activity: "%{value}-(r)en jarduerak" label_new: Berria label_logged_as: "Sartutako erabiltzailea:" label_environment: Ingurune label_authentication: Autentikazioa label_auth_source: Autentikazio modua label_auth_source_new: Autentikazio modu berria label_auth_source_plural: Autentikazio moduak label_subproject_plural: Azpiproiektuak label_subproject_new: Azpiproiektu berria label_and_its_subprojects: "%{value} eta bere azpiproiektuak" label_min_max_length: Luzera min - max label_list: Zerrenda label_date: Data label_integer: Osokoa label_float: Koma higikorrekoa label_boolean: Boolearra label_string: Testua label_text: Testu luzea label_attribute: Atributua label_attribute_plural: Atributuak label_no_data: Ez dago erakusteko daturik label_change_status: Egoera aldatu label_history: Historikoa label_attachment: Fitxategia label_attachment_new: Fitxategi berria label_attachment_delete: Fitxategia ezabatu label_attachment_plural: Fitxategiak label_file_added: Fitxategia gehituta label_report: Berri ematea label_report_plural: Berri emateak label_news: Berria label_news_new: Berria gehitu label_news_plural: Berriak label_news_latest: Azken berriak label_news_view_all: Berri guztiak ikusi label_news_added: Berria gehituta label_settings: Ezarpenak label_overview: Gainbegirada label_version: Bertsioa label_version_new: Bertsio berria label_version_plural: Bertsioak label_close_versions: Burututako bertsioak itxi label_confirmation: Baieztapena label_export_to: 'Eskuragarri baita:' label_read: Irakurri... label_public_projects: Proiektu publikoak label_open_issues: irekita label_open_issues_plural: irekiak label_closed_issues: itxita label_closed_issues_plural: itxiak label_x_open_issues_abbr: zero: 0 irekita one: 1 irekita other: "%{count} irekiak" label_x_closed_issues_abbr: zero: 0 itxita one: 1 itxita other: "%{count} itxiak" label_total: Guztira label_permissions: Baimenak label_current_status: Uneko egoera label_new_statuses_allowed: Baimendutako egoera berriak label_all: guztiak label_none: ezer label_nobody: inor label_next: Hurrengoa label_previous: Aurrekoak label_used_by: Erabilita label_details: Xehetasunak label_add_note: Oharra gehitu label_calendar: Egutegia label_months_from: hilabete noiztik label_gantt: Gantt label_internal: Barnekoa label_last_changes: "azken %{count} aldaketak" label_change_view_all: Aldaketa guztiak ikusi label_comment: Iruzkin label_comment_plural: Iruzkinak label_x_comments: zero: iruzkinik ez one: iruzkin 1 other: "%{count} iruzkin" label_comment_add: Iruzkina gehitu label_comment_added: Iruzkina gehituta label_comment_delete: Iruzkinak ezabatu label_query: Galdera pertsonalizatua label_query_plural: Pertsonalizatutako galderak label_query_new: Galdera berria label_filter_add: Iragazkia gehitu label_filter_plural: Iragazkiak label_equals: da label_not_equals: ez da label_in_less_than: baino gutxiagotan label_in_more_than: baino gehiagotan label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: hauetan label_today: gaur label_yesterday: atzo label_this_week: aste honetan label_last_week: pasadan astean label_last_n_days: "azken %{count} egunetan" label_this_month: hilabete hau label_last_month: pasadan hilabetea label_this_year: urte hau label_date_range: Data tartea label_less_than_ago: egun hauek baino gutxiago label_more_than_ago: egun hauek baino gehiago label_ago: orain dela label_contains: dauka label_not_contains: ez dauka label_day_plural: egun label_repository: Biltegia label_repository_plural: Biltegiak label_branch: Adarra label_tag: Etiketa label_revision: Berrikuspena label_revision_plural: Berrikuspenak label_revision_id: "%{value} berrikuspen" label_associated_revisions: Elkartutako berrikuspenak label_added: gehituta label_modified: aldatuta label_copied: kopiatuta label_renamed: berrizendatuta label_deleted: ezabatuta label_latest_revision: Azken berrikuspena label_latest_revision_plural: Azken berrikuspenak label_view_revisions: Berrikuspenak ikusi label_view_all_revisions: Berrikuspen guztiak ikusi label_max_size: Tamaina maximoa label_roadmap: Ibilbide-mapa label_roadmap_due_in: "Epea: %{value}" label_roadmap_overdue: "%{value} berandu" label_roadmap_no_issues: Ez dago zereginik bertsio honetan label_search: Bilatu label_result_plural: Emaitzak label_all_words: hitz guztiak label_wiki: Wikia label_wiki_edit: Wiki edizioa label_wiki_edit_plural: Wiki edizioak label_wiki_page: Wiki orria label_wiki_page_plural: Wiki orriak label_index_by_title: Izenburuaren araberako indizea label_index_by_date: Dataren araberako indizea label_current_version: Uneko bertsioa label_preview: Aurreikusi label_feed_plural: Jarioak label_changes_details: Aldaketa guztien xehetasunak label_issue_tracking: Zeregin jarraipena label_spent_time: Igarotako denbora label_f_hour: "ordu %{value}" label_f_hour_plural: "%{value} ordu" label_time_tracking: Denbora jarraipena label_change_plural: Aldaketak label_statistics: Estatistikak label_commits_per_month: Commit-ak hilabeteka label_commits_per_author: Commit-ak egileka label_view_diff: Ezberdintasunak ikusi label_diff_inline: barnean label_diff_side_by_side: aldez alde label_options: Aukerak label_copy_workflow_from: Kopiatu workflow-a hemendik label_permissions_report: Baimenen txostena label_watched_issues: Behatutako zereginak label_related_issues: Erlazionatutako zereginak label_applied_status: Aplikatutako egoera label_loading: Kargatzen... label_relation_new: Erlazio berria label_relation_delete: Erlazioa ezabatu label_relates_to: erlazionatuta dago label_duplicates: bikoizten du label_duplicated_by: honek bikoiztuta label_blocks: blokeatzen du label_blocked_by: honek blokeatuta label_precedes: aurretik doa label_follows: jarraitzen du label_stay_logged_in: Saioa mantendu label_disabled: ezgaituta label_show_completed_versions: Bukatutako bertsioak ikusi label_me: ni label_board: Foroa label_board_new: Foro berria label_board_plural: Foroak label_topic_plural: Gaiak label_message_plural: Mezuak label_message_last: Azken mezua label_message_new: Mezu berria label_message_posted: Mezua gehituta label_reply_plural: Erantzunak label_send_information: Erabiltzaileai kontuaren informazioa bidali label_year: Urtea label_month: Hilabetea label_week: Astea label_date_from: Nork label_date_to: Nori label_language_based: Erabiltzailearen hizkuntzaren arabera label_sort_by: "Ordenazioa: %{value}" label_send_test_email: Frogako mezua bidali label_feeds_access_key: Atom atzipen giltza label_missing_feeds_access_key: Atom atzipen giltza falta da label_feeds_access_key_created_on: "Atom atzipen giltza orain dela %{value} sortuta" label_module_plural: Moduluak label_added_time_by: "%{author}, orain dela %{age} gehituta" label_updated_time_by: "%{author}, orain dela %{age} eguneratuta" label_updated_time: "Orain dela %{value} eguneratuta" label_jump_to_a_project: Joan proiektura... label_file_plural: Fitxategiak label_changeset_plural: Aldaketak label_default_columns: Lehenetsitako zutabeak label_no_change_option: (Aldaketarik ez) label_bulk_edit_selected_issues: Hautatutako zereginak batera editatu label_theme: Itxura label_default: Lehenetsia label_search_titles_only: Izenburuetan bakarrik bilatu label_user_mail_option_all: "Nire proiektu guztietako gertakari guztientzat" label_user_mail_option_selected: "Hautatutako proiektuetako edozein gertakarientzat..." label_user_mail_no_self_notified: "Ez dut nik egiten ditudan aldeketen jakinarazpenik jaso nahi" label_registration_activation_by_email: kontuak epostaz gaitu label_registration_manual_activation: kontuak eskuz gaitu label_registration_automatic_activation: kontuak automatikoki gaitu label_display_per_page: "Orriko: %{value}" label_age: Adina label_change_properties: Propietateak aldatu label_general: Orokorra label_scm: IKK label_plugins: Pluginak label_ldap_authentication: LDAP autentikazioa label_downloads_abbr: Desk. label_optional_description: Aukerako deskribapena label_add_another_file: Beste fitxategia gehitu label_preferences: Hobespenak label_chronological_order: Orden kronologikoan label_reverse_chronological_order: Alderantzizko orden kronologikoan label_incoming_emails: Sarrerako epostak label_generate_key: Giltza sortu label_issue_watchers: Behatzaileak label_example: Adibidea label_display: Bistaratzea label_sort: Ordenatu label_ascending: Gorantz label_descending: Beherantz label_date_from_to: "%{start}-tik %{end}-ra" label_wiki_content_added: Wiki orria gehituta label_wiki_content_updated: Wiki orria eguneratuta label_group: Taldea label_group_plural: Taldeak label_group_new: Talde berria label_time_entry_plural: Igarotako denbora label_version_sharing_none: Ez partekatuta label_version_sharing_descendants: Azpiproiektuekin label_version_sharing_hierarchy: Proiektu Hierarkiarekin label_version_sharing_tree: Proiektu zuhaitzarekin label_version_sharing_system: Proiektu guztiekin label_update_issue_done_ratios: Zereginen burututako erlazioa eguneratu label_copy_source: Iturburua label_copy_target: Helburua label_copy_same_as_target: Helburuaren berdina label_display_used_statuses_only: Aztarnari honetan erabiltzen diren egoerak bakarrik erakutsi label_api_access_key: API atzipen giltza label_missing_api_access_key: API atzipen giltza falta da label_api_access_key_created_on: "API atzipen giltza sortuta orain dela %{value}" button_login: Saioa hasi button_submit: Bidali button_save: Gorde button_check_all: Guztiak markatu button_uncheck_all: Guztiak desmarkatu button_delete: Ezabatu button_create: Sortu button_create_and_continue: Sortu eta jarraitu button_test: Frogatu button_edit: Editatu button_add: Gehitu button_change: Aldatu button_apply: Aplikatu button_clear: Garbitu button_lock: Blokeatu button_unlock: Desblokeatu button_download: Deskargatu button_list: Zerrenda button_view: Ikusi button_move: Mugitu button_move_and_follow: Mugitu eta jarraitu button_back: Atzera button_cancel: Ezeztatu button_activate: Gahitu button_sort: Ordenatu button_log_time: Denbora erregistratu button_rollback: Itzuli bertsio honetara button_watch: Behatu button_unwatch: Behatzen utzi button_reply: Erantzun button_archive: Artxibatu button_unarchive: Desartxibatu button_reset: Berrezarri button_rename: Berrizendatu button_change_password: Pasahitza aldatu button_copy: Kopiatu button_copy_and_follow: Kopiatu eta jarraitu button_annotate: Anotatu button_update: Eguneratu button_configure: Konfiguratu button_quote: Aipatu button_show: Ikusi status_active: gaituta status_registered: izena emanda status_locked: blokeatuta version_status_open: irekita version_status_locked: blokeatuta version_status_closed: itxita field_active: Gaituta text_select_mail_notifications: Jakinarazpenak zein ekintzetarako bidaliko diren hautatu. text_regexp_info: adib. ^[A-Z0-9]+$ text_project_destroy_confirmation: Ziur zaude proiektu hau eta erlazionatutako datu guztiak ezabatu nahi dituzula? text_subprojects_destroy_warning: "%{value} azpiproiektuak ere ezabatuko dira." text_workflow_edit: Hautatu rola eta aztarnaria workflow-a editatzeko text_are_you_sure: Ziur zaude? text_journal_changed: "%{label} %{old}-(e)tik %{new}-(e)ra aldatuta" text_journal_set_to: "%{label}-k %{value} balioa hartu du" text_journal_deleted: "%{label} ezabatuta (%{old})" text_journal_added: "%{label} %{value} gehituta" text_tip_issue_begin_day: gaur hasten diren zereginak text_tip_issue_end_day: gaur bukatzen diren zereginak text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak text_caracters_maximum: "%{count} karaktere gehienez." text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." text_length_between: "Luzera %{min} eta %{max} karaktereen artekoa." text_tracker_no_workflow: Ez da workflow-rik definitu aztarnari honentzako text_unallowed_characters: Debekatutako karaktereak text_comma_separated: Balio anitz izan daitezke (komaz banatuta). text_line_separated: Balio anitz izan daitezke (balio bakoitza lerro batean). text_issues_ref_in_commit_messages: Commit-en mezuetan zereginak erlazionatu eta konpontzen text_issue_added: "%{id} zeregina %{author}-(e)k jakinarazi du." text_issue_updated: "%{id} zeregina %{author}-(e)k eguneratu du." text_wiki_destroy_confirmation: Ziur zaude wiki hau eta bere eduki guztiak ezabatu nahi dituzula? text_issue_category_destroy_question: "Zeregin batzuk (%{count}) kategoria honetara esleituta daude. Zer egin nahi duzu?" text_issue_category_destroy_assignments: Kategoria esleipenak kendu text_issue_category_reassign_to: Zereginak kategoria honetara esleitu text_user_mail_option: "Hautatu gabeko proiektuetan, behatzen edo parte hartzen duzun gauzei buruzko jakinarazpenak jasoko dituzu (adib. zu egile zaren edo esleituta dituzun zereginak)." text_no_configuration_data: "Rolak, aztarnariak, zeregin egoerak eta workflow-ak ez dira oraindik konfiguratu.\nOso gomendagarria de lehenetsitako kkonfigurazioa kargatzea. Kargatu eta gero aldatu ahalko duzu." text_load_default_configuration: Lehenetsitako konfigurazioa kargatu text_status_changed_by_changeset: "%{value} aldaketan aplikatuta." text_issues_destroy_confirmation: 'Ziur zaude hautatutako zeregina(k) ezabatu nahi dituzula?' text_select_project_modules: 'Hautatu proiektu honetan gaitu behar diren moduluak:' text_default_administrator_account_changed: Lehenetsitako kudeatzaile kontua aldatuta text_file_repository_writable: Eranskinen direktorioan idatz daiteke text_plugin_assets_writable: Pluginen baliabideen direktorioan idatz daiteke text_minimagick_available: MiniMagick eskuragarri (aukerazkoa) text_destroy_time_entries_question: "%{hours} orduei buruz berri eman zen zuk ezabatzera zoazen zereginean. Zer egin nahi duzu?" text_destroy_time_entries: Ezabatu berri emandako orduak text_assign_time_entries_to_project: Berri emandako orduak proiektura esleitu text_reassign_time_entries: 'Berri emandako orduak zeregin honetara esleitu:' text_user_wrote: "%{value}-(e)k idatzi zuen:" text_user_wrote_in: "%{value}-(e)k idatzi zuen (%{link}):" text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' text_wiki_page_destroy_question: "Orri honek %{descendants} orri seme eta ondorengo ditu. Zer egin nahi duzu?" text_wiki_page_nullify_children: "Orri semeak erro orri moduan mantendu" text_wiki_page_destroy_children: "Orri semeak eta beraien ondorengo guztiak ezabatu" text_wiki_page_reassign_children: "Orri semeak orri guraso honetara esleitu" text_own_membership_delete_confirmation: "Zure baimen batzuk (edo guztiak) kentzera zoaz eta baliteke horren ondoren proiektu hau ezin editatzea.\n Ziur zaude jarraitu nahi duzula?" default_role_manager: Kudeatzailea default_role_developer: Garatzailea default_role_reporter: Berriemailea default_tracker_bug: Errorea default_tracker_feature: Eginbidea default_tracker_support: Laguntza default_issue_status_new: Berria default_issue_status_in_progress: Lanean default_issue_status_resolved: Ebatzita default_issue_status_feedback: Berrelikadura default_issue_status_closed: Itxita default_issue_status_rejected: Baztertua default_doc_category_user: Erabiltzaile dokumentazioa default_doc_category_tech: Dokumentazio teknikoa default_priority_low: Baxua default_priority_normal: Normala default_priority_high: Altua default_priority_urgent: Larria default_priority_immediate: Berehalakoa default_activity_design: Diseinua default_activity_development: Garapena enumeration_issue_priorities: Zeregin lehentasunak enumeration_doc_categories: Dokumentu kategoriak enumeration_activities: Jarduerak (denbora kontrola)) enumeration_system_activity: Sistemako Jarduera label_board_sticky: Itsaskorra label_board_locked: Blokeatuta permission_export_wiki_pages: Wiki orriak esportatu setting_cache_formatted_text: Formatudun testua katxeatu permission_manage_project_activities: Proiektuaren jarduerak kudeatu error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu (%{value}) label_profile: Profila permission_manage_subtasks: Azpiatazak kudeatu field_parent_issue: Zeregin gurasoa label_subtask_plural: Azpiatazak label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu error_unable_to_connect: Ezin da konektatu (%{value}) error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. error_can_not_delete_tracker_html: Aztarnari honek zereginak ditu eta ezin da ezabatu.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." text_zoom_out: Zooma txikiagotu text_zoom_in: Zooma handiagotu notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." field_time_entries: "Denbora erregistratu" project_module_gantt: Gantt project_module_calendar: Egutegia button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" field_text: Testu eremua setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" label_user_mail_option_none: "Gertakaririk ez" field_member_of_group: "Esleituta duenaren taldea" field_assigned_to_role: "Esleituta duenaren rola" notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." label_principal_search: "Bilatu erabiltzaile edo taldea:" label_user_search: "Erabiltzailea bilatu:" field_visible: Ikusgai setting_emails_header: "Eposten goiburua" setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" text_time_logged_by_changeset: "%{value} aldaketan egindakoa." setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" field_warn_on_leaving_unsaved: Gorde gabeko testua duen orri batetik ateratzen naizenean ohartarazi text_warn_on_leaving_unsaved: Uneko orritik joaten bazara gorde gabeko testua galduko da. label_my_queries: Nire galdera pertsonalizatuak text_journal_changed_no_detail: "%{label} eguneratuta" label_news_comment_added: Berri batera iruzkina gehituta button_expand_all: Guztia zabaldu button_collapse_all: Guztia tolestu label_additional_workflow_transitions_for_assignee: Erabiltzaileak esleitua duenean baimendutako transtsizio gehigarriak label_additional_workflow_transitions_for_author: Erabiltzailea egilea denean baimendutako transtsizio gehigarriak label_bulk_edit_selected_time_entries: Hautatutako denbora egunkariak batera editatu text_time_entries_destroy_confirmation: Ziur zaude hautatutako denbora egunkariak ezabatu nahi dituzula? label_role_anonymous: Ezezaguna label_role_non_member: Ez kidea label_issue_note_added: Oharra gehituta label_issue_status_updated: Egoera eguneratuta label_issue_priority_updated: Lehentasuna eguneratuta label_issues_visibility_own: Erabiltzaileak sortu edo esleituta dituen zereginak field_issues_visibility: Zeregin ikusgarritasuna label_issues_visibility_all: Zeregin guztiak permission_set_own_issues_private: Nork bere zereginak publiko edo pribatu jarri field_is_private: Pribatu permission_set_issues_private: Zereginak publiko edo pribatu jarri label_issues_visibility_public: Pribatu ez diren zeregin guztiak text_issues_destroy_descendants_confirmation: Honek %{count} azpiataza ezabatuko ditu baita ere. field_commit_logs_encoding: Commit-en egunkarien kodetzea field_scm_path_encoding: Bidearen kodeketa text_scm_path_encoding_note: "Lehentsita: UTF-8" field_path_to_repository: Biltegirako bidea field_root_directory: Erro direktorioa field_cvs_module: Modulua field_cvsroot: CVSROOT text_mercurial_repository_note: Biltegi locala (adib. /hgrepo, c:\hgrepo) text_scm_command: Komandoa text_scm_command_version: Bertsioa label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 zeregina one: 1 zeregina other: "%{count} zereginak" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: guztiak label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Azpiproiektuekin label_cross_project_tree: Proiektu zuhaitzarekin label_cross_project_hierarchy: Proiektu Hierarkiarekin label_cross_project_system: Proiektu guztiekin button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Guztira text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Eposta setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Igarotako denbora guztira notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API giltza setting_lost_password: Pasahitza galduta mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Erlazioa ezabatu error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/fa.yml000066400000000000000000002676301500112024600171520ustar00rootroot00000000000000# In the name of God # Copyright (c) 2018 Bonyan Rayan Samane [https://bonyan.co] fa: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: rtl date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y/%m/%d" short: "%d %b" long: "%d %B %Y" day_names: [یک‌شنبه, دوشنبه, سه‌شنبه, چهارشنبه, پنج‌شنبه, جمعه, شنبه] abbr_day_names: [یک, دو, سه, چهار, پنج, جمعه, شنبه] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, ژانویه, Ùوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] abbr_month_names: [~, ژان, Ùور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا] # Used in date_select and datetime_select. order: - :year - :month - :day time: formats: default: "%I:%M %p %Y/%m/%d" time: "ساعت %I:%M %p" short: "%d %b %H:%M" long: "%d %B %Y ساعت %H:%M" am: "Ù‚.ظ" pm: "ب.ظ" datetime: distance_in_words: half_a_minute: "نیم دقیقه" less_than_x_seconds: one: "کم‌تر از Û± ثانیه" other: "کم‌تر از %{count} ثانیه" x_seconds: one: "Û± ثانیه" other: "%{count} ثانیه" less_than_x_minutes: one: "کم‌تر از Û± دقیقه" other: "کم‌تر از %{count} دقیقه" x_minutes: one: "Û± دقیقه" other: "%{count} دقیقه" about_x_hours: one: "حدود Û± ساعت" other: "حدود %{count} ساعت" x_hours: one: "Û± ساعت" other: "%{count} ساعت" x_days: one: "Û± روز" other: "%{count} روز" about_x_months: one: "حدود Û± ماه" other: "حدود %{count} ماه" x_months: one: "Û± ماه" other: "%{count} ماه" about_x_years: one: "حدود Û± سال" other: "حدود %{count} سال" over_x_years: one: "بیش از Û± سال" other: "بیش از %{count} سال" almost_x_years: one: "حدود Û± سال" other: "حدود %{count} سال" number: format: separator: "Ù«" delimiter: "Ù¬" precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "بایت" other: "بایت" kb: "کیلوبایت" mb: "مگابایت" gb: "گیگابایت" tb: "ترابایت" # Used in array.to_sentence. support: array: sentence_connector: "Ùˆ" skip_last_comma: false activerecord: errors: template: header: one: "یک ایراد از ذخیره‌سازی این %{model} جلوگیری کرد" other: "%{count} ایراد از ذخیره‌سازی این %{model} جلوگیری کرد" messages: inclusion: "در Ùهرست نیامده است" exclusion: "اختصاص ÛŒØ§ÙØªÙ‡ است" invalid: "نادرست است" confirmation: "با تکرار آن برابر نیست" accepted: "باید Ù¾Ø°ÛŒØ±ÙØªÙ‡ شود" empty: "نمی‌تواند خالی باشد" blank: "نمی‌تواند تهی باشد" too_long: "خیلی بلند است (بیشترین اندازه %{count} نویسه است)" too_short: "خیلی کوتاه است (کم‌ترین اندازه %{count} نویسه است)" wrong_length: "اندازه نادرست است (باید %{count} نویسه باشد)" taken: "پیش از این Ú¯Ø±ÙØªÙ‡ شده است" not_a_number: "یک عدد صحیح نیست" not_a_date: "تاریخ درستی نیست" greater_than: "باید بزرگ‌تر از %{count} باشد" greater_than_or_equal_to: "باید بزرگ‌تر از یا برابر با %{count} باشد" equal_to: "باید برابر با %{count} باشد" less_than: "باید کم‌تر از %{count} باشد" less_than_or_equal_to: "باید کم‌تر از یا برابر با %{count} باشد" odd: "باید ÙØ±Ø¯ باشد" even: "باید زوج باشد" greater_than_start_date: "باید از تاریخ آغاز بزرگ‌تر باشد" not_same_project: "متعلق به همان پروژه نیست" circular_dependency: "این ارتباط یک وابستگی دوری خواهد ساخت" cant_link_an_issue_with_a_descendant: "یک مسئله نمی‌تواند به یکی از زیرکارهایش مرتبط شود" earlier_than_minimum_start_date: "به خاطر مسائل مقدم، نمی‌تواند قبل از %{date} باشد" not_a_regexp: "یک عبارت منظم معتبر نیست" open_issue_with_closed_parent: "یک مسئله باز نمی‌تواند زیرکار یک مسئله پدر بسته باشد" must_contain_uppercase: "باید شامل حرو٠بزرگ باشد (A-Z)" must_contain_lowercase: "باید شامل حرو٠کوچک باشد (a-z)" must_contain_digits: "باید شامل عدد باشد (0-9)" must_contain_special_chars: "باید شامل نویسه‌های خاص باشد (!, $, %, ...)" domain_not_allowed: "شامل دامنه‌ی غیرمجازست (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: انتخاب کنید general_text_No: 'خیر' general_text_Yes: 'آری' general_text_no: 'خیر' general_text_yes: 'آری' general_lang_name: 'Persian (ÙØ§Ø±Ø³ÛŒ)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: DejaVuSans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '6' notice_account_updated: حساب شما به‌روز شد. notice_account_invalid_credentials: نام کاربری یا گذرواژه نادرست است notice_account_password_updated: گذرواژه به‌روز شد notice_account_wrong_password: گذرواژه نادرست است notice_account_register_done: حساب با موÙقیت ساخته شد. رایانامه‌ای حاوی دستورالعمل ÙØ¹Ø§Ù„‌سازی حساب شما به %{email} ÙØ±Ø³ØªØ§Ø¯Ù‡ شد. notice_account_not_activated_yet: شما هنوز حساب خود را ÙØ¹Ø§Ù„ نکرده‌اید. اگر می‌خواهید یک رایانامه ÙØ¹Ø§Ù„‌سازی دیگر Ø¯Ø±ÛŒØ§ÙØª کنید، Ù„Ø·ÙØ§Ù‹ این جا کلید نمایید. notice_account_locked: حساب شما Ù‚ÙÙ„ شده است. notice_can_t_change_password: این حساب یک روش احراز هویت بیرونی را به کار Ú¯Ø±ÙØªÙ‡ است. گذرواژه را نمی‌توان تغییر داد. notice_account_lost_email_sent: رایانامه‌ای حاوی دستورالعمل انتخاب یک گذرواژه جدید برای شما ارسال شد. notice_account_activated: حساب شما ÙØ¹Ø§Ù„ شده است. اکنون می‌توانید وارد شوید. notice_successful_create: با موÙقیت ساخته شد. notice_successful_update: با موÙقیت به‌روز شد. notice_successful_delete: با موÙقیت حذ٠شد. notice_successful_connection: با موÙقیت متصل شد. notice_file_not_found: ØµÙØ­Ù‡ درخواستی شما در دست‌رس نیست یا حذ٠شده است. notice_locking_conflict: داده‌ها را کاربر دیگری به‌روز کرده است. notice_not_authorized: شما به این ØµÙØ­Ù‡ دست‌رسی ندارید. notice_not_authorized_archived_project: پروژه درخواستی شما بایگانی شده است. notice_email_sent: "یک رایانامه به %{value} ÙØ±Ø³ØªØ§Ø¯Ù‡ شد." notice_email_error: "یک ایراد در ارسال رایانامه پیش آمد (%{value})." notice_feeds_access_key_reseted: کلید دست‌رسی Atom شما بازنشانی شد. notice_api_access_key_reseted: کلید دست‌رسی API شما بازنشانی شد. notice_failed_to_save_issues: "ذخیره %{count} مسئله از %{total} مورد انتخاب‌شده شکست خورد: %{ids}." notice_failed_to_save_time_entries: "ذخیره %{count} ورودی زمان روی %{total} مورد انتخاب‌شده شکست خورد: %{ids}." notice_failed_to_save_members: "ذخیره‌سازی اعضا شکست خورد: %{errors}." notice_account_pending: "حساب شما ساخته شد Ùˆ اکنون منتظر تأیید راه‌بر است." notice_default_data_loaded: تنظیمات Ù¾ÛŒØ´â€ŒÙØ±Ø¶ با موÙقیت بارگذاری شد. notice_unable_delete_version: نسخه را نمی‌توان حذ٠کرد. notice_unable_delete_time_entry: زمان گزارش شده را نمی‌توان حذ٠کرد. notice_issue_done_ratios_updated: اندازه انجام شده مسئله به‌روز شد. notice_gantt_chart_truncated: "نمودار بریده شد چون از بیشترین شماری Ú©Ù‡ می‌توان نشان داد بزرگتر است (%{max})." notice_issue_successful_create: مسئله ‎%{id} ساخته شد. notice_issue_update_conflict: "در حالی Ú©Ù‡ شما مشغول ویرایش مسئله بودید کاربر دیگری آن را به‌روز کرده است." notice_account_deleted: "حساب شما به طور دائمی حذ٠شده است." notice_user_successful_create: "کاربر %{id} ساخته شد." notice_new_password_must_be_different: گذرواژه جدید باید Ù…ØªÙØ§ÙˆØª از گذرواژه ÙØ¹Ù„ÛŒ باشد notice_import_finished: "%{count} مورد وارد شده" notice_import_finished_with_errors: "نمی‌توان %{count} مورد از %{total} را وارد کرد" notice_issue_not_closable_by_open_tasks: نمی‌توان این مساله را بست. این مساله حداقل یک زیرمساله باز دارد. notice_issue_not_closable_by_blocking_issue: نمی‌توان این مساله را بست. این مساله حداقل توسط یک مساله سد شده‌است. notice_issue_not_reopenable_by_closed_parent_issue: این مساله را نمی‌توان دوباره باز کرد. مساله پدر این مساله بسته شده است. notice_invalid_watcher: 'ناظر نامعتبر: به دلیل نداشتن دسترسی مشاهده، کاربر هیچ آگاه‌سازی‌ای Ø¯Ø±ÛŒØ§ÙØª نمی‌کند.' error_can_t_load_default_data: "تنظیمات Ù¾ÛŒØ´â€ŒÙØ±Ø¶ نمی‌تواند بار شود: %{value}" error_scm_not_found: "بخش یا بازبینی در مخزن پیدا نشد." error_scm_command_failed: "ایرادی در دست‌رسی به مخزن پیش آمد: %{value}" error_scm_annotate: "یا مدخل وجود ندارد یا این Ú©Ù‡ نمی‌تواند حاشیه‌نگاری شود." error_scm_annotate_big_text_file: "این مدخل نمی‌تواند حاشیه‌نگاری شود، زیرا از بیشینه اندازه پرونده‌های متنی تجاوز می‌کند." error_issue_not_found_in_project: 'مسئله پیدا نشد یا به این پروژه متعلق نیست.' error_no_tracker_in_project: 'هیچ نوع مسئله‌ای به این پروژه مرتبط نشده است. تنظیمات پروژه را بررسی کنید.' error_no_default_issue_status: 'هیچ وضعیت مسئله Ù¾ÛŒØ´â€ŒÙØ±Ø¶â€ŒØ§ÛŒ مشخص نشده است. تنظیمات را بررسی کنید (به «تنظیمات -> وضعیت‌های مسئله» بروید).' error_can_not_delete_custom_field: بخش Ø³ÙØ§Ø±Ø´ÛŒ را نمی‌توان حذ٠کرد. error_can_not_delete_tracker_html: "این نوع مسئله دارای مسئله است Ùˆ نمی‌توان آن را حذ٠کرد.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "از این نقش Ø§Ø³ØªÙØ§Ø¯Ù‡ شده است Ùˆ نمی‌توان آن را حذ٠کرد." error_can_not_reopen_issue_on_closed_version: 'یک مسئله Ú©Ù‡ به یک نسخه بسته‌شده متعلق است را نمی‌توان باز کرد.' error_can_not_archive_project: این پروژه را نمی‌توان بایگانی کرد. error_issue_done_ratios_not_updated: "اندازه انجام شده مسئله به‌روز نشد." error_workflow_copy_source: 'یک نوع مسئله یا نقش مبدأ را انتخاب کنید.' error_workflow_copy_target: 'نوع مسئله(ها) یا نقش‌(های) مقصد را انتخاب کنید.' error_unable_delete_issue_status: 'وضعیت مسئله را نمی‌توان حذ٠کرد. (%{value})' error_unable_to_connect: "نمی‌توان متصل شد (%{value})" error_attachments_too_many: آپلود این پرونده امکان‌پذیر نیست. حداکثر تعداد پیوست هم‌زمان (%{max_number_of_files}) است error_attachment_too_big: "این پرونده نمی‌تواند بالاگذاری شود زیرا از بیشینه اندازه مجاز پرونده‌ها (%{max_size}) تجاوز می‌کند" error_bulk_download_size_too_big: نمی‌توان پیوست‌ها را باهم Ø¯Ø±ÛŒØ§ÙØª کرد. اندازه Ú©Ù„ پرونده‌ها از حداکثر اندازه مجاز (%{max_size}) بیش‌تر است. error_session_expired: "نشست شما منقضی شده است. Ù„Ø·ÙØ§Ù‹ دوباره وارد شوید." error_token_expired: "پیوند بازیابی گذرواژه شما منقضی شده است. Ù„Ø·ÙØ§Ù‹ دوباره سعی کنید." warning_attachments_not_saved: "%{count} پرونده نتوانست ذخیره شود." error_password_expired: "گذرواژه‌ی شما منقضی شده است یا راه‌بر درخواست تغییر آن را داده است." error_invalid_file_encoding: "این پرونده یک پرونده با کدگذاری %{encoding} نیست" error_invalid_csv_file_or_settings: "این پرونده یک پرونده CSV نیست یا با تنظیمات زیر همخوان نیست. (%{value})" error_can_not_read_import_file: "در هنگام خواندن پرونده برای ورود، خطایی رخ داد" error_no_data_in_file: پرونده شامل هیچ داده‌ای نیست error_attachment_extension_not_allowed: "پسوند %{extension} برای پیوست یک پسوند مجاز نیست" error_ldap_bind_credentials: "حساب/گذرواژه نامعتبر LDAP" error_no_tracker_allowed_for_new_issue_in_project: "پروژه هیچ نوع مسئله‌ای ندارد Ú©Ù‡ بتوانید مسئله‌ای بسازید" error_no_projects_with_tracker_allowed_for_new_issue: "هیچ پروژه‌ای با نوع مسئله‌ای Ú©Ù‡ شما بتوانید مسئله‌ی جدید بسازید نیست." error_move_of_child_not_possible: "زیرمسئله %{child} نمی‌تواند به پروژه جدید منتقل شود: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "زمان صرÙ‌شده را نمی توان به یک مسئله Ú©Ù‡ در حال حذ٠است اختصاص داد" warning_fields_cleared_on_bulk_edit: "تغییرات منجر به حذ٠خودکار مقادیر از یک یا چند Ùیلد در اشیاء انتخاب شده خواهد شد" error_exceeds_maximum_hours_per_day: "نمی‌توان بیش از %{max_hours} ساعت در یک روز زمان ثبت کرد. (%{logged_hours} ساعت تا کنون زمان ثبت شده است)" error_can_not_delete_auth_source: "این شیوه احراز هویت در حال Ø§Ø³ØªÙØ§Ø¯Ù‡ است Ùˆ حذ٠آن امکان‌‌پذیر نیست." error_spent_on_future_date: "ثبت زمان برای روزهای آینده امکان‌پذیر نیست" error_not_allowed_to_log_time_for_other_users: "شما اجازه ثبت زمان برای سایر کاربران را ندارید" error_can_not_execute_macro_html: خطا در اجرای ماکروی %{name} (%{error}) error_macro_does_not_accept_block: این ماکرو یک بلوک متنی را قبول نمی‌کند error_childpages_macro_no_argument: این ماکرو Ùقط در ØµÙØ­Ø§Øª دانش‌نامه می‌تواند بدون ورودی، ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ شود error_circular_inclusion: دور بی‌نهایت تشخیص داده شد error_page_not_found: ØµÙØ­Ù‡ پیدا نشد error_filename_required: نام ÙØ§ÛŒÙ„ مورد نیاز است error_invalid_size_parameter: اندازه نامعتبر است error_attachment_not_found: پیوست %{name} ÛŒØ§ÙØª نشد error_invalid_authenticity_token: توکن اصالت ÙØ±Ù… نامعتبر است error_query_statement_invalid: هنگام اجرای جستار خطایی رخ داده Ùˆ ثبت شده است. Ù„Ø·ÙØ§Ù‹ این خطا را به راه‌بر پی‌گیر گزارش دهید. mail_subject_lost_password: "گذرواژه حساب %{value} شما" mail_body_lost_password: 'برای تغییر گذرواژه خود، بر روی پیوند زیر کلیک کنید:' mail_body_lost_password_validity: 'توجه داشته باشید Ú©Ù‡ شما Ùقط یک‌بار بوسیله این پیوند می‌توانند گذرواژه خود را تغییر دهید.' mail_subject_register: "ÙØ¹Ø§Ù„‌سازی حساب %{value} شما" mail_body_register: 'برای ÙØ¹Ø§Ù„‌سازی حساب خود، بر روی پیوند زیر کلیک کنید:' mail_body_account_information_external: "شما می‌توانید حساب %{value} خود را برای ورود به کار برید." mail_body_account_information: اطلاعات حساب شما mail_subject_account_activation_request: "درخواست ÙØ¹Ø§Ù„‌سازی حساب %{value}" mail_body_account_activation_request: "یک کاربر جدید (%{value}) ثبت نام کرده است. این حساب منتظر تأیید شماست:" mail_subject_reminder: "زمان رسیدگی به %{count} مسئله در %{days} روز آینده سر می‌رسد" mail_body_reminder: "زمان رسیدگی به %{count} مسئله Ú©Ù‡ به شما واگذار شده است، در %{days} روز آینده سر می‌رسد:" mail_subject_wiki_content_added: "ØµÙØ­Ù‡ دانش‌نامه «%{id}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" mail_body_wiki_content_added: "ØµÙØ­Ù‡ دانش‌نامه «%{id}» توسط %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." mail_subject_wiki_content_updated: "ØµÙØ­Ù‡ دانش‌نامه «%{id}» به‌روز شد" mail_body_wiki_content_updated: "ØµÙØ­Ù‡ دانش‌نامه «%{id}» توسط %{author} به‌روز شد." mail_subject_security_notification: "آگاه‌سازی امنیتی" mail_body_security_notification_change: "%{field} تغییر کرد." mail_body_security_notification_change_to: "%{field} به %{value} تغییر کرد." mail_body_security_notification_add: "%{field} %{value} Ø§ÙØ²ÙˆØ¯Ù‡ شد." mail_body_security_notification_remove: "%{field} %{value} حذ٠شد." mail_body_security_notification_notify_enabled: "از حالا نشانی رایانامه %{value} آگاه‌سازی‌ها را Ø¯Ø±ÛŒØ§ÙØª خواهد کرد." mail_body_security_notification_notify_disabled: "نشانی رایانامه %{value} دیگر آگاه‌سازی Ø¯Ø±ÛŒØ§ÙØª نخواهد کرد." mail_body_settings_updated: "تنظیمات زیر تغییر کردند:" mail_body_password_updated: "گذرواژه شما تغییر کرد." mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. field_name: نام field_description: توضیح field_summary: خلاصه field_is_required: الزامی field_firstname: نام Ú©ÙˆÚ†Ú© field_lastname: نام خانوادگی field_mail: رایانامه field_address: نشانی رایانامه field_filename: پرونده field_filesize: اندازه field_downloads: Ø¯Ø±ÛŒØ§ÙØªâ€ŒÙ‡Ø§ field_author: نویسنده field_created_on: ساخته شده در field_updated_on: به‌روزشده در field_closed_on: بسته شده در field_field_format: قالب field_is_for_all: برای همه پروژه‌ها field_possible_values: مقادیر ممکن field_regexp: عبارت منظم field_min_length: کم‌ترین اندازه field_max_length: بیش‌ترین اندازه field_value: مقدار field_category: دسته field_title: عنوان field_project: پروژه field_issue: مسئله field_is_member_of_group: عضو گروه field_status: وضعیت field_notes: یادداشت‌ها field_is_closed: مسئله‌، بسته شده field_is_default: مقدار Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_tracker: نوع مسئله field_subject: موضوع field_due_date: تاریخ سررسید field_assigned_to: مسئول field_priority: اولویت field_fixed_version: نسخه هد٠field_user: کاربر field_principal: کاربر یا گروه field_role: نقش field_homepage: ØµÙØ­Ù‡ خانه field_is_public: عمومی field_parent: پروژه پدر field_is_in_roadmap: این مسئله‌ها در نقشه راه نشان داده شوند field_login: نام کاربری field_mail_notification: آگاه‌سازی‌های رایانامه‌ای field_admin: راه‌بر field_last_login_on: آخرین ورود field_passwd_changed_on: آخرین تغییر گذرواژه field_language: زبان field_effective_date: تاریخ field_password: گذرواژه field_current_password: گذرواژه ÙØ¹Ù„ÛŒ field_new_password: گذرواژه جدید field_password_confirmation: تکرار گذرواژه field_twofa_scheme: طرح احراز هویت دو عاملی field_version: نسخه field_type: نوع field_host: میزبان field_port: درگاه field_account: حساب field_base_dn: DN پایه field_attr_login: خصوصیت ورود field_attr_firstname: خصوصیت نام Ú©ÙˆÚ†Ú© field_attr_lastname: خصوصیت نام خانوادگی field_attr_mail: خصوصیت رایانامه field_onthefly: ساخت کاربر بی‌درنگ field_start_date: تاریخ آغاز field_done_ratio: Ùª انجام شده field_auth_source: روش احراز هویت field_hide_mail: رایانامه من پنهان شود field_comments: توضیح field_url: نشانی field_start_page: ØµÙØ­Ù‡ آغاز field_subproject: زیرپروژه field_hours: ساعت‌ field_activity: دسته‌بندی زمان field_spent_on: در تاریخ field_identifier: شناسه field_is_filter: غربال‌پذیر field_issue_to: مسئله مرتبط field_delay: دیرکرد field_assignable: مسئله‌ها می‌توانند به کاربرانی Ú©Ù‡ این نقش را دارند، واگذار شوند field_redirect_existing_links: پیوندهای موجود به پیوند جدید منتقل شوند field_estimated_hours: زمان برآوردشده field_column_names: ستون‌ها field_time_entries: زمان نوشتن field_time_zone: محدوده زمانی field_searchable: جست‌وجوپذیر field_default_value: مقدار Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_comments_sorting: نمایش نظرات field_parent_title: ØµÙØ­Ù‡ پدر field_editable: ویرایش‌پذیر field_watcher: ناظر field_content: محتوا field_group_by: دسته بندی با field_sharing: اشتراک گذاری field_parent_issue: کار پدر field_parent_issue_subject: موضوع کار پدر field_member_of_group: "گروه مسئول" field_assigned_to_role: "نقش مسئول" field_text: بخش متنی field_visible: آشکار field_warn_on_leaving_unsaved: هنگام خروج از ØµÙØ­Ù‡â€ŒØ§ÛŒ با متنی ذخیره‌نشده به من اخطار بده field_issues_visibility: آشکاری مسئله‌ها field_is_private: محرمانه field_commit_logs_encoding: کدگذاری پیام‌های تثبیت field_scm_path_encoding: کدگذاری مسیر field_path_to_repository: مسیر مخزن field_root_directory: مسیر ریشه field_cvsroot: CVSROOT field_cvs_module: ابزار field_repository_is_default: مخزن Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_multiple: چند مقدار field_auth_source_ldap_filter: غربال LDAP field_core_fields: بخش‌های استاندارد field_timeout: "مهلت (به ثانیه)" field_board_parent: انجمن پدر field_private_notes: یادداشت‌های محرمانه field_inherit_members: ارث‌بری اعضا field_generate_password: تولید گذرواژه field_must_change_passwd: لزوم تغییر گذرواژه در ورود بعدی field_default_status: وضعیت Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_users_visibility: آشکاری کاربران field_time_entries_visibility: آشکاری زمان‌های ثبت شده field_total_estimated_hours: مجموع زمان برآوردشده field_default_version: نسخه Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_remote_ip: نشانی آی‌پی field_textarea_font: قلم مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ برای متن field_updated_by: به‌روزرسانی شده توسط field_last_updated_by: آخرین به‌روزرسانی توسط field_full_width_layout: عرض ØªÙ…Ø§Ù…â€ŒØµÙØ­Ù‡ field_digest: قدرآزما field_default_assigned_to: مسئول Ù¾ÛŒØ´â€ŒÙØ±Ø¶ field_recently_used_projects: تعداد پروژه‌های اخیر در پنجره انتخاب پروژه field_history_default_tab: برگه Ù¾ÛŒØ´â€ŒÙØ±Ø¶ در سابقه مسئله field_unique_id: شناسه یکتا field_toolbar_language_options: زبان‌های برنامه‌نویسی٠قابل انتخاب در نوارابزار‌ field_twofa_required: احراز هویت دوعاملی مورد نیاز است field_default_issue_query: جستار Ù¾ÛŒØ´â€ŒÙØ±Ø¶ مسئله‌ها field_default_project_query: جستار Ù¾ÛŒØ´â€ŒÙØ±Ø¶ پروژه field_default_time_entry_activity: دسته‌بندی Ù¾ÛŒØ´â€ŒÙØ±Ø¶ زمان صر٠شده setting_app_title: عنوان برنامه setting_welcome_text: متن خوش‌آمد گویی setting_default_language: زبان Ù¾ÛŒØ´â€ŒÙØ±Ø¶ setting_login_required: الزامی بودن ورود setting_self_registration: ثبت‌نام خود setting_show_custom_fields_on_registration: نمایش بخش‌های Ø³ÙØ§Ø±Ø´ÛŒ در ثبت‌نام setting_attachment_max_size: بیشینه اندازه پیوست setting_bulk_download_max_size: حداکثر اندازه Ú©Ù„ در Ø¯Ø±ÛŒØ§ÙØª همه پرونده‌ها setting_issues_export_limit: محدودیت صدور مسئله‌ها setting_mail_from: نشانی ÙØ±Ø³ØªÙ†Ø¯Ù‡ رایانامه setting_plain_text_mail: رایانامه نوشتاری ساده (بدون HTML) setting_host_name: نام میزبان Ùˆ نشانی setting_text_formatting: قالب‌بندی متن setting_wiki_compression: ÙØ´Ø±Ø¯Ù‡â€ŒØ³Ø§Ø²ÛŒ سابقه دانش‌نامه setting_feeds_limit: بیشینه موارد در خوراک‌های Atom setting_default_projects_public: پروژه‌های جدید به صورت Ù¾ÛŒØ´â€ŒÙØ±Ø¶ عمومی هستند setting_autofetch_changesets: Ø¯Ø±ÛŒØ§ÙØª خودکار تثبیت‌ها setting_sys_api_enabled: ÙØ¹Ø§Ù„‌سازی سرویس وب برای راه‌بر مخزن setting_commit_ref_keywords: کلیدواژه‌های ارجاع setting_commit_fix_keywords: کلیدواژه‌های انجام setting_autologin: ورود خودکار setting_date_format: قالب تاریخ setting_time_format: قالب زمان setting_timespan_format: قالب ÙØ§ØµÙ„Ù‡ زمان setting_cross_project_issue_relations: اجازه ارتباط بین‌پروژه‌ای مسئله‌ها setting_cross_project_subtasks: اجازه زیرکارهای بین‌پروژه‌ای setting_issue_list_default_columns: ستون‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ نمایش داده شده در Ùهرست مسئله‌ها setting_repositories_encodings: کدگذاری پیوست‌ها Ùˆ مخزن‌ها setting_emails_header: سرنویس رایانامه setting_emails_footer: پانویس رایانامه setting_protocol: قرارداد setting_per_page_options: گزینه‌های اندازه داده‌های هر ØµÙØ­Ù‡ setting_user_format: قالب نمایشی کاربران setting_activity_days_default: روزهای نمایش داده شده در خط زمان setting_display_subprojects_issues: نمایش مسائل زیرپروژه در پروژه پدر setting_enabled_scm: ÙØ¹Ø§Ù„‌سازی SCM setting_mail_handler_body_delimiters: "بریدن رایانامه‌ها پس از یکی از این ردیÙ‌ها" setting_mail_handler_enable_regex: "ÙØ¹Ø§Ù„‌سازی عبارات منظم" setting_mail_handler_api_enabled: ÙØ¹Ø§Ù„‌سازی وب‌سرویس برای نامه‌های Ø¯Ø±ÛŒØ§ÙØªÛŒ setting_mail_handler_api_key: کلید API setting_mail_handler_preferred_body_part: قسمتی از رایانامه‌های چند بخشی (HTML) ترجیح داده شود setting_sys_api_key: کلید API وب‌سرویس مدیریت مخازن setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر setting_gravatar_default: عکس Gravatar Ù¾ÛŒØ´â€ŒÙØ±Ø¶ setting_diff_max_lines_displayed: بیشترین اندازه ردیÙ‌های ØªÙØ§ÙˆØª نشان داده شده setting_file_max_size_displayed: بیشترین اندازه پرونده‌های نمایش داده‌شده به صورت هم‌ردی٠setting_repository_log_display_limit: بیشترین تعداد بازبینی‌های نمایش داده‌شده در گزارش پرونده setting_password_max_age: لزوم تغییر گذرواژه پس از setting_password_min_length: کم‌ترین اندازه گذرواژه setting_password_required_char_classes : مواردی Ú©Ù‡ برای گذرواژه الزامی است setting_lost_password: اجازه بازنشانی گذرواژه با رایانامه setting_new_project_user_role_id: نقش داده‌شده به کاربری Ú©Ù‡ راه‌بر نیست Ùˆ پروژه می‌سازد setting_default_projects_modules: ابزارهای Ù¾ÛŒØ´â€ŒÙØ±Ø¶ ÙØ¹Ø§Ù„ برای پروژه‌های جدید setting_issue_done_ratio: برآورد اندازه انجام شده مسئله با setting_issue_done_ratio_issue_field: محاسبه بر اساس درصد Ù¾ÛŒØ´â€ŒØ±ÙØª مسئله setting_issue_done_ratio_issue_status: محاسبه بر اساس وضعیت مسئله setting_start_of_week: آغاز تقویم از setting_rest_api_enabled: ÙØ¹Ø§Ù„‌سازی وب سرویس‌های REST setting_cache_formatted_text: ذخیره متون قالب‌بندی‌شده در نهان‌گاه (cache) setting_default_notification_option: آگاه‌سازی Ù¾ÛŒØ´â€ŒÙØ±Ø¶ setting_commit_logtime_enabled: ÙØ¹Ø§Ù„‌سازی ثبت زمان صرÙ‌شده setting_commit_logtime_activity_id: دسته‌بندی زمان صرÙ‌شده setting_gantt_items_limit: بیشترین تعداد مسائل نمایش داده شده در نمودار گانت setting_gantt_months_limit: بیش‌ترین تعداد ماه نمایش داده‌شده در نمودار گانت setting_issue_group_assignment: اجازه واگذاری مسئله به گروه‌ها setting_default_issue_start_date_to_creation_date: Ø§Ø³ØªÙØ§Ø¯Ù‡ از تاریخ جاری به عنوان تاریخ شروع برای مسئله‌های جدید setting_commit_cross_project_ref: اجازه ارجاع Ùˆ حل مسئله‌های همه پروژه‌های دیگر setting_unsubscribe: کاربران اجازه حذ٠حساب کاربری خود را داشته باشند setting_session_lifetime: بیشینه عمر نشست setting_session_timeout: مهلت عدم ÙØ¹Ø§Ù„یت نشست setting_thumbnails_enabled: نمایش بندانگشتی پیوست‌ها setting_thumbnails_size: اندازه بندانگشتی (به پیکسل) setting_non_working_week_days: روزهای تعطیل کاری setting_jsonp_enabled: ÙØ¹Ø§Ù„‌سازی پشتیبانی JSONP setting_default_projects_tracker_ids: انواع مسئله‌ی Ù¾ÛŒØ´â€ŒÙØ±Ø¶ برای پروژه‌های جدید setting_mail_handler_excluded_filenames: مستثنی کردن پیوست‌ها با نام setting_force_default_language_for_anonymous: الزام زبان پیش ÙØ±Ø¶ برای کاربران ناشناس setting_force_default_language_for_loggedin: الزام زبان Ù¾ÛŒØ´â€ŒÙØ±Ø¶ برای کاربران واردشده setting_link_copied_issue: ارتباط مسائل در هنگام رونوشت setting_max_additional_emails: بیشینه تعداد نشانی‌های رایانامه setting_email_domains_allowed: دامنه‌های مجاز برای نشانی رایانامه setting_email_domains_denied: دامنه‌های غیرمجاز برای نشانی رایانامه setting_search_results_per_page: تعداد نتایج جستجو در ØµÙØ­Ù‡ setting_attachment_extensions_allowed: پسوندهای مجاز setting_attachment_extensions_denied: پسوندهای غیرمجاز setting_new_item_menu_tab: منوی پروژه برای ساخت اجزاء جدید setting_commit_logs_formatting: Ø§ÙØ¹Ù…ال قالب‌بندی متن روی پیام‌های تثبیت setting_timelog_required_fields: بخش‌های الزامی برای ثبت زمان setting_close_duplicate_issues: بستن مسئله‌های تکراری بصورت خودکار setting_time_entry_list_defaults: ستون‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ ثبت ساعت setting_timelog_accept_0_hours: امکان ثبت ساعت با ØµÙØ± ساعت setting_timelog_max_hours_per_day: بیش‌ترین ساعتی Ú©Ù‡ می‌توان در یک روز برای هر کاربر ثبت کرد setting_timelog_accept_future_dates: امکان ثبت زمان برای روزهای آینده setting_show_status_changes_in_mail_subject: نمایش تغییر وضعیت در موضوع آگاه‌سازی رایانامه‌ای setting_project_list_defaults: ستون‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ نمایش داده‌شده در پروژه‌ها setting_twofa: ورود دوعاملی permission_add_project: ساخت پروژه permission_add_subprojects: ساخت زیرپروژه permission_edit_project: ویرایش پروژه permission_close_project: بستن / بازگشایی پروژه permission_delete_project: حذ٠پروژه permission_select_project_modules: انتخاب ابزارهای پروژه permission_manage_members: مدیریت اعضا permission_manage_project_activities: مدیریت دسته‌بندی زمان‌های پروژه permission_manage_versions: مدیریت نسخه‌ها permission_manage_categories: مدیریت دسته‌های مسئله permission_view_issues: مشاهده مسئله‌ها permission_add_issues: Ø§ÙØ²ÙˆØ¯Ù† مسئله‌ها permission_edit_issues: ویرایش مسئله‌ها permission_edit_own_issues: ویرایش مسئله‌های خود permission_copy_issues: رونوشت مسائل permission_manage_issue_relations: مدیریت ارتباط مسئله‌ها permission_set_issues_private: تنظیم مسئله‌ها به عمومی یا محرمانه permission_set_own_issues_private: تنظیم مسئله‌های خود به عمومی یا محرمانه permission_add_issue_notes: Ø§ÙØ²ÙˆØ¯Ù† یادداشت‌ها permission_edit_issue_notes: ویرایش یادداشت‌ها permission_edit_own_issue_notes: ویرایش یادداشت خود permission_view_private_notes: مشاهده یادداشت‌های محرمانه permission_set_notes_private: محرمانه کردن یادداشت‌ها permission_delete_issues: حذ٠مسئله‌ها permission_manage_public_queries: مدیریت جستارهای عمومی permission_save_queries: ذخیره‌سازی جستارها permission_view_gantt: مشاهده نمودار گانت permission_view_calendar: مشاهده تقویم permission_view_issue_watchers: مشاهده Ùهرست ناظرها permission_add_issue_watchers: Ø§ÙØ²ÙˆØ¯Ù† ناظرها permission_delete_issue_watchers: حذ٠ناظرها permission_log_time: ثبت زمان صرÙ‌شده permission_view_time_entries: مشاهده زمان صرÙ‌شده permission_edit_time_entries: ویرایش زمان صرÙ‌شده permission_edit_own_time_entries: ویرایش زمان صرÙ‌شده خود permission_view_news: مشاهده وبلاگ permission_manage_news: مدیریت وبلاگ permission_comment_news: نظردهی روی مطالب permission_view_documents: مشاهده اسناد permission_add_documents: Ø§ÙØ²ÙˆØ¯Ù† اسناد permission_edit_documents: ویرایش اسناد permission_delete_documents: حذ٠اسناد permission_manage_files: مدیریت پرونده‌ها permission_view_files: مشاهده پرونده‌ها permission_manage_wiki: مدیریت دانش‌نامه permission_rename_wiki_pages: نامگذاری ØµÙØ­Ù‡ دانش‌نامه permission_delete_wiki_pages: حذ٠کردن ØµÙØ­Ù‡ دانش‌نامه permission_view_wiki_pages: مشاهده دانش‌نامه permission_view_wiki_edits: مشاهده سابقه دانش‌نامه permission_edit_wiki_pages: ویرایش ØµÙØ­Ù‡â€ŒÙ‡Ø§ÛŒ دانش‌نامه permission_delete_wiki_pages_attachments: حذ٠کردن پیوست‌های ØµÙØ­Ù‡ دانش‌نامه permission_view_wiki_page_watchers: مشاهده Ùهرست ناظرهای ØµÙØ­Ù‡ دانش‌نامه permission_add_wiki_page_watchers: Ø§ÙØ²ÙˆØ¯Ù† ناظر به ØµÙØ­Ù‡ دانش‌نامه permission_delete_wiki_page_watchers: حذ٠ناظر از ØµÙØ­Ù‡ دانش‌نامه permission_protect_wiki_pages: Ù…Ø­Ø§ÙØ¸Øª ØµÙØ­Ù‡â€ŒÙ‡Ø§ÛŒ دانش‌نامه permission_manage_repository: مدیریت مخزن permission_browse_repository: مرور مخزن permission_view_changesets: مشاهده تغییرات permission_commit_access: دست‌رسی تثبیت permission_manage_boards: مدیریت انجمن‌ها permission_view_messages: مشاهده پیام‌ها permission_add_messages: ارسال پیام‌ها permission_edit_messages: ویرایش پیام‌ها permission_edit_own_messages: ویرایش پیام خود permission_delete_messages: حذ٠پیام‌ها permission_delete_own_messages: حذ٠پیام خود permission_view_message_watchers: مشاهده Ùهرست ناظرهای پیام permission_add_message_watchers: Ø§ÙØ²ÙˆØ¯Ù† ناظرهای پیام permission_delete_message_watchers: حذ٠ناظرهای پیام permission_export_wiki_pages: صدور ØµÙØ­Ù‡â€ŒÙ‡Ø§ÛŒ دانش‌نامه permission_manage_subtasks: مدیریت زیرکارها permission_manage_related_issues: مدیریت مسئله‌های مرتبط permission_import_issues: وارد کردن مسائل permission_log_time_for_other_users: ثبت زمان برای سایر کاربران project_module_issue_tracking: پی‌گیری مسئله‌ها project_module_time_tracking: ‌مدیریت زمان project_module_news: وبلاگ project_module_documents: اسناد project_module_files: پرونده‌ها project_module_wiki: دانش‌نامه project_module_repository: مخزن project_module_boards: انجمن‌ها project_module_calendar: تقویم project_module_gantt: گانت label_user: کاربر label_user_plural: کاربران label_user_new: کاربر جدید label_user_anonymous: ناشناس label_project: پروژه label_project_new: پروژه جدید label_project_plural: پروژه‌ها label_x_projects: zero: بدون پروژه one: "Û± پروژه" other: "%{count} پروژه" label_project_all: همه پروژه‌ها label_project_latest: آخرین پروژه‌ها label_issue: مسئله label_issue_new: مسئله جدید label_issue_plural: مسئله‌ها label_issue_view_all: مشاهده همه مسئله‌ها label_issues_by: "مسئله‌های %{value}" label_issue_added: مسئله Ø§ÙØ²ÙˆØ¯Ù‡ شد label_issue_updated: مسئله به‌روز شد label_issue_note_added: یادداشت Ø§ÙØ²ÙˆØ¯Ù‡ شد label_issue_status_updated: وضعیت به‌روز شد label_issue_assigned_to_updated: مسئول به‌روز شد label_issue_priority_updated: اولویت به‌روز شد label_issue_fixed_version_updated: نسخه هد٠به‌روز شد label_document: سند label_document_new: سند جدید label_document_plural: اسناد label_document_added: سند Ø§ÙØ²ÙˆØ¯Ù‡ شد label_role: نقش label_role_plural: نقش‌ها label_role_new: نقش جدید label_role_and_permissions: نقش‌ها Ùˆ دست‌رسی‌ها label_role_anonymous: ناشناس label_role_non_member: غیرعضو label_member: عضو label_member_new: عضو جدید label_member_plural: اعضا label_tracker: نوع مسئله label_tracker_plural: انواع مسئله‌ها label_tracker_all: همه انواع مسئله‌ها label_tracker_new: نوع جدید مسئله label_workflow: گردش کار label_issue_status: وضعیت مسئله label_issue_status_plural: وضعیت‌های مسئله‌ها label_issue_status_new: وضعیت جدید label_issue_category: دسته مسئله label_issue_category_plural: دسته‌بندی مسئله‌ها label_issue_category_new: دسته جدید label_custom_field: بخش Ø³ÙØ§Ø±Ø´ÛŒ label_custom_field_plural: بخش‌های Ø³ÙØ§Ø±Ø´ÛŒ label_custom_field_new: بخش Ø³ÙØ§Ø±Ø´ÛŒ جدید label_enumerations: برشمردنی‌ها label_enumeration_new: مقدار جدید label_information: اطلاعات label_information_plural: اطلاعات label_register: ثبت‌نام label_password_lost: بازیابی گذرواژه label_password_required: برای ادامه، گذرواژه خود را تایید کنید label_home: خانه label_my_page: ØµÙØ­Ù‡ من label_my_account: حساب من label_my_projects: پروژه‌های من label_administration: راه‌بری label_login: ورود label_logout: خروج label_help: راهنما label_reported_issues: مسئله‌های ثبت شده label_assigned_issues: مسائل واگذارشده label_assigned_to_me_issues: مسئله‌های واگذارشده به من label_updated_issues: مسائل به‌روزشده label_registered_on: ثبت‌نام‌شده در label_activity: خط زمان label_user_activity: "خط زمان %{value}" label_new: جدید label_logged_as: "وارد‌شده به نام " label_environment: محیط label_authentication: احراز هویت label_auth_source: روش احراز هویت label_auth_source_new: روش احراز هویت جدید label_auth_source_plural: روش‌های احراز هویت label_subproject_plural: زیرپروژه‌ها label_subproject_new: زیرپروژه جدید label_and_its_subprojects: "%{value} Ùˆ زیرپروژه‌هایش" label_min_max_length: کم‌ترین Ùˆ بیشترین اندازه label_list: Ùهرست label_date: تاریخ label_integer: عدد صحیح label_float: عدد اعشاری label_boolean: درست/نادرست label_string: متن label_text: متن بلند label_attribute: خصوصیت label_attribute_plural: خصوصیت‌ها label_no_data: هیچ داده‌ای برای نمایش نیست label_no_preview: پیش‌نمایش موجود نیست label_no_preview_alternative_html: پیش‌نمایش موجود نیست. %{link} label_no_preview_download: Ø¯Ø±ÛŒØ§ÙØª label_change_status: تغییر وضعیت label_history: سابقه label_attachment: پیوست label_attachment_new: پیوست جدید label_attachment_delete: حذ٠پیوست label_attachment_plural: پیوست‌ها label_file_added: پرونده Ø§ÙØ²ÙˆØ¯Ù‡ شد label_attachment_description: توضیحات پیوست label_report: گزارش label_report_plural: گزارش‌ها label_news: مطلب label_news_new: مطلب جدید وبلاگ label_news_plural: وبلاگ label_news_latest: آخرین مطالب label_news_view_all: مشاهده همه مطالب label_news_added: مطلب Ø§ÙØ²ÙˆØ¯Ù‡ شد label_news_comment_added: نظر ثبت شد label_settings: تنظیمات label_overview: دورنما label_version: نسخه label_version_new: نسخه جدید label_version_plural: نسخه‌ها label_version_and_files: نسخه‌ها (%{count}) Ùˆ پرونده‌ها label_close_versions: بستن نسخه‌های انجام شده label_confirmation: تأیید label_export_to: 'قالب‌های دیگر:' label_read: خواندن... label_public_projects: پروژه‌های عمومی label_open_issues: باز label_open_issues_plural: باز‌ها label_closed_issues: بسته label_closed_issues_plural: بسته‌ها label_x_open_issues_abbr: zero: 0 باز one: 1 باز other: "%{count} باز" label_x_closed_issues_abbr: zero: 0 بسته one: 1 بسته other: "%{count} بسته" label_x_issues: zero: 0 مسئله one: 1 مسئله other: "%{count} مسئله" label_total: Ú©Ù„ label_total_plural: Ú©Ù„ label_total_time: زمان Ú©Ù„ label_permissions: دست‌رسی‌ها label_current_status: وضعیت کنونی label_new_statuses_allowed: وضعیت‌های مجاز جدید label_all: همه label_any: هر چیز label_none: هیچ label_nobody: هیچ کس label_next: بعد label_previous: قبل label_used_by: به کار Ø±ÙØªÙ‡ در label_details: جزئیات label_add_note: Ø§ÙØ²ÙˆØ¯Ù† یادداشت label_calendar: تقویم label_months_from: ماه از label_gantt: گانت label_internal: درونی label_last_changes: "%{count} تغییر آخر" label_change_view_all: مشاهده همه تغییرات label_comment: نظر label_comment_plural: نظرات label_x_comments: zero: بدون نظر one: Û± نظر other: "%{count} نظر" label_comment_add: Ø§ÙØ²ÙˆØ¯Ù† نظر label_comment_added: نظر Ø§ÙØ²ÙˆØ¯Ù‡ شد label_comment_delete: حذ٠نظرات label_query: جستار Ø³ÙØ§Ø±Ø´ÛŒ label_query_plural: جستار Ø³ÙØ§Ø±Ø´ÛŒ label_query_new: جستار جدید label_my_queries: جستارهای Ø³ÙØ§Ø±Ø´ÛŒ من label_filter_add: Ø§ÙØ²ÙˆØ¯Ù† غربال label_filter_plural: غربال‌ها label_equals: برابر است با label_not_equals: برابر نیست با label_in_less_than: در کم‌تر از label_in_more_than: در بیشتر از label_in_the_next_days: در آینده label_in_the_past_days: در گذشته label_greater_or_equal: بیشتر یا برابر است با label_less_or_equal: کم‌تر یا برابر است با label_between: میان label_in: در label_today: امروز label_yesterday: دیروز label_tomorrow: ÙØ±Ø¯Ø§ label_this_week: این Ù‡ÙØªÙ‡ label_last_week: Ù‡ÙØªÙ‡ قبل label_next_week: Ù‡ÙØªÙ‡ آینده label_last_n_weeks: "%{count} Ù‡ÙØªÙ‡ گذشته" label_last_n_days: "%{count} روز گذشته" label_this_month: این ماه label_last_month: ماه قبل label_next_month: ماه آینده label_this_year: امسال label_date_range: بازه تاریخ label_less_than_ago: قبل از چند روز پیش label_more_than_ago: بعد از چند روز پیش label_ago: روز قبل label_contains: شامل label_not_contains: ÙØ§Ù‚د label_starts_with: شروع با label_ends_with: پایان با label_any_issues_in_project: هر مسئله‌ای در پروژه label_any_issues_not_in_project: هر مسئله‌ای بیرون پروژه label_no_issues_in_project: مسئله‌ای در پروژه وجود ندارد label_any_open_issues: هر مسئله‌ی باز label_no_open_issues: بدون هیچ مسئله باز label_day_plural: روز label_repository: مخزن label_repository_new: مخزن جدید label_repository_plural: مخزن‌ها label_branch: انشعاب label_tag: برچسب label_revision: بازبینی label_revision_plural: بازبینی‌ها label_revision_id: "بازبینی %{value}" label_associated_revisions: بازبینی‌های مرتبط label_added: Ø§ÙØ²ÙˆØ¯Ù‡ شده label_modified: پیراسته شده label_copied: رونویسی شده label_renamed: تغییرنام داده‌شده label_deleted: حذ٠شده label_latest_revision: آخرین بازبینی label_latest_revision_plural: آخرین بازبینی‌ها label_view_revisions: مشاهده بازبینی‌ها label_view_all_revisions: مشاهده همه بازبینی‌ها label_x_revisions: "%{count} بازبینی" label_max_size: بیشترین اندازه label_roadmap: نقشه راه label_roadmap_due_in: "سررسید در %{value}" label_roadmap_overdue: "%{value} دیرکرد" label_roadmap_no_issues: هیچ مسئله‌ای برای این نسخه نیست label_search: جست‌وجو label_result_plural: نتایج label_all_words: همه واژه‌ها label_wiki: دانش‌نامه label_wiki_edit: ویرایش دانش‌نامه label_wiki_edit_plural: ویرایش‌های دانش‌نامه label_wiki_page: ØµÙØ­Ù‡ دانش‌نامه label_wiki_page_plural: ØµÙØ­Ù‡â€ŒÙ‡Ø§ÛŒ دانش‌نامه label_wiki_page_new: ØµÙØ­Ù‡ دانش‌نامه جدید label_index_by_title: Ùهرست بر اساس عنوان label_index_by_date: Ùهرست بر اساس تاریخ label_current_version: نسخه ÙØ¹Ù„ÛŒ label_preview: پیش‌نمایش label_feed_plural: خوراک‌ها label_changes_details: جزئیات همه تغییرات label_issue_tracking: پی‌گیری مسئله‌ها label_spent_time: زمان صرÙ‌شده label_total_spent_time: Ú©Ù„ زمان صرÙ‌شده label_f_hour: "%{value} ساعت" label_f_hour_plural: "%{value} ساعت" label_f_hour_short: "%{value} س" label_time_tracking: پی‌گیری زمان label_change_plural: تغییر label_statistics: آمار label_commits_per_month: تثبیت در هر ماه label_commits_per_author: تثبیت به ازای هر نویسنده label_diff: ØªÙØ§ÙˆØª label_view_diff: مشاهده ØªÙØ§ÙˆØªâ€ŒÙ‡Ø§ label_diff_inline: هم‌ردی٠label_diff_side_by_side: پهلوبه‌پهلو label_options: گزینه‌ها label_option_auto_lang: خودکار label_copy_workflow_from: رونویسی گردش کار از روی label_permissions_report: گزارش دست‌رسی‌ها label_watched_issues: مسئله‌های نظارت‌شده label_related_issues: مسئله‌های مرتبط label_applied_status: وضعیت اعمال‌شده label_loading: بارگذاری... label_relation_new: ارتباط جدید label_relation_delete: حذ٠ارتباط label_relates_to: مرتبط با label_delete_link_to_subtask: حذ٠پیوند به زیرکار label_duplicates: تکرارکننده label_duplicated_by: تکرارشونده label_blocks: سدکننده label_blocked_by: سدشونده label_precedes: تقدم دارد بر label_follows: تأخر دارد بر label_copied_to: رونوشت به label_copied_from: رونوشت از label_stay_logged_in: وارد‌شده بمانید label_disabled: ØºÛŒØ±ÙØ¹Ø§Ù„ label_optional: انتخابی label_show_completed_versions: نمایش نسخه‌های انجام‌شده label_me: من label_board: انجمن label_board_new: انجمن جدید label_board_plural: انجمن‌ها label_board_locked: Ù‚ÙÙ„ شده label_board_sticky: چسبناک label_topic_plural: Ø³Ø±ÙØµÙ„‌ها label_message_plural: پیام label_message_last: آخرین پیام label_message_new: پیام جدید label_message_posted: پیام Ø§ÙØ²ÙˆØ¯Ù‡ شد label_reply_plural: پاسخ‌ها label_send_information: ارسال داده‌های حساب به کاربر label_year: سال label_month: ماه label_week: Ù‡ÙØªÙ‡ label_date_from: از label_date_to: تا label_language_based: بر اساس زبان کاربر label_sort_by: "مرتب‌سازی با %{value}" label_send_test_email: ارسال رایانامه آزمایشی label_feeds_access_key: کلید دست‌رسی Atom label_missing_feeds_access_key: کلید دست‌رسی Atom در دست‌رس نیست label_feeds_access_key_created_on: "کلید دست‌رسی Atom در %{value} پیش ساخته شده است" label_module_plural: ابزارها label_added_time_by: "Ø§ÙØ²ÙˆØ¯Ù‡ شده توسط %{author} در %{age} پیش" label_updated_time_by: "به‌روزشده توسط %{author} در %{age} پیش" label_updated_time: "به‌روزشده در %{value} پیش" label_jump_to_a_project: انتخاب پروژه label_file_plural: پرونده‌ها label_changeset_plural: تغییرهای مخزن کد label_default_columns: ستون‌های Ù¾ÛŒØ´â€ŒÙØ±Ø¶ label_no_change_option: (بدون تغییر) label_bulk_edit: ویرایش گروهی label_bulk_edit_selected_issues: ویرایش دسته‌ای مسئله‌های انتخاب‌شده label_bulk_edit_selected_time_entries: ویرایش دسته‌جمعی ورودی‌های زمان انتخاب‌شده label_theme: پوسته label_default: Ù¾ÛŒØ´â€ŒÙØ±Ø¶ label_search_titles_only: Ùقط عنوان‌ها جست‌وجو شود label_user_mail_option_all: "برای هر رویداد در همه پروژه‌ها" label_user_mail_option_selected: "برای هر رویداد تنها در پروژه‌های انتخاب‌شده..." label_user_mail_option_none: "هیچ رویدادی" label_user_mail_option_only_my_events: "تنها برای چیزهایی Ú©Ù‡ ناظر هستم یا در آن‌ها درگیر هستم" label_user_mail_option_only_assigned: "تنها برای چیزهایی Ú©Ù‡ به من واگذار شده" label_user_mail_option_only_owner: "تنها برای چیزهایی Ú©Ù‡ من ایجاد کرده‌ام" label_user_mail_no_self_notified: "نمی‌خواهم از تغییراتی Ú©Ù‡ خودم می‌دهم آگاه شوم" label_user_mail_notify_about_high_priority_issues_html: مرا در مورد مسائلی با اولویت %{prio} Ùˆ بالاتر، آگاه Ú©Ù† label_registration_activation_by_email: ÙØ¹Ø§Ù„‌سازی حساب با رایانامه label_registration_manual_activation: ÙØ¹Ø§Ù„‌سازی دستی حساب label_registration_automatic_activation: ÙØ¹Ø§Ù„‌سازی خودکار حساب label_display_per_page: "تعداد ردی٠در هر ØµÙØ­Ù‡: %{value}" label_age: سن label_change_properties: ویرایش خصوصیات label_general: عمومی label_scm: SCM label_plugins: Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ label_ldap: LDAP label_ldap_authentication: احراز هویت LDAP label_ldaps_verify_none: LDAPS (بدون بررسی گواهی‌نامه) label_ldaps_verify_peer: LDAPS label_ldaps_warning: پیش‌نهاد می‌شود Ú©Ù‡ از یک ارتباط رمزنگاری‌شده LDAPS با بررسی گواهی‌نامه Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید تا از هر گونه دستکاری اطلاعات در زمان احراز هویت جلوگیری کنید. label_downloads_abbr: Ø¯Ø±ÛŒØ§ÙØª label_optional_description: توضیح اختیاری label_add_another_file: Ø§ÙØ²ÙˆØ¯Ù† پرونده دیگر label_auto_watch_on: ناظر خودکار label_auto_watch_on_issue_contributed_to: مسئله‌هایی Ú©Ù‡ در آن‌ها مشارکت داشته‌ام label_preferences: ترجیح‌ها label_chronological_order: به ترتیب تاریخ label_reverse_chronological_order: برعکس ترتیب تاریخ label_incoming_emails: رایانامه‌های Ø¯Ø±ÛŒØ§ÙØªÛŒ label_generate_key: ساخت کلید label_issue_watchers: ناظرها label_message_watchers: ناظرها label_wiki_page_watchers: ناظرها label_example: نمونه label_display: نمایش label_sort: مرتب‌سازی label_ascending: Ø§ÙØ²Ø§ÛŒØ´ÛŒ label_descending: کاهشی label_date_from_to: از %{start} تا %{end} label_days_to_html: "%{days} روز تا %{date}" label_wiki_content_added: ØµÙØ­Ù‡ دانش‌نامه Ø§ÙØ²ÙˆØ¯Ù‡ شد label_wiki_content_updated: ØµÙØ­Ù‡ دانش‌نامه به‌روز شد label_group: گروه label_group_plural: گروه‌ها label_group_new: گروه جدید label_group_anonymous: کاربران ناشناس label_group_non_member: کاربران غیرعضو label_time_entry_plural: زمان صرÙ‌شده label_version_sharing_none: بدون اشتراک label_version_sharing_descendants: با زیر پروژه‌ها label_version_sharing_hierarchy: با سلسله مراتب پروژه label_version_sharing_tree: با درخت پروژه label_version_sharing_system: با همه پروژه‌ها label_update_issue_done_ratios: به‌روزرسانی اندازه انجام شده مسئله label_copy_source: منبع label_copy_target: مقصد label_copy_same_as_target: مانند مقصد label_display_used_statuses_only: تنها وضعیت‌هایی نشان داده شوند Ú©Ù‡ در این نوع مسئله به کار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯ label_api_access_key: کلید دست‌رسی API label_missing_api_access_key: کلید دست‌رسی API در دست‌رس نیست label_api_access_key_created_on: "کلید دست‌رسی API در %{value} پیش ساخته شده است" label_profile: نمایه label_subtask: زیرکار label_subtask_plural: زیرکارها label_project_copy_notifications: در هنگام رونویسی پروژه، رایانامه‌های آگاه‌سازی را Ø¨ÙØ±Ø³Øª label_import_notifications: در هنگام وارد کردن، رایانامه‌های آگاه‌سازی را Ø¨ÙØ±Ø³Øª label_principal_search: "جست‌وجو برای کاربر یا دسته:" label_user_search: "جست‌وجو برای کاربر:" label_additional_workflow_transitions_for_author: وقتی Ú©Ù‡ کاربر همان نویسنده باشد، انتقال‌های اضاÙÛŒ Ú©Ù‡ مجاز است label_additional_workflow_transitions_for_assignee: وقتی Ú©Ù‡ کاربر همان مسئول باشد، انتقال‌های اضاÙÛŒ Ú©Ù‡ مجاز است label_issues_visibility_all: همه مسئله‌ها label_issues_visibility_public: همه مسئله‌های غیرمحرمانه label_issues_visibility_own: مسئله‌هایی Ú©Ù‡ کاربر، سازنده یا مسئول آن‌ها است label_git_report_last_commit: نمایش اطلاعات تثبیت آخر در مقابل پرونده‌ها Ùˆ پوشه‌ها label_parent_revision: پدر label_child_revision: ÙØ±Ø²Ù†Ø¯ label_export_options: "%{export_format} گزینه‌های صدور" label_copy_attachments: رونوشت پیوست‌ها label_copy_subtasks: رونوشت زیرکارها label_item_position: "%{position} از %{count}" label_completed_versions: نسخه‌های کامل‌شده label_search_for_watchers: جست‌وجوی ناظرها برای Ø§ÙØ²ÙˆØ¯Ù† label_session_expiration: انقضای نشست label_status_transitions: انتقال‌های وضعیت label_fields_permissions: مجوزهای بخش‌ها label_readonly: Ùقط‌خواندنی label_required: الزامی label_required_lower: الزامی label_required_administrators: الزامی برای راه‌برها label_hidden: مخÙÛŒ label_attribute_of_project: "%{name} پروژه" label_attribute_of_issue: "%{name} مسئله" label_attribute_of_author: "%{name} نویسنده" label_attribute_of_assigned_to: "%{name} مسئول" label_attribute_of_user: "%{name} کاربر" label_attribute_of_fixed_version: "%{name} نسخه هدÙ" label_attribute_of_object: "%{name} %{object_name}" label_cross_project_descendants: با زیرپروژه‌ها label_cross_project_tree: با درخت پروژه label_cross_project_hierarchy: با سلسله مراتب پروژه label_cross_project_system: با همه پروژه‌ها label_gantt_progress_line: خط Ù¾ÛŒØ´â€ŒØ±ÙØª label_visibility_private: Ùقط به من label_visibility_roles: Ùقط به این نقش‌ها label_visibility_public: به هر کاربری label_link: پیوند label_only: Ùقط label_drop_down_list: Ùهرست پایین‌ریز label_checkboxes: مربع‌های علامت‌زنی label_radio_buttons: انتخاب Ùقط یکی از گزینه‌ها label_link_values_to: پیوند مقادیر به URL label_custom_field_select_type: نوع شیئی را Ú©Ù‡ بخش Ø³ÙØ§Ø±Ø´ÛŒ قرار است به آن پیوست شود، انتخاب کنید label_check_for_updates: آزمون به‌روزرسانی label_latest_compatible_version: آخرین نسخه سازگار label_unknown_plugin: Ø§ÙØ²ÙˆÙ†Ù‡ ناشناخته label_add_projects: Ø§ÙØ²ÙˆØ¯Ù† پروژه‌ها label_users_visibility_all: همه کاربران ÙØ¹Ø§Ù„ label_users_visibility_members_of_visible_projects: اعضای پروژه‌های قابل مشاهده label_edit_attachments: ویرایش پرونده‌های پیوست label_download_all_attachments: Ø¯Ø±ÛŒØ§ÙØª همه پیوست‌ها label_link_copied_issue: پیوند مسائل رونوشت شده label_ask: پرسش label_search_attachments_yes: جستجو در نام پیوست‌ها Ùˆ توضیحاتشان label_search_attachments_no: پیوست‌ها را جستجو Ù†Ú©Ù† label_search_attachments_only: Ùقط پیوست‌ها را جستجو Ú©Ù† label_search_open_issues_only: Ùقط مسائل باز label_email_address_plural: رایانامه‌ها label_email_address_add: Ø§ÙØ²ÙˆØ¯Ù† نشانی رایانامه label_enable_notifications: ÙØ¹Ø§Ù„‌سازی آگاه‌سازی label_disable_notifications: ØºÛŒØ±ÙØ¹Ø§Ù„‌سازی آگاه‌سازی label_blank_value: خالی label_parent_task_attributes: خصایص مسائل پدر label_parent_task_attributes_derived: محاسبه از زیرمسئله‌ها label_parent_task_attributes_independent: مستقل از زیرمسئله‌ها label_time_entries_visibility_all: همه زمان‌های وارد شده label_time_entries_visibility_own: زمان‌های وارد شده کاربر label_member_management: مدیریت عضو label_member_management_all_roles: همه نقش‌ها label_member_management_selected_roles_only: Ùقط این نقش‌ها label_import_issues: ورود مسائل permission_import_time_entries: ورود زمان‌ها label_select_file_to_import: انتخاب پرونده برای وارد کردن label_fields_separator: جداکننده‌ی بخش‌ها label_fields_wrapper: بسته‌بندی بخش‌ها label_encoding: کدگذاری label_comma_char: ویرگول label_semi_colon_char: نقطه ویرگول label_quote_char: نقل قول label_double_quote_char: نقل قول دوتایی label_fields_mapping: نگاشت بخش‌ها label_relations_mapping: نگاشت ارتباطات label_file_content_preview: نمایش محتویات بخش label_create_missing_values: ساختن مقادیر ناموجود label_api: API label_field_format_enumeration: Ùهرست کلید/مقدار label_default_values_for_new_users: مقادیر Ù¾ÛŒØ´â€ŒÙØ±Ø¶ برای کاربران جدید label_relations: ارتباطات label_new_project_issue_tab_enabled: نمایش برگه «مسئله جدید» label_new_object_tab_enabled: نمایش منوی "+" label_table_of_contents: Ùهرست محتویات label_font_default: قلم Ù¾ÛŒØ´â€ŒÙØ±Ø¶ label_font_monospace: قلم یکنواخت label_font_proportional: قلم متناسب label_optgroup_bookmarks: منتخب label_optgroup_recents: اخیراً دیده‌شده label_last_notes: آخرین یادداشت‌ها label_default_queries: for_all_projects: برای همه پروژه‌ها for_current_project: برای پروژه جاری for_all_users: برای همه کاربران for_this_user: برای این کاربر label_nothing_to_preview: محتوایی برای مشاهده وجود ندارد label_inherited_from_parent_project: "ارث‌بری از پروژه پدر" label_inherited_from_group: "ارث‌بری از گروه %{name}" label_trackers_description: توضیحات انواع مسئله label_open_trackers_description: نمایش توضیحات تمامی انواع مسئله label_preferred_body_part_text: متن label_preferred_body_part_html: HTML label_issue_history_properties: تغییرات بخش‌ها label_issue_history_notes: یادداشت label_last_tab_visited: آخرین برگه مشاهده‌شده label_password_char_class_uppercase: حرو٠بزرگ label_password_char_class_lowercase: حرو٠کوچک label_password_char_class_digits: اعداد label_password_char_class_special_chars: نویسه‌های خاص label_display_type: نمایش نتایج بصورت label_display_type_list: جدول label_display_type_board: Ùهرست label_my_bookmarks: منتخب من label_assign_to_me: واگذاری به من label_default_query: جستار Ù¾ÛŒØ´â€ŒÙØ±Ø¶ label_edited: ویرایش شده label_time_by_author: "%{time} توسط %{author}" button_login: ورود button_submit: ثبت button_save: ذخیره button_check_all: انتخاب همه button_uncheck_all: انتخاب هیچ button_collapse_all: بستن همه button_expand_all: گستردن همه button_delete: حذ٠button_create: ساخت button_create_and_continue: ساخت Ùˆ ادامه button_test: آزمایش button_edit: ویرایش button_edit_associated_wikipage: "ویرایش ØµÙØ­Ù‡ دانش‌نامه مرتبط: %{page_title}" button_add: Ø§ÙØ²ÙˆØ¯Ù† button_change: ویرایش button_apply: انجام button_clear: پاک button_lock: Ù‚Ùل‌ کردن button_unlock: باز کردن Ù‚ÙÙ„ button_download: Ø¯Ø±ÛŒØ§ÙØª button_list: Ùهرست button_view: مشاهده button_move: جابجایی button_move_and_follow: جابجایی Ùˆ ادامه button_back: عقب button_cancel: لغو button_activate: ÙØ¹Ø§Ù„‌سازی button_disable: ØºÛŒØ±ÙØ¹Ø§Ù„ button_sort: مرتب‌سازی button_log_time: ثبت زمان button_rollback: عقب‌گرد به این نسخه button_watch: نظارت button_unwatch: لغو نظارت button_reply: پاسخ button_archive: بایگانی button_unarchive: خروج از بایگانی button_reset: بازنشانی button_rename: نام‌گذاری button_change_password: تغییر گذرواژه button_copy: رونوشت button_copy_and_follow: رونوشت Ùˆ ادامه button_copy_link: Ú©Ù¾ÛŒ پیوند button_annotate: حاشیه‌نگاری button_fetch_changesets: Ø¯Ø±ÛŒØ§ÙØª تثبیت‌ها button_update: به‌روزرسانی button_configure: تنظیمات button_quote: نقل قول button_show: نمایش button_hide: مخÙی‌سازی button_edit_section: ویرایش این بخش button_export: صدور button_delete_my_account: حذ٠حسابم button_close: بستن button_reopen: بازگشایی button_import: وارد کردن button_project_bookmark: Ø§ÙØ²ÙˆØ¯Ù† منتخب button_project_bookmark_delete: حذ٠منتخب button_filter: غربال button_actions: ÙØ¹Ø§Ù„یت‌ها button_add_subtask: Ø§ÙØ²ÙˆØ¯Ù† زیرکار button_save_object: ذخیره %{object_name} button_edit_object: ویرایش %{object_name} button_delete_object: حذ٠%{object_name} button_create_and_follow: ساخت Ùˆ برگشت status_active: ÙØ¹Ø§Ù„ status_registered: ثبت‌نام‌شده status_locked: Ù‚ÙÙ„ project_status_active: ÙØ¹Ø§Ù„ project_status_closed: بسته project_status_archived: بایگانی‌شده project_status_scheduled_for_deletion: برای Ø­Ø°ÙØŒ زمان‌بنده شده است version_status_open: باز version_status_locked: Ù‚ÙÙ„ version_status_closed: بسته field_active: ÙØ¹Ø§Ù„ text_select_mail_notifications: رویدادهایی Ú©Ù‡ برای آن‌ها باید رایانامه ÙØ±Ø³ØªØ§Ø¯Ù‡ شود را انتخاب کنید. text_regexp_info: برای نمونه ^[A-Z0-9]+$ text_project_destroy_confirmation: آیا واقعاً می‌خواهید این پروژه Ùˆ همه داده‌های آن را حذ٠کنید؟ text_projects_bulk_destroy_confirmation: آیا مطمین هستید Ú©Ù‡ می‌خواهید پروژه‌ی انتخاب شده Ùˆ داده‌های مربوطه را حذ٠کنید؟ text_projects_bulk_destroy_head: | شما در آستانه حذ٠دائمی پروژه‌های زیر، شامل زیرپروژه‌های احتمالی Ùˆ هر داده مرتبط هستید. Ù„Ø·ÙØ§Ù‹ اطلاعات زیر را مرور کنید Ùˆ تأیید کنید Ú©Ù‡ این واقعاً همان کاری است Ú©Ù‡ می‌خواهید انجام دهید. این کار غیرقابل بازگشت است. text_projects_bulk_destroy_confirm: برای تایید، Ù„Ø·ÙØ§ در بخش زیر "%{yes}" را وارد کنید. text_subprojects_destroy_warning: "زیرپروژه‌های آن: %{value} هم حذ٠خواهند شد." text_subprojects_bulk_destroy: 'شامل زیرپروژه‌هایش: %{value}' text_project_close_confirmation: آیا مطمئن هستید Ú©Ù‡ می‌خواهید پروژه '%{value}' ببندید تا Ùقط خواندنی باشد؟ text_project_reopen_confirmation: آیا مطمئن هستید Ú©Ù‡ می‌خو‌اهید پروژه '%{value}' را بازگشایی کنید؟ text_project_archive_confirmation: آیا مطمئن هستید Ú©Ù‡ می‌خواهید پروژه '%{value}' را بایگانی کنید؟ text_users_bulk_destroy_head: "شما Ù…ÛŒ خواهید کاربران زیر Ùˆ همه ارجاع‌ها به آن‌ها را حذ٠کنید. این کار قابل بازگشت نیست. در بیش‌تر مواقع، Ù‚ÙÙ„ کردن کاربران به جای حذ٠آن‌ها راه بهتری است." text_users_bulk_destroy_confirm: برای تایید، Ù„Ø·ÙØ§ در بخش زیر "%{yes}" را وارد کنید. text_workflow_edit: یک نقش Ùˆ یک نوع مسئله را برای ویرایش گردش کار انتخاب کنید text_are_you_sure: آیا این کار انجام شود؟ text_journal_changed: "%{label} از «%{old}» به «%{new}» تغییر کرد" text_journal_changed_no_detail: "%{label} به‌روز شد" text_journal_set_to: "%{label} شد «%{value}»" text_journal_deleted: "%{label} حذ٠شد (%{old})" text_journal_added: "%{label} «%{value}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" text_tip_issue_begin_day: روز آغاز مسئله text_tip_issue_end_day: روز پایان مسئله text_tip_issue_begin_end_day: روز آغاز Ùˆ پایان مسئله text_project_identifier_info: 'تنها حرو٠کوچک (a-z)ØŒ ارقام، خط تیره (-) Ùˆ زیرخط (_) مجاز است.
    پس از ذخیره‌سازی، شناسه نمی‌تواند تغییر کند.' text_caracters_maximum: "بیش‌ترین اندازه %{count} است." text_caracters_minimum: "کم‌ترین اندازه %{count} است." text_characters_must_contain: "موارد الزامی: %{character_classes}." text_length_between: "باید میان %{min} Ùˆ %{max} نویسه باشد." text_tracker_no_workflow: هیچ گردش کاری برای این نوع مسئله مشخص نشده است text_role_no_workflow: گردش کاری برای این نقش تعری٠نشده‌است text_status_no_workflow: هیچ نوع مسئله‌ای از این وضعیت در گردش کار Ø§Ø³ØªÙØ§Ø¯Ù‡ نکرده‌است text_unallowed_characters: نویسه‌های ممنوع text_comma_separated: چند مقدار مجاز است (با «,» از هم جدا شوند). text_line_separated: چند مقدار مجاز است (هر مقدار در یک خط). text_issues_ref_in_commit_messages: ارجاع به مسئله‌ها Ùˆ بستن مسئله‌ها در پیام‌های تثبیت text_issue_added: "مسئله %{id} توسط %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." text_issue_updated: "مسئله %{id} توسط %{author} به‌روز شد." text_wiki_destroy_confirmation: آیا واقعاً می‌خواهید دانش‌نامه Ùˆ همه محتوای آن را حذ٠کنید؟ text_issue_category_destroy_question: "برخی مسئله‌ها (%{count}) به این دسته واگذار شده‌اند. می‌خواهید Ú†Ù‡ کنید؟" text_issue_category_destroy_assignments: حذ٠واگذاری به دسته text_issue_category_reassign_to: واگذاری دوباره مسئله‌ها به این دسته text_user_mail_option: "برای پروژه‌های انتخاب‌نشده، تنها رایانامه‌هایی درباره چیزهایی Ú©Ù‡ ناظر یا درگیر آن‌ها هستید Ø¯Ø±ÛŒØ§ÙØª خواهید کرد (مانند مسئله‌هایی Ú©Ù‡ نویسنده یا مسئول آن‌ها هستید)." text_no_configuration_data: "نقش‌ها، انواع مسئله‌ها، وضعیت‌های مسئله Ùˆ گردش کار هنوز تنظیمات نشده‌اند. \nبه سختی پیشنهاد می‌شود Ú©Ù‡ تنظیمات Ù¾ÛŒØ´â€ŒÙØ±Ø¶ را بار کنید. سپس می‌توانید آن را ویرایش کنید." text_load_default_configuration: بارگذاری تنظیمات Ù¾ÛŒØ´â€ŒÙØ±Ø¶ text_status_changed_by_changeset: "در تغییر %{value} به‌روزشده است." text_time_logged_by_changeset: "در تغییر %{value} نوشته شده است." text_issues_destroy_confirmation: 'آیا مطمئن هستید Ú©Ù‡ می‌خواهید مسئله(‌های) انتخاب‌شده را حذ٠کنید؟' text_issues_destroy_descendants_confirmation: این همچنین %{count} زیرکار را حذ٠خواهد کرد. text_time_entries_destroy_confirmation: آیا مطمئنید Ú©Ù‡ می‌خواهید ورودی(های) زمان انتخاب‌شده را حذ٠کنید؟ text_select_project_modules: 'ابزارهایی Ú©Ù‡ باید برای این پروژه ÙØ¹Ø§Ù„ شوند را انتخاب کنید:' text_default_administrator_account_changed: حساب راه‌بری Ù¾ÛŒØ´â€ŒÙØ±Ø¶ تغییر کرده است text_file_repository_writable: پوشه پیوست‌ها نوشتنی است text_plugin_assets_writable: پوشه دارایی‌های Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ نوشتنی است text_all_migrations_have_been_run: همه تغییرات پایگاه داده اعمال شده اند text_minimagick_available: MiniMagick در دست‌رس است (اختیاری) text_convert_available: تبدیل ImageMagick در دست‌رس است (اختیاری) text_gs_available: پشتیبانی ImageMagick PDF موجود است (اختیاری) text_destroy_time_entries_question: "روی مسئله‌هایی Ú©Ù‡ می‌خواهید حذ٠کنید، %{hours} ساعت زمان ثبت شده است. می‌خواهید چه‌کار کنید؟" text_destroy_time_entries: ساعت‌های ثبت شده حذ٠شوند text_assign_time_entries_to_project: ساعت‌های ثبت شده به پروژه واگذار شوند text_reassign_time_entries: 'ساعت‌های ثبت شده به این مسئله واگذار شوند:' text_user_wrote: "%{value} نوشت:" text_user_wrote_in: "%{value} نوشت (%{link}):" text_enumeration_destroy_question: "%{count} مورد از مقدار «%{name}» Ø§Ø³ØªÙØ§Ø¯Ù‡ کرده‌اند." text_enumeration_category_reassign_to: 'به این مقدار تغییر کنند:' text_email_delivery_not_configured: "Ø¯Ø±ÛŒØ§ÙØª رایانامه تنظیمات نشده است Ùˆ آگاه‌سازی‌ها غیر ÙØ¹Ø§Ù„ هستند.\nکارگزار SMTP خود را در config/email.yml تنظیمات کنید Ùˆ برنامه را بازنشانی کنید تا ÙØ¹Ø§Ù„ شوند." text_repository_usernames_mapping: "حساب کاربری پی‌گیری Ú©Ù‡ به هر نام کاربری مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ در پیام‌های تثبیت نگاشته می‌شود را انتخاب کنید.\nکاربرانی Ú©Ù‡ نام کاربری یا رایانامه همسان دارند، خود به خود نگاشت می‌شوند." text_diff_truncated: '... این ØªÙØ§ÙˆØª بریده شده چون بیشتر از بیش‌ترین اندازه نمایش دادنی است.' text_custom_field_possible_values_info: 'یک خط برای هر مقدار' text_wiki_page_destroy_question: "این ØµÙØ­Ù‡ %{descendants} Ø²ÛŒØ±ØµÙØ­Ù‡ دارد.می‌خواهید Ú†Ù‡ کنید؟" text_wiki_page_nullify_children: "Ø²ÛŒØ±ØµÙØ­Ù‡â€ŒÙ‡Ø§ ØµÙØ­Ù‡ ریشه شوند" text_wiki_page_destroy_children: "Ø²ÛŒØ±ØµÙØ­Ù‡â€ŒÙ‡Ø§ Ùˆ Ø²ÛŒØ±ØµÙØ­Ù‡â€ŒÙ‡Ø§ÛŒ آن‌ها حذ٠شوند" text_wiki_page_reassign_children: "Ø²ÛŒØ±ØµÙØ­Ù‡â€ŒÙ‡Ø§ به زیر این ØµÙØ­Ù‡ پدر منتقل شوند" text_own_membership_delete_confirmation: "شما دارید برخی یا همه دست‌رسی‌های خود را برمی‌دارید Ùˆ شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا می‌خواهید این کار را بکنید؟" text_zoom_in: بزرگ‌نمایی text_zoom_out: کوچک‌نمایی text_warn_on_leaving_unsaved: این ØµÙØ­Ù‡ حاوی متنی ذخیره‌نشده است Ú©Ù‡ در صورت خروج شما، از دست خواهد Ø±ÙØª. text_scm_path_encoding_note: "Ù¾ÛŒØ´â€ŒÙØ±Ø¶: UTF-8" text_subversion_repository_note: "مثال‌ها: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: مخزن محلی ساده (مثل ‎/gitrepo, c:\gitrepo) text_mercurial_repository_note: مخزن محلی (مثل ‎/hgrepo, c:\hgrepo) text_scm_command: دستور text_scm_command_version: نسخه text_scm_config: می‌توانید SCM خود را در config/configuration.yml پیکربندی کنید. Ù„Ø·ÙØ§Ù‹ برنامه را بعد از ویرایش آن بازآغاز نمایید. text_scm_command_not_available: دستور SCM در دست‌رس نیست. Ù„Ø·ÙØ§Ù‹ تنظیمات را در ØµÙØ­Ù‡ راه‌بری بررسی نمایید. text_issue_conflict_resolution_overwrite: "تغییرات من را به هر حال اعمال Ú©Ù† (یادداشت‌های قبلی Ø­ÙØ¸ می‌شوند ولی بعضی تغییرات بازنویسی می‌گردند)" text_issue_conflict_resolution_add_notes: "یادداشت‌های من را اضاÙÙ‡ Ú©Ù† Ùˆ بقیه تغییراتم را دور بریز" text_issue_conflict_resolution_cancel: "همه تغییراتم را دور بریز Ùˆ پیوند %{link} را دوباره نمایش بده" text_account_destroy_confirmation: "آیا مطمئن هستید Ú©Ù‡ می‌خواهید پیش بروید?\nحساب شما به طور دائمی حذ٠می‌شود، بدون هر گونه راه ÙØ¹Ø§Ù„‌سازی مجددش." text_session_expiration_settings: "هشدار: تغییر این تنظیمات ممکن است نشست‌های جاری (از جمله همین نشست) را منقضی کند." text_project_closed: این پروژه بسته Ùˆ Ùقط‌خواندنی است. text_turning_multiple_off: "اگر این گزینه را ØºÛŒØ±ÙØ¹Ø§Ù„ کنید، در بخش‌های Ø³ÙØ§Ø±Ø´ÛŒÙ ذخیره‌شده، Ùقط یک مقدار باقی خواهد ماند Ùˆ بقیه موارد حذ٠خواهند شد." text_select_apply_tracker: "انتخاب نوع مسئله" text_avatar_server_config_html: خادم ÙØ¹Ù„ÛŒ آواتار %{url} می‌باشد. شما می‌توانید آن را در config/configuration.yml تغییر دهید. text_no_subject: بدون موضوع text_allowed_queries_to_select: تنها جستارهای عمومی (برای همه کاربران) قابل انتخاب است text_setting_config_change: می‌توانید Ø±ÙØªØ§Ø± را در config/configuration.yml ویرایش کنید. Ù„Ø·ÙØ§ پس از تغییر، برنامه را دوباره اجرا کنید. default_role_manager: مدیر default_role_developer: برنامه‌نویس default_role_reporter: گزارش‌دهنده default_tracker_bug: ایراد default_tracker_feature: قابلیت default_tracker_support: پشتیبانی default_issue_status_new: جدید default_issue_status_in_progress: در حال انجام default_issue_status_resolved: حل‌شده default_issue_status_feedback: بازخورد default_issue_status_closed: بسته default_issue_status_rejected: ردشده default_doc_category_user: سند کاربری default_doc_category_tech: سند ÙÙ†ÛŒ default_priority_low: Ú©Ù… default_priority_normal: معمولی default_priority_high: زیاد default_priority_urgent: Ùوری default_priority_immediate: بی‌درنگ default_activity_design: طراحی default_activity_development: توسعه enumeration_issue_priorities: اولویت‌های مسئله enumeration_doc_categories: دسته‌بندی اسناد enumeration_activities: دسته‌بندی زمان‌ها enumeration_system_activity: تابع Ù¾ÛŒØ´â€ŒÙØ±Ø¶â€ŒÙ‡Ø§ÛŒ سامانه description_filter: غربال description_search: بخش جست‌وجو description_choose_project: پروژه‌ها description_project_scope: حوزه جست‌وجو description_notes: یادداشت‌ها description_message_content: محتوای پیغام‌ها description_query_sort_criteria_attribute: خصوصیت مرتب‌سازی description_query_sort_criteria_direction: جهت مرتب‌سازی description_user_mail_notification: تنظیمات آگاه‌سازی رایانامه‌ای description_available_columns: ستون‌های موجود description_selected_columns: ستون‌های منتخب description_all_columns: همه ستون‌ها description_issue_category_reassign: انتخاب دسته مسئله description_wiki_subpages_reassign: انتخاب ØµÙØ­Ù‡ پدر جدید text_repository_identifier_info: 'تنها حرو٠کوچک (a-z)ØŒ ارقام، خط تیره (-) Ùˆ زیرخط (_) مجاز است Ùˆ باید با یک حر٠کوچک شروع شود.
    پس از ذخیره‌سازی، شناسه نمی‌تواند تغییر کند.' text_login_required_html: زمانی Ú©Ù‡ نیاز به احرازهویت نباشد، پروژه‌های عمومی Ùˆ محتوای آن‌ها در دسترس خواهند بود. شما می‌توانید دسترسی Ø§ÙØ±Ø§Ø¯ ناشناس را ویرایش کنید label_login_required_yes: "بله" label_login_required_no: "خیر، اجازه دسترسی ناشناس به پروژه‌های عمومی داده شود" text_project_is_public_non_member: پروژه‌های عمومی Ùˆ محتوای آنان برای همه کاربران وارد شده قابل دسترسی خواهد بود. text_project_is_public_anonymous: پروژه‌های عمومی Ùˆ محتوای آنان برای همه در دسترس خواهد بود. label_import_time_entries: ورود زمان‌ها label_import_users: وارد کردن Ùهرست کاربران sudo_mode_new_info_html: "Ú†Ù‡ Ø§ØªÙØ§Ù‚ÛŒ Ù…ÛŒâ€ŒØ§ÙØªØ¯ØŸ قبل از انجام هرگونه اقدامات٠راه‌بری باید گذرواژه خود را دوباره وارد کنید، این کار تضمین می‌کند Ú©Ù‡ حساب شما Ù…Ø­Ø§ÙØ¸Øª شود." twofa__totp__name: برنامک احراز هویت twofa__totp__text_pairing_info_html: Ù„Ø·ÙØ§ کد QR را را در یک برنامه TOTP اسکن کنید یا کلید متنی را در آن وارد کنید (به عنوان مثال Google Authenticator ØŒ Authy ØŒ Duo Mobile ) سپس کدی Ú©Ù‡ برنامه در اختیار شما می‌گذارد را در قسمت زیر وارد نمایید تا احراز هویت دو مرحله ای ÙØ¹Ø§Ù„ شود. twofa__totp__label_plain_text_key: کلید متنی twofa__totp__label_activate: ÙØ¹Ø§Ù„‌سازی برنامک احراز هویت twofa_currently_active: 'ÙØ¹Ø§Ù„: %{twofa_scheme_name}' twofa_not_active: ÙØ¹Ø§Ù„ نشده است twofa_label_code: کد twofa_hint_disabled_html: تنظیم %{label} احراز هویت دو عاملی را ØºÛŒØ±ÙØ¹Ø§Ù„ کرده Ùˆ اتصال همه دستگاه‌های تمامی کاربران را قطع می‌کند. twofa_hint_optional_html: تنظیم %{label} به کاربران اجازه می‌دهد احراز هویت دوعاملی را در صورت تمایل ÙØ¹Ø§Ù„ کنند، مگر این‌که توسط یکی از گروه‌های کاربری الزامی شده باشد. twofa_hint_required_html: تنظیم %{label} تمامی کاربران را ملزم می‌کند تا احراز هویت دو عاملی را در اولین ورود بعدی ÙØ¹Ø§Ù„ کنند. twofa_hint_required_administrators_html: تنظیم %{label} شبیه احراز هویت دوعاملی اختیاری عمل می‌کند, اما برای راه‌برها احراز هویت دوعاملی را در اولین ورود بعدی الزامی می‌کند. twofa_label_setup: ÙØ¹Ø§Ù„‌سازی احراز هویت دو عاملی twofa_label_deactivation_confirmation: ØºÛŒØ±ÙØ¹Ø§Ù„‌سازی احراز هویت دو عاملی twofa_notice_select: 'Ù„Ø·ÙØ§Ù‹ طرح دو عاملی را Ú©Ù‡ Ù…ÛŒ خواهید Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید انتخاب کنید:' twofa_warning_require: راه‌بر از شما خواسته است تا احراز هویت دو عاملی را ÙØ¹Ø§Ù„ کنید. twofa_activated: احراز هویت دو عاملی با موÙقیت راه‌اندازی شد. توصیه می‌شود برای حساب کاربری خود کدهای پشتیبان بسازید. twofa_deactivated: احراز هویت دو عاملی ØºÛŒØ±ÙØ¹Ø§Ù„ شد twofa_mail_body_security_notification_paired: احراز هویت دو عاملی با موÙقیت Ùˆ با Ø§Ø³ØªÙØ§Ø¯Ù‡ از %{field} ÙØ¹Ø§Ù„ شد. twofa_mail_body_security_notification_unpaired: احراز هویت دو عاملی برای حساب کاربری شما ØºÛŒØ±ÙØ¹Ø§Ù„ شد twofa_mail_body_backup_codes_generated: کدهای پشتیبان جدید برای احراز هویت دو عاملی ایجاد شد. twofa_mail_body_backup_code_used: از یک نسخه پشتیبان از کدهای احراز هویت دو مرحله‌ای Ø§Ø³ØªÙØ§Ø¯Ù‡ شده است. twofa_invalid_code: کد نامعتبر است یا منقضی شده است twofa_label_enter_otp: Ù„Ø·ÙØ§ کد احراز هویت دو عاملی خود را وارد کنید twofa_too_many_tries: تلاش‌های بیش از حد twofa_resend_code: ارسال مجدد کد twofa_code_sent: یک کد شناسایی برای شما ارسال شد. twofa_generate_backup_codes: تولید کدهای پشتیبان twofa_text_generate_backup_codes_confirmation: با این کار همه کدهای پشتیبان موجود باطل شده Ùˆ کدهای جدیدی ایجاد Ù…ÛŒ شود. مایلید ادامه دهید؟ twofa_notice_backup_codes_generated: کدهای پشتیبانی شما ایجاد شد twofa_warning_backup_codes_generated_invalidated: کدهای جدید پشتیبانی ایجاد شد؛ کدهای موجود قبل از %{time} نامعتبرند. twofa_label_backup_codes: کدهای پشتیبان احراز هویت دو عاملی twofa_text_backup_codes_hint: اگر به عامل دوم دسترسی ندارید، از این کدها به جای گذرواژه ÛŒÚ©â€ŒØ¨Ø§Ø±Ù…ØµØ±Ù Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. هر کد Ùقط یک‌بار قابل Ø§Ø³ØªÙØ§Ø¯Ù‡ است. توصیه Ù…ÛŒ شود آنها را چاپ کرده Ùˆ در مکانی امن ذخیره کنید. twofa_text_backup_codes_created_at: کدهای پشتیبان ایجاد شد. %{datetime}. twofa_backup_codes_already_shown: کدهای پشتیبان را نمی توان دوباره نشان داد، Ù„Ø·ÙØ§Ù‹ در صورت نیاز کدهای پشتیبان جدید ایجاد کنید . twofa_text_group_required: "این تنظیم تنها زمانی مؤثر است Ú©Ù‡ احراز هویت دوعاملی روی «اختیاری» تنظیم شده باشد. در حال حاضر، احراز هویت دوعاملی برای همه کاربران الزامی است." twofa_text_group_disabled: "این تنظیم تنها زمانی مؤثر است Ú©Ù‡ احراز هویت دوعاملی روی «اختیاری» تنظیم شده باشد. در حال حاضر، احراز هویت دوعاملی ØºÛŒØ±ÙØ¹Ø§Ù„ است." text_user_destroy_confirmation: مطمئنید Ú©Ù‡ Ù…ÛŒ خواهید این کاربر Ùˆ همه ارجاع‌های مربوط به او را حذ٠کنید؟ این کار قابل بازگشت نیست. غالبا، Ù‚ÙÙ„ کردن کاربر به جای Ø­Ø°ÙØŒ راه حل به‌تری است. برای تأیید، Ù„Ø·ÙØ§Ù‹ شناسه ورود کاربر (%{login}) را در زیر وارد کنید. text_project_destroy_enter_identifier: برای تایید، Ù„Ø·ÙØ§ شناسه پروژه (%{identifier}) را وارد کنید. permission_select_project_publicity: تنظیم عمومی یا خصوصی بودن پروژه label_auto_watch_on_issue_created: مسئله‌هایی Ú©Ù‡ من ساخته‌ام field_any_searchable: هر متن قابل جستجویی label_contains_any_of: شامل یکی از button_apply_issues_filter: اعمال غربال مسئله‌ها label_view_previous_annotation: مشاهده حاشیه‌نویسی قبل از این تغییر label_has_been: بوده است label_has_never_been: نبوده است label_changed_from: تغییر ÛŒØ§ÙØªÙ‡ از label_issue_statuses_description: توضیحات وضعیت‌های مسئله label_open_issue_statuses_description: مشاهده توضیحات همه وضعیت‌های مسئله‌ها text_select_apply_issue_status: وضعیت مسئله را انتخاب کنید field_name_or_email_or_login: نام، رایانامه یا شناسه کاربری text_default_active_job_queue_changed: آداپتور Ù¾ÛŒØ´â€ŒÙØ±Ø¶ ص٠که به Ø´Ú©Ù„ مناسبی کار می‌کند تنها برای توسعه/آزمون تغییر کرد label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/fi.yml000066400000000000000000002147641500112024600171620ustar00rootroot00000000000000# Finnish translations for Ruby on Rails # by Marko Seppä (marko.seppa@gmail.com) fi: direction: ltr date: formats: default: "%e. %Bta %Y" long: "%A%e. %Bta %Y" short: "%e.%m.%Y" day_names: [Sunnuntai, Maanantai, Tiistai, Keskiviikko, Torstai, Perjantai, Lauantai] abbr_day_names: [Su, Ma, Ti, Ke, To, Pe, La] month_names: [~, Tammikuu, Helmikuu, Maaliskuu, Huhtikuu, Toukokuu, Kesäkuu, Heinäkuu, Elokuu, Syyskuu, Lokakuu, Marraskuu, Joulukuu] abbr_month_names: [~, Tammi, Helmi, Maalis, Huhti, Touko, Kesä, Heinä, Elo, Syys, Loka, Marras, Joulu] order: - :day - :month - :year time: formats: default: "%a, %e. %b %Y %H:%M:%S %z" time: "%H:%M" short: "%e. %b %H:%M" long: "%B %d, %Y %H:%M" am: "aamupäivä" pm: "iltapäivä" support: array: words_connector: ", " two_words_connector: " ja " last_word_connector: " ja " number: format: separator: "," delimiter: " " precision: 3 currency: format: format: "%n %u" unit: "€" separator: "," delimiter: "." precision: 2 percentage: format: # separator: delimiter: "" # precision: precision: format: # separator: delimiter: "" # precision: human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Tavua" other: "Tavua" kb: "KB" mb: "MB" gb: "GB" tb: "TB" datetime: distance_in_words: half_a_minute: "puoli minuuttia" less_than_x_seconds: one: "aiemmin kuin sekunti" other: "aiemmin kuin %{count} sekuntia" x_seconds: one: "sekunti" other: "%{count} sekuntia" less_than_x_minutes: one: "aiemmin kuin minuutti" other: "aiemmin kuin %{count} minuuttia" x_minutes: one: "minuutti" other: "%{count} minuuttia" about_x_hours: one: "noin tunti" other: "noin %{count} tuntia" x_hours: one: "1 tunti" other: "%{count} tuntia" x_days: one: "päivä" other: "%{count} päivää" about_x_months: one: "noin kuukausi" other: "noin %{count} kuukautta" x_months: one: "kuukausi" other: "%{count} kuukautta" about_x_years: one: "vuosi" other: "noin %{count} vuotta" over_x_years: one: "yli vuosi" other: "yli %{count} vuotta" almost_x_years: one: "almost 1 year" other: "almost %{count} years" prompts: year: "Vuosi" month: "Kuukausi" day: "Päivä" hour: "Tunti" minute: "Minuutti" second: "Sekuntia" activerecord: errors: template: header: one: "1 virhe esti tämän %{model} mallinteen tallentamisen" other: "%{count} virhettä esti tämän %{model} mallinteen tallentamisen" body: "Seuraavat kentät aiheuttivat ongelmia:" messages: inclusion: "ei löydy listauksesta" exclusion: "on jo varattu" invalid: "on kelvoton" confirmation: "ei vastaa varmennusta" accepted: "täytyy olla hyväksytty" empty: "ei voi olla tyhjä" blank: "ei voi olla sisällötön" too_long: "on liian pitkä (maksimi on %{count} merkkiä)" too_short: "on liian lyhyt (minimi on %{count} merkkiä)" wrong_length: "on väärän pituinen (täytyy olla täsmälleen %{count} merkkiä)" taken: "on jo käytössä" not_a_number: "ei ole numero" greater_than: "täytyy olla suurempi kuin %{count}" greater_than_or_equal_to: "täytyy olla suurempi tai yhtä suuri kuin%{count}" equal_to: "täytyy olla yhtä suuri kuin %{count}" less_than: "täytyy olla pienempi kuin %{count}" less_than_or_equal_to: "täytyy olla pienempi tai yhtä suuri kuin %{count}" odd: "täytyy olla pariton" even: "täytyy olla parillinen" greater_than_start_date: "tulee olla aloituspäivän jälkeinen" not_same_project: "ei kuulu samaan projektiin" circular_dependency: "Tämä suhde loisi kehän." cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Valitse, ole hyvä general_text_No: 'Ei' general_text_Yes: 'Kyllä' general_text_no: 'ei' general_text_yes: 'kyllä' general_lang_name: 'Finnish (Suomi)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-15 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Tilin päivitys onnistui. notice_account_invalid_credentials: Virheellinen käyttäjätunnus tai salasana notice_account_password_updated: Salasanan päivitys onnistui. notice_account_wrong_password: Väärä salasana notice_account_register_done: Tilin luonti onnistui. Aktivoidaksesi tilin seuraa linkkiä joka välitettiin sähköpostiisi. notice_can_t_change_password: Tämä tili käyttää ulkoista tunnistautumisjärjestelmää. Salasanaa ei voi muuttaa. notice_account_lost_email_sent: Sinulle on lähetetty sähköposti jossa on ohje kuinka vaihdat salasanasi. notice_account_activated: Tilisi on nyt aktivoitu, voit kirjautua sisälle. notice_successful_create: Luonti onnistui. notice_successful_update: Päivitys onnistui. notice_successful_delete: Poisto onnistui. notice_successful_connection: Yhteyden muodostus onnistui. notice_file_not_found: Hakemaasi sivua ei löytynyt tai se on poistettu. notice_locking_conflict: Toinen käyttäjä on päivittänyt tiedot. notice_not_authorized: Sinulla ei ole oikeutta näyttää tätä sivua. notice_email_sent: "Sähköposti on lähetty osoitteeseen %{value}" notice_email_error: "Sähköpostilähetyksessä tapahtui virhe (%{value})" notice_feeds_access_key_reseted: Atom salasana on nollaantunut. notice_failed_to_save_issues: "%{count} Tapahtum(an/ien) tallennus epäonnistui %{total} valitut: %{ids}." notice_account_pending: "Tilisi on luotu ja odottaa ylläpitäjän hyväksyntää." notice_default_data_loaded: Vakioasetusten palautus onnistui. error_can_t_load_default_data: "Vakioasetuksia ei voitu ladata: %{value}" error_scm_not_found: "Syötettä ja/tai versiota ei löydy tietovarastosta." error_scm_command_failed: "Tietovarastoon pääsyssä tapahtui virhe: %{value}" mail_subject_lost_password: "Sinun %{value} salasanasi" mail_body_lost_password: 'Vaihtaaksesi salasanasi, napsauta seuraavaa linkkiä:' mail_subject_register: "%{value} tilin aktivointi" mail_body_register: 'Aktivoidaksesi tilisi, napsauta seuraavaa linkkiä:' mail_body_account_information_external: "Voit nyt käyttää %{value} tiliäsi kirjautuaksesi järjestelmään." mail_body_account_information: Sinun tilin tiedot mail_subject_account_activation_request: "%{value} tilin aktivointi pyyntö" mail_body_account_activation_request: "Uusi käyttäjä (%{value}) on rekisteröitynyt. Hänen tili odottaa hyväksyntääsi:" field_name: Nimi field_description: Kuvaus field_summary: Yhteenveto field_is_required: Vaaditaan field_firstname: Etunimi field_lastname: Sukunimi field_mail: Sähköposti field_filename: Tiedosto field_filesize: Koko field_downloads: Latausta field_author: Tekijä field_created_on: Luotu field_updated_on: Päivitetty field_field_format: Muoto field_is_for_all: Kaikille projekteille field_possible_values: Mahdolliset arvot field_regexp: Säännöllinen lauseke (reg exp) field_min_length: Minimipituus field_max_length: Maksimipituus field_value: Arvo field_category: Luokka field_title: Otsikko field_project: Projekti field_issue: Tapahtuma field_status: Tila field_notes: Muistiinpanot field_is_closed: Tapahtuma suljettu field_is_default: Vakioarvo field_tracker: Tapahtuma field_subject: Aihe field_due_date: Määräaika field_assigned_to: Nimetty field_priority: Prioriteetti field_fixed_version: Kohdeversio field_user: Käyttäjä field_role: Rooli field_homepage: Kotisivu field_is_public: Julkinen field_parent: Aliprojekti field_is_in_roadmap: Tapahtumat näytetään roadmap näkymässä field_login: Kirjautuminen field_mail_notification: Sähköposti muistutukset field_admin: Ylläpitäjä field_last_login_on: Viimeinen yhteys field_language: Kieli field_effective_date: Päivä field_password: Salasana field_new_password: Uusi salasana field_password_confirmation: Vahvistus field_version: Versio field_type: Tyyppi field_host: Verkko-osoite field_port: Portti field_account: Tili field_base_dn: Base DN field_attr_login: Kirjautumismääre field_attr_firstname: Etuminenmääre field_attr_lastname: Sukunimenmääre field_attr_mail: Sähköpostinmääre field_onthefly: Automaattinen käyttäjien luonti field_start_date: Alku field_done_ratio: "% Tehty" field_auth_source: Varmennusmuoto field_hide_mail: Piiloita sähköpostiosoitteeni field_comments: Kommentti field_url: URL field_start_page: Aloitussivu field_subproject: Aliprojekti field_hours: Tuntia field_activity: Historia field_spent_on: Päivä field_identifier: Tunniste field_is_filter: Käytetään suodattimena field_issue_to: Liittyvä tapahtuma field_delay: Viive field_assignable: Tapahtumia voidaan nimetä tälle roolille field_redirect_existing_links: Uudelleenohjaa olemassa olevat linkit field_estimated_hours: Arvioitu aika field_column_names: Saraketta field_time_zone: Aikavyöhyke field_searchable: Haettava field_default_value: Vakioarvo setting_app_title: Ohjelman otsikko setting_welcome_text: Tervehdysteksti setting_default_language: Vakiokieli setting_login_required: Pakollinen kirjautuminen setting_self_registration: Itserekisteröinti setting_attachment_max_size: Liitteen maksimikoko setting_issues_export_limit: Tapahtumien vientirajoite setting_mail_from: Lähettäjän sähköpostiosoite setting_host_name: Verkko-osoite setting_text_formatting: Tekstin muotoilu setting_wiki_compression: Wiki historian pakkaus setting_feeds_limit: Syötteen sisällön raja setting_autofetch_changesets: Automaattisten muutosjoukkojen haku setting_sys_api_enabled: Salli WS tietovaraston hallintaan setting_commit_ref_keywords: Viittaavat hakusanat setting_commit_fix_keywords: Korjaavat hakusanat setting_autologin: Automaatinen kirjautuminen setting_date_format: Päivän muoto setting_time_format: Ajan muoto setting_cross_project_issue_relations: Salli projektien väliset tapahtuminen suhteet setting_issue_list_default_columns: Vakiosarakkeiden näyttö tapahtumalistauksessa setting_emails_footer: Sähköpostin alatunniste setting_protocol: Protokolla setting_per_page_options: Sivun objektien määrän asetukset label_user: Käyttäjä label_user_plural: Käyttäjät label_user_new: Uusi käyttäjä label_project: Projekti label_project_new: Uusi projekti label_project_plural: Projektit label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: Kaikki projektit label_project_latest: Uusimmat projektit label_issue: Tapahtuma label_issue_new: Uusi tapahtuma label_issue_plural: Tapahtumat label_issue_view_all: Näytä kaikki tapahtumat label_issues_by: "Tapahtumat %{value}" label_document: Dokumentti label_document_new: Uusi dokumentti label_document_plural: Dokumentit label_role: Rooli label_role_plural: Roolit label_role_new: Uusi rooli label_role_and_permissions: Roolit ja oikeudet label_member: Jäsen label_member_new: Uusi jäsen label_member_plural: Jäsenet label_tracker: Tapahtuma label_tracker_plural: Tapahtumat label_tracker_new: Uusi tapahtuma label_workflow: Työnkulku label_issue_status: Tapahtuman tila label_issue_status_plural: Tapahtumien tilat label_issue_status_new: Uusi tila label_issue_category: Tapahtumaluokka label_issue_category_plural: Tapahtumaluokat label_issue_category_new: Uusi luokka label_custom_field: Räätälöity kenttä label_custom_field_plural: Räätälöidyt kentät label_custom_field_new: Uusi räätälöity kenttä label_enumerations: Lista label_enumeration_new: Uusi arvo label_information: Tieto label_information_plural: Tiedot label_register: Rekisteröidy label_password_lost: Hukattu salasana label_home: Koti label_my_page: Omasivu label_my_account: Oma tili label_my_projects: Omat projektit label_administration: Ylläpito label_login: Kirjaudu sisään label_logout: Kirjaudu ulos label_help: Ohjeet label_reported_issues: Raportoidut tapahtumat label_assigned_to_me_issues: Minulle nimetyt tapahtumat label_registered_on: Rekisteröity label_activity: Historia label_new: Uusi label_logged_as: Kirjauduttu nimellä label_environment: Ympäristö label_authentication: Varmennus label_auth_source: Varmennustapa label_auth_source_new: Uusi varmennustapa label_auth_source_plural: Varmennustavat label_subproject_plural: Aliprojektit label_min_max_length: Min - Max pituudet label_list: Lista label_date: Päivä label_integer: Kokonaisluku label_float: Liukuluku label_boolean: Totuusarvomuuttuja label_string: Merkkijono label_text: Pitkä merkkijono label_attribute: Määre label_attribute_plural: Määreet label_no_data: Ei tietoa näytettäväksi label_change_status: Muutos tila label_history: Historia label_attachment: Tiedosto label_attachment_new: Uusi tiedosto label_attachment_delete: Poista tiedosto label_attachment_plural: Tiedostot label_report: Raportti label_report_plural: Raportit label_news: Uutinen label_news_new: Lisää uutinen label_news_plural: Uutiset label_news_latest: Viimeisimmät uutiset label_news_view_all: Näytä kaikki uutiset label_settings: Asetukset label_overview: Yleiskatsaus label_version: Versio label_version_new: Uusi versio label_version_plural: Versiot label_confirmation: Vahvistus label_export_to: Vie label_read: Lukee... label_public_projects: Julkiset projektit label_open_issues: avoin, yhteensä label_open_issues_plural: avointa, yhteensä label_closed_issues: suljettu label_closed_issues_plural: suljettua label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_total: Yhteensä label_permissions: Oikeudet label_current_status: Nykyinen tila label_new_statuses_allowed: Uudet tilat sallittu label_all: kaikki label_none: ei mitään label_nobody: ei kukaan label_next: Seuraava label_previous: Edellinen label_used_by: Käytetty label_details: Yksityiskohdat label_add_note: Lisää muistiinpano label_calendar: Kalenteri label_months_from: kuukauden päässä label_gantt: Gantt label_internal: Sisäinen label_last_changes: "viimeiset %{count} muutokset" label_change_view_all: Näytä kaikki muutokset label_comment: Kommentti label_comment_plural: Kommentit label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_comment_add: Lisää kommentti label_comment_added: Kommentti lisätty label_comment_delete: Poista kommentti label_query: Räätälöity haku label_query_plural: Räätälöidyt haut label_query_new: Uusi haku label_filter_add: Lisää suodatin label_filter_plural: Suodattimet label_equals: sama kuin label_not_equals: eri kuin label_in_less_than: pienempi kuin label_in_more_than: suurempi kuin label_today: tänään label_this_week: tällä viikolla label_less_than_ago: vähemmän kuin päivää sitten label_more_than_ago: enemän kuin päivää sitten label_ago: päiviä sitten label_contains: sisältää label_not_contains: ei sisällä label_day_plural: päivää label_repository: Tietovarasto label_repository_plural: Tietovarastot label_revision: Versio label_revision_plural: Versiot label_added: lisätty label_modified: muokattu label_deleted: poistettu label_latest_revision: Viimeisin versio label_latest_revision_plural: Viimeisimmät versiot label_view_revisions: Näytä versiot label_max_size: Suurin koko label_roadmap: Roadmap label_roadmap_due_in: "Määräaika %{value}" label_roadmap_overdue: "%{value} myöhässä" label_roadmap_no_issues: Ei tapahtumia tälle versiolle label_search: Haku label_result_plural: Tulokset label_all_words: kaikki sanat label_wiki: Wiki label_wiki_edit: Wiki muokkaus label_wiki_edit_plural: Wiki muokkaukset label_wiki_page: Wiki sivu label_wiki_page_plural: Wiki sivut label_index_by_title: Hakemisto otsikoittain label_index_by_date: Hakemisto päivittäin label_current_version: Nykyinen versio label_preview: Esikatselu label_feed_plural: Syötteet label_changes_details: Kaikkien muutosten yksityiskohdat label_issue_tracking: Tapahtumien seuranta label_spent_time: Käytetty aika label_f_hour: "%{value} tunti" label_f_hour_plural: "%{value} tuntia" label_time_tracking: Ajan seuranta label_change_plural: Muutokset label_statistics: Tilastot label_commits_per_month: Tapahtumaa per kuukausi label_commits_per_author: Tapahtumaa per tekijä label_view_diff: Näytä erot label_diff_inline: sisällössä label_diff_side_by_side: vierekkäin label_options: Valinnat label_copy_workflow_from: Kopioi työnkulku label_permissions_report: Oikeuksien raportti label_watched_issues: Seurattavat tapahtumat label_related_issues: Liittyvät tapahtumat label_applied_status: Lisätty tila label_loading: Lataa... label_relation_new: Uusi suhde label_relation_delete: Poista suhde label_relates_to: liittyy label_duplicates: kopio label_blocks: estää label_blocked_by: estetty label_precedes: edeltää label_follows: seuraa label_stay_logged_in: Pysy kirjautuneena label_disabled: poistettu käytöstä label_show_completed_versions: Näytä valmiit versiot label_me: minä label_board: Keskustelupalsta label_board_new: Uusi keskustelupalsta label_board_plural: Keskustelupalstat label_topic_plural: Aiheet label_message_plural: Viestit label_message_last: Viimeisin viesti label_message_new: Uusi viesti label_reply_plural: Vastaukset label_send_information: Lähetä tilin tiedot käyttäjälle label_year: Vuosi label_month: Kuukausi label_week: Viikko label_language_based: Pohjautuen käyttäjän kieleen label_sort_by: "Lajittele %{value}" label_send_test_email: Lähetä testi sähköposti label_feeds_access_key_created_on: "Atom salasana luotiin %{value} sitten" label_module_plural: Moduulit label_added_time_by: "Lisännyt %{author} %{age} sitten" label_updated_time: "Päivitetty %{value} sitten" label_jump_to_a_project: Siirry projektiin... label_file_plural: Tiedostot label_changeset_plural: Muutosryhmät label_default_columns: Vakiosarakkeet label_no_change_option: (Ei muutosta) label_bulk_edit_selected_issues: Perusmuotoile valitut tapahtumat label_theme: Teema label_default: Vakio label_search_titles_only: Hae vain otsikot label_user_mail_option_all: "Kaikista tapahtumista kaikissa projekteistani" label_user_mail_option_selected: "Kaikista tapahtumista vain valitsemistani projekteista..." label_user_mail_no_self_notified: "En halua muistutusta muutoksista joita itse teen" label_registration_activation_by_email: tilin aktivointi sähköpostitse label_registration_manual_activation: tilin aktivointi käsin label_registration_automatic_activation: tilin aktivointi automaattisesti label_display_per_page: "Per sivu: %{value}" label_age: Ikä label_change_properties: Vaihda asetuksia label_general: Yleinen button_login: Kirjaudu button_submit: Lähetä button_save: Tallenna button_check_all: Valitse kaikki button_uncheck_all: Poista valinnat button_delete: Poista button_create: Luo button_test: Testaa button_edit: Muokkaa button_add: Lisää button_change: Muuta button_apply: Ota käyttöön button_clear: Tyhjää button_lock: Lukitse button_unlock: Vapauta button_download: Lataa button_list: Lista button_view: Näytä button_move: Siirrä button_back: Takaisin button_cancel: Peruuta button_activate: Aktivoi button_sort: Järjestä button_log_time: Seuraa aikaa button_rollback: Siirry takaisin tähän versioon button_watch: Seuraa button_unwatch: Älä seuraa button_reply: Vastaa button_archive: Arkistoi button_unarchive: Palauta button_reset: Nollaus button_rename: Uudelleen nimeä button_change_password: Vaihda salasana button_copy: Kopioi button_annotate: Lisää selitys button_update: Päivitä status_active: aktiivinen status_registered: rekisteröity status_locked: lukittu text_select_mail_notifications: Valitse tapahtumat joista tulisi lähettää sähköpostimuistutus. text_regexp_info: esim. ^[A-Z0-9]+$ text_project_destroy_confirmation: Oletko varma että haluat poistaa tämän projektin ja kaikki siihen kuuluvat tiedot? text_workflow_edit: Valitse rooli ja tapahtuma muokataksesi työnkulkua text_are_you_sure: Oletko varma? text_tip_issue_begin_day: tehtävä joka alkaa tänä päivänä text_tip_issue_end_day: tehtävä joka loppuu tänä päivänä text_tip_issue_begin_end_day: tehtävä joka alkaa ja loppuu tänä päivänä text_caracters_maximum: "%{count} merkkiä enintään." text_caracters_minimum: "Täytyy olla vähintään %{count} merkkiä pitkä." text_length_between: "Pituus välillä %{min} ja %{max} merkkiä." text_tracker_no_workflow: Työnkulkua ei määritelty tälle tapahtumalle text_unallowed_characters: Kiellettyjä merkkejä text_comma_separated: Useat arvot sallittu (pilkku eroteltuna). text_issues_ref_in_commit_messages: Liitän ja korjaan ongelmia syötetyssä viestissä text_issue_added: "Issue %{id} has been reported by %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}." text_wiki_destroy_confirmation: Oletko varma että haluat poistaa tämän wiki:n ja kaikki sen sisältämän tiedon? text_issue_category_destroy_question: "Jotkut tapahtumat (%{count}) ovat nimetty tälle luokalle. Mitä haluat tehdä?" text_issue_category_destroy_assignments: Poista luokan tehtävät text_issue_category_reassign_to: Vaihda tapahtuma tähän luokkaan text_user_mail_option: "Valitsemattomille projekteille, saat vain muistutuksen asioista joita seuraat tai olet mukana (esim. tapahtumat joissa olet tekijä tai nimettynä)." text_no_configuration_data: "Rooleja, tapahtumien tiloja ja työnkulkua ei vielä olla määritelty.\nOn erittäin suotavaa ladata vakioasetukset. Voit muuttaa sitä latauksen jälkeen." text_load_default_configuration: Lataa vakioasetukset default_role_manager: Päälikkö default_role_developer: Kehittäjä default_role_reporter: Tarkastelija default_tracker_bug: Ohjelmointivirhe default_tracker_feature: Ominaisuus default_tracker_support: Tuki default_issue_status_new: Uusi default_issue_status_in_progress: In Progress default_issue_status_resolved: Hyväksytty default_issue_status_feedback: Palaute default_issue_status_closed: Suljettu default_issue_status_rejected: Hylätty default_doc_category_user: Käyttäjä dokumentaatio default_doc_category_tech: Tekninen dokumentaatio default_priority_low: Matala default_priority_normal: Normaali default_priority_high: Korkea default_priority_urgent: Kiireellinen default_priority_immediate: Valitön default_activity_design: Suunnittelu default_activity_development: Kehitys enumeration_issue_priorities: Tapahtuman tärkeysjärjestys enumeration_doc_categories: Dokumentin luokat enumeration_activities: Historia (ajan seuranta) label_associated_revisions: Liittyvät versiot setting_user_format: Käyttäjien esitysmuoto text_status_changed_by_changeset: "Päivitetty muutosversioon %{value}." text_issues_destroy_confirmation: 'Oletko varma että haluat poistaa valitut tapahtumat ?' label_issue_added: Tapahtuma lisätty label_issue_updated: Tapahtuma päivitetty label_document_added: Dokumentti lisätty label_message_posted: Viesti lisätty label_file_added: Tiedosto lisätty label_scm: SCM text_select_project_modules: 'Valitse modulit jotka haluat käyttöön tähän projektiin:' label_news_added: Uutinen lisätty project_module_boards: Keskustelupalsta project_module_issue_tracking: Tapahtuman seuranta project_module_wiki: Wiki project_module_files: Tiedostot project_module_documents: Dokumentit project_module_repository: Tietovarasto project_module_news: Uutiset project_module_time_tracking: Ajan seuranta text_file_repository_writable: Kirjoitettava tiedostovarasto text_default_administrator_account_changed: Vakio hallinoijan tunnus muutettu text_minimagick_available: MiniMagick saatavilla (valinnainen) button_configure: Asetukset label_plugins: Lisäosat label_ldap_authentication: LDAP tunnistautuminen label_downloads_abbr: D/L label_add_another_file: Lisää uusi tiedosto label_this_month: tässä kuussa text_destroy_time_entries_question: "%{hours} tuntia on raportoitu tapahtumasta jonka aiot poistaa. Mitä haluat tehdä ?" label_last_n_days: "viimeiset %{count} päivää" error_issue_not_found_in_project: 'Tapahtumaa ei löytynyt tai se ei kuulu tähän projektiin' label_this_year: tänä vuonna text_assign_time_entries_to_project: Määritä tunnit projektille label_date_range: Aikaväli label_last_week: viime viikolla label_yesterday: eilen label_optional_description: Lisäkuvaus label_last_month: viime kuussa text_destroy_time_entries: Poista raportoidut tunnit text_reassign_time_entries: 'Siirrä raportoidut tunnit tälle tapahtumalle:' label_chronological_order: Aikajärjestyksessä label_date_to: '' setting_activity_days_default: Päivien esittäminen projektien historiassa label_date_from: '' label_in: '' setting_display_subprojects_issues: Näytä aliprojektien tapahtumat pääprojektissa oletusarvoisesti field_comments_sorting: Näytä kommentit label_reverse_chronological_order: Käänteisessä aikajärjestyksessä label_preferences: Asetukset setting_default_projects_public: Uudet projektit ovat oletuksena julkisia error_scm_annotate: "Merkintää ei ole tai siihen ei voi lisätä selityksiä." text_subprojects_destroy_warning: "Tämän aliprojekti(t): %{value} tullaan myös poistamaan." label_and_its_subprojects: "%{value} ja aliprojektit" mail_body_reminder: "%{count} sinulle nimettyä tapahtuma(a) erääntyy %{days} päivä sisään:" mail_subject_reminder: "%{count} tapahtuma(a) erääntyy %{days} lähipäivinä" text_user_wrote: "%{value} kirjoitti:" text_user_wrote_in: "%{value} kirjoitti (%{link}):" label_duplicated_by: kopioinut setting_enabled_scm: Versionhallinta käytettävissä text_enumeration_category_reassign_to: 'Siirrä täksi arvoksi:' text_enumeration_destroy_question: "%{count} kohdetta on sijoitettu tälle arvolle." label_incoming_emails: Saapuvat sähköpostiviestit label_generate_key: Luo avain setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille setting_mail_handler_api_key: API avain text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." field_parent_title: Aloitussivu label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa setting_sequential_project_identifiers: Luo peräkkäiset projektien tunnisteet notice_unable_delete_version: Version poisto epäonnistui label_renamed: uudelleennimetty label_copied: kopioitu setting_plain_text_mail: vain muotoilematonta tekstiä (ei HTML) permission_view_files: Näytä tiedostot permission_edit_issues: Muokkaa tapahtumia permission_edit_own_time_entries: Muokka omia aikamerkintöjä permission_manage_public_queries: Hallinnoi julkisia hakuja permission_add_issues: Lisää tapahtumia permission_log_time: Lokita käytettyä aikaa permission_view_changesets: Näytä muutosryhmät permission_view_time_entries: Näytä käytetty aika permission_manage_versions: Hallinnoi versioita permission_manage_wiki: Hallinnoi wikiä permission_manage_categories: Hallinnoi tapahtumien luokkia permission_protect_wiki_pages: Suojaa wiki sivut permission_comment_news: Kommentoi uutisia permission_delete_messages: Poista viestit permission_select_project_modules: Valitse projektin modulit permission_edit_wiki_pages: Muokkaa wiki sivuja permission_add_issue_watchers: Lisää seuraajia permission_view_gantt: Näytä gantt kaavio permission_manage_issue_relations: Hallinoi tapahtuman suhteita permission_delete_wiki_pages: Poista wiki sivuja permission_manage_boards: Hallinnoi keskustelupalstaa permission_delete_wiki_pages_attachments: Poista liitteitä permission_view_wiki_edits: Näytä wiki historia permission_add_messages: Jätä viesti permission_view_messages: Näytä viestejä permission_manage_files: Hallinnoi tiedostoja permission_edit_issue_notes: Muokkaa muistiinpanoja permission_manage_news: Hallinnoi uutisia permission_view_calendar: Näytä kalenteri permission_manage_members: Hallinnoi jäseniä permission_edit_messages: Muokkaa viestejä permission_delete_issues: Poista tapahtumia permission_view_issue_watchers: Näytä seuraaja lista permission_manage_repository: Hallinnoi tietovarastoa permission_commit_access: Tee pääsyoikeus permission_browse_repository: Selaa tietovarastoa permission_view_documents: Näytä dokumentit permission_edit_project: Muokkaa projektia permission_add_issue_notes: Lisää muistiinpanoja permission_save_queries: Tallenna hakuja permission_view_wiki_pages: Näytä wiki permission_rename_wiki_pages: Uudelleennimeä wiki sivuja permission_edit_time_entries: Muokkaa aika lokeja permission_edit_own_issue_notes: Muokkaa omia muistiinpanoja setting_gravatar_enabled: Käytä Gravatar käyttäjä ikoneita label_example: Esimerkki text_repository_usernames_mapping: "Valitse päivittääksesi Redmine käyttäjä jokaiseen käyttäjään joka löytyy tietovaraston lokista.\nKäyttäjät joilla on sama Redmine ja tietovaraston käyttäjänimi tai sähköpostiosoite, yhdistetään automaattisesti." permission_edit_own_messages: Muokkaa omia viestejä permission_delete_own_messages: Poista omia viestejä label_user_activity: "Käyttäjän %{value} historia" label_updated_time_by: "Updated by %{author} %{age} ago" text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' setting_diff_max_lines_displayed: Max number of diff lines displayed text_plugin_assets_writable: Plugin assets directory writable warning_attachments_not_saved: "%{count} file(s) could not be saved." button_create_and_continue: Create and add another text_custom_field_possible_values_info: 'One line for each value' label_display: Display field_editable: Editable setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_file_max_size_displayed: Max size of text files displayed inline field_watcher: Watcher field_content: Content label_descending: Descending label_sort: Sort label_ascending: Ascending label_date_from_to: From %{start} to %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do? text_wiki_page_reassign_children: Reassign child pages to this parent page text_wiki_page_nullify_children: Keep child pages as root pages text_wiki_page_destroy_children: Delete child pages and all their descendants setting_password_min_length: Minimum password length field_group_by: Group results by mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" label_wiki_content_added: Wiki page added mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}. label_wiki_content_updated: Wiki page updated mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}. permission_add_project: Create project setting_new_project_user_role_id: Role given to a non-admin user who creates a project label_view_all_revisions: View all revisions label_tag: Tag label_branch: Branch error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers version_status_closed: closed version_status_locked: locked version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous button_move_and_follow: Move and follow setting_default_projects_modules: Default enabled modules for new projects setting_gravatar_default: Default Gravatar image field_sharing: Sharing label_version_sharing_hierarchy: With project hierarchy label_version_sharing_system: With all projects label_version_sharing_descendants: With subprojects label_version_sharing_tree: With project tree label_version_sharing_none: Not shared error_can_not_archive_project: This project can not be archived button_copy_and_follow: Copy and follow label_copy_source: Source setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. error_workflow_copy_target: Please select target tracker(s) and role(s) setting_issue_done_ratio_issue_field: Use the issue field label_copy_same_as_target: Same as target label_copy_target: Target notice_issue_done_ratios_updated: Issue done ratios updated. error_workflow_copy_source: Please select a source tracker or role label_update_issue_done_ratios: Update issue done ratios setting_start_of_week: Start calendars on permission_view_issues: View Issues label_display_used_statuses_only: Only display statuses that are used by this tracker label_revision_id: Revision %{value} label_api_access_key: API access key label_api_access_key_created_on: API access key created %{value} ago label_feeds_access_key: Atom access key notice_api_access_key_reseted: Your API access key was reset. setting_rest_api_enabled: Enable REST web service label_missing_api_access_key: Missing an API access key label_missing_feeds_access_key: Missing a Atom access key button_show: Show text_line_separated: Multiple values allowed (one line for each value). setting_mail_handler_body_delimiters: Truncate emails after one of these lines permission_add_subprojects: Create subprojects label_subproject_new: New subproject text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Tee viestien koodaus field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 tapahtuma one: 1 tapahtuma other: "%{count} tapahtumat" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: kaikki label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Yhteensä text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Sähköposti setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API avain setting_lost_password: Hukattu salasana mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Poista suhde error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/fr.yml000066400000000000000000002315401500112024600171620ustar00rootroot00000000000000# French translations for Ruby on Rails # by Christian Lescuyer (christian@flyingcoders.com) # contributor: Sebastien Grosjean - ZenCocoon.com # contributor: Thibaut Cuvelier - Developpez.com fr: direction: ltr date: formats: default: "%d/%m/%Y" short: "%e %b" long: "%e %B %Y" long_ordinal: "%e %B %Y" only_day: "%e" day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi] abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre] abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%d/%m/%Y %H:%M" time: "%H:%M" short: "%d %b %H:%M" long: "%A %d %B %Y %H:%M:%S %Z" long_ordinal: "%A %d %B %Y %H:%M:%S %Z" only_second: "%S" am: 'am' pm: 'pm' datetime: distance_in_words: half_a_minute: "30 secondes" less_than_x_seconds: zero: "moins d'une seconde" one: "moins d'une seconde" other: "moins de %{count} secondes" x_seconds: one: "1 seconde" other: "%{count} secondes" less_than_x_minutes: zero: "moins d'une minute" one: "moins d'une minute" other: "moins de %{count} minutes" x_minutes: one: "1 minute" other: "%{count} minutes" about_x_hours: one: "environ une heure" other: "environ %{count} heures" x_hours: one: "une heure" other: "%{count} heures" x_days: one: "un jour" other: "%{count} jours" about_x_months: one: "environ un mois" other: "environ %{count} mois" x_months: one: "un mois" other: "%{count} mois" about_x_years: one: "environ un an" other: "environ %{count} ans" over_x_years: one: "plus d'un an" other: "plus de %{count} ans" almost_x_years: one: "presqu'un an" other: "presque %{count} ans" prompts: year: "Année" month: "Mois" day: "Jour" hour: "Heure" minute: "Minute" second: "Seconde" number: format: precision: 3 separator: ',' delimiter: ' ' currency: format: unit: '€' precision: 2 format: '%n %u' human: format: precision: 3 storage_units: format: "%n %u" units: byte: one: "octet" other: "octets" kb: "ko" mb: "Mo" gb: "Go" tb: "To" support: array: sentence_connector: 'et' skip_last_comma: true word_connector: ", " two_words_connector: " et " last_word_connector: " et " activerecord: errors: template: header: one: "Impossible d'enregistrer %{model} : une erreur" other: "Impossible d'enregistrer %{model} : %{count} erreurs." body: "Veuillez vérifier les champs suivants :" messages: inclusion: "n'est pas inclus(e) dans la liste" exclusion: "n'est pas disponible" invalid: "n'est pas valide" confirmation: "ne concorde pas avec la confirmation" accepted: "doit être accepté(e)" empty: "doit être renseigné(e)" blank: "doit être renseigné(e)" too_long: "est trop long (pas plus de %{count} caractères)" too_short: "est trop court (au moins %{count} caractères)" wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)" taken: "est déjà utilisé" not_a_number: "n'est pas un nombre" not_a_date: "n'est pas une date valide" greater_than: "doit être supérieur à %{count}" greater_than_or_equal_to: "doit être supérieur ou égal à %{count}" equal_to: "doit être égal à %{count}" less_than: "doit être inférieur à %{count}" less_than_or_equal_to: "doit être inférieur ou égal à %{count}" odd: "doit être impair" even: "doit être pair" greater_than_start_date: "doit être postérieure à la date de début" not_same_project: "n'appartient pas au même projet" circular_dependency: "Cette relation créerait une dépendance circulaire" cant_link_an_issue_with_a_descendant: "Une demande ne peut pas être liée à l'une de ses sous-tâches" earlier_than_minimum_start_date: "ne peut pas être antérieure au %{date} à cause des demandes qui précèdent" not_a_regexp: "n'est pas une expression regulière valide" open_issue_with_closed_parent: "Une demande ouverte ne peut pas être rattachée à une demande fermée" must_contain_uppercase: "doit contenir des lettres majuscules (A-Z)" must_contain_lowercase: "doit contenir des lettres minuscules (a-z)" must_contain_digits: "doit contenir des chiffres (0-9)" must_contain_special_chars: "doit contenir des caractères spéciaux (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Choisir general_text_No: 'Non' general_text_Yes: 'Oui' general_text_no: 'non' general_text_yes: 'oui' general_lang_name: 'French (Français)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Le compte a été mis à jour avec succès. notice_account_invalid_credentials: Identifiant ou mot de passe invalide. notice_account_password_updated: Mot de passe mis à jour avec succès. notice_account_wrong_password: Mot de passe incorrect notice_account_register_done: Un message contenant les instructions pour activer votre compte vous a été envoyé à l'adresse %{email}. notice_account_not_activated_yet: Vous n'avez pas encore activé votre compte. Si vous voulez recevoir un nouveau message d'activation, veuillez cliquer sur ce lien. notice_account_locked: Votre compte est verrouillé. notice_can_t_change_password: Ce compte utilise une authentification externe. Impossible de changer le mot de passe. notice_account_lost_email_sent: Un message contenant les instructions pour choisir un nouveau mot de passe vous a été envoyé. notice_account_activated: Votre compte a été activé. Vous pouvez à présent vous connecter. notice_successful_create: Création effectuée avec succès. notice_successful_update: Mise à jour effectuée avec succès. notice_successful_delete: Suppression effectuée avec succès. notice_successful_connection: Connexion réussie. notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée." notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible. notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page." notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé. notice_email_sent: "Un email a été envoyé à %{value}" notice_email_error: "Erreur lors de l'envoi de l'email (%{value})" notice_feeds_access_key_reseted: "Votre clé d'accès aux flux Atom a été réinitialisée." notice_api_access_key_reseted: Votre clé d'accès API a été réinitialisée. notice_failed_to_save_issues: "%{count} demande(s) sur les %{total} sélectionnées n'ont pas pu être mise(s) à jour : %{ids}." notice_failed_to_save_time_entries: "%{count} temps passé(s) sur les %{total} sélectionnés n'ont pas pu être mis à jour: %{ids}." notice_failed_to_save_members: "Erreur lors de la sauvegarde des membres: %{errors}." notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur." notice_default_data_loaded: Paramétrage par défaut chargé avec succès. notice_unable_delete_version: Impossible de supprimer cette version. notice_unable_delete_time_entry: Impossible de supprimer le temps passé. notice_issue_done_ratios_updated: L'avancement des demandes a été mis à jour. notice_gantt_chart_truncated: "Le diagramme a été tronqué car il excède le nombre maximal d'éléments pouvant être affichés (%{max})" notice_issue_successful_create: "Demande %{id} créée." notice_issue_update_conflict: "La demande a été mise à jour par un autre utilisateur pendant que vous la modifiez." notice_account_deleted: "Votre compte a été définitivement supprimé." notice_user_successful_create: "Utilisateur %{id} créé." notice_new_password_must_be_different: Votre nouveau mot de passe doit être différent de votre mot de passe actuel notice_import_finished: "%{count} éléments ont été importé(s)" notice_import_finished_with_errors: "%{count} élément(s) sur %{total} n'ont pas pu être importé(s)" error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage : %{value}" error_scm_not_found: "L'entrée et/ou la révision demandée n'existe pas dans le dépôt." error_scm_command_failed: "Une erreur s'est produite lors de l'accès au dépôt : %{value}" error_scm_annotate: "L'entrée n'existe pas ou ne peut pas être annotée." error_scm_annotate_big_text_file: Cette entrée ne peut pas être annotée car elle excède la taille maximale. error_issue_not_found_in_project: "La demande n'existe pas ou n'appartient pas à ce projet" error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet." error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)." error_can_not_delete_custom_field: Impossible de supprimer le champ personnalisé error_can_not_delete_tracker_html: Ce tracker contient des demandes et ne peut pas être supprimé.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: Ce rôle est utilisé et ne peut pas être supprimé. error_can_not_reopen_issue_on_closed_version: 'Une demande assignée à une version fermée ne peut pas être réouverte' error_can_not_archive_project: "Ce projet ne peut pas être archivé" error_issue_done_ratios_not_updated: L'avancement des demandes n'a pas pu être mis à jour. error_workflow_copy_source: 'Veuillez sélectionner un tracker et/ou un rôle source' error_workflow_copy_target: 'Veuillez sélectionner les trackers et rôles cibles' error_unable_delete_issue_status: Impossible de supprimer le statut de demande (%{value}) error_unable_to_connect: Connexion impossible (%{value}) error_attachment_too_big: Ce fichier ne peut pas être attaché car il excède la taille maximale autorisée (%{max_size}) error_session_expired: "Votre session a expiré. Veuillez vous reconnecter." warning_attachments_not_saved: "%{count} fichier(s) n'ont pas pu être sauvegardés." error_password_expired: "Votre mot de passe a expiré ou nécessite d'être changé." error_invalid_file_encoding: "Le fichier n'est pas un fichier %{encoding} valide" error_invalid_csv_file_or_settings: "Le fichier n'est pas un fichier CSV ou n'est pas conforme aux paramètres sélectionnés (%{value})" error_can_not_read_import_file: "Une erreur est survenue lors de la lecture du fichier à importer" error_attachment_extension_not_allowed: "L'extension %{extension} n'est pas autorisée" error_ldap_bind_credentials: "Identifiant ou mot de passe LDAP incorrect" error_no_tracker_allowed_for_new_issue_in_project: "Le projet ne dispose d'aucun tracker sur lequel vous pouvez créer une demande" error_no_projects_with_tracker_allowed_for_new_issue: "Aucun projet ne dispose d'un tracker sur lequel vous pouvez créer une demande" error_move_of_child_not_possible: "La sous-tâche %{child} n'a pas pu être déplacée dans le nouveau projet : %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "Le temps passé ne peut pas être réaffecté à une demande qui va être supprimée" warning_fields_cleared_on_bulk_edit: "Les changements apportés entraîneront la suppression automatique des valeurs d'un ou plusieurs champs sur les objets sélectionnés" error_exceeds_maximum_hours_per_day: "Impossible de saisir plus de %{max_hours} heures pour le même jour (%{logged_hours} heures ont déjà été saisies)" mail_subject_lost_password: "Votre mot de passe %{value}" mail_body_lost_password: 'Pour changer votre mot de passe, cliquez sur le lien suivant :' mail_subject_register: "Activation de votre compte %{value}" mail_body_register: 'Pour activer votre compte, cliquez sur le lien suivant :' mail_body_account_information_external: "Vous pouvez utiliser votre compte %{value} pour vous connecter." mail_body_account_information: Paramètres de connexion de votre compte mail_subject_account_activation_request: "Demande d'activation d'un compte %{value}" mail_body_account_activation_request: "Un nouvel utilisateur (%{value}) s'est inscrit. Son compte nécessite votre approbation :" mail_subject_reminder: "%{count} demande(s) arrivent à échéance (%{days})" mail_body_reminder: "%{count} demande(s) qui vous sont assignées arrivent à échéance dans les %{days} prochains jours :" mail_subject_wiki_content_added: "Page wiki '%{id}' ajoutée" mail_body_wiki_content_added: "La page wiki '%{id}' a été ajoutée par %{author}." mail_subject_wiki_content_updated: "Page wiki '%{id}' mise à jour" mail_body_wiki_content_updated: "La page wiki '%{id}' a été mise à jour par %{author}." mail_body_settings_updated: "Les paramètres suivants ont été modifiés :" mail_body_password_updated: "Votre mot de passe a été changé." field_name: Nom field_description: Description field_summary: Résumé field_is_required: Obligatoire field_firstname: Prénom field_lastname: Nom field_mail: Email field_address: Email field_filename: Fichier field_filesize: Taille field_downloads: Téléchargements field_author: Auteur field_created_on: Créé field_updated_on: Mis-à-jour field_closed_on: Fermé field_field_format: Format field_is_for_all: Pour tous les projets field_possible_values: Valeurs possibles field_regexp: Expression régulière field_min_length: Longueur minimum field_max_length: Longueur maximum field_value: Valeur field_category: Catégorie field_title: Titre field_project: Projet field_issue: Demande field_status: Statut field_notes: Notes field_is_closed: Demande fermée field_is_default: Valeur par défaut field_tracker: Tracker field_subject: Sujet field_due_date: Echéance field_assigned_to: Assigné à field_priority: Priorité field_fixed_version: Version cible field_user: Utilisateur field_principal: User or Group field_role: Rôle field_homepage: Site web field_is_public: Public field_parent: Sous-projet de field_is_in_roadmap: Demandes affichées dans la roadmap field_login: Identifiant field_mail_notification: Notifications par mail field_admin: Administrateur field_last_login_on: Dernière connexion field_language: Langue field_effective_date: Date field_password: Mot de passe field_new_password: Nouveau mot de passe field_password_confirmation: Confirmation field_version: Version field_type: Type field_host: Hôte field_port: Port field_account: Compte field_base_dn: Base DN field_attr_login: Attribut Identifiant field_attr_firstname: Attribut Prénom field_attr_lastname: Attribut Nom field_attr_mail: Attribut Email field_onthefly: Création des utilisateurs à la volée field_start_date: Début field_done_ratio: "% réalisé" field_auth_source: Mode d'authentification field_hide_mail: Cacher mon adresse mail field_comments: Commentaire field_url: URL field_start_page: Page de démarrage field_subproject: Sous-projet field_hours: Heures field_activity: Activité field_spent_on: Date field_identifier: Identifiant field_is_filter: Utilisé comme filtre field_issue_to: Demande liée field_delay: Retard field_assignable: Demandes assignables aux utilisateurs ayant ce rôle field_redirect_existing_links: Rediriger les liens existants field_estimated_hours: Temps estimé field_column_names: Colonnes field_time_entries: Temps passé field_time_zone: Fuseau horaire field_searchable: Utilisé pour les recherches field_default_value: Valeur par défaut field_comments_sorting: Afficher les commentaires field_parent_title: Page parent field_editable: Modifiable field_watcher: Observateur field_content: Contenu field_group_by: Grouper par field_sharing: Partage field_parent_issue: Tâche parente field_member_of_group: Groupe de l'assigné field_assigned_to_role: Rôle de l'assigné field_text: Champ texte field_visible: Visible field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé" field_issues_visibility: Visibilité des demandes field_is_private: Privée field_commit_logs_encoding: Encodage des messages de commit field_scm_path_encoding: Encodage des chemins field_path_to_repository: Chemin du dépôt field_root_directory: Répertoire racine field_cvsroot: CVSROOT field_cvs_module: Module field_repository_is_default: Dépôt principal field_multiple: Valeurs multiples field_auth_source_ldap_filter: Filtre LDAP field_core_fields: Champs standards field_timeout: "Timeout (en secondes)" field_board_parent: Forum parent field_private_notes: Notes privées field_inherit_members: Hériter les membres field_generate_password: Générer un mot de passe field_must_change_passwd: Doit changer de mot de passe à la prochaine connexion field_default_status: Statut par défaut field_users_visibility: Visibilité des utilisateurs field_time_entries_visibility: Visibilité du temps passé field_total_estimated_hours: Temps estimé total field_default_version: Version par défaut field_textarea_font: Police utilisée pour les champs texte field_updated_by: Mise à jour par field_last_updated_by: Dernière mise à jour par field_full_width_layout: Afficher sur toute la largeur field_digest: Checksum field_default_assigned_to: Assigné par défaut field_default_issue_query: Rapport par défaut setting_app_title: Titre de l'application setting_welcome_text: Texte d'accueil setting_default_language: Langue par défaut setting_login_required: Authentification obligatoire setting_self_registration: Inscription des nouveaux utilisateurs setting_show_custom_fields_on_registration: Afficher les champs personnalisés sur le formulaire d'inscription setting_attachment_max_size: Taille maximale des fichiers setting_issues_export_limit: Limite d'exportation des demandes setting_mail_from: Adresse d'émission setting_plain_text_mail: Mail en texte brut (non HTML) setting_host_name: Nom d'hôte et chemin setting_text_formatting: Formatage du texte setting_wiki_compression: Compression de l'historique des pages wiki setting_feeds_limit: Nombre maximal d'éléments dans les flux Atom setting_default_projects_public: Définir les nouveaux projets comme publics par défaut setting_autofetch_changesets: Récupération automatique des commits setting_sys_api_enabled: Activer les WS pour la gestion des dépôts setting_commit_ref_keywords: Mots-clés de référencement setting_commit_fix_keywords: Mots-clés de résolution setting_autologin: Durée maximale de connexion automatique setting_date_format: Format de date setting_time_format: Format d'heure setting_timespan_format: Format des temps en heures setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets setting_cross_project_subtasks: Autoriser les sous-tâches dans des projets différents setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes setting_repositories_encodings: Encodages des fichiers et des dépôts setting_emails_header: En-tête des emails setting_emails_footer: Pied-de-page des emails setting_protocol: Protocole setting_per_page_options: Options d'objets affichés par page setting_user_format: Format d'affichage des utilisateurs setting_activity_days_default: Nombre de jours affichés sur l'activité des projets setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux setting_enabled_scm: SCM activés setting_mail_handler_body_delimiters: "Tronquer les emails après l'une de ces lignes" setting_mail_handler_enable_regex: "Utiliser les expressions regulières" setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails" setting_mail_handler_api_key: Clé de protection de l'API setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_gravatar_default: Image Gravatar par défaut setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier" setting_password_max_age: Expiration des mots de passe après setting_password_min_length: Longueur minimum des mots de passe setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet setting_default_projects_modules: Modules activés par défaut pour les nouveaux projets setting_issue_done_ratio: Calcul de l'avancement des demandes setting_issue_done_ratio_issue_field: 'Utiliser le champ % effectué' setting_issue_done_ratio_issue_status: Utiliser le statut setting_start_of_week: Jour de début des calendriers setting_rest_api_enabled: Activer l'API REST setting_cache_formatted_text: Mettre en cache le texte formaté setting_default_notification_option: Option de notification par défaut setting_commit_logtime_enabled: Permettre la saisie de temps setting_commit_logtime_activity_id: Activité pour le temps saisi setting_gantt_items_limit: Nombre maximum d'éléments affichés sur le gantt setting_issue_group_assignment: Permettre l'assignation des demandes aux groupes setting_default_issue_start_date_to_creation_date: Donner à la date de début d'une nouvelle demande la valeur de la date du jour setting_commit_cross_project_ref: Permettre le référencement et la résolution des demandes de tous les autres projets setting_unsubscribe: Permettre aux utilisateurs de supprimer leur propre compte setting_session_lifetime: Durée de vie maximale des sessions setting_session_timeout: Durée maximale d'inactivité setting_thumbnails_enabled: Afficher les vignettes des images setting_thumbnails_size: Taille des vignettes (en pixels) setting_non_working_week_days: Jours non travaillés setting_jsonp_enabled: Activer le support JSONP setting_default_projects_tracker_ids: Trackers par défaut pour les nouveaux projets setting_mail_handler_excluded_filenames: Exclure les fichiers attachés par leur nom setting_force_default_language_for_anonymous: Forcer la langue par défault pour les utilisateurs anonymes setting_force_default_language_for_loggedin: Forcer la langue par défault pour les utilisateurs identifiés setting_link_copied_issue: Lier les demandes lors de la copie setting_max_additional_emails: Nombre maximal d'adresses email additionnelles setting_search_results_per_page: Résultats de recherche affichés par page setting_attachment_extensions_allowed: Extensions autorisées setting_attachment_extensions_denied: Extensions non autorisées setting_sys_api_key: Clé de protection de l'API setting_lost_password: Autoriser la réinitialisation par email de mot de passe perdu setting_new_item_menu_tab: Onglet de création d'objets dans le menu du project setting_commit_logs_formatting: Appliquer le formattage de texte aux messages de commit setting_timelog_required_fields: Champs obligatoire pour les temps passés setting_close_duplicate_issues: Fermer les doublons automatiquement setting_time_entry_list_defaults: Affichage par défaut de la liste des temps passés setting_timelog_accept_0_hours: Autoriser la saisie de temps avec 0 heure setting_timelog_max_hours_per_day: Maximum d'heures pouvant être saisies par un utilisateur sur un jour permission_add_project: Créer un projet permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_close_project: Fermer / réouvrir le projet permission_select_project_modules: Choisir les modules permission_manage_members: Gérer les membres permission_manage_project_activities: Gérer les activités permission_manage_versions: Gérer les versions permission_manage_categories: Gérer les catégories de demandes permission_view_issues: Voir les demandes permission_add_issues: Créer des demandes permission_edit_issues: Modifier les demandes permission_copy_issues: Copier les demandes permission_manage_issue_relations: Gérer les relations permission_set_issues_private: Rendre les demandes publiques ou privées permission_set_own_issues_private: Rendre ses propres demandes publiques ou privées permission_add_issue_notes: Ajouter des notes permission_edit_issue_notes: Modifier les notes permission_edit_own_issue_notes: Modifier ses propres notes permission_view_private_notes: Voir les notes privées permission_set_notes_private: Rendre les notes privées permission_delete_issues: Supprimer les demandes permission_manage_public_queries: Gérer les requêtes publiques permission_save_queries: Sauvegarder les requêtes permission_view_gantt: Voir le gantt permission_view_calendar: Voir le calendrier permission_view_issue_watchers: Voir la liste des observateurs permission_add_issue_watchers: Ajouter des observateurs permission_delete_issue_watchers: Supprimer des observateurs permission_log_time: Saisir le temps passé permission_view_time_entries: Voir le temps passé permission_edit_time_entries: Modifier les temps passés permission_edit_own_time_entries: Modifier son propre temps passé permission_view_news: Voir les annonces permission_manage_news: Gérer les annonces permission_comment_news: Commenter les annonces permission_view_documents: Voir les documents permission_add_documents: Ajouter des documents permission_edit_documents: Modifier les documents permission_delete_documents: Supprimer les documents permission_manage_files: Gérer les fichiers permission_view_files: Voir les fichiers permission_manage_wiki: Gérer le wiki permission_rename_wiki_pages: Renommer les pages permission_delete_wiki_pages: Supprimer les pages permission_view_wiki_pages: Voir le wiki permission_view_wiki_edits: "Voir l'historique des modifications" permission_edit_wiki_pages: Modifier les pages permission_delete_wiki_pages_attachments: Supprimer les fichiers joints permission_protect_wiki_pages: Protéger les pages permission_manage_repository: Gérer le dépôt de sources permission_browse_repository: Parcourir les sources permission_view_changesets: Voir les révisions permission_commit_access: Droit de commit permission_manage_boards: Gérer les forums permission_view_messages: Voir les messages permission_add_messages: Poster un message permission_edit_messages: Modifier les messages permission_edit_own_messages: Modifier ses propres messages permission_delete_messages: Supprimer les messages permission_delete_own_messages: Supprimer ses propres messages permission_export_wiki_pages: Exporter les pages permission_manage_subtasks: Gérer les sous-tâches permission_manage_related_issues: Gérer les demandes associées permission_import_issues: Importer des demandes project_module_issue_tracking: Suivi des demandes project_module_time_tracking: Suivi du temps passé project_module_news: Publication d'annonces project_module_documents: Publication de documents project_module_files: Publication de fichiers project_module_wiki: Wiki project_module_repository: Dépôt de sources project_module_boards: Forums de discussion project_module_calendar: Calendrier project_module_gantt: Gantt label_user: Utilisateur label_user_plural: Utilisateurs label_user_new: Nouvel utilisateur label_user_anonymous: Anonyme label_project: Projet label_project_new: Nouveau projet label_project_plural: Projets label_x_projects: zero: aucun projet one: un projet other: "%{count} projets" label_project_all: Tous les projets label_project_latest: Derniers projets label_issue: Demande label_issue_new: Nouvelle demande label_issue_plural: Demandes label_issue_view_all: Voir toutes les demandes label_issues_by: "Demandes par %{value}" label_issue_added: Demande ajoutée label_issue_updated: Demande mise à jour label_issue_note_added: Note ajoutée label_issue_status_updated: Statut changé label_issue_assigned_to_updated: Assigné changé label_issue_priority_updated: Priorité changée label_document: Document label_document_new: Nouveau document label_document_plural: Documents label_document_added: Document ajouté label_role: Rôle label_role_plural: Rôles label_role_new: Nouveau rôle label_role_and_permissions: Rôles et permissions label_role_anonymous: Anonyme label_role_non_member: Non membre label_member: Membre label_member_new: Nouveau membre label_member_plural: Membres label_tracker: Tracker label_tracker_plural: Trackers label_tracker_all: Tous les trackers label_tracker_new: Nouveau tracker label_workflow: Workflow label_issue_status: Statut de demandes label_issue_status_plural: Statuts de demandes label_issue_status_new: Nouveau statut label_issue_category: Catégorie de demandes label_issue_category_plural: Catégories de demandes label_issue_category_new: Nouvelle catégorie label_custom_field: Champ personnalisé label_custom_field_plural: Champs personnalisés label_custom_field_new: Nouveau champ personnalisé label_enumerations: Listes de valeurs label_enumeration_new: Nouvelle valeur label_information: Information label_information_plural: Informations label_register: S'enregistrer label_password_lost: Mot de passe perdu label_password_required: Confirmez votre mot de passe pour continuer label_home: Accueil label_my_page: Ma page label_my_account: Mon compte label_my_projects: Mes projets label_administration: Administration label_login: Connexion label_logout: Déconnexion label_help: Aide label_reported_issues: Demandes soumises label_assigned_issues: Demandes assignées label_assigned_to_me_issues: Demandes qui me sont assignées label_registered_on: Inscrit le label_activity: Activité label_user_activity: "Activité de %{value}" label_new: Nouveau label_logged_as: Connecté en tant que label_environment: Environnement label_authentication: Authentification label_auth_source: Mode d'authentification label_auth_source_new: Nouveau mode d'authentification label_auth_source_plural: Modes d'authentification label_subproject_plural: Sous-projets label_subproject_new: Nouveau sous-projet label_and_its_subprojects: "%{value} et ses sous-projets" label_min_max_length: Longueurs mini - maxi label_list: Liste label_date: Date label_integer: Entier label_float: Nombre décimal label_boolean: Booléen label_string: Texte label_text: Texte long label_attribute: Attribut label_attribute_plural: Attributs label_no_data: Aucune donnée à afficher label_change_status: Changer le statut label_history: Historique label_attachment: Fichier label_attachment_new: Nouveau fichier label_attachment_delete: Supprimer le fichier label_attachment_plural: Fichiers label_file_added: Fichier ajouté label_report: Rapport label_report_plural: Rapports label_news: Annonce label_news_new: Nouvelle annonce label_news_plural: Annonces label_news_latest: Dernières annonces label_news_view_all: Voir toutes les annonces label_news_added: Annonce ajoutée label_news_comment_added: Commentaire ajouté à une annonce label_settings: Configuration label_overview: Aperçu label_version: Version label_version_new: Nouvelle version label_version_plural: Versions label_close_versions: Fermer les versions terminées label_confirmation: Confirmation label_export_to: 'Formats disponibles :' label_read: Lire... label_public_projects: Projets publics label_open_issues: ouvert label_open_issues_plural: ouverts label_closed_issues: fermé label_closed_issues_plural: fermés label_x_open_issues_abbr: zero: 0 ouverte one: 1 ouverte other: "%{count} ouvertes" label_x_closed_issues_abbr: zero: 0 fermée one: 1 fermée other: "%{count} fermées" label_x_issues: zero: 0 demande one: 1 demande other: "%{count} demandes" label_total: Total label_total_plural: Totaux label_total_time: Temps total label_permissions: Permissions label_current_status: Statut actuel label_new_statuses_allowed: Nouveaux statuts autorisés label_all: tous label_any: tous label_none: aucun label_nobody: personne label_next: Suivant label_previous: Précédent label_used_by: Utilisé par label_details: Détails label_add_note: Ajouter une note label_calendar: Calendrier label_months_from: mois depuis label_gantt: Gantt label_internal: Interne label_last_changes: "%{count} derniers changements" label_change_view_all: Voir tous les changements label_comment: Commentaire label_comment_plural: Commentaires label_x_comments: zero: aucun commentaire one: un commentaire other: "%{count} commentaires" label_comment_add: Ajouter un commentaire label_comment_added: Commentaire ajouté label_comment_delete: Supprimer les commentaires label_query: Rapport personnalisé label_query_plural: Rapports personnalisés label_query_new: Nouveau rapport label_my_queries: Mes rapports personnalisés label_filter_add: Ajouter le filtre label_filter_plural: Filtres label_equals: égal label_not_equals: différent label_in_less_than: dans moins de label_in_more_than: dans plus de label_in_the_next_days: dans les prochains jours label_in_the_past_days: dans les derniers jours label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: entre label_in: dans label_today: aujourd'hui label_yesterday: hier label_this_week: cette semaine label_last_week: la semaine dernière label_last_n_weeks: "les %{count} dernières semaines" label_last_n_days: "les %{count} derniers jours" label_this_month: ce mois-ci label_last_month: le mois dernier label_this_year: cette année label_date_range: Période label_less_than_ago: il y a moins de label_more_than_ago: il y a plus de label_ago: il y a label_contains: contient label_not_contains: ne contient pas label_any_issues_in_project: une demande du projet label_any_issues_not_in_project: une demande hors du projet label_no_issues_in_project: aucune demande du projet label_any_open_issues: une demande ouverte label_no_open_issues: aucune demande ouverte label_day_plural: jours label_repository: Dépôt label_repository_new: Nouveau dépôt label_repository_plural: Dépôts label_branch: Branche label_tag: Tag label_revision: Révision label_revision_plural: Révisions label_revision_id: "Révision %{value}" label_associated_revisions: Révisions associées label_added: ajouté label_modified: modifié label_copied: copié label_renamed: renommé label_deleted: supprimé label_latest_revision: Dernière révision label_latest_revision_plural: Dernières révisions label_view_revisions: Voir les révisions label_view_all_revisions: Voir toutes les révisions label_x_revisions: "%{count} révisions" label_max_size: Taille maximale label_roadmap: Roadmap label_roadmap_due_in: "Échéance dans %{value}" label_roadmap_overdue: "En retard de %{value}" label_roadmap_no_issues: Aucune demande pour cette version label_search: Recherche label_result_plural: Résultats label_all_words: Tous les mots label_wiki: Wiki label_wiki_edit: Révision wiki label_wiki_edit_plural: Révisions wiki label_wiki_page: Page wiki label_wiki_page_plural: Pages wiki label_wiki_page_new: Nouvelle page wiki label_index_by_title: Index par titre label_index_by_date: Index par date label_current_version: Version actuelle label_preview: Prévisualisation label_feed_plural: Flux Atom label_changes_details: Détails de tous les changements label_issue_tracking: Suivi des demandes label_spent_time: Temps passé label_total_spent_time: Temps passé total label_f_hour: "%{value} heure" label_f_hour_plural: "%{value} heures" label_f_hour_short: "%{value} h" label_time_tracking: Suivi du temps label_change_plural: Changements label_statistics: Statistiques label_commits_per_month: Commits par mois label_commits_per_author: Commits par auteur label_diff: diff label_view_diff: Voir les différences label_diff_inline: en ligne label_diff_side_by_side: côte à côte label_options: Options label_copy_workflow_from: Copier le workflow de label_permissions_report: Synthèse des permissions label_watched_issues: Demandes surveillées label_related_issues: Demandes liées label_applied_status: Statut appliqué label_loading: Chargement... label_relation_new: Nouvelle relation label_relation_delete: Supprimer la relation label_relates_to: Lié à label_duplicates: Duplique label_duplicated_by: Dupliqué par label_blocks: Bloque label_blocked_by: Bloqué par label_precedes: Précède label_follows: Suit label_copied_to: Copié vers label_copied_from: Copié depuis label_stay_logged_in: Rester connecté label_disabled: désactivé label_show_completed_versions: Voir les versions passées label_me: moi label_board: Forum label_board_new: Nouveau forum label_board_plural: Forums label_board_locked: Verrouillé label_board_sticky: Sticky label_topic_plural: Discussions label_message_plural: Messages label_message_last: Dernier message label_message_new: Nouveau message label_message_posted: Message ajouté label_reply_plural: Réponses label_send_information: Envoyer les informations à l'utilisateur label_year: Année label_month: Mois label_week: Semaine label_date_from: Du label_date_to: Au label_language_based: Basé sur la langue de l'utilisateur label_sort_by: "Trier par %{value}" label_send_test_email: Envoyer un email de test label_feeds_access_key: Clé d'accès Atom label_missing_feeds_access_key: Clé d'accès Atom manquante label_feeds_access_key_created_on: "Clé d'accès Atom créée il y a %{value}" label_module_plural: Modules label_added_time_by: "Ajouté par %{author} il y a %{age}" label_updated_time_by: "Mis à jour par %{author} il y a %{age}" label_updated_time: "Mis à jour il y a %{value}" label_jump_to_a_project: Aller à un projet... label_file_plural: Fichiers label_changeset_plural: Révisions label_default_columns: Colonnes par défaut label_no_change_option: (Pas de changement) label_bulk_edit_selected_issues: Modifier les demandes sélectionnées label_bulk_edit_selected_time_entries: Modifier les temps passés sélectionnés label_theme: Thème label_default: Défaut label_search_titles_only: Uniquement dans les titres label_user_mail_option_all: "Pour tous les événements de tous mes projets" label_user_mail_option_selected: "Pour tous les événements des projets sélectionnés..." label_user_mail_option_none: Aucune notification label_user_mail_option_only_my_events: Seulement pour ce que je surveille label_user_mail_no_self_notified: "Je ne veux pas être notifié des changements que j'effectue" label_registration_activation_by_email: activation du compte par email label_registration_manual_activation: activation manuelle du compte label_registration_automatic_activation: activation automatique du compte label_display_per_page: "Par page : %{value}" label_age: Âge label_change_properties: Changer les propriétés label_general: Général label_scm: SCM label_plugins: Plugins label_ldap_authentication: Authentification LDAP label_downloads_abbr: D/L label_optional_description: Description facultative label_add_another_file: Ajouter un autre fichier label_preferences: Préférences label_chronological_order: Dans l'ordre chronologique label_reverse_chronological_order: Dans l'ordre chronologique inverse label_incoming_emails: Emails entrants label_generate_key: Générer une clé label_issue_watchers: Observateurs label_example: Exemple label_display: Affichage label_sort: Tri label_ascending: Croissant label_descending: Décroissant label_date_from_to: Du %{start} au %{end} label_wiki_content_added: Page wiki ajoutée label_wiki_content_updated: Page wiki mise à jour label_group: Groupe label_group_plural: Groupes label_group_new: Nouveau groupe label_group_anonymous: Utilisateurs anonymes label_group_non_member: Utilisateurs non membres label_time_entry_plural: Temps passé label_version_sharing_none: Non partagé label_version_sharing_descendants: Avec les sous-projets label_version_sharing_hierarchy: Avec toute la hiérarchie label_version_sharing_tree: Avec tout l'arbre label_version_sharing_system: Avec tous les projets label_update_issue_done_ratios: Mettre à jour l'avancement des demandes label_copy_source: Source label_copy_target: Cible label_copy_same_as_target: Comme la cible label_display_used_statuses_only: N'afficher que les statuts utilisés dans ce tracker label_api_access_key: Clé d'accès API label_missing_api_access_key: Clé d'accès API manquante label_api_access_key_created_on: Clé d'accès API créée il y a %{value} label_profile: Profil label_subtask_plural: Sous-tâches label_project_copy_notifications: Envoyer les notifications durant la copie du projet label_principal_search: "Rechercher un utilisateur ou un groupe :" label_user_search: "Rechercher un utilisateur :" label_additional_workflow_transitions_for_author: Autorisations supplémentaires lorsque l'utilisateur a créé la demande label_additional_workflow_transitions_for_assignee: Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur label_issues_visibility_all: Toutes les demandes label_issues_visibility_public: Toutes les demandes non privées label_issues_visibility_own: Demandes créées par ou assignées à l'utilisateur label_git_report_last_commit: Afficher le dernier commit des fichiers et répertoires label_parent_revision: Parent label_child_revision: Enfant label_export_options: Options d'exportation %{export_format} label_copy_attachments: Copier les fichiers label_copy_subtasks: Copier les sous-tâches label_item_position: "%{position} sur %{count}" label_completed_versions: Versions passées label_search_for_watchers: Rechercher des observateurs label_session_expiration: Expiration des sessions label_status_transitions: Changements de statut label_fields_permissions: Permissions sur les champs label_readonly: Lecture label_required: Obligatoire label_hidden: Caché label_attribute_of_project: "%{name} du projet" label_attribute_of_issue: "%{name} de la demande" label_attribute_of_author: "%{name} de l'auteur" label_attribute_of_assigned_to: "%{name} de l'assigné" label_attribute_of_user: "%{name} de l'utilisateur" label_attribute_of_fixed_version: "%{name} de la version cible" label_attribute_of_object: "%{name} de \"%{object_name}\"" label_cross_project_descendants: Avec les sous-projets label_cross_project_tree: Avec tout l'arbre label_cross_project_hierarchy: Avec toute la hiérarchie label_cross_project_system: Avec tous les projets label_gantt_progress_line: Ligne de progression label_visibility_private: par moi uniquement label_visibility_roles: par ces rôles uniquement label_visibility_public: par tout le monde label_link: Lien label_only: seulement label_drop_down_list: liste déroulante label_checkboxes: cases à cocher label_radio_buttons: boutons radio label_link_values_to: Lier les valeurs vers l'URL label_custom_field_select_type: Selectionner le type d'objet auquel attacher le champ personnalisé label_check_for_updates: Vérifier les mises à jour label_latest_compatible_version: Dernière version compatible label_unknown_plugin: Plugin inconnu label_add_projects: Ajouter des projets label_users_visibility_all: Tous les utilisateurs actifs label_users_visibility_members_of_visible_projects: Membres des projets visibles label_edit_attachments: Modifier les fichiers attachés label_link_copied_issue: Lier la demande copiée label_ask: Demander label_search_attachments_yes: Rechercher les noms et descriptions de fichiers label_search_attachments_no: Ne pas rechercher les fichiers label_search_attachments_only: Rechercher les fichiers uniquement label_search_open_issues_only: Demandes ouvertes uniquement label_email_address_plural: Emails label_email_address_add: Ajouter une adresse email label_enable_notifications: Activer les notifications label_disable_notifications: Désactiver les notifications label_blank_value: non renseigné label_parent_task_attributes: Attributs des tâches parentes label_time_entries_visibility_all: Tous les temps passés label_time_entries_visibility_own: Ses propres temps passés label_member_management: Gestion des membres label_member_management_all_roles: Tous les rôles label_member_management_selected_roles_only: Ces rôles uniquement label_import_issues: Importer des demandes label_select_file_to_import: Sélectionner le fichier à importer label_fields_separator: Séparateur de champs label_fields_wrapper: Délimiteur de texte label_encoding: Encodage label_comma_char: Virgule label_semi_colon_char: Point virgule label_quote_char: Apostrophe label_double_quote_char: Double apostrophe label_fields_mapping: Correspondance des champs label_file_content_preview: Aperçu du contenu du fichier label_create_missing_values: Créer les valeurs manquantes label_api: API label_field_format_enumeration: Liste clé/valeur label_default_values_for_new_users: Valeurs par défaut pour les nouveaux utilisateurs label_relations: Relations label_new_project_issue_tab_enabled: Afficher l'onglet "Nouvelle demande" label_new_object_tab_enabled: Afficher le menu déroulant "+" label_table_of_contents: Contenu label_font_default: Police par défaut label_font_monospace: Police non proportionnelle label_font_proportional: Police proportionnelle label_last_notes: Dernières notes label_default_queries: for_all_projects: Pour tous les projets for_current_project: Pour le projet en cours for_all_users: Pour tous les utilisateurs for_this_user: For this user label_trackers_description: Description des trackers label_open_trackers_description: Afficher la description des trackers button_login: Connexion button_submit: Soumettre button_save: Sauvegarder button_check_all: Tout cocher button_uncheck_all: Tout décocher button_collapse_all: Plier tout button_expand_all: Déplier tout button_delete: Supprimer button_create: Créer button_create_and_continue: Créer et continuer button_test: Tester button_edit: Modifier button_edit_associated_wikipage: "Modifier la page wiki associée: %{page_title}" button_add: Ajouter button_change: Changer button_apply: Appliquer button_clear: Effacer button_lock: Verrouiller button_unlock: Déverrouiller button_download: Télécharger button_list: Lister button_view: Voir button_move: Déplacer button_move_and_follow: Déplacer et suivre button_back: Retour button_cancel: Annuler button_activate: Activer button_sort: Trier button_log_time: Saisir temps button_rollback: Revenir à cette version button_watch: Surveiller button_unwatch: Ne plus surveiller button_reply: Répondre button_archive: Archiver button_unarchive: Désarchiver button_reset: Réinitialiser button_rename: Renommer button_change_password: Changer de mot de passe button_copy: Copier button_copy_and_follow: Copier et suivre button_annotate: Annoter button_update: Mettre à jour button_configure: Configurer button_quote: Citer button_show: Afficher button_hide: Cacher button_edit_section: Modifier cette section button_export: Exporter button_delete_my_account: Supprimer mon compte button_close: Fermer button_reopen: Réouvrir button_import: Importer button_filter: Filtrer status_active: actif status_registered: enregistré status_locked: verrouillé project_status_active: actif project_status_closed: fermé project_status_archived: archivé version_status_open: ouvert version_status_locked: verrouillé version_status_closed: fermé field_active: Actif text_select_mail_notifications: Actions pour lesquelles une notification par e-mail est envoyée text_regexp_info: ex. ^[A-Z0-9]+$ text_project_destroy_confirmation: Êtes-vous sûr de vouloir supprimer ce projet et toutes ses données ? text_subprojects_destroy_warning: "Ses sous-projets : %{value} seront également supprimés." text_workflow_edit: Sélectionner un tracker et un rôle pour éditer le workflow text_are_you_sure: Êtes-vous sûr ? text_journal_changed: "%{label} changé de %{old} à %{new}" text_journal_changed_no_detail: "%{label} mis à jour" text_journal_set_to: "%{label} mis à %{value}" text_journal_deleted: "%{label} %{old} supprimé" text_journal_added: "%{label} %{value} ajouté" text_tip_issue_begin_day: tâche commençant ce jour text_tip_issue_end_day: tâche finissant ce jour text_tip_issue_begin_end_day: tâche commençant et finissant ce jour text_project_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisés.
    Un fois sauvegardé, l''identifiant ne pourra plus être modifié.' text_caracters_maximum: "%{count} caractères maximum." text_caracters_minimum: "%{count} caractères minimum." text_length_between: "Longueur comprise entre %{min} et %{max} caractères." text_tracker_no_workflow: Aucun workflow n'est défini pour ce tracker text_unallowed_characters: Caractères non autorisés text_comma_separated: Plusieurs valeurs possibles (séparées par des virgules). text_line_separated: Plusieurs valeurs possibles (une valeur par ligne). text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires de commits text_issue_added: "La demande %{id} a été soumise par %{author}." text_issue_updated: "La demande %{id} a été mise à jour par %{author}." text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ? text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?" text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)." text_no_configuration_data: "Les rôles, trackers, statuts et le workflow ne sont pas encore paramétrés.\nIl est vivement recommandé de charger le paramétrage par defaut. Vous pourrez le modifier une fois chargé." text_load_default_configuration: Charger le paramétrage par défaut text_status_changed_by_changeset: "Appliqué par commit %{value}." text_time_logged_by_changeset: "Appliqué par commit %{value}" text_issues_destroy_confirmation: 'Êtes-vous sûr de vouloir supprimer la ou les demande(s) selectionnée(s) ?' text_issues_destroy_descendants_confirmation: "Cela entrainera également la suppression de %{count} sous-tâche(s)." text_time_entries_destroy_confirmation: "Etes-vous sûr de vouloir supprimer les temps passés sélectionnés ?" text_select_project_modules: 'Sélectionner les modules à activer pour ce projet :' text_default_administrator_account_changed: Compte administrateur par défaut changé text_file_repository_writable: Répertoire de stockage des fichiers accessible en écriture text_plugin_assets_writable: Répertoire public des plugins accessible en écriture text_minimagick_available: Bibliothèque MiniMagick présente (optionnelle) text_convert_available: Binaire convert de ImageMagick présent (optionel) text_destroy_time_entries_question: "%{hours} heures ont été enregistrées sur les demandes à supprimer. Que voulez-vous faire ?" text_destroy_time_entries: Supprimer les heures text_assign_time_entries_to_project: Reporter les heures sur le projet text_reassign_time_entries: 'Reporter les heures sur cette demande:' text_user_wrote: "%{value} a écrit :" text_user_wrote_in: "%{value} a écrit (%{link}):" text_enumeration_destroy_question: "La valeur « %{name} » est affectée à %{count} objet(s)." text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:' text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer." text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés." text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.' text_custom_field_possible_values_info: 'Une ligne par valeur' text_wiki_page_destroy_question: "Cette page possède %{descendants} sous-page(s) et descendante(s). Que voulez-vous faire ?" text_wiki_page_nullify_children: "Conserver les sous-pages en tant que pages racines" text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?" text_zoom_in: Zoom avant text_zoom_out: Zoom arrière text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page." text_scm_path_encoding_note: "Défaut : UTF-8" text_subversion_repository_note: "Exemples (en fonction des protocoles supportés) : file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: "Chemin vers un dépôt vide et local (exemples : /gitrepo, c:\\gitrepo)" text_mercurial_repository_note: "Chemin vers un dépôt local (exemples : /hgrepo, c:\\hgrepo)" text_scm_command: Commande text_scm_command_version: Version text_scm_config: Vous pouvez configurer les commandes des SCM dans config/configuration.yml. Redémarrer l'application après modification. text_scm_command_not_available: Ce SCM n'est pas disponible. Vérifier les paramètres dans la section administration. text_issue_conflict_resolution_overwrite: "Appliquer quand même ma mise à jour (les notes précédentes seront conservées mais des changements pourront être écrasés)" text_issue_conflict_resolution_add_notes: "Ajouter mes notes et ignorer mes autres changements" text_issue_conflict_resolution_cancel: "Annuler ma mise à jour et réafficher %{link}" text_account_destroy_confirmation: "Êtes-vous sûr de vouloir continuer ?\nVotre compte sera définitivement supprimé, sans aucune possibilité de le réactiver." text_session_expiration_settings: "Attention : le changement de ces paramètres peut entrainer l'expiration des sessions utilisateurs en cours, y compris la vôtre." text_project_closed: Ce projet est fermé et accessible en lecture seule. text_turning_multiple_off: "Si vous désactivez les valeurs multiples, les valeurs multiples seront supprimées pour n'en conserver qu'une par objet." default_role_manager: Manager default_role_developer: Développeur default_role_reporter: Rapporteur default_tracker_bug: Anomalie default_tracker_feature: Evolution default_tracker_support: Assistance default_issue_status_new: Nouveau default_issue_status_in_progress: En cours default_issue_status_resolved: Résolu default_issue_status_feedback: Commentaire default_issue_status_closed: Fermé default_issue_status_rejected: Rejeté default_doc_category_user: Documentation utilisateur default_doc_category_tech: Documentation technique default_priority_low: Bas default_priority_normal: Normal default_priority_high: Haut default_priority_urgent: Urgent default_priority_immediate: Immédiat default_activity_design: Conception default_activity_development: Développement enumeration_issue_priorities: Priorités des demandes enumeration_doc_categories: Catégories des documents enumeration_activities: Activités (suivi du temps) enumeration_system_activity: Activité système description_filter: Filtre description_search: Champ de recherche description_choose_project: Projets description_project_scope: Périmètre de recherche description_notes: Notes description_message_content: Contenu du message description_query_sort_criteria_attribute: Critère de tri description_query_sort_criteria_direction: Ordre de tri description_user_mail_notification: Option de notification description_available_columns: Colonnes disponibles description_selected_columns: Colonnes sélectionnées description_all_columns: Toutes les colonnes description_issue_category_reassign: Choisir une catégorie description_wiki_subpages_reassign: Choisir une nouvelle page parent text_repository_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisés.
    Un fois sauvegardé, l''identifiant ne pourra plus être modifié.' text_allowed_queries_to_select: Seuls les rapports publics (pour tous les utilisateurs) sont sélectionnables label_parent_task_attributes_derived: Calculé à partir des sous-tâches label_parent_task_attributes_independent: Indépendent des sous-tâches mail_subject_security_notification: Notification de sécurité mail_body_security_notification_change: ! '%{field} modifié(e).' mail_body_security_notification_change_to: ! '%{field} changé(e) en %{value}.' mail_body_security_notification_add: ! '%{field} %{value} ajouté(e).' mail_body_security_notification_remove: ! '%{field} %{value} supprimé(e).' mail_body_security_notification_notify_enabled: Les notifications ont été activées pour l'adresse %{value} mail_body_security_notification_notify_disabled: Les notifications ont été désactivées pour l'adresse %{value} field_remote_ip: Adresse IP label_no_preview: Aucun aperçu disponible label_no_preview_alternative_html: Aucun aperçu disponible. Veuillez %{link} le fichier. label_no_preview_download: télécharger label_user_mail_option_only_assigned: Seulement pour ce que je surveille ou qui m'est assigné label_user_mail_option_only_owner: Seulement pour ce que je surveille ou que j'ai créé error_can_not_delete_auth_source: "Ce mode d'authentification est utilisé par des comptes utilisateurs et ne peut pas être supprimé" button_actions: Actions mail_body_lost_password_validity: "Ce lien ne vous permettra de changer de mot de passe qu'une seule fois." text_login_required_html: "En désactivant l'authentification obligatoire, les projets publics et leurs contenus sont librement accessibles à toute personne sur le réseau. Vous pouvez éditer les permissions applicables." label_login_required_yes: Oui label_login_required_no: Non, autoriser l'accès anonyme aux projets publics text_project_is_public_non_member: "Les projets publics et leurs contenus sont accessibles à tout utilisateur authentifié." text_project_is_public_anonymous: "Les projets publics et leurs contenus sont librement accessibles à toute personne sur le réseau." label_version_and_files: Versions (%{count}) et fichiers label_ldap: LDAP label_ldaps_verify_none: "LDAPS (sans vérification du certificat)" label_ldaps_verify_peer: LDAPS label_ldaps_warning: "Il est recommandé d'utiliser une connexion LDPAS avec vérification du certificat pour empêcher toute interception des données durant la procédure d'authentification." label_nothing_to_preview: "Aucun texte à prévisualiser" error_token_expired: "Ce lien de récupération de votre mot de passe a expiré, veuillez recommencer." error_spent_on_future_date: "Impossible d'enregistrer un temps passé sur une date future" setting_timelog_accept_future_dates: "Autoriser la saisie de temps sur une date future" label_delete_link_to_subtask: "Supprimer la relation avec la sous-tâche" error_not_allowed_to_log_time_for_other_users: "Vous n'êtes pas autorisé à saisir le temps passé pour d'autres utilisateurs" permission_log_time_for_other_users: "Saisir le temps passé pour d'autres utilisateurs" label_inherited_from_parent_project: "Hérité du projet parent" label_inherited_from_group: "Hérité du groupe %{name}" label_tomorrow: demain label_next_week: semaine prochaine label_next_month: mois prochain text_role_no_workflow: "Aucun workflow défini pour ce rôle" text_status_no_workflow: "Aucun tracker n'utilise ce statut dans le workflow" setting_mail_handler_preferred_body_part: "Partie privilégiée des messages multipart (HTML)" setting_show_status_changes_in_mail_subject: "Inclure les changements de statut des demandes dans le sujet des notifications" label_preferred_body_part_text: "Texte" label_preferred_body_part_html: "HTML" field_parent_issue_subject: "Sujet de la demande parent" permission_edit_own_issues: "Modifier ses propres demandes" text_select_apply_tracker: "Sélectionner un tracker" label_updated_issues: "Demandes mises à jour" text_avatar_server_config_html: "Le serveur d'avatars actuel est %{url}. Vous pouvez le configurer dans config/configuration.yml." setting_gantt_months_limit: "Nombre maximum de mois affichés sur le gantt" permission_import_time_entries: "Importer des temps passés" label_import_notifications: "Envoyer les notifications durant l'import" text_gs_available: "Support PDF ImageMagick disponible (optionnel)" field_recently_used_projects: "Nombre de projets consultés récemment affichés dans le menu" label_optgroup_bookmarks: "Favoris" label_optgroup_recents: "Consultés récemment" button_project_bookmark: "Ajouter aux favoris" button_project_bookmark_delete: "Retirer des favoris" field_history_default_tab: "Onglet par défaut de l'historique d'une demande" label_issue_history_properties: "Changements" label_issue_history_notes: "Notes" label_last_tab_visited: "Dernier onglet visité" field_unique_id: "ID unique" text_no_subject: "sans sujet" setting_password_required_char_classes: "Caractères requis pour les mots de passe" label_password_char_class_uppercase: "lettres majuscules" label_password_char_class_lowercase: "lettres miniscules" label_password_char_class_digits: "chiffres" label_password_char_class_special_chars: "caractères spéciaux" text_characters_must_contain: "Doit contenir les types de caractères suivants : %{character_classes}." label_starts_with: "commence par" label_ends_with: "se termine par" label_issue_fixed_version_updated: "Version cible mise à jour" setting_project_list_defaults: "Affichage par défaut de la liste des projets" label_display_type: "Affichage" label_display_type_list: "Liste" label_display_type_board: "Tableau" label_my_bookmarks: "Favoris" label_import_time_entries: "Importer des temps passés" field_toolbar_language_options: Langages de la barre d'outils de mise en évidence du code label_user_mail_notify_about_high_priority_issues_html: Me notifier aussi des demandes avec une priorité %{prio} ou supérieure label_assign_to_me: M'assigner notice_issue_not_closable_by_open_tasks: Cette demande ne peut pas être fermée car elle contient au moins une sous-tâche encore ouverte. notice_issue_not_closable_by_blocking_issue: Cette demande ne peut pas être fermée car elle est bloqué par au moins une demande encore ouverte. notice_issue_not_reopenable_by_closed_parent_issue: Cette demande ne peut être réouverte car sa demande parente est fermée. error_bulk_download_size_too_big: Ces pièces jointes ne peuvent pas être téléchargées en masse car la taille totale des fichiers dépasse la taille maximale autorisée (%{max_size}) setting_bulk_download_max_size: Taille totale maximale du téléchargement groupé label_download_all_attachments: Télécharger tous les fichiers error_attachments_too_many: Ce fichier ne peut être transmis car il excède le nombre maximum de fichier pouvant être attaché simultanément (%{max_number_of_files}) setting_email_domains_allowed: Domaines de messagerie autorisés setting_email_domains_denied: Domaines de messagerie non autorisés field_passwd_changed_on: Mot de passe modifié pour la dernière fois label_relations_mapping: Cartographie des relations label_import_users: Importer les utilisateurs label_days_to_html: "%{days} jours jusqu'à %{date}" setting_twofa: Double authentification label_optional: optionel label_required_lower: obligatoire button_disable: Désactiver twofa__totp__name: Application d'authentication twofa__totp__text_pairing_info_html: Scannez ce QR-Code ou saisissez la clé au format textee dans une application de double authentification (e.g. Google Authenticator, Authy, Duo Mobile) et saisissez le code dans le champ de saisie ci-dessus pour activer la double authentification. twofa__totp__label_plain_text_key: Clé au format texte twofa__totp__label_activate: Activer la double authentification twofa_currently_active: 'Activée: %{twofa_scheme_name}' twofa_not_active: Désactivée twofa_label_code: Code twofa_hint_disabled_html: La valeur %{label} va désactiver et déconnecter les applications de double authentification pour tous les utilisateurs. twofa_hint_required_html: La valeur %{label} va imposer à tous les utilisateurs de mettre en place la double authentification à la prochaine connexion. twofa_label_setup: Activer la double authentification twofa_label_deactivation_confirmation: Désactiver la double authentification twofa_notice_select: 'Veuillez choisir la méthode de double authentification que vous souhaitez utiliser :' twofa_warning_require: L'administrateur vous demande d'activer la double authentification. twofa_activated: La double authentification a bien été activée. Il est recommandé de générer des codes de secours pour votre compte. twofa_deactivated: La double authentification a été désactivée. twofa_mail_body_security_notification_paired: La double authentification a bien été activée en utilisant %{field}. twofa_mail_body_security_notification_unpaired: La double authentification a été désactivée pour votre compte. twofa_mail_body_backup_codes_generated: Les nouveaux codes de secours ont été générés. twofa_mail_body_backup_code_used: Un code de secours de la double authentification a été utilisé. twofa_invalid_code: Le code est invalide ou expiré. twofa_label_enter_otp: Veuillez saisir le code de la double authentification. twofa_too_many_tries: Trop de tentatives. twofa_resend_code: Envoyer un code à nouveau twofa_code_sent: Un code d'authentification vous a été envoyé. twofa_generate_backup_codes: Générer des codes de secours twofa_text_generate_backup_codes_confirmation: Cette opération va désactiver tous les codes de secours actuels et en générer de nouveaux. Souhaitez-vous continuer ? twofa_notice_backup_codes_generated: Les codes de secours ont été générés. twofa_warning_backup_codes_generated_invalidated: Les nouveaux codes de secours ont été générés. Les anciens codes du %{time} sont à présent invalides. twofa_label_backup_codes: Codes de secours pour la double authentification twofa_text_backup_codes_hint: Utilisez ces codes à la place des codes temporaires à chaque fois que vous ne pouvez pas utiliser l'application de double authentification. Chaque code ne peut être utilisé qu'une seule fois. Il est recommandé de les imprimer et de les sauvegarder en lieu sûr. twofa_text_backup_codes_created_at: Codes de secours générés le %{datetime}. twofa_backup_codes_already_shown: Les codes de secours ne peuvent pas être affichés à nouveau, veuillez générer de nouveaux codes si besoin. error_can_not_execute_macro_html: Erreur lors de l'exécution de la macro %{name} (%{error}) error_macro_does_not_accept_block: Cette macro n'accepte pas de bloc de texte error_childpages_macro_no_argument: Sans argument, cette macro ne peut uniquement être appelée que par les pages wiki error_circular_inclusion: Inclusion récursive détectée error_page_not_found: Page non trouvée error_filename_required: Nom de fichier obligatoire error_invalid_size_parameter: Paramètre de taille invalide error_attachment_not_found: Pièce jointe %{name} non trouvée permission_delete_project: Supprimer le projet field_twofa_scheme: Méthode de double authentication text_user_destroy_confirmation: Voulez-vous vraiment supprimer cet utilisateur et l'ensemble des références à celui-ci ? Cette action ne peut être annulée. Il est souvent préférable de verrouiller l'utilisateur au lieu de le supprimer. Pour confirmer, veuillez entrer l'identifiant (%{login}) ci dessous. text_project_destroy_enter_identifier: Pour confirmer, veuillez saisir l'identifiant du projet (%{identifier}) ci dessous. button_add_subtask: Ajouter une sous-tâche notice_invalid_watcher: "Observateur non valide: l'utilisateur ne recevra aucune notification car il n'a pas accès pour afficher cet objet." button_fetch_changesets: Récupérer les commits permission_view_message_watchers: Afficher la liste des observateurs de messages permission_add_message_watchers: Ajouter des observateurs de messages permission_delete_message_watchers: Supprimer des observateurs de messages label_message_watchers: Observateurs button_copy_link: Copier le lien error_invalid_authenticity_token: Jeton d'authenticité de formulaire invalide. error_query_statement_invalid: Une erreur s'est produite lors de l'exécution de la requête et a été enregistré. Veuillez signaler cette erreur à votre administrateur Redmine. permission_view_wiki_page_watchers: Voir la liste des observateurs de la page wiki permission_add_wiki_page_watchers: Ajouter des observateurs de la page wiki permission_delete_wiki_page_watchers: Supprimer des observateurs de la page wiki label_wiki_page_watchers: Observateurs label_attachment_description: Description du fichier error_no_data_in_file: Le fichier ne contient aucune donnée field_twofa_required: Nécessite l'authentification à deux facteurs twofa_hint_optional_html: Activer %{label} permettra aux utilisateurs de configurer l'authentification à deux facteurs eux même, à moins qu'elle soit requise par un de leur groupe. twofa_text_group_required: Ce paramètre est uniquement disponible quand l'authentification à deux facteurs est globalement configurée sur 'optionnel'. Actuellement l'authentification à deux facteurs est obligatoire. twofa_text_group_disabled: Ce paramètre est uniquement disponible quand l'authentification à deux facteurs est globalement configurée sur 'optionnel'. Actuellement l'authentification à deux facteurs est désactivée. text_all_migrations_have_been_run: Toutes les migrations de la base de donnée ont été jouées button_save_object: Sauvegarder %{object_name} button_edit_object: Editer %{object_name} button_delete_object: Supprimer %{object_name} text_setting_config_change: Vous pouvez modifier ce comportement dans config/configuration.yml. Merci de redémarrer l'application après l'avoir modifiée. label_bulk_edit: Edition par lot button_create_and_follow: Créer et suivre label_subtask: Sous-tâches label_default_query: Rapport par défaut field_default_project_query: Rapport par défaut du project label_required_administrators: requis pour les administrateurs twofa_hint_required_administrators_html: Activer %{label} comportement commme optionnel, mais oblige tous les utilisateurs disposant de droit d'administration d'activer l'authentification à deux facteurs à la prochaine connexion label_auto_watch_on: Observation automatique label_auto_watch_on_issue_contributed_to: Demandes auxquelles j'ai contribué text_project_close_confirmation: Etes-vous sûr de vouloir fermer le project '%{value}' et de le rendre accessible uniquement en lecture? text_project_reopen_confirmation: Etes-vous sûr de vouloir réouvrir le project '%{value}'? text_project_archive_confirmation: "Etes-vous sûr de vouloir archiver le projet '%{value}' ?" mail_destroy_project_failed: "Le projet %{value} n'a pas pu être supprimé." mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} et ses sous projets ont été supprimés avec succès. project_status_scheduled_for_deletion: planifié pour suppression text_projects_bulk_destroy_confirmation: Etes-vous sûr de vouloir supprimer le projet sélectionné et toutes les données associées? text_projects_bulk_destroy_head: | Vous êtes sur le point de supprimer définnitement les projets suivants, incluant tous les éventuels sous projets ainsi que les données associées. Merci de vérifier les informations ci dessous et de confirmer que c'est bien ce que vous souhaitez faire. Cette suppression est irréversible. text_projects_bulk_destroy_confirm: Pour confirmer, taper "%{yes}" dans le champ suivant. text_subprojects_bulk_destroy: 'incluant ces sous projet(s): %{value}' field_current_password: Mot de passe actuel sudo_mode_new_info_html: "Que ce passe-t-il? Vous devez reconfirmer votre mot de passe avant de prendre d'effectuer toutes actions d'administration, ceci pour assurer que votre compte reste protégé." label_edited: Edité label_time_by_author: "%{time} par %{author}" field_default_time_entry_activity: Durée d'activité par défault field_is_member_of_group: Membre du groupe text_users_bulk_destroy_head: Vous êtes sur le point de supprimer les utilisateurs suivants ainsi que toutes les référence à eux. Cette suppression est irréversible. Bien souvent, verrouiller les comptes utilisateurs est une meiilleur solution que les supprimer. text_users_bulk_destroy_confirm: Pour confirmer, taper "%{yes}" dans le champ suivant. permission_select_project_publicity: Configurer les projets publique ou privé label_auto_watch_on_issue_created: Demandes que j'ai créée field_any_searchable: Tout texte indexable label_contains_any_of: contenant un des button_apply_issues_filter: Appliquer le filtre des demandes label_view_previous_annotation: Voir les commentaires antérieur à ce changement label_has_been: a été label_has_never_been: n'a jamais été label_changed_from: modifié depuis label_issue_statuses_description: Description du statut des demande label_open_issue_statuses_description: Voir toutes descriptions des statuts des demandes text_select_apply_issue_status: Sélectionner les statuts des demandes field_name_or_email_or_login: Nom, email ou login text_default_active_job_queue_changed: Gestionnaire de file par défaut le plus adapté label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/gl.yml000066400000000000000000002274061500112024600171630ustar00rootroot00000000000000# Galician (Spain) for Ruby on Rails # By: # Marcos Arias Pena # Adrián Chaves Fernández (Gallaecio) gl: number: format: separator: "," delimiter: "." precision: 3 currency: format: format: "%n %u" unit: "€" separator: "," delimiter: "." precision: 2 percentage: format: # separator: delimiter: "" # precision: precision: format: # separator: delimiter: "" # precision: human: format: # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "B" other: "B" kb: "KB" mb: "MB" gb: "GB" tb: "TB" direction: ltr date: formats: default: "%e/%m/%Y" short: "%e %b" long: "%A %e de %B de %Y" day_names: [Domingo, Luns, Martes, Mércores, Xoves, Venres, Sábado] abbr_day_names: [Dom, Lun, Mar, Mer, Xov, Ven, Sab] month_names: [~, Xaneiro, Febreiro, Marzo, Abril, Maio, Xunio, Xullo, Agosto, Setembro, Outubro, Novembro, Decembro] abbr_month_names: [~, Xan, Feb, Maz, Abr, Mai, Xun, Xul, Ago, Set, Out, Nov, Dec] order: - :day - :month - :year time: formats: default: "%A, %e de %B de %Y, %H:%M hs" time: "%H:%M hs" short: "%e/%m, %H:%M hs" long: "%A %e de %B de %Y ás %H:%M horas" am: '' pm: '' datetime: distance_in_words: half_a_minute: 'medio minuto' less_than_x_seconds: zero: 'menos dun segundo' one: '1 segundo' few: 'poucos segundos' other: '%{count} segundos' x_seconds: one: '1 segundo' other: '%{count} segundos' less_than_x_minutes: zero: 'menos dun minuto' one: '1 minuto' other: '%{count} minutos' x_minutes: one: '1 minuto' other: '%{count} minuto' about_x_hours: one: 'aproximadamente unha hora' other: '%{count} horas' x_hours: one: "1 hora" other: "%{count} horas" x_days: one: '1 día' other: '%{count} días' x_weeks: one: '1 semana' other: '%{count} semanas' about_x_months: one: 'aproximadamente 1 mes' other: '%{count} meses' x_months: one: '1 mes' other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' other: '%{count} anos' over_x_years: one: 'máis dun ano' other: '%{count} anos' almost_x_years: one: "almost 1 year" other: "almost %{count} years" now: 'agora' today: 'hoxe' tomorrow: 'mañá' in: 'dentro de' support: array: sentence_connector: e activerecord: models: attributes: errors: template: header: one: "1 erro evitou que se poidese gardar o %{model}" other: "%{count} erros evitaron que se poidese gardar o %{model}" body: "Atopáronse os seguintes problemas:" messages: inclusion: "non está incluido na lista" exclusion: "xa existe" invalid: "non é válido" confirmation: "non coincide coa confirmación" accepted: "debe ser aceptado" empty: "non pode estar baleiro" blank: "non pode estar en branco" too_long: "é demasiado longo (non máis de %{count} carácteres)" too_short: "é demasiado curto (non menos de %{count} carácteres)" wrong_length: "non ten a lonxitude correcta (debe ser de %{count} carácteres)" taken: "non está dispoñíbel" not_a_number: "non é un número" greater_than: "debe ser maior que %{count}" greater_than_or_equal_to: "debe ser maior ou igual que %{count}" equal_to: "debe ser igual a %{count}" less_than: "debe ser menor que %{count}" less_than_or_equal_to: "debe ser menor ou igual que %{count}" odd: "debe ser par" even: "debe ser impar" greater_than_start_date: "debe ser posterior á data de comezo" not_same_project: "non pertence ao mesmo proxecto" circular_dependency: "Esta relación podería crear unha dependencia circular" cant_link_an_issue_with_a_descendant: "As peticións non poden estar ligadas coas súas subtarefas" earlier_than_minimum_start_date: "Non pode ser antes de %{date} por mor de peticións anteriores" not_a_regexp: "non é unha expresión regular válida" open_issue_with_closed_parent: "Unha petición aberta non pode ser asignada a unha tarefa pai pechada" must_contain_uppercase: "debe conter letras maiúsculas (A-Z)" must_contain_lowercase: "debe conter letras minúsculas (a-z)" must_contain_digits: "debe conter díxitos (0-9)" must_contain_special_chars: "debe conter caracteres especiais (!, $, %, ...)" domain_not_allowed: "contén un dominio non permitido (%{domain})" too_simple: "é demasiado sinxela" actionview_instancetag_blank_option: Por favor seleccione button_activate: Activar button_add: Engadir button_annotate: Anotar button_apply: Aceptar button_archive: Arquivar button_back: Atrás button_cancel: Cancelar button_change: Cambiar button_change_password: "Cambiar o contrasinal" button_check_all: "Seleccionalo todo" button_clear: Anular button_configure: Configurar button_copy: Copiar button_create: Crear button_delete: Borrar button_download: Descargar button_edit: Modificar button_list: Listar button_lock: Bloquear button_log_time: Tempo dedicado button_login: Acceder button_move: Mover button_quote: Citar button_rename: Renomear button_reply: Respostar button_reset: Restablecer button_rollback: Volver a esta versión button_save: Gardar button_sort: Ordenar button_submit: Aceptar button_test: Probar button_unarchive: Desarquivar button_uncheck_all: Non seleccionar nada button_unlock: Desbloquear button_unwatch: Non monitorizar button_update: Actualizar button_view: Ver button_watch: Monitorizar default_activity_design: Deseño default_activity_development: Desenvolvemento default_doc_category_tech: Documentación técnica default_doc_category_user: Documentación de usuario default_issue_status_in_progress: "En curso" default_issue_status_closed: Pechada default_issue_status_feedback: Comentarios default_issue_status_new: Nova default_issue_status_rejected: Rexeitada default_issue_status_resolved: Resolta default_priority_high: Alta default_priority_immediate: Inmediata default_priority_low: Baixa default_priority_normal: Normal default_priority_urgent: Urxente default_role_developer: Desenvolvedor default_role_manager: Xefe de proxecto default_role_reporter: Informador default_tracker_bug: Erros default_tracker_feature: Tarefas default_tracker_support: Soporte enumeration_activities: Actividades (tempo dedicado) enumeration_doc_categories: Categorías do documento enumeration_issue_priorities: Prioridade das peticións error_can_t_load_default_data: "Non se puido cargar a configuración predeterminada: %{value}" error_issue_not_found_in_project: 'A petición non se atopa ou non está asociada a este proxecto' error_scm_annotate: "Non existe a entrada ou non se puido anotar" error_scm_command_failed: "Aconteceu un erro ao acceder ao repositorio: %{value}" error_scm_not_found: "A entrada e/ou revisión non existe no repositorio." field_account: Conta field_activity: Actividade field_admin: Administrador field_assignable: Pódense asignar peticións a este perfil field_assigned_to: Asignado a field_attr_firstname: "Atributo do nome" field_attr_lastname: "Atributo dos apelidos" field_attr_login: "Atributo do nome de usuario" field_attr_mail: "Atributo da conta de correo electrónico" field_auth_source: Modo de identificación field_author: Autor field_base_dn: DN base field_category: Categoría field_column_names: Columnas field_comments: Comentario field_comments_sorting: Mostrar comentarios field_created_on: Creado field_default_value: "Estado predeterminado" field_delay: Retraso field_description: Descrición field_done_ratio: "% Realizado" field_downloads: Descargas field_due_date: Data fin field_effective_date: Data field_estimated_hours: Tempo estimado field_field_format: Formato field_filename: Ficheiro field_filesize: Tamaño field_firstname: Nome field_fixed_version: Versión prevista field_hide_mail: "Agochar o enderezo de correo." field_homepage: Sitio web field_host: Anfitrión field_hours: Horas field_identifier: Identificador field_is_closed: Petición resolta field_is_default: "Estado predeterminado" field_is_filter: Usado como filtro field_is_for_all: Para todos os proxectos field_is_in_roadmap: Consultar as peticións na planificación field_is_public: Público field_is_required: Obrigatorio field_issue: Petición field_issue_to: Petición relacionada field_language: Idioma field_last_login_on: "Último acceso" field_lastname: "Apelidos" field_login: "Usuario" field_mail: Correo electrónico field_mail_notification: Notificacións por correo field_max_length: Lonxitude máxima field_min_length: Lonxitude mínima field_name: Nome field_new_password: Novo contrasinal field_notes: Notas field_onthefly: Creación do usuario "ao voo" field_parent: Proxecto pai field_parent_title: Páxina pai field_password: Contrasinal field_password_confirmation: Confirmación field_port: Porto field_possible_values: Valores posibles field_priority: Prioridade field_project: Proxecto field_redirect_existing_links: Redireccionar ligazóns existentes field_regexp: Expresión regular field_role: Perfil field_searchable: Incluír nas buscas field_spent_on: Data field_start_date: Data de inicio field_start_page: Páxina principal field_status: Estado field_subject: Tema field_subproject: Proxecto secundario field_summary: Resumo field_time_zone: Zona horaria field_title: Título field_tracker: Tipo field_type: Tipo field_updated_on: Actualizado field_url: URL field_user: Usuario field_value: Valor field_version: Versión general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'Galician (Galego)' general_text_No: 'Non' general_text_Yes: 'Si' general_text_no: 'non' general_text_yes: 'si' label_activity: Actividade label_add_another_file: Engadir outro ficheiro label_add_note: Engadir unha nota label_added: engadido label_added_time_by: "Engadido por %{author} hai %{age}" label_administration: Administración label_age: Idade label_ago: "hai" label_all: todos label_all_words: Tódalas palabras label_and_its_subprojects: "%{value} e proxectos secundarios" label_applied_status: Aplicar estado label_assigned_to_me_issues: "Peticións asignadas a vostede" label_associated_revisions: Revisións asociadas label_attachment: Ficheiro label_attachment_delete: Borrar o ficheiro label_attachment_new: Novo ficheiro label_attachment_plural: Ficheiros label_attribute: Atributo label_attribute_plural: Atributos label_auth_source: Modo de autenticación label_auth_source_new: Novo modo de autenticación label_auth_source_plural: Modos de autenticación label_authentication: Autenticación label_blocked_by: bloqueado por label_blocks: bloquea a label_board: Foro label_board_new: Novo foro label_board_plural: Foros label_boolean: Booleano label_bulk_edit_selected_issues: Editar as peticións seleccionadas label_calendar: Calendario label_change_plural: Cambios label_change_properties: Cambiar propiedades label_change_status: Cambiar o estado label_change_view_all: Ver todos os cambios label_changes_details: Detalles de todos os cambios label_changeset_plural: Cambios label_chronological_order: En orde cronolóxica label_closed_issues: pechada label_closed_issues_plural: pechadas label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_comment: Comentario label_comment_add: Engadir un comentario label_comment_added: Comentario engadido label_comment_delete: Borrar comentarios label_comment_plural: Comentarios label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_commits_per_author: Remisións por autor label_commits_per_month: Remisións por mes label_confirmation: Confirmación label_contains: contén label_copied: copiado label_copy_workflow_from: Copiar fluxo de traballo dende label_current_status: Estado actual label_current_version: Versión actual label_custom_field: Campo personalizado label_custom_field_new: Novo campo personalizado label_custom_field_plural: Campos personalizados label_date: Data label_date_from: Dende label_date_range: Rango de datas label_date_to: Ata label_day_plural: días label_default: Predeterminada label_default_columns: Columnas predeterminadas label_deleted: suprimido label_details: Detalles label_diff_inline: liña por liña label_diff_side_by_side: un a cada lado label_disabled: deshabilitado label_display_per_page: "Por páxina: %{value}" label_document: Documento label_document_added: Documento engadido label_document_new: Novo documento label_document_plural: Documentos label_downloads_abbr: D/L label_duplicated_by: duplicada por label_duplicates: duplicada de label_enumeration_new: Novo valor label_enumerations: Listas de valores label_environment: Entorno label_equals: igual label_example: Exemplo label_export_to: 'Exportar a:' label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" label_feed_plural: Feeds label_feeds_access_key_created_on: "Chave de acceso por Atom creada hai %{value}" label_file_added: Ficheiro engadido label_file_plural: Ficheiros label_filter_add: Engadir o filtro label_filter_plural: Filtros label_float: Flotante label_follows: posterior a label_gantt: Gantt label_general: Xeral label_generate_key: Xerar chave label_help: Axuda label_history: Histórico label_home: Inicio label_in: en label_in_less_than: "en menos de" label_in_more_than: "en máis de" label_incoming_emails: Correos entrantes label_index_by_date: Ãndice por data label_index_by_title: Ãndice por título label_information: Información label_information_plural: Información label_integer: Número label_internal: Interno label_issue: Petición label_issue_added: Petición engadida label_issue_category: Categoría das peticións label_issue_category_new: Nova categoría label_issue_category_plural: Categorías das peticións label_issue_new: Nova petición label_issue_plural: Peticións label_issue_status: Estado da petición label_issue_status_new: Novo estado label_issue_status_plural: Estados das peticións label_issue_tracking: Peticións label_issue_updated: Petición actualizada label_issue_view_all: Ver todas as peticións label_issue_watchers: Seguidores label_issues_by: "Peticións por %{value}" label_jump_to_a_project: Ir ao proxecto… label_language_based: Baseado no idioma label_last_changes: "últimos %{count} cambios" label_last_month: último mes label_last_n_days: "últimos %{count} días" label_last_week: última semana label_latest_revision: Última revisión label_latest_revision_plural: Últimas revisións label_ldap_authentication: Autenticación LDAP label_less_than_ago: "hai menos de" label_list: Lista label_loading: Cargando… label_logged_as: "Identificado como" label_login: "Acceder" label_logout: "Saír" label_max_size: Tamaño máximo label_me: eu mesmo label_member: Membro label_member_new: Novo membro label_member_plural: Membros label_message_last: Última mensaxe label_message_new: Nova mensaxe label_message_plural: Mensaxes label_message_posted: Mensaxe engadida label_min_max_length: Lonxitude mín - máx label_modified: modificado label_module_plural: Módulos label_month: Mes label_months_from: meses de label_more_than_ago: "hai máis de" label_my_account: "Conta" label_my_page: "Páxina persoal" label_my_projects: "Proxectos persoais" label_new: Novo label_new_statuses_allowed: Novos estados autorizados label_news: Noticia label_news_added: Noticia engadida label_news_latest: Últimas noticias label_news_new: Nova noticia label_news_plural: Noticias label_news_view_all: Ver todas as noticias label_next: Seguinte label_no_change_option: (sen cambios) label_no_data: "Non hai ningún dato que mostrar." label_nobody: ninguén label_none: ningún label_not_contains: non contén label_not_equals: non igual label_open_issues: aberta label_open_issues_plural: abertas label_optional_description: Descrición opcional label_options: Opcións label_overview: Vistazo label_password_lost: "Esqueceu o contrasinal?" label_permissions: Permisos label_permissions_report: Informe de permisos label_plugins: Complementos label_precedes: anterior a label_preferences: Preferencias label_preview: "Vista previa" label_previous: Anterior label_project: Proxecto label_project_all: Tódolos proxectos label_project_latest: Últimos proxectos label_project_new: Novo proxecto label_project_plural: Proxectos label_x_projects: zero: "ningún proxecto" one: "un proxecto" other: "%{count} proxectos" label_public_projects: Proxectos públicos label_query: Consulta personalizada label_query_new: Nova consulta label_query_plural: Consultas personalizadas label_read: Ler… label_register: "Rexistrarse" label_registered_on: Inscrito o label_registration_activation_by_email: activación de conta por correo label_registration_automatic_activation: activación automática de conta label_registration_manual_activation: activación manual de conta label_related_issues: Peticións relacionadas label_relates_to: relacionada con label_relation_delete: Eliminar relación label_relation_new: Nova relación label_renamed: renomeado label_reply_plural: Respostas label_report: Informe label_report_plural: Informes label_reported_issues: "Peticións rexistradas por vostede" label_repository: Repositorio label_repository_plural: Repositorios label_result_plural: Resultados label_reverse_chronological_order: En orde cronolóxica inversa label_revision: Revisión label_revision_plural: Revisións label_roadmap: Planificación label_roadmap_due_in: "Remata en %{value}" label_roadmap_no_issues: Non hai peticións para esta versión label_roadmap_overdue: "%{value} tarde" label_role: Perfil label_role_and_permissions: Perfís e permisos label_role_new: Novo perfil label_role_plural: Perfís label_scm: SCM label_search: Busca label_search_titles_only: Buscar só en títulos label_send_information: Enviar información da conta ao usuario label_send_test_email: Enviar un correo de proba label_settings: Configuración label_show_completed_versions: Mostra as versións rematadas label_sort_by: "Ordenar por %{value}" label_spent_time: Tempo dedicado label_statistics: Estatísticas label_stay_logged_in: "Lembrar o contrasinal." label_string: Texto label_subproject_plural: Proxectos secundarios label_text: Texto largo label_theme: Tema label_this_month: este mes label_this_week: esta semana label_this_year: este ano label_time_tracking: Control de tempo label_today: hoxe label_topic_plural: Temas label_total: Total label_tracker: Tipo label_tracker_new: Novo tipo label_tracker_plural: Tipos de peticións label_updated_time: "Actualizado hai %{value}" label_updated_time_by: "Actualizado por %{author} hai %{age}" label_used_by: Utilizado por label_user: Usuario label_user_activity: "Actividade de %{value}" label_user_mail_no_self_notified: "Non quero ser avisado de cambios feitos por min mesmo." label_user_mail_option_all: "Para calquera evento en todos os proxectos." label_user_mail_option_selected: "Para calquera evento dos proxectos seleccionados…" label_user_new: Novo usuario label_user_plural: Usuarios label_version: Versión label_version_new: Nova versión label_version_plural: Versións label_view_diff: Ver diferencias label_view_revisions: Ver as revisións label_watched_issues: Peticións monitorizadas label_week: Semana label_wiki: Wiki label_wiki_edit: Wiki edición label_wiki_edit_plural: Wiki edicións label_wiki_page: Wiki páxina label_wiki_page_plural: Wiki páxinas label_workflow: Fluxo de traballo label_year: Ano label_yesterday: onte mail_body_account_activation_request: "Inscribiuse un novo usuario (%{value}). A conta está pendente de aprobación:" mail_body_account_information: Información sobre a súa conta mail_body_account_information_external: "Pode usar a súa conta %{value} para conectarse." mail_body_lost_password: 'Para cambiar o seu contrasinal, prema a seguinte ligazón:' mail_body_register: 'Para activar a súa conta, prema a seguinte ligazón:' mail_body_reminder: "%{count} petición(s) asignadas a ti rematan nos próximos %{days} días:" mail_subject_account_activation_request: "Petición de activación de conta %{value}" mail_subject_lost_password: "O teu contrasinal de %{value}" mail_subject_register: "Activación da conta de %{value}" mail_subject_reminder: "%{count} petición(s) rematarán nos próximos %{days} días" notice_account_activated: A súa conta foi activada. Xa pode conectarse. notice_account_invalid_credentials: "O usuario ou contrasinal non é correcto." notice_account_lost_email_sent: Enviouse un correo con instrucións para elixir un novo contrasinal. notice_account_password_updated: Contrasinal modificado correctamente. notice_account_pending: "A súa conta creouse e está pendente da aprobación por parte do administrador." notice_account_register_done: "A conta creouse correctamente. Recibirá unha ligazón na súa conta de correo electrónico, sígaa para activar a nova conta." notice_account_updated: Conta actualizada correctamente. notice_account_wrong_password: Contrasinal incorrecto. notice_can_t_change_password: Esta conta utiliza unha fonte de autenticación externa. Non é posible cambiar o contrasinal. notice_default_data_loaded: "A configuración predeterminada cargouse correctamente." notice_email_error: "Ocorreu un error enviando o correo (%{value})" notice_email_sent: "Enviouse un correo a %{value}" notice_failed_to_save_issues: "Imposible gravar %{count} petición(s) de %{total} seleccionada(s): %{ids}." notice_feeds_access_key_reseted: A súa chave de acceso para Atom reiniciouse. notice_file_not_found: A páxina á que tenta acceder non existe. notice_locking_conflict: Os datos modificáronse por outro usuario. notice_not_authorized: Non ten autorización para acceder a esta páxina. notice_successful_connection: "Accedeu correctamente." notice_successful_create: Creación correcta. notice_successful_delete: Borrado correcto. notice_successful_update: Modificación correcta. notice_unable_delete_version: Non se pode borrar a versión permission_add_issue_notes: Engadir notas permission_add_issue_watchers: Engadir seguidores permission_add_issues: Engadir peticións permission_add_messages: Enviar mensaxes permission_browse_repository: Ollar repositorio permission_comment_news: Comentar noticias permission_commit_access: Acceso de escritura permission_delete_issues: Borrar peticións permission_delete_messages: Borrar mensaxes permission_delete_own_messages: Borrar mensaxes propios permission_delete_wiki_pages: Borrar páxinas wiki permission_delete_wiki_pages_attachments: Borrar ficheiros permission_edit_issue_notes: Modificar notas permission_edit_issues: Modificar peticións permission_edit_messages: Modificar mensaxes permission_edit_own_issue_notes: Modificar notas propias permission_edit_own_messages: Editar mensaxes propios permission_edit_own_time_entries: Modificar tempos dedicados propios permission_edit_project: Modificar proxecto permission_edit_time_entries: Modificar tempos dedicados permission_edit_wiki_pages: Modificar páxinas wiki permission_log_time: Anotar tempo dedicado permission_manage_boards: Administrar foros permission_manage_categories: Administrar categorías de peticións permission_manage_files: Administrar ficheiros permission_manage_issue_relations: Administrar relación con outras peticións permission_manage_members: Administrar membros permission_manage_news: Administrar noticias permission_manage_public_queries: Administrar consultas públicas permission_manage_repository: Administrar repositorio permission_manage_versions: Administrar versións permission_manage_wiki: Administrar wiki permission_protect_wiki_pages: Protexer páxinas wiki permission_rename_wiki_pages: Renomear páxinas wiki permission_save_queries: Gravar consultas permission_select_project_modules: Seleccionar módulos do proxecto permission_view_calendar: Ver calendario permission_view_changesets: Ver cambios permission_view_documents: Ver documentos permission_view_files: Ver ficheiros permission_view_gantt: Ver diagrama de Gantt permission_view_issue_watchers: Ver lista de seguidores permission_view_messages: Ver mensaxes permission_view_time_entries: Ver tempo dedicado permission_view_wiki_edits: Ver histórico do wiki permission_view_wiki_pages: Ver wiki project_module_boards: Foros project_module_documents: Documentos project_module_files: Ficheiros project_module_issue_tracking: Peticións project_module_news: Noticias project_module_repository: Repositorio project_module_time_tracking: Control de tempo project_module_wiki: Wiki setting_activity_days_default: Días a mostrar na actividade do proxecto setting_app_title: Título da aplicación setting_attachment_max_size: Tamaño máximo do ficheiro setting_autofetch_changesets: Autorechear as remisións do repositorio setting_autologin: "Identificarse automaticamente." setting_commit_fix_keywords: Palabras chave para a corrección setting_commit_ref_keywords: Palabras chave para a referencia setting_cross_project_issue_relations: Permitir relacionar peticións de distintos proxectos setting_date_format: Formato da data setting_default_language: Idioma predeterminado setting_default_projects_public: "Os proxectos novos son públicos de maneira predeterminada." setting_diff_max_lines_displayed: Número máximo de diferencias mostradas setting_display_subprojects_issues: "Mostrar peticións de prox. secundarios no principal de maneira predeterminada." setting_emails_footer: Pe de mensaxes setting_enabled_scm: Activar SCM setting_feeds_limit: Límite de contido para sindicación setting_gravatar_enabled: Usar iconas de usuario (Gravatar) setting_host_name: Nome e ruta do servidor setting_issue_list_default_columns: "Columnas predeterminadas para a lista de peticións." setting_issues_export_limit: Límite de exportación de peticións setting_login_required: Requírese identificación setting_mail_from: Correo dende o que enviar mensaxes setting_mail_handler_api_enabled: Activar o programa para mensaxes entrantes setting_mail_handler_api_key: Chave da API setting_per_page_options: Obxectos por páxina setting_plain_text_mail: só texto plano (non HTML) setting_protocol: Protocolo setting_self_registration: Rexistro permitido setting_sequential_project_identifiers: Xerar identificadores de proxecto setting_sys_api_enabled: Activar o programa para a xestión do repositorio setting_text_formatting: Formato de texto setting_time_format: Formato de hora setting_user_format: Formato de nome de usuario setting_welcome_text: Texto de benvida setting_wiki_compression: Compresión do historial do Wiki status_active: activo status_locked: bloqueado status_registered: rexistrado text_are_you_sure: Está seguro? text_assign_time_entries_to_project: Asignar as horas ao proxecto text_caracters_maximum: "%{count} caracteres como máximo." text_caracters_minimum: "%{count} caracteres como mínimo." text_comma_separated: Múltiples valores permitidos (separados por coma). text_default_administrator_account_changed: "Cambiouse a conta predeterminada de administrador." text_destroy_time_entries: Borrar as horas text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. Que quere facer ? text_diff_truncated: '… Diferencia truncada por exceder o máximo tamaño visíbel.' text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios." text_enumeration_category_reassign_to: 'Reasignar ao seguinte valor:' text_enumeration_destroy_question: "%{count} obxectos con este valor asignado." text_file_repository_writable: Pódese escribir no repositorio text_issue_added: "Petición %{id} engadida por %{author}." text_issue_category_destroy_assignments: Deixar as peticións sen categoría text_issue_category_destroy_question: "Algunhas peticións (%{count}) están asignadas a esta categoría. Que desexa facer?" text_issue_category_reassign_to: Reasignar as peticións á categoría text_issue_updated: "A petición %{id} actualizouse por %{author}." text_issues_destroy_confirmation: 'Seguro que quere borrar as peticións seleccionadas?' text_issues_ref_in_commit_messages: Referencia e petición de corrección nas mensaxes text_length_between: "Lonxitude entre %{min} e %{max} caracteres." text_load_default_configuration: "Cargar a configuración predeterminada" text_no_configuration_data: "Inda non se configuraron perfiles, nin tipos, estados e fluxo de traballo asociado a peticións. Recoméndase encarecidamente cargar a configuración predeterminada. Unha vez cargada, poderá modificala." text_project_destroy_confirmation: Estás seguro de querer eliminar o proxecto? text_reassign_time_entries: 'Reasignar as horas a esta petición:' text_regexp_info: ex. ^[A-Z0-9]+$ text_repository_usernames_mapping: "Estableza a correspondencia entre os usuarios de Redmine e os presentes no historial do repositorio.\nOs usuarios co mesmo nome ou correo en Redmine e no repositorio serán asociados automaticamente." text_minimagick_available: MiniMagick dispoñíbel (opcional) text_select_mail_notifications: Seleccionar os eventos a notificar text_select_project_modules: 'Seleccione os módulos a activar para este proxecto:' text_status_changed_by_changeset: "Aplicado nos cambios %{value}" text_subprojects_destroy_warning: "Os proxectos secundarios: %{value} tamén se eliminarán" text_tip_issue_begin_day: tarefa que comeza este día text_tip_issue_begin_end_day: tarefa que comeza e remata este día text_tip_issue_end_day: tarefa que remata este día text_tracker_no_workflow: Non hai ningún fluxo de traballo definido para este tipo de petición text_unallowed_characters: Caracteres non permitidos text_user_mail_option: "Dos proxectos non seleccionados, só recibirá notificacións sobre elementos monitorizados ou elementos nos que estea involucrado (por exemplo, peticións das que vostede sexa autor ou asignadas a vostede)." text_user_wrote: "%{value} escribiu:" text_user_wrote_in: "%{value} escribiu (%{link}):" text_wiki_destroy_confirmation: Seguro que quere borrar o wiki e todo o seu contido? text_workflow_edit: Seleccionar un fluxo de traballo para actualizar warning_attachments_not_saved: "Non foi posíbel gardar %{count} ficheiros." field_editable: "Editábel" text_plugin_assets_writable: "Ten permisos de escritura no cartafol de recursos do complemento." label_display: "Mostrar" button_create_and_continue: "Crear en continuar" text_custom_field_possible_values_info: "Cada valor nunha liña." setting_repository_log_display_limit: "Número máximo de revisións que se mostran no ficheiro do historial." setting_file_max_size_displayed: "Tamaño máximo dos ficheiros de texto que se mostran liña por liña." field_watcher: "Seguidor" field_content: "Contido" label_descending: "Descendente" label_sort: "Ordenar" label_ascending: "Ascendente" label_date_from_to: "De %{start} a %{end}" label_greater_or_equal: ">=" label_less_or_equal: "<=" text_wiki_page_destroy_question: "Esta páxina ten %{descendants} subpáxinas e descendentes. Que quere facer?" text_wiki_page_reassign_children: "Asignar as subpáxinas a esta páxina superior." text_wiki_page_nullify_children: "Manter as subpáxinas como páxinas raíz." text_wiki_page_destroy_children: "Eliminar as subpáxinas e todas as súas descendentes." setting_password_min_length: "Lonxitude mínima dos contrasinais" field_group_by: "Agrupar os resultados por" mail_subject_wiki_content_updated: "Actualizouse a páxina «%{id}» do wiki." label_wiki_content_added: "Engadiuse unha páxina ao wiki." mail_subject_wiki_content_added: "Engadiuse a páxina «%{id}» ao wiki." mail_body_wiki_content_added: "%{author} engadiu a páxina «%{id}» ao wiki." label_wiki_content_updated: "Actualizouse a páxina." mail_body_wiki_content_updated: "%{author} actualizou a páxina «%{id}» do wiki." permission_add_project: "Crear un proxecto" setting_new_project_user_role_id: "Rol que se lle dá aos usuarios que non son administradores e crear algún proxecto." label_view_all_revisions: "Ver todas as revisións" label_tag: "Etiqueta" label_branch: "Rama" error_no_tracker_in_project: "Non hai ningún tipo de petición asociado con este proxecto. Revise a configuración do proxecto." error_no_default_issue_status: "Non se definiu un estado predeterminado para as peticións. Revise a configuración desde «Administración → Estados das peticións»." text_journal_changed: "O campo «%{label}» cambiou de «%{old}» a «%{new}»." text_journal_set_to: "O campo «%{label}» é agora «%{value}»." text_journal_deleted: "Eliminouse o campo «%{label}» (%{old})." label_group_plural: "Grupos" label_group: "Grupo" label_group_new: "Crear un grupo" label_time_entry_plural: "Tempo empregado" text_journal_added: "Engadiuse o campo «%{label}» co valor «%{value}»." field_active: "Activo" enumeration_system_activity: "Actividade do sistema" permission_delete_issue_watchers: "Eliminar os seguidores" version_status_closed: "pechada" version_status_locked: "bloqueada" version_status_open: "aberta" error_can_not_reopen_issue_on_closed_version: "Non se pode volver abrir unha petición que estea asignada a unha versión pechada." label_user_anonymous: "Anónimo" button_move_and_follow: "Mover e seguir" setting_default_projects_modules: "Módulos activados de maneira predeterminada para novos proxectos." setting_gravatar_default: "Imaxe de Gravatar predeterminada" field_sharing: "Compartir" label_version_sharing_hierarchy: "Coa xerarquía do proxecto" label_version_sharing_system: "Con todos os proxectos" label_version_sharing_descendants: "Cos subproxectos" label_version_sharing_tree: "Coa árbore de proxectos" label_version_sharing_none: "Non compartir" error_can_not_archive_project: "Non é posíbel arquivar este proxecto." button_copy_and_follow: "Copiar e seguir" label_copy_source: "Fonte" setting_issue_done_ratio: "Calcular a proporción de peticións completadas mediante" setting_issue_done_ratio_issue_status: "O estado das peticións" error_issue_done_ratios_not_updated: "Non se actualizaron as proporcións de peticións completadas." error_workflow_copy_target: "Seleccione os tipos de petición e os roles." setting_issue_done_ratio_issue_field: "Use o campo da petición" label_copy_same_as_target: "O mesmo que o de destino" label_copy_target: "Petición de destino" notice_issue_done_ratios_updated: "Actualizáronse as proporcións de peticións completadas." error_workflow_copy_source: "Seleccione un tipo de petición e rol de orixe." label_update_issue_done_ratios: "Actualizar as proporcións de peticións completadas" setting_start_of_week: "Que os calendarios comecen o" permission_view_issues: "Ver as peticións" label_display_used_statuses_only: "Só mostrar os estados que osa este tipo de petición." label_revision_id: "Revisión %{value}" label_api_access_key: "Chave de acceso á API" label_api_access_key_created_on: "A chave de acceso á API creouse hai %{value}." label_feeds_access_key: "Chave de acceso mediante Atom" notice_api_access_key_reseted: "Restableceuse a súa chave de acceso á API." setting_rest_api_enabled: "Activar o servizo web REST." label_missing_api_access_key: "Necesita unha chave de acceso á API." label_missing_feeds_access_key: "Necesita unha chave de acceso mediante Atom." button_show: "Mostrar" text_line_separated: "Permítense varios valores (un por liña)." setting_mail_handler_body_delimiters: "Acurtar as mensaxes a partir dunha destas liñas." permission_add_subprojects: "Crear subproxectos" label_subproject_new: "Crear un sobproxecto" text_own_membership_delete_confirmation: |- Está a piques de eliminar todos ou parte dos permisos de que dispón, e pode que en canto remate perda a capacidade de facer máis cambios neste proxecto. Está seguro de que quere continuar? label_close_versions: "Pechar as versións completadas" label_board_sticky: "Destacado" label_board_locked: "Bloqueado" permission_export_wiki_pages: "Exportar as páxinas do wiki" setting_cache_formatted_text: "Gardar o texto formatado na caché." permission_manage_project_activities: "Xestionar as actividades do proxecto" error_unable_delete_issue_status: "Non foi posíbel eliminar o estado da petición. (%{value})" label_profile: "Perfil" permission_manage_subtasks: "Xestionar as subtarefas" field_parent_issue: "Tarefa superior" label_subtask_plural: "Subtarefas" label_project_copy_notifications: "Enviar notificacións por correo electrónico durante a copia do proxecto." error_can_not_delete_custom_field: "Non foi posíbel eliminar o campo personalizado." error_unable_to_connect: "Non foi posíbel conectarse (%{value})." error_can_not_remove_role: "Este rol non pode eliminarse porque está a usarse." error_can_not_delete_tracker_html: "Este tipo de petición non pode eliminarse porque existen peticións deste tipo.

    The following projects have issues with this tracker:
    %{projects}

    " field_principal: Usuario ou Grupo notice_failed_to_save_members: "Non foi posíbel gardar os membros: %{errors}." text_zoom_out: "Afastar" text_zoom_in: "Achegar" notice_unable_delete_time_entry: "Non foi posíbel eliminar a entrada do historial." field_time_entries: "Rexistrar tempo" project_module_gantt: "Gantt" project_module_calendar: "Calendario" button_edit_associated_wikipage: "Editar a páxina do wiki asociada: %{page_title}" field_text: "Campo de texto" setting_default_notification_option: "Opción de notificación predeterminada" label_user_mail_option_only_my_events: "Só para as cousas que sigo ou nas que estou involucrado" label_user_mail_option_none: "Non hai eventos." field_member_of_group: "Grupo do asignado" field_assigned_to_role: "Rol do asignado" notice_not_authorized_archived_project: "O proxecto ao que intenta acceder está arquivado." label_principal_search: "Buscar un usuario ou grupo:" label_user_search: "Buscar un usuario:" field_visible: "Visíbel" setting_commit_logtime_activity_id: "Actividade de tempo rexistrado" text_time_logged_by_changeset: "Aplicado nos cambios %{value}." setting_commit_logtime_enabled: "Activar o rexistro de tempo." notice_gantt_chart_truncated: "O diagrama recortouse porque se superou o número de elementos que pode mostrar (%{max})." setting_gantt_items_limit: "Número máximo de elementos que se poden mostrar no diagrama de Gantt." field_warn_on_leaving_unsaved: "Avisarme antes de pechar unha páxina que conteña texto sen gardar." text_warn_on_leaving_unsaved: "A páxina actual contén texto sen gardar que se perderá se continúa." label_my_queries: "Consultas personalizadas" text_journal_changed_no_detail: "Actualizouse o campo «%{label}»." label_news_comment_added: "Engadiuse un comentario a unha nova." button_expand_all: "Expandilo todo" button_collapse_all: "Recollelo todo" label_additional_workflow_transitions_for_assignee: "Transicións adicionais que se lle permiten ao asignado" label_additional_workflow_transitions_for_author: "Transicións adicionais que se lle permiten ao autor" label_bulk_edit_selected_time_entries: "Editar as entradas de tempo seleccionadas á vez" text_time_entries_destroy_confirmation: "Está seguro de que quere eliminar as entradas de tempo seleccionadas?" label_role_anonymous: "Anónimo" label_role_non_member: "Non membro" label_issue_note_added: "Engadiuse a nota." label_issue_status_updated: "Actualizouse o estado." label_issue_priority_updated: "Actualizouse a prioridade." label_issues_visibility_own: "Peticións creadas polo usuario ou asignadas a el" field_issues_visibility: "Visibilidade das peticións" label_issues_visibility_all: "Todas as peticións" permission_set_own_issues_private: "Peticións propias públicas ou privadas" field_is_private: "Privadas" permission_set_issues_private: "Peticións públicas ou privadas" label_issues_visibility_public: "Todas as peticións non privadas" text_issues_destroy_descendants_confirmation: "Isto tamén eliminará %{count} subtareas." field_commit_logs_encoding: "Codificación das mensaxes das remisións" field_scm_path_encoding: "Codificación das rutas" text_scm_path_encoding_note: "Predeterminada: UTF-8" field_path_to_repository: "Ruta do repositorio" field_root_directory: "Cartafol raíz" field_cvs_module: "Módulo" field_cvsroot: "CVSROOT" text_mercurial_repository_note: "Repositorio local (por exemplo «/hgrepo» ou «C:\\hgrepo»)" text_scm_command: "Orde" text_scm_command_version: "Versión" label_git_report_last_commit: "Informar da última remisión de ficheiros e cartafoles" notice_issue_successful_create: "Creouse a petición %{id}." label_between: "entre" setting_issue_group_assignment: "Permitir asignar peticións a grupos." label_diff: "Diferencias" text_git_repository_note: "O repositorio está baleiro e é local (por exemplo, «/gitrepo» ou «C:\\gitrepo»)" description_query_sort_criteria_direction: "Dirección da orde" description_project_scope: "Ãmbito da busca" description_filter: "Filtro" description_user_mail_notification: "Configuración das notificacións por correo electrónico" description_message_content: "Contido da mensaxe" description_available_columns: "Columnas dispoñíbeis" description_issue_category_reassign: "Escolla a categoría da petición." description_search: "Campo de busca" description_notes: "Notas" description_choose_project: "Proxectos" description_query_sort_criteria_attribute: "Ordenar polo atributo" description_wiki_subpages_reassign: "Escoller unha nova páxina superior" description_selected_columns: "Columnas seleccionadas" label_parent_revision: "Revisión superior" label_child_revision: "Subrevisión" error_scm_annotate_big_text_file: "Non pode engadirse unha anotación á entrada, supera o tamaño máximo para os ficheiros de texto." setting_default_issue_start_date_to_creation_date: "usar a data actual como a data de inicio das novas peticións." button_edit_section: "Editar esta sección" setting_repositories_encodings: "Anexos e codificación dos repositorios" description_all_columns: "Todas as columnas" button_export: "Exportar" label_export_options: "Opcións de exportación a %{export_format}" error_attachment_too_big: "Non é posíbel enviar este ficheiro porque o seu tamaño supera o máximo permitido (%{max_size})." notice_failed_to_save_time_entries: "Non foi posíbel gardar %{count} das %{total} entradas de tempo seleccionadas: %{ids}." label_x_issues: zero: "0 peticións" one: "1 petición" other: "%{count} peticións" label_repository_new: "Engadir un repositorio" field_repository_is_default: "Repositorio principal" label_copy_attachments: "Copiar os anexos" label_item_position: "%{position}/%{count}" label_completed_versions: "Versións completadas" text_project_identifier_info: "Só se permiten letras latinas minúsculas (a-z), díxitos, guións e guións baixos.
    Non pode cambiar o identificador despois de gardalo." field_multiple: "Varios valores" setting_commit_cross_project_ref: "Permitir ligar e solucionar peticións do resto de proxectos." text_issue_conflict_resolution_add_notes: "Engadir as notas e descartar o resto dos cambios." text_issue_conflict_resolution_overwrite: "Aplicar os cambios de todos xeitos (as notas anteriores manteranse, pero pode que se perda algún dos outros cambios)." notice_issue_update_conflict: "Outro usuario actualizou a petición mentres vostede estaba a modificala." text_issue_conflict_resolution_cancel: "Descartar todos os meus cambios e volver mostrar %{link}." permission_manage_related_issues: "Xestionar as peticións relacionadas" field_auth_source_ldap_filter: "Filtro de LDAP" label_search_for_watchers: "Buscar seguidores que engadir" notice_account_deleted: "A súa conta eliminouse de maneira permanente." setting_unsubscribe: "Permitirlle aos usuarios eliminar as súas contas." button_delete_my_account: "Eliminar a miña conta." text_account_destroy_confirmation: |- Está seguro de que quere continuar? A súa conta eliminarase de maneira permanente, e non poderá volvela activar nunca. error_session_expired: "Caducou a sesión, acceda de novo ao sitio." text_session_expiration_settings: "Advertencia: ao cambiar estas opcións é posíbel que caduquen todas as sesións actuais, incluída a súa, e todos os usuarios deban identificarse de novo." setting_session_lifetime: "Tempo de vida máximo das sesións" setting_session_timeout: "Tempo de inactividade máximo das sesións" label_session_expiration: "Caducidade das sesións" permission_close_project: "Pechar ou volver abrir o proxecto" button_close: "Pechar" button_reopen: "Volver abrir" project_status_active: "activo" project_status_closed: "pechado" project_status_archived: "arquivado" text_project_closed: "O proxecto está pechado, e só admite accións de lectura." notice_user_successful_create: "Creouse o usuario %{id}." field_core_fields: "Campos estándar" field_timeout: "Tempo límite (en segundos)" setting_thumbnails_enabled: "Mostrar as miniaturas dos anexos." setting_thumbnails_size: "Tamaño das miniaturas (en píxeles)" label_status_transitions: "Transicións de estado" label_fields_permissions: "Permisos dos campos" label_readonly: "Só lectura" label_required: "Necesario" text_repository_identifier_info: "Só se permiten letras minúsculas latinas (a-z), díxitos, guións e guións baixos.
    Non pode cambiar o identificador unha vez queda gardado." field_board_parent: "Foro superior" label_attribute_of_project: "%{name} do proxecto" label_attribute_of_author: "%{name} do autor" label_attribute_of_assigned_to: "%{name} do asignado" label_attribute_of_fixed_version: "%{name} da versión de destino" label_copy_subtasks: "Copiar as subtarefas" label_copied_to: "copiado a" label_copied_from: "copiado de" label_any_issues_in_project: "calquera petición do proxecto" label_any_issues_not_in_project: "calquera petición fóra do proxecto" field_private_notes: "Notas privadas" permission_view_private_notes: "Ver as notas privadas" permission_set_notes_private: "Marcar as notas como privadas" label_no_issues_in_project: "O proxecto non ten peticións." label_any: "todos" label_last_n_weeks: "ultimas %{count} semanas" setting_cross_project_subtasks: "Permitir tarefas en varios proxectos" label_cross_project_descendants: "Con subproxectos" label_cross_project_tree: "Con árbore de proxectos" label_cross_project_hierarchy: "Con xerarquía de proxectos" label_cross_project_system: "Con todos os proxectos" button_hide: "Agochar" setting_non_working_week_days: "Días non lectivos" label_in_the_next_days: "nos seguintes" label_in_the_past_days: "nos últimos" label_attribute_of_user: "%{name} do usuario" text_turning_multiple_off: "Se desactiva varios valores, eliminaranse varios valores para preservar só un valor por elemento." label_attribute_of_issue: "%{name} da petición" permission_add_documents: "Engadir documentos" permission_edit_documents: "Editar os documentos" permission_delete_documents: "Eliminar os documentos" label_gantt_progress_line: "Liña do progreso" setting_jsonp_enabled: "Activar a compatibilidade con JSONP." field_inherit_members: "Herdar os membros" field_closed_on: "Pechado" field_generate_password: "Xerar un contrasinal" setting_default_projects_tracker_ids: "Tipos de petición predeterminados para novos proxectos." label_total_time: "Total" text_scm_config: "Pode configurar as súas ordes de SCM en «config/configuration.yml». Reinicie o programa despois de gardar os cambios." text_scm_command_not_available: "A orde de SCM non está dispoñíbel. Revise a opción desde o panel de administración." setting_emails_header: "Cabeceira da mensaxe" notice_account_not_activated_yet: 'Aínda non activou a conta. Siga esta ligazón para solicitar unha nova mensaxe de confirmación.' notice_account_locked: "A conta está bloqueada." label_hidden: "Agochado" label_visibility_private: "só para min" label_visibility_roles: "só para estes roles" label_visibility_public: "para calquera usuario" field_must_change_passwd: "Debe cambiar de contrasinal a seguinte vez que acceda ao sitio." notice_new_password_must_be_different: "O novo contrasinal non pode ser idéntico ao contrasinal actual." setting_mail_handler_excluded_filenames: "Excluír anexos por nome" text_convert_available: "O programa «convert» de ImageMagick está dispoñíbel (opcional)." label_link: "Ligazón" label_only: "só" label_drop_down_list: "lista despregábel" label_checkboxes: "caixas de opción múltiple" label_link_values_to: "Ligar os valores co URL" setting_force_default_language_for_anonymous: "Definir un idioma predeterminado para os usuarios anónimos." setting_force_default_language_for_loggedin: "Definir un idioma predeterminado para os usuarios rexistrados." label_custom_field_select_type: "Seleccionar o tipo de obxecto ao que se anexará o campo personalizado." label_issue_assigned_to_updated: "Actualizouse o asignado." label_check_for_updates: "Comprobar se hai actualizacións" label_latest_compatible_version: "Última versión compatíbel" label_unknown_plugin: "Complemento descoñecido" label_radio_buttons: "caixas de opción única" label_group_anonymous: "Usuarios anónimos" label_group_non_member: "Usuarios non membros" label_add_projects: "Engadir proxectos" field_default_status: "Estado predeterminado" text_subversion_repository_note: "Exemplos: file:///, http://, https://, svn://, svn+[esquema de túnel]://" field_users_visibility: "Visibilidade dos usuarios" label_users_visibility_all: "Todos os usuarios activos" label_users_visibility_members_of_visible_projects: "Membros de proxectos visíbeis" label_edit_attachments: "Editar os ficheiros anexos" setting_link_copied_issue: "Ligar aos tíckets ao copialos" label_link_copied_issue: "Ligar ao tícket copiado" label_ask: "Preguntar" label_search_attachments_yes: Buscar nomes e descricións dos ficheiros label_search_attachments_no: Non buscar ficheiros label_search_attachments_only: Buscar só ficheiros label_search_open_issues_only: Só peticións abertas field_address: Correo electrónico setting_max_additional_emails: Máximo número de enderezos de correo adicionais label_email_address_plural: Correos label_email_address_add: Engadir enderezo de correo label_enable_notifications: Activar notificacións label_disable_notifications: Desactivar notificacións setting_search_results_per_page: Resultados da busca por páxina label_blank_value: En branco permission_copy_issues: Copiar peticións error_password_expired: A túa contrasinal caducou ou o administrador obrígate a cambiala. field_time_entries_visibility: Visibilidade das entradas de tempo setting_password_max_age: Obrigar a cambiar a contrasinal despois de label_parent_task_attributes: Atributos da tarefa pai label_parent_task_attributes_derived: Calculada a partir das subtarefas label_parent_task_attributes_independent: Independente das subtarefas label_time_entries_visibility_all: Todas as entradas de tempo label_time_entries_visibility_own: Horas creadas polo usuario label_member_management: Xestión de membros label_member_management_all_roles: Todos os roles label_member_management_selected_roles_only: Só estes roles label_password_required: Confirma a túa contrasinal para continuar label_total_spent_time: "Tempo total empregado" notice_import_finished: "%{count} elementos foron importados" notice_import_finished_with_errors: "%{count} dun total de %{total} elementos non puideron ser importados" error_invalid_file_encoding: O ficheiro non é un ficheiro codificado %{encoding} válido error_invalid_csv_file_or_settings: O ficheiro non é un arquivo CSV ou non coincide coas opcións de abaixo (%{value}) error_can_not_read_import_file: Aconteceu un erro lendo o ficheiro a importar permission_import_issues: Importar peticións label_import_issues: Importar peticións label_select_file_to_import: Selecciona o ficheiro a importar label_fields_separator: Separador dos campos label_fields_wrapper: Envoltorio dos campos label_encoding: Codificación label_comma_char: Coma label_semi_colon_char: Punto e coma label_quote_char: Comilla simple label_double_quote_char: Comilla dobre label_fields_mapping: Mapeo de campos label_file_content_preview: Vista previa do contido label_create_missing_values: Crear valores non presentes button_import: Importar field_total_estimated_hours: Total de tempo estimado label_api: API label_total_plural: Totais label_assigned_issues: Peticións asignadas label_field_format_enumeration: Listaxe chave/valor label_f_hour_short: '%{value} h' field_default_version: Versión predeterminada error_attachment_extension_not_allowed: A extensión anexada %{extension} non é permitida setting_attachment_extensions_allowed: Extensións permitidas setting_attachment_extensions_denied: Extensións prohibidas label_any_open_issues: Calquera petición aberta label_no_open_issues: Peticións non abertas label_default_values_for_new_users: Valor predeterminado para novos usuarios error_ldap_bind_credentials: A conta/contrasinal do LDAP non é válida setting_sys_api_key: Chave da API setting_lost_password: Esqueceu a contrasinal? mail_subject_security_notification: Notificación de seguridade mail_body_security_notification_change: ! '%{field} modificado.' mail_body_security_notification_change_to: ! '%{field} modificado por %{value}.' mail_body_security_notification_add: ! '%{field} %{value} engadido.' mail_body_security_notification_remove: ! '%{field} %{value} eliminado.' mail_body_security_notification_notify_enabled: O correo electrónico %{value} agora recibirá notificacións mail_body_security_notification_notify_disabled: O correo electrónico %{value} deixará de recibir notificacións mail_body_settings_updated: ! 'As seguintes opcións foron actualizadas:' field_remote_ip: Enderezo IP label_wiki_page_new: Nova páxina wiki label_relations: Relacións button_filter: Filtro mail_body_password_updated: A súa contrasinal foi cambiada. label_no_preview: Non hai vista previa dispoñible error_no_tracker_allowed_for_new_issue_in_project: O proxecto non ten ningún tipo para que poida crear unha petición label_tracker_all: Tódolos tipos label_new_project_issue_tab_enabled: Amosar a lapela "Nova petición" setting_new_item_menu_tab: Lapela no menú de cada proxecto para creación de novos obxectos label_new_object_tab_enabled: Amosar a lista despregable "+" error_no_projects_with_tracker_allowed_for_new_issue: Non hai proxectos con tipos para as que poida crear unha petición field_textarea_font: Fonte usada nas áreas de texto label_font_default: Fonte por defecto label_font_monospace: Fonte Monospaced label_font_proportional: Fonte Proporcional setting_timespan_format: Formato de período temporal label_table_of_contents: Ãndice de contidos setting_commit_logs_formatting: Aplicar formateo de texto para as mensaxes de commit setting_mail_handler_enable_regex: Activar expresións regulares error_move_of_child_not_possible: 'A subtarefa %{child} non se pode mover ao novo proxecto: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: O tempo empregado non pode ser reasignado a unha petición que vai ser eliminada setting_timelog_required_fields: Campos obrigatorios para as imputacións de tempo label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Só para as cousas que sigo ou que teño asignado label_user_mail_option_only_owner: Só para as cousas que sigo ou son o propietario warning_fields_cleared_on_bulk_edit: Os cambios provocarán o borrado automático dos valores de un ou máis campos dos obxectos seleccionados field_updated_by: Actualizado por field_last_updated_by: Última actualización por field_full_width_layout: Deseño para ancho completo label_last_notes: Últimas notas field_digest: Suma de verificación field_default_assigned_to: Asignado por defecto setting_show_custom_fields_on_registration: Amosar os campos personalizados no rexistro permission_view_news: Ver noticias label_no_preview_alternative_html: Non hai vista previa dispoñible. %{link} o ficheiro no seu lugar. label_no_preview_download: Descargar setting_close_duplicate_issues: Pechar as peticións duplicadas de xeito automático error_exceeds_maximum_hours_per_day: Non se poden imputar máis de %{max_hours} horas no mesmo día (%{logged_hours} horas teñen sido xa imputadas) setting_time_entry_list_defaults: Configuración por defecto do tempo imputado setting_timelog_accept_0_hours: Admitir tempo imputado con 0 horas setting_timelog_max_hours_per_day: Máximo número de horas que poden imputarse por día e usuario label_x_revisions: "%{count} revisións" error_can_not_delete_auth_source: Este método de autenticación está en uso e non pode ser borrado. button_actions: Accións mail_body_lost_password_validity: Por favor, teña en conta que só pode cambiar a contrasinal unha vez usando esta ligazón. text_login_required_html: Cando non precisan autenticación os proxectos públicos e os seus contidos están dispoñibles libremente na rede. Vostede pode editar os permisos aplicados. label_login_required_yes: 'Si' label_login_required_no: Non, permitir acceso anónimo aos proxectos públicos text_project_is_public_non_member: Os proxectos públicos e os seus contidos están dispoñibles para todos os usuarios logueados. text_project_is_public_anonymous: Os proxectos públicos e os seus contidos están dispoñibles libremente na rede. label_version_and_files: Versións (%{count}) e Ficheiros label_ldap: LDAP label_ldaps_verify_none: LDAPS (sen comprobación de certificado) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Se recomenda usar unha conexión LDAPS con comprobación de certificado para evitar calquera manipulación durante o proceso de autenticación. label_nothing_to_preview: Nada que previsualizar error_token_expired: Esta ligazón para recuperar a contrasinal ten caducado, por favor, tente de novo. error_spent_on_future_date: Non pode imputar tempo nunha data futura setting_timelog_accept_future_dates: Permitir imputar tempo en datas futuras label_delete_link_to_subtask: Eliminar relación error_not_allowed_to_log_time_for_other_users: Vostede non ten permitido imputar tempo para outros usuarios permission_log_time_for_other_users: Imputar tempo dedicado a outros usuarios label_tomorrow: mañá label_next_week: próxima semana label_next_month: próximo mes text_role_no_workflow: Non hai fluxo de traballo definido para este rol text_status_no_workflow: Ningún tipo de tarefa usa este estado nos fluxos de traballo setting_mail_handler_preferred_body_part: Parte preferida dos correos multiparte (HTML) setting_show_status_changes_in_mail_subject: Amosar os cambios de estado no asunto das notificacións de correo das tarefas label_inherited_from_parent_project: Herdado do proxecto pai label_inherited_from_group: Herdado do grupo %{name} label_trackers_description: Descricións dos tipos de tarefas label_open_trackers_description: Ver as descricións de todos os tipos de tarefas label_preferred_body_part_text: Texto label_preferred_body_part_html: HTML field_parent_issue_subject: Asunto da tarefa pai permission_edit_own_issues: Editar as propias tarefas text_select_apply_tracker: Seleccionar o tipo de tarefa label_updated_issues: Tarefas actualizadas text_avatar_server_config_html: O servidor de avatares é actualmente %{url}. Vostede o pode configurar en config/configuration.yml. setting_gantt_months_limit: Máximo número de meses amosados no diagrama de gantt permission_import_time_entries: Importar tempos dedicados label_import_notifications: Enviar notificacións de correo durante a importación text_gs_available: Soporte de PDF ImageMagick dispoñible (opcional) field_recently_used_projects: Número de proxectos recentemente usados no despregable de proxectos label_optgroup_bookmarks: Favoritos label_optgroup_recents: Usado recentemente button_project_bookmark: Engadir favoritos button_project_bookmark_delete: Borrar favoritos field_history_default_tab: Lapela por defecto no histórico de tarefas label_issue_history_properties: Cambios nas propiedades label_issue_history_notes: Notas label_last_tab_visited: Última lapela visitada field_unique_id: ID único text_no_subject: sen asunto setting_password_required_char_classes: Clases de caracteres requeridos para as contrasinais label_password_char_class_uppercase: letras maiúsculas label_password_char_class_lowercase: letras minúsculas label_password_char_class_digits: díxitos label_password_char_class_special_chars: caracteres especiais text_characters_must_contain: Debe conter %{character_classes}. label_starts_with: comeza con label_ends_with: finaliza con label_issue_fixed_version_updated: Versión destino actualizada setting_project_list_defaults: Listaxes por defecto dos proxectos label_display_type: Amosar os resultados coma label_display_type_list: Listaxe label_display_type_board: Taboleiro label_my_bookmarks: Meus favoritos label_import_time_entries: Importar tempos dedicados field_toolbar_language_options: Idiomas da barra de ferramentas de resaltado de código label_user_mail_notify_about_high_priority_issues_html: Tamén notifícame sobre as tarefas cunha prioridade %{prio} ou maior label_assign_to_me: Asignar a min notice_issue_not_closable_by_open_tasks: Esta tarefa non pode ser pechada porque ten polo menos unha subtarefa aberta. notice_issue_not_closable_by_blocking_issue: Esta tarefa non pode ser pechada porque está bloqueada polo menos por unha tarefa aberta. notice_issue_not_reopenable_by_closed_parent_issue: Esta tarefa non pode ser reaberta porque a súa tarefa pai está pechada. error_bulk_download_size_too_big: Os ficheiros non poden ser descargados á vez porque o tamaño total excede o máximo autorizado (%{max_size}) setting_bulk_download_max_size: Tamaño máximo para descargar á vez label_download_all_attachments: Descargar todos os ficheiros error_attachments_too_many: Este ficheiro non pode ser subido porque excede o número máximo de ficheiros que poden ser achegados de xeito simultáneo (%{max_number_of_files}) setting_email_domains_allowed: Dominios de correo permitidos setting_email_domains_denied: Dominios de correo prohibidos field_passwd_changed_on: Password cambiado por última vez label_relations_mapping: Correspondencia de relacións label_import_users: Importar usuarios label_days_to_html: "%{days} días ata %{date}" setting_twofa: Autenticación de dous factores label_optional: opcional label_required_lower: obrigatorio button_disable: Deshabilitar twofa__totp__name: Aplicación de autenticación twofa__totp__text_pairing_info_html: Escanea este código QR ou introduce a chave de texto plano nunha aplicación de 2 factores (e.x. Google Authenticator, Authy, Duo Mobile) e mete o código no campo de debaixo para activar a autenticación de 2 factores. twofa__totp__label_plain_text_key: Chave de texto plano twofa__totp__label_activate: Habilitar aplicación de atenticación twofa_currently_active: 'Activo agora mesmo: %{twofa_scheme_name}' twofa_not_active: Sen activar twofa_label_code: Código twofa_hint_disabled_html: Configurar %{label} desactivará e desvinculará a autenticación de dous factores para todos os usuarios. twofa_hint_required_html: Configurar %{label} requerirá a todos os usuarios configurar autenticación de dous factores no seu seguinte acceso. twofa_label_setup: Establecer autenticación de dous factores twofa_label_deactivation_confirmation: Desactivar autenticación de dous factores twofa_notice_select: 'Por favor seleccione o esquema de dous factores que desexa usar:' twofa_warning_require: O administrador obriga a que habilite autenticación de dous factores. twofa_activated: Autenticación de dous factores habilitada con éxito. Se recomenda xerar códigos de respaldo para a súa conta. twofa_deactivated: Autenticación de dous factores deshabilitada. twofa_mail_body_security_notification_paired: Autenticación de dous factores habilitada con éxito usando %{field}. twofa_mail_body_security_notification_unpaired: Autenticación de dous factores deshabilitada para a túa conta. twofa_mail_body_backup_codes_generated: Xerados novos códigos de respaldo de autenticación de dous factores. twofa_mail_body_backup_code_used: Un código de respaldo de autenticación de dous factores foi utilizado. twofa_invalid_code: O código non é válido ou caducou. twofa_label_enter_otp: Por favor, introduza su código de autenticación de dous factores. twofa_too_many_tries: Demasiados intentos. twofa_resend_code: Reenviar código twofa_code_sent: Enviouse a vostede un código de autenticación. twofa_generate_backup_codes: Xerar códigos de respaldo twofa_text_generate_backup_codes_confirmation: Esto invalidará todos os códigos de respaldo existentes e xerará uns novos. Desexa continuar? twofa_notice_backup_codes_generated: Os seus códigos de respaldo foron xerados twofa_warning_backup_codes_generated_invalidated: Novos códigos de respaldo foron xerados. Os seus códigos existentes de %{time} agora son inválidos. twofa_label_backup_codes: Códigos de respaldo de autenticación de dous factores twofa_text_backup_codes_hint: Use estes códigos en troques de contrasinais dun único uso caso de non ter acceso ao seu segundo factor. Cada código só pode usarse unha vez. É recomendable imprimilos e gardalos nun lugar seguro. twofa_text_backup_codes_created_at: Códigos de respaldo xerados o %{datetime}. twofa_backup_codes_already_shown: Os códigos de respaldo non pode ser amosados de novo, por favor cree novos códigos de respaldo se é preciso. error_can_not_execute_macro_html: Error ao executar a %{name} macro (%{error}) error_macro_does_not_accept_block: Esta macro non acepta un bloque de texto error_childpages_macro_no_argument: Sen argumento esta macro só pode ser chamada dende as páxinas wiki error_circular_inclusion: Detectada unha inclusión circular error_page_not_found: Páxina no atopada error_filename_required: Se precisa nome de ficheiro error_invalid_size_parameter: O parámetro de tamaño é inválido error_attachment_not_found: Ficheiro %{name} non atopado permission_delete_project: Borrar o proxecto field_twofa_scheme: Esquema de autenticación de dous factores text_user_destroy_confirmation: Está vostede seguro de querer borrar este usuario e eliminar todas as referencias a el? Isto non se pode desfacer. Ãs veces bloquear un usuario en troques de borralo é a mellor solución. Para confirmar, por favor introduza o seu usuario (%{login}) debaixo. text_project_destroy_enter_identifier: Para confirmar, por favor introduza o identificador do proxecto. (%{identifier}) debaixo. button_add_subtask: Engadir subtarefa notice_invalid_watcher: 'Invalid watcher: O usuario non recibirá ningunha notificación porque non ten acceso a ver este obxecto.' button_fetch_changesets: Recoller os cambios permission_view_message_watchers: Ver a listaxe de seguidores da mensaxe permission_add_message_watchers: Engadir seguidores na mensaxe permission_delete_message_watchers: Borrar seguidores da mensaxe label_message_watchers: Seguidores button_copy_link: Copiar ligazón error_invalid_authenticity_token: Sesión non válida. error_query_statement_invalid: Aconteceu un erro executando a consulta e ten sido engadido no log. Por favor, informe deste erro ao administrador do Redmine. permission_view_wiki_page_watchers: Ver a listaxe de seguidores da páxina da wiki permission_add_wiki_page_watchers: Engadir seguidores á páxina da wiki permission_delete_wiki_page_watchers: Borrar os seguidores da páxina da wiki label_wiki_page_watchers: Seguidores label_attachment_description: Descrición do ficheiro error_no_data_in_file: O ficheiro non contén ningún tipo de datos field_twofa_required: Precisa autenticación de dous factores twofa_hint_optional_html: A configuración %{label} permitirá aos usuarios estabrecer autenticación de dous factores á súa vontade, a menos que sexa requerido por un dos seus grupos. twofa_text_group_required: Esta configuración só é efectiva cando a configuración de autenticación global de dous factores estea estabrecida a 'opcional'. Actualmente, a autenticación de dous factores é obrigatoria para todos os usuarios. twofa_text_group_disabled: Esta configuración só é efectiva cando a configuración de autenticación global de dous factores estea estabrecida a 'opcional'. Actualmente, a autenticación de dous factores está deshabilitada. field_default_issue_query: Consulta de peticións por defecto label_default_queries: for_all_projects: Para todos os proxectos for_current_project: Para o proxecto actual for_all_users: Para todos os usuarios for_this_user: Para este usuario text_allowed_queries_to_select: Soamente seleccionables consultas públicas (para calquera usuario) text_all_migrations_have_been_run: Foron executadas todas as migracións de base de datos button_save_object: Gardar %{object_name} button_edit_object: Editar %{object_name} button_delete_object: Borrar %{object_name} text_setting_config_change: Podes configurar o comportamento en config/configuration.yml. Por favor, reinicia a aplicación despois de editalo. label_bulk_edit: Editar á vez button_create_and_follow: Crear e seguir label_subtask: Subtarefa label_default_query: Consulta por defecto field_default_project_query: Consulta por defecto do proxecto label_required_administrators: Obrigatorio para os administradores twofa_hint_required_administrators_html: A opción %{label} compórtase coma opcional, pero requirirá que todos os usuarios con dereitos de administración configuren autenticación de dous factores no seu próximo inicio de sesión. label_auto_watch_on: Auto monitorizar label_auto_watch_on_issue_contributed_to: Tarefas ás que teño contribuído text_project_close_confirmation: Seguro que quere pechar o proxecto '%{value}' para facelo de só lectura? text_project_reopen_confirmation: Seguro que quere reabrir o proxecto '%{value}'? text_project_archive_confirmation: Seguro que quere arquivar o proxecto '%{value}'? mail_destroy_project_failed: O proxecto %{value} non pode ser borrado. mail_destroy_project_successful: O proxecto %{value} foi borrado con éxito. mail_destroy_project_with_subprojects_successful: O proxecto %{value} e os seus proxectos foron borrados con éxito. project_status_scheduled_for_deletion: programado para o seu borrado text_projects_bulk_destroy_confirmation: Seguro que quere borrar o proxecto seleccionado e os datos asociados? text_projects_bulk_destroy_head: | Está a punto de borrar de xeito permanente os seguintes proxectos, incluíndo posibles subproxectos e datos asociados. Por favor, revise a información de abaixo e confirme que isto é o que quere facer. Esta acción non pode ser desfeita. text_projects_bulk_destroy_confirm: Para confirmar por favor teclee "%{yes}" na caixa de debaixo. text_subprojects_bulk_destroy: 'incluíndo os seus subproxecto(s): %{value}' field_current_password: Contrasinal actual sudo_mode_new_info_html: "Que está a acontecer? Vostede necesita reconfirmar a súa contrasinal antes de realizar calquera acción de administración, isto asegura que a súa conta permañece protexida." label_edited: Editado label_time_by_author: "%{time} por %{author}" field_default_time_entry_activity: Actividade por defecto para o tempo imputado field_is_member_of_group: Membro do grupo text_users_bulk_destroy_head: Vas borrar os seguintes usuarios e quitar todas as referencias a eles. Isto non pode desfacerse. En xeral, bloquear os usuarios en troques de borralos é a mellor solución. text_users_bulk_destroy_confirm: Para confirmar por favor teclee "%{yes}" debaixo. permission_select_project_publicity: Configurar o proxecto coma público ou privado label_auto_watch_on_issue_created: Tarefas creadas por min field_any_searchable: Calquera texto buscable label_contains_any_of: contén calquera de button_apply_issues_filter: Aplicar os filtro de tarefas label_view_previous_annotation: Ver anotación anterior a este cambio label_has_been: ten sido label_has_never_been: nunca ten sido label_changed_from: cambiou de label_issue_statuses_description: Descrición dos estados das tarefas label_open_issue_statuses_description: Ver todas as descricións dos estados das tarefas text_select_apply_issue_status: Seleccionar estado da tarefa field_name_or_email_or_login: Nome, correo electrónico ou usuario text_default_active_job_queue_changed: Cambiado o adaptador do sistema de colas por defecto dado que só está pensado para desenvolvemento/probas label_option_auto_lang: auto label_issue_attachment_added: Engadido o ficheiro field_estimated_remaining_hours: Tempo restante estimado field_last_activity_date: Última actividade setting_issue_done_ratio_interval: Intervalo de proporción de completado setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/he.yml000066400000000000000000002253141500112024600171510ustar00rootroot00000000000000# Hebrew translation for Redmine # Initiated by Dotan Nahum (dipidi@gmail.com) # Jul 2010 - Updated by Orgad Shaneh (orgads@gmail.com) he: direction: rtl date: formats: default: "%d/%m/%Y" short: "%d/%m" long: "%d/%m/%Y" only_day: "%e" day_names: [ר×שון, שני, שלישי, רביעי, חמישי, שישי, שבת] abbr_day_names: ["×'", "ב'", "×’'", "ד'", "×”'", "ו'", "ש'"] month_names: [~, ינו×ר, פברו×ר, מרץ, ×פריל, מ××™, יוני, יולי, ×וגוסט, ספטמבר, ×וקטובר, נובמבר, דצמבר] abbr_month_names: [~, ×™×× , פבר, מרץ, ×פר, מ××™, יונ, יול, ×וג, ספט, ×וק, נוב, דצמ] order: - :day - :month - :year time: formats: default: "%a %d/%m/%Y %H:%M:%S" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" only_second: "%S" datetime: formats: default: "%d-%m-%YT%H:%M:%S%Z" am: 'am' pm: 'pm' datetime: distance_in_words: half_a_minute: 'חצי דקה' less_than_x_seconds: zero: 'פחות משניה' one: 'פחות משניה' other: 'פחות מ־%{count} שניות' x_seconds: one: 'שניה ×חת' other: '%{count} שניות' less_than_x_minutes: zero: 'פחות מדקה ×חת' one: 'פחות מדקה ×חת' other: 'פחות מ־%{count} דקות' x_minutes: one: 'דקה ×חת' other: '%{count} דקות' about_x_hours: one: 'בערך שעה ×חת' other: 'בערך %{count} שעות' x_hours: one: "1 שעה" other: "%{count} שעות" x_days: one: '×™×•× ×חד' other: '%{count} ימי×' about_x_months: one: 'בערך חודש ×חד' other: 'בערך %{count} חודשי×' x_months: one: 'חודש ×חד' other: '%{count} חודשי×' about_x_years: one: 'בערך שנה ×חת' other: 'בערך %{count} שני×' over_x_years: one: 'מעל שנה ×חת' other: 'מעל %{count} שני×' almost_x_years: one: "כמעט שנה" other: "כמעט %{count} שני×" number: format: precision: 3 separator: '.' delimiter: ',' currency: format: unit: 'ש"×—' precision: 2 format: '%u %n' human: storage_units: format: "%n %u" units: byte: one: "בייט" other: "בתי×" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: sentence_connector: "וג×" skip_last_comma: true activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "×œ× × ×›×œ×œ ברשימה" exclusion: "×œ× ×–×ž×™×Ÿ" invalid: "×œ× ×•×œ×™×“×™" confirmation: "×œ× ×ª×•×× ×œ×ישור" accepted: "חייב ב×ישור" empty: "חייב להכלל" blank: "חייב להכלל" too_long: "×רוך מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" too_short: "קצר מדי (×œ× ×™×•×ª×¨ מ־%{count} תוי×)" wrong_length: "×œ× ×‘×ורך הנכון (חייב להיות %{count} תוי×)" taken: "×œ× ×–×ž×™×Ÿ" not_a_number: "×”×•× ×œ× ×ž×¡×¤×¨" greater_than: "חייב להיות גדול מ־%{count}" greater_than_or_equal_to: "חייב להיות גדול ×ו שווה ל־%{count}" equal_to: "חייב להיות שווה ל־%{count}" less_than: "חייב להיות קטן מ־%{count}" less_than_or_equal_to: "חייב להיות קטן ×ו שווה ל־%{count}" odd: "חייב להיות ××™ זוגי" even: "חייב להיות זוגי" greater_than_start_date: "חייב להיות מ×וחר יותר מת×ריך ההתחלה" not_same_project: "×œ× ×©×™×™×š ל×ותו הפרויקט" circular_dependency: "קשר ×–×” יצור תלות מעגלית" cant_link_an_issue_with_a_descendant: "×œ× × ×™×ª×Ÿ לקשר × ×•×©× ×œ×ª×ªÖ¾×ž×©×™×ž×” שלו" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: בחר בבקשה general_text_No: 'ל×' general_text_Yes: 'כן' general_text_no: 'ל×' general_text_yes: 'כן' general_lang_name: 'Hebrew (עברית)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: החשבון עודכן בהצלחה! notice_account_invalid_credentials: ×©× ×ž×©×ª×ž×© ×ו סיסמה ×©×’×•×™×™× notice_account_password_updated: הסיסמה עודכנה בהצלחה! notice_account_wrong_password: סיסמה שגויה notice_account_register_done: החשבון נוצר בהצלחה. להפעלת החשבון לחץ על הקישור שנשלח לדו×"ל שלך. notice_can_t_change_password: החשבון ×”×–×” משתמש במקור הזדהות חיצוני. שינוי סיסמה הינו בילתי ×פשר notice_account_lost_email_sent: דו×"ל ×¢× ×”×•×¨×ות לבחירת סיסמה חדשה נשלח ×ליך. notice_account_activated: חשבונך הופעל. ×תה יכול להתחבר כעת. notice_successful_create: יצירה מוצלחת. notice_successful_update: עידכון מוצלח. notice_successful_delete: מחיקה מוצלחת. notice_successful_connection: חיבור מוצלח. notice_file_not_found: הדף ש×תה מנסה לגשת ×ליו ×ינו ×§×™×™× ×ו שהוסר. notice_locking_conflict: המידע עודכן על ידי משתמש ×חר. notice_not_authorized: ×ינך מורשה לר×ות דף ×–×”. notice_not_authorized_archived_project: הפרויקט ש×תה מנסה לגשת ×ליו × ×ž×¦× ×‘×רכיון. notice_email_sent: "דו×ל נשלח לכתובת %{value}" notice_email_error: "×רעה שגי××” בעת שליחת הדו×ל (%{value})" notice_feeds_access_key_reseted: מפתח ×”Ö¾Atom שלך ×ופס. notice_api_access_key_reseted: מפתח הגישה שלך ל־API ×ופס. notice_failed_to_save_issues: "נכשרת בשמירת %{count} נוש××™× ×‘ %{total} נבחרו: %{ids}." notice_failed_to_save_members: "כשלון בשמירת חבר(×™×): %{errors}." notice_account_pending: "החשבון שלך נוצר ועתה מחכה ל×ישור מנהל המערכת." notice_default_data_loaded: ×פשרויות ברירת מחדל מופעלות. notice_unable_delete_version: ×œ× × ×™×ª×Ÿ למחוק גירסה notice_unable_delete_time_entry: ×œ× × ×™×ª×Ÿ למחוק רשומת זמן. notice_issue_done_ratios_updated: ×חוזי התקדמות ×œ× ×•×©× ×¢×•×“×›× ×•. error_can_t_load_default_data: "×פשרויות ברירת המחדל ×œ× ×”×¦×œ×™×—×• להיטען: %{value}" error_scm_not_found: כניסה ו\×ו מהדורה ××™× × ×§×™×™×ž×™× ×‘×ž×גר. error_scm_command_failed: "×רעה שגי××” בעת ניסון גישה למ×גר: %{value}" error_scm_annotate: "הכניסה ×œ× ×§×™×™×ž×ª ×ו ×©×œ× × ×™×ª×Ÿ לת×ר ×ותה." error_issue_not_found_in_project: 'הנוש××™× ×œ× × ×ž×¦×ו ×ו ××™× × ×©×™×›×™× ×œ×¤×¨×•×™×§×˜' error_no_tracker_in_project: ×œ× ×”×•×’×“×¨ סיווג לפרויקט ×–×”. × × ×‘×“×•×§ ×ת הגדרות הפרויקט. error_no_default_issue_status: ×œ× ×ž×•×’×“×¨ מצב ברירת מחדל לנוש××™×. × × ×‘×“×•×§ ×ת התצורה ("ניהול -> מצבי נוש×"). error_can_not_delete_custom_field: ×œ× × ×™×ª×Ÿ למחוק שדה מות×× ×ישית error_can_not_delete_tracker_html: ×§×™×™×ž×™× × ×•×©××™× ×‘×¡×™×•×•×’ ×–×”, ×•×œ× × ×™×ª×Ÿ למחוק ×ותו.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: תפקיד ×–×” × ×ž×¦× ×‘×©×™×ž×•×©, ×•×œ× × ×™×ª×Ÿ למחוק ×ותו. error_can_not_reopen_issue_on_closed_version: ×œ× × ×™×ª×Ÿ לפתוח מחדש × ×•×©× ×©×ž×©×•×™×š לגירסה סגורה error_can_not_archive_project: ×œ× × ×™×ª×Ÿ ל×רכב פרויקט ×–×” error_issue_done_ratios_not_updated: ×חוז התקדמות ×œ× ×•×©× ×œ× ×¢×•×“×›×Ÿ. error_workflow_copy_source: × × ×‘×—×¨ סיווג ×ו תפקיד מקור error_workflow_copy_target: × × ×‘×—×¨ תפקיד(×™×) וסיווג(×™×) error_unable_delete_issue_status: ×œ× × ×™×ª×Ÿ למחוק מצב × ×•×©× (%{value}) error_unable_to_connect: ×œ× × ×™×ª×Ÿ להתחבר (%{value}) warning_attachments_not_saved: "כשלון בשמירת %{count} קבצי×." mail_subject_lost_password: "סיסמת ×”Ö¾%{value} שלך" mail_body_lost_password: 'לשינו סיסמת ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' mail_subject_register: "הפעלת חשבון %{value}" mail_body_register: 'להפעלת חשבון ×”Ö¾Redmine שלך, לחץ על הקישור הב×:' mail_body_account_information_external: "×תה יכול להשתמש בחשבון %{value} כדי להתחבר" mail_body_account_information: פרטי החשבון שלך mail_subject_account_activation_request: "בקשת הפעלה לחשבון %{value}" mail_body_account_activation_request: "משתמש חדש (%{value}) נרש×. החשבון שלו מחכה ל×ישור שלך:" mail_subject_reminder: "%{count} נוש××™× ×ž×™×•×¢×“×™× ×œ×”×’×©×” ×‘×™×ž×™× ×”×§×¨×•×‘×™× (%{days})" mail_body_reminder: "%{count} נוש××™× ×©×ž×™×•×¢×“×™× ×ליך ×ž×™×•×¢×“×™× ×œ×”×’×©×” בתוך %{days} ימי×:" mail_subject_wiki_content_added: "דף ×”Ö¾wiki â€'%{id}' נוסף" mail_body_wiki_content_added: דף ×”Ö¾wiki â€'%{id}' נוסף ×¢"×™ %{author}. mail_subject_wiki_content_updated: "דף ×”Ö¾wiki â€'%{id}' עודכן" mail_body_wiki_content_updated: דף ×”Ö¾wiki â€'%{id}' עודכן ×¢"×™ %{author}. field_name: ×©× field_description: תי×ור field_summary: תקציר field_is_required: נדרש field_firstname: ×©× ×¤×¨×˜×™ field_lastname: ×©× ×ž×©×¤×—×” field_mail: דו×"ל field_filename: קובץ field_filesize: גודל field_downloads: הורדות field_author: כותב field_created_on: נוצר field_updated_on: עודכן field_field_format: פורמט field_is_for_all: לכל ×”×¤×¨×•×™×§×˜×™× field_possible_values: ×¢×¨×›×™× ××¤×©×¨×™×™× field_regexp: ביטוי רגיל field_min_length: ×ורך מינימ×לי field_max_length: ×ורך מקסימ×לי field_value: ערך field_category: קטגוריה field_title: כותרת field_project: פרויקט field_issue: × ×•×©× field_status: מצב field_notes: הערות field_is_closed: × ×•×©× ×¡×’×•×¨ field_is_default: ערך ברירת מחדל field_tracker: סיווג field_subject: ×©× × ×•×©× field_due_date: ת×ריך ×¡×™×•× field_assigned_to: ×חר××™ field_priority: עדיפות field_fixed_version: גירסת יעד field_user: מתשמש field_principal: User or Group field_role: תפקיד field_homepage: דף הבית field_is_public: פומבי field_parent: תת פרויקט של field_is_in_roadmap: נוש××™× ×”×ž×•×¦×’×™× ×‘×ž×¤×ª ×”×“×¨×›×™× field_login: ×©× ×ž×©×ª×ž×© field_mail_notification: הודעות דו×"ל field_admin: ניהול field_last_login_on: התחברות ×חרונה field_language: שפה field_effective_date: ת×ריך field_password: סיסמה field_new_password: סיסמה חדשה field_password_confirmation: ×ישור field_version: גירסה field_type: סוג field_host: שרת field_port: פורט field_account: חשבון field_base_dn: בסיס DN field_attr_login: תכונת התחברות field_attr_firstname: תכונת ×©× ×¤×¨×˜×™× field_attr_lastname: תכונת ×©× ×ž×©×¤×—×” field_attr_mail: תכונת דו×"ל field_onthefly: יצירת ×ž×©×ª×ž×©×™× ×–×¨×™×–×” field_start_date: ת×ריך התחלה field_done_ratio: "% גמור" field_auth_source: מקור הזדהות field_hide_mail: ×”×—×‘× ×ת כתובת הדו×"ל שלי field_comments: הערות field_url: URL field_start_page: דף התחלתי field_subproject: תת־פרויקט field_hours: שעות field_activity: פעילות field_spent_on: ת×ריך field_identifier: מזהה field_is_filter: משמש כמסנן field_issue_to: נוש××™× ×§×©×•×¨×™× field_delay: עיקוב field_assignable: ניתן להקצות נוש××™× ×œ×ª×¤×§×™×“ ×–×” field_redirect_existing_links: העבר ×§×™×©×•×¨×™× ×§×™×™×ž×™× field_estimated_hours: זמן משוער field_column_names: עמודות field_time_entries: ×¨×™×©×•× ×–×ž× ×™× field_time_zone: ×יזור זמן field_searchable: ניתן לחיפוש field_default_value: ערך ברירת מחדל field_comments_sorting: הצג הערות field_parent_title: דף ×ב field_editable: ניתן לעריכה field_watcher: צופה field_content: תוכן field_group_by: קבץ ×ת התוצ×ות לפי field_sharing: שיתוף field_parent_issue: משימת ×ב field_text: שדה טקסט setting_app_title: כותרת ×™×©×•× setting_welcome_text: טקסט "ברוך הב×" setting_default_language: שפת ברירת מחדל setting_login_required: דרושה הזדהות setting_self_registration: ×פשר הרשמה עצמית setting_attachment_max_size: גודל דבוקה מקסימ×לי setting_issues_export_limit: גבול ×™×¦×•× × ×•×©××™× setting_mail_from: כתובת שליחת דו×"ל setting_plain_text_mail: טקסט פשוט בלבד (×œ×œ× HTML) setting_host_name: ×©× ×©×¨×ª setting_text_formatting: עיצוב טקסט setting_wiki_compression: כיווץ היסטורית wiki setting_feeds_limit: גבול תוכן הזנות setting_default_projects_public: ×¤×¨×•×™×§×˜×™× ×—×“×©×™× ×”×™× × ×¤×•×ž×‘×™×™× ×›×‘×¨×™×¨×ª מחדל setting_autofetch_changesets: משיכה ×וטומטית של ×©×™× ×•×™×™× setting_sys_api_enabled: ×פשר שירות רשת לניהול המ×גר setting_commit_ref_keywords: מילות מפתח מקשרות setting_commit_fix_keywords: מילות מפתח מתקנות setting_autologin: התחברות ×וטומטית setting_date_format: פורמט ת×ריך setting_time_format: פורמט זמן setting_cross_project_issue_relations: הרשה קישור נוש××™× ×‘×™×Ÿ ×¤×¨×•×™×§×˜×™× setting_issue_list_default_columns: עמודות ברירת מחדל המוצגות ברשימת הנוש××™× setting_emails_footer: תחתית דו×"ל setting_protocol: פרוטוקול setting_per_page_options: ×פשרויות ××•×‘×™×§×˜×™× ×œ×¤×™ דף setting_user_format: פורמט הצגת ×ž×©×ª×ž×©×™× setting_activity_days_default: ×™×ž×™× ×”×ž×•×¦×’×™× ×¢×œ פעילות הפרויקט setting_display_subprojects_issues: הצג נוש××™× ×©×œ ×ª×ª×™Ö¾×¤×¨×•×™×§×˜×™× ×›×‘×¨×™×¨×ª מחדל setting_enabled_scm: ×פשר ניהול תצורה setting_mail_handler_body_delimiters: חתוך כתובות דו×ר ×חרי ×חת משורות ×לה setting_mail_handler_api_enabled: ×פשר שירות רשת לדו×ר נכנס setting_mail_handler_api_key: מפתח API setting_sequential_project_identifiers: השתמש ×‘×ž×¡×¤×¨×™× ×¢×•×§×‘×™× ×œ×ž×–×”×™ פרויקט setting_gravatar_enabled: שימוש בצלמיות ×ž×©×ª×ž×©×™× ×žÖ¾Gravatar setting_gravatar_default: תמונת Gravatar ברירת מחדל setting_diff_max_lines_displayed: מספר מירבי של שורות בתצוגת ×©×™× ×•×™×™× setting_file_max_size_displayed: גודל מירבי של מלל המוצג בתוך השורה setting_repository_log_display_limit: מספר מירבי של מהדורות המוצגות ביומן קובץ setting_password_min_length: ×ורך סיסמה מינימ×לי setting_new_project_user_role_id: התפקיד שמוגדר למשתמש פשוט ×שר יוצר פרויקט setting_default_projects_modules: ×ž×•×“×•×œ×™× ×ž××•×¤×©×¨×™× ×‘×‘×¨×™×¨×ª מחדל עבור ×¤×¨×•×™×§×˜×™× ×—×“×©×™× setting_issue_done_ratio: חשב ×חוז התקדמות ×‘× ×•×©× ×¢× setting_issue_done_ratio_issue_field: השתמש בשדה ×”× ×•×©× setting_issue_done_ratio_issue_status: השתמש במצב ×”× ×•×©× setting_start_of_week: השבוע מתחיל ×‘×™×•× setting_rest_api_enabled: ×פשר שירות רשת REST setting_cache_formatted_text: שמור טקסט מעוצב במטמון setting_default_notification_option: ×פשרות התר××” ברירת־מחדל permission_add_project: יצירת פרויקט permission_add_subprojects: יצירת תתי־פרויקט permission_edit_project: עריכת פרויקט permission_select_project_modules: בחירת מודולי פרויקט permission_manage_members: ניהול ×—×‘×¨×™× permission_manage_project_activities: נהל פעילויות פרויקט permission_manage_versions: ניהול גירס×ות permission_manage_categories: ניהול קטגוריות נוש××™× permission_view_issues: צפיה בנוש××™× permission_add_issues: הוספת × ×•×©× permission_edit_issues: עריכת נוש××™× permission_manage_issue_relations: ניהול ×§×©×¨×™× ×‘×™×Ÿ נוש××™× permission_add_issue_notes: הוספת הערות לנוש××™× permission_edit_issue_notes: עריכת רשימות permission_edit_own_issue_notes: עריכת הערות של עצמו permission_delete_issues: מחיקת נוש××™× permission_manage_public_queries: ניהול ש×ילתות פומביות permission_save_queries: שמירת ש×ילתות permission_view_gantt: צפיה בג×נט permission_view_calendar: צפיה בלוח השנה permission_view_issue_watchers: צפיה ברשימת ×¦×•×¤×™× permission_add_issue_watchers: הוספת ×¦×•×¤×™× permission_delete_issue_watchers: הסרת ×¦×•×¤×™× permission_log_time: תיעוד זמן שהושקע permission_view_time_entries: צפיה ×‘×¨×™×©×•× ×–×ž× ×™× permission_edit_time_entries: עריכת ×¨×™×©×•× ×–×ž× ×™× permission_edit_own_time_entries: עריכת ×¨×™×©×•× ×”×–×ž× ×™× ×©×œ עצמו permission_manage_news: ניהול חדשות permission_comment_news: תגובה לחדשות permission_view_documents: צפיה ×‘×ž×¡×ž×›×™× permission_manage_files: ניהול ×§×‘×¦×™× permission_view_files: צפיה ×‘×§×‘×¦×™× permission_manage_wiki: ניהול wiki permission_rename_wiki_pages: שינוי ×©× ×©×œ דפי wiki permission_delete_wiki_pages: מחיקת דפי wiki permission_view_wiki_pages: צפיה ב־wiki permission_view_wiki_edits: צפיה בהיסטורית wiki permission_edit_wiki_pages: עריכת דפי wiki permission_delete_wiki_pages_attachments: מחיקת דבוקות permission_protect_wiki_pages: ×”×’× ×” על כל דפי wiki permission_manage_repository: ניהול מ×גר permission_browse_repository: סיור במ×גר permission_view_changesets: צפיה בסדרות ×©×™× ×•×™×™× permission_commit_access: ×ישור הפקדות permission_manage_boards: ניהול לוחות permission_view_messages: צפיה בהודעות permission_add_messages: הצבת הודעות permission_edit_messages: עריכת הודעות permission_edit_own_messages: עריכת הודעות של עצמו permission_delete_messages: מחיקת הודעות permission_delete_own_messages: מחיקת הודעות של עצמו permission_export_wiki_pages: ×™×¦× ×“×¤×™ wiki permission_manage_subtasks: נהל תתי־משימות project_module_issue_tracking: מעקב נוש××™× project_module_time_tracking: מעקב ×חר ×–×ž× ×™× project_module_news: חדשות project_module_documents: ×ž×¡×ž×›×™× project_module_files: ×§×‘×¦×™× project_module_wiki: Wiki project_module_repository: מ×גר project_module_boards: לוחות project_module_calendar: לוח שנה project_module_gantt: ×’×נט label_user: משתמש label_user_plural: ×ž×©×ª×ž×©×™× label_user_new: משתמש חדש label_user_anonymous: ×למוני label_project: פרויקט label_project_new: פרויקט חדש label_project_plural: ×¤×¨×•×™×§×˜×™× label_x_projects: zero: ×œ×œ× ×¤×¨×•×™×§×˜×™× one: פרויקט ×חד other: "%{count} פרויקטי×" label_project_all: כל ×”×¤×¨×•×™×§×˜×™× label_project_latest: ×”×¤×¨×•×™×§×˜×™× ×”×—×“×©×™× ×‘×™×•×ª×¨ label_issue: × ×•×©× label_issue_new: × ×•×©× ×—×“×© label_issue_plural: נוש××™× label_issue_view_all: צפה בכל הנוש××™× label_issues_by: "נוש××™× ×œ×¤×™ %{value}" label_issue_added: × ×•×©× × ×•×¡×£ label_issue_updated: × ×•×©× ×¢×•×“×›×Ÿ label_document: מסמך label_document_new: מסמך חדש label_document_plural: ×ž×¡×ž×›×™× label_document_added: מסמך נוסף label_role: תפקיד label_role_plural: ×ª×¤×§×™×“×™× label_role_new: תפקיד חדש label_role_and_permissions: ×ª×¤×§×™×“×™× ×•×”×¨×©×ות label_member: חבר label_member_new: חבר חדש label_member_plural: ×—×‘×¨×™× label_tracker: סיווג label_tracker_plural: ×¡×™×•×•×’×™× label_tracker_new: סיווג חדש label_workflow: זרימת עבודה label_issue_status: מצב × ×•×©× label_issue_status_plural: מצבי × ×•×©× label_issue_status_new: מצב חדש label_issue_category: קטגורית × ×•×©× label_issue_category_plural: קטגוריות × ×•×©× label_issue_category_new: קטגוריה חדשה label_custom_field: שדה ×ישי label_custom_field_plural: שדות ××™×©×™×™× label_custom_field_new: שדה ×ישי חדש label_enumerations: ×ינומרציות label_enumeration_new: ערך חדש label_information: מידע label_information_plural: מידע label_register: הרשמה label_password_lost: ×בדה הסיסמה? label_home: דף הבית label_my_page: הדף שלי label_my_account: החשבון שלי label_my_projects: ×”×¤×¨×•×™×§×˜×™× ×©×œ×™ label_administration: ניהול label_login: התחבר label_logout: התנתק label_help: עזרה label_reported_issues: נוש××™× ×©×“×•×•×—×• label_assigned_to_me_issues: נוש××™× ×©×”×•×¦×‘×• לי label_registered_on: × ×¨×©× ×‘×ª×ריך label_activity: פעילות label_user_activity: "הפעילות של %{value}" label_new: חדש label_logged_as: מחובר ×› label_environment: סביבה label_authentication: הזדהות label_auth_source: מקור הזדהות label_auth_source_new: מקור הזדהות חדש label_auth_source_plural: מקורות הזדהות label_subproject_plural: ×ª×ªÖ¾×¤×¨×•×™×§×˜×™× label_subproject_new: תת־פרויקט חדש label_and_its_subprojects: "%{value} וכל ×ª×ª×™Ö¾×”×¤×¨×•×™×§×˜×™× ×©×œ×•" label_min_max_length: ×ורך מינימ×לי - מקסימ×לי label_list: רשימה label_date: ת×ריך label_integer: מספר ×©×œ× label_float: צף label_boolean: ערך בולי×× ×™ label_string: טקסט label_text: טקסט ×רוך label_attribute: תכונה label_attribute_plural: תכונות label_no_data: ×ין מידע להציג label_change_status: שנה מצב label_history: היסטוריה label_attachment: קובץ label_attachment_new: קובץ חדש label_attachment_delete: מחק קובץ label_attachment_plural: ×§×‘×¦×™× label_file_added: קובץ נוסף label_report: דו"×— label_report_plural: דו"חות label_news: חדשות label_news_new: הוסף חדשות label_news_plural: חדשות label_news_latest: חדשות ×חרונות label_news_view_all: צפה בכל החדשות label_news_added: חדשות נוספו label_settings: הגדרות label_overview: מבט רחב label_version: גירסה label_version_new: גירסה חדשה label_version_plural: גירס×ות label_close_versions: סגור גירס×ות שהושלמו label_confirmation: ×ישור label_export_to: ×™×¦× ×œ label_read: קר×... label_public_projects: ×¤×¨×•×™×§×˜×™× ×¤×•×ž×‘×™×™× label_open_issues: פתוח label_open_issues_plural: ×¤×ª×•×—×™× label_closed_issues: סגור label_closed_issues_plural: ×¡×’×•×¨×™× label_x_open_issues_abbr: zero: 0 ×¤×ª×•×—×™× one: 1 פתוח other: "%{count} פתוחי×" label_x_closed_issues_abbr: zero: 0 ×¡×’×•×¨×™× one: 1 סגור other: "%{count} סגורי×" label_total: סה"×› label_permissions: הרש×ות label_current_status: מצב נוכחי label_new_statuses_allowed: ×ž×¦×‘×™× ×—×“×©×™× ××¤×©×¨×™×™× label_all: הכל label_none: ×›×œ×•× label_nobody: ××£ ×חד label_next: ×”×‘× label_previous: ×”×§×•×“× label_used_by: בשימוש ×¢"×™ label_details: ×¤×¨×˜×™× label_add_note: הוסף הערה label_calendar: לוח שנה label_months_from: ×—×•×“×©×™× ×ž label_gantt: ×’×נט label_internal: פנימי label_last_changes: "%{count} ×©×™× ×•×™× ×חרוני×" label_change_view_all: צפה בכל ×”×©×™× ×•×™× label_comment: תגובה label_comment_plural: תגובות label_x_comments: zero: ×ין הערות one: הערה ×חת other: "%{count} הערות" label_comment_add: הוסף תגובה label_comment_added: תגובה נוספה label_comment_delete: מחק תגובות label_query: ש×ילתה ×ישית label_query_plural: ש×ילתות ×ישיות label_query_new: ש×ילתה חדשה label_filter_add: הוסף מסנן label_filter_plural: ×ž×¡× × ×™× label_equals: ×”×•× label_not_equals: ×”×•× ×œ× label_in_less_than: בפחות מ label_in_more_than: ביותר מ label_greater_or_equal: ">=" label_less_or_equal: <= label_in: ב label_today: ×”×™×•× label_yesterday: ×תמול label_this_week: השבוע label_last_week: השבוע שעבר label_last_n_days: "ב־%{count} ×™×ž×™× ×חרוני×" label_this_month: החודש label_last_month: חודש שעבר label_this_year: השנה label_date_range: טווח ת××¨×™×›×™× label_less_than_ago: פחות מ label_more_than_ago: יותר מ label_ago: לפני label_contains: מכיל label_not_contains: ×œ× ×ž×›×™×œ label_day_plural: ×™×ž×™× label_repository: מ×גר label_repository_plural: מ××’×¨×™× label_branch: ×¢× ×£ label_tag: סימון label_revision: מהדורה label_revision_plural: מהדורות label_revision_id: מהדורה %{value} label_associated_revisions: מהדורות קשורות label_added: נוסף label_modified: שונה label_copied: הועתק label_renamed: ×”×©× ×©×•× ×” label_deleted: נמחק label_latest_revision: מהדורה ×חרונה label_latest_revision_plural: מהדורות ×חרונות label_view_revisions: צפה במהדורות label_view_all_revisions: צפה בכל המהדורות label_max_size: גודל מקסימ×לי label_roadmap: מפת ×”×“×¨×›×™× label_roadmap_due_in: "נגמר בעוד %{value}" label_roadmap_overdue: "%{value} מ×חר" label_roadmap_no_issues: ×ין נוש××™× ×œ×’×™×¨×¡×” זו label_search: חפש label_result_plural: תוצ×ות label_all_words: כל ×”×ž×™×œ×™× label_wiki: Wiki label_wiki_edit: ערוך wiki label_wiki_edit_plural: עריכות wiki label_wiki_page: דף Wiki label_wiki_page_plural: דפי wiki label_index_by_title: סדר על פי כותרת label_index_by_date: סדר על פי ת×ריך label_current_version: גירסה נוכחית label_preview: תצוגה מקדימה label_feed_plural: הזנות label_changes_details: פירוט כל ×”×©×™× ×•×™×™× label_issue_tracking: מעקב ×חר נוש××™× label_spent_time: זמן שהושקע label_f_hour: "%{value} שעה" label_f_hour_plural: "%{value} שעות" label_time_tracking: מעקב ×–×ž× ×™× label_change_plural: ×©×™× ×•×™×™× label_statistics: סטטיסטיקות label_commits_per_month: הפקדות לפי חודש label_commits_per_author: הפקדות לפי כותב label_view_diff: צפה ×‘×©×™× ×•×™×™× label_diff_inline: בתוך השורה label_diff_side_by_side: צד לצד label_options: ×פשרויות label_copy_workflow_from: העתק זירמת עבודה מ label_permissions_report: דו"×— הרש×ות label_watched_issues: נוש××™× ×©× ×¦×¤×• label_related_issues: נוש××™× ×§×©×•×¨×™× label_applied_status: מצב מוחל label_loading: טוען... label_relation_new: קשר חדש label_relation_delete: מחק קשר label_relates_to: קשור ל label_duplicates: מכפיל ×ת label_duplicated_by: שוכפל ×¢"×™ label_blocks: ×—×•×¡× ×ת label_blocked_by: ×—×¡×•× ×¢"×™ label_precedes: ×ž×§×“×™× ×ת label_follows: עוקב ×חרי label_stay_logged_in: הש×ר מחובר label_disabled: מבוטל label_show_completed_versions: הצג גירס×ות גמורות label_me: ×× ×™ label_board: ×¤×•×¨×•× label_board_new: ×¤×•×¨×•× ×—×“×© label_board_plural: ×¤×•×¨×•×ž×™× label_board_locked: נעול label_board_sticky: דביק label_topic_plural: נוש××™× label_message_plural: הודעות label_message_last: הודעה ×חרונה label_message_new: הודעה חדשה label_message_posted: הודעה נוספה label_reply_plural: השבות label_send_information: שלח מידע על חשבון למשתמש label_year: שנה label_month: חודש label_week: שבוע label_date_from: מת×ריך label_date_to: עד label_language_based: מבוסס שפה label_sort_by: "מיין לפי %{value}" label_send_test_email: שלח דו×"ל בדיקה label_feeds_access_key: מפתח גישה ל־Atom label_missing_feeds_access_key: חסר מפתח גישה ל־Atom label_feeds_access_key_created_on: "מפתח הזנת Atom נוצר לפני%{value}" label_module_plural: ×ž×•×“×•×œ×™× label_added_time_by: 'נוסף ×¢"×™ %{author} לפני %{age}' label_updated_time_by: 'עודכן ×¢"×™ %{author} לפני %{age}' label_updated_time: "עודכן לפני %{value} " label_jump_to_a_project: קפוץ לפרויקט... label_file_plural: ×§×‘×¦×™× label_changeset_plural: סדרות ×©×™× ×•×™×™× label_default_columns: עמודת ברירת מחדל label_no_change_option: (×ין שינוי×) label_bulk_edit_selected_issues: ערוך ×ת הנוש××™× ×”×ž×¡×•×ž× ×™× label_theme: ערכת × ×•×©× label_default: ברירת מחדל label_search_titles_only: חפש בכותרות בלבד label_user_mail_option_all: "לכל ×ירוע בכל ×”×¤×¨×•×™×§×˜×™× ×©×œ×™" label_user_mail_option_selected: "לכל ×ירוע ×‘×¤×¨×•×™×§×˜×™× ×©×‘×—×¨×ª×™ בלבד..." label_user_mail_option_only_my_events: עבור ×“×‘×¨×™× ×©×× ×™ צופה ×ו מעורב ×‘×”× ×‘×œ×‘×“ label_user_mail_no_self_notified: "×× ×™ ×œ× ×¨×•×¦×” שיודיעו לי על ×©×™× ×•×™×™× ×©×× ×™ מבצע" label_registration_activation_by_email: הפעל חשבון ב×מצעות דו×"ל label_registration_manual_activation: הפעלת חשבון ידנית label_registration_automatic_activation: הפעלת חשבון ×וטומטית label_display_per_page: "בכל דף: %{value} תוצ×ות" label_age: גיל label_change_properties: שנה מ××¤×™×™× ×™× label_general: כללי label_scm: מערכת ניהול תצורה label_plugins: ×ª×•×¡×¤×™× label_ldap_authentication: הזדהות LDAP label_downloads_abbr: D/L label_optional_description: תי×ור רשות label_add_another_file: הוסף עוד קובץ label_preferences: העדפות label_chronological_order: בסדר כרונולוגי label_reverse_chronological_order: בסדר כרונולוגי הפוך label_incoming_emails: דו×"ל נכנס label_generate_key: צור מפתח label_issue_watchers: ×¦×•×¤×™× label_example: ×“×•×’×ž× label_display: תצוגה label_sort: מיון label_ascending: בסדר עולה label_descending: בסדר יורד label_date_from_to: 'מת×ריך %{start} ועד ת×ריך %{end}' label_wiki_content_added: נוסף דף ל־wiki label_wiki_content_updated: דף wiki עודכן label_group: קבוצה label_group_plural: קבוצות label_group_new: קבוצה חדשה label_time_entry_plural: זמן שהושקע label_version_sharing_none: ×œ× ×ž×©×•×ª×£ label_version_sharing_descendants: ×¢× ×¤×¨×•×™×§×˜×™× ×‘× ×™× label_version_sharing_hierarchy: ×¢× ×”×™×¨×¨×›×™×ª ×”×¤×¨×•×™×§×˜×™× label_version_sharing_tree: ×¢× ×¢×¥ הפרויקט label_version_sharing_system: ×¢× ×›×œ ×”×¤×¨×•×™×§×˜×™× label_update_issue_done_ratios: עדכן ×חוז התקדמות ×œ× ×•×©× label_copy_source: מקור label_copy_target: יעד label_copy_same_as_target: ×–×”×” ליעד label_display_used_statuses_only: הצג רק ×ת ×”×ž×¦×‘×™× ×‘×©×™×ž×•×© לסיווג ×–×” label_api_access_key: מפתח גישה ל־API label_missing_api_access_key: חסר מפתח גישה ל־API label_api_access_key_created_on: 'מפתח גישה ל־API נוצר לפני %{value}' label_profile: פרופיל label_subtask_plural: תתי־משימות label_project_copy_notifications: שלח התר×ות דו×ר במהלך העתקת הפרויקט button_login: התחבר button_submit: ×שר button_save: שמור button_check_all: בחר הכל button_uncheck_all: בחר ×›×œ×•× button_delete: מחק button_create: צור button_create_and_continue: צור ופתח חדש button_test: בדוק button_edit: ערוך button_edit_associated_wikipage: "ערוך דף wiki מקושר: %{page_title}" button_add: הוסף button_change: שנה button_apply: החל button_clear: × ×§×” button_lock: נעל button_unlock: בטל נעילה button_download: הורד button_list: רשימה button_view: צפה button_move: ×”×–×– button_move_and_follow: העבר ועקוב button_back: ×”×§×•×“× button_cancel: בטל button_activate: הפעל button_sort: מיין button_log_time: ×¨×™×©×•× ×–×ž× ×™× button_rollback: חזור למהדורה זו button_watch: צפה button_unwatch: בטל צפיה button_reply: השב button_archive: ×רכיון button_unarchive: ×”×•×¦× ×ž×”×רכיון button_reset: ×פס button_rename: שנה ×©× button_change_password: שנה סיסמה button_copy: העתק button_copy_and_follow: העתק ועקוב button_annotate: הוסף תי×ור מסגרת button_update: עדכן button_configure: ×פשרויות button_quote: צטט button_show: הצג status_active: פעיל status_registered: ×¨×©×•× status_locked: נעול version_status_open: פתוח version_status_locked: נעול version_status_closed: סגור field_active: פעיל text_select_mail_notifications: בחר פעולת שבגללן ישלח דו×"ל. text_regexp_info: כגון. ^[A-Z0-9]+$ text_project_destroy_confirmation: ×”×× ×תה בטוח שברצונך למחוק ×ת הפרויקט ו×ת כל המידע הקשור ×ליו? text_subprojects_destroy_warning: "תת־הפרויקטי×: %{value} ימחקו ×’× ×›×Ÿ." text_workflow_edit: בחר תפקיד וסיווג כדי לערוך ×ת זרימת העבודה text_are_you_sure: ×”×× ×תה בטוח? text_journal_changed: "%{label} השתנה מ%{old} ל%{new}" text_journal_set_to: "%{label} נקבע ל%{value}" text_journal_deleted: "%{label} נמחק (%{old})" text_journal_added: "%{label} %{value} נוסף" text_tip_issue_begin_day: מטלה המתחילה ×”×™×•× text_tip_issue_end_day: מטלה המסתיימת ×”×™×•× text_tip_issue_begin_end_day: מטלה המתחילה ומסתיימת ×”×™×•× text_caracters_maximum: "×ž×§×¡×™×ž×•× %{count} תווי×." text_caracters_minimum: "חייב להיות לפחות ב×ורך של %{count} תווי×." text_length_between: "×ורך בין %{min} ל %{max} תווי×." text_tracker_no_workflow: זרימת עבודה ×œ× ×”×•×’×“×¨×” עבור סיווג ×–×” text_unallowed_characters: ×ª×•×•×™× ×œ× ×ž×•×¨×©×™× text_comma_separated: הכנסת ×¢×¨×›×™× ×ž×¨×•×‘×™× ×ž×•×ª×¨×ª (×ž×•×¤×¨×“×™× ×‘×¤×¡×™×§×™×). text_line_separated: ניתן להזין מספר ×¢×¨×›×™× (שורה ×חת לכל ערך). text_issues_ref_in_commit_messages: קישור ×•×ª×™×§×•× × ×•×©××™× ×‘×”×•×“×¢×•×ª הפקדה text_issue_added: "×”× ×•×©× %{id} דווח (בידי %{author})." text_issue_updated: "×”× ×•×©× %{id} עודכן (בידי %{author})." text_wiki_destroy_confirmation: ×”×× ×תה בטוח שברצונך למחוק ×ת ×”WIKI ×”×–×” ו×ת כל תוכנו? text_issue_category_destroy_question: "כמה נוש××™× (%{count}) ×ž×•×¦×‘×™× ×œ×§×˜×’×•×¨×™×” הזו. מה ברצונך לעשות?" text_issue_category_destroy_assignments: הסר הצבת קטגוריה text_issue_category_reassign_to: הצב מחדש ×ת הקטגוריה לנוש××™× text_user_mail_option: "×‘×¤×¨×•×™×§×˜×™× ×©×œ× ×‘×—×¨×ª, ×תה רק תקבל התרעות על ש×תה צופה ×ו קשור ××œ×™×”× (לדוגמ×:נוש××™× ×©×תה היוצר ×©×œ×”× ×ו ×חר××™ עליה×)." text_no_configuration_data: "×œ× ×”×•×’×“×¨×” תצורה עבור תפקידי×, סיווגי×, מצבי × ×•×©× ×•×–×¨×™×ž×ª עבודה.\nמומלץ מ×ד לטעון ×ת תצורת ברירת המחדל. תוכל לשנותה מ×וחר יותר." text_load_default_configuration: טען ×ת ×פשרויות ברירת המחדל text_status_changed_by_changeset: "הוחל בסדרת ×”×©×™× ×•×™×™× %{value}." text_issues_destroy_confirmation: '×”×× ×תה בטוח שברצונך למחוק ×ת הנוש××™×?' text_select_project_modules: 'בחר ×ž×•×“×•×œ×™× ×œ×”×—×™×œ על פרויקט ×–×”:' text_default_administrator_account_changed: מנהל המערכת ברירת המחדל שונה text_file_repository_writable: מ×גר ×”×§×‘×¦×™× × ×™×ª×Ÿ לכתיבה text_plugin_assets_writable: ספרית נכסי ×ª×•×¡×¤×™× × ×™×ª× ×ª לכתיבה text_minimagick_available: MiniMagick זמין (רשות) text_destroy_time_entries_question: "%{hours} שעות דווחו על הנוש××™× ×©×תה עומד למחוק. מה ברצונך לעשות?" text_destroy_time_entries: מחק שעות שדווחו text_assign_time_entries_to_project: הצב שעות שדווחו לפרויקט ×”×–×” text_reassign_time_entries: 'הצב מחדש שעות שדווחו לפרויקט ×”×–×”:' text_user_wrote: "%{value} כתב:" text_user_wrote_in: "%{value} כתב (%{link}):" text_enumeration_destroy_question: "%{count} ××•×‘×™×§×˜×™× ×ž×•×¦×‘×™× ×œ×¢×¨×š ×–×”." text_enumeration_category_reassign_to: 'הצב מחדש לערך ×”×–×”:' text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' text_repository_usernames_mapping: "בחר ×ו עדכן ×ת משתמש Redmine הממופה לכל ×©× ×ž×©×ª×ž×© ביומן המ×גר.\n×ž×©×ª×ž×©×™× ×‘×¢×œ×™ ×©× ×ו כתובת דו×ר ×–×”×” ב־Redmine ובמ×גר ×ž×ž×•×¤×™× ×‘×ופן ×וטומטי." text_diff_truncated: '... ×”×©×™× ×•×™×™× ×¢×•×‘×¨×™× ×ת מספר השורות המירבי לתצוגה, ולכן ×”× ×§×•×¦×¦×•.' text_custom_field_possible_values_info: שורה ×חת לכל ערך text_wiki_page_destroy_question: לדף ×–×” יש %{descendants} ×“×¤×™× ×‘× ×™× ×•×ª×œ×•×™×™×. מה ברצונך לעשות? text_wiki_page_nullify_children: הש×ר ×“×¤×™× ×‘× ×™× ×›×“×¤×™× ×¨××©×™×™× text_wiki_page_destroy_children: מחק ×ת ×”×“×¤×™× ×”×‘× ×™× ×•×ת כל ×”×ª×œ×•×™×™× ×‘×”× text_wiki_page_reassign_children: הצב מחדש ×“×¤×™× ×‘× ×™× ×œ×“×£ ×”×ב הנוכחי text_own_membership_delete_confirmation: |- בכוונתך למחוק חלק ×ו ×ת כל ההרש×ות שלך. ל×חר מכן ×œ× ×ª×•×›×œ יותר לערוך פרויקט ×–×”. ×”×× ×תה בטוח שברצונך להמשיך? text_zoom_in: התקרב text_zoom_out: התרחק default_role_manager: מנהל default_role_developer: מפתח default_role_reporter: מדווח default_tracker_bug: תקלה default_tracker_feature: יכולת default_tracker_support: תמיכה default_issue_status_new: חדש default_issue_status_in_progress: בעבודה default_issue_status_resolved: נפתר default_issue_status_feedback: משוב default_issue_status_closed: סגור default_issue_status_rejected: נדחה default_doc_category_user: תיעוד משתמש default_doc_category_tech: תיעוד טכני default_priority_low: נמוכה default_priority_normal: רגילה default_priority_high: גבוהה default_priority_urgent: דחופה default_priority_immediate: מידית default_activity_design: עיצוב default_activity_development: פיתוח enumeration_issue_priorities: עדיפות נוש××™× enumeration_doc_categories: קטגוריות ×ž×¡×ž×›×™× enumeration_activities: פעילויות (מעקב ×חר זמני×) enumeration_system_activity: פעילות מערכת label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: קידוד הודעות הפקדה field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 × ×•×©× one: 1 × ×•×©× other: "%{count} נוש××™×" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: הכל label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: ×¢× ×¤×¨×•×™×§×˜×™× ×‘× ×™× label_cross_project_tree: ×¢× ×¢×¥ הפרויקט label_cross_project_hierarchy: ×¢× ×”×™×¨×¨×›×™×ª ×”×¤×¨×•×™×§×˜×™× label_cross_project_system: ×¢× ×›×œ ×”×¤×¨×•×™×§×˜×™× button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: סה"×› text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: דו×"ל setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: זמן שהושקע סה"×› notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: מפתח API setting_lost_password: ×בדה הסיסמה? mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: מחק קשר error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/hr.yml000066400000000000000000002133341500112024600171650ustar00rootroot00000000000000hr: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y" day_names: [Nedjelja, Ponedjeljak, Utorak, Srijeda, ÄŒetvrtak, Petak, Subota] abbr_day_names: [Ned, Pon, Uto, Sri, ÄŒet, Pet, Sub] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, SijeÄanj, VeljaÄa, Ožujak, Travanj, Svibanj, Lipanj, Srpanj, Kolovoz, Rujan, Listopad, Studeni, Prosinac] abbr_month_names: [~, Sij, Velj, Ožu, Tra, Svi, Lip, Srp, Kol, Ruj, Lis, Stu, Pro] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%m/%d/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "pola minute" less_than_x_seconds: one: "manje od sekunde" other: "manje od %{count} sekundi" x_seconds: one: "1 sekunda" other: "%{count} sekundi" less_than_x_minutes: one: "manje od minute" other: "manje od %{count} minuta" x_minutes: one: "1 minuta" other: "%{count} minuta" about_x_hours: one: "oko sat vremena" other: "oko %{count} sati" x_hours: one: "1 sata" other: "%{count} sati" x_days: one: "1 dan" other: "%{count} dana" about_x_months: one: "oko 1 mjesec" other: "oko %{count} mjeseci" x_months: one: "mjesec" other: "%{count} mjeseci" about_x_years: one: "1 godina" other: "%{count} godina" over_x_years: one: "preko 1 godine" other: "preko %{count} godina" number: format: separator: "." delimiter: "" precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "i" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nije ukljuceno u listu" exclusion: "je rezervirano" invalid: "nije ispravno" confirmation: "ne odgovara za potvrdu" accepted: "mora biti prihvaćen" empty: "ne može biti prazno" blank: "ne može biti razmaka" too_long: "je predug (maximum is %{count} characters)" too_short: "je prekratak (minimum is %{count} characters)" wrong_length: "je pogreÅ¡ne dužine (should be %{count} characters)" taken: "već je zauzeto" not_a_number: "nije broj" not_a_date: "nije ispravan datum" greater_than: "mora biti veći od %{count}" greater_than_or_equal_to: "mora biti veći ili jednak %{count}" equal_to: "mora biti jednak %{count}" less_than: "mora biti manji od %{count}" less_than_or_equal_to: "mora bit manji ili jednak%{count}" odd: "mora biti neparan" even: "mora biti paran" greater_than_start_date: "mora biti veci nego pocetni datum" not_same_project: "ne pripada istom projektu" circular_dependency: "Ovaj relacija stvara kružnu ovisnost" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Molimo odaberite general_text_No: 'Ne' general_text_Yes: 'Da' general_text_no: 'ne' general_text_yes: 'da' general_lang_name: 'Croatian (Hrvatski)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: VaÅ¡ profil je uspjeÅ¡no promijenjen. notice_account_invalid_credentials: Neispravno korisniÄko ime ili zaporka. notice_account_password_updated: Zaporka je uspjeÅ¡no promijenjena. notice_account_wrong_password: PogreÅ¡na zaporka notice_account_register_done: Racun je uspjeÅ¡no napravljen. Da biste aktivirali svoj raÄun, kliknite na link koji vam je poslan na e-mail. notice_can_t_change_password: Ovaj raÄun koristi eksterni izvor prijavljivanja. Nemoguće je promijeniti zaporku. notice_account_lost_email_sent: E-mail s uputama kako bi odabrali novu zaporku je poslan na na vaÅ¡u e-mail adresu. notice_account_activated: VaÅ¡ racun je aktiviran. Možete se prijaviti. notice_successful_create: UspjeÅ¡no napravljeno. notice_successful_update: UspjeÅ¡na promjena. notice_successful_delete: UspjeÅ¡no brisanje. notice_successful_connection: UspjeÅ¡na veza. notice_file_not_found: Stranica kojoj ste pokuÅ¡ali pristupiti ne postoji ili je uklonjena. notice_locking_conflict: Podataci su ažurirani od strane drugog korisnika. notice_not_authorized: Niste ovlaÅ¡teni za pristup ovoj stranici. notice_email_sent: E-mail je poslan %{value}" notice_email_error: Dogodila se pogreÅ¡ka tijekom slanja E-maila (%{value})" notice_feeds_access_key_reseted: VaÅ¡ Atom pristup je resetovan. notice_api_access_key_reseted: VaÅ¡ API pristup je resetovan. notice_failed_to_save_issues: "Neuspjelo spremanje %{count} predmeta na %{total} odabrane: %{ids}." notice_account_pending: "VaÅ¡ korisnicki raÄun je otvoren, Äeka odobrenje administratora." notice_default_data_loaded: Konfiguracija je uspjeÅ¡no uÄitana. notice_unable_delete_version: Nije moguće izbrisati verziju. notice_issue_done_ratios_updated: Issue done ratios updated. error_can_t_load_default_data: "Zadanu konfiguracija nije uÄitana: %{value}" error_scm_not_found: "Unos i/ili revizija nije pronaÄ‘en." error_scm_command_failed: "Dogodila se pogreÅ¡ka prilikom pokuÅ¡aja pristupa: %{value}" error_scm_annotate: "Ne postoji ili ne može biti obilježen." error_issue_not_found_in_project: 'Nije pronaÄ‘en ili ne pripada u ovaj projekt' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' error_can_not_archive_project: This project can not be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' warning_attachments_not_saved: "%{count} Datoteka/e nije mogla biti spremljena." mail_subject_lost_password: "VaÅ¡a %{value} zaporka" mail_body_lost_password: 'Kako biste promijenili VaÅ¡u zaporku slijedite poveznicu:' mail_subject_register: "Aktivacija korisniÄog raÄuna %{value}" mail_body_register: 'Da biste aktivirali svoj raÄun, kliknite na sljedeci link:' mail_body_account_information_external: "Možete koristiti vaÅ¡ raÄun %{value} za prijavu." mail_body_account_information: VaÅ¡i korisniÄki podaci mail_subject_account_activation_request: "%{value} predmet za aktivaciju korisniÄkog raÄuna" mail_body_account_activation_request: "Novi korisnik (%{value}) je registriran. Njegov korisniÄki raÄun Äeka vaÅ¡e odobrenje:" mail_subject_reminder: "%{count} predmet(a) dospijeva sljedećih %{days} dana" mail_body_reminder: "%{count} vama dodijeljen(ih) predmet(a) dospijeva u sljedećih %{days} dana:" mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." field_name: Ime field_description: Opis field_summary: Sažetak field_is_required: Obavezno field_firstname: Ime field_lastname: Prezime field_mail: E-poÅ¡ta field_filename: Datoteka field_filesize: VeliÄina field_downloads: Preuzimanja field_author: Autor field_created_on: Napravljen field_updated_on: Promijenjen field_field_format: Format field_is_for_all: Za sve projekte field_possible_values: Moguće vrijednosti field_regexp: Regularni izraz field_min_length: Minimalna dužina field_max_length: Maksimalna dužina field_value: Vrijednost field_category: Kategorija field_title: Naslov field_project: Projekt field_issue: Predmet field_status: Status field_notes: Napomene field_is_closed: Predmet je zatvoren field_is_default: Zadana vrijednost field_tracker: Tracker field_subject: Predmet field_due_date: Do datuma field_assigned_to: Dodijeljeno field_priority: Prioritet field_fixed_version: Verzija field_user: Korisnik field_role: Uloga field_homepage: Naslovnica field_is_public: Javni projekt field_parent: Potprojekt od field_is_in_roadmap: Predmeti se prikazuju u Putokazu field_login: KorisniÄko ime field_mail_notification: Obavijest putem e-poÅ¡te field_admin: Administrator field_last_login_on: Zadnja prijava field_language: Primarni jezik field_effective_date: Datum field_password: Zaporka field_new_password: Nova zaporka field_password_confirmation: Potvrda zaporke field_version: Verzija field_type: Tip field_host: Host field_port: Port field_account: Racun field_base_dn: Osnovni DN field_attr_login: Login atribut field_attr_firstname: Atribut imena field_attr_lastname: Atribut prezimena field_attr_mail: Atribut e-poÅ¡te field_onthefly: "Izrada korisnika \"u hodu\"" field_start_date: Pocetak field_done_ratio: "% UÄinjeno" field_auth_source: Vrsta prijavljivanja field_hide_mail: Sakrij moju adresu e-poÅ¡te field_comments: Komentar field_url: URL field_start_page: PoÄetna stranica field_subproject: Potprojekt field_hours: Sati field_activity: Aktivnost field_spent_on: Datum field_identifier: Identifikator field_is_filter: KoriÅ¡teno kao filtar field_delay: Odgodeno field_assignable: Predmeti mogu biti dodijeljeni ovoj ulozi field_redirect_existing_links: Preusmjeravanje postojećih linkova field_estimated_hours: Procijenjeno vrijeme field_column_names: Stupci field_time_zone: Vremenska zona field_searchable: Pretraživo field_default_value: Zadana vrijednost field_comments_sorting: Prikaz komentara field_parent_title: Parent page field_editable: Editable field_watcher: Watcher field_content: Content field_group_by: Group results by setting_app_title: Naziv aplikacije setting_welcome_text: Tekst dobrodoÅ¡lice setting_default_language: Zadani jezik setting_login_required: Potrebna je prijava setting_self_registration: Samoregistracija je dozvoljena setting_attachment_max_size: Maksimalna veliÄina privitka setting_issues_export_limit: OgraniÄenje izvoza predmeta setting_mail_from: Izvorna adresa e-poÅ¡te setting_plain_text_mail: obiÄni tekst poÅ¡te (bez HTML-a) setting_host_name: Naziv domaćina (host) setting_text_formatting: Oblikovanje teksta setting_wiki_compression: Sažimanje setting_feeds_limit: Ogranicenje unosa sadržaja setting_default_projects_public: Novi projekti su javni po defaultu setting_autofetch_changesets: Autofetch commits setting_sys_api_enabled: Omogući WS za upravljanje skladiÅ¡tem setting_commit_ref_keywords: Referentne kljuÄne rijeÄi setting_commit_fix_keywords: Fiksne kljuÄne rijeÄi setting_autologin: Automatska prijava setting_date_format: Format datuma setting_time_format: Format vremena setting_cross_project_issue_relations: Dozvoli povezivanje predmeta izmedu razliÄitih projekata setting_issue_list_default_columns: Stupci prikazani na listi predmeta setting_emails_footer: Zaglavlje e-poÅ¡te setting_protocol: Protokol setting_per_page_options: Objekata po stranici opcija setting_user_format: Oblik prikaza korisnika setting_activity_days_default: Dani prikazane aktivnosti na projektu setting_display_subprojects_issues: Prikaz predmeta potprojekta na glavnom projektu po defaultu setting_enabled_scm: Omogućen SCM setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" setting_mail_handler_api_enabled: Omoguci WS za dolaznu e-poÅ¡tu setting_mail_handler_api_key: API kljuÄ setting_sequential_project_identifiers: Generiraj slijedne identifikatore projekta setting_gravatar_enabled: Koristi Gravatar korisniÄke ikone setting_gravatar_default: Default Gravatar image setting_diff_max_lines_displayed: Maksimalni broj diff linija za prikazati setting_file_max_size_displayed: Max size of text files displayed inline setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_password_min_length: Minimum password length setting_new_project_user_role_id: Role given to a non-admin user who creates a project setting_default_projects_modules: Default enabled modules for new projects setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status setting_start_of_week: Start calendars on setting_rest_api_enabled: Enable REST web service permission_add_project: Dodaj projekt permission_add_subprojects: Dodaj potprojekt permission_edit_project: Uredi projekt permission_select_project_modules: Odaberi projektne module permission_manage_members: Upravljaj Älanovima permission_manage_versions: Upravljaj verzijama permission_manage_categories: Upravljaj kategorijama predmeta permission_view_issues: Pregledaj zahtjeve permission_add_issues: Dodaj predmete permission_edit_issues: Uredi predmete permission_manage_issue_relations: Upravljaj relacijama predmeta permission_add_issue_notes: Dodaj biljeÅ¡ke permission_edit_issue_notes: Uredi biljeÅ¡ke permission_edit_own_issue_notes: Uredi vlastite biljeÅ¡ke permission_delete_issues: Brisanje predmeta permission_manage_public_queries: Upravljaj javnim upitima permission_save_queries: Spremi upite permission_view_gantt: Pregledaj gantt grafikon permission_view_calendar: Pregledaj kalendar permission_view_issue_watchers: Pregledaj listu promatraca permission_add_issue_watchers: Dodaj promatraÄa permission_delete_issue_watchers: Delete watchers permission_log_time: Dnevnik utroÅ¡enog vremena permission_view_time_entries: Pregledaj utroÅ¡eno vrijeme permission_edit_time_entries: Uredi vremenske dnevnike permission_edit_own_time_entries: Edit own time logs permission_manage_news: Upravljaj novostima permission_comment_news: Komentiraj novosti permission_view_documents: Pregledaj dokumente permission_manage_files: Upravljaj datotekama permission_view_files: Pregledaj datoteke permission_manage_wiki: Upravljaj wikijem permission_rename_wiki_pages: Promijeni ime wiki stranicama permission_delete_wiki_pages: ObriÅ¡i wiki stranice permission_view_wiki_pages: Pregledaj wiki permission_view_wiki_edits: Pregledaj povijest wikija permission_edit_wiki_pages: Uredi wiki stranice permission_delete_wiki_pages_attachments: ObriÅ¡i privitke permission_protect_wiki_pages: ZaÅ¡titi wiki stranice permission_manage_repository: Upravljaj skladiÅ¡tem permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Mogućnost pohranjivanja permission_manage_boards: Manage boards permission_view_messages: Pregledaj poruke permission_add_messages: Objavi poruke permission_edit_messages: Uredi poruke permission_edit_own_messages: Uredi vlastite poruke permission_delete_messages: ObriÅ¡i poruke permission_delete_own_messages: ObriÅ¡i vlastite poruke project_module_issue_tracking: Praćenje predmeta project_module_time_tracking: Praćenje vremena project_module_news: Novosti project_module_documents: Dokumenti project_module_files: Datoteke project_module_wiki: Wiki project_module_repository: SkladiÅ¡te project_module_boards: Boards label_user: Korisnik label_user_plural: Korisnici label_user_new: Novi korisnik label_user_anonymous: Anonymous label_project: Projekt label_project_new: Novi projekt label_project_plural: Projekti label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: Svi Projekti label_project_latest: Najnoviji projekt label_issue: Predmet label_issue_new: Novi predmet label_issue_plural: Predmeti label_issue_view_all: Pregled svih predmeta label_issues_by: "Predmeti od %{value}" label_issue_added: Predmet dodan label_issue_updated: Predmet promijenjen label_document: Dokument label_document_new: Novi dokument label_document_plural: Dokumenti label_document_added: Dokument dodan label_role: Uloga label_role_plural: Uloge label_role_new: Nova uloga label_role_and_permissions: Uloge i ovlasti label_member: ÄŒlan label_member_new: Novi Älan label_member_plural: ÄŒlanovi label_tracker: Vrsta label_tracker_plural: Vrste predmeta label_tracker_new: Nova vrsta label_workflow: Tijek rada label_issue_status: Status predmeta label_issue_status_plural: Status predmeta label_issue_status_new: Novi status label_issue_category: Kategorija predmeta label_issue_category_plural: Kategorije predmeta label_issue_category_new: Nova kategorija label_custom_field: KorisniÄki definirano polje label_custom_field_plural: KorisniÄki definirana polja label_custom_field_new: Novo korisniÄki definirano polje label_enumerations: Pobrojenice label_enumeration_new: Nova vrijednost label_information: Informacija label_information_plural: Informacije label_register: Registracija label_password_lost: Izgubljena zaporka label_home: PoÄetna stranica label_my_page: Moja stranica label_my_account: Moj profil label_my_projects: Moji projekti label_administration: Administracija label_login: Korisnik label_logout: Odjava label_help: Pomoć label_reported_issues: Prijavljeni predmeti label_assigned_to_me_issues: Moji predmeti label_registered_on: Registrirano label_activity: Aktivnosti label_user_activity: "%{value} ova/ina aktivnost" label_new: Novi label_logged_as: Prijavljeni ste kao label_environment: Okolina label_authentication: Autentikacija label_auth_source: NaÄin prijavljivanja label_auth_source_new: Novi naÄin prijavljivanja label_auth_source_plural: NaÄini prijavljivanja label_subproject_plural: Potprojekti label_subproject_new: Novi potprojekt label_and_its_subprojects: "%{value} i njegovi potprojekti" label_min_max_length: Min - Maks veliÄina label_list: Liste label_date: Datum label_integer: Integer label_float: Float label_boolean: Boolean label_string: Text label_text: Long text label_attribute: Atribut label_attribute_plural: Atributi label_no_data: Nema podataka za prikaz label_change_status: Promjena statusa label_history: Povijest label_attachment: Datoteka label_attachment_new: Nova datoteka label_attachment_delete: Brisanje datoteke label_attachment_plural: Datoteke label_file_added: Datoteka dodana label_report: Izvješće label_report_plural: Izvješća label_news: Novosti label_news_new: Dodaj novost label_news_plural: Novosti label_news_latest: Novosti label_news_view_all: Pregled svih novosti label_news_added: Novosti dodane label_settings: Postavke label_overview: Pregled label_version: Verzija label_version_new: Nova verzija label_version_plural: Verzije label_confirmation: Potvrda label_export_to: 'Izvoz u:' label_read: ÄŒitaj... label_public_projects: Javni projekti label_open_issues: Otvoren label_open_issues_plural: Otvoreno label_closed_issues: Zatvoren label_closed_issues_plural: Zatvoreno label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_total: Ukupno label_permissions: Dozvole label_current_status: Trenutni status label_new_statuses_allowed: Novi status je dozvoljen label_all: Svi label_none: nema label_nobody: nitko label_next: Naredni label_previous: Prethodni label_used_by: KoriÅ¡ten od label_details: Detalji label_add_note: Dodaj napomenu label_calendar: Kalendar label_months_from: Mjeseci od label_gantt: Gantt label_internal: Interno label_last_changes: "Posljednjih %{count} promjena" label_change_view_all: Prikaz svih promjena label_comment: Komentar label_comment_plural: Komentari label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: Brisanje komentara label_query: KorisniÄki upit label_query_plural: KorisniÄki upiti label_query_new: Novi upit label_filter_add: Dodaj filtar label_filter_plural: Filtri label_equals: je label_not_equals: nije label_in_less_than: za manje od label_in_more_than: za viÅ¡e od label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: za toÄno label_today: danas label_yesterday: juÄer label_this_week: ovog tjedna label_last_week: proÅ¡log tjedna label_last_n_days: "zadnjih %{count} dana" label_this_month: ovog mjeseca label_last_month: proÅ¡log mjeseca label_this_year: ove godine label_date_range: vremenski raspon label_less_than_ago: manje od label_more_than_ago: viÅ¡e od label_ago: prije label_contains: Sadrži label_not_contains: ne sadrži label_day_plural: dana label_repository: SkladiÅ¡te label_repository_plural: SkladiÅ¡ta label_branch: Branch label_tag: Tag label_revision: Revizija label_revision_plural: Revizije label_revision_id: "Revision %{value}" label_associated_revisions: Dodijeljene revizije label_added: dodano label_modified: promijenjen label_copied: kopirano label_renamed: preimenovano label_deleted: obrisano label_latest_revision: Posljednja revizija label_latest_revision_plural: Posljednje revizije label_view_revisions: Pregled revizija label_view_all_revisions: View all revisions label_max_size: Maksimalna veliÄina label_roadmap: Putokaz label_roadmap_due_in: "ZavrÅ¡ava se za %{value}" label_roadmap_overdue: "%{value} kasni" label_roadmap_no_issues: Nema predmeta za ovu verziju label_search: Traži label_result_plural: Rezultati label_all_words: Sve rijeÄi label_wiki: Wiki label_wiki_edit: Wiki promjena label_wiki_edit_plural: Wiki promjene label_wiki_page: Wiki stranica label_wiki_page_plural: Wiki stranice label_index_by_title: Indeks po naslovima label_index_by_date: Indeks po datumu label_current_version: Trenutna verzija label_preview: Brzi pregled label_feed_plural: Feeds label_changes_details: Detalji svih promjena label_issue_tracking: Praćenje predmeta label_spent_time: UtroÅ¡eno vrijeme label_f_hour: "%{value} sata" label_f_hour_plural: "%{value} sati" label_time_tracking: Praćenje vremena label_change_plural: Promjene label_statistics: Statistika label_commits_per_month: Pohrana po mjesecu label_commits_per_author: Pohrana po autoru label_view_diff: Pregled razlika label_diff_inline: uvuÄeno label_diff_side_by_side: paralelno label_options: Opcije label_copy_workflow_from: Kopiraj tijek rada od label_permissions_report: Izvješće o dozvolama label_watched_issues: Praćeni predmeti label_related_issues: Povezani predmeti label_applied_status: Primijenjen status label_loading: UÄitavam... label_relation_new: Nova relacija label_relation_delete: Brisanje relacije label_relates_to: u relaciji sa label_duplicates: Duplira label_duplicated_by: ponovljen kao label_blocks: blokira label_blocked_by: blokiran od strane label_precedes: prethodi label_follows: slijedi label_stay_logged_in: Ostanite prijavljeni label_disabled: IskljuÄen label_show_completed_versions: Prikaži zavrÅ¡ene verzije label_me: ja label_board: Forum label_board_new: Novi forum label_board_plural: Forumi label_topic_plural: Teme label_message_plural: Poruke label_message_last: Posljednja poruka label_message_new: Nova poruka label_message_posted: Poruka dodana label_reply_plural: Odgovori label_send_information: PoÅ¡alji korisniku informaciju o profilu label_year: Godina label_month: Mjesec label_week: Tjedan label_date_from: Od label_date_to: Do label_language_based: Zasnovano na jeziku label_sort_by: "Uredi po %{value}" label_send_test_email: PoÅ¡alji testno E-pismo label_feeds_access_key: Atom access key label_missing_feeds_access_key: Missing a Atom access key label_feeds_access_key_created_on: "Atom kljuc za pristup je napravljen prije %{value}" label_module_plural: Moduli label_added_time_by: "Promijenio %{author} prije %{age}" label_updated_time_by: "Dodao/la %{author} prije %{age}" label_updated_time: "Promijenjeno prije %{value}" label_jump_to_a_project: Prebaci se na projekt... label_file_plural: Datoteke label_changeset_plural: Promjene label_default_columns: Zadani stupci label_no_change_option: (Bez promjene) label_bulk_edit_selected_issues: ZajedniÄka promjena izabranih predmeta label_theme: Tema label_default: Zadana label_search_titles_only: Pretraživanje samo naslova label_user_mail_option_all: "Za bilo koji dogaÄ‘aj na svim mojim projektima" label_user_mail_option_selected: "Za bilo koji dogaÄ‘aj samo za izabrane projekte..." label_user_mail_no_self_notified: "Ne želim primati obavijesti o promjenama koje sam napravim" label_registration_activation_by_email: aktivacija putem e-poÅ¡te label_registration_manual_activation: ruÄna aktivacija label_registration_automatic_activation: automatska aktivacija label_display_per_page: "Po stranici: %{value}" label_age: Starost label_change_properties: Promijeni svojstva label_general: Općenito label_scm: SCM label_plugins: Plugins label_ldap_authentication: LDAP autentikacija label_downloads_abbr: D/L label_optional_description: Opcije label_add_another_file: Dodaj joÅ¡ jednu datoteku label_preferences: Preferences label_chronological_order: U kronoloÅ¡kom redoslijedu label_reverse_chronological_order: U obrnutom kronoloÅ¡kom redoslijedu label_incoming_emails: Dolazne poruke e-poÅ¡te label_generate_key: Generiraj kljuÄ label_issue_watchers: PromatraÄi label_example: Primjer label_display: Display label_sort: Sort label_ascending: Ascending label_descending: Descending label_date_from_to: From %{start} to %{end} label_wiki_content_added: Wiki page added label_wiki_content_updated: Wiki page updated label_group: Group label_group_plural: Grupe label_group_new: Nova grupa label_time_entry_plural: Spent time label_version_sharing_none: Not shared label_version_sharing_descendants: With subprojects label_version_sharing_hierarchy: With project hierarchy label_version_sharing_tree: With project tree label_version_sharing_system: With all projects label_update_issue_done_ratios: Update issue done ratios label_copy_source: Source label_copy_target: Target label_copy_same_as_target: Same as target label_display_used_statuses_only: Only display statuses that are used by this tracker label_api_access_key: API access key label_missing_api_access_key: Missing an API access key label_api_access_key_created_on: "API access key created %{value} ago" button_login: Prijavi button_submit: PoÅ¡alji button_save: Spremi button_check_all: OznaÄi sve button_uncheck_all: IskljuÄi sve button_delete: ObriÅ¡i button_create: Napravi button_create_and_continue: Napravi i nastavi button_test: Test button_edit: Uredi button_add: Dodaj button_change: Promijeni button_apply: Primijeni button_clear: Ukloni button_lock: ZakljuÄaj button_unlock: OtkljuÄaj button_download: Preuzmi button_list: Spisak button_view: Pregled button_move: Premjesti button_move_and_follow: Move and follow button_back: Nazad button_cancel: Odustani button_activate: Aktiviraj button_sort: Redoslijed button_log_time: ZapiÅ¡i vrijeme button_rollback: IzvrÅ¡i rollback na ovu verziju button_watch: Prati button_unwatch: Prekini pracenje button_reply: Odgovori button_archive: Arhiviraj button_rollback: Dearhiviraj button_reset: PoniÅ¡ti button_rename: Promijeni ime button_change_password: Promjena zaporke button_copy: Kopiraj button_copy_and_follow: Copy and follow button_annotate: Annotate button_update: Promijeni button_configure: Konfiguracija button_quote: Navod button_show: Show status_active: aktivan status_registered: Registriran status_locked: zakljuÄan version_status_open: open version_status_locked: locked version_status_closed: closed field_active: Active text_select_mail_notifications: Izbor akcija za koje će biti poslana obavijest e-poÅ¡tom. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj projekt i sve njegove podatke? text_subprojects_destroy_warning: "Njegov(i) potprojekt(i): %{value} će takoÄ‘er biti obrisan." text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Da li ste sigurni? text_journal_changed: "%{label} promijenjen iz %{old} u %{new}" text_journal_set_to: "%{label} postavi na %{value}" text_journal_deleted: "%{label} izbrisano (%{old})" text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: Zadaci koji poÄinju ovog dana text_tip_issue_end_day: zadaci koji se zavrÅ¡avaju ovog dana text_tip_issue_begin_end_day: Zadaci koji poÄinju i zavrÅ¡avaju se ovog dana text_caracters_maximum: "NajviÅ¡e %{count} znakova." text_caracters_minimum: "Mora biti dugaÄko najmanje %{count} znakova." text_length_between: "Dužina izmedu %{min} i %{max} znakova." text_tracker_no_workflow: Tijek rada nije definiran za ovaj tracker text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: ViÅ¡estruke vrijednosti su dozvoljene (razdvojene zarezom). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_tracker_no_workflow: No workflow defined for this tracker text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Predmet %{id} je prijavljen (prijavio %{author})." text_issue_updated: "Predmet %{id} je promijenjen %{author})." text_wiki_destroy_confirmation: Da li ste sigurni da želite izbrisati ovaj wiki i njegov sadržaj? text_issue_category_destroy_question: "Neke predmeti (%{count}) su dodijeljeni ovoj kategoriji. Å to želite uraditi?" text_issue_category_destroy_assignments: Ukloni dodjeljivanje kategorija text_issue_category_reassign_to: Ponovo dodijeli predmete ovoj kategoriji text_user_mail_option: "Za neizabrane projekte, primit ćete obavjesti samo o stvarima koje pratite ili u kojima sudjelujete (npr. predmete koje ste vi napravili ili koje su vama dodjeljeni)." text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." text_load_default_configuration: UÄitaj poÄetnu konfiguraciju text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Jeste li sigurni da želite obrisati izabrani/e predmet(e)?' text_select_project_modules: 'Odaberite module koji će biti omogućeni za ovaj projekt:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Dozvoljeno pisanje u direktorij za privitke text_plugin_assets_writable: Plugin assets directory writable text_minimagick_available: MiniMagick dostupan (nije obavezno) text_destroy_time_entries_question: "%{hours} sati je prijavljeno za predmete koje želite obrisati. Å to ćete uÄiniti?" text_destroy_time_entries: ObriÅ¡i prijavljene sate text_assign_time_entries_to_project: Pridruži prijavljene sate projektu text_reassign_time_entries: 'Premjesti prijavljene sate ovom predmetu:' text_user_wrote: "%{value} je napisao/la:" text_user_wrote_in: "%{value} je napisao/la (%{link}):" text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti." text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:' text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... Ovaj diff je odrezan zato Å¡to prelazi maksimalnu veliÄinu koja može biti prikazana.' text_custom_field_possible_values_info: 'One line for each value' text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_reassign_children: "Reassign child pages to this parent page" default_role_manager: Upravitelj default_role_developer: Razvojni inženjer default_role_reporter: Korisnik default_tracker_bug: PogreÅ¡ka default_tracker_feature: Funkcionalnost default_tracker_support: PodrÅ¡ka default_issue_status_new: Novo default_issue_status_resolved: RijeÅ¡eno default_issue_status_feedback: Povratna informacija default_issue_status_closed: Zatvoreno default_issue_status_rejected: Odbaceno default_doc_category_user: KorisniÄka dokumentacija default_doc_category_tech: TehniÄka dokumentacija default_priority_low: Nizak default_priority_normal: Redovan default_priority_high: Visok default_priority_urgent: Hitan default_priority_immediate: Odmah default_activity_design: Dizajn default_activity_development: Razvoj enumeration_issue_priorities: Prioriteti predmeta enumeration_doc_categories: Kategorija dokumenata enumeration_activities: Aktivnosti (po vremenu) enumeration_system_activity: System Activity field_sharing: Sharing text_line_separated: Multiple values allowed (one line for each value). label_close_versions: Close completed versions button_unarchive: Unarchive field_issue_to: Related issue default_issue_status_in_progress: In Progress text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 predmet one: 1 predmet other: "%{count} predmeti" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: Svi label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Ukupno text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: E-poÅ¡ta setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API kljuÄ setting_lost_password: Izgubljena zaporka mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Brisanje relacije error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/hu.yml000066400000000000000000002261761500112024600172000ustar00rootroot00000000000000# Hungarian translations for Ruby on Rails # by Richard Abonyi (richard.abonyi@gmail.com) # thanks to KKata, replaced and #hup.hu # Cleaned up by László Bácsi (http://lackac.hu) # updated by kfl62 kfl62g@gmail.com # updated by Gábor Takács (taky77@gmail.com) "hu": direction: ltr date: formats: default: "%Y.%m.%d." short: "%b %e." long: "%Y. %B %e." day_names: [vasárnap, hétfÅ‘, kedd, szerda, csütörtök, péntek, szombat] abbr_day_names: [v., h., k., sze., cs., p., szo.] month_names: [~, január, február, március, április, május, június, július, augusztus, szeptember, október, november, december] abbr_month_names: [~, jan., febr., márc., ápr., máj., jún., júl., aug., szept., okt., nov., dec.] order: - :year - :month - :day time: formats: default: "%Y. %b %d., %H:%M" time: "%H:%M" short: "%b %e., %H:%M" long: "%Y. %B %e., %A, %H:%M" am: "de." pm: "du." datetime: distance_in_words: half_a_minute: 'fél perc' less_than_x_seconds: # zero: 'kevesebb, mint 1 másodperce' one: 'kevesebb, mint 1 másodperce' other: 'kevesebb, mint %{count} másodperce' x_seconds: one: '1 másodperce' other: '%{count} másodperce' less_than_x_minutes: # zero: 'kevesebb, mint 1 perce' one: 'kevesebb, mint 1 perce' other: 'kevesebb, mint %{count} perce' x_minutes: one: '1 perce' other: '%{count} perce' about_x_hours: one: 'csaknem 1 órája' other: 'csaknem %{count} órája' x_hours: one: "1 óra" other: "%{count} óra" x_days: one: '1 napja' other: '%{count} napja' about_x_months: one: 'csaknem 1 hónapja' other: 'csaknem %{count} hónapja' x_months: one: '1 hónapja' other: '%{count} hónapja' about_x_years: one: 'csaknem 1 éve' other: 'csaknem %{count} éve' over_x_years: one: 'több, mint 1 éve' other: 'több, mint %{count} éve' almost_x_years: one: "csaknem 1 éve" other: "csaknem %{count} éve" prompts: year: "Év" month: "Hónap" day: "Nap" hour: "Óra" minute: "Perc" second: "Másodperc" number: format: precision: 2 separator: ',' delimiter: ' ' currency: format: unit: 'Ft' precision: 0 format: '%n %u' separator: "," delimiter: "" percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "bájt" other: "bájt" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: # sentence_connector: "és" # skip_last_comma: true words_connector: ", " two_words_connector: " és " last_word_connector: " és " activerecord: errors: template: header: one: "1 hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" other: "%{count} hiba miatt nem menthetÅ‘ a következÅ‘: %{model}" body: "Problémás mezÅ‘k:" messages: inclusion: "nincs a listában" exclusion: "nem elérhetÅ‘" invalid: "nem megfelelÅ‘" confirmation: "nem egyezik" accepted: "nincs elfogadva" empty: "nincs megadva" blank: "nincs megadva" too_long: "túl hosszú (nem lehet több %{count} karakternél)" too_short: "túl rövid (legalább %{count} karakter kell legyen)" wrong_length: "nem megfelelÅ‘ hosszúságú (%{count} karakter szükséges)" taken: "már foglalt" not_a_number: "nem szám" greater_than: "nagyobb kell legyen, mint %{count}" greater_than_or_equal_to: "legalább %{count} kell legyen" equal_to: "pontosan %{count} kell legyen" less_than: "kevesebb, mint %{count} kell legyen" less_than_or_equal_to: "legfeljebb %{count} lehet" odd: "páratlan kell legyen" even: "páros kell legyen" greater_than_start_date: "nagyobbnak kell lennie, mint az indítás dátuma" not_same_project: "nem azonos projekthez tartozik" circular_dependency: "Ez a kapcsolat egy körkörös függÅ‘séget eredményez" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Kérem válasszon general_text_No: 'Nem' general_text_Yes: 'Igen' general_text_no: 'nem' general_text_yes: 'igen' general_lang_name: 'Hungarian (Magyar)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-2 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: A fiók adatai sikeresen frissítve. notice_account_invalid_credentials: Hibás felhasználói név, vagy jelszó notice_account_password_updated: A jelszó módosítása megtörtént. notice_account_wrong_password: Hibás jelszó notice_account_register_done: A fiók sikeresen létrehozva. Aktiválásához kattints az e-mailben kapott linkre notice_can_t_change_password: A fiók külsÅ‘ azonosítási forrást használ. A jelszó megváltoztatása nem lehetséges. notice_account_lost_email_sent: Egy e-mail üzenetben postáztunk Önnek egy leírást az új jelszó beállításáról. notice_account_activated: Fiókját aktiváltuk. Most már be tud jelentkezni a rendszerbe. notice_successful_create: Sikeres létrehozás. notice_successful_update: Sikeres módosítás. notice_successful_delete: Sikeres törlés. notice_successful_connection: Sikeres bejelentkezés. notice_file_not_found: Az oldal, amit meg szeretne nézni nem található, vagy átkerült egy másik helyre. notice_locking_conflict: Az adatot egy másik felhasználó idÅ‘ közben módosította. notice_not_authorized: Nincs hozzáférési engedélye ehhez az oldalhoz. notice_email_sent: "Egy e-mail üzenetet küldtünk a következÅ‘ címre %{value}" notice_email_error: "Hiba történt a levél küldése közben (%{value})" notice_feeds_access_key_reseted: Az Atom hozzáférési kulcsát újra generáltuk. notice_failed_to_save_issues: "Nem sikerült a %{count} feladat(ok) mentése a %{total} -ban kiválasztva: %{ids}." notice_account_pending: "A fiókja létrejött, és adminisztrátori jóváhagyásra vár." notice_default_data_loaded: Az alapértelmezett konfiguráció betöltése sikeresen megtörtént. error_can_t_load_default_data: "Az alapértelmezett konfiguráció betöltése nem lehetséges: %{value}" error_scm_not_found: "A bejegyzés, vagy revízió nem található a tárolóban." error_scm_command_failed: "A tároló elérése közben hiba lépett fel: %{value}" error_scm_annotate: "A bejegyzés nem létezik, vagy nics jegyzetekkel ellátva." error_issue_not_found_in_project: 'A feladat nem található, vagy nem ehhez a projekthez tartozik' mail_subject_lost_password: Az Ön Redmine jelszava mail_body_lost_password: 'A Redmine jelszó megváltoztatásához, kattintson a következÅ‘ linkre:' mail_subject_register: Redmine azonosító aktiválása mail_body_register: 'A Redmine azonosítója aktiválásához, kattintson a következÅ‘ linkre:' mail_body_account_information_external: "A %{value} azonosító használatával bejelentkezhet a Redmine-ba." mail_body_account_information: Az Ön Redmine azonosítójának információi mail_subject_account_activation_request: Redmine azonosító aktiválási kérelem mail_body_account_activation_request: "Egy új felhasználó (%{value}) regisztrált, azonosítója jóváhasgyásra várakozik:" field_name: Név field_description: Leírás field_summary: Összegzés field_is_required: KötelezÅ‘ field_firstname: Keresztnév field_lastname: Vezetéknév field_mail: E-mail field_filename: Fájl field_filesize: Méret field_downloads: Letöltések field_author: SzerzÅ‘ field_created_on: Létrehozva field_updated_on: Módosítva field_field_format: Formátum field_is_for_all: Minden projekthez field_possible_values: Lehetséges értékek field_regexp: Reguláris kifejezés field_min_length: Minimum hossz field_max_length: Maximum hossz field_value: Érték field_category: Kategória field_title: Cím field_project: Projekt field_issue: Feladat field_status: Státusz field_notes: Feljegyzések field_is_closed: Feladat lezárva field_is_default: Alapértelmezett érték field_tracker: Típus field_subject: Tárgy field_due_date: Befejezés dátuma field_assigned_to: FelelÅ‘s field_priority: Prioritás field_fixed_version: Cél verzió field_user: Felhasználó field_role: Szerepkör field_homepage: Weboldal field_is_public: Nyilvános field_parent: SzülÅ‘ projekt field_is_in_roadmap: Feladatok látszanak az életútban field_login: Azonosító field_mail_notification: E-mail értesítések field_admin: Adminisztrátor field_last_login_on: Utolsó bejelentkezés field_language: Nyelv field_effective_date: Dátum field_password: Jelszó field_new_password: Új jelszó field_password_confirmation: MegerÅ‘sítés field_version: Verzió field_type: Típus field_host: Kiszolgáló field_port: Port field_account: Felhasználói fiók field_base_dn: Base DN field_attr_login: Bejelentkezési tulajdonság field_attr_firstname: Keresztnév field_attr_lastname: Vezetéknév field_attr_mail: E-mail field_onthefly: On-the-fly felhasználó létrehozás field_start_date: Kezdés dátuma field_done_ratio: Készültség (%) field_auth_source: Azonosítási mód field_hide_mail: Rejtse el az e-mail címem field_comments: Megjegyzés field_url: URL field_start_page: KezdÅ‘lap field_subproject: Alprojekt field_hours: Óra field_activity: Aktivitás field_spent_on: Dátum field_identifier: Azonosító field_is_filter: SzűrÅ‘ként használható field_issue_to: Kapcsolódó feladat field_delay: Késés field_assignable: Feladat rendelhetÅ‘ ehhez a szerepkörhöz field_redirect_existing_links: LétezÅ‘ linkek átirányítása field_estimated_hours: Becsült idÅ‘igény field_column_names: Oszlopok field_time_zone: IdÅ‘zóna field_searchable: KereshetÅ‘ field_default_value: Alapértelmezett érték field_comments_sorting: Feljegyzések megjelenítése setting_app_title: Alkalmazás címe setting_welcome_text: ÜdvözlÅ‘ üzenet setting_default_language: Alapértelmezett nyelv setting_login_required: Azonosítás szükséges setting_self_registration: Regisztráció setting_attachment_max_size: Melléklet max. mérete setting_issues_export_limit: Feladatok exportálásának korlátja setting_mail_from: Kibocsátó e-mail címe setting_host_name: Kiszolgáló neve setting_text_formatting: Szöveg formázás setting_wiki_compression: Wiki történet tömörítés setting_feeds_limit: Atom tartalom korlát setting_default_projects_public: Az új projektek alapértelmezés szerint nyilvánosak setting_autofetch_changesets: Commitok automatikus lehúzása setting_sys_api_enabled: WS engedélyezése a tárolók kezeléséhez setting_commit_ref_keywords: Hivatkozó kulcsszavak setting_commit_fix_keywords: Javítások kulcsszavai setting_autologin: Automatikus bejelentkezés setting_date_format: Dátum formátum setting_time_format: IdÅ‘ formátum setting_cross_project_issue_relations: Kereszt-projekt feladat hivatkozások engedélyezése setting_issue_list_default_columns: Az alapértelmezésként megjelenített oszlopok a feladat listában setting_emails_footer: E-mail lábléc setting_protocol: Protokol setting_per_page_options: Objektum / oldal opciók setting_user_format: Felhasználók megjelenítésének formája setting_activity_days_default: Napok megjelenítése a project aktivitásnál setting_display_subprojects_issues: Alapértelmezettként mutassa az alprojektek feladatait is a projekteken setting_start_of_week: A hét elsÅ‘ napja project_module_issue_tracking: Feladat követés project_module_time_tracking: IdÅ‘ rögzítés project_module_news: Hírek project_module_documents: Dokumentumok project_module_files: Fájlok project_module_wiki: Wiki project_module_repository: Forráskód project_module_boards: Fórumok label_user: Felhasználó label_user_plural: Felhasználók label_user_new: Új felhasználó label_project: Projekt label_project_new: Új projekt label_project_plural: Projektek label_x_projects: zero: nincsenek projektek one: 1 projekt other: "%{count} projekt" label_project_all: Az összes projekt label_project_latest: Legutóbbi projektek label_issue: Feladat label_issue_new: Új feladat label_issue_plural: Feladatok label_issue_view_all: Minden feladat label_issues_by: "%{value} feladatai" label_issue_added: Feladat hozzáadva label_issue_updated: Feladat frissítve label_document: Dokumentum label_document_new: Új dokumentum label_document_plural: Dokumentumok label_document_added: Dokumentum hozzáadva label_role: Szerepkör label_role_plural: Szerepkörök label_role_new: Új szerepkör label_role_and_permissions: Szerepkörök, és jogosultságok label_member: RésztvevÅ‘ label_member_new: Új résztvevÅ‘ label_member_plural: RésztvevÅ‘k label_tracker: Feladat típus label_tracker_plural: Feladat típusok label_tracker_new: Új feladat típus label_workflow: Workflow label_issue_status: Feladat státusz label_issue_status_plural: Feladat státuszok label_issue_status_new: Új státusz label_issue_category: Feladat kategória label_issue_category_plural: Feladat kategóriák label_issue_category_new: Új kategória label_custom_field: Egyéni mezÅ‘ label_custom_field_plural: Egyéni mezÅ‘k label_custom_field_new: Új egyéni mezÅ‘ label_enumerations: Felsorolások label_enumeration_new: Új érték label_information: Információ label_information_plural: Információk label_register: Regisztráljon label_password_lost: Elfelejtett jelszó label_home: KezdÅ‘lap label_my_page: Saját kezdÅ‘lapom label_my_account: Fiókom adatai label_my_projects: Saját projektem label_administration: Adminisztráció label_login: Bejelentkezés label_logout: Kijelentkezés label_help: Súgó label_reported_issues: Bejelentett feladatok label_assigned_to_me_issues: A nekem kiosztott feladatok label_registered_on: Regisztrált label_activity: Történések label_new: Új label_logged_as: Bejelentkezve, mint label_environment: Környezet label_authentication: Azonosítás label_auth_source: Azonosítás módja label_auth_source_new: Új azonosítási mód label_auth_source_plural: Azonosítási módok label_subproject_plural: Alprojektek label_and_its_subprojects: "%{value} és alprojektjei" label_min_max_length: Min - Max hossz label_list: Lista label_date: Dátum label_integer: Egész label_float: LebegÅ‘pontos label_boolean: Logikai label_string: Szöveg label_text: Hosszú szöveg label_attribute: Tulajdonság label_attribute_plural: Tulajdonságok label_no_data: Nincs megjeleníthetÅ‘ adat label_change_status: Státusz módosítása label_history: Történet label_attachment: Fájl label_attachment_new: Új fájl label_attachment_delete: Fájl törlése label_attachment_plural: Fájlok label_file_added: Fájl hozzáadva label_report: Jelentés label_report_plural: Jelentések label_news: Hírek label_news_new: Hír hozzáadása label_news_plural: Hírek label_news_latest: Legutóbbi hírek label_news_view_all: Minden hír megtekintése label_news_added: Hír hozzáadva label_settings: Beállítások label_overview: Ãttekintés label_version: Verzió label_version_new: Új verzió label_version_plural: Verziók label_confirmation: Jóváhagyás label_export_to: Exportálás label_read: Olvas... label_public_projects: Nyilvános projektek label_open_issues: nyitott label_open_issues_plural: nyitott label_closed_issues: lezárt label_closed_issues_plural: lezárt label_x_open_issues_abbr: zero: 0 nyitott one: 1 nyitott other: "%{count} nyitott" label_x_closed_issues_abbr: zero: 0 lezárt one: 1 lezárt other: "%{count} lezárt" label_total: Összesen label_permissions: Jogosultságok label_current_status: Jelenlegi státusz label_new_statuses_allowed: Státusz változtatások engedélyei label_all: mind label_none: nincs label_nobody: senki label_next: KövetkezÅ‘ label_previous: ElÅ‘zÅ‘ label_used_by: Használja label_details: Részletek label_add_note: Jegyzet hozzáadása label_calendar: Naptár label_months_from: hónap, kezdve label_gantt: Gantt label_internal: BelsÅ‘ label_last_changes: "utolsó %{count} változás" label_change_view_all: Minden változás megtekintése label_comment: Megjegyzés label_comment_plural: Megjegyzés label_x_comments: zero: nincs megjegyzés one: 1 megjegyzés other: "%{count} megjegyzés" label_comment_add: Megjegyzés hozzáadása label_comment_added: Megjegyzés hozzáadva label_comment_delete: Megjegyzések törlése label_query: Egyéni lekérdezés label_query_plural: Egyéni lekérdezések label_query_new: Új lekérdezés label_filter_add: SzűrÅ‘ hozzáadása label_filter_plural: SzűrÅ‘k label_equals: egyenlÅ‘ label_not_equals: nem egyenlÅ‘ label_in_less_than: kevesebb, mint label_in_more_than: több, mint label_in: in label_today: ma label_yesterday: tegnap label_this_week: aktuális hét label_last_week: múlt hét label_last_n_days: "az elmúlt %{count} nap" label_this_month: aktuális hónap label_last_month: múlt hónap label_this_year: aktuális év label_date_range: Dátum intervallum label_less_than_ago: kevesebb, mint nappal ezelÅ‘tt label_more_than_ago: több, mint nappal ezelÅ‘tt label_ago: nappal ezelÅ‘tt label_contains: tartalmazza label_not_contains: nem tartalmazza label_day_plural: nap label_repository: Forráskód label_repository_plural: Forráskódok label_revision: Revízió label_revision_plural: Revíziók label_associated_revisions: Kapcsolt revíziók label_added: hozzáadva label_modified: módosítva label_deleted: törölve label_latest_revision: Legutolsó revízió label_latest_revision_plural: Legutolsó revíziók label_view_revisions: Revíziók megtekintése label_max_size: Maximális méret label_roadmap: Életút label_roadmap_due_in: "Elkészültéig várhatóan még %{value}" label_roadmap_overdue: "%{value} késésben" label_roadmap_no_issues: Nincsenek feladatok ehhez a verzióhoz label_search: Keresés label_result_plural: Találatok label_all_words: Minden szó label_wiki: Wiki label_wiki_edit: Wiki szerkesztés label_wiki_edit_plural: Wiki szerkesztések label_wiki_page: Wiki oldal label_wiki_page_plural: Wiki oldalak label_index_by_title: Cím szerint indexelve label_index_by_date: Dátum szerint indexelve label_current_version: Jelenlegi verzió label_preview: ElÅ‘nézet label_feed_plural: Visszajelzések label_changes_details: Változások részletei label_issue_tracking: Feladat követés label_spent_time: Ráfordított idÅ‘ label_f_hour: "%{value} óra" label_f_hour_plural: "%{value} óra" label_time_tracking: IdÅ‘ rögzítés label_change_plural: Változások label_statistics: Statisztikák label_commits_per_month: Commitok havonta label_commits_per_author: Commitok szerzÅ‘nként label_view_diff: Különbségek megtekintése label_diff_inline: soronként label_diff_side_by_side: egymás mellett label_options: Opciók label_copy_workflow_from: Workflow másolása innen label_permissions_report: Jogosultsági riport label_watched_issues: Megfigyelt feladatok label_related_issues: Kapcsolódó feladatok label_applied_status: Alkalmazandó státusz label_loading: Betöltés... label_relation_new: Új kapcsolat label_relation_delete: Kapcsolat törlése label_relates_to: kapcsolódik label_duplicates: duplikálja label_blocks: zárolja label_blocked_by: zárolta label_precedes: megelÅ‘zi label_follows: követi label_stay_logged_in: Emlékezzen rám label_disabled: kikapcsolva label_show_completed_versions: A kész verziók mutatása label_me: én label_board: Fórum label_board_new: Új fórum label_board_plural: Fórumok label_topic_plural: Témák label_message_plural: Üzenetek label_message_last: Utolsó üzenet label_message_new: Új üzenet label_message_posted: Üzenet hozzáadva label_reply_plural: Válaszok label_send_information: Fiók infomációk küldése a felhasználónak label_year: Év label_month: Hónap label_week: Hét label_date_from: 'Kezdet:' label_date_to: 'Vége:' label_language_based: A felhasználó nyelve alapján label_sort_by: "%{value} szerint rendezve" label_send_test_email: Teszt e-mail küldése label_feeds_access_key_created_on: "Atom hozzáférési kulcs létrehozva %{value}" label_module_plural: Modulok label_added_time_by: "%{author} adta hozzá %{age}" label_updated_time: "Utolsó módosítás %{value}" label_jump_to_a_project: Ugrás projekthez... label_file_plural: Fájlok label_changeset_plural: Changesets label_default_columns: Alapértelmezett oszlopok label_no_change_option: (Nincs változás) label_bulk_edit_selected_issues: A kiválasztott feladatok kötegelt szerkesztése label_theme: Téma label_default: Alapértelmezett label_search_titles_only: Keresés csak a címekben label_user_mail_option_all: "Minden eseményrÅ‘l minden saját projektemben" label_user_mail_option_selected: "Minden eseményrÅ‘l a kiválasztott projektekben..." label_user_mail_no_self_notified: "Nem kérek értesítést az általam végzett módosításokról" label_registration_activation_by_email: Fiók aktiválása e-mailben label_registration_manual_activation: Manuális fiók aktiválás label_registration_automatic_activation: Automatikus fiók aktiválás label_display_per_page: "Oldalanként: %{value}" label_age: Kor label_change_properties: Tulajdonságok változtatása label_general: Ãltalános label_scm: SCM label_plugins: Pluginek label_ldap_authentication: LDAP azonosítás label_downloads_abbr: D/L label_optional_description: Opcionális leírás label_add_another_file: Újabb fájl hozzáadása label_preferences: Tulajdonságok label_chronological_order: IdÅ‘rendben label_reverse_chronological_order: Fordított idÅ‘rendben button_login: Bejelentkezés button_submit: Elfogad button_save: Mentés button_check_all: Mindent kijelöl button_uncheck_all: Kijelölés törlése button_delete: Töröl button_create: Létrehoz button_test: Teszt button_edit: Szerkeszt button_add: Hozzáad button_change: Változtat button_apply: Alkalmaz button_clear: Töröl button_lock: Zárol button_unlock: Felold button_download: Letöltés button_list: Lista button_view: Megnéz button_move: Mozgat button_back: Vissza button_cancel: Mégse button_activate: Aktivál button_sort: Rendezés button_log_time: IdÅ‘ rögzítés button_rollback: Visszaáll erre a verzióra button_watch: Megfigyel button_unwatch: Megfigyelés törlése button_reply: Válasz button_archive: Archivál button_unarchive: Dearchivál button_reset: Reset button_rename: Ãtnevez button_change_password: Jelszó megváltoztatása button_copy: Másol button_annotate: Jegyzetel button_update: Módosít button_configure: Konfigurál status_active: aktív status_registered: regisztrált status_locked: zárolt text_select_mail_notifications: Válasszon eseményeket, amelyekrÅ‘l e-mail értesítést kell küldeni. text_regexp_info: pl. ^[A-Z0-9]+$ text_project_destroy_confirmation: Biztosan törölni szeretné a projektet és vele együtt minden kapcsolódó adatot ? text_subprojects_destroy_warning: "Az alprojekt(ek): %{value} szintén törlésre kerülnek." text_workflow_edit: Válasszon egy szerepkört, és egy feladat típust a workflow szerkesztéséhez text_are_you_sure: Biztos benne ? text_tip_issue_begin_day: a feladat ezen a napon kezdÅ‘dik text_tip_issue_end_day: a feladat ezen a napon ér véget text_tip_issue_begin_end_day: a feladat ezen a napon kezdÅ‘dik és ér véget text_caracters_maximum: "maximum %{count} karakter." text_caracters_minimum: "Legkevesebb %{count} karakter hosszúnek kell lennie." text_length_between: "Legalább %{min} és legfeljebb %{max} hosszú karakter." text_tracker_no_workflow: Nincs workflow definiálva ehhez a feladat típushoz text_unallowed_characters: Tiltott karakterek text_comma_separated: Több érték megengedett (vesszÅ‘vel elválasztva) text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben text_issue_added: "%{author} új feladatot hozott létre %{id} sorszámmal." text_issue_updated: "%{author} módosította a %{id} sorszámú feladatot." text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ? text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni?" text_issue_category_destroy_assignments: Kategória hozzárendelés megszüntetése text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához text_user_mail_option: "A nem kiválasztott projektekrÅ‘l csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelÅ‘)" text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErÅ‘sen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt." text_load_default_configuration: Alapértelmezett konfiguráció betöltése text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Biztos benne, hogy törölni szeretné a kijelölt feladato(ka)t ?' text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:' text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva text_file_repository_writable: Fájl tároló írható text_minimagick_available: MiniMagick elérhetÅ‘ (nem kötelezÅ‘) text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni?" text_destroy_time_entries: A rögzített órák törlése text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:' default_role_manager: VezetÅ‘ default_role_developer: FejlesztÅ‘ default_role_reporter: BejelentÅ‘ default_tracker_bug: Hiba default_tracker_feature: Fejlesztés default_tracker_support: Támogatás default_issue_status_new: Új default_issue_status_in_progress: Folyamatban default_issue_status_resolved: Megoldva default_issue_status_feedback: Visszajelzés default_issue_status_closed: Lezárt default_issue_status_rejected: Elutasított default_doc_category_user: Felhasználói dokumentáció default_doc_category_tech: Technikai dokumentáció default_priority_low: Alacsony default_priority_normal: Normál default_priority_high: Magas default_priority_urgent: SürgÅ‘s default_priority_immediate: Azonnal default_activity_design: Tervezés default_activity_development: Fejlesztés enumeration_issue_priorities: Feladat prioritások enumeration_doc_categories: Dokumentum kategóriák enumeration_activities: Tevékenységek (idÅ‘ rögzítés) mail_body_reminder: "%{count} neked kiosztott feladat határidÅ‘s az elkövetkezÅ‘ %{days} napban:" mail_subject_reminder: "%{count} feladat határidÅ‘s az elkövetkezÅ‘ %{days} napban" text_user_wrote: "%{value} írta:" text_user_wrote_in: "%{value} írta (%{link}):" label_duplicated_by: duplikálta setting_enabled_scm: ForráskódkezelÅ‘ (SCM) engedélyezése text_enumeration_category_reassign_to: 'Újra hozzárendelés ehhez:' text_enumeration_destroy_question: "%{count} objektum van hozzárendelve ehhez az értékhez." label_incoming_emails: Beérkezett levelek label_generate_key: Kulcs generálása setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez setting_mail_handler_api_key: API kulcs text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÃllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." field_parent_title: SzülÅ‘ oldal label_issue_watchers: MegfigyelÅ‘k button_quote: Hozzászólás / Idézet setting_sequential_project_identifiers: Szekvenciális projekt azonosítók generálása notice_unable_delete_version: A verziót nem lehet törölni label_renamed: átnevezve label_copied: lemásolva setting_plain_text_mail: csak szöveg (nem HTML) permission_view_files: Fájlok megtekintése permission_edit_issues: Feladatok szerkesztése permission_edit_own_time_entries: Saját idÅ‘napló szerkesztése permission_manage_public_queries: Nyilvános kérések kezelése permission_add_issues: Feladat felvétele permission_log_time: IdÅ‘ rögzítése permission_view_changesets: Változáskötegek megtekintése permission_view_time_entries: IdÅ‘rögzítések megtekintése permission_manage_versions: Verziók kezelése permission_manage_wiki: Wiki kezelése permission_manage_categories: Feladat kategóriák kezelése permission_protect_wiki_pages: Wiki oldalak védelme permission_comment_news: Hírek kommentelése permission_delete_messages: Üzenetek törlése permission_select_project_modules: Projekt modulok kezelése permission_edit_wiki_pages: Wiki oldalak szerkesztése permission_add_issue_watchers: MegfigyelÅ‘k felvétele permission_view_gantt: Gannt diagramm megtekintése permission_manage_issue_relations: Feladat kapcsolatok kezelése permission_delete_wiki_pages: Wiki oldalak törlése permission_manage_boards: Fórumok kezelése permission_delete_wiki_pages_attachments: Csatolmányok törlése permission_view_wiki_edits: Wiki történet megtekintése permission_add_messages: Üzenet beküldése permission_view_messages: Üzenetek megtekintése permission_manage_files: Fájlok kezelése permission_edit_issue_notes: Jegyzetek szerkesztése permission_manage_news: Hírek kezelése permission_view_calendar: Naptár megtekintése permission_manage_members: Tagok kezelése permission_edit_messages: Üzenetek szerkesztése permission_delete_issues: Feladatok törlése permission_view_issue_watchers: MegfigyelÅ‘k listázása permission_manage_repository: Tárolók kezelése permission_commit_access: Commit hozzáférés permission_browse_repository: Tároló böngészése permission_view_documents: Dokumetumok megtekintése permission_edit_project: Projekt szerkesztése permission_add_issue_notes: Jegyzet rögzítése permission_save_queries: Kérések mentése permission_view_wiki_pages: Wiki megtekintése permission_rename_wiki_pages: Wiki oldalak átnevezése permission_edit_time_entries: IdÅ‘naplók szerkesztése permission_edit_own_issue_notes: Saját jegyzetek szerkesztése setting_gravatar_enabled: Felhasználói fényképek engedélyezése label_example: Példa text_repository_usernames_mapping: "Ãllítsd be a felhasználó összerendeléseket a Redmine, és a tároló logban található felhasználók között.\nAz azonos felhasználó nevek összerendelése automatikusan megtörténik." permission_edit_own_messages: Saját üzenetek szerkesztése permission_delete_own_messages: Saját üzenetek törlése label_user_activity: "%{value} tevékenységei" label_updated_time_by: "Módosította %{author} %{age}" text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthetÅ‘ sorok száma.' setting_diff_max_lines_displayed: A megjelenítendÅ‘ sorok száma (maximum) a diff fájloknál text_plugin_assets_writable: Plugin eszközök könyvtár írható warning_attachments_not_saved: "%{count} fájl mentése nem sikerült." button_create_and_continue: Létrehozás és folytatás text_custom_field_possible_values_info: 'Értékenként egy sor' label_display: Megmutat field_editable: SzerkeszthetÅ‘ setting_repository_log_display_limit: Maximum hány revíziót mutasson meg a log megjelenítésekor setting_file_max_size_displayed: Maximum mekkora szövegfájlokat jelenítsen meg soronkénti összehasonlításnál field_watcher: MegfigyelÅ‘ field_content: Tartalom label_descending: CsökkenÅ‘ label_sort: Rendezés label_ascending: NövekvÅ‘ label_date_from_to: "%{start} -tól %{end} -ig" label_greater_or_equal: ">=" label_less_or_equal: "<=" text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni? text_wiki_page_reassign_children: Aloldalak hozzárendelése ehhez a szülÅ‘ oldalhoz text_wiki_page_nullify_children: Aloldalak átalakítása fÅ‘oldallá text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése setting_password_min_length: Minimum jelszó hosszúság field_group_by: Szerint csoportosítva mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve" label_wiki_content_added: Wiki oldal hozzáadva mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'" mail_body_wiki_content_added: "%{author} létrehozta a '%{id}' wiki oldalt." label_wiki_content_updated: Wiki oldal frissítve mail_body_wiki_content_updated: "%{author} frissítette a '%{id}' wiki oldalt." permission_add_project: Projekt létrehozása setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak label_view_all_revisions: Összes verzió label_tag: Tag label_branch: Branch error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenÅ‘rizze a projekt beállításait. error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenÅ‘rizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok"). text_journal_changed: "%{label} megváltozott, %{old} helyett %{new} lett" text_journal_set_to: "%{label} új értéke: %{value}" text_journal_deleted: "%{label} törölve lett (%{old})" label_group_plural: Csoportok label_group: Csoport label_group_new: Új csoport label_time_entry_plural: IdÅ‘ráfordítás text_journal_added: "%{label} %{value} hozzáadva" field_active: Aktív enumeration_system_activity: Rendszertevékenység permission_delete_issue_watchers: MegfigyelÅ‘k törlése version_status_closed: lezárt version_status_locked: zárolt version_status_open: nyitott error_can_not_reopen_issue_on_closed_version: Lezárt verzióhoz rendelt feladatot nem lehet újranyitni label_user_anonymous: Névtelen button_move_and_follow: Mozgatás és követés setting_default_projects_modules: Alapértelmezett modulok az új projektekhez setting_gravatar_default: Alapértelmezett Gravatar kép field_sharing: Megosztás label_version_sharing_hierarchy: Projekt hierarchiával label_version_sharing_system: Minden projekttel label_version_sharing_descendants: Alprojektekkel label_version_sharing_tree: Projekt fával label_version_sharing_none: Nincs megosztva error_can_not_archive_project: A projektet nem lehet archiválni button_copy_and_follow: Másolás és követés label_copy_source: Forrás setting_issue_done_ratio: Feladat készültségi szint számolása a következÅ‘ alapján setting_issue_done_ratio_issue_status: Feladat státusz alapján error_issue_done_ratios_not_updated: A feladat készültségi szintek nem lettek frissítve. error_workflow_copy_target: Kérem válasszon cél feladat típus(oka)t és szerepkör(öke)t. setting_issue_done_ratio_issue_field: A feladat mezÅ‘ alapján label_copy_same_as_target: A céllal egyezÅ‘ label_copy_target: Cél notice_issue_done_ratios_updated: Feladat készültségi szintek frissítve. error_workflow_copy_source: Kérem válasszon forrás feladat típust vagy szerepkört label_update_issue_done_ratios: Feladat készültségi szintek frissítése setting_start_of_week: A hét elsÅ‘ napja permission_view_issues: Feladatok megtekintése label_display_used_statuses_only: Csak olyan feladat státuszok megjelenítése, amit ez a feladat típus használ label_revision_id: Revízió %{value} label_api_access_key: API hozzáférési kulcs label_api_access_key_created_on: API hozzáférési kulcs létrehozva %{value} ezelÅ‘tt label_feeds_access_key: Atom hozzáférési kulcs notice_api_access_key_reseted: Az API hozzáférési kulcsa újragenerálva. setting_rest_api_enabled: REST web service engedélyezése label_missing_api_access_key: Egy API hozzáférési kulcs hiányzik label_missing_feeds_access_key: Atom hozzáférési kulcs hiányzik button_show: Megmutat text_line_separated: Több érték megadása lehetséges (soronként 1 érték). setting_mail_handler_body_delimiters: E-mailek levágása a következÅ‘ sorok valamelyike esetén permission_add_subprojects: Alprojektek létrehozása label_subproject_new: Új alprojekt text_own_membership_delete_confirmation: |- Arra készül, hogy eltávolítja egyes vagy minden jogosultságát! Ezt követÅ‘en lehetséges, hogy nem fogja tudni szerkeszteni ezt a projektet! Biztosan folyatni szeretné? label_close_versions: Kész verziók lezárása label_board_sticky: Sticky setting_cache_formatted_text: Formázott szöveg gyorsítótárazása (Cache) permission_export_wiki_pages: Wiki oldalak exportálása permission_manage_project_activities: Projekt tevékenységek kezelése label_board_locked: Zárolt error_can_not_delete_custom_field: Nem lehet törölni az egyéni mezÅ‘t permission_manage_subtasks: Alfeladatok kezelése label_profile: Profil error_unable_to_connect: Nem lehet csatlakozni (%{value}) error_can_not_remove_role: Ez a szerepkör használatban van és ezért nem törölhetÅ‘- field_parent_issue: SzülÅ‘ feladat error_unable_delete_issue_status: Nem lehet törölni a feladat állapotát (%{value}) label_subtask_plural: Alfeladatok error_can_not_delete_tracker_html: Ebbe a kategóriába feladatok tartoznak és ezért nem törölhetÅ‘.

    The following projects have issues with this tracker:
    %{projects}

    label_project_copy_notifications: Küldjön e-mail értesítéseket projektmásolás közben. field_principal: FelelÅ‘s notice_failed_to_save_members: "Nem sikerült menteni a tago(ka)t: %{errors}." text_zoom_out: Kicsinyít text_zoom_in: Nagyít notice_unable_delete_time_entry: Az idÅ‘rögzítés nem törölhetÅ‘ field_time_entries: IdÅ‘ rögzítés project_module_gantt: Gantt project_module_calendar: Naptár button_edit_associated_wikipage: "Hozzárendelt Wiki oldal szerkesztése: %{page_title}" field_text: Szöveg mezÅ‘ setting_default_notification_option: Alapértelmezett értesítési beállítások label_user_mail_option_only_my_events: Csak az általam megfigyelt dolgokról vagy amiben részt veszek label_user_mail_option_none: Semilyen eseményrÅ‘l field_member_of_group: Hozzárendelt csoport field_assigned_to_role: Hozzárendelt szerepkör notice_not_authorized_archived_project: A projekt, amihez hozzá szeretnél férni archiválva lett. label_principal_search: "Felhasználó vagy csoport keresése:" label_user_search: "Felhasználó keresése:" field_visible: Látható setting_emails_header: Emailek fejléce setting_commit_logtime_activity_id: A rögzített idÅ‘höz tartozó tevékenység text_time_logged_by_changeset: Alkalmazva a %{value} changeset-ben. setting_commit_logtime_enabled: IdÅ‘rögzítés engedélyezése notice_gantt_chart_truncated: A diagram le lett vágva, mert elérte a maximálisan megjeleníthetÅ‘ elemek számát (%{max}) setting_gantt_items_limit: A gantt diagrammon megjeleníthetÅ‘ maximális elemek száma field_warn_on_leaving_unsaved: Figyelmeztessen, nem mentett módosításokat tartalmazó oldal elhagyásakor text_warn_on_leaving_unsaved: A jelenlegi oldal nem mentett módosításokat tartalmaz, ami elvész, ha elhagyja az oldalt. label_my_queries: Egyéni lekérdezéseim text_journal_changed_no_detail: "%{label} módosítva" label_news_comment_added: Megjegyzés hozzáadva a hírhez button_expand_all: Mindet kibont button_collapse_all: Mindet összecsuk label_additional_workflow_transitions_for_assignee: További átmenetek engedélyezettek, ha a felhasználó a hozzárendelt label_additional_workflow_transitions_for_author: További átmenetek engedélyezettek, ha a felhasználó a szerzÅ‘ label_bulk_edit_selected_time_entries: A kiválasztott idÅ‘ bejegyzések csoportos szerkesztése text_time_entries_destroy_confirmation: Biztos benne, hogy törölni szeretné a kiválasztott idÅ‘ bejegyzés(eke)t? label_role_anonymous: Anonim label_role_non_member: Nem tag label_issue_note_added: Jegyzet hozzáadva label_issue_status_updated: Ãllapot módosítva label_issue_priority_updated: Prioritás módosítva label_issues_visibility_own: A felhasználó által létrehozott vagy hozzárendelt feladatok field_issues_visibility: Feladatok láthatósága label_issues_visibility_all: Minden feladat permission_set_own_issues_private: Saját feladatok beállítása nyilvánosra vagy privátra field_is_private: Privát permission_set_issues_private: Feladatok beállítása nyilvánosra vagy privátra label_issues_visibility_public: Minden nem privát feladat text_issues_destroy_descendants_confirmation: Ezzel törölni fog %{count} alfeladatot is. field_commit_logs_encoding: Commit üzenetek kódlapja field_scm_path_encoding: Elérési útvonal kódlapja text_scm_path_encoding_note: "Alapértelmezett: UTF-8" field_path_to_repository: A repository elérési útja field_root_directory: Gyökér könyvtár field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Helyi repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Parancs text_scm_command_version: Verzió label_git_report_last_commit: Legutóbbi commit adatainak megjelenítése a fájllistában notice_issue_successful_create: "A feladat létrejött: %{id}." label_between: intervallum setting_issue_group_assignment: FelelÅ‘sként csoport is megadható label_diff: különbség text_git_repository_note: 'Csupasz és helyi tároló (pl. /gitrepo, c:\gitrepo)' description_query_sort_criteria_direction: Rendezés iránya description_project_scope: Keresés hatóköre description_filter: SzűrÅ‘ description_user_mail_notification: E-mail-értesítek beállításai description_message_content: Hozzászólás tartalma description_available_columns: Kiválasztható oszlopok description_issue_category_reassign: Válasszon feladatkategóriát description_search: Keresési mezÅ‘ description_notes: Megjegyzések description_choose_project: Projektek description_query_sort_criteria_attribute: Rendezési szempont description_wiki_subpages_reassign: Válasszon új szülÅ‘oldalt description_selected_columns: Kiválasztott oszlopok label_parent_revision: SzülÅ‘ label_child_revision: Gyerek error_scm_annotate_big_text_file: "A bejegyzést nem lehet jegyzetekkel ellátni, mert túllépné a maximális fájlméretet." setting_default_issue_start_date_to_creation_date: A feladatok kezdÅ‘ dátuma a létrehozás idÅ‘pontja button_edit_section: Fejezet szerkesztése setting_repositories_encodings: Csatolmányok és tárolók kódolása description_all_columns: Minden oszlop button_export: Exportálás label_export_options: "%{export_format}-exportálás paraméterei" error_attachment_too_big: "A fájlt nem lehet feltölteni, mert nagyobb a megengedett méretnél (%{max_size})" notice_failed_to_save_time_entries: "Nem sikerült a kijelölt %{total} idÅ‘ráfordításból %{count} mentése: %{ids}." label_x_issues: zero: 0 feladat one: 1 feladat other: "%{count} feladatok" label_repository_new: Új tárolók field_repository_is_default: Main repository label_copy_attachments: Csatolmányok másolása label_item_position: "%{position}/%{count}" label_completed_versions: Kész verziók text_project_identifier_info: Csak kisbetűk (a-z), számjegyek, kötÅ‘jelek és aláhúzásjelek megengedettek, és kisbetűvel kell kezdÅ‘dnie.
    Mentés után az azonosító nem változtatható meg. field_multiple: Több is kiválasztható setting_commit_cross_project_ref: Engedélyezett más projekt feladatainak hivatkozása és megoldása text_issue_conflict_resolution_add_notes: Megjegyzésem hozzáadása a többi változás mentése nélkül text_issue_conflict_resolution_overwrite: Módosításaim mentése (a másik tranzakció megjegyzései megmaradnak, de egyéb mezők felülíródhat) notice_issue_update_conflict: A feladatot másik felhasználó is módosította, amíg Ön szerkesztette. text_issue_conflict_resolution_cancel: "Módosításaim elvetése, és frissítés: %{link}" permission_manage_related_issues: Kapcsolódó feladatok kezelése field_auth_source_ldap_filter: LDAP-szűrő label_search_for_watchers: Megfigyelőként beállítandó felhasználók keresése notice_account_deleted: A felhasználói fiókja végleg törlődött. setting_unsubscribe: A felhasználók törölhetik saját fiókjukat button_delete_my_account: Felhasználói fiókom törlése text_account_destroy_confirmation: "Biztosan folytatni szeretné? A felhasználói fiókja végleg törlődni fog, és visszaállítani nem lehet." error_session_expired: "A munkamenete lejárt. Kérem, lépjen be újra." text_session_expiration_settings: "Figyelem: módosítás hatására az aktuális munkamenetek érvényüket veszthetik. Az Öné is." setting_session_lifetime: Munkamenet maximális ideje setting_session_timeout: Munkamenet maximális tétlenségi ideje label_session_expiration: Munkamenet lejárata permission_close_project: Projekt lezárása / megnyitása button_close: Lezárás button_reopen: Újranyitás project_status_active: aktív project_status_closed: lezárt project_status_archived: archivált text_project_closed: Ez a projekt le van zárva, és csak olvasható. notice_user_successful_create: "A felhasználói fiók létrejött: %{id}." field_core_fields: Alapmezők field_timeout: Időtúllépés (másodpercben) setting_thumbnails_enabled: Csatolmányokhoz bélyegképek megjelenítése setting_thumbnails_size: Bélyegképek mérete képpontban label_status_transitions: Státusz-átmenetek label_fields_permissions: Mező-jogosultságok label_readonly: Csak olvasható label_required: Kötelező text_repository_identifier_info: Csak kisbetűk (a-z), számjegyek, kötőjelek és aláhúzásjelek megengedettek.
    Mentés után az azonosító nem változtatható meg. field_board_parent: Szülőfórum label_attribute_of_project: "Projekt/%{name}" label_attribute_of_author: "Szerző/%{name}" label_attribute_of_assigned_to: "Felelős/%{name}" label_attribute_of_fixed_version: "Célverzió/%{name}" label_copy_subtasks: Alfeladatok másolása label_copied_to: "Ide van másolva:" label_copied_from: "Innen van másolva:" label_any_issues_in_project: a következő projekt bármely feladata label_any_issues_not_in_project: bármely, a következő projekten kívüli feladat field_private_notes: Privát megjegyzés permission_view_private_notes: Privát megjegyzések megtekintése permission_set_notes_private: Megjegyzések beállítása privátként label_no_issues_in_project: a következő projekt egyetlen feladata sem label_any: bármelyik label_last_n_weeks: "az elmúlt %{count} hétben" setting_cross_project_subtasks: Alfeladatok lehetnek másik projektben label_cross_project_descendants: Alprojektekkel label_cross_project_tree: Projekt fával label_cross_project_hierarchy: Projekt hierarchiával label_cross_project_system: Minden projekttel button_hide: Elrejtés setting_non_working_week_days: Munkaszüneti napok label_in_the_next_days: a következő label_in_the_past_days: az elmúlt label_attribute_of_user: "Felhasználó/%{name}" text_turning_multiple_off: Ha megszünteti a többes kiválasztás lehetőségét, el lesznek távolítva értéket, hogy csak egy maradjon. label_attribute_of_issue: "Feladat/%{name}" permission_add_documents: Dokumentumok hozzáadása permission_edit_documents: Dokumentumok szerkesztése permission_delete_documents: Dokumentumok törlése label_gantt_progress_line: Folyamatvonal setting_jsonp_enabled: JSONP engedélyezése field_inherit_members: Résztvevők örököltetése field_closed_on: Lezárva field_generate_password: Generált jelszó setting_default_projects_tracker_ids: Alapértelmezett feladattípusok új projektekhez label_total_time: Összesen text_scm_config: A verziókezelő parancsokat a config/configuration.yml fájlban konfigurálhatja. Utána újra kell indítani az alkalmazást. text_scm_command_not_available: A verziókezelő parancs nem elérhető. Kérem, ellenőrizze a beállításokat az adminisztrációs panelen. notice_account_not_activated_yet: Még nem aktiválta a felhasználói fiókját. Ha új aktiváló e-mailt szeretne, kattintson ide. notice_account_locked: Az Ön fiókja zárolva van. label_hidden: Rejtett label_visibility_private: csak nekem label_visibility_roles: csak ezen szerepköröknek label_visibility_public: bármely felhasználónak field_must_change_passwd: Jelszót kell változtatni következő belépésnél notice_new_password_must_be_different: Az új jelszónak különböznie kell a jelenlegitől setting_mail_handler_excluded_filenames: Csatolmányok kihagyása név alapján text_convert_available: ImageMagick convert elérhető (nem kötelező) label_link: Hivatkozás label_only: csak label_drop_down_list: legördülő lista label_checkboxes: jelölőnégyzet label_link_values_to: URL-sablon setting_force_default_language_for_anonymous: Névtelen felhasználók nem válthatnak nyelvet setting_force_default_language_for_loggedin: Belépett felhasználók nem válthatnak nyelvet label_custom_field_select_type: Válassza ki, milyen típusú objektumhoz kapcsolódjon a mező label_issue_assigned_to_updated: Felelős módosítva label_check_for_updates: Frissítések keresése label_latest_compatible_version: Legutóbbi kompatibilis verzió label_unknown_plugin: Ismeretlen bővítmény label_radio_buttons: rádiógomok label_group_anonymous: Névtelen felhasználók label_group_non_member: Nem résztvevő felhasználók label_add_projects: Projektek hozzáadása field_default_status: Alapértelmezett státusz text_subversion_repository_note: 'Pl.: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Felhasználók láthatósága label_users_visibility_all: Minden aktív felhasználó label_users_visibility_members_of_visible_projects: Látható projektek résztvevői label_edit_attachments: Csatolt fájlok szerkesztése setting_link_copied_issue: Feladat hivatkozása másoláskor label_link_copied_issue: Másolt feladat hivatkozása label_ask: Választható label_search_attachments_yes: Keresés a csatolt fájlok neveiben és leírásokban label_search_attachments_no: Csatolmányok kihagyása a keresésből label_search_attachments_only: Keresés csak a csatolmányokban label_search_open_issues_only: Csak nyitott feladatok field_address: E-mail setting_max_additional_emails: Másodlagos e-mail címek maximális száma label_email_address_plural: E-mail címek label_email_address_add: Email cím hozzáadása label_enable_notifications: Értesítések engedélyezése label_disable_notifications: Értesítések letiltása setting_search_results_per_page: Találati eredmények száma oldalanként label_blank_value: üres permission_copy_issues: Feladatok másolása error_password_expired: "A jelszava lejárt, vagy az adminisztrátor kérte a megváltoztatását." field_time_entries_visibility: Időráfordítások láthatósága setting_password_max_age: Jelszó érvényességi ideje label_parent_task_attributes: Szülőfeladatok tulajdonságai/ label_parent_task_attributes_derived: Alfeladatokból számítva label_parent_task_attributes_independent: Alfeladatoktól függetlenül label_time_entries_visibility_all: Minden időráfordítás label_time_entries_visibility_own: A felhasználó által rögzített időráfordítások label_member_management: Résztvevők kezelése label_member_management_all_roles: Minden szerepkör label_member_management_selected_roles_only: Csak ezek a szerepkörök label_password_required: Erősítse meg a jelszavát a folytatáshoz label_total_spent_time: Összes ráfordított idő notice_import_finished: "%{count} elem importálva" notice_import_finished_with_errors: "Az összes %{total} elemből %{count} importálása nem sikerült" error_invalid_file_encoding: "A fájl %{encoding} kódolása érvénytelen" error_invalid_csv_file_or_settings: "Ez a fájl nem CSV, vagy nem a lenti beállítások megfelelő" error_can_not_read_import_file: "Hiba történt az importálandó fájl beolvasásakor" permission_import_issues: Feladatok importálása label_import_issues: Feladatok importálása label_select_file_to_import: Válassza ki az importálandó fájlt label_fields_separator: Mezőelválasztó label_fields_wrapper: Mezőegybefogó label_encoding: Kódolás label_comma_char: Vessző label_semi_colon_char: Pontosvessző label_quote_char: Aposztróf label_double_quote_char: Idézőjel label_fields_mapping: Mezőleképzés label_file_content_preview: Fájltartalom előnézete label_create_missing_values: Hiányzó értékek létrehozása button_import: Importálás field_total_estimated_hours: Összes becsült óra label_api: API label_total_plural: Összesítések label_assigned_issues: Neki kiosztott feladatok label_field_format_enumeration: Értékpár-lista label_f_hour_short: '%{value} h' field_default_version: Alapértelmezett verzió error_attachment_extension_not_allowed: "Nem engedélyezett %{extension} kiterjesztésű fájl csatolása" setting_attachment_extensions_allowed: Engedélyezett kiterjesztések setting_attachment_extensions_denied: Tiltott kiterjesztések label_any_open_issues: bármely nyitott feladat label_no_open_issues: egyetlen nyitott feladat sem label_default_values_for_new_users: Alapértelmezések új felhasználóknak error_ldap_bind_credentials: "Érvénytelen LDAP-felhasználó/-jelszó" setting_sys_api_key: API kulcs setting_lost_password: Elfelejtett jelszó mail_subject_security_notification: "Biztonsági értesítés" mail_body_security_notification_change: '%{field} megváltozott.' mail_body_security_notification_change_to: '%{field} a következőre változott: %{value}.' mail_body_security_notification_add: '%{field} %{value} lett beállítva.' mail_body_security_notification_remove: '%{field} %{value} törölve lett.' mail_body_security_notification_notify_enabled: "%{value} e-mail címre fog értesítéseket kapni." mail_body_security_notification_notify_disabled: "%{value} e-mail címre nem fog értesítéseket kapni." mail_body_settings_updated: "A következő beállítások módosultak:" field_remote_ip: IP-cím label_wiki_page_new: Új wiki oldal label_relations: Relations button_filter: Szűrés mail_body_password_updated: A jelszava megváltozott. label_no_preview: Nincs előnézet error_no_tracker_allowed_for_new_issue_in_project: "Nincs olyan feladattípus a projektben, amellyel feladatot hozhatna létre" label_tracker_all: Minden feladattípus label_new_project_issue_tab_enabled: '"Új feladat" fül megjelenítése' setting_new_item_menu_tab: Projektfül új objektumok létrehozásához label_new_object_tab_enabled: '"+" legördülő lista megjelenítése' error_no_projects_with_tracker_allowed_for_new_issue: "Nincs olyan projekt, amelyben feladatot hozhatna létre" field_textarea_font: Szövegmezőkhöz használt betűkészlet label_font_default: Alapértelmezett betűtípus label_font_monospace: Fix szélességű betűkészlet label_font_proportional: Arányos betűkészlet setting_timespan_format: Időráfordítások formátuma label_table_of_contents: Tartalomjegyzék setting_commit_logs_formatting: Commitüzenetek formázása setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: "%{child} alfeladat nem helyezhető át az új projektbe: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "Nem lehet törlendő feladathoz rendelni időráfordítást" setting_timelog_required_fields: Időráfordítás kötelező mezői label_attribute_of_object: "%{object_name}/%{name}" label_user_mail_option_only_assigned: "Csak a hozzám rendelt vagy megfigyelt dolgokról" label_user_mail_option_only_owner: "Csak arról, aminek szerzője vagy megfigyelője vagyok" warning_fields_cleared_on_bulk_edit: "A változások eredményeként egy vagy több mező törlődni fog a kiválasztott objektumokban" field_updated_by: Frissítette field_last_updated_by: Utoljára frissítette field_full_width_layout: Széles megjelenítés label_last_notes: Legutóbbi megjegyzések field_digest: Lenyomat field_default_assigned_to: Alapértelmezett felelős setting_show_custom_fields_on_registration: Egyéni mezők megjelenítése regisztráláskor permission_view_news: Hírek megtekintése label_no_preview_alternative_html: Nincs előnézet. %{link} label_no_preview_download: Letöltés setting_close_duplicate_issues: Duplikált (másodlagos) feladatok automatikus zárása error_exceeds_maximum_hours_per_day: "Nem lehet %{max_hours} óránál többet rögzíteni ugyanarra a napra. (Már %{logged_hours} óra rögzítve van.)" setting_time_entry_list_defaults: Időráfordítási lista alapértelmezései setting_timelog_accept_0_hours: 0 órás időráfordítás elfogadása setting_timelog_max_hours_per_day: Naponként én felhasználónként elfogadható órák maximális száma label_x_revisions: "%{count} revízió" error_can_not_delete_auth_source: "Ez a bejelentkezési mód használatban van, így nem törölhető." button_actions: Műveletek mail_body_lost_password_validity: 'Ezzel a linkkel csak egyszer lehet jelszót változtatni.' text_login_required_html: Amikor nem szükséges bejelentkezés, a nyilvános projektek és a tartalmuk elérhetők a hálózatról. A vonatkozó jogosultság szerkeszthető. label_login_required_yes: "Igen" label_login_required_no: "Nem, az anoním hozzáférés a nyilvános projektekhez engedélyezett" text_project_is_public_non_member: A nyilvános projektek és a tartalmuk minden belépett felhasználó számára elérhetők. text_project_is_public_anonymous: A nyilvános projektek és a tartalmuk szabadon elérhetők a hálózatról. label_version_and_files: Verziók (%{count}) és fájlok label_ldap: LDAP label_ldaps_verify_none: LDAPS a tanúsítvány ellenőrzése nélkül label_ldaps_verify_peer: LDAPS label_ldaps_warning: Javasolt a biztonságos LDAPS használata a kiszolgáló tanúsítványának ellenőrzésével. label_nothing_to_preview: Nincs megjelenítendő tartalom error_token_expired: "Ez a jelszóvál/error_spent_on_future_datetoztatási link elévült." error_spent_on_future_date: "Nem lehet jövőbeli dátumra rögzíteni" setting_timelog_accept_future_dates: Jövőbeli időráfordítás elfogadása label_delete_link_to_subtask: Alfeladat kapcsolatának törlése error_not_allowed_to_log_time_for_other_users: "Nem rögzítheti más felhasználó időráfordítását" permission_log_time_for_other_users: Más felhasználók időráfordításának rögzítése label_tomorrow: holnap label_next_week: jövő hét label_next_month: jövő hónap text_role_no_workflow: Nincs munkafolyamat definiálva ehhez a szerepkörhöz text_status_no_workflow: Ezt a státuszt semelyik munkafolymat feladattípusa sem használja. setting_show_status_changes_in_mail_subject: Státuszváltozás jelzése az e-mail tárgyában setting_mail_handler_preferred_body_part: MIME multipart e-mailek preferált része setting_show_status_changes_/in_mail_subject: Státuszváltozás jelzése az e-mail tárgyában label_inherited_from_parent_project: "A szülőprojektből öröklődött" label_inherited_from_group: "%{name} csoportból öröklődött" label_trackers_description: Feladattípusok leírása label_open_trackers_description: Minden feladattípus leírásának megjelenítése label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Szülőfeladat tárgya permission_edit_own_issues: Saját feladatok szerkesztése text_select_apply_tracker: "Feladattípus kiválasztása" label_updated_issues: Módosított feladatok text_avatar_server_config_html: 'Az aktuális avatarkiszolgáló: %{url}. A config/configuration.yml-ben lehet beállítani.' setting_gantt_months_limit: A gantt diagramon megjeleníthető maximális hónapok száma permission_import_time_entries: Időráfordítások importálása label_import_notifications: E-mail-értesítések küldése importálás közben text_gs_available: ImageMagick PDF-támogatása elérhető (nem kötelező) field_recently_used_projects: Legutóbb használt projektek maximális számla a projektválasztóban label_optgroup_bookmarks: Kedvencek label_optgroup_recents: Legutóbb használt button_project_bookmark: Kendvencként jelölés button_project_bookmark_delete: Törlés a kedvencekből field_history_default_tab: Feladattörténet alapértelmezett füle label_issue_history_properties: Tulajdonságok változásai label_issue_history_notes: Megjegyzések label_last_tab_visited: Legutóbbi fül field_unique_id: Egyedi azonosító text_no_subject: nincs tárgy setting_password_required_char_classes : Jelszavakhoz megkövetelt karakterosztályok label_password_char_class_uppercase: nagybetű label_password_char_class_lowercase: kisbetű label_password_char_class_digits: számjegy label_password_char_class_special_chars: különleges karakter text_characters_must_contain: "Megkövetelet karakterek: %{character_classes}." label_starts_with: kezdete label_ends_with: vége label_issue_fixed_version_updated: Célverzió módosítva setting_project_list_defaults: Projektlista alapértelmezései label_display_type: Eredmény megjelenítése label_display_type_list: táblázatként label_display_type_board: panelként label_my_bookmarks: Kedvencek label_import_time_entries: Időráfordítások importálása field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Túl sok próbálkozás. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Az oldal nem található error_filename_required: Fájlnév hiányzik error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Figyelők label_attachment_description: File leírás error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Alapértelmezett lekérdezés field_default_project_query: Alapértelmezett projekt lekérdezés label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/id.yml000066400000000000000000002124041500112024600171450ustar00rootroot00000000000000# Indonesian translations # by Raden Prabowo (cakbowo@gmail.com) id: direction: ltr date: formats: default: "%d-%m-%Y" short: "%d %b" long: "%d %B %Y" day_names: [Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu] abbr_day_names: [Ming, Sen, Sel, Rab, Kam, Jum, Sab] month_names: [~, Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember] abbr_month_names: [~, Jan, Feb, Mar, Apr, Mei, Jun, Jul, Agu, Sep, Okt, Nov, Des] order: - :day - :month - :year time: formats: default: "%a %d %b %Y, %H:%M:%S" time: "%H:%M" short: "%d %b %H:%M" long: "%d %B %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "setengah menit" less_than_x_seconds: one: "kurang dari sedetik" other: "kurang dari %{count} detik" x_seconds: one: "sedetik" other: "%{count} detik" less_than_x_minutes: one: "kurang dari semenit" other: "kurang dari %{count} menit" x_minutes: one: "semenit" other: "%{count} menit" about_x_hours: one: "sekitar sejam" other: "sekitar %{count} jam" x_hours: one: "1 jam" other: "%{count} jam" x_days: one: "sehari" other: "%{count} hari" about_x_months: one: "sekitar sebulan" other: "sekitar %{count} bulan" x_months: one: "sebulan" other: "%{count} bulan" about_x_years: one: "sekitar setahun" other: "sekitar %{count} tahun" over_x_years: one: "lebih dari setahun" other: "lebih dari %{count} tahun" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: precision: 3 separator: ',' delimiter: '.' currency: format: unit: 'Rp' precision: 2 format: '%n %u' human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: sentence_connector: "dan" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "tidak termasuk dalam daftar" exclusion: "sudah dicadangkan" invalid: "salah" confirmation: "tidak sesuai konfirmasi" accepted: "harus disetujui" empty: "tidak boleh kosong" blank: "tidak boleh kosong" too_long: "terlalu panjang (maksimum %{count} karakter)" too_short: "terlalu pendek (minimum %{count} karakter)" wrong_length: "panjangnya salah (seharusnya %{count} karakter)" taken: "sudah diambil" not_a_number: "bukan angka" not_a_date: "bukan tanggal" greater_than: "harus lebih besar dari %{count}" greater_than_or_equal_to: "harus lebih besar atau sama dengan %{count}" equal_to: "harus sama dengan %{count}" less_than: "harus kurang dari %{count}" less_than_or_equal_to: "harus kurang atau sama dengan %{count}" odd: "harus ganjil" even: "harus genap" greater_than_start_date: "harus lebih besar dari tanggal mulai" not_same_project: "tidak tergabung dalam proyek yang sama" circular_dependency: "kaitan ini akan menghasilkan circular dependency" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Silakan pilih general_text_No: 'Tidak' general_text_Yes: 'Ya' general_text_no: 'tidak' general_text_yes: 'ya' general_lang_name: 'Indonesian (Bahasa Indonesia)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: Akun sudah berhasil diperbarui. notice_account_invalid_credentials: Pengguna atau kata sandi salah notice_account_password_updated: Kata sandi sudah berhasil diperbarui. notice_account_wrong_password: Kata sandi salah. notice_account_register_done: Akun sudah berhasil dibuat. Untuk mengaktifkan akun anda, silakan klik tautan (link) yang dikirim kepada anda melalui e-mail. notice_can_t_change_password: Akun ini menggunakan sumber otentikasi eksternal yang tidak dikenal. Kata sandi tidak bisa diubah. notice_account_lost_email_sent: Email berisi instruksi untuk memilih kata sandi baru sudah dikirimkan kepada anda. notice_account_activated: Akun anda sudah diaktifasi. Sekarang anda bisa login. notice_successful_create: Berhasil dibuat. notice_successful_update: Berhasil diperbarui. notice_successful_delete: Berhasil dihapus. notice_successful_connection: Berhasil terhubung. notice_file_not_found: Berkas yang anda buka tidak ada atau sudah dihapus. notice_locking_conflict: Data sudah diubah oleh pengguna lain. notice_not_authorized: Anda tidak memiliki akses ke halaman ini. notice_email_sent: "Email sudah dikirim ke %{value}" notice_email_error: "Terjadi kesalahan pada saat pengiriman email (%{value})" notice_feeds_access_key_reseted: Atom access key anda sudah direset. notice_failed_to_save_issues: "Gagal menyimpan %{count} masalah dari %{total} yang dipilih: %{ids}." notice_account_pending: "Akun anda sudah dibuat dan sekarang sedang menunggu persetujuan administrator." notice_default_data_loaded: Konfigurasi default sudah berhasil dimuat. notice_unable_delete_version: Tidak bisa menghapus versi. error_can_t_load_default_data: "Konfigurasi default tidak bisa dimuat: %{value}" error_scm_not_found: "Entri atau revisi tidak terdapat pada repositori." error_scm_command_failed: "Terjadi kesalahan pada saat mengakses repositori: %{value}" error_scm_annotate: "Entri tidak ada, atau tidak dapat di anotasi." error_issue_not_found_in_project: 'Masalah tidak ada atau tidak tergabung dalam proyek ini.' error_no_tracker_in_project: 'Tidak ada pelacak yang diasosiasikan pada proyek ini. Silakan pilih Pengaturan Proyek.' error_no_default_issue_status: 'Nilai default untuk Status masalah belum didefinisikan. Periksa kembali konfigurasi anda (Pilih "Administrasi --> Status masalah").' error_can_not_reopen_issue_on_closed_version: 'Masalah yang ditujukan pada versi tertutup tidak bisa dibuka kembali' error_can_not_archive_project: Proyek ini tidak bisa diarsipkan warning_attachments_not_saved: "%{count} berkas tidak bisa disimpan." mail_subject_lost_password: "Kata sandi %{value} anda" mail_body_lost_password: 'Untuk mengubah kata sandi anda, klik tautan berikut::' mail_subject_register: "Aktivasi akun %{value} anda" mail_body_register: 'Untuk mengaktifkan akun anda, klik tautan berikut:' mail_body_account_information_external: "Anda dapat menggunakan akun %{value} anda untuk login." mail_body_account_information: Informasi akun anda mail_subject_account_activation_request: "Permintaan aktivasi akun %{value} " mail_body_account_activation_request: "Pengguna baru (%{value}) sudan didaftarkan. Akun tersebut menunggu persetujuan anda:" mail_subject_reminder: "%{count} masalah harus selesai pada hari berikutnya (%{days})" mail_body_reminder: "%{count} masalah yang ditugaskan pada anda harus selesai dalam %{days} hari kedepan:" mail_subject_wiki_content_added: "'%{id}' halaman wiki sudah ditambahkan" mail_body_wiki_content_added: "The '%{id}' halaman wiki sudah ditambahkan oleh %{author}." mail_subject_wiki_content_updated: "'%{id}' halaman wiki sudah diperbarui" mail_body_wiki_content_updated: "The '%{id}' halaman wiki sudah diperbarui oleh %{author}." field_name: Nama field_description: Deskripsi field_summary: Ringkasan field_is_required: Dibutuhkan field_firstname: Nama depan field_lastname: Nama belakang field_mail: Email field_filename: Berkas field_filesize: Ukuran field_downloads: Unduhan field_author: Pengarang field_created_on: Dibuat field_updated_on: Diperbarui field_field_format: Format field_is_for_all: Untuk semua proyek field_possible_values: Nilai yang mungkin field_regexp: Regular expression field_min_length: Panjang minimum field_max_length: Panjang maksimum field_value: Nilai field_category: Kategori field_title: Judul field_project: Proyek field_issue: Masalah field_status: Status field_notes: Catatan field_is_closed: Masalah ditutup field_is_default: Nilai default field_tracker: Pelacak field_subject: Perihal field_due_date: Harus selesai field_assigned_to: Ditugaskan ke field_priority: Prioritas field_fixed_version: Versi target field_user: Pengguna field_role: Peran field_homepage: Halaman web field_is_public: Publik field_parent: Subproyek dari field_is_in_roadmap: Masalah ditampilkan di rencana kerja field_login: Login field_mail_notification: Notifikasi email field_admin: Administrator field_last_login_on: Terakhir login field_language: Bahasa field_effective_date: Tanggal field_password: Kata sandi field_new_password: Kata sandi baru field_password_confirmation: Konfirmasi field_version: Versi field_type: Tipe field_host: Host field_port: Port field_account: Akun field_base_dn: Base DN field_attr_login: Atribut login field_attr_firstname: Atribut nama depan field_attr_lastname: Atribut nama belakang field_attr_mail: Atribut email field_onthefly: Pembuatan pengguna seketika field_start_date: Mulai field_done_ratio: "% Selesai" field_auth_source: Mode otentikasi field_hide_mail: Sembunyikan email saya field_comments: Komentar field_url: URL field_start_page: Halaman awal field_subproject: Subproyek field_hours: Jam field_activity: Kegiatan field_spent_on: Tanggal field_identifier: Pengenal field_is_filter: Digunakan sebagai penyaring field_issue_to: Masalah terkait field_delay: Tertunday field_assignable: Masalah dapat ditugaskan pada peran ini field_redirect_existing_links: Alihkan tautan yang ada field_estimated_hours: Perkiraan waktu field_column_names: Kolom field_time_zone: Zona waktu field_searchable: Dapat dicari field_default_value: Nilai default field_comments_sorting: Tampilkan komentar field_parent_title: Halaman induk field_editable: Dapat disunting field_watcher: Pemantau field_content: Isi field_group_by: Dikelompokkan berdasar field_sharing: Berbagi setting_app_title: Judul aplikasi setting_welcome_text: Teks sambutan setting_default_language: Bahasa Default setting_login_required: Butuhkan otentikasi setting_self_registration: Swa-pendaftaran setting_attachment_max_size: Ukuran maksimum untuk lampiran setting_issues_export_limit: Batasan ukuran export masalah setting_mail_from: Emisi alamat email setting_plain_text_mail: Plain text mail (no HTML) setting_host_name: Nama host dan path setting_text_formatting: Format teks setting_wiki_compression: Kompresi untuk riwayat wiki setting_feeds_limit: Batasan isi feed setting_default_projects_public: Proyek baru defaultnya adalah publik setting_autofetch_changesets: Autofetch commits setting_sys_api_enabled: Aktifkan WS untuk pengaturan repositori setting_commit_ref_keywords: Referensi kaca kunci setting_commit_fix_keywords: Pembetulan kaca kunci setting_autologin: Autologin setting_date_format: Format tanggal setting_time_format: Format waktu setting_cross_project_issue_relations: Perbolehkan kaitan masalah proyek berbeda setting_issue_list_default_columns: Kolom default ditampilkan di daftar masalah setting_emails_footer: Footer untuk email setting_protocol: Protokol setting_per_page_options: Pilihan obyek per halaman setting_user_format: Format tampilan untuk pengguna setting_activity_days_default: Hari tertampil pada kegiatan proyek setting_display_subprojects_issues: Secara default, tampilkan masalah subproyek pada proyek utama setting_enabled_scm: Enabled SCM setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key setting_sequential_project_identifiers: Buat pengenal proyek terurut setting_gravatar_enabled: Gunakan icon pengguna dari Gravatar setting_gravatar_default: Gambar default untuk Gravatar setting_diff_max_lines_displayed: Maksimum perbedaan baris tertampil setting_file_max_size_displayed: Maksimum berkas tertampil secara inline setting_repository_log_display_limit: Nilai maksimum dari revisi ditampilkan di log berkas setting_password_min_length: Panjang minimum untuk kata sandi setting_new_project_user_role_id: Peran diberikan pada pengguna non-admin yang membuat proyek setting_default_projects_modules: Modul yang diaktifkan pada proyek baru permission_add_project: Tambahkan proyek permission_edit_project: Sunting proyek permission_select_project_modules: Pilih modul proyek permission_manage_members: Atur anggota permission_manage_versions: Atur versi permission_manage_categories: Atur kategori masalah permission_add_issues: Tambahkan masalah permission_edit_issues: Sunting masalah permission_manage_issue_relations: Atur kaitan masalah permission_add_issue_notes: Tambahkan catatan permission_edit_issue_notes: Sunting catatan permission_edit_own_issue_notes: Sunting catatan saya permission_delete_issues: Hapus masalah permission_manage_public_queries: Atur query publik permission_save_queries: Simpan query permission_view_gantt: Tampilkan gantt chart permission_view_calendar: Tampilkan kalender permission_view_issue_watchers: Tampilkan daftar pemantau permission_add_issue_watchers: Tambahkan pemantau permission_delete_issue_watchers: Hapus pemantau permission_log_time: Log waktu terpakai permission_view_time_entries: Tampilkan waktu terpakai permission_edit_time_entries: Sunting catatan waktu permission_edit_own_time_entries: Sunting catatan waktu saya permission_manage_news: Atur berita permission_comment_news: Komentari berita permission_view_documents: Tampilkan dokumen permission_manage_files: Atur berkas permission_view_files: Tampilkan berkas permission_manage_wiki: Atur wiki permission_rename_wiki_pages: Ganti nama halaman wiki permission_delete_wiki_pages: Hapus halaman wiki permission_view_wiki_pages: Tampilkan wiki permission_view_wiki_edits: Tampilkan riwayat wiki permission_edit_wiki_pages: Sunting halaman wiki permission_delete_wiki_pages_attachments: Hapus lampiran permission_protect_wiki_pages: Proteksi halaman wiki permission_manage_repository: Atur repositori permission_browse_repository: Jelajah repositori permission_view_changesets: Tampilkan set perubahan permission_commit_access: Commit akses permission_manage_boards: Atur forum permission_view_messages: Tampilkan pesan permission_add_messages: Tambahkan pesan permission_edit_messages: Sunting pesan permission_edit_own_messages: Sunting pesan saya permission_delete_messages: Hapus pesan permission_delete_own_messages: Hapus pesan saya project_module_issue_tracking: Pelacak masalah project_module_time_tracking: Pelacak waktu project_module_news: Berita project_module_documents: Dokumen project_module_files: Berkas project_module_wiki: Wiki project_module_repository: Repositori project_module_boards: Forum label_user: Pengguna label_user_plural: Pengguna label_user_new: Pengguna baru label_user_anonymous: Anonymous label_project: Proyek label_project_new: Proyek baru label_project_plural: Proyek label_x_projects: zero: tidak ada proyek one: 1 proyek other: "%{count} proyek" label_project_all: Semua Proyek label_project_latest: Proyek terakhir label_issue: Masalah label_issue_new: Masalah baru label_issue_plural: Masalah label_issue_view_all: tampilkan semua masalah label_issues_by: "Masalah ditambahkan oleh %{value}" label_issue_added: Masalah ditambahan label_issue_updated: Masalah diperbarui label_document: Dokumen label_document_new: Dokumen baru label_document_plural: Dokumen label_document_added: Dokumen ditambahkan label_role: Peran label_role_plural: Peran label_role_new: Peran baru label_role_and_permissions: Peran dan perijinan label_member: Anggota label_member_new: Anggota baru label_member_plural: Anggota label_tracker: Pelacak label_tracker_plural: Pelacak label_tracker_new: Pelacak baru label_workflow: Alur kerja label_issue_status: Status masalah label_issue_status_plural: Status masalah label_issue_status_new: Status baru label_issue_category: Kategori masalah label_issue_category_plural: Kategori masalah label_issue_category_new: Kategori baru label_custom_field: Field kustom label_custom_field_plural: Field kustom label_custom_field_new: Field kustom label_enumerations: Enumerasi label_enumeration_new: Buat baru label_information: Informasi label_information_plural: Informasi label_register: mendaftar label_password_lost: Lupa password label_home: Halaman depan label_my_page: Beranda label_my_account: Akun saya label_my_projects: Proyek saya label_administration: Administrasi label_login: Login label_logout: Keluar label_help: Bantuan label_reported_issues: Masalah terlapor label_assigned_to_me_issues: Masalah yang ditugaskan pada saya label_registered_on: Terdaftar pada label_activity: Kegiatan label_user_activity: "kegiatan %{value}" label_new: Baru label_logged_as: Login sebagai label_environment: Lingkungan label_authentication: Otentikasi label_auth_source: Mode Otentikasi label_auth_source_new: Mode otentikasi baru label_auth_source_plural: Mode Otentikasi label_subproject_plural: Subproyek label_and_its_subprojects: "%{value} dan subproyeknya" label_min_max_length: Panjang Min - Maks label_list: Daftar label_date: Tanggal label_integer: Integer label_float: Float label_boolean: Boolean label_string: Text label_text: Long text label_attribute: Atribut label_attribute_plural: Atribut label_no_data: Tidak ada data untuk ditampilkan label_change_status: Status perubahan label_history: Riwayat label_attachment: Berkas label_attachment_new: Berkas baru label_attachment_delete: Hapus Berkas label_attachment_plural: Berkas label_file_added: Berkas ditambahkan label_report: Laporan label_report_plural: Laporan label_news: Berita label_news_new: Tambahkan berita label_news_plural: Berita label_news_latest: Berita terakhir label_news_view_all: Tampilkan semua berita label_news_added: Berita ditambahkan label_settings: Pengaturan label_overview: Umum label_version: Versi label_version_new: Versi baru label_version_plural: Versi label_confirmation: Konfirmasi label_export_to: 'Juga tersedia dalam:' label_read: Baca... label_public_projects: Proyek publik label_open_issues: belum selesai label_open_issues_plural: belum selesai label_closed_issues: selesai label_closed_issues_plural: selesai label_x_open_issues_abbr: zero: 0 belum selesai one: 1 belum selesai other: "%{count} belum selesai" label_x_closed_issues_abbr: zero: 0 selesai one: 1 selesai other: "%{count} selesai" label_total: Total label_permissions: Perijinan label_current_status: Status sekarang label_new_statuses_allowed: Status baru yang diijinkan label_all: semua label_none: tidak ada label_nobody: tidak ada label_next: Berikut label_previous: Sebelum label_used_by: Digunakan oleh label_details: Rincian label_add_note: Tambahkan catatan label_calendar: Kalender label_months_from: dari bulan label_gantt: Gantt label_internal: Internal label_last_changes: "%{count} perubahan terakhir" label_change_view_all: Tampilkan semua perubahan label_comment: Komentar label_comment_plural: Komentar label_x_comments: zero: tak ada komentar one: 1 komentar other: "%{count} komentar" label_comment_add: Tambahkan komentar label_comment_added: Komentar ditambahkan label_comment_delete: Hapus komentar label_query: Custom query label_query_plural: Custom queries label_query_new: Query baru label_filter_add: Tambahkan filter label_filter_plural: Filter label_equals: sama dengan label_not_equals: tidak sama dengan label_in_less_than: kurang dari label_in_more_than: lebih dari label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: pada label_today: hari ini label_yesterday: kemarin label_this_week: minggu ini label_last_week: minggu lalu label_last_n_days: "%{count} hari terakhir" label_this_month: bulan ini label_last_month: bulan lalu label_this_year: this year label_date_range: Jangkauan tanggal label_less_than_ago: kurang dari hari yang lalu label_more_than_ago: lebih dari hari yang lalu label_ago: hari yang lalu label_contains: berisi label_not_contains: tidak berisi label_day_plural: hari label_repository: Repositori label_repository_plural: Repositori label_branch: Cabang label_tag: Tag label_revision: Revisi label_revision_plural: Revisi label_associated_revisions: Revisi terkait label_added: ditambahkan label_modified: diubah label_copied: disalin label_renamed: diganti nama label_deleted: dihapus label_latest_revision: Revisi terakhir label_latest_revision_plural: Revisi terakhir label_view_revisions: Tampilkan revisi label_view_all_revisions: Tampilkan semua revisi label_max_size: Ukuran maksimum label_roadmap: Rencana kerja label_roadmap_due_in: "Harus selesai dalam %{value}" label_roadmap_overdue: "%{value} terlambat" label_roadmap_no_issues: Tak ada masalah pada versi ini label_search: Cari label_result_plural: Hasil label_all_words: Semua kata label_wiki: Wiki label_wiki_edit: Sunting wiki label_wiki_edit_plural: Sunting wiki label_wiki_page: Halaman wiki label_wiki_page_plural: Halaman wiki label_index_by_title: Indeks menurut judul label_index_by_date: Indeks menurut tanggal label_current_version: Versi sekarang label_preview: Tinjauan label_feed_plural: Feeds label_changes_details: Rincian semua perubahan label_issue_tracking: Pelacak masalah label_spent_time: Waktu terpakai label_f_hour: "%{value} jam" label_f_hour_plural: "%{value} jam" label_time_tracking: Pelacak waktu label_change_plural: Perubahan label_statistics: Statistik label_commits_per_month: Komit per bulan label_commits_per_author: Komit per pengarang label_view_diff: Tampilkan perbedaan label_diff_inline: inline label_diff_side_by_side: berdampingan label_options: Pilihan label_copy_workflow_from: Salin alur kerja dari label_permissions_report: Laporan perijinan label_watched_issues: Masalah terpantau label_related_issues: Masalah terkait label_applied_status: Status teraplikasi label_loading: Memuat... label_relation_new: Kaitan baru label_relation_delete: Hapus kaitan label_relates_to: terkait pada label_duplicates: salinan label_duplicated_by: disalin oleh label_blocks: blok label_blocked_by: diblok oleh label_precedes: mendahului label_follows: mengikuti label_stay_logged_in: Tetap login label_disabled: tidak diaktifkan label_show_completed_versions: Tampilkan versi lengkap label_me: saya label_board: Forum label_board_new: Forum baru label_board_plural: Forum label_topic_plural: Topik label_message_plural: Pesan label_message_last: Pesan terakhir label_message_new: Pesan baru label_message_posted: Pesan ditambahkan label_reply_plural: Balasan label_send_information: Kirim informasi akun ke pengguna label_year: Tahun label_month: Bulan label_week: Minggu label_date_from: Dari label_date_to: Sampai label_language_based: Berdasarkan bahasa pengguna label_sort_by: "Urut berdasarkan %{value}" label_send_test_email: Kirim email percobaan label_feeds_access_key_created_on: "Atom access key dibuat %{value} yang lalu" label_module_plural: Modul label_added_time_by: "Ditambahkan oleh %{author} %{age} yang lalu" label_updated_time_by: "Diperbarui oleh %{author} %{age} yang lalu" label_updated_time: "Diperbarui oleh %{value} yang lalu" label_jump_to_a_project: Pilih proyek... label_file_plural: Berkas label_changeset_plural: Set perubahan label_default_columns: Kolom default label_no_change_option: (Tak ada perubahan) label_bulk_edit_selected_issues: Ubah masalah terpilih secara masal label_theme: Tema label_default: Default label_search_titles_only: Cari judul saja label_user_mail_option_all: "Untuk semua kejadian pada semua proyek saya" label_user_mail_option_selected: "Hanya untuk semua kejadian pada proyek yang saya pilih ..." label_user_mail_no_self_notified: "Saya tak ingin diberitahu untuk perubahan yang saya buat sendiri" label_registration_activation_by_email: aktivasi akun melalui email label_registration_manual_activation: aktivasi akun secara manual label_registration_automatic_activation: aktivasi akun secara otomatis label_display_per_page: "Per halaman: %{value}" label_age: Umur label_change_properties: Rincian perubahan label_general: Umum label_scm: SCM label_plugins: Plugin label_ldap_authentication: Otentikasi LDAP label_downloads_abbr: Unduh label_optional_description: Deskripsi optional label_add_another_file: Tambahkan berkas lain label_preferences: Preferensi label_chronological_order: Urut sesuai kronologis label_reverse_chronological_order: Urut dari yang terbaru label_incoming_emails: Email masuk label_generate_key: Buat kunci label_issue_watchers: Pemantau label_example: Contoh label_display: Tampilan label_sort: Urut label_ascending: Menaik label_descending: Menurun label_date_from_to: Dari %{start} sampai %{end} label_wiki_content_added: Halaman wiki ditambahkan label_wiki_content_updated: Halaman wiki diperbarui label_group: Kelompok label_group_plural: Kelompok label_group_new: Kelompok baru label_time_entry_plural: Waktu terpakai label_version_sharing_none: Tidak dibagi label_version_sharing_descendants: Dengan subproyek label_version_sharing_hierarchy: Dengan hirarki proyek label_version_sharing_tree: Dengan pohon proyek label_version_sharing_system: Dengan semua proyek button_login: Login button_submit: Kirim button_save: Simpan button_check_all: Contreng semua button_uncheck_all: Hilangkan semua contreng button_delete: Hapus button_create: Buat button_create_and_continue: Buat dan lanjutkan button_test: Test button_edit: Sunting button_add: Tambahkan button_change: Ubah button_apply: Terapkan button_clear: Bersihkan button_lock: Kunci button_unlock: Buka kunci button_download: Unduh button_list: Daftar button_view: Tampilkan button_move: Pindah button_move_and_follow: Pindah dan ikuti button_back: Kembali button_cancel: Batal button_activate: Aktifkan button_sort: Urut button_log_time: Rekam waktu button_rollback: Kembali ke versi ini button_watch: Pantau button_unwatch: Tidak Memantau button_reply: Balas button_archive: Arsip button_unarchive: Batalkan arsip button_reset: Reset button_rename: Ganti nama button_change_password: Ubah kata sandi button_copy: Salin button_copy_and_follow: Salin dan ikuti button_annotate: Anotasi button_update: Perbarui button_configure: Konfigur button_quote: Kutip status_active: aktif status_registered: terdaftar status_locked: terkunci version_status_open: terbuka version_status_locked: terkunci version_status_closed: tertutup field_active: Aktif text_select_mail_notifications: Pilih aksi dimana email notifikasi akan dikirimkan. text_regexp_info: mis. ^[A-Z0-9]+$ text_project_destroy_confirmation: Apakah anda benar-benar akan menghapus proyek ini beserta data terkait ? text_subprojects_destroy_warning: "Subproyek: %{value} juga akan dihapus." text_workflow_edit: Pilih peran dan pelacak untuk menyunting alur kerja text_are_you_sure: Anda yakin ? text_journal_changed: "%{label} berubah dari %{old} menjadi %{new}" text_journal_set_to: "%{label} di set ke %{value}" text_journal_deleted: "%{label} dihapus (%{old})" text_journal_added: "%{label} %{value} ditambahkan" text_tip_issue_begin_day: tugas dimulai hari itu text_tip_issue_end_day: tugas berakhir hari itu text_tip_issue_begin_end_day: tugas dimulai dan berakhir hari itu text_caracters_maximum: "maximum %{count} karakter." text_caracters_minimum: "Setidaknya harus sepanjang %{count} karakter." text_length_between: "Panjang diantara %{min} dan %{max} karakter." text_tracker_no_workflow: Tidak ada alur kerja untuk pelacak ini text_unallowed_characters: Karakter tidak diperbolehkan text_comma_separated: Beberapa nilai diperbolehkan (dipisahkan koma). text_issues_ref_in_commit_messages: Mereferensikan dan membetulkan masalah pada pesan komit text_issue_added: "Masalah %{id} sudah dilaporkan oleh %{author}." text_issue_updated: "Masalah %{id} sudah diperbarui oleh %{author}." text_wiki_destroy_confirmation: Apakah anda benar-benar akan menghapus wiki ini beserta semua isinya ? text_issue_category_destroy_question: "Beberapa masalah (%{count}) ditugaskan pada kategori ini. Apa yang anda lakukan ?" text_issue_category_destroy_assignments: Hapus kategori penugasan text_issue_category_reassign_to: Tugaskan kembali masalah untuk kategori ini text_user_mail_option: "Untuk proyek yang tidak dipilih, anda hanya akan menerima notifikasi hal-hal yang anda pantau atau anda terlibat di dalamnya (misalnya masalah yang anda tulis atau ditugaskan pada anda)." text_no_configuration_data: "Peran, pelacak, status masalah dan alur kerja belum dikonfigur.\nSangat disarankan untuk memuat konfigurasi default. Anda akan bisa mengubahnya setelah konfigurasi dimuat." text_load_default_configuration: Muat konfigurasi default text_status_changed_by_changeset: "Diterapkan di set perubahan %{value}." text_issues_destroy_confirmation: 'Apakah anda yakin untuk menghapus masalah terpilih ?' text_select_project_modules: 'Pilih modul untuk diaktifkan pada proyek ini:' text_default_administrator_account_changed: Akun administrator default sudah berubah text_file_repository_writable: Direktori yang bisa ditulisi untuk lampiran text_plugin_assets_writable: Direktori yang bisa ditulisi untuk plugin asset text_minimagick_available: MiniMagick tersedia (optional) text_destroy_time_entries_question: "%{hours} jam sudah dilaporkan pada masalah yang akan anda hapus. Apa yang akan anda lakukan ?" text_destroy_time_entries: Hapus jam yang terlapor text_assign_time_entries_to_project: Tugaskan jam terlapor pada proyek text_reassign_time_entries: 'Tugaskan kembali jam terlapor pada masalah ini:' text_user_wrote: "%{value} menulis:" text_user_wrote_in: "%{value} menulis (%{link}):" text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini." text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:' text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan." text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan." text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.' text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai' text_wiki_page_destroy_question: "Halaman ini mempunyai %{descendants} halaman anak dan turunannya. Apa yang akan anda lakukan ?" text_wiki_page_nullify_children: "Biarkan halaman anak sebagai halaman teratas (root)" text_wiki_page_destroy_children: "Hapus halaman anak dan semua turunannya" text_wiki_page_reassign_children: "Tujukan halaman anak ke halaman induk yang ini" default_role_manager: Manager default_role_developer: Pengembang default_role_reporter: Pelapor default_tracker_bug: Bug default_tracker_feature: Fitur default_tracker_support: Dukungan default_issue_status_new: Baru default_issue_status_in_progress: Dalam proses default_issue_status_resolved: Resolved default_issue_status_feedback: Umpan balik default_issue_status_closed: Ditutup default_issue_status_rejected: Ditolak default_doc_category_user: Dokumentasi pengguna default_doc_category_tech: Dokumentasi teknis default_priority_low: Rendah default_priority_normal: Normal default_priority_high: Tinggi default_priority_urgent: Penting default_priority_immediate: Segera default_activity_design: Rancangan default_activity_development: Pengembangan enumeration_issue_priorities: Prioritas masalah enumeration_doc_categories: Kategori dokumen enumeration_activities: Kegiatan enumeration_system_activity: Kegiatan Sistem label_copy_source: Source label_update_issue_done_ratios: Update issue done ratios setting_issue_done_ratio: Calculate the issue done ratio with label_api_access_key: API access key text_line_separated: Multiple values allowed (one line for each value). label_revision_id: Revision %{value} permission_view_issues: View Issues setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. label_display_used_statuses_only: Only display statuses that are used by this tracker error_workflow_copy_target: Please select target tracker(s) and role(s) label_api_access_key_created_on: API access key created %{value} ago label_feeds_access_key: Atom access key notice_api_access_key_reseted: Your API access key was reset. setting_rest_api_enabled: Enable REST web service label_copy_same_as_target: Same as target button_show: Show setting_issue_done_ratio_issue_field: Use the issue field label_missing_api_access_key: Missing an API access key label_copy_target: Target label_missing_feeds_access_key: Missing a Atom access key notice_issue_done_ratios_updated: Issue done ratios updated. error_workflow_copy_source: Please select a source tracker or role setting_start_of_week: Start calendars on setting_mail_handler_body_delimiters: Truncate emails after one of these lines permission_add_subprojects: Create subprojects label_subproject_new: New subproject text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 masalah one: 1 masalah other: "%{count} masalah" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: semua label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Dengan subproyek label_cross_project_tree: Dengan pohon proyek label_cross_project_hierarchy: Dengan hirarki proyek label_cross_project_system: Dengan semua proyek button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Total text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API key setting_lost_password: Lupa password mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Hapus kaitan error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/it.yml000066400000000000000000002247511500112024600171750ustar00rootroot00000000000000# Italian translations for Ruby on Rails # by Claudio Poli (masterkain@gmail.com) # by Diego Pierotto (ita.translations@tiscali.it) # by Emidio Stani (emidiostani@gmail.com) # by Nicola Danese (nicolad87@gmail.com) it: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d-%m-%Y" short: "%d %b" long: "%d %B %Y" day_names: [Domenica, Lunedì, Martedì, Mercoledì, Giovedì, Venerdì, Sabato] abbr_day_names: [Dom, Lun, Mar, Mer, Gio, Ven, Sab] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Gennaio, Febbraio, Marzo, Aprile, Maggio, Giugno, Luglio, Agosto, Settembre, Ottobre, Novembre, Dicembre] abbr_month_names: [~, Gen, Feb, Mar, Apr, Mag, Giu, Lug, Ago, Set, Ott, Nov, Dic] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%a %d %b %Y, %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%d %B %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "mezzo minuto" less_than_x_seconds: one: "meno di un secondo" other: "meno di %{count} secondi" x_seconds: one: "1 secondo" other: "%{count} secondi" less_than_x_minutes: one: "meno di un minuto" other: "meno di %{count} minuti" x_minutes: one: "1 minuto" other: "%{count} minuti" about_x_hours: one: "circa un'ora" other: "circa %{count} ore" x_hours: one: "1 ora" other: "%{count} ore" x_days: one: "1 giorno" other: "%{count} giorni" about_x_months: one: "circa un mese" other: "circa %{count} mesi" x_months: one: "1 mese" other: "%{count} mesi" about_x_years: one: "circa un anno" other: "circa %{count} anni" over_x_years: one: "oltre un anno" other: "oltre %{count} anni" almost_x_years: one: "quasi 1 anno" other: "quasi %{count} anni" number: format: separator: "," delimiter: "." precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" currency: format: format: "%n %u" unit: "€" precision: 2 # Used in array.to_sentence. support: array: sentence_connector: "e" skip_last_comma: false activerecord: errors: template: header: one: "Non posso salvare questo %{model}: 1 errore" other: "Non posso salvare questo %{model}: %{count} errori." body: "Per favore ricontrolla i seguenti campi:" messages: inclusion: "non è incluso nella lista" exclusion: "è riservato" invalid: "non è valido" confirmation: "non coincide con la conferma" accepted: "deve essere accettata" empty: "non può essere vuoto" blank: "non può essere lasciato in bianco" too_long: "è troppo lungo (il massimo è %{count} lettere)" too_short: "è troppo corto (il minimo è %{count} lettere)" wrong_length: "è della lunghezza sbagliata (deve essere di %{count} lettere)" taken: "è già in uso" not_a_number: "non è un numero" not_a_date: "non è una data valida" greater_than: "deve essere superiore a %{count}" greater_than_or_equal_to: "deve essere superiore o uguale a %{count}" equal_to: "deve essere uguale a %{count}" less_than: "deve essere meno di %{count}" less_than_or_equal_to: "deve essere meno o uguale a %{count}" odd: "deve essere dispari" even: "deve essere pari" greater_than_start_date: "deve essere maggiore della data di partenza" not_same_project: "non appartiene allo stesso progetto" circular_dependency: "Questa relazione creerebbe una dipendenza circolare" cant_link_an_issue_with_a_descendant: "Una segnalazione non può essere collegata a una delle sue discendenti" earlier_than_minimum_start_date: "non può essere precedente a %{date} a causa di una precedente segnalazione" not_a_regexp: "non è un'espressione regolare valida" open_issue_with_closed_parent: "Una segnalazione aperta non può essere collegata a un'attività principale chiusa" must_contain_uppercase: "deve contenere lettere maiuscole (A-Z)" must_contain_lowercase: "deve contenere lettere minuscole (a-z)" must_contain_digits: "deve contenere cifre (0-9)" must_contain_special_chars: "deve contenere caratteri speciali (!, $, %, ...)" domain_not_allowed: "contiene un dominio non consentito (%{domain})" too_simple: "è troppo semplice" actionview_instancetag_blank_option: Scegli general_text_No: 'No' general_text_Yes: 'Sì' general_text_no: 'no' general_text_yes: 'sì' general_lang_name: 'Italian (Italiano)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: L'utente è stato aggiornato. notice_account_invalid_credentials: Nome utente o password non validi. notice_account_password_updated: La password è stata aggiornata. notice_account_wrong_password: Password errata notice_account_register_done: Account creato correttamente. E' stata inviata un'email contenente le istruzioni per attivare l'account a %{email}. notice_account_not_activated_yet: Non hai ancora attivato il tuo account. Se vuoi ricevere una nuova email di attivazione clicca qui. notice_account_locked: Il tuo account è bloccato. notice_can_t_change_password: Questo utente utilizza un metodo di autenticazione esterno. Impossibile cambiare la password. notice_account_lost_email_sent: Ti è stata spedita una email con le istruzioni per cambiare la password. notice_account_activated: Il tuo account è stato attivato. Ora puoi effettuare l'accesso. notice_successful_create: Creazione effettuata con successo. notice_successful_update: Modifica effettuata con successo. notice_successful_delete: Eliminazione effettuata con successo. notice_successful_connection: Connessione con successo. notice_file_not_found: La pagina desiderata non esiste o è stata rimossa. notice_locking_conflict: Le informazioni sono state modificate da un altro utente. notice_not_authorized: Non sei autorizzato ad accedere a questa pagina. notice_not_authorized_archived_project: Il progetto a cui stai accedendo è stato archiviato. notice_email_sent: "Una email è stata spedita a %{value}" notice_email_error: "Si è verificato un errore durante l'invio di una email (%{value})" notice_feeds_access_key_reseted: La tua chiave di accesso Atom è stata reimpostata. notice_api_access_key_reseted: La chiave di accesso API è stata reimpostata. notice_failed_to_save_issues: "Impossibile salvare %{count} segnalazioni su %{total} selezionate: %{ids}." notice_failed_to_save_time_entries: "Non ho potuto salvare %{count} registrazioni di tempo impiegato su %{total} selezionate: %{ids}." notice_failed_to_save_members: "Impossibile salvare il membro(i): %{errors}." notice_account_pending: "Il tuo account è stato creato ed è in attesa di attivazione da parte dell'amministratore." notice_default_data_loaded: Configurazione predefinita caricata con successo. notice_unable_delete_version: Impossibile eliminare la versione notice_unable_delete_time_entry: Impossibile eliminare il valore time log. notice_issue_done_ratios_updated: La percentuale delle segnalazioni completate è aggiornata. notice_gantt_chart_truncated: "Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare" notice_issue_successful_create: "Segnalazione %{id} creata." notice_issue_update_conflict: "La segnalazione è stata aggiornata da un altro utente mentre la stavi editando." notice_account_deleted: "Il tuo account sarà definitivamente rimosso." notice_user_successful_create: "Creato utente %{id}." notice_new_password_must_be_different: La nuova password deve essere differente da quella attuale notice_import_finished: "sono stati importati %{count} oggetti" notice_import_finished_with_errors: "non è stato possibile importare %{count} di %{total} oggetti" notice_issue_not_closable_by_open_tasks: "Questa segnalazione non può essere chiusa perché ha almeno una sottoattività aperta." notice_issue_not_closable_by_blocking_issue: "Questa segnalazione non può essere chiusa perché è bloccata da almeno una segnalazione aperta." notice_issue_not_reopenable_by_closed_parent_issue: "Questa segnalazione non può essere riaperta perché la segnalazione principale è chiusa." notice_invalid_watcher: "Osservatore non valido: l'utente non riceverà alcuna notifica perché non ha accesso per visualizzare questo oggetto." error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : %{value}" error_scm_not_found: "La risorsa e/o la versione non esistono nel repository." error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: %{value}" error_scm_annotate: "L'oggetto non esiste o non può essere annotato." error_scm_annotate_big_text_file: "La nota non può essere salvata, supera la dimensiona massima del campo di testo." error_issue_not_found_in_project: 'La segnalazione non è stata trovata o non appartiene al progetto' error_no_tracker_in_project: 'Nessun tracker è associato a questo progetto. Per favore verifica le impostazioni del Progetto.' error_no_default_issue_status: 'Nessuno stato predefinito delle segnalazioni è configurato. Per favore verifica le impostazioni (Vai in "Amministrazione -> Stati segnalazioni").' error_can_not_delete_custom_field: Impossibile eliminare il campo personalizzato error_can_not_delete_tracker_html: "Questo tracker contiene segnalazioni e non può essere eliminato.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Questo ruolo è in uso e non può essere eliminato." error_can_not_reopen_issue_on_closed_version: Una segnalazione assegnata ad una versione chiusa non può essere riaperta error_can_not_archive_project: Questo progetto non può essere archiviato error_issue_done_ratios_not_updated: La percentuale delle segnalazioni completate non è aggiornata. error_workflow_copy_source: Per favore seleziona un tracker sorgente o ruolo error_workflow_copy_target: Per favore seleziona trackers finali e ruolo(i) error_unable_delete_issue_status: Impossibile eliminare lo stato segnalazioni (%{value}) error_unable_to_connect: Impossibile connettersi (%{value}) error_attachments_too_many: "Questo file non può essere caricato perché supera il numero massimo di file che possono essere allegati contemporaneamente (%{max_number_of_files})" error_attachment_too_big: Questo file non può essere caricato in quanto la sua dimensione supera la massima consentita (%{max_size}) error_bulk_download_size_too_big: "Questi allegati non possono essere scaricati in blocco perché la dimensione totale del file supera la dimensione massima consentita (%{max_size})" error_session_expired: "La tua sessione è scaduta. Effettua nuovamente il login." error_token_expired: "Questo link per il recupero della password è scaduto, riprova." warning_attachments_not_saved: "%{count} file non possono essere salvati." error_password_expired: La password è scaduta o l'amministratore ha richiesto che sia cambiata. error_invalid_file_encoding: "Il file non è un file %{encoding} valido" error_invalid_csv_file_or_settings: "Il file non è un file CSV o non corrisponde alle impostazioni seguenti (%{value})" error_can_not_read_import_file: "Si è verificato un errore durante la lettura del file da importare" error_no_data_in_file: "Il file non contiene dati" error_attachment_extension_not_allowed: "L'estensione dell'allegato %{extension} non è consentita" error_ldap_bind_credentials: "Account/Password LDAP non validi" error_no_tracker_allowed_for_new_issue_in_project: "Il progetto non ha tracker per i quali è possibile creare una segnalazione" error_no_projects_with_tracker_allowed_for_new_issue: "Non ci sono progetti con tracker per i quali è possibile creare una segnalazione" error_move_of_child_not_possible: "Impossibile spostare la sottoattività %{child} nel nuovo progetto: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "Il tempo impiegato non può essere riassegnato a una segnalazione che sta per essere eliminata" warning_fields_cleared_on_bulk_edit: "Le modifiche comporteranno l'eliminazione automatica dei valori da uno o più campi sugli oggetti selezionati" error_exceeds_maximum_hours_per_day: "Impossibile registrare più di %{max_hours} ore nello stesso giorno (sono già state registrate %{logged_hours} ore)" error_can_not_delete_auth_source: "Questa modalità di autenticazione è in uso e non può essere eliminata." error_spent_on_future_date: "Impossibile registrare il tempo in una data futura" error_not_allowed_to_log_time_for_other_users: "Non ti è consentito registrare il tempo speso di altri utenti" error_can_not_execute_macro_html: "Errore durante l'esecuzione della macro %{name} (%{error})" error_macro_does_not_accept_block: "Questa macro non accetta un blocco di testo" error_childpages_macro_no_argument: "Questa macro può essere chiamata senza argomenti solo dalle pagine wiki" error_circular_inclusion: "Inclusione circolare rilevata" error_page_not_found: Pagina non trovata error_filename_required: "Nome file obbligatorio" error_invalid_size_parameter: "Parametro dimensione non valido" error_attachment_not_found: "Allegato %{name} non trovato" error_invalid_authenticity_token: "Token di autenticità del modulo non valido." error_query_statement_invalid: "Si è verificato un errore durante l'esecuzione della query ed è stato registrato. Segnala questo errore all'amministratore di Redmine." mail_subject_lost_password: "Password %{value}" mail_body_lost_password: 'Per cambiare la password, usa il seguente collegamento:' mail_body_lost_password_validity: 'Tieni presente che puoi modificare la password solo una volta utilizzando questo link.' mail_subject_register: "Attivazione utente %{value}" mail_body_register: "Per attivare l'utente, usa il seguente collegamento:" mail_body_account_information_external: "Puoi utilizzare il tuo account %{value} per accedere al sistema." mail_body_account_information: Le informazioni riguardanti il tuo account mail_subject_account_activation_request: "%{value} richiesta attivazione account" mail_body_account_activation_request: "Un nuovo utente (%{value}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" mail_subject_reminder: "%{count} segnalazioni in scadenza nei prossimi %{days} giorni" mail_body_reminder: "%{count} segnalazioni che ti sono state assegnate scadranno nei prossimi %{days} giorni:" mail_subject_wiki_content_added: "La pagina '%{id}' è stata aggiunta al wiki" mail_body_wiki_content_added: La pagina '%{id}' è stata aggiunta al wiki da %{author}. mail_subject_wiki_content_updated: "La pagina wiki '%{id}' è stata aggiornata" mail_body_wiki_content_updated: La pagina '%{id}' wiki è stata aggiornata da %{author}. mail_subject_security_notification: "Notifica di sicurezza" mail_body_security_notification_change: "%{field} è stato modificato." mail_body_security_notification_change_to: "%{field} è stato modificato in %{value}." mail_body_security_notification_add: "È stato aggiunto %{field} %{value}." mail_body_security_notification_remove: "%{field} %{value} è stato rimosso." mail_body_security_notification_notify_enabled: "L'indirizzo email %{value} riceverà le notifiche." mail_body_security_notification_notify_disabled: "L'indirizzo email %{value} non riceverà più notifiche." mail_body_settings_updated: "Sono state modificate le seguenti impostazioni:" mail_body_password_updated: "La tua password è stata cambiata." mail_destroy_project_failed: Impossibile eliminare il progetto %{value}. mail_destroy_project_successful: Il progetto %{value} è stato eliminato correttamente. mail_destroy_project_with_subprojects_successful: Il progetto %{value} e i suoi sottoprogetti sono stati eliminati correttamente. field_name: Nome field_description: Descrizione field_summary: Sommario field_is_required: Richiesto field_firstname: Nome field_lastname: Cognome field_mail: Email field_address: Email field_filename: File field_filesize: Dimensione field_downloads: Download field_author: Autore field_created_on: Creato field_updated_on: Aggiornato field_closed_on: Chiuso field_field_format: Formato field_is_for_all: Per tutti i progetti field_possible_values: Valori possibili field_regexp: Espressione regolare field_min_length: Lunghezza minima field_max_length: Lunghezza massima field_value: Valore field_category: Categoria field_title: Titolo field_project: Progetto field_issue: Segnalazione field_is_member_of_group: Membro del gruppo field_status: Stato field_notes: Note field_is_closed: Chiudi la segnalazione field_is_default: Stato predefinito field_tracker: Tracker field_subject: Oggetto field_due_date: Scadenza field_assigned_to: Assegnato a field_priority: Priorità field_fixed_version: Versione prevista field_user: Utente field_principal: Utente o gruppo field_role: Ruolo field_homepage: Homepage field_is_public: Pubblico field_parent: Sottoprogetto di field_is_in_roadmap: Segnalazioni mostrate nella roadmap field_login: Utente field_mail_notification: Notifiche via email field_admin: Amministratore field_last_login_on: Ultima connessione field_passwd_changed_on: Ultima modifica della password field_language: Lingua field_effective_date: Data field_password: Password field_current_password: Password attuale field_new_password: Nuova password field_password_confirmation: Conferma field_twofa_scheme: Schema di autenticazione a due fattori field_version: Versione field_type: Tipo field_host: Host field_port: Porta field_account: Utente field_base_dn: DN base field_attr_login: Attributo connessione field_attr_firstname: Attributo nome field_attr_lastname: Attributo cognome field_attr_mail: Attributo email field_onthefly: Creazione utente "al volo" field_start_date: Inizio field_done_ratio: "% Completato" field_auth_source: Modalità di autenticazione field_hide_mail: Nascondi il mio indirizzo email field_comments: Commento field_url: URL field_start_page: Pagina principale field_subproject: Sottoprogetto field_hours: Ore field_activity: Attività field_spent_on: Data field_identifier: Identificativo field_is_filter: Usato come filtro field_issue_to: Segnalazioni correlate field_delay: Ritardo field_assignable: E' possibile assegnare segnalazioni a questo ruolo field_redirect_existing_links: Redirige i collegamenti esistenti field_estimated_hours: Tempo stimato field_column_names: Colonne field_time_entries: Tempo di collegamento field_time_zone: Fuso orario field_searchable: Ricercabile field_default_value: Stato predefinito field_comments_sorting: Mostra commenti field_parent_title: Pagina principale field_editable: Modificabile field_watcher: Osservatore field_content: Contenuto field_group_by: Raggruppa risultati per field_sharing: Condivisione field_parent_issue: Attività principale field_parent_issue_subject: Oggetto dell'attività principale field_member_of_group: "Gruppo dell'assegnatario" field_assigned_to_role: "Ruolo dell'assegnatario" field_text: Campo di testo field_visible: Visibile field_warn_on_leaving_unsaved: Avvisami quando lascio una pagina con testo non salvato field_issues_visibility: Visibilità segnalazioni field_is_private: Privato field_commit_logs_encoding: Codifica dei messaggi di commit field_scm_path_encoding: Codifica del percorso field_path_to_repository: Percorso del repository field_root_directory: Directory radice field_cvsroot: CVSROOT field_cvs_module: Modulo field_repository_is_default: Repository principale field_multiple: Valori multipli field_auth_source_ldap_filter: Filtro LDAP field_core_fields: Campi standard field_timeout: Timeout (in secondi) field_board_parent: Forum padre field_private_notes: Note private field_inherit_members: Eredita membri field_generate_password: Genera password field_must_change_passwd: Cambio password obbligatorio al prossimo logon field_default_status: Stato predefinito field_users_visibility: Visibilità degli utenti field_time_entries_visibility: Visibilità Time logs field_total_estimated_hours: Totale tempo stimato field_default_version: Versione predefinita field_remote_ip: Indirizzo IP field_textarea_font: Font utilizzato per le aree di testo field_updated_by: Aggiornato da field_last_updated_by: Ultimo aggiornamento di field_full_width_layout: Layout a larghezza intera field_digest: Checksum field_default_assigned_to: Assegnatario predefinito field_recently_used_projects: Numero dei progetti recenti mostrati nella jump box field_history_default_tab: Scheda predefinita per lo storico della segnalazione field_unique_id: ID univoco field_toolbar_language_options: Linguaggi della toolbar di evidenziazione del codice field_twofa_required: "Richiedere l'autenticazione a due fattori" field_default_issue_query: Query predefinita segnalazione field_default_project_query: Query predefinita progetto field_default_time_entry_activity: Attività predefinita tempo speso field_any_searchable: Qualsiasi testo ricercabile field_estimated_remaining_hours: Tempo rimanente stimato field_last_activity_date: Ultima attività field_thousands_delimiter: Delimitatore delle migliaia setting_app_title: Titolo applicazione setting_welcome_text: Testo di benvenuto setting_default_language: Lingua predefinita setting_login_required: Autenticazione richiesta setting_self_registration: Auto-registrazione abilitata setting_show_custom_fields_on_registration: Alla registrazione mostra i campi personalizzati setting_attachment_max_size: Dimensione massima allegati setting_bulk_download_max_size: Dimensione totale massima per il download in blocco setting_issues_export_limit: Limite esportazione segnalazioni setting_mail_from: Indirizzo sorgente email setting_plain_text_mail: Solo testo (non HTML) setting_host_name: Nome host setting_text_formatting: Formattazione testo setting_wiki_compression: Comprimi cronologia wiki setting_feeds_limit: Limite contenuti del feed setting_default_projects_public: I nuovi progetti sono pubblici in modo predefinito setting_autofetch_changesets: Acquisisci automaticamente le commit setting_sys_api_enabled: Abilita WS per la gestione del repository setting_commit_ref_keywords: Parole chiave riferimento setting_commit_fix_keywords: Parole chiave chiusura setting_autologin: Connessione automatica setting_date_format: Formato data setting_time_format: Formato ora setting_timespan_format: Formato intervallo di tempo setting_cross_project_issue_relations: Consenti la creazione di relazioni tra segnalazioni in progetti differenti setting_cross_project_subtasks: Consenti sottoattività cross-project setting_issue_list_default_columns: Colonne predefinite mostrate nell'elenco segnalazioni setting_repositories_encodings: Codifica degli allegati e dei repository setting_emails_header: Intestazione email setting_emails_footer: Piè di pagina email setting_protocol: Protocollo setting_per_page_options: Opzioni oggetti per pagina setting_user_format: Formato visualizzazione utenti setting_activity_days_default: Giorni mostrati sulle attività di progetto setting_display_subprojects_issues: Mostra le segnalazioni dei sottoprogetti nel progetto principale in modo predefinito setting_enabled_scm: SCM abilitato setting_mail_handler_body_delimiters: Tronca email dopo una di queste righe setting_mail_handler_enable_regex: Abilita espressioni regolari setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API setting_mail_handler_preferred_body_part: Parte preferita delle email multipart (HTML) setting_sys_api_key: Chiave API setting_sequential_project_identifiers: Genera progetti con identificativi in sequenza setting_gravatar_enabled: Usa icone utente Gravatar setting_gravatar_default: Immagine Gravatar predefinita setting_diff_max_lines_displayed: Limite massimo di differenze (linee) mostrate setting_file_max_size_displayed: Dimensione massima dei contenuti testuali visualizzati setting_repository_log_display_limit: Numero massimo di revisioni elencate nella cronologia file setting_password_max_age: Richiesta cambio password dopo setting_password_min_length: Lunghezza minima password setting_password_required_char_classes : Caratteri richiesti per le passwords setting_lost_password: Password dimenticata setting_new_project_user_role_id: Ruolo assegnato agli utenti non amministratori che creano un progetto setting_default_projects_modules: Moduli predefiniti abilitati per i nuovi progetti setting_issue_done_ratio: Calcola la percentuale di segnalazioni completate con setting_issue_done_ratio_issue_field: Usa il campo segnalazioni setting_issue_done_ratio_interval: Intervallo opzioni percentuale di completamento setting_issue_done_ratio_issue_status: Usa lo stato segnalazioni setting_start_of_week: Avvia calendari il setting_rest_api_enabled: Abilita il servizio web REST setting_cache_formatted_text: Cache testo formattato setting_default_notification_option: Opzione di notifica predefinita setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento setting_commit_logtime_activity_id: Attività per il tempo di collegamento setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt setting_gantt_months_limit: Numero massimo di mesi visualizzati nel diagramma di Gantt setting_issue_group_assignment: Permetti di assegnare una segnalazione a gruppi setting_default_issue_start_date_to_creation_date: Usa la data corrente come data d'inizio per le nuove segnalazioni setting_commit_cross_project_ref: Permetti alle segnalazioni degli altri progetti di essere referenziate e risolte setting_unsubscribe: Consentire agli utenti di cancellare il proprio account setting_session_lifetime: Massima durata di una sessione setting_session_timeout: Timeout di inattività di una sessione setting_thumbnails_enabled: Mostra miniature degli allegati setting_thumbnails_size: Dimensioni delle miniature (in pixels) setting_non_working_week_days: Giorni non lavorativi setting_jsonp_enabled: Abilita supporto a JSONP setting_default_projects_tracker_ids: Trackers di default per nuovi progetti setting_mail_handler_excluded_filenames: Escludi allegati per nome setting_force_default_language_for_anonymous: Forza la lingua di default per gli utenti anonimi setting_force_default_language_for_loggedin: Forza la lingua di default per gli utenti loggati setting_link_copied_issue: Collega le segnalazioni dopo la copia setting_copy_attachments_on_issue_copy: Copia allegati sulla copia setting_max_additional_emails: Numero massimo di email aggiuntive setting_email_domains_allowed: Domini di posta elettronica consentiti setting_email_domains_denied: Domini di posta elettronica non consentiti setting_search_results_per_page: Risultati per pagina setting_attachment_extensions_allowed: Estensioni abilitate setting_attachment_extensions_denied: Estensioni disabilitate setting_new_item_menu_tab: Scheda di creazione oggetti nel menu del progetto setting_commit_logs_formatting: Formatta il testo dei messaggi di commit setting_timelog_required_fields: Campi obbligatori per le registrazioni del tempo impiegato setting_close_duplicate_issues: Chiudi automaticamente le segnalazioni duplicate setting_time_entry_list_defaults: Colonne predefinite mostrate nell'elenco del tempo impiegato setting_timelog_accept_0_hours: Accetta registrazioni di tempo impiegato con 0 ore setting_timelog_max_hours_per_day: Numero massimo di ore che possono essere registrate al giorno per utente setting_timelog_accept_future_dates: Accetta registrazioni di tempo impiegato in date future setting_show_status_changes_in_mail_subject: Mostra i cambiamenti di stato nell'oggetto delle emails di notifica setting_project_list_defaults: Colonne predefinite mostrate nell'elenco progetti setting_twofa: Autenticazione a due fattori permission_add_project: Crea progetto permission_add_subprojects: Crea sottoprogetti permission_edit_project: Modifica progetti permission_close_project: Chiusura / riapertura progetto permission_delete_project: Elimina il progetto permission_select_project_publicity: Imposta il progetto come pubblico o privato permission_select_project_modules: Seleziona moduli progetto permission_manage_members: Gestisci membri permission_manage_project_activities: Gestisci attività progetti permission_manage_versions: Gestisci versioni permission_manage_categories: Gestisci categorie segnalazioni permission_view_issues: Mostra segnalazioni permission_add_issues: Aggiungi segnalazioni permission_edit_issues: Modifica segnalazioni permission_edit_own_issues: Modifica le tue segnalazioni permission_copy_issues: Copia segnalazioni permission_manage_issue_relations: Gestisci relazioni tra segnalazioni permission_set_issues_private: Imposta le segnalazioni pubbliche o private permission_set_own_issues_private: Imposta le proprie segnalazioni pubbliche o private permission_add_issue_notes: Aggiungi note permission_edit_issue_notes: Modifica note permission_edit_own_issue_notes: Modifica proprie note permission_view_private_notes: Visualizza note private permission_set_notes_private: Imposta note come private permission_delete_issues: Elimina segnalazioni permission_manage_public_queries: Gestisci query pubbliche permission_save_queries: Salva query permission_view_gantt: Vedi diagrammi gantt permission_view_calendar: Vedi calendario permission_view_issue_watchers: Vedi lista osservatori permission_add_issue_watchers: Aggiungi osservatori permission_delete_issue_watchers: Elimina osservatori permission_log_time: Segna tempo impiegato permission_view_time_entries: Vedi tempi impiegati permission_edit_time_entries: Modifica time logs permission_edit_own_time_entries: Modifica propri time logs permission_view_news: Visualizza le notizie permission_manage_news: Gestisci news permission_comment_news: Commenta news permission_view_documents: Vedi documenti permission_add_documents: Aggiungi documenti permission_edit_documents: Edita documenti permission_delete_documents: Cancella documenti permission_manage_files: Gestisci files permission_view_files: Vedi files permission_manage_wiki: Gestisci wiki permission_rename_wiki_pages: Rinomina pagine wiki permission_delete_wiki_pages: Elimina pagine wiki permission_view_wiki_pages: Vedi pagine wiki permission_view_wiki_edits: Vedi cronologia wiki permission_edit_wiki_pages: Modifica pagine wiki permission_delete_wiki_pages_attachments: Elimina allegati permission_view_wiki_page_watchers: "Visualizza l'elenco degli osservatori della pagina wiki" permission_add_wiki_page_watchers: Aggiungi osservatori della pagina wiki permission_delete_wiki_page_watchers: Elimina osservatori della pagina wiki permission_protect_wiki_pages: Proteggi pagine wiki permission_manage_repository: Gestisci repository permission_browse_repository: Sfoglia repository permission_view_changesets: Vedi changesets permission_commit_access: Permesso di commit permission_manage_boards: Gestisci forum permission_view_messages: Vedi messaggi permission_add_messages: Aggiungi messaggi permission_edit_messages: Modifica messaggi permission_edit_own_messages: Modifica propri messaggi permission_delete_messages: Elimina messaggi permission_delete_own_messages: Elimina propri messaggi permission_view_message_watchers: Visualizza l'elenco degli osservatori dei messaggi permission_add_message_watchers: Aggiungi osservatori dei messaggi permission_delete_message_watchers: Elimina gli osservatori dei messaggi permission_export_wiki_pages: Esporta pagine wiki permission_manage_subtasks: Gestisci sottoattività permission_manage_related_issues: Gestisci relative segnalazioni permission_import_issues: Importa segnalazioni permission_log_time_for_other_users: Registra il tempo speso dagli altri utenti project_module_issue_tracking: Tracking delle segnalazioni project_module_time_tracking: Time tracking project_module_news: News project_module_documents: Documenti project_module_files: File project_module_wiki: Wiki project_module_repository: Repository project_module_boards: Forum project_module_calendar: Calendario project_module_gantt: Gantt label_user: Utente label_user_plural: Utenti label_user_new: Nuovo utente label_user_anonymous: Anonimo label_project: Progetto label_project_new: Nuovo progetto label_project_plural: Progetti label_x_projects: zero: nessun progetto one: 1 progetto other: "%{count} progetti" label_project_all: Tutti i progetti label_project_latest: Ultimi progetti registrati label_issue: Segnalazione label_issue_new: Nuova segnalazione label_issue_plural: Segnalazioni label_issue_view_all: Mostra tutte le segnalazioni label_issues_by: "Segnalazioni di %{value}" label_issue_added: Segnalazioni aggiunte label_issue_updated: Segnalazioni aggiornate label_issue_note_added: Nota aggiunta label_issue_status_updated: Stato aggiornato label_issue_assigned_to_updated: Assegnatario aggiornato label_issue_priority_updated: Priorità aggiornata label_issue_fixed_version_updated: Versione prevista aggiornata label_issue_attachment_added: File aggiunto label_document: Documento label_document_new: Nuovo documento label_document_plural: Documenti label_document_added: Documenti aggiunti label_role: Ruolo label_role_plural: Ruoli label_role_new: Nuovo ruolo label_role_and_permissions: Ruoli e permessi label_role_anonymous: Anonimo label_role_non_member: Non membro label_member: Membro label_member_new: Nuovo membro label_member_plural: Membri label_tracker: Tracker label_tracker_plural: Tracker label_tracker_all: All trackers label_tracker_new: Nuovo tracker label_workflow: Workflow label_issue_status: Stato segnalazione label_issue_status_plural: Stati segnalazioni label_issue_status_new: Nuovo stato label_issue_category: Categoria segnalazione label_issue_category_plural: Categorie segnalazioni label_issue_category_new: Nuova categoria label_custom_field: Campo personalizzato label_custom_field_plural: Campi personalizzati label_custom_field_new: Nuovo campo personalizzato label_enumerations: Enumerazioni label_enumeration_new: Nuovo valore label_information: Informazione label_information_plural: Informazioni label_register: Registrati label_password_lost: Password dimenticata label_password_required: Conferma la tua password per continuare label_home: Home label_my_page: Pagina personale label_my_account: Il mio utente label_my_projects: I miei progetti label_administration: Amministrazione label_login: Entra label_logout: Esci label_help: Aiuto label_reported_issues: Segnalazioni label_assigned_issues: Segnalazioni assegnate label_assigned_to_me_issues: Le mie segnalazioni label_updated_issues: Segnalazioni aggiornate label_registered_on: Registrato il label_activity: Attività label_user_activity: "attività di %{value}" label_new: Nuovo label_logged_as: Collegato come label_environment: Ambiente label_authentication: Autenticazione label_auth_source: Modalità di autenticazione label_auth_source_new: Nuova modalità di autenticazione label_auth_source_plural: Modalità di autenticazione label_subproject_plural: Sottoprogetti label_subproject_new: Nuovo sottoprogetto label_and_its_subprojects: "%{value} ed i suoi sottoprogetti" label_min_max_length: Lunghezza minima - massima label_list: Elenco label_date: Data label_integer: Intero label_float: Decimale label_boolean: Booleano label_string: Testo label_text: Testo esteso label_attribute: Attributo label_attribute_plural: Attributi label_no_data: Nessun dato disponibile label_no_preview: Nessuna anteprima disponibile label_no_preview_alternative_html: Nessuna anteprima disponibile. Al suo posto %{link}. label_no_preview_download: Download label_change_status: Cambia stato label_history: Cronologia label_attachment: File label_attachment_new: Nuovo file label_attachment_delete: Elimina file label_attachment_plural: File label_file_added: File aggiunti label_attachment_description: Descrizione del file label_report: Report label_report_plural: Report label_news: News label_news_new: Aggiungi news label_news_plural: News label_news_latest: Utime news label_news_view_all: Tutte le news label_news_added: News aggiunte label_news_comment_added: Commento aggiunto a una news label_settings: Impostazioni label_overview: Panoramica label_version: Versione label_version_new: Nuova versione label_version_plural: Versioni label_version_and_files: Versioni (%{count}) e Files label_close_versions: Versioni completate chiuse label_confirmation: Conferma label_export_to: Esporta su label_read: Leggi... label_public_projects: Progetti pubblici label_open_issues: aperta label_open_issues_plural: aperte label_closed_issues: chiusa label_closed_issues_plural: chiuse label_x_open_issues_abbr: zero: 0 aperte one: 1 aperta other: "%{count} aperte" label_x_closed_issues_abbr: zero: 0 chiuse one: 1 chiusa other: "%{count} chiuse" label_x_issues: zero: 0 segnalazione one: 1 segnalazione other: "%{count} segnalazioni" label_total: Totale label_total_plural: Totali label_total_time: Totale label_permissions: Permessi label_current_status: Stato attuale label_new_statuses_allowed: Nuovi stati possibili label_all: tutti label_any: tutti label_none: nessuno label_nobody: nessuno label_next: Successivo label_previous: Precedente label_used_by: Usato da label_details: Dettagli label_add_note: Aggiungi una nota label_calendar: Calendario label_months_from: mesi da label_gantt: Gantt label_internal: Interno label_last_changes: "ultime %{count} modifiche" label_change_view_all: Tutte le modifiche label_comment: Commento label_comment_plural: Commenti label_x_comments: zero: nessun commento one: 1 commento other: "%{count} commenti" label_comment_add: Aggiungi un commento label_comment_added: Commento aggiunto label_comment_delete: Elimina commenti label_query: Query personalizzata label_query_plural: Query personalizzate label_query_new: Nuova query label_my_queries: Le mie queries personalizzate label_filter_add: Aggiungi filtro label_filter_plural: Filtri label_equals: è label_not_equals: non è label_in_less_than: è minore di label_in_more_than: è maggiore di label_in_the_next_days: nei prossimi label_in_the_past_days: nei passati label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: tra label_in: in label_today: oggi label_yesterday: ieri label_tomorrow: domani label_this_week: questa settimana label_last_week: ultima settimana label_next_week: prossima settimana label_last_n_weeks: ultime %{count} settimane label_last_n_days: "ultimi %{count} giorni" label_this_month: questo mese label_last_month: ultimo mese label_next_month: prossimo mese label_this_year: quest'anno label_date_range: Intervallo di date label_less_than_ago: meno di giorni fa label_more_than_ago: più di giorni fa label_ago: giorni fa label_contains: contiene label_contains_any_of: contiene uno qualsiasi di label_not_contains: non contiene label_starts_with: inizia con label_ends_with: finisce con label_any_issues_in_project: ogni segnalazione del progetto label_any_issues_not_in_project: ogni segnalazione non nel progetto label_no_issues_in_project: progetto privo di segnalazioni label_any_open_issues: qualsiasi segnalazione aperta label_no_open_issues: nessuna segnalazione aperta label_has_been: è stato label_has_never_been: non è mai stato label_changed_from: cambiato da label_day_plural: giorni label_repository: Repository label_repository_new: Nuovo repository label_repository_plural: Repository label_branch: Branch label_tag: Tag label_revision: Versione label_revision_plural: Versioni label_revision_id: Revisione %{value} label_associated_revisions: Revisioni associate label_added: aggiunto label_modified: modificato label_copied: copiato label_renamed: rinominato label_deleted: eliminato label_latest_revision: Ultima versione label_latest_revision_plural: Ultime versioni label_view_revisions: Mostra versioni label_view_all_revisions: Mostra tutte le revisioni label_view_previous_annotation: "Visualizza l'annotazione prima di questa modifica" label_x_revisions: "%{count} versioni" label_max_size: Dimensione massima label_roadmap: Roadmap label_roadmap_due_in: "Da ultimare in %{value}" label_roadmap_overdue: "%{value} di ritardo" label_roadmap_no_issues: Nessuna segnalazione per questa versione label_search: Ricerca label_result_plural: Risultati label_all_words: Tutte le parole label_wiki: Wiki label_wiki_edit: Modifica wiki label_wiki_edit_plural: Modifiche wiki label_wiki_page: Pagina Wiki label_wiki_page_plural: Pagine wiki label_wiki_page_new: Nuova pagina wiki label_index_by_title: Ordina per titolo label_index_by_date: Ordina per data label_current_version: Versione corrente label_preview: Anteprima label_feed_plural: Feed label_changes_details: Particolari di tutti i cambiamenti label_issue_tracking: Tracking delle segnalazioni label_spent_time: Tempo impiegato label_total_spent_time: Totale tempo impiegato label_f_hour: "%{value} ora" label_f_hour_plural: "%{value} ore" label_f_hour_short: '%{value} h' label_time_tracking: Tracking del tempo label_change_plural: Modifiche label_statistics: Statistiche label_commits_per_month: Commit per mese label_commits_per_author: Commit per autore label_diff: diff label_view_diff: mostra differenze label_diff_inline: in linea label_diff_side_by_side: fianco a fianco label_options: Opzioni label_option_auto_lang: auto label_copy_workflow_from: Copia workflow da label_permissions_report: Report permessi label_watched_issues: Segnalazioni osservate label_related_issues: Segnalazioni correlate label_applied_status: Stato applicato label_loading: Caricamento... label_relation_new: Nuova relazione label_relation_delete: Elimina relazione label_relates_to: Correlata a label_delete_link_to_subtask: Elimina relazione label_duplicates: Duplica label_duplicated_by: duplicata da label_blocks: Blocca label_blocked_by: Bloccata da label_precedes: Precede label_follows: Segue label_copied_to: copia label_copied_from: copiata da label_stay_logged_in: Rimani collegato label_disabled: disabilitato label_optional: opzionale label_show_completed_versions: Mostra versioni completate label_me: io label_board: Forum label_board_new: Nuovo forum label_board_plural: Forum label_board_locked: Bloccato label_board_sticky: Annunci label_topic_plural: Argomenti label_message_plural: Messaggi label_message_last: Ultimo messaggio label_message_new: Nuovo messaggio label_message_posted: Messaggi aggiunti label_reply_plural: Risposte label_send_information: Invia all'utente le informazioni relative all'account label_year: Anno label_month: Mese label_week: Settimana label_date_from: Da label_date_to: A label_language_based: Basato sul linguaggio label_sort_by: "Ordina per %{value}" label_send_test_email: Invia una email di prova label_feeds_access_key: Chiave di accesso Atom label_missing_feeds_access_key: Chiave di accesso Atom mancante label_feeds_access_key_created_on: "chiave di accesso Atom creata %{value} fa" label_module_plural: Moduli label_added_time_by: "Aggiunto da %{author} %{age} fa" label_updated_time_by: "Aggiornato da %{author} %{age} fa" label_updated_time: "Aggiornato %{value} fa" label_jump_to_a_project: Vai al progetto... label_file_plural: File label_changeset_plural: Changeset label_default_columns: Colonne predefinite label_no_change_option: (Nessuna modifica) label_bulk_edit: Modifica in blocco label_bulk_edit_selected_issues: Modifica massiva delle segnalazioni selezionate label_bulk_edit_selected_time_entries: Modifica massiva delle ore segnalate selezionate label_theme: Tema label_default: Predefinito label_search_titles_only: Cerca solo nei titoli label_user_mail_option_all: "Per ogni evento relativo ad uno dei miei progetti" label_user_mail_option_selected: "Solo per gli eventi relativi ai progetti selezionati..." label_user_mail_option_none: Nessun evento label_user_mail_option_only_my_events: Solo se sono un osservatore o sono coinvolto label_user_mail_option_only_assigned: Solo se sono un osservatore o sono assegnatario label_user_mail_option_only_owner: Solo se sono un osservatore o sono autore label_user_mail_no_self_notified: "Non voglio notifiche riguardanti modifiche da me apportate" label_user_mail_notify_about_high_priority_issues_html: "Notificami anche delle segnalazioni con priorità %{prio} o superiore" label_registration_activation_by_email: attivazione account via email label_registration_manual_activation: attivazione account manuale label_registration_automatic_activation: attivazione account automatica label_display_per_page: "Per pagina: %{value}" label_age: Età label_change_properties: Modifica le proprietà label_general: Generale label_scm: SCM label_plugins: Plugin label_ldap: LDAP label_ldap_authentication: Autenticazione LDAP label_ldaps_verify_none: LDAPS (senza controllo del certificato) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Si consiglia di utilizzare una connessione LDAPS crittografata con controllo del certificato per evitare qualsiasi manipolazione durante il processo di autenticazione. label_downloads_abbr: D/L label_optional_description: Descrizione opzionale label_add_another_file: Aggiungi un altro file label_auto_watch_on: Osserva automaticamente label_auto_watch_on_issue_created: Segnalazioni create da me label_auto_watch_on_issue_contributed_to: Segnalazioni a cui ho contribuito label_preferences: Preferenze label_chronological_order: In ordine cronologico label_reverse_chronological_order: In ordine cronologico inverso label_incoming_emails: Email in arrivo label_generate_key: Genera una chiave label_issue_watchers: Osservatori label_message_watchers: Osservatori label_wiki_page_watchers: Osservatori label_example: Esempio label_display: Mostra label_sort: Ordina label_ascending: Ascendente label_descending: Discendente label_date_from_to: Da %{start} a %{end} label_days_to_html: "%{days} giorni fino a %{date}" label_wiki_content_added: Aggiunta pagina al wiki label_wiki_content_updated: Aggiornata pagina wiki label_group: Gruppo label_group_plural: Gruppi label_group_new: Nuovo gruppo label_group_anonymous: Utenti anonimi label_group_non_member: Utenti non membri label_time_entry_plural: Tempo impiegato label_version_sharing_none: Nessuna condivisione label_version_sharing_descendants: Con sottoprogetti label_version_sharing_hierarchy: Con gerarchia progetto label_version_sharing_tree: Con progetto padre label_version_sharing_system: Con tutti i progetti label_update_issue_done_ratios: Aggiorna la percentuale delle segnalazioni completate label_copy_source: Sorgente label_copy_target: Destinazione label_copy_same_as_target: Uguale a destinazione label_display_used_statuses_only: Mostra solo stati che vengono usati per questo tracker label_api_access_key: Chiave di accesso API label_missing_api_access_key: Chiave di accesso API mancante label_api_access_key_created_on: Chiave di accesso API creata %{value} fa label_profile: Profilo label_subtask: Subtask label_subtask_plural: Sottoattività label_project_copy_notifications: Invia notifiche email durante la copia del progetto label_import_notifications: Invia notifiche email durante l'importazione label_principal_search: "Cerca utente o gruppo:" label_user_search: "Cerca utente:" label_additional_workflow_transitions_for_author: Transizioni supplementari consentite quando l'utente è l'autore label_additional_workflow_transitions_for_assignee: Transizioni supplementari consentite quando l'utente è l'assegnatario label_issues_visibility_all: Tutte le segnalazioni label_issues_visibility_public: Tutte le segnalazioni non private label_issues_visibility_own: Segnalazioni create o assegnate all'utente label_git_report_last_commit: Riporta l'ultimo commit per files e directories label_parent_revision: Padre label_child_revision: Figlio label_export_options: "%{export_format} opzioni per l'export" label_copy_attachments: Copia allegati label_copy_subtasks: Copia sottoattività label_item_position: "%{position}/%{count}" label_completed_versions: Versioni completate label_search_for_watchers: Cerca osservatori da aggiungere label_session_expiration: Scadenza sessione label_status_transitions: Transizioni di stato label_fields_permissions: Permessi sui campi label_readonly: Sola lettura label_required: Richiesto label_required_lower: obbligatorio label_required_administrators: obbligatorio per gli amministratori label_hidden: Nascosto label_attribute_of_project: del progetto %{name} label_attribute_of_issue: Segnalazione %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assegnatari %{name} label_attribute_of_user: Utente %{name} label_attribute_of_fixed_version: "Versione target %{name}" label_attribute_of_object: "%{object_name} di %{name}" label_cross_project_descendants: Con sottoprogetti label_cross_project_tree: Con progetto padre label_cross_project_hierarchy: Con gerarchia progetto label_cross_project_system: Con tutti i progetti label_gantt_progress_line: Linea avanzamento label_visibility_private: solo a me label_visibility_roles: solo a questi ruoli label_visibility_public: a tutti gli utenti label_link: Link label_only: solo label_drop_down_list: menu a tendina label_checkboxes: caselle di controllo label_radio_buttons: pulsanti di opzione label_link_values_to: Collega valori ad un URL label_custom_field_select_type: Seleziona il tipo di oggetto a cui il campo personalizzato è collegato label_check_for_updates: Verifica aggiornamenti label_latest_compatible_version: Ultima versione compatibile label_unknown_plugin: Plugin sconosciuto label_add_projects: Aggiungi progetti label_users_visibility_all: Tutti gli utenti attivi label_users_visibility_members_of_visible_projects: Membri dei progetti visibili label_edit_attachments: Modifica gli allegati label_download_all_attachments: Scarica tutti i file label_link_copied_issue: Collega le segnalazioni copiate label_ask: Chiedi label_search_attachments_yes: Cerca nel nome e nelle descrizioni degli allegati label_search_attachments_no: Non cercare gli allegati label_search_attachments_only: Cerca solo allegati label_search_open_issues_only: Solo segnalazioni aperte label_email_address_plural: Email label_email_address_add: Aggiungi un'email label_enable_notifications: Attiva le notifiche label_disable_notifications: Disattiva le notifiche label_blank_value: vuoto label_parent_task_attributes: Attributi attività padre label_parent_task_attributes_derived: Calcolati dalle sottoattività label_parent_task_attributes_independent: Indipendente dalle sottoattività label_time_entries_visibility_all: Tutte le registrazioni del tempo impiegato label_time_entries_visibility_own: Solo le registrazioni del tempo impiegato create dall'utente label_member_management: Gestione membri label_member_management_all_roles: Tutti i ruoli label_member_management_selected_roles_only: Solo questi ruoli label_import_issues: Importa segnalazioni permission_import_time_entries: Importa tempo impiegato label_select_file_to_import: Seleziona il file da importare label_fields_separator: Separatore di campo label_fields_wrapper: Delimitatore di stringa label_encoding: Codifica label_comma_char: Virgola label_semi_colon_char: Punto e virgola label_quote_char: Apici label_double_quote_char: Doppi apici label_fields_mapping: Mappatura dei campi label_relations_mapping: Mappatura delle relazioni label_file_content_preview: Anteprima del contenuto del file label_create_missing_values: Crea valori mancanti label_api: API label_field_format_enumeration: Elenco chiave/valore label_default_values_for_new_users: Valori predefiniti per i nuovi utenti label_relations: Relazioni label_new_project_issue_tab_enabled: Mostra la scheda "Nuova segnalazione" label_new_object_tab_enabled: Mostra l'elenco a discesa "+" label_table_of_contents: Sommario label_font_default: Font predefinito label_font_monospace: Font monospace label_font_proportional: Font proporzionale label_optgroup_bookmarks: Segnalibri label_optgroup_recents: Recenti label_last_notes: Ultime note label_default_queries: for_all_projects: Per tutti i progetti for_current_project: Per il progetto attuale for_all_users: Per tutti gli utenti for_this_user: Per questo utente label_nothing_to_preview: Nessuna anteprima da visualizzare label_inherited_from_parent_project: "Ereditato dal progetto padre" label_inherited_from_group: "Ereditato dal gruppo %{name}" label_trackers_description: Descrizione dei tracker label_open_trackers_description: Visualizza la descrizione di tutti i tracker label_issue_statuses_description: Descrizione degli stati delle segnalazioni label_open_issue_statuses_description: Visualizza la descrizione di tutti gli stati delle segnalazioni label_preferred_body_part_text: Text label_preferred_body_part_html: HTML label_issue_history_properties: Proprietà modificate label_issue_history_notes: Note label_last_tab_visited: Ultima scheda visitata label_password_char_class_uppercase: lettere maiuscole label_password_char_class_lowercase: lettere minuscole label_password_char_class_digits: numeri label_password_char_class_special_chars: caratteri speciali label_display_type: Mostra risultati come label_display_type_list: Lista label_display_type_board: Board label_my_bookmarks: I miei segnalibri label_assign_to_me: Assegna a me label_default_query: Query predefinita label_edited: Modificato label_time_by_author: "%{time} da %{author}" label_involved_principals: Autore / Assegnatario precedente button_login: Entra button_submit: Invia button_save: Salva button_check_all: Seleziona tutti button_uncheck_all: Deseleziona tutti button_collapse_all: Comprimi tutto button_expand_all: Espandi tutto button_delete: Elimina button_create: Crea button_create_and_continue: Crea e continua button_test: Prova button_edit: Modifica button_edit_associated_wikipage: "Modifica la pagina wiki associata: %{page_title}" button_add: Aggiungi button_change: Cambia button_apply: Applica button_clear: Pulisci button_lock: Blocca button_unlock: Sblocca button_download: Scarica button_list: Elenca button_view: Mostra button_move: Sposta button_move_and_follow: Sposta e segui button_back: Indietro button_cancel: Annulla button_activate: Attiva button_disable: Disabilita button_sort: Ordina button_log_time: Registra tempo button_rollback: Ripristina questa versione button_watch: Osserva button_unwatch: Dimentica button_reply: Rispondi button_archive: Archivia button_unarchive: Ripristina button_reset: Reimposta button_rename: Rinomina button_change_password: Modifica password button_copy: Copia button_copy_and_follow: Copia e segui button_copy_link: Copia link button_annotate: Annota button_fetch_changesets: Fetch commits button_update: Aggiorna button_configure: Configura button_quote: Quota button_show: Mostra button_hide: Nascondi button_edit_section: Modifica questa sezione button_export: Esporta button_delete_my_account: Cancella il mio account button_close: Chiudi button_reopen: Riapri button_import: Importa button_project_bookmark: Aggiungi segnalibro button_project_bookmark_delete: Elimina segnalibro button_filter: Filtro button_actions: Azioni button_add_subtask: Aggiungi sottoattività button_save_object: "Salva %{object_name}" button_edit_object: "Modifica %{object_name}" button_delete_object: "Elimina %{object_name}" button_create_and_follow: Crea e segui button_apply_issues_filter: Applica filtro segnalazioni status_active: attivo status_registered: registrato status_locked: bloccato project_status_active: attivo project_status_closed: chiuso project_status_archived: archiviato project_status_scheduled_for_deletion: "programmato per l'eliminazione" version_status_open: aperta version_status_locked: bloccata version_status_closed: chiusa field_active: Attivo text_select_mail_notifications: Seleziona le azioni per cui deve essere inviata una notifica. text_regexp_info: es. ^[A-Z0-9]+$ text_project_destroy_confirmation: Sei sicuro di voler eliminare il progetto e tutti i dati ad esso collegati? text_projects_bulk_destroy_confirmation: Vuoi davvero eliminare i progetti selezionati e i dati correlati? text_projects_bulk_destroy_head: | Stai per eliminare definitivamente i seguenti progetti, inclusi possibili sottoprogetti e tutti i dati correlati. Rivedi le informazioni di seguito e conferma che è effettivamente ciò che vuoi fare. Questa azione non può essere annullata. text_projects_bulk_destroy_confirm: Per confermare, inserisci "%{yes}" nella casella sottostante. text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: %{value} verranno eliminati." text_subprojects_bulk_destroy: "compresi i suoi sottoprogetti: %{value}" text_project_close_confirmation: Vuoi davvero chiudere il progetto '%{value}' per renderlo di sola lettura? text_project_reopen_confirmation: Vuoi davvero riaprire il progetto '%{value}'? text_project_archive_confirmation: Vuoi davvero archiviare il progetto '%{value}'? text_users_bulk_destroy_head: 'Stai per eliminare i seguenti utenti e rimuovere tutti i riferimenti a loro. Questa operazione non può essere annullata. Spesso, bloccare gli utenti anziché eliminarli è la soluzione migliore.' text_users_bulk_destroy_confirm: 'Per confermare, inserisci "%{yes}" qui sotto.' text_workflow_edit: Seleziona un ruolo ed un tracker per modificare il workflow text_are_you_sure: Sei sicuro ? text_journal_changed: "%{label} modificata da %{old} a %{new}" text_journal_changed_no_detail: "%{label} aggiornato" text_journal_set_to: "%{label} impostata a %{value}" text_journal_deleted: "%{label} eliminata (%{old})" text_journal_added: "%{value} %{label} aggiunto" text_tip_issue_begin_day: attività che iniziano in questa giornata text_tip_issue_end_day: attività che terminano in questa giornata text_tip_issue_begin_end_day: attività che iniziano e terminano in questa giornata text_project_identifier_info: Consentiti solo lettere minuscole (a-z), numeri, trattini e trattini bassi.
    Una volta salvato, l'identificatore non può essere modificato. text_caracters_maximum: "massimo %{count} caratteri." text_caracters_minimum: "Deve essere lungo almeno %{count} caratteri." text_characters_must_contain: "Deve contenere i seguenti tipi di caratteri %{character_classes}." text_length_between: "Lunghezza compresa tra %{min} e %{max} caratteri." text_tracker_no_workflow: Nessun workflow definito per questo tracker text_role_no_workflow: Nessun workflow definito per questo ruolo text_status_no_workflow: Nessun tracker utilizza questo stato nei flussi di lavoro text_unallowed_characters: Caratteri non permessi text_comma_separated: Valori multipli permessi (separati da virgole). text_line_separated: Valori multipli permessi (un valore per ogni riga). text_issues_ref_in_commit_messages: Segnalazioni di riferimento e chiusura nei messaggi di commit text_issue_added: "%{author} ha aggiunto la segnalazione %{id}." text_issue_updated: "La segnalazione %{id} è stata aggiornata da %{author}." text_wiki_destroy_confirmation: Sicuro di voler eliminare questo wiki e tutti i suoi contenuti? text_issue_category_destroy_question: "Alcune segnalazioni (%{count}) risultano assegnate a questa categoria. Cosa vuoi fare ?" text_issue_category_destroy_assignments: Rimuovi le assegnazioni a questa categoria text_issue_category_reassign_to: Riassegna segnalazioni a questa categoria text_user_mail_option: "Per i progetti non selezionati, riceverai solo le notifiche riguardanti le cose che osservi o nelle quali sei coinvolto (per esempio segnalazioni che hai creato o che ti sono state assegnate)." text_no_configuration_data: "Ruoli, tracker, stati delle segnalazioni e workflow non sono stati ancora configurati.\nE' vivamente consigliato caricare la configurazione predefinita. Potrai modificarla una volta caricata." text_load_default_configuration: Carica la configurazione predefinita text_status_changed_by_changeset: "Applicata nel changeset %{value}." text_time_logged_by_changeset: Usato nel changeset %{value}. text_issues_destroy_confirmation: 'Sei sicuro di voler eliminare le segnalazioni selezionate?' text_issues_destroy_descendants_confirmation: Questo eliminerà anche %{count} sottoattività. text_time_entries_destroy_confirmation: Sei sicuro di voler eliminare l'ora\e selezionata\e? text_select_project_modules: 'Seleziona i moduli abilitati per questo progetto:' text_default_administrator_account_changed: L'account amministrativo predefinito è stato modificato text_file_repository_writable: Repository dei file scrivibile text_plugin_assets_writable: Directory attività dei plugins scrivibile text_all_migrations_have_been_run: Sono state eseguite tutte le migrazioni del database text_minimagick_available: MiniMagick disponibile (opzionale) text_convert_available: ImageMagick convert disponibile (opzionale) text_gs_available: ImageMagick PDF support disponibile (opzionale) text_default_active_job_queue_changed: "Il Queue adapter predefinito, adatto solo per sviluppo/test, è stato modificato" text_destroy_time_entries_question: "%{hours} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" text_destroy_time_entries: Elimina le ore segnalate text_assign_time_entries_to_project: Assegna le ore segnalate al progetto text_reassign_time_entries: 'Riassegna le ore a questa segnalazione:' text_user_wrote: "%{value} ha scritto:" text_user_wrote_in: "%{value} ha scritto (%{link}):" text_enumeration_destroy_question: "%{count} oggetti hanno un assegnamento su questo valore." text_enumeration_category_reassign_to: 'Riassegnale a questo valore:' text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle." text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso note utente o email sono mappati automaticamente." text_diff_truncated: '... Le differenze sono state troncate perchè superano il limite massimo visualizzabile.' text_custom_field_possible_values_info: 'Un valore per ogni riga' text_wiki_page_destroy_question: Questa pagina ha %{descendants} pagine figlie. Cosa ne vuoi fare? text_wiki_page_nullify_children: Mantieni le pagine figlie come pagine radice text_wiki_page_destroy_children: Elimina le pagine figlie e tutta la discendenza text_wiki_page_reassign_children: Riassegna le pagine figlie al padre di questa pagina text_own_membership_delete_confirmation: "Stai per eliminare alcuni o tutti i permessi e non sarai più in grado di modificare questo progetto dopo tale azione.\nSei sicuro di voler continuare?" text_zoom_in: Aumenta ingrandimento text_zoom_out: Riduci ingrandimento text_warn_on_leaving_unsaved: La pagina corrente contiene del testo non salvato che verrà perso se lasci questa pagina. text_scm_path_encoding_note: "Predefinito: UTF-8" text_subversion_repository_note: 'Esempio: file:///, http://, https://, svn://, svn+[tunnelscheme]://' text_git_repository_note: Il repository è vuoto e locale (e.g. /gitrepo, c:\gitrepo) text_mercurial_repository_note: Repository locale (es. /hgrepo, c:\hgrepo) text_scm_command: Comando text_scm_command_version: Versione text_scm_config: Puoi configurare i comandi scm nel file config/configuration.yml. E' necessario riavviare l'applicazione dopo averlo modificato. text_scm_command_not_available: Il comando scm non è disponibile. Controllare le impostazioni nel pannello di amministrazione. text_issue_conflict_resolution_overwrite: Applica comunque le mie modifiche (le note precedenti verranno mantenute ma alcuni cambiamenti potrebbero essere sovrascritti) text_issue_conflict_resolution_add_notes: Aggiunge le mie note e non salvare le mie ulteriori modifiche text_issue_conflict_resolution_cancel: Cancella ogni modifica e rivisualizza %{link} text_account_destroy_confirmation: "Sei sicuro di voler procedere?\nIl tuo account sarà definitivamente cancellato, senza alcuna possibilità di ripristino." text_session_expiration_settings: "Attenzione: la modifica di queste impostazioni può far scadere le sessioni correnti, compresa la tua." text_project_closed: Questo progetto è chiuso e in sola lettura. text_turning_multiple_off: Disabilitando valori multipli, i valori multipli verranno rimossi, in modo da mantenere un solo valore per item. text_select_apply_tracker: "Seleziona il tracker" text_select_apply_issue_status: "Seleziona lo stato della segnalazione" text_avatar_server_config_html: Il server corrente degli avatars è %{url}. E' possibile configurarlo in config/configuration.yml. text_no_subject: nessun soggetto text_allowed_queries_to_select: Solo query pubbliche (per tutti gli utenti) selezionabili text_setting_config_change: Puoi configurare il comportamento in config/configuration.yml. Riavvia l'applicazione dopo averla modificata. default_role_manager: Gestore default_role_developer: Sviluppatore default_role_reporter: Segnalatore default_tracker_bug: Segnalazione default_tracker_feature: Funzione default_tracker_support: Supporto default_issue_status_new: Nuovo default_issue_status_in_progress: In elaborazione default_issue_status_resolved: Risolto default_issue_status_feedback: Commenti default_issue_status_closed: Chiuso default_issue_status_rejected: Rifiutato default_doc_category_user: Documentazione utente default_doc_category_tech: Documentazione tecnica default_priority_low: Bassa default_priority_normal: Normale default_priority_high: Alta default_priority_urgent: Urgente default_priority_immediate: Immediata default_activity_design: Progettazione default_activity_development: Sviluppo enumeration_issue_priorities: Priorità segnalazioni enumeration_doc_categories: Categorie di documenti enumeration_activities: Attività (time tracking) enumeration_system_activity: Attività di sistema description_filter: Filtro description_search: Campo di ricerca description_choose_project: Progetti description_project_scope: Ambito della ricerca description_notes: Note description_message_content: Contenuto del messaggio description_query_sort_criteria_attribute: Attributo di ordinamento description_query_sort_criteria_direction: Ordinamento description_user_mail_notification: Impostazioni notifica via mail description_available_columns: Colonne disponibili description_selected_columns: Colonne selezionate description_all_columns: Tutte le colonne description_issue_category_reassign: Scegli la categoria della segnalazione description_wiki_subpages_reassign: Scegli la nuova pagina padre text_repository_identifier_info: Consentiti solo lettere minuscole (a-z), numeri, trattini e trattini bassi.
    Una volta salvato, ll'identificatore non può essere modificato. text_login_required_html: Disattivando l'autenticazione obbligatoria, i progetti pubblici e il loro contenuto, saranno liberamente accessibili in rete. Si possono modificare i permessi applicabili. label_login_required_yes: "Si" label_login_required_no: "No, consenti accesso anonimo ai progetti pubblici" text_project_is_public_non_member: I progetti pubblici e i loro contenuti sono accessibili a tutti gli utenti registrati. text_project_is_public_anonymous: I progetti pubblici e i loro contenuti sono liberamente accessibili in rete. label_import_time_entries: Importa tempo impiegato label_import_users: Importa utenti sudo_mode_new_info_html: "Cosa sta succedendo? Devi riconfermare la tua password prima di intraprendere qualsiasi azione amministrativa, per garantire la protezione del tuo account." twofa__totp__name: App di autenticazione twofa__totp__text_pairing_info_html: "Scansiona questo codice QR o inserisci la chiave testuale in un'app TOTP (ad esempio Google Authenticator, Authy, Duo Mobile) e inserisci il codice nel campo sottostante per attivare l'autenticazione a due fattori." twofa__totp__label_plain_text_key: Chiave testuale twofa__totp__label_activate: Abilita app di autenticazione twofa_currently_active: "Attualmente attivo: %{twofa_scheme_name}" twofa_not_active: "Non attivato" twofa_label_code: Codice twofa_hint_disabled_html: "Impostando %{label} verranno disattivati ​​e dissociati i dispositivi di autenticazione a due fattori per tutti gli utenti." twofa_hint_optional_html: "Impostando %{label} gli utenti potranno configurare l'autenticazione a due fattori a loro piacimento, a meno che non sia richiesta da uno dei loro gruppi." twofa_hint_required_html: "Impostando %{label} tutti gli utenti saranno tenuti a impostare l'autenticazione a due fattori al loro prossimo accesso." twofa_hint_required_administrators_html: "L'impostazione %{label} si comporta come la facoltativa, ma richiederà a tutti gli utenti con diritti di amministratore di impostare l'autenticazione a due fattori al loro prossimo accesso." twofa_label_setup: "Abilita l'autenticazione a due fattori" twofa_label_deactivation_confirmation: "Disattiva l'autenticazione a due fattori" twofa_notice_select: "Seleziona lo schema a due fattori che desideri utilizzare:" twofa_warning_require: "L'amministratore richiede di abilitare l'autenticazione a due fattori." twofa_activated: "Autenticazione a due fattori abilitata correttamente. Si consiglia di generare codici di backup per il tuo account." twofa_deactivated: "Autenticazione a due fattori disabilitata." twofa_mail_body_security_notification_paired: "Autenticazione a due fattori abilitata correttamente tramite %{field}." twofa_mail_body_security_notification_unpaired: "Autenticazione a due fattori disabilitata per il tuo account." twofa_mail_body_backup_codes_generated: "Generati nuovi codici di backup per l'autenticazione a due fattori." twofa_mail_body_backup_code_used: "È stato utilizzato un codice di backup per l'autenticazione a due fattori." twofa_invalid_code: Il codice non è valido o è obsoleto. twofa_label_enter_otp: Inserisci il codice di autenticazione a due fattori. twofa_too_many_tries: Troppi tentativi. twofa_resend_code: Invia nuovamente il codice twofa_code_sent: Ti è stato inviato un codice di autenticazione. twofa_generate_backup_codes: Genera codici di backup twofa_text_generate_backup_codes_confirmation: Questo invaliderà tutti i codici di backup esistenti e ne genererà di nuovi. Vuoi continuare? twofa_notice_backup_codes_generated: I tuoi codici di backup sono stati generati. twofa_warning_backup_codes_generated_invalidated: Sono stati generati nuovi codici di backup. I tuoi codici esistenti dal %{time} non sono più validi. twofa_label_backup_codes: "Codici di backup per l'autenticazione a due fattori" twofa_text_backup_codes_hint: Utilizza questi codici al posto di una password monouso se non hai accesso al tuo secondo fattore. Ogni codice può essere utilizzato solo una volta. Si consiglia di stamparli e conservarli in un luogo sicuro. twofa_text_backup_codes_created_at: Codici di backup generati %{datetime}. twofa_backup_codes_already_shown: I codici di backup non possono essere visualizzati di nuovo, se necessario genera nuovi codici di backup. twofa_text_group_required: "Questa impostazione è efficace solo quando l'impostazione globale di autenticazione a due fattori è impostata su 'opzionale'. Attualmente, l'autenticazione a due fattori è richiesta per tutti gli utenti." twofa_text_group_disabled: "Questa impostazione è efficace solo quando l'impostazione globale di autenticazione a due fattori è impostata su 'opzionale'. Attualmente, l'autenticazione a due fattori è disabilitata." text_user_destroy_confirmation: "Vuoi davvero eliminare questo utente e rimuovere tutti i riferimenti ad esso associati? Questa operazione non può essere annullata. Spesso, bloccare un utente anziché eliminarlo è la soluzione migliore. Per confermare, inserisci il suo login (%{login}) qui sotto." text_project_destroy_enter_identifier: "Per confermare, inserisci l'identificativo del progetto (%{identifier}) qui sotto." field_name_or_email_or_login: Nome, email o login label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/ja.yml000066400000000000000000002431611500112024600171470ustar00rootroot00000000000000# Japanese translations for Ruby on Rails # by Akira Matsuda (ronnie@dio.jp) # AR error messages are basically taken from Ruby-GetText-Package. Thanks to Masao Mutoh. ja: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y/%m/%d" short: "%m/%d" long: "%Yå¹´%m月%dæ—¥(%a)" day_names: [日曜日, 月曜日, ç«æ›œæ—¥, 水曜日, 木曜日, 金曜日, 土曜日] abbr_day_names: [æ—¥, 月, ç«, æ°´, 木, 金, 土] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%Y/%m/%d %H:%M:%S" time: "%H:%M" short: "%y/%m/%d %H:%M" long: "%Yå¹´%m月%dæ—¥(%a) %H時%M分%Sç§’ %Z" am: "åˆå‰" pm: "åˆå¾Œ" datetime: distance_in_words: half_a_minute: "30ç§’å‰å¾Œ" less_than_x_seconds: one: "1秒未満" other: "%{count}秒未満" x_seconds: one: "1ç§’" other: "%{count}ç§’" less_than_x_minutes: one: "1分未満" other: "%{count}分未満" x_minutes: one: "1分" other: "%{count}分" about_x_hours: one: "ç´„1時間" other: "ç´„%{count}時間" x_hours: one: "1時間" other: "%{count}時間" x_days: one: "1æ—¥" other: "%{count}æ—¥" about_x_months: one: "ç´„1ヶ月" other: "ç´„%{count}ヶ月" x_months: one: "1ヶ月" other: "%{count}ヶ月" about_x_years: one: "ç´„1å¹´" other: "ç´„%{count}å¹´" over_x_years: one: "1年以上" other: "%{count}年以上" almost_x_years: one: "ã»ã¼1å¹´" other: "ã»ã¼%{count}å¹´" number: format: separator: "." delimiter: "," precision: 3 currency: format: format: "%n%u" unit: "円" separator: "." delimiter: "," precision: 0 percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "åŠã³" skip_last_comma: true activerecord: errors: template: header: one: "%{model} ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" other: "%{model} ã« %{count} ã¤ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" body: "次ã®é …目を確èªã—ã¦ãã ã•ã„。" messages: inclusion: "ã¯ä¸€è¦§ã«ã‚りã¾ã›ã‚“" exclusion: "ã¯äºˆç´„ã•れã¦ã„ã¾ã™" invalid: "ã¯ä¸æ­£ãªå€¤ã§ã™" confirmation: "ãŒä¸€è‡´ã—ã¾ã›ã‚“" accepted: "ã‚’å—諾ã—ã¦ãã ã•ã„" empty: "を入力ã—ã¦ãã ã•ã„" blank: "を入力ã—ã¦ãã ã•ã„" too_long: "ã¯%{count}文字以内ã§å…¥åŠ›ã—ã¦ãã ã•ã„" too_short: "ã¯%{count}文字以上ã§å…¥åŠ›ã—ã¦ãã ã•ã„" wrong_length: "ã¯%{count}文字ã§å…¥åŠ›ã—ã¦ãã ã•ã„" taken: "ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™" not_a_number: "ã¯æ•°å€¤ã§å…¥åŠ›ã—ã¦ãã ã•ã„" not_a_date: "ã¯æ—¥ä»˜ã‚’入力ã—ã¦ãã ã•ã„" greater_than: "ã¯%{count}より大ãã„値ã«ã—ã¦ãã ã•ã„" greater_than_or_equal_to: "ã¯%{count}以上ã®å€¤ã«ã—ã¦ãã ã•ã„" equal_to: "ã¯%{count}ã«ã—ã¦ãã ã•ã„" less_than: "ã¯%{count}よりå°ã•ã„値ã«ã—ã¦ãã ã•ã„" less_than_or_equal_to: "ã¯%{count}以下ã®å€¤ã«ã—ã¦ãã ã•ã„" odd: "ã¯å¥‡æ•°ã«ã—ã¦ãã ã•ã„" even: "ã¯å¶æ•°ã«ã—ã¦ãã ã•ã„" greater_than_start_date: "を開始日より後ã«ã—ã¦ãã ã•ã„" not_same_project: "åŒã˜ãƒ—ロジェクトã«å±žã—ã¦ã„ã¾ã›ã‚“" circular_dependency: "ã“ã®é–¢ä¿‚ã§ã¯ã€å¾ªç’°ä¾å­˜ã«ãªã‚Šã¾ã™" cant_link_an_issue_with_a_descendant: "親å­é–¢ä¿‚ã«ã‚ã‚‹ãƒã‚±ãƒƒãƒˆé–“ã§ã®é–¢é€£ã®è¨­å®šã¯ã§ãã¾ã›ã‚“" earlier_than_minimum_start_date: "ã‚’%{date}よりå‰ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。先行ã™ã‚‹ãƒã‚±ãƒƒãƒˆãŒã‚りã¾ã™" not_a_regexp: "ã¯æ­£ã—ã„æ­£è¦è¡¨ç¾ã§ã¯ã‚りã¾ã›ã‚“" open_issue_with_closed_parent: "完了ã—ãŸãƒã‚±ãƒƒãƒˆã«æœªå®Œäº†ã®å­ãƒã‚±ãƒƒãƒˆã‚’追加ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" must_contain_uppercase: "ã¯å¤§æ–‡å­— (A-Z) ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™" must_contain_lowercase: "ã¯å°æ–‡å­— (a-z) ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™" must_contain_digits: "ã¯æ•°å­— (0-9) ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™" must_contain_special_chars: "ã¯è¨˜å· (!, $, %, ...) ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™" domain_not_allowed: "ã¯è¨±å¯ã•れã¦ã„ãªã„ドメインをå«ã‚“ã§ã„ã¾ã™ (%{domain})" too_simple: "ãŒç°¡å˜ã™ãŽã¾ã™" actionview_instancetag_blank_option: é¸ã‚“ã§ãã ã•ã„ general_text_No: 'ã„ã„ãˆ' general_text_Yes: 'ã¯ã„' general_text_no: 'ã„ã„ãˆ' general_text_yes: 'ã¯ã„' general_lang_name: 'Japanese (日本語)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: CP932 general_pdf_fontname: kozminproregular general_pdf_monospaced_fontname: kozminproregular general_first_day_of_week: '7' notice_account_updated: ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒæ›´æ–°ã•れã¾ã—ãŸã€‚ notice_account_invalid_credentials: ユーザーåã‚‚ã—ãã¯ãƒ‘スワードãŒç„¡åйã§ã™ notice_account_password_updated: ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ãŒæ›´æ–°ã•れã¾ã—ãŸã€‚ notice_account_wrong_password: パスワードãŒé•ã„ã¾ã™ notice_account_register_done: アカウントを作æˆã—ã¾ã—ãŸã€‚アカウントを有効ã«ã™ã‚‹ãŸã‚ã®æ‰‹é †ã‚’記載ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚’ %{email} å®›ã«é€ä¿¡ã—ã¾ã—ãŸã€‚ notice_can_t_change_password: ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§ã¯å¤–部èªè¨¼ã‚’使ã£ã¦ã„ã¾ã™ã€‚パスワードã¯å¤‰æ›´ã§ãã¾ã›ã‚“。 notice_account_lost_email_sent: パスワードをå†è¨­å®šã™ã‚‹æ‰‹é †ã‚’記載ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚ notice_account_activated: ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒæœ‰åйã«ãªã‚Šã¾ã—ãŸã€‚ログインã§ãã¾ã™ã€‚ notice_successful_create: 作æˆã—ã¾ã—ãŸã€‚ notice_successful_update: æ›´æ–°ã—ã¾ã—ãŸã€‚ notice_successful_delete: 削除ã—ã¾ã—ãŸã€‚ notice_successful_connection: 接続ã—ã¾ã—ãŸã€‚ notice_file_not_found: アクセスã—よã†ã¨ã—ãŸãƒšãƒ¼ã‚¸ã¯å­˜åœ¨ã—ãªã„ã‹å‰Šé™¤ã•れã¦ã„ã¾ã™ã€‚ notice_locking_conflict: 別ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ‡ãƒ¼ã‚¿ã‚’æ›´æ–°ã—ã¦ã„ã¾ã™ã€‚ notice_not_authorized: ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“。 notice_not_authorized_archived_project: プロジェクトã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã•れã¦ã„ã¾ã™ã€‚ notice_email_sent: "%{value} å®›ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚" notice_email_error: "メールé€ä¿¡ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠(%{value})" notice_feeds_access_key_reseted: Atomã‚¢ã‚¯ã‚»ã‚¹ã‚­ãƒ¼ã‚’åˆæœŸåŒ–ã—ã¾ã—ãŸã€‚ notice_api_access_key_reseted: APIã‚¢ã‚¯ã‚»ã‚¹ã‚­ãƒ¼ã‚’åˆæœŸåŒ–ã—ã¾ã—ãŸã€‚ notice_failed_to_save_issues: "å…¨%{total}件中%{count}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{ids}。" notice_failed_to_save_members: "メンãƒãƒ¼ã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ: %{errors}。" notice_account_pending: アカウントを作æˆã—ã¾ã—ãŸã€‚システム管ç†è€…ã®æ‰¿èªå¾…ã¡ã§ã™ã€‚ notice_default_data_loaded: デフォルト設定をロードã—ã¾ã—ãŸã€‚ notice_unable_delete_version: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’削除ã§ãã¾ã›ã‚“ notice_unable_delete_time_entry: 作業時間を削除ã§ãã¾ã›ã‚“ notice_issue_done_ratios_updated: ãƒã‚±ãƒƒãƒˆã®é€²æ—率を更新ã—ã¾ã—ãŸã€‚ notice_gantt_chart_truncated: ガントãƒãƒ£ãƒ¼ãƒˆã¯ã€æœ€å¤§è¡¨ç¤ºä»¶æ•°(%{max})ã‚’è¶…ãˆãŸãŸã‚切りæ¨ã¦ã‚‰ã‚Œã¾ã—ãŸã€‚ error_can_t_load_default_data: "デフォルト設定ãŒãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{value}" error_scm_not_found: リãƒã‚¸ãƒˆãƒªã«ã€ã‚¨ãƒ³ãƒˆãƒª/リビジョンãŒå­˜åœ¨ã—ã¾ã›ã‚“。 error_scm_command_failed: "リãƒã‚¸ãƒˆãƒªã¸ã‚¢ã‚¯ã‚»ã‚¹ã—よã†ã¨ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ: %{value}" error_scm_annotate: "エントリãŒå­˜åœ¨ã—ãªã„ã€ã‚‚ã—ãã¯ã‚¢ãƒŽãƒ†ãƒ¼ãƒˆã§ãã¾ã›ã‚“。" error_issue_not_found_in_project: 'ãƒã‚±ãƒƒãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã€ã‚‚ã—ãã¯ã“ã®ãƒ—ロジェクトã«å±žã—ã¦ã„ã¾ã›ã‚“' error_unable_delete_issue_status: "ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ (%{value})" error_no_tracker_in_project: 'ã“ã®ãƒ—ロジェクトã«ã¯ãƒˆãƒ©ãƒƒã‚«ãƒ¼ãŒç™»éŒ²ã•れã¦ã„ã¾ã›ã‚“。プロジェクト設定を確èªã—ã¦ãã ã•ã„。' error_no_default_issue_status: 'デフォルトã®ãƒã‚±ãƒƒãƒˆã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“。設定を確èªã—ã¦ãã ã•ã„(管ç†â†’ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ï¼‰ã€‚' error_can_not_delete_custom_field: 'カスタムフィールドを削除ã§ãã¾ã›ã‚“。' error_unable_to_connect: "接続ã§ãã¾ã›ã‚“。 (%{value})" error_can_not_remove_role: 'ã“ã®ãƒ­ãƒ¼ãƒ«ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚削除ã§ãã¾ã›ã‚“。' error_can_not_reopen_issue_on_closed_version: '終了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã²ã‚‚付ã‘ã•れãŸãƒã‚±ãƒƒãƒˆã®å†ã‚ªãƒ¼ãƒ—ンã¯ã§ãã¾ã›ã‚“。' error_can_not_archive_project: ã“ã®ãƒ—ロジェクトã¯ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã§ãã¾ã›ã‚“ error_issue_done_ratios_not_updated: "ãƒã‚±ãƒƒãƒˆã®é€²æ—çŽ‡ãŒæ›´æ–°ã§ãã¾ã›ã‚“。" error_workflow_copy_source: 'コピー元ã¨ãªã‚‹ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¾ãŸã¯ãƒ­ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„' error_workflow_copy_target: 'コピー先ã¨ãªã‚‹ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¨ãƒ­ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„' error_can_not_delete_tracker_html: 'ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚削除ã§ãã¾ã›ã‚“。

    以下ã®ãƒ—ロジェクトã«ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã‚’使用ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆãŒã‚りã¾ã™:
    %{projects}

    ' warning_attachments_not_saved: "%{count}å€‹ã®æ·»ä»˜ãƒ•ァイルãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" mail_subject_lost_password: "%{value} パスワードå†è¨­å®š" mail_body_lost_password: 'パスワードを変更ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ãã ã•ã„:' mail_body_lost_password_validity: 'ã“ã®ãƒªãƒ³ã‚¯ã§ãƒ‘スワードをå†è¨­å®šã§ãã‚‹ã®ã¯1回ã ã‘ã§ã™ã€‚ã”æ³¨æ„ãã ã•ã„。' mail_subject_register: "%{value} アカウント登録ã®ç¢ºèª" mail_body_register: 'アカウント登録を完了ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’クリックã—ã¦ãã ã•ã„:' mail_body_account_information_external: "%{value} アカウントを使ã£ã¦ã«ãƒ­ã‚°ã‚¤ãƒ³ã§ãã¾ã™ã€‚" mail_body_account_information: アカウント情報 mail_subject_account_activation_request: "%{value} ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®æ‰¿èªè¦æ±‚" mail_body_account_activation_request: "æ–°ã—ã„ユーザー %{value} ãŒç™»éŒ²ã•れã¾ã—ãŸã€‚ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã‚ãªãŸã®æ‰¿èªå¾…ã¡ã§ã™ï¼š" mail_subject_reminder: "%{count}ä»¶ã®ãƒã‚±ãƒƒãƒˆã®æœŸæ—¥ãŒ%{days}日以内ã«åˆ°æ¥ã—ã¾ã™" mail_body_reminder: "%{count}ä»¶ã®æ‹…当ãƒã‚±ãƒƒãƒˆã®æœŸæ—¥ãŒ%{days}日以内ã«åˆ°æ¥ã—ã¾ã™:" mail_subject_wiki_content_added: "Wikiページ %{id} ãŒè¿½åŠ ã•れã¾ã—ãŸ" mail_body_wiki_content_added: "Wikiページ %{id} ã‚’ %{author} ã•ã‚“ãŒè¿½åŠ ã—ã¾ã—ãŸã€‚" mail_subject_wiki_content_updated: "Wikiページ %{id} ãŒæ›´æ–°ã•れã¾ã—ãŸ" mail_body_wiki_content_updated: "Wikiページ %{id} ã‚’ %{author} ã•ã‚“ãŒæ›´æ–°ã—ã¾ã—ãŸã€‚" field_name: åç§° field_description: 説明 field_summary: サマリー field_is_required: å¿…é ˆ field_firstname: å field_lastname: å§“ field_mail: メールアドレス field_filename: ファイル field_filesize: サイズ field_downloads: ダウンロード field_author: 作æˆè€… field_created_on: ä½œæˆæ—¥ field_updated_on: æ›´æ–°æ—¥ field_field_format: å½¢å¼ field_is_for_all: 全プロジェクトå‘ã‘ field_possible_values: é¸æŠžè‚¢ field_regexp: æ­£è¦è¡¨ç¾ field_min_length: 最短長 field_max_length: 最大長 field_value: 値 field_category: カテゴリ field_title: タイトル field_project: プロジェクト field_issue: ãƒã‚±ãƒƒãƒˆ field_status: ステータス field_notes: コメント field_is_closed: 終了ã—ãŸãƒã‚±ãƒƒãƒˆ field_is_default: デフォルト値 field_tracker: トラッカー field_subject: 題å field_due_date: 期日 field_assigned_to: 担当者 field_priority: 優先度 field_fixed_version: 対象ãƒãƒ¼ã‚¸ãƒ§ãƒ³ field_user: ユーザー field_principal: ユーザーã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ— field_role: ロール field_homepage: ホームページ field_is_public: 公開 field_parent: 親プロジェクトå field_is_in_roadmap: ãƒã‚±ãƒƒãƒˆã‚’ロードマップã«è¡¨ç¤ºã™ã‚‹ field_login: ログインID field_mail_notification: メール通知 field_admin: システム管ç†è€… field_last_login_on: 最終ログイン field_language: 言語 field_effective_date: 期日 field_password: パスワード field_new_password: æ–°ã—ã„パスワード field_password_confirmation: パスワードã®ç¢ºèª field_twofa_scheme: 二è¦ç´ èªè¨¼æ–¹å¼ field_version: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ field_type: タイプ field_host: ホスト field_port: ãƒãƒ¼ãƒˆ field_account: アカウント field_base_dn: ベースDN field_attr_login: ログインIDã®å±žæ€§ field_attr_firstname: åã®å±žæ€§ field_attr_lastname: å§“ã®å±žæ€§ field_attr_mail: メールアドレスã®å±žæ€§ field_onthefly: ユーザーãŒå­˜åœ¨ã—ãªã‘れã°ä½œæˆ field_start_date: é–‹å§‹æ—¥ field_done_ratio: 進æ—率 field_auth_source: èªè¨¼æ–¹å¼ field_hide_mail: メールアドレスを隠㙠field_comments: コメント field_url: URL field_start_page: メインページ field_subproject: サブプロジェクト field_hours: 時間 field_activity: 作業分類 field_spent_on: 日付 field_identifier: è­˜åˆ¥å­ field_is_filter: フィルタã¨ã—ã¦ä½¿ç”¨ field_issue_to: 関連ã™ã‚‹ãƒã‚±ãƒƒãƒˆ field_delay: é…å»¶ field_assignable: ã“ã®ãƒ­ãƒ¼ãƒ«ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒã‚±ãƒƒãƒˆã‚’割り当ã¦å¯èƒ½ field_redirect_existing_links: 既存ã®ãƒªãƒ³ã‚¯ã‚’リダイレクトã™ã‚‹ field_estimated_hours: 予定工数 field_column_names: é …ç›® field_time_entries: 時間を記録 field_time_zone: タイムゾーン field_searchable: 検索対象 field_default_value: デフォルト値 field_comments_sorting: コメントã®è¡¨ç¤ºé † field_parent_title: 親ページ field_editable: 編集å¯èƒ½ field_watcher: ウォッãƒãƒ£ãƒ¼ field_content: 内容 field_group_by: グループæ¡ä»¶ field_sharing: 共有 field_parent_issue: 親ãƒã‚±ãƒƒãƒˆ field_member_of_group: 担当者ã®ã‚°ãƒ«ãƒ¼ãƒ— field_assigned_to_role: 担当者ã®ãƒ­ãƒ¼ãƒ« field_text: テキスト field_visible: 表示 field_warn_on_leaving_unsaved: データをä¿å­˜ã›ãšã«ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ãã«è­¦å‘Š field_commit_logs_encoding: コミットメッセージã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° field_scm_path_encoding: パスã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° field_path_to_repository: リãƒã‚¸ãƒˆãƒªã®ãƒ‘ス field_root_directory: ルートディレクトリ field_cvsroot: CVSROOT field_cvs_module: モジュール setting_app_title: アプリケーションã®ã‚¿ã‚¤ãƒˆãƒ« setting_welcome_text: ウェルカムメッセージ setting_default_language: デフォルトã®è¨€èªž setting_login_required: èªè¨¼ãŒå¿…è¦ setting_self_registration: ユーザーã«ã‚ˆã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç™»éŒ² setting_attachment_max_size: 添付ファイルサイズã®ä¸Šé™ setting_issues_export_limit: エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒã‚±ãƒƒãƒˆæ•°ã®ä¸Šé™ setting_mail_from: é€ä¿¡å…ƒãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ setting_plain_text_mail: プレインテキスト形å¼(HTMLãªã—) setting_host_name: ホストåã¨ãƒ‘ス setting_text_formatting: ãƒ†ã‚­ã‚¹ãƒˆæ›¸å¼ setting_cache_formatted_text: テキスト書å¼ã®å¤‰æ›çµæžœã‚’キャッシュ setting_wiki_compression: Wiki履歴を圧縮ã™ã‚‹ setting_feeds_limit: Atomãƒ•ã‚£ãƒ¼ãƒ‰ã®æœ€å¤§å‡ºåŠ›ä»¶æ•° setting_default_projects_public: ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æ–°ã—ã„プロジェクトã¯å…¬é–‹ã«ã™ã‚‹ setting_autofetch_changesets: コミットを自動å–å¾—ã™ã‚‹ setting_sys_api_enabled: リãƒã‚¸ãƒˆãƒªç®¡ç†ç”¨ã®Webサービスを有効ã«ã™ã‚‹ setting_commit_ref_keywords: å‚照用キーワード setting_commit_fix_keywords: 修正用キーワード setting_autologin: 自動ログイン setting_date_format: 日付ã®å½¢å¼ setting_time_format: 時刻ã®å½¢å¼ setting_cross_project_issue_relations: ç•°ãªã‚‹ãƒ—ロジェクトã®ãƒã‚±ãƒƒãƒˆé–“ã§é–¢é€£ã®è¨­å®šã‚’è¨±å¯ setting_issue_list_default_columns: ãƒã‚±ãƒƒãƒˆã®ä¸€è¦§ã§è¡¨ç¤ºã™ã‚‹é …ç›® setting_repositories_encodings: 添付ファイルã¨ãƒªãƒã‚¸ãƒˆãƒªã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° setting_emails_header: メールã®ãƒ˜ãƒƒãƒ€ setting_emails_footer: メールã®ãƒ•ッタ setting_protocol: プロトコル setting_per_page_options: ページã”ã¨ã®è¡¨ç¤ºä»¶æ•° setting_user_format: ユーザーåã®è¡¨ç¤ºå½¢å¼ setting_activity_days_default: ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã®æ´»å‹•ページã«è¡¨ç¤ºã™ã‚‹æ—¥æ•° setting_display_subprojects_issues: サブプロジェクトã®ãƒã‚±ãƒƒãƒˆã‚’メインプロジェクトã«è¡¨ç¤ºã™ã‚‹ setting_enabled_scm: 使用ã™ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ  setting_mail_handler_body_delimiters: "メール本文ã‹ã‚‰ä¸€è‡´ã™ã‚‹è¡Œä»¥é™ã‚’切りæ¨ã¦ã‚‹" setting_mail_handler_api_enabled: å—信メール用ã®Webサービスを有効ã«ã™ã‚‹ setting_mail_handler_api_key: APIキー setting_sequential_project_identifiers: プロジェクト識別å­ã‚’連番ã§ç”Ÿæˆã™ã‚‹ setting_gravatar_enabled: Gravatarã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’使用ã™ã‚‹ setting_gravatar_default: デフォルトã®Gravatarアイコン setting_diff_max_lines_displayed: 差分ã®è¡¨ç¤ºè¡Œæ•°ã®ä¸Šé™ setting_file_max_size_displayed: ç”»é¢è¡¨ç¤ºã™ã‚‹ãƒ†ã‚­ã‚¹ãƒˆãƒ•ァイルサイズã®ä¸Šé™ setting_repository_log_display_limit: ファイルã®ãƒªãƒ“ジョン表示数ã®ä¸Šé™ setting_password_min_length: ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æœ€ä½Žå¿…è¦æ–‡å­—æ•° setting_new_project_user_role_id: システム管ç†è€…以外ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä½œæˆã—ãŸãƒ—ロジェクトã«è¨­å®šã™ã‚‹ãƒ­ãƒ¼ãƒ« setting_default_projects_modules: æ–°è¦ãƒ—ロジェクトã«ãŠã„ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æœ‰åйã«ãªã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« setting_issue_done_ratio: 進æ—率ã®ç®—出方法 setting_issue_done_ratio_issue_field: ãƒã‚±ãƒƒãƒˆã®ãƒ•ィールドを使用 setting_issue_done_ratio_issue_status: ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã«é€£å‹• setting_start_of_week: 週ã®é–‹å§‹æ›œæ—¥ setting_rest_api_enabled: RESTã«ã‚ˆã‚‹Webサービスを有効ã«ã™ã‚‹ setting_default_notification_option: デフォルトã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚ªãƒ—ション setting_commit_logtime_enabled: コミット時ã«ä½œæ¥­æ™‚間を記録ã™ã‚‹ setting_commit_logtime_activity_id: 作業時間ã®ä½œæ¥­åˆ†é¡ž setting_gantt_items_limit: ガントãƒãƒ£ãƒ¼ãƒˆæœ€å¤§è¡¨ç¤ºä»¶æ•° setting_default_projects_tracker_ids: æ–°è¦ãƒ—ロジェクトã«ãŠã„ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§æœ‰åйã«ãªã‚‹ãƒˆãƒ©ãƒƒã‚«ãƒ¼ permission_add_project: プロジェクトã®è¿½åŠ  permission_add_subprojects: サブプロジェクトã®è¿½åŠ  permission_edit_project: プロジェクトã®ç·¨é›† permission_select_project_modules: モジュールã®é¸æŠž permission_manage_members: メンãƒãƒ¼ã®ç®¡ç† permission_manage_versions: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ç®¡ç† permission_manage_categories: ãƒã‚±ãƒƒãƒˆã®ã‚«ãƒ†ã‚´ãƒªã®ç®¡ç† permission_view_issues: ãƒã‚±ãƒƒãƒˆã®é–²è¦§ permission_add_issues: ãƒã‚±ãƒƒãƒˆã®è¿½åŠ  permission_edit_issues: ãƒã‚±ãƒƒãƒˆã®ç·¨é›† permission_manage_issue_relations: 関連ã™ã‚‹ãƒã‚±ãƒƒãƒˆã®ç®¡ç† permission_add_issue_notes: コメントã®è¿½åŠ  permission_edit_issue_notes: コメントã®ç·¨é›† permission_edit_own_issue_notes: 自分ãŒè¿½åŠ ã—ãŸã‚³ãƒ¡ãƒ³ãƒˆã®ç·¨é›† permission_delete_issues: ãƒã‚±ãƒƒãƒˆã®å‰Šé™¤ permission_manage_public_queries: 公開クエリã®ç®¡ç† permission_save_queries: クエリã®ä¿å­˜ permission_view_gantt: ガントãƒãƒ£ãƒ¼ãƒˆã®é–²è¦§ permission_view_calendar: カレンダーã®é–²è¦§ permission_view_issue_watchers: ウォッãƒãƒ£ãƒ¼ä¸€è¦§ã®é–²è¦§ permission_add_issue_watchers: ウォッãƒãƒ£ãƒ¼ã®è¿½åŠ  permission_delete_issue_watchers: ウォッãƒãƒ£ãƒ¼ã®å‰Šé™¤ permission_log_time: 作業時間ã®è¨˜éŒ² permission_view_time_entries: 作業時間ã®é–²è¦§ permission_edit_time_entries: 作業時間ã®ç·¨é›† permission_edit_own_time_entries: 自分ã®ä½œæ¥­æ™‚é–“ã®ç·¨é›† permission_manage_project_activities: 作業分類 (時間管ç†) ã®ç®¡ç† permission_view_news: ニュースã®é–²è¦§ permission_manage_news: ニュースã®ç®¡ç† permission_comment_news: ニュースã¸ã®ã‚³ãƒ¡ãƒ³ãƒˆ permission_view_documents: 文書ã®é–²è¦§ permission_manage_files: ファイルã®ç®¡ç† permission_view_files: ファイルã®é–²è¦§ permission_manage_wiki: Wikiã®ç®¡ç† permission_rename_wiki_pages: Wikiページåã®å¤‰æ›´ permission_delete_wiki_pages: Wikiページã®å‰Šé™¤ permission_view_wiki_pages: Wikiã®é–²è¦§ permission_export_wiki_pages: Wikiページã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ permission_view_wiki_edits: Wiki履歴ã®é–²è¦§ permission_edit_wiki_pages: Wikiページã®ç·¨é›† permission_delete_wiki_pages_attachments: 添付ファイルã®å‰Šé™¤ permission_protect_wiki_pages: Wikiページã®ä¿è­· permission_manage_repository: リãƒã‚¸ãƒˆãƒªã®ç®¡ç† permission_browse_repository: リãƒã‚¸ãƒˆãƒªã®é–²è¦§ permission_view_changesets: 更新履歴ã®é–²è¦§ permission_commit_access: ã‚³ãƒŸãƒƒãƒˆæ¨©é™ permission_manage_boards: フォーラムã®ç®¡ç† permission_view_messages: メッセージã®é–²è¦§ permission_add_messages: メッセージã®è¿½åŠ  permission_edit_messages: メッセージã®ç·¨é›† permission_edit_own_messages: 自分ãŒè¿½åŠ ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ç·¨é›† permission_delete_messages: メッセージã®å‰Šé™¤ permission_delete_own_messages: 自分ãŒè¿½åŠ ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å‰Šé™¤ permission_manage_subtasks: å­ãƒã‚±ãƒƒãƒˆã®ç®¡ç† project_module_issue_tracking: ãƒã‚±ãƒƒãƒˆãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚° project_module_time_tracking: æ™‚é–“ç®¡ç† project_module_news: ニュース project_module_documents: 文書 project_module_files: ファイル project_module_wiki: Wiki project_module_repository: リãƒã‚¸ãƒˆãƒª project_module_boards: フォーラム project_module_gantt: ガントãƒãƒ£ãƒ¼ãƒˆ project_module_calendar: カレンダー label_user: ユーザー label_user_plural: ユーザー label_user_new: æ–°ã—ã„ユーザー label_user_anonymous: 匿åユーザー label_profile: プロフィール label_project: プロジェクト label_project_new: æ–°ã—ã„プロジェクト label_project_plural: プロジェクト label_x_projects: zero: プロジェクトã¯ã‚りã¾ã›ã‚“ one: 1プロジェクト other: "%{count}プロジェクト" label_project_all: 全プロジェクト label_project_latest: 最近ã®ãƒ—ロジェクト label_issue: ãƒã‚±ãƒƒãƒˆ label_issue_new: æ–°ã—ã„ãƒã‚±ãƒƒãƒˆ label_issue_plural: ãƒã‚±ãƒƒãƒˆ label_issue_view_all: ã™ã¹ã¦ã®ãƒã‚±ãƒƒãƒˆã‚’表示 label_issues_by: "%{value} 別ã®ãƒã‚±ãƒƒãƒˆ" label_issue_added: ãƒã‚±ãƒƒãƒˆã®è¿½åŠ  label_issue_updated: ãƒã‚±ãƒƒãƒˆã®æ›´æ–° label_document: 文書 label_document_new: æ–°ã—ã„æ–‡æ›¸ label_document_plural: 文書 label_document_added: 文書ã®è¿½åŠ  label_role: ロール label_role_plural: ロール label_role_new: æ–°ã—ã„ロール label_role_and_permissions: ãƒ­ãƒ¼ãƒ«ã¨æ¨©é™ label_member: メンãƒãƒ¼ label_member_new: æ–°ã—ã„メンãƒãƒ¼ label_member_plural: メンãƒãƒ¼ label_tracker: トラッカー label_tracker_plural: トラッカー label_tracker_new: æ–°ã—ã„トラッカー label_workflow: ワークフロー label_issue_status: ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ label_issue_status_plural: ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ label_issue_status_new: æ–°ã—ã„ステータス label_issue_category: ãƒã‚±ãƒƒãƒˆã®ã‚«ãƒ†ã‚´ãƒª label_issue_category_plural: ãƒã‚±ãƒƒãƒˆã®ã‚«ãƒ†ã‚´ãƒª label_issue_category_new: æ–°ã—ã„カテゴリ label_custom_field: カスタムフィールド label_custom_field_plural: カスタムフィールド label_custom_field_new: æ–°ã—ã„カスタムフィールド label_enumerations: é¸æŠžè‚¢ã®å€¤ label_enumeration_new: æ–°ã—ã„値 label_information: 情報 label_information_plural: 情報 label_register: 登録ã™ã‚‹ label_password_lost: パスワードã®å†è¨­å®š label_home: ホーム label_my_page: マイページ label_my_account: 個人設定 label_my_projects: マイプロジェクト label_administration: ç®¡ç† label_login: ログイン label_logout: ログアウト label_help: ヘルプ label_reported_issues: 報告ã—ãŸãƒã‚±ãƒƒãƒˆ label_assigned_to_me_issues: 担当ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ label_registered_on: 登録日 label_activity: 活動 label_user_activity: "%{value} ã®æ´»å‹•" label_new: æ–°ã—ãä½œæˆ label_logged_as: ログイン中: label_environment: 環境 label_authentication: èªè¨¼ label_auth_source: èªè¨¼æ–¹å¼ label_auth_source_new: æ–°ã—ã„èªè¨¼æ–¹å¼ label_auth_source_plural: èªè¨¼æ–¹å¼ label_subproject_plural: サブプロジェクト label_subproject_new: æ–°ã—ã„サブプロジェクト label_and_its_subprojects: "%{value} ã¨ã‚µãƒ–プロジェクト" label_min_max_length: 最短 - 最大長 label_list: リスト label_date: 日付 label_integer: æ•´æ•° label_float: å°æ•° label_boolean: 真å½å€¤ label_string: テキスト label_text: é•·ã„テキスト label_attribute: 属性 label_attribute_plural: 属性 label_no_data: 表示ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒã‚りã¾ã›ã‚“ label_change_status: ステータスã®å¤‰æ›´ label_history: 履歴 label_attachment: ファイル label_attachment_new: æ–°ã—ã„ファイル label_attachment_delete: ファイルを削除 label_attachment_plural: ファイル label_file_added: ファイルã®è¿½åŠ  label_report: レãƒãƒ¼ãƒˆ label_report_plural: レãƒãƒ¼ãƒˆ label_news: ニュース label_news_new: ニュースを追加 label_news_plural: ニュース label_news_latest: 最新ニュース label_news_view_all: ã™ã¹ã¦ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚’表示 label_news_added: ニュースã®è¿½åŠ  label_news_comment_added: ニュースã¸ã®ã‚³ãƒ¡ãƒ³ãƒˆè¿½åŠ  label_settings: 設定 label_overview: æ¦‚è¦ label_version: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ label_version_new: æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ label_version_plural: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ label_confirmation: ç¢ºèª label_close_versions: 完了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’終了ã«ã™ã‚‹ label_export_to: 'ä»–ã®å½¢å¼ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ:' label_read: 読む... label_public_projects: 公開プロジェクト label_open_issues: 未完了 label_open_issues_plural: 未完了 label_closed_issues: 完了 label_closed_issues_plural: 完了 label_x_open_issues_abbr: zero: 0件未完了 one: 1件未完了 other: "%{count}件未完了" label_x_closed_issues_abbr: zero: 0件完了 one: 1件完了 other: "%{count}件完了" label_total: åˆè¨ˆ label_permissions: æ¨©é™ label_current_status: ç¾åœ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ label_new_statuses_allowed: é·ç§»ã§ãるステータス label_all: ã™ã¹ã¦ label_none: ãªã— label_nobody: 無記å label_next: 次 label_previous: å‰ label_used_by: 使用中 label_details: 詳細 label_add_note: コメントを追加 label_calendar: カレンダー label_months_from: ヶ月分 label_gantt: ガントãƒãƒ£ãƒ¼ãƒˆ label_internal: 内部 label_last_changes: "最新ã®å¤‰æ›´ %{count}ä»¶" label_change_view_all: ã™ã¹ã¦ã®å¤‰æ›´ã‚’表示 label_comment: コメント label_comment_plural: コメント label_x_comments: zero: コメントãŒã‚りã¾ã›ã‚“ one: 1コメント other: "%{count}コメント" label_comment_add: コメント追加 label_comment_added: コメントãŒè¿½åŠ ã•れã¾ã—㟠label_comment_delete: コメント削除 label_query: カスタムクエリ label_query_plural: カスタムクエリ label_query_new: æ–°ã—ã„クエリ label_my_queries: マイカスタムクエリ label_filter_add: フィルタ追加 label_filter_plural: フィルタ label_equals: ç­‰ã—ã„ label_not_equals: ç­‰ã—ããªã„ label_in_less_than: Næ—¥å¾Œä»¥å‰ label_in_more_than: Næ—¥å¾Œä»¥é™ label_greater_or_equal: 以上 label_less_or_equal: 以下 label_in: N日後 label_today: 今日 label_yesterday: 昨日 label_tomorrow: 明日 label_this_week: 今週 label_last_week: 先週 label_next_week: æ¥é€± label_last_n_days: "ç›´è¿‘%{count}日間" label_this_month: 今月 label_last_month: 先月 label_next_month: æ¥æœˆ label_this_year: 今年 label_date_range: 期間 label_less_than_ago: Næ—¥å‰ä»¥é™ label_more_than_ago: Næ—¥å‰ä»¥å‰ label_ago: Næ—¥å‰ label_contains: å«ã‚€ label_not_contains: å«ã¾ãªã„ label_day_plural: æ—¥ label_repository: リãƒã‚¸ãƒˆãƒª label_repository_plural: リãƒã‚¸ãƒˆãƒª label_branch: ブランムlabel_tag: ã‚¿ã‚° label_revision: リビジョン label_revision_plural: リビジョン label_revision_id: リビジョン %{value} label_associated_revisions: 関係ã—ã¦ã„るリビジョン label_added: 追加 label_modified: 変更 label_copied: コピー label_renamed: å称変更 label_deleted: 削除 label_latest_revision: 最新リビジョン label_latest_revision_plural: 最新リビジョン label_view_revisions: リビジョンを表示 label_view_all_revisions: ã™ã¹ã¦ã®ãƒªãƒ“ジョンを表示 label_max_size: サイズã®ä¸Šé™ label_roadmap: ロードマップ label_roadmap_due_in: "期日ã¾ã§ %{value}" label_roadmap_overdue: "%{value} é…れ" label_roadmap_no_issues: ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«é–¢ã™ã‚‹ãƒã‚±ãƒƒãƒˆã¯ã‚りã¾ã›ã‚“ label_search: 検索 label_result_plural: çµæžœ label_all_words: ã™ã¹ã¦ã®å˜èªž label_wiki: Wiki label_wiki_edit: Wiki編集 label_wiki_edit_plural: Wiki編集 label_wiki_page: Wikiページ label_wiki_page_plural: Wikiページ label_index_by_title: 索引(åå‰é †) label_index_by_date: 索引(日付順) label_current_version: 最新版 label_preview: プレビュー label_feed_plural: フィード label_changes_details: 全変更ã®è©³ç´° label_issue_tracking: ãƒã‚±ãƒƒãƒˆãƒˆãƒ©ãƒƒã‚­ãƒ³ã‚° label_spent_time: 作業時間 label_f_hour: "%{value}時間" label_f_hour_plural: "%{value}時間" label_time_tracking: æ™‚é–“ç®¡ç† label_change_plural: 変更 label_statistics: 統計 label_commits_per_month: 月別ã®ã‚³ãƒŸãƒƒãƒˆ label_commits_per_author: 作æˆè€…別ã®ã‚³ãƒŸãƒƒãƒˆ label_diff: 差分 label_view_diff: 差分を表示 label_diff_inline: インライン label_diff_side_by_side: 横ã«ä¸¦ã¹ã‚‹ label_options: オプション label_copy_workflow_from: ワークフローをã“ã“ã‹ã‚‰ã‚³ãƒ”ー label_permissions_report: 権é™ãƒ¬ãƒãƒ¼ãƒˆ label_watched_issues: ウォッãƒã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ label_related_issues: 関連ã™ã‚‹ãƒã‚±ãƒƒãƒˆ label_applied_status: é©ç”¨ã•れるステータス label_loading: ロード中... label_relation_new: æ–°ã—ã„関連 label_relation_delete: 関連ã®å‰Šé™¤ label_relates_to: 関連ã—ã¦ã„ã‚‹ label_duplicates: 次ã®ãƒã‚±ãƒƒãƒˆã¨é‡è¤‡ label_duplicated_by: 次ã®ãƒã‚±ãƒƒãƒˆãŒé‡è¤‡ label_blocks: ブロック先 label_blocked_by: ブロック元 label_precedes: 次ã®ãƒã‚±ãƒƒãƒˆã«å…ˆè¡Œ label_follows: 次ã®ãƒã‚±ãƒƒãƒˆã«å¾Œç¶š label_stay_logged_in: ãƒ­ã‚°ã‚¤ãƒ³ã‚’ç¶­æŒ label_disabled: 無効 label_show_completed_versions: 完了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示 label_me: 自分 label_board: フォーラム label_board_new: æ–°ã—ã„フォーラム label_board_plural: フォーラム label_board_sticky: スティッキー label_board_locked: ロック label_topic_plural: トピック label_message_plural: メッセージ label_message_last: 最新ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ label_message_new: æ–°ã—ã„メッセージ label_message_posted: メッセージã®è¿½åŠ  label_reply_plural: 返答 label_send_information: アカウント情報をユーザーã«é€ä¿¡ label_year: å¹´ label_month: 月 label_week: 週 label_date_from: "日付指定: " label_date_to: ã‹ã‚‰ label_language_based: ユーザーã®è¨€èªžã®è¨­å®šã«å¾“ㆠlabel_sort_by: "ä¸¦ã¹æ›¿ãˆ %{value}" label_send_test_email: テストメールをé€ä¿¡ label_feeds_access_key: Atomアクセスキー label_missing_feeds_access_key: AtomアクセスキーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ label_feeds_access_key_created_on: "Atomアクセスキーã¯%{value}å‰ã«ä½œæˆã•れã¾ã—ãŸ" label_module_plural: モジュール label_added_time_by: "%{author} ã•ã‚“ãŒ%{age}å‰ã«è¿½åŠ " label_updated_time_by: "%{author} ã•ã‚“ãŒ%{age}å‰ã«æ›´æ–°" label_updated_time: "%{value}å‰ã«æ›´æ–°" label_jump_to_a_project: プロジェクトã¸ç§»å‹•... label_file_plural: ファイル label_changeset_plural: 更新履歴 label_default_columns: デフォルトã®é …ç›® label_no_change_option: (変更無ã—) label_bulk_edit: 一括編集 label_bulk_edit_selected_issues: ãƒã‚±ãƒƒãƒˆã®ä¸€æ‹¬ç·¨é›† label_theme: テーマ label_default: デフォルト label_search_titles_only: タイトルã®ã¿ label_user_mail_option_all: "å‚加ã—ã¦ã„るプロジェクトã®ã™ã¹ã¦ã®é€šçŸ¥" label_user_mail_option_selected: "é¸æŠžã—ãŸãƒ—ロジェクトã®ã™ã¹ã¦ã®é€šçŸ¥..." label_user_mail_option_none: "通知ã—ãªã„" label_user_mail_option_only_my_events: "ウォッãƒä¸­ã¾ãŸã¯è‡ªåˆ†ãŒé–¢ä¿‚ã—ã¦ã„ã‚‹ã‚‚ã®" label_user_mail_option_only_assigned: "ウォッãƒä¸­ã¾ãŸã¯è‡ªåˆ†ãŒæ‹…当ã—ã¦ã„ã‚‹ã‚‚ã®" label_user_mail_option_only_owner: "ウォッãƒä¸­ã¾ãŸã¯è‡ªåˆ†ãŒä½œæˆã—ãŸã‚‚ã®" label_user_mail_no_self_notified: 自分自身ã«ã‚ˆã‚‹å¤‰æ›´ã®é€šçŸ¥ã¯ä¸è¦ label_registration_activation_by_email: メールã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_manual_activation: 手動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_registration_automatic_activation: 自動ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効化 label_display_per_page: "1ページã«: %{value}" label_age: çµŒéŽæœŸé–“ label_change_properties: プロパティã®å¤‰æ›´ label_general: 全般 label_scm: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ  label_plugins: プラグイン label_ldap_authentication: LDAPèªè¨¼ label_downloads_abbr: DL label_optional_description: 説明 (ä»»æ„) label_add_another_file: 別ã®ãƒ•ァイルを追加 label_preferences: 設定 label_chronological_order: å¤ã„é † label_reverse_chronological_order: æ–°ã—ã„é † label_incoming_emails: å—信メール label_generate_key: キーã®ç”Ÿæˆ label_issue_watchers: ウォッãƒãƒ£ãƒ¼ label_example: 例 label_display: 表示 label_sort: ソートæ¡ä»¶ label_ascending: 昇順 label_descending: é™é † label_date_from_to: "%{start}ã‹ã‚‰%{end}ã¾ã§" label_days_to_html: "%{date} ã¾ã§ã®%{days}日間" label_wiki_content_added: Wikiページã®è¿½åŠ  label_wiki_content_updated: Wikiãƒšãƒ¼ã‚¸ã®æ›´æ–° label_group: グループ label_group_plural: グループ label_group_new: æ–°ã—ã„グループ label_time_entry_plural: 作業時間 label_version_sharing_none: 共有ã—ãªã„ label_version_sharing_descendants: サブプロジェクトå˜ä½ label_version_sharing_hierarchy: プロジェクト階層å˜ä½ label_version_sharing_tree: プロジェクトツリーå˜ä½ label_version_sharing_system: ã™ã¹ã¦ã®ãƒ—ロジェクト label_update_issue_done_ratios: 進æ—çŽ‡ã®æ›´æ–° label_copy_source: コピー元 label_copy_target: コピー先 label_copy_same_as_target: åŒã˜ã‚³ãƒ”ー先 label_display_used_statuses_only: ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã§ä½¿ç”¨ä¸­ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã®ã¿è¡¨ç¤º label_api_access_key: APIアクセスキー label_missing_api_access_key: APIアクセスキーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ label_api_access_key_created_on: "APIアクセスキーã¯%{value}å‰ã«ä½œæˆã•れã¾ã—ãŸ" label_subtask_plural: å­ãƒã‚±ãƒƒãƒˆ label_project_copy_notifications: コピーã—ãŸãƒã‚±ãƒƒãƒˆã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ label_principal_search: "ユーザーã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¤œç´¢:" label_user_search: "ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ¤œç´¢:" label_git_report_last_commit: ファイルã¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æœ€æ–°ã‚³ãƒŸãƒƒãƒˆã‚’表示ã™ã‚‹ label_parent_revision: 親 label_child_revision: å­ label_gantt_progress_line: イナズマ線 button_login: ログイン button_submit: é€ä¿¡ button_save: ä¿å­˜ button_check_all: ã™ã¹ã¦ã«ãƒã‚§ãƒƒã‚¯ã‚’ã¤ã‘ã‚‹ button_uncheck_all: ã™ã¹ã¦ã®ãƒã‚§ãƒƒã‚¯ã‚’外㙠button_expand_all: 展開 button_collapse_all: 折りãŸãŸã¿ button_delete: 削除 button_create: ä½œæˆ button_create_and_continue: é€£ç¶šä½œæˆ button_test: テスト button_edit: 編集 button_edit_associated_wikipage: "関連ã™ã‚‹Wikiページを編集: %{page_title}" button_add: 追加 button_change: 変更 button_apply: é©ç”¨ button_clear: クリア button_lock: ロック button_unlock: アンロック button_download: ダウンロード button_list: 一覧 button_view: 表示 button_move: 移動 button_move_and_follow: 移動後表示 button_back: 戻る button_cancel: キャンセル button_activate: 有効ã«ã™ã‚‹ button_sort: ソート button_log_time: 時間を記録 button_rollback: ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ãƒ­ãƒ¼ãƒ«ãƒãƒƒã‚¯ button_watch: ウォッムbutton_unwatch: ウォッãƒã‚’ã‚„ã‚ã‚‹ button_reply: 返答 button_archive: アーカイブ button_unarchive: アーカイブ解除 button_reset: リセット button_rename: åå‰å¤‰æ›´ button_change_password: パスワード変更 button_copy: コピー button_copy_and_follow: コピー後表示 button_annotate: アノテート button_update: æ›´æ–° button_configure: 設定 button_quote: 引用 button_show: 表示 button_save_object: "%{object_name}ã‚’ä¿å­˜" button_edit_object: "%{object_name}を編集" button_delete_object: "%{object_name}を削除" status_active: 有効 status_registered: 登録 status_locked: ロック中 version_status_open: 進行中 version_status_locked: ロック中 version_status_closed: 終了 field_active: 有効 text_select_mail_notifications: メール通知ã®é€ä¿¡å¯¾è±¡ã¨ã™ã‚‹æ“ä½œã‚’é¸æŠžã—ã¦ãã ã•ã„。 text_regexp_info: 例) ^[A-Z0-9]+$ text_project_destroy_confirmation: 本当ã«ã“ã®ãƒ—ロジェクトã¨é–¢é€£ãƒ‡ãƒ¼ã‚¿ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ text_subprojects_destroy_warning: "サブプロジェクト %{value} も削除ã•れã¾ã™ã€‚" text_workflow_edit: ワークフローを編集ã™ã‚‹ãƒ­ãƒ¼ãƒ«ã¨ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã‚’é¸ã‚“ã§ãã ã•ã„ text_are_you_sure: よã‚ã—ã„ã§ã™ã‹ï¼Ÿ text_journal_changed: "%{label} ã‚’ %{old} ã‹ã‚‰ %{new} ã«å¤‰æ›´" text_journal_changed_no_detail: "%{label} ã‚’æ›´æ–°" text_journal_set_to: "%{label} ã‚’ %{value} ã«ã‚»ãƒƒãƒˆ" text_journal_deleted: "%{label} を削除 (%{old})" text_journal_added: "%{label} %{value} を追加" text_tip_issue_begin_day: ã“ã®æ—¥ã«é–‹å§‹ã™ã‚‹ãƒã‚±ãƒƒãƒˆ text_tip_issue_end_day: ã“ã®æ—¥ã«çµ‚了ã™ã‚‹ãƒã‚±ãƒƒãƒˆ text_tip_issue_begin_end_day: ã“ã®æ—¥ã«é–‹å§‹ãƒ»çµ‚了ã™ã‚‹ãƒã‚±ãƒƒãƒˆ text_caracters_maximum: "最大%{count}文字ã§ã™ã€‚" text_caracters_minimum: "最低%{count}文字ã®é•·ã•ãŒå¿…è¦ã§ã™ã€‚" text_length_between: "é•·ã•ã¯%{min}ã‹ã‚‰%{max}文字ã¾ã§ã§ã™ã€‚" text_tracker_no_workflow: ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã«ãƒ¯ãƒ¼ã‚¯ãƒ•ローãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“ text_unallowed_characters: æ¬¡ã®æ–‡å­—ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ text_comma_separated: (カンマã§åŒºåˆ‡ã‚‹ã“ã¨ã§)複数ã®å€¤ã‚’設定ã§ãã¾ã™ã€‚ text_line_separated: (1行ã”ã¨ã«æ›¸ãã“ã¨ã§)複数ã®å€¤ã‚’設定ã§ãã¾ã™ã€‚ text_issues_ref_in_commit_messages: コミットメッセージ内ã§ãƒã‚±ãƒƒãƒˆã®å‚ç…§/修正 text_issue_added: "ãƒã‚±ãƒƒãƒˆ %{id} ã‚’ %{author} ã•ã‚“ãŒä½œæˆã—ã¾ã—ãŸã€‚" text_issue_updated: "ãƒã‚±ãƒƒãƒˆ %{id} ã‚’ %{author} ã•ã‚“ãŒæ›´æ–°ã—ã¾ã—ãŸã€‚" text_wiki_destroy_confirmation: 本当ã«ã“ã®wikiã¨ãã®å†…容ã®ã™ã¹ã¦ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ text_issue_category_destroy_question: "%{count}ä»¶ã®ãƒã‚±ãƒƒãƒˆãŒã“ã®ã‚«ãƒ†ã‚´ãƒªã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_issue_category_destroy_assignments: カテゴリã®å‰²ã‚Šå½“ã¦ã‚’削除ã™ã‚‹ text_issue_category_reassign_to: ãƒã‚±ãƒƒãƒˆã‚’ã“ã®ã‚«ãƒ†ã‚´ãƒªã«å†å‰²ã‚Šå½“ã¦ã™ã‚‹ text_user_mail_option: "æœªé¸æŠžã®ãƒ—ロジェクトã§ã¯ã€ã‚¦ã‚©ãƒƒãƒä¸­ã¾ãŸã¯è‡ªåˆ†ãŒé–¢ä¿‚ã—ã¦ã„ã‚‹ã‚‚ã®(例: 自分ãŒä½œæˆã¾ãŸã¯æ‹…当ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ)ã®ã¿ãƒ¡ãƒ¼ãƒ«ãŒé€ä¿¡ã•れã¾ã™ã€‚" text_no_configuration_data: "ロールã€ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã€ãƒã‚±ãƒƒãƒˆã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã€ãƒ¯ãƒ¼ã‚¯ãƒ•ローãŒã¾ã è¨­å®šã•れã¦ã„ã¾ã›ã‚“。\nデフォルト設定ã®ãƒ­ãƒ¼ãƒ‰ã‚’å¼·ããŠå‹§ã‚ã—ã¾ã™ã€‚ロードã—ãŸå¾Œã€ãれを修正ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" text_load_default_configuration: デフォルト設定をロード text_status_changed_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" text_time_logged_by_changeset: "更新履歴 %{value} ã§é©ç”¨ã•れã¾ã—ãŸã€‚" text_issues_destroy_confirmation: '本当ã«é¸æŠžã—ãŸãƒã‚±ãƒƒãƒˆã‚’削除ã—ã¾ã™ã‹ï¼Ÿ' text_select_project_modules: 'ã“ã®ãƒ—ロジェクトã§ä½¿ç”¨ã™ã‚‹ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„:' text_default_administrator_account_changed: デフォルト管ç†ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒå¤‰æ›´æ¸ˆ text_file_repository_writable: æ·»ä»˜ãƒ•ã‚¡ã‚¤ãƒ«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_plugin_assets_writable: Plugin assetsãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¿å¯èƒ½ text_minimagick_available: MiniMagickãŒåˆ©ç”¨å¯èƒ½ (オプション) text_destroy_time_entries_question: ã“ã®ãƒã‚±ãƒƒãƒˆã®%{hours}時間分ã®ä½œæ¥­è¨˜éŒ²ã®æ‰±ã„ã‚’é¸æŠžã—ã¦ãã ã•ã„。 text_destroy_time_entries: 記録ã•れãŸä½œæ¥­æ™‚é–“ã‚’å«ã‚ã¦å‰Šé™¤ text_assign_time_entries_to_project: 記録ã•れãŸä½œæ¥­æ™‚間をプロジェクト自体ã«å‰²ã‚Šå½“㦠text_reassign_time_entries: '記録ã•れãŸä½œæ¥­æ™‚é–“ã‚’ã“ã®ãƒã‚±ãƒƒãƒˆã«å†å‰²ã‚Šå½“ã¦ï¼š' text_user_wrote: "%{value} ã•ã‚“ã¯æ›¸ãã¾ã—ãŸ:" text_user_wrote_in: "%{value} ã•ん㯠%{link} ã§æ›¸ãã¾ã—ãŸ:" text_enumeration_destroy_question: "%{count}個ã®ã‚ªãƒ–ジェクトãŒã“ã®å€¤ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_enumeration_category_reassign_to: '次ã®å€¤ã«å‰²ã‚Šå½“ã¦ç›´ã™:' text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/configuration.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" text_repository_usernames_mapping: "リãƒã‚¸ãƒˆãƒªã®ãƒ­ã‚°ã‹ã‚‰æ¤œå‡ºã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’ã©ã®Redmineユーザーã«é–¢é€£ã¥ã‘ã‚‹ã®ã‹é¸æŠžã—ã¦ãã ã•ã„。\nログ上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒRedmineã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¸€è‡´ã™ã‚‹å ´åˆã¯è‡ªå‹•çš„ã«é–¢é€£ã¥ã‘られã¾ã™ã€‚" text_diff_truncated: '... 差分ã®è¡Œæ•°ãŒè¡¨ç¤ºå¯èƒ½ãªä¸Šé™ã‚’è¶…ãˆã¾ã—ãŸã€‚è¶…éŽåˆ†ã¯è¡¨ç¤ºã—ã¾ã›ã‚“。' text_custom_field_possible_values_info: 'é¸æŠžè‚¢ã®å€¤ã¯1行ã«1個ãšã¤è¨˜è¿°ã—ã¦ãã ã•ã„。' text_wiki_page_destroy_question: "ã“ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«%{descendants}ページã®å­å­«ãƒšãƒ¼ã‚¸ãŒã‚りã¾ã™ã€‚" text_wiki_page_nullify_children: "å­ãƒšãƒ¼ã‚¸ã‚’メインページé…下ã«ç§»å‹•ã™ã‚‹" text_wiki_page_destroy_children: "é…下ã®å­å­«ãƒšãƒ¼ã‚¸ã‚‚削除ã™ã‚‹" text_wiki_page_reassign_children: "å­ãƒšãƒ¼ã‚¸ã‚’次ã®è¦ªãƒšãƒ¼ã‚¸ã®é…下ã«ç§»å‹•ã™ã‚‹" text_own_membership_delete_confirmation: "一部ã¾ãŸã¯ã™ã¹ã¦ã®æ¨©é™ã‚’自分自身ã‹ã‚‰å‰¥å¥ªã—よã†ã¨ã—ã¦ã„ã‚‹ãŸã‚ã€ã“ã®ãƒ—ロジェクトを編集ã§ããªããªã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n本当ã«ç¶šã‘ã¾ã™ã‹ï¼Ÿ" text_zoom_in: 拡大 text_zoom_out: ç¸®å° text_warn_on_leaving_unsaved: ã“ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ç§»å‹•ã™ã‚‹ã¨ã€ä¿å­˜ã•れã¦ã„ãªã„データãŒå¤±ã‚れã¾ã™ã€‚ text_scm_path_encoding_note: "デフォルト: UTF-8" text_mercurial_repository_note: "ローカルリãƒã‚¸ãƒˆãƒª (例: /hgrepo, c:\\hgrepo)" text_git_repository_note: "ローカルã®ãƒ™ã‚¢(bare)リãƒã‚¸ãƒˆãƒª (例: /gitrepo, c:\\gitrepo)" text_scm_command: コマンド text_scm_command_version: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ text_scm_config: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’config/configuration.ymlã§è¨­å®šã§ãã¾ã™ã€‚設定後ã€Redmineã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„。 text_scm_command_not_available: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ ã®ã‚³ãƒžãƒ³ãƒ‰ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。管ç†ç”»é¢ã«ã¦è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。 default_role_manager: 管ç†è€… default_role_developer: 開発者 default_role_reporter: 報告者 default_tracker_bug: ãƒã‚° default_tracker_feature: 機能 default_tracker_support: サãƒãƒ¼ãƒˆ default_issue_status_new: æ–°è¦ default_issue_status_in_progress: 進行中 default_issue_status_resolved: 解決 default_issue_status_feedback: フィードãƒãƒƒã‚¯ default_issue_status_closed: 終了 default_issue_status_rejected: å´ä¸‹ default_doc_category_user: ユーザー文書 default_doc_category_tech: 技術文書 default_priority_low: 低゠default_priority_normal: 通常 default_priority_high: 高゠default_priority_urgent: 急ã„ã§ default_priority_immediate: 今ã™ã default_activity_design: 設計作業 default_activity_development: 開発作業 enumeration_issue_priorities: ãƒã‚±ãƒƒãƒˆã®å„ªå…ˆåº¦ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間管ç†) enumeration_system_activity: システム作業分類 label_additional_workflow_transitions_for_assignee: ãƒã‚±ãƒƒãƒˆæ‹…当者ã«è¿½åŠ ã§è¨±å¯ã™ã‚‹é·ç§» label_additional_workflow_transitions_for_author: ãƒã‚±ãƒƒãƒˆä½œæˆè€…ã«è¿½åŠ ã§è¨±å¯ã™ã‚‹é·ç§» label_bulk_edit_selected_time_entries: 作業時間ã®ä¸€æ‹¬ç·¨é›† text_time_entries_destroy_confirmation: 本当ã«é¸æŠžã—ãŸä½œæ¥­æ™‚間を削除ã—ã¾ã™ã‹ï¼Ÿ label_role_anonymous: 匿åユーザー label_role_non_member: éžãƒ¡ãƒ³ãƒãƒ¼ label_issue_note_added: コメントã®è¿½åŠ  label_issue_status_updated: ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã®æ›´æ–° label_issue_priority_updated: å„ªå…ˆåº¦ã®æ›´æ–° label_issues_visibility_own: 作æˆè€…ã‹æ‹…当者ã§ã‚ã‚‹ãƒã‚±ãƒƒãƒˆ field_issues_visibility: 表示ã§ãã‚‹ãƒã‚±ãƒƒãƒˆ label_issues_visibility_all: ã™ã¹ã¦ã®ãƒã‚±ãƒƒãƒˆ permission_set_own_issues_private: 自分ãŒè¿½åŠ ã—ãŸãƒã‚±ãƒƒãƒˆã®ãƒ—ライベート設定 field_is_private: プライベート permission_set_issues_private: ãƒã‚±ãƒƒãƒˆã®ãƒ—ライベート設定 label_issues_visibility_public: プライベートãƒã‚±ãƒƒãƒˆä»¥å¤– text_issues_destroy_descendants_confirmation: "%{count}個ã®å­ãƒã‚±ãƒƒãƒˆã‚‚削除ã•れã¾ã™ã€‚" notice_issue_successful_create: ãƒã‚±ãƒƒãƒˆ %{id} ãŒä½œæˆã•れã¾ã—ãŸã€‚ label_between: 次ã®ç¯„囲内 setting_issue_group_assignment: グループã¸ã®ãƒã‚±ãƒƒãƒˆå‰²ã‚Šå½“ã¦ã‚’è¨±å¯ description_query_sort_criteria_direction: é †åº description_project_scope: 検索範囲 description_filter: Filter description_user_mail_notification: メール通知ã®è¨­å®š description_message_content: 内容 description_available_columns: 利用ã§ãã‚‹é …ç›® description_issue_category_reassign: æ–°ã—ã„ã‚«ãƒ†ã‚´ãƒªã‚’é¸æŠžã—ã¦ãã ã•ã„ description_search: 検索キーワード description_notes: コメント description_choose_project: プロジェクト description_query_sort_criteria_attribute: é …ç›® description_wiki_subpages_reassign: æ–°ã—ã„è¦ªãƒšãƒ¼ã‚¸ã‚’é¸æŠžã—ã¦ãã ã•ã„ description_selected_columns: é¸æŠžã•れãŸé …ç›® error_scm_annotate_big_text_file: テキストファイルサイズã®ä¸Šé™ã‚’è¶…ãˆã¦ã„ã‚‹ãŸã‚アノテートã§ãã¾ã›ã‚“。 setting_default_issue_start_date_to_creation_date: ç¾åœ¨ã®æ—¥ä»˜ã‚’æ–°ã—ã„ãƒã‚±ãƒƒãƒˆã®é–‹å§‹æ—¥ã¨ã™ã‚‹ button_edit_section: ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’編集 description_all_columns: ã™ã¹ã¦ã®é …ç›® button_export: エクスãƒãƒ¼ãƒˆ label_export_options: "%{export_format} エクスãƒãƒ¼ãƒˆè¨­å®š" error_attachment_too_big: ã“ã®ãƒ•ァイルã¯ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。添付ファイルサイズã®ä¸Šé™(%{max_size})ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ notice_failed_to_save_time_entries: "å…¨%{total}件中%{count}ä»¶ã®ä½œæ¥­æ™‚é–“ãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{ids}。" label_x_issues: zero: 0 ãƒã‚±ãƒƒãƒˆ one: 1 ãƒã‚±ãƒƒãƒˆ other: "%{count} ãƒã‚±ãƒƒãƒˆ" label_repository_new: æ–°ã—ã„リãƒã‚¸ãƒˆãƒª field_repository_is_default: メインリãƒã‚¸ãƒˆãƒª label_copy_attachments: 添付ファイルをコピー label_item_position: "%{position}/%{count}" label_completed_versions: 完了ã—ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ text_project_identifier_info: ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆå°æ–‡å­—(a-z)・数字・ãƒã‚¤ãƒ•ン・アンダースコアãŒä½¿ãˆã¾ã™ã€‚
    識別å­ã¯å¾Œã§å¤‰æ›´ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 field_multiple: è¤‡æ•°é¸æŠžå¯ setting_commit_cross_project_ref: ç•°ãªã‚‹ãƒ—ロジェクトã®ãƒã‚±ãƒƒãƒˆã®å‚ç…§/ä¿®æ­£ã‚’è¨±å¯ text_issue_conflict_resolution_add_notes: 自分ã®ç·¨é›†å†…容を破棄ã—コメントã®ã¿è¿½åŠ  text_issue_conflict_resolution_overwrite: 自分ã®ç·¨é›†å†…容ã®ä¿å­˜ã‚’強行 (ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ›´æ–°å†…容ã¯ã‚³ãƒ¡ãƒ³ãƒˆã‚’除ã上書ãã•れã¾ã™) notice_issue_update_conflict: ã“ã®ãƒã‚±ãƒƒãƒˆã‚’編集中ã«ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ›´æ–°ã—ã¾ã—ãŸã€‚ text_issue_conflict_resolution_cancel: 自分ã®ç·¨é›†å†…容を破棄㗠%{link} ã‚’å†è¡¨ç¤º permission_manage_related_issues: リビジョンã¨ãƒã‚±ãƒƒãƒˆã®é–¢é€£ã®ç®¡ç† field_auth_source_ldap_filter: LDAPフィルタ label_search_for_watchers: ウォッãƒãƒ£ãƒ¼ã‚’検索ã—ã¦è¿½åŠ  notice_account_deleted: アカウントãŒå‰Šé™¤ã•れã¾ã—ãŸã€‚ setting_unsubscribe: ユーザーã«ã‚ˆã‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆå‰Šé™¤ã‚’è¨±å¯ button_delete_my_account: 自分ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’削除 text_account_destroy_confirmation: |- 本当ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’削除ã—ã¾ã™ã‹ï¼Ÿ ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ’ä¹…çš„ã«å‰Šé™¤ã•れã¾ã™ã€‚削除後ã«å†åº¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’有効ã«ã™ã‚‹æ‰‹æ®µã¯ã‚りã¾ã›ã‚“。 error_session_expired: セッションãŒå¤±åйã—ã¾ã—ãŸã€‚ログインã—ç›´ã—ã¦ãã ã•ã„。 text_session_expiration_settings: "警告: ã“ã®è¨­å®šã‚’変更ã™ã‚‹ã¨ç¾åœ¨æœ‰åйãªã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒå¤±åйã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" setting_session_lifetime: æœ‰åŠ¹æœŸé–“ã®æœ€å¤§å€¤ setting_session_timeout: ç„¡æ“作タイムアウト label_session_expiration: セッション有効期間 permission_close_project: プロジェクトã®çµ‚了/å†é–‹ button_close: 終了 button_reopen: å†é–‹ project_status_active: 有効 project_status_closed: 終了 project_status_archived: アーカイブ text_project_closed: ã“ã®ãƒ—ロジェクトã¯çµ‚了ã—ã¦ã„ã‚‹ãŸã‚読ã¿å–り専用ã§ã™ã€‚ notice_user_successful_create: ユーザー %{id} を作æˆã—ã¾ã—ãŸã€‚ field_core_fields: 標準フィールド field_timeout: タイムアウト(ç§’å˜ä½) setting_thumbnails_enabled: 添付ファイルã®ã‚µãƒ ãƒã‚¤ãƒ«ç”»åƒã‚’表示 setting_thumbnails_size: サムãƒã‚¤ãƒ«ç”»åƒã®å¤§ãã•(ピクセルå˜ä½) label_status_transitions: ステータスã®é·ç§» label_fields_permissions: フィールドã«å¯¾ã™ã‚‹æ¨©é™ label_readonly: 読ã¿å–り専用 label_required: å¿…é ˆ text_repository_identifier_info: ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆå°æ–‡å­—(a-z)・数字・ãƒã‚¤ãƒ•ン・アンダースコアãŒä½¿ãˆã¾ã™ã€‚
    識別å­ã¯å¾Œã§å¤‰æ›´ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 field_board_parent: 親フォーラム label_attribute_of_project: プロジェクト㮠%{name} label_attribute_of_author: 作æˆè€…ã® %{name} label_attribute_of_assigned_to: 担当者㮠%{name} label_attribute_of_fixed_version: 対象ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® %{name} label_copy_subtasks: å­ãƒã‚±ãƒƒãƒˆã‚’コピー label_copied_to: コピー先 label_copied_from: コピー元 label_any_issues_in_project: 次ã®ãƒ—ロジェクト内ã®ãƒã‚±ãƒƒãƒˆ label_any_issues_not_in_project: 次ã®ãƒ—ロジェクト外ã®ãƒã‚±ãƒƒãƒˆ field_private_notes: プライベートコメント permission_view_private_notes: プライベートコメントã®é–²è¦§ permission_set_notes_private: コメントã®ãƒ—ライベート設定 label_no_issues_in_project: 次ã®ãƒ—ロジェクト内ã®ãƒã‚±ãƒƒãƒˆã‚’除ã label_any: ã™ã¹ã¦ label_last_n_weeks: ç›´è¿‘%{count}週間 setting_cross_project_subtasks: ç•°ãªã‚‹ãƒ—ロジェクトã®ãƒã‚±ãƒƒãƒˆé–“ã®è¦ªå­é–¢ä¿‚ã‚’è¨±å¯ label_cross_project_descendants: サブプロジェクトå˜ä½ label_cross_project_tree: プロジェクトツリーå˜ä½ label_cross_project_hierarchy: プロジェクト階層å˜ä½ label_cross_project_system: ã™ã¹ã¦ã®ãƒ—ロジェクト button_hide: éš ã™ setting_non_working_week_days: 休業日 label_in_the_next_days: 今後Næ—¥ label_in_the_past_days: éŽåŽ»Næ—¥ label_attribute_of_user: ユーザー㮠%{name} text_turning_multiple_off: ã“ã®è¨­å®šã‚’無効ã«ã™ã‚‹ã¨ã€è¤‡æ•°é¸æŠžã•れã¦ã„る値ã®ã†ã¡1個ã ã‘ãŒä¿æŒã•れ残りã¯é¸æŠžè§£é™¤ã•れã¾ã™ã€‚ label_attribute_of_issue: ãƒã‚±ãƒƒãƒˆã® %{name} permission_add_documents: 文書ã®è¿½åŠ  permission_edit_documents: 文書ã®ç·¨é›† permission_delete_documents: 文書ã®å‰Šé™¤ setting_jsonp_enabled: JSONPを有効ã«ã™ã‚‹ field_inherit_members: メンãƒãƒ¼ã‚’継承 field_closed_on: 終了日 field_generate_password: ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã‚’è‡ªå‹•ç”Ÿæˆ label_total_time: åˆè¨ˆ notice_account_not_activated_yet: ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒæœ‰åŠ¹åŒ–ã•れã¦ã„ã¾ã›ã‚“。アカウントを有効ã«ã™ã‚‹ãŸã‚ã®ãƒ¡ãƒ¼ãƒ«ã‚’ã‚‚ã†ä¸€åº¦å—ä¿¡ã—ãŸã„ã¨ãã¯ã“ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ãã ã•ã„。 notice_account_locked: アカウントãŒãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™ label_hidden: éžè¡¨ç¤º label_visibility_private: 自分ã®ã¿ label_visibility_roles: 次ã®ãƒ­ãƒ¼ãƒ«ã®ã¿ label_visibility_public: ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ field_must_change_passwd: 次回ログイン時ã«ãƒ‘スワード変更を強制 notice_new_password_must_be_different: æ–°ã—ã„パスワードã¯ç¾åœ¨ã®ãƒ‘スワードã¨ç•°ãªã‚‹ã‚‚ã®ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ setting_mail_handler_excluded_filenames: 除外ã™ã‚‹æ·»ä»˜ãƒ•ァイルå text_convert_available: ImageMagickã®convertコマンドãŒåˆ©ç”¨å¯èƒ½ (オプション) label_link: リンク label_only: 次ã®ã‚‚ã®ã®ã¿ label_drop_down_list: ドロップダウンリスト label_checkboxes: ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ label_link_values_to: 値ã«è¨­å®šã™ã‚‹ãƒªãƒ³ã‚¯URL setting_force_default_language_for_anonymous: 匿åユーザーã«ãƒ‡ãƒ•ォルトã®è¨€èªžã‚’強制 setting_force_default_language_for_loggedin: ログインユーザーã«ãƒ‡ãƒ•ォルトã®è¨€èªžã‚’強制 label_custom_field_select_type: カスタムフィールドを追加ã™ã‚‹ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’é¸æŠžã—ã¦ãã ã•ã„ label_issue_assigned_to_updated: æ‹…å½“è€…ã®æ›´æ–° label_check_for_updates: ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆã‚’ç¢ºèª label_latest_compatible_version: äº’æ›æ€§ã®ã‚る最新ãƒãƒ¼ã‚¸ãƒ§ãƒ³ label_unknown_plugin: 䏿˜Žãªãƒ—ラグイン label_radio_buttons: ラジオボタン label_group_anonymous: 匿åユーザー label_group_non_member: éžãƒ¡ãƒ³ãƒãƒ¼ label_add_projects: プロジェクトã®è¿½åŠ  field_default_status: デフォルトã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ text_subversion_repository_note: '例: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: 表示ã§ãるユーザー label_users_visibility_all: ã™ã¹ã¦ã®ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ label_users_visibility_members_of_visible_projects: 見るã“ã¨ãŒã§ãるプロジェクトã®ãƒ¡ãƒ³ãƒãƒ¼ label_edit_attachments: 添付ファイルã®ç·¨é›† setting_link_copied_issue: ãƒã‚±ãƒƒãƒˆã‚’コピーã—ãŸã¨ãã«é–¢é€£ã‚’設定 label_link_copied_issue: コピーã—ãŸãƒã‚±ãƒƒãƒˆã«é–¢é€£ã‚’設定 label_ask: éƒ½åº¦é¸æŠž label_search_attachments_yes: 添付ファイルã®åå‰ã¨èª¬æ˜Žã‚‚検索 label_search_attachments_no: 添付ファイルを除外 label_search_attachments_only: 添付ファイルã®ã¿æ¤œç´¢ label_search_open_issues_only: 未完了ã®ãƒã‚±ãƒƒãƒˆã®ã¿ field_address: メールアドレス setting_max_additional_emails: 追加メールアドレス数ã®ä¸Šé™ label_email_address_plural: メールアドレス label_email_address_add: メールアドレスã®è¿½åŠ  label_enable_notifications: 通知を有効ã«ã™ã‚‹ label_disable_notifications: 通知を無効ã«ã™ã‚‹ setting_search_results_per_page: ページã”ã¨ã®æ¤œç´¢çµæžœè¡¨ç¤ºä»¶æ•° label_blank_value: 空 permission_copy_issues: ãƒã‚±ãƒƒãƒˆã®ã‚³ãƒ”ー error_password_expired: ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æœ‰åŠ¹æœŸé™ãŒéŽãŽãŸã‹ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…より変更を求ã‚られã¦ã„ã¾ã™ã€‚ field_time_entries_visibility: 表示ã§ãる作業時間 setting_password_max_age: ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰ã®æœ‰åŠ¹æœŸé™ label_parent_task_attributes: 親ãƒã‚±ãƒƒãƒˆã®å€¤ã®ç®—出方法 label_parent_task_attributes_derived: å­ãƒã‚±ãƒƒãƒˆã®å€¤ã‹ã‚‰ç®—出 label_parent_task_attributes_independent: å­ãƒã‚±ãƒƒãƒˆã‹ã‚‰ç‹¬ç«‹ label_time_entries_visibility_all: ã™ã¹ã¦ã®ä½œæ¥­æ™‚é–“ label_time_entries_visibility_own: 自分ã®ä½œæ¥­æ™‚é–“ label_member_management: メンãƒãƒ¼ã®ç®¡ç† label_member_management_all_roles: ã™ã¹ã¦ã®ãƒ­ãƒ¼ãƒ« label_member_management_selected_roles_only: 次ã®ãƒ­ãƒ¼ãƒ«ã®ã¿ label_password_required: ã“ã®æ“作を続行ã™ã‚‹ã«ã¯ãƒ‘スワードを入力ã—ã¦ãã ã•ã„ label_total_spent_time: åˆè¨ˆä½œæ¥­æ™‚é–“ notice_import_finished: "%{count}ä»¶ã®ãƒ‡ãƒ¼ã‚¿ã‚’ã™ã¹ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¾ã—ãŸ" notice_import_finished_with_errors: "å…¨%{total}件中%{count}ä»¶ã®ãƒ‡ãƒ¼ã‚¿ãŒã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ" error_invalid_file_encoding: ã“ã®ãƒ•ァイルã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã¯æ­£ã—ã„%{encoding}ã§ã¯ã‚りã¾ã›ã‚“ error_invalid_csv_file_or_settings: ã“ã®ãƒ•ァイルã¯CSVファイルã§ã¯ãªã„ã‹ã€ä»¥ä¸‹ã®è¨­å®šã¨ä¸€è‡´ã—ã¦ã„ã¾ã›ã‚“ (%{value}) error_can_not_read_import_file: インãƒãƒ¼ãƒˆå…ƒã®ãƒ•ァイルを読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠permission_import_issues: ãƒã‚±ãƒƒãƒˆã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ label_import_issues: ãƒã‚±ãƒƒãƒˆã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ label_select_file_to_import: インãƒãƒ¼ãƒˆã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ label_fields_separator: 区切り文字 label_fields_wrapper: 文字列ã®å¼•用符 label_encoding: エンコーディング label_comma_char: コンマ label_semi_colon_char: セミコロン label_quote_char: シングルクォート label_double_quote_char: ダブルクォート label_fields_mapping: フィールドã®å¯¾å¿œé–¢ä¿‚ label_file_content_preview: ファイル内容ã®ãƒ—レビュー label_create_missing_values: 存在ã—ãªã„å€¤ã¯æ–°è¦ä½œæˆ button_import: インãƒãƒ¼ãƒˆ field_total_estimated_hours: åˆè¨ˆäºˆå®šå·¥æ•° label_api: API label_total_plural: åˆè¨ˆ label_assigned_issues: 担当ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆ label_field_format_enumeration: キー・ãƒãƒªãƒ¥ãƒ¼ リスト label_f_hour_short: '%{value}時間' field_default_version: デフォルトã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ error_attachment_extension_not_allowed: æ‹¡å¼µå­ãŒ %{extension} ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æ·»ä»˜ã¯ç¦æ­¢ã•れã¦ã„ã¾ã™ setting_attachment_extensions_allowed: 許å¯ã™ã‚‹æ‹¡å¼µå­ setting_attachment_extensions_denied: ç¦æ­¢ã™ã‚‹æ‹¡å¼µå­ label_any_open_issues: 未完了ã®ãƒã‚±ãƒƒãƒˆ label_no_open_issues: ãªã— ã¾ãŸã¯å®Œäº†ã—ãŸãƒã‚±ãƒƒãƒˆ label_default_values_for_new_users: æ–°ã—ã„ユーザーã®ãƒ‡ãƒ•ォルト設定 error_ldap_bind_credentials: LDAPアカウント/パスワードãŒç„¡åйã§ã™ setting_sys_api_key: APIキー setting_lost_password: パスワードå†è¨­å®šæ©Ÿèƒ½ã®ä½¿ç”¨ã‚’è¨±å¯ mail_subject_security_notification: セキュリティ通知 mail_body_security_notification_change: ! '%{field} ãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚' mail_body_security_notification_change_to: ! '%{field} ㌠%{value} ã«å¤‰æ›´ã•れã¾ã—ãŸã€‚' mail_body_security_notification_add: ! '%{field} ã« %{value} ãŒè¿½åŠ ã•れã¾ã—ãŸã€‚' mail_body_security_notification_remove: ! '%{field} ã‹ã‚‰ %{value} ãŒå‰Šé™¤ã•れã¾ã—ãŸã€‚' mail_body_security_notification_notify_enabled: メールアドレス %{value} ã«ä»Šå¾Œã®é€šçŸ¥ãŒé€ä¿¡ã•れã¾ã™ã€‚ mail_body_security_notification_notify_disabled: メールアドレス %{value} ã«ã¯ä»Šå¾Œã¯é€šçŸ¥ãŒé€ä¿¡ã•れã¾ã›ã‚“。 mail_body_settings_updated: ! '下記ã®è¨­å®šãŒå¤‰æ›´ã•れã¾ã—ãŸ:' field_remote_ip: IPアドレス label_wiki_page_new: æ–°ã—ã„Wikiページ label_relations: 関係 button_filter: フィルタ mail_body_password_updated: パスワードãŒå¤‰æ›´ã•れã¾ã—ãŸã€‚ label_no_preview: ã“ã®ãƒ•ァイルã¯ãƒ—レビューã§ãã¾ã›ã‚“ error_no_tracker_allowed_for_new_issue_in_project: ã“ã®ãƒ—ロジェクトã«ã¯ãƒã‚±ãƒƒãƒˆã®è¿½åŠ ãŒè¨±å¯ã•れã¦ã„るトラッカーãŒã‚りã¾ã›ã‚“ label_tracker_all: ã™ã¹ã¦ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ label_new_project_issue_tab_enabled: '"æ–°ã—ã„ãƒã‚±ãƒƒãƒˆ" タブを表示' setting_new_item_menu_tab: æ–°è¦ã‚ªãƒ–ジェクト作æˆã‚¿ãƒ– label_new_object_tab_enabled: '"+" ドロップダウンを表示' error_no_projects_with_tracker_allowed_for_new_issue: ãƒã‚±ãƒƒãƒˆã‚’追加ã§ãるプロジェクトãŒã‚りã¾ã›ã‚“ field_textarea_font: テキストエリアã®ãƒ•ォント label_font_default: デフォルト label_font_monospace: 等幅 label_font_proportional: プロãƒãƒ¼ã‚·ãƒ§ãƒŠãƒ« setting_timespan_format: 時間ã®å½¢å¼ label_table_of_contents: 目次 setting_commit_logs_formatting: コミットメッセージã«ãƒ†ã‚­ã‚¹ãƒˆæ›¸å¼ã‚’é©ç”¨ setting_mail_handler_enable_regex: æ­£è¦è¡¨ç¾ã‚’使用 error_move_of_child_not_possible: 'å­ãƒã‚±ãƒƒãƒˆ %{child} を指定ã•れãŸãƒ—ロジェクトã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸ: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: 削除対象ãƒã‚±ãƒƒãƒˆã¸ã®ä½œæ¥­æ™‚é–“ã®å†å‰²ã‚Šå½“ã¦ã¯ã§ãã¾ã›ã‚“ setting_timelog_required_fields: 作業時間ã®å¿…須入力フィールド label_attribute_of_object: '%{object_name}ã® %{name}' warning_fields_cleared_on_bulk_edit: ã“ã®ç·¨é›†æ“作ã«ã‚ˆã‚Šæ¬¡ã®ãƒ•ィールドã®å€¤ãŒãƒã‚±ãƒƒãƒˆã‹ã‚‰å‰Šé™¤ã•れã¾ã™ field_updated_by: 更新者 field_last_updated_by: 最終更新者 field_full_width_layout: ワイド表示 label_last_notes: 最新ã®ã‚³ãƒ¡ãƒ³ãƒˆ field_digest: ãƒã‚§ãƒƒã‚¯ã‚µãƒ  field_default_assigned_to: ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®æ‹…当者 setting_show_custom_fields_on_registration: アカウント登録画é¢ã§ã‚«ã‚¹ã‚¿ãƒ ãƒ•ィールドを表示 label_no_preview_alternative_html: ã“ã®ãƒ•ァイルã¯ãƒ—レビューã§ãã¾ã›ã‚“。 %{link} ã—ã¦ãã ã•ã„。 label_no_preview_download: ダウンロード setting_close_duplicate_issues: é‡è¤‡ã—ã¦ã„ã‚‹ãƒã‚±ãƒƒãƒˆã‚’連動ã—ã¦çµ‚了 error_exceeds_maximum_hours_per_day: 作業時間ã¯1日・1人ã‚ãŸã‚Š%{max_hours}時間を超ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ (ã™ã§ã«%{logged_hours}時間記録済ã¿) setting_time_entry_list_defaults: 作業時間ã®ä¸€è¦§ã§è¡¨ç¤ºã™ã‚‹é …ç›® setting_timelog_accept_0_hours: 作業時間ã«0時間ã®å…¥åŠ›ã‚’è¨±å¯ setting_timelog_max_hours_per_day: 1日・1人ã‚ãŸã‚Šã®ä½œæ¥­æ™‚é–“ã®ä¸Šé™ label_x_revisions: "%{count}ä»¶ã®å±¥æ­´" error_can_not_delete_auth_source: ã“ã®èªè¨¼æ–¹å¼ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚削除ã§ãã¾ã›ã‚“。 button_actions: æ“作 text_login_required_html: èªè¨¼ã‚’å¿…é ˆã¨ã—ãªã„å ´åˆã€å…¬é–‹ãƒ—ロジェクトã¨ãã®ä¸­ã®æƒ…å ±ã«ã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã®èª°ã‚‚ãŒã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚匿åãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ¨©é™ã‚’編集ã§ãã¾ã™ã€‚ label_login_required_yes: 'ã¯ã„' label_login_required_no: ã„ã„㈠(匿åユーザーã«å…¬é–‹ãƒ—ロジェクトã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯) text_project_is_public_non_member: 公開プロジェクトã¨ãã®ä¸­ã®æƒ…å ±ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³æ¸ˆã¿ã®å…¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ text_project_is_public_anonymous: 公開プロジェクトã¨ãã®ä¸­ã®æƒ…å ±ã«ã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã®å…¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ label_version_and_files: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ (%{count}) ã¨ãƒ•ァイル label_ldap: LDAP label_ldaps_verify_none: LDAPS (è¨¼æ˜Žæ›¸ã®æ¤œè¨¼ãªã—) label_ldaps_verify_peer: LDAPS label_ldaps_warning: èªè¨¼å‡¦ç†ä¸­ã®ç›—è´ã‚„改ã–ã‚“ãªã©ã®æ”»æ’ƒã‚’防ããŸã‚ã«ã€æš—å·åŒ–ã•れãŸLDAPSã«ã‚ˆã‚‹é€šä¿¡ (è¨¼æ˜Žæ›¸ã®æ¤œè¨¼ã‚り) ã®ä½¿ç”¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ label_nothing_to_preview: プレビューã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“ error_token_expired: パスワードå†ç™ºè¡Œç”¨ã®ãƒªãƒ³ã‚¯ã¯ã™ã§ã«å¤±åйã—ã¦ã„ã¾ã™ã€‚ã‚‚ã†ä¸€åº¦ã‚„り直ã—ã¦ãã ã•ã„。 error_spent_on_future_date: æœªæ¥æ—¥ä»˜ã®ä½œæ¥­æ™‚é–“ã¯å…¥åŠ›ã§ãã¾ã›ã‚“ setting_timelog_accept_future_dates: æœªæ¥æ—¥ä»˜ã®ä½œæ¥­æ™‚é–“ã®å…¥åŠ›ã‚’è¨±å¯ label_delete_link_to_subtask: 関連ã®å‰Šé™¤ error_not_allowed_to_log_time_for_other_users: ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ä½œæ¥­æ™‚間を入力ã™ã‚‹æ¨©é™ãŒã‚りã¾ã›ã‚“ permission_log_time_for_other_users: ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ä½œæ¥­æ™‚é–“ã®å…¥åŠ› text_role_no_workflow: ã“ã®ãƒ­ãƒ¼ãƒ«ã«ãƒ¯ãƒ¼ã‚¯ãƒ•ローãŒå®šç¾©ã•れã¦ã„ã¾ã›ã‚“ text_status_no_workflow: ã“ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã©ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã®ãƒ¯ãƒ¼ã‚¯ãƒ•ローã§ã‚‚使ã‚れã¦ã„ã¾ã›ã‚“ setting_mail_handler_preferred_body_part: マルãƒãƒ‘ート (HTML) メールã®å„ªå…ˆãƒ‘ート setting_show_status_changes_in_mail_subject: 通知メールã®é¡Œåã«ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹å¤‰æ›´ã®æƒ…報を挿入 label_inherited_from_parent_project: 親プロジェクトã‹ã‚‰ç¶™æ‰¿ label_inherited_from_group: グループ %{name} ã‹ã‚‰ç¶™æ‰¿ label_trackers_description: トラッカーã®èª¬æ˜Ž label_open_trackers_description: ã™ã¹ã¦ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã®èª¬æ˜Žã‚’表示 label_preferred_body_part_text: テキスト label_preferred_body_part_html: HTML field_parent_issue_subject: 親ãƒã‚±ãƒƒãƒˆã®é¡Œå permission_edit_own_issues: 自分ãŒè¿½åŠ ã—ãŸãƒã‚±ãƒƒãƒˆã®ç·¨é›† text_select_apply_tracker: ã“ã®ãƒˆãƒ©ãƒƒã‚«ãƒ¼ã‚’é©ç”¨ label_updated_issues: æ›´æ–°ã—ãŸãƒã‚±ãƒƒãƒˆ text_avatar_server_config_html: ç¾åœ¨ã®ã‚¢ãƒã‚¿ãƒ¼ã‚µãƒ¼ãƒãƒ¼ã¯ %{url} ã§ã™ã€‚サーãƒãƒ¼ã¯ config/configuration.yml ã§å¤‰æ›´ã§ãã¾ã™ã€‚ setting_gantt_months_limit: ガントãƒãƒ£ãƒ¼ãƒˆæœ€å¤§è¡¨ç¤ºæœˆæ•° permission_import_time_entries: 作業時間ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ label_import_notifications: インãƒãƒ¼ãƒˆä¸­ã®ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ text_gs_available: ImageMagickã®PDFサãƒãƒ¼ãƒˆãŒåˆ©ç”¨å¯èƒ½ (オプション) field_recently_used_projects: 最近使用ã—ãŸãƒ—ロジェクトã®è¡¨ç¤ºä»¶æ•° label_optgroup_bookmarks: ブックマーク label_optgroup_recents: 最近使用ã—ãŸã‚‚ã® button_project_bookmark: ブックマークã«è¿½åŠ  button_project_bookmark_delete: ブックマークã‹ã‚‰å‰Šé™¤ field_history_default_tab: ãƒã‚±ãƒƒãƒˆã®å±¥æ­´ã®ãƒ‡ãƒ•ォルトタブ label_issue_history_properties: プロパティ更新履歴 label_issue_history_notes: コメント label_last_tab_visited: 最後ã«é–‹ã„ãŸã‚¿ãƒ– field_unique_id: Unique ID text_no_subject: 題åãªã— setting_password_required_char_classes: パスワードã®å¿…須文字種別 label_password_char_class_uppercase: 大文字 label_password_char_class_lowercase: å°æ–‡å­— label_password_char_class_digits: æ•°å­— label_password_char_class_special_chars: è¨˜å· text_characters_must_contain: "%{character_classes}ã‚’å«ã‚€å¿…è¦ãŒã‚りã¾ã™ã€‚" label_starts_with: 剿–¹ä¸€è‡´ label_ends_with: 後方一致 label_issue_fixed_version_updated: 対象ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®æ›´æ–° setting_project_list_defaults: プロジェクトã®ä¸€è¦§ã§è¡¨ç¤ºã™ã‚‹é …ç›® label_display_type: è¡¨ç¤ºå½¢å¼ label_display_type_list: リスト label_display_type_board: ボード label_my_bookmarks: My bookmarks label_import_time_entries: 作業時間ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ field_toolbar_language_options: ツールãƒãƒ¼ã®ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ©ã‚¤ãƒˆãƒœã‚¿ãƒ³ã§ä½¿ç”¨ã™ã‚‹è¨€èªž label_user_mail_notify_about_high_priority_issues_html: 優先度㌠%{prio} 以上ã®ãƒã‚±ãƒƒãƒˆã«ã¤ã„ã¦ã‚‚通知 label_assign_to_me: 自分ã«å‰²ã‚Šå½“㦠notice_issue_not_closable_by_open_tasks: 未完了ã®å­ãƒã‚±ãƒƒãƒˆãŒã‚ã‚‹ãŸã‚ã“ã®ãƒã‚±ãƒƒãƒˆã¯å®Œäº†ã«ã§ãã¾ã›ã‚“。 notice_issue_not_closable_by_blocking_issue: 未完了ã®ãƒ–ロック元ãƒã‚±ãƒƒãƒˆãŒã‚ã‚‹ãŸã‚ã“ã®ãƒã‚±ãƒƒãƒˆã¯å®Œäº†ã«ã§ãã¾ã›ã‚“。 notice_issue_not_reopenable_by_closed_parent_issue: 親ãƒã‚±ãƒƒãƒˆãŒå®Œäº†ã—ã¦ã„ã‚‹ãŸã‚ã“ã®ãƒã‚±ãƒƒãƒˆã¯æœªå®Œäº†ã«æˆ»ã›ã¾ã›ã‚“。 error_bulk_download_size_too_big: ã“ã‚Œã‚‰ã®æ·»ä»˜ãƒ•ァイルã¯ä¸€æ‹¬ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã›ã‚“。ファイルサイズã®åˆè¨ˆãŒä¸Šé™(%{max_size})ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ setting_bulk_download_max_size: 一括ダウンロードã®åˆè¨ˆãƒ•ァイルサイズã®ä¸Šé™ label_download_all_attachments: 一括ダウンロード error_attachments_too_many: ã“ã®ãƒ•ァイルã¯ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“ã€‚åŒæ™‚ã«ã‚¢ãƒƒãƒ—ロードã§ãるファイル数ã®ä¸Šé™(%{max_number_of_files})ã‚’è¶…ãˆã¦ã„ã¾ã™ã€‚ setting_email_domains_allowed: 許å¯ã™ã‚‹ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ setting_email_domains_denied: ç¦æ­¢ã™ã‚‹ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ field_passwd_changed_on: パスワード更新日 label_relations_mapping: 関連ã®å¯¾å¿œé–¢ä¿‚ label_import_users: ユーザーã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ setting_twofa: 二è¦ç´ èªè¨¼ label_optional: ä»»æ„ label_required_lower: å¿…é ˆ button_disable: 無効化 twofa__totp__name: èªè¨¼ã‚¢ãƒ—リ twofa__totp__text_pairing_info_html: TOTPアプリ (Googleèªè¨¼ã‚·ã‚¹ãƒ†ãƒ , Authy, Duo Mobile ãªã©) ã§QRコードを読ã¿å–ã‚‹ã‹ãƒ†ã‚­ã‚¹ãƒˆã‚­ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„。ãã®å¾Œã€ã‚¢ãƒ—リã«è¡¨ç¤ºã•れã¦ã„るコードをã“ã®ä¸‹ã®å…¥åŠ›æ¬„ã«å…¥åŠ›ã—ã¦äºŒè¦ç´ èªè¨¼ã‚’有効ã«ã—ã¦ãã ã•ã„。 twofa__totp__label_plain_text_key: テキストキー twofa__totp__label_activate: 二è¦ç´ èªè¨¼ã‚’有効ã«ã™ã‚‹ twofa_currently_active: '有効 (æ–¹å¼: %{twofa_scheme_name})' twofa_not_active: 無効 twofa_label_code: コード twofa_hint_disabled_html: %{label} ã«è¨­å®šã™ã‚‹ã¨å…¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®äºŒè¦ç´ èªè¨¼ã‚’無効ã«ã—èªè¨¼ãƒ‡ãƒã‚¤ã‚¹ã®é–¢é€£ã¥ã‘も解除ã—ã¾ã™ã€‚ twofa_hint_required_html: %{label} ã«è¨­å®šã™ã‚‹ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—二è¦ç´ èªè¨¼ã®æœ‰åŠ¹åŒ–ã‚’æ¬¡å›žãƒ­ã‚°ã‚¤ãƒ³æ™‚ã«è¦æ±‚ã—ã¾ã™ã€‚ twofa_label_setup: 二è¦ç´ èªè¨¼ã®æœ‰åŠ¹åŒ– twofa_label_deactivation_confirmation: 二è¦ç´ èªè¨¼ã®ç„¡åŠ¹åŒ– twofa_notice_select: 'ã©ã®æ–¹å¼ã§äºŒè¦ç´ èªè¨¼ã‚’行ã†ã‹é¸æŠžã—ã¦ãã ã•ã„:' twofa_warning_require: システム管ç†è€…ãŒäºŒè¦ç´ èªè¨¼ã‚’有効ã«ã™ã‚‹ã“ã¨ã‚’求ã‚ã¦ã„ã¾ã™ã€‚ twofa_activated: 二è¦ç´ èªè¨¼ãŒæœ‰åйã«ãªã‚Šã¾ã—ãŸã€‚ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç”¨ã® ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã®ç”Ÿæˆ ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ twofa_deactivated: 二è¦ç´ èªè¨¼ãŒç„¡åйã«ãªã‚Šã¾ã—ãŸã€‚ twofa_mail_body_security_notification_paired: "%{field}ã«ã‚ˆã‚‹äºŒè¦ç´ èªè¨¼ãŒæœ‰åйã«ãªã‚Šã¾ã—ãŸã€‚" twofa_mail_body_security_notification_unpaired: ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®äºŒè¦ç´ èªè¨¼ãŒç„¡åйã«ãªã‚Šã¾ã—ãŸã€‚ twofa_mail_body_backup_codes_generated: 二è¦ç´ èªè¨¼ã®æ–°ã—ã„ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードãŒç”Ÿæˆã•れã¾ã—ãŸã€‚ twofa_mail_body_backup_code_used: 二è¦ç´ èªè¨¼ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードãŒä½¿ç”¨ã•れã¾ã—ãŸã€‚ twofa_invalid_code: èªè¨¼ã‚³ãƒ¼ãƒ‰ãŒç„¡åйã¾ãŸã¯æœŸé™åˆ‡ã‚Œã§ã™ã€‚ twofa_label_enter_otp: 二è¦ç´ èªè¨¼ã®èªè¨¼ã‚³ãƒ¼ãƒ‰ã‚’入力ã—ã¦ãã ã•ã„。 twofa_too_many_tries: 試行回数ãŒå¤šã™ãŽã¾ã™ã€‚ twofa_resend_code: èªè¨¼ã‚³ãƒ¼ãƒ‰ã®å†é€ä¿¡ twofa_code_sent: èªè¨¼ã‚³ãƒ¼ãƒ‰ã‚’é€ä¿¡ã—ã¾ã—ãŸã€‚ twofa_generate_backup_codes: ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã®ç”Ÿæˆ twofa_text_generate_backup_codes_confirmation: ã“ã®æ“ä½œã¯æ—¢å­˜ã®ã™ã¹ã¦ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードを無効化ã—ã¦æ–°ã—ã生æˆã—ã¾ã™ã€‚続行ã—ã¾ã™ã‹? twofa_notice_backup_codes_generated: ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードを生æˆã—ã¾ã—ãŸã€‚ twofa_warning_backup_codes_generated_invalidated: æ–°ã—ã„ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードを生æˆã—ã¾ã—ãŸã€‚%{time} ã«ç”Ÿæˆã—ãŸãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã¯ç„¡åйã«ãªã‚Šã¾ã—ãŸã€‚ twofa_label_backup_codes: 二è¦ç´ èªè¨¼ã®ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コード twofa_text_backup_codes_hint: 二è¦ç´ èªè¨¼ã‚¢ãƒ—リãŒåˆ©ç”¨ã§ããªã„ã¨ãã¯ä»¥ä¸‹ã®ã‚³ãƒ¼ãƒ‰ã‚’èªè¨¼ã‚³ãƒ¼ãƒ‰ã®ä»£ã‚りã«ä½¿ç”¨ã—ã¦ãã ã•ã„。ãれãžã‚Œã®ã‚³ãƒ¼ãƒ‰ã¯1回ã ã‘使用ã§ãã¾ã™ã€‚ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã¯å°åˆ·ã—ã¦å®‰å…¨ãªå ´æ‰€ã«ä¿ç®¡ã—ã¦ãŠãã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã€‚ twofa_text_backup_codes_created_at: "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚³ãƒ¼ãƒ‰ç”Ÿæˆæ—¥æ™‚: %{datetime}" twofa_backup_codes_already_shown: ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã®å†è¡¨ç¤ºã¯ã§ãã¾ã›ã‚“。必è¦ãŒã‚ã‚Œã°æ–°ã—ã„ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—コードã®ç”Ÿæˆã‚’行ã£ã¦ãã ã•ã„。 error_can_not_execute_macro_html: マクロ %{name} ã®å®Ÿè¡Œä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠(%{error}) error_macro_does_not_accept_block: ã“ã®ãƒžã‚¯ãƒ­ã«ã¯ãƒ†ã‚­ã‚¹ãƒˆãƒ–ロックを渡ã›ã¾ã›ã‚“ error_childpages_macro_no_argument: Wikiページ以外ã‹ã‚‰å‘¼ã³å‡ºã™å ´åˆã¯å¼•æ•°ãŒå¿…è¦ã§ã™ error_circular_inclusion: 挿入対象ページã®å¾ªç’°å‚ç…§ error_page_not_found: ページãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ error_filename_required: ファイルåãŒå¿…è¦ã§ã™ error_invalid_size_parameter: sizeパラメータãŒç„¡åйã§ã™ error_attachment_not_found: 添付ファイル %{name} ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ permission_delete_project: プロジェクトã®å‰Šé™¤ text_user_destroy_confirmation: 本当ã«ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ã™ã¹ã¦ã®å‚照を削除ã—ã¾ã™ã‹? 削除後ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。通常ã¯å‰Šé™¤ã‚ˆã‚Šãƒ­ãƒƒã‚¯ã®ã»ã†ãŒé©åˆ‡ã§ã™ã€‚削除ã™ã‚‹å ´åˆã¯ç¢ºèªã®ãŸã‚ログインID (%{login}) を入力ã—ã¦ãã ã•ã„。 text_project_destroy_enter_identifier: 確èªã®ãŸã‚ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆè­˜åˆ¥å­ (%{identifier}) を入力ã—ã¦ãã ã•ã„。 button_add_subtask: å­ãƒã‚±ãƒƒãƒˆã‚’追加 notice_invalid_watcher: '無効ãªã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼: ã“ã®ã‚ªãƒ–ジェクトを表示ã§ããªã„ユーザーã§ã™ã®ã§é€šçŸ¥ã¯è¡Œã‚れã¾ã›ã‚“。' button_fetch_changesets: コミットをå–å¾— permission_view_message_watchers: メッセージã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ä¸€è¦§ã®é–²è¦§ permission_add_message_watchers: メッセージã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã®è¿½åŠ  permission_delete_message_watchers: メッセージã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã®å‰Šé™¤ label_message_watchers: ウォッãƒãƒ£ãƒ¼ button_copy_link: リンクをコピー error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: Wikiページã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ä¸€è¦§ã®é–²è¦§ permission_add_wiki_page_watchers: Wikiページã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã®è¿½åŠ  permission_delete_wiki_page_watchers: Wikiページã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã®å‰Šé™¤ label_wiki_page_watchers: ウォッãƒãƒ£ãƒ¼ label_attachment_description: ファイルã®èª¬æ˜Ž error_no_data_in_file: ファイルã«ãƒ‡ãƒ¼ã‚¿ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“ field_twofa_required: 二è¦ç´ èªè¨¼å¿…é ˆ twofa_hint_optional_html: %{label} ã«è¨­å®šã™ã‚‹ã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å¿…è¦ã«å¿œã˜ã¦äºŒè¦ç´ èªè¨¼ã‚’有効化ã§ãã¾ã™ (所属ã™ã‚‹ã„ãšã‚Œã‹ã®ã‚°ãƒ«ãƒ¼ãƒ—ã§äºŒè¦ç´ èªè¨¼å¿…é ˆã«è¨­å®šã•れã¦ã„ã‚‹å ´åˆã‚’除ã)。 twofa_text_group_required: ã“ã®è¨­å®šã¯äºŒè¦ç´ èªè¨¼ (管ç†â†’設定→èªè¨¼) ㌠'ä»»æ„' ã«è¨­å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚ç¾åœ¨ã¯äºŒè¦ç´ èªè¨¼ã¯ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦å¿…é ˆã«è¨­å®šã•れã¦ã„ã¾ã™ã€‚ twofa_text_group_disabled: ã“ã®è¨­å®šã¯äºŒè¦ç´ èªè¨¼ (管ç†â†’設定→èªè¨¼) ㌠'ä»»æ„' ã«è¨­å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚ç¾åœ¨ã¯äºŒè¦ç´ èªè¨¼ã¯ç„¡åйã§ã™ã€‚ field_default_issue_query: デフォルトã®ã‚¯ã‚¨ãƒª label_default_queries: for_all_projects: 全プロジェクトå‘ã‘ for_current_project: ç¾åœ¨ã®ãƒ—ロジェクト for_all_users: 全ユーザーå‘ã‘ for_this_user: For this user text_allowed_queries_to_select: 公開クエリ (ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè¡¨ç¤ºã§ãるクエリ) ã®ã¿é¸æŠžã§ãã¾ã™ text_all_migrations_have_been_run: ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒžã‚¤ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãŒå®Ÿè¡Œæ¸ˆ text_setting_config_change: 動作ã¯config/configuration.ymlã§è¨­å®šã§ãã¾ã™ã€‚設定後ã€Redmineã‚’å†èµ·å‹•ã—ã¦ãã ã•ã„。 button_create_and_follow: 作æˆå¾Œè¡¨ç¤º label_subtask: å­ãƒã‚±ãƒƒãƒˆ label_default_query: デフォルトã®ã‚¯ã‚¨ãƒª field_default_project_query: デフォルトã®ãƒ—ロジェクトクエリ label_required_administrators: システム管ç†è€…ã®ã¿å¿…é ˆ twofa_hint_required_administrators_html: %{label} ã«è¨­å®šã™ã‚‹ã¨ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã§ã‚るユーザーã«å¯¾ã—二è¦ç´ èªè¨¼ã®æœ‰åŠ¹åŒ–ã‚’æ¬¡å›žãƒ­ã‚°ã‚¤ãƒ³æ™‚ã«è¦æ±‚ã—ã¾ã™ã€‚ãã®ã»ã‹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«å¯¾ã—ã¦ã¯ ä»»æ„ ã«è¨­å®šã—ãŸå ´åˆã¨åŒã˜å‹•作ã§ã™ã€‚ label_auto_watch_on: オートウォッムlabel_auto_watch_on_issue_contributed_to: è‡ªåˆ†ãŒæ›´æ–°ã—ãŸãƒã‚±ãƒƒãƒˆ text_project_close_confirmation: 本当ã«ãƒ—ロジェクト '%{value}' を終了ã—ã¦èª­ã¿å–り専用ã«ã—ã¾ã™ã‹? text_project_reopen_confirmation: 本当ã«ãƒ—ロジェクト '%{value}' ã‚’å†é–‹ã—ã¾ã™ã‹? text_project_archive_confirmation: 本当ã«ãƒ—ロジェクト '%{value}' をアーカイブã—ã¾ã™ã‹? mail_destroy_project_failed: プロジェクト %{value} ã¯å‰Šé™¤ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ mail_destroy_project_successful: プロジェクト %{value} を削除ã—ã¾ã—ãŸã€‚ mail_destroy_project_with_subprojects_successful: Project %{value} ã¨ã‚µãƒ–プロジェクトを削除ã—ã¾ã—ãŸã€‚ project_status_scheduled_for_deletion: 削除処ç†å¾…ã¡ text_projects_bulk_destroy_confirmation: 本当ã«é¸æŠžã—ãŸãƒ—ロジェクトã¨é–¢é€£ãƒ‡ãƒ¼ã‚¿ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ text_projects_bulk_destroy_head: | 以下ã®ãƒ—ロジェクト(ãれらã®ã‚µãƒ–プロジェクトã¨é–¢é€£ãƒ‡ãƒ¼ã‚¿ã‚‚å«ã‚€ï¼‰ã‚’æ’ä¹…çš„ã«å‰Šé™¤ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚ ä»¥ä¸‹ã®æƒ…報を確èªã—ã€æœ¬å½“ã«ã“ã®æ“作を行ã†ã®ã‹ç¢ºèªã—ã¦ãã ã•ã„。 ã“ã®æ“作ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。 text_projects_bulk_destroy_confirm: 削除ã™ã‚‹å ´åˆã¯ç¢ºèªã®ãŸã‚ "%{yes}" ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。 text_subprojects_bulk_destroy: '次ã®ã‚µãƒ–プロジェクトをå«ã‚€: %{value}' field_current_password: ç¾åœ¨ã®ãƒ‘スワード sudo_mode_new_info_html: "アカウントã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã®ç¶­æŒã®ãŸã‚ã€ç®¡ç†æ“作を行ã†å‰ã«ãƒ‘スワードã®å†ç¢ºèªãŒå¿…è¦ã§ã™ã€‚" label_edited: 編集済㿠label_time_by_author: "%{time} %{author}" field_default_time_entry_activity: 時間管ç†ã«ãŠã‘るデフォルトã®ä½œæ¥­åˆ†é¡ž field_is_member_of_group: グループ text_users_bulk_destroy_head: 以下ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã“れらã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¸ã®ã™ã¹ã¦ã®å‚照を削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚削除後ã¯å…ƒã«æˆ»ã›ã¾ã›ã‚“。通常ã¯å‰Šé™¤ã‚ˆã‚Šãƒ­ãƒƒã‚¯ã®ã»ã†ãŒé©åˆ‡ã§ã™ã€‚ text_users_bulk_destroy_confirm: 削除ã™ã‚‹å ´åˆã¯ç¢ºèªã®ãŸã‚ "%{yes}" ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。 permission_select_project_publicity: プロジェクトã®å…¬é–‹/éžå…¬é–‹ label_auto_watch_on_issue_created: 自分ãŒä½œæˆã—ãŸãƒã‚±ãƒƒãƒˆ field_any_searchable: 全検索対象テキスト label_contains_any_of: ã„ãšã‚Œã‹ã‚’å«ã‚€ button_apply_issues_filter: ãƒã‚±ãƒƒãƒˆã®ãƒ•ィルタをé©ç”¨ label_view_previous_annotation: ã“ã®æ›´æ–°ä»¥å‰ã®ã‚¢ãƒŽãƒ†ãƒ¼ãƒˆ label_has_been: ç¾åœ¨/éŽåŽ»ã®å€¤ label_has_never_been: 一度もãªã„ label_changed_from: éŽåŽ»ã®å€¤ label_issue_statuses_description: ステータスã®èª¬æ˜Ž label_open_issue_statuses_description: ã™ã¹ã¦ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã®èª¬æ˜Žã‚’表示 text_select_apply_issue_status: ã“ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’é©ç”¨ field_name_or_email_or_login: å§“å・メールアドレス・ログインID text_default_active_job_queue_changed: キューアダプターãŒãƒ‡ãƒ•ォルト (開発・テスト用) 以外ã®ã‚‚ã®ã«å¤‰æ›´æ¸ˆã¿ label_option_auto_lang: 自動設定 label_issue_attachment_added: 添付ファイルã®è¿½åŠ  field_estimated_remaining_hours: 残工数 field_last_activity_date: 最終活動日 setting_issue_done_ratio_interval: 進æ—率ã®é¸æŠžè‚¢ã®é–“éš” setting_copy_attachments_on_issue_copy: ãƒã‚±ãƒƒãƒˆã‚’コピーã™ã‚‹ã¨ã添付ファイルもコピー field_thousands_delimiter: 3æ¡åŒºåˆ‡ã‚Šè¡¨ç¤º label_involved_principals: 作æˆè€… / ç›´å‰æ‹…当者 label_attachment_summary: zero: "%{filename}" other: "%{filename} ã»ã‹%{count}ä»¶" redmine-6.0.5/config/locales/ko.yml000066400000000000000000002256071500112024600171730ustar00rootroot00000000000000# Korean translations for Ruby on Rails ko: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y/%m/%d" short: "%m/%d" long: "%Yë…„ %mì›” %dì¼ (%a)" day_names: [ì¼ìš”ì¼, 월요ì¼, 화요ì¼, 수요ì¼, 목요ì¼, 금요ì¼, 토요ì¼] abbr_day_names: [ì¼, ì›”, í™”, 수, 목, 금, 토] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 1ì›”, 2ì›”, 3ì›”, 4ì›”, 5ì›”, 6ì›”, 7ì›”, 8ì›”, 9ì›”, 10ì›”, 11ì›”, 12ì›”] abbr_month_names: [~, 1ì›”, 2ì›”, 3ì›”, 4ì›”, 5ì›”, 6ì›”, 7ì›”, 8ì›”, 9ì›”, 10ì›”, 11ì›”, 12ì›”] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%Y/%m/%d %H:%M:%S" time: "%H:%M" short: "%y/%m/%d %H:%M" long: "%Yë…„ %Bì›” %dì¼, %H시 %Më¶„ %Sì´ˆ %Z" am: "오전" pm: "오후" datetime: distance_in_words: half_a_minute: "30ì´ˆ" less_than_x_seconds: one: "ì¼ì´ˆ ì´í•˜" other: "%{count}ì´ˆ ì´í•˜" x_seconds: one: "ì¼ì´ˆ" other: "%{count}ì´ˆ" less_than_x_minutes: one: "ì¼ë¶„ ì´í•˜" other: "%{count}ë¶„ ì´í•˜" x_minutes: one: "ì¼ë¶„" other: "%{count}ë¶„" about_x_hours: one: "약 한시간" other: "약 %{count}시간" x_hours: one: "1 시간" other: "%{count} 시간" x_days: one: "하루" other: "%{count}ì¼" about_x_months: one: "약 한달" other: "약 %{count}달" x_months: one: "한달" other: "%{count}달" about_x_years: one: "약 ì¼ë…„" other: "약 %{count}ë…„" over_x_years: one: "ì¼ë…„ ì´ìƒ" other: "%{count}ë…„ ì´ìƒ" almost_x_years: one: "약 1ë…„" other: "약 %{count}ë…„" prompts: year: "ë…„" month: "ì›”" day: "ì¼" hour: "시" minute: "ë¶„" second: "ì´ˆ" number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) separator: "." # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) delimiter: "," # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) precision: 3 # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) format: "%u%n" unit: "â‚©" # These three are to override number.format and are optional separator: "." delimiter: "," precision: 0 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: words_connector: ", " two_words_connector: "ê³¼ " last_word_connector: ", " sentence_connector: "그리고" skip_last_comma: false activerecord: errors: template: header: one: "í•œê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." other: "%{count}ê°œì˜ ì˜¤ë¥˜ê°€ ë°œìƒí•´ %{model}ì„(를) 저장하지 않았습니다." # The variable :count is also available body: "ë‹¤ìŒ í•­ëª©ì— ë¬¸ì œê°€ 발견했습니다:" messages: inclusion: "ì€ ëª©ë¡ì— í¬í•¨ë˜ì–´ 있지 않습니다" exclusion: "ì€ ì˜ˆì•½ë˜ì–´ 있습니다" invalid: "ì€ ìœ íš¨í•˜ì§€ 않습니다." confirmation: "ì€ í™•ì¸ì´ ë˜ì§€ 않았습니다" accepted: "ì€ ì¸ì •ë˜ì–´ì•¼ 합니다" empty: "ì€ ê¸¸ì´ê°€ 0ì´ì–´ì„œëŠ” 안ë©ë‹ˆë‹¤." blank: "ì€ ë¹ˆ ê°’ì´ì–´ì„œëŠ” 안 ë©ë‹ˆë‹¤" too_long: "ì€ ë„ˆë¬´ ê¹ë‹ˆë‹¤ (최대 %{count}ìž ê¹Œì§€)" too_short: "ì€ ë„ˆë¬´ 짧습니다 (최소 %{count}ìž ê¹Œì§€)" wrong_length: "ì€ ê¸¸ì´ê°€ 틀렸습니다 (%{count}ìžì´ì–´ì•¼ 합니다.)" taken: "ì€ ì´ë¯¸ ì„ íƒëœ ê²ë‹ˆë‹¤" not_a_number: "ì€ ìˆ«ìžê°€ 아닙니다" greater_than: "ì€ %{count}보다 커야 합니다." greater_than_or_equal_to: "ì€ %{count}보다 í¬ê±°ë‚˜ 같아야 합니다" equal_to: "ì€ %{count}(와)ê³¼ 같아야 합니다" less_than: "ì€ %{count}보다 작어야 합니다" less_than_or_equal_to: "ì€ %{count}ê³¼ 같거나 ì´í•˜ì„ 요구합니다" odd: "ì€ í™€ìˆ˜ì—¬ì•¼ 합니다" even: "ì€ ì§ìˆ˜ì—¬ì•¼ 합니다" greater_than_start_date: "는 시작날짜보다 커야 합니다" not_same_project: "는 ê°™ì€ í”„ë¡œì íŠ¸ì— ì†í•´ 있지 않습니다" circular_dependency: "ì´ ê´€ê³„ëŠ” 순환 ì˜ì¡´ê´€ê³„를 만들 수 있습니다" cant_link_an_issue_with_a_descendant: "ì¼ê°ì€ 하위 ì¼ê°ê³¼ ì—°ê²°í•  수 없습니다." earlier_than_minimum_start_date: "시작날짜 %{date}보다 앞선 시간으로 설정할 수 없습니다." not_a_regexp: "ì€ ì˜¬ë°”ë¥¸ ì •ê·œì‹ì´ 아닙니다." open_issue_with_closed_parent: "ì™„ë£Œëœ ì¼ê°ì— 하위ì¼ê°ì„ 추가할 수 없습니다." must_contain_uppercase: "ì€ ëŒ€ë¬¸ìž(A-Z)ì„ í¬í•¨í•´ì•¼ 합니다." must_contain_lowercase: "ì€ ì†Œë¬¸ìž(a-z)ì„ í¬í•¨í•´ì•¼ 합니다." must_contain_digits: "ì€ ìˆ«ìž(0-9)를 í¬í•¨í•´ì•¼ 합니다." must_contain_special_chars: "ì€ íŠ¹ìˆ˜ë¬¸ìž(!, $, %, ...)를 í¬í•¨í•´ì•¼ 합니다." actionview_instancetag_blank_option: ì„ íƒí•˜ì„¸ìš” general_text_No: '아니오' general_text_Yes: '예' general_text_no: '아니오' general_text_yes: '예' general_lang_name: 'Korean (한국어)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: CP949 general_pdf_fontname: hysmyeongjostdmedium general_pdf_monospaced_fontname: hysmyeongjostdmedium general_first_day_of_week: '7' notice_account_updated: ê³„ì •ì´ ì„±ê³µì ìœ¼ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. notice_account_invalid_credentials: ìž˜ëª»ëœ ê³„ì • ë˜ëŠ” 비밀번호 notice_account_password_updated: 비밀번호가 잘 변경ë˜ì—ˆìŠµë‹ˆë‹¤. notice_account_wrong_password: ìž˜ëª»ëœ ë¹„ë°€ë²ˆí˜¸ notice_account_register_done: ê³„ì •ì´ ìž˜ 만들어졌습니다. ê³„ì •ì„ í™œì„±í™”í•˜ì‹œë ¤ë©´ ë°›ì€ ë©”ì¼ì˜ ë§í¬ë¥¼ í´ë¦­í•´ì£¼ì„¸ìš”. notice_can_t_change_password: ì´ ê³„ì •ì€ ì™¸ë¶€ ì¸ì¦ì„ ì´ìš©í•©ë‹ˆë‹¤. 비밀번호를 변경할 수 없습니다. notice_account_lost_email_sent: 새로운 비밀번호를 위한 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤. notice_account_activated: ê³„ì •ì´ í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤. ì´ì œ ë¡œê·¸ì¸ í•˜ì‹¤ìˆ˜ 있습니다. notice_successful_create: ìƒì„± 성공. notice_successful_update: 변경 성공. notice_successful_delete: ì‚­ì œ 성공. notice_successful_connection: ì—°ê²° 성공. notice_file_not_found: 요청하신 페ì´ì§€ëŠ” ì‚­ì œë˜ì—ˆê±°ë‚˜ 옮겨졌습니다. notice_locking_conflict: 다른 사용ìžì— ì˜í•´ì„œ ë°ì´í„°ê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. notice_not_authorized: ì´ íŽ˜ì´ì§€ì— 접근할 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. notice_email_sent: "%{value}님ì—게 ë©”ì¼ì´ 발송ë˜ì—ˆìŠµë‹ˆë‹¤." notice_email_error: "ë©”ì¼ì„ 전송하는 ê³¼ì •ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. (%{value})" notice_feeds_access_key_reseted: Atomì— ì ‘ê·¼ê°€ëŠ¥í•œ 열쇠(key)ê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. notice_failed_to_save_issues: "ì €ìž¥ì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤: 실패 %{count}(ì„ íƒ %{total}): %{ids}." notice_account_pending: "ê³„ì •ì´ ë§Œë“¤ì–´ì¡Œìœ¼ë©° ê´€ë¦¬ìž ìŠ¹ì¸ ëŒ€ê¸°ì¤‘ìž…ë‹ˆë‹¤." notice_default_data_loaded: ê¸°ë³¸ê°’ì„ ì„±ê³µì ìœ¼ë¡œ ì½ì–´ë“¤ì˜€ìŠµë‹ˆë‹¤. notice_unable_delete_version: 삭제할 수 없는 버전입니다. error_can_t_load_default_data: "ê¸°ë³¸ê°’ì„ ì½ì–´ë“¤ì¼ 수 없습니다.: %{value}" error_scm_not_found: 항목ì´ë‚˜ ë¦¬ë¹„ì ¼ì´ ì €ìž¥ì†Œì— ì¡´ìž¬í•˜ì§€ 않습니다. error_scm_command_failed: "ì €ìž¥ì†Œì— ì ‘ê·¼í•˜ëŠ” ë„ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.: %{value}" error_scm_annotate: "í•­ëª©ì´ ì—†ê±°ë‚˜ 행별 ì´ë ¥ì„ ë³¼ 수 없습니다." error_issue_not_found_in_project: 'ì¼ê°ì´ 없거나 ì´ í”„ë¡œì íŠ¸ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤.' warning_attachments_not_saved: "%{count}ê°œ 파ì¼ì„ 저장할 수 없습니다." mail_subject_lost_password: "%{value} 비밀번호" mail_body_lost_password: '비밀번호를 변경하려면 ë‹¤ìŒ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.' mail_subject_register: "%{value} 계정 활성화" mail_body_register: 'ê³„ì •ì„ í™œì„±í™”í•˜ë ¤ë©´ ë§í¬ë¥¼ í´ë¦­í•˜ì„¸ìš”.:' mail_body_account_information_external: "로그ì¸í•  때 %{value} ê³„ì •ì„ ì‚¬ìš©í•˜ì‹¤ 수 있습니다." mail_body_account_information: 계정 ì •ë³´ mail_subject_account_activation_request: "%{value} 계정 활성화 요청" mail_body_account_activation_request: "새 사용ìž(%{value})ê°€ 등ë¡ë˜ì—ˆìŠµë‹ˆë‹¤. 관리ìžë‹˜ì˜ 승ì¸ì„ 기다리고 있습니다.:" mail_body_reminder: "ë‹¹ì‹ ì´ ë§¡ê³  있는 ì¼ê° %{count}개가 지연ë˜ì—ˆê±°ë‚˜ %{days}ì¼ ì´ë‚´ì— 완료ë˜ì–´ì•¼ 합니다." mail_subject_reminder: "ë‚´ê°€ ë§¡ê³  있는 ë§Œê¸°ì¸ ì¼ê° %{count}ê°œ (%{days})" mail_subject_wiki_content_added: "위키페ì´ì§€ '%{id}'ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." mail_subject_wiki_content_updated: "'위키페ì´ì§€ %{id}'ì´(ê°€) 수정ë˜ì—ˆìŠµë‹ˆë‹¤." mail_body_wiki_content_added: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 추가하였습니다." mail_body_wiki_content_updated: "%{author}ì´(ê°€) 위키페ì´ì§€ '%{id}'ì„(를) 수정하였습니다." field_name: ì´ë¦„ field_description: 설명 field_summary: 요약 field_is_required: 필수 field_firstname: ì´ë¦„ field_lastname: 성 field_mail: ë©”ì¼ field_filename: íŒŒì¼ field_filesize: í¬ê¸° field_downloads: 다운로드 field_author: ì €ìž field_created_on: ë“±ë¡ field_updated_on: 변경 field_field_format: í˜•ì‹ field_is_for_all: 모든 프로ì íЏ field_possible_values: 가능한 값들 field_regexp: ì •ê·œì‹ field_min_length: 최소 ê¸¸ì´ field_max_length: 최대 ê¸¸ì´ field_value: ê°’ field_category: 범주 field_title: 제목 field_project: 프로ì íЏ field_issue: ì¼ê° field_status: ìƒíƒœ field_notes: 댓글 field_is_closed: 완료 ìƒíƒœ field_is_default: 기본값 field_tracker: 유형 field_subject: 제목 field_due_date: ì™„ë£Œì¼ field_assigned_to: ë‹´ë‹¹ìž field_priority: 우선순위 field_fixed_version: 목표버전 field_user: ì‚¬ìš©ìž field_role: ì—­í•  field_homepage: 홈페ì´ì§€ field_is_public: 공개 field_parent: ìƒìœ„ 프로ì íЏ field_is_in_roadmap: ë¡œë“œë§µì— í‘œì‹œ field_login: ë¡œê·¸ì¸ field_mail_notification: ë©”ì¼ ì•Œë¦¼ field_admin: ê´€ë¦¬ìž field_last_login_on: 마지막 ë¡œê·¸ì¸ field_language: 언어 field_effective_date: ë‚ ì§œ field_password: 비밀번호 field_new_password: 새 비밀번호 field_password_confirmation: 비밀번호 í™•ì¸ field_version: 버전 field_type: ë°©ì‹ field_host: 호스트 field_port: í¬íЏ field_account: 계정 field_base_dn: 기본 DN field_attr_login: ë¡œê·¸ì¸ ì†ì„± field_attr_firstname: ì´ë¦„ ì†ì„± field_attr_lastname: 성 ì†ì„± field_attr_mail: ë©”ì¼ ì†ì„± field_onthefly: ë™ì  ì‚¬ìš©ìž ìƒì„± field_start_date: ì‹œìž‘ì¼ field_done_ratio: ì§„ì²™ë„ field_auth_source: ì¸ì¦ ê³µê¸‰ìž field_hide_mail: ë©”ì¼ ì£¼ì†Œ 숨기기 field_comments: 설명 field_url: URL field_start_page: 첫 페ì´ì§€ field_subproject: 하위 프로ì íЏ field_hours: 시간 field_activity: 작업종류 field_spent_on: 작업시간 field_identifier: ì‹ë³„ìž field_is_filter: 검색조건으로 ì‚¬ìš©ë¨ field_delay: 지연 field_assignable: ì¼ê°ì„ 맡길 수 ìžˆìŒ field_redirect_existing_links: ê¸°ì¡´ì˜ ë§í¬ë¡œ ëŒë ¤ë³´ëƒ„(redirect) field_estimated_hours: 추정시간 field_column_names: 컬럼 field_default_value: 기본값 field_time_zone: 시간대 field_searchable: 검색가능 field_comments_sorting: 댓글 ì •ë ¬ field_parent_title: ìƒìœ„ 제목 field_editable: 편집가능 field_watcher: ì¼ê°ê´€ëžŒìž field_content: ë‚´ìš© field_group_by: 결과를 묶어 보여줄 기준 setting_app_title: ë ˆë“œë§ˆì¸ ì œëª© setting_welcome_text: í™˜ì˜ ë©”ì‹œì§€ setting_default_language: 기본 언어 setting_login_required: ì¸ì¦ì´ 필요함 setting_self_registration: ì‚¬ìš©ìž ì§ì ‘ë“±ë¡ setting_attachment_max_size: 최대 ì²¨ë¶€íŒŒì¼ í¬ê¸° setting_issues_export_limit: ì¼ê° 내보내기 제한 setting_mail_from: 발신 ë©”ì¼ ì£¼ì†Œ setting_plain_text_mail: í…스트만 (HTML ì—†ì´) setting_host_name: 호스트 ì´ë¦„ê³¼ 경로 setting_text_formatting: 본문 í˜•ì‹ setting_wiki_compression: 위키 ì´ë ¥ ì••ì¶• setting_feeds_limit: í”¼ë“œì— í¬í•¨í•  í•­ëª©ì˜ ìˆ˜ setting_default_projects_public: 새 프로ì íŠ¸ë¥¼ 공개로 설정 setting_autofetch_changesets: ì»¤ë°‹ì„ ìžë™ìœ¼ë¡œ 가져오기 setting_sys_api_enabled: 저장소 ê´€ë¦¬ì— WS를 사용 setting_commit_ref_keywords: ì¼ê° ì°¸ì¡°ì— ì‚¬ìš©í•  키워드들 setting_commit_fix_keywords: ì¼ê° í•´ê²°ì— ì‚¬ìš©í•  키워드들 setting_autologin: ìžë™ ë¡œê·¸ì¸ setting_date_format: ë‚ ì§œ í˜•ì‹ setting_time_format: 시간 í˜•ì‹ setting_cross_project_issue_relations: 다른 프로ì íŠ¸ì˜ ì¼ê°ê³¼ 연결하는 ê²ƒì„ í—ˆìš© setting_issue_list_default_columns: ì¼ê° 목ë¡ì— 표시할 항목 setting_emails_footer: ë©”ì¼ ê¼¬ë¦¬ setting_protocol: 프로토콜 setting_per_page_options: 목ë¡ì—서, 한 페ì´ì§€ì— 표시할 í–‰ setting_user_format: ì‚¬ìš©ìž í‘œì‹œ í˜•ì‹ setting_activity_days_default: 프로ì íЏ ìž‘ì—…ë‚´ì—­ì— í‘œì‹œí•  기간 setting_display_subprojects_issues: 하위 프로ì íŠ¸ì˜ ì¼ê°ì„ 함께 표시 setting_enabled_scm: "ì§€ì›í•  SCM(Source Control Management)" setting_mail_handler_api_enabled: 수신 ë©”ì¼ì— WS를 허용 setting_mail_handler_api_key: API 키 setting_sequential_project_identifiers: 프로ì íЏ ì‹ë³„ìžë¥¼ 순차ì ìœ¼ë¡œ ìƒì„± setting_gravatar_enabled: ê·¸ë¼ë°”타 ì‚¬ìš©ìž ì•„ì´ì½˜ 사용 setting_diff_max_lines_displayed: ì°¨ì´ì (diff) ë³´ê¸°ì— í‘œì‹œí•  최대 줄수 setting_repository_log_display_limit: 저장소 ë³´ê¸°ì— í‘œì‹œí•  개정ì´ë ¥ì˜ 최대 갯수 setting_file_max_size_displayed: 바로 보여줄 í…스트파ì¼ì˜ 최대 í¬ê¸° setting_password_min_length: 최소 암호 ê¸¸ì´ setting_new_project_user_role_id: 프로ì íŠ¸ë¥¼ 만든 사용ìžì—게 주어질 ì—­í•  permission_add_project: 프로ì íЏ ìƒì„± permission_edit_project: 프로ì íЏ 편집 permission_select_project_modules: 프로ì íЏ 모듈 ì„ íƒ permission_manage_members: êµ¬ì„±ì› ê´€ë¦¬ permission_manage_versions: 버전 관리 permission_manage_categories: ì¼ê° 범주 관리 permission_add_issues: ì¼ê° 추가 permission_edit_issues: ì¼ê° 편집 permission_manage_issue_relations: ì¼ê° 관계 관리 permission_add_issue_notes: 댓글 추가 permission_edit_issue_notes: 댓글 편집 permission_edit_own_issue_notes: ë‚˜ì˜ ëŒ“ê¸€ 편집 permission_delete_issues: ì¼ê° ì‚­ì œ permission_manage_public_queries: 공용 ê²€ìƒ‰ì–‘ì‹ ê´€ë¦¬ permission_save_queries: ê²€ìƒ‰ì–‘ì‹ ì €ìž¥ permission_view_gantt: Gantt 차트 보기 permission_view_calendar: 달력 보기 permission_view_issue_watchers: ì¼ê°ê´€ëžŒìž 보기 permission_add_issue_watchers: ì¼ê°ê´€ëžŒìž 추가 permission_log_time: 작업시간 ê¸°ë¡ permission_view_time_entries: 시간입력 보기 permission_edit_time_entries: 시간입력 편집 permission_edit_own_time_entries: ë‚˜ì˜ ì‹œê°„ìž…ë ¥ 편집 permission_manage_news: 뉴스 관리 permission_comment_news: ë‰´ìŠ¤ì— ëŒ“ê¸€ë‹¬ê¸° permission_view_documents: 문서 보기 permission_manage_files: íŒŒì¼ ê´€ë¦¬ permission_view_files: íŒŒì¼ ë³´ê¸° permission_manage_wiki: 위키 관리 permission_rename_wiki_pages: 위키 페ì´ì§€ ì´ë¦„변경 permission_delete_wiki_pages: 위치 페ì´ì§€ ì‚­ì œ permission_view_wiki_pages: 위키 보기 permission_view_wiki_edits: 위키 ê¸°ë¡ ë³´ê¸° permission_edit_wiki_pages: 위키 페ì´ì§€ 편집 permission_delete_wiki_pages_attachments: ì²¨ë¶€íŒŒì¼ ì‚­ì œ permission_protect_wiki_pages: 프로ì íЏ 위키 페ì´ì§€ permission_manage_repository: 저장소 관리 permission_browse_repository: 저장소 보기 permission_view_changesets: ë³€ê²½ë¬¶ìŒ ë³´ê¸° permission_commit_access: 변경로그 보기 permission_manage_boards: ê²Œì‹œíŒ ê´€ë¦¬ permission_view_messages: 메시지 보기 permission_add_messages: 메시지 추가 permission_edit_messages: 메시지 편집 permission_edit_own_messages: ë‚˜ì˜ ë©”ì‹œì§€ 편집 permission_delete_messages: 메시지 ì‚­ì œ permission_delete_own_messages: ë‚˜ì˜ ë©”ì‹œì§€ ì‚­ì œ project_module_issue_tracking: ì¼ê°ê´€ë¦¬ project_module_time_tracking: ì‹œê°„ì¶”ì  project_module_news: 뉴스 project_module_documents: 문서 project_module_files: íŒŒì¼ project_module_wiki: 위키 project_module_repository: 저장소 project_module_boards: ê²Œì‹œíŒ label_user: ì‚¬ìš©ìž label_user_plural: ì‚¬ìš©ìž label_user_new: 새 ì‚¬ìš©ìž label_project: 프로ì íЏ label_project_new: 새 프로ì íЏ label_project_plural: 프로ì íЏ label_x_projects: zero: ì—†ìŒ one: "한 프로ì íЏ" other: "%{count}ê°œ 프로ì íЏ" label_project_all: 모든 프로ì íЏ label_project_latest: 최근 프로ì íЏ label_issue: ì¼ê° label_issue_new: 새 ì¼ê°ë§Œë“¤ê¸° label_issue_plural: ì¼ê° label_issue_view_all: 모든 ì¼ê° 보기 label_issues_by: "%{value}별 ì¼ê°" label_issue_added: ì¼ê° 추가 label_issue_updated: ì¼ê° 수정 label_document: 문서 label_document_new: 새 문서 label_document_plural: 문서 label_document_added: 문서 추가 label_role: ì—­í•  label_role_plural: ì—­í•  label_role_new: 새 ì—­í•  label_role_and_permissions: ì—­í•  ë° ê¶Œí•œ label_member: êµ¬ì„±ì› label_member_new: 새 êµ¬ì„±ì› label_member_plural: êµ¬ì„±ì› label_tracker: ì¼ê° 유형 label_tracker_plural: ì¼ê° 유형 label_tracker_new: 새 ì¼ê° 유형 label_workflow: 업무í름 label_issue_status: ì¼ê° ìƒíƒœ label_issue_status_plural: ì¼ê° ìƒíƒœ label_issue_status_new: 새 ì¼ê° ìƒíƒœ label_issue_category: ì¼ê° 범주 label_issue_category_plural: ì¼ê° 범주 label_issue_category_new: 새 ì¼ê° 범주 label_custom_field: ì‚¬ìš©ìž ì •ì˜ í•­ëª© label_custom_field_plural: ì‚¬ìš©ìž ì •ì˜ í•­ëª© label_custom_field_new: 새 ì‚¬ìš©ìž ì •ì˜ í•­ëª© label_enumerations: 코드값 label_enumeration_new: 새 코드값 label_information: ì •ë³´ label_information_plural: ì •ë³´ label_register: ë“±ë¡ label_password_lost: 비밀번호 찾기 label_home: 초기화면 label_my_page: ë‚´ 페ì´ì§€ label_my_account: ë‚´ 계정 label_my_projects: ë‚´ 프로ì íЏ label_administration: 관리 label_login: ë¡œê·¸ì¸ label_logout: 로그아웃 label_help: ë„ì›€ë§ label_reported_issues: 보고한 ì¼ê° label_assigned_to_me_issues: ë‚´ê°€ ë§¡ì€ ì¼ê° label_registered_on: 등ë¡ì‹œê° label_activity: 작업내역 label_user_activity: "%{value}ì˜ ìž‘ì—…ë‚´ì—­" label_new: 새로 만들기 label_logged_as: '로그ì¸ê³„ì •:' label_environment: 환경 label_authentication: ì¸ì¦ label_auth_source: ì¸ì¦ ê³µê¸‰ìž label_auth_source_new: 새 ì¸ì¦ ê³µê¸‰ìž label_auth_source_plural: ì¸ì¦ ê³µê¸‰ìž label_subproject_plural: 하위 프로ì íЏ label_and_its_subprojects: "%{value}와 하위 프로ì íŠ¸ë“¤" label_min_max_length: 최소 - 최대 ê¸¸ì´ label_list: ëª©ë¡ label_date: ë‚ ì§œ label_integer: 정수 label_float: ë¶€ë™ì†Œìˆ˜ label_boolean: 부울린 label_string: 문ìžì—´ label_text: í…스트 label_attribute: ì†ì„± label_attribute_plural: ì†ì„± label_no_data: 표시할 ë°ì´í„°ê°€ 없습니다. label_change_status: ìƒíƒœ 변경 label_history: ì´ë ¥ label_attachment: íŒŒì¼ label_attachment_new: 파ì¼ì¶”ê°€ label_attachment_delete: 파ì¼ì‚­ì œ label_attachment_plural: íŒŒì¼ label_file_added: íŒŒì¼ ì¶”ê°€ label_report: 보고서 label_report_plural: 보고서 label_news: 뉴스 label_news_new: 새 뉴스 label_news_plural: 뉴스 label_news_latest: 최근 뉴스 label_news_view_all: 모든 뉴스 label_news_added: 뉴스 추가 label_settings: 설정 label_overview: 개요 label_version: 버전 label_version_new: 새 버전 label_version_plural: 버전 label_confirmation: í™•ì¸ label_export_to: 내보내기 label_read: ì½ê¸°... label_public_projects: 공개 프로ì íЏ label_open_issues: 진행중 label_open_issues_plural: 진행중 label_closed_issues: ì™„ë£Œë¨ label_closed_issues_plural: ì™„ë£Œë¨ label_x_open_issues_abbr: zero: ëª¨ë‘ ì™„ë£Œ one: 한 ê±´ ì§„í–‰ 중 other: "%{count} ê±´ ì§„í–‰ 중" label_x_closed_issues_abbr: zero: ëª¨ë‘ ë¯¸ì™„ë£Œ one: 한 ê±´ 완료 other: "%{count} ê±´ 완료" label_total: 합계 label_permissions: 권한 label_current_status: ì¼ê° ìƒíƒœ label_new_statuses_allowed: 허용ë˜ëŠ” ì¼ê° ìƒíƒœ label_all: ëª¨ë‘ label_none: ì—†ìŒ label_nobody: 미지정 label_next: ë‹¤ìŒ label_previous: 뒤로 label_used_by: ì‚¬ìš©ë¨ label_details: ìžì„¸ížˆ label_add_note: ì¼ê°ëŒ“글 추가 label_calendar: 달력 label_months_from: 개월 ë™ì•ˆ | 다ìŒë¶€í„° label_gantt: Gantt 차트 label_internal: ë‚´ë¶€ label_last_changes: "최근 %{count}ê°œì˜ ë³€ê²½ì‚¬í•­" label_change_view_all: 모든 변경 ë‚´ì—­ 보기 label_comment: 댓글 label_comment_plural: 댓글 label_x_comments: zero: 댓글 ì—†ìŒ one: 한 ê°œì˜ ëŒ“ê¸€ other: "%{count} ê°œì˜ ëŒ“ê¸€" label_comment_add: 댓글 추가 label_comment_added: ëŒ“ê¸€ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤. label_comment_delete: 댓글 ì‚­ì œ label_query: ê²€ìƒ‰ì–‘ì‹ label_query_plural: ê²€ìƒ‰ì–‘ì‹ label_query_new: 새 ê²€ìƒ‰ì–‘ì‹ label_filter_add: 검색조건 추가 label_filter_plural: 검색조건 label_equals: ì´ë‹¤ label_not_equals: 아니다 label_in_less_than: ì´ë‚´ label_in_more_than: ì´í›„ label_greater_or_equal: ">=" label_less_or_equal: "<=" label_in: ì´ë‚´ label_today: 오늘 label_yesterday: ì–´ì œ label_this_week: ì´ë²ˆì£¼ label_last_week: 지난 주 label_last_n_days: "지난 %{count} ì¼" label_this_month: ì´ë²ˆ 달 label_last_month: 지난 달 label_this_year: 올해 label_date_range: ë‚ ì§œ 범위 label_less_than_ago: ì´ì „ label_more_than_ago: ì´í›„ label_ago: ì¼ ì „ label_contains: í¬í•¨ë˜ëŠ” 키워드 label_not_contains: í¬í•¨í•˜ì§€ 않는 키워드 label_day_plural: ì¼ label_repository: 저장소 label_repository_plural: 저장소 label_revision: ê°œì •íŒ label_revision_plural: ê°œì •íŒ label_associated_revisions: ê´€ë ¨ëœ ê°œì •íŒë“¤ label_added: ì¶”ê°€ë¨ label_modified: ë³€ê²½ë¨ label_copied: ë³µì‚¬ë¨ label_renamed: ì´ë¦„바뀜 label_deleted: ì‚­ì œë¨ label_latest_revision: 최근 ê°œì •íŒ label_latest_revision_plural: 최근 ê°œì •íŒ label_view_revisions: ê°œì •íŒ ë³´ê¸° label_max_size: 최대 í¬ê¸° label_roadmap: 로드맵 label_roadmap_due_in: "기한 %{value}" label_roadmap_overdue: "%{value} 지연" label_roadmap_no_issues: ì´ ë²„ì „ì— í•´ë‹¹í•˜ëŠ” ì¼ê° ì—†ìŒ label_search: 검색 label_result_plural: ê²°ê³¼ label_all_words: 모든 단어 label_wiki: 위키 label_wiki_edit: 위키 편집 label_wiki_edit_plural: 위키 편집 label_wiki_page: 위키 페ì´ì§€ label_wiki_page_plural: 위키 페ì´ì§€ label_index_by_title: 제목별 ìƒ‰ì¸ label_index_by_date: 날짜별 ìƒ‰ì¸ label_current_version: 현재 버전 label_preview: 미리보기 label_feed_plural: 피드(Feeds) label_changes_details: 모든 ìƒì„¸ 변경 ë‚´ì—­ label_issue_tracking: ì¼ê° ì¶”ì  label_spent_time: 소요시간 label_f_hour: "%{value} 시간" label_f_hour_plural: "%{value} 시간" label_time_tracking: ì‹œê°„ì¶”ì  label_change_plural: 변경사항들 label_statistics: 통계 label_commits_per_month: 월별 커밋 ë‚´ì—­ label_commits_per_author: ì €ìžë³„ 커밋 ë‚´ì—­ label_view_diff: ì°¨ì´ì  보기 label_diff_inline: ë‘줄로 label_diff_side_by_side: 한줄로 label_options: 옵션 label_copy_workflow_from: 업무í름 복사하기 label_permissions_report: 권한 보고서 label_watched_issues: 지켜보고 있는 ì¼ê° label_related_issues: ì—°ê²°ëœ ì¼ê° label_applied_status: ì ìš©ëœ ìƒíƒœ label_loading: ì½ëŠ” 중... label_relation_new: 새 관계 label_relation_delete: 관계 지우기 label_relates_to: "ë‹¤ìŒ ì¼ê°ê³¼ 관련ë¨:" label_duplicates: "ë‹¤ìŒ ì¼ê°ì— 중복ë¨:" label_duplicated_by: "ì¤‘ë³µëœ ì¼ê°:" label_blocks: "ë‹¤ìŒ ì¼ê°ì˜ í•´ê²°ì„ ë§‰ê³  있ìŒ:" label_blocked_by: "ë‹¤ìŒ ì¼ê°ì—게 막혀 있ìŒ:" label_precedes: "다ìŒì— 진행할 ì¼ê°:" label_follows: "ë‹¤ìŒ ì¼ê°ì„ ìš°ì„  ì§„í–‰:" label_stay_logged_in: ë¡œê·¸ì¸ ìœ ì§€ label_disabled: 비활성화 label_show_completed_versions: ì™„ë£Œëœ ë²„ì „ 보기 label_me: 나 label_board: ê²Œì‹œíŒ label_board_new: 새 ê²Œì‹œíŒ label_board_plural: ê²Œì‹œíŒ label_topic_plural: 주제 label_message_plural: 글 label_message_last: 마지막 글 label_message_new: 새글쓰기 label_message_posted: 글 추가 label_reply_plural: 답글 label_send_information: 사용ìžì—게 계정정보를 보내기 label_year: ë…„ label_month: ì›” label_week: 주 label_date_from: '기간:' label_date_to: ' ~ ' label_language_based: ì–¸ì–´ì„¤ì •ì— ë”°ë¦„ label_sort_by: "%{value}(으)로 ì •ë ¬" label_send_test_email: 테스트 ë©”ì¼ ë³´ë‚´ê¸° label_feeds_access_key_created_on: "피드 ì ‘ê·¼ 키가 %{value} ì´ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." label_module_plural: 모듈 label_added_time_by: "%{author}ì´(ê°€) %{age} ì „ì— ì¶”ê°€í•¨" label_updated_time_by: "%{author}ì´(ê°€) %{age} ì „ì— ë³€ê²½" label_updated_time: "%{value} ì „ì— ìˆ˜ì •ë¨" label_jump_to_a_project: 프로ì íЏ 바로가기 label_file_plural: íŒŒì¼ label_changeset_plural: ë³€ê²½ë¬¶ìŒ label_default_columns: 기본 컬럼 label_no_change_option: (수정 안함) label_bulk_edit_selected_issues: ì„ íƒí•œ ì¼ê°ë“¤ì„ í•œêº¼ë²ˆì— ìˆ˜ì •í•˜ê¸° label_theme: 테마 label_default: 기본 label_search_titles_only: 제목ì—서만 찾기 label_user_mail_option_all: "ë‚´ê°€ ì†í•œ 프로ì íŠ¸ë“¤ë¡œë¶€í„° 모든 ë©”ì¼ ë°›ê¸°" label_user_mail_option_selected: "ì„ íƒí•œ 프로ì íŠ¸ë“¤ë¡œë¶€í„° 모든 ë©”ì¼ ë°›ê¸°.." label_user_mail_no_self_notified: "ë‚´ê°€ 만든 ë³€ê²½ì‚¬í•­ë“¤ì— ëŒ€í•´ì„œëŠ” ì•Œë¦¼ì„ ë°›ì§€ 않습니다." label_registration_activation_by_email: ë©”ì¼ë¡œ ê³„ì •ì„ í™œì„±í™”í•˜ê¸° label_registration_automatic_activation: ìžë™ 계정 활성화 label_registration_manual_activation: ìˆ˜ë™ ê³„ì • 활성화 label_display_per_page: "페ì´ì§€ë‹¹ 줄수: %{value}" label_age: 마지막 ìˆ˜ì •ì¼ label_change_properties: ì†ì„± 변경 label_general: ì¼ë°˜ label_scm: 형ìƒê´€ë¦¬ì‹œìŠ¤í…œ label_plugins: í”ŒëŸ¬ê·¸ì¸ label_ldap_authentication: LDAP ì¸ì¦ label_downloads_abbr: D/L label_optional_description: 부가ì ì¸ 설명 label_add_another_file: 다른 íŒŒì¼ ì¶”ê°€ label_preferences: 설정 label_chronological_order: 시간 순으로 ì •ë ¬ label_reverse_chronological_order: 시간 역순으로 ì •ë ¬ label_incoming_emails: 수신 ë©”ì¼ label_generate_key: 키 ìƒì„± label_issue_watchers: ì¼ê°ê´€ëžŒìž label_example: 예 label_display: í‘œì‹œë°©ì‹ label_sort: ì •ë ¬ label_ascending: 오름차순 label_descending: 내림차순 label_date_from_to: "%{start}부터 %{end}까지" label_wiki_content_added: 위키페ì´ì§€ 추가 label_wiki_content_updated: 위키페ì´ì§€ 수정 button_login: ë¡œê·¸ì¸ button_submit: í™•ì¸ button_save: 저장 button_check_all: 모ë‘ì„ íƒ button_uncheck_all: ì„ íƒí•´ì œ button_delete: ì‚­ì œ button_create: 저장 button_create_and_continue: 저장 후 계ì†í•˜ê¸° button_test: 테스트 button_edit: 편집 button_add: 추가 button_change: 변경 button_apply: ì ìš© button_clear: 지우기 button_lock: 잠금 button_unlock: 잠금해제 button_download: 다운로드 button_list: ëª©ë¡ button_view: 보기 button_move: ì´ë™ button_back: 뒤로 button_cancel: 취소 button_activate: 활성화 button_sort: ì •ë ¬ button_log_time: 작업시간 ê¸°ë¡ button_rollback: ì´ ë²„ì „ìœ¼ë¡œ ë˜ëŒë¦¬ê¸° button_watch: 지켜보기 button_unwatch: 관심ë„기 button_reply: 답글 button_archive: 잠금보관 button_unarchive: 잠금보관해제 button_reset: 초기화 button_rename: ì´ë¦„바꾸기 button_change_password: 비밀번호 바꾸기 button_copy: 복사 button_annotate: ì´ë ¥í•´ì„¤ button_update: ì—…ë°ì´íЏ button_configure: 설정 button_quote: 댓글달기 status_active: 사용중 status_registered: 등ë¡ëŒ€ê¸° status_locked: ìž ê¹€ text_select_mail_notifications: 알림메ì¼ì´ 필요한 ìž‘ì—…ì„ ì„ íƒí•˜ì„¸ìš”. text_regexp_info: 예) ^[A-Z0-9]+$ text_project_destroy_confirmation: ì´ í”„ë¡œì íŠ¸ë¥¼ 삭제하고 모든 ë°ì´í„°ë¥¼ 지우시겠습니까? text_subprojects_destroy_warning: "하위 프로ì íЏ(%{value})ì´(ê°€) ìžë™ìœ¼ë¡œ 지워질 것입니다." text_workflow_edit: 업무íë¦„ì„ ìˆ˜ì •í•˜ë ¤ë©´ ì—­í• ê³¼ ì¼ê° ìœ í˜•ì„ ì„ íƒí•˜ì„¸ìš”. text_are_you_sure: ê³„ì† ì§„í–‰ 하시겠습니까? text_tip_issue_begin_day: 오늘 시작하는 업무(task) text_tip_issue_end_day: 오늘 종료하는 업무(task) text_tip_issue_begin_end_day: 오늘 시작하고 종료하는 업무(task) text_caracters_maximum: "최대 %{count} ê¸€ìž ê°€ëŠ¥" text_caracters_minimum: "최소한 %{count} ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다." text_length_between: "%{min} ì—서 %{max} 글ìž" text_tracker_no_workflow: ì´ ì¼ê° 유형ì—는 업무íë¦„ì´ ì •ì˜ë˜ì§€ 않았습니다. text_unallowed_characters: 허용ë˜ì§€ 않는 문ìžì—´ text_comma_separated: "구분ìž','를 ì´ìš©í•´ì„œ 여러 ê°œì˜ ê°’ì„ ìž…ë ¥í•  수 있습니다." text_issues_ref_in_commit_messages: 커밋 메시지ì—서 ì¼ê°ì„ 참조하거나 해결하기 text_issue_added: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 보고하였습니다." text_issue_updated: "%{author}ì´(ê°€) ì¼ê° %{id}ì„(를) 수정하였습니다." text_wiki_destroy_confirmation: ì´ ìœ„í‚¤ì™€ 모든 ë‚´ìš©ì„ ì§€ìš°ì‹œê² ìŠµë‹ˆê¹Œ? text_issue_category_destroy_question: "ì¼ë¶€ ì¼ê°ë“¤(%{count}ê°œ)ì´ ì´ ë²”ì£¼ì— ì§€ì •ë˜ì–´ 있습니다. 어떻게 하시겠습니까?" text_issue_category_destroy_assignments: 범주 지정 지우기 text_issue_category_reassign_to: ì¼ê°ì„ ì´ ë²”ì£¼ì— ë‹¤ì‹œ 지정하기 text_user_mail_option: "ì„ íƒí•˜ì§€ ì•Šì€ í”„ë¡œì íЏì—서ë„, 지켜보는 중ì´ê±°ë‚˜ ì†í•´ìžˆëŠ” 사항(ì¼ê°ë¥¼ 발행했거나 í• ë‹¹ëœ ê²½ìš°)ì´ ìžˆìœ¼ë©´ 알림메ì¼ì„ 받게 ë©ë‹ˆë‹¤." text_no_configuration_data: "ì—­í• , ì¼ê° 유형, ì¼ê° ìƒíƒœë“¤ê³¼ 업무íë¦„ì´ ì•„ì§ ì„¤ì •ë˜ì§€ 않았습니다.\n기본 ì„¤ì •ì„ ì½ì–´ë“¤ì´ëŠ” ê²ƒì„ ê¶Œìž¥í•©ë‹ˆë‹¤. ì½ì–´ë“¤ì¸ í›„ì— ìˆ˜ì •í•  수 있습니다." text_load_default_configuration: 기본 ì„¤ì •ì„ ì½ì–´ë“¤ì´ê¸° text_status_changed_by_changeset: "ë³€ê²½ë¬¶ìŒ %{value}ì— ì˜í•˜ì—¬ 변경ë¨" text_issues_destroy_confirmation: 'ì„ íƒí•œ ì¼ê°ë¥¼ ì •ë§ë¡œ 삭제하시겠습니까?' text_select_project_modules: 'ì´ í”„ë¡œì íЏì—서 활성화시킬 ëª¨ë“ˆì„ ì„ íƒí•˜ì„¸ìš”:' text_default_administrator_account_changed: 기본 ê´€ë¦¬ìž ê³„ì •ì´ ë³€ê²½ text_file_repository_writable: íŒŒì¼ ì €ìž¥ì†Œ 쓰기 가능 text_plugin_assets_writable: í”ŒëŸ¬ê·¸ì¸ ì „ìš© 디렉토리가 쓰기 가능 text_minimagick_available: MiniMagick 사용 가능 (ì„ íƒì ) text_destroy_time_entries_question: 삭제하려는 ì¼ê°ì— %{hours} ì‹œê°„ì´ ë³´ê³ ë˜ì–´ 있습니다. 어떻게 하시겠습니까? text_destroy_time_entries: ë³´ê³ ëœ ì‹œê°„ì„ ì‚­ì œí•˜ê¸° text_assign_time_entries_to_project: ë³´ê³ ëœ ì‹œê°„ì„ í”„ë¡œì íŠ¸ì— í• ë‹¹í•˜ê¸° text_reassign_time_entries: 'ì´ ì•Œë¦¼ì— ë³´ê³ ëœ ì‹œê°„ì„ ìž¬í• ë‹¹í•˜ê¸°:' text_user_wrote: "%{value}ì˜ ëŒ“ê¸€:" text_user_wrote_in: "%{value}ì˜ ëŒ“ê¸€ (%{link}):" text_enumeration_category_reassign_to: '새로운 ê°’ì„ ì„¤ì •:' text_enumeration_destroy_question: "%{count} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/configuration.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." text_repository_usernames_mapping: "저장소 로그ì—서 ë°œê²¬ëœ ê° ì‚¬ìš©ìžì— ë ˆë“œë§ˆì¸ ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸í• ë•Œ ì„ íƒí•©ë‹ˆë‹¤.\n레드마ì¸ê³¼ ì €ìž¥ì†Œì˜ ì´ë¦„ì´ë‚˜ ì´ë©”ì¼ì´ ê°™ì€ ì‚¬ìš©ìžê°€ ìžë™ìœ¼ë¡œ ì—°ê²°ë©ë‹ˆë‹¤." text_diff_truncated: '... ì´ ì°¨ì´ì ì€ 표시할 수 있는 최대 줄수를 초과해서 ì´ ì°¨ì´ì ì€ 잘렸습니다.' text_custom_field_possible_values_info: 'ê° ê°’ 당 한 줄' text_wiki_page_destroy_question: ì´ íŽ˜ì´ì§€ëŠ” %{descendants} ê°œì˜ í•˜ìœ„ 페ì´ì§€ì™€ 관련 ë‚´ìš©ì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë‚´ìš©ì„ ì–´ë–»ê²Œ 하시겠습니까? text_wiki_page_nullify_children: 하위 페ì´ì§€ë¥¼ 최ìƒìœ„ 페ì´ì§€ 아래로 지정 text_wiki_page_destroy_children: 모든 하위 페ì´ì§€ì™€ 관련 ë‚´ìš©ì„ ì‚­ì œ text_wiki_page_reassign_children: 하위 페ì´ì§€ë¥¼ ì´ íŽ˜ì´ì§€ 아래로 지정 default_role_manager: ê´€ë¦¬ìž default_role_developer: ê°œë°œìž default_role_reporter: ë³´ê³ ìž default_tracker_bug: 결함 default_tracker_feature: 새기능 default_tracker_support: ì§€ì› default_issue_status_new: ì‹ ê·œ default_issue_status_in_progress: ì§„í–‰ default_issue_status_resolved: í•´ê²° default_issue_status_feedback: ì˜ê²¬ default_issue_status_closed: 완료 default_issue_status_rejected: ê±°ì ˆ default_doc_category_user: ì‚¬ìš©ìž ë¬¸ì„œ default_doc_category_tech: 기술 문서 default_priority_low: ë‚®ìŒ default_priority_normal: 보통 default_priority_high: ë†’ìŒ default_priority_urgent: 긴급 default_priority_immediate: 즉시 default_activity_design: 설계 default_activity_development: 개발 enumeration_issue_priorities: ì¼ê° 우선순위 enumeration_doc_categories: 문서 범주 enumeration_activities: 작업분류(시간추ì ) field_issue_to: 관련 ì¼ê° label_view_all_revisions: 모든 ê°œì •íŒ í‘œì‹œ label_tag: 태그(Tag) label_branch: 브랜치(Branch) error_no_tracker_in_project: 사용할 수 있ë„ë¡ ì„¤ì •ëœ ì¼ê° ìœ í˜•ì´ ì—†ìŠµë‹ˆë‹¤. 프로ì íЏ ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. error_no_default_issue_status: '기본 ìƒíƒœê°€ ì •í•´ì ¸ 있지 않습니다. ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤. (주 ë©”ë‰´ì˜ "관리" -> "ì¼ê° ìƒíƒœ")' text_journal_changed: "%{label}ì„(를) %{old}ì—서 %{new}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤." text_journal_set_to: "%{label}ì„(를) %{value}(으)로 지정ë˜ì—ˆìŠµë‹ˆë‹¤." text_journal_deleted: "%{label} ê°’ì´ ì§€ì›Œì¡ŒìŠµë‹ˆë‹¤. (%{old})" label_group_plural: 그룹 label_group: 그룹 label_group_new: 새 그룹 label_time_entry_plural: 작업시간 text_journal_added: "%{label}ì— %{value}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤." field_active: 사용중 enumeration_system_activity: 시스템 작업 permission_delete_issue_watchers: ì¼ê°ê´€ëžŒìž 지우기 version_status_closed: 닫힘 version_status_locked: ìž ê¹€ version_status_open: ì§„í–‰ error_can_not_reopen_issue_on_closed_version: 닫힌 ë²„ì „ì— í• ë‹¹ëœ ì¼ê°ì€ 다시 재발ìƒì‹œí‚¬ 수 없습니다. label_user_anonymous: ì´ë¦„ì—†ìŒ button_move_and_follow: ì´ë™í•˜ê³  ë”°ë¼ê°€ê¸° setting_default_projects_modules: 새 프로ì íŠ¸ì— ê¸°ë³¸ì ìœ¼ë¡œ í™œì„±í™”ë  ëª¨ë“ˆ setting_gravatar_default: 기본 ê·¸ë¼ë°”타 ì´ë¯¸ì§€ field_sharing: 공유 label_version_sharing_hierarchy: ìƒìœ„ ë° í•˜ìœ„ 프로ì íЏ label_version_sharing_system: 모든 프로ì íЏ label_version_sharing_descendants: 하위 프로ì íЏ label_version_sharing_tree: 최ìƒìœ„ ë° ëª¨ë“  하위 프로ì íЏ label_version_sharing_none: ê³µìœ ì—†ìŒ error_can_not_archive_project: ì´ í”„ë¡œì íŠ¸ë¥¼ 잠금보관할 수 없습니다. button_copy_and_follow: 복사하고 ë”°ë¼ê°€ê¸° label_copy_source: ì›ë³¸ setting_issue_done_ratio: ì¼ê°ì˜ ì§„ì²™ë„ ê³„ì‚°ë°©ë²• setting_issue_done_ratio_issue_status: ì¼ê° ìƒíƒœë¥¼ 사용하기 error_issue_done_ratios_not_updated: ì¼ê° ì§„ì²™ë„ê°€ 수정ë˜ì§€ 않았습니다. error_workflow_copy_target: ëŒ€ìƒ ì¼ê°ì˜ 유형과 ì—­í• ì„ ì„ íƒí•˜ì„¸ìš”. setting_issue_done_ratio_issue_field: ì¼ê° 수정ì—서 ì§„ì²™ë„ ìž…ë ¥í•˜ê¸° label_copy_same_as_target: 대ìƒê³¼ ê°™ìŒ. label_copy_target: ëŒ€ìƒ notice_issue_done_ratios_updated: ì¼ê° ì§„ì²™ë„ê°€ 수정ë˜ì—ˆìŠµë‹ˆë‹¤. error_workflow_copy_source: ì›ë³¸ ì¼ê°ì˜ 유형ì´ë‚˜ ì—­í• ì„ ì„ íƒí•˜ì„¸ìš”. label_update_issue_done_ratios: 모든 ì¼ê° ì§„ì²™ë„ ê°±ì‹ í•˜ê¸° setting_start_of_week: 달력 시작 ìš”ì¼ permission_view_issues: ì¼ê° 보기 label_display_used_statuses_only: ì´ ì¼ê° 유형ì—서 사용ë˜ëŠ” ìƒíƒœë§Œ 보여주기 label_revision_id: ê°œì •íŒ %{value} label_api_access_key: API 접근키 label_api_access_key_created_on: API 접근키가 %{value} ì „ì— ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. label_feeds_access_key: Atom 접근키 notice_api_access_key_reseted: API 접근키가 초기화ë˜ì—ˆìŠµë‹ˆë‹¤. setting_rest_api_enabled: REST 웹서비스 활성화 label_missing_api_access_key: API 접근키가 없습니다. label_missing_feeds_access_key: Atom 접근키가 없습니다. button_show: 보기 text_line_separated: 여러 ê°’ì´ í—ˆìš©ë¨(ê°’ 마다 한 줄씩) setting_mail_handler_body_delimiters: ë©”ì¼ ë³¸ë¬¸ êµ¬ë¶„ìž permission_add_subprojects: 하위 프로ì íЏ ìƒì„± label_subproject_new: 새 하위 프로ì íЏ text_own_membership_delete_confirmation: |- 권한들 ì¼ë¶€ ë˜ëŠ” 전부를 막 삭제하려고 하고 있습니다. 그렇게 ë˜ë©´ ì´ í”„ë¡œì íŠ¸ë¥¼ ë”ì´ìƒ 수정할 수 없게 ë©ë‹ˆë‹¤. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ? label_close_versions: ì™„ë£Œëœ ë²„ì „ 닫기 label_board_sticky: ë¶™ë°•ì´ label_board_locked: 잠금 permission_export_wiki_pages: 위키 페ì´ì§€ 내보내기 setting_cache_formatted_text: 형ì‹ì„ 가진 í…스트 빠른 임시 기억 permission_manage_project_activities: 프로ì íЏ 작업내역 관리 error_unable_delete_issue_status: ì¼ê° ìƒíƒœë¥¼ 지울 수 없습니다. (%{value}) label_profile: 사용ìžì •ë³´ permission_manage_subtasks: 하위 ì¼ê° 관리 field_parent_issue: ìƒìœ„ ì¼ê° label_subtask_plural: 하위 ì¼ê° label_project_copy_notifications: 프로ì íЏ 복사 ì¤‘ì— ì´ë©”ì¼ ì•Œë¦¼ 보내기 error_can_not_delete_custom_field: ì‚¬ìš©ìž ì •ì˜ í•„ë“œë¥¼ 삭제할 수 없습니다. error_unable_to_connect: ì—°ê²°í•  수 없습니다((%{value}) error_can_not_remove_role: ì´ ì—­í• ì€ í˜„ìž¬ 사용 중ì´ì´ì„œ 삭제할 수 없습니다. error_can_not_delete_tracker_html: ì´ ìœ í˜•ì˜ ì¼ê°ë“¤ì´ 있어서 삭제할 수 없습니다.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: ì‹ ì› notice_failed_to_save_members: "%{errors}:구성ì›ì„ 저장 중 실패하였습니다" text_zoom_out: ë” ìž‘ê²Œ text_zoom_in: ë” í¬ê²Œ notice_unable_delete_time_entry: 시간 ê¸°ë¡ í•­ëª©ì„ ì‚­ì œí•  수 없습니다. field_time_entries: 기ë¡ëœ 시간 project_module_gantt: Gantt 차트 project_module_calendar: 달력 button_edit_associated_wikipage: "ì—°ê´€ëœ ìœ„í‚¤ 페ì´ì§€ %{page_title} 수정" field_text: í…스트 ì˜ì—­ setting_default_notification_option: 기본 알림 옵션 label_user_mail_option_only_my_events: ë‚´ê°€ 지켜보거나 관계있는 사항만 label_user_mail_option_none: 알림 ì—†ìŒ field_member_of_group: í• ë‹¹ëœ ì‚¬ëžŒì˜ ê·¸ë£¹ field_assigned_to_role: í• ë‹¹ëœ ì‚¬ëžŒì˜ ì—­í•  notice_not_authorized_archived_project: 접근하려는 프로ì íŠ¸ëŠ” ì´ë¯¸ 잠금보관ë˜ì–´ 있습니다. label_principal_search: "ì‚¬ìš©ìž ë° ê·¸ë£¹ 찾기:" label_user_search: "ì‚¬ìš©ìž ì°¾ê¸°::" field_visible: ë³´ì´ê¸° setting_emails_header: ì´ë©”ì¼ í—¤ë” setting_commit_logtime_activity_id: 기ë¡ëœ ì‹œê°„ì— ì ìš©í•  작업분류 text_time_logged_by_changeset: "ë³€ê²½ë¬¶ìŒ %{value}ì—서 ì ìš©ë˜ì—ˆìŠµë‹ˆë‹¤." setting_commit_logtime_enabled: 커밋 시ì ì— 작업 시간 ê¸°ë¡ í™œì„±í™” notice_gantt_chart_truncated: "표시할 수 있는 최대 항목수(%{max})를 초과하여 차트가 잘렸습니다." setting_gantt_items_limit: "Gantt ì°¨íŠ¸ì— í‘œì‹œë˜ëŠ” 최대 항목수" field_warn_on_leaving_unsaved: "저장하지 ì•Šì€ íŽ˜ì´ì§€ë¥¼ 빠져나갈 때 나ì—게 알림" text_warn_on_leaving_unsaved: "현재 페ì´ì§€ëŠ” 저장ë˜ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다. ì´ íŽ˜ì´ì§€ë¥¼ 빠져나가면 ë‚´ìš©ì„ ìžƒì„ ê²ƒìž…ë‹ˆë‹¤." label_my_queries: "ë‚´ 검색 ì–‘ì‹" text_journal_changed_no_detail: "%{label}ì´ ë³€ê²½ë˜ì—ˆìŠµë‹ˆë‹¤." label_news_comment_added: "ë‰´ìŠ¤ì— ì„¤ëª…ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤." button_expand_all: "ëª¨ë‘ í™•ìž¥" button_collapse_all: "ëª¨ë‘ ì¶•ì†Œ" label_additional_workflow_transitions_for_assignee: "사용ìžê°€ 작업ìžì¼ 때 허용ë˜ëŠ” 추가 ìƒíƒœ" label_additional_workflow_transitions_for_author: "사용ìžê°€ ì €ìžì¼ 때 허용ë˜ëŠ” 추가 ìƒíƒœ" label_bulk_edit_selected_time_entries: "ì„ íƒëœ 소요시간 대량 편집" text_time_entries_destroy_confirmation: "ì„ íƒí•œ 소요시간 í•­ëª©ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" label_role_anonymous: ìµëª… label_role_non_member: ë¹„íšŒì› label_issue_note_added: "ëŒ“ê¸€ì´ ì¶”ê°€ë˜ì—ˆìŠµë‹ˆë‹¤." label_issue_status_updated: "ìƒíƒœê°€ 변경ë˜ì—ˆìŠµë‹ˆë‹¤." label_issue_priority_updated: "ìš°ì„  순위가 변경ë˜ì—ˆìŠµë‹ˆë‹¤." label_issues_visibility_own: "ì¼ê°ì„ ìƒì„±í•˜ê±°ë‚˜ ë§¡ì€ ì‚¬ìš©ìž" field_issues_visibility: "ì¼ê° ë³´ìž„" label_issues_visibility_all: "모든 ì¼ê°" permission_set_own_issues_private: "ë‚˜ì˜ ì¼ê°ì„ 공개나 비공개로 설정" field_is_private: "비공개" permission_set_issues_private: "ì¼ê°ì„ 공개나 비공개로 설정" label_issues_visibility_public: "비공개 ì¼ê° 제외" text_issues_destroy_descendants_confirmation: "%{count} ê°œì˜ í•˜ìœ„ ì¼ê°ì„ 삭제할 것입니다." field_commit_logs_encoding: "커밋 ê¸°ë¡ ì¸ì½”딩" field_scm_path_encoding: "경로 ì¸ì½”딩" text_scm_path_encoding_note: "기본: UTF-8" field_path_to_repository: "저장소 경로" field_root_directory: "루트 경로" field_cvs_module: "모듈" field_cvsroot: "CVS 루트" text_mercurial_repository_note: "로컬 저장소 (예: /hgrepo, c:\\hgrepo)" text_scm_command: "명령" text_scm_command_version: "버전" label_git_report_last_commit: "파ì¼ì´ë‚˜ í´ë”ì˜ ë§ˆì§€ë§‰ ì»¤ë°‹ì„ ë³´ê³ " text_scm_config: "SCM ëª…ë ¹ì„ config/configuration.ymlì—서 수정할 수 있습니다. 수정후ì—는 재시작하십시오." text_scm_command_not_available: "SCM ëª…ë ¹ì„ ì‚¬ìš©í•  수 없습니다. 관리 페ì´ì§€ì˜ ì„¤ì •ì„ ê²€ì‚¬í•˜ì‹­ì‹œì˜¤." notice_issue_successful_create: "%{id} ì¼ê°ì´ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤." label_between: "사ì´" setting_issue_group_assignment: "ê·¸ë£¹ì— ì¼ê° 할당 허용" label_diff: "비êµ(diff)" text_git_repository_note: "ë¡œì»¬ì˜ bare 저장소 (예: /gitrepo, c:\\gitrepo)" description_query_sort_criteria_direction: "ì •ë ¬ ë°©í–¥" description_project_scope: "검색 범위" description_filter: "검색 ì¡°ê±´" description_user_mail_notification: "ë©”ì¼ ì•Œë¦¼ 설정" description_message_content: "메세지 ë‚´ìš©" description_available_columns: "가능한 컬럼" description_issue_category_reassign: "ì¼ê° 범주를 ì„ íƒí•˜ì‹­ì‹œì˜¤." description_search: "검색항목" description_notes: "댓글" description_choose_project: "프로ì íЏ" description_query_sort_criteria_attribute: "ì •ë ¬ ì†ì„±" description_wiki_subpages_reassign: "새로운 ìƒìœ„ 페ì´ì§€ë¥¼ ì„ íƒí•˜ì‹­ì‹œì˜¤." description_selected_columns: "ì„ íƒëœ 컬럼" label_parent_revision: "ìƒìœ„" label_child_revision: "하위" error_scm_annotate_big_text_file: "최대 í…스트 íŒŒì¼ í¬ê¸°ë¥¼ 초과 하면 í•­ëª©ì€ ì´ë ¥í™” ë  ìˆ˜ 없습니다." setting_default_issue_start_date_to_creation_date: "새로운 ì¼ê°ì˜ 시작 날짜로 오늘 ë‚ ì§œ 사용" button_edit_section: "ì´ ë¶€ë¶„ 수정" setting_repositories_encodings: "첨부파ì¼ì´ë‚˜ 저장소 ì¸ì½”딩" description_all_columns: "모든 컬럼" button_export: "내보내기" label_export_options: "내보내기 옵션: %{export_format}" error_attachment_too_big: "ì´ íŒŒì¼ì€ ì œí•œëœ í¬ê¸°(%{max_size})를 초과하였기 ë•Œë¬¸ì— ì—…ë¡œë“œ í•  수 없습니다." notice_failed_to_save_time_entries: "%{total} ê°œì˜ ì‹œê°„ìž…ë ¥ì¤‘ ë‹¤ìŒ %{count} ê°œì˜ ì €ìž¥ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤:: %{ids}." label_x_issues: zero: 0 ì¼ê° one: 1 ì¼ê° other: "%{count} ì¼ê°" label_repository_new: 저장소 추가 field_repository_is_default: 주 저장소 label_copy_attachments: ì²¨ë¶€íŒŒì¼ ë³µì‚¬ label_item_position: "%{position}/%{count}" label_completed_versions: 완료 버전 text_project_identifier_info: "소문ìž(a-z),숫ìž,대쉬(-)와 밑줄(_)ë§Œ 가능합니다.
    ì‹ë³„ìžëŠ” 저장후ì—는 수정할 수 없습니다." field_multiple: 복수선íƒê°€ëŠ¥ setting_commit_cross_project_ref: 다른 프로ì íŠ¸ì˜ ì¼ê° 참조 ë° ìˆ˜ì • 허용 text_issue_conflict_resolution_add_notes: ë³€ê²½ë‚´ìš©ì€ ì·¨ì†Œí•˜ê³  댓글만 추가 text_issue_conflict_resolution_overwrite: 변경내용 ê°•ì œì ìš© (ì´ì „ ëŒ“ê¸€ì„ ì œì™¸í•˜ê³  ë®ì–´ ì”니다) notice_issue_update_conflict: ì¼ê°ì´ 수정ë˜ëŠ” ë™ì•ˆ 다른 사용ìžì— ì˜í•´ì„œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤. text_issue_conflict_resolution_cancel: "ë³€ê²½ë‚´ìš©ì„ ë˜ëŒë¦¬ê³  다시 표시 %{link}" permission_manage_related_issues: ì—°ê²°ëœ ì¼ê° 관리 field_auth_source_ldap_filter: LDAP í•„í„° label_search_for_watchers: 추가할 ì¼ê°ê´€ëžŒìž 검색 notice_account_deleted: ë‹¹ì‹ ì˜ ê³„ì •ì´ ì™„ì „ížˆ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤. setting_unsubscribe: 사용ìžë“¤ì´ ìžì‹ ì˜ ê³„ì •ì„ ì‚­ì œí† ë¡ í—ˆìš© button_delete_my_account: ë‚˜ì˜ ê³„ì • ì‚­ì œ text_account_destroy_confirmation: |- 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ? ê³„ì •ì´ ì‚­ì œë˜ë©´ 복구할 수 없습니다. error_session_expired: ë‹¹ì‹ ì˜ ì„¸ì…˜ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤. 다시 로그ì¸í•˜ì„¸ìš”. text_session_expiration_settings: "경고: ì´ ì„¤ì •ì„ ë°”ê¾¸ë©´ ë‹¹ì‹ ì„ í¬í•¨í•˜ì—¬ í˜„ìž¬ì˜ ì„¸ì…˜ë“¤ì„ ë§Œë£Œì‹œí‚¬ 수 있습니다." setting_session_lifetime: 세션 최대 시간 setting_session_timeout: 세션 비활성화 타임아웃 label_session_expiration: 세션 만료 permission_close_project: 프로ì íŠ¸ë¥¼ 닫거나 다시 열기 button_close: 닫기 button_reopen: 다시 열기 project_status_active: 사용중 project_status_closed: 닫힘 project_status_archived: 잠금보관 text_project_closed: ì´ í”„ë¡œì íŠ¸ëŠ” 닫혀 있으며 ì½ê¸° 전용입니다. notice_user_successful_create: ì‚¬ìš©ìž %{id} ì´(ê°€) ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. field_core_fields: 표준 항목들 field_timeout: 타임아웃 (ì´ˆ) setting_thumbnails_enabled: 첨부파ì¼ì˜ ì¸ë„¤ì¼ì„ 보여줌 setting_thumbnails_size: ì¸ë„¤ì¼ í¬ê¸° (픽셀) label_status_transitions: ì¼ê° ìƒíƒœ 변경 label_fields_permissions: 항목 편집 권한 label_readonly: ì½ê¸° ì „ìš© label_required: 필수 text_repository_identifier_info: "소문ìž(a-z),숫ìž,대쉬(-)와 밑줄(_)ë§Œ 가능합니다.
    ì‹ë³„ìžëŠ” 저장후ì—는 수정할 수 없습니다." field_board_parent: Parent forum label_attribute_of_project: "프로ì íŠ¸ì˜ %{name}" label_attribute_of_author: "ì €ìžì˜ %{name}" label_attribute_of_assigned_to: "담당ìžì˜ %{name}" label_attribute_of_fixed_version: "ëª©í‘œë²„ì „ì˜ %{name}" label_copy_subtasks: 하위 ì¼ê°ë“¤ì„ 복사 label_copied_to: "ë‹¤ìŒ ì¼ê°ìœ¼ë¡œ 복사ë¨:" label_copied_from: "ë‹¤ìŒ ì¼ê°ìœ¼ë¡œë¶€í„° 복사ë¨:" label_any_issues_in_project: ë‹¤ìŒ í”„ë¡œì íŠ¸ì— ì†í•œ 아무 ì¼ê° label_any_issues_not_in_project: ë‹¤ìŒ í”„ë¡œì íŠ¸ì— ì†í•˜ì§€ ì•Šì€ ì•„ë¬´ ì¼ê° field_private_notes: 비공개 댓글 permission_view_private_notes: 비공개 댓글 보기 permission_set_notes_private: ëŒ“ê¸€ì„ ë¹„ê³µê°œë¡œ 설정 label_no_issues_in_project: ë‹¤ìŒ í”„ë¡œì íŠ¸ì˜ ì¼ê° 제외 label_any: ëª¨ë‘ label_last_n_weeks: 최근 %{count} 주 setting_cross_project_subtasks: 다른 프로ì íŠ¸ë¡œë¶€í„° ìƒìœ„ ì¼ê° 지정 허용 label_cross_project_descendants: 하위 프로ì íЏ label_cross_project_tree: 최ìƒìœ„ ë° ëª¨ë“  하위 프로ì íЏ label_cross_project_hierarchy: ìƒìœ„ ë° í•˜ìœ„ 프로ì íЏ label_cross_project_system: 모든 프로ì íЏ button_hide: 숨기기 setting_non_working_week_days: íœ´ì¼ label_in_the_next_days: ë‹¤ìŒ label_in_the_past_days: 지난 label_attribute_of_user: "사용ìžì˜ %{name}" text_turning_multiple_off: 복수선íƒì„ 비활성화하면, í•˜ë‚˜ì˜ ê°’ì„ ì œì™¸í•œ 나머지 ê°’ë“¤ì´ ì§€ì›Œì§‘ë‹ˆë‹¤. label_attribute_of_issue: "ì¼ê°ì˜ %{name}" permission_add_documents: 문서 추가 permission_edit_documents: 문서 편집 permission_delete_documents: 문서 ì‚­ì œ label_gantt_progress_line: ì§„í–‰ ì„  setting_jsonp_enabled: JSONP 허용 field_inherit_members: ìƒìœ„ 프로ì íЏ êµ¬ì„±ì› ìƒì† field_closed_on: ì™„ë£Œì¼ field_generate_password: 비밀번호 ìƒì„± setting_default_projects_tracker_ids: 새 프로ì íŠ¸ì— ê¸°ë³¸ì ìœ¼ë¡œ 추가할 ì¼ê° 유형 label_total_time: 합계 notice_account_not_activated_yet: ê³„ì •ì´ í™œì„±í™”ë˜ì§€ 않았습니다. ê³„ì •ì„ í™œì„±í™”í•˜ê¸° 위해 ë©”ì¼ì„ 다시 수신하려면 여기를 í´ë¦­í•´ 주세요. notice_account_locked: ê³„ì •ì´ ìž ê²¨ 있습니다. label_hidden: 숨김 label_visibility_private: ìžì‹  ë§Œ label_visibility_roles: ë‹¤ìŒ ì—­í•  ë§Œ label_visibility_public: 모든 ì‚¬ìš©ìž field_must_change_passwd: ë‹¤ìŒ ë¡œê·¸ì¸ ì‹œ 암호 변경 notice_new_password_must_be_different: 새 암호는 현재 암호와 달ë¼ì•¼ 합니다. setting_mail_handler_excluded_filenames: 제외할 첨부 파ì¼ëª… text_convert_available: ImageMagick 변환 사용 가능 (옵션) label_link: ë§í¬ label_only: 다ìŒì˜ 것만 label_drop_down_list: 드롭다운 ëª©ë¡ label_checkboxes: ì²´í¬ë°•스 label_link_values_to: URL ë§í¬ ê°’ setting_force_default_language_for_anonymous: ìµëª… 사용ìžì˜ 기본 언어 ê°•ì œ setting_force_default_language_for_loggedin: ë¡œê·¸ì¸ ì‚¬ìš©ìžì˜ 기본 언어 ê°•ì œ label_custom_field_select_type: ì‚¬ìš©ìž ì •ì˜ í•„ë“œì— ì¶”ê°€í•  대ìƒì„ ì„ íƒí•´ì£¼ì„¸ìš”. label_issue_assigned_to_updated: ë‹´ë‹¹ìž ì—…ë°ì´íЏ label_check_for_updates: ì—…ë°ì´íЏ í™•ì¸ label_latest_compatible_version: 최종 호환 버전 label_unknown_plugin: 알 수 없는 í”ŒëŸ¬ê·¸ì¸ label_radio_buttons: radio buttons label_group_anonymous: ìµëª… ì‚¬ìš©ìž label_group_non_member: ë¹„íšŒì› ì‚¬ìš©ìž label_add_projects: 프로ì íЏ 추가 field_default_status: 초기 ìƒíƒœ text_subversion_repository_note: '예: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: ì‚¬ìš©ìž ê°€ì‹œì„± label_users_visibility_all: 모든 활성 ì‚¬ìš©ìž label_users_visibility_members_of_visible_projects: ë³´ì´ëŠ” 프로ì íЏ íšŒì› label_edit_attachments: ì²¨ë¶€íŒŒì¼ íŽ¸ì§‘ setting_link_copied_issue: 복사할 때 ì¼ê° ì—°ê²° label_link_copied_issue: 복사한 ì¼ê° ì—°ê²° label_ask: 물어보기 label_search_attachments_yes: 첨부파ì¼ëª…ê³¼ 설명만 검색 label_search_attachments_no: 첨부는 검색하지 ì•ŠìŒ label_search_attachments_only: 첨부만 검색 label_search_open_issues_only: 열린 ì¼ê°ë§Œ field_address: ë©”ì¼ setting_max_additional_emails: 허용하는 ë©”ì¼ì£¼ì†Œ 개수 label_email_address_plural: ë©”ì¼ì£¼ì†Œ label_email_address_add: ë©”ì¼ì£¼ì†Œ 추가 label_enable_notifications: 알림 켜기 label_disable_notifications: 알림 ë„기 setting_search_results_per_page: 페ì´ì§€ë‹¹ 검색 ê²°ê³¼ label_blank_value: blank permission_copy_issues: ì¼ê° 복사 error_password_expired: 암호가 만료ë˜ì—ˆê±°ë‚˜ 관리ìžê°€ 변경하ë„ë¡ ì„¤ì •í•˜ì˜€ìŠµë‹ˆë‹¤. field_time_entries_visibility: ì‹œê°„ê¸°ë¡ ê°€ì‹œì„± setting_password_max_age: 암호 변경 주기 label_parent_task_attributes: ìƒìœ„ì¼ê° ì†ì„± label_parent_task_attributes_derived: 하위ì¼ê°ìœ¼ë¡œë¶€í„° 계산 label_parent_task_attributes_independent: 하위ì¼ê°ê³¼ 별ë„로 계산 label_time_entries_visibility_all: 모든 ì‹œê°„ê¸°ë¡ label_time_entries_visibility_own: ì´ ì‚¬ìš©ìžê°€ ìƒì„±í•œ ì‹œê°„ê¸°ë¡ label_member_management: íšŒì› ê´€ë¦¬ label_member_management_all_roles: 모든 ì—­í•  label_member_management_selected_roles_only: ì„ íƒëœ ì—­í•  ë§Œ label_password_required: 계ì†í•˜ë ¤ë©´ 암호를 확ì¸í•´ì•¼ 합니다. label_total_spent_time: ì´ ì†Œìš”ì‹œê°„ notice_import_finished: "ì´ %{count} ê±´ì„ ê°€ì ¸ì™”ìŠµë‹ˆë‹¤" notice_import_finished_with_errors: "ì´ %{total} ê±´ 중 %{count} ê±´ì„ ê°€ì ¸ì˜¤ì§€ 못했습니다" error_invalid_file_encoding: ì´ íŒŒì¼ì€ ì •ìƒì ì¸ %{encoding} 파ì¼ì´ 아닙니다. error_invalid_csv_file_or_settings: ì´ íŒŒì¼ì€ CSV 파ì¼ì´ 아니거나 아래 ì¡°ê±´ì— ë§žì§€ 않습니다. error_can_not_read_import_file: 가져오기 파ì¼ì„ ì½ì„ 수 없습니다. permission_import_issues: ì¼ê° 가져오기 label_import_issues: ì¼ê° 가져오기 label_select_file_to_import: 가져올 íŒŒì¼ ì„ íƒ label_fields_separator: êµ¬ë¶„ìž label_fields_wrapper: ë¬¶ìŒ ê¸°í˜¸ label_encoding: ì¸ì½”딩 label_comma_char: 쉼표(,) label_semi_colon_char: 세미콜론(;) label_quote_char: ìž‘ì€ë”°ì˜´í‘œ label_double_quote_char: í°ë”°ì˜´í‘œ label_fields_mapping: 항목 ì—°ê²° label_file_content_preview: ë‚´ìš© 미리보기 label_create_missing_values: ê°’ì´ ì—†ìœ¼ë©´ ìžë™ìœ¼ë¡œ 만들기 button_import: 가져오기 field_total_estimated_hours: 추정 시간 label_api: API label_total_plural: 합계 label_assigned_issues: í• ë‹¹ëœ ì¼ê° label_field_format_enumeration: 키/ê°’ ëª©ë¡ label_f_hour_short: '%{value} 시간' field_default_version: 기본 버전 error_attachment_extension_not_allowed: ì²¨ë¶€ì˜ í™•ìž¥ìž %{extension}ì€(는) 허용ë˜ì§€ 않습니다. setting_attachment_extensions_allowed: 허용ë˜ëŠ” í™•ìž¥ìž setting_attachment_extensions_denied: 허용ë˜ì§€ 않는 í™•ìž¥ìž label_any_open_issues: 진행중 ì¼ê° label_no_open_issues: ì—†ìŒ ë˜ëŠ” 완료ì¼ê° label_default_values_for_new_users: 새 ì‚¬ìš©ìž ê¸°ë³¸ê°’ error_ldap_bind_credentials: ìž˜ëª»ëœ LDAP 계정/암호 setting_sys_api_key: API 키 setting_lost_password: 비밀번호 찾기 mail_subject_security_notification: 보안 알림 mail_body_security_notification_change: ! '%{field}ì´(ê°€) 변경ë˜ì—ˆìŠµë‹ˆë‹¤.' mail_body_security_notification_change_to: ! '%{field}ì´(ê°€) %{value}(으)로 변경ë˜ì—ˆìŠµë‹ˆë‹¤.' mail_body_security_notification_add: ! '%{field}ì— %{value}ì´(ê°€) 추가ë˜ì—ˆìŠµë‹ˆë‹¤.' mail_body_security_notification_remove: ! '%{field}ì— %{value}ì´(ê°€) ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.' mail_body_security_notification_notify_enabled: ì´ì œ %{value}(으)로 ì•ŒëžŒì´ ë°œì†¡ë©ë‹ˆë‹¤. mail_body_security_notification_notify_disabled: '%{value}(으)로 ë” ì´ìƒ ì•ŒëžŒì´ ë°œì†¡ë˜ì§€ 않습니다.' mail_body_settings_updated: ! '다ìŒì˜ ì„¤ì •ì´ ë³€ê²½ë˜ì—ˆìŠµë‹ˆë‹¤:' field_remote_ip: IP 주소 label_wiki_page_new: 새 위키 페ì´ì§€ label_relations: 관계 button_filter: í•„í„° mail_body_password_updated: 암호가 변경ë˜ì—ˆìŠµë‹ˆë‹¤. label_no_preview: 미리보기 ì—†ìŒ error_no_tracker_allowed_for_new_issue_in_project: 프로ì íŠ¸ì— ì‚¬ìš©í•  수 있는 ì¼ê° ìœ í˜•ì´ ì—†ìŠµë‹ˆë‹¤ label_tracker_all: 모든 유형 label_new_project_issue_tab_enabled: '"새 ì¼ê°" 탭 표시' setting_new_item_menu_tab: 프로ì íЏ ë©”ë‰´ì˜ ìƒˆë¡œ 만들기 탭 label_new_object_tab_enabled: ë©”ë‰´ì— "+" 탭 표시 error_no_projects_with_tracker_allowed_for_new_issue: ì¼ê°ì„ 등ë¡í•  수 있는 프로ì íŠ¸ê°€ 아닙니다. field_textarea_font: í…스트박스 í°íЏ label_font_default: 기본 í°íЏ label_font_monospace: Monospaced í°íЏ label_font_proportional: Proportional í°íЏ setting_timespan_format: 소요시간 í¬ë©§ label_table_of_contents: 목차 setting_commit_logs_formatting: 커밋 ë©”ì‹œì§€ì— í…스트 í˜•ì‹ ì ìš© setting_mail_handler_enable_regex: ì •ê·œì‹ í™œì„±í™” error_move_of_child_not_possible: '하위 ì¼ê° %{child} ì„(를) 지정한 프로ì íŠ¸ë¡œ ì´ë™í•  수 없습니다.: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: 삭제대ìƒì˜ ì¼ê°ì˜ ì†Œìš”ì‹œê°„ì„ ìž¬í• ë‹¹í•  수 없습니다. setting_timelog_required_fields: 소요시간 필수항목 label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: ë‚´ê°€ 지켜보거나 ë‹´ë‹¹ì¸ ì‚¬í•­ë§Œ label_user_mail_option_only_owner: ë‚´ê°€ 지켜보거나 작성한 사항만 warning_fields_cleared_on_bulk_edit: ì´ íŽ¸ì§‘ì— ì˜í•´ 다ìŒì˜ í•­ëª©ì˜ ê°’ì´ ì¼ê°ì—서 ì‚­ì œë©ë‹ˆë‹¤. field_updated_by: ìˆ˜ì •ìž field_last_updated_by: 최근 ìˆ˜ì •ìž field_full_width_layout: 최대 표시 label_last_notes: 마지막 댓글 field_digest: Checksum field_default_assigned_to: 기본 ë‹´ë‹¹ìž setting_show_custom_fields_on_registration: ë“±ë¡ ì‹œ ì‚¬ìš©ìž ì •ì˜ í•­ëª© 표시 permission_view_news: 뉴스 보기 label_no_preview_alternative_html: 해당 파ì¼ì€ 미리 보기가 안ë©ë‹ˆë‹¤. %{link} í•´ 주세요. label_no_preview_download: 다운로드 setting_close_duplicate_issues: ì¤‘ë³µëœ ì¼ê° ìžë™ 완료 error_exceeds_maximum_hours_per_day: ìž‘ì—…ì‹œê°„ì€ 1ì¼ 1ì¸ë‹¹ %{max_hours} ì‹œê°„ì„ ì´ˆê³¼í•  수 없습니다. (ì´ë¯¸ {logged_hours}시간 기ë¡ë¨) setting_time_entry_list_defaults: 소요시간 기본 ëª©ë¡ setting_timelog_accept_0_hours: 소요시간으로 0시간 ìž…ë ¥ 허용 setting_timelog_max_hours_per_day: 1ì¼/1ì¸ì˜ 작업시간 최대값 label_x_revisions: "%{count} 리비전" error_can_not_delete_auth_source: 해당 ì¸ì¦ë°©ì‹ì€ ì‚¬ìš©ì¤‘ì¸ ê´€ê³„ë¡œ 삭제할 수 없습니다. button_actions: Actions mail_body_lost_password_validity: 해당 ë§í¬ë¡œ 암호 ì„¤ì •ì€ 1회만 ë©ë‹ˆë‹¤. 주ì˜í•´ 주시기 ë°”ëžë‹ˆë‹¤. text_login_required_html: ì¸ì¦ì´ 필수가 아닌 경우, 공개 프로ì íŠ¸ì˜ ê²½ìš°ëŠ” 모든 사용ìžê°€ ì ‘ì†í•  수 있습니다. ìµëª… 권한 편집ì—서 수정할 수 있습니다. label_login_required_yes: '예' label_login_required_no: 아니오(공개 프로ì íŠ¸ì— ìµëª…ì˜ ì‚¬ìš©ìžê°€ ì ‘ì† í—ˆìš©) text_project_is_public_non_member: 공개 프로ì íŠ¸ëŠ” 모든 로그ì¸í•œ 사용ìžê°€ ì ‘ì†í•  수 있습니다. text_project_is_public_anonymous: 공개 프로ì íŠ¸ëŠ” 네트워í¬ì˜ 모든 사용ìžê°€ ì ‘ì†í•  수 있습니다. label_version_and_files: 버전 (%{count}) ê³¼ íŒŒì¼ label_ldap: LDAP label_ldaps_verify_none: LDAPS (ì¦ëª…서 ì²´í¬ì—†ìŒ) label_ldaps_verify_peer: LDAPS label_ldaps_warning: ì¸ì¦ì²˜ë¦¬ 중 ê³µê²©ì„ ë°©ì§€í•˜ê¸° 위해 ì•”í˜¸í™”ëœ LDAPSì„ ì‚¬ìš©í•  ê²ƒì„ ì¶”ì²œí•©ë‹ˆë‹¤. label_nothing_to_preview: 미리보기 ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤. error_token_expired: 암호 재발행용 ë§í¬ëŠ” 무효합니다. 다시 시ë„í•´ 주시기 ë°”ëžë‹ˆë‹¤. error_spent_on_future_date: 미래ì¼ìžì— ì†Œìš”ì‹œê°„ì„ ìž…ë ¥í•  수 없습니다. setting_timelog_accept_future_dates: 미래ì¼ìž 소요시간 ìž…ë ¥ 허용 label_delete_link_to_subtask: 관계 지우기 error_not_allowed_to_log_time_for_other_users: 다른 사용ìžì˜ ì†Œìš”ì‹œê°„ì„ ìž…ë ¥í•  수 없습니다. permission_log_time_for_other_users: 다른 ì‚¬ìš©ìž ì†Œìš”ì‹œê°„ ìž…ë ¥ label_tomorrow: ë‚´ì¼ label_next_week: ë‹¤ìŒ ì£¼ label_next_month: ë‹¤ìŒ ë‹¬ text_role_no_workflow: 해당 ì—­í• ì—는 업무íë¦„ì´ ì„¤ì •ë˜ì§€ 않았습니다. text_status_no_workflow: 해당 ìƒíƒœë¥¼ 사용한 ì¼ê° ìœ í˜•ì˜ ì—…ë¬´íë¦„ì´ ì—†ìŠµë‹ˆë‹¤. setting_mail_handler_preferred_body_part: multipart(HTML) ì´ë©”ì¼ì˜ 기본 í˜•ì‹ setting_show_status_changes_in_mail_subject: ì•Œë¦¼ì˜ ì¼ê°ì œëª©ì— ìƒíƒœí‘œì‹œ label_inherited_from_parent_project: ìƒìœ„ 프로ì íŠ¸ë¡œë¶€í„° ìƒì† label_inherited_from_group: 그룹 %{name}로부터 ìƒì† label_trackers_description: ì¼ê°ìœ í˜• 설명 label_open_trackers_description: 모든 ì¼ê°ìœ í˜•ì˜ ì„¤ëª… 보기 label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: ìƒìœ„ ì¼ê° 제목 permission_edit_own_issues: ë‚˜ì˜ ì¼ê° 편집 text_select_apply_tracker: ì¼ê°ìœ í˜• ì„ íƒ label_updated_issues: 수정한 ì¼ê° text_avatar_server_config_html: 현재 아바타 서버는 %{url} 입니다. 서버 ì„¤ì •ì€ config/configuration.yml ì—서 변경할 수 있습니다. setting_gantt_months_limit: Gantt ì°¨íŠ¸ì˜ í‘œì‹œí•  ì›”ì˜ ìµœëŒ€ê°’ permission_import_time_entries: 소요시간 가져오기 label_import_notifications: 가져오기 중 ì´ë©”ì¼ ì•Œë¦¼ text_gs_available: ImageMagickì˜ PDF 서í¬íЏ ì´ìš©ê°€ëŠ¥ (옵션) field_recently_used_projects: ì í”„ë°•ìŠ¤ì˜ ìµœê·¼ 사용한 프로ì íЏ 수 label_optgroup_bookmarks: ë¶ë§ˆí¬ label_optgroup_recents: 최근 사용 button_project_bookmark: ë¶ë§ˆí¬ 추가 button_project_bookmark_delete: ë¶ë§ˆí¬ ì´ë™ field_history_default_tab: ì¼ê°ì´ë ¥ 기본탭 label_issue_history_properties: 항목 변경ì´ë ¥ label_issue_history_notes: 댓글 label_last_tab_visited: 최근 조회한 탭 field_unique_id: 고유 ID text_no_subject: 제목 ì—†ìŒ setting_password_required_char_classes: 암호설정시 í¬í•¨ë˜ì–´ì•¼ 종류 label_password_char_class_uppercase: ëŒ€ë¬¸ìž label_password_char_class_lowercase: ì†Œë¬¸ìž label_password_char_class_digits: ìˆ«ìž label_password_char_class_special_chars: íŠ¹ìˆ˜ë¬¸ìž text_characters_must_contain: "%{character_classes}ê°€ í¬í•¨ë˜ì–´ì•¼ 합니다." label_starts_with: ì•žë¬¸ìž ì¼ì¹˜ label_ends_with: ë’·ë¬¸ìž ì¼ì¹˜ label_issue_fixed_version_updated: 버전 변경 setting_project_list_defaults: 프로ì íЏ 기본표시 ëª©ë¡ label_display_type: ê²°ê³¼ 표시 label_display_type_list: ëª©ë¡ label_display_type_board: 보드 label_my_bookmarks: ë‚´ ë¶ë§ˆí¬ label_import_time_entries: 소요시간 가져오기 field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/lt.yml000066400000000000000000002255761500112024600172060ustar00rootroot00000000000000# Lithuanian translations for Ruby on Rails # by Laurynas Butkus (laurynas.butkus@gmail.com) # and Sergej Jegorov sergej.jegorov@gmail.com # and Gytis Gurklys gytis.gurklys@gmail.com # and Andrius KriuÄkovas andrius.kriuckovas@gmail.com # and Gediminas Muižis gediminas.muizis@gmail.com # and Marius ŽilÄ—nas m.zilenas@litrail.lt lt: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%b %d" long: "%B %d, %Y" day_names: [sekmadienis, pirmadienis, antradienis, treÄiadienis, ketvirtadienis, penktadienis, Å¡eÅ¡tadienis] abbr_day_names: [Sek, Pir, Ant, Tre, Ket, Pen, Å eÅ¡] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, sausio, vasario, kovo, balandžio, gegužės, birželio, liepos, rugpjÅ«Äio, rugsÄ—jo, spalio, lapkriÄio, gruodžio] abbr_month_names: [~, Sau, Vas, Kov, Bal, Geg, Bir, Lie, Rgp, Rgs, Spa, Lap, Grd] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "ryto" pm: "vakaro" datetime: distance_in_words: half_a_minute: "pusÄ— minutÄ—s" less_than_x_seconds: one: "mažiau nei 1 sekundÄ™" other: "mažiau nei %{count} sekundžių(Ä—s)" x_seconds: one: "1 sekundÄ—" other: "%{count} sekundžių(Ä—s)" less_than_x_minutes: one: "mažiau nei minutÄ—" other: "mažiau nei %{count} minuÄių(Ä—s)" x_minutes: one: "1 minutÄ—" other: "mažiau nei %{count} minuÄių(Ä—s)" about_x_hours: one: "apie 1 valandÄ…" other: "apie %{count} valandų(as)" x_hours: one: "1 valanda" other: "%{count} valandų(os)" x_days: one: "1 diena" other: "%{count} dienų(os)" about_x_months: one: "apie 1 mÄ—nesį" other: "apie %{count} mÄ—nesių(ius)" x_months: one: "1 mÄ—nuo" other: "%{count} mÄ—nesių(iai)" about_x_years: one: "apie 1 metus" other: "apie %{count} metų(us)" over_x_years: one: "virÅ¡ 1 metų" other: "virÅ¡ %{count} metų" almost_x_years: one: "beveik 1 metai" other: "beveik %{count} metų(ai)" number: format: separator: "," delimiter: " " precision: 3 human: format: delimiter: " " precision: 3 storage_units: format: "%n %u" units: byte: one: "baitas" other: "baitų(ai)" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "ir" skip_last_comma: false activerecord: errors: template: header: one: "IÅ¡saugant objektÄ… %{model} rasta 1 klaida" other: "IÅ¡saugant objektÄ… %{model} rastos %{count} klaidų(os)" messages: inclusion: "neįtraukta į sÄ…rašą" exclusion: "užimtas" invalid: "neteisingas" confirmation: "neteisingai pakartotas" accepted: "turi bÅ«ti patvirtinta(as)" empty: "negali bÅ«ti tuÅ¡Äias" blank: "negali bÅ«ti tuÅ¡Äias" too_long: "per ilgas tekstas (daugiausiai %{count} simbolių" not_a_number: "ne skaiÄius" not_a_date: "neteisinga data" greater_than: "turi bÅ«ti daugiau už %{count}" greater_than_or_equal_to: "turi bÅ«ti daugiau arba lygu %{count}" equal_to: "turi bÅ«ti lygus %{count}" less_than: "turi bÅ«ti mažiau už %{count}" less_than_or_equal_to: "turi bÅ«ti mažiau arba lygu %{count}" odd: "turi bÅ«ti nelyginis" even: "turi bÅ«ti lyginis" greater_than_start_date: "turi bÅ«ti didesnÄ— negu pradžios data" not_same_project: "nepriklauso tam paÄiam projektui" circular_dependency: "Å is ryÅ¡ys sukurtų ciklinÄ™ priklausomybÄ™" cant_link_an_issue_with_a_descendant: "Darbas negali bÅ«ti susietas su viena iÅ¡ savo darbo dalių" earlier_than_minimum_start_date: "negali bÅ«ti anksÄiau už %{date} dÄ—l ankstesnių darbų" not_a_regexp: "neteisingas reguliarusis reiÅ¡kinys" open_issue_with_closed_parent: "Atviras darbas negali bÅ«ti pridÄ—tas prie uždarytos tÄ—vinÄ—s užduoties" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: PraÅ¡om parinkti general_text_No: 'Ne' general_text_Yes: 'Taip' general_text_no: 'ne' general_text_yes: 'taip' general_lang_name: 'Lithuanian (lietuvių)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Paskyra buvo sÄ—kmingai atnaujinta. notice_account_invalid_credentials: Neteisingas vartotojo vardas ar slaptažodis notice_account_password_updated: Slaptažodis buvo sÄ—kmingai atnaujintas. notice_account_wrong_password: Neteisingas slaptažodis notice_account_register_done: Paskyra buvo sÄ—kmingai sukurta. Norint aktyvinti savo paskyrÄ…, paspauskite nuorodÄ…, kuri jums buvo siųsta į %{email}. notice_account_not_activated_yet: Dar nesatÄ™ aktyvavÄ™ savo paskyros. Jei norite gauti naujÄ… aktyvavimo laiÅ¡kÄ…, paspauskite Å¡iÄ… nuorodÄ… notice_account_locked: JÅ«sų paskyra užblokuota. notice_can_t_change_password: Å is praneÅ¡imas naudoja iÅ¡orinį autentiÅ¡kumo nustatymo Å¡altinį. Neįmanoma pakeisti slaptažodžio. notice_account_lost_email_sent: Ä® JÅ«sų paÅ¡tÄ… iÅ¡siųstas laiÅ¡kas su naujo slaptažodžio pasirinkimo instrukcija. notice_account_activated: JÅ«sų paskyra aktyvuota. Galite prisijungti. notice_successful_create: SÄ—kmingas sukÅ«rimas. notice_successful_update: SÄ—kmingas atnaujinimas. notice_successful_delete: SÄ—kmingas panaikinimas. notice_successful_connection: SÄ—kmingas susijungimas. notice_file_not_found: Puslapis, į kurį ketinate įeiti, neegzistuoja arba yra paÅ¡alintas. notice_locking_conflict: Duomenys buvo atnaujinti kito vartotojo. notice_not_authorized: JÅ«s neturite teisių gauti prieigÄ… prie Å¡io puslapio. notice_not_authorized_archived_project: Projektas, kurį bandote atidaryti, buvo suarchyvuotas. notice_email_sent: "LaiÅ¡kas iÅ¡siųstas į %{value}" notice_email_error: "LaiÅ¡ko siuntimo metu (%{value}) įvyko klaida" notice_feeds_access_key_reseted: JÅ«sų Atom raktas buvo atnaujintas. notice_api_access_key_reseted: JÅ«sų API prieigos raktas buvo atnaujintas. notice_failed_to_save_issues: "Nepavyko iÅ¡saugoti %{count} darbo(ų) iÅ¡ %{total} pasirinktų: %{ids}." notice_failed_to_save_time_entries: "Nepavyko iÅ¡saugoti %{count} laiko įraÅ¡o(ų) iÅ¡ %{total} pasirinktų: %{ids}." notice_failed_to_save_members: "Nepavyko iÅ¡saugoti nario(ių): %{errors}." notice_account_pending: "JÅ«sų paskyra buvo sukurta ir dabar laukiama administratoriaus patvirtinimo." notice_default_data_loaded: Numatytoji konfigÅ«racija sÄ—kmingai įkrauta. notice_unable_delete_version: Neįmanoma iÅ¡trinti versijos. notice_unable_delete_time_entry: Neįmano iÅ¡trinti laiko žurnalo įraÅ¡o. notice_issue_done_ratios_updated: Darbo atlikimo progresas atnaujintas. notice_gantt_chart_truncated: "Grafikas buvo sutrumpintas, kadangi jis virÅ¡ija maksimalų (%{max}) leistinų atvaizduoti elementų kiekį" notice_issue_successful_create: "Darbas %{id} sukurtas." notice_issue_update_conflict: "Darbas buvo atnaujintas kito vartotojo kol jÅ«s jį redagavote." notice_account_deleted: "JÅ«sų paskyra panaikinta." notice_user_successful_create: "Vartotojas %{id} sukurtas." notice_new_password_must_be_different: Naujas slaptažodis turi skirtis nuo esamo slaptažodžio notice_import_finished: "%{count} įraÅ¡ai hbuvo suimportuoti" notice_import_finished_with_errors: "%{count} iÅ¡ %{total} įrašų nepavyko suimportuoti" error_can_t_load_default_data: "Numatytoji konfigÅ«racija negali bÅ«ti užkrauta: %{value}" error_scm_not_found: "Saugykloje nebuvo rastas toks įraÅ¡as ar revizija" error_scm_command_failed: "Ä®vyko klaida jungiantis prie saugyklos: %{value}" error_scm_annotate: "Ä®raÅ¡as neegzistuoja arba jo negalima atvaizduoti" error_scm_annotate_big_text_file: "Ä®raÅ¡o negalima atvaizduoti, nes jis virÅ¡ija maksimalų tekstinio failo dydį." error_issue_not_found_in_project: 'Darbas nerastas arba nepriklauso Å¡iam projektui' error_no_tracker_in_project: 'Joks pÄ—dsekys nesusietas su Å¡iuo projektu. PraÅ¡om patikrinti Projekto nustatymus.' error_no_default_issue_status: 'Nenustatyta numatytoji darbo bÅ«sena. PraÅ¡ome patikrinti nustatymus ("Administravimas -> Darbų bÅ«senos").' error_can_not_delete_custom_field: Negalima iÅ¡trinti kliento lauko error_can_not_delete_tracker_html: "Å is pÄ—dsekys turi įrašų ir todÄ—l negali bÅ«ti iÅ¡trintas.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Å i rolÄ— yra naudojama ir negali bÅ«ti iÅ¡trinta." error_can_not_reopen_issue_on_closed_version: 'Uždarytai versijai priskirtas darbas negali bÅ«ti atnaujintas.' error_can_not_archive_project: Å io projekto negalima suarchyvuoti error_issue_done_ratios_not_updated: "Ä®raÅ¡o baigtumo rodikliai nebuvo atnaujinti. " error_workflow_copy_source: 'PraÅ¡ome pasirinkti pirminį seklį arba rolÄ™, kurį norite kopijuoti' error_workflow_copy_target: 'PraÅ¡ome pasirinkti seklį(-ius) arba rolÄ™(-s) į kuriuos norite kopijuoti' error_unable_delete_issue_status: 'Negalima iÅ¡trinti darbo statuso (%{value})' error_unable_to_connect: "Negalima prisijungti (%{value})" error_attachment_too_big: "Å is failas negali bÅ«ti įkeltas, nes virÅ¡ija maksimalų (%{max_size}) leistinÄ… failo dydį" error_session_expired: "JÅ«sų sesija pasibaigÄ—. PraÅ¡ome prisijunti iÅ¡ naujo." warning_attachments_not_saved: "%{count} byla(-ų) negali bÅ«ti iÅ¡saugota." error_password_expired: "JÅ«sų slaptažodžio galiojimo laikas baigÄ—si arba administratorius reikalauja jÅ«sų jį pasikeisti" error_invalid_file_encoding: "Failas nÄ—ra tinkamas %{encoding} koduotÄ—s failas" error_invalid_csv_file_or_settings: "Failas nÄ—ra CSV failas arba neatitinka žemiau esanÄių nustatymų (%{value})" error_can_not_read_import_file: "IÅ¡kilo klaida skaitant importuojamÄ… failÄ…" error_attachment_extension_not_allowed: "Priedo plÄ—tinys %{extension} negalimas" error_ldap_bind_credentials: "Netinkamas LDAP Vartotojo vardas/Slaptažodis" mail_subject_lost_password: "JÅ«sų %{value} slaptažodis" mail_body_lost_password: 'NorÄ—dami pakeisti slaptažodį, spauskite nuorodÄ…:' mail_subject_register: "JÅ«sų %{value} paskyros aktyvavimas" mail_body_register: 'NorÄ—dami aktyvuoti paskyrÄ…, spauskite nuorodÄ…:' mail_body_account_information_external: "JÅ«s galite naudoti savo %{value} paskyrÄ…, norÄ—dami prisijungti." mail_body_account_information: Informacija apie JÅ«sų paskyrÄ… mail_subject_account_activation_request: "%{value} paskyros aktyvavimo praÅ¡ymas" mail_body_account_activation_request: "Užsiregistravo naujas vartotojas (%{value}). Jo paskyra laukia jÅ«sų patvirtinimo:" mail_subject_reminder: "%{count} darbų(ai) baigiasi per artimiausias %{days} dienų(as)" mail_body_reminder: "%{count} darbas(ai), kurie yra jums priskirti, baigiasi per artimiausias %{days} dienų(as):" mail_subject_wiki_content_added: "Wiki puslapis '%{id}' pridÄ—tas" mail_body_wiki_content_added: "Wiki puslapis '%{id}' buvo pridÄ—tas %{author}." mail_subject_wiki_content_updated: "Wiki puslapis '%{id}' buvo atnaujintas" mail_body_wiki_content_updated: "'%{id}' wiki puslapį atnaujino %{author}." mail_subject_security_notification: "Saugumo praneÅ¡imas" mail_body_security_notification_change: "%{field} buvo pakeista(as)." mail_body_security_notification_change_to: "%{field} buvo pakeista(as) į %{value}." mail_body_security_notification_add: "Prie %{field} pridÄ—ta %{value}." mail_body_security_notification_remove: "IÅ¡ %{field} paÅ¡alinta vertÄ— %{value}." mail_body_security_notification_notify_enabled: "Elektroninis paÅ¡tas %{value} dabar gauna praneÅ¡imus." mail_body_security_notification_notify_disabled: "Elektroninis paÅ¡tas %{value} nebegauna praneÅ¡imų." mail_body_settings_updated: "Tokie nustatymai buvo pakeisti:" field_name: Pavadinimas field_description: ApraÅ¡as field_summary: Santrauka field_is_required: Reikalaujama field_firstname: Vardas field_lastname: PavardÄ— field_mail: El. paÅ¡tas field_address: El. paÅ¡tas field_filename: Failas field_filesize: Dydis field_downloads: Atsiuntimai field_author: Autorius field_created_on: Sukurta field_updated_on: Atnaujintas(a) field_closed_on: Uždarytas field_field_format: Formatas field_is_for_all: Visiems projektams field_possible_values: Galimos reikÅ¡mÄ—s field_regexp: Pastovi iÅ¡raiÅ¡ka field_min_length: Minimalus ilgis field_max_length: Maksimalus ilgis field_value: VertÄ— field_category: Kategorija field_title: Pavadinimas field_project: Projektas field_issue: Darbas field_status: BÅ«sena field_notes: Pastabos field_is_closed: Darbas uždarytas field_is_default: Numatytoji vertÄ— field_tracker: PÄ—dsekys field_subject: Tema field_due_date: Užbaigimo data field_assigned_to: Paskirtas field_priority: Prioritetas field_fixed_version: TikslinÄ— versija field_user: Vartotojas field_principal: Vardas field_role: Vaidmuo field_homepage: Pagrindinis puslapis field_is_public: VieÅ¡as field_parent: Priklauso projektui field_is_in_roadmap: Darbai rodomi veiklos grafike field_login: Registracijos vardas field_mail_notification: Elektroninio paÅ¡to praneÅ¡imai field_admin: Administratorius field_last_login_on: Paskutinis prisijungimas field_language: Kalba field_effective_date: Data field_password: Slaptažodis field_new_password: Naujas slaptažodis field_password_confirmation: Patvirtinimas field_version: Versija field_type: Tipas field_host: Pagrindinis kompiuteris field_port: Prievadas field_account: Paskyra field_base_dn: Bazinis skiriamasis vardas (base DN) field_attr_login: Registracijos vardo požymis (login) field_attr_firstname: Vardo požymis field_attr_lastname: PavardÄ—s požymis field_attr_mail: Elektroninio paÅ¡to požymis field_onthefly: Automatinis vartotojų registravimas field_start_date: PradÄ—ti field_done_ratio: "% atlikta" field_auth_source: AutentiÅ¡kumo nustatymo bÅ«das field_hide_mail: SlÄ—pti mano elektroninio paÅ¡to adresÄ… field_comments: Komentaras field_url: URL field_start_page: Pradžios puslapis field_subproject: Sub-projektas field_hours: Valandos field_activity: Veikla field_spent_on: Data field_identifier: Identifikatorius field_is_filter: Naudojamas kaip filtras field_issue_to: SusijÄ™s darbas field_delay: Užlaikymas field_assignable: Darbai gali bÅ«ti paskirti Å¡iam vaidmeniui field_redirect_existing_links: Peradresuokite egzistuojanÄias sÄ…sajas field_estimated_hours: Numatyta trukmÄ— field_column_names: Stulpeliai field_time_entries: Praleistas laikas field_time_zone: Laiko juosta field_searchable: Randamas field_default_value: Numatytoji vertÄ— field_comments_sorting: Rodyti komentarus field_parent_title: Pagrindinis puslapis field_editable: Redaguojamas field_watcher: StebÄ—tojas field_content: Turinys field_group_by: Sugrupuoti pagal field_sharing: Dalijimasis field_parent_issue: PagrindinÄ— užduotis field_member_of_group: "Priskirtojo grupÄ—" field_assigned_to_role: "Priskirtojo rolÄ—" field_text: Teksto laukas field_visible: Matomas field_warn_on_leaving_unsaved: "Ä®spÄ—ti mane, kai paliekamas puslapis su neiÅ¡saugotu tekstu" field_issues_visibility: Darbų matomumas field_is_private: Privatus field_commit_logs_encoding: Commit žinuÄių koduotÄ— field_scm_path_encoding: SCM kelio koduotÄ— field_path_to_repository: Saugyklos kelias field_root_directory: Å akninis katalogas field_cvsroot: CVSROOT field_cvs_module: Modulis field_repository_is_default: PagrindinÄ— saugykla field_multiple: Keletas reikÅ¡mių field_auth_source_ldap_filter: LDAP filtras field_core_fields: Standartiniai laukai field_timeout: "Timeout (po sek.)" field_board_parent: Pagrindinis forumas field_private_notes: PrivaÄios žinutÄ—s field_inherit_members: PaveldÄ—ti narius field_generate_password: Sugeneruoti slaptažodį field_must_change_passwd: Privalo pakeisti slaptažodį kito prisijungimo metu field_default_status: Numatytoji bÅ«sena field_users_visibility: Vartotojų matomumas field_time_entries_visibility: Laiko įrašų matomumas field_total_estimated_hours: Visas įsivertinas laikas field_default_version: Numatytoji versija field_remote_ip: IP adresas setting_app_title: Programos pavadinimas setting_welcome_text: Pasveikinimas setting_default_language: Numatytoji kalba setting_login_required: Reikalingas autentiÅ¡kumo nustatymas setting_self_registration: Savi-registracija setting_attachment_max_size: Priedo maksimalus dydis setting_issues_export_limit: Darbų eksportavimo riba setting_mail_from: IÅ¡leidimo elektroninio paÅ¡to adresas setting_plain_text_mail: Tik tekstas laiÅ¡ke (be HTML) setting_host_name: Pagrindinio kompiuterio pavadinimas ir kelias setting_text_formatting: Teksto formatavimas setting_wiki_compression: Wiki istorijos suspaudimas setting_feeds_limit: Maksimalus objektų kiekis Atom sklaidos kanale setting_default_projects_public: Nauji projektai yra vieÅ¡i pagal nutylÄ—jimÄ… setting_autofetch_changesets: Automatinis pakeitimų atnaujinimas setting_sys_api_enabled: Ä®galinti WS saugyklos valdymui setting_commit_ref_keywords: Nuoroda į reikÅ¡minius žodžius setting_commit_fix_keywords: ReikÅ¡minių žodžių fiksavimas setting_autologin: Automatinis prisijungimas setting_date_format: Datos formatas setting_time_format: Laiko formatas setting_cross_project_issue_relations: Leisti tarp-projektinius darbų ryÅ¡ius setting_cross_project_subtasks: Leisti susieti skirtingų projektų užduoÄių dalis setting_issue_list_default_columns: Numatytieji stulpeliai darbų sÄ…raÅ¡e setting_repositories_encodings: PridÄ—tų failų ir saugyklų Å¡ifravimas setting_emails_header: LaiÅ¡ko antraÅ¡tÄ— setting_emails_footer: LaiÅ¡ko paraÅ¡tÄ— setting_protocol: Protokolas setting_per_page_options: Ä®rašų puslapyje nustatymas setting_user_format: Vartotojo atvaizdavimo formatas setting_activity_days_default: Atvaizduojamos dienos projekto veikloje setting_display_subprojects_issues: Pagal nutylÄ—jimÄ…, rodyti sub-projektų darbus pagrindiniame projekte setting_enabled_scm: Ä®galinti SCM setting_mail_handler_body_delimiters: "Trumpinti laiÅ¡kus po vienos iÅ¡ Å¡ių eiluÄių" setting_mail_handler_api_enabled: Ä®galinti WS įeinantiems laiÅ¡kams setting_mail_handler_api_key: Ä®einanÄių laiÅ¡kų WS API raktas setting_sys_api_key: Repository management WS API key setting_sequential_project_identifiers: Generuoti nuoseklius projekto identifikatorius setting_gravatar_enabled: Naudoti Gravatar vartotojo paveiksliukus setting_gravatar_default: Gravatar paveiksliukas pagal nutylÄ—jimÄ… setting_diff_max_lines_displayed: Maksimalus rodomas pakeitimų eiluÄių skaiÄius setting_file_max_size_displayed: Maksimalus tekstinių failų dydis rodomas vienoje eilutÄ—je setting_repository_log_display_limit: Maksimalus revizijų skaiÄius rodomas failo žurnale setting_password_max_age: Reikalauti slaptažodžio pakeitimo po setting_password_min_length: Minimalus slaptažodžio ilgis setting_lost_password: Leisti slaptažodžio atstatymÄ… elektroninu laiÅ¡ku setting_new_project_user_role_id: Vaidmuo suteiktas vartotojui, kuris nÄ—ra administratorius ir kuris sukuria projektÄ… setting_default_projects_modules: Pagal nutylÄ—jimÄ… naujame projekte įjungti moduliai setting_issue_done_ratio: Darbo įvykdymo progresÄ… skaiÄiuoti pagal setting_issue_done_ratio_issue_field: Naudoti darbo laukÄ… setting_issue_done_ratio_issue_status: Naudoti darbo statusÄ… setting_start_of_week: SavaitÄ—s pradžios diena setting_rest_api_enabled: Ä®jungti REST tinklo servisÄ… (WS) setting_cache_formatted_text: Laikyti atmintyje formatuotÄ… tekstÄ… setting_default_notification_option: Numatytosios praneÅ¡imų nuostatos setting_commit_logtime_enabled: Ä®jungti laiko registravimÄ… setting_commit_logtime_activity_id: Laiko įrašų veikla setting_gantt_items_limit: Maksimalus rodmenų skaiÄius rodomas Gantt'o grafike setting_issue_group_assignment: Leisti darbo priskirimÄ… grupÄ—ms setting_default_issue_start_date_to_creation_date: Naudoti dabartinÄ™ datÄ… kaip naujų darbų pradžios datÄ… setting_commit_cross_project_ref: Leisti kurti nuorodÄ… darbams iÅ¡ visų kitų projektų setting_unsubscribe: Leisti vartotojams panaikinti savo paskyrÄ… setting_session_lifetime: Sesijos maksimalus galiojimas setting_session_timeout: Sesijos neveiklumo laiko tarpas setting_thumbnails_enabled: Rodyti sumažintus priedų atvaizdus setting_thumbnails_size: Sumažinto atvaizdo dydis (pikseliais) setting_non_working_week_days: Nedarbo dienos setting_jsonp_enabled: Ä®galinti JSONP palaikymÄ… setting_default_projects_tracker_ids: Numatytieji pÄ—dsekiai naujiems projektams setting_mail_handler_excluded_filenames: Neįtraukti priedų su pavadinimu setting_force_default_language_for_anonymous: Priverstinai nustatyti numatytÄ…jÄ… kalbÄ… anoniminiams vartotojams setting_force_default_language_for_loggedin: Priverstinai nustatyti numatytÄ…jÄ… kalbÄ… prisijungusiems vartotojams setting_link_copied_issue: Susieti darbus kopijavimo metu setting_max_additional_emails: Maksimalus skaiÄius papildomų elektronikių laiÅ¡kų adresų setting_search_results_per_page: PaieÅ¡kos rezultatai puslapyje setting_attachment_extensions_allowed: Leistini plÄ—tiniai setting_attachment_extensions_denied: Neleistini plÄ—tiniai permission_add_project: Sukurti projektÄ… permission_add_subprojects: Kurti sub-projektus permission_edit_project: Redaguoti projektÄ… permission_close_project: Uždaryti / atkurti projektÄ… permission_select_project_modules: Parinkti projekto modulius permission_manage_members: Valdyti narius permission_manage_project_activities: Valdyti projekto veiklas permission_manage_versions: Valdyti versijas permission_manage_categories: Valdyti darbų kategorijas permission_view_issues: PeržiÅ«rÄ—ti Darbus permission_add_issues: Sukurti darbus permission_edit_issues: Redaguoti darbus permission_copy_issues: Kopijuoti darbus permission_manage_issue_relations: Valdyti darbų ryÅ¡ius permission_set_issues_private: Nustatyti darbÄ… vieÅ¡u ar privaÄiu permission_set_own_issues_private: Nustatyti savo darbus vieÅ¡ais ar privaÄiais permission_add_issue_notes: RaÅ¡yti pastabas permission_edit_issue_notes: Redaguoti pastabas permission_edit_own_issue_notes: Redaguoti savo pastabas permission_view_private_notes: Matyti privaÄias pastabas permission_set_notes_private: Nustatyti pastabas privaÄiomis permission_delete_issues: PaÅ¡alinti darbus permission_manage_public_queries: Valdyti vieÅ¡as užklausas permission_save_queries: IÅ¡saugoti užklausas permission_view_gantt: Matyti Gantt grafikÄ… permission_view_calendar: Matyti kalendorių permission_view_issue_watchers: Matyti stebÄ—tojų sÄ…rašą permission_add_issue_watchers: PridÄ—ti stebÄ—tojus permission_delete_issue_watchers: PaÅ¡alinti stebÄ—tojus permission_log_time: Regsitruoti dirbtÄ… laikÄ… permission_view_time_entries: Matyti dirbtÄ… laikÄ… permission_edit_time_entries: Redaguoti laiko įraÅ¡us permission_edit_own_time_entries: Redaguoti savo laiko įraÅ¡us permission_manage_news: Valdyti naujienas permission_comment_news: Komentuoti naujienas permission_view_documents: Matyti dokumentus permission_add_documents: PridÄ—ti dokumentus permission_edit_documents: Redaguoti dokumentus permission_delete_documents: Trinti dokumentus permission_manage_files: Valdyti failus permission_view_files: Matyti failus permission_manage_wiki: Valdyti wiki permission_rename_wiki_pages: Pervadinti wiki puslapius permission_delete_wiki_pages: PaÅ¡alinti wiki puslapius permission_view_wiki_pages: Matyti wiki permission_view_wiki_edits: Matyti wiki istorijÄ… permission_edit_wiki_pages: Redaguoti wiki puslapius permission_delete_wiki_pages_attachments: PaÅ¡alinti priedus permission_protect_wiki_pages: Apsaugoti wiki puslapius permission_manage_repository: Valdyti saugyklÄ… permission_browse_repository: PeržiÅ«rÄ—ti saugyklÄ… permission_view_changesets: Matyti pakeitimus permission_commit_access: Prieiga prie pakeitimų permission_manage_boards: Valdyti forumus permission_view_messages: Matyti praneÅ¡imus permission_add_messages: Skelbti praneÅ¡imus permission_edit_messages: Redaguoti praneÅ¡imus permission_edit_own_messages: Redaguoti savo praneÅ¡imus permission_delete_messages: PaÅ¡alinti praneÅ¡imus permission_delete_own_messages: PaÅ¡alinti savo praneÅ¡imus permission_export_wiki_pages: Eksportuoti wiki puslapius permission_manage_subtasks: Valdyti darbo dalis permission_manage_related_issues: Tvarkyti susietus darbus permission_import_issues: Importuoti darbus project_module_issue_tracking: Darbų pÄ—dsekys project_module_time_tracking: Laiko pÄ—dsekys project_module_news: Naujienos project_module_documents: Dokumentai project_module_files: Failai project_module_wiki: Wiki project_module_repository: Saugykla project_module_boards: Forumai project_module_calendar: Kalendorius project_module_gantt: Gantt label_user: Vartotojas label_user_plural: Vartotojai label_user_new: Naujas vartotojas label_user_anonymous: Anonimas label_project: Projektas label_project_new: Naujas projektas label_project_plural: Projektai label_x_projects: zero: nÄ—ra projektų one: 1 projektas other: "%{count} projektų(ai)" label_project_all: Visi Projektai label_project_latest: Naujausi projektai label_issue: Darbas label_issue_new: Naujas darbas label_issue_plural: Darbai label_issue_view_all: PeržiÅ«rÄ—ti visus darbus label_issues_by: "Darbai pagal %{value}" label_issue_added: Darbas pridÄ—tas label_issue_updated: Darbas atnaujintas label_issue_note_added: Pastaba pridÄ—ta label_issue_status_updated: Statusas atnaujintas label_issue_assigned_to_updated: Paskirtasis atnaujintas label_issue_priority_updated: Prioritetas atnaujintas label_document: Dokumentas label_document_new: Naujas dokumentas label_document_plural: Dokumentai label_document_added: Dokumentas pridÄ—tas label_role: Vaidmuo label_role_plural: Vaidmenys label_role_new: Naujas vaidmuo label_role_and_permissions: Vaidmenys ir leidimai label_role_anonymous: Anonimas label_role_non_member: NÄ—ra narys label_member: Narys label_member_new: Naujas narys label_member_plural: Nariai label_tracker: PÄ—dsekys label_tracker_plural: PÄ—dsekiai label_tracker_new: Naujas pÄ—dsekys label_workflow: Darbų eiga label_issue_status: Darbo bÅ«sena label_issue_status_plural: Darbų bÅ«senos label_issue_status_new: Nauja bÅ«sena label_issue_category: Darbo kategorija label_issue_category_plural: Darbo kategorijos label_issue_category_new: Nauja kategorija label_custom_field: Kliento laukas label_custom_field_plural: Kliento laukai label_custom_field_new: Naujas kliento laukas label_enumerations: IÅ¡vardinimai label_enumeration_new: Nauja vertÄ— label_information: Informacija label_information_plural: Informacija label_register: Užsiregistruoti label_password_lost: Prarastas slaptažodis label_password_required: NorÄ—dami tÄ™sti, patvirtinkite savo slaptažodį label_home: Pagrindinis label_my_page: Mano puslapis label_my_account: Mano paskyra label_my_projects: Mano projektai label_administration: Administravimas label_login: Prisijungti label_logout: Atsijungti label_help: Pagalba label_reported_issues: PraneÅ¡ti darbai label_assigned_issues: Priskirti darbai label_assigned_to_me_issues: Darbai, priskirti man label_registered_on: Užregistruota label_activity: Veikla label_user_activity: "%{value} veikla" label_new: Naujas label_logged_as: PrisijungÄ™s kaip label_environment: Aplinka label_authentication: AutentiÅ¡kumo nustatymas label_auth_source: AutentiÅ¡kumo nustatymo bÅ«das label_auth_source_new: Naujas autentiÅ¡kumo nustatymo bÅ«das label_auth_source_plural: AutentiÅ¡kumo nustatymo bÅ«dai label_subproject_plural: Sub-projektai label_subproject_new: Naujas sub-projektas label_and_its_subprojects: "%{value} projektas ir jo sub-projektai" label_min_max_length: Min - Maks ilgis label_list: SÄ…raÅ¡as label_date: Data label_integer: Sveikasis skaiÄius label_float: Slankiojo kablelio skaiÄius label_boolean: BLoginis label_string: Tekstas label_text: Ilgas tekstas label_attribute: Požymis label_attribute_plural: Požymiai label_no_data: NÄ—ra kÄ… atvaizduoti label_change_status: Pakeitimo bÅ«sena label_history: Istorija label_attachment: Failas label_attachment_new: Naujas failas label_attachment_delete: PaÅ¡alinkite failÄ… label_attachment_plural: Failai label_file_added: Failas pridÄ—tas label_report: Ataskaita label_report_plural: Ataskaitos label_news: Naujiena label_news_new: PridÄ—ti naujienas label_news_plural: Naujienos label_news_latest: PaskutinÄ—s naujienos label_news_view_all: PeržiÅ«rÄ—ti visas naujienas label_news_added: Naujiena pridÄ—ta label_news_comment_added: Prie naujienos pridÄ—tas komentaras label_settings: Nustatymai label_overview: Apžvalga label_version: Versija label_version_new: Nauja versija label_version_plural: Versijos label_close_versions: Uždaryti užbaigtas versijas label_confirmation: Patvirtinimas label_export_to: 'Eksportuoti į:' label_read: Skaitykite... label_public_projects: VieÅ¡i projektai label_open_issues: atidaryta label_open_issues_plural: atidaryti label_closed_issues: uždaryta label_closed_issues_plural: uždaryti label_x_open_issues_abbr: zero: 0 atidarytų one: 1 atidarytas other: "%{count} atidarytų(i)" label_x_closed_issues_abbr: zero: 0 uždarytų one: 1 uždarytas other: "%{count} uždarytų(i)" label_x_issues: zero: 0 darbų one: 1 darbas other: "%{count} darbų(ai)" label_total: IÅ¡ viso label_total_plural: IÅ¡ viso label_total_time: Visas laikas label_permissions: Leidimai label_current_status: DabartinÄ— bÅ«sena label_new_statuses_allowed: Naujos bÅ«senos galimos label_all: visi label_any: bet kuris label_none: joks label_nobody: niekas label_next: Kitas label_previous: Ankstesnis label_used_by: Naudotas label_details: DetalÄ—s label_add_note: PridÄ—kite pastabÄ… label_calendar: Kalendorius label_months_from: mÄ—nesiai nuo label_gantt: Gantt label_internal: Vidinis label_last_changes: "paskutiniai %{count} pokyÄiai(-ių)" label_change_view_all: PeržiÅ«rÄ—ti visus pakeitimus label_comment: Komentaras label_comment_plural: Komentarai label_x_comments: zero: 0 komentarų one: 1 komentaras other: "%{count} komentarų(-ai)" label_comment_add: PridÄ—kite komentarÄ… label_comment_added: Komentaras pridÄ—tas label_comment_delete: PaÅ¡alinti komentarus label_query: IÅ¡saugota užklausa label_query_plural: IÅ¡saugotos užklausos label_query_new: Nauja užklausa label_my_queries: Mano sukurtos užklausos label_filter_add: PridÄ—ti filtrÄ… label_filter_plural: Filtrai label_equals: yra label_not_equals: nÄ—ra label_in_less_than: mažiau nei label_in_more_than: daugiau nei label_in_the_next_days: per ateinanÄias label_in_the_past_days: per paskutines label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: tarp label_in: per label_today: Å¡iandien label_yesterday: vakar label_this_week: Å¡iÄ… savaitÄ™ label_last_week: praeita savaitÄ— label_last_n_weeks: "paskutinÄ—s %{count} sav." label_last_n_days: "paskutinÄ—s %{count} dienų" label_this_month: Å¡is mÄ—nuo label_last_month: praeitas mÄ—nuo label_this_year: Å¡iemet label_date_range: Dienų diapazonas label_less_than_ago: vÄ—liau nei prieÅ¡ dienų label_more_than_ago: anksÄiau nei prieÅ¡ dienų label_ago: dienų prieÅ¡ label_contains: turi label_not_contains: neturi label_any_issues_in_project: bet kurie darbai projekte label_any_issues_not_in_project: bet kurie ne projekto darbai label_no_issues_in_project: projekte nÄ—ra darbų label_any_open_issues: bet kurie atviri darbai label_no_open_issues: nÄ—ra atvirų darbų label_day_plural: dienų(-os) label_repository: Saugykla label_repository_new: Nauja saugykla label_repository_plural: Saugyklos label_branch: Å aka label_tag: Tag'as label_revision: Revizija label_revision_plural: Revizijos label_revision_id: "Revizija %{value}" label_associated_revisions: Susijusios revizijos label_added: pridÄ—tas label_modified: pakeistas label_copied: nukopijuotas label_renamed: pervardintas label_deleted: paÅ¡alintas label_latest_revision: PaskutinÄ— revizija label_latest_revision_plural: PaskutinÄ—s revizijos label_view_revisions: PeržiÅ«rÄ—ti revizijas label_view_all_revisions: PeržiÅ«rÄ—ti visas revizijas label_max_size: Maksimalus dydis label_roadmap: Veiklos grafikas label_roadmap_due_in: "Baigiasi po %{value}" label_roadmap_overdue: "%{value} vÄ—luojama" label_roadmap_no_issues: Å iai versijai nepriskirtas joks darbas label_search: IeÅ¡koti label_result_plural: Rezultatai label_all_words: Visi žodžiai label_wiki: Wiki label_wiki_edit: Wiki redakcija label_wiki_edit_plural: Wiki redakcijos label_wiki_page: Wiki puslapis label_wiki_page_plural: Wiki puslapiai label_index_by_title: Rūšiuoti pagal pavadinimÄ… label_index_by_date: Rūšiuoti pagal datÄ… label_current_version: Einamoji versija label_preview: PeržiÅ«ra label_feed_plural: Kanalai label_changes_details: Visų pakeitimų detalÄ—s label_issue_tracking: Darbų sekimas label_spent_time: Dirbtas laikas label_total_spent_time: Visas dirbtas laikas label_f_hour: "%{value} valanda" label_f_hour_plural: "%{value} valandų(-os)" label_f_hour_short: "%{value} h" label_time_tracking: Laiko apskaita label_change_plural: Pakeitimai label_statistics: Statistika label_commits_per_month: Ä®kÄ—limai per mÄ—nesį label_commits_per_author: Ä®kÄ—limai pagal autorių label_diff: skirt. label_view_diff: Skirtumų peržiÅ«ra label_diff_inline: įterptas label_diff_side_by_side: Å¡alia label_options: Pasirinkimai label_copy_workflow_from: Kopijuoti darbų eiga iÅ¡ label_permissions_report: Leidimų apžvalga label_watched_issues: Stebimi darbai label_related_issues: SusijÄ™ darbai label_applied_status: Taikomoji bÅ«sena label_loading: Kraunama... label_relation_new: Naujas ryÅ¡ys label_relation_delete: PaÅ¡alinti ryšį label_relates_to: Susietas su label_duplicates: Dubliuoja label_duplicated_by: Dubliuojasi su label_blocks: Blokuoja label_blocked_by: Blokuojamas label_precedes: Pradedamas vÄ—liau label_follows: Užbaigiamas anksÄiau label_copied_to: Nukopijuota į label_copied_from: Nukopijuota iÅ¡ label_stay_logged_in: Likti prisijungus label_disabled: iÅ¡jungta(-as) label_show_completed_versions: Rodyti užbaigtas versijas label_me: aÅ¡ label_board: Forumas label_board_new: Naujas forumas label_board_plural: Forumai label_board_locked: Užrakinta label_board_sticky: Lipnus label_topic_plural: Temos label_message_plural: PraneÅ¡imai label_message_last: Paskutinis praneÅ¡imas label_message_new: Naujas praneÅ¡imas label_message_posted: PraneÅ¡imas pridÄ—tas label_reply_plural: Atsakymai label_send_information: Nusiųsti vartotojui paskyros informacijÄ… label_year: Metai label_month: MÄ—nuo label_week: SavaitÄ— label_date_from: Nuo label_date_to: Iki label_language_based: Pagrįsta vartotojo kalba label_sort_by: "Rūšiuoti pagal %{value}" label_send_test_email: Nusiųsti bandomÄ…jį laiÅ¡kÄ… label_feeds_access_key: Atom prieigos raktas label_missing_feeds_access_key: TrÅ«ksta Atom prieigos rakto label_feeds_access_key_created_on: "Atom prieigos raktas sukurtas prieÅ¡ %{value}" label_module_plural: Moduliai label_added_time_by: "%{author} pridÄ—jo prieÅ¡ %{age}" label_updated_time_by: "%{author} atnaujino prieÅ¡ %{age}" label_updated_time: "Atnaujinta prieÅ¡ %{value}" label_jump_to_a_project: Å uolis į projektÄ…... label_file_plural: Failai label_changeset_plural: Pakeitimų rinkiniai label_default_columns: Numatytieji stulpeliai label_no_change_option: (Jokio pakeitimo) label_bulk_edit_selected_issues: MasiÅ¡kai redaguoti pasirinktus darbus label_bulk_edit_selected_time_entries: MasiÅ¡kai redaguotumÄ—te pasirinktus laiko įraÅ¡us label_theme: Tema label_default: Numatyta(-as) label_search_titles_only: IeÅ¡koti tiktai pavadinimuose label_user_mail_option_all: "Bet kokiam įvykiui visuose mano projektuose" label_user_mail_option_selected: "Bet kokiam įvykiui tiktai pasirinktuose projektuose ..." label_user_mail_option_none: "Jokių įvykių" label_user_mail_option_only_my_events: "Tiktai dalykai, kuriuos stebiu arba esu įtrauktas" label_user_mail_no_self_notified: "Nenoriu bÅ«ti informuotas apie pakeitimus, kuriuos pats atlieku" label_registration_activation_by_email: paskyros aktyvacija per e-paÅ¡tÄ… label_registration_manual_activation: rankinÄ— paskyros aktyvacija label_registration_automatic_activation: automatinÄ— paskyros aktyvacija label_display_per_page: "%{value} įrašų puslapyje" label_age: Amžius label_change_properties: Pakeisti nustatymus label_general: Bendri(-as) label_scm: SCM label_plugins: Ä®skiepiai label_ldap_authentication: LDAP autentifikacija label_downloads_abbr: Siunt. label_optional_description: Laisvai pasirenkamas apibÅ«dinimas label_add_another_file: PridÄ—ti kitÄ… failÄ… label_preferences: SavybÄ—s label_chronological_order: Chronologine tvarka label_reverse_chronological_order: Atbuline chronologine tvarka label_incoming_emails: Ä®einantys laiÅ¡kai label_generate_key: Generuoti raktÄ… label_issue_watchers: StebÄ—tojai label_example: Pavyzdys label_display: Demonstruoti label_sort: Rūšiuoti label_ascending: DidÄ—jantis label_descending: Mažėjantis label_date_from_to: Nuo %{start} iki %{end} label_wiki_content_added: Wiki puslapis pridÄ—tas label_wiki_content_updated: Wiki puslapis atnaujintas label_group: GrupÄ— label_group_plural: GrupÄ—s label_group_new: Nauja grupÄ— label_group_anonymous: Anoniminiai vartotojai label_group_non_member: Nepriklausantys projektui vartotojai label_time_entry_plural: Sprendimo laikas label_version_sharing_none: Nesidalinama label_version_sharing_descendants: Su sub-projektais label_version_sharing_hierarchy: Su projekto hierarchija label_version_sharing_tree: Su projekto medžiu label_version_sharing_system: Su visais projektais label_update_issue_done_ratios: Atnaujinti darbo atlikimo progresÄ… label_copy_source: Å altinis label_copy_target: Tikslas label_copy_same_as_target: Toks pat kaip tikslas label_display_used_statuses_only: Rodyti tik tuos statusus, kurie naudojami Å¡io pÄ—dsekio label_api_access_key: API prieigos raktas label_missing_api_access_key: TrÅ«ksta API prieigos rakto label_api_access_key_created_on: "API prieigos raktas sukurtas prieÅ¡ %{value}" label_profile: Profilis label_subtask_plural: Darbo dalys label_project_copy_notifications: Siųsti praneÅ¡imus į e-paÅ¡tÄ… kopijuojant projektÄ… label_principal_search: "IeÅ¡koti vartotojo arba grupÄ—s:" label_user_search: "IeÅ¡koti vartotojo:" label_additional_workflow_transitions_for_author: Papildomi darbų eigos variantai leistini, kai vartotojas yra darbo autorius label_additional_workflow_transitions_for_assignee: Papildomi darbų eigos variantai leistini, kai darbas paskirtas vartotojui label_issues_visibility_all: Visi darbai label_issues_visibility_public: Visi vieÅ¡i darbai label_issues_visibility_own: Darbai, sukurti vartotojo arba jam priskirti label_git_report_last_commit: Nurodyti paskutinį failų ir katalogų pakeitimÄ… label_parent_revision: PirminÄ— revizija label_child_revision: Sekanti revizija label_export_options: "%{export_format} eksportavimo nustatymai" label_copy_attachments: Kopijuoti priedus label_copy_subtasks: Kopijuoti darbo dalis label_item_position: "%{position}/%{count}" label_completed_versions: Užbaigtos versijos label_search_for_watchers: IeÅ¡koti vartotojų kuriuos įtraukti kaip stebÄ—tojus label_session_expiration: BaigÄ—si sujungimo sesija label_status_transitions: Darbų eiga label_fields_permissions: Leidimai label_readonly: Tik peržiÅ«ra label_required: Privaloma(s) label_hidden: PaslÄ—ptas label_attribute_of_project: "Projekto %{name}" label_attribute_of_issue: "Darbo %{name}" label_attribute_of_author: "Autoriaus %{name}" label_attribute_of_assigned_to: "Paskirto %{name}" label_attribute_of_user: "Vartotojo %{name}" label_attribute_of_fixed_version: "Versijos %{name}" label_cross_project_descendants: Su sub-projektais label_cross_project_tree: Su projekto medžiu label_cross_project_hierarchy: Su projekto hierarchija label_cross_project_system: Su visais projektais label_gantt_progress_line: Progreso linija label_visibility_private: tik man label_visibility_roles: tik Å¡ioms rolÄ—ms label_visibility_public: bet kuriam vartotojui label_link: Nuoroda label_only: tik label_drop_down_list: pasirinkimų sÄ…raÅ¡as label_checkboxes: žymimieji langeliai label_radio_buttons: akutÄ—s label_link_values_to: Nuorodos vertÄ—s į URL label_custom_field_select_type: Pasirinkite objektÄ…, su kuriuo kliento laukas bus susietas label_check_for_updates: Tikrinti, ar yra atnaujinimų label_latest_compatible_version: Naujausia suderinama versija label_unknown_plugin: Nežinomas įskiepis label_add_projects: PridÄ—ti projektus label_users_visibility_all: Visi aktyvÅ«s vartotojai label_users_visibility_members_of_visible_projects: Visų prieinamų projektų vartotojai label_edit_attachments: Redaguoti prisegtus failus label_link_copied_issue: Susieti nukopijuotÄ… darbÄ… label_ask: Klausti label_search_attachments_yes: IeÅ¡koti priedų pavadinimuose ir jų apraÅ¡ymuose label_search_attachments_no: NeieÅ¡koti prieduose label_search_attachments_only: IeÅ¡koti tik prieduose label_search_open_issues_only: Tik atidaryti darbai label_email_address_plural: E-paÅ¡tai label_email_address_add: E-paÅ¡to adresas label_enable_notifications: Ä®jungti praneÅ¡imus label_disable_notifications: IÅ¡jungti praneÅ¡imus label_blank_value: tuÅ¡Äias(ia) label_parent_task_attributes: PagrindinÄ—s užduoties požymiai label_parent_task_attributes_derived: ApskaiÄiuota iÅ¡ darbo dalių label_parent_task_attributes_independent: Nepriklauso nuo darbo dalių label_time_entries_visibility_all: Visi laiko įraÅ¡ai label_time_entries_visibility_own: Laiko įraÅ¡ai įraÅ¡yti vartotojo label_member_management: Vartotojų valdymas label_member_management_all_roles: Visos rolÄ—s label_member_management_selected_roles_only: Tik Å¡ios rolÄ—s label_import_issues: Importuoti darbus label_select_file_to_import: Pasirinkite failÄ… importavimui label_fields_separator: Lauko skirtukas label_fields_wrapper: Lauko aplankas label_encoding: Kodavimas label_comma_char: Kablelis label_semi_colon_char: KabliataÅ¡kis label_quote_char: KabutÄ—s label_double_quote_char: Apostrofas label_fields_mapping: Laukų sujungimas label_file_content_preview: Failo turinio peržiÅ«ra label_create_missing_values: Sukurti trÅ«kstamas reikÅ¡mes label_api: API label_field_format_enumeration: Raktas/reikÅ¡mÄ— sÄ…raÅ¡as label_default_values_for_new_users: Numatytosios reikÅ¡mÄ—s naujiems vartotojams button_login: Prisijungti button_submit: Pateikti button_save: IÅ¡saugoti button_check_all: ŽymÄ—ti visus button_uncheck_all: AtžymÄ—ti visus button_collapse_all: Sutraukti visus button_expand_all: IÅ¡skleisti visus button_delete: PaÅ¡alinti button_create: Sukurti button_create_and_continue: Sukurti ir tÄ™sti button_test: Testas button_edit: Redaguoti button_edit_associated_wikipage: "Redaguoti susijusį Wiki puslapį: %{page_title}" button_add: PridÄ—ti button_change: Keisti button_apply: Pritaikyti button_clear: IÅ¡valyti button_lock: Rakinti button_unlock: Atrakinti button_download: Atsisiųsti button_list: SÄ…raÅ¡as button_view: ŽiÅ«rÄ—ti button_move: Perkelti button_move_and_follow: Perkelti ir sekti button_back: Atgal button_cancel: AtÅ¡aukti button_activate: Aktyvinti button_sort: Rūšiuoti button_log_time: Registruoti laikÄ… button_rollback: Grąžinti į Å¡iÄ… versijÄ… button_watch: StebÄ—ti button_unwatch: NestebÄ—ti button_reply: Atsakyti button_archive: Archyvuoti button_unarchive: IÅ¡pakuoti button_reset: Atstatyti button_rename: RPervadinti button_change_password: Pakeisti slaptažodį button_copy: Kopijuoti button_copy_and_follow: Kopijuoti ir sekti button_annotate: RaÅ¡yti pastabÄ… button_update: Atnaujinti button_configure: KonfigÅ«ruoti button_quote: Cituoti button_show: Rodyti button_hide: SlÄ—pti button_edit_section: Redaguoti šį skirsnį button_export: Eksportuoti button_delete_my_account: Panaikinti savo paskyrÄ… button_close: Uždaryti button_reopen: Atidaryti iÅ¡ naujo button_import: Importuoti status_active: aktyvus status_registered: užregistruotas status_locked: užrakintas project_status_active: aktyvus project_status_closed: uždarytas project_status_archived: archyvuotas version_status_open: atidaryta version_status_locked: užrakinta version_status_closed: uždaryta field_active: Aktyvus text_select_mail_notifications: IÅ¡rinkite veiksmus, apie kuriuos bÅ«tų praneÅ¡ta elektroniniu paÅ¡tu. text_regexp_info: pvz. ^[A-Z0-9]+$ text_project_destroy_confirmation: Ar esate įsitikinÄ™s, kad norite paÅ¡alinti šį projektÄ… ir visus susijusius duomenis? text_subprojects_destroy_warning: "Å is(-ie) sub-projektas(-ai): %{value} bus taip pat paÅ¡alinti." text_workflow_edit: IÅ¡rinkite vaidmenį ir pÄ—dsekį, kad redaguotumÄ—te darbų eigÄ… text_are_you_sure: Ar esate įsitikinÄ™s? text_journal_changed: "%{label} pakeistas(a) iÅ¡ %{old} į %{new}" text_journal_changed_no_detail: "%{label} atnaujintas(a)" text_journal_set_to: "%{label} nustatytas(a) į %{value}" text_journal_deleted: "%{label} iÅ¡trintas(a) (%{old})" text_journal_added: "%{label} pridÄ—tas(a) %{value}" text_tip_issue_begin_day: užduotis, prasidedanti Å¡iÄ… dienÄ… text_tip_issue_end_day: užduotis, pasibaigianti Å¡iÄ… dienÄ… text_tip_issue_begin_end_day: užduotis, prasidedanti ir pasibaigianti Å¡iÄ… dienÄ… text_project_identifier_info: 'Leistinos mažosios raidÄ—s (a-z), skaiÄiai, pabraukimai ir brÅ«kÅ¡niai, bei turi prasidÄ—ti mažąja raide .
    IÅ¡saugojus, identifikatorius negali bÅ«ti keiÄiamas.' text_caracters_maximum: "%{count} simbolių maksimumas." text_caracters_minimum: "Turi bÅ«ti mažiausiai %{count} simbolių ilgio." text_length_between: "Ilgis tarp %{min} ir %{max} simbolių." text_tracker_no_workflow: Jokia darbų eiga neparinkta Å¡iam pÄ—dsekiui text_unallowed_characters: Neleistini simboliai text_comma_separated: Leistinos kelios reikÅ¡mÄ—s (atskirtos kableliu). text_line_separated: Galimos kelios reikÅ¡mÄ—s (viena linija vienai vertei). text_issues_ref_in_commit_messages: Darbų susiejimas ir fiksavimas pavedimų žinutÄ—se text_issue_added: "%{author} užregistravo darbÄ… %{id}." text_issue_updated: "%{author} atnaujino darbÄ… %{id}." text_wiki_destroy_confirmation: Ar esate įsitikinÄ™s, jog norite paÅ¡alinti šį wiki puslapį ir visÄ… jo turinį? text_issue_category_destroy_question: "Kai kurie darbai (%{count}) yra paskirti Å¡iai kategorijai. KÄ… jÅ«s norite daryti?" text_issue_category_destroy_assignments: PaÅ¡alinti priskirimus kategorijai text_issue_category_reassign_to: IÅ¡ naujo priskirti darbus Å¡iai kategorijai text_user_mail_option: "Nepasirinktiems projektams, jÅ«s gausite praneÅ¡imus tiktai apie tuos įvykius, kuriuos jÅ«s stebite, arba į kuriuos esate įtrauktas (pvz. darbai, kurių autorius esate ar kuriems esate priskirtas)." text_no_configuration_data: "Vaidmenys, pÄ—dsekiai, darbų bÅ«senos ir darbų eiga dar nebuvo sukonfigÅ«ruota.\nGriežtai rekomenduojam užkrauti numatytÄ…jÄ… (default) konfigÅ«racijÄ…. Užkrovus, galÄ—site jÄ… modifikuoti." text_load_default_configuration: Užkrauti numatytÄ…jÄ… konfigÅ«racijÄ… text_status_changed_by_changeset: "Pakeista %{value} revizijoje." text_time_logged_by_changeset: "Pakeista %{value} revizijoje." text_issues_destroy_confirmation: 'Ar jÅ«s tikrai norite iÅ¡trinti pažymÄ—tÄ…(-us) darbÄ…(-us)?' text_issues_destroy_descendants_confirmation: "Taip pat bus iÅ¡trinta(-os) %{count} darbo dalis(ys)." text_time_entries_destroy_confirmation: 'Ar jÅ«s tikrai norite iÅ¡trinti pasirinktÄ…(-us) laiko įrašą(-us)?' text_select_project_modules: 'Parinkite modulius, kuriuos norite naudoti Å¡iame projekte:' text_default_administrator_account_changed: Administratoriaus numatytoji paskyra pakeista text_file_repository_writable: Ä® failų saugyklÄ… saugoti galima (RW) text_plugin_assets_writable: Ä® įskiepių katalogÄ… įraÅ¡yti galima text_minimagick_available: MiniMagick pasiekiamas (pasirinktinai) text_convert_available: ImageMagick konvertavimas galimas (pasirinktinai) text_destroy_time_entries_question: "Naikinamam darbui priskirta %{hours} valandų. KÄ… norite su jomis daryti?" text_destroy_time_entries: IÅ¡trinti įraÅ¡ytas valandas text_assign_time_entries_to_project: Priskirti įraÅ¡ytas valandas prie projekto text_reassign_time_entries: 'Priskirti įraÅ¡ytas valandas Å¡iam darbui:' text_user_wrote: "%{value} parašė:" text_user_wrote_in: "%{value} parašė (%{link}):" text_enumeration_destroy_question: "%{count} objektai(ų) priskirti Å¡iai reikÅ¡mei “%{name}â€." text_enumeration_category_reassign_to: 'Priskirti juos Å¡iai reikÅ¡mei:' text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojÄ…, kuris paminÄ—tas saugyklos žurnale.\nVartotojai, turintys tÄ… patį Redmine ir saugyklos vardÄ… ar el. paÅ¡tÄ… yra automatiÅ¡kai suriÅ¡ti." text_diff_truncated: "... Å is diff'as sutrauktas, nes virÅ¡ija maksimalų rodomų eiluÄių skaiÄių." text_custom_field_possible_values_info: 'Po vienÄ… eilutÄ™ kiekvienai reikÅ¡mei' text_wiki_page_destroy_question: "Å is puslapis turi %{descendants} susijusių arba iÅ¡vestinių puslapių. KÄ… norite daryti?" text_wiki_page_nullify_children: "Palikti susijusius puslapius kaip pagrindinius puslapius" text_wiki_page_destroy_children: "PaÅ¡alinti susijusius puslapius ir jų palikuonis" text_wiki_page_reassign_children: "Priskirkite iÅ¡ naujo 'susijusius' puslapius Å¡iam pagrindiniam puslapiui" text_own_membership_delete_confirmation: "JÅ«s tuoj panaikinsite dalį arba visus leidimus ir po Å¡io pakeitimo galite prarasti Å¡io projekto redagavimo galimybÄ™.\nAr jÅ«s tikrai norite tÄ™sti?" text_zoom_in: Priartinti text_zoom_out: Nutolinti text_warn_on_leaving_unsaved: "Dabartinis puslapis turi neiÅ¡saugoto teksto, kuris bus prarastas, jeigu paliksite šį puslapį." text_scm_path_encoding_note: "Numatytasis: UTF-8" text_subversion_repository_note: "Pavyzdžiai: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: Saugykla (repository) yra tuÅ¡Äia ir lokali (pvz. /gitrepo, c:\gitrepo) text_mercurial_repository_note: Lokali saugykla (e.g. /hgrepo, c:\hgrepo) text_scm_command: Komanda text_scm_command_version: Versija text_scm_config: JÅ«s galite nustatyti SCM komandas config/configuration.yml faile. PraÅ¡ome perkrauti programÄ… po failo redagavimo, norint įgalinti pakeitimus. text_scm_command_not_available: SCM komanda nepasiekiama. Patikrinkite nustatymus administravimo skyriuje. text_issue_conflict_resolution_overwrite: IÅ¡saugoti mano pakeitimus bet kuriuo atveju (ankstesni įraÅ¡ai bus iÅ¡saugot, taÄiau kai kurie pakeitimai bus perraÅ¡yti) text_issue_conflict_resolution_add_notes: "IÅ¡saugoti mano įraÅ¡us ir atmesti likusius mano pakeitimus" text_issue_conflict_resolution_cancel: "Atmesti visus mano pakeitimus ir iÅ¡ naujo rodyti %{link}" text_account_destroy_confirmation: "Ar tikrai norite tÄ™sti?\nJÅ«sų paskyra bus negrįžtamai paÅ¡alinta be galimybÄ—s jÄ… vÄ—l aktyvuoti." text_session_expiration_settings: "Ä®spÄ—jimas: Å¡ių nustatymų pakeitimas gali nutraukti galiojanÄias sesijas, įskaitant jÅ«sų." text_project_closed: Å is projektas yra uždarytas ir prieinamas tik peržiÅ«rai. text_turning_multiple_off: "Jei jÅ«s iÅ¡jungsite kelių reikÅ¡mių pasirinkimÄ…, visos iÅ¡vardintos reikÅ¡mÄ—s bus paÅ¡alintos ir palikta tik viena reikÅ¡mÄ— kiekvienam laukui." default_role_manager: Vadovas default_role_developer: PlÄ—totojas default_role_reporter: Pranešėjas default_tracker_bug: Klaida default_tracker_feature: YpatybÄ— default_tracker_support: Palaikymas default_issue_status_new: Naujas default_issue_status_in_progress: Vykdomas default_issue_status_resolved: IÅ¡sprÄ™stas default_issue_status_feedback: Grįžtamasis ryÅ¡ys default_issue_status_closed: Uždarytas default_issue_status_rejected: Atmestas default_doc_category_user: Vartotojo dokumentacija default_doc_category_tech: TechninÄ— dokumentacija default_priority_low: Žemas default_priority_normal: Normalus default_priority_high: AukÅ¡tas default_priority_urgent: Skubus default_priority_immediate: NeatidÄ—liotinas default_activity_design: Projektavimas default_activity_development: Vystymas enumeration_issue_priorities: Darbo prioritetai enumeration_doc_categories: Dokumento kategorijos enumeration_activities: Veiklos (laiko) sekimas enumeration_system_activity: Sistemos veikla description_filter: Filtras description_search: PaieÅ¡kos laukas description_choose_project: Projektai description_project_scope: PaieÅ¡kos sritis description_notes: Pastabos description_message_content: MŽinutÄ—s turinys description_query_sort_criteria_attribute: Rūšiuoti atributÄ… description_query_sort_criteria_direction: Rūšiuoti kryptį description_user_mail_notification: PaÅ¡to praneÅ¡imų nustatymai description_available_columns: Galimi Stulpeliai description_selected_columns: Pasirinkti Stulpeliai description_all_columns: AVisi stulpeliai description_issue_category_reassign: Pasirinkti darbo kategorijÄ… description_wiki_subpages_reassign: Pasirinkti naujÄ… pagrindinį puslapį text_repository_identifier_info: 'Leidžiamos tik mažosios raidÄ—s (a-z), skaitmenys, brÅ«kÅ¡neliai ir pabraukimo simboliai.
    KartÄ… iÅ¡saugojus pakeitimai negalimi' label_wiki_page_new: Naujas wiki puslapis label_relations: RyÅ¡iai button_filter: Filtras mail_body_password_updated: Slaptažodis pakeistas. label_no_preview: PeržiÅ«ra negalima error_no_tracker_allowed_for_new_issue_in_project: Projektas neturi jokių pÄ—dsekių, kuriems galima bÅ«tų sukurti darbÄ… label_tracker_all: Visi pÄ—dsekiai label_new_project_issue_tab_enabled: Rodyti "Naujo darbo kortelÄ™" setting_new_item_menu_tab: Projekto meniu Ä…selÄ— naujų objektų kÅ«rimui label_new_object_tab_enabled: Rodyti "+" iÅ¡skleidžiÄ…mÄ…jį sÄ…rašą error_no_projects_with_tracker_allowed_for_new_issue: NÄ—ra projektų su pÄ—dsekiais, kuriems galima bÅ«tų sukurti darbÄ… field_textarea_font: Å riftas naudojamas teksto sritims label_font_default: Numatytasis Å¡riftas label_font_monospace: Lygiaplotis Å¡riftas label_font_proportional: Ä®vairiaplotis Å¡riftas setting_timespan_format: Laiko tarpo formatas label_table_of_contents: Turinio lentelÄ— setting_commit_logs_formatting: Pritaikyti teksto formatavimÄ… patvirtinimo žinutÄ—ms setting_mail_handler_enable_regex: Ä®jungti reguliariuosius reiÅ¡kinius error_move_of_child_not_possible: 'Darbo dalis %{child} negali bÅ«ti perkelta į naujÄ… projektÄ…: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Dirbtas laikas negali bÅ«ti iÅ¡ naujo paskirtas darbui, kuris bus iÅ¡trintas setting_timelog_required_fields: Privalomi laukai laiko registracijai label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Tik dalykai, kuriuos stebiu arba esu paskirtas label_user_mail_option_only_owner: Tik dalykai, kuriuos stebiu arba esu jų savininkas warning_fields_cleared_on_bulk_edit: Pakeitimai iššauks automatinį reikÅ¡mių paÅ¡alinimÄ… iÅ¡ vieno arba kelių laukų pažymÄ—tiems objektams field_updated_by: Atnaujino field_last_updated_by: Paskutinį kartÄ… atnaujino field_full_width_layout: Viso ploÄio iÅ¡dÄ—stymas label_last_notes: PaskutinÄ—s pastabos field_digest: KontrolinÄ— suma field_default_assigned_to: Numatytasis paskirtasis setting_show_custom_fields_on_registration: Rodyti individualizuotus laukus registracijoje permission_view_news: ŽiÅ«rÄ—ti naujienas label_no_preview_alternative_html: PeržiÅ«ra neprieinama. Naudokite failÄ… %{link}. label_no_preview_download: Atsisiųsti setting_close_duplicate_issues: AutomatiÅ¡kai uždaryi dubliuojanÄius darbus error_exceeds_maximum_hours_per_day: Dienoje negalima registruoti daugiau valandų nei numatytas maksimumas %{max_hours} (jau užregistruotos %{logged_hours} valandos) setting_time_entry_list_defaults: Laiko žurnalo sÄ…raÅ¡o numatytieji nustatymai setting_timelog_accept_0_hours: Galima registruoti užduoÄių vykdymÄ… su 0 laiko setting_timelog_max_hours_per_day: Maksimalus galimas valandų kiekis naudotojui per dienÄ… label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: Å is autentifikavimo metodas yra naudojamas ir negali bÅ«ti paÅ¡alintas. button_actions: Veiksmai mail_body_lost_password_validity: Nuoroda skirta pakeisti slaptažodį tik vienÄ… kartÄ…. text_login_required_html: VieÅ¡i projektai ir jų turinys bus matomas visiems jei nÄ—ra reikalaujama prisijungimo. Taikomus ribojimus galite pakeisti. label_login_required_yes: 'Taip' label_login_required_no: Leisti anoniminį prisijungimÄ… prie viešų projektų text_project_is_public_non_member: VieÅ¡i projektai ir jų turinys matomas tik prisijungusiems naudotojams (visiems). text_project_is_public_anonymous: VieÅ¡i projektai ir jų turinys matomas laisvai. label_version_and_files: Versijos (%{count}) ir failai label_ldap: LDAP label_ldaps_verify_none: LDAPS (be saugos sertifikato patikrinimo) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Tam, kad iÅ¡vengti saugos pažeidimų prisijungimo procese yra rekomenduojama naudoti LDAPS ryšį užkoduota naudojant saugos sertifikatÄ…. label_nothing_to_preview: NÄ—ra kÄ… peržiÅ«rÄ—ti error_token_expired: Slaptažodio atstatymo nuoroda nebegalioja. Pakartokite procesÄ… iÅ¡ naujo.. error_spent_on_future_date: Negalima registruoti laiko pasirenkant ateities datas setting_timelog_accept_future_dates: Leisti registruoti laikÄ… pasirenkant ateities datas label_delete_link_to_subtask: PaÅ¡alinti ryšį error_not_allowed_to_log_time_for_other_users: JÅ«s negalite nurodyti kitų naudotojų darbo trukmes permission_log_time_for_other_users: Galima nurodyti kitų naudotojų darbo trukmes label_tomorrow: rytoj label_next_week: kita savaitÄ— label_next_month: kitas mÄ—nuo text_role_no_workflow: Å iai rolei nenurodyta jokia darbo eiga text_status_no_workflow: NÄ— pÄ—dsekys nenaudoja Å¡ios bÅ«senos darbo eigose setting_mail_handler_preferred_body_part: Pageidaujama kelių dalių (HTML) el. laiÅ¡kų dalis setting_show_status_changes_in_mail_subject: Rodyti bÅ«senos pakeitimus laiÅ¡kų praneÅ¡imų temoje label_inherited_from_parent_project: PaveldÄ—ta iÅ¡ tÄ—vinio projekto label_inherited_from_group: PaveldÄ—ta iÅ¡ grupÄ—s %{name} label_trackers_description: PÄ—dsekio apraÅ¡ymas label_open_trackers_description: Rodyti visų pÄ—dsekių apraÅ¡ymus label_preferred_body_part_text: Tekstas label_preferred_body_part_html: HTML field_parent_issue_subject: TÄ—vinÄ—s užduoties tema permission_edit_own_issues: Redaguoti savo darbus text_select_apply_tracker: Pasirinkti pÄ—dsekį label_updated_issues: Atnaujinti darbai text_avatar_server_config_html: Å iuometu naudojamas avataro paveiksliukų serveris %{url}. Pakeisti galima faile config/configuration.yml. setting_gantt_months_limit: Didžiausias mÄ—nesių skaiÄius, rodomas Gantt diagramoje permission_import_time_entries: Importuoti laiko įraÅ¡us label_import_notifications: Importavimo metu iÅ¡siusti el. paÅ¡to praneÅ¡imÄ… text_gs_available: ImageMagick PDF palaikomas (nebÅ«tinas) field_recently_used_projects: Neseniai naudotų projektų skaiÄius jump box label_optgroup_bookmarks: ŽymÄ—s label_optgroup_recents: Pastaruoju metu naudota button_project_bookmark: PridÄ—ti žymÄ™ button_project_bookmark_delete: PaÅ¡alinti žymÄ™ field_history_default_tab: Darbo istorijos skirtukas pagal nutylÄ—jimÄ… label_issue_history_properties: Savybių pakeitimai label_issue_history_notes: Pastabos label_last_tab_visited: Paskutinis žiÅ«rÄ—tas skirtukas field_unique_id: Unikalus ID text_no_subject: be temos setting_password_required_char_classes: Slaptažodyje privalomi simbolių tipai label_password_char_class_uppercase: didžiosios raidÄ—s label_password_char_class_lowercase: mažosios raidÄ—s label_password_char_class_digits: skaitmenys label_password_char_class_special_chars: specialieji simboliai text_characters_must_contain: Privalo bÅ«ti %{character_classes}. label_starts_with: prasideda label_ends_with: baigiasi label_issue_fixed_version_updated: TikslinÄ— versija atnaujinta setting_project_list_defaults: Projektų sÄ…raÅ¡o numatytosios reikÅ¡mÄ—s label_display_type: Rodyti įraÅ¡us kaip label_display_type_list: SÄ…raÅ¡as label_display_type_board: Lenta label_my_bookmarks: Mano žymÄ—s label_import_time_entries: Importuoti laiko įraÅ¡us field_toolbar_language_options: Kodo paryÅ¡kinimo įrankių juostos kalbos label_user_mail_notify_about_high_priority_issues_html: Taip pat informuoti mane apie darbus su prioritetu %{prio} ar aukÅ¡tesniu label_assign_to_me: Paskirti man notice_issue_not_closable_by_open_tasks: Darbas negali bÅ«ti uždarytas nes turi nepabaigtų sudÄ—tinių dalių. notice_issue_not_closable_by_blocking_issue: Darbas negali bÅ«ti uždarytas nes yra blokuojamas atidaryto darbo. notice_issue_not_reopenable_by_closed_parent_issue: Darbas negali bÅ«ti pakartotinai atidarytas nes jo motininis darbas yra uždarytas. error_bulk_download_size_too_big: Parinkti pridÄ—ti failai negali bÅ«ti atsisiunÄiami vienu metu nes bendras failų dydis virÅ¡ija leistinÄ… (%{max_size}) setting_bulk_download_max_size: Maksimalus vienu metu atsisiunÄiamų failų bendras dydis label_download_all_attachments: Parsisiųsti visus failus error_attachments_too_many: Å is failas negali bÅ«ti įkeltas nes virÅ¡ijamas vienu metu įkeliamų failų skaiÄius (%{max_number_of_files}) setting_email_domains_allowed: Leidžiami el. paÅ¡to domenai setting_email_domains_denied: Draudžiami el. paÅ¡to domenai field_passwd_changed_on: Slaptažodis buvo pakeistas label_relations_mapping: Susiejimas label_import_users: Importuoti naudotojus label_days_to_html: "%{days} dienos iki %{date}" setting_twofa: Dviejų veiksnių autentifikavimas label_optional: pasirinktinai label_required_lower: bÅ«tina button_disable: IÅ¡jungti twofa__totp__name: autentifikavimo programa twofa__totp__text_pairing_info_html: Nuskanuokite QR kodÄ… arba rankiniu bÅ«du įveskite rakto tekstÄ… į TOTP programÄ… (e.g. Google Authenticator, Authy, Duo Mobile) ir įveskite kodÄ… į laukÄ… apaÄioje tam, kad įjungtumÄ—te dviejų veiksnių autentifikavimÄ…. twofa__totp__label_plain_text_key: Rakto tekstas twofa__totp__label_activate: Ä®jungti autentifikavimo programÄ… twofa_currently_active: 'Å iuo metu įjungta: %{twofa_scheme_name}' twofa_not_active: Neįjungta twofa_label_code: Kodas twofa_hint_disabled_html: Nustatymas %{label} iÅ¡jungs dviejų veiksnių autentifikacijÄ… visiems naudotojams. twofa_hint_required_html: Nustatymas %{label} padarys dviejų veiksnių autentifikacijÄ… vieismes naudotojams sekanÄio jų prisijungimo metu. twofa_label_setup: Ä®jungti dviejų veiksnių autentifikacijÄ… twofa_label_deactivation_confirmation: IÅ¡jungti dviejų veiksnių autentifikacijÄ… twofa_notice_select: 'Pasirinkite jums tinkamÄ… dviejų veiksnių autentifikacijos metodÄ…:' twofa_warning_require: Administratorius aktyvavo privalomÄ… dviejų veiksnių autentifikacijÄ…. twofa_activated: Dviejų veiksnių autentifikacija sÄ—kmingai įjungta. Rekomenduojama sukurti atsarginius kodus skirtus jÅ«sų prisijungimui. twofa_deactivated: Dviejų veiksnių autentifikacija iÅ¡jungta. twofa_mail_body_security_notification_paired: Dviejų veiksnių autentifikacija įjungta naudojant %{field}. twofa_mail_body_security_notification_unpaired: JÅ«sų prisijungimui iÅ¡jungta dviejų veiksnių autentifikacija. twofa_mail_body_backup_codes_generated: Sukurti atsarginiai dviejų veiksnių autentifikacijos kodai. twofa_mail_body_backup_code_used: Buvo panaudotas atsarginis dviejų veiksnių autentifikacijos kodas. twofa_invalid_code: Kodas yra netinkamas arba pasenÄ™s. twofa_label_enter_otp: Ä®veskite dviejų veiksnių autentifikacijos kodÄ…. twofa_too_many_tries: Per daug bandymų. twofa_resend_code: Pakartotinai atsiųsti kodÄ…. twofa_code_sent: Jums buvo iÅ¡siųstas autentifikacijos kodas. twofa_generate_backup_codes: Sukurti atsarginius kodus. twofa_text_generate_backup_codes_confirmation: Å is veiksmas visus anksÄiau sugeneruotus atsarginius kodus padarys negaliojanÄiais ir sugeneruos naujus. Ar norite tÄ™sti procesÄ…? twofa_notice_backup_codes_generated: JÅ«sų atsarginiai kodai buvo sugeneruoti. twofa_warning_backup_codes_generated_invalidated: Buvo sugeneruoti nauji atsarginiai kodai. AnksÄiau %{time} sugeneruotų kodų galiojimas panaikintas. twofa_label_backup_codes: Dviejų veiksnių autentifikacijos atsarginiai kodai twofa_text_backup_codes_hint: Jei neturite priÄ—jimo prie antros dviejų veiksnių autentifikacijos aplinkos - naudokite Å¡iuos kodus, o ne vienkartinį slaptažodį. KiekvienÄ… kodÄ… galima panaudoti tik vienÄ… kartÄ…, todÄ—l rekomenduojama kodus atsispausdinti ir laikyti saugiai. twofa_text_backup_codes_created_at: Atsarginiai kodai sukurti %{datetime}. twofa_backup_codes_already_shown: Atsarginiai kodai negali bÅ«ti parodyti pakartotinai. Jei reikia - sugeneruokite naujus atsarginius kodus. error_can_not_execute_macro_html: Klaida vykdant %{name} makrokomandÄ… (%{error}) error_macro_does_not_accept_block: Å i makrokomanda nepriima teksto bloko error_childpages_macro_no_argument: Be jokių argumentų, Å¡iÄ… makrokomandÄ… gali iÅ¡kviesti tik wiki puslapiai error_circular_inclusion: Aptiktas ciklinis įterpimas error_page_not_found: Puslapis nerastas error_filename_required: Failo pavadinimas bÅ«tinas error_invalid_size_parameter: Netinkamas dydžio parametras error_attachment_not_found: PridÄ—tas failas %{name} nerastas permission_delete_project: PaÅ¡alinti projektÄ… field_twofa_scheme: Dviejų veiksnių autentifikavimo schema text_user_destroy_confirmation: Ar tikrai norite paÅ¡alinti naudotojÄ… ir visas sÄ…sajas su juo? Po Å¡io veiksmo informacijos atkÅ«rimas negalimas. Naudotojo užrakinimas gali bÅ«ti geresnis sprendimas. Patvirtinimui įveskite Å¡alinamo naudotojo prisijungimo vardÄ… (%{login}). text_project_destroy_enter_identifier: Patvirtinimjui įveskite projekto identifikatorių (%{identifier}). button_add_subtask: PridÄ—ti užduoties dedamÄ…jÄ… notice_invalid_watcher: 'Neteisingas stebÄ—tojas: Naudotojas negaus jokių praneÅ¡imų nes jam nÄ—ra suteikta prieiga prie Å¡io objekto.' button_fetch_changesets: Gauti įkÄ—limus permission_view_message_watchers: PeržiÅ«rÄ—ti praneÅ¡imo stebÄ—tojų sÄ…rašą permission_add_message_watchers: PridÄ—ti praneÅ¡imo stebÄ—tojus permission_delete_message_watchers: PaÅ¡alinti praneÅ¡imo stebÄ—tojus label_message_watchers: StebÄ—tojai button_copy_link: Kopijuoti nuorodÄ… error_invalid_authenticity_token: Netinkamas formos autentiÅ¡kumo ženklas. error_query_statement_invalid: Užklausos vykdymo metu įvyko klaida kuri buvo įraÅ¡yta į įvykių žurnalÄ…. Apie klaidÄ… informuokite Redmine administratorių. permission_view_wiki_page_watchers: PeržiÅ«rÄ—kite wiki puslapio stebÄ—tojų sÄ…rašą permission_add_wiki_page_watchers: Papildyti wiki puslapio stebÄ—tojų sÄ…rašą permission_delete_wiki_page_watchers: PaÅ¡alinti wiki puslapio stebÄ—tojus iÅ¡ sÄ…raÅ¡o label_wiki_page_watchers: StebÄ—tojai label_attachment_description: Failo apraÅ¡ymas error_no_data_in_file: Faile nÄ—ra jokių duomenų field_twofa_required: Reikalinga dviejų veiksnių autentifikacija twofa_hint_optional_html: Nustatant %{label} leis vartotojams įjungti dviejų veiksnių autentifikavimÄ… savo nuožiÅ«ra, nebent to reikalauja viena iÅ¡ jų grupių. twofa_text_group_required: Å is nustatymas galioja tik tada kai globalus dviejų veiksnių autentifikavimas įjuntas kaip 'neprivalomas'. Å iuo metu dviejų veiksnių autentifikavimas yra įjungtas kaip privalomas visiems naudotojams. twofa_text_group_disabled: Å is nustatymas galioja tik tada kai globalus dviejų veiksnių autentifikavimas įjuntas kaip 'neprivalomas'. Å iuo metu dviejų veiksnių autentifikavimas yra iÅ¡jungtas pilnai. field_default_issue_query: Numatytoji darbo užklausa label_default_queries: for_all_projects: Visiems projektams for_current_project: Pasirinktam projektui for_all_users: Visiems naudotojams for_this_user: For this user text_allowed_queries_to_select: Galima pasirinkti tik užklausas prieinamas (VieÅ¡as) visiems naudotojams text_all_migrations_have_been_run: Buvo įvykdytos visos duomenų bazÄ—s migravimo procedÅ«ros button_save_object: IÅ¡saugoti %{object_name} button_edit_object: Redaguoti %{object_name} button_delete_object: PaÅ¡alinti %{object_name} text_setting_config_change: ElgsenÄ… galite konfiguruoti faile config/configuration.yml. BaigÄ™ redaguoti - nepamirÅ¡kite perkrauti aplikacijos. label_bulk_edit: Masinis redagavimas button_create_and_follow: Kurti ir sekti label_subtask: Subužduotis label_default_query: Numatytoji užklausa field_default_project_query: Numatytoji projekto užklausa label_required_administrators: administratoriams privaloma twofa_hint_required_administrators_html: Nustatymas %{label} veikia kaip neprivalomas, bet reikalauja, kad visi naudotojai turintys administravimo teises kito prisijungimo metu aktyvuotų dviejų veiksnių autentifikacijÄ…. label_auto_watch_on: Automatinis stebÄ—jimas label_auto_watch_on_issue_contributed_to: Darbai prie kurių prisidÄ—jau text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/lv.yml000066400000000000000000002155001500112024600171720ustar00rootroot00000000000000# translated by Dzintars Bergs (dzintars.bergs@gmail.com) lv: direction: ltr date: formats: default: "%d.%m.%Y" short: "%d %b" long: "%d %B %Y" day_names: [SvÄ“tdiena, Pirmdiena, Otrdiena, TreÅ¡diena, Ceturtdiena, Piektdiena, Sestdiena] abbr_day_names: [Sv, Pr, Ot, Tr, Ct, Pk, St] month_names: [~, JanvÄris, FebruÄris, Marts, AprÄ«lis , Maijs, JÅ«nijs, JÅ«lijs, Augusts, Septembris, Oktobris, Novembris, Decembris] abbr_month_names: [~, Jan, Feb, Mar, Apr, Mai, JÅ«n, JÅ«l, Aug, Sep, Okt, Nov, Dec] order: - :day - :month - :year time: formats: default: "%a, %d %b %Y, %H:%M:%S %z" time: "%H:%M" short: "%d %b, %H:%M" long: "%B %d, %Y %H:%M" am: "rÄ«tÄ" pm: "vakarÄ" datetime: distance_in_words: half_a_minute: "pus minÅ«te" less_than_x_seconds: one: "mazÄk kÄ 1 sekunde" other: "mazÄk kÄ %{count} sekundes" x_seconds: one: "1 sekunde" other: "%{count} sekundes" less_than_x_minutes: one: "mazÄk kÄ minÅ«te" other: "mazÄk kÄ %{count} minÅ«tes" x_minutes: one: "1 minÅ«te" other: "%{count} minÅ«tes" about_x_hours: one: "aptuveni 1 stunda" other: "aptuveni %{count} stundas" x_hours: one: "1 stunda" other: "%{count} stundas" x_days: one: "1 diena" other: "%{count} dienas" about_x_months: one: "aptuveni 1 mÄ“nesis" other: "aptuveni %{count} mÄ“neÅ¡i" x_months: one: "1 mÄ“nesis" other: "%{count} mÄ“neÅ¡i" about_x_years: one: "aptuveni 1 gads" other: "aptuveni %{count} gadi" over_x_years: one: "ilgÄk par 1 gadu" other: "ilgÄk par %{count} gadiem" almost_x_years: one: "gandrÄ«z 1 gadu" other: "gandrÄ«z %{count} gadus" number: format: separator: "." delimiter: "" precision: 3 human: format: delimiter: " " precision: 3 storage_units: format: "%n %u" units: byte: one: "Baits" other: "Baiti" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: sentence_connector: "un" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nav iekļauts sarakstÄ" exclusion: "ir rezervÄ“ts" invalid: "nederÄ«gs" confirmation: "apstiprinÄjums nesakrÄ«t" accepted: "jÄbÅ«t akceptÄ“tam" empty: "nevar bÅ«t tukÅ¡s" blank: "nevar bÅ«t neaizpildÄ«ts" too_long: "ir pÄrÄk gara(Å¡) (maksimÄlais garums ir %{count} simboli)" too_short: "ir pÄrÄk Ä«sa(s) (minimÄlais garums ir %{count} simboli)" wrong_length: "ir nepareiza garuma (vajadzÄ“tu bÅ«t %{count} simboli)" taken: "eksistÄ“" not_a_number: "nav skaitlis" not_a_date: "nav derÄ«gs datums" greater_than: "jÄbÅ«t lielÄkam par %{count}" greater_than_or_equal_to: "jÄbÅ«t lielÄkam vai vienÄdam ar %{count}" equal_to: "jÄbÅ«t vienÄdam ar %{count}" less_than: "jÄbÅ«t mazÄkam kÄ %{count}" less_than_or_equal_to: "jÄbÅ«t mazÄkam vai vienÄdam ar %{count}" odd: "jÄatšķirÄs" even: "jÄsakrÄ«t" greater_than_start_date: "jÄbÅ«t vÄ“lÄkam par sÄkuma datumu" not_same_project: "nepieder pie tÄ paÅ¡a projekta" circular_dependency: "Å Ä« relÄcija radÄ«tu ciklisku atkarÄ«bu" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: IzvÄ“lieties general_text_No: 'NÄ“' general_text_Yes: 'JÄ' general_text_no: 'nÄ“' general_text_yes: 'jÄ' general_lang_name: 'Latvian (LatvieÅ¡u)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Konts tika atjaunots veiksmÄ«gi. notice_account_invalid_credentials: Nepareizs lietotÄja vÄrds vai parole. notice_account_password_updated: Parole tika veiksmÄ«gi atjaunota. notice_account_wrong_password: Nepareiza parole notice_account_register_done: Konts veiksmÄ«gi izveidots. Lai aktivizÄ“tu kontu, spiediet uz saites, kas Jums tika nosÅ«tÄ«ta. notice_can_t_change_password: Å is konts izmanto ÄrÄ“ju pilnvaroÅ¡anas avotu. Nav iespÄ“jams nomainÄ«t paroli. notice_account_lost_email_sent: Jums tika nosÅ«tÄ«ts e-pasts ar instrukcijÄm, kÄ izveidot jaunu paroli. notice_account_activated: JÅ«su konts ir aktivizÄ“ts. Varat pieslÄ“gties sistÄ“mai. notice_successful_create: VeiksmÄ«ga izveide. notice_successful_update: VeiksmÄ«ga atjaunoÅ¡ana. notice_successful_delete: VeiksmÄ«ga dzēšana. notice_successful_connection: VeiksmÄ«gs savienojums. notice_file_not_found: Lapa, ko JÅ«s mēģinÄt atvÄ“rt, neeksistÄ“ vai ir pÄrvietota. notice_locking_conflict: Datus ir atjaunojis cits lietotÄjs. notice_not_authorized: Jums nav tiesÄ«bu piekļūt Å¡ai lapai. notice_email_sent: "E-pasts tika nosÅ«tÄ«ts uz %{value}" notice_email_error: "Kļūda sÅ«tot e-pastu (%{value})" notice_feeds_access_key_reseted: JÅ«su Atom pieejas atslÄ“ga tika iestatÄ«ta sÄkuma stÄvoklÄ«. notice_api_access_key_reseted: JÅ«su API pieejas atslÄ“ga tika iestatÄ«ta sÄkuma stÄvoklÄ«. notice_failed_to_save_issues: "NeizdevÄs saglabÄt %{count} uzdevumu(us) no %{total} izvÄ“lÄ“ti: %{ids}." notice_account_pending: "JÅ«su konts tika izveidots un Å¡obrÄ«d gaida administratora apstiprinÄjumu." notice_default_data_loaded: NoklusÄ“tÄ konfigurÄcija tika veiksmÄ«gi ielÄdÄ“ta. notice_unable_delete_version: NeizdevÄs dzÄ“st versiju. notice_issue_done_ratios_updated: Uzdevuma izpildes koeficients atjaunots. error_can_t_load_default_data: "Nevar ielÄdÄ“t noklusÄ“tos konfigurÄcijas datus: %{value}" error_scm_not_found: "Ieraksts vai versija nebija repozitorijÄ." error_scm_command_failed: "Mēģinot piekļūt repozitorijam, notika kļūda: %{value}" error_scm_annotate: "Ieraksts neeksistÄ“ vai tam nevar tikt pievienots paskaidrojums." error_issue_not_found_in_project: 'Uzdevums netika atrasts vai nepieder Å¡im projektam.' error_no_tracker_in_project: 'Neviens trakeris nav saistÄ«ts ar Å¡o projektu. PÄrbaudiet projekta iestatÄ«jumus.' error_no_default_issue_status: 'Nav definÄ“ts uzdevuma noklusÄ“tais statuss. PÄrbaudiet konfigurÄciju (Ejat uz: "AdministrÄcija -> Uzdevumu statusi")!' error_can_not_reopen_issue_on_closed_version: 'Nevar pievienot atsauksmi uzdevumam, kas saistÄ«ts ar slÄ“gtu versiju.' error_can_not_archive_project: Å is projekts nevar tikt arhivÄ“ts error_issue_done_ratios_not_updated: "Uzdevuma izpildes koeficients nav atjaunots." error_workflow_copy_source: 'LÅ«dzu izvÄ“lieties avota trakeri vai lomu' error_workflow_copy_target: 'LÅ«dzu izvÄ“lÄ“ties mÄ“rÄ·a trakeri(us) un lomu(as)' warning_attachments_not_saved: "%{count} datnes netika saglabÄtas." mail_subject_lost_password: "JÅ«su %{value} parole" mail_body_lost_password: 'Lai mainÄ«tu paroli, spiediet uz šīs saites:' mail_subject_register: "JÅ«su %{value} konta aktivizÄcija" mail_body_register: 'Lai izveidotu kontu, spiediet uz šīs saites:' mail_body_account_information_external: "Varat izmantot JÅ«su %{value} kontu, lai pieslÄ“gtos." mail_body_account_information: JÅ«su konta informÄcija mail_subject_account_activation_request: "%{value} konta aktivizÄcijas pieprasÄ«jums" mail_body_account_activation_request: "Jauns lietotÄjs (%{value}) ir reÄ£istrÄ“ts. LietotÄja konts gaida JÅ«su apstiprinÄjumu:" mail_subject_reminder: "%{count} uzdevums(i) sagaidÄms(i) tuvÄkajÄs %{days} dienÄs" mail_body_reminder: "%{count} uzdevums(i), kurÅ¡(i) ir nozÄ«mÄ“ts(i) Jums, sagaidÄms(i) tuvÄkajÄs %{days} dienÄs:" mail_subject_wiki_content_added: "'%{id}' Wiki lapa pievienota" mail_body_wiki_content_added: "The '%{id}' Wiki lapu pievienojis %{author}." mail_subject_wiki_content_updated: "'%{id}' Wiki lapa atjaunota" mail_body_wiki_content_updated: "The '%{id}' Wiki lapu atjaunojis %{author}." field_name: Nosaukums field_description: Apraksts field_summary: Kopsavilkums field_is_required: NepiecieÅ¡ams field_firstname: VÄrds field_lastname: UzvÄrds field_mail: "E-pasts" field_filename: Datne field_filesize: IzmÄ“rs field_downloads: LejupielÄdes field_author: Autors field_created_on: Izveidots field_updated_on: Atjaunots field_field_format: FormÄts field_is_for_all: Visiem projektiem field_possible_values: IespÄ“jamÄs vÄ“rtÄ«bas field_regexp: RegulÄrÄ izteiksme field_min_length: MinimÄlais garums field_max_length: MaksimÄlais garums field_value: VÄ“rtÄ«ba field_category: Kategorija field_title: Nosaukums field_project: Projekts field_issue: Uzdevums field_status: Statuss field_notes: PiezÄ«mes field_is_closed: Uzdevums slÄ“gts field_is_default: NoklusÄ“tÄ vÄ“rtÄ«ba field_tracker: Trakeris field_subject: Temats field_due_date: SagaidÄmais datums field_assigned_to: Piešķirts field_priority: PrioritÄte field_fixed_version: MÄ“rÄ·a versija field_user: LietotÄjs field_role: Loma field_homepage: Vietne field_is_public: Publisks field_parent: ApakÅ¡projekts projektam field_is_in_roadmap: CeļvedÄ« parÄdÄ«tie uzdevumi field_login: PieslÄ“gties field_mail_notification: "E-pasta paziņojumi" field_admin: Administrators field_last_login_on: PÄ“dÄ“jo reizi pieslÄ“dzies field_language: Valoda field_effective_date: Datums field_password: Parole field_new_password: JanÄ parole field_password_confirmation: Paroles apstiprinÄjums field_version: Versija field_type: Tips field_host: Hosts field_port: Ports field_account: Konts field_base_dn: Base DN field_attr_login: PieslÄ“gÅ¡anÄs atribÅ«ts field_attr_firstname: VÄrda atribÅ«ts field_attr_lastname: UzvÄrda atribÅ«ts field_attr_mail: "E-pasta atribÅ«ts" field_onthefly: "LietotÄja izveidoÅ¡ana on-the-fly" field_start_date: SÄkuma datums field_done_ratio: "% padarÄ«ti" field_auth_source: PilnvaroÅ¡anas režīms field_hide_mail: "PaslÄ“pt manu e-pasta adresi" field_comments: KomentÄrs field_url: URL field_start_page: SÄkuma lapa field_subproject: ApakÅ¡projekts field_hours: Stundas field_activity: AktivitÄte field_spent_on: Datums field_identifier: Identifikators field_is_filter: Izmantots kÄ filtrs field_issue_to: SaistÄ«ts uzdevums field_delay: KavÄ“jums field_assignable: Uzdevums var tikt piesaistÄ«ts Å¡ai lomai field_redirect_existing_links: PÄradresÄ“t eksistÄ“joÅ¡Äs saites field_estimated_hours: ParedzÄ“tais laiks field_column_names: Kolonnas field_time_zone: Laika zona field_searchable: MeklÄ“jams field_default_value: NoklusÄ“tÄ vÄ“rtÄ«ba field_comments_sorting: RÄdÄ«t komentÄrus field_parent_title: VecÄka lapa field_editable: Rediģējams field_watcher: VÄ“rotÄjs field_content: Saturs field_group_by: GrupÄ“t rezultÄtus pÄ“c field_sharing: KoplietoÅ¡ana setting_app_title: Programmas nosaukums setting_welcome_text: Sveiciena teksts setting_default_language: NoklusÄ“tÄ valoda setting_login_required: NepiecieÅ¡ama pilnvaroÅ¡ana setting_self_registration: PaÅ¡reÄ£istrēšanÄs setting_attachment_max_size: Pielikuma maksimÄlais izmÄ“rs setting_issues_export_limit: Uzdevumu eksporta ierobežojums setting_mail_from: "E-pasta adrese informÄcijas nosÅ«tīšanai" setting_plain_text_mail: "VÄ“stule brÄ«vÄ tekstÄ (bez HTML)" setting_host_name: Hosta nosaukums un piekļuves ceļš setting_text_formatting: Teksta formatēšana setting_wiki_compression: Wiki vÄ“stures saspieÅ¡ana setting_feeds_limit: Barotnes satura ierobežojums setting_default_projects_public: Jaunie projekti noklusÄ“ti ir publiski pieejami setting_autofetch_changesets: "AutomÄtiski lietot jaunÄko versiju, pieslÄ“dzoties repozitorijam (Autofetch)" setting_sys_api_enabled: IeslÄ“gt WS repozitoriju menedžmentam setting_commit_ref_keywords: NorÄdes atslÄ“gvÄrdi setting_commit_fix_keywords: FiksÄ“joÅ¡ie atslÄ“gvÄrdi setting_autologin: AutomÄtiskÄ pieslÄ“gÅ¡anÄs setting_date_format: Datuma formÄts setting_time_format: Laika formÄts setting_cross_project_issue_relations: "Atļaut starp-projektu uzdevumu relÄcijas" setting_issue_list_default_columns: NoklusÄ“ti rÄdÄ«tÄs kolonnas uzdevumu sarakstÄ setting_emails_footer: "E-pastu kÄjene" setting_protocol: Protokols setting_per_page_options: Objekti vienÄ lapÄ setting_user_format: LietotÄju rÄdīšanas formÄts setting_activity_days_default: Dienus skaits aktivitÄÅ¡u rÄdīšanai aktivitÄÅ¡u sadaÄ¼Ä setting_display_subprojects_issues: RÄdÄ«t apakÅ¡projekta uzdevumus galvenajÄ projektÄ pÄ“c noklusÄ“juma setting_enabled_scm: Lietot SCM setting_mail_handler_body_delimiters: "SaÄ«sinÄt pÄ“c vienas no Å¡im rindÄm" setting_mail_handler_api_enabled: "Lietot WS ienÄkoÅ¡ajiem e-pastiem" setting_mail_handler_api_key: API atslÄ“ga setting_sequential_project_identifiers: Ä¢enerÄ“t secÄ«gus projektu identifikatorus setting_gravatar_enabled: Izmantot Gravatar lietotÄju ikonas setting_gravatar_default: NoklusÄ“tais Gravatar attÄ“ls setting_diff_max_lines_displayed: MaksimÄlais rÄdÄ«to diff rindu skaits setting_file_max_size_displayed: MaksimÄlais izmÄ“rs iekļautajiem teksta failiem setting_repository_log_display_limit: MaksimÄlais žurnÄla datnÄ“ rÄdÄ«to revÄ«ziju skaits setting_password_min_length: MinimÄlais paroles garums setting_new_project_user_role_id: Loma, kura tiek piešķirta ne-administratora lietotÄjam, kurÅ¡ izveido projektu setting_default_projects_modules: NoklusÄ“tie lietotie moduļi jaunam projektam setting_issue_done_ratio: AprēķinÄt uzdevuma izpildes koeficientu ar setting_issue_done_ratio_issue_field: uzdevuma lauku setting_issue_done_ratio_issue_status: uzdevuma statusu setting_start_of_week: SÄkt kalendÄru ar setting_rest_api_enabled: Lietot REST web-servisu setting_cache_formatted_text: KeÅ¡ot formatÄ“tu tekstu permission_add_project: Izveidot projektu permission_add_subprojects: Izveidot apakÅ¡projektu permission_edit_project: Rediģēt projektu permission_select_project_modules: IzvÄ“lÄ“ties projekta moduļus permission_manage_members: PÄrvaldÄ«t dalÄ«bniekus permission_manage_project_activities: PÄrvaldÄ«t projekta aktivitÄtes permission_manage_versions: PÄrvaldÄ«t versijas permission_manage_categories: PÄrvaldÄ«t uzdevumu kategorijas permission_view_issues: ApskatÄ«t uzdevumus permission_add_issues: Pievienot uzdevumus permission_edit_issues: Rediģēt uzdevumus permission_manage_issue_relations: PÄrvaldÄ«t uzdevumu relÄcijas permission_add_issue_notes: Pievienot piezÄ«mes permission_edit_issue_notes: Rediģēt piezÄ«mes permission_edit_own_issue_notes: Rediģēt paÅ¡a piezÄ«mes permission_delete_issues: DzÄ“st uzdevumus permission_manage_public_queries: PÄrvaldÄ«t publiskos pieprasÄ«jumus permission_save_queries: SaglabÄt pieprasÄ«jumus permission_view_gantt: SkatÄ«t Ganta diagrammu permission_view_calendar: SkatÄ«t kalendÄru permission_view_issue_watchers: SkatÄ«t vÄ“rotÄju sarakstu permission_add_issue_watchers: Pievienot vÄ“rotÄjus permission_delete_issue_watchers: DzÄ“st vÄ“rotÄjus permission_log_time: PiereÄ£istrÄ“t pavadÄ«to laiku permission_view_time_entries: SkatÄ«t pavadÄ«to laiku permission_edit_time_entries: Rdiģēt laika reÄ£istrus permission_edit_own_time_entries: Rediģēt savus laika reÄ£istrus permission_manage_news: PÄrvaldÄ«t jaunumus permission_comment_news: KomentÄ“t jaunumus permission_view_documents: SkatÄ«t dokumentus permission_manage_files: PÄrvaldÄ«t failus permission_view_files: SkatÄ«t failus permission_manage_wiki: PÄrvaldÄ«t wiki permission_rename_wiki_pages: PÄrsaukt wiki lapas permission_delete_wiki_pages: DzÄ“st wiki lapas permission_view_wiki_pages: SkatÄ«t wiki permission_view_wiki_edits: SkatÄ«t wiki vÄ“sturi permission_edit_wiki_pages: Rdiģēt wiki lapas permission_delete_wiki_pages_attachments: DzÄ“st pielikumus permission_protect_wiki_pages: Projekta wiki lapas permission_manage_repository: PÄrvaldÄ«t repozitoriju permission_browse_repository: PÄrlÅ«kot repozitoriju permission_view_changesets: SkatÄ«t izmaiņu kopumus permission_commit_access: Atļaut piekļuvi permission_manage_boards: PÄrvaldÄ«t ziņojumu dēļus permission_view_messages: SkatÄ«t ziņas permission_add_messages: PublicÄ“t ziņas permission_edit_messages: Rediģēt ziņas permission_edit_own_messages: Rediģēt savas ziņas permission_delete_messages: DzÄ“st ziņas permission_delete_own_messages: DzÄ“st savas ziņas permission_export_wiki_pages: EksportÄ“t Wiki lapas project_module_issue_tracking: Uzdevumu uzskaite project_module_time_tracking: Laika uzskaite project_module_news: Jaunumi project_module_documents: Dokumenti project_module_files: Datnes project_module_wiki: Wiki project_module_repository: Repozitorijs project_module_boards: Ziņojumu dēļi label_user: LietotÄjs label_user_plural: LietotÄji label_user_new: Jauns lietotÄjs label_user_anonymous: AnonÄ«ms label_project: Projekts label_project_new: Jauns projekts label_project_plural: Projekti label_x_projects: zero: nav projektu one: 1 projekts other: "%{count} projekti" label_project_all: Visi projekti label_project_latest: JaunÄkie projekti label_issue: Uzdevums label_issue_new: Jauns uzdevums label_issue_plural: Uzdevumi label_issue_view_all: SkatÄ«t visus uzdevumus label_issues_by: "KÄrtot pÄ“c %{value}" label_issue_added: Uzdevums pievienots label_issue_updated: Uzdevums atjaunots label_document: Dokuments label_document_new: Jauns dokuments label_document_plural: Dokumenti label_document_added: Dokuments pievienots label_role: Loma label_role_plural: Lomas label_role_new: Jauna loma label_role_and_permissions: Lomas un atļaujas label_member: DalÄ«bnieks label_member_new: Jauns dalÄ«bnieks label_member_plural: DalÄ«bnieki label_tracker: Trakeris label_tracker_plural: Trakeri label_tracker_new: Jauns trakeris label_workflow: Darba gaita label_issue_status: Uzdevuma statuss label_issue_status_plural: Uzdevumu statusi label_issue_status_new: Jauns statuss label_issue_category: Uzdevuma kategorija label_issue_category_plural: Uzdevumu kategorijas label_issue_category_new: Jauna kategorija label_custom_field: PielÄgojams lauks label_custom_field_plural: PielÄgojami lauki label_custom_field_new: Jauns pielÄgojams lauks label_enumerations: UzskaitÄ«jumi label_enumeration_new: Jauna vÄ“rtÄ«ba label_information: InformÄcija label_information_plural: InformÄcija label_register: ReÄ£istrÄ“ties label_password_lost: NozaudÄ“ta parole label_home: SÄkums label_my_page: Mana lapa label_my_account: Mans konts label_my_projects: Mani projekti label_administration: AdministrÄcija label_login: PieslÄ“gties label_logout: AtslÄ“gties label_help: PalÄ«dzÄ«ba label_reported_issues: Ziņotie uzdevumi label_assigned_to_me_issues: Man piesaistÄ«tie uzdevumi label_registered_on: ReÄ£istrÄ“jies label_activity: AktivitÄte label_user_activity: "LietotÄja %{value} aktivitÄtes" label_new: Jauns label_logged_as: PieslÄ“dzies kÄ label_environment: Vide label_authentication: PilnvaroÅ¡ana label_auth_source: PilnvaroÅ¡anas režīms label_auth_source_new: Jauns pilnvaroÅ¡anas režīms label_auth_source_plural: PilnvaroÅ¡anas režīmi label_subproject_plural: ApakÅ¡projekti label_subproject_new: Jauns apakÅ¡projekts label_and_its_subprojects: "%{value} un tÄ apakÅ¡projekti" label_min_max_length: MinimÄlais - MaksimÄlais garums label_list: Saraksts label_date: Datums label_integer: Vesels skaitlis label_float: DecimÄlskaitlis label_boolean: Patiesuma vÄ“rtÄ«ba label_string: Teksts label_text: GarÅ¡ teksts label_attribute: AtribÅ«ts label_attribute_plural: AtribÅ«ti label_no_data: Nav datu, ko parÄdÄ«t label_change_status: MainÄ«t statusu label_history: VÄ“sture label_attachment: Pielikums label_attachment_new: Jauns pielikums label_attachment_delete: DzÄ“st pielikumu label_attachment_plural: Pielikumi label_file_added: Lauks pievienots label_report: Atskaite label_report_plural: Atskaites label_news: Ziņa label_news_new: Pievienot ziņu label_news_plural: Ziņas label_news_latest: JaunÄkÄs ziņas label_news_view_all: SkatÄ«t visas ziņas label_news_added: Ziņas pievienotas label_settings: IestatÄ«jumi label_overview: PÄrskats label_version: Versija label_version_new: Jauna versija label_version_plural: Versijas label_close_versions: AizvÄ“rt pabeigtÄs versijas label_confirmation: ApstiprinÄjums label_export_to: 'Pieejams arÄ«:' label_read: LasÄ«t... label_public_projects: Publiskie projekti label_open_issues: atvÄ“rts label_open_issues_plural: atvÄ“rti label_closed_issues: slÄ“gts label_closed_issues_plural: slÄ“gti label_x_open_issues_abbr: zero: 0 atvÄ“rti one: 1 atvÄ“rts other: "%{count} atvÄ“rti" label_x_closed_issues_abbr: zero: 0 slÄ“gti one: 1 slÄ“gts other: "%{count} slÄ“gti" label_total: KopÄ label_permissions: Atļaujas label_current_status: PaÅ¡reizÄ“jais statuss label_new_statuses_allowed: Jauni statusi atļauti label_all: visi label_none: neviens label_nobody: nekas label_next: NÄkoÅ¡ais label_previous: Iepriekšējais label_used_by: Izmanto label_details: Detaļas label_add_note: Pievienot piezÄ«mi label_calendar: KalendÄrs label_months_from: mÄ“neÅ¡i no label_gantt: Ganta diagramma label_internal: Iekšējais label_last_changes: "pÄ“dÄ“jÄs %{count} izmaiņas" label_change_view_all: SkatÄ«t visas izmaiņas label_comment: KomentÄrs label_comment_plural: KomentÄri label_x_comments: zero: nav komentÄru one: 1 komentÄrs other: "%{count} komentÄri" label_comment_add: Pievienot komentÄru label_comment_added: KomentÄrs pievienots label_comment_delete: DzÄ“st komentÄrus label_query: PielÄgots pieprasÄ«jums label_query_plural: PielÄgoti pieprasÄ«jumi label_query_new: Jauns pieprasÄ«jums label_filter_add: Pievienot filtru label_filter_plural: Filtri label_equals: ir label_not_equals: nav label_in_less_than: ir mazÄk kÄ label_in_more_than: ir vairÄk kÄ label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: iekÅ¡ label_today: Å¡odien label_yesterday: vakar label_this_week: Å¡onedēļ label_last_week: pagÄjuÅ¡o Å¡onedēļ label_last_n_days: "pÄ“dÄ“jÄs %{count} dienas" label_this_month: Å¡omÄ“nes label_last_month: pagÄjuÅ¡o mÄ“nes label_this_year: Å¡ogad label_date_range: Datumu apgabals label_less_than_ago: mazÄk kÄ dienas iepriekÅ¡ label_more_than_ago: vairÄk kÄ dienas iepriekÅ¡ label_ago: dienas iepriekÅ¡ label_contains: satur label_not_contains: nesatur label_day_plural: dienas label_repository: Repozitorijs label_repository_plural: Repozitoriji label_branch: Zars label_tag: Birka label_revision: RevÄ«zija label_revision_plural: RevÄ«zijas label_revision_id: "RevÄ«zija %{value}" label_associated_revisions: SaistÄ«tÄs revÄ«zijas label_added: pievienots label_modified: modificÄ“ts label_copied: nokopÄ“ts label_renamed: pÄrsaukts label_deleted: dzÄ“sts label_latest_revision: PÄ“dÄ“jÄ revÄ«zija label_latest_revision_plural: PÄ“dÄ“jÄs revÄ«zijas label_view_revisions: SkatÄ«t revÄ«zijas label_view_all_revisions: SkatÄ«t visas revÄ«zijas label_max_size: MaksimÄlais izmÄ“rs label_roadmap: Ceļvedis label_roadmap_due_in: "SagaidÄms pÄ“c %{value}" label_roadmap_overdue: "nokavÄ“ts %{value}" label_roadmap_no_issues: Å ai versijai nav uzdevumu label_search: MeklÄ“t label_result_plural: RezultÄti label_all_words: Visi vÄrdi label_wiki: Wiki label_wiki_edit: Wiki labojums label_wiki_edit_plural: Wiki labojumi label_wiki_page: Wiki lapa label_wiki_page_plural: Wiki lapas label_index_by_title: IndeksÄ“t pÄ“c nosaukuma label_index_by_date: IndeksÄ“t pÄ“c datuma label_current_version: TekoÅ¡Ä versija label_preview: PriekÅ¡skatÄ«jums label_feed_plural: Barotnes label_changes_details: Visu izmaiņu detaļas label_issue_tracking: Uzdevumu uzskaite label_spent_time: PavadÄ«tais laiks label_f_hour: "%{value} stunda" label_f_hour_plural: "%{value} stundas" label_time_tracking: Laika uzskaite label_change_plural: Izmaiņas label_statistics: Statistika label_commits_per_month: Nodevumi mÄ“nesÄ« label_commits_per_author: Nodevumi no autora label_view_diff: SkatÄ«t atšķirÄ«bas label_diff_inline: iekļauts label_diff_side_by_side: blakus label_options: Opcijas label_copy_workflow_from: KopÄ“t darba plÅ«smu no label_permissions_report: Atļauju atskaite label_watched_issues: VÄ“rotie uzdevumi label_related_issues: SaistÄ«tie uzdevumi label_applied_status: Piešķirtais statuss label_loading: LÄdÄ“jas... label_relation_new: Jauna relÄcija label_relation_delete: DzÄ“st relÄciju label_relates_to: saistÄ«ts ar label_duplicates: DublÄ“ uzdevumu label_duplicated_by: DublÄ“ uzdevums label_blocks: BloÄ·Ä“ uzdevumu label_blocked_by: BloÄ·Ä“ uzdevums label_precedes: Pirms label_follows: Seko pÄ“c label_stay_logged_in: AtcerÄ“ties mani label_disabled: izslÄ“gts label_show_completed_versions: RÄdÄ«t pabeigtÄs versijas label_me: es label_board: Forums label_board_new: Jauns forums label_board_plural: Forumi label_board_locked: SlÄ“gts label_board_sticky: SvarÄ«gs label_topic_plural: TÄ“mas label_message_plural: Ziņas label_message_last: PÄ“dÄ“jÄ ziņa label_message_new: Jauna ziņa label_message_posted: Ziņa pievienota label_reply_plural: Atbildes label_send_information: SÅ«tÄ«t konta informÄciju lietotÄjam label_year: Gads label_month: MÄ“nesis label_week: Nedēļa label_date_from: No label_date_to: Kam label_language_based: Izmantot lietotÄja valodu label_sort_by: "KÄrtot pÄ“c %{value}" label_send_test_email: "SÅ«tÄ«t testa e-pastu" label_feeds_access_key: Atom piekļuves atslÄ“ga label_missing_feeds_access_key: TrÅ«kst Atom piekļuves atslÄ“gas label_feeds_access_key_created_on: "Atom piekļuves atslÄ“ga izveidota pirms %{value}" label_module_plural: Moduļi label_added_time_by: "Pievienojis %{author} pirms %{age}" label_updated_time_by: "Atjaunojis %{author} pirms %{age}" label_updated_time: "Atjaunots pirms %{value}" label_jump_to_a_project: PÄriet uz projektu... label_file_plural: Datnes label_changeset_plural: Izmaiņu kopumi label_default_columns: NoklusÄ“tÄs kolonnas label_no_change_option: (Nav izmaiņu) label_bulk_edit_selected_issues: Labot visus izvÄ“lÄ“tos uzdevumus label_theme: TÄ“ma label_default: NoklusÄ“ts label_search_titles_only: MeklÄ“t tikai nosaukumos label_user_mail_option_all: "Par visiem notikumiem visos manos projektos" label_user_mail_option_selected: "Par visiem notikumiem tikai izvÄ“lÄ“tajos projektos..." label_user_mail_no_self_notified: "Neziņot man par izmaiņÄm, kuras veicu es pats" label_registration_activation_by_email: "konta aktivizÄcija caur e-pastu" label_registration_manual_activation: manuÄlÄ konta aktivizÄcija label_registration_automatic_activation: automÄtiskÄ konta aktivizÄcija label_display_per_page: "RÄdÄ«t vienÄ lapÄ: %{value}" label_age: Vecums label_change_properties: MainÄ«t atribÅ«tus label_general: Galvenais label_scm: SCM label_plugins: Spraudņi label_ldap_authentication: LDAP pilnvaroÅ¡ana label_downloads_abbr: L-lÄd. label_optional_description: "Apraksts (neobligÄts)" label_add_another_file: Pievienot citu failu label_preferences: PriekÅ¡rocÄ«bas label_chronological_order: HronoloÄ£iskÄ kÄrtÄ«bÄ label_reverse_chronological_order: Apgriezti hronoloÄ£iskÄ kÄrtÄ«bÄ label_incoming_emails: "IenÄkoÅ¡ie e-pasti" label_generate_key: Ä¢enerÄ“t atslÄ“gu label_issue_watchers: VÄ“rotÄji label_example: PiemÄ“rs label_display: RÄdÄ«t label_sort: KÄrtot label_ascending: AugoÅ¡i label_descending: DilstoÅ¡i label_date_from_to: "No %{start} lÄ«dz %{end}" label_wiki_content_added: Wiki lapa pievienota label_wiki_content_updated: Wiki lapa atjaunota label_group: Grupa label_group_plural: Grupas label_group_new: Jauna grupa label_time_entry_plural: PavadÄ«tais laiks label_version_sharing_none: Nav koplietoÅ¡anai label_version_sharing_descendants: Ar apakÅ¡projektiem label_version_sharing_hierarchy: Ar projektu hierarhiju label_version_sharing_tree: Ar projekta koku label_version_sharing_system: Ar visiem projektiem label_update_issue_done_ratios: Atjaunot uzdevuma veikuma attiecÄ«bu label_copy_source: Avots label_copy_target: MÄ“rÄ·is label_copy_same_as_target: TÄds pats kÄ mÄ“rÄ·is label_display_used_statuses_only: "RÄdÄ«t tikai statusus, ko lieto Å¡is trakeris" label_api_access_key: API pieejas atslÄ“ga label_missing_api_access_key: TrÅ«kst API pieejas atslÄ“ga label_api_access_key_created_on: "API pieejas atslÄ“ga izveidota pirms %{value}" button_login: PieslÄ“gties button_submit: NosÅ«tÄ«t button_save: SaglabÄt button_check_all: AtzÄ«mÄ“t visu button_uncheck_all: Noņemt visus atzÄ«mÄ“jumus button_delete: DzÄ“st button_create: Izveidot button_create_and_continue: Izveidot un turpinÄt button_test: TestÄ“t button_edit: Labot button_add: Pievienot button_change: MainÄ«t button_apply: ApstiprinÄt button_clear: NotÄ«rÄ«t button_lock: SlÄ“gt button_unlock: AtslÄ“gt button_download: LejuplÄdÄ“t button_list: Saraksts button_view: Skats button_move: PÄrvietot button_move_and_follow: PÄrvietot un sekot button_back: Atpakaļ button_cancel: Atcelt button_activate: AktivizÄ“t button_sort: KÄrtot button_log_time: ReÄ£istrÄ“t laiku button_rollback: Atjaunot uz Å¡o versiju button_watch: VÄ“rot button_unwatch: NevÄ“rot button_reply: AtbildÄ“t button_archive: ArhivÄ“t button_unarchive: AtarhivÄ“t button_reset: AtiestatÄ«t button_rename: PÄrsaukt button_change_password: MainÄ«t paroli button_copy: KopÄ“t button_copy_and_follow: KopÄ“t un sekot button_annotate: PierakstÄ«t paskaidrojumu button_update: Atjaunot button_configure: KonfigurÄ“t button_quote: CitÄts button_show: RÄdÄ«t status_active: aktÄ«vs status_registered: reÄ£istrÄ“ts status_locked: slÄ“gts version_status_open: atvÄ“rta version_status_locked: slÄ“gta version_status_closed: aizvÄ“rta field_active: AktÄ«vs text_select_mail_notifications: "IzvÄ“lieties darbÄ«bas, par kurÄm vÄ“laties saņemt ziņojumus e-pastÄ" text_regexp_info: "piem. ^[A-Z0-9]+$" text_project_destroy_confirmation: "Vai tieÅ¡Äm vÄ“laties dzÄ“st Å¡o projektu un ar to saistÄ«tos datus?" text_subprojects_destroy_warning: "TÄ apakÅ¡projekts(i): %{value} arÄ« tiks dzÄ“sts(i)." text_workflow_edit: Lai labotu darba plÅ«smu, izvÄ“lieties lomu un trakeri text_are_you_sure: "Vai esat pÄrliecinÄts?" text_journal_changed: "%{label} mainÄ«ts no %{old} uz %{new}" text_journal_set_to: "%{label} iestatÄ«ts uz %{value}" text_journal_deleted: "%{label} dzÄ“sts (%{old})" text_journal_added: "%{label} %{value} pievienots" text_tip_issue_begin_day: uzdevums sÄkas Å¡odien text_tip_issue_end_day: uzdevums beidzas Å¡odien text_tip_issue_begin_end_day: uzdevums sÄkas un beidzas Å¡odien text_caracters_maximum: "%{count} simboli maksimÄli." text_caracters_minimum: "JÄbÅ«t vismaz %{count} simbolu garumÄ." text_length_between: "Garums starp %{min} un %{max} simboliem." text_tracker_no_workflow: Å im trakerim nav definÄ“ta darba plÅ«sma text_unallowed_characters: Neatļauti simboli text_comma_separated: "Atļautas vairÄkas vÄ“rtÄ«bas (atdalÄ«t ar komatu)." text_line_separated: "Atļautas vairÄkas vÄ“rtÄ«bas (rakstÄ«t katru savÄ rindÄ)." text_issues_ref_in_commit_messages: "Izmaiņu salÄ«dzinÄÅ¡ana izejot no ziņojumiem" text_issue_added: "Uzdevumu %{id} pievienojis %{author}." text_issue_updated: "Uzdevumu %{id} atjaunojis %{author}." text_wiki_destroy_confirmation: "Vai esat droÅ¡s, ka vÄ“laties dzÄ“st Å¡o wiki un visu tÄs saturu?" text_issue_category_destroy_question: "Daži uzdevumi (%{count}) ir nozÄ«mÄ“ti Å¡ai kategorijai. Ko JÅ«s vÄ“laties darÄ«t?" text_issue_category_destroy_assignments: DzÄ“st kategoriju nozÄ«mÄ“jumus text_issue_category_reassign_to: NozÄ«mÄ“t uzdevumus Å¡ai kategorijai text_user_mail_option: "No neizvÄ“lÄ“tajiem projektiem JÅ«s saņemsiet ziņojumus e-pastÄ tikai par notikumiem, kuriem JÅ«s sekojat vai kuros esat iesaistÄ«ts." text_no_configuration_data: "Lomas, trakeri, uzdevumu statusi un darba plÅ«smas vÄ“l nav konfigurÄ“tas.\nÄ»oti ieteicams ielÄdÄ“t noklusÄ“to konfigurÄciju. PÄ“c ielÄdēšanas to bÅ«s iespÄ“jams modificÄ“t." text_load_default_configuration: IelÄdÄ“t noklusÄ“to konfigurÄciju text_status_changed_by_changeset: "ApstiprinÄts izmaiņu kopumÄ %{value}." text_issues_destroy_confirmation: 'Vai tieÅ¡Äm vÄ“laties dzÄ“st izvÄ“lÄ“to uzdevumu(us)?' text_select_project_modules: 'IzvÄ“lieties moduļus Å¡im projektam:' text_default_administrator_account_changed: NoklusÄ“tais administratora konts mainÄ«ts text_file_repository_writable: Pielikumu direktorijÄ atļauts rakstÄ«t text_plugin_assets_writable: Spraudņu kataloga direktorijÄ atļauts rakstÄ«t text_minimagick_available: "MiniMagick pieejams (neobligÄts)" text_destroy_time_entries_question: "%{hours} stundas tika ziņotas par uzdevumu, ko vÄ“laties dzÄ“st. Ko darÄ«t?" text_destroy_time_entries: DzÄ“st ziņotÄs stundas text_assign_time_entries_to_project: Piešķirt ziņotÄs stundas projektam text_reassign_time_entries: 'Piešķirt ziņotÄs stundas uzdevumam:' text_user_wrote: "%{value} rakstÄ«ja:" text_user_wrote_in: "%{value} rakstÄ«ja (%{link}):" text_enumeration_destroy_question: "%{count} objekti ir piešķirti Å¡ai vÄ“rtÄ«bai." text_enumeration_category_reassign_to: 'Piešķirt tos Å¡ai vÄ“rtÄ«bai:' text_email_delivery_not_configured: "E-pastu nosÅ«tīšana nav konfigurÄ“ta, un ziņojumi ir izslÄ“gti.\nKonfigurÄ“jiet savu SMTP serveri datnÄ“ config/configuration.yml un pÄrstartÄ“jiet lietotni." text_repository_usernames_mapping: "IzvÄ“lieties vai atjaunojiet Redmine lietotÄju, saistÄ«tu ar katru lietotÄjvÄrdu, kas atrodams repozitorija žurnÄlÄ.\nLietotÄji ar to paÅ¡u Redmine un repozitorija lietotÄjvÄrdu bÅ«s saistÄ«ti automÄtiski." text_diff_truncated: '... Å is diff tika nošķelts, jo tas pÄrsniedz maksimÄlo izmÄ“ru, ko var parÄdÄ«t.' text_custom_field_possible_values_info: 'Katra vÄ“rtÄ«bas savÄ rindÄ' text_wiki_page_destroy_question: "Å ij lapai ir %{descendants} apakÅ¡lapa(as) un pÄ“cnÄcÄ“ji. Ko darÄ«t?" text_wiki_page_nullify_children: "PaturÄ“t apakÅ¡lapas kÄ pamatlapas" text_wiki_page_destroy_children: "DzÄ“st apakÅ¡lapas un visus pÄ“cnÄcÄ“jus" text_wiki_page_reassign_children: "Piešķirt apakÅ¡lapas Å¡ai lapai" text_own_membership_delete_confirmation: "JÅ«s tÅ«lÄ«t dzÄ“sÄ«siet dažas vai visas atļaujas, un Jums pÄ“c tam var nebÅ«t atļauja labot Å¡o projektu.\nVai turpinÄt?" default_role_manager: Menedžeris default_role_developer: IzstrÄdÄtÄjs default_role_reporter: ZiņotÄjs default_tracker_bug: Kļūda default_tracker_feature: IezÄ«me default_tracker_support: Atbalsts default_issue_status_new: Jauns default_issue_status_in_progress: AttÄ«stÄ«bÄ default_issue_status_resolved: AtrisinÄts default_issue_status_feedback: Atsauksmes default_issue_status_closed: SlÄ“gts default_issue_status_rejected: NoraidÄ«ts default_doc_category_user: LietotÄja dokumentÄcija default_doc_category_tech: TehniskÄ dokumentÄcija default_priority_low: Zema default_priority_normal: NormÄla default_priority_high: Augsta default_priority_urgent: Steidzama default_priority_immediate: TÅ«lÄ«tÄ“ja default_activity_design: Dizains default_activity_development: IzstrÄdÄÅ¡ana enumeration_issue_priorities: Uzdevumu prioritÄtes enumeration_doc_categories: Dokumentu kategorijas enumeration_activities: AktivitÄtes (laika uzskaite) enumeration_system_activity: SistÄ“mas aktivitÄtes error_can_not_delete_custom_field: Unable to delete custom field permission_manage_subtasks: Manage subtasks label_profile: Profile error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. field_parent_issue: Parent task error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_subtask_plural: ApakÅ¡uzdevumi error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    label_project_copy_notifications: Send email notifications during the project copy field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Tikai par uzdevumiem, kurus novēroju vai kuros esmu iesaistījies label_user_mail_option_none: Ne par ko field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: Mani uzdevumu filtri text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Izvērst visu button_collapse_all: Savērst visu label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Uzdevumu redzamība label_issues_visibility_all: Visi uzdevumi permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Nodošanas ziņojumu kodējums field_scm_path_encoding: Ceļa kodējums text_scm_path_encoding_note: "Noklusējuma: UTF-8" field_path_to_repository: Repozitorija ceļš field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 uzdevums one: 1 uzdevums other: "%{count} uzdevumi" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Aizvērt button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: KopÄ“t apakÅ¡uzdevumus label_copied_to: KopÄ“ts uz label_copied_from: KopÄ“ts no label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: visi label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Ar apakÅ¡projektiem label_cross_project_tree: Ar projekta koku label_cross_project_hierarchy: Ar projektu hierarhiju label_cross_project_system: Ar visiem projektiem button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: KopÄ text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: "E-pasts" setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API atslÄ“ga setting_lost_password: NozaudÄ“ta parole mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: DzÄ“st relÄciju error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/mk.yml000066400000000000000000002330711500112024600171630ustar00rootroot00000000000000mk: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d/%m/%Y" short: "%d %b" long: "%d %B, %Y" day_names: [недела, понеделник, вторник, Ñреда, четврток, петок, Ñабота] abbr_day_names: [нед, пон, вто, Ñре, чет, пет, Ñаб] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, јануари, февруари, март, април, мај, јуни, јули, авгуÑÑ‚, Ñептември, октомври, ноември, декември] abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, Ñеп, окт, ное, дек] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%d/%m/%Y %H:%M" time: "%H:%M" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "предпладне" pm: "попладне" datetime: distance_in_words: half_a_minute: "пола минута" less_than_x_seconds: one: "помалку од 1 Ñекунда" other: "помалку од %{count} Ñекунди" x_seconds: one: "1 Ñекунда" other: "%{count} Ñекунди" less_than_x_minutes: one: "помалку од 1 минута" other: "помалку од %{count} минути" x_minutes: one: "1 минута" other: "%{count} минути" about_x_hours: one: "околу 1 чаÑ" other: "околу %{count} чаÑа" x_hours: one: "1 чаÑ" other: "%{count} чаÑа" x_days: one: "1 ден" other: "%{count} дена" about_x_months: one: "околу 1 меÑец" other: "околу %{count} меÑеци" x_months: one: "1 меÑец" other: "%{count} меÑеци" about_x_years: one: "околу 1 година" other: "околу %{count} години" over_x_years: one: "преку 1 година" other: "преку %{count} години" almost_x_years: one: "Ñкоро 1 година" other: "Ñкоро %{count} години" number: # Default format for numbers format: separator: "." delimiter: "" precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "и" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "не е вклучено во лиÑтата" exclusion: "е резервирано" invalid: "е невалидно" confirmation: "не Ñе Ñовпаѓа Ñо потврдата" accepted: "мора да е прифатено" empty: "неможе да е празно" blank: "неможе да е празно" too_long: "е предолго (макÑ. %{count} знаци)" too_short: "е прекратко (мин. %{count} знаци)" wrong_length: "е погрешна должина (треба да е %{count} знаци)" taken: "е веќе зафатено" not_a_number: "не е број" not_a_date: "не е валидна дата" greater_than: "мора да е поголемо од %{count}" greater_than_or_equal_to: "мора да е поголемо или еднакво на %{count}" equal_to: "мора да е еднакво на %{count}" less_than: "мора да е помало од %{count}" less_than_or_equal_to: "мора да е помало или еднакво на %{count}" odd: "мора да е непарно" even: "мора да е парно" greater_than_start_date: "мора да е поголема од почетната дата" not_same_project: "не припаѓа на иÑтиот проект" circular_dependency: "Оваа врÑка ќе креира кружна завиÑноÑÑ‚" cant_link_an_issue_with_a_descendant: "Задача неможе да Ñе поврзе Ñо една од нејзините подзадачи" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Изберете general_text_No: 'Ðе' general_text_Yes: 'Да' general_text_no: 'не' general_text_yes: 'да' general_lang_name: 'Macedonian (МакедонÑки)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Профилот е уÑпешно ажуриран. notice_account_invalid_credentials: Ðеточен кориÑник или лозинка notice_account_password_updated: Лозинката е уÑпешно ажурирана. notice_account_wrong_password: Погрешна лозинка notice_account_register_done: Профилот е уÑпешно креиран. За активација, клкнете на врÑката што ви е пратена по е-пошта. notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. notice_account_activated: Your account has been activated. You can now log in. notice_successful_create: УÑпешно креирање. notice_successful_update: УÑпешно ажурирање. notice_successful_delete: УÑпешно бришење. notice_successful_connection: УÑпешна конекција. notice_file_not_found: The page you were trying to access doesn't exist or has been removed. notice_locking_conflict: Data has been updated by another user. notice_not_authorized: You are not authorized to access this page. notice_email_sent: "Е-порака е пратена на %{value}" notice_email_error: "Се Ñлучи грешка при праќање на е-пораката (%{value})" notice_feeds_access_key_reseted: Вашиот Atom клуч за приÑтап е reset. notice_api_access_key_reseted: Вашиот API клуч за приÑтап е reset. notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." notice_failed_to_save_members: "Failed to save member(s): %{errors}." notice_account_pending: "Your account was created and is now pending administrator approval." notice_default_data_loaded: Default configuration successfully loaded. notice_unable_delete_version: Unable to delete version. notice_unable_delete_time_entry: Unable to delete time log entry. notice_issue_done_ratios_updated: Issue done ratios updated. error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" error_scm_annotate: "The entry does not exist or can not be annotated." error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_delete_custom_field: Unable to delete custom field error_can_not_delete_tracker_html: "This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "This role is in use and can not be deleted." error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' error_can_not_archive_project: This project can not be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' error_unable_delete_issue_status: 'Unable to delete issue status (%{value})' error_unable_to_connect: "Unable to connect (%{value})" warning_attachments_not_saved: "%{count} file(s) could not be saved." mail_subject_lost_password: "Вашата %{value} лозинка" mail_body_lost_password: 'To change your password, click on the following link:' mail_subject_register: "Your %{value} account activation" mail_body_register: 'To activate your account, click on the following link:' mail_body_account_information_external: "You can use your %{value} account to log in." mail_body_account_information: Your account information mail_subject_account_activation_request: "%{value} account activation request" mail_body_account_activation_request: "Ðов кориÑник (%{value}) е региÑтриран. The account is pending your approval:" mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." field_name: Име field_description: ÐžÐ¿Ð¸Ñ field_summary: Краток Ð¾Ð¿Ð¸Ñ field_is_required: Задолжително field_firstname: Име field_lastname: Презиме field_mail: Е-пошта field_filename: Датотека field_filesize: Големина field_downloads: Превземања field_author: Ðвтор field_created_on: Креиран field_updated_on: Ðжурирано field_field_format: Формат field_is_for_all: За Ñите проекти field_possible_values: Можни вредноÑти field_regexp: Regular expression field_min_length: Минимална должина field_max_length: МакÑимална должина field_value: ВредноÑÑ‚ field_category: Категорија field_title: ÐаÑлов field_project: Проект field_issue: Задача field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_notes: Белешки field_is_closed: Задачата е затворена field_is_default: Default value field_tracker: Tracker field_subject: ÐаÑлов field_due_date: Краен рок field_assigned_to: Доделена на field_priority: Приоритет field_fixed_version: Target version field_user: КориÑник field_principal: User or Group field_role: Улога field_homepage: Веб Ñтрана field_is_public: Јавен field_parent: Подпроект на field_is_in_roadmap: Issues displayed in roadmap field_login: КориÑник field_mail_notification: ИзвеÑтувања по e-пошта field_admin: ÐдминиÑтратор field_last_login_on: ПоÑледна најава field_language: Јазик field_effective_date: Дата field_password: Лозинка field_new_password: Ðова лозинка field_password_confirmation: Потврда field_version: Верзија field_type: Тип field_host: ХоÑÑ‚ field_port: Порт field_account: Account field_base_dn: Base DN field_attr_login: Login attribute field_attr_firstname: Firstname attribute field_attr_lastname: Lastname attribute field_attr_mail: Email attribute field_onthefly: Моментално (On-the-fly) креирање на кориÑници field_start_date: Почеток field_done_ratio: "% Завршено" field_auth_source: Режим на автентикација field_hide_mail: Криј ја мојата адреÑа на е-пошта field_comments: Коментар field_url: URL field_start_page: Почетна Ñтрана field_subproject: Подпроект field_hours: ЧаÑови field_activity: ÐктивноÑÑ‚ field_spent_on: Дата field_identifier: Идентификатор field_is_filter: КориÑти како филтер field_issue_to: Поврзана задача field_delay: Доцнење field_assignable: Ðа оваа улога може да Ñе доделуваат задачи field_redirect_existing_links: ПренаÑочи ги поÑтоечките врÑки field_estimated_hours: Проценето време field_column_names: Колони field_time_entries: Бележи време field_time_zone: ВременÑка зона field_searchable: Може да Ñе пребарува field_default_value: Default value field_comments_sorting: Прикажувај коментари field_parent_title: Parent page field_editable: Може да Ñе уредува field_watcher: Watcher field_content: Содржина field_group_by: Групирај ги резултатите Ñпоред field_sharing: Споделување field_parent_issue: Parent task setting_app_title: ÐаÑлов на апликацијата setting_welcome_text: ТекÑÑ‚ за добредојде setting_default_language: Default јазик setting_login_required: Задолжителна автентикација setting_self_registration: Само-региÑтрација setting_attachment_max_size: МакÑ. големина на прилог setting_issues_export_limit: Issues export limit setting_mail_from: Emission email address setting_plain_text_mail: ТекÑтуални е-пораки (без HTML) setting_host_name: Име на хоÑÑ‚ и патека setting_text_formatting: Форматирање на текÑÑ‚ setting_wiki_compression: КомпреÑија на иÑторијата на вики setting_feeds_limit: Feed content limit setting_default_projects_public: Ðовите проекти Ñе иницијално јавни setting_autofetch_changesets: Autofetch commits setting_sys_api_enabled: Enable WS for repository management setting_commit_ref_keywords: Referencing keywords setting_commit_fix_keywords: Fixing keywords setting_autologin: ÐвтоматÑка најава setting_date_format: Формат на дата setting_time_format: Формат на време setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти setting_issue_list_default_columns: Default columns displayed on the issue list setting_protocol: Протокол setting_per_page_options: Objects per page options setting_user_format: Приказ на кориÑниците setting_activity_days_default: Денови прикажана во активноÑта на проектот setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти setting_enabled_scm: Овозможи SCM setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API клуч setting_sequential_project_identifiers: Генерирај поÑледователни идентификатори на проекти setting_gravatar_enabled: КориÑти Gravatar кориÑнички икони setting_gravatar_default: Default Gravatar image setting_diff_max_lines_displayed: Max number of diff lines displayed setting_file_max_size_displayed: Max size of text files displayed inline setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_password_min_length: Мин. должина на лозинка setting_new_project_user_role_id: Улога доделена на неадминиÑтраторÑки кориÑник кој креира проект setting_default_projects_modules: Default enabled modules for new projects setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status setting_start_of_week: Start calendars on setting_rest_api_enabled: Enable REST web service setting_cache_formatted_text: Cache formatted text permission_add_project: Креирај проекти permission_add_subprojects: Креирај подпроекти permission_edit_project: Уреди проект permission_select_project_modules: Изберете модули за проект permission_manage_members: Manage members permission_manage_project_activities: Manage project activities permission_manage_versions: Manage versions permission_manage_categories: Manage issue categories permission_view_issues: Прегледај задачи permission_add_issues: Додавај задачи permission_edit_issues: Уредувај задачи permission_manage_issue_relations: Manage issue relations permission_add_issue_notes: Додавај белешки permission_edit_issue_notes: Уредувај белешки permission_edit_own_issue_notes: Уредувај ÑопÑтвени белешки permission_delete_issues: Бриши задачи permission_manage_public_queries: Manage public queries permission_save_queries: Save queries permission_view_gantt: View gantt chart permission_view_calendar: View calendar permission_view_issue_watchers: View watchers list permission_add_issue_watchers: Add watchers permission_delete_issue_watchers: Delete watchers permission_log_time: Бележи потрошено време permission_view_time_entries: Прегледај потрошено време permission_edit_time_entries: Уредувај белешки за потрошено време permission_edit_own_time_entries: Уредувај ÑопÑтвени белешки за потрошено време permission_manage_news: Manage news permission_comment_news: Коментирај на веÑти permission_view_documents: Прегледувај документи permission_manage_files: Manage files permission_view_files: Прегледувај датотеки permission_manage_wiki: Manage wiki permission_rename_wiki_pages: Преименувај вики Ñтраници permission_delete_wiki_pages: Бриши вики Ñтраници permission_view_wiki_pages: Прегледувај вики permission_view_wiki_edits: Прегледувај вики иÑторија permission_edit_wiki_pages: Уредувај вики Ñтраници permission_delete_wiki_pages_attachments: Бриши прилози permission_protect_wiki_pages: Заштитувај вики Ñтраници permission_manage_repository: Manage repository permission_browse_repository: Browse repository permission_view_changesets: View changesets permission_commit_access: Commit access permission_manage_boards: Manage boards permission_view_messages: View messages permission_add_messages: Post messages permission_edit_messages: Уредувај пораки permission_edit_own_messages: Уредувај ÑопÑтвени пораки permission_delete_messages: Бриши пораки permission_delete_own_messages: Бриши ÑопÑтвени пораки permission_export_wiki_pages: Export wiki pages permission_manage_subtasks: Manage subtasks project_module_issue_tracking: Следење на задачи project_module_time_tracking: Следење на време project_module_news: ВеÑти project_module_documents: Документи project_module_files: Датотеки project_module_wiki: Вики project_module_repository: Repository project_module_boards: Форуми project_module_calendar: Календар project_module_gantt: Gantt label_user: КориÑник label_user_plural: КориÑници label_user_new: Ðов кориÑник label_user_anonymous: Ðнонимен label_project: Проект label_project_new: Ðов проект label_project_plural: Проекти label_x_projects: zero: нема проекти one: 1 проект other: "%{count} проекти" label_project_all: Сите проекти label_project_latest: ПоÑледните проекти label_issue: Задача label_issue_new: Ðова задача label_issue_plural: Задачи label_issue_view_all: Прегледај ги Ñите задачи label_issues_by: "Задачи по %{value}" label_issue_added: Задачата е додадена label_issue_updated: Задачата е ажурирана label_document: Документ label_document_new: Ðов документ label_document_plural: Документи label_document_added: Документот е додаден label_role: Улога label_role_plural: Улоги label_role_new: Ðова улога label_role_and_permissions: Улоги и овлаÑтувања label_member: Член label_member_new: Ðов член label_member_plural: Членови label_tracker: Tracker label_tracker_plural: Trackers label_tracker_new: New tracker label_workflow: Workflow label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð½Ð° задача label_issue_status_plural: СтатуÑи на задачи label_issue_status_new: Ðов ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_category: Категорија на задача label_issue_category_plural: Категории на задачи label_issue_category_new: Ðова категорија label_custom_field: Прилагодено поле label_custom_field_plural: Прилагодени полиња label_custom_field_new: Ðово прилагодено поле label_enumerations: Enumerations label_enumeration_new: Ðова вредноÑÑ‚ label_information: Информација label_information_plural: Информации label_register: РегиÑтрирај Ñе label_password_lost: Изгубена лозинка label_home: Почетна label_my_page: Мојата Ñтрана label_my_account: Мојот профил label_my_projects: Мои проекти label_administration: ÐдминиÑтрација label_login: Ðајави Ñе label_logout: Одјави Ñе label_help: Помош label_reported_issues: Пријавени задачи label_assigned_to_me_issues: Задачи доделени на мене label_registered_on: РегиÑтриран на label_activity: ÐктивноÑÑ‚ label_user_activity: "ÐктивноÑÑ‚ на %{value}" label_new: Ðова label_logged_as: Ðајавени Ñте како label_environment: Опкружување label_authentication: Ðвтентикација label_auth_source: Режим на автентикација label_auth_source_new: Ðов режим на автентикација label_auth_source_plural: Режими на автентикација label_subproject_plural: Подпроекти label_subproject_new: Ðов подпроект label_and_its_subprojects: "%{value} и неговите подпроекти" label_min_max_length: Мин. - МакÑ. должина label_list: ЛиÑта label_date: Дата label_integer: Integer label_float: Float label_boolean: Boolean label_string: ТекÑÑ‚ label_text: Долг текÑÑ‚ label_attribute: Ðтрибут label_attribute_plural: Ðтрибути label_no_data: Ðема податоци за прикажување label_change_status: Промени ÑÑ‚Ð°Ñ‚ÑƒÑ label_history: ИÑторија label_attachment: Датотека label_attachment_new: Ðова датотека label_attachment_delete: Избриши датотека label_attachment_plural: Датотеки label_file_added: Датотеката е додадена label_report: Извештај label_report_plural: Извештаи label_news: ÐовоÑÑ‚ label_news_new: Додади новоÑÑ‚ label_news_plural: ÐовоÑти label_news_latest: ПоÑледни новоÑти label_news_view_all: Прегледај ги Ñите новоÑти label_news_added: ÐовоÑтта е додадена label_settings: Settings label_overview: Преглед label_version: Верзија label_version_new: Ðова верзија label_version_plural: Верзии label_close_versions: Затвори ги завршените врзии label_confirmation: Потврда label_export_to: 'ДоÑтапно и во:' label_read: Прочитај... label_public_projects: Јавни проекти label_open_issues: отворена label_open_issues_plural: отворени label_closed_issues: затворена label_closed_issues_plural: затворени label_x_open_issues_abbr: zero: 0 отворени one: 1 отворена other: "%{count} отворени" label_x_closed_issues_abbr: zero: 0 затворени one: 1 затворена other: "%{count} затворени" label_total: Вкупно label_permissions: ОвлаÑтувања label_current_status: Моментален ÑÑ‚Ð°Ñ‚ÑƒÑ label_new_statuses_allowed: Дозволени нови ÑтатуÑи label_all: Ñите label_none: ниеден label_nobody: никој label_next: Следно label_previous: Претходно label_used_by: КориÑтено од label_details: Детали label_add_note: Додади белешка label_calendar: Календар label_months_from: меÑеци од label_gantt: Gantt label_internal: Internal label_last_changes: "поÑледни %{count} промени" label_change_view_all: Прегледај ги Ñите промени label_comment: Коментар label_comment_plural: Коментари label_x_comments: zero: нема коментари one: 1 коментар other: "%{count} коментари" label_comment_add: Додади коментар label_comment_added: Коментарот е додаден label_comment_delete: Избриши коментари label_query: Custom query label_query_plural: Custom queries label_query_new: New query label_filter_add: Додади филтер label_filter_plural: Филтри label_equals: е label_not_equals: не е label_in_less_than: за помалку од label_in_more_than: за повеќе од label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: во label_today: Ð´ÐµÐ½ÐµÑ label_yesterday: вчера label_this_week: оваа недела label_last_week: минатата недела label_last_n_days: "поÑледните %{count} дена" label_this_month: овој меÑец label_last_month: минатиот меÑец label_this_year: оваа година label_date_range: Date range label_less_than_ago: пред помалку од денови label_more_than_ago: пред повеќе од денови label_ago: пред денови label_contains: Ñодржи label_not_contains: не Ñодржи label_day_plural: денови label_repository: Складиште label_repository_plural: Складишта label_branch: Гранка label_tag: Tag label_revision: Ревизија label_revision_plural: Ревизии label_revision_id: "Ревизија %{value}" label_associated_revisions: Associated revisions label_added: added label_modified: modified label_copied: copied label_renamed: renamed label_deleted: deleted label_latest_revision: ПоÑледна ревизија label_latest_revision_plural: ПоÑледни ревизии label_view_revisions: Прегледај ги ревизиите label_view_all_revisions: Прегледај ги Ñите ревизии label_max_size: МакÑ. големина label_roadmap: Roadmap label_roadmap_due_in: "Due in %{value}" label_roadmap_overdue: "КаÑни %{value}" label_roadmap_no_issues: Ðема задачи за оваа верзија label_search: Барај label_result_plural: Резултати label_all_words: Сите зборови label_wiki: Вики label_wiki_edit: Вики уредување label_wiki_edit_plural: Вики уредувања label_wiki_page: Вики Ñтраница label_wiki_page_plural: Вики Ñтраници label_index_by_title: Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ наÑлов label_index_by_date: Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ дата label_current_version: Current version label_preview: Preview label_feed_plural: Feeds label_changes_details: Детали за Ñите промени label_issue_tracking: Следење на задачи label_spent_time: Потрошено време label_f_hour: "%{value} чаÑ" label_f_hour_plural: "%{value} чаÑа" label_time_tracking: Следење на време label_change_plural: Промени label_statistics: СтатиÑтики label_commits_per_month: Commits per month label_commits_per_author: Commits per author label_view_diff: View differences label_diff_inline: inline label_diff_side_by_side: side by side label_options: Опции label_copy_workflow_from: Copy workflow from label_permissions_report: Permissions report label_watched_issues: Watched issues label_related_issues: Поврзани задачи label_applied_status: Applied status label_loading: Loading... label_relation_new: Ðова релација label_relation_delete: Избриши релација label_relates_to: related to label_duplicates: дупликати label_duplicated_by: duplicated by label_blocks: blocks label_blocked_by: блокирано од label_precedes: претходи label_follows: Ñледи label_stay_logged_in: ОÑтанете најавени label_disabled: disabled label_show_completed_versions: Show completed versions label_me: Ñ˜Ð°Ñ label_board: Форум label_board_new: Ðов форум label_board_plural: Форуми label_board_locked: Заклучен label_board_sticky: Sticky label_topic_plural: Теми label_message_plural: Пораки label_message_last: ПоÑледна порака label_message_new: Ðова порака label_message_posted: Поракате е додадена label_reply_plural: Одговори label_send_information: ИÑпрати ги информациите за профилот на кориÑникот label_year: Година label_month: МеÑец label_week: Ðедела label_date_from: Од label_date_to: До label_language_based: Според јазикот на кориÑникот label_sort_by: "Подреди Ñпоред %{value}" label_send_test_email: ИÑпрати теÑÑ‚ е-порака label_feeds_access_key: Atom клуч за приÑтап label_missing_feeds_access_key: ÐедоÑтика Atom клуч за приÑтап label_feeds_access_key_created_on: "Atom клучот за приÑтап креиран пред %{value}" label_module_plural: Модули label_added_time_by: "Додадено од %{author} пред %{age}" label_updated_time_by: "Ðжурирано од %{author} пред %{age}" label_updated_time: "Ðжурирано пред %{value}" label_jump_to_a_project: Префрли Ñе на проект... label_file_plural: Датотеки label_changeset_plural: Changesets label_default_columns: ОÑновни колони label_no_change_option: (Без промена) label_bulk_edit_selected_issues: Групно уредување на задачи label_theme: Тема label_default: Default label_search_titles_only: Пребарувај Ñамо наÑлови label_user_mail_option_all: "За било кој наÑтан во Ñите мои проекти" label_user_mail_option_selected: "За било кој наÑтан Ñамо во избраните проекти..." label_user_mail_no_self_notified: "Ðе ме извеÑтувај за промените што Ñ˜Ð°Ñ Ð³Ð¸ правам" label_registration_activation_by_email: активација на профил преку е-пошта label_registration_manual_activation: мануелна активација на профил label_registration_automatic_activation: автоматÑка активација на профил label_display_per_page: "По Ñтрана: %{value}" label_age: Age label_change_properties: Change properties label_general: Општо label_scm: SCM label_plugins: Додатоци label_ldap_authentication: LDAP автентикација label_downloads_abbr: Превземања label_optional_description: ÐžÐ¿Ð¸Ñ (незадолжително) label_add_another_file: Додади уште една датотека label_preferences: Preferences label_chronological_order: Во хронолошки ред label_reverse_chronological_order: In reverse chronological order label_incoming_emails: Дојдовни е-пораки label_generate_key: Генерирај клуч label_issue_watchers: Watchers label_example: Пример label_display: Прикажи label_sort: Подреди label_ascending: РаÑтечки label_descending: Опаѓачки label_date_from_to: Од %{start} до %{end} label_wiki_content_added: Вики Ñтраница додадена label_wiki_content_updated: Вики Ñтраница ажурирана label_group: Група label_group_plural: Групи label_group_new: Ðова група label_time_entry_plural: Потрошено време label_version_sharing_none: Ðе Ñподелено label_version_sharing_descendants: Со Ñите подпроекти label_version_sharing_hierarchy: Со хиерархијата на проектот label_version_sharing_tree: Со дрвото на проектот label_version_sharing_system: Со Ñите проекти label_update_issue_done_ratios: Update issue done ratios label_copy_source: Извор label_copy_target: ДеÑтинација label_copy_same_as_target: ИÑто како деÑтинацијата label_display_used_statuses_only: Only display statuses that are used by this tracker label_api_access_key: API клуч за приÑтап label_missing_api_access_key: ÐедоÑтига API клуч за приÑтап label_api_access_key_created_on: "API клучот за приÑтап е креиран пред %{value}" label_profile: Профил label_subtask_plural: Подзадачи label_project_copy_notifications: Праќај извеÑтувања по е-пошта при копирање на проект button_login: Ðајави Ñе button_submit: ИÑпрати button_save: Зачувај button_check_all: Штиклирај ги Ñите button_uncheck_all: Одштиклирај ги Ñите button_delete: Избриши button_create: Креирај button_create_and_continue: Креирај и продолжи button_test: ТеÑÑ‚ button_edit: Уреди button_add: Додади button_change: Промени button_apply: Примени button_clear: Избриши button_lock: Заклучи button_unlock: Отклучи button_download: Превземи button_list: List button_view: Прегледај button_move: ПремеÑти button_move_and_follow: ПремеÑти и Ñледи button_back: Back button_cancel: Откажи button_activate: Ðктивирај button_sort: Подреди button_log_time: Бележи време button_rollback: Rollback to this version button_watch: Следи button_unwatch: Ðе Ñледи button_reply: Одговори button_archive: Ðрхивирај button_unarchive: Одархивирај button_reset: Reset button_rename: Преименувај button_change_password: Промени лозинка button_copy: Копирај button_copy_and_follow: Копирај и Ñледи button_annotate: Annotate button_update: Ðжурирај button_configure: Конфигурирај button_quote: Цитирај button_show: Show status_active: активни status_registered: региÑтрирани status_locked: заклучени version_status_open: отворени version_status_locked: заклучени version_status_closed: затворени field_active: Active text_select_mail_notifications: Изберете за кои наÑтани да Ñе праќаат извеÑтувања по е-пошта да Ñе праќаат. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Дали Ñте Ñигурни дека Ñакате да го избришете проектот и Ñите поврзани податоци? text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} иÑто така ќе бидат избришани." text_workflow_edit: Select a role and a tracker to edit the workflow text_are_you_sure: Дали Ñте Ñигурни? text_journal_changed: "%{label} променето од %{old} во %{new}" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} избришан (%{old})" text_journal_added: "%{label} %{value} додаден" text_tip_issue_begin_day: задачи што почнуваат овој ден text_tip_issue_end_day: задачи што завршуваат овој ден text_tip_issue_begin_end_day: задачи што почнуваат и завршуваат овој ден text_caracters_maximum: "%{count} знаци макÑимум." text_caracters_minimum: "Мора да е најмалку %{count} знаци долго." text_length_between: "Должина помеѓу %{min} и %{max} знаци." text_tracker_no_workflow: No workflow defined for this tracker text_unallowed_characters: Ðедозволени знаци text_comma_separated: Дозволени Ñе повеќе вредноÑти (разделени Ñо запирка). text_line_separated: Дозволени Ñе повеќе вредноÑти (една линија за Ñекоја вредноÑÑ‚). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "Задачата %{id} е пријавена од %{author}." text_issue_updated: "Задачата %{id} е ажурирана од %{author}." text_wiki_destroy_confirmation: Дали Ñте Ñигурни дека Ñакате да го избришете ова вики и целата негова Ñодржина? text_issue_category_destroy_question: "Ðекои задачи (%{count}) Ñе доделени на оваа категорија. Што Ñакате да правите?" text_issue_category_destroy_assignments: Remove category assignments text_issue_category_reassign_to: Додели ги задачите на оваа категорија text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." text_load_default_configuration: Load the default configuration text_status_changed_by_changeset: "Applied in changeset %{value}." text_issues_destroy_confirmation: 'Дали Ñте Ñигурни дека Ñакате да ги избришете избраните задачи?' text_select_project_modules: 'Изберете модули за овој проект:' text_default_administrator_account_changed: Default administrator account changed text_file_repository_writable: Во папката за прилози може да Ñе запишува text_plugin_assets_writable: Во папката за додатоци може да Ñе запишува text_minimagick_available: MiniMagick available (незадолжително) text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do ?" text_destroy_time_entries: Delete reported hours text_assign_time_entries_to_project: Додели ги пријавените чаÑови на проектот text_reassign_time_entries: 'Reassign reported hours to this issue:' text_user_wrote: "%{value} напиша:" text_user_wrote_in: "%{value} напиша (%{link}):" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' text_email_delivery_not_configured: "ДоÑтавата по е-пошта не е конфигурирана, и извеÑтувањата Ñе оневозможени.\nКонфигурирајте го Вашиот SMTP Ñервер во config/configuration.yml и реÑтартирајте ја апликацијата." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_zoom_in: Zoom in text_zoom_out: Zoom out default_role_manager: Менаџер default_role_developer: Developer default_role_reporter: Reporter default_tracker_bug: Грешка default_tracker_feature: ФункционалноÑÑ‚ default_tracker_support: Поддршка default_issue_status_new: Ðова default_issue_status_in_progress: Во Ð¿Ñ€Ð¾Ð³Ñ€ÐµÑ default_issue_status_resolved: Разрешена default_issue_status_feedback: Feedback default_issue_status_closed: Затворена default_issue_status_rejected: Одбиена default_doc_category_user: КориÑничка документација default_doc_category_tech: Техничка документација default_priority_low: Ðизок default_priority_normal: Ðормален default_priority_high: ВиÑок default_priority_urgent: Итно default_priority_immediate: Веднаш default_activity_design: Дизајн default_activity_development: Развој enumeration_issue_priorities: Приоритети на задача enumeration_doc_categories: Категории на документ enumeration_activities: ÐктивноÑти (Ñледење на време) enumeration_system_activity: СиÑтемÑка активноÑÑ‚ button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 Задача one: 1 Задача other: "%{count} Задачи" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: Ñите label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Со Ñите подпроекти label_cross_project_tree: Со дрвото на проектот label_cross_project_hierarchy: Со хиерархијата на проектот label_cross_project_system: Со Ñите проекти button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Вкупно text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_footer: Email footer setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Е-пошта setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Вкупно потрошено време notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API клуч setting_lost_password: Изгубена лозинка mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Избриши релација error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/mn.yml000066400000000000000000002435121500112024600171670ustar00rootroot00000000000000mn: direction: ltr jquery: locale: "en" date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y/%m/%d" short: "%b %d" long: "%Y, %B %d" day_names: [Даваа, МÑгмар, Лхагва, ПүрÑв, БааÑан, БÑмба, ÐÑм] abbr_day_names: [Дав, МÑг, Лха, Пүр, БÑн, БÑм, ÐÑм] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 1-Ñ€ Ñар, 2-Ñ€ Ñар, 3-Ñ€ Ñар, 4-Ñ€ Ñар, 5-Ñ€ Ñар, 6-Ñ€ Ñар, 7-Ñ€ Ñар, 8-Ñ€ Ñар, 9-Ñ€ Ñар, 10-Ñ€ Ñар, 11-Ñ€ Ñар, 12-Ñ€ Ñар] abbr_month_names: [~, 1Ñар, 2Ñар, 3Ñар, 4Ñар, 5Ñар, 6Ñар, 7Ñар, 8Ñар, 9Ñар, 10Ñар, 11Ñар, 12Ñар] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%Y/%m/%d %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%Y, %B %d %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "Ñ…Ð°Ð³Ð°Ñ Ð¼Ð¸Ð½ÑƒÑ‚" less_than_x_seconds: one: "Ñекунд орчим" other: "%{count} ÑекундÑÑÑ Ð±Ð°Ð³Ð° хугацаа" x_seconds: one: "1 Ñекунд" other: "%{count} Ñекунд" less_than_x_minutes: one: "Ð¼Ð¸Ð½ÑƒÑ‚Ð°Ð°Ñ Ð±Ð°Ð³Ð° хугацаа" other: "%{count} Ð¼Ð¸Ð½ÑƒÑ‚Ð°Ð°Ñ Ð±Ð°Ð³Ð° хугацаа" x_minutes: one: "1 минут" other: "%{count} минут" about_x_hours: one: "1 цаг орчим" other: "ойролцоогоор %{count} цаг" x_hours: one: "1 цаг" other: "%{count} цаг" x_days: one: "1 өдөр" other: "%{count} өдөр" about_x_months: one: "1 Ñар орчим" other: "ойролцоогоор %{count} Ñар" x_months: one: "1 Ñар" other: "%{count} Ñар" about_x_years: one: "ойролцоогоор 1 жил" other: "ойролцоогоор %{count} жил" over_x_years: one: "1 жилÑÑÑ Ð¸Ñ…" other: "%{count} жилÑÑÑ Ð¸Ñ…" almost_x_years: one: "бараг 1 жил" other: "бараг %{count} жил" number: format: separator: "." delimiter: " " precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Байт" other: "Байт" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "баÑ" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "жагÑаалтад заагдаагүй байна" exclusion: "нөөцлөгдÑөн" invalid: "буруу" confirmation: "баталгаажÑан өгөгдөлтÑй таарахгүй байна" accepted: "хүлÑÑж авах Ñ‘Ñтой" empty: "хооÑон байж болохгүй" blank: "бланк байж болохгүй" too_long: "дÑндүү урт байна (хамгийн ихдÑÑ %{count} Ñ‚ÑмдÑгт)" too_short: "дÑндүү богино байна (хамгийн багадаа %{count} Ñ‚ÑмдÑгт)" wrong_length: "буруу урттай байна (заавал %{count} Ñ‚ÑмдÑгт)" taken: "аль Ñ…ÑÐ´Ð¸Ð¹Ð½Ñ Ð°Ð²Ñан байна" not_a_number: "тоо биш байна" not_a_date: "зөв огноо биш байна" greater_than: "%{count} их байх Ñ‘Ñтой" greater_than_or_equal_to: "must be greater than or equal to %{count}" equal_to: "must be equal to %{count}" less_than: "must be less than %{count}" less_than_or_equal_to: "must be less than or equal to %{count}" odd: "заавал Ñондгой" even: "заавал Ñ‚Ñгш" greater_than_start_date: "must be greater than start date" not_same_project: "нÑг ижил төÑөлд хамаарахгүй байна" circular_dependency: "Ð­Ð½Ñ Ñ…Ð°Ñ€ÑŒÑ†Ð°Ð° нь гинжин(рекурÑив) харьцаа Ò¯Ò¯ÑгÑÑ… юм байна" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Сонгоно уу general_text_No: 'Үгүй' general_text_Yes: 'Тийм' general_text_no: 'үгүй' general_text_yes: 'тийм' general_lang_name: 'Mongolian (Монгол)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: ДанÑыг амжилттай өөрчиллөө. notice_account_invalid_credentials: Ð¥ÑÑ€ÑглÑгчийн нÑÑ€ ÑÑвÑл нууц үг буруу байна notice_account_password_updated: Ðууц үгийг амжилттай өөрчиллөө. notice_account_wrong_password: Буруу нууц үг notice_account_register_done: Ð¨Ð¸Ð½Ñ Ñ…ÑÑ€ÑглÑгч амжилттай Ò¯Ò¯ÑгÑлÑÑ. ИдÑвхжүүлÑхийн тулд, бидний тань луу илгÑÑÑÑн мÑйл дотор байгаа Ñ…Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð´ÑÑÑ€ дараарай. notice_can_t_change_password: Ð­Ð½Ñ Ñрх гадаад нÑвтрÑлтÑд ашигладаг ÑƒÑ‡Ñ€Ð°Ð°Ñ Ð½ÑƒÑƒÑ† үгийг өөрчлөх боломжгүй. notice_account_lost_email_sent: Бид таньд мÑйлÑÑÑ€ нууц үгÑÑ Ó©Ó©Ñ€Ñ‡Ð»Ó©Ñ… зааврыг илгÑÑÑÑн байгаа. notice_account_activated: Таны Ð´Ð°Ð½Ñ Ð¸Ð´ÑвхжлÑÑ. Одоо нÑвтÑрч орж болно. notice_successful_create: Ðмжилттай Ò¯Ò¯ÑгÑлÑÑ. notice_successful_update: Ðмжилттай өөрчиллөө. notice_successful_delete: Ðмжилттай уÑтгалаа. notice_successful_connection: Ðмжилттай холбогдлоо. notice_file_not_found: Таны үзÑÑ… гÑÑÑн Ñ…ÑƒÑƒÐ´Ð°Ñ Ð±Ð°Ð¹Ñ…Ð³Ò¯Ð¹ юмуу уÑтгагдÑан байна. notice_locking_conflict: Өгөгдлийг Ó©Ó©Ñ€ хүн өөрчилÑөн байна. notice_not_authorized: Танд ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñыг үзÑÑ… Ñрх байхгүй байна. notice_email_sent: "%{value} - руу мÑйл илгÑÑлÑÑ" notice_email_error: "МÑйл илгÑÑÑ…Ñд алдаа гарлаа (%{value})" notice_feeds_access_key_reseted: Таны Atom хандалтын түлхүүрийг дахин ÑхлүүллÑÑ. notice_api_access_key_reseted: Your API access key was reset. notice_failed_to_save_issues: "%{total} аÑуудал ÑонгогдÑÐ¾Ð½Ð¾Ð¾Ñ %{count} аÑуудлыг нь хадгалахад алдаа гарлаа: %{ids}." notice_account_pending: "Таны данÑыг Ò¯Ò¯ÑгÑж дууÑлаа, админиÑтратор баталгаажуулах хүртÑл хүлÑÑÐ½Ñ Ò¯Ò¯." notice_default_data_loaded: Стандарт тохиргоог амжилттай ачааллаа. notice_unable_delete_version: Хувилбарыг уÑтгах боломжгүй. notice_issue_done_ratios_updated: Issue done ratios updated. error_can_t_load_default_data: "Стандарт тохиргоог ачаалж чадÑангүй: %{value}" error_scm_not_found: "Repository дотор тухайн бичлÑг ÑÑвÑл хувилбарыг олÑонгүй." error_scm_command_failed: "Repository-д хандахад алдаа гарлаа: %{value}" error_scm_annotate: "БичлÑг байхгүй байна, ÑÑвÑл бичлÑгт тайлбар хавÑаргаж болохгүй." error_issue_not_found_in_project: 'СонгоÑон аÑуудал ÑÐ½Ñ Ñ‚Ó©Ñөлд хамаардаггүй юм уу ÑÑвÑл ÑиÑтемд байхгүй байна.' error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' error_can_not_archive_project: This project can not be archived error_issue_done_ratios_not_updated: "Issue done ratios not updated." error_workflow_copy_source: 'Please select a source tracker or role' error_workflow_copy_target: 'Please select target tracker(s) and role(s)' warning_attachments_not_saved: "%{count} file(s) файлыг хадгалж чадÑангүй." mail_subject_lost_password: "Таны %{value} нууц үг" mail_body_lost_password: 'Ðууц үгÑÑ Ó©Ó©Ñ€Ñ‡Ð»Ó©Ñ…Ð¸Ð¹Ð½ тулд доорх Ñ…Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð´ÑÑÑ€ дарна уу:' mail_subject_register: "Таны %{value} данÑыг идÑвхжүүлÑÑ…" mail_body_register: 'ДанÑаа идÑвхжүүлÑхийн тулд доорх Ñ…Ð¾Ð»Ð±Ð¾Ð¾Ñ Ð´ÑÑÑ€ дарна уу:' mail_body_account_information_external: "Та өөрийнхөө %{value} данÑыг ашиглаж холбогдож болно." mail_body_account_information: Таны данÑны тухай мÑдÑÑлÑл mail_subject_account_activation_request: "%{value} данÑыг идÑвхжүүлÑÑ… Ñ…Ò¯ÑÑлт" mail_body_account_activation_request: "Ð¨Ð¸Ð½Ñ Ñ…ÑÑ€ÑглÑгч (%{value}) бүртгүүлÑÑн байна. Таны баталгаажуулахыг хүлÑÑж байна:" mail_subject_reminder: "Дараагийн өдрүүдÑд %{count} аÑуудлыг шийдÑÑ… Ñ…ÑÑ€ÑгтÑй (%{days})" mail_body_reminder: "Танд оноогдÑон %{count} аÑуудлуудыг дараагийн %{days} өдрүүдÑд шийдÑÑ… Ñ…ÑÑ€ÑгтÑй:" mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." field_name: ÐÑÑ€ field_description: Тайлбар field_summary: ДүгнÑлт field_is_required: Зайлшгүй field_firstname: Таны нÑÑ€ field_lastname: Овог field_mail: ИмÑйл field_filename: Файл field_filesize: Ð¥ÑмжÑÑ field_downloads: Татаж авах Ð·Ò¯Ð¹Ð»Ñ field_author: Зохиогч field_created_on: Ò®Ò¯ÑÑÑн field_updated_on: ӨөрчилÑөн field_field_format: Формат field_is_for_all: Бүх төÑлийн хувьд field_possible_values: Боломжтой утгууд field_regexp: Энгийн илÑрхийлÑл field_min_length: Минимум урт field_max_length: МакÑимум урт field_value: Утга field_category: Төрөл field_title: Гарчиг field_project: ТөÑөл field_issue: ÐÑуудал field_status: Төлөв field_notes: ТÑмдÑглÑл field_is_closed: ÐÑуудал хаагдÑан field_is_default: Стандарт утга field_tracker: ЧиглÑл field_subject: Гарчиг field_due_date: ДууÑах огноо field_assigned_to: ОноогдÑон field_priority: ЗÑÑ€ÑглÑл field_fixed_version: Хувилбар field_user: Ð¥ÑÑ€ÑглÑгч field_role: Хандалтын Ñрх field_homepage: Ðүүр Ñ…ÑƒÑƒÐ´Ð°Ñ field_is_public: Олон нийтийн field_parent: ЭцÑг төÑөл нь field_is_in_roadmap: ÐÑуудлуудыг Ñвцын зураг дÑÑÑ€ харуулах field_login: ÐÑвтрÑÑ… нÑÑ€ field_mail_notification: ИмÑйл мÑдÑгдлүүд field_admin: ÐдминиÑтратор field_last_login_on: Сүүлийн холбоо field_language: Ð¥Ñл field_effective_date: Огноо field_password: Ðууц үг field_new_password: Ð¨Ð½Ð½Ñ Ð½ÑƒÑƒÑ† үг field_password_confirmation: Баталгаажуулах field_version: Хувилбар field_type: Төрөл field_host: ХоÑÑ‚ field_port: Порт field_account: Ð”Ð°Ð½Ñ field_base_dn: ҮндÑÑн ДРfield_attr_login: ÐÑвтрÑÑ… аттрибут field_attr_firstname: Таны нÑÑ€ аттрибут field_attr_lastname: Овог аттрибут field_attr_mail: ИмÑйл аттрибут field_onthefly: Ð¥Ò¯ÑÑÑн үедÑÑ Ñ…ÑÑ€ÑглÑгч Ò¯Ò¯ÑгÑÑ… field_start_date: ЭхлÑл field_done_ratio: "ГүйцÑтгÑл %" field_auth_source: ÐÑвтрÑÑ… арга field_hide_mail: Миний имÑйл хаÑгийг нуу field_comments: Тайлбар field_url: URL ХаÑг field_start_page: ТÑргүүн Ñ…ÑƒÑƒÐ´Ð°Ñ field_subproject: ДÑд төÑөл field_hours: Цаг field_activity: Үйл ажиллагаа field_spent_on: Огноо field_identifier: ТөÑлийн глобал нÑÑ€ field_is_filter: Шүүлтүүр болгон Ñ…ÑÑ€ÑглÑгддÑг field_issue_to: Хамаатай аÑуудал field_delay: Хоцролт field_assignable: Ð­Ð½Ñ Ñ…Ð°Ð½Ð´Ð°Ð»Ñ‚Ñ‹Ð½ ÑрхÑд аÑуудлуудыг оноож өгч болно field_redirect_existing_links: Байгаа холбооÑуудыг дахин чиглүүлÑÑ… field_estimated_hours: БарагцаалÑан цаг field_column_names: Баганууд field_time_zone: Цагын Ð±Ò¯Ñ field_searchable: Хайж болох field_default_value: Стандарт утга field_comments_sorting: Тайлбаруудыг харуул field_parent_title: ЭцÑг Ñ…ÑƒÑƒÐ´Ð°Ñ field_editable: ЗаÑварлагдана field_watcher: Харна field_content: Ðгуулга field_group_by: Үр дүнгÑÑÑ€ бүлÑглÑÑ… field_sharing: Sharing setting_app_title: Программын гарчиг setting_welcome_text: МÑндчилгÑÑ setting_default_language: Стандарт Ñ…Ñл setting_login_required: ÐÑвтрÑÑ… шаардлагатай setting_self_registration: Өөрийгөө бүртгүүлÑÑ… setting_attachment_max_size: ХавÑралт файлын дÑÑд Ñ…ÑмжÑÑ setting_issues_export_limit: ÐÑуудал ÑкÑпортлох Ñ…Ñзгаар setting_mail_from: Ямар имÑйл хаÑг Ò¯Ò¯ÑгÑÑ… setting_plain_text_mail: дан текÑÑ‚ мÑйл (HTML биш) setting_host_name: ХоÑтын нÑÑ€ болон зам setting_text_formatting: ТекÑÑ‚ Ñ…ÑлбÑржүүлÑлт setting_wiki_compression: Вики хуудÑуудын түүх дÑÑÑ€ шахалт хийх setting_feeds_limit: Фийд агуулгын Ñ…Ñзгаар setting_default_projects_public: Ð¨Ð¸Ð½Ñ Ñ‚Ó©Ñлүүд автоматаар олон нийтийнх байна setting_autofetch_changesets: Комитуудыг автоматаар татаж авах setting_sys_api_enabled: Репозитори менежментÑд зориулан WS-ийг идÑвхжүүлÑÑ… setting_commit_ref_keywords: Хамааруулах түлхүүр Ò¯Ð³Ñ setting_commit_fix_keywords: Зоолттой түлхүүр Ò¯Ð³Ñ setting_autologin: Компьютер дÑÑÑ€ Ñанах setting_date_format: Огнооны формат setting_time_format: Цагийн формат setting_cross_project_issue_relations: ТөÑөл хооронд аÑуудал хамааруулахыг зөвшөөрөх setting_issue_list_default_columns: ÐÑуудлуудыг харуулах Ñтандарт баганууд setting_emails_footer: ИмÑйлүүдийн хөл Ñ…ÑÑÑг setting_protocol: Протокол setting_per_page_options: ÐÑг хуудÑанд байх обьектуудын тохиргоо setting_user_format: Ð¥ÑÑ€ÑглÑгчдийг харуулах формат setting_activity_days_default: ТөÑлийн үйл ажиллагаа Ñ…ÑÑÑгт үзүүлÑÑ… өдрийн тоо setting_display_subprojects_issues: ДÑд төÑлүүдийн аÑуудлуудыг автоматаар гол төÑөл дÑÑÑ€ харуулах setting_enabled_scm: SCM - ийг идÑвхжүүлÑÑ… setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" setting_mail_handler_api_enabled: ИрÑÑн мÑйлүүдийн хувьд WS-ийг идÑвхжүүлÑÑ… setting_mail_handler_api_key: API түлхүүр setting_sequential_project_identifiers: ДÑÑ Ð´Ð°Ñ€Ð°Ð°Ð»Ñан төÑлийн глобал нÑÑ€ Ò¯Ò¯ÑгÑж байх setting_gravatar_enabled: Gravatar дүрÑүүдийг Ñ…ÑÑ€ÑглÑгчдÑд Ñ…ÑÑ€ÑглÑж байх setting_gravatar_default: Default Gravatar image setting_diff_max_lines_displayed: Ялгаатай мөрүүдийн тоо (дÑÑд тал нь) setting_file_max_size_displayed: Max size of text files displayed inline setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_password_min_length: Minimum password length setting_new_project_user_role_id: Role given to a non-admin user who creates a project setting_default_projects_modules: Default enabled modules for new projects setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status setting_start_of_week: Start calendars on setting_rest_api_enabled: Enable REST web service setting_cache_formatted_text: Cache formatted text permission_add_project: Create project permission_add_subprojects: Create subprojects permission_edit_project: ТөÑлийг заÑварлах permission_select_project_modules: ТөÑлийн модулуудийг Ñонгоно уу permission_manage_members: СиÑтемийн Ñ…ÑÑ€ÑглÑгчид permission_manage_project_activities: Manage project activities permission_manage_versions: Хувилбарууд permission_manage_categories: ÐÑуудлын ангиллууд permission_view_issues: ÐÑуудлуудыг харах permission_add_issues: ÐÑуудлууд нÑмÑÑ… permission_edit_issues: ÐÑуудлуудыг заÑварлах permission_manage_issue_relations: ÐÑуудлын хамаарлыг зохицуулах permission_add_issue_notes: ТÑмдÑглÑл нÑмÑÑ… permission_edit_issue_notes: ТÑмдÑглÑлүүд заÑварлах permission_edit_own_issue_notes: Өөрийн үлдÑÑÑÑн Ñ‚ÑмдÑглÑлүүдийг заÑварлах permission_delete_issues: ÐÑуудлуудыг уÑтгах permission_manage_public_queries: Олон нийтийн аÑуултууд permission_save_queries: ÐÑуултуудыг хадгалах permission_view_gantt: Гант диаграмыг үзÑÑ… permission_view_calendar: Календарь үзÑÑ… permission_view_issue_watchers: Ðжиглагчдын жагÑаалтыг харах permission_add_issue_watchers: Ðжиглагчид нÑмÑÑ… permission_delete_issue_watchers: Ðжиглагчдыг уÑтгах permission_log_time: ЗарцуулÑан хугацааг лог хийх permission_view_time_entries: ЗарцуулÑан хугацааг харах permission_edit_time_entries: Хугацааны логуудыг заÑварлах permission_edit_own_time_entries: Өөрийн хугацааны логуудыг заÑварлах permission_manage_news: МÑдÑÑ Ð¼ÑдÑÑллүүд permission_comment_news: МÑдÑÑнд тайлбар үлдÑÑÑ… permission_view_documents: Бичиг баримтуудыг харах permission_manage_files: Файлууд permission_view_files: Файлуудыг харах permission_manage_wiki: Вики удирдах permission_rename_wiki_pages: Вики хуудÑуудыг дахиж нÑрлÑÑ… permission_delete_wiki_pages: Вики хуудÑуудыг уÑтгах permission_view_wiki_pages: Вики үзÑÑ… permission_view_wiki_edits: Вики түүх үзÑÑ… permission_edit_wiki_pages: Вики хуудÑуудыг заÑварлах permission_delete_wiki_pages_attachments: ХавÑралтуудыг уÑтгах permission_protect_wiki_pages: Вики хуудÑуудыг хамгаалах permission_manage_repository: Репозитори permission_browse_repository: Репозиторийг үзÑÑ… permission_view_changesets: Өөрчлөлтүүдийг харах permission_commit_access: Коммит хандалт permission_manage_boards: Самбарууд permission_view_messages: ЗурваÑуудыг харах permission_add_messages: Ð—ÑƒÑ€Ð²Ð°Ñ Ð¸Ð»Ð³ÑÑÑ… permission_edit_messages: ЗурваÑуудыг заÑварлах permission_edit_own_messages: Өөрийн зурваÑуудыг заÑварлах permission_delete_messages: ЗурваÑуудыг уÑтгах permission_delete_own_messages: Өөрийн зурваÑуудыг уÑтгах permission_export_wiki_pages: Вики хуудÑуудыг ÑкÑпорт хийх project_module_issue_tracking: ÐÑуудал Ñ…Ñнах project_module_time_tracking: Хугацаа Ñ…Ñнах project_module_news: МÑдÑÑ Ð¼ÑдÑÑллүүд project_module_documents: Бичиг баримтууд project_module_files: Файлууд project_module_wiki: Вики project_module_repository: Репозитори project_module_boards: Самбарууд label_user: Ð¥ÑÑ€ÑглÑгч label_user_plural: Ð¥ÑÑ€ÑглÑгчид label_user_new: Ð¨Ð¸Ð½Ñ Ñ…ÑÑ€ÑглÑгч label_user_anonymous: Хамаагүй Ñ…ÑÑ€ÑглÑгч label_project: ТөÑөл label_project_new: Ð¨Ð¸Ð½Ñ Ñ‚Ó©Ñөл label_project_plural: ТөÑлүүд label_x_projects: zero: төÑөл байхгүй one: 1 төÑөл other: "%{count} төÑлүүд" label_project_all: Бүх ТөÑлүүд label_project_latest: Сүүлийн үеийн төÑлүүд label_issue: ÐÑуудал label_issue_new: Ð¨Ð¸Ð½Ñ Ð°Ñуудал label_issue_plural: ÐÑуудлууд label_issue_view_all: Бүх аÑуудлуудыг харах label_issues_by: "%{value} - н аÑуудлууд" label_issue_added: ÐÑуудал нÑмÑгдлÑÑ label_issue_updated: ÐÑуудал өөрчлөгдлөө label_document: Бичиг баримт label_document_new: Ð¨Ð¸Ð½Ñ Ð±Ð¸Ñ‡Ð¸Ð³ баримт label_document_plural: Бичиг баримтууд label_document_added: Бичиг баримт нÑмÑгдлÑÑ label_role: Хандалтын Ñрх label_role_plural: Хандалтын Ñрхүүд label_role_new: Ð¨Ð¸Ð½Ñ Ñ…Ð°Ð½Ð´Ð°Ð»Ñ‚Ñ‹Ð½ Ñрх label_role_and_permissions: Хандалтын Ñрхүүд болон зөвшөөрлүүд label_member: Гишүүн label_member_new: Ð¨Ð¸Ð½Ñ Ð³Ð¸ÑˆÒ¯Ò¯Ð½ label_member_plural: Гишүүд label_tracker: ЧиглÑл label_tracker_plural: ЧиглÑлүүд label_tracker_new: Ð¨Ð¸Ð½Ñ Ñ‡Ð¸Ð³Ð»Ñл label_workflow: Ðжлын дараалал label_issue_status: ÐÑуудлын төлөв label_issue_status_plural: ÐÑуудлын төлвүүд label_issue_status_new: Ð¨Ð¸Ð½Ñ Ñ‚Ó©Ð»Ó©Ð² label_issue_category: ÐÑуудлын ангилал label_issue_category_plural: ÐÑуудлын ангиллууд label_issue_category_new: Ð¨Ð¸Ð½Ñ Ð°Ð½Ð³Ð¸Ð»Ð°Ð» label_custom_field: Ð¥ÑÑ€ÑглÑгчийн тодорхойлÑон талбар label_custom_field_plural: Ð¥ÑÑ€ÑглÑгчийн тодорхойлÑон талбарууд label_custom_field_new: ШинÑÑÑ€ Ñ…ÑÑ€ÑглÑгчийн тодорхойлÑон талбар Ò¯Ò¯ÑгÑÑ… label_enumerations: Ðнгиллууд label_enumeration_new: Ð¨Ð¸Ð½Ñ ÑƒÑ‚Ð³Ð° label_information: МÑдÑÑлÑл label_information_plural: МÑдÑÑллүүд label_register: БүртгүүлÑÑ… label_password_lost: Ðууц үгÑÑ Ð°Ð»Ð´Ñан label_home: Ðүүр label_my_page: Миний Ñ…ÑƒÑƒÐ´Ð°Ñ label_my_account: Миний Ð´Ð°Ð½Ñ label_my_projects: Миний төÑлүүд label_administration: Ðдмин Ñ…ÑÑÑг label_login: ÐÑвтрÑÑ… label_logout: Гарах label_help: ТуÑламж label_reported_issues: МÑдÑгдÑÑн аÑуудлууд label_assigned_to_me_issues: Ðадад оноогдÑон аÑуудлууд label_registered_on: БүртгүүлÑÑн огноо label_activity: Үйл ажиллагаа label_user_activity: "%{value}-ийн үйл ажиллагаа" label_new: Ð¨Ð¸Ð½Ñ label_logged_as: ХолбогдÑон нÑÑ€ label_environment: Орчин label_authentication: ÐÑвтрÑÑ… label_auth_source: ÐÑвтрÑÑ… арга label_auth_source_new: Ð¨Ð¸Ð½Ñ Ð½ÑвтрÑÑ… арга label_auth_source_plural: ÐÑвтрÑÑ… аргууд label_subproject_plural: ДÑд төÑлүүд label_subproject_new: Ð¨Ð¸Ð½Ñ Ð´Ñд төÑөл label_and_its_subprojects: "%{value} болон холбогдох дÑд төÑлүүд" label_min_max_length: ДÑÑд - Доод урт label_list: ЖагÑаалт label_date: Огноо label_integer: БүхÑл тоо label_float: Бутархай тоо label_boolean: ҮнÑн худал утга label_string: ТекÑÑ‚ label_text: Урт текÑÑ‚ label_attribute: Ðттрибут label_attribute_plural: Ðттрибутууд label_no_data: ҮзүүлÑÑ… өгөгдөл байхгүй байна label_change_status: Төлвийг өөрчлөх label_history: Түүх label_attachment: Файл label_attachment_new: Ð¨Ð¸Ð½Ñ Ñ„Ð°Ð¹Ð» label_attachment_delete: Файл уÑтгах label_attachment_plural: Файлууд label_file_added: Файл нÑмÑгдлÑÑ label_report: Тайлан label_report_plural: Тайлангууд label_news: МÑдÑÑ label_news_new: Ð¨Ð¸Ð½Ñ Ð¼ÑдÑÑ label_news_plural: МÑдÑÑ label_news_latest: Сүүлийн үеийн мÑдÑÑнүүд label_news_view_all: Бүх мÑдÑÑг харах label_news_added: МÑдÑÑ Ð½ÑмÑгдлÑÑ label_settings: Тохиргоо label_overview: ЭхлÑл label_version: Хувилбар label_version_new: Ð¨Ð¸Ð½Ñ Ñ…ÑƒÐ²Ð¸Ð»Ð±Ð°Ñ€ label_version_plural: Хувилбарууд label_close_versions: ГүйцÑÑ‚ хувилбаруудыг хаалаа label_confirmation: Баталгаажуулах label_export_to: 'Ó¨Ó©Ñ€ авч болох формат:' label_read: Унших... label_public_projects: Олон нийтийн төÑлүүд label_open_issues: нÑÑлттÑй label_open_issues_plural: нÑÑлттÑй label_closed_issues: хаалттай label_closed_issues_plural: хаалттай label_x_open_issues_abbr: zero: 0 нÑÑлттÑй one: 1 нÑÑлттÑй other: "%{count} нÑÑлттÑй" label_x_closed_issues_abbr: zero: 0 хаалттай one: 1 хаалттай other: "%{count} хаалттай" label_total: Ðийт label_permissions: Зөвшөөрлүүд label_current_status: Одоогийн төлөв label_new_statuses_allowed: ШинÑÑÑ€ олгож болох төлвүүд label_all: бүгд label_none: хооÑон label_nobody: Ñ…Ñн ч биш label_next: Дараагийн label_previous: Өмнөх label_used_by: Ð¥ÑÑ€ÑглÑгддÑг label_details: ДÑлгÑÑ€Ñнгүй label_add_note: ТÑмдÑглÑл нÑмÑÑ… label_calendar: Календарь label_months_from: Саруудыг Ñ…Ð°Ð°Ð½Ð°Ð°Ñ label_gantt: Гант диаграм label_internal: Дотоод label_last_changes: "Ñүүлийн %{count} өөрчлөлтүүд" label_change_view_all: Бүх өөрчлөлтүүдийг харах label_comment: Тайлбар label_comment_plural: Тайлбарууд label_x_comments: zero: ÑÑтгÑгдÑл байхгүй one: 1 ÑÑтгÑгдÑлтÑй other: "%{count} ÑÑтгÑгдÑлтÑй" label_comment_add: Тайлбар нÑмÑÑ… label_comment_added: Тайлбар нÑмÑгдлÑÑ label_comment_delete: Тайлбарууд уÑтгах label_query: Ð¥ÑÑ€ÑглÑгчийн тодорхойлÑон аÑуулт label_query_plural: Ð¥ÑÑ€ÑглÑгчийн тодорхойлÑон аÑуултууд label_query_new: ШинÑÑÑ€ Ñ…ÑÑ€ÑглÑгчийн тодорхойлÑон аÑуулт Ò¯Ò¯ÑгÑÑ… label_filter_add: Шүүлтүүр нÑмÑÑ… label_filter_plural: Шүүлтүүрүүд label_equals: бол label_not_equals: биш label_in_less_than: Ð°Ð°Ñ Ð±Ð°Ð³Ð° label_in_more_than: Ð°Ð°Ñ Ð¸Ñ… label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: дотор label_today: өнөөдөр label_yesterday: өчигдөр label_this_week: ÑÐ½Ñ Ð´Ð¾Ð»Ð¾Ð¾ хоног label_last_week: өнгөрÑөн долоо хоног label_last_n_days: "Ñүүлийн %{count} өдрүүд" label_this_month: ÑÐ½Ñ Ñар label_last_month: Ñүүлийн Ñар label_this_year: ÑÐ½Ñ Ð¶Ð¸Ð» label_date_range: Ð¥Ñзгаар огноо label_less_than_ago: бага өдрийн дотор label_more_than_ago: их өдрийн дотор label_ago: өдрийн өмнө label_contains: агуулж байгаа label_not_contains: агуулаагүй label_day_plural: өдрүүд label_repository: Репозитори label_repository_plural: Репозиторууд label_branch: Салбар label_tag: Шошго label_revision: Хувилбар label_revision_plural: Хувилбарууд label_revision_id: "%{value} Хувилбар" label_associated_revisions: Хамааралтай хувилбарууд label_added: нÑмÑгдÑÑн label_modified: өөрчлөгдÑөн label_copied: хуулÑан label_renamed: нÑрийг нь өөрчилÑөн label_deleted: уÑтгаÑан label_latest_revision: Сүүлийн үеийн хувилбар label_latest_revision_plural: Сүүлийн үеийн хувилбарууд label_view_revisions: Хувилбаруудыг харах label_view_all_revisions: Бүх хувилбаруудыг харах label_max_size: Maximum size label_roadmap: Хөтөч label_roadmap_due_in: "%{value} дотор дууÑгах" label_roadmap_overdue: "%{value} оройтÑон" label_roadmap_no_issues: Ð­Ð½Ñ Ñ…ÑƒÐ²Ð¸Ð»Ð±Ð°Ñ€Ñ‚ аÑуудал байхгүй байна label_search: Хайх label_result_plural: Үр дүн label_all_words: Бүх Ò¯Ð³Ñ label_wiki: Вики label_wiki_edit: Вики заÑвар label_wiki_edit_plural: Вики заÑварууд label_wiki_page: Вики Ñ…ÑƒÑƒÐ´Ð°Ñ label_wiki_page_plural: Вики Ñ…ÑƒÑƒÐ´Ð°Ñ label_index_by_title: Гарчгаар ÑÑ€ÑмбÑлÑÑ… label_index_by_date: Огноогоор ÑÑ€ÑмбÑлÑÑ… label_current_version: Одоогийн хувилбар label_preview: Ямар харагдахыг шалгах label_feed_plural: Feeds label_changes_details: Бүх өөрчлөлтүүдийн дÑлгÑÑ€Ñнгүй label_issue_tracking: ÐÑуудал Ñ…Ñнах label_spent_time: ЗарцуулÑан хугацаа label_f_hour: "%{value} цаг" label_f_hour_plural: "%{value} цаг" label_time_tracking: Хугацааг Ñ…Ñнах label_change_plural: Өөрчлөлтүүд label_statistics: СтатиÑтик label_commits_per_month: Сард хийÑÑн коммитын тоо label_commits_per_author: Зохиогч бүрийн хувьд коммитын тоо label_view_diff: Ялгаануудыг харах label_diff_inline: дотор нь label_diff_side_by_side: зÑÑ€Ñгцүүлж label_options: Тохиргоо label_copy_workflow_from: Ðжлын дарааллыг хуулах label_permissions_report: Зөвшөөрлүүдийн таблиц label_watched_issues: Ðжиглагдаж байгаа аÑуудлууд label_related_issues: Хамааралтай аÑуудлууд label_applied_status: ОлгоÑон төлөв label_loading: Ðчаалж байна... label_relation_new: Ð¨Ð¸Ð½Ñ Ñ…Ð°Ð¼Ð°Ð°Ñ€Ð°Ð» label_relation_delete: Хамаарлыг уÑтгах label_relates_to: Ñнгийн хамааралтай label_duplicates: Ñ…Ð¾Ñ Ñ…Ð°Ð¼Ð°Ð°Ñ€Ð°Ð»Ñ‚Ð°Ð¹ label_duplicated_by: давхардуулÑан ÑзÑн label_blocks: шаардах хамааралтай label_blocked_by: блоколÑон ÑзÑн label_precedes: урьдчилах хамааралтай label_follows: дагаж label_stay_logged_in: Ð­Ð½Ñ ÐºÐ¾Ð¼ÑŒÑŽÑ‚ÐµÑ€ дÑÑÑ€ Ñанах label_disabled: идÑвхгүй болÑон label_show_completed_versions: ГүйцÑд хувилбаруудыг харуулах label_me: би label_board: Форум label_board_new: Ð¨Ð¸Ð½Ñ Ñ„Ð¾Ñ€ÑƒÐ¼ label_board_plural: Форумууд label_board_locked: ТүгжÑÑÑ‚Ñй label_board_sticky: Sticky label_topic_plural: СÑдвүүд label_message_plural: ЗурваÑууд label_message_last: Сүүлийн Ð·ÑƒÑ€Ð²Ð°Ñ label_message_new: Ð¨Ð¸Ð½Ñ Ð·ÑƒÑ€Ð²Ð°Ñ label_message_posted: Ð—ÑƒÑ€Ð²Ð°Ñ Ð½ÑмÑгдлÑÑ label_reply_plural: Хариултууд label_send_information: ДанÑны мÑдÑÑллийг Ñ…ÑÑ€ÑглÑгчид илгÑÑÑ… label_year: Жил label_month: Сар label_week: Долоо хоног label_date_from: Ð¥ÑзÑÑнÑÑÑ label_date_to: Ð¥Ñдий хүртÑл label_language_based: Ð¥ÑÑ€ÑглÑгчийн Ñ…ÑÐ»Ð½Ð°Ñ ÑˆÐ°Ð»Ñ‚Ð³Ð°Ð°Ð»Ð°Ð½ label_sort_by: "%{value} талбараар нь ÑÑ€ÑмбÑлÑÑ…" label_send_test_email: Турших мÑйл илгÑÑÑ… label_feeds_access_key: Atom хандах түлхүүр label_missing_feeds_access_key: Atom хандах түлхүүр алга label_feeds_access_key_created_on: "Atom хандалтын түлхүүр %{value}-ийн өмнө Ò¯Ò¯ÑÑÑн" label_module_plural: Модулууд label_added_time_by: "%{author} %{age}-ийн өмнө нÑмÑÑн" label_updated_time_by: "%{author} %{age}-ийн өмнө өөрчилÑөн" label_updated_time: "%{value} -ийн өмнө өөрчлөгдÑөн" label_jump_to_a_project: ТөÑөл Ñ€Ò¯Ò¯ очих... label_file_plural: Файлууд label_changeset_plural: Өөрчлөлтүүд label_default_columns: Стандарт баганууд label_no_change_option: (Өөрчлөлт байхгүй) label_bulk_edit_selected_issues: СонгогдÑон аÑуудлуудыг бөөнөөр заÑварлах label_theme: СиÑтемийн Дизайн label_default: Стандарт label_search_titles_only: Зөвхөн гарчиг хайх label_user_mail_option_all: "Миний бүх төÑөл дÑÑрх бүх үзÑгдлүүдийн хувьд" label_user_mail_option_selected: "СонгогдÑон төÑлүүдийн хувьд бүх үзÑгдÑл дÑÑÑ€..." label_user_mail_no_self_notified: "Миний өөрийн хийÑÑн өөрчлөлтүүдийн тухай надад мÑдÑгдÑÑ… Ñ…ÑÑ€Ñггүй" label_registration_activation_by_email: данÑыг имÑйлÑÑÑ€ идÑвхжүүлÑÑ… label_registration_manual_activation: данÑыг гараар идÑвхжүүлÑÑ… label_registration_automatic_activation: данÑыг автоматаар идÑвхжүүлÑÑ… label_display_per_page: 'ÐÑг хуудÑанд: %{value}' label_age: ÐÐ°Ñ label_change_properties: Тохиргоог өөрчлөх label_general: Ерөнхий label_scm: SCM label_plugins: Модулууд label_ldap_authentication: LDAP нÑвтрÑÑ… горим label_downloads_abbr: D/L label_optional_description: Дурын тайлбар label_add_another_file: Дахин файл нÑмÑÑ… label_preferences: Тохиргоо label_chronological_order: Цагаан толгойн Ò¯Ñгийн дарааллаар label_reverse_chronological_order: Урвуу цагаан толгойн Ò¯Ñгийн дарааллаар label_incoming_emails: ИрÑÑн мÑйлүүд label_generate_key: Түлхүүр Ò¯Ò¯ÑгÑÑ… label_issue_watchers: Ðжиглагчид label_example: ЖишÑÑ label_display: Display label_sort: Sort label_ascending: Ascending label_descending: Descending label_date_from_to: From %{start} to %{end} label_wiki_content_added: Wiki page added label_wiki_content_updated: Wiki page updated label_group: Group label_group_plural: Groups label_group_new: New group label_time_entry_plural: Spent time label_version_sharing_none: Not shared label_version_sharing_descendants: With subprojects label_version_sharing_hierarchy: With project hierarchy label_version_sharing_tree: With project tree label_version_sharing_system: With all projects label_update_issue_done_ratios: Update issue done ratios label_copy_source: Source label_copy_target: Target label_copy_same_as_target: Same as target label_display_used_statuses_only: Only display statuses that are used by this tracker label_api_access_key: API access key label_missing_api_access_key: Missing an API access key label_api_access_key_created_on: "API access key created %{value} ago" button_login: ÐÑвтрÑÑ… button_submit: ИлгÑÑÑ… button_save: Хадгалах button_check_all: Бүгдийг Ñонго button_uncheck_all: Бүгдийг үл Ñонго button_delete: УÑтгах button_create: Ò®Ò¯ÑгÑÑ… button_create_and_continue: Ò®Ò¯ÑгÑÑд цааш үргÑлжлүүлÑÑ… button_test: Турших button_edit: ЗаÑварлах button_add: ÐÑмÑÑ… button_change: Өөрчлөх button_apply: Өөрчлөлтийг хадгалах button_clear: ЦÑвÑрлÑÑ… button_lock: Түгжих button_unlock: ТүгжÑÑг тайлах button_download: Татах button_list: ЖагÑаалт button_view: Харах button_move: Зөөх button_move_and_follow: Зөө Ð±Ð°Ñ Ð´Ð°Ð³Ð° button_back: Буцах button_cancel: Болих button_activate: ИдÑвхжүүлÑÑ… button_sort: ЭрÑмбÑлÑÑ… button_log_time: Лог хийÑÑн хугацаа button_rollback: Ð­Ð½Ñ Ñ…ÑƒÐ²Ð¸Ð»Ð±Ð°Ñ€ руу буцах button_watch: Ðжиглах button_unwatch: Ðжиглахаа болих button_reply: Хариулах button_archive: Ðрхивлах button_unarchive: Ðрхивыг задлах button_reset: Ðнхны утгууд button_rename: ÐÑрийг нь Ñолих button_change_password: Ðууц үгÑÑ Ó©Ó©Ñ€Ñ‡Ð»Ó©Ñ… button_copy: Хуулах button_copy_and_follow: Зөө Ð±Ð°Ñ Ð´Ð°Ð³Ð° button_annotate: Тайлбар хавÑаргах button_update: ШинÑчлÑÑ… button_configure: Тохируулах button_quote: ИшлÑл button_show: ҮзÑÑ… status_active: идÑвхтÑй status_registered: бүртгүүлÑÑн status_locked: түгжÑÑÑ‚Ñй version_status_open: нÑÑлттÑй version_status_locked: түгжÑÑÑ‚Ñй version_status_closed: хаалттай field_active: идÑвхтÑй text_select_mail_notifications: Ямар үед имÑйлÑÑÑ€ мÑдÑгдÑл илгÑÑхийг Ñонгоно уу. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Та ÑÐ½Ñ Ñ‚Ó©Ñөл болоод буÑад мÑдÑÑллийг нь үнÑÑ…ÑÑÑ€ уÑтгамаар байна уу ? text_subprojects_destroy_warning: "Уг төÑлийн дÑд төÑлүүд : %{value} нь Ð±Ð°Ñ ÑƒÑтгагдах болно." text_workflow_edit: Ðжлын дарааллыг өөрчлөхийн тулд хандалтын Ñрх болон аÑуудлын чиглÑлийг Ñонгоно уу text_are_you_sure: Та итгÑлтÑй байна уу ? text_journal_changed: "%{label} %{old} байÑан нь %{new} болов" text_journal_set_to: "%{label} %{value} болгож өөрчиллөө" text_journal_deleted: "%{label} уÑÑ‚Ñан (%{old})" text_journal_added: "%{label} %{value} нÑмÑгдÑÑн" text_tip_issue_begin_day: ÑÐ½Ñ Ó©Ð´Ó©Ñ€ ÑхлÑÑ… ажил text_tip_issue_end_day: ÑÐ½Ñ Ó©Ð´Ó©Ñ€ дууÑах ажил text_tip_issue_begin_end_day: ÑÐ½Ñ Ó©Ð´Ó©Ñ€ ÑхлÑÑд мөн дууÑч байгаа ажил text_caracters_maximum: "дÑÑд тал нь %{count} Ò¯ÑÑг." text_caracters_minimum: "Хамгийн багадаа Ñдаж %{count} Ñ‚ÑмдÑгт байх." text_length_between: "Урт нь багадаа %{min}, ихдÑÑ %{max} Ñ‚ÑмдÑгт." text_tracker_no_workflow: ЭнÑÑ…Ò¯Ò¯ аÑуудлын чиглÑлд Ñмар ч ажлын дараалал тодорхойлогдоогүй байна text_unallowed_characters: Ð¥ÑÑ€ÑглÑж болохгүй Ñ‚ÑмдÑгтүүд text_comma_separated: ТаÑлалаар зааглан олон утга оруулж болно. text_line_separated: Multiple values allowed (one line for each value). text_issues_ref_in_commit_messages: Коммитийн зурваÑуудад хамааруулÑан болон байнгын аÑуудлууд text_issue_added: "ÐÑуудал %{id} - ийг Ñ…ÑÑ€ÑглÑгч %{author} мÑдÑгдÑÑн байна." text_issue_updated: "ÐÑуудал %{id} - ийг Ñ…ÑÑ€ÑглÑгч %{author} өөрчилÑөн байна." text_wiki_destroy_confirmation: Та ÑÐ½Ñ Ð²Ð¸ÐºÐ¸ болон холбогдох бүх мÑдÑÑллийг үнÑÑ…ÑÑÑ€ уÑтгамаар байна уу ? text_issue_category_destroy_question: "Ð­Ð½Ñ Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ зарим аÑуудлууд (%{count}) орÑон байна. Та Ñах Ð²Ñ ?" text_issue_category_destroy_assignments: ÐÑуудлуудыг ÑÐ½Ñ Ð°Ð½Ð³Ð¸Ð»Ð»Ð°Ð°Ñ Ð°Ð²Ð°Ñ… text_issue_category_reassign_to: ÐÑуудлуудыг ÑÐ½Ñ Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ дахин оноох text_user_mail_option: "Сонгогдоогүй төÑлүүдийн хувьд, та зөвхөн өөрийнхөө ажиглаж байгаа Ð·Ò¯Ð¹Ð»Ñ ÑŽÐ¼ÑƒÑƒ танд хамаатай зүйлÑийн талаар мÑдÑгдÑл авах болно (Таны оруулÑан аÑуудал, ÑÑвÑл танд онооÑон гÑÑ… мÑÑ‚)." text_no_configuration_data: "Хандалтын Ñрхүүд, чиглÑлүүд, аÑуудлын төлвүүд болон ажлын дарааллын тухай мÑдÑÑллийг хараахан оруулаагүй байна.\nТа Ñтандарт өгөгдлүүдийг даруйхан оруулахыг зөвлөж байна, оруулÑан хойно та заÑварлаж болно." text_load_default_configuration: Стандарт өгөгдлийг ачаалах text_status_changed_by_changeset: "%{value} өөрчлөлтөд хийгдÑÑн." text_issues_destroy_confirmation: 'Та ÑонгогдÑон аÑуудлуудыг үнÑÑ…ÑÑÑ€ уÑтгамаар байна уу ?' text_select_project_modules: 'Ð­Ð½Ñ Ñ‚Ó©Ñлийн хувьд идÑвхжүүлÑÑ… модулуудаа Ñонгоно уу:' text_default_administrator_account_changed: Стандарт админиÑтраторын бүртгÑл өөрчлөгдлөө text_file_repository_writable: ХавÑралт файл хадгалах Ñ…Ð°Ð²Ñ‚Ð°Ñ Ñ€ÑƒÑƒ бичих ÑрхтÑй text_plugin_assets_writable: Плагин модулийн аÑÑет Ñ…Ð°Ð²Ñ‚Ð°Ñ Ñ€ÑƒÑƒ бичих ÑрхтÑй text_minimagick_available: MiniMagick ÑуулгагдÑан (заавал биш) text_destroy_time_entries_question: "Таны уÑтгах гÑж байгаа аÑуудлууд дÑÑÑ€ нийт %{hours} цаг зарцуулÑан юм байна, та Ñах Ð²Ñ ?" text_destroy_time_entries: МÑдÑгдÑÑн цагуудыг уÑтгах text_assign_time_entries_to_project: МÑдÑгдÑÑн аÑуудлуудыг төÑөлд оноох text_reassign_time_entries: 'МÑдÑгдÑÑн аÑуудлуудыг ÑÐ½Ñ Ð°Ñуудалд дахин оноо:' text_user_wrote: "%{value} бичихдÑÑ:" text_user_wrote_in: "%{value} бичихдÑÑ (%{link}):" text_enumeration_destroy_question: "Ð­Ð½Ñ ÑƒÑ‚Ð³Ð°Ð´ %{count} обьект оноогдÑон байна." text_enumeration_category_reassign_to: 'ТÑдгÑÑрийг ÑÐ½Ñ ÑƒÑ‚Ð³Ð°Ð´ дахин оноо:' text_email_delivery_not_configured: "ИмÑйлийн тохиргоог хараахан тохируулаагүй байна, тиймÑÑÑ Ð¸Ð¼Ñйл мÑдÑгдÑл Ñвуулах боломжгүй байна.\nSMTP ÑервÑÑ€ÑÑ config/configuration.yml файл дотор тохируулаад төÑлийн менежерÑÑ Ð´Ð°Ñ…Ð¸Ð°Ð´ ÑхлүүлÑÑÑ€Ñй." text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх Ñ…ÑÑ€ÑглÑгчийн нÑрүүдÑд харгалзÑан ТөÑлийн Менежер ÑиÑтемд бүртгÑлтÑй Ñ…ÑÑ€ÑглÑгчдийг Сонгох юмуу шинÑÑ‡Ð¸Ð»Ð½Ñ Ò¯Ò¯.\nТөÑлийн менежер болон репозиторид байгаа ижилхÑн нÑÑ€ юмуу имÑйлтÑй Ñ…ÑÑ€ÑглÑгчид харилцан харгалзна." text_diff_truncated: '... Файлын Ñлгаврын Ñ…ÑмжÑÑ Ò¯Ð·Ò¯Ò¯Ð»ÑÑ…Ñд дÑндүү урт байгаа ÑƒÑ‡Ñ€Ð°Ð°Ñ Ñ‚Ó©Ð³ÑÐ³Ó©Ð»Ó©Ó©Ñ Ð½ÑŒ хаÑч үзүүлÑв.' text_custom_field_possible_values_info: 'One line for each value' text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_destroy_children: "Delete child pages and all their descendants" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" default_role_manager: Менежер default_role_developer: ХөгжүүлÑгч default_role_reporter: МÑдÑгдÑгч default_tracker_bug: Ðлдаа default_tracker_feature: Онцлог default_tracker_support: ТуÑламж default_issue_status_new: Ð¨Ð¸Ð½Ñ default_issue_status_in_progress: Ðхицтай default_issue_status_resolved: ШийдвÑрлÑгдÑÑн default_issue_status_feedback: Feedback default_issue_status_closed: ХаагдÑан default_issue_status_rejected: ХүлÑÑж аваагүй default_doc_category_user: Ð¥ÑÑ€ÑглÑгчийн бичиг баримт default_doc_category_tech: Техникийн бичиг баримт default_priority_low: Бага default_priority_normal: Ð¥Ñвийн default_priority_high: Өндөр default_priority_urgent: ÐÑн Ñаралтай default_priority_immediate: ÐÑн даруй default_activity_design: Дизайн default_activity_development: ХөгжүүлÑлт enumeration_issue_priorities: ÐÑуудлын зÑÑ€ÑглÑлүүд enumeration_doc_categories: Бичиг баримтын ангиллууд enumeration_activities: Үйл ажиллагаанууд (хугацааг Ñ…Ñнах) enumeration_system_activity: СиÑтемийн үйл ажиллагаа permission_manage_subtasks: Manage subtasks label_profile: Profile field_parent_issue: Parent task error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Коммит хийх үед харуулах текÑтүүдийн Ñнкодинг field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: ТÑмдÑглÑл description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 ÐÑуудал one: 1 ÐÑуудал other: "%{count} ÐÑуудлууд" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Хувийн Ñ‚ÑмдÑглÑл permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: бүгд label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Ðийт text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: ИмÑйл setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: ÐийлбÑÑ€ label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API түлхүүр setting_lost_password: Ðууц үгÑÑ Ð°Ð»Ð´Ñан mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Сүүлчийн Ñ‚ÑмдÑглÑл field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Хамаарлыг уÑтгах error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: ТÑмдÑглÑл label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/nl.yml000066400000000000000000002171651500112024600171730ustar00rootroot00000000000000nl: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d-%m-%Y" short: "%e %b" long: "%d %B, %Y" day_names: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag] abbr_day_names: [zo, ma, di, wo, do, vr, za] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, januari, februari, maart, april, mei, juni, juli, augustus, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, mei, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%e %b %H:%M" long: "%d %B, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "halve minuut" less_than_x_seconds: one: "minder dan een seconde" other: "minder dan %{count} seconden" x_seconds: one: "1 seconde" other: "%{count} seconden" less_than_x_minutes: one: "minder dan een minuut" other: "minder dan %{count} minuten" x_minutes: one: "1 minuut" other: "%{count} minuten" about_x_hours: one: "ongeveer 1 uur" other: "ongeveer %{count} uren" x_hours: one: "1 uur" other: "%{count} uren" x_days: one: "1 dag" other: "%{count} dagen" about_x_months: one: "ongeveer 1 maand" other: "ongeveer %{count} maanden" x_months: one: "1 maand" other: "%{count} maanden" about_x_years: one: "ongeveer 1 jaar" other: "ongeveer %{count} jaar" over_x_years: one: "meer dan 1 jaar" other: "meer dan %{count} jaar" almost_x_years: one: "bijna 1 jaar" other: "bijna %{count} jaar" number: format: separator: "," delimiter: "." precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: KB tb: TB gb: GB byte: one: Byte other: Bytes mb: MB # Used in array.to_sentence. support: array: sentence_connector: "en" skip_last_comma: false activerecord: errors: template: header: one: "Door een fout kon dit %{model} niet worden opgeslagen" other: "Door %{count} fouten kon dit %{model} niet worden opgeslagen" messages: inclusion: "staat niet in de lijst" exclusion: "is gereserveerd" invalid: "is ongeldig" confirmation: "komt niet overeen met bevestiging" accepted: "moet geaccepteerd worden" empty: "mag niet leeg zijn" blank: "mag niet blanco zijn" too_long: "is te lang (maximaal %{count} tekens)" too_short: "is te kort (minimaal %{count} tekens)" wrong_length: "heeft een onjuiste lengte" taken: "is al in gebruik" not_a_number: "is geen getal" not_a_date: "is geen valide datum" greater_than: "moet groter zijn dan %{count}" greater_than_or_equal_to: "moet groter zijn of gelijk zijn aan %{count}" equal_to: "moet gelijk zijn aan %{count}" less_than: "moet minder zijn dan %{count}" less_than_or_equal_to: "moet minder dan of gelijk zijn aan %{count}" odd: "moet oneven zijn" even: "moet even zijn" greater_than_start_date: "moet na de startdatum liggen" not_same_project: "hoort niet bij hetzelfde project" circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben" cant_link_an_issue_with_a_descendant: "Een issue kan niet gelinked worden met een subtask" earlier_than_minimum_start_date: "kan niet eerder zijn dan %{date} wegens voorafgaande issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Selecteren button_activate: Activeren button_add: Toevoegen button_annotate: Annoteren button_apply: Toepassen button_archive: Archiveren button_back: Terug button_cancel: Annuleren button_change: Wijzigen button_change_password: Wachtwoord wijzigen button_check_all: Alles selecteren button_clear: Leegmaken button_configure: Configureren button_copy: Kopiëren button_create: Aanmaken button_delete: Verwijderen button_download: Download button_edit: Bewerken button_list: Lijst button_lock: Vergrendelen button_log_time: Tijd registreren button_login: Inloggen button_move: Verplaatsen button_quote: Citeren button_rename: Hernoemen button_reply: Antwoorden button_reset: Herstellen button_rollback: Terugdraaien naar deze versie button_save: Opslaan button_sort: Sorteren button_submit: Toevoegen button_test: Testen button_unarchive: Dearchiveren button_uncheck_all: Deselecteren button_unlock: Ontgrendelen button_unwatch: Niet meer volgen button_update: Bijwerken button_view: Weergeven button_watch: Volgen default_activity_design: Ontwerp default_activity_development: Ontwikkeling default_doc_category_tech: Technische documentatie default_doc_category_user: Gebruikersdocumentatie default_issue_status_in_progress: In uitvoering default_issue_status_closed: Gesloten default_issue_status_feedback: Terugkoppeling default_issue_status_new: Nieuw default_issue_status_rejected: Afgewezen default_issue_status_resolved: Opgelost default_priority_high: Hoog default_priority_immediate: Onmiddellijk default_priority_low: Laag default_priority_normal: Normaal default_priority_urgent: Dringend default_role_developer: Ontwikkelaar default_role_manager: Manager default_role_reporter: Rapporteur default_tracker_bug: Bug default_tracker_feature: Feature default_tracker_support: Support enumeration_activities: Activiteiten (tijdregistratie) enumeration_doc_categories: Documentcategorieën enumeration_issue_priorities: Issueprioriteiten error_can_t_load_default_data: "De standaardconfiguratie kan niet worden geladen: %{value}" error_issue_not_found_in_project: 'Deze issue kan niet gevonden worden of behoort niet toe aan dit project.' error_scm_annotate: "Er kan geen commentaar toegevoegd worden." error_scm_command_failed: "Er is een fout opgetreden tijdens het verbinding maken met de repository: %{value}" error_scm_not_found: "Dit item of deze revisie bestaat niet in de repository." field_account: Account field_activity: Activiteit field_admin: Beheerder field_assignable: Issues kunnen aan deze rol toegewezen worden field_assigned_to: Toegewezen aan field_attr_firstname: Voornaamattribuut field_attr_lastname: Achternaamattribuut field_attr_login: Loginattribuut field_attr_mail: E-mailattribuut field_auth_source: Authenticatiemethode field_author: Auteur field_base_dn: Base DN field_category: Categorie field_column_names: Kolommen field_comments: Commentaar field_comments_sorting: Commentaar weergeven field_created_on: Aangemaakt op field_default_value: Standaardwaarde field_delay: Vertraging field_description: Beschrijving field_done_ratio: "% voltooid" field_downloads: Downloads field_due_date: Verwachte einddatum field_effective_date: Datum field_estimated_hours: Geschatte tijd field_field_format: Formaat field_filename: Bestand field_filesize: Grootte field_firstname: Voornaam field_fixed_version: Versie field_hide_mail: Verberg mijn e-mailadres field_homepage: Homepagina field_host: Host field_hours: Uren field_identifier: Identificatiecode field_is_closed: Issue gesloten field_is_default: Standaard field_is_filter: Als filter gebruiken field_is_for_all: Voor alle projecten field_is_in_roadmap: Issues weergegeven in roadmap field_is_public: Openbaar field_is_required: Verplicht field_issue: Issue field_issue_to: Gerelateerd issue field_language: Taal field_last_login_on: Laatste bezoek field_lastname: Achternaam field_login: Gebruikersnaam field_mail: E-mail field_mail_notification: E-mailnotificaties field_max_length: Maximale lengte field_min_length: Minimale lengte field_name: Naam field_new_password: Nieuw wachtwoord field_notes: Notities field_onthefly: On-the-fly aanmaken van een gebruiker field_parent: Subproject van field_parent_title: Bovenliggende pagina field_password: Wachtwoord field_password_confirmation: Bevestig wachtwoord field_port: Poort field_possible_values: Mogelijke waarden field_priority: Prioriteit field_project: Project field_redirect_existing_links: Bestaande links doorverwijzen field_regexp: Reguliere expressie field_role: Rol field_searchable: Doorzoekbaar field_spent_on: Datum field_start_date: Startdatum field_start_page: Startpagina field_status: Status field_subject: Onderwerp field_subproject: Subproject field_summary: Samenvatting field_time_zone: Tijdzone field_title: Titel field_tracker: Tracker field_type: Type field_updated_on: Laatst gewijzigd op field_url: URL field_user: Gebruiker field_value: Waarde field_version: Versie general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' general_lang_name: 'Dutch (Nederlands)' general_text_No: 'Nee' general_text_Yes: 'Ja' general_text_no: 'nee' general_text_yes: 'ja' label_activity: Activiteit label_add_another_file: Ander bestand toevoegen label_add_note: Notitie toevoegen label_added: toegevoegd label_added_time_by: "Toegevoegd door %{author} %{age} geleden" label_administration: Administratie label_age: Leeftijd label_ago: dagen geleden label_all: alle label_all_words: Alle woorden label_and_its_subprojects: "%{value} en de subprojecten." label_applied_status: Toegekende status label_assigned_to_me_issues: Aan mij toegewezen issues label_associated_revisions: Geassociëerde revisies label_attachment: Bestand label_attachment_delete: Bestand verwijderen label_attachment_new: Nieuw bestand label_attachment_plural: Bestanden label_attribute: Attribuut label_attribute_plural: Attributen label_auth_source: Authenticatiemodus label_auth_source_new: Nieuwe authenticatiemodus label_auth_source_plural: Authenticatiemodi label_authentication: Authenticatie label_blocked_by: geblokkeerd door label_blocks: blokkeert label_board: Forum label_board_new: Nieuw forum label_board_plural: Forums label_boolean: Booleaanse waarde label_bulk_edit_selected_issues: Geselecteerde issues in bulk bewerken label_calendar: Kalender label_change_plural: Wijzigingen label_change_properties: Eigenschappen wijzigen label_change_status: Status wijzigen label_change_view_all: Alle wijzigingen weergeven label_changes_details: Details van alle wijzigingen label_changeset_plural: Changesets label_chronological_order: In chronologische volgorde label_closed_issues: gesloten label_closed_issues_plural: gesloten label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 gesloten one: 1 gesloten other: "%{count} gesloten" label_comment: Commentaar label_comment_add: Commentaar toevoegen label_comment_added: Commentaar toegevoegd label_comment_delete: Commentaar verwijderen label_comment_plural: Commentaren label_x_comments: zero: geen commentaar one: 1x commentaar other: "%{count}x commentaar" label_commits_per_author: Commits per auteur label_commits_per_month: Commits per maand label_confirmation: Bevestiging label_contains: bevat label_copied: gekopieerd label_copy_workflow_from: Kopieer workflow van label_current_status: Huidige status label_current_version: Huidige versie label_custom_field: Vrij veld label_custom_field_new: Nieuw vrij veld label_custom_field_plural: Vrije velden label_date: Datum label_date_from: Van label_date_range: Datumbereik label_date_to: Tot label_day_plural: dagen label_default: Standaard label_default_columns: Standaardkolommen. label_deleted: verwijderd label_details: Details label_diff_inline: inline label_diff_side_by_side: naast elkaar label_disabled: uitgeschakeld label_display_per_page: "Per pagina: %{value}" label_document: Document label_document_added: Document toegevoegd label_document_new: Nieuw document label_document_plural: Documenten label_downloads_abbr: D/L label_duplicated_by: gedupliceerd door label_duplicates: dupliceert label_enumeration_new: Nieuwe waarde label_enumerations: Enumeraties label_environment: Omgeving label_equals: is gelijk label_example: Voorbeeld label_export_to: Exporteer naar label_f_hour: "%{value} uur" label_f_hour_plural: "%{value} uren" label_feed_plural: Feeds label_feeds_access_key_created_on: "Atom-toegangssleutel %{value} geleden gemaakt" label_file_added: Bestand toegevoegd label_file_plural: Bestanden label_filter_add: Filter toevoegen label_filter_plural: Filters label_float: Decimaal getal label_follows: volgt op label_gantt: Gantt label_general: Algemeen label_generate_key: Een sleutel genereren label_help: Help label_history: Geschiedenis label_home: Home label_in: in label_in_less_than: in minder dan label_in_more_than: in meer dan label_incoming_emails: Inkomende e-mail label_index_by_date: Indexeer op datum label_index_by_title: Indexeer op titel label_information: Informatie label_information_plural: Informatie label_integer: Getal label_internal: Intern label_issue: Issue label_issue_added: Issue toegevoegd label_issue_category: Issuecategorie label_issue_category_new: Nieuwe categorie label_issue_category_plural: Issuecategorieën label_issue_new: Nieuw issue label_issue_plural: Issues label_issue_status: Issuestatus label_issue_status_new: Nieuwe status label_issue_status_plural: Issuestatussen label_issue_tracking: Issue tracking label_issue_updated: Issue bijgewerkt label_issue_view_all: Alle issues bekijken label_issue_watchers: Volgers label_issues_by: "Issues door %{value}" label_jump_to_a_project: Ga naar een project... label_language_based: Taal gebaseerd label_last_changes: "laatste %{count} wijzigingen" label_last_month: laatste maand label_last_n_days: "%{count} dagen geleden" label_last_week: vorige week label_latest_revision: Meest recente revisie label_latest_revision_plural: Meest recente revisies label_ldap_authentication: LDAP authenticatie label_less_than_ago: minder dan x dagen geleden label_list: Lijst label_loading: Bezig met laden... label_logged_as: Ingelogd als label_login: Inloggen label_logout: Uitloggen label_max_size: Maximumgrootte label_me: mij label_member: Lid label_member_new: Nieuw lid label_member_plural: Leden label_message_last: Laatste bericht label_message_new: Nieuw bericht label_message_plural: Berichten label_message_posted: Bericht toegevoegd label_min_max_length: Min-max lengte label_modified: gewijzigd label_module_plural: Modules label_month: Maand label_months_from: maanden vanaf label_more_than_ago: meer dan x dagen geleden label_my_account: Mijn account label_my_page: Mijn pagina label_my_projects: Mijn projecten label_new: Nieuw label_new_statuses_allowed: Nieuw toegestane statussen label_news: Nieuws label_news_added: Nieuws toegevoegd label_news_latest: Laatste nieuws label_news_new: Nieuws toevoegen label_news_plural: Nieuws label_news_view_all: Alle nieuws weergeven label_next: Volgende label_no_change_option: (Geen wijziging) label_no_data: Er zijn geen gegevens om weer te geven label_nobody: niemand label_none: geen label_not_contains: bevat niet label_not_equals: is niet gelijk label_open_issues: open label_open_issues_plural: open label_optional_description: Optionele beschrijving label_options: Opties label_overview: Overzicht label_password_lost: Wachtwoord vergeten label_permissions: Permissies label_permissions_report: Permissierapport label_plugins: Plugins label_precedes: gaat vooraf aan label_preferences: Voorkeuren label_preview: Voorbeeldweergave label_previous: Vorige label_project: Project label_project_all: Alle projecten label_project_latest: Nieuwste projecten label_project_new: Nieuw project label_project_plural: Projecten label_x_projects: zero: geen projecten one: 1 project other: "%{count} projecten" label_public_projects: Publieke projecten label_query: Eigen zoekopdracht label_query_new: Nieuwe zoekopdracht label_query_plural: Eigen zoekopdrachten label_read: Lees meer... label_register: Registreren label_registered_on: Geregistreerd op label_registration_activation_by_email: accountactivering per e-mail label_registration_automatic_activation: automatische accountactivering label_registration_manual_activation: handmatige accountactivering label_related_issues: Gerelateerde issues label_relates_to: gerelateerd aan label_relation_delete: Relatie verwijderen label_relation_new: Nieuwe relatie label_renamed: hernoemd label_reply_plural: Antwoorden label_report: Rapport label_report_plural: Rapporten label_reported_issues: Gemelde issues label_repository: Repository label_repository_plural: Repositories label_result_plural: Resultaten label_reverse_chronological_order: In omgekeerde chronologische volgorde label_revision: Revisie label_revision_plural: Revisies label_roadmap: Roadmap label_roadmap_due_in: "Voldaan in %{value}" label_roadmap_no_issues: Geen issues voor deze versie label_roadmap_overdue: "%{value} over tijd" label_role: Rol label_role_and_permissions: Rollen en permissies label_role_new: Nieuwe rol label_role_plural: Rollen label_scm: SCM label_search: Zoeken label_search_titles_only: Enkel titels doorzoeken label_send_information: Stuur accountinformatie naar de gebruiker label_send_test_email: Stuur een e-mail om te testen label_settings: Instellingen label_show_completed_versions: Afgeronde versies weergeven label_sort_by: "Sorteer op %{value}" label_spent_time: Gespendeerde tijd label_statistics: Statistieken label_stay_logged_in: Ingelogd blijven label_string: Tekst label_subproject_plural: Subprojecten label_text: Lange tekst label_theme: Thema label_this_month: deze maand label_this_week: deze week label_this_year: dit jaar label_time_tracking: Tijdregistratie bijhouden label_today: vandaag label_topic_plural: Onderwerpen label_total: Totaal label_tracker: Tracker label_tracker_new: Nieuwe tracker label_tracker_plural: Trackers label_updated_time: "%{value} geleden bijgewerkt" label_updated_time_by: "%{age} geleden bijgewerkt door %{author}" label_used_by: Gebruikt door label_user: Gebruiker label_user_activity: "%{value}'s activiteit" label_user_mail_no_self_notified: Ik wil niet op de hoogte gehouden worden van mijn eigen wijzigingen label_user_mail_option_all: "Bij elke gebeurtenis in al mijn projecten..." label_user_mail_option_selected: "Enkel bij iedere gebeurtenis op het geselecteerde project..." label_user_new: Nieuwe gebruiker label_user_plural: Gebruikers label_version: Versie label_version_new: Nieuwe versie label_version_plural: Versies label_view_diff: Verschillen weergeven label_view_revisions: Revisies weergeven label_watched_issues: Gevolgde issues label_week: Week label_wiki: Wiki label_wiki_edit: Wiki-aanpassing label_wiki_edit_plural: Wiki-aanpassingen label_wiki_page: Wikipagina label_wiki_page_plural: Wikipagina's label_workflow: Workflow label_year: Jaar label_yesterday: gisteren mail_body_account_activation_request: "Een nieuwe gebruiker (%{value}) heeft zich geregistreerd. Zijn account wacht op uw akkoord:" mail_body_account_information: Uw account gegevens mail_body_account_information_external: "U kunt uw account (%{value}) gebruiken om in te loggen." mail_body_lost_password: 'Gebruik volgende link om uw wachtwoord te wijzigen:' mail_body_register: 'Gebruik volgende link om uw account te activeren:' mail_body_reminder: "%{count} issue(s) die aan u toegewezen zijn en voldaan moeten zijn in de komende %{days} dagen:" mail_subject_account_activation_request: "%{value} account activeringsverzoek" mail_subject_lost_password: "uw %{value} wachtwoord" mail_subject_register: "uw %{value} accountactivering" mail_subject_reminder: "%{count} issue(s) die voldaan moeten zijn in de komende %{days} dagen." notice_account_activated: Uw account is geactiveerd. U kunt nu inloggen. notice_account_invalid_credentials: Incorrecte gebruikersnaam of wachtwoord notice_account_lost_email_sent: Er is een e-mail naar u verzonden met instructies over de keuze van een nieuw wachtwoord. notice_account_password_updated: Wachtwoord is met succes gewijzigd notice_account_pending: Uw account is aangemaakt, maar wacht nog op goedkeuring van een beheerder. notice_account_updated: Account is succesvol gewijzigd notice_account_wrong_password: Ongeldig wachtwoord notice_can_t_change_password: Deze account gebruikt een externe authenticatiebron. Het is niet mogelijk om het wachtwoord te veranderen. notice_default_data_loaded: Standaardconfiguratie succesvol geladen. notice_email_error: "Er is een fout opgetreden bij het versturen van (%{value})" notice_email_sent: "Een e-mail werd verstuurd naar %{value}" notice_failed_to_save_issues: "Fout bij bewaren van %{count} issue(s) (%{total} geselecteerd): %{ids}." notice_feeds_access_key_reseted: Uw Atom-toegangssleutel werd opnieuw ingesteld. notice_file_not_found: De pagina, die u probeerde te benaderen, bestaat niet of is verwijderd. notice_locking_conflict: De gegevens werden reeds eerder gewijzigd door een andere gebruiker. notice_not_authorized: U heeft niet de juiste machtigingen om deze pagina te raadplegen. notice_successful_connection: Verbinding succesvol. notice_successful_create: Succesvol aangemaakt. notice_successful_delete: Succesvol verwijderd. notice_successful_update: Succesvol gewijzigd. notice_unable_delete_version: Het is niet mogelijk om deze versie te verwijderen. permission_add_issue_notes: Notities toevoegen permission_add_issue_watchers: Volgers toevoegen permission_add_issues: Issues toevoegen permission_add_messages: Berichten toevoegen permission_browse_repository: Repository doorbladeren permission_comment_news: Commentaar toevoegen bij nieuws permission_commit_access: Commit-rechten permission_delete_issues: Issues verwijderen permission_delete_messages: Berichten verwijderen permission_delete_own_messages: Eigen berichten verwijderen permission_delete_wiki_pages: Wikipagina's verwijderen permission_delete_wiki_pages_attachments: Bijlagen verwijderen permission_edit_issue_notes: Notities bewerken permission_edit_issues: Issues bewerken permission_edit_messages: Berichten bewerken permission_edit_own_issue_notes: Eigen notities bewerken permission_edit_own_messages: Eigen berichten bewerken permission_edit_own_time_entries: Eigen tijdregistraties bewerken permission_edit_project: Project bewerken permission_edit_time_entries: Tijdregistraties bewerken permission_edit_wiki_pages: Wikipagina's bewerken permission_log_time: Tijdregistraties boeken permission_manage_boards: Forums beheren permission_manage_categories: Issuecategorieën beheren permission_manage_files: Bestanden beheren permission_manage_issue_relations: Issuerelaties beheren permission_manage_members: Leden beheren permission_manage_news: Nieuws beheren permission_manage_public_queries: Publieke queries beheren permission_manage_repository: Repository beheren permission_manage_versions: Versiebeheer permission_manage_wiki: Wikibeheer permission_protect_wiki_pages: Wikipagina's beschermen permission_rename_wiki_pages: Wikipagina's hernoemen permission_save_queries: Queries opslaan permission_select_project_modules: Project modules selecteren permission_view_calendar: Kalender bekijken permission_view_changesets: Changesets bekijken permission_view_documents: Documenten bekijken permission_view_files: Bestanden bekijken permission_view_gantt: Gantt-grafiek bekijken permission_view_issue_watchers: Lijst met volgers bekijken permission_view_messages: Berichten bekijken permission_view_time_entries: Tijdregistraties bekijken permission_view_wiki_edits: Wikihistorie bekijken permission_view_wiki_pages: Wikipagina's bekijken project_module_boards: Forums project_module_documents: Documenten project_module_files: Bestanden project_module_issue_tracking: Issue tracking project_module_news: Nieuws project_module_repository: Repository project_module_time_tracking: Tijdregistratie project_module_wiki: Wiki setting_activity_days_default: Aantal weergegeven dagen bij het tabblad "Activiteit" setting_app_title: Applicatietitel setting_attachment_max_size: Max. grootte bijlage setting_autofetch_changesets: Commits automatisch ophalen setting_autologin: Automatisch inloggen setting_commit_fix_keywords: Vaste trefwoorden setting_commit_ref_keywords: Refererende trefwoorden setting_cross_project_issue_relations: Issuerelaties tussen projecten toelaten setting_date_format: Datumformaat setting_default_language: Standaardtaal setting_default_projects_public: Nieuwe projecten zijn standaard openbaar setting_diff_max_lines_displayed: Max aantal weergegeven diff regels setting_display_subprojects_issues: Standaardissues van subproject weergeven setting_emails_footer: Voettekst voor e-mails setting_enabled_scm: SCM ingeschakeld setting_feeds_limit: Feedinhoudlimiet setting_gravatar_enabled: Gebruik Gravatar gebruikersiconen setting_host_name: Hostnaam setting_issue_list_default_columns: Zichtbare standaardkolommen in lijst met issues setting_issues_export_limit: Max aantal te exporteren issues setting_login_required: Authenticatie vereist setting_mail_from: E-mailadres afzender setting_mail_handler_api_enabled: Schakel WS in voor inkomende e-mail. setting_mail_handler_api_key: API-sleutel setting_per_page_options: Aantal objecten per pagina (opties) setting_plain_text_mail: platte tekst (geen HTML) setting_protocol: Protocol setting_self_registration: Zelfregistratie toegestaan setting_sequential_project_identifiers: Sequentiële projectidentiteiten genereren setting_sys_api_enabled: Gebruik WS voor repository beheer setting_text_formatting: Tekstformaat setting_time_format: Tijdformaat setting_user_format: Weergaveformaat gebruikers setting_welcome_text: Welkomsttekst setting_wiki_compression: Wikigeschiedenis comprimeren status_active: actief status_locked: vergrendeld status_registered: geregistreerd text_are_you_sure: Weet u het zeker? text_assign_time_entries_to_project: Gerapporteerde uren aan dit project toevoegen text_caracters_maximum: "%{count} van maximum aantal tekens." text_caracters_minimum: "Moet minstens %{count} karakters lang zijn." text_comma_separated: Meerdere waarden toegestaan (kommagescheiden). text_default_administrator_account_changed: Standaard beheerderaccount gewijzigd text_destroy_time_entries: Gerapporteerde uren verwijderen text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilt verwijderen. Wat wilt u doen?" text_diff_truncated: '... Deze diff werd ingekort omdat het de maximale weer te geven karakters overschrijdt.' text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Mededelingen zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om e-mailbezorging te activeren." text_enumeration_category_reassign_to: 'Volgende waarde toewijzen:' text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository schrijfbaar text_issue_added: "Issue %{id} is gerapporteerd (door %{author})." text_issue_category_destroy_assignments: Toewijzingen aan deze categorie verwijderen text_issue_category_destroy_question: "Er zijn issues (%{count}) aan deze categorie toegewezen. Wat wilt u doen?" text_issue_category_reassign_to: Issues opnieuw aan deze categorie toewijzen text_issue_updated: "Issue %{id} is gewijzigd (door %{author})." text_issues_destroy_confirmation: 'Weet u zeker dat u deze issue(s) wilt verwijderen?' text_issues_ref_in_commit_messages: Opzoeken en aanpassen van issues in commitberichten text_length_between: "Lengte tussen %{min} en %{max} tekens." text_load_default_configuration: Standaardconfiguratie laden text_no_configuration_data: "Rollen, trackers, issuestatussen en workflows zijn nog niet geconfigureerd.\nHet is ten zeerste aangeraden om de standaardconfiguratie in te laden. U kunt deze aanpassen nadat deze is ingeladen." text_plugin_assets_writable: Plugin assets map schrijfbaar text_project_destroy_confirmation: Weet u zeker dat u dit project en alle gerelateerde gegevens wilt verwijderen? text_project_identifier_info: 'Alleen kleine letters (a-z), cijfers, streepjes en liggende streepjes zijn toegestaan.
    Eenmaal opgeslagen kan de identifier niet worden gewijzigd.' text_reassign_time_entries: 'Gerapporteerde uren opnieuw toewijzen:' text_regexp_info: bv. ^[A-Z0-9]+$ text_repository_usernames_mapping: "Koppel de Redmine-gebruikers aan gebruikers in de repository log.\nGebruikers met dezelfde Redmine en repository gebruikersnaam of e-mail worden automatisch gekoppeld." text_minimagick_available: MiniMagick beschikbaar (optioneel) text_select_mail_notifications: Selecteer acties waarvoor mededelingen via e-mail moeten worden verstuurd. text_select_project_modules: 'Selecteer de modules die u wilt gebruiken voor dit project:' text_status_changed_by_changeset: "Toegepast in changeset %{value}." text_subprojects_destroy_warning: "De subprojecten: %{value} zullen ook verwijderd worden." text_tip_issue_begin_day: issue begint op deze dag text_tip_issue_begin_end_day: issue begint en eindigt op deze dag text_tip_issue_end_day: issue eindigt op deze dag text_tracker_no_workflow: Geen workflow gedefinieerd voor deze tracker text_unallowed_characters: Ongeldige tekens text_user_mail_option: "Bij niet-geselecteerde projecten zal u enkel mededelingen ontvangen voor issues die u volgt of waar u bij betrokken bent (als auteur of toegewezen persoon)." text_user_wrote: "%{value} schreef:" text_user_wrote_in: "%{value} schreef (%{link}):" text_wiki_destroy_confirmation: Weet u zeker dat u deze wiki en de inhoud wenst te verwijderen? text_workflow_edit: Selecteer een rol en een tracker om de workflow te wijzigen warning_attachments_not_saved: "%{count} bestand(en) konden niet opgeslagen worden." button_create_and_continue: Aanmaken en verdergaan text_custom_field_possible_values_info: 'Per lijn een waarde' label_display: Weergave field_editable: Bewerkbaar setting_repository_log_display_limit: Max aantal revisies zichbaar setting_file_max_size_displayed: Max grootte van tekstbestanden inline zichtbaar field_watcher: Volger field_content: Content label_descending: Aflopend label_sort: Sorteer label_ascending: Oplopend label_date_from_to: Van %{start} tot %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Deze pagina heeft %{descendants} subpagina's en onderliggende pagina's?. Wat wilt u doen? text_wiki_page_reassign_children: Alle subpagina's toewijzen aan deze hoofdpagina text_wiki_page_nullify_children: Behoud subpagina's als hoofdpagina's text_wiki_page_destroy_children: Verwijder alle subpagina's en onderliggende pagina's setting_password_min_length: Minimum wachtwoordlengte field_group_by: Groepeer resultaten per mail_subject_wiki_content_updated: "'%{id}' wikipagina is bijgewerkt" label_wiki_content_added: Wikipagina toegevoegd mail_subject_wiki_content_added: "'%{id}' wikipagina is toegevoegd" mail_body_wiki_content_added: De '%{id}' wikipagina is toegevoegd door %{author}. label_wiki_content_updated: Wikipagina bijgewerkt mail_body_wiki_content_updated: De '%{id}' wikipagina is bijgewerkt door %{author}. permission_add_project: Maak project setting_new_project_user_role_id: Rol van gebruiker die een project maakt label_view_all_revisions: Alle revisies bekijken label_tag: Tag label_branch: Branch error_no_tracker_in_project: Geen tracker is geassocieerd met dit project. Check de projectinstellingen. error_no_default_issue_status: Geen standaard issuestatus ingesteld. Check de configuratie (Ga naar "Administratie -> Issuestatussen"). text_journal_changed: "%{label} gewijzigd van %{old} naar %{new}" text_journal_set_to: "%{label} gewijzigd naar %{value}" text_journal_deleted: "%{label} verwijderd (%{old})" label_group_plural: Groepen label_group: Groep label_group_new: Nieuwe groep label_time_entry_plural: Tijdregistraties text_journal_added: "%{label} %{value} toegevoegd" field_active: Actief enumeration_system_activity: Systeemactiviteit permission_delete_issue_watchers: Volgers verwijderen version_status_closed: gesloten version_status_locked: vergrendeld version_status_open: open error_can_not_reopen_issue_on_closed_version: Een issue toegewezen aan een gesloten versie kan niet heropend worden label_user_anonymous: Anoniem button_move_and_follow: Verplaatsen en volgen setting_default_projects_modules: Standaard geactiveerde modules voor nieuwe projecten setting_gravatar_default: Standaard Gravatar plaatje field_sharing: Delen label_version_sharing_hierarchy: Met projecthiërarchie label_version_sharing_system: Met alle projecten label_version_sharing_descendants: Met subprojecten label_version_sharing_tree: Met projectboom label_version_sharing_none: Niet gedeeld error_can_not_archive_project: Dit project kan niet worden gearchiveerd button_copy_and_follow: Kopiëren en volgen label_copy_source: Bron setting_issue_done_ratio: Bereken voltooiingspercentage voor issue met setting_issue_done_ratio_issue_status: Gebruik de issuestatus error_issue_done_ratios_not_updated: Issue-voltooiingspercentage niet gewijzigd. error_workflow_copy_target: Selecteer tracker(s) en rol(len) setting_issue_done_ratio_issue_field: Gebruik het issue-veld label_copy_same_as_target: Zelfde als doel label_copy_target: Doel notice_issue_done_ratios_updated: Issue-voltooiingspercentage aangepast. error_workflow_copy_source: Selecteer een brontracker of rol label_update_issue_done_ratios: Update issue-voltooiingspercentage setting_start_of_week: Week begint op permission_view_issues: Issues bekijken label_display_used_statuses_only: Alleen statussen weergeven die gebruikt worden door deze tracker label_revision_id: Revisie %{value} label_api_access_key: API-toegangssleutel label_api_access_key_created_on: "API-toegangssleutel %{value} geleden gemaakt" label_feeds_access_key: Atom-toegangssleutel notice_api_access_key_reseted: Uw API-toegangssleutel werd opnieuw ingesteld. setting_rest_api_enabled: Activeer REST web service label_missing_api_access_key: Geen API-toegangssleutel label_missing_feeds_access_key: Geen Atom-toegangssleutel button_show: Weergeven text_line_separated: Meerdere waarden toegestaan (elke regel is een waarde). setting_mail_handler_body_delimiters: E-mailverwerking afbreken na een van deze regels permission_add_subprojects: Subprojecten aanmaken label_subproject_new: Nieuw subproject text_own_membership_delete_confirmation: |- U staat op het punt om enkele van (of al) uw permissies te verwijderen, zodus het is mogelijk dat u dit project hierna niet meer kan wijzigen. Wilt u doorgaan? label_close_versions: Afgeronde versies sluiten label_board_sticky: Vastgeplakt (sticky) label_board_locked: Vergrendeld permission_export_wiki_pages: Wikipagina's exporteren setting_cache_formatted_text: Opgemaakte tekst cachen permission_manage_project_activities: Projectactiviteiten beheren error_unable_delete_issue_status: Verwijderen van issuestatus is niet gelukt (%{value}) label_profile: Profiel permission_manage_subtasks: Subtaken beheren field_parent_issue: Hoofdissue label_subtask_plural: Subtaken label_project_copy_notifications: E-mailnotificaties voor de projectkopie sturen error_can_not_delete_custom_field: Custom field verwijderen is niet mogelijk error_unable_to_connect: Geen connectie (%{value}) error_can_not_remove_role: Deze rol is in gebruik en kan niet worden verwijderd. error_can_not_delete_tracker_html: Deze tracker bevat nog issues en kan niet verwijderd worden.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Het is niet gelukt om lid/leden op te slaan: %{errors}." text_zoom_out: Uitzoomen text_zoom_in: Inzoomen notice_unable_delete_time_entry: Verwijderen van tijdregistratie is niet mogelijk. field_time_entries: Tijdregistratie project_module_gantt: Gantt project_module_calendar: Kalender button_edit_associated_wikipage: "Bijbehorende wikipagina bewerken: %{page_title}" field_text: Tekstveld setting_default_notification_option: Standaardinstelling voor mededelingen label_user_mail_option_only_my_events: Alleen voor activiteiten die ik volg of waarbij ik betrokken ben label_user_mail_option_none: Bij geen enkele activiteit field_member_of_group: Groep van toegewezen persoon field_assigned_to_role: Rol van toegewezen persoon notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd. label_principal_search: "Zoek naar gebruiker of groep:" label_user_search: "Zoek naar gebruiker:" field_visible: Zichtbaarheid setting_commit_logtime_activity_id: Standaardactiviteit voor tijdregistratie text_time_logged_by_changeset: Toegepast in changeset %{value}. setting_commit_logtime_enabled: Tijdregistratie activeren notice_gantt_chart_truncated: De Gantt-grafiek is ingekort omdat het meer objecten bevat dan kan worden weergegeven, (%{max}) setting_gantt_items_limit: Max. aantal objecten op Gantt-grafiek field_warn_on_leaving_unsaved: Waarschuw me wanneer ik een pagina verlaat waarvan de tekst niet is opgeslagen text_warn_on_leaving_unsaved: De huidige pagina bevat tekst die niet is opgeslagen en zal verloren gaan als u deze pagina nu verlaat. label_my_queries: Mijn aangepaste zoekopdrachten text_journal_changed_no_detail: "%{label} gewijzigd" label_news_comment_added: Commentaar aan een nieuwsitem toegevoegd button_expand_all: Uitklappen button_collapse_all: Inklappen label_additional_workflow_transitions_for_assignee: Aanvullende veranderingen toegestaan wanneer de gebruiker de toegewezen persoon is label_additional_workflow_transitions_for_author: Aanvullende veranderingen toegestaan wanneer de gebruiker de auteur is label_bulk_edit_selected_time_entries: Alle geselecteerde tijdregistraties wijzigen? text_time_entries_destroy_confirmation: Weet u zeker dat u de geselecteerde tijdregistratie(s) wilt verwijderen ? label_role_anonymous: Anoniem label_role_non_member: Geen lid label_issue_note_added: Notitie toegevoegd label_issue_status_updated: Status gewijzigd label_issue_priority_updated: Prioriteit gewijzigd label_issues_visibility_own: Issues aangemaakt door of toegewezen aan de gebruiker field_issues_visibility: Issueweergave label_issues_visibility_all: Alle issues permission_set_own_issues_private: Eigen issues openbaar of privé maken field_is_private: Privé permission_set_issues_private: Issues openbaar of privé maken label_issues_visibility_public: Alle niet privé-issues text_issues_destroy_descendants_confirmation: Dit zal ook %{count} subtaken verwijderen. field_commit_logs_encoding: Codering van commitberichten field_scm_path_encoding: Padcodering text_scm_path_encoding_note: "Standaard: UTF-8" field_path_to_repository: Pad naar versieoverzicht field_root_directory: Hoofdmap field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: "Lokale versieoverzicht (Voorbeeld: /hgrepo, c:\\hgrepo)" text_scm_command: Commando text_scm_command_version: Versie label_git_report_last_commit: Laatste toevoegen voor bestanden en mappen rapporteren text_scm_config: U kan de SCM-commando's instellen in config/configuration.yml. U moet de applicatie herstarten na de wijzigingen. text_scm_command_not_available: SCM-commando is niet beschikbaar. Controleer de instellingen in het administratiepaneel. notice_issue_successful_create: Issue %{id} aangemaakt. label_between: tussen setting_issue_group_assignment: Groepstoewijzingen toelaten label_diff: diff text_git_repository_note: "Lokaal versieoverzicht is leeg (Voorbeeld: /gitrepo, c:\\gitrepo)" description_query_sort_criteria_direction: Sortering description_project_scope: Zoekbereik description_filter: Filteren description_user_mail_notification: Instellingen voor e-mailnotificaties description_message_content: Berichtinhoud description_available_columns: Beschikbare kolommen description_issue_category_reassign: Issuecategorie kiezen description_search: Zoekveld description_notes: Notities description_choose_project: Projecten description_query_sort_criteria_attribute: Attribuut sorteren description_wiki_subpages_reassign: Nieuwe hoofdpagina kiezen description_selected_columns: Geselecteerde kolommen label_parent_revision: Hoofd label_child_revision: Sub error_scm_annotate_big_text_file: De vermelding kan niet worden geannoteerd, omdat het groter is dan de maximale toegewezen grootte. setting_default_issue_start_date_to_creation_date: Huidige datum als startdatum gebruiken voor nieuwe issues. button_edit_section: Deze sectie wijzigen setting_repositories_encodings: Coderingen voor bijlagen en opgeslagen bestanden description_all_columns: Alle kolommen button_export: Exporteren label_export_options: "%{export_format} export opties" error_attachment_too_big: Dit bestand kan niet worden geüpload omdat het de maximaal toegestane grootte overschrijdt (%{max_size}) notice_failed_to_save_time_entries: "Opslaan mislukt voor %{count} tijdregistratie(s) van %{total} geselecteerde: %{ids}." label_x_issues: zero: 0 issues one: 1 issue other: "%{count} issues" label_repository_new: Nieuwe repository field_repository_is_default: Hoofdrepository label_copy_attachments: Kopieer bijlage(n) label_item_position: "%{position}/%{count}" label_completed_versions: Afgeronde versies field_multiple: Meerdere waarden setting_commit_cross_project_ref: Toestaan om issues van alle projecten te refereren en op te lossen text_issue_conflict_resolution_add_notes: Mijn notities toevoegen en andere wijzigingen annuleren text_issue_conflict_resolution_overwrite: Mijn wijzigingen alsnog toevoegen (voorgaande notities worden opgeslagen, maar sommige notities kunnen overschreden worden) notice_issue_update_conflict: Dit issue is reeds aangepast door een andere gebruiker terwijl u bezig was met wijzigingen aan te brengen text_issue_conflict_resolution_cancel: "Mijn wijzigingen annuleren en pagina opnieuw weergeven: %{link}" permission_manage_related_issues: Gerelateerde issues beheren field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Klik om volgers toe te voegen notice_account_deleted: Uw account is permanent verwijderd setting_unsubscribe: Gebruikers toestaan hun eigen account te verwijderen button_delete_my_account: Mijn account verwijderen text_account_destroy_confirmation: |- Weet u zeker dat u door wilt gaan? Uw account wordt permanent verwijderd zonder enige mogelijkheid deze te heractiveren. error_session_expired: Uw sessie is verlopen. Gelieve opnieuw in te loggen. text_session_expiration_settings: "Opgelet: door het wijzigen van deze instelling zullen de huidige sessies verlopen, inclusief die van u." setting_session_lifetime: Maximale sessieduur setting_session_timeout: Sessie-inactiviteit timeout label_session_expiration: Sessie verlopen permission_close_project: Project sluiten/heropenen button_close: Sluiten button_reopen: Heropenen project_status_active: actief project_status_closed: gesloten project_status_archived: gearchiveerd text_project_closed: Dit project is gesloten en kan alleen gelezen worden notice_user_successful_create: Gebruiker %{id} aangemaakt. field_core_fields: Standaardvelden field_timeout: Timeout (in seconden) setting_thumbnails_enabled: Miniaturen voor bijlagen weergeven setting_thumbnails_size: Grootte miniaturen (in pixels) label_status_transitions: Statustransitie label_fields_permissions: Permissievelden label_readonly: Alleen-lezen label_required: Verplicht text_repository_identifier_info: 'Alleen kleine letter (a-z), cijfers, streepjes en liggende streepjes zijn toegestaan.
    Eenmaal opgeslagen kan de identifier niet worden gewijzigd.' field_board_parent: Hoofdforum label_attribute_of_project: Project %{name} label_attribute_of_author: Auteur(s) %{name} label_attribute_of_assigned_to: Toegewezen %{name} label_attribute_of_fixed_version: "%{name} van versie" label_copy_subtasks: Subtaken kopiëren label_copied_to: gekopieerd naar label_copied_from: gekopieerd van label_any_issues_in_project: alle issues in project label_any_issues_not_in_project: alle issues niet in project field_private_notes: Privénotities permission_view_private_notes: Privénotities bekijken permission_set_notes_private: Notities privé maken label_no_issues_in_project: geen issues in project label_any: alle label_last_n_weeks: afgelopen %{count} weken setting_cross_project_subtasks: Subtaken in andere projecten toelaten label_cross_project_descendants: Met subprojecten label_cross_project_tree: Met projectboom label_cross_project_hierarchy: Met projecthiërarchie label_cross_project_system: Met alle projecten button_hide: Verberg setting_non_working_week_days: Niet-werkdagen label_in_the_next_days: in de volgende label_in_the_past_days: in de afgelopen label_attribute_of_user: Gebruikers %{name} text_turning_multiple_off: "Bij het uitschakelen van meerdere waarden zal er maar één waarde bewaard blijven." label_attribute_of_issue: Issues %{name} permission_add_documents: Documenten toevoegen permission_edit_documents: Documenten bewerken permission_delete_documents: Documenten verwijderen label_gantt_progress_line: Voortgangslijn setting_jsonp_enabled: JSONP support inschakelen field_inherit_members: Bovenliggende leden erven field_closed_on: Gesloten field_generate_password: Wachtwoord genereren setting_default_projects_tracker_ids: Standaardtrackers voor nieuwe projecten label_total_time: Totaal setting_emails_header: E-mailhoofding notice_account_not_activated_yet: U heeft uw account nog niet geactiveerd. Klik op deze link om een nieuwe activeringsemail te versturen. notice_account_locked: Uw account is vergrendeld. notice_account_register_done: "Account aanmaken is gelukt. Een e-mail met instructies om uw account te activeren is verstuurd naar: %{email}." label_hidden: Verborgen label_visibility_private: voor mij alleen label_visibility_roles: alleen voor deze rollen label_visibility_public: voor elke gebruiker field_must_change_passwd: Wachtwoord wijzigen bij eerstvolgende login notice_new_password_must_be_different: Het nieuwe wachtwoord mag niet hetzelfde zijn als het huidige wachtwoord setting_mail_handler_excluded_filenames: Bijlagen uitsluiten op basis van naam text_convert_available: ImageMagick comversie beschikbaar (optioneel) label_link: Link label_only: enkel label_drop_down_list: keuzelijst label_checkboxes: keuzevakjes label_link_values_to: Waarden koppelen aan URL setting_force_default_language_for_anonymous: Standaardtaal voor anonieme gebruikers setting_force_default_language_for_loggedin: Standaardtaal voor ingelogde gebruikers label_custom_field_select_type: Selecteer het objecttype waaraan u het vrij veld wilt vasthangen label_issue_assigned_to_updated: Toegewezen persoon gewijzigd label_check_for_updates: Controleren of er updates beschikbaar zijn label_latest_compatible_version: Laatste compatibele versie label_unknown_plugin: Onbekende plugin label_radio_buttons: selectieknoppen label_group_anonymous: Anonieme gebruikers label_group_non_member: Geen lid gebruikers label_add_projects: Projecten toevoegen field_default_status: Standaardstatus text_subversion_repository_note: 'Voorbeelden: file:///, http://, https://, svn://, svn+[tunnelschema]://' field_users_visibility: Gebruikersweergave label_users_visibility_all: Alle actieve gebruikers label_users_visibility_members_of_visible_projects: Gebruikers van zichtbare projecten label_edit_attachments: Bijlagen bewerken setting_link_copied_issue: Koppelen met issue bij kopiëren label_link_copied_issue: Koppelen met issuekopie label_ask: Vraag iedere keer label_search_attachments_yes: Zoeken in bestandsnamen en beschrijvingen van bijlagen label_search_attachments_no: Niet zoeken in bijlagen label_search_attachments_only: Enkel zoeken in bijlagen label_search_open_issues_only: Enkel openstaande issues field_address: Adres setting_max_additional_emails: Maximum aantal bijkomende e-mailadressen label_email_address_plural: E-mails label_email_address_add: Nieuw e-mailadres label_enable_notifications: Notificaties inschakelen label_disable_notifications: Notificaties uitschakelen setting_search_results_per_page: Zoekresultaten per pagina label_blank_value: leeg permission_copy_issues: Issues kopiëren error_password_expired: Uw wachtwoord is verlopen of moet gewijzigd worden op vraag van een beheerder. field_time_entries_visibility: Tijdregistratieweergave setting_password_max_age: Wachtwoord wijzigen verplicht na label_parent_task_attributes: Attributen van bovenliggende taken label_parent_task_attributes_derived: Berekend vanuit subtaken label_parent_task_attributes_independent: Onafhankelijk van subtaken label_time_entries_visibility_all: Alle tijdregistraties label_time_entries_visibility_own: Tijdregistraties aangemaakt door gebruiker label_member_management: Ledenbeheer label_member_management_all_roles: Alle rollen label_member_management_selected_roles_only: Enkel deze rollen label_password_required: Bevestig uw wachtwoord om verder te gaan label_total_spent_time: Totaal gespendeerde tijd notice_import_finished: "%{count} items werden geïmporteerd" notice_import_finished_with_errors: "%{count} van in totaal %{total} items kunnen niet geïmporteerd worden" error_invalid_file_encoding: Het bestand is geen geldig geëncodeerd %{encoding} bestand error_invalid_csv_file_or_settings: Het bestand is geen CSV-bestand of voldoet niet aan onderstaande instellingen (%{value}) error_can_not_read_import_file: Er is een fout opgetreden bij het inlezen van het bestand permission_import_issues: Issues importeren label_import_issues: Issues importeren label_select_file_to_import: Selecteer het bestand om te importeren label_fields_separator: Scheidingsteken label_fields_wrapper: Tekstscheidingsteken label_encoding: Codering label_comma_char: Komma label_semi_colon_char: Puntkomma label_quote_char: Enkel aanhalingsteken label_double_quote_char: Dubbel aanhalingsteken label_fields_mapping: Veldkoppeling label_file_content_preview: Voorbeeld van bestandsinhoud label_create_missing_values: Ontbrekende waarden invullen button_import: Importeren field_total_estimated_hours: Geschatte totaaltijd label_api: API label_total_plural: Totalen label_assigned_issues: Toegewezen issues label_field_format_enumeration: Sleutel/waarde lijst label_f_hour_short: '%{value} u' field_default_version: Standaardversie error_attachment_extension_not_allowed: Bestandsextensie %{extension} van bijlage is niet toegelaten setting_attachment_extensions_allowed: Toegelaten bestandsextensies setting_attachment_extensions_denied: Niet toegelaten bestandsextensies label_any_open_issues: alle open issues label_no_open_issues: geen open issues label_default_values_for_new_users: Standaardwaarden voor nieuwe gebruikers error_ldap_bind_credentials: Ongeldige LDAP account/wachtwoord-combinatie setting_sys_api_key: API-sleutel setting_lost_password: Wachtwoord vergeten mail_subject_security_notification: Beveiligingsnotificatie mail_body_security_notification_change: ! '%{field} werd aangepast.' mail_body_security_notification_change_to: ! '%{field} werd aangepast naar %{value}.' mail_body_security_notification_add: ! '%{field} %{value} werd toegevoegd.' mail_body_security_notification_remove: ! '%{field} %{value} werd verwijderd.' mail_body_security_notification_notify_enabled: E-mailadres %{value} ontvangt vanaf heden notificaties. mail_body_security_notification_notify_disabled: E-mailadres %{value} ontvangt niet langer notificaties. mail_body_settings_updated: ! 'Volgende instellingen werden gewijzigd:' field_remote_ip: IP-adres label_wiki_page_new: Nieuwe wikipagina label_relations: Relaties button_filter: Filteren mail_body_password_updated: Uw wachtwoord werd gewijzigd. label_no_preview: Geen voorbeeld beschikbaar error_no_tracker_allowed_for_new_issue_in_project: Het project bevat geen tracker waarvoor u een issue kan aanmaken label_tracker_all: Alle trackers setting_new_item_menu_tab: Projectmenu-tab om nieuwe objecten aan te maken label_new_project_issue_tab_enabled: ! '"Nieuw issue"-tab weergeven' label_new_object_tab_enabled: ! '"+"-tab met keuzelijst weergeven' error_no_projects_with_tracker_allowed_for_new_issue: Er zijn geen projecten met trackers waarvoor u een issue kan aanmaken field_textarea_font: Lettertype voor tekstvelden label_font_default: Standaardlettertype label_font_monospace: Monospaced-lettertype label_font_proportional: Proportioneel lettertype setting_timespan_format: Tijdspanneformaat label_table_of_contents: Inhoudsopgave setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Relatie verwijderen error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/no.yml000066400000000000000000002115511500112024600171670ustar00rootroot00000000000000# Norwegian, norsk bokmål, by irb.no "no": support: array: sentence_connector: "og" direction: ltr date: formats: default: "%d.%m.%Y" short: "%e. %b" long: "%e. %B %Y" day_names: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag] abbr_day_names: [søn, man, tir, ons, tor, fre, lør] month_names: [~, januar, februar, mars, april, mai, juni, juli, august, september, oktober, november, desember] abbr_month_names: [~, jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des] order: - :day - :month - :year time: formats: default: "%A, %e. %B %Y, %H:%M" time: "%H:%M" short: "%e. %B, %H:%M" long: "%A, %e. %B %Y, %H:%M" am: "" pm: "" datetime: distance_in_words: half_a_minute: "et halvt minutt" less_than_x_seconds: one: "mindre enn 1 sekund" other: "mindre enn %{count} sekunder" x_seconds: one: "1 sekund" other: "%{count} sekunder" less_than_x_minutes: one: "mindre enn 1 minutt" other: "mindre enn %{count} minutter" x_minutes: one: "1 minutt" other: "%{count} minutter" about_x_hours: one: "rundt 1 time" other: "rundt %{count} timer" x_hours: one: "1 time" other: "%{count} timer" x_days: one: "1 dag" other: "%{count} dager" about_x_months: one: "rundt 1 måned" other: "rundt %{count} måneder" x_months: one: "1 måned" other: "%{count} måneder" about_x_years: one: "rundt 1 år" other: "rundt %{count} år" over_x_years: one: "over 1 år" other: "over %{count} år" almost_x_years: one: "nesten 1 år" other: "nesten %{count} år" number: format: precision: 3 separator: "." delimiter: "," currency: format: unit: "kr" format: "%n %u" precision: format: delimiter: "" precision: 4 human: storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" activerecord: errors: template: header: "kunne ikke lagre %{model} på grunn av %{count} feil." body: "det oppstod problemer i følgende felt:" messages: inclusion: "er ikke inkludert i listen" exclusion: "er reservert" invalid: "er ugyldig" confirmation: "passer ikke bekreftelsen" accepted: "må være akseptert" empty: "kan ikke være tom" blank: "kan ikke være blank" too_long: "er for lang (maksimum %{count} tegn)" too_short: "er for kort (minimum %{count} tegn)" wrong_length: "er av feil lengde (maksimum %{count} tegn)" taken: "er allerede i bruk" not_a_number: "er ikke et tall" greater_than: "må være større enn %{count}" greater_than_or_equal_to: "må være større enn eller lik %{count}" equal_to: "må være lik %{count}" less_than: "må være mindre enn %{count}" less_than_or_equal_to: "må være mindre enn eller lik %{count}" odd: "må være oddetall" even: "må være partall" greater_than_start_date: "må være større enn startdato" not_same_project: "hører ikke til samme prosjekt" circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet" cant_link_an_issue_with_a_descendant: "En sak kan ikke kobles mot en av sine undersaker" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Vennligst velg general_text_No: 'Nei' general_text_Yes: 'Ja' general_text_no: 'nei' general_text_yes: 'ja' general_lang_name: 'Norwegian (Norsk bokmål)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Kontoen er oppdatert. notice_account_invalid_credentials: Feil brukernavn eller passord notice_account_password_updated: Passordet er oppdatert. notice_account_wrong_password: Feil passord notice_account_register_done: Kontoen er opprettet. Klikk lenken som er sendt deg i e-post for å aktivere kontoen. notice_can_t_change_password: Denne kontoen bruker ekstern godkjenning. Passordet kan ikke endres. notice_account_lost_email_sent: En e-post med instruksjoner for å velge et nytt passord er sendt til deg. notice_account_activated: Din konto er aktivert. Du kan nå logge inn. notice_successful_create: Opprettet. notice_successful_update: Oppdatert. notice_successful_delete: Slettet. notice_successful_connection: Koblet opp. notice_file_not_found: Siden du forsøkte å vise eksisterer ikke, eller er slettet. notice_locking_conflict: Data har blitt oppdatert av en annen bruker. notice_not_authorized: Du har ikke adgang til denne siden. notice_email_sent: "En e-post er sendt til %{value}" notice_email_error: "En feil oppstod under sending av e-post (%{value})" notice_feeds_access_key_reseted: Din Atom-tilgangsnøkkel er nullstilt. notice_failed_to_save_issues: "Lykkes ikke å lagre %{count} sak(er) på %{total} valgt: %{ids}." notice_account_pending: "Din konto ble opprettet og avventer nå administrativ godkjenning." notice_default_data_loaded: Standardkonfigurasjonen lastet inn. error_can_t_load_default_data: "Standardkonfigurasjonen kunne ikke lastes inn: %{value}" error_scm_not_found: "Elementet og/eller revisjonen eksisterer ikke i depoet." error_scm_command_failed: "En feil oppstod under tilkobling til depoet: %{value}" error_scm_annotate: "Elementet eksisterer ikke, eller kan ikke noteres." error_issue_not_found_in_project: 'Saken eksisterer ikke, eller hører ikke til dette prosjektet' mail_subject_lost_password: "Ditt %{value} passord" mail_body_lost_password: 'Klikk følgende lenke for å endre ditt passord:' mail_subject_register: "%{value} kontoaktivering" mail_body_register: 'Klikk følgende lenke for å aktivere din konto:' mail_body_account_information_external: "Du kan bruke din %{value}-konto for å logge inn." mail_body_account_information: Informasjon om din konto mail_subject_account_activation_request: "%{value} kontoaktivering" mail_body_account_activation_request: "En ny bruker (%{value}) er registrert, og avventer din godkjenning:" mail_subject_reminder: "%{count} sak(er) har frist de kommende %{days} dagene" mail_body_reminder: "%{count} sak(er) som er tildelt deg har frist de kommende %{days} dager:" field_name: Navn field_description: Beskrivelse field_summary: Oppsummering field_is_required: Kreves field_firstname: Fornavn field_lastname: Etternavn field_mail: E-post field_filename: Fil field_filesize: Størrelse field_downloads: Nedlastinger field_author: Forfatter field_created_on: Opprettet field_updated_on: Oppdatert field_field_format: Format field_is_for_all: For alle prosjekter field_possible_values: Lovlige verdier field_regexp: Regular expression field_min_length: Minimum lengde field_max_length: Maksimum lengde field_value: Verdi field_category: Kategori field_title: Tittel field_project: Prosjekt field_issue: Sak field_status: Status field_notes: Notater field_is_closed: Lukker saken field_is_default: Standardverdi field_tracker: Sakstype field_subject: Emne field_due_date: Frist field_assigned_to: Tildelt til field_priority: Prioritet field_fixed_version: Mål-versjon field_user: Bruker field_role: Rolle field_homepage: Hjemmeside field_is_public: Offentlig field_parent: Underprosjekt av field_is_in_roadmap: Vises i veikart field_login: Brukernavn field_mail_notification: E-post-varsling field_admin: Administrator field_last_login_on: Sist innlogget field_language: Språk field_effective_date: Dato field_password: Passord field_new_password: Nytt passord field_password_confirmation: Bekreft passord field_version: Versjon field_type: Type field_host: Vert field_port: Port field_account: Konto field_base_dn: Base DN field_attr_login: Brukernavnsattributt field_attr_firstname: Fornavnsattributt field_attr_lastname: Etternavnsattributt field_attr_mail: E-post-attributt field_onthefly: On-the-fly brukeropprettelse field_start_date: Start field_done_ratio: "% Ferdig" field_auth_source: Autentiseringskilde field_hide_mail: Skjul min epost-adresse field_comments: Kommentarer field_url: URL field_start_page: Startside field_subproject: Underprosjekt field_hours: Timer field_activity: Aktivitet field_spent_on: Dato field_identifier: Identifikasjon field_is_filter: Brukes som filter field_issue_to: Relaterte saker field_delay: Forsinkelse field_assignable: Saker kan tildeles denne rollen field_redirect_existing_links: Viderekoble eksisterende lenker field_estimated_hours: Estimert tid field_column_names: Kolonner field_time_zone: Tidssone field_searchable: Søkbar field_default_value: Standardverdi field_comments_sorting: Vis kommentarer setting_app_title: Applikasjonstittel setting_welcome_text: Velkomsttekst setting_default_language: Standardspråk setting_login_required: Krever innlogging setting_self_registration: Selvregistrering setting_attachment_max_size: Maks. størrelse vedlegg setting_issues_export_limit: Eksportgrense for saker setting_mail_from: Avsenders epost setting_host_name: Vertsnavn setting_text_formatting: Tekstformattering setting_wiki_compression: Komprimering av Wiki-historikk setting_feeds_limit: Innholdsgrense for Feed setting_default_projects_public: Nye prosjekter er offentlige som standard setting_autofetch_changesets: Autohenting av endringssett setting_sys_api_enabled: Aktiver webservice for depot-administrasjon setting_commit_ref_keywords: Nøkkelord for referanse setting_commit_fix_keywords: Nøkkelord for retting setting_autologin: Autoinnlogging setting_date_format: Datoformat setting_time_format: Tidsformat setting_cross_project_issue_relations: Tillat saksrelasjoner på kryss av prosjekter setting_issue_list_default_columns: Standardkolonner vist i sakslisten setting_emails_footer: Epost-signatur setting_protocol: Protokoll setting_per_page_options: Alternativer, objekter pr. side setting_user_format: Visningsformat, brukere setting_activity_days_default: Dager vist på prosjektaktivitet setting_display_subprojects_issues: Vis saker fra underprosjekter på hovedprosjekt som standard setting_enabled_scm: Aktiviserte SCM project_module_issue_tracking: Sakshåndtering project_module_time_tracking: Tidsregistrering project_module_news: Nyheter project_module_documents: Dokumenter project_module_files: Filer project_module_wiki: Wiki project_module_repository: Depot project_module_boards: Forumer label_user: Bruker label_user_plural: Brukere label_user_new: Ny bruker label_project: Prosjekt label_project_new: Nytt prosjekt label_project_plural: Prosjekter label_x_projects: zero: ingen prosjekter one: 1 prosjekt other: "%{count} prosjekter" label_project_all: Alle prosjekter label_project_latest: Siste prosjekter label_issue: Sak label_issue_new: Ny sak label_issue_plural: Saker label_issue_view_all: Vis alle saker label_issues_by: "Saker etter %{value}" label_issue_added: Sak lagt til label_issue_updated: Sak oppdatert label_document: Dokument label_document_new: Nytt dokument label_document_plural: Dokumenter label_document_added: Dokument lagt til label_role: Rolle label_role_plural: Roller label_role_new: Ny rolle label_role_and_permissions: Roller og rettigheter label_member: Medlem label_member_new: Nytt medlem label_member_plural: Medlemmer label_tracker: Sakstype label_tracker_plural: Sakstyper label_tracker_new: Ny sakstype label_workflow: Arbeidsflyt label_issue_status: Saksstatus label_issue_status_plural: Saksstatuser label_issue_status_new: Ny status label_issue_category: Sakskategori label_issue_category_plural: Sakskategorier label_issue_category_new: Ny kategori label_custom_field: Eget felt label_custom_field_plural: Egne felt label_custom_field_new: Nytt eget felt label_enumerations: Listeverdier label_enumeration_new: Ny verdi label_information: Informasjon label_information_plural: Informasjon label_register: Registrer label_password_lost: Mistet passord label_home: Hjem label_my_page: Min side label_my_account: Min konto label_my_projects: Mine prosjekter label_administration: Administrasjon label_login: Logg inn label_logout: Logg ut label_help: Hjelp label_reported_issues: Rapporterte saker label_assigned_to_me_issues: Saker tildelt meg label_registered_on: Registrert label_activity: Aktivitet label_new: Ny label_logged_as: Innlogget som label_environment: Miljø label_authentication: Autentisering label_auth_source: Autentiseringskilde label_auth_source_new: Ny autentiseringskilde label_auth_source_plural: Autentiseringskilder label_subproject_plural: Underprosjekter label_and_its_subprojects: "%{value} og dets underprosjekter" label_min_max_length: Min.-maks. lengde label_list: Liste label_date: Dato label_integer: Heltall label_float: Kommatall label_boolean: Sann/usann label_string: Tekst label_text: Lang tekst label_attribute: Attributt label_attribute_plural: Attributter label_no_data: Ingen data å vise label_change_status: Endre status label_history: Historikk label_attachment: Fil label_attachment_new: Ny fil label_attachment_delete: Slett fil label_attachment_plural: Filer label_file_added: Fil lagt til label_report: Rapport label_report_plural: Rapporter label_news: Nyheter label_news_new: Legg til nyhet label_news_plural: Nyheter label_news_latest: Siste nyheter label_news_view_all: Vis alle nyheter label_news_added: Nyhet lagt til label_settings: Innstillinger label_overview: Oversikt label_version: Versjon label_version_new: Ny versjon label_version_plural: Versjoner label_confirmation: Bekreftelse label_export_to: Eksporter til label_read: Leser... label_public_projects: Offentlige prosjekt label_open_issues: åpen label_open_issues_plural: åpne label_closed_issues: lukket label_closed_issues_plural: lukkede label_x_open_issues_abbr: zero: 0 åpne one: 1 åpen other: "%{count} åpne" label_x_closed_issues_abbr: zero: 0 lukket one: 1 lukket other: "%{count} lukket" label_total: Totalt label_permissions: Rettigheter label_current_status: Nåværende status label_new_statuses_allowed: Tillate nye statuser label_all: alle label_none: ingen label_nobody: ingen label_next: Neste label_previous: Forrige label_used_by: Brukt av label_details: Detaljer label_add_note: Legg til notat label_calendar: Kalender label_months_from: måneder fra label_gantt: Gantt label_internal: Intern label_last_changes: "siste %{count} endringer" label_change_view_all: Vis alle endringer label_comment: Kommentar label_comment_plural: Kommentarer label_x_comments: zero: ingen kommentarer one: 1 kommentar other: "%{count} kommentarer" label_comment_add: Legg til kommentar label_comment_added: Kommentar lagt til label_comment_delete: Slett kommentar label_query: Egen spørring label_query_plural: Egne spørringer label_query_new: Ny spørring label_filter_add: Legg til filter label_filter_plural: Filtre label_equals: er label_not_equals: er ikke label_in_less_than: er mindre enn label_in_more_than: in mer enn label_in: i label_today: idag label_yesterday: i går label_this_week: denne uken label_last_week: sist uke label_last_n_days: "siste %{count} dager" label_this_month: denne måneden label_last_month: siste måned label_this_year: dette året label_date_range: Dato-spenn label_less_than_ago: mindre enn dager siden label_more_than_ago: mer enn dager siden label_ago: dager siden label_contains: inneholder label_not_contains: ikke inneholder label_day_plural: dager label_repository: Depot label_repository_plural: Depoter label_revision: Revisjon label_revision_plural: Revisjoner label_associated_revisions: Assosierte revisjoner label_added: lagt til label_modified: endret label_deleted: slettet label_latest_revision: Siste revisjon label_latest_revision_plural: Siste revisjoner label_view_revisions: Vis revisjoner label_max_size: Maksimum størrelse label_roadmap: Veikart label_roadmap_due_in: "Frist om %{value}" label_roadmap_overdue: "%{value} over fristen" label_roadmap_no_issues: Ingen saker for denne versjonen label_search: Søk label_result_plural: Resultater label_all_words: Alle ord label_wiki: Wiki label_wiki_edit: Wiki endring label_wiki_edit_plural: Wiki endringer label_wiki_page: Wiki-side label_wiki_page_plural: Wiki-sider label_index_by_title: Indekser etter tittel label_index_by_date: Indekser etter dato label_current_version: Gjeldende versjon label_preview: Forhåndsvis label_feed_plural: Feeder label_changes_details: Detaljer om alle endringer label_issue_tracking: Sakshåndtering label_spent_time: Brukt tid label_f_hour: "%{value} time" label_f_hour_plural: "%{value} timer" label_time_tracking: Tidsregistrering label_change_plural: Endringer label_statistics: Statistikk label_commits_per_month: Innsendinger pr. måned label_commits_per_author: Innsendinger pr. forfatter label_view_diff: Vis forskjeller label_diff_inline: i teksten label_diff_side_by_side: side ved side label_options: Alternativer label_copy_workflow_from: Kopier arbeidsflyt fra label_permissions_report: Rettighetsrapport label_watched_issues: Overvåkede saker label_related_issues: Relaterte saker label_applied_status: Gitt status label_loading: Laster... label_relation_new: Ny relasjon label_relation_delete: Slett relasjon label_relates_to: relatert til label_duplicates: dupliserer label_duplicated_by: duplisert av label_blocks: blokkerer label_blocked_by: blokkert av label_precedes: kommer før label_follows: følger label_stay_logged_in: Hold meg innlogget label_disabled: avslått label_show_completed_versions: Vis ferdige versjoner label_me: meg label_board: Forum label_board_new: Nytt forum label_board_plural: Forumer label_topic_plural: Emner label_message_plural: Meldinger label_message_last: Siste melding label_message_new: Ny melding label_message_posted: Melding lagt til label_reply_plural: Svar label_send_information: Send kontoinformasjon til brukeren label_year: År label_month: Måned label_week: Uke label_date_from: Fra label_date_to: Til label_language_based: Basert på brukerens språk label_sort_by: "Sorter etter %{value}" label_send_test_email: Send en epost-test label_feeds_access_key_created_on: "Atom tilgangsnøkkel opprettet for %{value} siden" label_module_plural: Moduler label_added_time_by: "Lagt til av %{author} for %{age} siden" label_updated_time: "Oppdatert for %{value} siden" label_jump_to_a_project: Gå til et prosjekt... label_file_plural: Filer label_changeset_plural: Endringssett label_default_columns: Standardkolonner label_no_change_option: (Ingen endring) label_bulk_edit_selected_issues: Samlet endring av valgte saker label_theme: Tema label_default: Standard label_search_titles_only: Søk bare i titler label_user_mail_option_all: "For alle hendelser på mine prosjekter" label_user_mail_option_selected: "For alle hendelser på valgte prosjekt..." label_user_mail_no_self_notified: "Jeg vil ikke bli varslet om endringer jeg selv gjør" label_registration_activation_by_email: kontoaktivering pr. e-post label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering label_display_per_page: "Pr. side: %{value}" label_age: Alder label_change_properties: Endre egenskaper label_general: Generell label_scm: SCM label_plugins: Tillegg label_ldap_authentication: LDAP-autentisering label_downloads_abbr: Nedl. label_optional_description: Valgfri beskrivelse label_add_another_file: Legg til en fil til label_preferences: Brukerinnstillinger label_chronological_order: I kronologisk rekkefølge label_reverse_chronological_order: I omvendt kronologisk rekkefølge button_login: Logg inn button_submit: Send button_save: Lagre button_check_all: Merk alle button_uncheck_all: Avmerk alle button_delete: Slett button_create: Opprett button_test: Test button_edit: Endre button_add: Legg til button_change: Endre button_apply: Bruk button_clear: Nullstill button_lock: Lås button_unlock: Lås opp button_download: Last ned button_list: Liste button_view: Vis button_move: Flytt button_back: Tilbake button_cancel: Avbryt button_activate: Aktiver button_sort: Sorter button_log_time: Logg tid button_rollback: Rull tilbake til denne versjonen button_watch: Overvåk button_unwatch: Stopp overvåkning button_reply: Svar button_archive: Arkiver button_unarchive: Gjør om arkivering button_reset: Nullstill button_rename: Endre navn button_change_password: Endre passord button_copy: Kopier button_annotate: Notér button_update: Oppdater button_configure: Konfigurer status_active: aktiv status_registered: registrert status_locked: låst text_select_mail_notifications: Velg hendelser som skal varsles med e-post. text_regexp_info: f.eks. ^[A-Z0-9]+$ text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ? text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil også bli slettet." text_workflow_edit: Velg en rolle og en sakstype for å endre arbeidsflyten text_are_you_sure: Er du sikker ? text_tip_issue_begin_day: oppgaven starter denne dagen text_tip_issue_end_day: oppgaven avsluttes denne dagen text_tip_issue_begin_end_day: oppgaven starter og avsluttes denne dagen text_caracters_maximum: "%{count} tegn maksimum." text_caracters_minimum: "Må være minst %{count} tegn langt." text_length_between: "Lengde mellom %{min} og %{max} tegn." text_tracker_no_workflow: Ingen arbeidsflyt definert for denne sakstypen text_unallowed_characters: Ugyldige tegn text_comma_separated: Flere verdier tillat (kommaseparert). text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding text_issue_added: "Sak %{id} er innrapportert av %{author}." text_issue_updated: "Sak %{id} er oppdatert av %{author}." text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ? text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?" text_issue_category_destroy_assignments: Fjern bruk av kategorier text_issue_category_reassign_to: Overfør sakene til denne kategorien text_user_mail_option: "For ikke-valgte prosjekter vil du bare motta varsling om ting du overvåker eller er involveret i (eks. saker du er forfatter av eller er tildelt)." text_no_configuration_data: "Roller, arbeidsflyt, sakstyper og -statuser er ikke konfigurert enda.\nDet anbefales sterkt å laste inn standardkonfigurasjonen. Du vil kunne endre denne etter den er innlastet." text_load_default_configuration: Last inn standardkonfigurasjonen text_status_changed_by_changeset: "Brukt i endringssett %{value}." text_issues_destroy_confirmation: 'Er du sikker på at du vil slette valgte sak(er) ?' text_select_project_modules: 'Velg moduler du vil aktivere for dette prosjektet:' text_default_administrator_account_changed: Standard administrator-konto er endret text_file_repository_writable: Fil-arkivet er skrivbart text_minimagick_available: MiniMagick er tilgjengelig (valgfritt) text_destroy_time_entries_question: "%{hours} timer er ført på sakene du er i ferd med å slette. Hva vil du gjøre ?" text_destroy_time_entries: Slett førte timer text_assign_time_entries_to_project: Overfør førte timer til prosjektet text_reassign_time_entries: 'Overfør førte timer til denne saken:' text_user_wrote: "%{value} skrev:" text_user_wrote_in: "%{value} skrev (%{link}):" default_role_manager: Leder default_role_developer: Utvikler default_role_reporter: Rapportør default_tracker_bug: Feil default_tracker_feature: Funksjon default_tracker_support: Support default_issue_status_new: Ny default_issue_status_in_progress: Pågår default_issue_status_resolved: Avklart default_issue_status_feedback: Tilbakemelding default_issue_status_closed: Lukket default_issue_status_rejected: Avvist default_doc_category_user: Brukerdokumentasjon default_doc_category_tech: Teknisk dokumentasjon default_priority_low: Lav default_priority_normal: Normal default_priority_high: Høy default_priority_urgent: Haster default_priority_immediate: Omgående default_activity_design: Design default_activity_development: Utvikling enumeration_issue_priorities: Sakssprioriteringer enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsregistrering) text_enumeration_category_reassign_to: 'Endre dem til denne verdien:' text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien." label_incoming_emails: Innkommende e-post label_generate_key: Generer en nøkkel setting_mail_handler_api_enabled: Skru på WS for innkommende epost setting_mail_handler_api_key: API-nøkkel text_email_delivery_not_configured: "Levering av epost er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på." field_parent_title: Overordnet side label_issue_watchers: Overvåkere button_quote: Sitat setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer notice_unable_delete_version: Kan ikke slette versjonen label_renamed: gitt nytt navn label_copied: kopiert setting_plain_text_mail: kun ren tekst (ikke HTML) permission_view_files: Vise filer permission_edit_issues: Redigere saker permission_edit_own_time_entries: Redigere egne timelister permission_manage_public_queries: Administrere delte søk permission_add_issues: Legge inn saker permission_log_time: Loggføre timer permission_view_changesets: Vise endringssett permission_view_time_entries: Vise brukte timer permission_manage_versions: Administrere versjoner permission_manage_wiki: Administrere wiki permission_manage_categories: Administrere kategorier for saker permission_protect_wiki_pages: Beskytte wiki-sider permission_comment_news: Kommentere nyheter permission_delete_messages: Slette meldinger permission_select_project_modules: Velge prosjektmoduler permission_edit_wiki_pages: Redigere wiki-sider permission_add_issue_watchers: Legge til overvåkere permission_view_gantt: Vise gantt-diagram permission_manage_issue_relations: Administrere saksrelasjoner permission_delete_wiki_pages: Slette wiki-sider permission_manage_boards: Administrere forum permission_delete_wiki_pages_attachments: Slette vedlegg permission_view_wiki_edits: Vise wiki-historie permission_add_messages: Sende meldinger permission_view_messages: Vise meldinger permission_manage_files: Administrere filer permission_edit_issue_notes: Redigere notater permission_manage_news: Administrere nyheter permission_view_calendar: Vise kalender permission_manage_members: Administrere medlemmer permission_edit_messages: Redigere meldinger permission_delete_issues: Slette saker permission_view_issue_watchers: Vise liste over overvåkere permission_manage_repository: Administrere depot permission_commit_access: Tilgang til innsending permission_browse_repository: Bla gjennom depot permission_view_documents: Vise dokumenter permission_edit_project: Redigere prosjekt permission_add_issue_notes: Legge til notater permission_save_queries: Lagre søk permission_view_wiki_pages: Vise wiki permission_rename_wiki_pages: Gi wiki-sider nytt navn permission_edit_time_entries: Redigere timelister permission_edit_own_issue_notes: Redigere egne notater setting_gravatar_enabled: Bruk Gravatar-brukerikoner label_example: Eksempel text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." permission_edit_own_messages: Rediger egne meldinger permission_delete_own_messages: Slett egne meldinger label_user_activity: "%{value}s aktivitet" label_updated_time_by: "Oppdatert av %{author} for %{age} siden" text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' setting_diff_max_lines_displayed: Max number of diff lines displayed text_plugin_assets_writable: Plugin assets directory writable warning_attachments_not_saved: "%{count} fil(er) kunne ikke lagres." button_create_and_continue: Opprett og fortsett text_custom_field_possible_values_info: 'En linje for hver verdi' label_display: Visning field_editable: Redigerbar setting_repository_log_display_limit: Maks antall revisjoner vist i fil-loggen setting_file_max_size_displayed: Max size of text files displayed inline field_watcher: Overvåker field_content: Innhold label_descending: Synkende label_sort: Sorter label_ascending: Stigende label_date_from_to: Fra %{start} til %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Denne siden har %{descendants} underside(r). Hva ønsker du å gjøre? text_wiki_page_reassign_children: Tilknytt undersider til denne overordnede siden text_wiki_page_nullify_children: Behold undersider som rotsider text_wiki_page_destroy_children: Slett undersider og alle deres underliggende sider setting_password_min_length: Minimum passordlengde field_group_by: Grupper resultater etter mail_subject_wiki_content_updated: "Wiki-side '%{id}' er oppdatert" label_wiki_content_added: Wiki-side opprettet mail_subject_wiki_content_added: "Wiki-side '%{id}' er opprettet" mail_body_wiki_content_added: Wiki-siden '%{id}' ble opprettet av %{author}. label_wiki_content_updated: Wiki-side oppdatert mail_body_wiki_content_updated: Wiki-siden '%{id}' ble oppdatert av %{author}. permission_add_project: Opprett prosjekt setting_new_project_user_role_id: Rolle gitt en ikke-administratorbruker som oppretter et prosjekt label_view_all_revisions: Se alle revisjoner label_tag: Tag label_branch: Gren error_no_tracker_in_project: Ingen sakstyper er tilknyttet dette prosjektet. Vennligst kontroller prosjektets innstillinger. error_no_default_issue_status: Ingen standard saksstatus er angitt. Vennligst kontroller konfigurasjonen (Gå til "Administrasjon -> Saksstatuser"). text_journal_changed: "%{label} endret fra %{old} til %{new}" text_journal_set_to: "%{label} satt til %{value}" text_journal_deleted: "%{label} slettet (%{old})" label_group_plural: Grupper label_group: Gruppe label_group_new: Ny gruppe label_time_entry_plural: Brukt tid text_journal_added: "%{label} %{value} lagt til" field_active: Aktiv enumeration_system_activity: Systemaktivitet permission_delete_issue_watchers: Slett overvåkere version_status_closed: stengt version_status_locked: låst version_status_open: åpen error_can_not_reopen_issue_on_closed_version: En sak tilknyttet en stengt versjon kan ikke gjenåpnes. label_user_anonymous: Anonym button_move_and_follow: Flytt og følg etter setting_default_projects_modules: Standard aktiverte moduler for nye prosjekter setting_gravatar_default: Standard Gravatar-bilde field_sharing: Deling label_version_sharing_hierarchy: Med prosjekt-hierarki label_version_sharing_system: Med alle prosjekter label_version_sharing_descendants: Med underprosjekter label_version_sharing_tree: Med prosjekt-tre label_version_sharing_none: Ikke delt error_can_not_archive_project: Dette prosjektet kan ikke arkiveres button_copy_and_follow: Kopier og følg etter label_copy_source: Kilde setting_issue_done_ratio: Kalkuler ferdigstillingsprosent ut i fra setting_issue_done_ratio_issue_status: Bruk saksstatuser error_issue_done_ratios_not_updated: Ferdigstillingsprosent oppdateres ikke. error_workflow_copy_target: Vennligst velg sakstype(r) og rolle(r) setting_issue_done_ratio_issue_field: Bruk felt fra saker label_copy_same_as_target: Samme som mål label_copy_target: Mål notice_issue_done_ratios_updated: Ferdigstillingsprosent oppdatert. error_workflow_copy_source: Vennligst velg en kilde-sakstype eller rolle. label_update_issue_done_ratios: Oppdatert ferdigstillingsprosent setting_start_of_week: Start kalender på permission_view_issues: Se på saker label_display_used_statuses_only: Vis kun statuser som brukes av denne sakstypen label_revision_id: Revision %{value} label_api_access_key: API tilgangsnøkkel label_api_access_key_created_on: API tilgangsnøkkel opprettet for %{value} siden label_feeds_access_key: Atom tilgangsnøkkel notice_api_access_key_reseted: Din API tilgangsnøkkel ble resatt. setting_rest_api_enabled: Aktiver REST webservice label_missing_api_access_key: Mangler en API tilgangsnøkkel label_missing_feeds_access_key: Mangler en Atom tilgangsnøkkel button_show: Vis text_line_separated: Flere verdier er tillatt (en linje per verdi). setting_mail_handler_body_delimiters: Avkort epost etter en av disse linjene permission_add_subprojects: Opprett underprosjekt label_subproject_new: Nytt underprosjekt text_own_membership_delete_confirmation: |- Du er i ferd med å fjerne noen eller alle rettigheter og vil kanskje ikke være i stand til å redigere dette prosjektet etterpå. Er du sikker på at du vil fortsette? label_close_versions: Steng fullførte versjoner label_board_sticky: Fast label_board_locked: Låst permission_export_wiki_pages: Eksporter wiki-sider setting_cache_formatted_text: Mellomlagre formattert tekst permission_manage_project_activities: Administrere prosjektaktiviteter error_unable_delete_issue_status: Kan ikke slette saksstatus (%{value}) label_profile: Profil permission_manage_subtasks: Administrere undersaker field_parent_issue: Overordnet sak label_subtask_plural: Undersaker label_project_copy_notifications: Send epost-varslinger under prosjektkopiering error_can_not_delete_custom_field: Kan ikke slette eget felt error_unable_to_connect: Kunne ikke koble til (%{value}) error_can_not_remove_role: Denne rollen er i bruk og kan ikke slettes. error_can_not_delete_tracker_html: Denne sakstypen inneholder saker og kan ikke slettes.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Feil ved lagring av medlem(mer): %{errors}." text_zoom_out: Zoom ut text_zoom_in: Zoom inn notice_unable_delete_time_entry: Kan ikke slette oppføring fra timeliste. field_time_entries: Loggfør tid project_module_gantt: Gantt project_module_calendar: Kalender button_edit_associated_wikipage: "Rediger tilhørende Wiki-side: %{page_title}" field_text: Tekstfelt setting_default_notification_option: Standardvalg for varslinger label_user_mail_option_only_my_events: Kun for ting jeg overvåker eller er involvert i label_user_mail_option_none: Ingen hendelser field_member_of_group: Den tildeltes gruppe field_assigned_to_role: Den tildeltes rolle notice_not_authorized_archived_project: Prosjektet du forsøker å åpne er blitt arkivert. label_principal_search: "Søk etter bruker eller gruppe:" label_user_search: "Søk etter bruker:" field_visible: Synlig setting_emails_header: Eposthode setting_commit_logtime_activity_id: Aktivitet for logget tid. text_time_logged_by_changeset: Lagt til i endringssett %{value}. setting_commit_logtime_enabled: Muliggjør loggføring av tid notice_gantt_chart_truncated: Diagrammet ble avkortet fordi det overstiger det maksimale antall elementer som kan vises (%{max}) setting_gantt_items_limit: Maksimalt antall elementer vist på gantt-diagrammet field_warn_on_leaving_unsaved: Vis meg en advarsel når jeg forlater en side med ikke lagret tekst text_warn_on_leaving_unsaved: Siden inneholder tekst som ikke er lagret og som vil bli tapt om du forlater denne siden. label_my_queries: Mine egne spørringer text_journal_changed_no_detail: "%{label} oppdatert" label_news_comment_added: Kommentar lagt til en nyhet button_expand_all: Utvid alle button_collapse_all: Kollaps alle label_additional_workflow_transitions_for_assignee: Ytterligere overganger tillatt når brukeren er den som er tildelt saken label_additional_workflow_transitions_for_author: Ytterligere overganger tillatt når brukeren er den som har opprettet saken label_bulk_edit_selected_time_entries: Masserediger valgte timeliste-oppføringer text_time_entries_destroy_confirmation: Er du sikker på du vil slette de(n) valgte timeliste-oppføringen(e)? label_role_anonymous: Anonym label_role_non_member: Ikke medlem label_issue_note_added: Notat lagt til label_issue_status_updated: Status oppdatert label_issue_priority_updated: Prioritet oppdatert label_issues_visibility_own: Saker opprettet av eller tildelt brukeren field_issues_visibility: Synlighet på saker label_issues_visibility_all: Alle saker permission_set_own_issues_private: Gjør egne saker offentlige eller private field_is_private: Privat permission_set_issues_private: Gjør saker offentlige eller private label_issues_visibility_public: Alle ikke-private saker text_issues_destroy_descendants_confirmation: Dette vil også slette %{count} undersak(er). field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger field_scm_path_encoding: Koding av sti text_scm_path_encoding_note: "Standard: UTF-8" field_path_to_repository: Sti til depot field_root_directory: Rotkatalog field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokalt depot (f.eks. /hgrepo, c:\hgrepo) text_scm_command: Kommando text_scm_command_version: Versjon label_git_report_last_commit: Rapporter siste innsending for filer og kataloger text_scm_config: Du kan konfigurere scm kommandoer i config/configuration.yml. Vennligst restart applikasjonen etter å ha redigert filen. text_scm_command_not_available: Scm kommando er ikke tilgjengelig. Vennligst kontroller innstillingene i administrasjonspanelet. text_git_repository_note: Depot er bart og lokalt (f.eks. /gitrepo, c:\gitrepo) notice_issue_successful_create: Sak %{id} opprettet. label_between: mellom setting_issue_group_assignment: Tillat tildeling av saker til grupper label_diff: diff description_query_sort_criteria_direction: Sorteringsretning description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Meldingsinnhold description_available_columns: Tilgjengelige kolonner description_issue_category_reassign: Choose issue category description_search: Søkefelt description_notes: Notes description_choose_project: Prosjekter description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Velg ny overordnet side description_selected_columns: Valgte kolonner label_parent_revision: Overordnet label_child_revision: Underordnet error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Bruk dagens dato som startdato for nye saker button_edit_section: Rediger denne seksjonen setting_repositories_encodings: Attachments and repositories encodings description_all_columns: Alle kolonnene button_export: Eksporter label_export_options: "%{export_format} eksportvalg" error_attachment_too_big: Filen overstiger maksimum filstørrelse (%{max_size}) og kan derfor ikke lastes opp notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 saker one: 1 sak other: "%{count} saker" label_repository_new: Nytt depot field_repository_is_default: Hoveddepot label_copy_attachments: Kopier vedlegg label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Kun små bokstaver (a-z), tall, bindestrek (-) og "underscore" (_) er tillatt.
    Etter lagring er det ikke mulig å gjøre endringer. field_multiple: Flere verdier setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: Saken ble oppdatert av en annen bruker mens du redigerte den. text_issue_conflict_resolution_cancel: Forkast alle endringen mine og vis %{link} på nytt permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Din konto er ugjenkallelig slettet. setting_unsubscribe: Tillat brukere å slette sin egen konto button_delete_my_account: Slett kontoen min text_account_destroy_confirmation: |- Er du sikker på at du ønsker å fortsette? Kontoen din vil bli ugjenkallelig slettet uten mulighet for å reaktiveres igjen. error_session_expired: Økten har gått ut på tid. Vennligst logg på igjen. text_session_expiration_settings: "Advarsel: ved å endre disse innstillingene kan aktive økter gå ut på tid, inkludert din egen." setting_session_lifetime: Øktenes makslengde setting_session_timeout: Økten er avsluttet på grunn av inaktivitet label_session_expiration: Økten er avsluttet permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: kopiert til label_copied_from: kopiert fra label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: alle label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Med underprosjekter label_cross_project_tree: Med prosjekt-tre label_cross_project_hierarchy: Med prosjekt-hierarki label_cross_project_system: Med alle prosjekter button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Totalt notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: E-post setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: All tidsbruk notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API-nøkkel setting_lost_password: Mistet passord mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Slett relasjon error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/pl.yml000066400000000000000000002277551500112024600172030ustar00rootroot00000000000000# Polish translations for Ruby on Rails # by Jacek Becela (jacek.becela@gmail.com, http://github.com/ncr) # by Krzysztof Podejma (kpodejma@customprojects.pl, http://www.customprojects.pl) pl: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%d %b" long: "%d %B %Y" day_names: [Niedziela, Poniedziałek, Wtorek, Środa, Czwartek, Piątek, Sobota] abbr_day_names: [niedz., pn., wt., śr., czw., pt., sob.] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Styczeń, Luty, Marzec, Kwiecień, Maj, Czerwiec, Lipiec, Sierpień, Wrzesień, Październik, Listopad, Grudzień] abbr_month_names: [~, sty, lut, mar, kwi, maj, cze, lip, sie, wrz, paź, lis, gru] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y, %H:%M:%S %z" time: "%H:%M" short: "%d %b, %H:%M" long: "%d %B %Y, %H:%M" am: "przed południem" pm: "po południu" datetime: distance_in_words: half_a_minute: "pół minuty" less_than_x_seconds: one: "mniej niż sekundę" few: "mniej niż %{count} sekundy" other: "mniej niż %{count} sekund" x_seconds: one: "sekundę" few: "%{count} sekundy" other: "%{count} sekund" less_than_x_minutes: one: "mniej niż minutę" few: "mniej niż %{count} minuty" other: "mniej niż %{count} minut" x_minutes: one: "minutę" few: "%{count} minuty" other: "%{count} minut" about_x_hours: one: "około godziny" other: "około %{count} godzin" x_hours: one: "1 godzina" few: "%{count} godziny" other: "%{count} godzin" x_days: one: "1 dzień" other: "%{count} dni" about_x_months: one: "około miesiąca" other: "około %{count} miesięcy" x_months: one: "1 miesiąc" few: "%{count} miesiące" other: "%{count} miesięcy" about_x_years: one: "około roku" other: "około %{count} lat" over_x_years: one: "ponad rok" few: "ponad %{count} lata" other: "ponad %{count} lat" almost_x_years: one: "prawie 1 rok" few: "prawie %{count} lata" other: "prawie %{count} lat" number: format: separator: "," delimiter: " " precision: 2 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "B" other: "B" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "i" skip_last_comma: true activerecord: errors: template: header: one: "%{model} nie został zapisany z powodu jednego błędu" other: "%{model} nie został zapisany z powodu %{count} błędów" messages: inclusion: "nie znajduje się na liście dopuszczalnych wartości" exclusion: "znajduje się na liście zabronionych wartości" invalid: "jest nieprawidłowe" confirmation: "nie zgadza się z potwierdzeniem" accepted: "musi być zaakceptowane" empty: "nie może być puste" blank: "nie może być puste" too_long: "jest za długie (maksymalnie %{count} znaków)" too_short: "jest za krótkie (minimalnie %{count} znaków)" wrong_length: "jest nieprawidłowej długości (powinna wynosić %{count} znaków)" taken: "jest już zajęte" not_a_number: "nie jest liczbą" not_a_date: "nie jest prawidłową datą" greater_than: "musi być większe niż %{count}" greater_than_or_equal_to: "musi być większe lub równe %{count}" equal_to: "musi być równe %{count}" less_than: "musi być mniejsze niż %{count}" less_than_or_equal_to: "musi być mniejsze lub równe %{count}" odd: "musi być nieparzyste" even: "musi być parzyste" greater_than_start_date: "musi być większe niż początkowa data" not_same_project: "nie należy do tego samego projektu" circular_dependency: "Ta relacja może wytworzyć zapętloną zależność" cant_link_an_issue_with_a_descendant: "Zagadnienie nie może zostać powiązane z jednym z własnych podzagadnień" earlier_than_minimum_start_date: "nie może być wcześniejsza niż %{date} z powodu poprzedzających zagadnień" not_a_regexp: "nie jest prawidłowym wyrażeniem regularnym" open_issue_with_closed_parent: "Otwarte zagadnienie nie może zostać przypisane do zamkniętego zagadnienia nadrzędnego" must_contain_uppercase: "musi zawierać wielkie litery (A-Z)" must_contain_lowercase: "musi zawierać małe litery (a-z)" must_contain_digits: "musi zawierać cyfry (0-9)" must_contain_special_chars: "musi zawierać znaki specjalne (!, $, %, ...)" domain_not_allowed: "zawiera niedozwoloną domenę (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: wybierz general_text_No: 'Nie' general_text_Yes: 'Tak' general_text_no: 'nie' general_text_yes: 'tak' general_lang_name: 'Polish (Polski)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: "Konto zostało pomyślnie zaktualizowane." notice_account_invalid_credentials: "Nieprawidłowy użytkownik lub hasło" notice_account_password_updated: "Hasło zostało pomyślnie zmienione." notice_account_wrong_password: "Nieprawidłowe hasło" notice_account_register_done: "Konto zostało pomyślnie utworzone. E-mail zawierający instrukcje aktywacji konta został wysłany na adres %{email}." notice_account_not_activated_yet: 'Jeszcze nie aktywowałeś swojego konta. Jeśli chcesz otrzymać nowy e-mail aktywacyjny, kliknij tutaj.' notice_account_locked: "Twoje konto jest zablokowane." notice_can_t_change_password: "To konto ma zewnętrzne źródło uwierzytelniania. Nie możesz zmienić hasła." notice_account_lost_email_sent: "E-mail z instrukcjami zmiany hasła został wysłany do Ciebie." notice_account_activated: "Twoje konto zostało aktywowane. Możesz się zalogować." notice_successful_create: "Utworzenie zakończone pomyślnie." notice_successful_update: "Uaktualnienie zakończone pomyślnie." notice_successful_delete: "Usunięcie zakończone pomyślnie." notice_successful_connection: "Udane nawiązanie połączenia." notice_file_not_found: "Strona, do której próbujesz się dostać, nie istnieje lub została usunięta." notice_locking_conflict: "Dane zostały zaktualizowane przez innego użytkownika." notice_not_authorized: "Nie jesteś upoważniony do oglądania tej strony." notice_not_authorized_archived_project: "Projekt, do którego próbujesz uzyskać dostęp, został zarchiwizowany." notice_email_sent: "E-mail został wysłany do %{value}" notice_email_error: "Wystąpił błąd w trakcie wysyłania wiadomości e-mail (%{value})" notice_feeds_access_key_reseted: "Twój klucz dostępu do kanału Atom został zresetowany." notice_api_access_key_reseted: "Twój klucz dostępu do API został zresetowany." notice_failed_to_save_issues: "Błąd podczas zapisu zagadnień dla %{count} z %{total} zaznaczonych: %{ids}." notice_failed_to_save_time_entries: "Błąd podczas zapisu wpisów z dziennika dla %{count} z %{total} zaznaczonych: %{ids}." notice_failed_to_save_members: "Nie można zapisać uczestników: %{errors}." notice_account_pending: "Twoje konto zostało utworzone i oczekuje na zatwierdzenie przez administratora." notice_default_data_loaded: "Domyślna konfiguracja została pomyślnie załadowana." notice_unable_delete_version: "Nie można usunąć wersji." notice_unable_delete_time_entry: "Nie można usunąć wpisu z dziennika." notice_issue_done_ratios_updated: "Uaktualnienie % wykonania zakończone pomyślnie." notice_gantt_chart_truncated: "Liczba elementów wyświetlanych na diagramie została ograniczona z powodu przekroczenia dopuszczalnego limitu (%{max})" notice_issue_successful_create: "Zagadnienie %{id} zostało utworzone." notice_issue_update_conflict: "Zagadnienie zostało zaktualizowane przez innego użytkownika, podczas gdy ty je edytowałeś." notice_account_deleted: "Twoje konto zostało trwale usunięte." notice_user_successful_create: "Utworzono użytkownika %{id}." notice_new_password_must_be_different: "Nowe hasło musi być inne niż poprzednie" notice_import_finished: "%{count} elementów zostało prawidłowo zaimportowanych" notice_import_finished_with_errors: "%{count} z %{total} elementów nie mogło zostać zaimportowanych" notice_issue_not_closable_by_open_tasks: "To zagadnienie nie może zostać zamknięte, ponieważ ma przynajmniej jedno otwarte podzagadnienie." notice_issue_not_closable_by_blocking_issue: "To zagadnienie nie może zostać zamknięte, ponieważ jest blokowane przez przynajmniej jedno otwarte zagadnienie." notice_issue_not_reopenable_by_closed_parent_issue: "To zagadnienie nie może zostać ponownie otwarte, ponieważ zagadnienie nadrzędne jest zamknięte." notice_invalid_watcher: "Nieprawidłowy obserwator: Użytkownik nie otrzyma żadnych powiadomień, ponieważ nie posiada dostępu do tego obiektu." error_can_t_load_default_data: "Domyślna konfiguracja nie może być załadowana: %{value}" error_scm_not_found: Obiekt lub wersja nie zostały znalezione w repozytorium. error_scm_command_failed: "Wystąpił błąd przy próbie dostępu do repozytorium: %{value}" error_scm_annotate: Wpis nie istnieje lub nie można wyświetlić dla niego adnotacji. error_scm_annotate_big_text_file: Nie można wyświetlić adnotacji dla tego wpisu, ponieważ przekracza on dozwoloną wielkość pliku tekstowego. error_issue_not_found_in_project: Zagadnienie nie zostało znalezione lub nie należy do tego projektu error_no_tracker_in_project: Projekt nie posiada powiązanych typów zagadnień. Sprawdź ustawienia projektu. error_no_default_issue_status: 'Nie zdefiniowano domyślnego statusu zagadnień. Sprawdź konfigurację (Przejdź do "Administracja -> Statusy zagadnień").' error_can_not_delete_custom_field: Nie można usunąć tego pola error_can_not_delete_tracker_html: Ten typ przypisany jest do części zagadnień i nie może zostać usunięty.

    The following projects have issues with this tracker:
    %{projects}

    error_can_not_remove_role: Ta rola przypisana jest niektórym użytkownikom i nie może zostać usuniÄ™ta. error_can_not_reopen_issue_on_closed_version: Zagadnienie przydzielone do zakoÅ„czonej wersji nie może zostać ponownie otwarte error_can_not_archive_project: Ten projekt nie może zostać zarchiwizowany error_issue_done_ratios_not_updated: "% wykonania zagadnienia nie zostaÅ‚ uaktualniony." error_workflow_copy_source: ProszÄ™ wybrać źródÅ‚owy typ zagadnienia lub rolÄ™ error_workflow_copy_target: ProszÄ™ wybrać docelowe typy zagadnieÅ„ i role error_unable_delete_issue_status: "Nie można usunąć statusu zagadnienia (%{value})" error_unable_to_connect: "Nie można połączyć (%{value})" error_attachments_too_many: "Ten plik nie może zostać wysÅ‚any, ponieważ przekracza maksymalnÄ… liczbÄ™ plików, jakie mogÄ… być jednoczeÅ›nie załączone (%{max_number_of_files})" error_attachment_too_big: "Plik nie może być przesÅ‚any, ponieważ przekracza maksymalny dopuszczalny rozmiar (%{max_size})" error_bulk_download_size_too_big: "Te załączniki nie mogÄ… być masowo pobrane, ponieważ ich rozmiar przekracza dozwolonÄ… wielkość (%{max_size})" error_session_expired: Twoja sesja wygasÅ‚a. Zaloguj siÄ™ ponownie. error_token_expired: Ten link do resetu hasÅ‚a już wygasÅ‚, spróbuj ponownie. warning_attachments_not_saved: "%{count} załączników nie zostaÅ‚o zapisanych." error_password_expired: Twoje hasÅ‚o wygasÅ‚o lub administrator wymaga jego zmiany. error_invalid_file_encoding: "Plik nie stosuje kodowania %{encoding}" error_invalid_csv_file_or_settings: "Plik nie jest plikiem CSV lub nie pasuje do ustawieÅ„ poniżej (%{value})" error_can_not_read_import_file: WystÄ…piÅ‚ błąd podczas czytania pliku do importu error_no_data_in_file: "Ten plik nie zawiera żadnych danych" error_attachment_extension_not_allowed: "Rozszerzenie %{extension} nie jest dozwolone dla załączników" error_ldap_bind_credentials: NieprawidÅ‚owe konto/hasÅ‚o LDAP error_no_tracker_allowed_for_new_issue_in_project: Ten projekt nie zawiera żadnych typów zagadnieÅ„, dla których mógÅ‚byÅ› utworzyć zagadnienie error_no_projects_with_tracker_allowed_for_new_issue: Nie ma projektów z typami zagadnieÅ„, dla których mógÅ‚byÅ› utworzyć zagadnienie error_move_of_child_not_possible: "Podzagadnienie %{child} nie mogÅ‚o być przeniesione do nowego projektu: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Nie można przypisać przepracowanego czasu do zagadnienia, które ma zostać usuniÄ™te warning_fields_cleared_on_bulk_edit: Zmiany bÄ™dÄ… skutkowaÅ‚y automatycznym usuniÄ™ciem wartoÅ›ci jednego lub wiÄ™cej pól z wybranych obiektów error_exceeds_maximum_hours_per_day: "Nie można zapisać wiÄ™cej niż %{max_hours} godzin dla tego samego dnia (%{logged_hours} godzin już zostaÅ‚o zapisanych)" error_can_not_delete_auth_source: Ten tryb uwierzytelniania jest w użyciu i nie może zostać usuniÄ™ty. error_spent_on_future_date: Nie można zapisać czasu dla daty z przyszÅ‚oÅ›ci error_not_allowed_to_log_time_for_other_users: Nie jesteÅ› upoważniony do zapisywania czasu dla innych użytkowników error_can_not_execute_macro_html: "WystÄ…piÅ‚ błąd podczas wykonywania makra %{name} (%{error})" error_macro_does_not_accept_block: "To makro nie akceptuje bloku tekstu" error_childpages_macro_no_argument: "Bez argumentu to makro może być wywoÅ‚ane tylko na stronach wiki" error_circular_inclusion: "Circular inclusion detected" error_page_not_found: "Podana strona nie istnieje" error_filename_required: "Nazwa pliku jest wymagana" error_invalid_size_parameter: "Invalid size parameter" error_attachment_not_found: "Załącznik %{name} nie istnieje" error_invalid_authenticity_token: "NieprawidÅ‚owy token autentycznoÅ›ci formularza." error_query_statement_invalid: "WystÄ…piÅ‚ błąd podczas wykonywania tej kwerendy i zostaÅ‚ on zapisany w dzienniku. Poinformuj o tym błędzie administratora Redmine." mail_subject_lost_password: "Twoje hasÅ‚o do %{value}" mail_body_lost_password: "W celu zmiany swojego hasÅ‚a użyj poniższego odnoÅ›nika:" mail_body_lost_password_validity: PamiÄ™taj o tym, że korzystajÄ…c z tego linku możesz zmienić hasÅ‚o tylko raz. mail_subject_register: "Aktywacja konta w %{value}" mail_body_register: "W celu aktywacji Twojego konta, użyj poniższego odnoÅ›nika:" mail_body_account_information_external: "Możesz użyć Twojego konta %{value} do zalogowania." mail_body_account_information: Twoje konto mail_subject_account_activation_request: "Zapytanie aktywacyjne dla konta %{value}" mail_body_account_activation_request: "Zarejestrowano nowego użytkownika: (%{value}). Konto oczekuje na Twoje zatwierdzenie:" mail_subject_reminder: "Zagadnienia (%{count}) do obsÅ‚użenia w ciÄ…gu nastÄ™pnych %{days} dni" mail_body_reminder: "Wykaz przypisanych do Ciebie zagadnieÅ„ (%{count}), których termin dobiega koÅ„ca w ciÄ…gu nastÄ™pnych %{days} dni:" mail_subject_wiki_content_added: 'Strona wiki "%{id}" zostaÅ‚a dodana' mail_body_wiki_content_added: 'Strona wiki "%{id}" zostaÅ‚a dodana przez %{author}.' mail_subject_wiki_content_updated: 'Strona wiki "%{id}" zostaÅ‚a uaktualniona' mail_body_wiki_content_updated: 'Strona wiki "%{id}" zostaÅ‚a uaktualniona przez %{author}.' mail_subject_security_notification: Powiadomienie bezpieczeÅ„stwa mail_body_security_notification_change: "%{field} zostaÅ‚o zmienione." mail_body_security_notification_change_to: "%{field} zostaÅ‚o zmienione na %{value}." mail_body_security_notification_add: "%{field} %{value} zostaÅ‚o dodane." mail_body_security_notification_remove: "%{field} %{value} zostaÅ‚o usuniÄ™te." mail_body_security_notification_notify_enabled: "Od teraz adres e-mail %{value} otrzymuje powiadomienia." mail_body_security_notification_notify_disabled: "Adres e-mail %{value} nie otrzymuje już powiadomieÅ„." mail_body_settings_updated: "Poniższe ustawienia zostaÅ‚y zmienione:" mail_body_password_updated: Twoje hasÅ‚o zostaÅ‚o zmienione. mail_destroy_project_failed: Nie udaÅ‚o siÄ™ usunąć projektu %{value}. mail_destroy_project_successful: Projekt %{value} zostaÅ‚ pomyÅ›lnie usuniÄ™ty. mail_destroy_project_with_subprojects_successful: Projekt %{value} oraz jego podprojekty zostaÅ‚y pomyÅ›lnie usuniÄ™te. field_name: Nazwa field_description: Opis field_summary: Podsumowanie field_is_required: Wymagane field_firstname: ImiÄ™ field_lastname: Nazwisko field_mail: E-mail field_address: E-mail field_filename: Plik field_filesize: Rozmiar field_downloads: PobraÅ„ field_author: Autor field_created_on: Data utworzenia field_updated_on: Data modyfikacji field_closed_on: Data zamkniÄ™cia field_field_format: Format field_is_for_all: Dla wszystkich projektów field_possible_values: Możliwe wartoÅ›ci field_regexp: Wyrażenie regularne field_min_length: Minimalna dÅ‚ugość field_max_length: Maksymalna dÅ‚ugość field_value: Wartość field_category: Kategoria field_title: TytuÅ‚ field_project: Projekt field_issue: Zagadnienie field_is_member_of_group: CzÅ‚onek grupy field_status: Status field_notes: Notatki field_is_closed: Zagadnienie zamkniÄ™te field_is_default: DomyÅ›lna wartość field_tracker: Typ zagadnienia field_subject: Temat field_due_date: Data oddania field_assigned_to: Przypisany do field_priority: Priorytet field_fixed_version: Wersja docelowa field_user: Użytkownik field_principal: Użytkownik lub grupa field_role: Rola field_homepage: Strona www field_is_public: Publiczny field_parent: Projekt nadrzÄ™dny field_is_in_roadmap: Zagadnienie pokazywane na mapie field_login: Login field_mail_notification: Powiadomienia e-mail field_admin: Administrator field_last_login_on: Ostatnie logowanie field_passwd_changed_on: Ostatnia zmiana hasÅ‚a field_language: JÄ™zyk field_effective_date: Data field_password: HasÅ‚o field_current_password: Obecne hasÅ‚o field_new_password: Nowe hasÅ‚o field_password_confirmation: Potwierdzenie field_twofa_scheme: Rodzaj uwierzytelniania dwuskÅ‚adnikowego field_version: Wersja field_type: Typ field_host: Host field_port: Port field_account: Konto field_base_dn: Bazowe DN field_attr_login: Login atrybut field_attr_firstname: ImiÄ™ atrybut field_attr_lastname: Nazwisko atrybut field_attr_mail: E-mail atrybut field_onthefly: Tworzenie użytkownika w locie field_start_date: Data rozpoczÄ™cia field_done_ratio: "% Wykonania" field_auth_source: Tryb uwierzytelniania field_hide_mail: Ukryj mój adres e-mail field_comments: Komentarz field_url: URL field_start_page: Strona startowa field_subproject: Podprojekt field_hours: Godzin field_activity: Aktywność field_spent_on: Data field_identifier: Identyfikator field_is_filter: Atrybut filtrowania field_issue_to: PowiÄ…zane zagadnienie field_delay: Opóźnienie field_assignable: Zagadnienia mogÄ… być przypisane do tej roli field_redirect_existing_links: Przekierowanie istniejÄ…cych odnoÅ›ników field_estimated_hours: Szacowany czas field_column_names: Nazwy kolumn field_time_entries: Dziennik field_time_zone: Strefa czasowa field_searchable: Przeszukiwalne field_default_value: DomyÅ›lna wartość field_comments_sorting: Pokazuj komentarze field_parent_title: Strona rodzica field_editable: Edytowalne field_watcher: Obserwator field_content: Treść field_group_by: Grupuj wyniki wg field_sharing: Współdzielenie field_parent_issue: Zagadnienie nadrzÄ™dne field_parent_issue_subject: TytuÅ‚ zagadnienia nadrzÄ™dnego field_member_of_group: Grupa osoby przypisanej field_assigned_to_role: Rola osoby przypisanej field_text: Pole tekstowe field_visible: Widoczne field_warn_on_leaving_unsaved: Ostrzegaj mnie, gdy opuszczam stronÄ™ z niezapisanym tekstem field_issues_visibility: Widoczność zagadnieÅ„ field_is_private: Prywatne field_commit_logs_encoding: Kodowanie komentarzy commitów field_scm_path_encoding: Kodowanie Å›cieżki field_path_to_repository: Åšcieżka do repozytorium field_root_directory: Główny katalog field_cvsroot: CVSROOT field_cvs_module: ModuÅ‚ field_repository_is_default: Główne repozytorium field_multiple: Wielokrotne wartoÅ›ci field_auth_source_ldap_filter: Filtr LDAP field_core_fields: Pola standardowe field_timeout: Limit czasu (w sekundach) field_board_parent: Forum nadrzÄ™dne field_private_notes: Prywatne notatki field_inherit_members: Dziedziczenie uczestników field_generate_password: Wygeneruj hasÅ‚o field_must_change_passwd: Musi zmienić hasÅ‚o przy nastÄ™pnym logowaniu field_default_status: DomyÅ›lny status field_users_visibility: Widoczność użytkowników field_time_entries_visibility: Widoczność przepracowanego czasu field_total_estimated_hours: CaÅ‚kowity szacowany czas field_default_version: DomyÅ›lna wersja field_remote_ip: Adres IP field_textarea_font: Czcionka wykorzystywana w polach tekstowych field_updated_by: Zaktualizowane przez field_last_updated_by: Ostatnio zaktualizowane przez field_full_width_layout: UkÅ‚ad strony na całą szerokość field_digest: Suma kontrolna field_default_assigned_to: DomyÅ›lnie przypisana osoba field_recently_used_projects: 'Liczba ostatnich projektów widocznych polu "skocz do projektu"' field_history_default_tab: DomyÅ›lna zakÅ‚adka historii zagadnienia field_unique_id: Unikalne ID field_toolbar_language_options: Lista jÄ™zyków z podÅ›wietlaniem skÅ‚adni dostÄ™pna w toolbarze field_twofa_required: Wymagaj dwuskÅ‚adnikowego uwierzytelnia field_default_issue_query: DomyÅ›lna kwerenda dla listy zagadnieÅ„ field_default_project_query: DomyÅ›lna kwerenda dla listy projektów field_default_time_entry_activity: DomyÅ›lna aktywność dla wpisów dziennika field_any_searchable: Dowolny przeszukiwalny tekst setting_app_title: TytuÅ‚ aplikacji setting_welcome_text: Tekst powitalny setting_default_language: DomyÅ›lny jÄ™zyk setting_login_required: Wymagane zalogowanie setting_self_registration: Samodzielna rejestracja użytkowników setting_show_custom_fields_on_registration: Pokazuj niestandardowe pola podczas rejestracji setting_attachment_max_size: Maksymalny rozmiar załącznika setting_bulk_download_max_size: Maksymalna wielkość załączników podczas masowego pobierania setting_issues_export_limit: Limit eksportu zagadnieÅ„ setting_mail_from: Adres wysyÅ‚ki e-mail setting_plain_text_mail: tylko tekst (bez HTML) setting_host_name: Nazwa hosta i Å›cieżka setting_text_formatting: Formatowanie tekstu setting_wiki_compression: Kompresja historii Wiki setting_feeds_limit: Limit elementów w kanale Atom setting_default_projects_public: Nowe projekty sÄ… domyÅ›lnie publiczne setting_autofetch_changesets: Automatyczne pobieranie zmian setting_sys_api_enabled: Włączenie WS do zarzÄ…dzania repozytorium setting_commit_ref_keywords: SÅ‚owa tworzÄ…ce powiÄ…zania setting_commit_fix_keywords: SÅ‚owo zmieniajÄ…ce status setting_autologin: Automatyczne logowanie setting_date_format: Format daty setting_time_format: Format czasu setting_timespan_format: Format przedziaÅ‚u czasu setting_cross_project_issue_relations: Zezwól na powiÄ…zania zagadnieÅ„ miÄ™dzy projektami setting_cross_project_subtasks: Zezwól na dzielenie podzagadnieÅ„ miÄ™dzy projektami setting_issue_list_default_columns: DomyÅ›lne kolumny wyÅ›wietlane na liÅ›cie zagadnieÅ„ setting_repositories_encodings: Kodowanie znaków załączników i repozytoriów setting_emails_header: Nagłówek e-mail setting_emails_footer: Stopka e-mail setting_protocol: Protokół setting_per_page_options: Opcje iloÅ›ci obiektów na stronie setting_user_format: Format wyÅ›wietlania użytkownika setting_activity_days_default: Dni wyÅ›wietlane w aktywnoÅ›ci projektu setting_display_subprojects_issues: DomyÅ›lnie pokazuj zagadnienia podprojektów w głównym projekcie setting_enabled_scm: DostÄ™pne SCM setting_mail_handler_body_delimiters: Przycinaj e-maile po jednej z tych linii setting_mail_handler_enable_regex: Włącz wyrażenia regularne setting_mail_handler_api_enabled: Uaktywnij usÅ‚ugi sieciowe (WebServices) dla poczty przychodzÄ…cej setting_mail_handler_api_key: Klucz API setting_mail_handler_preferred_body_part: Preferowana cześć wiadomoÅ›ci multipart (HTML) setting_sys_api_key: Klucz API setting_sequential_project_identifiers: Generuj sekwencyjne identyfikatory projektów setting_gravatar_enabled: Używaj ikon użytkowników Gravatar setting_gravatar_default: DomyÅ›lny obraz Gravatar setting_diff_max_lines_displayed: Maksymalna liczba linii różnic do pokazania setting_file_max_size_displayed: Maksymalny rozmiar plików tekstowych osadzanych w stronie setting_repository_log_display_limit: Maksymalna liczba rewizji pokazywanych w logu pliku setting_password_max_age: Wymagaj zmiany hasÅ‚a po setting_password_min_length: Minimalna dÅ‚ugość hasÅ‚a setting_password_required_char_classes: Wymagane rodzaje znaków w haÅ›le setting_lost_password: Pozwól zresetować hasÅ‚o przez e-mail setting_new_project_user_role_id: Rola nadawana twórcom projektów, którzy nie posiadajÄ… uprawnieÅ„ administratora setting_default_projects_modules: DomyÅ›lnie włączone moduÅ‚y dla nowo tworzonych projektów setting_issue_done_ratio: Obliczaj postÄ™p realizacji zagadnieÅ„ za pomocÄ… setting_issue_done_ratio_issue_field: "% Wykonania zagadnienia" setting_issue_done_ratio_issue_status: Statusu zagadnienia setting_start_of_week: Pierwszy dzieÅ„ tygodnia setting_rest_api_enabled: Uaktywnij usÅ‚ugÄ™ sieciowÄ… REST setting_cache_formatted_text: Buforuj sformatowany tekst setting_default_notification_option: DomyÅ›lna opcja powiadomieÅ„ setting_commit_logtime_enabled: Włącz Å›ledzenie czasu setting_commit_logtime_activity_id: Aktywność dla Å›ledzonego czasu setting_gantt_items_limit: Maksymalna liczba elementów wyÅ›wietlanych na diagramie Gantta setting_gantt_months_limit: Maksymalna liczba miesiÄ™cy wyÅ›wietlanych na diagramie Gantta setting_issue_group_assignment: Zezwól przypisywać zagadnienia do grup setting_default_issue_start_date_to_creation_date: Użyj bieżącej daty jako daty rozpoczÄ™cia nowych zagadnieÅ„ setting_commit_cross_project_ref: Zezwól na odwoÅ‚ania do innych projektów i zamykanie zagadnieÅ„ innych projektów setting_unsubscribe: Zezwól użytkownikom usuwać swoje konta setting_session_lifetime: Maksymalny czas życia sesji setting_session_timeout: Maksymalny czas życia nieaktywnej sesji setting_thumbnails_enabled: WyÅ›wietlaj miniatury załączników setting_thumbnails_size: Rozmiar miniatury (w pikselach) setting_non_working_week_days: Dni nie-robocze setting_jsonp_enabled: Włącz wsparcie dla JSONP setting_default_projects_tracker_ids: DomyÅ›lne typy zagadnieÅ„ dla nowych projektów setting_mail_handler_excluded_filenames: Wyklucz załączniki wg nazwy setting_force_default_language_for_anonymous: WymuÅ› domyÅ›lny jÄ™zyk dla anonimowych użytkowników setting_force_default_language_for_loggedin: WymuÅ› domyÅ›lny jÄ™zyk dla zalogowanych użytkowników setting_link_copied_issue: PowiÄ…zywanie zagadnieÅ„ podczas kopiowania setting_max_additional_emails: Maksymalna liczba dodatkowych adresów e-mail setting_email_domains_allowed: Dozwolone domeny adresów e-mail setting_email_domains_denied: Niedozwolone domeny adresów e-mail setting_search_results_per_page: Limit wyników wyszukiwania na stronie setting_attachment_extensions_allowed: Dozwolone rozszerzenia setting_attachment_extensions_denied: Niedozwolone rozszerzenia setting_new_item_menu_tab: ZakÅ‚adka w menu do tworzenia nowych obiektów setting_commit_logs_formatting: Zastosuj formatowanie testu do komentarzy dla commitów setting_timelog_required_fields: Wymagane pola dla wpisów w dzienniku setting_close_duplicate_issues: Automatycznie zamykaj zduplikowane zagadnienia setting_time_entry_list_defaults: DomyÅ›lne kolumny wyÅ›wietlane na liÅ›cie przepracowanego czasu setting_timelog_accept_0_hours: Akceptuj wpisy z zerowÄ… liczba godzin setting_timelog_max_hours_per_day: Maksymalna liczba godzin, jakie użytkownik może wpisać dla jednego dnia setting_timelog_accept_future_dates: Akceptuj wpisy dla dat z przyszÅ‚oÅ›ci setting_show_status_changes_in_mail_subject: Pokaż zmianÄ™ statusu zagadnienia w tytule wiadomoÅ›ci e-mail setting_project_list_defaults: DomyÅ›lne kolumny wyÅ›wietlane na liÅ›cie projektów setting_twofa: Uwierzytelnianie dwuskÅ‚adnikowe permission_add_project: Tworzenie projektu permission_add_subprojects: Tworzenie podprojektów permission_edit_project: Edycja projektów permission_close_project: Zamykanie/otwieranie projektów permission_delete_project: Usuwanie projektów permission_select_project_publicity: Ustawianie projektu jako prywatny/publiczny permission_select_project_modules: Wybieranie modułów projektu permission_manage_members: ZarzÄ…dzanie uczestnikami permission_manage_project_activities: ZarzÄ…dzanie aktywnoÅ›ciami projektu permission_manage_versions: ZarzÄ…dzanie wersjami permission_manage_categories: ZarzÄ…dzanie kategoriami zagadnieÅ„ permission_view_issues: PrzeglÄ…danie zagadnieÅ„ permission_add_issues: Dodawanie zagadnieÅ„ permission_edit_issues: Edycja zagadnieÅ„ permission_edit_own_issues: Edycja swoich wÅ‚asnych zagadnieÅ„ permission_copy_issues: Kopiowanie zagadnieÅ„ permission_manage_issue_relations: ZarzÄ…dzanie powiÄ…zaniami zagadnieÅ„ permission_set_issues_private: Ustawianie zagadnieÅ„ jako prywatne/publiczne permission_set_own_issues_private: Ustawianie wÅ‚asnych zagadnieÅ„ jako prywatne/publiczne permission_add_issue_notes: Dodawanie notatek permission_edit_issue_notes: Edycja notatek permission_edit_own_issue_notes: Edycja wÅ‚asnych notatek permission_view_private_notes: PodglÄ…d prywatnych notatek permission_set_notes_private: Ustawianie notatek jako prywatnych permission_delete_issues: Usuwanie zagadnieÅ„ permission_manage_public_queries: ZarzÄ…dzanie publicznymi kwerendami permission_save_queries: Zapisywanie kwerend permission_view_gantt: PodglÄ…d diagramu Gantta permission_view_calendar: PodglÄ…d kalendarza permission_view_issue_watchers: PodglÄ…d listy obserwatorów permission_add_issue_watchers: Dodawanie obserwatorów permission_delete_issue_watchers: Usuwanie obserwatorów permission_log_time: Zapisywanie przepracowanego czasu permission_view_time_entries: PodglÄ…d przepracowanego czasu permission_edit_time_entries: Edycja wpisów dziennika permission_edit_own_time_entries: Edycja wÅ‚asnego dziennika permission_view_news: PrzeglÄ…danie komunikatów permission_manage_news: ZarzÄ…dzanie komunikatami permission_comment_news: Komentowanie komunikatów permission_view_documents: PodglÄ…d dokumentów permission_add_documents: Dodawanie dokumentów permission_edit_documents: Edycja dokumentów permission_delete_documents: Usuwanie dokumentów permission_manage_files: ZarzÄ…dzanie plikami permission_view_files: PodglÄ…d plików permission_manage_wiki: ZarzÄ…dzanie wiki permission_rename_wiki_pages: Zmiana nazw stron wiki permission_delete_wiki_pages: Usuwanie stron wiki permission_view_wiki_pages: PodglÄ…d wiki permission_view_wiki_edits: PodglÄ…d historii wiki permission_edit_wiki_pages: Edycja stron wiki permission_delete_wiki_pages_attachments: Usuwanie załączników permission_view_wiki_page_watchers: PodglÄ…d listy obserwatorów stron wiki permission_add_wiki_page_watchers: Dodawanie obserwatorów stron wiki permission_delete_wiki_page_watchers: Usuwanie obserwatorów stron wiki permission_protect_wiki_pages: Blokowanie stron wiki permission_manage_repository: ZarzÄ…dzanie repozytorium permission_browse_repository: PrzeglÄ…danie repozytorium permission_view_changesets: PodglÄ…d zmian permission_commit_access: Wykonywanie zatwierdzeÅ„ permission_manage_boards: ZarzÄ…dzanie forami permission_view_messages: PodglÄ…d wiadomoÅ›ci permission_add_messages: Dodawanie wiadomoÅ›ci permission_edit_messages: Edycja wiadomoÅ›ci permission_edit_own_messages: Edycja wÅ‚asnych wiadomoÅ›ci permission_delete_messages: Usuwanie wiadomoÅ›ci permission_delete_own_messages: Usuwanie wÅ‚asnych wiadomoÅ›ci permission_view_message_watchers: PrzeglÄ…danie listy obserwatorów wiadomoÅ›ci permission_add_message_watchers: Dodawanie obserwatorów wiadomoÅ›ci permission_delete_message_watchers: Usuwanie obserwatorów wiadomoÅ›ci permission_export_wiki_pages: Eksport stron wiki permission_manage_subtasks: ZarzÄ…dzanie podzagadnieniami permission_manage_related_issues: ZarzÄ…dzanie powiÄ…zanymi zagadnieniami permission_import_issues: Importowanie zagadnieÅ„ permission_log_time_for_other_users: Zapisywanie przepracowanego czasu dla innych użytkowników project_module_issue_tracking: Åšledzenie zagadnieÅ„ project_module_time_tracking: Åšledzenie czasu pracy project_module_news: Komunikaty project_module_documents: Dokumenty project_module_files: Pliki project_module_wiki: Wiki project_module_repository: Repozytorium project_module_boards: Fora project_module_calendar: Kalendarz project_module_gantt: Diagram Gantta label_user: Użytkownik label_user_plural: Użytkownicy label_user_new: Nowy użytkownik label_user_anonymous: Anonimowy label_project: Projekt label_project_new: Nowy projekt label_project_plural: Projekty label_x_projects: zero: brak projektów one: 1 projekt few: "%{count} projekty" other: "%{count} projektów" label_project_all: Wszystkie projekty label_project_latest: Ostatnie projekty label_issue: Zagadnienie label_issue_new: Nowe zagadnienie label_issue_plural: Zagadnienia label_issue_view_all: Zobacz wszystkie zagadnienia label_issues_by: "Zagadnienia wprowadzone przez %{value}" label_issue_added: Dodano zagadnienie label_issue_updated: Uaktualniono zagadnienie label_issue_note_added: Dodano notatkÄ™ label_issue_status_updated: Uaktualniono status label_issue_assigned_to_updated: Uaktualniono osobÄ™ przypisanÄ… label_issue_priority_updated: Uaktualniono priorytet label_issue_fixed_version_updated: Uaktualniono wersjÄ™ docelowÄ… label_document: Dokument label_document_new: Nowy dokument label_document_plural: Dokumenty label_document_added: Dodano dokument label_role: Rola label_role_plural: Role label_role_new: Nowa rola label_role_and_permissions: Role i uprawnienia label_role_anonymous: Anonimowy label_role_non_member: Bez roli label_member: Uczestnik label_member_new: Nowy uczestnik label_member_plural: Uczestnicy label_tracker: Typ zagadnienia label_tracker_plural: Typy zagadnieÅ„ label_tracker_all: Wszystkie typy zagadnieÅ„ label_tracker_new: Nowy typ zagadnienia label_workflow: PrzepÅ‚yw pracy label_issue_status: Status zagadnienia label_issue_status_plural: Statusy zagadnieÅ„ label_issue_status_new: Nowy status label_issue_category: Kategoria zagadnienia label_issue_category_plural: Kategorie zagadnieÅ„ label_issue_category_new: Nowa kategoria label_custom_field: Pole niestandardowe label_custom_field_plural: Pola niestandardowe label_custom_field_new: Nowe pole niestandardowe label_enumerations: Wyliczenia label_enumeration_new: Nowa wartość label_information: Informacja label_information_plural: Informacje label_register: Rejestracja label_password_lost: Zapomniane hasÅ‚o label_password_required: Potwierdź hasÅ‚o aby kontynuować label_home: Główna label_my_page: Moja strona label_my_account: Moje konto label_my_projects: Moje projekty label_administration: Administracja label_login: Zaloguj siÄ™ label_logout: Wyloguj siÄ™ label_help: Pomoc label_reported_issues: Wprowadzone zagadnienia label_assigned_issues: Przypisane zagadnienia label_assigned_to_me_issues: Zagadnienia przypisane do mnie label_updated_issues: Zaktualizowane zagadnienia label_registered_on: Zarejestrowany label_activity: Aktywność label_user_activity: "Aktywność: %{value}" label_new: Nowy label_logged_as: Zalogowany jako label_environment: Åšrodowisko label_authentication: Uwierzytelnianie label_auth_source: Tryb uwierzytelniania label_auth_source_new: Nowy tryb uwierzytelniania label_auth_source_plural: Tryby uwierzytelniania label_subproject_plural: Podprojekty label_subproject_new: Nowy podprojekt label_and_its_subprojects: "%{value} i podprojekty" label_min_max_length: Min - Maks dÅ‚ugość label_list: Lista label_date: Data label_integer: Liczba caÅ‚kowita label_float: Liczba zmiennoprzecinkowa label_boolean: Wartość logiczna label_string: Tekst label_text: DÅ‚ugi tekst label_attribute: Atrybut label_attribute_plural: Atrybuty label_no_data: Brak danych do pokazania label_no_preview: PodglÄ…d nie jest dostÄ™pny label_no_preview_alternative_html: "PodglÄ…d nie jest dostÄ™pny. Zamiast tego %{link} plik." label_no_preview_download: pobierz label_change_status: Status zmian label_history: Historia label_attachment: Plik label_attachment_new: Nowy plik label_attachment_delete: UsuÅ„ plik label_attachment_plural: Pliki label_file_added: Dodano plik label_attachment_description: Opis pliku label_report: Raport label_report_plural: Raporty label_news: Komunikat label_news_new: Dodaj komunikat label_news_plural: Komunikaty label_news_latest: Ostatnie komunikaty label_news_view_all: Pokaż wszystkie komunikaty label_news_added: Dodano komunikat label_news_comment_added: Dodano komentarz do komunikatu label_settings: Ustawienia label_overview: PrzeglÄ…d label_version: Wersja label_version_new: Nowa wersja label_version_plural: Wersje label_version_and_files: "Wersje (%{count}) oraz pliki" label_close_versions: Zamknij ukoÅ„czone wersje label_confirmation: Potwierdzenie label_export_to: "Eksportuj do:" label_read: Czytanie... label_public_projects: Projekty publiczne label_open_issues: otwarte label_open_issues_plural: otwarte label_closed_issues: zamkniÄ™te label_closed_issues_plural: zamkniÄ™te label_x_open_issues_abbr: zero: 0 otwartych one: 1 otwarty few: "%{count} otwarte" other: "%{count} otwartych" label_x_closed_issues_abbr: zero: 0 zamkniÄ™tych one: 1 zamkniÄ™ty few: "%{count} zamkniÄ™te" other: "%{count} zamkniÄ™tych" label_x_issues: zero: 0 zagadnieÅ„ one: 1 zagadnienie few: "%{count} zagadnienia" other: "%{count} zagadnieÅ„" label_total: Ogółem label_total_plural: Ogółem label_total_time: Ogółem label_permissions: Uprawnienia label_current_status: Obecny status label_new_statuses_allowed: Dozwolone nowe statusy label_all: wszystko label_any: dowolne label_none: brak label_nobody: nikt label_next: NastÄ™pne label_previous: Poprzednie label_used_by: Używane przez label_details: Szczegóły label_add_note: Dodaj notatkÄ™ label_calendar: Kalendarz label_months_from: miesiÄ…ce od label_gantt: Gantt label_internal: WewnÄ™trzny label_last_changes: "ostatnie %{count} zmian" label_change_view_all: Pokaż wszystkie zmiany label_comment: Komentarz label_comment_plural: Komentarze label_x_comments: zero: brak komentarzy one: 1 komentarz few: "%{count} komentarze" other: "%{count} komentarzy" label_comment_add: Dodaj komentarz label_comment_added: Komentarz dodany label_comment_delete: UsuÅ„ komentarze label_query: Kwerenda label_query_plural: Kwerendy label_query_new: Nowa kwerenda label_my_queries: Moje kwerendy label_filter_add: Dodaj filtr label_filter_plural: Filtry label_equals: równa siÄ™ label_not_equals: różni siÄ™ label_in_less_than: mniejsze niż label_in_more_than: wiÄ™ksze niż label_in_the_next_days: w ciÄ…gu nastÄ™pnych label_in_the_past_days: w ciÄ…gu poprzednich label_greater_or_equal: ">=" label_less_or_equal: "<=" label_between: pomiÄ™dzy label_in: w label_today: dzisiaj label_yesterday: wczoraj label_tomorrow: jutro label_this_week: ten tydzieÅ„ label_last_week: ostatni tydzieÅ„ label_next_week: nastÄ™pny tydzieÅ„ label_last_n_weeks: "ostatnie %{count} tygodnie" label_last_n_days: "ostatnie %{count} dni" label_this_month: ten miesiÄ…c label_last_month: ostatni miesiÄ…c label_next_month: nastÄ™pny miesiÄ…c label_this_year: ten rok label_date_range: Zakres dat label_less_than_ago: mniej niż dni temu label_more_than_ago: wiÄ™cej niż dni temu label_ago: dni temu label_contains: zawiera label_contains_any_of: zawiera dowolne z label_not_contains: nie zawiera label_starts_with: rozpoczyna siÄ™ od label_ends_with: koÅ„czy siÄ™ na label_any_issues_in_project: dowolne zagadnienie w projekcie label_any_issues_not_in_project: dowolne zagadnienie w innym projekcie label_no_issues_in_project: brak zagadnieÅ„ w projekcie label_any_open_issues: dowolne otwarte zagadnienie label_no_open_issues: brak otwartych zagadnieÅ„ label_day_plural: dni label_repository: Repozytorium label_repository_new: Nowe repozytorium label_repository_plural: Repozytoria label_branch: Branch label_tag: Tag label_revision: Rewizja label_revision_plural: Rewizje label_revision_id: "Rewizja %{value}" label_associated_revisions: Skojarzone rewizje label_added: dodane label_modified: zmodyfikowane label_copied: skopiowano label_renamed: zmieniono nazwÄ™ label_deleted: usuniÄ™te label_latest_revision: Najnowsza rewizja label_latest_revision_plural: Najnowsze rewizje label_view_revisions: Pokaż rewizje label_view_all_revisions: Pokaż wszystkie rewizje label_view_previous_annotation: Pokaż adnotacje dla wersji przed tÄ… zmianÄ… label_x_revisions: "%{count} rewizji" label_max_size: Maksymalny rozmiar label_roadmap: Mapa label_roadmap_due_in: "Termin za %{value}" label_roadmap_overdue: "%{value} spóźnienia" label_roadmap_no_issues: Brak zagadnieÅ„ dla tej wersji label_search: Szukaj label_result_plural: Rezultatów label_all_words: Wszystkie sÅ‚owa label_wiki: Wiki label_wiki_edit: Edycja wiki label_wiki_edit_plural: Edycje wiki label_wiki_page: Strona wiki label_wiki_page_plural: Strony wiki label_wiki_page_new: Nowa strona wiki label_index_by_title: Indeks wg tytuÅ‚u label_index_by_date: Indeks wg daty label_current_version: Obecna wersja label_preview: PodglÄ…d label_feed_plural: KanaÅ‚y label_changes_details: Szczegóły wszystkich zmian label_issue_tracking: Åšledzenie zagadnieÅ„ label_spent_time: Przepracowany czas label_total_spent_time: Przepracowany czas label_f_hour: "%{value} godzina" label_f_hour_plural: "%{value} godzin" label_f_hour_short: "%{value} h" label_time_tracking: Åšledzenie czasu pracy label_change_plural: Zmiany label_statistics: Statystyki label_commits_per_month: Commity wedÅ‚ug miesiÄ™cy label_commits_per_author: Commity wedÅ‚ug autorów label_diff: różnice label_view_diff: Pokaż różnice label_diff_inline: w linii label_diff_side_by_side: obok siebie label_options: Opcje label_copy_workflow_from: Kopiuj przepÅ‚yw pracy z label_permissions_report: Raport uprawnieÅ„ label_watched_issues: Obserwowane zagadnienia label_related_issues: PowiÄ…zane zagadnienia label_applied_status: Zastosowany status label_loading: Åadowanie... label_relation_new: Nowe powiÄ…zanie label_relation_delete: UsuÅ„ powiÄ…zanie label_relates_to: powiÄ…zane z label_delete_link_to_subtask: UsuÅ„ powiÄ…zanie label_duplicates: duplikuje label_duplicated_by: zduplikowane przez label_blocks: blokuje label_blocked_by: blokowane przez label_precedes: poprzedza label_follows: nastÄ™puje po label_copied_to: skopiowane do label_copied_from: skopiowane z label_stay_logged_in: PozostaÅ„ zalogowany label_disabled: wyłączone label_optional: opcjonalne label_show_completed_versions: Pokaż kompletne wersje label_me: ja label_board: Forum label_board_new: Nowe forum label_board_plural: Fora label_board_locked: ZamkniÄ™ta label_board_sticky: Przyklejona label_topic_plural: Tematy label_message_plural: WiadomoÅ›ci label_message_last: Ostatnia wiadomość label_message_new: Nowa wiadomość label_message_posted: Dodano wiadomość label_reply_plural: Odpowiedzi label_send_information: WyÅ›lij informacjÄ™ użytkownikowi label_year: Rok label_month: MiesiÄ…c label_week: TydzieÅ„ label_date_from: Od label_date_to: Do label_language_based: Na podstawie jÄ™zyka użytkownika label_sort_by: "Sortuj po %{value}" label_send_test_email: WyÅ›lij próbny e-mail label_feeds_access_key: Klucz dostÄ™pu do kanaÅ‚u Atom label_missing_feeds_access_key: Brakuje klucza dostÄ™pu do kanaÅ‚u Atom label_feeds_access_key_created_on: "Klucz dostÄ™pu do kanaÅ‚u Atom stworzony %{value} temu" label_module_plural: ModuÅ‚y label_added_time_by: "Dodane przez %{author} %{age} temu" label_updated_time_by: "Uaktualnione przez %{author} %{age} temu" label_updated_time: "Zaktualizowane %{value} temu" label_jump_to_a_project: Skocz do projektu... label_file_plural: Pliki label_changeset_plural: Zestawienia zmian label_default_columns: DomyÅ›lne kolumny label_no_change_option: (Bez zmian) label_bulk_edit: Masowa edycja label_bulk_edit_selected_issues: Masowa edycja zagadnieÅ„ label_bulk_edit_selected_time_entries: Masowa edycja wpisów dziennika label_theme: Motyw label_default: DomyÅ›lne label_search_titles_only: Przeszukuj tylko tytuÅ‚y label_user_mail_option_all: Dla każdego zdarzenia w każdym moim projekcie label_user_mail_option_selected: Dla każdego zdarzenia w wybranych projektach... label_user_mail_option_none: Brak powiadomieÅ„ label_user_mail_option_only_my_events: Tylko to, co obserwujÄ™ lub w czym biorÄ™ udziaÅ‚ label_user_mail_option_only_assigned: Tylko to co obserwujÄ™ lub jestem przypisany label_user_mail_option_only_owner: Tylko to co obserwujÄ™ lub jestem wÅ‚aÅ›cicielem label_user_mail_no_self_notified: Nie chcÄ™ powiadomieÅ„ o zmianach, które sam wprowadzam label_user_mail_notify_about_high_priority_issues_html: "Dodatkowo powiadamiaj mnie o zagadnieniach z priorytetem %{prio} lub wyższym" label_registration_activation_by_email: aktywacja konta przez e-mail label_registration_manual_activation: manualna aktywacja kont label_registration_automatic_activation: automatyczna aktywacja kont label_display_per_page: "Na stronie: %{value}" label_age: Wiek label_change_properties: ZmieÅ„ wÅ‚aÅ›ciwoÅ›ci label_general: Ogólne label_scm: SCM label_plugins: Wtyczki label_ldap: LDAP label_ldap_authentication: Uwierzytelnianie LDAP label_ldaps_verify_none: LDAPS (bez sprawdzania certyfikatu) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Rekomendowane jest korzystanie z szyfrowanego połączenia LDAPS z włączonym sprawdzaniem certyfikatu, aby zapobiec manipulacjom podczas procesu uwierzytelniania. label_downloads_abbr: Pobieranie label_optional_description: Opcjonalny opis label_add_another_file: Dodaj kolejny plik label_auto_watch_on: Automatyczne obserwowanie label_auto_watch_on_issue_created: Zagadnienia, które utworzyÅ‚em label_auto_watch_on_issue_contributed_to: Zagadnienia, w których braÅ‚em udziaÅ‚ label_preferences: Preferencje label_chronological_order: W kolejnoÅ›ci chronologicznej label_reverse_chronological_order: W kolejnoÅ›ci odwrotnej do chronologicznej label_incoming_emails: PrzychodzÄ…ca poczta elektroniczna label_generate_key: Wygeneruj klucz label_issue_watchers: Obserwatorzy label_message_watchers: Obserwatorzy label_wiki_page_watchers: Obserwatorzy label_example: PrzykÅ‚ad label_display: WyglÄ…d label_sort: Sortuj label_ascending: RosnÄ…co label_descending: MalejÄ…co label_date_from_to: "Od %{start} do %{end}" label_days_to_html: "%{days} dni do %{date}" label_wiki_content_added: Dodano stronÄ™ wiki label_wiki_content_updated: Uaktualniono stronÄ™ wiki label_group: Grupa label_group_plural: Grupy label_group_new: Nowa grupa label_group_anonymous: Anonimowi użytkownicy label_group_non_member: Użytkownicy niebÄ™dÄ…cy uczestnikami label_time_entry_plural: Przepracowany czas label_version_sharing_none: Brak współdzielenia label_version_sharing_descendants: Z podprojektami label_version_sharing_hierarchy: Z hierarchiÄ… projektów label_version_sharing_tree: Z drzewem projektów label_version_sharing_system: Ze wszystkimi projektami label_update_issue_done_ratios: "Uaktualnij % wykonania" label_copy_source: ŹródÅ‚o label_copy_target: Cel label_copy_same_as_target: Jak cel label_display_used_statuses_only: WyÅ›wietlaj tylko statusy używane przez ten typ zagadnienia label_api_access_key: Klucz dostÄ™pu do API label_missing_api_access_key: Brakuje klucza dostÄ™pu do API label_api_access_key_created_on: "Klucz dostÄ™pu do API zostaÅ‚ utworzony %{value} temu" label_profile: Profil label_subtask: Podzagadnienie label_subtask_plural: Podzagadnienia label_project_copy_notifications: WyÅ›lij powiadomienia e-mail podczas kopiowania projektu label_import_notifications: WyÅ›lij powiadomienia e-mail podczas importu label_principal_search: "Szukaj użytkownika lub grupy:" label_user_search: "Szukaj użytkownika:" label_additional_workflow_transitions_for_author: Dodatkowe przejÅ›cia stanów dozwolone, gdy użytkownik jest autorem zagadnienia label_additional_workflow_transitions_for_assignee: Dodatkowe przejÅ›cia stanów dozwolone, gdy użytkownik jest przypisany do zagadnienia label_issues_visibility_all: Wszystkie label_issues_visibility_public: Wszystkie nieprywatne label_issues_visibility_own: Utworzone lub przypisane do użytkownika label_git_report_last_commit: WyÅ›wietlaj ostatni commit dla plików i katalogów label_parent_revision: Rodzic label_child_revision: Dziecko label_export_options: "Opcje eksportu %{export_format}" label_copy_attachments: Kopiuj załączniki label_copy_subtasks: Kopiuj podzagadnienia label_item_position: '%{position}/%{count}' label_completed_versions: UkoÅ„czone wersje label_search_for_watchers: Wyszukaj obserwatorów do dodania label_session_expiration: Wygasanie sesji label_status_transitions: PrzejÅ›cia miÄ™dzy statusami label_fields_permissions: Uprawnienia do pól label_readonly: Tylko do odczytu label_required: Wymagane label_required_lower: wymagane label_required_administrators: wymagane dla administratorów label_hidden: Ukryte label_attribute_of_project: "%{name} projektu" label_attribute_of_issue: "%{name} zagadnienia" label_attribute_of_author: "%{name} autora" label_attribute_of_assigned_to: "%{name} przypisanej osoby" label_attribute_of_user: "%{name} użytkownika" label_attribute_of_fixed_version: "%{name} wersji docelowej" label_attribute_of_object: "%{name} dla %{object_name}" label_cross_project_descendants: Z podprojektami label_cross_project_tree: Z drzewem projektów label_cross_project_hierarchy: Z hierarchiÄ… projektów label_cross_project_system: Ze wszystkimi projektami label_gantt_progress_line: Linia postÄ™pu label_visibility_private: tylko dla mnie label_visibility_roles: tylko dla ról label_visibility_public: dla wszystkich label_link: Link label_only: tylko label_drop_down_list: lista rozwijana label_checkboxes: pola wyboru label_radio_buttons: pola opcji label_link_values_to: Linkuj wartoÅ›ci do URL label_custom_field_select_type: Wybierz typ obiektu, dla którego chcesz utworzyć pole niestandardowe label_check_for_updates: Sprawdź aktualizacje label_latest_compatible_version: Najnowsza kompatybilna wersja label_unknown_plugin: Nieznana wtyczka label_add_projects: Dodaj projekty label_users_visibility_all: Wszyscy aktywni użytkownicy label_users_visibility_members_of_visible_projects: Uczestnicy widocznych projektów label_edit_attachments: Edytuj załączone pliki label_download_all_attachments: Pobierz wszystkie pliki label_link_copied_issue: Powiąż kopiowane zagadnienia label_ask: Pytaj label_search_attachments_yes: Szukaj w nazwach i opisach załączników label_search_attachments_no: Nie szukaj załączników label_search_attachments_only: Szukaj tylko załączników label_search_open_issues_only: Tylko otwarte zagadnienia label_email_address_plural: Adresy e-mail label_email_address_add: Dodaj adres e-mail label_enable_notifications: Włącz powiadomienia label_disable_notifications: Wyłącz powiadomienia label_blank_value: puste label_parent_task_attributes: Atrybuty zagadnieÅ„ nadrzÄ™dnych label_parent_task_attributes_derived: Obliczone z podzagadnieÅ„ label_parent_task_attributes_independent: Niezależne od podzagadnieÅ„ label_time_entries_visibility_all: Wszystkie wpisy dziennika label_time_entries_visibility_own: Wpisy dziennika utworzone przez użytkownika label_member_management: ZarzÄ…dzanie uczestnikami label_member_management_all_roles: Wszystkimi rolami label_member_management_selected_roles_only: Tylko tymi rolami label_import_issues: Import zagadnieÅ„ permission_import_time_entries: Import dziennika label_select_file_to_import: Wybierz plik do importu label_fields_separator: Separator pól label_fields_wrapper: Wrapper pól label_encoding: Kodowanie label_comma_char: Przecinek label_semi_colon_char: Åšrednik label_quote_char: Cytat label_double_quote_char: Podwójny cytat label_fields_mapping: Mapowanie pól label_relations_mapping: Mapowanie relacji label_file_content_preview: PodglÄ…d treÅ›ci pliku label_create_missing_values: Utwórz brakujÄ…ce wartoÅ›ci label_api: API label_field_format_enumeration: "Lista klucz/wartość" label_default_values_for_new_users: DomyÅ›lne wartoÅ›ci dla nowych użytkowników label_relations: Relacje label_new_project_issue_tab_enabled: 'WyÅ›wietl zakÅ‚adkÄ™ "Nowe zagadnienie"' label_new_object_tab_enabled: 'WyÅ›wietl "+" jako listÄ™ rozwijanÄ…' label_table_of_contents: Spis treÅ›ci label_font_default: DomyÅ›lna czcionka label_font_monospace: Czcionka o staÅ‚ej szerokoÅ›ci label_font_proportional: Czcionka proporcjonalna label_optgroup_bookmarks: ZakÅ‚adki label_optgroup_recents: Ostatnio używane label_last_notes: Ostatnie notatki label_default_queries: for_all_projects: Dla wszystkich projektów for_current_project: Dla obecnego projektu for_all_users: Dla wszystkich użytkowników for_this_user: Dla tego użytkownika label_nothing_to_preview: Nie ma nic do podglÄ…du label_inherited_from_parent_project: Dziedziczone z nadrzÄ™dnego projektu label_inherited_from_group: "Dziedziczone z grupy %{name}" label_trackers_description: Opis typów zagadnieÅ„ label_open_trackers_description: Zobacz wszystkie opisy typów zagadnieÅ„ label_preferred_body_part_text: Tekst label_preferred_body_part_html: HTML label_issue_history_properties: Zmiany wÅ‚aÅ›ciwoÅ›ci label_issue_history_notes: Notatki label_last_tab_visited: Ostatnio oglÄ…dana zakÅ‚adka label_password_char_class_uppercase: wielkie litery label_password_char_class_lowercase: maÅ‚e litery label_password_char_class_digits: cyfry label_password_char_class_special_chars: znaki specjalne label_display_type: WyÅ›wietl wyniki jako label_display_type_list: Lista label_display_type_board: Tablica label_my_bookmarks: Moje zakÅ‚adki label_assign_to_me: Przypisz do mnie label_default_query: DomyÅ›lna kwerenda label_edited: Edytowano label_time_by_author: "%{time} przez %{author}" button_login: Zaloguj siÄ™ button_submit: WyÅ›lij button_save: Zapisz button_check_all: Zaznacz wszystko button_uncheck_all: Odznacz wszystko button_collapse_all: ZwiÅ„ wszystkie button_expand_all: RozwiÅ„ wszystkie button_delete: UsuÅ„ button_create: Stwórz button_create_and_continue: Stwórz i dodaj kolejne button_test: Testuj button_edit: Edytuj button_edit_associated_wikipage: "Edytuj powiÄ…zanÄ… stronÄ™ Wiki: %{page_title}" button_add: Dodaj button_change: ZmieÅ„ button_apply: Zatwierdź button_clear: Wyczyść button_lock: Zablokuj button_unlock: Odblokuj button_download: Pobierz button_list: Lista button_view: Pokaż button_move: PrzenieÅ› button_move_and_follow: PrzenieÅ› i przejdź button_back: Wstecz button_cancel: Anuluj button_activate: Aktywuj button_disable: Dezaktywuj button_sort: Sortuj button_log_time: Dziennik button_rollback: Przywróć do tej wersji button_watch: Obserwuj button_unwatch: Nie obserwuj button_reply: Odpowiedz button_archive: Archiwizuj button_unarchive: Przywróć z archiwum button_reset: Resetuj button_rename: ZmieÅ„ nazwÄ™ button_change_password: ZmieÅ„ hasÅ‚o button_copy: Kopia button_copy_and_follow: Kopiuj i przejdź button_copy_link: Kopiuj link button_annotate: Adnotuj button_fetch_changesets: Pobierz zmiany button_update: Uaktualnij button_configure: Konfiguruj button_quote: Cytuj button_show: Pokaż button_hide: Ukryj button_edit_section: Edytuj tÄ… sekcje button_export: Eksportuj button_delete_my_account: UsuÅ„ moje konto button_close: Zamknij button_reopen: Otwórz button_import: Importuj button_project_bookmark: Dodaj zakÅ‚adkÄ™ button_project_bookmark_delete: UsuÅ„ zakÅ‚adkÄ™ button_filter: Filtruj button_actions: Akcje button_add_subtask: Dodaj podzagadnienie button_save_object: "Zapisz %{object_name}" button_edit_object: "Edytuj %{object_name}" button_delete_object: "UsuÅ„ %{object_name}" button_create_and_follow: Utwórz i przejdź button_apply_issues_filter: Zastosuj filtr na liÅ›cie zagadnieÅ„ status_active: aktywny status_registered: zarejestrowany status_locked: zablokowany project_status_active: aktywny project_status_closed: zamkniÄ™ty project_status_archived: zarchiwizowany project_status_scheduled_for_deletion: zaplanowane usuniÄ™cie version_status_open: otwarta version_status_locked: zablokowana version_status_closed: zamkniÄ™ta field_active: Aktywne text_select_mail_notifications: Wybierz akcje, dla których powinno być wysÅ‚ane powiadomienie e-mail. text_regexp_info: "np. ^[A-Z0-9]+$" text_project_destroy_confirmation: Czy jesteÅ› pewien, że chcesz usunąć ten projekt i wszystkie powiÄ…zane dane? text_projects_bulk_destroy_confirmation: Czy jesteÅ› pewien, że chcesz usunąć wybrane projekty i wszystkie powiÄ…zane dane? text_projects_bulk_destroy_head: | Zamierzasz usunąć nastÄ™pujÄ…ce projekty, włącznie z podprojektami i wszystkimi powiÄ…zanymi danymi. Sprawdź poniższe informacje i potwierdź, że rzeczywiÅ›cie chcesz to zrobić. Ta operacja jest nieodwracalna. text_projects_bulk_destroy_confirm: Aby potwierdzić, wpisz "%{yes}" w okienku poniżej. text_subprojects_destroy_warning: "Podprojekty %{value} zostanÄ… również usuniÄ™te." text_subprojects_bulk_destroy: "włącznie z podprojektami: %{value}" text_project_close_confirmation: Czy jesteÅ› pewien, że chcesz oznaczyć projekt "%{value}" jako tylko do odczytu? text_project_reopen_confirmation: Czy jesteÅ› pewien, że chcesz ponownie otworzyć projekt "%{value}"? text_project_archive_confirmation: Czy jesteÅ› pewien, że chcesz zarchiwizować projekt "%{value}"? text_users_bulk_destroy_head: 'Zamierzasz usunąć nastÄ™pujÄ…cych użytkowników i wszystkie odwoÅ‚ania do nich. Tej operacji nie można cofnąć. Zwykle zablokowanie użytkowników jest lepszym rozwiÄ…zaniem, niż ich caÅ‚kowite usuniÄ™cie.' text_users_bulk_destroy_confirm: 'Aby potwierdzić, wpisz "%{yes}" w pole poniżej.' text_workflow_edit: Zaznacz rolÄ™ i typ zagadnienia do edycji przepÅ‚ywu pracy text_are_you_sure: JesteÅ› pewien? text_journal_changed: "Zmieniono %{label} z %{old} na %{new}" text_journal_changed_no_detail: "Zaktualizowano %{label}" text_journal_set_to: "Ustawiono %{label} na %{value}" text_journal_deleted: "UsuniÄ™to %{label} (%{old})" text_journal_added: "Dodano %{label} %{value}" text_tip_issue_begin_day: zagadnienie rozpoczyna siÄ™ dzisiaj text_tip_issue_end_day: zagadnienie koÅ„czy siÄ™ dzisiaj text_tip_issue_begin_end_day: zagadnienie rozpoczyna i koÅ„czy siÄ™ dzisiaj text_project_identifier_info: "Dozwolone sÄ… maÅ‚e litery (a-z), liczby, myÅ›lniki i podkreÅ›lniki.
    Raz zapisany, identyfikator nie może być zmieniony." text_caracters_maximum: "Maksymalnie %{count} znaków." text_caracters_minimum: "Musi być nie krótsze niż %{count} znaków." text_characters_must_contain: "Musi zawierać %{character_classes}." text_length_between: "Długość pomiędzy %{min} i %{max} znaków." text_tracker_no_workflow: Brak przepływu pracy zdefiniowanego dla tego typu zagadnienia text_role_no_workflow: Brak przepływu pracy zdefiniowanego dla tej roli text_status_no_workflow: Żaden typ zagadnienia nie korzysta z tego statusu w swoim przepływie pracy text_unallowed_characters: Niedozwolone znaki text_comma_separated: "Dozwolone wielokrotne wartości (rozdzielone przecinkami)." text_line_separated: "Dozwolone wielokrotne wartości (każda wartość w osobnej linii)." text_issues_ref_in_commit_messages: Odwołania do zagadnień Redmine w komentarzach w repozytorium text_issue_added: "Zagadnienie %{id} zostało wprowadzone przez %{author}." text_issue_updated: "Zagadnienie %{id} zostało zaktualizowane przez %{author}." text_wiki_destroy_confirmation: "Czy jesteś pewien, że chcesz usunąć tę wiki i całą jej zawartość?" text_issue_category_destroy_question: "Do tej kategorii są przypisane zagadnienia (%{count}). Co chcesz zrobić?" text_issue_category_destroy_assignments: Usuń przydziały kategorii text_issue_category_reassign_to: Przydziel zagadnienia do tej kategorii text_user_mail_option: "W przypadku niezaznaczonych projektów, będziesz otrzymywał powiadomienia tylko na temat zagadnień które obserwujesz, lub w których bierzesz udział (np. jesteś autorem lub adresatem)." text_no_configuration_data: "Role użytkowników, typy zagadnień, statusy zagadnień oraz przepływ pracy nie zostały jeszcze skonfigurowane.\nWysoce zalecane jest by załadować domyślną konfigurację. Po załadowaniu będzie możliwa edycji tych danych." text_load_default_configuration: Załaduj domyślną konfigurację text_status_changed_by_changeset: "Zastosowane w zmianach %{value}." text_time_logged_by_changeset: "Zastosowane w zmianach %{value}." text_issues_destroy_confirmation: "Czy jesteś pewien, że chcesz usunąć wybrane zagadnienia?" text_issues_destroy_descendants_confirmation: "To spowoduje usunięcie również %{count} podzagadnień." text_time_entries_destroy_confirmation: "Czy jesteś pewien, że chcesz usunąć wybrane wpisy dziennika?" text_select_project_modules: 'Wybierz moduły do aktywacji w tym projekcie:' text_default_administrator_account_changed: Zmieniono domyślne hasło administratora text_file_repository_writable: Zapisywalny katalog plików text_plugin_assets_writable: Zapisywalny katalog zasobów wtyczek text_all_migrations_have_been_run: Wszystkie migracje bazy danych zostały wykonane text_minimagick_available: MiniMagick dostępne (opcjonalne) text_convert_available: Konwersja przez ImageMagick dostępna (opcjonalne) text_gs_available: Wsparcie dla PDF przez ImageMagick dostępne (opcjonalne) text_destroy_time_entries_question: "Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić?" text_destroy_time_entries: Usuń wpisy dziennika text_assign_time_entries_to_project: Przypisz wpisy dziennika do projektu text_reassign_time_entries: "Przepnij przepracowany czas do tego zagadnienia:" text_user_wrote: "%{value} napisał(a):" text_user_wrote_in: "%{value} napisał(a) (%{link}):" text_enumeration_destroy_question: "%{count} obiektów jest przypisanych do tej wartości." text_enumeration_category_reassign_to: "Zmień przypisanie na tę wartość:" text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostało skonfigurowane, więc powiadomienia są nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a następnie zrestartuj aplikację i włącz powiadomienia." text_repository_usernames_mapping: "Wybierz lub uaktualnij przyporządkowanie użytkowników Redmine do użytkowników repozytorium.\nUżytkownicy z taką samą nazwą lub adresem e-mail są przyporządkowani automatycznie." text_diff_truncated: "... Ten plik różnic został przycięty ponieważ jest zbyt długi." text_custom_field_possible_values_info: Każda wartość w osobnej linii text_wiki_page_destroy_question: "Ta strona posiada podstrony (%{descendants}). Co chcesz zrobić?" text_wiki_page_nullify_children: Przesuń je na szczyt hierarchii text_wiki_page_destroy_children: Usuń wszystkie podstrony text_wiki_page_reassign_children: Podepnij je do strony nadrzędnej względem usuwanej text_own_membership_delete_confirmation: "Masz zamiar usunąć niektóre lub wszystkie swoje uprawnienia. Po wykonaniu tej czynności możesz utracić możliwość edycji tego projektu.\nCzy jesteś pewien, że chcesz kontynuować?" text_zoom_in: Powiększ text_zoom_out: Zmniejsz text_warn_on_leaving_unsaved: Obecna strona zawiera niezapisany tekst, który zostanie utracony w przypadku jej opuszczenia. text_scm_path_encoding_note: "Domyślnie: UTF-8" text_subversion_repository_note: "Przykłady: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: 'Repozytorium jest surowe (bare) oraz lokalne (e.g. /gitrepo, c:\gitrepo)' text_mercurial_repository_note: 'Lokalne repozytorium (e.g. /hgrepo, c:\hgrepo)' text_scm_command: Polecenie text_scm_command_version: Wersja text_scm_config: Możesz skonfigurować polecenia SCM w pliku config/configuration.yml. Zrestartuj aplikację po dokonaniu zmian. text_scm_command_not_available: Polecenie SCM nie jest dostępne. Proszę sprawdzić ustawienia w panelu administracyjnym. text_issue_conflict_resolution_overwrite: "Zatwierdź moje zmiany mimo to (poprzednie notatki zostaną zachowane, ale niektóre zmiany mogą zostać nadpisane)" text_issue_conflict_resolution_add_notes: Dodaj moje notatki i odrzuć inne zmiany text_issue_conflict_resolution_cancel: "Odrzuć wszystkie moje zmiany i wyświetl ponownie %{link}" text_account_destroy_confirmation: "Czy jesteś pewien, że chcesz kontynuować?\nTwoje konto zostanie trwale usunięte, bez możliwości jego przywrócenia." text_session_expiration_settings: "Uwaga: zmiana tych ustawień może spowodować przeterminowanie sesji obecnie zalogowanych użytkowników, w tym Twojej." text_project_closed: Ten projekt jest zamknięty i dostępny tylko do odczytu. text_turning_multiple_off: Jeśli wyłączysz wielokrotne wartości, istniejące wielokrotne wartości zostaną usunięte w celu zachowania tylko jednej z nich dla każdego obiektu. text_select_apply_tracker: Wybierz typ zagadnienia text_avatar_server_config_html: 'Obecna usługa awatarów to %{url}. Możesz zmienić ją w config/configuration.yml.' text_no_subject: brak tematu text_allowed_queries_to_select: Można wybrać jedynie publiczne (dostępne dla każdego użytkownika) kwerendy text_setting_config_change: Możesz skonfigurować to zachowanie w pliku config/configuration.yml. Zrestartuj aplikację po dokonaniu zmian. default_role_manager: Kierownik default_role_developer: Programista default_role_reporter: Zgłaszający default_tracker_bug: Błąd default_tracker_feature: Zadanie default_tracker_support: Wsparcie default_issue_status_new: Nowy default_issue_status_in_progress: W toku default_issue_status_resolved: Rozwiązany default_issue_status_feedback: Odpowiedź default_issue_status_closed: Zamknięty default_issue_status_rejected: Odrzucony default_doc_category_user: Dokumentacja użytkownika default_doc_category_tech: Dokumentacja techniczna default_priority_low: Niski default_priority_normal: Normalny default_priority_high: Wysoki default_priority_urgent: Pilny default_priority_immediate: Natychmiastowy default_activity_design: Projektowanie default_activity_development: Rozwój enumeration_issue_priorities: Priorytety zagadnień enumeration_doc_categories: Kategorie dokumentów enumeration_activities: Działania (śledzenie czasu) enumeration_system_activity: Aktywność systemowa description_filter: Filtr description_search: Pole wyszukiwania description_choose_project: Projekty description_project_scope: Zakres wyszukiwania description_notes: Notatki description_message_content: Treść wiadomości description_query_sort_criteria_attribute: Atrybut sortowania description_query_sort_criteria_direction: Kierunek sortowania description_user_mail_notification: Ustawienia powiadomień e-mail description_available_columns: Dostępne kolumny description_selected_columns: Wybrane kolumny description_all_columns: Wszystkie kolumny description_issue_category_reassign: Wybierz kategorię zagadnienia description_wiki_subpages_reassign: Wybierz nową stronę nadrzędną text_repository_identifier_info: "Dozwolone są jedynie małe litery (a-z), liczby, myślniki i podkreślniki.
    Raz zapisany, identyfikator nie może być zmieniony." text_login_required_html: 'JeÅ›li uwierzytelnienie nie jest wymagane, publiczne projekty i ich treść jest zawsze widoczna w sieci. Możesz edytować odpowiednie uprawnienia.' label_login_required_yes: Tak label_login_required_no: Nie, pozwól na anonimowy dostÄ™p do publicznych projektów text_project_is_public_non_member: Publiczne projekty i ich treść jest dostÄ™pna dla wszystkich zalogowanych użytkowników. text_project_is_public_anonymous: Publiczne projekty i ich treść jest publicznie dostÄ™pna w sieci. label_import_time_entries: Importuj wpisy dziennika label_import_users: Importuj użytkowników sudo_mode_new_info_html: Co siÄ™ dzieje? Musisz potwierdzić swoje hasÅ‚o zanim bÄ™dziesz mógÅ‚ wykonywać dziaÅ‚ania administracyjne. Pozwala to lepiej chronić twoje konto. twofa__totp__name: Aplikacja uwierzytelniajÄ…ca twofa__totp__text_pairing_info_html: 'Zeskanuj ten kod QR lub wpisz klucz do aplikacji TOTP (np. Google Authenticator, Authy, Duo Mobile) i wpisz kod do pola poniżej by aktywować uwierzytelnianie dwuskÅ‚adnikowe.' twofa__totp__label_plain_text_key: Klucz twofa__totp__label_activate: 'Włącz aplikacjÄ™ uwierzytelniajÄ…cÄ…' twofa_currently_active: "Aktualnie aktywne: %{twofa_scheme_name}" twofa_not_active: "Nieaktywne" twofa_label_code: Kod twofa_hint_disabled_html: Ustawienie %{label} wyłączy i usunie sparowane urzÄ…dzenia do uwierzytelniania dwuskÅ‚adnikowego dla wszystkich użytkowników. twofa_hint_optional_html: Ustawienie %{label} umożliwi użytkownikom opcjonalne skonfigurowanie uwierzytelniania dwuskÅ‚adnikowego, chyba że bÄ™dzie to wymagane przez jednÄ… z ich grup. twofa_hint_required_html: Ustawienie %{label} wymusi wszystkim użytkownikom skonfigurowanie uwierzytelniania dwuskÅ‚adnikowego przy kolejnym logowaniu. twofa_hint_required_administrators_html: Ustawienie %{label} dziaÅ‚a jak opcjonalne, ale bÄ™dzie wymagać od wszystkich użytkowników z uprawnieniami administratora skonfigurowania uwierzytelniania dwuskÅ‚adnikowego przy kolejnym logowaniu. twofa_label_setup: Włącz uwierzytelnianie dwuskÅ‚adnikowe twofa_label_deactivation_confirmation: Wyłącz uwierzytelnianie dwuskÅ‚adnikowe twofa_notice_select: "Wybierz rodzaj uwierzytelniania dwuskÅ‚adnikowego, który chciaÅ‚byÅ› użyć:" twofa_warning_require: Administrator wymaga byÅ› aktywowaÅ‚ uwierzytelnianie dwuskÅ‚adnikowe. twofa_activated: Uwierzytelnianie dwuskÅ‚adnikowe zostaÅ‚o z powodzeniem włączone. Zalecane jest wygenerowanie kodów zapasowych dla twego konta. twofa_deactivated: Uwierzytelnianie dwuskÅ‚adnikowe wyłączone. twofa_mail_body_security_notification_paired: "Uwierzytelnianie dwuskÅ‚adnikowe z powodzeniem włączone używajÄ…c %{field}." twofa_mail_body_security_notification_unpaired: "Uwierzytelnianie dwuskÅ‚adnikowe zostaÅ‚o wyłączone dla twojego konta." twofa_mail_body_backup_codes_generated: "Nowe kody zapasowe uwierzytelniania dwuskÅ‚adnikowego zostaÅ‚y wygenerowane." twofa_mail_body_backup_code_used: "Użyto zapasowego kodu uwierzytelniania dwuskÅ‚adnikowego." twofa_invalid_code: Kod jest błędny lub nieaktualny. twofa_label_enter_otp: Podaj swój kod uwierzytelniania dwuskÅ‚adnikowego. twofa_too_many_tries: Zbyt wiele prób. twofa_resend_code: WyÅ›lij ponownie kod twofa_code_sent: Kod uwierzytelniajÄ…cy zostaÅ‚ do Ciebie wysÅ‚any. twofa_generate_backup_codes: Wygeneruj kody zapasowe twofa_text_generate_backup_codes_confirmation: Spowoduje to unieważnienie wszystkich istniejÄ…cych kodów zapasowych i wygenerowanie nowych. Czy jesteÅ› pewien, że chcesz kontynuować? twofa_notice_backup_codes_generated: Twoje kody zapasowe zostaÅ‚y wygenerowane. twofa_warning_backup_codes_generated_invalidated: Nowe kody zapasowe zostaÅ‚y wygenerowane. Twoje dotychczasowe kody z %{time} sÄ… już nieważne. twofa_label_backup_codes: Kody zapasowe uwierzytelniania dwuskÅ‚adnikowego twofa_text_backup_codes_hint: Użyj tych kodów zamiast hasÅ‚a jednorazowego, jeżeli nie masz dostÄ™pu do drugiego skÅ‚adnika uwierzytelniania. Każdy kod może być użyty tylko raz. Zalecamy je wydrukować i przechowywać w bezpiecznym miejscu. twofa_text_backup_codes_created_at: Kody zapasowe wygenerowano %{datetime}. twofa_backup_codes_already_shown: Kody zapasowe nie mogÄ… być ponownie wyÅ›wietlone, wygeneruj nowe kody jeÅ›li sÄ… potrzebne. twofa_text_group_required: "To ustawienie dziaÅ‚a tylko wtedy, kiedy globalne ustawienie uwierzytelniania dwuskÅ‚adnikowego jest ustawione na 'opcjonalne'. Aktualnie uwierzytelnianie dwuskÅ‚adnikowe jest wymagane dla wszystkich użytkowników." twofa_text_group_disabled: "To ustawienie dziaÅ‚a tylko wtedy, kiedy globalne ustawienie uwierzytelniania dwuskÅ‚adnikowego jest ustawione na 'opcjonalne'. Aktualnie uwierzytelnienie dwuskÅ‚adnikowe jest wyłączone." text_user_destroy_confirmation: "Czy jesteÅ› pewien, że chcesz usunąć tego użytkownika i wszystkie odwoÅ‚ania do niego? Tej operacji nie można cofnąć. Zwykle zablokowanie użytkownika jest lepszym rozwiÄ…zaniem, niż jego caÅ‚kowite usuniÄ™cie. Aby potwierdzić operacjÄ™, podaj jego login (%{login}) poniżej." text_project_destroy_enter_identifier: "Aby potwierdzić, podaj identyfikator projektu (%{identifier}) poniżej." label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/pt-BR.yml000066400000000000000000002241111500112024600174730ustar00rootroot00000000000000pt-BR: direction: ltr date: formats: default: "%d/%m/%Y" short: "%d de %B" long: "%d de %B de %Y" only_day: "%d" day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] order: - :day - :month - :year time: formats: default: "%A, %d de %B de %Y, %H:%M h" time: "%H:%M h" short: "%d/%m, %H:%M h" long: "%A, %d de %B de %Y, %H:%M h" only_second: "%S" datetime: formats: default: "%Y-%m-%dT%H:%M:%S%Z" am: '' pm: '' # date helper distancia em palavras datetime: distance_in_words: half_a_minute: 'meio minuto' less_than_x_seconds: one: 'menos de 1 segundo' other: 'menos de %{count} segundos' x_seconds: one: '1 segundo' other: '%{count} segundos' less_than_x_minutes: one: 'menos de um minuto' other: 'menos de %{count} minutos' x_minutes: one: '1 minuto' other: '%{count} minutos' about_x_hours: one: 'aproximadamente 1 hora' other: 'aproximadamente %{count} horas' x_hours: one: "1 hora" other: "%{count} horas" x_days: one: '1 dia' other: '%{count} dias' about_x_months: one: 'aproximadamente 1 mês' other: 'aproximadamente %{count} meses' x_months: one: '1 mês' other: '%{count} meses' about_x_years: one: 'aproximadamente 1 ano' other: 'aproximadamente %{count} anos' over_x_years: one: 'mais de 1 ano' other: 'mais de %{count} anos' almost_x_years: one: "quase 1 ano" other: "quase %{count} anos" # numeros number: format: precision: 3 separator: ',' delimiter: '.' currency: format: unit: 'R$' precision: 2 format: '%u %n' separator: ',' delimiter: '.' percentage: format: delimiter: '.' precision: format: delimiter: '.' human: format: precision: 3 delimiter: '.' storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: sentence_connector: "e" skip_last_comma: true # Active Record activerecord: errors: template: header: one: "modelo não pode ser salvo: 1 erro" other: "modelo não pode ser salvo: %{count} erros." body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluso na lista" exclusion: "não está disponível" invalid: "não é válido" confirmation: "não está de acordo com a confirmação" accepted: "precisa ser aceito" empty: "não pode ficar vazio" blank: "não pode ficar vazio" too_long: "é muito longo (máximo: %{count} caracteres)" too_short: "é muito curto (mínimo: %{count} caracteres)" wrong_length: "deve ter %{count} caracteres" taken: "não está disponível" not_a_number: "não é um número" greater_than: "precisa ser maior do que %{count}" greater_than_or_equal_to: "precisa ser maior ou igual a %{count}" equal_to: "precisa ser igual a %{count}" less_than: "precisa ser menor do que %{count}" less_than_or_equal_to: "precisa ser menor ou igual a %{count}" odd: "precisa ser ímpar" even: "precisa ser par" greater_than_start_date: "deve ser maior que a data inicial" not_same_project: "não pertence ao mesmo projeto" circular_dependency: "Esta relação geraria uma dependência circular" cant_link_an_issue_with_a_descendant: "Uma tarefa não pode ser relacionada a uma de suas subtarefas" earlier_than_minimum_start_date: "não pode ser anterior a %{date} por causa de tarefas anteriores" not_a_regexp: "não é uma expressão regular válida" open_issue_with_closed_parent: "Uma tarefa aberta não pode ser associada à uma tarefa mãe fechada" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Selecione general_text_No: 'Não' general_text_Yes: 'Sim' general_text_no: 'não' general_text_yes: 'sim' general_lang_name: 'Portuguese/Brazil (Português/Brasil)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Conta atualizada com sucesso. notice_account_invalid_credentials: Usuário ou senha inválido. notice_account_password_updated: Senha alterada com sucesso. notice_account_wrong_password: Senha inválida. notice_account_register_done: Conta criada com sucesso. Para ativar sua conta, clique no link que lhe foi enviado por e-mail. notice_can_t_change_password: Esta conta utiliza autenticação externa. Não é possível alterar a senha. notice_account_lost_email_sent: Um e-mail com instruções para escolher uma nova senha foi enviado para você. notice_account_activated: Sua conta foi ativada. Você pode acessá-la agora. notice_successful_create: Criado com sucesso. notice_successful_update: Alterado com sucesso. notice_successful_delete: Excluído com sucesso. notice_successful_connection: Conectado com sucesso. notice_file_not_found: A página que você está tentando acessar não existe ou foi excluída. notice_locking_conflict: Os dados foram atualizados por outro usuário. notice_not_authorized: Você não está autorizado a acessar esta página. notice_email_sent: "Um e-mail foi enviado para %{value}" notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: Sua chave Atom foi reconfigurada. notice_failed_to_save_issues: "Problema ao salvar %{count} tarefa(s) de %{total} selecionadas: %{ids}." notice_account_pending: "Sua conta foi criada e está aguardando aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. error_can_t_load_default_data: "A configuração padrão não pode ser carregada: %{value}" error_scm_not_found: "A entrada e/ou a revisão não existe no repositório." error_scm_command_failed: "Ocorreu um erro ao tentar acessar o repositório: %{value}" error_scm_annotate: "Esta entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projeto' error_no_tracker_in_project: 'Não há um tipo de tarefa associado a este projeto. Favor verificar as configurações do projeto.' error_no_default_issue_status: 'A situação padrão para tarefa não está definida. Favor verificar sua configuração (Vá em "Administração -> Situação da tarefa").' error_ldap_bind_credentials: "Conta/Palavra-chave do LDAP não é válida" mail_subject_lost_password: "Sua senha do %{value}." mail_body_lost_password: 'Para mudar sua senha, clique no link abaixo:' mail_subject_register: "Ativação de conta do %{value}." mail_body_register: 'Para ativar sua conta, clique no link abaixo:' mail_body_account_information_external: "Você pode usar sua conta do %{value} para entrar." mail_body_account_information: Informações sobre sua conta mail_subject_account_activation_request: "%{value} - Requisição de ativação de conta" mail_body_account_activation_request: "Um novo usuário (%{value}) se registrou. A conta está aguardando sua aprovação:" mail_subject_reminder: "%{count} tarefa(s) com data prevista para os próximos %{days} dias" mail_body_reminder: "%{count} tarefa(s) para você com data prevista para os próximos %{days} dias:" field_name: Nome field_description: Descrição field_summary: Resumo field_is_required: Obrigatório field_firstname: Nome field_lastname: Sobrenome field_mail: E-mail field_filename: Arquivo field_filesize: Tamanho field_downloads: Downloads field_author: Autor field_created_on: Criado em field_updated_on: Alterado em field_field_format: Formato field_is_for_all: Para todos os projetos field_possible_values: Possíveis valores field_regexp: Expressão regular field_min_length: Tamanho mínimo field_max_length: Tamanho máximo field_value: Valor field_category: Categoria field_title: Título field_project: Projeto field_issue: Tarefa field_status: Situação field_notes: Notas field_is_closed: Tarefa fechada field_is_default: Situação padrão field_tracker: Tipo field_subject: Título field_due_date: Data prevista field_assigned_to: Atribuído para field_priority: Prioridade field_fixed_version: Versão field_user: Usuário field_role: Cargo field_homepage: Página do projeto field_is_public: Público field_parent: Subprojeto de field_is_in_roadmap: Exibir no planejamento field_login: Usuário field_mail_notification: Notificações por e-mail field_admin: Administrador field_last_login_on: Última conexão field_language: Idioma field_effective_date: Data field_password: Senha field_new_password: Nova senha field_password_confirmation: Confirmação field_version: Versão field_type: Tipo field_host: Servidor field_port: Porta field_account: Conta field_base_dn: DN Base field_attr_login: Atributo para nome de usuário field_attr_firstname: Atributo para nome field_attr_lastname: Atributo para sobrenome field_attr_mail: Atributo para e-mail field_onthefly: Criar usuários dinamicamente ("on-the-fly") field_start_date: Início field_done_ratio: "% Terminado" field_auth_source: Modo de autenticação field_hide_mail: Ocultar meu e-mail field_comments: Comentário field_url: URL field_start_page: Página inicial field_subproject: Subprojeto field_hours: Horas field_activity: Atividade field_spent_on: Data field_identifier: Identificador field_is_filter: É um filtro field_issue_to: Tarefa relacionada field_delay: Atraso field_assignable: Tarefas podem ser atribuídas a este papel field_redirect_existing_links: Redirecionar links existentes field_estimated_hours: Tempo estimado field_column_names: Colunas field_time_zone: Fuso-horário field_searchable: Pesquisável field_default_value: Padrão field_comments_sorting: Visualizar comentários field_parent_title: Página pai field_last_activity_date: Última atividade setting_app_title: Título da aplicação setting_welcome_text: Texto de boas-vindas setting_default_language: Idioma padrão setting_login_required: Exigir autenticação setting_self_registration: Permitido Auto-registro setting_attachment_max_size: Tamanho máximo do anexo setting_issues_export_limit: Limite de exportação das tarefas setting_mail_from: E-mail enviado de setting_host_name: Nome do Servidor e subdomínio setting_text_formatting: Formatação do texto setting_wiki_compression: Compactação de histórico do Wiki setting_feeds_limit: Número de registros por Feed setting_default_projects_public: Novos projetos são públicos por padrão setting_autofetch_changesets: Obter commits automaticamente setting_sys_api_enabled: Ativar WS para gerenciamento do repositório (SVN) setting_commit_ref_keywords: Palavras-chave de referência setting_commit_fix_keywords: Definição de palavras-chave setting_autologin: Auto-login setting_date_format: Formato da data setting_time_format: Formato de hora setting_cross_project_issue_relations: Permitir relacionar tarefas entre projetos setting_issue_list_default_columns: Colunas na lista de tarefas por padrão setting_emails_footer: Rodapé do e-mail setting_protocol: Protocolo setting_per_page_options: Número de itens exibidos por página setting_user_format: Formato de exibição de nome de usuário setting_activity_days_default: Dias visualizados na atividade do projeto setting_display_subprojects_issues: Visualizar tarefas dos subprojetos nos projetos principais por padrão setting_enabled_scm: SCM habilitados setting_mail_handler_api_enabled: Habilitar WS para e-mails de entrada setting_mail_handler_api_key: Chave de API setting_sequential_project_identifiers: Gerar identificadores sequenciais de projeto project_module_issue_tracking: Gerenciamento de Tarefas project_module_time_tracking: Gerenciamento de tempo project_module_news: Notícias project_module_documents: Documentos project_module_files: Arquivos project_module_wiki: Wiki project_module_repository: Repositório project_module_boards: Fóruns label_user: Usuário label_user_plural: Usuários label_user_new: Novo usuário label_project: Projeto label_project_new: Novo projeto label_project_plural: Projetos label_x_projects: zero: nenhum projeto one: 1 projeto other: "%{count} projetos" label_project_all: Todos os projetos label_project_latest: Últimos projetos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada label_issue_note_added: Nota adicionada label_issue_status_updated: Situação atualizada label_issue_priority_updated: Prioridade atualizada label_document: Documento label_document_new: Novo documento label_document_plural: Documentos label_document_added: Documento adicionado label_role: Papel label_role_plural: Papéis label_role_new: Novo papel label_role_and_permissions: Papéis e permissões label_member: Membro label_member_new: Novo membro label_member_plural: Membros label_tracker: Tipo de tarefa label_tracker_plural: Tipos de tarefas label_tracker_new: Novo tipo label_workflow: Fluxo de trabalho label_issue_status: Situação da tarefa label_issue_status_plural: Situação das tarefas label_issue_status_new: Nova situação label_issue_category: Categoria da tarefa label_issue_category_plural: Categorias das tarefas label_issue_category_new: Nova categoria label_custom_field: Campo personalizado label_custom_field_plural: Campos personalizados label_custom_field_new: Novo campo personalizado label_enumerations: 'Tipos & Categorias' label_enumeration_new: Novo label_information: Informação label_information_plural: Informações label_register: Cadastre-se label_password_lost: Perdi minha senha label_home: Página inicial label_my_page: Minha página label_my_account: Minha conta label_my_projects: Meus projetos label_administration: Administração label_login: Entrar label_logout: Sair label_help: Ajuda label_reported_issues: Tarefas reportadas label_assigned_to_me_issues: Minhas tarefas label_registered_on: Registrado em label_activity: Atividade label_new: Novo label_logged_as: "Acessando como:" label_environment: Ambiente label_authentication: Autenticação label_auth_source: Modo de autenticação label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Subprojetos label_and_its_subprojects: "%{value} e seus subprojetos" label_min_max_length: Tamanho mín-máx label_list: Lista label_date: Data label_integer: Inteiro label_float: Decimal label_boolean: Booleano label_string: Texto label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos label_no_data: Nenhuma informação disponível label_change_status: Alterar situação label_history: Histórico label_attachment: Arquivo label_attachment_new: Novo arquivo label_attachment_delete: Excluir arquivo label_attachment_plural: Arquivos label_file_added: Arquivo adicionado label_report: Relatório label_report_plural: Relatório label_news: Notícia label_news_new: Adicionar notícia label_news_plural: Notícias label_news_latest: Últimas notícias label_news_view_all: Ver todas as notícias label_news_added: Notícia adicionada label_settings: Configurações label_overview: Visão geral label_version: Versão label_version_new: Nova versão label_version_plural: Versões label_confirmation: Confirmação label_export_to: Exportar para label_read: Ler... label_public_projects: Projetos públicos label_open_issues: Aberta label_open_issues_plural: Abertas label_closed_issues: Fechada label_closed_issues_plural: Fechadas label_x_open_issues_abbr: zero: 0 aberta one: 1 aberta other: "%{count} abertas" label_x_closed_issues_abbr: zero: 0 fechada one: 1 fechada other: "%{count} fechadas" label_total: Total label_permissions: Permissões label_current_status: Situação atual label_new_statuses_allowed: Nova situação permitida label_all: todos label_none: nenhum label_nobody: ninguém label_next: Próximo label_previous: Anterior label_used_by: Usado por label_details: Detalhes label_add_note: Adicionar nota label_calendar: Calendário label_months_from: meses a partir de label_gantt: Gantt label_internal: Interno label_last_changes: "últimas %{count} alterações" label_change_view_all: Mostrar todas as alterações label_comment: Comentário label_comment_plural: Comentários label_x_comments: zero: nenhum comentário one: 1 comentário other: "%{count} comentários" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Excluir comentário label_query: Consulta personalizada label_query_plural: Consultas personalizadas label_query_new: Nova consulta label_filter_add: Adicionar filtro label_filter_plural: Filtros label_equals: igual a label_not_equals: diferente de label_in_less_than: maior que label_in_more_than: menor que label_in: em label_today: hoje label_yesterday: ontem label_this_week: esta semana label_last_week: última semana label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: último mês label_this_year: este ano label_date_range: Período label_less_than_ago: menos de label_more_than_ago: mais de label_ago: dias atrás label_contains: contém label_not_contains: não contém label_day_plural: dias label_repository: Repositório label_repository_plural: Repositórios label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas label_added: adicionada label_modified: alterada label_deleted: excluída label_latest_revision: Última revisão label_latest_revision_plural: Últimas revisões label_view_revisions: Ver revisões label_max_size: Tamanho máximo label_roadmap: Planejamento label_roadmap_due_in: "Previsto para %{value}" label_roadmap_overdue: "%{value} atrasado" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Busca label_result_plural: Resultados label_all_words: Todas as palavras label_wiki: Wiki label_wiki_edit: Editar Wiki label_wiki_edit_plural: Edições Wiki label_wiki_page: Página Wiki label_wiki_page_plural: páginas Wiki label_index_by_title: Ãndice por título label_index_by_date: Ãndice por data label_current_version: Versão atual label_preview: Pré-visualizar label_feed_plural: Feeds label_changes_details: Detalhes de todas as alterações label_issue_tracking: Tarefas label_spent_time: Tempo gasto label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" label_time_tracking: Registro de horas label_change_plural: Alterações label_statistics: Estatísticas label_commits_per_month: Commits por mês label_commits_per_author: Commits por autor label_view_diff: Ver diferenças label_diff_inline: em linha label_diff_side_by_side: lado a lado label_options: Opções label_copy_workflow_from: Copiar fluxo de trabalho de label_permissions_report: Relatório de permissões label_watched_issues: Tarefas observadas label_related_issues: Tarefas relacionadas label_applied_status: Situação alterada label_loading: Carregando... label_relation_new: Nova relação label_relation_delete: Excluir relação label_relates_to: relacionado a label_duplicates: duplica label_duplicated_by: duplicado por label_blocks: bloqueia label_blocked_by: bloqueado por label_precedes: precede label_follows: segue label_stay_logged_in: Permanecer logado label_disabled: desabilitado label_show_completed_versions: Exibir versões completas label_me: mim label_board: Fórum label_board_new: Novo fórum label_board_plural: Fóruns label_topic_plural: Tópicos label_message_plural: Mensagens label_message_last: Última mensagem label_message_new: Nova mensagem label_message_posted: Mensagem enviada label_reply_plural: Respostas label_send_information: Enviar informação da nova conta para o usuário label_year: Ano label_month: Mês label_week: Semana label_date_from: De label_date_to: Para label_language_based: Com base no idioma do usuário label_sort_by: "Ordenar por %{value}" label_send_test_email: Enviar um e-mail de teste label_feeds_access_key_created_on: "chave de acesso Atom criada %{value} atrás" label_module_plural: Módulos label_added_time_by: "Adicionado por %{author} %{age} atrás" label_updated_time: "Atualizado %{value} atrás" label_jump_to_a_project: Ir para o projeto... label_file_plural: Arquivos label_changeset_plural: Conjunto de alterações label_default_columns: Colunas padrão label_no_change_option: (Sem alteração) label_bulk_edit_selected_issues: Edição em massa das tarefas selecionadas. label_theme: Tema label_default: Padrão label_search_titles_only: Pesquisar somente títulos label_user_mail_option_all: "Para qualquer evento em todos os meus projetos" label_user_mail_option_selected: "Para qualquer evento somente no(s) projeto(s) selecionado(s)..." label_user_mail_no_self_notified: "Eu não quero ser notificado de minhas próprias modificações" label_registration_activation_by_email: ativação de conta por e-mail label_registration_manual_activation: ativação manual de conta label_registration_automatic_activation: ativação automática de conta label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Alterar propriedades label_general: Geral label_scm: 'Controle de versão:' label_plugins: Plugins label_ldap_authentication: Autenticação LDAP label_downloads_abbr: D/L label_optional_description: Descrição opcional label_add_another_file: Adicionar outro arquivo label_preferences: Preferências label_chronological_order: Em ordem cronológica label_reverse_chronological_order: Em ordem cronológica inversa label_incoming_emails: E-mails recebidos label_generate_key: Gerar uma chave label_issue_watchers: Observadores button_login: Entrar button_submit: Enviar button_save: Salvar button_check_all: Marcar todos button_uncheck_all: Desmarcar todos button_delete: Excluir button_create: Criar button_test: Testar button_edit: Editar button_add: Adicionar button_change: Alterar button_apply: Aplicar button_clear: Limpar button_lock: Bloquear button_unlock: Desbloquear button_download: Baixar button_list: Listar button_view: Ver button_move: Mover button_back: Voltar button_cancel: Cancelar button_activate: Ativar button_sort: Ordenar button_log_time: Tempo de trabalho button_rollback: Voltar para esta versão button_watch: Observar button_unwatch: Parar de observar button_reply: Responder button_archive: Arquivar button_unarchive: Desarquivar button_reset: Redefinir button_rename: Renomear button_change_password: Alterar senha button_copy: Copiar button_annotate: Anotar button_update: Atualizar button_configure: Configurar button_quote: Responder status_active: ativo status_registered: registrado status_locked: bloqueado text_select_mail_notifications: Ações a serem notificadas por e-mail text_regexp_info: ex. ^[A-Z0-9]+$ text_project_destroy_confirmation: Você tem certeza que deseja excluir este projeto e todos os dados relacionados? text_subprojects_destroy_warning: "Seu(s) subprojeto(s): %{value} também serão excluídos." text_workflow_edit: Selecione um papel e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Você tem certeza? text_tip_issue_begin_day: tarefa inicia neste dia text_tip_issue_end_day: tarefa termina neste dia text_tip_issue_begin_end_day: tarefa inicia e termina neste dia text_caracters_maximum: "máximo %{count} caracteres" text_caracters_minimum: "deve ter ao menos %{count} caracteres." text_length_between: "deve ter entre %{min} e %{max} caracteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo. text_unallowed_characters: Caracteres não permitidos text_comma_separated: Múltiplos valores são permitidos (separados por vírgula). text_issues_ref_in_commit_messages: Referenciando tarefas nas mensagens de commit text_issue_added: "Tarefa %{id} incluída (por %{author})." text_issue_updated: "Tarefa %{id} alterada (por %{author})." text_wiki_destroy_confirmation: Você tem certeza que deseja excluir este wiki e TODO o seu conteúdo? text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que você deseja fazer?" text_issue_category_destroy_assignments: Remover atribuições da categoria text_issue_category_reassign_to: Redefinir tarefas para esta categoria text_user_mail_option: "Para projetos (não selecionados), você somente receberá notificações sobre o que você está observando ou está envolvido (ex. tarefas das quais você é o autor ou que estão atribuídas a você)" text_no_configuration_data: "Os Papéis, tipos de tarefas, situação de tarefas e fluxos de trabalho não foram configurados ainda.\nÉ altamente recomendado carregar as configurações padrão. Você poderá modificar estas configurações assim que carregadas." text_load_default_configuration: Carregar a configuração padrão text_status_changed_by_changeset: "Aplicado no conjunto de alterações %{value}." text_issues_destroy_confirmation: 'Você tem certeza que deseja excluir a(s) tarefa(s) selecionada(s)?' text_select_project_modules: 'Selecione módulos para habilitar para este projeto:' text_default_administrator_account_changed: Conta padrão do administrador alterada text_file_repository_writable: Repositório com permissão de escrita text_minimagick_available: MiniMagick disponível (opcional) text_destroy_time_entries_question: "%{hours} horas de trabalho foram registradas nas tarefas que você está excluindo. O que você deseja fazer?" text_destroy_time_entries: Excluir horas de trabalho text_assign_time_entries_to_project: Atribuir estas horas de trabalho para outro projeto text_reassign_time_entries: 'Atribuir horas reportadas para esta tarefa:' text_user_wrote: "%{value} escreveu:" text_user_wrote_in: "%{value} escreveu (%{link}):" text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:' text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las." default_role_manager: Gerente default_role_developer: Desenvolvedor default_role_reporter: Informante default_tracker_bug: Defeito default_tracker_feature: Funcionalidade default_tracker_support: Suporte default_issue_status_new: Nova default_issue_status_in_progress: Em andamento default_issue_status_resolved: Resolvida default_issue_status_feedback: Feedback default_issue_status_closed: Fechada default_issue_status_rejected: Rejeitada default_doc_category_user: Documentação do usuário default_doc_category_tech: Documentação técnica default_priority_low: Baixa default_priority_normal: Normal default_priority_high: Alta default_priority_urgent: Urgente default_priority_immediate: Imediata default_activity_design: Design default_activity_development: Desenvolvimento enumeration_issue_priorities: Prioridade das tarefas enumeration_doc_categories: Categorias de documento enumeration_activities: Atividades (registro de horas) notice_unable_delete_version: Não foi possível excluir a versão label_renamed: renomeado label_copied: copiado setting_plain_text_mail: Usar mensagem sem formatação HTML permission_view_files: Ver arquivos permission_edit_issues: Editar tarefas permission_edit_own_time_entries: Editar o próprio tempo de trabalho permission_manage_public_queries: Gerenciar consultas públicas permission_add_issues: Adicionar tarefas permission_log_time: Adicionar tempo gasto permission_view_changesets: Ver conjunto de alterações permission_view_time_entries: Ver tempo gasto permission_manage_versions: Gerenciar versões permission_manage_wiki: Gerenciar wiki permission_manage_categories: Gerenciar categorias de tarefas permission_protect_wiki_pages: Proteger páginas wiki permission_comment_news: Comentar notícias permission_delete_messages: Excluir mensagens permission_select_project_modules: Selecionar módulos de projeto permission_edit_wiki_pages: Editar páginas wiki permission_add_issue_watchers: Adicionar observadores permission_view_gantt: Ver gráfico gantt permission_manage_issue_relations: Gerenciar relacionamentos de tarefas permission_delete_wiki_pages: Excluir páginas wiki permission_manage_boards: Gerenciar fóruns permission_delete_wiki_pages_attachments: Excluir anexos permission_view_wiki_edits: Ver histórico do wiki permission_add_messages: Postar mensagens permission_view_messages: Ver mensagens permission_manage_files: Gerenciar arquivos permission_edit_issue_notes: Editar notas permission_manage_news: Gerenciar notícias permission_view_calendar: Ver calendário permission_manage_members: Gerenciar membros permission_edit_messages: Editar mensagens permission_delete_issues: Excluir tarefas permission_view_issue_watchers: Ver lista de observadores permission_manage_repository: Gerenciar repositório permission_commit_access: Acesso do commit permission_browse_repository: Pesquisar repositório permission_view_documents: Ver documentos permission_edit_project: Editar projeto permission_add_issue_notes: Adicionar notas permission_save_queries: Salvar consultas permission_view_wiki_pages: Ver wiki permission_rename_wiki_pages: Renomear páginas wiki permission_edit_time_entries: Editar tempo gasto permission_edit_own_issue_notes: Editar suas próprias notas setting_gravatar_enabled: Usar ícones do Gravatar label_example: Exemplo text_repository_usernames_mapping: "Seleciona ou atualiza os usuários do Redmine mapeando para cada usuário encontrado no log do repositório.\nUsuários com o mesmo login ou e-mail no Redmine e no repositório serão mapeados automaticamente." permission_edit_own_messages: Editar próprias mensagens permission_delete_own_messages: Excluir próprias mensagens label_user_activity: "Atividade de %{value}" label_updated_time_by: "Atualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser exibido.' setting_diff_max_lines_displayed: Número máximo de linhas exibidas no diff text_plugin_assets_writable: Diretório de plugins gravável warning_attachments_not_saved: "%{count} arquivo(s) não puderam ser salvo(s)." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Exibição field_editable: Editável setting_repository_log_display_limit: Número máximo de revisões exibidas no arquivo de log setting_file_max_size_displayed: Tamanho máximo dos arquivos textos exibidos em linha field_content: Conteúdo label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente label_date_from_to: De %{start} até %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) filha(s) e descendente(s). O que você quer fazer? text_wiki_page_reassign_children: Reatribuir páginas filhas para esta página pai text_wiki_page_nullify_children: Manter as páginas filhas como páginas raízes text_wiki_page_destroy_children: Excluir páginas filhas e todas suas descendentes setting_password_min_length: Comprimento mínimo para senhas field_group_by: Agrupar por mail_subject_wiki_content_updated: "A página wiki '%{id}' foi atualizada" label_wiki_content_added: Página wiki adicionada mail_subject_wiki_content_added: "A página wiki '%{id}' foi adicionada" mail_body_wiki_content_added: A página wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página wiki atualizada mail_body_wiki_content_updated: A página wiki '%{id}' foi atualizada por %{author}. permission_add_project: Criar projeto setting_new_project_user_role_id: Papel atribuído a um usuário não-administrador que cria um projeto label_view_all_revisions: Ver todas as revisões label_tag: Tag label_branch: Branch text_journal_changed: "%{label} alterado de %{old} para %{new}" text_journal_set_to: "%{label} ajustado para %{value}" text_journal_deleted: "%{label} excluído (%{old})" label_group_plural: Grupos label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempos gastos text_journal_added: "%{label} %{value} adicionado" field_active: Ativo enumeration_system_activity: Atividade do sistema permission_delete_issue_watchers: Excluir observadores version_status_closed: fechado version_status_locked: bloqueado version_status_open: aberto error_can_not_reopen_issue_on_closed_version: Uma tarefa atribuída a uma versão fechada não pode ser reaberta label_user_anonymous: Anônimo button_move_and_follow: Mover e seguir setting_default_projects_modules: Módulos habilitados por padrão para novos projetos setting_gravatar_default: Imagem-padrão do Gravatar field_sharing: Compartilhamento label_version_sharing_hierarchy: Com a hierarquia do projeto label_version_sharing_system: Com todos os projetos label_version_sharing_descendants: Com subprojetos label_version_sharing_tree: Com a árvore do projeto label_version_sharing_none: Sem compartilhamento error_can_not_archive_project: Este projeto não pode ser arquivado button_copy_and_follow: Copiar e seguir label_copy_source: Origem setting_issue_done_ratio: Calcular o percentual de conclusão da tarefa setting_issue_done_ratio_issue_status: Usar a situação da tarefa error_issue_done_ratios_not_updated: O percentual de conclusão das tarefas não foi atualizado. error_workflow_copy_target: Por favor, selecione os tipos de tarefa e os papéis alvo setting_issue_done_ratio_issue_field: Use o campo da tarefa label_copy_same_as_target: Mesmo alvo label_copy_target: Alvo notice_issue_done_ratios_updated: Percentual de conclusão atualizados. error_workflow_copy_source: Por favor, selecione um tipo de tarefa e papel de origem label_update_issue_done_ratios: Atualizar percentual de conclusão das tarefas setting_start_of_week: Início da semana field_watcher: Observador permission_view_issues: Ver tarefas label_display_used_statuses_only: Somente exibir situações que são usadas por este tipo de tarefa label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso à API button_show: Exibir label_api_access_key_created_on: Chave de acesso à API criado há %{value} atrás label_feeds_access_key: Chave de acesso ao Atom notice_api_access_key_reseted: Sua chave de acesso à API foi redefinida. setting_rest_api_enabled: Habilitar a API REST label_missing_api_access_key: Chave de acesso à API faltando label_missing_feeds_access_key: Chave de acesso ao Atom faltando text_line_separated: Múltiplos valores permitidos (uma linha para cada valor). setting_mail_handler_body_delimiters: Truncar e-mails após uma destas linhas permission_add_subprojects: Criar subprojetos label_subproject_new: Novo subprojeto text_own_membership_delete_confirmation: |- Você irá excluir algumas de suas próprias permissões e não estará mais apto a editar este projeto após esta operação. Você tem certeza que deseja continuar? label_close_versions: Fechar versões concluídas label_board_sticky: Marcado label_board_locked: Bloqueado permission_export_wiki_pages: Exportar páginas wiki setting_cache_formatted_text: Realizar cache de texto formatado permission_manage_project_activities: Gerenciar atividades do projeto error_unable_delete_issue_status: Não foi possível excluir situação da tarefa (%{value}) label_profile: Perfil permission_manage_subtasks: Gerenciar subtarefas field_parent_issue: Tarefa mãe label_subtask_plural: Subtarefas label_project_copy_notifications: Enviar notificações por e-mail ao copiar projeto error_can_not_delete_custom_field: Não foi possível excluir o campo personalizado error_unable_to_connect: Não foi possível conectar (%{value}) error_can_not_remove_role: Este papel está em uso e não pode ser excluído. error_can_not_delete_tracker_html: Este tipo de tarefa está atribuído a alguma(s) tarefa(s) e não pode ser excluído.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Falha ao salvar membro(s): %{errors}." text_zoom_out: Afastar zoom text_zoom_in: Aproximar zoom notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas. field_time_entries: Registro de horas project_module_gantt: Gantt project_module_calendar: Calendário button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}" field_text: Campo de texto setting_default_notification_option: Opção padrão de notificação label_user_mail_option_only_my_events: Somente de tarefas que observo ou que esteja envolvido label_user_mail_option_none: Sem eventos field_member_of_group: Responsável pelo grupo field_assigned_to_role: Papel do responsável notice_not_authorized_archived_project: O projeto que você está tentando acessar foi arquivado. label_principal_search: "Pesquisar por usuários ou grupos:" label_user_search: "Pesquisar por usuário:" field_visible: Visível setting_emails_header: Cabeçalho do e-mail setting_commit_logtime_activity_id: Atividade para registrar horas text_time_logged_by_changeset: Aplicado no conjunto de alterações %{value}. setting_commit_logtime_enabled: Habilitar registro de horas notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max}) setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gantt field_warn_on_leaving_unsaved: Alertar-me ao sair de uma página sem salvar o texto text_warn_on_leaving_unsaved: A página atual contém texto que não foi salvo e será perdido se você sair desta página. label_my_queries: Minhas consultas personalizadas text_journal_changed_no_detail: "%{label} atualizado(a)" label_news_comment_added: Notícia recebeu um comentário button_expand_all: Expandir tudo button_collapse_all: Recolher tudo label_additional_workflow_transitions_for_assignee: Transições adicionais permitidas quando o usuário é o responsável pela tarefa label_additional_workflow_transitions_for_author: Transições adicionais permitidas quando o usuário é o autor label_bulk_edit_selected_time_entries: Alteração em massa do registro de horas text_time_entries_destroy_confirmation: Tem certeza que quer excluir o(s) registro(s) de horas selecionado(s)? label_role_anonymous: Anônimo label_role_non_member: Não Membro label_issues_visibility_own: Tarefas criadas ou atribuídas ao usuário field_issues_visibility: Visibilidade das tarefas label_issues_visibility_all: Todas as tarefas permission_set_own_issues_private: Alterar as próprias tarefas para públicas ou privadas field_is_private: Privado permission_set_issues_private: Alterar tarefas para públicas ou privadas label_issues_visibility_public: Todas as tarefas não privadas text_issues_destroy_descendants_confirmation: Isto também irá excluir %{count} subtarefa(s). field_commit_logs_encoding: Codificação das mensagens de commit field_scm_path_encoding: Codificação do caminho text_scm_path_encoding_note: "Padrão: UTF-8" field_path_to_repository: Caminho para o repositório field_root_directory: Diretório raiz field_cvs_module: Módulo field_cvsroot: CVSROOT text_mercurial_repository_note: "Repositório local (ex.: /hgrepo, c:\\hgrepo)" text_scm_command: Comando text_scm_command_version: Versão label_git_report_last_commit: Relatar última alteração para arquivos e diretórios text_scm_config: Você pode configurar seus comandos de versionamento em config/configurations.yml. Por favor reinicie a aplicação após alterá-lo. text_scm_command_not_available: Comando de versionamento não disponível. Por favor verifique as configurações no painel de administração. notice_issue_successful_create: Tarefa %{id} criada. label_between: entre setting_issue_group_assignment: Permitir atribuições de tarefas a grupos label_diff: diff text_git_repository_note: "Repositório esta vazio e é local (ex: /gitrepo, c:\\gitrepo)" description_query_sort_criteria_direction: Escolher ordenação description_project_scope: Escopo da pesquisa description_filter: Filtro description_user_mail_notification: Configuração de notificações por e-mail description_message_content: Conteúdo da mensagem description_available_columns: Colunas disponíveis description_issue_category_reassign: Escolha uma categoria de tarefas description_search: Campo de busca description_notes: Notas description_choose_project: Projetos description_query_sort_criteria_attribute: Atributo de ordenação description_wiki_subpages_reassign: Escolha uma nova página pai description_selected_columns: Colunas selecionadas label_parent_revision: Pai label_child_revision: Filho error_scm_annotate_big_text_file: A entrada não pode ser anotada, pois excede o tamanho máximo do arquivo de texto. setting_default_issue_start_date_to_creation_date: Usar data corrente como data inicial para novas tarefas button_edit_section: Editar esta seção setting_repositories_encodings: Codificação dos repositórios e anexos description_all_columns: Todas as colunas button_export: Exportar label_export_options: "Opções de exportação %{export_format}" error_attachment_too_big: Este arquivo não pode ser enviado porque excede o tamanho máximo permitido (%{max_size}) notice_failed_to_save_time_entries: "Falha ao salvar %{count} de %{total} horas trabalhadas: %{ids}." label_x_issues: zero: 0 tarefa one: 1 tarefa other: "%{count} tarefas" label_repository_new: Novo repositório field_repository_is_default: Repositório principal label_copy_attachments: Copiar anexos label_item_position: "%{position}/%{count}" label_completed_versions: Versões concluídas text_project_identifier_info: Somente letras minúsculas (a-z), números, traços e sublinhados são permitidos.
    Uma vez salvo, o identificador não pode ser alterado. field_multiple: Múltiplos valores setting_commit_cross_project_ref: Permitir que tarefas de todos os outros projetos sejam refenciadas e resolvidas text_issue_conflict_resolution_add_notes: Adicionar minhas anotações e descartar minhas outras mudanças text_issue_conflict_resolution_overwrite: Aplicar as minhas alterações de qualquer maneira (notas anteriores serão mantidas, mas algumas mudanças podem ser substituídas) notice_issue_update_conflict: A tarefa foi atualizada por um outro usuário, enquanto você estava editando. text_issue_conflict_resolution_cancel: Descartar todas as minhas mudanças e reexibir %{link} permission_manage_related_issues: Gerenciar tarefas relacionadas field_auth_source_ldap_filter: Filtro LDAP label_search_for_watchers: Procurar por outros observadores para adicionar notice_account_deleted: Sua conta foi excluída permanentemente. setting_unsubscribe: Permitir aos usuários excluir sua própria conta button_delete_my_account: Excluir minha conta text_account_destroy_confirmation: |- Tem certeza que quer continuar? Sua conta será excluída permanentemente, sem qualquer forma de reativá-la. error_session_expired: A sua sessão expirou. Por favor, faça login novamente. text_session_expiration_settings: "Aviso: a alteração dessas configurações pode expirar as sessões atuais, incluindo a sua." setting_session_lifetime: Duração máxima da sessão setting_session_timeout: Tempo limite de inatividade da sessão label_session_expiration: "Expiração da sessão" permission_close_project: Fechar / reabrir o projeto button_close: Fechar button_reopen: Reabrir project_status_active: ativo project_status_closed: fechado project_status_archived: arquivado text_project_closed: Este projeto está fechado e somente leitura. notice_user_successful_create: Usuário %{id} criado. field_core_fields: campos padrão field_timeout: Tempo de espera (em segundos) setting_thumbnails_enabled: Exibir miniaturas de anexos setting_thumbnails_size: Tamanho das miniaturas (em pixels) label_status_transitions: Estados das transições label_fields_permissions: Permissões de campos label_readonly: somente leitura label_required: Obrigatório text_repository_identifier_info: Somente letras minúsculas (az), números, traços e sublinhados são permitidos
    Uma vez salvo, o identificador não pode ser alterado. field_board_parent: Fórum Pai label_attribute_of_project: "Projeto %{name}" label_attribute_of_author: "autor %{name}" label_attribute_of_assigned_to: "atribuído a %{name}" label_attribute_of_fixed_version: "versão %{name}" label_copy_subtasks: Copiar subtarefas label_copied_to: copiada label_copied_from: copiado label_any_issues_in_project: qualquer tarefa do projeto label_any_issues_not_in_project: qualquer tarefa que não está no projeto field_private_notes: notas privadas permission_view_private_notes: Ver notas privadas permission_set_notes_private: Permitir alterar notas para privada label_no_issues_in_project: sem tarefas no projeto label_any: todos label_last_n_weeks: "últimas %{count} semanas" setting_cross_project_subtasks: Permitir subtarefas entre projetos label_cross_project_descendants: com subprojetos label_cross_project_tree: Com a árvore do Projeto label_cross_project_hierarchy: Com uma hierarquia do Projeto label_cross_project_system: Com todos os Projetos button_hide: Omitir setting_non_working_week_days: dias não úteis label_in_the_next_days: nos próximos dias label_in_the_past_days: nos dias anteriores label_attribute_of_user: Usuário %{name} text_turning_multiple_off: Se você desativar vários valores, eles serão removidos, a fim de preservar somente um valor por item. label_attribute_of_issue: Tarefa %{name} permission_add_documents: Adicionar documentos permission_edit_documents: Editar documentos permission_delete_documents: Excluir documentos label_gantt_progress_line: Linha de progresso setting_jsonp_enabled: Ativar suporte JSONP field_inherit_members: Herdar membros field_closed_on: Concluído field_generate_password: Gerar senha setting_default_projects_tracker_ids: Tipos padrões para novos projeto label_total_time: Total notice_account_not_activated_yet: Sua conta ainda não foi ativada. Se você deseja receber um novo email de ativação, por favor clique aqui. notice_account_locked: Sua conta está bloqueada. label_hidden: Visibilidade label_visibility_private: para mim label_visibility_roles: para os papéis label_visibility_public: para qualquer usuário field_must_change_passwd: É necessário alterar sua senha na próxima vez que tentar acessar sua conta notice_new_password_must_be_different: A nova senha deve ser diferente da senha atual setting_mail_handler_excluded_filenames: Exclui anexos por nome text_convert_available: Conversor ImageMagick disponível (opcional) label_link: Link label_only: somente label_drop_down_list: lista suspensa label_checkboxes: checkboxes label_link_values_to: Valores do link para URL setting_force_default_language_for_anonymous: Forçar linguagem padrão para usuários anônimos setting_force_default_language_for_loggedin: Forçar linguagem padrão para usuários logados label_custom_field_select_type: Selecione o tipo de objeto ao qual o campo personalizado é para ser anexado label_issue_assigned_to_updated: Atribuição atualizada label_check_for_updates: Verificar atualizações label_latest_compatible_version: Última versão compatível label_unknown_plugin: Plugin desconhecido label_radio_buttons: botões radio label_group_anonymous: Usuários anônimos label_group_non_member: Usuários não membros label_add_projects: Adicionar projetos field_default_status: Situação padrão text_subversion_repository_note: 'Exemplos: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Visibilidade do usuário label_users_visibility_all: Todos usuários ativos label_users_visibility_members_of_visible_projects: Membros de projetos visíveis label_edit_attachments: Editar arquivos anexados setting_link_copied_issue: Relacionar tarefas copiadas label_link_copied_issue: Relacionar tarefas copiadas label_ask: Perguntar label_search_attachments_yes: Procurar nome do arquivo e descrição anexados label_search_attachments_no: Não procurar anexados label_search_attachments_only: Procurar somente anexados label_search_open_issues_only: Somente tarefas abertas field_address: E-mail setting_max_additional_emails: Número máximo de e-mails adicionais label_email_address_plural: Emails label_email_address_add: Adicionar endereço de email label_enable_notifications: Habilitar notificações label_disable_notifications: Desabilitar notificações setting_search_results_per_page: Resultados de pesquisa por página label_blank_value: Branco permission_copy_issues: Copiar tarefas error_password_expired: Sua senha expirou ou requer atualização field_time_entries_visibility: Visibilidade do log de tempo setting_password_max_age: Requer troca de senha depois label_parent_task_attributes: Atributos das tarefas mãe label_parent_task_attributes_derived: Calculado das subtarefas label_parent_task_attributes_independent: Independente das subtarefas label_time_entries_visibility_all: Todas as entradas de tempo label_time_entries_visibility_own: Entradas de tempo criadas pelo usuário label_member_management: Gerenciamento de membros label_member_management_all_roles: Todas os papéis label_member_management_selected_roles_only: Somente esses papéis label_password_required: Confirme sua senha para continuar label_total_spent_time: Tempo gasto geral notice_import_finished: "%{count} itens foram importados" notice_import_finished_with_errors: "%{count} fora de %{total} não puderam ser importados" error_invalid_file_encoding: O arquivo não é válido %{encoding} é a codificação do arquivo error_invalid_csv_file_or_settings: O arquivo não é um arquivo CSV ou não corresponde às definições abaixo (%{value}) error_can_not_read_import_file: Ocorreu um erro ao ler o arquivo para importação permission_import_issues: Importar tarefas label_import_issues: Importar tarefas label_select_file_to_import: Selecione o arquivo para importação label_fields_separator: Campo separador label_fields_wrapper: Field empacotador label_encoding: Codificação label_comma_char: Vírgula label_semi_colon_char: Ponto e vírgula label_quote_char: Citar label_double_quote_char: Citação dupla label_fields_mapping: Mapeamento de campos label_file_content_preview: Pré-visualizar conteúdo do arquivo label_create_missing_values: Criar valores em falta button_import: Importar field_total_estimated_hours: Tempo estimado geral label_api: API label_total_plural: Totais label_assigned_issues: Tarefas atribuídas label_field_format_enumeration: Chave/Lista de valores label_f_hour_short: '%{value} h' field_default_version: Versão padrão error_attachment_extension_not_allowed: Extensão anexada %{extension} não é permitida setting_attachment_extensions_allowed: Permitir extensões setting_attachment_extensions_denied: Negar extensões label_any_open_issues: Quaisquer tarefas abertas label_no_open_issues: Sem tarefas abertas label_default_values_for_new_users: Valores padrões para novos usuários setting_sys_api_key: Chave de API setting_lost_password: Perdi minha senha mail_subject_security_notification: Notificação de segurança mail_body_security_notification_change: ! '%{field} foi alterado.' mail_body_security_notification_change_to: ! '%{field} foi alterado para %{value}.' mail_body_security_notification_add: ! '%{field} %{value} foi adicionado.' mail_body_security_notification_remove: ! '%{field} %{value} foi excluído.' mail_body_security_notification_notify_enabled: Endereço de e-mail %{value} agora recebe notificações. mail_body_security_notification_notify_disabled: Endereço de e-mail %{value} deixou de receber notificações. mail_body_settings_updated: ! 'As seguintes configurações foram alteradas:' field_remote_ip: Endereço IP label_wiki_page_new: Nova página wiki label_relations: Relações button_filter: Filtro mail_body_password_updated: Sua senha foi alterada. label_no_preview: Não há visualização disponível error_no_tracker_allowed_for_new_issue_in_project: O projeto não tem nenhum tipo de tarefa para o qual você pode criar um chamado label_tracker_all: Todos os tipos de tarefa label_new_project_issue_tab_enabled: Exibir "Nova tarefa" em aba setting_new_item_menu_tab: Aba menu do projeto para criação de novos objetos label_new_object_tab_enabled: Exibir o "+" suspenso error_no_projects_with_tracker_allowed_for_new_issue: Não há projetos com tipos de tarefa para os quais você pode criar uma tarefa field_textarea_font: Fonte usada para áreas de texto label_font_default: Fonte padrão label_font_monospace: Fonte monoespaçada label_font_proportional: Fonte proporcional setting_timespan_format: Formato de tempo label_table_of_contents: Ãndice setting_commit_logs_formatting: Aplicar formatação de texto às mensagens de commit setting_mail_handler_enable_regex: Ativar a utilização de expressões regulares error_move_of_child_not_possible: 'A subtarefa %{child} não pode ser movida para o novo projeto: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: O tempo gasto não pode ser alterado numa tarefa que será apagada setting_timelog_required_fields: Campos obrigatórios para registro de horas label_attribute_of_object: '%{object_name} %{name}' label_user_mail_option_only_assigned: Somente de tarefas que observo ou que estão atribuídas a mim label_user_mail_option_only_owner: Somente de tarefas que observo ou que foram criadas por mim warning_fields_cleared_on_bulk_edit: As alterações vão apagar valores de um ou mais campos nos objetos selecionados field_updated_by: Atualizado por field_last_updated_by: Última atualização por field_full_width_layout: Layout utiliza toda a largura label_last_notes: Últimas notas field_digest: Verificador field_default_assigned_to: Responsável padrão setting_show_custom_fields_on_registration: Mostrar campos personalizados no registro permission_view_news: Ver notícias label_no_preview_alternative_html: Visualização não disponível. Faça o %{link} do arquivo. label_no_preview_download: download setting_close_duplicate_issues: Fechar tarefas duplicadas automaticamente error_exceeds_maximum_hours_per_day: Não é possível registrar mais de %{max_hours} horas no mesmo dia (%{logged_hours} horas já foram registradas) setting_time_entry_list_defaults: Registro de horas padrão setting_timelog_accept_0_hours: Aceitar registros de horas com 0 horas setting_timelog_max_hours_per_day: Máximo de horas que podem ser registradas por dia por usuário label_x_revisions: "%{count} revisões" error_can_not_delete_auth_source: Este modo de autenticação está sendo utilizado e não pode ser removido. button_actions: Ações mail_body_lost_password_validity: Por favor, esteja ciente de que você pode alterar a senha apenas uma vez utilizando este link. text_login_required_html: Quando a autenticação não é obrigatória, projetos públicos e seus conteúdos estão disponíveis abertamente na rede. Você pode editar as permissões aplicáveis. label_login_required_yes: 'Sim' label_login_required_no: Não, permitir acesso anônimo a projetos públicos text_project_is_public_non_member: Projetos públicos e seus conteúdos estão disponíveis para todos os usuários logados. text_project_is_public_anonymous: Projetos públicos e seus conteúdos estão disponíveis abertamente na rede. label_version_and_files: Versão (%{count}) e Arquivos label_ldap: LDAP label_ldaps_verify_none: LDAPS (sem verificação de certificado) label_ldaps_verify_peer: LDAPS label_ldaps_warning: É recomendado utilizar uma conexão LDAPS criptografada com verificação de certificado para evitar qualquer manipulação durante o processo de autenticação. label_nothing_to_preview: Nada para visualizar error_token_expired: Este link de recuperação de senha expirou. Por favor, tente novamente. error_spent_on_future_date: Não é possível registrar o tempo em uma data futura setting_timelog_accept_future_dates: Permitir registros de tempo em datas futuras label_delete_link_to_subtask: Excluir relação error_not_allowed_to_log_time_for_other_users: Você não possuí permissão para registrar o tempo para outros usuários permission_log_time_for_other_users: Tempo de registro gasto para outros usuários label_tomorrow: amanhã label_next_week: próxima semana label_next_month: próximo mês text_role_no_workflow: Não foi definido fluxo de trabalho para este papel text_status_no_workflow: Nenhum tipo de tarefa utiliza esta situação nos fluxos de trabalho setting_mail_handler_preferred_body_part: Parte preferida de e-mails multipartes (HTML) setting_show_status_changes_in_mail_subject: Exibir mudança de situação no título do email de notificação data tarefa label_inherited_from_parent_project: Herdado do projeto pai label_inherited_from_group: Herdado do grupo %{name} label_trackers_description: Descrição dos tipos de tarefa label_open_trackers_description: Ver todas as descrições dos tipos de tarefas label_preferred_body_part_text: Texto label_preferred_body_part_html: HTML field_parent_issue_subject: Assunto da tarefa pai permission_edit_own_issues: Editar as próprias tarefas text_select_apply_tracker: Selecione o tipo de tarefa label_updated_issues: Tarefas atualizadas text_avatar_server_config_html: O servidor de avatar atual é % {url} . Você pode configurá-lo em config / configuration.yml. setting_gantt_months_limit: Número máximo de meses exibidos no gráfico de Gantt permission_import_time_entries: Importar tempo gasto label_import_notifications: Enviar notificações por e-mail durante a importação text_gs_available: Suporte ao ImageMagick PDF disponível (opcional) field_recently_used_projects: Número de projetos usados recentemente no acesso rápido label_optgroup_bookmarks: Marcadores label_optgroup_recents: Recentes button_project_bookmark: Adicionar marcador button_project_bookmark_delete: Remover marcador field_history_default_tab: Aba padrão no histórico das tarefas label_issue_history_properties: Campos alterados label_issue_history_notes: Notas label_last_tab_visited: Última aba visitada field_unique_id: ID único text_no_subject: sem assunto setting_password_required_char_classes: Classes de caracteres obrigatórias para as senhas label_password_char_class_uppercase: Letras maiúsculas label_password_char_class_lowercase: Letras minúsculas label_password_char_class_digits: digitos label_password_char_class_special_chars: caracteres especiais text_characters_must_contain: Precisa conter %{character_classes}. label_starts_with: começando com label_ends_with: terminando com label_issue_fixed_version_updated: Versão atualizada setting_project_list_defaults: Padrão da lista de projetos label_display_type: Exibir resultados como label_display_type_list: Lista label_display_type_board: Quadro label_my_bookmarks: Meus marcaroes label_import_time_entries: Importar tempo gasto field_toolbar_language_options: Barra de idiomas para destaque de código label_user_mail_notify_about_high_priority_issues_html: Também me notifique sobre problemas com prioridade de %{prio} ou maior label_assign_to_me: Atribuir para mim notice_issue_not_closable_by_open_tasks: Este problema não pode ser fechado porque possui pelo menos uma subtarefa aberta. notice_issue_not_closable_by_blocking_issue: Este problema não pode ser fechado porque está bloqueado por pelo menos um problema em aberto. notice_issue_not_reopenable_by_closed_parent_issue: Este problema não pode ser reaberto porque o problema pai está fechado. error_bulk_download_size_too_big: Esses anexos não podem ser baixados em massa porque o tamanho total dos arquivos excede o tamanho máximo permitido (%{max_size}) setting_bulk_download_max_size: Tamanho total máximo para download em massa label_download_all_attachments: Baixar todos os arquivos error_attachments_too_many: Este arquivo não pode ser carregado porque excede o número máximo de arquivos que podem ser anexados simultaneamente (%{max_number_of_files}) setting_email_domains_allowed: Domínios de e-mail permitidos setting_email_domains_denied: Domínios de e-mail não permitidos field_passwd_changed_on: Senha alterada pela última vez label_relations_mapping: Mapeamento de relações label_import_users: Importar usuários label_days_to_html: "%{days} dias até %{date}" setting_twofa: Autenticação de dois fatores label_optional: Opcional label_required_lower: Obrigatório button_disable: Desativar twofa__totp__name: Aplicativo autenticador twofa__totp__text_pairing_info_html: Escaneie este código QR ou insira a chave em texto simples em um aplicativo TOTP (por exemplo, Google Authenticator, Authy, Duo Mobile) e insira o código no campo abaixo para ativar a autenticação de dois fatores. twofa__totp__label_plain_text_key: Chave em texto simples twofa__totp__label_activate: Ativar aplicativo autenticador twofa_currently_active: 'Atualmente ativo: %{twofa_scheme_name}' twofa_not_active: Não ativado twofa_label_code: Código twofa_hint_disabled_html: Configurar %{label} desativará e desvinculará dispositivos de autenticação de dois fatores para todos os usuários. twofa_hint_required_html: Configurar %{label} exigirá que todos os usuários configurem a autenticação de dois fatores no próximo login. twofa_label_setup: Ativar autenticação de dois fatores twofa_label_deactivation_confirmation: Desativar autenticação de dois fatores twofa_notice_select: 'Por favor, selecione o esquema de autenticação de dois fatores que você gostaria de usar:' twofa_warning_require: O administrador exige que você ative a autenticação de dois fatores. twofa_activated: Autenticação de dois fatores ativada com sucesso. Recomenda-se gerar códigos de backup para sua conta. twofa_deactivated: Autenticação de dois fatores desativada. twofa_mail_body_security_notification_paired: Autenticação de dois fatores ativada com sucesso usando %{field}. twofa_mail_body_security_notification_unpaired: Autenticação de dois fatores desativada para sua conta. twofa_mail_body_backup_codes_generated: Novos códigos de backup para autenticação de dois fatores gerados. twofa_mail_body_backup_code_used: Um código de backup de autenticação de dois fatores foi utilizado. twofa_invalid_code: O código é inválido ou está desatualizado. twofa_label_enter_otp: Por favor, insira seu código de autenticação de dois fatores. twofa_too_many_tries: Muitas tentativas. twofa_resend_code: Reenviar código twofa_code_sent: Um código de autenticação foi enviado para você. twofa_generate_backup_codes: Gerar códigos de backup twofa_text_generate_backup_codes_confirmation: Isso invalidará todos os códigos de backup existentes e gerará novos. Gostaria de continuar? twofa_notice_backup_codes_generated: Seus códigos de backup foram gerados. twofa_warning_backup_codes_generated_invalidated: Novos códigos de backup foram gerados. Seus códigos existentes de %{time} agora são inválidos. twofa_label_backup_codes: Códigos de backup de autenticação de dois fatores twofa_text_backup_codes_hint: Use esses códigos em vez de uma senha única caso você não tenha acesso ao seu segundo fator. Cada código só pode ser usado uma vez. Recomenda-se imprimir e armazená-los em um lugar seguro. twofa_text_backup_codes_created_at: Códigos de backup gerados em %{datetime}. twofa_backup_codes_already_shown: Os códigos de backup não podem ser exibidos novamente, por favor, gere novos códigos de backup se necessário. error_can_not_execute_macro_html: Erro ao executar o macro %{name} (%{error}) error_macro_does_not_accept_block: Este macro não aceita um bloco de texto error_childpages_macro_no_argument: Sem argumento, este macro só pode ser chamado a partir de páginas wiki error_circular_inclusion: Inclusão circular detectada error_page_not_found: Página não encontrada error_filename_required: Nome do arquivo é necessário error_invalid_size_parameter: Parâmetro de tamanho inválido error_attachment_not_found: Anexo %{name} não encontrado permission_delete_project: Excluir o projeto field_twofa_scheme: Esquema de autenticação de dois fatores. text_user_destroy_confirmation: Tem certeza de que deseja excluir este usuário e remover todas as referências a ele? Isso não pode ser desfeito. Muitas vezes, bloquear um usuário em vez de excluí-lo é a melhor solução. Para confirmar, por favor, insira o login dele (%{login}) abaixo. text_project_destroy_enter_identifier: Para confirmar, insira o identificador do projeto (%{identifier}) abaixo. button_add_subtask: Adicionar subtarefa notice_invalid_watcher: 'Observador inválido: O usuário não receberá nenhuma notificação porque não tem acesso para visualizar este objeto.' button_fetch_changesets: Buscar commits permission_view_message_watchers: Ver lista de observadores de mensagens permission_add_message_watchers: Adicionar observadores de mensagens permission_delete_message_watchers: Excluir observadores de mensagens label_message_watchers: Observadores button_copy_link: Copiar link error_invalid_authenticity_token: Token de autenticidade de formulário inválido. error_query_statement_invalid: Ocorreu um erro ao executar a consulta e ele foi registrado. Por favor, reporte este erro ao administrador do Redmine. permission_view_wiki_page_watchers: Ver lista de observadores da página wiki permission_add_wiki_page_watchers: Adicionar observadores da página wiki permission_delete_wiki_page_watchers: Excluir observadores da página wiki label_wiki_page_watchers: Observadores label_attachment_description: Descrição do arquivo error_no_data_in_file: O arquivo não contém dados field_twofa_required: Exigir autenticação de dois fatores twofa_hint_optional_html: Configurar %{label} permitirá que os usuários configurem a autenticação de dois fatores por conta própria, a menos que seja exigida por um dos grupos deles. twofa_text_group_required: Esta configuração só é eficaz quando a configuração global de autenticação de dois fatores está definida como 'opcional'. Atualmente, a autenticação de dois fatores é obrigatória para todos os usuários. twofa_text_group_disabled: Esta configuração só é eficaz quando a configuração global de autenticação de dois fatores está definida como 'opcional'. Atualmente, a autenticação de dois fatore está desativada. field_default_issue_query: Consulta padrão de problemas label_default_queries: for_all_projects: Para todos os projetos for_current_project: Para o projeto atual for_all_users: Para todos os usuários for_this_user: Para este usuário text_allowed_queries_to_select: Consultas públicas (visíveis para qualquer usuário) apenas selecionáveis text_all_migrations_have_been_run: Todas as migrações de banco de dados foram executadas button_save_object: Salvar %{object_name} button_edit_object: Editar %{object_name} button_delete_object: Excluir %{object_name} text_setting_config_change: Você pode configurar o comportamento em config/configuration.yml. Por favor, reinicie a aplicação após editá-lo. label_bulk_edit: Edição em massa button_create_and_follow: Criar e seguir label_subtask: Subtarefa label_default_query: Consulta padrão field_default_project_query: Consulta padrão do projeto label_required_administrators: Necessária para administradores twofa_hint_required_administrators_html: Configurar %{label} se comporta como opcional, mas exigirá que todos os usuários com direitos de administração configurem a autenticação de dois fatores no próximo login. label_auto_watch_on: Assistir automaticamente label_auto_watch_on_issue_contributed_to: Problemas aos quais contribui text_project_close_confirmation: Tem certeza de que deseja fechar o projeto '%{value}' para torná-lo somente leitura? text_project_reopen_confirmation: Tem certeza de que deseja reabrir o projeto '%{value}'? text_project_archive_confirmation: Tem certeza de que deseja arquivar o projeto '%{value}'? mail_destroy_project_failed: O projeto %{value} não pôde ser excluído. mail_destroy_project_successful: O projeto %{value} foi excluído com sucesso. mail_destroy_project_with_subprojects_successful: O projeto %{value} e seus subprojetos foram excluídos com sucesso project_status_scheduled_for_deletion: agendado para exclusão text_projects_bulk_destroy_confirmation: Tem certeza de que deseja excluir os projetos selecionados e os dados relacionados? text_projects_bulk_destroy_head: | Você está prestes a excluir permanentemente os seguintes projetos, incluindo possíveis subprojetos e quaisquer dados relacionados. Por favor, reveja as informações abaixo e confirme se é isso que você deseja fazer. Esta ação não pode ser desfeita. text_projects_bulk_destroy_confirm: Para confirmar, por favor insira "%{yes}" na caixa abaixo. text_subprojects_bulk_destroy: 'incluindo seu(s) subprojeto(s): %{value}' field_current_password: Senha atual sudo_mode_new_info_html: "O que está acontecendo? Você precisa reconfirmar sua senha antes de realizar quaisquer ações administrativas, isso garante que sua conta permaneça protegida." label_edited: Editado label_time_by_author: "%{time} por %{author}" field_default_time_entry_activity: Atividade padrão de tempo gasto field_is_member_of_group: Membro do grupo text_users_bulk_destroy_head: Você está prestes a excluir os seguintes usuários e remover todas as referências a eles. Isso não pode ser desfeito. Muitas vezes, bloquear usuários em vez de excluí-los é a melhor solução. text_users_bulk_destroy_confirm: Para confirmar, por favor, insira "%{yes}" abaixo. permission_select_project_publicity: Definir projeto como público ou privado label_auto_watch_on_issue_created: Problemas que criei field_any_searchable: Qualquer texto pesquisável label_contains_any_of: contém qualquer um de button_apply_issues_filter: Aplicar filtro de problemas label_view_previous_annotation: Ver anotação antes desta alteração label_has_been: foi label_has_never_been: nunca foi label_changed_from: alterado de label_issue_statuses_description: Descrição dos status de problemas label_open_issue_statuses_description: Ver toda a descrição dos status de problemas text_select_apply_issue_status: Selecionar status do problema field_name_or_email_or_login: Nome, e-mail ou login text_default_active_job_queue_changed: Adaptador de fila padrão que é bem adequado apenas para dev/test foi alterado label_option_auto_lang: automático label_issue_attachment_added: Anexo adicionado field_estimated_remaining_hours: Tempo restante estimado setting_issue_done_ratio_interval: Intervalo de opções da taxa de conclusão setting_copy_attachments_on_issue_copy: Copiar anexos ao copiar field_thousands_delimiter: Separador de milhares label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/pt.yml000066400000000000000000002213351500112024600171770ustar00rootroot00000000000000# Portuguese localization for Ruby on Rails # by Ricardo Otero # by Alberto Ferreira # by: Pedro Araújo # by Rui Rebelo pt: support: array: sentence_connector: "e" skip_last_comma: true direction: ltr date: formats: default: "%d/%m/%Y" short: "%d de %B" long: "%d de %B de %Y" only_day: "%d" day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado] abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb] month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro] abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez] order: - :day - :month - :year time: formats: default: "%A, %d de %B de %Y, %H:%M:%S %z" time: "%H:%M" short: "%d/%m, %H:%M hs" long: "%A, %d de %B de %Y, %H:%Mh" am: 'am' pm: 'pm' datetime: distance_in_words: half_a_minute: "meio minuto" less_than_x_seconds: one: "menos de 1 segundo" other: "menos de %{count} segundos" x_seconds: one: "1 segundo" other: "%{count} segundos" less_than_x_minutes: one: "menos de 1 minuto" other: "menos de %{count} minutos" x_minutes: one: "1 minuto" other: "%{count} minutos" about_x_hours: one: "aproximadamente 1 hora" other: "aproximadamente %{count} horas" x_hours: one: "1 hora" other: "%{count} horas" x_days: one: "1 dia" other: "%{count} dias" about_x_months: one: "aproximadamente 1 mês" other: "aproximadamente %{count} meses" x_months: one: "1 mês" other: "%{count} meses" about_x_years: one: "aproximadamente 1 ano" other: "aproximadamente %{count} anos" over_x_years: one: "mais de 1 ano" other: "mais de %{count} anos" almost_x_years: one: "quase 1 ano" other: "quase %{count} anos" number: format: precision: 3 separator: ',' delimiter: '.' currency: format: unit: '€' precision: 2 format: "%u %n" separator: ',' delimiter: '.' percentage: format: delimiter: '' precision: format: delimiter: '' human: format: precision: 3 delimiter: '' storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" activerecord: errors: template: header: one: "Não foi possível guardar este %{model}: 1 erro" other: "Não foi possível guardar este %{model}: %{count} erros" body: "Por favor, verifique os seguintes campos:" messages: inclusion: "não está incluído na lista" exclusion: "não está disponível" invalid: "não é válido" confirmation: "não está de acordo com a confirmação" accepted: "deve ser aceite" empty: "não pode estar vazio" blank: "não pode estar em branco" too_long: "tem demasiados caráteres (máximo: %{count} caráteres)" too_short: "tem poucos caráteres (mínimo: %{count} caráteres)" wrong_length: "não é do tamanho correto (necessita de ter %{count} caráteres)" taken: "não está disponível" not_a_number: "não é um número" greater_than: "tem de ser maior do que %{count}" greater_than_or_equal_to: "tem de ser maior ou igual a %{count}" equal_to: "tem de ser igual a %{count}" less_than: "tem de ser menor do que %{count}" less_than_or_equal_to: "tem de ser menor ou igual a %{count}" odd: "deve ser ímpar" even: "deve ser par" greater_than_start_date: "deve ser maior que a data inicial" not_same_project: "não pertence ao mesmo projeto" circular_dependency: "Esta relação iria criar uma dependência circular" cant_link_an_issue_with_a_descendant: "Não é possível ligar uma tarefa a uma sub-tarefa que lhe é pertencente" earlier_than_minimum_start_date: "não pode ser antes de %{date} devido a tarefas precedentes" not_a_regexp: "não é uma expressão regular válida" open_issue_with_closed_parent: "Uma tarefa aberta não pode ser relacionada com uma tarefa mãe fechada" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Selecione general_text_No: 'Não' general_text_Yes: 'Sim' general_text_no: 'não' general_text_yes: 'sim' general_lang_name: 'Portuguese (Português)' general_csv_separator: ';' general_csv_decimal_separator: ',' general_csv_encoding: ISO-8859-15 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: A conta foi atualizada com sucesso. notice_account_invalid_credentials: Utilizador ou palavra-chave inválidos. notice_account_password_updated: A palavra-chave foi alterada com sucesso. notice_account_wrong_password: Palavra-chave errada. notice_can_t_change_password: Esta conta utiliza uma fonte de autenticação externa. Não é possível alterar a palavra-chave. notice_account_lost_email_sent: Foi-lhe enviado um e-mail com as instruções para escolher uma nova palavra-chave. notice_account_activated: A sua conta foi ativada. É agora possível autenticar-se. notice_successful_create: Criado com sucesso. notice_successful_update: Alterado com sucesso. notice_successful_delete: Apagado com sucesso. notice_successful_connection: Ligado com sucesso. notice_file_not_found: A página que está a tentar aceder não existe ou foi removida. notice_locking_conflict: Os dados foram atualizados por outro utilizador. notice_not_authorized: Não está autorizado a visualizar esta página. notice_email_sent: "Foi enviado um e-mail para %{value}" notice_email_error: "Ocorreu um erro ao enviar o e-mail (%{value})" notice_feeds_access_key_reseted: A sua chave de Atom foi inicializada. notice_failed_to_save_issues: "Não foi possível guardar %{count} tarefa(s) das %{total} selecionadas: %{ids}." notice_account_pending: "A sua conta foi criada e está agora à espera de aprovação do administrador." notice_default_data_loaded: Configuração padrão carregada com sucesso. notice_unable_delete_version: Não foi possível apagar a versão. error_can_t_load_default_data: "Não foi possível carregar a configuração padrão: %{value}" error_scm_not_found: "A entrada ou revisão não foi encontrada no repositório." error_scm_command_failed: "Ocorreu um erro ao tentar aceder ao repositório: %{value}" error_scm_annotate: "A entrada não existe ou não pode ser anotada." error_issue_not_found_in_project: 'A tarefa não foi encontrada ou não pertence a este projeto.' error_ldap_bind_credentials: "Conta/Palavra-chave do LDAP não é válida" mail_subject_lost_password: "Palavra-chave de %{value}" mail_body_lost_password: 'Para mudar a sua palavra-chave, clique na ligação abaixo:' mail_subject_register: "Ativação de conta de %{value}" mail_body_register: 'Para ativar a sua conta, clique na ligação abaixo:' mail_body_account_information_external: "Pode utilizar a conta %{value} para autenticar-se." mail_body_account_information: Informação da sua conta mail_subject_account_activation_request: "Pedido de ativação da conta %{value}" mail_body_account_activation_request: "Um novo utilizador (%{value}) registou-se. A sua conta está à espera de aprovação:" mail_subject_reminder: "Tem %{count} tarefa(s) para entregar nos próximos %{days} dias" mail_body_reminder: "%{count} tarefa(s) que estão atribuídas a si estão agendadas para serem terminadas nos próximos %{days} dias:" field_name: Nome field_description: Descrição field_summary: Sumário field_is_required: Obrigatório field_firstname: Nome field_lastname: Apelido field_mail: E-mail field_filename: Ficheiro field_filesize: Tamanho field_downloads: Downloads field_author: Autor field_created_on: Criado field_updated_on: Alterado field_field_format: Formato field_is_for_all: Para todos os projetos field_possible_values: Valores possíveis field_regexp: Expressão regular field_min_length: Tamanho mínimo field_max_length: Tamanho máximo field_value: Valor field_category: Categoria field_title: Título field_project: Projeto field_issue: Tarefa field_status: Estado field_notes: Notas field_is_closed: Tarefa fechada field_is_default: Valor por omissão field_tracker: Tipo field_subject: Assunto field_due_date: Data de fim field_assigned_to: Atribuído a field_priority: Prioridade field_fixed_version: Versão field_user: Utilizador field_role: Função field_homepage: Página field_is_public: Público field_parent: Sub-projeto de field_is_in_roadmap: Tarefas mostradas no mapa de planificação field_login: Nome de utilizador field_mail_notification: Notificações por e-mail field_admin: Administrador field_last_login_on: Última visita field_language: Língua field_effective_date: Data field_password: Palavra-chave field_new_password: Nova palavra-chave field_password_confirmation: Confirmação field_version: Versão field_type: Tipo field_host: Servidor field_port: Porta field_account: Conta field_base_dn: Base DN field_attr_login: Atributo utilizador field_attr_firstname: Atributo do nome próprio field_attr_lastname: Atributo do último nome field_attr_mail: Atributo e-mail field_onthefly: Criação imediata de utilizadores field_start_date: Data de início field_done_ratio: "% Completo" field_auth_source: Modo de autenticação field_hide_mail: Esconder endereço de e-mail field_comments: Comentário field_url: URL field_start_page: Página inicial field_subproject: Subprojeto field_hours: Horas field_activity: Atividade field_spent_on: Data field_identifier: Identificador field_is_filter: Utilizado como filtro field_issue_to: Tarefa relacionada field_delay: Atraso field_assignable: As tarefas podem ser associadas a esta função field_redirect_existing_links: Redirecionar ligações existentes field_estimated_hours: Tempo estimado field_column_names: Colunas field_time_zone: Fuso horário field_searchable: Pesquisável field_default_value: Valor por omissão field_comments_sorting: Mostrar comentários field_parent_title: Página pai setting_app_title: Título da aplicação setting_welcome_text: Texto de boas vindas setting_default_language: Língua por omissão setting_login_required: Autenticação obrigatória setting_self_registration: Auto-registo setting_attachment_max_size: Tamanho máximo do anexo setting_issues_export_limit: Limite de exportação das tarefas setting_mail_from: E-mail enviado de setting_host_name: Hostname setting_text_formatting: Formatação do texto setting_wiki_compression: Compressão do histórico da Wiki setting_feeds_limit: Limite de conteúdo do feed setting_default_projects_public: Projetos novos são públicos por omissão setting_autofetch_changesets: Procurar automaticamente por commits setting_sys_api_enabled: Ativar Web Service para gestão do repositório setting_commit_ref_keywords: Palavras-chave de referência setting_commit_fix_keywords: Palavras-chave de fecho setting_autologin: Login automático setting_date_format: Formato da data setting_time_format: Formato do tempo setting_cross_project_issue_relations: Permitir relações entre tarefas de projetos diferentes setting_issue_list_default_columns: Colunas na lista de tarefas por omissão setting_emails_footer: Rodapé dos e-mails setting_protocol: Protocolo setting_per_page_options: Opções de objetos por página setting_user_format: Formato de apresentação de utilizadores setting_activity_days_default: Dias mostrados na atividade do projeto setting_display_subprojects_issues: Mostrar as tarefas dos sub-projetos nos projetos principais setting_enabled_scm: Ativar SCM setting_mail_handler_api_enabled: Ativar Web Service para e-mails recebidos setting_mail_handler_api_key: Chave da API setting_sequential_project_identifiers: Gerar identificadores de projeto sequênciais project_module_issue_tracking: Tarefas project_module_time_tracking: Registo de tempo project_module_news: Notícias project_module_documents: Documentos project_module_files: Ficheiros project_module_wiki: Wiki project_module_repository: Repositório project_module_boards: Fórum label_user: Utilizador label_user_plural: Utilizadores label_user_new: Novo utilizador label_project: Projeto label_project_new: Novo projeto label_project_plural: Projetos label_x_projects: zero: sem projetos one: 1 projeto other: "%{count} projetos" label_project_all: Todos os projetos label_project_latest: Últimos projetos label_issue: Tarefa label_issue_new: Nova tarefa label_issue_plural: Tarefas label_issue_view_all: Ver todas as tarefas label_issues_by: "Tarefas por %{value}" label_issue_added: Tarefa adicionada label_issue_updated: Tarefa atualizada label_document: Documento label_document_new: Novo documento label_document_plural: Documentos label_document_added: Documento adicionado label_role: Função label_role_plural: Funções label_role_new: Nova função label_role_and_permissions: Funções e permissões label_member: Membro label_member_new: Novo membro label_member_plural: Membros label_tracker: Tipo label_tracker_plural: Tipos label_tracker_new: Novo tipo label_workflow: Fluxo de trabalho label_issue_status: Estado da tarefa label_issue_status_plural: Estados da tarefa label_issue_status_new: Novo estado label_issue_category: Categoria de tarefa label_issue_category_plural: Categorias de tarefa label_issue_category_new: Nova categoria label_custom_field: Campo personalizado label_custom_field_plural: Campos personalizados label_custom_field_new: Novo campo personalizado label_enumerations: Enumerações label_enumeration_new: Novo valor label_information: Informação label_information_plural: Informações label_register: Registar label_password_lost: Perdi a palavra-chave label_home: Página Inicial label_my_page: Página Pessoal label_my_account: Minha conta label_my_projects: Meus projetos label_administration: Administração label_login: Entrar label_logout: Sair label_help: Ajuda label_reported_issues: Tarefas criadas label_assigned_to_me_issues: Tarefas atribuídas a mim label_registered_on: Registado em label_activity: Atividade label_new: Novo label_logged_as: Ligado como label_environment: Ambiente label_authentication: Autenticação label_auth_source: Modo de autenticação label_auth_source_new: Novo modo de autenticação label_auth_source_plural: Modos de autenticação label_subproject_plural: Sub-projetos label_and_its_subprojects: "%{value} e sub-projetos" label_min_max_length: Tamanho mínimo-máximo label_list: Lista label_date: Data label_integer: Inteiro label_float: Decimal label_boolean: Booleano label_string: Texto label_text: Texto longo label_attribute: Atributo label_attribute_plural: Atributos label_no_data: Sem dados para mostrar label_change_status: Mudar estado label_history: Histórico label_attachment: Ficheiro label_attachment_new: Novo ficheiro label_attachment_delete: Apagar ficheiro label_attachment_plural: Ficheiros label_file_added: Ficheiro adicionado label_report: Relatório label_report_plural: Relatórios label_news: Notícia label_news_new: Nova notícia label_news_plural: Notícias label_news_latest: Últimas notícias label_news_view_all: Ver todas as notícias label_news_added: Notícia adicionada label_settings: Configurações label_overview: Visão geral label_version: Versão label_version_new: Nova versão label_version_plural: Versões label_confirmation: Confirmação label_export_to: 'Também disponível em:' label_read: Ler... label_public_projects: Projetos públicos label_open_issues: aberto label_open_issues_plural: abertos label_closed_issues: fechado label_closed_issues_plural: fechados label_x_open_issues_abbr: zero: 0 abertas one: 1 aberta other: "%{count} abertas" label_x_closed_issues_abbr: zero: 0 fechadas one: 1 fechada other: "%{count} fechadas" label_total: Total label_permissions: Permissões label_current_status: Estado atual label_new_statuses_allowed: Novos estados permitidos label_all: todos label_none: nenhum label_nobody: ninguém label_next: Próximo label_previous: Anterior label_used_by: Utilizado por label_details: Detalhes label_add_note: Adicionar nota label_calendar: Calendário label_months_from: meses desde label_gantt: Gantt label_internal: Interno label_last_changes: "últimas %{count} alterações" label_change_view_all: Ver todas as alterações label_comment: Comentário label_comment_plural: Comentários label_x_comments: zero: sem comentários one: 1 comentário other: "%{count} comentários" label_comment_add: Adicionar comentário label_comment_added: Comentário adicionado label_comment_delete: Apagar comentários label_query: Consulta personalizada label_query_plural: Consultas personalizadas label_query_new: Nova consulta label_filter_add: Adicionar filtro label_filter_plural: Filtros label_equals: é label_not_equals: não é label_in_less_than: em menos de label_in_more_than: em mais de label_in: em label_today: hoje label_yesterday: ontem label_this_week: esta semana label_last_week: semana passada label_last_n_days: "últimos %{count} dias" label_this_month: este mês label_last_month: mês passado label_this_year: este ano label_date_range: Intervalo de datas label_less_than_ago: menos de dias atrás label_more_than_ago: mais de dias atrás label_ago: dias atrás label_contains: contém label_not_contains: não contém label_day_plural: dias label_repository: Repositório label_repository_plural: Repositórios label_revision: Revisão label_revision_plural: Revisões label_associated_revisions: Revisões associadas label_added: adicionado label_modified: modificado label_copied: copiado label_renamed: renomeado label_deleted: apagado label_latest_revision: Última revisão label_latest_revision_plural: Últimas revisões label_view_revisions: Ver revisões label_max_size: Tamanho máximo label_roadmap: Planificação label_roadmap_due_in: "Termina em %{value}" label_roadmap_overdue: "Atrasado %{value}" label_roadmap_no_issues: Sem tarefas para esta versão label_search: Procurar label_result_plural: Resultados label_all_words: Todas as palavras label_wiki: Wiki label_wiki_edit: Edição da Wiki label_wiki_edit_plural: Edições da Wiki label_wiki_page: Página da Wiki label_wiki_page_plural: Páginas da Wiki label_index_by_title: Ãndice por título label_index_by_date: Ãndice por data label_current_version: Versão atual label_preview: Pré-visualizar label_feed_plural: Feeds label_changes_details: Detalhes de todas as mudanças label_issue_tracking: Tarefas label_spent_time: Tempo gasto label_f_hour: "%{value} hora" label_f_hour_plural: "%{value} horas" label_time_tracking: Registo de tempo label_change_plural: Mudanças label_statistics: Estatísticas label_commits_per_month: Commits por mês label_commits_per_author: Commits por autor label_view_diff: Ver diferenças label_diff_inline: inline label_diff_side_by_side: lado a lado label_options: Opções label_copy_workflow_from: Copiar fluxo de trabalho de label_permissions_report: Relatório de permissões label_watched_issues: Tarefas observadas label_related_issues: Tarefas relacionadas label_applied_status: Estado aplicado label_loading: A carregar... label_relation_new: Nova relação label_relation_delete: Apagar relação label_relates_to: Relacionado a label_duplicates: Duplica label_duplicated_by: Duplicado por label_blocks: Bloqueia label_blocked_by: Bloqueada por label_precedes: Precede label_follows: Segue label_stay_logged_in: Guardar sessão label_disabled: desativado label_show_completed_versions: Mostrar versões acabadas label_me: eu label_board: Fórum label_board_new: Novo fórum label_board_plural: Fórums label_topic_plural: Tópicos label_message_plural: Mensagens label_message_last: Última mensagem label_message_new: Nova mensagem label_message_posted: Mensagem adicionada label_reply_plural: Respostas label_send_information: Enviar dados da conta para o utilizador label_year: Ano label_month: Mês label_week: Semana label_date_from: De label_date_to: A label_language_based: Baseado na língua do utilizador label_sort_by: "Ordenar por %{value}" label_send_test_email: Enviar um e-mail de teste label_feeds_access_key_created_on: "Chave Atom criada há %{value} atrás" label_module_plural: Módulos label_added_time_by: "Adicionado por %{author} há %{age} atrás" label_updated_time: "Alterado há %{value} atrás" label_jump_to_a_project: Ir para o projeto... label_file_plural: Ficheiros label_changeset_plural: Commits label_default_columns: Colunas por omissão label_no_change_option: (sem alteração) label_bulk_edit_selected_issues: Editar tarefas selecionadas em conjunto label_theme: Tema label_default: Padrão label_search_titles_only: Procurar apenas em títulos label_user_mail_option_all: "Qualquer evento em todos os meus projetos" label_user_mail_option_selected: "Qualquer evento mas apenas nos projetos selecionados" label_user_mail_no_self_notified: "Não quero ser notificado de alterações feitas por mim" label_registration_activation_by_email: Ativação da conta por e-mail label_registration_manual_activation: Ativação manual da conta label_registration_automatic_activation: Ativação automática da conta label_display_per_page: "Por página: %{value}" label_age: Idade label_change_properties: Mudar propriedades label_general: Geral label_scm: SCM label_plugins: Extensões label_ldap_authentication: Autenticação LDAP label_downloads_abbr: D/L label_optional_description: Descrição opcional label_add_another_file: Adicionar outro ficheiro label_preferences: Preferências label_chronological_order: Em ordem cronológica label_reverse_chronological_order: Em ordem cronológica inversa label_incoming_emails: E-mails recebidos label_generate_key: Gerar uma chave label_issue_watchers: Observadores button_login: Entrar button_submit: Submeter button_save: Guardar button_check_all: Marcar tudo button_uncheck_all: Desmarcar tudo button_delete: Apagar button_create: Criar button_test: Testar button_edit: Editar button_add: Adicionar button_change: Alterar button_apply: Aplicar button_clear: Limpar button_lock: Bloquear button_unlock: Desbloquear button_download: Download button_list: Listar button_view: Ver button_move: Mover button_back: Voltar button_cancel: Cancelar button_activate: Ativar button_sort: Ordenar button_log_time: Tempo de trabalho button_rollback: Voltar para esta versão button_watch: Observar button_unwatch: Deixar de observar button_reply: Responder button_archive: Arquivar button_unarchive: Desarquivar button_reset: Reinicializar button_rename: Renomear button_change_password: Mudar palavra-chave button_copy: Copiar button_annotate: Anotar button_update: Atualizar button_configure: Configurar button_quote: Citar status_active: ativo status_registered: registado status_locked: bloqueado text_select_mail_notifications: Selecionar as ações que originam uma notificação por e-mail. text_regexp_info: ex. ^[A-Z0-9]+$ text_project_destroy_confirmation: Tem a certeza que deseja apagar o projeto e todos os dados relacionados? text_subprojects_destroy_warning: "O(s) seu(s) sub-projeto(s): %{value} também será/serão apagado(s)." text_workflow_edit: Selecione uma função e um tipo de tarefa para editar o fluxo de trabalho text_are_you_sure: Tem a certeza? text_tip_issue_begin_day: tarefa inicia neste dia text_tip_issue_end_day: tarefa termina neste dia text_tip_issue_begin_end_day: tarefa a iniciar e terminar neste dia text_caracters_maximum: "máximo %{count} caráteres." text_caracters_minimum: "Deve ter pelo menos %{count} caráteres." text_length_between: "Deve ter entre %{min} e %{max} caráteres." text_tracker_no_workflow: Sem fluxo de trabalho definido para este tipo de tarefa. text_unallowed_characters: Caráteres não permitidos text_comma_separated: Permitidos múltiplos valores (separados por vírgula). text_issues_ref_in_commit_messages: Referenciar e fechar tarefas em mensagens de commit text_issue_added: "A tarefa %{id} foi criada por %{author}." text_issue_updated: "A tarefa %{id} foi atualizada por %{author}." text_wiki_destroy_confirmation: Tem a certeza que deseja apagar esta wiki e todo o seu conteúdo? text_issue_category_destroy_question: "Algumas tarefas (%{count}) estão atribuídas a esta categoria. O que deseja fazer?" text_issue_category_destroy_assignments: Remover as atribuições à categoria text_issue_category_reassign_to: Re-atribuir as tarefas para esta categoria text_user_mail_option: "Para projetos não selecionados, apenas receberá notificações acerca de tarefas que está a observar ou que está envolvido (ex. tarefas das quais foi o criador ou lhes foram atribuídas)." text_no_configuration_data: "Perfis, tipos de tarefas, estados das tarefas e workflows ainda não foram configurados.\nÉ extremamente recomendado carregar as configurações padrão. Será capaz de as modificar depois de estarem carregadas." text_load_default_configuration: Carregar as configurações padrão text_status_changed_by_changeset: "Aplicado no changeset %{value}." text_issues_destroy_confirmation: 'Tem a certeza que deseja apagar a(s) tarefa(s) selecionada(s)?' text_select_project_modules: 'Selecione os módulos a ativar para este projeto:' text_default_administrator_account_changed: Conta por omissão de administrador alterada. text_file_repository_writable: Repositório de ficheiros com permissões de escrita text_minimagick_available: MiniMagick disponível (opcional) text_destroy_time_entries_question: "%{hours} horas de trabalho foram atribuídas a estas tarefas que vai apagar. O que deseja fazer?" text_destroy_time_entries: Apagar as horas text_assign_time_entries_to_project: Atribuir as horas ao projeto text_reassign_time_entries: 'Re-atribuir as horas para esta tarefa:' text_user_wrote: "%{value} escreveu:" text_user_wrote_in: "%{value} escreveu (%{link}):" text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:' text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificação estão desativadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para ativar estas funcionalidades." default_role_manager: Gestor default_role_developer: Programador default_role_reporter: Repórter default_tracker_bug: Bug default_tracker_feature: Funcionalidade default_tracker_support: Suporte default_issue_status_new: Novo default_issue_status_in_progress: Em curso default_issue_status_resolved: Resolvido default_issue_status_feedback: Feedback default_issue_status_closed: Fechado default_issue_status_rejected: Rejeitado default_doc_category_user: Documentação de utilizador default_doc_category_tech: Documentação técnica default_priority_low: Baixa default_priority_normal: Normal default_priority_high: Alta default_priority_urgent: Urgente default_priority_immediate: Imediata default_activity_design: Planeamento default_activity_development: Desenvolvimento enumeration_issue_priorities: Prioridade de tarefas enumeration_doc_categories: Categorias de documentos enumeration_activities: Atividades (Registo de tempo) setting_plain_text_mail: Apenas texto simples (sem HTML) permission_view_files: Ver ficheiros permission_edit_issues: Editar tarefas permission_edit_own_time_entries: Editar horas pessoais permission_manage_public_queries: Gerir consultas públicas permission_add_issues: Adicionar tarefas permission_log_time: Registar tempo gasto permission_view_changesets: Ver commits permission_view_time_entries: Ver tempo gasto permission_manage_versions: Gerir versões permission_manage_wiki: Gerir wiki permission_manage_categories: Gerir categorias de tarefas permission_protect_wiki_pages: Proteger páginas de wiki permission_comment_news: Comentar notícias permission_delete_messages: Apagar mensagens permission_select_project_modules: Selecionar módulos do projeto permission_edit_wiki_pages: Editar páginas da wiki permission_add_issue_watchers: Adicionar observadores permission_view_gantt: Ver diagrama de Gantt permission_manage_issue_relations: Gerir relações de tarefas permission_delete_wiki_pages: Apagar páginas de wiki permission_manage_boards: Gerir fórums permission_delete_wiki_pages_attachments: Apagar anexos permission_view_wiki_edits: Ver histórico da wiki permission_add_messages: Submeter mensagens permission_view_messages: Ver mensagens permission_manage_files: Gerir ficheiros permission_edit_issue_notes: Editar notas de tarefas permission_manage_news: Gerir notícias permission_view_calendar: Ver calendário permission_manage_members: Gerir membros permission_edit_messages: Editar mensagens permission_delete_issues: Apagar tarefas permission_view_issue_watchers: Ver lista de observadores permission_manage_repository: Gerir repositório permission_commit_access: Acesso a commit permission_browse_repository: Navegar em repositório permission_view_documents: Ver documentos permission_edit_project: Editar projeto permission_add_issue_notes: Adicionar notas a tarefas permission_save_queries: Guardar consultas permission_view_wiki_pages: Ver wiki permission_rename_wiki_pages: Renomear páginas de wiki permission_edit_time_entries: Editar entradas de tempo permission_edit_own_issue_notes: Editar as próprias notas setting_gravatar_enabled: Utilizar ícones Gravatar label_example: Exemplo text_repository_usernames_mapping: "Selecionar ou atualizar o utilizador de Redmine mapeado a cada nome de utilizador encontrado no repositório.\nUtilizadores com o mesmo nome de utilizador ou e-mail no Redmine e no repositório são mapeados automaticamente." permission_edit_own_messages: Editar as próprias mensagens permission_delete_own_messages: Apagar as próprias mensagens label_user_activity: "Atividade de %{value}" label_updated_time_by: "Atualizado por %{author} há %{age}" text_diff_truncated: '... Este diff foi truncado porque excede o tamanho máximo que pode ser mostrado.' setting_diff_max_lines_displayed: Número máximo de linhas de diff mostradas text_plugin_assets_writable: Escrita na pasta de ativos dos módulos de extensão possível warning_attachments_not_saved: "Não foi possível gravar %{count} ficheiro(s) ." button_create_and_continue: Criar e continuar text_custom_field_possible_values_info: 'Uma linha para cada valor' label_display: Mostrar field_editable: Editável setting_repository_log_display_limit: Número máximo de revisões exibido no relatório de ficheiro setting_file_max_size_displayed: Tamanho máximo dos ficheiros de texto exibidos inline field_watcher: Observador field_content: Conteúdo label_descending: Descendente label_sort: Ordenar label_ascending: Ascendente label_date_from_to: De %{start} a %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Esta página tem %{descendants} página(s) subordinada(s) e descendente(s). O que deseja fazer? text_wiki_page_reassign_children: Reatribuir páginas subordinadas a esta página principal text_wiki_page_nullify_children: Manter páginas subordinadas como páginas raíz text_wiki_page_destroy_children: Apagar as páginas subordinadas e todos os seus descendentes setting_password_min_length: Tamanho mínimo de palavra-chave field_group_by: Agrupar resultados por mail_subject_wiki_content_updated: "A página Wiki '%{id}' foi atualizada" label_wiki_content_added: Página Wiki adicionada mail_subject_wiki_content_added: "A página Wiki '%{id}' foi adicionada" mail_body_wiki_content_added: A página Wiki '%{id}' foi adicionada por %{author}. label_wiki_content_updated: Página Wiki atualizada mail_body_wiki_content_updated: A página Wiki '%{id}' foi atualizada por %{author}. permission_add_project: Criar projeto setting_new_project_user_role_id: Função atribuída a um utilizador não-administrador que cria um projeto label_view_all_revisions: Ver todas as revisões label_tag: Etiqueta label_branch: Ramo error_no_tracker_in_project: Este projeto não tem associado nenhum tipo de tarefas. Verifique as definições do projeto. error_no_default_issue_status: Não está definido um estado padrão para as tarefas. Verifique a sua configuração (dirija-se a "Administração -> Estados da tarefa"). label_group_plural: Grupos label_group: Grupo label_group_new: Novo grupo label_time_entry_plural: Tempo registado text_journal_changed: "%{label} alterado de %{old} para %{new}" text_journal_set_to: "%{label} configurado como %{value}" text_journal_deleted: "%{label} apagou (%{old})" text_journal_added: "%{label} %{value} adicionado" field_active: Ativo enumeration_system_activity: Atividade do sistema permission_delete_issue_watchers: Apagar observadores version_status_closed: fechado version_status_locked: protegido version_status_open: aberto error_can_not_reopen_issue_on_closed_version: Não é possível voltar a abrir uma tarefa atribuída a uma versão fechada label_user_anonymous: Anónimo button_move_and_follow: Mover e seguir setting_default_projects_modules: Módulos ativos por predefinição para novos projetos setting_gravatar_default: Imagem Gravatar predefinida field_sharing: Partilha label_version_sharing_hierarchy: Com hierarquia do projeto label_version_sharing_system: Com todos os projetos label_version_sharing_descendants: Com os sub-projetos label_version_sharing_tree: Com árvore do projeto label_version_sharing_none: Não partilhado error_can_not_archive_project: Não é possível arquivar este projeto button_copy_and_follow: Copiar e seguir label_copy_source: Origem setting_issue_done_ratio: Calcular a percentagem de progresso da tarefa setting_issue_done_ratio_issue_status: Através do estado da tarefa error_issue_done_ratios_not_updated: Percentagens de progresso da tarefa não foram atualizadas. error_workflow_copy_target: Selecione os tipos de tarefas e funções desejadas setting_issue_done_ratio_issue_field: Através do campo da tarefa label_copy_same_as_target: Mesmo que o alvo label_copy_target: Alvo notice_issue_done_ratios_updated: Percentagens de progresso da tarefa atualizadas. error_workflow_copy_source: Selecione um tipo de tarefa ou função de origem label_update_issue_done_ratios: Atualizar percentagens de progresso da tarefa setting_start_of_week: Iniciar calendários a permission_view_issues: Ver tarefas label_display_used_statuses_only: Exibir apenas estados utilizados por este tipo de tarefa label_revision_id: Revisão %{value} label_api_access_key: Chave de acesso API label_api_access_key_created_on: Chave de acesso API criada há %{value} label_feeds_access_key: Chave de acesso Atom notice_api_access_key_reseted: A sua chave de acesso API foi reinicializada. setting_rest_api_enabled: Ativar serviço Web REST label_missing_api_access_key: Chave de acesso API em falta label_missing_feeds_access_key: Chave de acesso Atom em falta button_show: Mostrar text_line_separated: Vários valores permitidos (uma linha para cada valor). setting_mail_handler_body_delimiters: Truncar mensagens de e-mail após uma destas linhas permission_add_subprojects: Criar sub-projetos label_subproject_new: Novo sub-projeto text_own_membership_delete_confirmation: |- Está prestes a eliminar parcial ou totalmente as suas permissões. É possível que não possa editar o projeto após esta acção. Tem a certeza de que deseja continuar? label_close_versions: Fechar versões completas label_board_sticky: Fixar mensagem label_board_locked: Proteger permission_export_wiki_pages: Exportar páginas Wiki setting_cache_formatted_text: Colocar formatação do texto na memória cache permission_manage_project_activities: Gerir atividades do projeto error_unable_delete_issue_status: Não foi possível apagar o estado da tarefa (%{value}) label_profile: Perfil permission_manage_subtasks: Gerir sub-tarefas field_parent_issue: Tarefa principal label_subtask_plural: Sub-tarefa label_project_copy_notifications: Enviar notificações por e-mail durante a cópia do projeto error_can_not_delete_custom_field: Não foi possível apagar o campo personalizado error_unable_to_connect: Não foi possível ligar (%{value}) error_can_not_remove_role: Esta função está atualmente em uso e não pode ser apagada. error_can_not_delete_tracker_html: Existem ainda tarefas nesta categoria. Não é possível apagar este tipo de tarefa.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Erro ao guardar o(s) membro(s): %{errors}." text_zoom_out: Reduzir text_zoom_in: Ampliar notice_unable_delete_time_entry: Não foi possível apagar a entrada de tempo registado. field_time_entries: Tempo registado project_module_gantt: Gantt project_module_calendar: Calendário button_edit_associated_wikipage: "Editar página Wiki associada: %{page_title}" field_text: Campo de texto setting_default_notification_option: Opção predefinida de notificação label_user_mail_option_only_my_events: Apenas para tarefas que observo ou em que estou envolvido label_user_mail_option_none: Sem eventos field_member_of_group: Grupo do titular field_assigned_to_role: Função do titular notice_not_authorized_archived_project: O projeto ao qual tentou aceder foi arquivado. label_principal_search: "Procurar utilizador ou grupo:" label_user_search: "Procurar utilizador:" field_visible: Visível setting_emails_header: Cabeçalho dos e-mails setting_commit_logtime_activity_id: Atividade para tempo registado text_time_logged_by_changeset: Aplicado no conjunto de commits %{value}. setting_commit_logtime_enabled: Ativar registo de tempo notice_gantt_chart_truncated: O gráfico foi truncado porque excede o número máximo de itens visíveis (%{max.}) setting_gantt_items_limit: Número máximo de itens exibidos no gráfico Gantt field_warn_on_leaving_unsaved: Avisar-me quando deixar uma página com texto por guardar text_warn_on_leaving_unsaved: A página atual contém texto por salvar que será perdido caso saia desta página. label_my_queries: As minhas consultas text_journal_changed_no_detail: "%{label} atualizada" label_news_comment_added: Comentário adicionado a uma notícia button_expand_all: Expandir todos button_collapse_all: Minimizar todos label_additional_workflow_transitions_for_assignee: Transições adicionais permitidas quando a tarefa está atribuida ao utilizador label_additional_workflow_transitions_for_author: Transições adicionais permitidas quando o utilizador é o autor da tarefa label_bulk_edit_selected_time_entries: Edição em massa de registos de tempo text_time_entries_destroy_confirmation: Têm a certeza que pretende apagar o(s) registo(s) de tempo selecionado(s)? label_role_anonymous: Anónimo label_role_non_member: Não membro label_issue_note_added: Nota adicionada label_issue_status_updated: Estado atualizado label_issue_priority_updated: Prioridade adicionada label_issues_visibility_own: Tarefas criadas ou atribuídas ao utilizador field_issues_visibility: Visibilidade das tarefas label_issues_visibility_all: Todas as tarefas permission_set_own_issues_private: Configurar as suas tarefas como públicas ou privadas field_is_private: Privado permission_set_issues_private: Configurar tarefas como públicas ou privadas label_issues_visibility_public: Todas as tarefas públicas text_issues_destroy_descendants_confirmation: Irá apagar também %{count} sub-tarefa(s). field_commit_logs_encoding: Codificação das mensagens de commit field_scm_path_encoding: Codificação do caminho text_scm_path_encoding_note: "Por omissão: UTF-8" field_path_to_repository: Caminho para o repositório field_root_directory: Raíz do diretório field_cvs_module: Módulo field_cvsroot: CVSROOT text_mercurial_repository_note: "Repositório local (ex: /hgrepo, c:\\hgrepo)" text_scm_command: Comando text_scm_command_version: Versão label_git_report_last_commit: Analisar último commit por ficheiros e pastas text_scm_config: Pode configurar os comando SCM em config/configuration.yml. Por favor reinicie a aplicação depois de alterar o ficheiro. text_scm_command_not_available: O comando SCM não está disponível. Por favor verifique as configurações no painel de administração. notice_issue_successful_create: Tarefa %{id} criada. label_between: entre setting_issue_group_assignment: Permitir atribuir tarefas a grupos label_diff: diferença text_git_repository_note: O repositório é local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Direção da ordenação description_project_scope: Âmbito da pesquisa description_filter: Filtro description_user_mail_notification: Configurações das notificações por e-mail description_message_content: Conteúdo da mensagem description_available_columns: Colunas disponíveis description_issue_category_reassign: Escolha a categoria da tarefa description_search: Campo de pesquisa description_notes: Notas description_choose_project: Projeto description_query_sort_criteria_attribute: Ordenar atributos description_wiki_subpages_reassign: Escolha nova página pai description_selected_columns: Colunas selecionadas label_parent_revision: Pai label_child_revision: Filha error_scm_annotate_big_text_file: Esta entrada não pode ser anotada pois excede o tamanho máximo para ficheiros de texto. setting_default_issue_start_date_to_creation_date: Utilizar a data atual como data de início para novas tarefas button_edit_section: Editar esta secção setting_repositories_encodings: Codificação dos anexos e repositórios description_all_columns: Todas as colunas button_export: Exportar label_export_options: "%{export_format} opções da exportação" error_attachment_too_big: Este ficheiro não pode ser carregado pois excede o tamanho máximo permitido por ficheiro (%{max_size}) notice_failed_to_save_time_entries: "Falha ao guardar %{count} registo(s) de tempo dos %{total} selecionados: %{ids}." label_x_issues: zero: 0 tarefas one: 1 tarefa other: "%{count} tarefas" label_repository_new: Novo repositório field_repository_is_default: Repositório principal label_copy_attachments: Copiar anexos label_item_position: "%{position}/%{count}" label_completed_versions: Versões completas text_project_identifier_info: Apenas letras minúsculas (a-z), números, traços e sublinhados são permitidos.
    Depois de guardar não é possível alterar. field_multiple: Múltiplos valores setting_commit_cross_project_ref: Permitir que tarefas dos restantes projetos sejam referenciadas e resolvidas text_issue_conflict_resolution_add_notes: Adicionar as minhas notas e descartar as minhas restantes alterações text_issue_conflict_resolution_overwrite: Aplicar as minhas alterações (notas antigas serão mantidas mas algumas alterações podem se perder) notice_issue_update_conflict: Esta tarefa foi atualizada por outro utilizador enquanto estava a edita-la. text_issue_conflict_resolution_cancel: Descartar todas as minhas alterações e atualizar %{link} permission_manage_related_issues: Gerir tarefas relacionadas field_auth_source_ldap_filter: Filtro LDAP label_search_for_watchers: Pesquisar por observadores para adicionar notice_account_deleted: A sua conta foi apagada permanentemente. setting_unsubscribe: Permitir aos utilizadores apagarem a sua própria conta button_delete_my_account: Apagar a minha conta text_account_destroy_confirmation: |- Têm a certeza que pretende avançar? A sua conta vai ser permanentemente apagada, não será possível recupera-la. error_session_expired: A sua sessão expirou. Por-favor autentique-se novamente. text_session_expiration_settings: "Atenção: alterar estas configurações pode fazer expirar as sessões em curso, incluíndo a sua." setting_session_lifetime: Duração máxima da sessão setting_session_timeout: Tempo limite de inatividade da sessão label_session_expiration: Expiração da sessão permission_close_project: Fechar / re-abrir o projeto button_close: Fechar button_reopen: Re-abrir project_status_active: ativo project_status_closed: fechado project_status_archived: arquivado text_project_closed: Este projeto está fechado e é apenas de leitura. notice_user_successful_create: Utilizador %{id} criado. field_core_fields: Campos padrão field_timeout: Tempo limite (em segundos) setting_thumbnails_enabled: Apresentar miniaturas dos anexos setting_thumbnails_size: Tamanho das miniaturas (em pixeis) label_status_transitions: Estado das transições label_fields_permissions: Permissões do campo label_readonly: Apenas de leitura label_required: Obrigatório text_repository_identifier_info: Apenas letras minúsculas (a-z), números, traços e sublinhados são permitidos.
    Depois de guardar não é possível alterar. field_board_parent: Fórum pai label_attribute_of_project: "%{name} do Projeto" label_attribute_of_author: "%{name} do Autor" label_attribute_of_assigned_to: "%{name} do utilizador titular" label_attribute_of_fixed_version: "%{name} da Versão" label_copy_subtasks: Copiar sub-tarefas label_copied_to: Copiado para label_copied_from: Copiado de label_any_issues_in_project: tarefas do projeto label_any_issues_not_in_project: tarefas sem projeto field_private_notes: Notas privadas permission_view_private_notes: Ver notas privadas permission_set_notes_private: Configurar notas como privadas label_no_issues_in_project: sem tarefas no projeto label_any: todos label_last_n_weeks: últimas %{count} semanas setting_cross_project_subtasks: Permitir sub-tarefas entre projetos label_cross_project_descendants: Com os sub-projetos label_cross_project_tree: Com árvore do projeto label_cross_project_hierarchy: Com hierarquia do projeto label_cross_project_system: Com todos os projetos button_hide: Esconder setting_non_working_week_days: Dias não úteis label_in_the_next_days: no futuro label_in_the_past_days: no passado label_attribute_of_user: Do utilizador %{name} text_turning_multiple_off: Se desativar a escolha múltipla, esta será apagada de modo a manter apenas um valor por item. label_attribute_of_issue: Tarefa de %{name} permission_add_documents: Adicionar documentos permission_edit_documents: Editar documentos permission_delete_documents: Apagar documentos label_gantt_progress_line: Barra de progresso setting_jsonp_enabled: Ativar suporte JSONP field_inherit_members: Herdar membros field_closed_on: Fechado field_generate_password: Gerar palavra-chave setting_default_projects_tracker_ids: Tipo de tarefa padrão para novos projetos label_total_time: Total notice_account_not_activated_yet: Ainda não ativou a sua conta. Se desejar receber um novo e-mail de ativação, por favor clique nesta ligação. notice_account_locked: A sua conta está bloqueada. notice_account_register_done: A conta foi criada com sucesso! Um e-mail contendo as instruções para ativar a sua conta foi enviado para %{email}. label_hidden: Escondido label_visibility_private: apenas para mim label_visibility_roles: apenas para estas funções label_visibility_public: para qualquer utilizador field_must_change_passwd: Deve alterar a palavra-chave no próximo início de sessão notice_new_password_must_be_different: A nova palavra-chave deve ser diferente da atual setting_mail_handler_excluded_filenames: Apagar anexos por nome text_convert_available: Conversão ImageMagick disponível (opcional) label_link: Link label_only: apenas label_drop_down_list: lista label_checkboxes: caixa de seleção label_link_values_to: Ligação de valores ao URL setting_force_default_language_for_anonymous: Forçar língua por omissão para utilizadores anónimos setting_force_default_language_for_loggedin: Forçar língua por omissão para utilizadores registados label_custom_field_select_type: Selecione o tipo de objeto ao qual o campo personalizado será atribuído label_issue_assigned_to_updated: Utilizador titular atualizado label_check_for_updates: Verificar atualizações label_latest_compatible_version: Última versão compatível label_unknown_plugin: Extensão desconhecida label_radio_buttons: radio buttons label_group_anonymous: Utilizadores anónimos label_group_non_member: Utilizadores não membros label_add_projects: Adicionar projetos field_default_status: Estado por omissão text_subversion_repository_note: 'Exemplos: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Visibilidade dos utilizadores label_users_visibility_all: Todos os utilizadores ativos label_users_visibility_members_of_visible_projects: Utilizadores membros dos projetos visíveis label_edit_attachments: Editar os ficheiros anexados setting_link_copied_issue: Relacionar tarefas ao copiar label_link_copied_issue: Relacionar tarefas copiadas label_ask: Perguntar label_search_attachments_yes: Pesquisar nome e descrição dos anexos label_search_attachments_no: Não pesquisar anexos label_search_attachments_only: Pesquisar apenas anexos label_search_open_issues_only: Apenas tarefas abertas field_address: e-mail setting_max_additional_emails: Número máximo de endereços de e-mail adicionais label_email_address_plural: e-mails label_email_address_add: Adicionar endereços de e-mail label_enable_notifications: Ativar notificações label_disable_notifications: Desativar notificações setting_search_results_per_page: Resultados de pesquisa por página label_blank_value: vazio permission_copy_issues: Copiar tarefas error_password_expired: A sua palavra-chave expirou ou o administrador exige que a altere. field_time_entries_visibility: Visibilidade dos registo de tempo setting_password_max_age: Exigir palavra-chave após a alteração label_parent_task_attributes: Atributos da tarefa-mãe label_parent_task_attributes_derived: Calculado a partir das sub-tarefas label_parent_task_attributes_independent: Independente das sub-tarefas label_time_entries_visibility_all: Todos os registos de tempo label_time_entries_visibility_own: Registos de tempo criados pelo utilizador label_member_management: Gestão de utilizadores label_member_management_all_roles: Todas as funções label_member_management_selected_roles_only: Apenas estas funções label_password_required: Confirme a sua palavra-chave para continuar label_total_spent_time: Total de tempo registado notice_import_finished: "%{count} registos foram importados" notice_import_finished_with_errors: "%{count} de %{total} registos não poderam ser importados" error_invalid_file_encoding: 'O ficheiro não possui a codificação correcta: {encoding}' error_invalid_csv_file_or_settings: O ficheiro não é um ficheiro CSV ou não respeita as definições abaixo (%{value}) error_can_not_read_import_file: Ocorreu um erro ao ler o ficheiro a importar permission_import_issues: Importar tarefas label_import_issues: Importar tarefas label_select_file_to_import: Selecione o ficheiro a importar label_fields_separator: Separador de campos label_fields_wrapper: Field wrapper label_encoding: Codificação label_comma_char: Vírgula label_semi_colon_char: Ponto e vírgula label_quote_char: Aspas label_double_quote_char: Aspas duplas label_fields_mapping: Mapeamento de campos label_file_content_preview: Pré-visualização do conteúdo do ficheiro label_create_missing_values: Criar os valores em falta button_import: Importar field_total_estimated_hours: Total de tempo estimado label_api: API label_total_plural: Totais label_assigned_issues: Tarefas atribuídas label_field_format_enumeration: Lista chave/valor label_f_hour_short: '%{value} h' field_default_version: Versão por defeito error_attachment_extension_not_allowed: A extensão %{extension} do ficheiro anexado não é permitida setting_attachment_extensions_allowed: Extensões permitidas setting_attachment_extensions_denied: Extensões não permitidas label_any_open_issues: Quaisquer tarefas abertas label_no_open_issues: Sem tarefas abertas label_default_values_for_new_users: Valores por defeito para novo utilizadores setting_sys_api_key: Chave da API setting_lost_password: Perdi a palavra-chave mail_subject_security_notification: Notificação de segurança mail_body_security_notification_change: ! '%{field} foi modificado.' mail_body_security_notification_change_to: ! '%{field} foi modificado para %{value}.' mail_body_security_notification_add: ! '%{field} %{value} foi adicionado.' mail_body_security_notification_remove: ! '%{field} %{value} foi removido.' mail_body_security_notification_notify_enabled: O email %{value} agora recebe notificações. mail_body_security_notification_notify_disabled: O email %{value} já não recebe notificações. mail_body_settings_updated: ! 'As seguintes configurações foram modificadas:' field_remote_ip: Endereço IP label_wiki_page_new: Nova página wiki label_relations: Relações button_filter: Filtro mail_body_password_updated: A sua palavra-chave foi atualizada. label_no_preview: Sem pré-visualização disponível error_no_tracker_allowed_for_new_issue_in_project: O projeto não possui nenhum tipo de tarefa para o qual você pode criar uma tarefa label_tracker_all: Todos os tipos de tarefa label_new_project_issue_tab_enabled: Apresentar a aba "Nova tarefa" setting_new_item_menu_tab: Aba de Projeto para criar novos objetos label_new_object_tab_enabled: Apresentar a aba "+" error_no_projects_with_tracker_allowed_for_new_issue: Não há projetos com tipos de tarefa para os quais você pode criar uma tarefa field_textarea_font: Fonte para áreas de texto label_font_default: Default font label_font_monospace: Fonte Monospaced label_font_proportional: Fonte proporcional setting_timespan_format: Formato de Data/Hora label_table_of_contents: Ãndice setting_commit_logs_formatting: Aplicar formatação de texto às mensagens de commit setting_mail_handler_enable_regex: Ativar a utilização de expressões regulares error_move_of_child_not_possible: 'A sub-tarefa %{child} não pode ser movida para o novo project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: O tempo gasto não pode ser alterado numa tarefa que será apagada setting_timelog_required_fields: Campos obrigatórios para o registo de tempo label_attribute_of_object: '%{object_name} %{name}' label_user_mail_option_only_assigned: Apenas para tarefas que observo ou que me estão atribuídas label_user_mail_option_only_owner: Apenas para tarefas que observo ou que eu criei warning_fields_cleared_on_bulk_edit: As alterações vão apagar valores de um ou mais campos nos objetos selecionados field_updated_by: Atualizado por field_last_updated_by: Última atualização por field_full_width_layout: Layout utiliza toda a largura label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Apagar relação error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/ro.yml000066400000000000000000002134201500112024600171700ustar00rootroot00000000000000ro: direction: ltr date: formats: default: "%d-%m-%Y" short: "%d %b" long: "%d %B %Y" only_day: "%e" day_names: [Duminică, Luni, Marti, Miercuri, Joi, Vineri, Sâmbătă] abbr_day_names: [Dum, Lun, Mar, Mie, Joi, Vin, Sâm] month_names: [~, Ianuarie, Februarie, Martie, Aprilie, Mai, Iunie, Iulie, August, Septembrie, Octombrie, Noiembrie, Decembrie] abbr_month_names: [~, Ian, Feb, Mar, Apr, Mai, Iun, Iul, Aug, Sep, Oct, Noi, Dec] order: - :day - :month - :year time: formats: default: "%m/%d/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "jumătate de minut" less_than_x_seconds: one: "mai puÈ›in de o secundă" other: "mai puÈ›in de %{count} secunde" x_seconds: one: "o secundă" other: "%{count} secunde" less_than_x_minutes: one: "mai puÈ›in de un minut" other: "mai puÈ›in de %{count} minute" x_minutes: one: "un minut" other: "%{count} minute" about_x_hours: one: "aproximativ o oră" other: "aproximativ %{count} ore" x_hours: one: "1 oră" other: "%{count} ore" x_days: one: "o zi" other: "%{count} zile" about_x_months: one: "aproximativ o lună" other: "aproximativ %{count} luni" x_months: one: "o luna" other: "%{count} luni" about_x_years: one: "aproximativ un an" other: "aproximativ %{count} ani" over_x_years: one: "peste un an" other: "peste %{count} ani" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: separator: "." delimiter: "" precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: KB tb: TB gb: GB byte: one: Byte other: Bytes mb: MB # Used in array.to_sentence. support: array: sentence_connector: "È™i" skip_last_comma: true activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nu este inclus în listă" exclusion: "este rezervat" invalid: "nu este valid" confirmation: "nu este identică" accepted: "trebuie acceptat" empty: "trebuie completat" blank: "nu poate fi gol" too_long: "este prea lung" too_short: "este prea scurt" wrong_length: "nu are lungimea corectă" taken: "a fost luat deja" not_a_number: "nu este un număr" not_a_date: "nu este o dată validă" greater_than: "trebuie să fie mai mare de %{count}" greater_than_or_equal_to: "trebuie să fie mai mare sau egal cu %{count}" equal_to: "trebuie să fie egal cu {count}}" less_than: "trebuie să fie mai mic decat %{count}" less_than_or_equal_to: "trebuie să fie mai mic sau egal cu %{count}" odd: "trebuie să fie impar" even: "trebuie să fie par" greater_than_start_date: "trebuie să fie după data de început" not_same_project: "trebuie să aparÈ›ină aceluiaÈ™i proiect" circular_dependency: "Această relaÈ›ie ar crea o dependență circulară" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: SelectaÈ›i general_text_No: 'Nu' general_text_Yes: 'Da' general_text_no: 'nu' general_text_yes: 'da' general_lang_name: 'Romanian (Română)' general_csv_separator: '.' general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '2' notice_account_updated: Cont actualizat. notice_account_invalid_credentials: Utilizator sau parola nevalidă notice_account_password_updated: Parolă actualizată. notice_account_wrong_password: Parolă greÈ™ită notice_account_register_done: Contul a fost creat. Pentru activare, urmaÈ›i legătura trimisă prin email. notice_can_t_change_password: Acest cont foloseÈ™te o sursă externă de autentificare. Nu se poate schimba parola. notice_account_lost_email_sent: S-a trimis un email cu instrucÈ›iuni de schimbare a parolei. notice_account_activated: Contul a fost activat. Vă puteÈ›i autentifica acum. notice_successful_create: Creat. notice_successful_update: Actualizat. notice_successful_delete: Șters. notice_successful_connection: Conectat. notice_file_not_found: Pagina pe care doriÈ›i să o accesaÈ›i nu există sau a fost È™tearsă. notice_locking_conflict: Datele au fost actualizate de alt utilizator. notice_not_authorized: Nu sunteÈ›i autorizat sa accesaÈ›i această pagină. notice_email_sent: "S-a trimis un email către %{value}" notice_email_error: "A intervenit o eroare la trimiterea de email (%{value})" notice_feeds_access_key_reseted: Cheia de acces Atom a fost resetată. notice_failed_to_save_issues: "Nu s-au putut salva %{count} tichete din cele %{total} selectate: %{ids}." notice_account_pending: "Contul dumneavoastră a fost creat È™i aÈ™teaptă aprobarea administratorului." notice_default_data_loaded: S-a încărcat configuraÈ›ia implicită. notice_unable_delete_version: Nu se poate È™terge versiunea. error_can_t_load_default_data: "Nu s-a putut încărca configuraÈ›ia implicită: %{value}" error_scm_not_found: "Nu s-a găsit articolul sau revizia în depozit." error_scm_command_failed: "A intervenit o eroare la accesarea depozitului: %{value}" error_scm_annotate: "Nu există sau nu poate fi adnotată." error_issue_not_found_in_project: 'Tichetul nu a fost găsit sau nu aparÈ›ine acestui proiect' warning_attachments_not_saved: "Nu s-au putut salva %{count} fiÈ™iere." mail_subject_lost_password: "Parola dumneavoastră: %{value}" mail_body_lost_password: 'Pentru a schimba parola, accesaÈ›i:' mail_subject_register: "Activarea contului %{value}" mail_body_register: 'Pentru activarea contului, accesaÈ›i:' mail_body_account_information_external: "PuteÈ›i folosi contul „{value}}†pentru a vă autentifica." mail_body_account_information: InformaÈ›ii despre contul dumneavoastră mail_subject_account_activation_request: "Cerere de activare a contului %{value}" mail_body_account_activation_request: "S-a înregistrat un utilizator nou (%{value}). Contul aÈ™teaptă aprobarea dumneavoastră:" mail_subject_reminder: "%{count} tichete trebuie rezolvate în următoarele %{days} zile" mail_body_reminder: "%{count} tichete atribuite dumneavoastră trebuie rezolvate în următoarele %{days} zile:" field_name: Nume field_description: Descriere field_summary: Rezumat field_is_required: Obligatoriu field_firstname: Prenume field_lastname: Nume field_mail: Email field_filename: FiÈ™ier field_filesize: Mărime field_downloads: Descărcări field_author: Autor field_created_on: Creat la field_updated_on: Actualizat la field_field_format: Format field_is_for_all: Pentru toate proiectele field_possible_values: Valori posibile field_regexp: Expresie regulară field_min_length: lungime minimă field_max_length: lungime maximă field_value: Valoare field_category: Categorie field_title: Titlu field_project: Proiect field_issue: Tichet field_status: Stare field_notes: Note field_is_closed: Rezolvat field_is_default: Implicit field_tracker: Tip de tichet field_subject: Subiect field_due_date: Data finalizării field_assigned_to: Atribuit field_priority: Prioritate field_fixed_version: Versiune È›intă field_user: Utilizator field_role: Rol field_homepage: Pagina principală field_is_public: Public field_parent: Sub-proiect al field_is_in_roadmap: Tichete afiÈ™ate în plan field_login: Autentificare field_mail_notification: Notificări prin e-mail field_admin: Administrator field_last_login_on: Ultima autentificare în field_language: Limba field_effective_date: Data field_password: Parola field_new_password: Parola nouă field_password_confirmation: Confirmare field_version: Versiune field_type: Tip field_host: Gazdă field_port: Port field_account: Cont field_base_dn: Base DN field_attr_login: Atribut autentificare field_attr_firstname: Atribut prenume field_attr_lastname: Atribut nume field_attr_mail: Atribut email field_onthefly: Creare utilizator pe loc field_start_date: Data începerii field_done_ratio: Realizat (%) field_auth_source: Mod autentificare field_hide_mail: Nu se afiÈ™ează adresa de email field_comments: Comentariu field_url: URL field_start_page: Pagina de start field_subproject: Subproiect field_hours: Ore field_activity: Activitate field_spent_on: Data field_identifier: Identificator field_is_filter: Filtru field_issue_to: Tichet asociat field_delay: ÃŽntârziere field_assignable: Se pot atribui tichete acestui rol field_redirect_existing_links: RedirecÈ›ionează legăturile existente field_estimated_hours: Timp estimat field_column_names: Coloane field_time_zone: Fus orar field_searchable: Căutare field_default_value: Valoare implicita field_comments_sorting: AfiÈ™ează comentarii field_parent_title: Pagina superioara field_editable: Modificabil field_watcher: UrmăreÈ™te field_content: ConÈ›inut setting_app_title: Titlu aplicaÈ›ie setting_welcome_text: Text de întâmpinare setting_default_language: Limba implicita setting_login_required: Necesita autentificare setting_self_registration: ÃŽnregistrare automată setting_attachment_max_size: Mărime maxima ataÈ™ament setting_issues_export_limit: Limită de tichete exportate setting_mail_from: Adresa de email a expeditorului setting_plain_text_mail: Mesaje text (fără HTML) setting_host_name: Numele gazdei È™i calea setting_text_formatting: Formatare text setting_wiki_compression: Comprimare istoric Wiki setting_feeds_limit: Limita de actualizări din feed setting_default_projects_public: Proiectele noi sunt implicit publice setting_autofetch_changesets: Preluare automată a modificărilor din depozit setting_sys_api_enabled: Activare WS pentru gestionat depozitul setting_commit_ref_keywords: Cuvinte cheie pt. referire tichet setting_commit_fix_keywords: Cuvinte cheie pt. rezolvare tichet setting_autologin: Autentificare automată setting_date_format: Format dată setting_time_format: Format oră setting_cross_project_issue_relations: Permite legături de tichete între proiecte setting_issue_list_default_columns: Coloane implicite afiÈ™ate în lista de tichete setting_emails_footer: Subsol email setting_protocol: Protocol setting_per_page_options: Număr de obiecte pe pagină setting_user_format: Stil de afiÈ™are pentru utilizator setting_activity_days_default: Se afiÈ™ează zile în jurnalul proiectului setting_display_subprojects_issues: AfiÈ™ează implicit tichetele sub-proiectelor în proiectele principale setting_enabled_scm: SCM activat setting_mail_handler_api_enabled: Activare WS pentru email primit setting_mail_handler_api_key: cheie API setting_sequential_project_identifiers: Generează secvenÈ›ial identificatoarele de proiect setting_gravatar_enabled: FoloseÈ™te poze Gravatar pentru utilizatori setting_diff_max_lines_displayed: Număr maxim de linii de diferență afiÈ™ate setting_file_max_size_displayed: Număr maxim de fiÈ™iere text afiÈ™ate în pagină (inline) setting_repository_log_display_limit: Număr maxim de revizii afiÈ™ate în istoricul fiÈ™ierului permission_edit_project: Editează proiectul permission_select_project_modules: Alege module pentru proiect permission_manage_members: Editează membri permission_manage_versions: Editează versiuni permission_manage_categories: Editează categorii permission_add_issues: Adaugă tichete permission_edit_issues: Editează tichete permission_manage_issue_relations: Editează relaÈ›ii tichete permission_add_issue_notes: Adaugă note permission_edit_issue_notes: Editează note permission_edit_own_issue_notes: Editează notele proprii permission_delete_issues: Șterge tichete permission_manage_public_queries: Editează căutările implicite permission_save_queries: Salvează căutările permission_view_gantt: AfiÈ™ează Gantt permission_view_calendar: AfiÈ™ează calendarul permission_view_issue_watchers: AfiÈ™ează lista de persoane interesate permission_add_issue_watchers: Adaugă persoane interesate permission_log_time: ÃŽnregistrează timpul de lucru permission_view_time_entries: AfiÈ™ează timpul de lucru permission_edit_time_entries: Editează jurnalele cu timp de lucru permission_edit_own_time_entries: Editează jurnalele proprii cu timpul de lucru permission_manage_news: Editează È™tiri permission_comment_news: Comentează È™tirile permission_view_documents: AfiÈ™ează documente permission_manage_files: Editează fiÈ™iere permission_view_files: AfiÈ™ează fiÈ™iere permission_manage_wiki: Editează wiki permission_rename_wiki_pages: RedenumeÈ™te pagini wiki permission_delete_wiki_pages: Șterge pagini wiki permission_view_wiki_pages: AfiÈ™ează wiki permission_view_wiki_edits: AfiÈ™ează istoricul wiki permission_edit_wiki_pages: Editează pagini wiki permission_delete_wiki_pages_attachments: Șterge ataÈ™amente permission_protect_wiki_pages: Blochează pagini wiki permission_manage_repository: Gestionează depozitul permission_browse_repository: RăsfoieÈ™te depozitul permission_view_changesets: AfiÈ™ează modificările din depozit permission_commit_access: Acces commit permission_manage_boards: Editează forum permission_view_messages: AfiÈ™ează mesaje permission_add_messages: Scrie mesaje permission_edit_messages: Editează mesaje permission_edit_own_messages: Editează mesajele proprii permission_delete_messages: Șterge mesaje permission_delete_own_messages: Șterge mesajele proprii project_module_issue_tracking: Tichete project_module_time_tracking: Timp de lucru project_module_news: Știri project_module_documents: Documente project_module_files: FiÈ™iere project_module_wiki: Wiki project_module_repository: Depozit project_module_boards: Forum label_user: Utilizator label_user_plural: Utilizatori label_user_new: Utilizator nou label_project: Proiect label_project_new: Proiect nou label_project_plural: Proiecte label_x_projects: zero: niciun proiect one: un proiect other: "%{count} proiecte" label_project_all: Toate proiectele label_project_latest: Proiecte noi label_issue: Tichet label_issue_new: Tichet nou label_issue_plural: Tichete label_issue_view_all: AfiÈ™ează toate tichetele label_issues_by: "Sortează după %{value}" label_issue_added: Adaugat label_issue_updated: Actualizat label_document: Document label_document_new: Document nou label_document_plural: Documente label_document_added: Adăugat label_role: Rol label_role_plural: Roluri label_role_new: Rol nou label_role_and_permissions: Roluri È™i permisiuni label_member: Membru label_member_new: membru nou label_member_plural: Membri label_tracker: Tip de tichet label_tracker_plural: Tipuri de tichete label_tracker_new: Tip nou de tichet label_workflow: Mod de lucru label_issue_status: Stare tichet label_issue_status_plural: Stare tichete label_issue_status_new: Stare nouă label_issue_category: Categorie de tichet label_issue_category_plural: Categorii de tichete label_issue_category_new: Categorie nouă label_custom_field: Câmp personalizat label_custom_field_plural: Câmpuri personalizate label_custom_field_new: Câmp nou personalizat label_enumerations: Enumerări label_enumeration_new: Valoare nouă label_information: InformaÈ›ie label_information_plural: InformaÈ›ii label_register: ÃŽnregistrare label_password_lost: Parolă uitată label_home: Acasă label_my_page: Pagina mea label_my_account: Contul meu label_my_projects: Proiectele mele label_administration: Administrare label_login: Autentificare label_logout: IeÈ™ire din cont label_help: Ajutor label_reported_issues: Tichete label_assigned_to_me_issues: Tichetele mele label_registered_on: ÃŽnregistrat la label_activity: Activitate label_user_activity: "Activitate %{value}" label_new: Nou label_logged_as: Autentificat ca label_environment: Mediu label_authentication: Autentificare label_auth_source: Mod de autentificare label_auth_source_new: Nou label_auth_source_plural: Moduri de autentificare label_subproject_plural: Sub-proiecte label_and_its_subprojects: "%{value} È™i sub-proiecte" label_min_max_length: lungime min - max label_list: Listă label_date: Dată label_integer: ÃŽntreg label_float: Zecimal label_boolean: Valoare logică label_string: Text label_text: Text lung label_attribute: Atribut label_attribute_plural: Atribute label_no_data: Nu există date de afiÈ™at label_change_status: Schimbă starea label_history: Istoric label_attachment: FiÈ™ier label_attachment_new: FiÈ™ier nou label_attachment_delete: Șterge fiÈ™ier label_attachment_plural: FiÈ™iere label_file_added: Adăugat label_report: Raport label_report_plural: Rapoarte label_news: Știri label_news_new: Adaugă È™tire label_news_plural: Știri label_news_latest: Ultimele È™tiri label_news_view_all: AfiÈ™ează toate È™tirile label_news_added: Adăugat label_settings: Setări label_overview: Pagină proiect label_version: Versiune label_version_new: Versiune nouă label_version_plural: Versiuni label_confirmation: Confirmare label_export_to: 'Disponibil È™i în:' label_read: CiteÈ™te... label_public_projects: Proiecte publice label_open_issues: deschis label_open_issues_plural: deschise label_closed_issues: închis label_closed_issues_plural: închise label_x_open_issues_abbr: zero: 0 deschise one: 1 deschis other: "%{count} deschise" label_x_closed_issues_abbr: zero: 0 închise one: 1 închis other: "%{count} închise" label_total: Total label_permissions: Permisiuni label_current_status: Stare curentă label_new_statuses_allowed: Stări noi permise label_all: toate label_none: niciunul label_nobody: nimeni label_next: ÃŽnainte label_previous: ÃŽnapoi label_used_by: Folosit de label_details: Detalii label_add_note: Adaugă o notă label_calendar: Calendar label_months_from: luni de la label_gantt: Gantt label_internal: Intern label_last_changes: "ultimele %{count} schimbări" label_change_view_all: AfiÈ™ează toate schimbările label_comment: Comentariu label_comment_plural: Comentarii label_x_comments: zero: fara comentarii one: 1 comentariu other: "%{count} comentarii" label_comment_add: Adaugă un comentariu label_comment_added: Adăugat label_comment_delete: Șterge comentariul label_query: Cautare personalizata label_query_plural: Căutări personalizate label_query_new: Căutare nouă label_filter_add: Adaugă filtru label_filter_plural: Filtre label_equals: este label_not_equals: nu este label_in_less_than: în mai puÈ›in de label_in_more_than: în mai mult de label_in: în label_today: astăzi label_yesterday: ieri label_this_week: săptămâna aceasta label_last_week: săptămâna trecută label_last_n_days: "ultimele %{count} zile" label_this_month: luna aceasta label_last_month: luna trecută label_this_year: anul acesta label_date_range: Perioada label_less_than_ago: mai puÈ›in de ... zile label_more_than_ago: mai mult de ... zile label_ago: în urma label_contains: conÈ›ine label_not_contains: nu conÈ›ine label_day_plural: zile label_repository: Depozit label_repository_plural: Depozite label_revision: Revizie label_revision_plural: Revizii label_associated_revisions: Revizii asociate label_added: adaugată label_modified: modificată label_copied: copiată label_renamed: redenumită label_deleted: È™tearsă label_latest_revision: Ultima revizie label_latest_revision_plural: Ultimele revizii label_view_revisions: AfiÈ™ează revizii label_max_size: Mărime maximă label_roadmap: Planificare label_roadmap_due_in: "De terminat în %{value}" label_roadmap_overdue: "ÃŽntârziat cu %{value}" label_roadmap_no_issues: Nu există tichete pentru această versiune label_search: Caută label_result_plural: Rezultate label_all_words: toate cuvintele label_wiki: Wiki label_wiki_edit: Editare Wiki label_wiki_edit_plural: Editări Wiki label_wiki_page: Pagină Wiki label_wiki_page_plural: Pagini Wiki label_index_by_title: Sortează după titlu label_index_by_date: Sortează după dată label_current_version: Versiunea curentă label_preview: Previzualizare label_feed_plural: Feed-uri label_changes_details: Detaliile tuturor schimbărilor label_issue_tracking: Urmărire tichete label_spent_time: Timp alocat label_f_hour: "%{value} oră" label_f_hour_plural: "%{value} ore" label_time_tracking: Urmărire timp de lucru label_change_plural: Schimbări label_statistics: Statistici label_commits_per_month: Commit pe luna label_commits_per_author: Commit per autor label_view_diff: AfiÈ™ează diferenÈ›ele label_diff_inline: în linie label_diff_side_by_side: una lângă alta label_options: OpÈ›iuni label_copy_workflow_from: Copiază modul de lucru de la label_permissions_report: Permisiuni label_watched_issues: Tichete urmărite label_related_issues: Tichete asociate label_applied_status: Stare aplicată label_loading: ÃŽncarcă... label_relation_new: Asociere nouă label_relation_delete: Șterge asocierea label_relates_to: asociat cu label_duplicates: duplicate label_duplicated_by: la fel ca label_blocks: blocări label_blocked_by: blocat de label_precedes: precede label_follows: urmează label_stay_logged_in: Păstrează autentificarea label_disabled: dezactivat label_show_completed_versions: Arată versiunile terminate label_me: eu label_board: Forum label_board_new: Forum nou label_board_plural: Forumuri label_topic_plural: Subiecte label_message_plural: Mesaje label_message_last: Ultimul mesaj label_message_new: Mesaj nou label_message_posted: Adăugat label_reply_plural: Răspunsuri label_send_information: Trimite utilizatorului informaÈ›iile despre cont label_year: An label_month: Lună label_week: Săptămână label_date_from: De la label_date_to: La label_language_based: Un funcÈ›ie de limba de afiÈ™are a utilizatorului label_sort_by: "Sortează după %{value}" label_send_test_email: Trimite email de test label_feeds_access_key_created_on: "Cheie de acces creată acum %{value}" label_module_plural: Module label_added_time_by: "Adăugat de %{author} acum %{age}" label_updated_time_by: "Actualizat de %{author} acum %{age}" label_updated_time: "Actualizat acum %{value}" label_jump_to_a_project: Alege proiectul... label_file_plural: FiÈ™iere label_changeset_plural: Schimbări label_default_columns: Coloane implicite label_no_change_option: (fără schimbări) label_bulk_edit_selected_issues: Editează toate tichetele selectate label_theme: Tema label_default: Implicită label_search_titles_only: Caută numai în titluri label_user_mail_option_all: "Pentru orice eveniment, în toate proiectele mele" label_user_mail_option_selected: " Pentru orice eveniment, în proiectele selectate..." label_user_mail_no_self_notified: "Nu trimite notificări pentru modificările mele" label_registration_activation_by_email: activare cont prin email label_registration_manual_activation: activare manuală a contului label_registration_automatic_activation: activare automată a contului label_display_per_page: "pe pagină: %{value}" label_age: vechime label_change_properties: Schimbă proprietățile label_general: General label_scm: SCM label_plugins: Plugin-uri label_ldap_authentication: autentificare LDAP label_downloads_abbr: D/L label_optional_description: Descriere (opÈ›ională) label_add_another_file: Adaugă alt fiÈ™ier label_preferences: PreferinÈ›e label_chronological_order: în ordine cronologică label_reverse_chronological_order: ÃŽn ordine invers cronologică label_incoming_emails: Mesaje primite label_generate_key: Generează o cheie label_issue_watchers: Cine urmăreÈ™te label_example: Exemplu label_display: AfiÈ™ează label_sort: Sortează label_ascending: Crescător label_descending: Descrescător label_date_from_to: De la %{start} la %{end} button_login: Autentificare button_submit: Trimite button_save: Salvează button_check_all: Bifează tot button_uncheck_all: Debifează tot button_delete: Șterge button_create: Creează button_create_and_continue: Creează È™i continua button_test: Testează button_edit: Editează button_add: Adaugă button_change: Modifică button_apply: Aplică button_clear: Șterge button_lock: Blochează button_unlock: Deblochează button_download: Descarcă button_list: Listează button_view: AfiÈ™ează button_move: Mută button_back: ÃŽnapoi button_cancel: Anulează button_activate: Activează button_sort: Sortează button_log_time: ÃŽnregistrează timpul de lucru button_rollback: Revenire la această versiune button_watch: Urmăresc button_unwatch: Nu urmăresc button_reply: Răspunde button_archive: Arhivează button_unarchive: Dezarhivează button_reset: Resetează button_rename: RedenumeÈ™te button_change_password: Schimbare parolă button_copy: Copiază button_annotate: Adnotează button_update: Actualizează button_configure: Configurează button_quote: Citează status_active: activ status_registered: înregistrat status_locked: blocat text_select_mail_notifications: SelectaÈ›i acÈ›iunile notificate prin email. text_regexp_info: ex. ^[A-Z0-9]+$ text_project_destroy_confirmation: Sigur doriÈ›i să È™tergeÈ›i proiectul È™i toate datele asociate? text_subprojects_destroy_warning: "Se vor È™terge È™i sub-proiectele: %{value}." text_workflow_edit: SelectaÈ›i un rol È™i un tip de tichet pentru a edita modul de lucru text_are_you_sure: SunteÈ›i sigur(ă)? text_tip_issue_begin_day: sarcină care începe în această zi text_tip_issue_end_day: sarcină care se termină în această zi text_tip_issue_begin_end_day: sarcină care începe È™i se termină în această zi text_caracters_maximum: "maxim %{count} caractere." text_caracters_minimum: "Trebuie să fie minim %{count} caractere." text_length_between: "Lungime între %{min} È™i %{max} caractere." text_tracker_no_workflow: Nu sunt moduri de lucru pentru acest tip de tichet text_unallowed_characters: Caractere nepermise text_comma_separated: Sunt permise mai multe valori (separate cu virgulă). text_issues_ref_in_commit_messages: Referire la tichete È™i rezolvare în textul mesajului text_issue_added: "Tichetul %{id} a fost adăugat de %{author}." text_issue_updated: "Tichetul %{id} a fost actualizat de %{author}." text_wiki_destroy_confirmation: Sigur doriÈ›i È™tergerea Wiki È™i a conÈ›inutului asociat? text_issue_category_destroy_question: "Această categorie conÈ›ine (%{count}) tichete. Ce doriÈ›i să faceÈ›i?" text_issue_category_destroy_assignments: Șterge apartenenÈ›a la categorie. text_issue_category_reassign_to: Atribuie tichetele la această categorie text_user_mail_option: "Pentru proiectele care nu sunt selectate, veÈ›i primi notificări doar pentru ceea ce urmăriÈ›i sau în ce sunteÈ›i implicat (ex: tichete create de dumneavoastră sau care vă sunt atribuite)." text_no_configuration_data: "Nu s-au configurat încă rolurile, stările tichetelor È™i modurile de lucru.\nEste recomandat să încărcaÈ›i configuraÈ›ia implicită. O veÈ›i putea modifica ulterior." text_load_default_configuration: ÃŽncarcă configuraÈ›ia implicită text_status_changed_by_changeset: "Aplicat în setul %{value}." text_issues_destroy_confirmation: 'Sigur doriÈ›i să È™tergeÈ›i tichetele selectate?' text_select_project_modules: 'SelectaÈ›i modulele active pentru acest proiect:' text_default_administrator_account_changed: S-a schimbat contul administratorului implicit text_file_repository_writable: Se poate scrie în directorul de ataÈ™amente text_plugin_assets_writable: Se poate scrie în directorul de plugin-uri text_minimagick_available: Este disponibil MiniMagick (opÈ›ional) text_destroy_time_entries_question: "%{hours} ore sunt înregistrate la tichetele pe care doriÈ›i să le È™tergeÈ›i. Ce doriÈ›i sa faceÈ›i?" text_destroy_time_entries: Șterge orele înregistrate text_assign_time_entries_to_project: Atribuie orele la proiect text_reassign_time_entries: 'Atribuie orele înregistrate la tichetul:' text_user_wrote: "%{value} a scris:" text_user_wrote_in: "%{value} a scris (%{link}):" text_enumeration_destroy_question: "Această valoare are %{count} obiecte." text_enumeration_category_reassign_to: 'Atribuie la această valoare:' text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/configuration.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." text_repository_usernames_mapping: "SelectaÈ›i sau modificaÈ›i contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine È™i depozit sunt echivalate automat." text_diff_truncated: '... ComparaÈ›ia a fost trunchiată pentru ca depășeÈ™te lungimea maximă de text care poate fi afiÈ™at.' text_custom_field_possible_values_info: 'O linie pentru fiecare valoare' default_role_manager: Manager default_role_developer: Dezvoltator default_role_reporter: Creator de rapoarte default_tracker_bug: Defect default_tracker_feature: FuncÈ›ie default_tracker_support: Suport default_issue_status_new: Nou default_issue_status_in_progress: In Progress default_issue_status_resolved: Rezolvat default_issue_status_feedback: AÈ™teaptă reacÈ›ii default_issue_status_closed: ÃŽnchis default_issue_status_rejected: Respins default_doc_category_user: DocumentaÈ›ie default_doc_category_tech: DocumentaÈ›ie tehnică default_priority_low: mică default_priority_normal: normală default_priority_high: mare default_priority_urgent: urgentă default_priority_immediate: imediată default_activity_design: Design default_activity_development: Dezvoltare enumeration_issue_priorities: Priorități tichete enumeration_doc_categories: Categorii documente enumeration_activities: Activități (timp de lucru) label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Această pagină are %{descendants} pagini anterioare È™i descendenÈ›i. Ce doriÈ›i să faceÈ›i? text_wiki_page_reassign_children: Atribuie paginile la această pagină text_wiki_page_nullify_children: MenÈ›ine paginile ca È™i pagini iniÈ›iale (root) text_wiki_page_destroy_children: Șterge paginile È™i descendenÈ›ii setting_password_min_length: Lungime minimă parolă field_group_by: Grupează după mail_subject_wiki_content_updated: "Pagina wiki '%{id}' a fost actualizată" label_wiki_content_added: Adăugat mail_subject_wiki_content_added: "Pagina wiki '%{id}' a fost adăugată" mail_body_wiki_content_added: Pagina wiki '%{id}' a fost adăugată de %{author}. label_wiki_content_updated: Actualizat mail_body_wiki_content_updated: Pagina wiki '%{id}' a fost actualizată de %{author}. permission_add_project: Crează proiect setting_new_project_user_role_id: Rol atribuit utilizatorului non-admin care crează un proiect. label_view_all_revisions: Arată toate reviziile label_tag: Tag label_branch: Branch error_no_tracker_in_project: Nu există un tracker asociat cu proiectul. VerificaÈ›i vă rog setările proiectului. error_no_default_issue_status: Nu există un status implicit al tichetelor. VerificaÈ›i vă rog configuraÈ›ia (MergeÈ›i la "Administrare -> Stări tichete"). text_journal_changed: "%{label} schimbat din %{old} în %{new}" text_journal_set_to: "%{label} setat ca %{value}" text_journal_deleted: "%{label} È™ters (%{old})" label_group_plural: Grupuri label_group: Grup label_group_new: Grup nou label_time_entry_plural: Timp alocat text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers version_status_closed: closed version_status_locked: locked version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous button_move_and_follow: Move and follow setting_default_projects_modules: Default enabled modules for new projects setting_gravatar_default: Default Gravatar image field_sharing: Sharing label_version_sharing_hierarchy: With project hierarchy label_version_sharing_system: With all projects label_version_sharing_descendants: With subprojects label_version_sharing_tree: With project tree label_version_sharing_none: Not shared error_can_not_archive_project: This project can not be archived button_copy_and_follow: Copy and follow label_copy_source: Source setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. error_workflow_copy_target: Please select target tracker(s) and role(s) setting_issue_done_ratio_issue_field: Use the issue field label_copy_same_as_target: Same as target label_copy_target: Target notice_issue_done_ratios_updated: Issue done ratios updated. error_workflow_copy_source: Please select a source tracker or role label_update_issue_done_ratios: Update issue done ratios setting_start_of_week: Start calendars on permission_view_issues: View Issues label_display_used_statuses_only: Only display statuses that are used by this tracker label_revision_id: Revision %{value} label_api_access_key: API access key label_api_access_key_created_on: API access key created %{value} ago label_feeds_access_key: Atom access key notice_api_access_key_reseted: Your API access key was reset. setting_rest_api_enabled: Enable REST web service label_missing_api_access_key: Missing an API access key label_missing_feeds_access_key: Missing a Atom access key button_show: Show text_line_separated: Multiple values allowed (one line for each value). setting_mail_handler_body_delimiters: Truncate emails after one of these lines permission_add_subprojects: Create subprojects label_subproject_new: New subproject text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Codare pentru mesaje field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 tichet one: 1 tichet other: "%{count} tichete" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: toate label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Total text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: cheie API setting_lost_password: Parolă uitată mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Șterge asocierea error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/ru.yml000066400000000000000000003251521500112024600172040ustar00rootroot00000000000000# Russian localization for Ruby on Rails 2.2+ # by Yaroslav Markin # # Be sure to check out "russian" gem (http://github.com/yaroslav/russian) for # full Russian language support in Rails (month names, pluralization, etc). # The following is an excerpt from that gem. # # Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñ†ÐµÐ½Ð½Ð¾Ð¹ поддержки руÑÑкого Ñзыка (варианты названий меÑÑцев, # Ð¿Ð»ÑŽÑ€Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸ так далее) в Rails 2.2 нужно иÑпользовать gem "russian" # (http://github.com/yaroslav/russian). Следующие данные -- выдержка их него, чтобы # была возможноÑть минимальной локализации Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° руÑÑкий Ñзык. ru: direction: ltr date: formats: default: "%d.%m.%Y" short: "%d %b" long: "%d %B %Y" day_names: [воÑкреÑенье, понедельник, вторник, Ñреда, четверг, пÑтница, Ñуббота] standalone_day_names: [ВоÑкреÑенье, Понедельник, Вторник, Среда, Четверг, ПÑтница, Суббота] abbr_day_names: [Ð’Ñ, Пн, Ð’Ñ‚, Ср, Чт, Пт, Сб] month_names: [~, ÑнварÑ, февралÑ, марта, апрелÑ, маÑ, июнÑ, июлÑ, авгуÑта, ÑентÑбрÑ, октÑбрÑ, ноÑбрÑ, декабрÑ] # see russian gem for info on "standalone" day names standalone_month_names: [~, Январь, Февраль, Март, Ðпрель, Май, Июнь, Июль, ÐвгуÑÑ‚, СентÑбрь, ОктÑбрь, ÐоÑбрь, Декабрь] abbr_month_names: [~, Ñнв., февр., марта, апр., маÑ, июнÑ, июлÑ, авг., Ñент., окт., ноÑб., дек.] standalone_abbr_month_names: [~, Ñнв., февр., март, апр., май, июнь, июль, авг., Ñент., окт., ноÑб., дек.] order: - :day - :month - :year time: formats: default: "%a, %d %b %Y, %H:%M:%S %z" time: "%H:%M" short: "%d %b, %H:%M" long: "%d %B %Y, %H:%M" am: "утра" pm: "вечера" number: format: separator: "," delimiter: " " precision: 3 currency: format: format: "%n %u" unit: "руб." separator: "." delimiter: " " precision: 2 percentage: format: delimiter: "" precision: format: delimiter: "" human: format: delimiter: "" precision: 3 # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] # Rails 2.3 storage_units: # Storage units output formatting. # %u is the storage unit, %n is the number (default: 2 MB) format: "%n %u" units: byte: one: "байт" few: "байта" many: "байт" other: "байта" kb: "КБ" mb: "МБ" gb: "ГБ" tb: "ТБ" datetime: distance_in_words: half_a_minute: "меньше минуты" less_than_x_seconds: one: "меньше %{count} Ñекунды" few: "меньше %{count} Ñекунд" many: "меньше %{count} Ñекунд" other: "меньше %{count} Ñекунды" x_seconds: one: "%{count} Ñекунда" few: "%{count} Ñекунды" many: "%{count} Ñекунд" other: "%{count} Ñекунды" less_than_x_minutes: one: "меньше %{count} минуты" few: "меньше %{count} минут" many: "меньше %{count} минут" other: "меньше %{count} минуты" x_minutes: one: "%{count} минуту" few: "%{count} минуты" many: "%{count} минут" other: "%{count} минуты" about_x_hours: one: "около %{count} чаÑа" few: "около %{count} чаÑов" many: "около %{count} чаÑов" other: "около %{count} чаÑа" x_hours: one: "%{count} чаÑ" few: "%{count} чаÑа" many: "%{count} чаÑов" other: "%{count} чаÑа" x_days: one: "%{count} день" few: "%{count} днÑ" many: "%{count} дней" other: "%{count} днÑ" about_x_months: one: "около %{count} меÑÑца" few: "около %{count} меÑÑцев" many: "около %{count} меÑÑцев" other: "около %{count} меÑÑца" x_months: one: "%{count} меÑÑц" few: "%{count} меÑÑца" many: "%{count} меÑÑцев" other: "%{count} меÑÑца" about_x_years: one: "около %{count} года" few: "около %{count} лет" many: "около %{count} лет" other: "около %{count} лет" over_x_years: one: "больше %{count} года" few: "больше %{count} лет" many: "больше %{count} лет" other: "больше %{count} лет" almost_x_years: one: "почти %{count} год" few: "почти %{count} года" many: "почти %{count} лет" other: "почти %{count} года" prompts: year: "Год" month: "МеÑÑц" day: "День" hour: "ЧаÑов" minute: "Минут" second: "Секунд" activerecord: errors: template: header: one: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" few: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" many: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибок" other: "%{model}: Ñохранение не удалоÑÑŒ из-за %{count} ошибки" body: "Проблемы возникли Ñо Ñледующими полÑми:" messages: inclusion: "имеет непредуÑмотренное значение" exclusion: "имеет зарезервированное значение" invalid: "имеет неверное значение" confirmation: "не Ñовпадает Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸ÐµÐ¼" accepted: "нужно подтвердить" empty: "не может быть пуÑтым" blank: "не может быть пуÑтым" too_long: one: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвол)" few: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" many: "Ñлишком большой длины (не может быть больше чем %{count} Ñимволов)" other: "Ñлишком большой длины (не может быть больше чем %{count} Ñимвола)" too_short: one: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" few: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" many: "недоÑтаточной длины (не может быть меньше %{count} Ñимволов)" other: "недоÑтаточной длины (не может быть меньше %{count} Ñимвола)" wrong_length: one: "неверной длины (может быть длиной ровно %{count} Ñимвол)" few: "неверной длины (может быть длиной ровно %{count} Ñимвола)" many: "неверной длины (может быть длиной ровно %{count} Ñимволов)" other: "неверной длины (может быть длиной ровно %{count} Ñимвола)" taken: "уже ÑущеÑтвует" not_a_number: "не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом" greater_than: "может иметь значение большее %{count}" greater_than_or_equal_to: "может иметь значение большее или равное %{count}" equal_to: "может иметь лишь значение, равное %{count}" less_than: "может иметь значение меньшее чем %{count}" less_than_or_equal_to: "может иметь значение меньшее или равное %{count}" odd: "может иметь лишь нечётное значение" even: "может иметь лишь чётное значение" greater_than_start_date: "должна быть позднее даты начала" not_same_project: "не отноÑитÑÑ Ðº одному проекту" circular_dependency: "Ð¢Ð°ÐºÐ°Ñ ÑвÑзь приведёт к цикличеÑкой завиÑимоÑти" cant_link_an_issue_with_a_descendant: "Задача не может быть ÑвÑзана Ñо Ñвоей подзадачей" earlier_than_minimum_start_date: "не может быть раньше %{date} из-за предыдущих задач" not_a_regexp: "не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым регулÑрным выражением" open_issue_with_closed_parent: "ÐžÑ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° не может быть добавлена к закрытой родительÑкой задаче" must_contain_uppercase: "должен Ñодержать заглавные латинÑкие буквы (A-Z)" must_contain_lowercase: "должен Ñодержать Ñтрочные латинÑкие буквы (a-z)" must_contain_digits: "должен Ñодержать цифры (0-9)" must_contain_special_chars: "должен Ñодержать Ñпециальные Ñимволы (!, $, %, ...)" domain_not_allowed: "Ñодержит запрещенный домен (%{domain})" too_simple: "is too simple" support: array: # Rails 2.2 sentence_connector: "и" skip_last_comma: true # Rails 2.3 words_connector: ", " two_words_connector: " и " last_word_connector: " и " actionview_instancetag_blank_option: Выберите button_activate: Ðктивировать button_add: Добавить button_annotate: ÐвторÑтво button_apply: Применить button_archive: Ðрхивировать button_back: Ðазад button_cancel: Отмена button_change_password: Изменить пароль button_change: Изменить button_check_all: Отметить вÑе button_clear: ОчиÑтить button_configure: Параметры button_copy: Копировать button_create: Создать button_create_and_continue: Создать и продолжить button_delete: Удалить button_download: Загрузить button_edit: Редактировать button_edit_associated_wikipage: "Редактировать ÑвÑзанную wiki-Ñтраницу: %{page_title}" button_list: СпиÑок button_lock: Заблокировать button_login: Вход button_log_time: Добавить трудозатраты button_move: ПеремеÑтить button_quote: Цитировать button_rename: Переименовать button_reply: Ответить button_reset: СброÑить button_rollback: ВернутьÑÑ Ðº данной верÑии button_save: Сохранить button_sort: Сортировать button_submit: Отправить button_test: Проверить button_unarchive: Разархивировать button_uncheck_all: ОчиÑтить button_unlock: Разблокировать button_unwatch: Ðе Ñледить button_update: Обновить button_view: ПроÑмотреть button_watch: Следить default_activity_design: Проектирование default_activity_development: Разработка default_doc_category_tech: ТехничеÑÐºÐ°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ default_doc_category_user: ПользовательÑÐºÐ°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ default_issue_status_in_progress: Ð’ работе default_issue_status_closed: Закрыта default_issue_status_feedback: Ðужен отклик default_issue_status_new: ÐÐ¾Ð²Ð°Ñ default_issue_status_rejected: Отклонена default_issue_status_resolved: Решена default_priority_high: Ð’Ñ‹Ñокий default_priority_immediate: Ðемедленный default_priority_low: Ðизкий default_priority_normal: Ðормальный default_priority_urgent: Срочный default_role_developer: Разработчик default_role_manager: Менеджер default_role_reporter: Репортёр default_tracker_bug: Ошибка default_tracker_feature: Улучшение default_tracker_support: Поддержка enumeration_activities: ДейÑÑ‚Ð²Ð¸Ñ (учёт времени) enumeration_doc_categories: Категории документов enumeration_issue_priorities: Приоритеты задач error_can_not_remove_role: Эта роль иÑпользуетÑÑ Ð¸ не может быть удалена. error_can_not_delete_custom_field: Ðевозможно удалить наÑтраиваемое поле error_can_not_delete_tracker_html: Этот трекер Ñодержит задачи и не может быть удален.

    The following projects have issues with this tracker:
    %{projects}

    error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию не была загружена: %{value}" error_issue_not_found_in_project: Задача не была найдена или не прикреплена к Ñтому проекту error_scm_annotate: "Данные отÑутÑтвуют или не могут быть подпиÑаны." error_scm_command_failed: "Ошибка доÑтупа к хранилищу: %{value}" error_scm_not_found: Хранилище не Ñодержит запиÑи и/или иÑправлениÑ. error_unable_to_connect: Ðевозможно подключитьÑÑ (%{value}) error_unable_delete_issue_status: Ðевозможно удалить ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ (%{value}) field_account: Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ field_activity: ДеÑтельноÑть field_admin: ÐдминиÑтратор field_assignable: Задача может быть назначена Ñтой роли field_assigned_to: Ðазначена field_attr_firstname: Ð˜Ð¼Ñ field_attr_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ field_attr_login: Ðтрибут Login field_attr_mail: email field_author: Ðвтор field_auth_source: Режим аутентификации field_base_dn: BaseDN field_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ field_column_names: Столбцы field_comments: Комментарий field_comments_sorting: Отображение комментариев field_content: Содержимое field_created_on: Создано field_default_value: Значение по умолчанию field_delay: Отложить field_description: ОпиÑание field_done_ratio: ГотовноÑть field_downloads: Загрузки field_due_date: Срок Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ field_editable: Редактируемое field_effective_date: Дата field_estimated_hours: Оценка временных затрат field_field_format: Формат field_filename: Файл field_filesize: Размер field_firstname: Ð˜Ð¼Ñ field_fixed_version: ВерÑÐ¸Ñ field_hide_mail: Скрывать мой email field_homepage: Ð¡Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ð°Ñ Ñтраница field_host: Компьютер field_hours: чаÑ(а,ов) field_identifier: Уникальный идентификатор field_is_closed: Задача закрыта field_is_default: Значение по умолчанию field_is_filter: ИÑпользуетÑÑ Ð² качеÑтве фильтра field_is_for_all: Ð”Ð»Ñ Ð²Ñех проектов field_is_in_roadmap: Задачи, отображаемые в оперативном плане field_is_public: ОбщедоÑтупный field_is_required: ОбÑзательное field_issue_to: СвÑзанные задачи field_issue: Задача field_language: Язык field_last_login_on: ПоÑледнее подключение field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ field_login: Пользователь field_mail: Email field_mail_notification: Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email field_max_length: МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° field_min_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° field_name: Ð˜Ð¼Ñ field_new_password: Ðовый пароль field_notes: ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ field_onthefly: Создание Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° лету field_parent_title: РодительÑÐºÐ°Ñ Ñтраница field_parent: РодительÑкий проект field_parent_issue: РодительÑÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° field_password_confirmation: Подтверждение field_password: Пароль field_port: Порт field_possible_values: Возможные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ field_priority: Приоритет field_project: Проект field_redirect_existing_links: Перенаправить ÑущеÑтвующие ÑÑылки field_regexp: РегулÑрное выражение field_role: Роль field_searchable: ДоÑтупно Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка field_spent_on: Дата field_start_date: Дата начала field_start_page: Ð¡Ñ‚Ð°Ñ€Ñ‚Ð¾Ð²Ð°Ñ Ñтраница field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_subject: Тема field_subproject: Подпроект field_summary: Краткое опиÑание field_text: ТекÑтовое поле field_time_entries: Трудозатраты field_time_zone: ЧаÑовой поÑÑ field_title: Заголовок field_tracker: Трекер field_type: Тип field_updated_on: Обновлено field_url: URL field_user: Пользователь field_value: Значение field_version: ВерÑÐ¸Ñ field_watcher: Ðаблюдатель general_csv_decimal_separator: ',' general_csv_encoding: UTF-8 general_csv_separator: ';' general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' general_lang_name: 'Russian (РуÑÑкий)' general_text_no: 'нет' general_text_No: 'Ðет' general_text_yes: 'да' general_text_Yes: 'Да' label_activity: ДейÑÑ‚Ð²Ð¸Ñ label_add_another_file: Добавить ещё один файл label_added_time_by: "Добавил(а) %{author} %{age} назад" label_added: добавлено label_add_note: Добавить замечание label_administration: ÐдминиÑтрирование label_age: ВозраÑÑ‚ label_ago: дней(Ñ) назад label_all_words: Ð’Ñе Ñлова label_all: вÑе label_and_its_subprojects: "%{value} и вÑе подпроекты" label_applied_status: Применимый ÑÑ‚Ð°Ñ‚ÑƒÑ label_ascending: По возраÑтанию label_assigned_to_me_issues: Мои задачи label_associated_revisions: СвÑзанные редакции label_attachment: Файл label_attachment_delete: Удалить файл label_attachment_new: Ðовый файл label_attachment_plural: Файлы label_attribute: Ðтрибут label_attribute_plural: Ðтрибуты label_authentication: ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ label_auth_source: Режим аутентификации label_auth_source_new: Ðовый режим аутентификации label_auth_source_plural: Режимы аутентификации label_blocked_by: блокируетÑÑ label_blocks: блокирует label_board: Форум label_board_new: Ðовый форум label_board_plural: Форумы label_boolean: ЛогичеÑкий label_bulk_edit_selected_issues: Редактировать вÑе выбранные задачи label_calendar: Календарь label_change_plural: Правки label_change_properties: Изменить ÑвойÑтва label_change_status: Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ label_change_view_all: ПроÑмотреть вÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ label_changes_details: ПодробноÑти по вÑем изменениÑм label_changeset_plural: Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ label_chronological_order: Ð’ хронологичеÑком порÑдке label_closed_issues: закрыто label_closed_issues_plural: закрыто label_closed_issues_plural2: закрыто label_closed_issues_plural5: закрыто label_comment: комментарий label_comment_add: ОÑтавить комментарий label_comment_added: Добавленный комментарий label_comment_delete: Удалить комментарии label_comment_plural: Комментарии label_comment_plural2: ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ label_comment_plural5: комментариев label_commits_per_author: Изменений на Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ label_commits_per_month: Изменений в меÑÑц label_confirmation: Подтверждение label_contains: Ñодержит label_copied: Ñкопировано label_copy_workflow_from: Скопировать поÑледовательноÑть дейÑтвий из label_current_status: Текущий ÑÑ‚Ð°Ñ‚ÑƒÑ label_current_version: Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ label_custom_field: ÐаÑтраиваемое поле label_custom_field_new: Ðовое наÑтраиваемое поле label_custom_field_plural: ÐаÑтраиваемые Ð¿Ð¾Ð»Ñ label_date_from: С label_date_from_to: С %{start} по %{end} label_date_range: временной интервал label_date_to: по label_date: Дата label_day_plural: дней(Ñ) label_default: По умолчанию label_default_columns: Столбцы по умолчанию label_deleted: удалено label_descending: По убыванию label_details: ПодробноÑти label_diff_inline: в текÑте label_diff_side_by_side: Ñ€Ñдом label_disabled: отключено label_display: Отображение label_display_per_page: "Ðа Ñтраницу: %{value}" label_document: Документ label_document_added: Добавлен документ label_document_new: Ðовый документ label_document_plural: Документы label_downloads_abbr: Скачиваний label_duplicated_by: дублируетÑÑ label_duplicates: дублирует label_enumeration_new: Ðовое значение label_enumerations: СпиÑки значений label_environment: Окружение label_equals: ÑоответÑтвует label_example: Пример label_export_to: ЭкÑпортировать в label_feed_plural: Atom label_feeds_access_key_created_on: "Ключ доÑтупа Atom Ñоздан %{value} назад" label_f_hour: "%{value} чаÑ" label_f_hour_plural: "%{value} чаÑов" label_file_added: Добавлен файл label_file_plural: Файлы label_filter_add: Добавить фильтр label_filter_plural: Фильтры label_float: С плавающей точкой label_follows: Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ label_gantt: Диаграмма Ганта label_general: Общее label_generate_key: Сгенерировать ключ label_greater_or_equal: ">=" label_help: Помощь label_history: ИÑÑ‚Ð¾Ñ€Ð¸Ñ label_home: ДомашнÑÑ Ñтраница label_incoming_emails: Приём Ñообщений label_index_by_date: ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñтраниц label_index_by_title: Оглавление label_information_plural: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ label_information: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ label_in_less_than: менее чем label_in_more_than: более чем label_integer: Целый label_internal: Внутренний label_in: в label_issue: Задача label_issue_added: Добавлена задача label_issue_category_new: ÐÐ¾Ð²Ð°Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ label_issue_category_plural: Категории задачи label_issue_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ label_issue_new: ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° label_issue_plural: Задачи label_issues_by: "Сортировать по %{value}" label_issue_status_new: Ðовый ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_status_plural: СтатуÑÑ‹ задач label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ label_issue_tracking: Задачи label_issue_updated: Обновлена задача label_issue_view_all: ПроÑмотреть вÑе задачи label_issue_watchers: Ðаблюдатели label_jump_to_a_project: Перейти к проекту... label_language_based: Ðа оÑнове Ñзыка label_last_changes: "менее %{count} изменений" label_last_month: прошлый меÑÑц label_last_n_days: "поÑледние %{count} дней" label_last_week: Ð¿Ñ€Ð¾ÑˆÐ»Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ñ label_latest_revision: ПоÑледнÑÑ Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_latest_revision_plural: ПоÑледние редакции label_ldap_authentication: ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ LDAP label_less_or_equal: <= label_less_than_ago: менее, чем дней(Ñ) назад label_list: СпиÑок label_loading: Загрузка... label_logged_as: Вошли как label_login: Войти label_logout: Выйти label_max_size: МакÑимальный размер label_member_new: Ðовый учаÑтник label_member: УчаÑтник label_member_plural: УчаÑтники label_message_last: ПоÑледнее Ñообщение label_message_new: Ðовое Ñообщение label_message_plural: Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ label_message_posted: Добавлено Ñообщение label_me: мне label_min_max_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ - макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° label_modified: изменено label_module_plural: Модули label_months_from: меÑÑцев(ца) Ñ label_month: МеÑÑц label_more_than_ago: более, чем дней(Ñ) назад label_my_account: ÐœÐ¾Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ label_my_page: ÐœÐ¾Ñ Ñтраница label_my_projects: Мои проекты label_new: Ðовый label_new_statuses_allowed: Разрешенные новые ÑтатуÑÑ‹ label_news_added: Добавлена новоÑть label_news_latest: ПоÑледние новоÑти label_news_new: Добавить новоÑть label_news_plural: ÐовоÑти label_news_view_all: ПоÑмотреть вÑе новоÑти label_news: ÐовоÑти label_next: Следующее label_nobody: никто label_no_change_option: (Ðет изменений) label_no_data: Ðет данных Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ label_none: отÑутÑтвует label_not_contains: не Ñодержит label_not_equals: не ÑоответÑтвует label_open_issues: открыто label_open_issues_plural: открыто label_open_issues_plural2: открыто label_open_issues_plural5: открыто label_optional_description: ОпиÑание (необÑзательно) label_options: Опции label_overview: Обзор label_password_lost: ВоÑÑтановление Ð¿Ð°Ñ€Ð¾Ð»Ñ label_permissions_report: Отчёт по правам доÑтупа label_permissions: Права доÑтупа label_plugins: Модули label_precedes: ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ label_preview: ПредпроÑмотр label_previous: Предыдущее label_profile: Профиль label_project: Проект label_project_all: Ð’Ñе проекты label_project_copy_notifications: ОтправлÑть ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте при копировании проекта label_project_latest: ПоÑледние проекты label_project_new: Ðовый проект label_project_plural: Проекты label_project_plural2: проекта label_project_plural5: проектов label_public_projects: Общие проекты label_query: Сохранённый Ð·Ð°Ð¿Ñ€Ð¾Ñ label_query_new: Ðовый Ð·Ð°Ð¿Ñ€Ð¾Ñ label_query_plural: Сохранённые запроÑÑ‹ label_read: Чтение... label_register: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_registered_on: ЗарегиÑтрирован(а) label_registration_activation_by_email: Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… запиÑей по email label_registration_automatic_activation: автоматичеÑÐºÐ°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… запиÑей label_registration_manual_activation: активировать учётные запиÑи вручную label_related_issues: СвÑзанные задачи label_relates_to: ÑвÑзана Ñ label_relation_delete: Удалить ÑвÑзь label_relation_new: ÐÐ¾Ð²Ð°Ñ ÑвÑзь label_renamed: переименовано label_reply_plural: Ответы label_report: Отчёт label_report_plural: Отчёты label_reported_issues: Созданные задачи label_repository: Хранилище label_repository_plural: Хранилища label_result_plural: Результаты label_reverse_chronological_order: Ð’ обратном порÑдке label_revision: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ label_revision_plural: Редакции label_roadmap: Оперативный план label_roadmap_due_in: "Ð’ Ñрок %{value}" label_roadmap_no_issues: Ðет задач Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ верÑии label_roadmap_overdue: "опоздание %{value}" label_role: Роль label_role_and_permissions: Роли и права доÑтупа label_role_new: ÐÐ¾Ð²Ð°Ñ Ñ€Ð¾Ð»ÑŒ label_role_plural: Роли label_scm: Тип хранилища label_search: ПоиÑк label_search_titles_only: ИÑкать только в названиÑÑ… label_send_information: Отправить пользователю информацию по учётной запиÑи label_send_test_email: ПоÑлать email Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ label_settings: ÐаÑтройки label_show_completed_versions: Показывать завершённые верÑии label_sort: Сортировать label_sort_by: "Сортировать по %{value}" label_spent_time: Трудозатраты label_statistics: СтатиÑтика label_stay_logged_in: ОÑтаватьÑÑ Ð² ÑиÑтеме label_string: ТекÑÑ‚ label_subproject_plural: Подпроекты label_subtask_plural: Подзадачи label_text: Длинный текÑÑ‚ label_theme: Тема label_this_month: Ñтот меÑÑц label_this_week: на Ñтой неделе label_this_year: Ñтот год label_time_tracking: Учёт времени label_today: ÑÐµÐ³Ð¾Ð´Ð½Ñ label_topic_plural: Темы label_total: Ð’Ñего label_tracker: Трекер label_tracker_new: Ðовый трекер label_tracker_plural: Трекеры label_updated_time: "Обновлено %{value} назад" label_updated_time_by: "Обновлено %{author} %{age} назад" label_used_by: ИÑпользуетÑÑ label_user: Пользователь label_user_activity: "ДейÑÑ‚Ð²Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %{value}" label_user_mail_no_self_notified: "Ðе извещать об изменениÑÑ…, которые Ñ Ñделал Ñам" label_user_mail_option_all: "О вÑех ÑобытиÑÑ… во вÑех моих проектах" label_user_mail_option_selected: "О вÑех ÑобытиÑÑ… только в выбранном проекте..." label_user_mail_option_only_my_events: Только Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð², которые Ñ Ð¾Ñ‚Ñлеживаю или в которых учаÑтвую label_user_new: Ðовый пользователь label_user_plural: Пользователи label_version: ВерÑÐ¸Ñ label_version_new: ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ label_version_plural: ВерÑии label_view_diff: ПроÑмотреть Ð¾Ñ‚Ð»Ð¸Ñ‡Ð¸Ñ label_view_revisions: ПроÑмотреть редакции label_watched_issues: ОтÑлеживаемые задачи label_week: ÐÐµÐ´ÐµÐ»Ñ label_wiki: Wiki label_wiki_edit: Редактирование Wiki label_wiki_edit_plural: Wiki label_wiki_page: Страница Wiki label_wiki_page_plural: Страницы Wiki label_workflow: ПоÑледовательноÑть дейÑтвий label_x_closed_issues_abbr: zero: "0 закрыто" one: "%{count} закрыта" few: "%{count} закрыто" many: "%{count} закрыто" other: "%{count} закрыто" label_x_comments: zero: "нет комментариев" one: "%{count} комментарий" few: "%{count} комментариÑ" many: "%{count} комментариев" other: "%{count} комментариев" label_x_open_issues_abbr: zero: "0 открыто" one: "%{count} открыта" few: "%{count} открыто" many: "%{count} открыто" other: "%{count} открыто" label_x_projects: zero: "нет проектов" one: "%{count} проект" few: "%{count} проекта" many: "%{count} проектов" other: "%{count} проектов" label_year: Год label_yesterday: вчера mail_body_account_activation_request: "ЗарегиÑтрирован новый пользователь (%{value}). Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ожидает Вашего утверждениÑ:" mail_body_account_information: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Вашей учётной запиÑи mail_body_account_information_external: "Ð’Ñ‹ можете иÑпользовать Вашу %{value} учётную запиÑÑŒ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." mail_body_lost_password: 'Ð”Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ñ€Ð¾Ð¹Ð´Ð¸Ñ‚Ðµ по Ñледующей ÑÑылке:' mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ учётной запиÑи пройдите по Ñледующей ÑÑылке:' mail_body_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на Ñледующие %{days} дней:" mail_subject_account_activation_request: "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° активацию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² ÑиÑтеме %{value}" mail_subject_lost_password: "Ваш %{value} пароль" mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи %{value}" mail_subject_reminder: "%{count} назначенных на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в ближайшие %{days} дней" notice_account_activated: Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ активирована. Ð’Ñ‹ можете войти. notice_account_invalid_credentials: Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль notice_account_lost_email_sent: Вам отправлено пиÑьмо Ñ Ð¸Ð½ÑтрукциÑми по выбору нового паролÑ. notice_account_password_updated: Пароль уÑпешно обновлён. notice_account_pending: "Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ñоздана и ожидает Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора." notice_account_register_done: Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно Ñоздана. Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ Вашей учётной запиÑи пройдите по ÑÑылке, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ñ‹Ñлана Вам по Ñлектронной почте. notice_account_updated: Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уÑпешно обновлена. notice_account_wrong_password: Ðеверный пароль notice_can_t_change_password: Ð”Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ учётной запиÑи иÑпользуетÑÑ Ð¸Ñточник внешней аутентификации. Ðевозможно изменить пароль. notice_default_data_loaded: Была загружена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию. notice_email_error: "Во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑьма произошла ошибка (%{value})" notice_email_sent: "Отправлено пиÑьмо %{value}" notice_failed_to_save_issues: "Ðе удалоÑÑŒ Ñохранить %{count} пункт(ов) из %{total} выбранных: %{ids}." notice_failed_to_save_members: "Ðе удалоÑÑŒ Ñохранить учаÑтника(ов): %{errors}." notice_feeds_access_key_reseted: Ваш ключ доÑтупа Atom был Ñброшен. notice_file_not_found: Страница, на которую Ð’Ñ‹ пытаетеÑÑŒ зайти, не ÑущеÑтвует или удалена. notice_locking_conflict: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð° другим пользователем. notice_not_authorized: У Ð’Ð°Ñ Ð½ÐµÑ‚ прав Ð´Ð»Ñ Ð¿Ð¾ÑÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ Ñтраницы. notice_successful_connection: Подключение уÑпешно уÑтановлено. notice_successful_create: Создание уÑпешно. notice_successful_delete: Удаление уÑпешно. notice_successful_update: Обновление уÑпешно. notice_unable_delete_version: Ðевозможно удалить верÑию. permission_add_issues: Добавление задач permission_add_issue_notes: Добавление примечаний permission_add_issue_watchers: Добавление наблюдателей permission_add_messages: Отправка Ñообщений permission_browse_repository: ПроÑмотр хранилища permission_comment_news: Комментирование новоÑтей permission_commit_access: Изменение файлов в хранилище permission_delete_issues: Удаление задач permission_delete_messages: Удаление Ñообщений permission_delete_own_messages: Удаление ÑобÑтвенных Ñообщений permission_delete_wiki_pages: Удаление wiki-Ñтраниц permission_delete_wiki_pages_attachments: Удаление прикреплённых файлов permission_edit_issue_notes: Редактирование примечаний permission_edit_issues: Редактирование задач permission_edit_messages: Редактирование Ñообщений permission_edit_own_issue_notes: Редактирование ÑобÑтвенных примечаний permission_edit_own_messages: Редактирование ÑобÑтвенных Ñообщений permission_edit_own_time_entries: Редактирование ÑобÑтвенного учёта времени permission_edit_project: Редактирование проектов permission_edit_time_entries: Редактирование учёта времени permission_edit_wiki_pages: Редактирование wiki-Ñтраниц permission_export_wiki_pages: ЭкÑпорт wiki-Ñтраниц permission_log_time: Учёт трудозатрат permission_view_changesets: ПроÑмотр изменений хранилища permission_view_time_entries: ПроÑмотр трудозатрат permission_manage_project_activities: Управление типами дейÑтвий Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð° permission_manage_boards: Управление форумами permission_manage_categories: Управление категориÑми задач permission_manage_files: Управление файлами permission_manage_issue_relations: Управление ÑвÑзыванием задач permission_manage_members: Управление учаÑтниками permission_manage_news: Управление новоÑÑ‚Ñми permission_manage_public_queries: Управление общими запроÑами permission_manage_repository: Управление хранилищем permission_manage_subtasks: Управление подзадачами permission_manage_versions: Управление верÑиÑми permission_manage_wiki: Управление Wiki permission_protect_wiki_pages: Блокирование wiki-Ñтраниц permission_rename_wiki_pages: Переименование wiki-Ñтраниц permission_save_queries: Сохранение запроÑов permission_select_project_modules: Выбор модулей проекта permission_view_calendar: ПроÑмотр ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ permission_view_documents: ПроÑмотр документов permission_view_files: ПроÑмотр файлов permission_view_gantt: ПроÑмотр диаграммы Ганта permission_view_issue_watchers: ПроÑмотр ÑпиÑка наблюдателей permission_view_messages: ПроÑмотр Ñообщений permission_view_wiki_edits: ПроÑмотр иÑтории Wiki permission_view_wiki_pages: ПроÑмотр Wiki project_module_boards: Форумы project_module_documents: Документы project_module_files: Файлы project_module_issue_tracking: Задачи project_module_news: ÐовоÑти project_module_repository: Хранилище project_module_time_tracking: Учёт времени project_module_wiki: Wiki project_module_gantt: Диаграмма Ганта project_module_calendar: Календарь setting_activity_days_default: КоличеÑтво дней, отображаемых в ДейÑтвиÑÑ… setting_app_title: Ðазвание Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ setting_attachment_max_size: МакÑимальный размер Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ setting_autofetch_changesets: ÐвтоматичеÑки Ñледить за изменениÑми хранилища setting_autologin: ÐвтоматичеÑкий вход setting_cache_formatted_text: Кешировать форматированный текÑÑ‚ setting_commit_fix_keywords: Ðазначение ключевых Ñлов setting_commit_ref_keywords: Ключевые Ñлова Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка setting_cross_project_issue_relations: Разрешить переÑечение задач по проектам setting_date_format: Формат даты setting_default_language: Язык по умолчанию setting_default_notification_option: СпоÑоб Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию setting_default_projects_public: Ðовые проекты ÑвлÑÑŽÑ‚ÑÑ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупными setting_diff_max_lines_displayed: МакÑимальное чиÑло Ñтрок Ð´Ð»Ñ diff setting_display_subprojects_issues: Отображение подпроектов по умолчанию setting_emails_footer: ПодÑтрочные Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¿Ð¸Ñьма setting_enabled_scm: Включённые SCM setting_feeds_limit: Ограничение количеÑтва заголовков Ð´Ð»Ñ Atom потока setting_file_max_size_displayed: МакÑимальный размер текÑтового файла Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ setting_gravatar_enabled: ИÑпользовать аватар Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· Gravatar setting_host_name: Ð˜Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° setting_issue_list_default_columns: Столбцы, отображаемые в ÑпиÑке задач по умолчанию setting_issues_export_limit: Ограничение по ÑкÑпортируемым задачам setting_login_required: Ðеобходима Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ setting_mail_from: ИÑходÑщий email Ð°Ð´Ñ€ÐµÑ setting_mail_handler_api_enabled: Включить веб-ÑÐµÑ€Ð²Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñщих Ñообщений setting_mail_handler_api_key: API ключ setting_per_page_options: КоличеÑтво запиÑей на Ñтраницу setting_plain_text_mail: Только проÑтой текÑÑ‚ (без HTML) setting_protocol: Протокол setting_repository_log_display_limit: МакÑимальное количеÑтво редакций, отображаемых в журнале изменений setting_self_registration: СаморегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ setting_sequential_project_identifiers: Генерировать поÑледовательные идентификаторы проектов setting_sys_api_enabled: Включить веб-ÑÐµÑ€Ð²Ð¸Ñ Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰ÐµÐ¼ setting_text_formatting: Форматирование текÑта setting_time_format: Формат времени setting_user_format: Формат Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ setting_welcome_text: ТекÑÑ‚ приветÑÑ‚Ð²Ð¸Ñ setting_wiki_compression: Сжатие иÑтории Wiki status_active: активен status_locked: заблокирован status_registered: зарегиÑтрирован text_are_you_sure: Ð’Ñ‹ уверены? text_assign_time_entries_to_project: Прикрепить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ Ðº проекту text_caracters_maximum: "МакÑимум %{count} Ñимволов(а)." text_caracters_minimum: "Должно быть не менее %{count} Ñимволов." text_comma_separated: ДопуÑтимы неÑколько значений (через запÑтую). text_custom_field_possible_values_info: 'По одному значению в каждой Ñтроке' text_default_administrator_account_changed: Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ админиÑтратора по умолчанию изменена text_destroy_time_entries_question: "Ðа Ñту задачу зарегиÑтрировано %{hours} чаÑа(ов) трудозатрат. Что Ð’Ñ‹ хотите предпринÑть?" text_destroy_time_entries: Удалить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ text_diff_truncated: '... Этот diff ограничен, так как превышает макÑимальный отображаемый размер.' text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/configuration.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." text_enumeration_category_reassign_to: 'Ðазначить им Ñледующее значение:' text_enumeration_destroy_question: "%{count} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." text_file_repository_writable: Хранилище файлов доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи text_issue_added: "Создана Ð½Ð¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° %{id} (%{author})." text_issue_category_destroy_assignments: Удалить Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸ text_issue_category_destroy_question: "ÐеÑколько задач (%{count}) назначено в данную категорию. Что Ð’Ñ‹ хотите предпринÑть?" text_issue_category_reassign_to: Переназначить задачи Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ категории text_issues_destroy_confirmation: 'Ð’Ñ‹ уверены, что хотите удалить выбранные задачи?' text_issues_ref_in_commit_messages: СопоÑтавление и изменение ÑтатуÑа задач иÑÑ…Ð¾Ð´Ñ Ð¸Ð· текÑта Ñообщений text_issue_updated: "Задача %{id} была обновлена (%{author})." text_journal_changed: "Параметр %{label} изменилÑÑ Ñ %{old} на %{new}" text_journal_deleted: "Значение %{old} параметра %{label} удалено" text_journal_set_to: "Параметр %{label} изменилÑÑ Ð½Ð° %{value}" text_length_between: "Длина между %{min} и %{max} Ñимволов." text_load_default_configuration: Загрузить конфигурацию по умолчанию text_no_configuration_data: "Роли, трекеры, ÑтатуÑÑ‹ задач и оперативный план не были Ñконфигурированы.\nÐаÑтоÑтельно рекомендуетÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ конфигурацию по-умолчанию. Ð’Ñ‹ Ñможете её изменить потом." text_plugin_assets_writable: Каталог реÑурÑов модулей доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи text_project_destroy_confirmation: Ð’Ñ‹ наÑтаиваете на удалении данного проекта и вÑей отноÑÑщейÑÑ Ðº нему информации? text_reassign_time_entries: 'ПеренеÑти зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° Ñледующую задачу:' text_regexp_info: "например: ^[A-Z0-9]+$" text_repository_usernames_mapping: "Выберите или обновите Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Redmine, ÑвÑзанного Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñ‹Ð¼Ð¸ именами в журнале хранилища.\nПользователи Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼Ð¸ именами или email в Redmine и хранилище ÑвÑзываютÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки." text_minimagick_available: ДоÑтупно иÑпользование MiniMagick (опционально) text_select_mail_notifications: Выберите дейÑтвиÑ, при которых будет отÑылатьÑÑ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ðµ на Ñлектронную почту. text_select_project_modules: 'Выберите модули, которые будут иÑпользованы в проекте:' text_status_changed_by_changeset: "Реализовано в %{value} редакции." text_subprojects_destroy_warning: "Подпроекты: %{value} также будут удалены." text_tip_issue_begin_day: дата начала задачи text_tip_issue_begin_end_day: начало задачи и окончание её в Ñтот же день text_tip_issue_end_day: дата Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸ text_tracker_no_workflow: Ð”Ð»Ñ Ñтого трекера поÑледовательноÑть дейÑтвий не определена text_unallowed_characters: Запрещённые Ñимволы text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… проектов, Ð’Ñ‹ будете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ о том, что проÑматриваете или в чем учаÑтвуете (например, задачи, автором которых Ð’Ñ‹ ÑвлÑетеÑÑŒ, или которые Вам назначены)." text_user_wrote: "%{value} пиÑал(а):" text_user_wrote_in: "%{value} пиÑал(а) (%{link}):" text_wiki_destroy_confirmation: Ð’Ñ‹ уверены, что хотите удалить данную Wiki и вÑе её Ñодержимое? text_workflow_edit: Выберите роль и трекер Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледовательноÑти ÑоÑтоÑний warning_attachments_not_saved: "%{count} файл(ов) невозможно Ñохранить." text_wiki_page_destroy_question: Эта Ñтраница имеет %{descendants} дочерних Ñтраниц и их потомков. Что вы хотите предпринÑть? text_wiki_page_reassign_children: Переопределить дочерние Ñтраницы на текущую Ñтраницу text_wiki_page_nullify_children: Сделать дочерние Ñтраницы главными Ñтраницами text_wiki_page_destroy_children: Удалить дочерние Ñтраницы и вÑех их потомков setting_password_min_length: ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð¿Ð°Ñ€Ð¾Ð»Ñ field_group_by: Группировать результаты по mail_subject_wiki_content_updated: "Wiki-Ñтраница '%{id}' была обновлена" label_wiki_content_added: Добавлена wiki-Ñтраница mail_subject_wiki_content_added: "Wiki-Ñтраница '%{id}' была добавлена" mail_body_wiki_content_added: "%{author} добавил(а) wiki-Ñтраницу '%{id}'." label_wiki_content_updated: Обновлена wiki-Ñтраница mail_body_wiki_content_updated: "%{author} обновил(а) wiki-Ñтраницу '%{id}'." permission_add_project: Создание проекта setting_new_project_user_role_id: Роль, Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð°Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŽ, Ñоздавшему проект label_view_all_revisions: Показать вÑе ревизии label_tag: Метка label_branch: Ветвь error_no_tracker_in_project: С Ñтим проектом не аÑÑоциирован ни один трекер. Проверьте наÑтройки проекта. error_no_default_issue_status: Ðе определен ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡ по умолчанию. Проверьте наÑтройки (Ñм. "ÐдминиÑтрирование -> СтатуÑÑ‹ задач"). label_group_plural: Группы label_group: Группа label_group_new: ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° label_time_entry_plural: Трудозатраты text_journal_added: "%{label} %{value} добавлен" field_active: Ðктивно enumeration_system_activity: СиÑтемное permission_delete_issue_watchers: Удаление наблюдателей version_status_closed: закрыт version_status_locked: заблокирован version_status_open: открыт error_can_not_reopen_issue_on_closed_version: Задача, Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð°Ñ Ðº закрытой верÑии, не Ñможет быть открыта Ñнова label_user_anonymous: Ðноним button_move_and_follow: ПеремеÑтить и перейти setting_default_projects_modules: Включенные по умолчанию модули Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… проектов setting_gravatar_default: Изображение Gravatar по умолчанию field_sharing: СовмеÑтное иÑпользование label_version_sharing_hierarchy: С иерархией проектов label_version_sharing_system: Со вÑеми проектами label_version_sharing_descendants: С подпроектами label_version_sharing_tree: С деревом проектов label_version_sharing_none: Без ÑовмеÑтного иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ error_can_not_archive_project: Этот проект не может быть заархивирован button_copy_and_follow: Копировать и продолжить label_copy_source: ИÑточник setting_issue_done_ratio: РаÑÑчитывать готовноÑть задачи Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¿Ð¾Ð»Ñ setting_issue_done_ratio_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ error_issue_done_ratios_not_updated: Параметр готовноÑть задач не обновлён error_workflow_copy_target: Выберите целевые трекеры и роли setting_issue_done_ratio_issue_field: ГотовноÑть задачи label_copy_same_as_target: То же, что и у цели label_copy_target: Цель notice_issue_done_ratios_updated: Параметр «Ð³Ð¾Ñ‚овноÑть» обновлён. error_workflow_copy_source: Выберите иÑходный трекер или роль label_update_issue_done_ratios: Обновить готовноÑть задач setting_start_of_week: День начала недели label_api_access_key: Ключ доÑтупа к API text_line_separated: Разрешено неÑколько значений (по одному значению в Ñтроку). label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} permission_view_issues: ПроÑмотр задач label_display_used_statuses_only: Отображать только те ÑтатуÑÑ‹, которые иÑпользуютÑÑ Ð² Ñтом трекере label_api_access_key_created_on: Ключ доÑтуп к API был Ñоздан %{value} назад label_feeds_access_key: Ключ доÑтупа к Atom notice_api_access_key_reseted: Ваш ключ доÑтупа к API был Ñброшен. setting_rest_api_enabled: Включить веб-ÑÐµÑ€Ð²Ð¸Ñ REST button_show: Показать label_missing_api_access_key: ОтÑутÑтвует ключ доÑтупа к API label_missing_feeds_access_key: ОтÑутÑтвует ключ доÑтупа к Atom setting_mail_handler_body_delimiters: Урезать пиÑьмо поÑле одной из Ñтих Ñтрок permission_add_subprojects: Создание подпроектов label_subproject_new: Ðовый подпроект text_own_membership_delete_confirmation: |- Ð’Ñ‹ ÑобираетеÑÑŒ удалить некоторые или вÑе права, из-за чего могут пропаÑть права на редактирование Ñтого проекта. Продолжить? label_close_versions: Закрыть завершённые верÑии label_board_sticky: Прикреплена label_board_locked: Заблокирована field_principal: Пользователь или группа text_zoom_out: Отдалить text_zoom_in: Приблизить notice_unable_delete_time_entry: Ðевозможно удалить запиÑÑŒ журнала. label_user_mail_option_none: Ðет Ñобытий field_member_of_group: Группа назначенного field_assigned_to_role: Роль назначенного notice_not_authorized_archived_project: Запрашиваемый проект был архивирован. label_principal_search: "Ðайти Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ группу:" label_user_search: "Ðайти пользователÑ:" field_visible: Видимое setting_emails_header: Заголовок пиÑьма setting_commit_logtime_activity_id: ДейÑтвие Ð´Ð»Ñ ÑƒÑ‡Ñ‘Ñ‚Ð° времени text_time_logged_by_changeset: Учтено в редакции %{value}. setting_commit_logtime_enabled: Включить учёт времени notice_gantt_chart_truncated: Диаграмма будет уÑечена, поÑкольку превышено макÑимальное кол-во Ñлементов, которые могут отображатьÑÑ (%{max}) setting_gantt_items_limit: МакÑимальное кол-во Ñлементов отображаемых на диаграмме Ганта field_warn_on_leaving_unsaved: Предупреждать при закрытии Ñтраницы Ñ Ð½ÐµÑохранённым текÑтом text_warn_on_leaving_unsaved: Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñтраница Ñодержит неÑохранённый текÑÑ‚, который будет потерÑн, еÑли вы покинете Ñту Ñтраницу. label_my_queries: Мои Ñохранённые запроÑÑ‹ text_journal_changed_no_detail: "%{label} обновлено" label_news_comment_added: Добавлен комментарий к новоÑти button_expand_all: Развернуть вÑе button_collapse_all: Свернуть вÑе label_additional_workflow_transitions_for_assignee: Дополнительные переходы, когда пользователь ÑвлÑетÑÑ Ð¸Ñполнителем label_additional_workflow_transitions_for_author: Дополнительные переходы, когда пользователь ÑвлÑетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ label_bulk_edit_selected_time_entries: МаÑÑовое изменение выбранных запиÑей трудозатрат text_time_entries_destroy_confirmation: Ð’Ñ‹ уверены что хотите удалить выбранные трудозатраты? label_role_anonymous: Ðноним label_role_non_member: Ðе учаÑтник проекта label_issue_note_added: Примечание добавлено label_issue_status_updated: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ‘Ð½ label_issue_priority_updated: Приоритет обновлён label_issues_visibility_own: Задачи Ñозданные или назначенные пользователю field_issues_visibility: ВидимоÑть задач label_issues_visibility_all: Ð’Ñе задачи permission_set_own_issues_private: УÑтановление видимоÑти (общаÑ/чаÑтнаÑ) Ð´Ð»Ñ ÑобÑтвенных задач field_is_private: ЧаÑÑ‚Ð½Ð°Ñ permission_set_issues_private: УÑтановление видимоÑти (общаÑ/чаÑтнаÑ) Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡ label_issues_visibility_public: Только общие задачи text_issues_destroy_descendants_confirmation: Так же будет удалено %{count} задач(и). field_commit_logs_encoding: Кодировка комментариев в хранилище field_scm_path_encoding: Кодировка пути text_scm_path_encoding_note: "По умолчанию: UTF-8" field_path_to_repository: Путь к хранилищу field_root_directory: ÐšÐ¾Ñ€Ð½ÐµÐ²Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ field_cvs_module: Модуль field_cvsroot: CVSROOT text_mercurial_repository_note: Локальное хранилище (например, /hgrepo, c:\hgrepo) text_scm_command: Команда text_scm_command_version: ВерÑÐ¸Ñ label_git_report_last_commit: Указывать поÑледнее Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² и директорий text_scm_config: Ð’Ñ‹ можете наÑтроить команды SCM в файле config/configuration.yml. ПожалуйÑта, перезапуÑтите приложение поÑле Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого файла. text_scm_command_not_available: Команда ÑиÑтемы ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий недоÑтупна. ПожалуйÑта, проверьте наÑтройки в админиÑтративной панели. notice_issue_successful_create: Задача %{id} Ñоздана. label_between: между setting_issue_group_assignment: Разрешить назначение задач группам пользователей label_diff: Разница(diff) text_git_repository_note: Хранилище пуÑтое и локальное (Ñ‚.е. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: ПорÑдок Ñортировки description_project_scope: ОблаÑть поиÑка description_filter: Фильтр description_user_mail_notification: ÐаÑтройки почтовых оповещений description_message_content: Содержание ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ description_available_columns: ДоÑтупные Ñтолбцы description_issue_category_reassign: Выберите категорию задачи description_search: Поле поиÑка description_notes: ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ description_choose_project: Проекты description_query_sort_criteria_attribute: Критерий Ñортировки description_wiki_subpages_reassign: Выбрать новую родительÑкую Ñтраницу description_selected_columns: Выбранные Ñтолбцы label_parent_revision: РодительÑкий label_child_revision: Дочерний error_scm_annotate_big_text_file: Комментарий невозможен из-за Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÑимального размера текÑтового файла. setting_default_issue_start_date_to_creation_date: ИÑпользовать текущую дату в качеÑтве даты начала Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… задач button_edit_section: Редактировать Ñту Ñекцию setting_repositories_encodings: Кодировка вложений и хранилищ description_all_columns: Ð’Ñе Ñтолбцы button_export: ЭкÑпорт label_export_options: "%{export_format} параметры ÑкÑпорта" error_attachment_too_big: Этот файл Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ из-за Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð¼Ð°ÐºÑимального размера файла (%{max_size}) notice_failed_to_save_time_entries: "Ðевозможно Ñохранить %{count} трудозатраты %{total} выбранных: %{ids}." label_x_issues: one: "%{count} задача" few: "%{count} задачи" many: "%{count} задач" other: "%{count} Задачи" label_repository_new: Ðовое хранилище field_repository_is_default: Хранилище по умолчанию label_copy_attachments: Копировать Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ label_item_position: "%{position}/%{count}" label_completed_versions: Завершенные верÑии text_project_identifier_info: ДопуÑкаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñтрочные латинÑкие буквы (a-z), цифры, дефиÑÑ‹ и подчёркиваниÑ.
    ПоÑле ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ изменить нельзÑ. field_multiple: МножеÑтвенные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ setting_commit_cross_project_ref: Разрешить ÑÑылатьÑÑ Ð¸ иÑправлÑть задачи во вÑех оÑтальных проектах text_issue_conflict_resolution_add_notes: Добавить мои Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð¸ отказатьÑÑ Ð¾Ñ‚ моих изменений text_issue_conflict_resolution_overwrite: Применить мои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (вÑе предыдущие Ð·Ð°Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ Ñохранены, но некоторые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть перезапиÑаны) notice_issue_update_conflict: Кто-то изменил задачу, пока вы её редактировали. text_issue_conflict_resolution_cancel: Отменить мои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ показать задачу заново %{link} permission_manage_related_issues: Управление ÑвÑзанными задачами field_auth_source_ldap_filter: Фильтр LDAP label_search_for_watchers: Ðайти наблюдателей notice_account_deleted: "Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ полноÑтью удалена" setting_unsubscribe: "Разрешить пользователÑм удалÑть Ñвои учётные запиÑи" button_delete_my_account: "Удалить мою учётную запиÑÑŒ" text_account_destroy_confirmation: "Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ будет полноÑтью удалена без возможноÑти воÑÑтановлениÑ.\nÐ’Ñ‹ уверены, что хотите продолжить?" error_session_expired: Срок вашей ÑеÑÑии иÑтёк. ПожалуйÑта войдите ещё раз text_session_expiration_settings: "Внимание! Изменение Ñтих наÑтроек может привеÑти к завершению текущих ÑеÑÑий, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ð°ÑˆÑƒ." setting_session_lifetime: МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть ÑеÑÑии setting_session_timeout: Таймаут ÑеÑÑии label_session_expiration: Срок иÑÑ‚ÐµÑ‡ÐµÐ½Ð¸Ñ ÑеÑÑии permission_close_project: Закрывать / открывать проекты button_close: Сделать закрытым button_reopen: Сделать открытым project_status_active: открытые project_status_closed: закрытые project_status_archived: архивированные text_project_closed: Проект закрыт и находитÑÑ Ð² режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ. notice_user_successful_create: Пользователь %{id} Ñоздан. field_core_fields: Стандартные Ð¿Ð¾Ð»Ñ field_timeout: Таймаут (в Ñекундах) setting_thumbnails_enabled: Отображать превью Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ setting_thumbnails_size: Размер первью (в пикÑелÑÑ…) label_status_transitions: СтатуÑ-переходы label_fields_permissions: Права на Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ label_readonly: Ðе изменÑетÑÑ label_required: ОбÑзательное text_repository_identifier_info: ДопуÑкаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñтрочные латинÑкие буквы (a-z), цифры, дефиÑÑ‹ и подчёркиваниÑ.
    ПоÑле ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ изменить нельзÑ. field_board_parent: РодительÑкий форум label_attribute_of_project: Проект %{name} label_attribute_of_author: Ð˜Ð¼Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° %{name} label_attribute_of_assigned_to: Ðазначена %{name} label_attribute_of_fixed_version: ВерÑÐ¸Ñ %{name} label_copy_subtasks: Копировать подзадачи label_copied_to: Ñкопирована в label_copied_from: Ñкопирована Ñ label_any_issues_in_project: любые задачи в проекте label_any_issues_not_in_project: любые задачи не в проекте field_private_notes: Приватный комментарий permission_view_private_notes: ПроÑмотр приватных комментариев permission_set_notes_private: Размещение приватных комментариев label_no_issues_in_project: нет задач в проекте label_any: вÑе label_last_n_weeks: one: "Ð¿Ñ€Ð¾ÑˆÐ»Ð°Ñ %{count} неделÑ" few: "прошлые %{count} недели" many: "прошлые %{count} недель" other: "прошлые %{count} недели" setting_cross_project_subtasks: Разрешить подзадачи между проектами label_cross_project_descendants: С подпроектами label_cross_project_tree: С деревом проектов label_cross_project_hierarchy: С иерархией проектов label_cross_project_system: Со вÑеми проектами button_hide: Скрыть setting_non_working_week_days: Ðерабочие дни label_in_the_next_days: в Ñледующие дни label_in_the_past_days: в прошлые дни label_attribute_of_user: Пользователь %{name} text_turning_multiple_off: ЕÑли отключить множеÑтвенные значениÑ, лишние Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· ÑпиÑка будут удалены, чтобы оÑталоÑÑŒ только по одному значению. label_attribute_of_issue: Задача %{name} permission_add_documents: Добавить документы permission_edit_documents: Редактировать документы permission_delete_documents: Удалить документы label_gantt_progress_line: Ð›Ð¸Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€ÐµÑÑа setting_jsonp_enabled: Поддержка JSONP field_inherit_members: ÐаÑледовать учаÑтников field_closed_on: Закрыта field_generate_password: Создание Ð¿Ð°Ñ€Ð¾Ð»Ñ setting_default_projects_tracker_ids: Трекеры по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… проектов label_total_time: Общее Ð²Ñ€ÐµÐ¼Ñ notice_account_not_activated_yet: Ð’Ñ‹ пока не имеете активированных учётных запиÑей. Чтобы получить пиÑьмо Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸ÐµÐ¹, перейдите по ÑÑылке. notice_account_locked: Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована. label_hidden: Скрытый label_visibility_private: только мне label_visibility_roles: только Ñтим ролÑм label_visibility_public: вÑем пользователÑм field_must_change_passwd: Изменить пароль при Ñледующем входе notice_new_password_must_be_different: Ðовый пароль должен отличатьÑÑ Ð¾Ñ‚ текущего setting_mail_handler_excluded_filenames: ИÑключать Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ имени text_convert_available: ДоÑтупно иÑпользование ImageMagick (необÑзательно) label_link: СÑылка label_only: только label_drop_down_list: выпадаюший ÑпиÑок label_checkboxes: чекбокÑÑ‹ label_link_values_to: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑÑылки Ð´Ð»Ñ URL setting_force_default_language_for_anonymous: Ðе определÑть Ñзык Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ñ‹Ñ… пользователей setting_force_default_language_for_loggedin: Ðе определÑть Ñзык Ð´Ð»Ñ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированных пользователей label_custom_field_select_type: Выберите тип объекта Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ будет Ñоздано наÑтраиваемое поле label_issue_assigned_to_updated: ИÑполнитель обновлен label_check_for_updates: Проверить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ label_latest_compatible_version: ПоÑледнÑÑ ÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ label_unknown_plugin: ÐеизвеÑтный плагин label_radio_buttons: radio buttons label_group_anonymous: Ðнонимные пользователи label_group_non_member: Ðе учаÑтвующие пользователи label_add_projects: Добавить проекты field_default_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾ умолчанию text_subversion_repository_note: 'Ðапример: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: ВидимоÑть пользователей label_users_visibility_all: Ð’Ñе активные пользователи label_users_visibility_members_of_visible_projects: УчаÑтники видимых проектов label_edit_attachments: Редактировать прикреплённые файлы setting_link_copied_issue: СвÑзывать задачи при копировании label_link_copied_issue: СвÑзать Ñкопированную задачу label_ask: СпроÑить label_search_attachments_yes: ИÑкать в именах прикреплённых файлов и опиÑаниÑÑ… label_search_attachments_no: Ðе иÑкать в прикреплениÑÑ… label_search_attachments_only: ИÑкать только в прикреплённых файлах label_search_open_issues_only: Только в открытых задачах field_address: Email setting_max_additional_emails: МакÑимальное количеÑтво дополнительных email адреÑов label_email_address_plural: Emails label_email_address_add: Добавить email Ð°Ð´Ñ€ÐµÑ label_enable_notifications: Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ label_disable_notifications: Выключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ setting_search_results_per_page: КоличеÑтво найденных результатов на Ñтраницу label_blank_value: пуÑто permission_copy_issues: Копирование задач error_password_expired: Ð’Ñ€ÐµÐ¼Ñ Ð´ÐµÐ¹ÑÑ‚Ð²Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸Ñтекло или админиÑтратор потребовал Ñменить его. field_time_entries_visibility: ВидимоÑть трудозатрат setting_password_max_age: Требовать Ñменить пароль по иÑтечении label_parent_task_attributes: Ðтрибуты родительÑкой задачи label_parent_task_attributes_derived: С учётом подзадач label_parent_task_attributes_independent: Без учёта подзадач label_time_entries_visibility_all: Ð’Ñе трудозатраты label_time_entries_visibility_own: Только ÑобÑтвенные трудозатраты label_member_management: Управление учаÑтниками label_member_management_all_roles: Ð’Ñе роли label_member_management_selected_roles_only: Только Ñти роли label_password_required: Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ Ñвой пароль label_total_spent_time: Ð’Ñего затрачено времени notice_import_finished: "%{count} Ñлемент(а, ов) были импортированы" notice_import_finished_with_errors: "%{count} из %{total} Ñлемент(а, ов) не могут быть импортированы" error_invalid_file_encoding: Кодировка файла не ÑоответÑтвует выбранной %{encoding} error_invalid_csv_file_or_settings: Файл не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ CSV или не ÑоответÑтвует предÑтавленным наÑтройкам (%{value}) error_can_not_read_import_file: Во Ð²Ñ€ÐµÐ¼Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° произошла ошибка permission_import_issues: Импорт задач label_import_issues: Импорт задач label_select_file_to_import: Выберите файл Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° label_fields_separator: Разделитель label_fields_wrapper: Ограничитель label_encoding: Кодировка label_comma_char: ЗапÑÑ‚Ð°Ñ label_semi_colon_char: Точка Ñ Ð·Ð°Ð¿Ñтой label_quote_char: Кавычки label_double_quote_char: Двойные кавычки label_fields_mapping: СоответÑтвие полей label_file_content_preview: ПредпроÑмотр Ñодержимого файла label_create_missing_values: Создать недоÑтающие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ button_import: Импорт field_total_estimated_hours: ÐžÐ±Ñ‰Ð°Ñ Ð¾Ñ†ÐµÐ½ÐºÐ° временных затрат label_api: API label_total_plural: Итоги label_assigned_issues: Ðазначенные задачи label_field_format_enumeration: СпиÑок ключ/значение label_f_hour_short: '%{value} ч' field_default_version: ВерÑÐ¸Ñ Ð¿Ð¾ умолчанию error_attachment_extension_not_allowed: РаÑширение %{extension} запрещено setting_attachment_extensions_allowed: ДопуÑтимые раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ setting_attachment_extensions_denied: Запрещённые раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ label_any_open_issues: любые открытые задачи label_no_open_issues: нет открытых задач label_default_values_for_new_users: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… пользователей error_ldap_bind_credentials: ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ/Пароль LDAP setting_sys_api_key: API ключ setting_lost_password: ВоÑÑтановление Ð¿Ð°Ñ€Ð¾Ð»Ñ mail_subject_security_notification: Уведомление безопаÑноÑти mail_body_security_notification_change: ! '%{field} изменилоÑÑŒ.' mail_body_security_notification_change_to: ! '%{field} изменилоÑÑŒ на %{value}.' mail_body_security_notification_add: ! '%{field} %{value} добавлено.' mail_body_security_notification_remove: ! '%{field} %{value} удалено.' mail_body_security_notification_notify_enabled: Email Ð°Ð´Ñ€ÐµÑ %{value} ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚ уведомлениÑ. mail_body_security_notification_notify_disabled: Email Ð°Ð´Ñ€ÐµÑ %{value} больше не получает уведомлениÑ. mail_body_settings_updated: ! 'Следующие наÑтройки были изменены:' field_remote_ip: IP Ð°Ð´Ñ€ÐµÑ label_wiki_page_new: ÐÐ¾Ð²Ð°Ñ wiki-Ñтраница label_relations: СвÑзи button_filter: Фильтр mail_body_password_updated: Ваш пароль был изменён. label_no_preview: ПредпроÑмотр недоÑтупен error_no_tracker_allowed_for_new_issue_in_project: Ð’ проекте нет трекеров, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… можно Ñоздать задачу label_tracker_all: Ð’Ñе трекеры label_new_project_issue_tab_enabled: Отображать вкладку "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð°" setting_new_item_menu_tab: Вкладка меню проекта Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… объектов label_new_object_tab_enabled: Отображать выпадающий ÑпиÑок "+" error_no_projects_with_tracker_allowed_for_new_issue: ОтÑутÑтвуют проекты, по трекерам которых вы можете Ñоздавать задачи field_textarea_font: Шрифт Ð´Ð»Ñ Ñ‚ÐµÐºÑтовых полей label_font_default: Шрифт по умолчанию label_font_monospace: Моноширинный шрифт label_font_proportional: Пропорциональный шрифт setting_timespan_format: Формат промежутка времени label_table_of_contents: Содержание setting_commit_logs_formatting: ИÑпользовать форматирование текÑта Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ² хранилища setting_mail_handler_enable_regex: ИÑпользовать регулÑрные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ error_move_of_child_not_possible: 'Подзадача %{child} не может быть перемещена в новый project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Затраченное Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ может быть переназначено на задачу, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ удалена setting_timelog_required_fields: ОбÑзательные Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ñ‚Ñ€ÑƒÐ´Ð¾Ð·Ð°Ñ‚Ñ€Ð°Ñ‚ label_attribute_of_object: '%{name} объекта %{object_name}' label_user_mail_option_only_assigned: Только Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð², которые Ñ Ð¾Ñ‚Ñлеживаю или которые мне назначены label_user_mail_option_only_owner: Только Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð², которые Ñ Ð¾Ñ‚Ñлеживаю или Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ† warning_fields_cleared_on_bulk_edit: Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð²ÐµÐ´ÑƒÑ‚ к удалению значений одного или неÑкольких полей выбранных объектов field_updated_by: Кем изменено field_last_updated_by: ПоÑледний изменивший field_full_width_layout: РаÑÑ‚Ñгивать по ширине Ñтраницы label_last_notes: ПоÑледние Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ field_digest: ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма field_default_assigned_to: Ðазначать по умолчанию setting_show_custom_fields_on_registration: Показывать наÑтраиваемые Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸ региÑтрации permission_view_news: ПроÑмотр новоÑтей label_no_preview_alternative_html: ПредпроÑмотр недоÑтупен. %{link} файл. label_no_preview_download: Скачать setting_close_duplicate_issues: Закрывать дубликаты задач автоматичеÑки error_exceeds_maximum_hours_per_day: Ðе удаетÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрировать больше %{max_hours} чаÑов в один день (%{logged_hours} чаÑов уже зарегиÑтрированы) setting_time_entry_list_defaults: СпиÑок трудозатрат по умолчанию setting_timelog_accept_0_hours: Принимать трудозатраты Ñ 0 чаÑов setting_timelog_max_hours_per_day: МакÑимальное количеÑтво чаÑов, которое может быть зарегиÑтрировано в день одним пользователем label_x_revisions: "%{count} изменени(Ñ, ий)" error_can_not_delete_auth_source: Этот режим аутентификации иÑпользуетÑÑ Ð¸ не может быть удален. button_actions: ДейÑÑ‚Ð²Ð¸Ñ mail_body_lost_password_validity: Помните, вы можете изменить пароль только один раз, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñту ÑÑылку. text_login_required_html: ЕÑли Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ðµ требуетÑÑ, публичные проекты и их Ñодержимое в Ñвободном доÑтупе. Ð’Ñ‹ можете редактировать ÑоответÑтвующие разрешениÑ. label_login_required_yes: 'Да' label_login_required_no: Ðет, разрешить Ñвободный доÑтуп к публичным проектам. text_project_is_public_non_member: Публичные проекты и их Ñодержимое доÑтупны вÑем зарегиÑтрированным пользователÑм. text_project_is_public_anonymous: Публичные проекты и их Ñодержимое в Ñвободном доÑтупе. label_version_and_files: ВерÑии (%{count}) и файлы label_ldap: LDAP label_ldaps_verify_none: LDAPS (без проверки Ñертификата) label_ldaps_verify_peer: LDAPS label_ldaps_warning: РекомендуетÑÑ Ð¸Ñпользовать зашифрованное Ñоединение LDAPS Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¾Ð¹ Ñертификата Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð»ÑŽÐ±Ñ‹Ñ… поÑторонних вмешательÑтв в процеÑÑе аутентификации. label_nothing_to_preview: Ðет данных Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотра error_token_expired: Срок дейÑÑ‚Ð²Ð¸Ñ Ñтой ÑÑылки воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¸Ñтёк. ПожалуйÑта, попробуйте Ñнова. error_spent_on_future_date: ÐÐµÐ»ÑŒÐ·Ñ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒ Ð²Ñ€ÐµÐ¼Ñ Ð² будущие даты setting_timelog_accept_future_dates: Принимать трудозатраты на будущие даты label_delete_link_to_subtask: Удалить ÑвÑзь error_not_allowed_to_log_time_for_other_users: Вам не разрешено учитывать Ð²Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей permission_log_time_for_other_users: Учитывать Ð²Ñ€ÐµÐ¼Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей label_tomorrow: завтра label_next_week: ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð½ÐµÐ´ÐµÐ»Ñ label_next_month: Ñледующий меÑÑц text_role_no_workflow: Эта роль не имеет заданных поÑледовательноÑтей дейÑтвий text_status_no_workflow: Ðи один трекер не иÑпользует Ñтот ÑÑ‚Ð°Ñ‚ÑƒÑ Ð² поÑледовательноÑÑ‚ÑÑ… дейÑтвий setting_mail_handler_preferred_body_part: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°ÐµÐ¼Ð°Ñ Ñ‡Ð°Ñть multipart (HTML) пиÑем setting_show_status_changes_in_mail_subject: Включать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑтатуÑа задачи в ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email label_inherited_from_parent_project: ÐаÑледуетÑÑ Ð¸Ð· родительÑкого проекта label_inherited_from_group: ÐаÑледуетÑÑ Ð¸Ð· группы %{name} label_trackers_description: ОпиÑание трекеров label_open_trackers_description: Показать опиÑÐ°Ð½Ð¸Ñ Ñ‚Ñ€ÐµÐºÐµÑ€Ð¾Ð² label_preferred_body_part_text: ТекÑÑ‚ label_preferred_body_part_html: HTML field_parent_issue_subject: Тема родительÑкой задачи permission_edit_own_issues: Редактировать Ñвои задачи text_select_apply_tracker: Выбор Ñтого трекера label_updated_issues: Обновленные задачи text_avatar_server_config_html: Текущий Ñервер аватар — %{url}. Ð’Ñ‹ можете изменить его в config/configuration.yml. setting_gantt_months_limit: МакÑимальное чиÑло меÑÑцев на диаграмме Ганта permission_import_time_entries: Импорт трудозатрат label_import_notifications: ПоÑлать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email в течение импорта text_gs_available: ДоÑтупно иÑпользование ImageMagick PDF (опционально) field_recently_used_projects: ЧиÑло поÑледних проектов в выпадающем ÑпиÑке label_optgroup_bookmarks: Закладки label_optgroup_recents: ПоÑледние button_project_bookmark: Добавить закладку button_project_bookmark_delete: Удалить закладку field_history_default_tab: Вкладка иÑтории задачи по умолчанию label_issue_history_properties: Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвойÑтв label_issue_history_notes: ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ label_last_tab_visited: ПоÑледнÑÑ Ð¿Ð¾ÑÐµÑ‰Ñ‘Ð½Ð½Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ° field_unique_id: Уникальный идентификатор text_no_subject: Ðет темы setting_password_required_char_classes: Требуемые клаÑÑÑ‹ Ñимволов Ð´Ð»Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¹ label_password_char_class_uppercase: заглавные буквы label_password_char_class_lowercase: Ñтрочные буквы label_password_char_class_digits: цифры label_password_char_class_special_chars: Ñпециальные Ñимволы text_characters_must_contain: Должен Ñодержать %{character_classes}. label_starts_with: начинаетÑÑ Ñ label_ends_with: заканчиваетÑÑ Ð½Ð° label_issue_fixed_version_updated: ВерÑии обновлены setting_project_list_defaults: Опции ÑпиÑка проектов по умолчанию label_display_type: Отображать как label_display_type_list: СпиÑок label_display_type_board: Панель label_my_bookmarks: Мои закладки label_import_time_entries: Импорт трудозатрат field_toolbar_language_options: СпиÑок Ñзыков на панели инÑтрументов "ПодÑветка кода" label_user_mail_notify_about_high_priority_issues_html: Также уведомлÑть Ð¼ÐµÐ½Ñ Ð¾ задачах Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð¾Ð¼ %{prio} или выше label_assign_to_me: Ðазначить мне notice_issue_not_closable_by_open_tasks: Эта задача не может быть закрыта, так как у неё еÑть открытые подзадачи. notice_issue_not_closable_by_blocking_issue: Эта задача не может быть закрыта, так как еÑть открытые блокирующие её задачи. notice_issue_not_reopenable_by_closed_parent_issue: Эта задача не может быть открыта Ñнова, так как её родительÑÐºÐ°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° закрыта. error_bulk_download_size_too_big: Эти файлы не могут быть загружены одновременно, так как их Ñуммарный объём превышает допуÑтимый макÑимум (%{max_size}) setting_bulk_download_max_size: МакÑимальный Ñуммарный объём Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ загрузки label_download_all_attachments: Загрузить вÑе файлы error_attachments_too_many: Этот файл не будет загружен, так как превышено макÑимальное количеÑтво одновременно загружаемых файлов (%{max_number_of_files}) setting_email_domains_allowed: Разрешённые email домены setting_email_domains_denied: Запрещённые email домены field_passwd_changed_on: ПоÑледний раз пароль был изменён label_relations_mapping: СвÑзанные задачи label_import_users: Импорт пользователей label_days_to_html: "%{days} дней до %{date}" setting_twofa: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ label_optional: необÑзательно label_required_lower: обÑзательно button_disable: Отключить twofa__totp__name: Приложение аутентификации twofa__totp__text_pairing_info_html: ОтÑканируйте Ñтот QR-код или введите текÑтовый ключ в приложение TOTP (например, Google Authenticator, Authy, Duo Mobile) и введите код в поле ниже, чтобы активировать двухфакторную аутентификацию. twofa__totp__label_plain_text_key: ПроÑтой текÑтовый ключ twofa__totp__label_activate: Включить приложение аутентификации twofa_currently_active: 'ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ: %{twofa_scheme_name}' twofa_not_active: Ðе активирован twofa_label_code: Код twofa_hint_disabled_html: ÐаÑтройка %{label} отключит двухфакторную аутентификацию Ð´Ð»Ñ Ð²Ñех пользователей. twofa_hint_required_html: ÐаÑтройка %{label} потребует вÑех пользователей Ð´Ð»Ñ Ð½Ð°Ñтройки двухфакторной аутентификации при Ñледующем входе в ÑиÑтему. twofa_label_setup: ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ аутентификации twofa_label_deactivation_confirmation: Отключение двухфакторной аутентификации twofa_notice_select: 'Выберите двухфакторную Ñхему, которую вы хотите иÑпользовать:' twofa_warning_require: ÐдминиÑтратор требует, чтобы вы включили двухфакторную аутентификацию. twofa_activated: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑƒÑпешно включена. РекомендуетÑÑ Ñгенерировать резервные коды Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ профилÑ. twofa_deactivated: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°. twofa_mail_body_security_notification_paired: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑƒÑпешно активирована Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %{field}. twofa_mail_body_security_notification_unpaired: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ учетной запиÑи. twofa_mail_body_backup_codes_generated: Созданы новые резервные коды двухфакторной аутентификации. twofa_mail_body_backup_code_used: Был иÑпользован резервный код двухфакторной аутентификации. twofa_invalid_code: Код недейÑтвителен или уÑтарел. twofa_label_enter_otp: ПожалуйÑта, введите Ñвой код двухфакторной аутентификации. twofa_too_many_tries: Слишком много попыток. twofa_resend_code: Отправить код еще раз twofa_code_sent: Вам был отправлен код аутентификации. twofa_generate_backup_codes: Сгенерировать резервные коды twofa_text_generate_backup_codes_confirmation: Это дейÑтвие аннулирует вÑе ÑущеÑтвующие резервные коды и Ñгенерирует новые. Ð’Ñ‹ хотите продолжить? twofa_notice_backup_codes_generated: Ваши резервные коды Ñозданы. twofa_warning_backup_codes_generated_invalidated: Созданы новые резервные коды. Ваши ÑущеÑтвующие коды от %{time} теперь недейÑтвительны. twofa_label_backup_codes: Резервные коды двухфакторной аутентификации twofa_text_backup_codes_hint: ИÑпользуйте Ñти коды вмеÑто одноразового паролÑ, еÑли у Ð²Ð°Ñ Ð½ÐµÑ‚ доÑтупа ко второму фактору. Каждый код можно иÑпользовать только один раз. РекомендуетÑÑ Ñ€Ð°Ñпечатать и Ñохранить Ñти коды в надежном меÑте. twofa_text_backup_codes_created_at: Созданы резервные коды %{datetime}. twofa_backup_codes_already_shown: Резервные коды не могут быть показаны Ñнова, пожалуйÑта, Ñгенерируйте новые резервные коды при необходимоÑти. error_can_not_execute_macro_html: Ошибка при выполнении макроÑа %{name} (%{error}) error_macro_does_not_accept_block: Этот Ð¼Ð°ÐºÑ€Ð¾Ñ Ð½Ðµ принимает текÑтовый блок error_childpages_macro_no_argument: Без аргумента Ñтот Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ вызывать только из wiki Ñтраницы. error_circular_inclusion: Обнаружено цикличеÑкое включение error_page_not_found: Страница не найдена error_filename_required: ТребуетÑÑ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° error_invalid_size_parameter: Ðеверный параметр размера error_attachment_not_found: Прикрепленный файл %{name} не найден permission_delete_project: Удалить проект field_twofa_scheme: Схема двухфакторной аутентификации text_user_destroy_confirmation: Ð’Ñ‹ дейÑтвительно хотите безвозвратно удалить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ удалить вÑе ÑÑылки на него? ЧаÑто блокировка Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ - лучшее решение, чем его удаление. Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ логин (%{login}) ниже. text_project_destroy_enter_identifier: Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ идентификатор проекта (%{identifier}) ниже. button_add_subtask: Добавить подзадачу notice_invalid_watcher: 'ÐедейÑтвительный наблюдатель: пользователь не будет получать никаких уведомлений, потому что у него нет доÑтупа к Ñтому объекту.' button_fetch_changesets: Получить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ permission_view_message_watchers: ПроÑмотр ÑпиÑка наблюдателей Ñообщений permission_add_message_watchers: Добавление наблюдателей Ñообщений permission_delete_message_watchers: Удаление наблюдателей Ñообщений label_message_watchers: Ðаблюдатели Ñообщений button_copy_link: Копировать ÑÑылку error_invalid_authenticity_token: ÐедейÑтвительный токен аутентификации. error_query_statement_invalid: Ошибка при выполнении запроÑа была зарегиÑтрирована. Сообщите об Ñтой ошибке админиÑтратору Redmine. permission_view_wiki_page_watchers: ПроÑмотр ÑпиÑка наблюдателей wiki-Ñтраниц permission_add_wiki_page_watchers: Добавление наблюдателей wiki-Ñтраниц permission_delete_wiki_page_watchers: Удаление наблюдателей wiki-Ñтраниц label_wiki_page_watchers: Ðаблюдатели label_attachment_description: ОпиÑание файла error_no_data_in_file: Данный файл не Ñодержит данных field_twofa_required: Требовать двухфакторной аутентификации twofa_hint_optional_html: ÐаÑтройка %{label} разрешает пользователÑм наÑтраивать двухфакторную аутентификацию по желанию, еÑли Ñто не требуетÑÑ Ð¸Ñ… группой. twofa_text_group_required: Ð”Ð°Ð½Ð½Ð°Ñ Ð½Ð°Ñтройка иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тогда, когда Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑвлÑетÑÑ Ð½ÐµÐ¾Ð±Ñзательной. Ð’ данный момент Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ð±Ñзательна Ð´Ð»Ñ Ð²Ñех пользователей. twofa_text_group_disabled: Ð”Ð°Ð½Ð½Ð°Ñ Ð½Ð°Ñтройка иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ тогда, когда Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÑвлÑетÑÑ Ð½ÐµÐ¾Ð±Ñзательной. Ð’ данный момент Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°. field_default_issue_query: Задачи по умолчанию label_default_queries: for_all_projects: Ð”Ð»Ñ Ð²Ñех проектов for_current_project: Ð”Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ проекта for_all_users: Ð”Ð»Ñ Ð²Ñех пользователей for_this_user: Ð”Ð»Ñ Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ text_allowed_queries_to_select: Выбор производитÑÑ Ð¸Ð· публичных запроÑов (видимых Ð´Ð»Ñ Ð²Ñех пользователей) text_all_migrations_have_been_run: ÐœÐ¸Ð³Ñ€Ð°Ñ†Ð¸Ñ Ð±Ð°Ð·Ð° данных полноÑтью выполнена button_save_object: ЗапиÑать %{object_name} button_edit_object: Изменить %{object_name} button_delete_object: Удалить %{object_name} text_setting_config_change: Ð’Ñ‹ можете наÑтроить поведение в файле config/configuration.yml. ПожалуйÑта, перезапуÑтите приложение поÑле Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтого файла. label_bulk_edit: МаÑÑовое редактирование button_create_and_follow: Создать и перейти label_subtask: Подзадача label_default_query: Базовый Ð·Ð°Ð¿Ñ€Ð¾Ñ field_default_project_query: Базовый Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð° label_required_administrators: обÑзательна Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторов twofa_hint_required_administrators_html: ÐаÑтройка %{label} ведёт ÑÐµÐ±Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñ‡Ð½Ð¾ необÑзательной двухфакторной аутентификации, однако админиÑтраторам потребуетÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ двухфакторную аутентификацию при Ñледующем входе. label_auto_watch_on: Следить автоматичеÑки label_auto_watch_on_issue_contributed_to: За задачами, в которых Ñ Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽ учаÑтие text_project_close_confirmation: Закрыть проект '%{value}' и Ñделать его доÑтупным только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ? text_project_reopen_confirmation: Открыть проект '%{value}' заново? text_project_archive_confirmation: ПеремеÑтить проект '%{value}' в архив? mail_destroy_project_failed: Проект %{value} не может быть удален. mail_destroy_project_successful: Проект %{value} уÑпешно удален. mail_destroy_project_with_subprojects_successful: Проект %{value} и его под-проекты уÑпешно удалены. project_status_scheduled_for_deletion: запланировано удаление text_projects_bulk_destroy_confirmation: Удалить выделенный проект и вÑе ÑвÑзанные Ñ Ð½Ð¸Ð¼ данные? text_projects_bulk_destroy_head: | ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ ÐЕВОССТÐÐОВИМО удалит проекты и вÑе под-проекты, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ñе отноÑÑщиеÑÑ Ðº ним данные. ПожалуйÑта проÑмотрите информацию ниже и подтвердите удаление. Ð’ÐИМÐÐИЕ: Это дейÑтвие не может быть потом отменено. text_projects_bulk_destroy_confirm: Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ "%{yes}" в поле ниже. text_subprojects_bulk_destroy: 'Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ð¾Ð´-проект(Ñ‹): %{value}' field_current_password: Текущий пароль sudo_mode_new_info_html: "Что ÑлучилоÑÑŒ? Вам необходимо подтвердить Ваш пароль перед тем, как Ñовершать какие-либо админиÑтративные дейÑтвиÑ. Это предназначено Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ вашей учетной запиÑи." label_edited: Изменено label_time_by_author: "%{time} %{author}-ом" field_default_time_entry_activity: ДейÑтвие иÑпользованного времени по умолчанию field_is_member_of_group: Член группы text_users_bulk_destroy_head: Следующие пользователи и вÑе ÑÑылки на них будут удалены. Это дейÑтвие не может быть отменено. Как правило, блокировка пользоваетелей - Ñто лучшее решение, вмеÑто полного ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸Ñ… учетных запиÑей. text_users_bulk_destroy_confirm: Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ "%{yes}" ниже. permission_select_project_publicity: УÑтановить публичноÑть или приватноÑть проекта label_auto_watch_on_issue_created: Задачи Ñозданные мной field_any_searchable: Любой доÑтупный Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка текÑÑ‚ label_contains_any_of: Ñодержит любой из button_apply_issues_filter: Применить фильтр задач label_view_previous_annotation: ПоÑмотреть аннотацию до Ñтого Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ label_has_been: был label_has_never_been: никогда не был label_changed_from: изменено Ñ label_issue_statuses_description: ОпиÑание ÑтатуÑов задач label_open_issue_statuses_description: ПоÑмотреть опиÑание вÑех ÑтатуÑов задач text_select_apply_issue_status: Выберите ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸ field_name_or_email_or_login: ИмÑ, email или логин text_default_active_job_queue_changed: Изменен адаптер очереди по умолчанию, который хорошо подходит только Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸/теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sk.yml000066400000000000000000002220071500112024600171660ustar00rootroot00000000000000# Slovak translation by Stanislav Pach | stano.pach@seznam.cz # additions for Redmine 2.3.2 and proofreading by Katarína Nosková | noskova.katarina@gmail.com sk: direction: ltr date: formats: default: "%Y-%m-%d" short: "%b %d" long: "%B %d, %Y" day_names: [Nedeľa, Pondelok, Utorok, Streda, Å tvrtok, Piatok, Sobota] abbr_day_names: [Ne, Po, Ut, St, Å t, Pi, So] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Január, Február, Marec, Apríl, Máj, Jún, Júl, August, September, Október, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, Máj, Jún, Júl, Aug, Sep, Okt, Nov, Dec] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "dopoludnia" pm: "popoludní" datetime: distance_in_words: half_a_minute: "pol minúty" less_than_x_seconds: one: "menej ako 1 sekunda" other: "menej ako %{count} sekúnd" x_seconds: one: "1 sekunda" other: "%{count} sekúnd" less_than_x_minutes: one: "menej ako minúta" other: "menej ako %{count} minút" x_minutes: one: "1 minúta" other: "%{count} minút" about_x_hours: one: "približne 1 hodinu" other: "približne %{count} hodín" x_hours: one: "1 hodina" other: "%{count} hodín" x_days: one: "1 deň" other: "%{count} dní" about_x_months: one: "približne 1 mesiac" other: "približne %{count} mesiacov" x_months: one: "1 mesiac" other: "%{count} mesiacov" about_x_years: one: "približne 1 rok" other: "približne %{count} rokov" over_x_years: one: "viac ako 1 rok" other: "viac ako %{count} rokov" almost_x_years: one: "takmer 1 rok" other: "takmer %{count} rokov" number: format: separator: "." delimiter: " " precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "a" skip_last_comma: false activerecord: errors: template: header: one: "1 chyba bráni uloženiu %{model}" other: "%{count} chýb bráni uloženiu %{model}" messages: inclusion: "nie je zahrnuté v zozname" exclusion: "nie je k dispozícii" invalid: "je neplatné" confirmation: "sa nezhoduje s potvrdením" accepted: "musí byÅ¥ akceptované" empty: "nemôže byÅ¥ prázdne" blank: "nemôže byÅ¥ prázdne" too_long: "je príliÅ¡ dlhé (maximálne %{count} znakov)" too_short: "je príliÅ¡ krátke (minimálne %{count} znakov)" wrong_length: "má nesprávnu dĺžku (vyžaduje sa %{count} znakov)" taken: "je už použité" not_a_number: "nie je Äíslo" not_a_date: "nie je platný dátum" greater_than: "musí byÅ¥ viac ako %{count}" greater_than_or_equal_to: "musí byÅ¥ viac alebo rovné %{count}" equal_to: "musí byÅ¥ rovné %{count}" less_than: "musí byÅ¥ menej ako %{count}" less_than_or_equal_to: "musí byÅ¥ menej alebo rovné %{count}" odd: "musí byÅ¥ nepárne" even: "musí byÅ¥ párne" greater_than_start_date: "musí byÅ¥ neskôr ako poÄiatoÄný dátum" not_same_project: "nepatrí k rovnakému projektu" circular_dependency: "Tento vzÅ¥ah by vytvoril cyklickú závislosÅ¥" cant_link_an_issue_with_a_descendant: "Nemožno prepojiÅ¥ úlohu s niektorou z podúloh" earlier_than_minimum_start_date: "nemôže byÅ¥ skorší ako %{date} z dôvodu nadväznosti na predchádzajúce úlohy" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Vyberte general_text_No: 'Nie' general_text_Yes: 'Ãno' general_text_no: 'nie' general_text_yes: 'áno' general_lang_name: 'Slovak (SlovenÄina)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: ÚÄet bol úspeÅ¡ne zmenený. notice_account_invalid_credentials: Nesprávne meno alebo heslo notice_account_password_updated: Heslo bolo úspeÅ¡ne zmenené. notice_account_wrong_password: Nesprávne heslo notice_account_register_done: ÚÄet bol úspeÅ¡ne vytvorený. ÚÄet aktivujete kliknutím na odkaz v emaile, ktorý vám bol zaslaný na %{email}. notice_can_t_change_password: Tento úÄet používa externú autentifikáciu. Nemôžete zmeniÅ¥ heslo. notice_account_lost_email_sent: Bol vám zaslaný email s inÅ¡trukciami, ako si nastaviÅ¥ nové heslo. notice_account_activated: Váš úÄet bol aktivovaný. Teraz se môžete prihlásiÅ¥. notice_successful_create: ÚspeÅ¡ne vytvorené. notice_successful_update: ÚspeÅ¡ne aktualizované. notice_successful_delete: ÚspeÅ¡ne odstránené. notice_successful_connection: ÚspeÅ¡ne pripojené. notice_file_not_found: Stránka, ktorú se pokúšate zobraziÅ¥, neexistuje, alebo bola odstránená. notice_locking_conflict: Údaje boli aktualizované iným používateľom. notice_not_authorized: Nemáte dostatoÄné oprávnenia na zobrazenie tejto stránky. notice_email_sent: "Na adresu %{value} bol odoslaný email" notice_email_error: "Pri odosielaní emailu sa vyskytla chyba (%{value})" notice_feeds_access_key_reseted: Váš prístupový kÄ¾ÃºÄ k Atomu bol resetovaný. notice_failed_to_save_issues: "Nepodarilo sa uložiÅ¥ %{count} úloh z %{total} vybraných: %{ids}." notice_account_pending: "Váš úÄet bol vytvorený a Äaká na schválenie administrátorom." notice_default_data_loaded: Predvolená konfigurácia bola úspeÅ¡ne nahraná. error_can_t_load_default_data: "Predvolená konfigurácia nebola nahraná: %{value}" error_scm_not_found: "Položka alebo revízia nebola v repozitári nájdená." error_scm_command_failed: "Pri pokuse o prístup k repozitáru sa vyskytla chyba: %{value}" error_issue_not_found_in_project: 'Úloha nebola nájdená, alebo nepatrí k tomuto projektu' mail_subject_lost_password: "VaÅ¡e heslo %{value}" mail_body_lost_password: 'Na zmenu hesla kliknite na nasledujúci odkaz:' mail_subject_register: "Aktivácia vášho úÄtu %{value}" mail_body_register: 'Ak si želáte aktivovaÅ¥ váš úÄet, kliknite na nasledujúci odkaz:' mail_body_account_information_external: "Môžete sa prihlásiÅ¥ pomocou vášho úÄtu %{value}." mail_body_account_information: Informácie o vaÅ¡om úÄte mail_subject_account_activation_request: "Požiadavka na aktiváciu úÄtu %{value}" mail_body_account_activation_request: "Bol zaregistrovaný nový používateľ %{value}. ÚÄet Äaká na vaÅ¡e schválenie:" field_name: Meno field_description: Popis field_summary: Zhrnutie field_is_required: Povinné pole field_firstname: Meno field_lastname: Priezvisko field_mail: Email field_filename: Súbor field_filesize: VeľkosÅ¥ field_downloads: Stiahnuté field_author: Autor field_created_on: Vytvorené field_updated_on: Aktualizované field_field_format: Formát field_is_for_all: Pre vÅ¡etky projekty field_possible_values: Možné hodnoty field_regexp: Regulárny výraz field_min_length: Minimálna dĺžka field_max_length: Maximálna dĺžka field_value: Hodnota field_category: Kategória field_title: Názov field_project: Projekt field_issue: Úloha field_status: Stav field_notes: Poznámky field_is_closed: Úloha uzavretá field_is_default: Predvolený stav field_tracker: Front field_subject: Predmet field_due_date: OdovzdaÅ¥ do field_assigned_to: Priradené field_priority: Priorita field_fixed_version: Cieľová verzia field_user: Používateľ field_role: Rola field_homepage: Domovská stránka field_is_public: Verejné field_parent: Nadradený projekt field_is_in_roadmap: Úlohy zobrazené v pláne field_login: Prihlasovacie meno field_mail_notification: Emailové upozornenie field_admin: Administrátor field_last_login_on: Posledné prihlásenie field_language: Jazyk field_effective_date: Dátum field_password: Heslo field_new_password: Nové heslo field_password_confirmation: Potvrdenie hesla field_version: Verzia field_type: Typ field_host: Host field_port: Port field_account: ÚÄet field_base_dn: Base DN field_attr_login: Prihlásenie (atribút) field_attr_firstname: Meno (atribút) field_attr_lastname: Priezvisko (atribút) field_attr_mail: Email (atribút) field_onthefly: Okamžité vytváranie používateľov field_start_date: PoÄiatoÄný dátum field_done_ratio: "% hotovo" field_auth_source: AutentifikaÄný mód field_hide_mail: NezobrazovaÅ¥ môj email field_comments: Komentár field_url: URL field_start_page: Východzia stránka field_subproject: Podprojekt field_hours: Hodiny field_activity: Aktivita field_spent_on: Dátum field_identifier: Identifikátor field_is_filter: PoužiÅ¥ ako filter field_issue_to: Súvisiaca úloha field_delay: Oneskorenie field_assignable: Úlohy môžu byÅ¥ priradené tejto role field_redirect_existing_links: PresmerovaÅ¥ existujúce odkazy field_estimated_hours: Odhadovaný Äas field_column_names: Stĺpce field_time_zone: ÄŒasové pásmo field_searchable: Možné prehľadávanie field_default_value: Predvolená hodnota field_comments_sorting: ZobraziÅ¥ komentáre setting_app_title: Názov aplikácie setting_welcome_text: Uvítací text setting_default_language: Predvolený jazyk setting_login_required: Vyžadovaná autentifikácia setting_self_registration: Povolená registrácia setting_attachment_max_size: Maximálna veľkosÅ¥ prílohy setting_issues_export_limit: Maximálny poÄet úloh pri exporte setting_mail_from: OdosielaÅ¥ emaily z adresy setting_host_name: Hostname a cesta setting_text_formatting: Formátovanie textu setting_wiki_compression: Kompresia histórie Wiki setting_feeds_limit: Maximálny poÄet zobrazených položiek v Atom feed setting_default_projects_public: Nové projekty nastavovaÅ¥ ako verejné setting_autofetch_changesets: Automaticky vykonaÅ¥ commity setting_sys_api_enabled: Povolit Webovú službu (WS) na správu repozitára setting_commit_ref_keywords: KľúÄové slová pre referencie setting_commit_fix_keywords: KľúÄové slová pre opravy setting_autologin: Automatické prihlasovanie setting_date_format: Formát dátumu setting_time_format: Formát Äasu setting_cross_project_issue_relations: PovoliÅ¥ prepojenia úloh naprieÄ projektmi setting_issue_list_default_columns: Predvolené stĺpce zobrazené v zozname úloh setting_emails_footer: PätiÄka emailu setting_protocol: Protokol setting_per_page_options: Povolené množstvo položiek na stránku setting_user_format: Formát zobrazenia používateľa setting_activity_days_default: "PoÄet zobrazených dní na stránku pri aktivitách projektu:" setting_display_subprojects_issues: Predvolené zobrazovanie úloh podprojektov v hlavnom projekte project_module_issue_tracking: Sledovanie úloh project_module_time_tracking: Sledovanie Äasu project_module_news: Novinky project_module_documents: Dokumenty project_module_files: Súbory project_module_wiki: Wiki project_module_repository: Repozitár project_module_boards: Diskusné fóra label_user: Požívateľ label_user_plural: Používatelia label_user_new: Nový používateľ label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty label_x_projects: zero: žiadne projekty one: 1 projekt other: "%{count} projektov" label_project_all: VÅ¡etky projekty label_project_latest: Posledné projekty label_issue: Úloha label_issue_new: Nová úloha label_issue_plural: Úlohy label_issue_view_all: ZobraziÅ¥ vÅ¡etky úlohy label_issues_by: "Úlohy od používateľa %{value}" label_issue_added: Úloha bola pridaná label_issue_updated: Úloha bola aktualizovaná label_document: Dokument label_document_new: Nový dokument label_document_plural: Dokumenty label_document_added: Dokument bol pridaný label_role: Rola label_role_plural: Roly label_role_new: Nová rola label_role_and_permissions: Roly a oprávnenia label_member: ÄŒlen label_member_new: Nový Älen label_member_plural: ÄŒlenovia label_tracker: Front label_tracker_plural: Fronty label_tracker_new: Nový front label_workflow: Pracovný postup (workflow) label_issue_status: Stav úloh label_issue_status_plural: Stavy úloh label_issue_status_new: Nový stav label_issue_category: Kategória úloh label_issue_category_plural: Kategórie úloh label_issue_category_new: Nová kategória label_custom_field: Vlastné pole label_custom_field_plural: Vlastné polia label_custom_field_new: Nové pole label_enumerations: Zoznamy label_enumeration_new: Nová hodnota label_information: Informácia label_information_plural: Informácie label_register: Registrácia label_password_lost: Zabudnuté heslo label_home: Domov label_my_page: Moja stránka label_my_account: Môj úÄet label_my_projects: Moje projekty label_administration: Administrácia label_login: Prihlásenie label_logout: Odhlásenie label_help: Pomoc label_reported_issues: Nahlásené úlohy label_assigned_to_me_issues: Moje úlohy label_registered_on: Dátum registrácie label_activity: Aktivita label_new: Nový label_logged_as: Prihlásený ako label_environment: Prostredie label_authentication: Autentifikácia label_auth_source: AutentifikaÄný mód label_auth_source_new: Nový autentifikaÄný mód label_auth_source_plural: AutentifikaÄné módy label_subproject_plural: Podprojekty label_min_max_length: Min. - max. dĺžka label_list: Zoznam label_date: Dátum label_integer: Celé Äíslo label_float: Desatinné Äíslo label_boolean: Ãno/Nie label_string: Text label_text: Dlhý text label_attribute: Atribút label_attribute_plural: Atribúty label_no_data: Žiadne položky label_change_status: ZmeniÅ¥ stav label_history: História label_attachment: Súbor label_attachment_new: Nový súbor label_attachment_delete: VymazaÅ¥ súbor label_attachment_plural: Súbory label_file_added: Súbor bol pridaný label_report: Hlásenie label_report_plural: Hlásenia label_news: Novinky label_news_new: PridaÅ¥ novinku label_news_plural: Novinky label_news_latest: Posledné novinky label_news_view_all: ZobraziÅ¥ vÅ¡etky novinky label_news_added: Novinka bola pridaná label_settings: Nastavenia label_overview: Prehľad label_version: Verzia label_version_new: Nová verzia label_version_plural: Verzie label_confirmation: Potvrdenie label_export_to: 'K dispozícii tiež ako:' label_read: NaÄítava sa... label_public_projects: Verejné projekty label_open_issues: otvorená label_open_issues_plural: otvorené label_closed_issues: uzavretá label_closed_issues_plural: uzavreté label_x_open_issues_abbr: zero: 0 otvorených one: 1 otvorená other: "%{count} otvorených" label_x_closed_issues_abbr: zero: 0 uzavretých one: 1 uzavretá other: "%{count} uzavretých" label_total: Celkom label_permissions: Oprávnenia label_current_status: Aktuálny stav label_new_statuses_allowed: Povolené nové stavy label_all: vÅ¡etko label_none: niÄ label_nobody: nikto label_next: ÄŽalÅ¡ie label_previous: Predchádzajúce label_used_by: Použité label_details: Podrobnosti label_add_note: PridaÅ¥ poznámku label_calendar: Kalendár label_months_from: mesiacov od label_gantt: Ganttov graf label_internal: Interný label_last_changes: "posledných %{count} zmien" label_change_view_all: ZobraziÅ¥ vÅ¡etky zmeny label_comment: Komentár label_comment_plural: Komentáre label_x_comments: zero: žiadne komentáre one: 1 komentár other: "%{count} komentárov" label_comment_add: PridaÅ¥ komentár label_comment_added: Komentár bol pridaný label_comment_delete: VymazaÅ¥ komentár label_query: Vlastný filter label_query_plural: Vlastné filtre label_query_new: Nový filter vyhľadávania label_filter_add: PridaÅ¥ filter label_filter_plural: Filtre label_equals: je label_not_equals: nie je label_in_less_than: je menší ako label_in_more_than: je väÄší ako label_in: v label_today: dnes label_yesterday: vÄera label_this_week: tento týždeň label_last_week: minulý týždeň label_last_n_days: "v posledných %{count} dňoch" label_this_month: tento mesiac label_last_month: minulý mesiac label_this_year: tento rok label_date_range: ÄŒasový rozsah label_less_than_ago: pred menej ako (dňami) label_more_than_ago: pred viac ako (dňami) label_ago: pred (dňami) label_contains: obsahuje label_not_contains: neobsahuje label_day_plural: dní label_repository: Repozitár label_repository_plural: Repozitáre label_revision: Revízia label_revision_plural: Revízie label_associated_revisions: Súvisiace revízie label_added: pridané label_modified: zmenené label_deleted: vymazané label_latest_revision: Posledná revízia label_latest_revision_plural: Posledné revízie label_view_revisions: ZobraziÅ¥ revízie label_max_size: Maximálna veľkosÅ¥ label_roadmap: Plán label_roadmap_due_in: "Zostáva %{value}" label_roadmap_overdue: "%{value} meÅ¡kanie" label_roadmap_no_issues: Pre túto verziu neexistujú žiadne úlohy label_search: HľadaÅ¥ label_result_plural: Výsledky label_all_words: VÅ¡etky slová label_wiki: Wiki label_wiki_edit: Wiki úprava label_wiki_edit_plural: Wiki úpravy label_wiki_page: Wiki stránka label_wiki_page_plural: Wikistránky label_index_by_title: Index podľa názvu label_index_by_date: Index podľa dátumu label_current_version: Aktuálna verzia label_preview: Náhľad label_feed_plural: Príspevky label_changes_details: Detail vÅ¡etkých zmien label_issue_tracking: Sledovanie úloh label_spent_time: Strávený Äas label_f_hour: "%{value} hodina" label_f_hour_plural: "%{value} hodín" label_time_tracking: Sledovanie Äasu label_change_plural: Zmeny label_statistics: Å tatistiky label_commits_per_month: Commity za mesiac label_commits_per_author: Commity podľa autora label_view_diff: ZobraziÅ¥ rozdiely label_diff_inline: vo vnútri label_diff_side_by_side: vedľa seba label_options: Nastavenia label_copy_workflow_from: KopírovaÅ¥ pracovný postup (workflow) z label_permissions_report: Prehľad oprávnení label_watched_issues: Sledované úlohy label_related_issues: Súvisiace úlohy label_applied_status: Použitý stav label_loading: Nahráva sa... label_relation_new: Nové prepojenie label_relation_delete: OdstrániÅ¥ prepojenie label_relates_to: Súvisiace s label_duplicates: Duplikáty label_blocks: Blokované label_blocked_by: Zablokované používateľom label_precedes: Predchádza label_follows: Nasleduje po label_stay_logged_in: ZostaÅ¥ prihlásený label_disabled: zakázané label_show_completed_versions: UkázaÅ¥ dokonÄené verzie label_me: ja label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra label_topic_plural: Témy label_message_plural: Správy label_message_last: Posledná správa label_message_new: Nová správa label_message_posted: Správa bola pridaná label_reply_plural: Odpovede label_send_information: ZaslaÅ¥ informácie o úÄte používateľa label_year: Rok label_month: Mesiac label_week: Týždeň label_date_from: Od label_date_to: Do label_language_based: Podľa jazyka používateľa label_sort_by: "Zoradenie podľa %{value}" label_send_test_email: PoslaÅ¥ testovací email label_feeds_access_key_created_on: "Prístupový kÄ¾ÃºÄ pre Atom bol vytvorený pred %{value}" label_module_plural: Moduly label_added_time_by: "Pridané používateľom %{author} pred %{age}" label_updated_time: "Aktualizované pred %{value}" label_jump_to_a_project: PrejsÅ¥ na projekt... label_file_plural: Súbory label_changeset_plural: Súbory zmien label_default_columns: Predvolené stĺpce label_no_change_option: (bez zmeny) label_bulk_edit_selected_issues: Hromadná úprava vybraných úloh label_theme: Téma label_default: Predvolené label_search_titles_only: VyhľadávaÅ¥ iba v názvoch label_user_mail_option_all: "Pre vÅ¡etky udalosti vÅ¡etkých mojich projektov" label_user_mail_option_selected: "Pre vÅ¡etky udalosti vybraných projektov..." label_user_mail_no_self_notified: "NezasielaÅ¥ informácie o mnou vytvorených zmenách" label_registration_activation_by_email: aktivácia úÄtu emailom label_registration_manual_activation: manuálna aktivácia úÄtu label_registration_automatic_activation: automatická aktivácia úÄtu label_display_per_page: "%{value} na stránku" label_age: Vek label_change_properties: ZmeniÅ¥ vlastnosti label_general: VÅ¡eobecné label_scm: SCM label_plugins: Pluginy label_ldap_authentication: Autentifikácia LDAP label_downloads_abbr: D/L label_optional_description: Voliteľný popis label_add_another_file: PridaÅ¥ Äalší súbor label_preferences: Nastavenia label_chronological_order: V chronologickom poradí label_reverse_chronological_order: V obrátenom chronologickom poradí button_login: PrihlásiÅ¥ button_submit: PotvrdiÅ¥ button_save: UložiÅ¥ button_check_all: OznaÄiÅ¥ vÅ¡etko button_uncheck_all: ZruÅ¡iÅ¥ výber button_delete: OdstrániÅ¥ button_create: VytvoriÅ¥ button_test: Test button_edit: UpraviÅ¥ button_add: PridaÅ¥ button_change: ZmeniÅ¥ button_apply: PoužiÅ¥ button_clear: Späť na pôvodné button_lock: Uzamknúť button_unlock: Odomknúť button_download: StiahnuÅ¥ button_list: VypísaÅ¥ button_view: ZobraziÅ¥ button_move: Presunúť button_back: Späť button_cancel: ZruÅ¡iÅ¥ button_activate: AktivovaÅ¥ button_sort: ZoradiÅ¥ button_log_time: PridaÅ¥ Äasový záznam button_rollback: Naspäť na túto verziu button_watch: SledovaÅ¥ button_unwatch: NesledovaÅ¥ button_reply: OdpovedaÅ¥ button_archive: ArchivovaÅ¥ button_unarchive: zruÅ¡iÅ¥ archiváciu button_reset: ResetovaÅ¥ button_rename: PremenovaÅ¥ button_change_password: ZmeniÅ¥ heslo button_copy: KopírovaÅ¥ button_annotate: KomentovaÅ¥ button_update: AktualizovaÅ¥ button_configure: KonfigurovaÅ¥ status_active: aktívny status_registered: zaregistrovaný status_locked: uzamknutý text_select_mail_notifications: Vyberte akciu, pri ktorej bude zaslané upozornenie emailom. text_regexp_info: napr. ^[A-Z0-9]+$ text_project_destroy_confirmation: Naozaj si želáte odstrániÅ¥ tento projekt a vÅ¡etky súvisiace údaje? text_workflow_edit: Vyberte rolu a front na úpravu pracovného postupu (workflow) text_are_you_sure: Naozaj si želáte vykonaÅ¥ túto akciu? text_tip_issue_begin_day: úloha zaÄína v tento deň text_tip_issue_end_day: úloha konÄí v tento deň text_tip_issue_begin_end_day: úloha zaÄína a konÄí v tento deň text_caracters_maximum: "Maximálne %{count} znakov." text_caracters_minimum: "Dĺžka musí byÅ¥ minimálne %{count} znakov." text_length_between: "Dĺžka medzi %{min} až %{max} znakmi." text_tracker_no_workflow: Pre tento front nie je definovaný žiadny pracovný postup (workflow) text_unallowed_characters: Nepovolené znaky text_comma_separated: Je povolených viacero hodnôt (navzájom oddelené Äiarkou). text_issues_ref_in_commit_messages: Referencie a opravy úloh v commitoch text_issue_added: "úloha %{id} bola vytvorená používateľom %{author}." text_issue_updated: "Úloha %{id} bola aktualizovaná používateľom %{author}." text_wiki_destroy_confirmation: Naozaj si želáte vymazaÅ¥ túto Wiki a celý jej obsah? text_issue_category_destroy_question: "Do tejto kategórie je zaradených niekoľko úloh (%{count}). ÄŒo si želáte s nimi urobiÅ¥?" text_issue_category_destroy_assignments: ZruÅ¡iÅ¥ zaradenie do kategórie text_issue_category_reassign_to: PreradiÅ¥ úlohy do tejto kategórie text_user_mail_option: "Pri projektoch, ktoré neboli vybrané, budete dostávaÅ¥ upozornenia týkajúce sa iba vaÅ¡ich alebo vami sledovaných vecí (napr. vecí, ktorých ste autor, alebo ku ktorým ste priradení)." text_no_configuration_data: "Roly, fronty, stavy úloh ani pracovné postupy (workflow) neboli zatiaľ nakonfigurované.\nOdporúÄame vám nahraÅ¥ predvolenú konfiguráciu. Následne môžete vÅ¡etky nastavenia upraviÅ¥." text_load_default_configuration: NahraÅ¥ predvolenú konfiguráciu text_status_changed_by_changeset: "Aplikované v súbore zmien %{value}." text_issues_destroy_confirmation: 'Naozaj si želáte odstrániÅ¥ vÅ¡etky vybrané úlohy?' text_select_project_modules: 'VybraÅ¥ moduly povolené v tomto projekte:' text_default_administrator_account_changed: Predvolené nastavenie administrátorského úÄtu bolo zmenené text_file_repository_writable: Povolený zápis do prieÄinka s prílohami text_minimagick_available: MiniMagick k dispozícii (voliteľné) text_destroy_time_entries_question: Pri úlohách, ktoré chcete odstrániÅ¥, je zaznamenaných %{hours} hodín práce. ÄŒo si želáte urobiÅ¥? text_destroy_time_entries: OdstrániÅ¥ zaznamenané hodiny text_assign_time_entries_to_project: PriradiÅ¥ zaznamenané hodiny k projektu text_reassign_time_entries: 'PreradiÅ¥ zaznamenané hodiny k tejto úlohe:' default_role_manager: Manažér default_role_developer: Vývojár default_role_reporter: Reportér default_tracker_bug: Chyba default_tracker_feature: Funkcionalita default_tracker_support: Podpora default_issue_status_new: Nová default_issue_status_in_progress: Rozpracovaná default_issue_status_resolved: VyrieÅ¡ená default_issue_status_feedback: ÄŒaká na odsúhlasenie default_issue_status_closed: Uzavretá default_issue_status_rejected: Odmietnutá default_doc_category_user: Používateľská dokumentácia default_doc_category_tech: Technická dokumentácia default_priority_low: Nízká default_priority_normal: Normálna default_priority_high: Vysoká default_priority_urgent: Urgentná default_priority_immediate: Okamžitá default_activity_design: Dizajn default_activity_development: Vývoj enumeration_issue_priorities: Priority úloh enumeration_doc_categories: Kategórie dokumentov enumeration_activities: Aktivity (sledovanie Äasu) error_scm_annotate: "Položka neexistuje, alebo nemôže byÅ¥ komentovaná." text_subprojects_destroy_warning: "Jeho podprojekty: %{value} budú tiež vymazané." label_and_its_subprojects: "%{value} a jeho podprojekty" mail_body_reminder: "Nasledovné úlohy (%{count}), ktoré sú vám priradené, majú byÅ¥ hotové za %{days} dní:" mail_subject_reminder: "%{count} úlohy majú byÅ¥ hotové za %{days} dní" text_user_wrote: "Používateľ %{value} napísal:" text_user_wrote_in: "Používateľ %{value} napísal (%{link}):" label_duplicated_by: Duplikoval setting_enabled_scm: Povolené SCM text_enumeration_category_reassign_to: 'PrenastaviÅ¥ na túto hodnotu:' text_enumeration_destroy_question: "%{count} objektov je nastavených na túto hodnotu." label_incoming_emails: Prichádzajúce emaily label_generate_key: VygenerovaÅ¥ kÄ¾ÃºÄ setting_mail_handler_api_enabled: Zapnúť Webovú službu (WS) pre prichádzajúce emaily setting_mail_handler_api_key: API kÄ¾ÃºÄ text_email_delivery_not_configured: "DoruÄovanie emailov nie je nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reÅ¡tartujte aplikáciu, Äím funkciu aktivujete." field_parent_title: Nadradená stránka label_issue_watchers: Pozorovatelia button_quote: Citácia setting_sequential_project_identifiers: GenerovaÅ¥ sekvenÄné identifikátory projektov notice_unable_delete_version: Verzia nemôže byÅ¥ zmazaná. label_renamed: premenované label_copied: kopírované setting_plain_text_mail: Len jednoduchý text (bez HTML) permission_view_files: Zobrazenie súborov permission_edit_issues: Úprava úloh permission_edit_own_time_entries: Úprava vlastných záznamov o strávenom Äase permission_manage_public_queries: Správa verejných filtrov vyhľadávania permission_add_issues: Pridávanie úloh permission_log_time: Zaznamenávanie stráveného Äasu permission_view_changesets: Zobrazenie súborov zmien permission_view_time_entries: Zobrazenie stráveného Äasu permission_manage_versions: Správa verzií permission_manage_wiki: Správa Wiki permission_manage_categories: Správa kategórií úloh permission_protect_wiki_pages: Ochrana wikistránok permission_comment_news: Komentovanie noviniek permission_delete_messages: Mazanie správ permission_select_project_modules: Voľba projektových modulov permission_edit_wiki_pages: Úprava wikistránok permission_add_issue_watchers: Pridávanie pozorovateľov permission_view_gantt: Zobrazenie Ganttovho grafu permission_manage_issue_relations: Správa prepojení medzi úlohami permission_delete_wiki_pages: Mazanie wikistránok permission_manage_boards: Správa diskusií permission_delete_wiki_pages_attachments: Mazanie wikipríloh permission_view_wiki_edits: Zobrazenie wikiúprav permission_add_messages: Pridávanie správ permission_view_messages: Zobrazenie správ permission_manage_files: Správa súborov permission_edit_issue_notes: Úprava poznámok úlohy permission_manage_news: Správa noviniek permission_view_calendar: Zobrazenie kalendára permission_manage_members: Správa Älenov permission_edit_messages: Úprava správ permission_delete_issues: Mazanie správ permission_view_issue_watchers: Zobrazenie zoznamu pozorovateľov permission_manage_repository: Správa repozitára permission_commit_access: Prístup ku commitom permission_browse_repository: Prechádzanie repozitára permission_view_documents: Zobrazenie dokumentov permission_edit_project: Úprava projektu permission_add_issue_notes: Pridanie poznámky k úlohe permission_save_queries: Ukladanie filtrov vyhľadávania permission_view_wiki_pages: Zobrazenie wikistránok permission_rename_wiki_pages: Premenovanie wikistránok permission_edit_time_entries: Úprava záznamov o strávenom Äase permission_edit_own_issue_notes: Úprava vlastných poznámok k úlohe setting_gravatar_enabled: PoužívaÅ¥ používateľské Gravatar ikonky permission_edit_own_messages: Úprava vlastných správ permission_delete_own_messages: Mazanie vlastných správ text_repository_usernames_mapping: "Vyberte alebo aktualizujte priradenie používateľov systému Redmine k menám používateľov nájdených v logu repozitára.\nPoužívatelia s rovnakým prihlasovacím menom alebo emailom v systéme Redmine a repozitári sú priradení automaticky." label_example: Príklad label_user_activity: "Aktivita používateľa %{value}" label_updated_time_by: "Aktualizované používateľom %{author} pred %{age}" text_diff_truncated: '...Tento výpis rozdielov bol skrátený, pretože prekraÄuje maximálny poÄet riadkov, ktorý môže byÅ¥ zobrazený.' setting_diff_max_lines_displayed: Maximálny poÄet zobrazených riadkov výpisu rozdielov text_plugin_assets_writable: Povolený zápis do prieÄinka pre pluginy warning_attachments_not_saved: "%{count} súborov nemohlo byÅ¥ uložených." field_editable: Editovateľné label_display: Zobrazenie button_create_and_continue: VytvoriÅ¥ a pokraÄovaÅ¥ text_custom_field_possible_values_info: 'Každá hodnota na samostatný riadok' setting_repository_log_display_limit: Maximálny poÄet revízií zobrazených v log súbore setting_file_max_size_displayed: Maximálna veľkosÅ¥ textových súborov zobrazených priamo na stránke field_watcher: Pozorovatelia field_content: Obsah label_descending: Zostupne label_sort: Zoradenie label_ascending: Vzostupne label_date_from_to: Od %{start} do %{end} label_greater_or_equal: '>=' label_less_or_equal: '<=' text_wiki_page_destroy_question: Táto stránka má %{descendants} podstránok a potomkov. ÄŒo si želáte urobiÅ¥? text_wiki_page_reassign_children: PreradiÅ¥ podstránky k tejto nadradenej stránke text_wiki_page_nullify_children: ZachovaÅ¥ podstránky ako hlavné stránky text_wiki_page_destroy_children: VymazaÅ¥ podstránky a vÅ¡etkých ich potomkov setting_password_min_length: Minimálna dĺžka hesla field_group_by: ZoskupiÅ¥ výsledky podľa mail_subject_wiki_content_updated: "Wikistránka '%{id}' bola aktualizovaná" label_wiki_content_added: Wikistránka bola pridaná mail_subject_wiki_content_added: "Bola pridaná wikistránka '%{id}'" mail_body_wiki_content_added: Používateľ %{author} pridal wikistránku '%{id}'. permission_add_project: Vytvorenie projektu label_wiki_content_updated: Wikistránka bola aktualizovaná mail_body_wiki_content_updated: Používateľ %{author} aktualizoval wikistránku '%{id}'. setting_new_project_user_role_id: Rola non-admin používateľa, ktorý vytvorí projekt label_view_all_revisions: ZobraziÅ¥ vÅ¡etky revízie label_tag: Å títok label_branch: Vetva error_no_tracker_in_project: K tomuto projektu nie je priradený žiadny front. Skontrolujte prosím nastavenia projektu. error_no_default_issue_status: Nie je definovaný predvolený stav úlohy. Skontrolujte prosím vaÅ¡u konfiguráciu (choÄte na "Administrácia -> Stavy úloh"). text_journal_changed: "%{label} bolo zmenené z %{old} na %{new}" text_journal_set_to: "%{label} bolo nastavené na %{value}" text_journal_deleted: "%{label} bolo vymazané (%{old})" label_group_plural: Skupiny label_group: Skupina label_group_new: Nová skupina label_time_entry_plural: Strávený Äas text_journal_added: "%{label} %{value} bolo pridané" field_active: Aktívne enumeration_system_activity: Aktivita systému permission_delete_issue_watchers: Odstránenie pozorovateľov version_status_closed: uzavreté version_status_locked: uzamknuté version_status_open: otvorené error_can_not_reopen_issue_on_closed_version: Nemožno opäť otvoriÅ¥ úlohu, ktorá bola priradená uzavretej verzii label_user_anonymous: Anonym button_move_and_follow: Presunúť a sledovaÅ¥ setting_default_projects_modules: Predvolené povolené moduly pre nové projekty setting_gravatar_default: Predvolený Gravatar obrázok field_sharing: Zdieľanie label_version_sharing_hierarchy: S hierarchiou projektu label_version_sharing_system: So vÅ¡etkými projektmi label_version_sharing_descendants: S podprojektmi label_version_sharing_tree: S projektovým stromom label_version_sharing_none: Nezdieľané error_can_not_archive_project: Tento projekt nemôže byÅ¥ archivovaný button_copy_and_follow: KopírovaÅ¥ a sledovaÅ¥ label_copy_source: Zdroj setting_issue_done_ratio: VyrátaÅ¥ mieru vypracovania úlohy pomocou setting_issue_done_ratio_issue_status: PoužiÅ¥ stav úlohy error_issue_done_ratios_not_updated: Stav vypracovania úlohy nebol aktualizovaný. error_workflow_copy_target: Vyberte prosím jednu alebo viaceré cieľové fronty a roly setting_issue_done_ratio_issue_field: PoužiÅ¥ pole úlohy label_copy_same_as_target: Rovnaké ako cieľ label_copy_target: Cieľ notice_issue_done_ratios_updated: Stav vypracovania úlohy bol aktualizovaný. error_workflow_copy_source: Vyberte prosím zdrojový front alebo rolu label_update_issue_done_ratios: AktualizovaÅ¥ stav vypracovania úlohy setting_start_of_week: Pracovný týždeň zaÄína v permission_view_issues: Zobrazenie úloh label_display_used_statuses_only: ZobraziÅ¥ len stavy, ktoré sú priradené k tomuto frontu label_revision_id: "Revízia %{value}" label_api_access_key: Prístupový kÄ¾ÃºÄ API label_api_access_key_created_on: "Prístupový kÄ¾ÃºÄ API bol vytvorený pred %{value}" label_feeds_access_key: Prístupový kÄ¾ÃºÄ Atom notice_api_access_key_reseted: Váš prístupový kÄ¾ÃºÄ API bol resetovaný. setting_rest_api_enabled: Zapnúť webovú službu REST label_missing_api_access_key: Prístupový kľuÄ API nenájdený label_missing_feeds_access_key: Prístupový kÄ¾ÃºÄ Atom nenájdený button_show: ZobraziÅ¥ text_line_separated: Je povolené zadaÅ¥ viaceré hodnoty (každú hodnotu na samostatný riadok). setting_mail_handler_body_delimiters: "OrezaÅ¥ emaily po jednom z nasledovných riadkov" permission_add_subprojects: Vytváranie podprojektov label_subproject_new: Nový podprojekt text_own_membership_delete_confirmation: "Pokúšate sa odstrániÅ¥ niektoré alebo vÅ¡etky svoje prístupové práva a je možné, že už nebudete maÅ¥ možnosÅ¥ naÄalej upravovaÅ¥ tento projekt.\nNaozaj si želáte pokraÄovaÅ¥?" label_close_versions: UzavrieÅ¥ dokonÄené verzie label_board_sticky: Dôležité label_board_locked: Uzamknuté permission_export_wiki_pages: Export wikistránok setting_cache_formatted_text: UložiÅ¥ formátovaný text do vyrovnávacej pamäte permission_manage_project_activities: Správa aktivít projektu error_unable_delete_issue_status: 'Nie je možné vymazaÅ¥ stav úlohy (%{value})' label_profile: Profil permission_manage_subtasks: Správa podúloh field_parent_issue: Nadradená úloha label_subtask_plural: Podúlohy label_project_copy_notifications: ZaslaÅ¥ emailové upozornenie poÄas kopírovania projektu error_can_not_delete_custom_field: Nie je možné vymazaÅ¥ vlastné pole error_unable_to_connect: Nie je možné sa pripojiÅ¥ (%{value}) error_can_not_remove_role: "Táto rola sa používa a nemôže byÅ¥ vymazaná." error_can_not_delete_tracker_html: "Tento front obsahuje úlohy a nemôže byÅ¥ vymazaný.

    The following projects have issues with this tracker:
    %{projects}

    " field_principal: User or Group notice_failed_to_save_members: "Nepodarilo sa uložiÅ¥ Älenov: %{errors}." text_zoom_out: OddialiÅ¥ text_zoom_in: PriblížiÅ¥ notice_unable_delete_time_entry: Nie je možné vymazaÅ¥ Äasový záznam. field_time_entries: Zaznamenaný Äas project_module_gantt: Ganttov graf project_module_calendar: Kalendár button_edit_associated_wikipage: "UpraviÅ¥ súvisiacu wikistránku: %{page_title}" field_text: Textové pole setting_default_notification_option: Predvolené nastavenie upozornení label_user_mail_option_only_my_events: Len pre veci, ktoré sledujem, alebo v ktorých som zapojený label_user_mail_option_none: "Žiadne udalosti" field_member_of_group: "Skupina priradeného používateľa" field_assigned_to_role: "Rola priradeného používateľa" notice_not_authorized_archived_project: Projekt, ku ktorému sa snažíte pristupovaÅ¥, bol archivovaný. label_principal_search: "HľadaÅ¥ používateľa alebo skupinu:" label_user_search: "HľadaÅ¥ používateľa:" field_visible: Viditeľné setting_commit_logtime_activity_id: Aktivita pre zaznamenaný Äas text_time_logged_by_changeset: "Aplikované v súbore zmien %{value}." setting_commit_logtime_enabled: PovoliÅ¥ zaznamenávanie Äasu notice_gantt_chart_truncated: "Graf bol skrátený, pretože bol prekroÄený maximálny povolený poÄet zobrazených položiek (%{max})" setting_gantt_items_limit: Maximálny poÄet položiek zobrazených na Ganttovom grafe field_warn_on_leaving_unsaved: "VarovaÅ¥ ma, keÄ opúšťam stránku s neuloženým textom" text_warn_on_leaving_unsaved: "Stránka, ktorú sa chystáte opustiÅ¥, obsahuje neuložený obsah. Ak stránku opustíte, neuložený obsah bude stratený." label_my_queries: Moje filtre vyhľadávania text_journal_changed_no_detail: "%{label} bolo aktualizované" label_news_comment_added: Komentár k novinke bol pridaný button_expand_all: RozbaliÅ¥ vÅ¡etko button_collapse_all: ZbaliÅ¥ vÅ¡etko label_additional_workflow_transitions_for_assignee: ÄŽalÅ¡ie zmeny stavu sú povolené, len ak je používateľ priradený label_additional_workflow_transitions_for_author: ÄŽalÅ¡ie zmeny stavu sú povolené, len ak je používateľ autorom label_bulk_edit_selected_time_entries: Hromadne upraviÅ¥ vybrané Äasové záznamy text_time_entries_destroy_confirmation: 'Naozaj si želáte vymazaÅ¥ vybrané Äasové záznamy?' label_role_anonymous: Anonymný label_role_non_member: Nie je Älenom label_issue_note_added: Poznámka bola pridaná label_issue_status_updated: Stav bol aktualizovaný label_issue_priority_updated: Priorita bola aktualizovaná label_issues_visibility_own: Úlohy od používateľa alebo priradené používateľovi field_issues_visibility: ViditeľnosÅ¥ úloh label_issues_visibility_all: VÅ¡etky úlohy permission_set_own_issues_private: Nastavenie vlastných úloh ako verejné alebo súkromné field_is_private: Súkromné permission_set_issues_private: Nastavenie úloh ako verejné alebo súkromné label_issues_visibility_public: VÅ¡etky úlohy, ktoré nie sú súkromné text_issues_destroy_descendants_confirmation: "Týmto krokom vymažate aj %{count} podúloh." field_commit_logs_encoding: Kódovanie komentárov ku kommitom field_scm_path_encoding: Kódovanie cesty SCM text_scm_path_encoding_note: "Predvolené: UTF-8" field_path_to_repository: Cesta k repozitáru field_root_directory: Koreňový adresár field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokálny repozitár (napr. /hgrepo, c:\hgrepo) text_scm_command: Príkaz text_scm_command_version: Verzia label_git_report_last_commit: HlásiÅ¥ posledný commit pre súbory a prieÄinky notice_issue_successful_create: "Úloha %{id} bola vytvorená." label_between: medzi setting_issue_group_assignment: PovoliÅ¥ priradenie úlohy skupine label_diff: rozdiely text_git_repository_note: Repozitár je iba jeden a je lokálny (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Smer triedenia description_project_scope: Rozsah vyhľadávania description_filter: Filter description_user_mail_notification: Nastavenia upozornení emailom description_message_content: Obsah správy description_available_columns: Dostupné stĺpce description_issue_category_reassign: VybraÅ¥ kategóriu úlohy description_search: Vyhľadávanie description_notes: Poznámky description_choose_project: Projekty description_query_sort_criteria_attribute: Atribút triedenia description_wiki_subpages_reassign: VybraÅ¥ novú nadradenú stránku description_selected_columns: Vybrané stĺpce label_parent_revision: RodiÄ label_child_revision: Potomok error_scm_annotate_big_text_file: "Komentár nemohol byÅ¥ pridaný, pretože bola prekroÄená maximálna povolená veľkosÅ¥ textového súboru." setting_default_issue_start_date_to_creation_date: PoužiÅ¥ aktuálny dátum ako poÄiatoÄný dátum pri nových úlohách button_edit_section: UpraviÅ¥ túto sekciu setting_repositories_encodings: Kódovania pre prílohy a repozitáre description_all_columns: VÅ¡etky stĺpce button_export: Export label_export_options: "Nastavenia exportu do %{export_format}" error_attachment_too_big: "Súbor nemožno nahraÅ¥, pretože prekraÄuje maximálnu povolenú veľkosÅ¥ súboru (%{max_size})" notice_failed_to_save_time_entries: "%{count} Äasových záznamov z %{total} vybraných nebolo uložených: %{ids}." label_x_issues: zero: 0 úloh one: 1 úloha other: "%{count} úloh" label_repository_new: Nový repozitár field_repository_is_default: Hlavný repozitár label_copy_attachments: KopírovaÅ¥ prílohy label_item_position: "%{position} z %{count}" label_completed_versions: DokonÄené verzie text_project_identifier_info: 'Sú povolené iba malé písmená (a-z), Äísla, pomlÄky a podÄiarkovníky. Identifikátor musí zaÄínaÅ¥ malým písmenom.
    Po uložení už nie je možné identifikátor zmeniÅ¥.' field_multiple: Viacero hodnôt setting_commit_cross_project_ref: PovoliÅ¥ referencie a opravy úloh vÅ¡etkých ostatných projektov text_issue_conflict_resolution_add_notes: PridaÅ¥ moje poznámky a zahodiÅ¥ ostatné moje zmeny text_issue_conflict_resolution_overwrite: "Napriek tomu aplikovaÅ¥ moje zmeny (predchádzajúce poznámky budú zachované, ale niektoré zmeny môžu byÅ¥ prepísané)" notice_issue_update_conflict: "PoÄas vaÅ¡ich úprav bola úloha aktualizovaná iným používateľom." text_issue_conflict_resolution_cancel: "ZahodiÅ¥ vÅ¡etky moje zmeny a znovu zobraziÅ¥ %{link}" permission_manage_related_issues: Správa súvisiacich úloh field_auth_source_ldap_filter: Filter LDAP label_search_for_watchers: HľadaÅ¥ pozorovateľov, ktorých chcete pridaÅ¥ notice_account_deleted: "Váš úÄet bol natrvalo vymazaný." setting_unsubscribe: PovoliÅ¥ používateľom vymazaÅ¥ svoj vlastný úÄet button_delete_my_account: VymazaÅ¥ môj úÄet text_account_destroy_confirmation: "Naozaj si želáte pokraÄovaÅ¥?\nVáš úÄet bude natrvalo vymazaný, bez možnosti obnovenia." error_session_expired: "VaÅ¡a relácia vyprÅ¡ala. Prihláste sa prosím znovu." text_session_expiration_settings: "Varovanie: zmenou týchto nastavení môžu vyprÅ¡aÅ¥ aktuálne relácie vrátane vaÅ¡ej." setting_session_lifetime: Maximálny Äas relácie setting_session_timeout: VyprÅ¡anie relácie pri neaktivite label_session_expiration: VyprÅ¡anie relácie permission_close_project: Uzavretie / opätovné otvorenie projektu button_close: UzavrieÅ¥ button_reopen: Opäť otvoriÅ¥ project_status_active: aktívny project_status_closed: uzavretý project_status_archived: archivovaný text_project_closed: Tento projekt je uzavretý a prístupný iba na Äítanie. notice_user_successful_create: "Používateľ %{id} bol vytvorený." field_core_fields: Å tandardné polia field_timeout: "VyprÅ¡anie (v sekundách)" setting_thumbnails_enabled: ZobraziÅ¥ miniatúry príloh setting_thumbnails_size: VeľkosÅ¥ miniatúry (v pixeloch) label_status_transitions: Zmeny stavu label_fields_permissions: Oprávnenia k poliam label_readonly: Iba na Äítanie label_required: Povinné text_repository_identifier_info: 'Sú povolené iba malé písmená (a-z), Äísla, pomlÄky a podÄiarkovníky.
    Po uložení už nie je možné identifikátor zmeniÅ¥.' field_board_parent: Nadradené fórum label_attribute_of_project: "%{name} projektu" label_attribute_of_author: "%{name} autora" label_attribute_of_assigned_to: "%{name} priradeného používateľa" label_attribute_of_fixed_version: "%{name} cieľovej verzie" label_copy_subtasks: KopírovaÅ¥ podúlohy label_copied_to: Skopírované do label_copied_from: Skopírované z label_any_issues_in_project: vÅ¡etky úlohy projektu label_any_issues_not_in_project: vÅ¡etky úlohy nepatriace do projektu field_private_notes: Súkromné poznámky permission_view_private_notes: Zobrazenie súkromných poznámok permission_set_notes_private: Nastavenie poznámok ako súkromné label_no_issues_in_project: žiadne úlohy projektu label_any: vÅ¡etko label_last_n_weeks: "posledných %{count} týždňov" setting_cross_project_subtasks: PovoliÅ¥ podúlohy naprieÄ projektmi label_cross_project_descendants: S podprojektmi label_cross_project_tree: S projektovým stromom label_cross_project_hierarchy: S hierarchiou projektu label_cross_project_system: So vÅ¡etkými projektmi button_hide: SkryÅ¥ setting_non_working_week_days: Dni voľna label_in_the_next_days: poÄas nasledujúcich label_in_the_past_days: poÄas minulých label_attribute_of_user: "%{name} používateľa" text_turning_multiple_off: "Ak zakážete výber viacerých hodnôt, polia s výberom viacerých hodnôt budú vyÄistené. Tým sa zaistí, aby bola pre každé pole vybraná vždy len jedna hodnota." label_attribute_of_issue: "%{name} úlohy" permission_add_documents: Pridávanie dokumentov permission_edit_documents: Úprava dokumentov permission_delete_documents: Mazanie dokumentov label_gantt_progress_line: Indikátor napredovania setting_jsonp_enabled: PovoliÅ¥ podporu JSONP field_inherit_members: ZdediÅ¥ Älenov field_closed_on: Uzavreté field_generate_password: VygenerovaÅ¥ heslo setting_default_projects_tracker_ids: Predvolené fronty pri nových projektoch label_total_time: Celkový Äas text_scm_config: Svoje príkazy SCM môžete konfigurovaÅ¥ v súbore config/configuration.yml. Po jeho úprave prosím reÅ¡tartujte aplikáciu. text_scm_command_not_available: Príkaz SCM nie je k dispozícii. Skontrolujte prosím nastavenia na administraÄnom paneli. setting_emails_header: HlaviÄka emailu notice_account_not_activated_yet: Váš úÄet eÅ¡te nebol aktivovaný. Ak potrebujete zaslaÅ¥ nový aktivaÄný email, kliknite prosím na tento odkaz. notice_account_locked: Váš úÄet je uzamknutý. label_hidden: Skryté label_visibility_private: iba pre mňa label_visibility_roles: iba pre tieto roly label_visibility_public: pre vÅ¡etkých používateľov field_must_change_passwd: Pri najbližšom prihlásení je potrebné zmeniÅ¥ heslo notice_new_password_must_be_different: Nové heslo nesmie byÅ¥ rovnaké ako súÄasné heslo setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Email setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Celkový strávený Äas notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API kÄ¾ÃºÄ setting_lost_password: Zabudnuté heslo mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: OdstrániÅ¥ prepojenie error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sl.yml000066400000000000000000002142321500112024600171700ustar00rootroot00000000000000sl: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y" short: "%d. %b" long: "%d. %B, %Y" day_names: [Nedelja, Ponedeljek, Torek, Sreda, ÄŒetrtek, Petek, Sobota] abbr_day_names: [Ned, Pon, To, Sr, ÄŒet, Pet, Sob] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Januar, Februar, Marec, April, Maj, Junij, Julij, Avgust, September, Oktober, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Aug, Sep, Okt, Nov, Dec] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%a, %d. %b, %Y %H:%M:%S %z" time: "%H:%M" short: "%d. %b %H:%M" long: "%d. %B, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "pol minute" less_than_x_seconds: one: "manj kot 1. sekundo" other: "manj kot %{count} sekund" x_seconds: one: "1. sekunda" other: "%{count} sekund" less_than_x_minutes: one: "manj kot minuto" other: "manj kot %{count} minut" x_minutes: one: "1 minuta" other: "%{count} minut" about_x_hours: one: "okrog 1. ure" other: "okrog %{count} ur" x_hours: one: "1 ura" other: "%{count} ur" x_days: one: "1 dan" other: "%{count} dni" about_x_months: one: "okrog 1. mesec" other: "okrog %{count} mesecev" x_months: one: "1 mesec" other: "%{count} mesecev" about_x_years: one: "okrog 1. leto" other: "okrog %{count} let" over_x_years: one: "veÄ kot 1. leto" other: "veÄ kot %{count} let" almost_x_years: one: "skoraj 1. leto" other: "skoraj %{count} let" number: format: separator: "," delimiter: "." precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: KB tb: TB gb: GB byte: one: Byte other: Bytes mb: MB # Used in array.to_sentence. support: array: sentence_connector: "in" skip_last_comma: false activerecord: errors: template: header: one: "1. napaka je prepreÄila temu %{model} da bi se shranil" other: "%{count} napak je prepreÄilo temu %{model} da bi se shranil" messages: inclusion: "ni vkljuÄen na seznamu" exclusion: "je rezerviran" invalid: "je napaÄen" confirmation: "ne ustreza potrdilu" accepted: "mora biti sprejet" empty: "ne sme biti prazen" blank: "ne sme biti neizpolnjen" too_long: "je predolg" too_short: "je prekratek" wrong_length: "je napaÄne dolžine" taken: "je že zaseden" not_a_number: "ni Å¡tevilo" not_a_date: "ni veljaven datum" greater_than: "mora biti veÄji kot %{count}" greater_than_or_equal_to: "mora biti veÄji ali enak kot %{count}" equal_to: "mora biti enak kot %{count}" less_than: "mora biti manjÅ¡i kot %{count}" less_than_or_equal_to: "mora biti manjÅ¡i ali enak kot %{count}" odd: "mora biti sodo" even: "mora biti liho" greater_than_start_date: "mora biti kasnejÅ¡i kot zaÄetni datum" not_same_project: "ne pripada istemu projektu" circular_dependency: "Ta odnos bi povzroÄil krožno odvisnost" cant_link_an_issue_with_a_descendant: "Zahtevek ne more biti povezan s svojo podnalogo" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Prosimo izberite general_text_No: 'Ne' general_text_Yes: 'Da' general_text_no: 'ne' general_text_yes: 'da' general_lang_name: 'Slovene (SlovenÅ¡Äina)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: RaÄun je bil uspeÅ¡no posodobljen. notice_account_invalid_credentials: NapaÄno uporabniÅ¡ko ime ali geslo notice_account_password_updated: Geslo je bilo uspeÅ¡no posodobljeno. notice_account_wrong_password: NapaÄno geslo notice_account_register_done: RaÄun je bil uspeÅ¡no ustvarjen. Za aktivacijo potrdite povezavo, ki vam je bila poslana v e-nabiralnik. notice_can_t_change_password: Ta raÄun za overovljanje uporablja zunanji. Gesla ni mogoÄe spremeniti. notice_account_lost_email_sent: Poslano vam je bilo e-pismo z navodili za izbiro novega gesla. notice_account_activated: VaÅ¡ raÄun je bil aktiviran. Sedaj se lahko prijavite. notice_successful_create: Ustvarjanje uspelo. notice_successful_update: Posodobitev uspela. notice_successful_delete: Izbris uspel. notice_successful_connection: Povezava uspela. notice_file_not_found: Stran na katero se želite povezati ne obstaja ali pa je bila umaknjena. notice_locking_conflict: Drug uporabnik je posodobil podatke. notice_not_authorized: Nimate privilegijev za dostop do te strani. notice_email_sent: "E-poÅ¡tno sporoÄilo je bilo poslano %{value}" notice_email_error: "Ob poÅ¡iljanju e-sporoÄila je priÅ¡lo do napake (%{value})" notice_feeds_access_key_reseted: VaÅ¡ Atom dostopni kljuÄ je bil ponastavljen. notice_failed_to_save_issues: "Neuspelo shranjevanje %{count} zahtevka na %{total} izbranem: %{ids}." notice_account_pending: "VaÅ¡ raÄun je bil ustvarjen in Äaka na potrditev s strani administratorja." notice_default_data_loaded: Privzete nastavitve so bile uspeÅ¡no naložene. notice_unable_delete_version: Verzije ni bilo mogoÄe izbrisati. error_can_t_load_default_data: "Privzetih nastavitev ni bilo mogoÄe naložiti: %{value}" error_scm_not_found: "Vnos ali revizija v shrambi ni bila najdena ." error_scm_command_failed: "Med vzpostavljem povezave s shrambo je priÅ¡lo do napake: %{value}" error_scm_annotate: "Vnos ne obstaja ali pa ga ni mogoÄe komentirati." error_issue_not_found_in_project: 'Zahtevek ni bil najden ali pa ne pripada temu projektu' mail_subject_lost_password: "VaÅ¡e %{value} geslo" mail_body_lost_password: 'Za spremembo glesla kliknite na naslednjo povezavo:' mail_subject_register: "Aktivacija %{value} vaÅ¡ega raÄuna" mail_body_register: 'Za aktivacijo vaÅ¡ega raÄuna kliknite na naslednjo povezavo:' mail_body_account_information_external: "Za prijavo lahko uporabite vaÅ¡ %{value} raÄun." mail_body_account_information: "Informacije o vaÅ¡em raÄunu. Za spremembo gesla sledite linku 'Spremeni geslo' na naslovu za prijavo, spodaj." mail_subject_account_activation_request: "%{value} zahtevek za aktivacijo raÄuna" mail_body_account_activation_request: "Registriral se je nov uporabnik (%{value}). RaÄun Äaka na vaÅ¡o odobritev:" mail_subject_reminder: "%{count} zahtevek(zahtevki) zapadejo v naslednjih %{days} dneh" mail_body_reminder: "%{count} zahtevek(zahtevki), ki so vam dodeljeni bodo zapadli v naslednjih %{days} dneh:" field_name: Ime field_description: Opis field_summary: Povzetek field_is_required: Zahtevano field_firstname: Ime field_lastname: Priimek field_mail: E-naslov field_filename: Datoteka field_filesize: Velikost field_downloads: Prenosi field_author: Avtor field_created_on: Ustvarjen field_updated_on: Posodobljeno field_field_format: Format field_is_for_all: Za vse projekte field_possible_values: Možne vrednosti field_regexp: Regularni izraz field_min_length: Minimalna dolžina field_max_length: Maksimalna dolžina field_value: Vrednost field_category: Kategorija field_title: Naslov field_project: Projekt field_issue: Zahtevek field_status: Status field_notes: Zabeležka field_is_closed: Zahtevek zaprt field_is_default: Privzeta vrednost field_tracker: Vrsta zahtevka field_subject: Tema field_due_date: Do datuma field_assigned_to: Dodeljen field_priority: Prioriteta field_fixed_version: Ciljna verzija field_user: Uporabnik field_role: Vloga field_homepage: DomaÄa stran field_is_public: Javno field_parent: Podprojekt projekta field_is_in_roadmap: Zahtevki prikazani na zemljevidu field_login: Prijava field_mail_notification: E-poÅ¡tna oznanila field_admin: Administrator field_last_login_on: ZadnjiÄ povezan(a) field_language: Jezik field_effective_date: Datum field_password: Geslo field_new_password: Novo geslo field_password_confirmation: Potrditev field_version: Verzija field_type: Tip field_host: Gostitelj field_port: Vrata field_account: RaÄun field_base_dn: Bazni DN field_attr_login: Oznaka za prijavo field_attr_firstname: Oznaka za ime field_attr_lastname: Oznaka za priimek field_attr_mail: Oznaka za e-naslov field_onthefly: Sprotna izdelava uporabnikov field_start_date: ZaÄetek field_done_ratio: "% Narejeno" field_auth_source: NaÄin overovljanja field_hide_mail: Skrij moj e-naslov field_comments: Komentar field_url: URL field_start_page: ZaÄetna stran field_subproject: Podprojekt field_hours: Ur field_activity: Aktivnost field_spent_on: Datum field_identifier: Identifikator field_is_filter: Uporabljen kot filter field_issue_to: Povezan zahtevek field_delay: Zamik field_assignable: Zahtevki so lahko dodeljeni tej vlogi field_redirect_existing_links: Preusmeri obstojeÄe povezave field_estimated_hours: Ocenjen Äas field_column_names: Stolpci field_time_zone: ÄŒasovni pas field_searchable: Zmožen iskanja field_default_value: Privzeta vrednost field_comments_sorting: Prikaži komentarje field_parent_title: MatiÄna stran setting_app_title: Naslov aplikacije setting_welcome_text: Pozdravno besedilo setting_default_language: Privzeti jezik setting_login_required: Zahtevano overovljanje setting_self_registration: Samostojna registracija setting_attachment_max_size: Maksimalna velikost priponk setting_issues_export_limit: Skrajna meja za izvoz zahtevkov setting_mail_from: E-naslov za emisijo setting_plain_text_mail: navadno e-sporoÄilo (ne HTML) setting_host_name: Ime gostitelja in pot setting_text_formatting: Oblikovanje besedila setting_wiki_compression: Stiskanje Wiki zgodovine setting_feeds_limit: Meja obsega Atom virov setting_default_projects_public: Novi projekti so privzeto javni setting_autofetch_changesets: Samodejni izvleÄek zapisa sprememb setting_sys_api_enabled: OmogoÄi WS za upravljanje shrambe setting_commit_ref_keywords: Sklicne kljuÄne besede setting_commit_fix_keywords: Urejanje kljuÄne besede setting_autologin: Avtomatska prijava setting_date_format: Oblika datuma setting_time_format: Oblika Äasa setting_cross_project_issue_relations: Dovoli povezave zahtevkov med razliÄnimi projekti setting_issue_list_default_columns: Privzeti stolpci prikazani na seznamu zahtevkov setting_emails_footer: Noga e-sporoÄil setting_protocol: Protokol setting_per_page_options: Å tevilo elementov na stran setting_user_format: Oblika prikaza uporabnikov setting_activity_days_default: Prikaz dni na aktivnost projekta setting_display_subprojects_issues: Privzeti prikaz zahtevkov podprojektov v glavnem projektu setting_enabled_scm: OmogoÄen SCM setting_mail_handler_api_enabled: OmogoÄi WS za prihajajoÄo e-poÅ¡to setting_mail_handler_api_key: API kljuÄ setting_sequential_project_identifiers: Generiraj projektne identifikatorje sekvenÄno setting_gravatar_enabled: Uporabljaj Gravatar ikone setting_diff_max_lines_displayed: Maksimalno Å¡tevilo prikazanih vrstic razliÄnosti permission_edit_project: Uredi projekt permission_select_project_modules: Izberi module projekta permission_manage_members: Uredi Älane permission_manage_versions: Uredi verzije permission_manage_categories: Urejanje kategorij zahtevkov permission_add_issues: Dodaj zahtevke permission_edit_issues: Uredi zahtevke permission_manage_issue_relations: Uredi odnose med zahtevki permission_add_issue_notes: Dodaj zabeležke permission_edit_issue_notes: Uredi zabeležke permission_edit_own_issue_notes: Uredi lastne zabeležke permission_delete_issues: IzbriÅ¡i zahtevke permission_manage_public_queries: Uredi javna povpraÅ¡evanja permission_save_queries: Shrani povpraÅ¡evanje permission_view_gantt: Poglej gantogram permission_view_calendar: Poglej koledar permission_view_issue_watchers: Oglej si listo spremeljevalcev permission_add_issue_watchers: Dodaj spremljevalce permission_log_time: Beleži porabljen Äas permission_view_time_entries: Poglej porabljen Äas permission_edit_time_entries: Uredi beležko Äasa permission_edit_own_time_entries: Uredi beležko lastnega Äasa permission_manage_news: Uredi novice permission_comment_news: Komentiraj novice permission_view_documents: Poglej dokumente permission_manage_files: Uredi datoteke permission_view_files: Poglej datoteke permission_manage_wiki: Uredi wiki permission_rename_wiki_pages: Preimenuj wiki strani permission_delete_wiki_pages: IzbriÅ¡i wiki strani permission_view_wiki_pages: Poglej wiki permission_view_wiki_edits: Poglej wiki zgodovino permission_edit_wiki_pages: Uredi wiki strani permission_delete_wiki_pages_attachments: IzbriÅ¡i priponke permission_protect_wiki_pages: ZaÅ¡Äiti wiki strani permission_manage_repository: Uredi shrambo permission_browse_repository: Prebrskaj shrambo permission_view_changesets: Poglej zapis sprememb permission_commit_access: Dostop za predajo permission_manage_boards: Uredi table permission_view_messages: Poglej sporoÄila permission_add_messages: Objavi sporoÄila permission_edit_messages: Uredi sporoÄila permission_edit_own_messages: Uredi lastna sporoÄila permission_delete_messages: IzbriÅ¡i sporoÄila permission_delete_own_messages: IzbriÅ¡i lastna sporoÄila project_module_issue_tracking: Sledenje zahtevkom project_module_time_tracking: Sledenje Äasa project_module_news: Novice project_module_documents: Dokumenti project_module_files: Datoteke project_module_wiki: Wiki project_module_repository: Shramba project_module_boards: Table label_user: Uporabnik label_user_plural: Uporabniki label_user_new: Nov uporabnik label_project: Projekt label_project_new: Nov projekt label_project_plural: Projekti label_x_projects: zero: ni projektov one: 1 projekt other: "%{count} projektov" label_project_all: Vsi projekti label_project_latest: Zadnji projekti label_issue: Zahtevek label_issue_new: Nov zahtevek label_issue_plural: Zahtevki label_issue_view_all: Poglej vse zahtevke label_issues_by: "Zahtevki od %{value}" label_issue_added: Zahtevek dodan label_issue_updated: Zahtevek posodobljen label_document: Dokument label_document_new: Nov dokument label_document_plural: Dokumenti label_document_added: Dokument dodan label_role: Vloga label_role_plural: Vloge label_role_new: Nova vloga label_role_and_permissions: Vloge in dovoljenja label_member: ÄŒlan label_member_new: Nov Älan label_member_plural: ÄŒlani label_tracker: Vrsta zahtevka label_tracker_plural: Vrste zahtevkov label_tracker_new: Nova vrsta zahtevka label_workflow: Potek dela label_issue_status: Stanje zahtevka label_issue_status_plural: Stanje zahtevkov label_issue_status_new: Novo stanje label_issue_category: Kategorija zahtevka label_issue_category_plural: Kategorije zahtevkov label_issue_category_new: Nova kategorija label_custom_field: Polje po meri label_custom_field_plural: Polja po meri label_custom_field_new: Novo polje po meri label_enumerations: Seznami label_enumeration_new: Nova vrednost label_information: Informacija label_information_plural: Informacije label_register: Registracija label_password_lost: Spremeni geslo label_home: Domov label_my_page: Moja stran label_my_account: Moj raÄun label_my_projects: Moji projekti label_administration: Upravljanje label_login: Prijava label_logout: Odjava label_help: PomoÄ label_reported_issues: Prijavljeni zahtevki label_assigned_to_me_issues: Zahtevki dodeljeni meni label_registered_on: Registriran label_activity: Aktivnosti label_user_activity: "Aktivnost %{value}" label_new: Nov label_logged_as: Prijavljen(a) kot label_environment: Okolje label_authentication: Overovitev label_auth_source: NaÄin overovitve label_auth_source_new: Nov naÄin overovitve label_auth_source_plural: NaÄini overovitve label_subproject_plural: Podprojekti label_and_its_subprojects: "%{value} in njegovi podprojekti" label_min_max_length: Min - Max dolžina label_list: Seznam label_date: Datum label_integer: Celo Å¡tevilo label_float: Decimalno Å¡tevilo label_boolean: Boolean label_string: Besedilo label_text: Dolgo besedilo label_attribute: Lastnost label_attribute_plural: Lastnosti label_no_data: Ni podatkov za prikaz label_change_status: Spremeni stanje label_history: Zgodovina label_attachment: Datoteka label_attachment_new: Nova datoteka label_attachment_delete: IzbriÅ¡i datoteko label_attachment_plural: Datoteke label_file_added: Datoteka dodana label_report: PoroÄilo label_report_plural: PoroÄila label_news: Novica label_news_new: Dodaj novico label_news_plural: Novice label_news_latest: Zadnje novice label_news_view_all: Poglej vse novice label_news_added: Dodane novice label_settings: Nastavitve label_overview: Povzetek label_version: Verzija label_version_new: Nova verzija label_version_plural: Verzije label_confirmation: Potrditev label_export_to: 'Na razpolago tudi v:' label_read: Preberi... label_public_projects: Javni projekti label_open_issues: odprt zahtevek label_open_issues_plural: odprti zahtevki label_closed_issues: zaprt zahtevek label_closed_issues_plural: zaprti zahtevki label_x_open_issues_abbr: zero: 0 odprtih one: 1 odprt other: "%{count} odprtih" label_x_closed_issues_abbr: zero: 0 zaprtih one: 1 zaprt other: "%{count} zaprtih" label_total: Skupaj label_permissions: Dovoljenja label_current_status: Trenutno stanje label_new_statuses_allowed: Novi zahtevki dovoljeni label_all: vsi label_none: noben label_nobody: nihÄe label_next: Naslednji label_previous: PrejÅ¡nji label_used_by: V uporabi od label_details: Podrobnosti label_add_note: Dodaj zabeležko label_calendar: Koledar label_months_from: mesecev od label_gantt: Gantogram label_internal: Notranji label_last_changes: "zadnjih %{count} sprememb" label_change_view_all: Poglej vse spremembe label_comment: Komentar label_comment_plural: Komentarji label_x_comments: zero: ni komentarjev one: 1 komentar other: "%{count} komentarjev" label_comment_add: Dodaj komentar label_comment_added: Komentar dodan label_comment_delete: IzbriÅ¡i komentarje label_query: Iskanje po meri label_query_plural: Iskanja po meri label_query_new: Novo iskanje label_filter_add: Dodaj filter label_filter_plural: Filtri label_equals: je enako label_not_equals: ni enako label_in_less_than: v manj kot label_in_more_than: v veÄ kot label_in: v label_today: danes label_yesterday: vÄeraj label_this_week: ta teden label_last_week: pretekli teden label_last_n_days: "zadnjih %{count} dni" label_this_month: ta mesec label_last_month: zadnji mesec label_this_year: to leto label_date_range: Razpon datumov label_less_than_ago: manj kot dni nazaj label_more_than_ago: veÄ kot dni nazaj label_ago: dni nazaj label_contains: vsebuje label_not_contains: ne vsebuje label_day_plural: dni label_repository: Shramba label_repository_plural: Shrambe label_revision: Revizija label_revision_plural: Revizije label_associated_revisions: Povezane revizije label_added: dodano label_modified: spremenjeno label_copied: kopirano label_renamed: preimenovano label_deleted: izbrisano label_latest_revision: Zadnja revizija label_latest_revision_plural: Zadnje revizije label_view_revisions: Poglej revizije label_max_size: NajveÄja velikost label_roadmap: NaÄrt label_roadmap_due_in: "Do %{value}" label_roadmap_overdue: "%{value} zakasnel" label_roadmap_no_issues: Ni zahtevkov za to verzijo label_search: IÅ¡Äi label_result_plural: Rezultati label_all_words: Vse besede label_wiki: Predstavitev label_wiki_edit: Uredi stran label_wiki_edit_plural: Uredi strani label_wiki_page: Predstavitvena stran label_wiki_page_plural: Predstavitvene strani label_index_by_title: Razvrsti po naslovu label_index_by_date: Razvrsti po datumu label_current_version: Trenutna verzija label_preview: Predogled label_feed_plural: Atom viri label_changes_details: Podrobnosti o vseh spremembah label_issue_tracking: Sledenje zahtevkom label_spent_time: Porabljen Äas label_f_hour: "%{value} ura" label_f_hour_plural: "%{value} ur" label_time_tracking: Sledenje Äasu label_change_plural: Spremembe label_statistics: Statistika label_commits_per_month: Predaj na mesec label_commits_per_author: Predaj na avtorja label_view_diff: Preglej razlike label_diff_inline: znotraj label_diff_side_by_side: vzporedno label_options: Možnosti label_copy_workflow_from: Kopiraj potek dela od label_permissions_report: PoroÄilo o dovoljenjih label_watched_issues: Spremljani zahtevki label_related_issues: Povezani zahtevki label_applied_status: Uveljavljeno stanje label_loading: Nalaganje... label_relation_new: Nova povezava label_relation_delete: IzbriÅ¡i povezavo label_relates_to: povezan z label_duplicates: duplikati label_duplicated_by: dupliciral label_blocks: blok label_blocked_by: blokiral label_precedes: ima prednost pred label_follows: sledi label_stay_logged_in: Ostani prijavljen(a) label_disabled: onemogoÄi label_show_completed_versions: Prikaži zakljuÄene verzije label_me: jaz label_board: Forum label_board_new: Nov forum label_board_plural: Forumi label_topic_plural: Teme label_message_plural: SporoÄila label_message_last: Zadnje sporoÄilo label_message_new: Novo sporoÄilo label_message_posted: SporoÄilo dodano label_reply_plural: Odgovori label_send_information: PoÅ¡lji informacijo o raÄunu uporabniku label_year: Leto label_month: Mesec label_week: Teden label_date_from: Do label_date_to: Do label_language_based: Glede na uporabnikov jezik label_sort_by: "Razporedi po %{value}" label_send_test_email: PoÅ¡lji testno e-pismo label_feeds_access_key_created_on: "Atom dostopni kljuÄ narejen %{value} nazaj" label_module_plural: Moduli label_added_time_by: "Dodal %{author} %{age} nazaj" label_updated_time_by: "Posodobil %{author} %{age} nazaj" label_updated_time: "Posodobljeno %{value} nazaj" label_jump_to_a_project: SkoÄi na projekt... label_file_plural: Datoteke label_changeset_plural: Zapisi sprememb label_default_columns: Privzeti stolpci label_no_change_option: (Ni spremembe) label_bulk_edit_selected_issues: Uredi izbrane zahtevke skupaj label_theme: Tema label_default: Privzeto label_search_titles_only: PreiÅ¡Äi samo naslove label_user_mail_option_all: "Za vsak dogodek v vseh mojih projektih" label_user_mail_option_selected: "Za vsak dogodek samo na izbranih projektih..." label_user_mail_no_self_notified: "Ne želim biti opozorjen(a) na spremembe, ki jih naredim sam(a)" label_registration_activation_by_email: aktivacija raÄuna po e-poÅ¡ti label_registration_manual_activation: roÄna aktivacija raÄuna label_registration_automatic_activation: samodejna aktivacija raÄuna label_display_per_page: "Na stran: %{value}" label_age: Starost label_change_properties: Sprememba lastnosti label_general: SploÅ¡no label_scm: SCM label_plugins: VtiÄniki label_ldap_authentication: LDAP overovljanje label_downloads_abbr: D/L label_optional_description: Neobvezen opis label_add_another_file: Dodaj Å¡e eno datoteko label_preferences: Preference label_chronological_order: KronoloÅ¡ko label_reverse_chronological_order: Obrnjeno kronoloÅ¡ko label_incoming_emails: PrihajajoÄa e-poÅ¡ta label_generate_key: Ustvari kljuÄ label_issue_watchers: Spremljevalci label_example: Vzorec button_login: Prijavi se button_submit: PoÅ¡lji button_save: Shrani button_check_all: OznaÄi vse button_uncheck_all: OdznaÄi vse button_delete: IzbriÅ¡i button_create: Ustvari button_test: Testiraj button_edit: Uredi button_add: Dodaj button_change: Spremeni button_apply: Uporabi button_clear: PoÄisti button_lock: Zakleni button_unlock: Odkleni button_download: Prenesi button_list: Seznam button_view: Pogled button_move: Premakni button_back: Nazaj button_cancel: PrekliÄi button_activate: Aktiviraj button_sort: Razvrsti button_log_time: Beleži Äas button_rollback: Povrni na to verzijo button_watch: Spremljaj button_unwatch: Ne spremljaj button_reply: Odgovori button_archive: Arhiviraj button_unarchive: Odarhiviraj button_reset: Ponastavi button_rename: Preimenuj button_change_password: Spremeni geslo button_copy: Kopiraj button_annotate: ZapiÅ¡i pripombo button_update: Posodobi button_configure: Konfiguriraj button_quote: Citiraj status_active: aktivni status_registered: registriran status_locked: zaklenjen text_select_mail_notifications: Izberi dejanja za katera naj bodo poslana oznanila preko e-poÅ¡to. text_regexp_info: npr. ^[A-Z0-9]+$ text_project_destroy_confirmation: Ali ste prepriÄani da želite izbrisati izbrani projekt in vse z njim povezane podatke? text_subprojects_destroy_warning: "Njegov(i) podprojekt(i): %{value} bodo prav tako izbrisani." text_workflow_edit: Izberite vlogo in zahtevek za urejanje poteka dela text_are_you_sure: Ali ste prepriÄani? text_tip_issue_begin_day: naloga z zaÄetkom na ta dan text_tip_issue_end_day: naloga z zakljuÄkom na ta dan text_tip_issue_begin_end_day: naloga ki se zaÄne in konÄa ta dan text_caracters_maximum: "najveÄ %{count} znakov." text_caracters_minimum: "Mora biti vsaj dolg vsaj %{count} znakov." text_length_between: "Dolžina med %{min} in %{max} znakov." text_tracker_no_workflow: Potek dela za to vrsto zahtevka ni doloÄen text_unallowed_characters: Nedovoljeni znaki text_comma_separated: Dovoljenih je veÄ vrednosti (loÄenih z vejico). text_issues_ref_in_commit_messages: Zahtevki sklicev in popravkov v sporoÄilu predaje text_issue_added: "Zahtevek %{id} je sporoÄil(a) %{author}." text_issue_updated: "Zahtevek %{id} je posodobil(a) %{author}." text_wiki_destroy_confirmation: Ali ste prepriÄani da želite izbrisati to wiki stran in vso njeno vsebino? text_issue_category_destroy_question: "Nekateri zahtevki (%{count}) so dodeljeni tej kategoriji. Kaj želite storiti?" text_issue_category_destroy_assignments: Odstrani naloge v kategoriji text_issue_category_reassign_to: Ponovno dodeli zahtevke tej kategoriji text_user_mail_option: "Na neizbrane projekte boste prejemali le obvestila o zadevah ki jih spremljate ali v katere ste vkljuÄeni (npr. zahtevki katerih avtor(ica) ste)" text_no_configuration_data: "Vloge, vrste zahtevkov, statusi zahtevkov in potek dela Å¡e niso bili doloÄeni. \nZelo priporoÄljivo je, da naložite privzeto konfiguracijo, ki jo lahko kasneje tudi prilagodite." text_load_default_configuration: Naloži privzeto konfiguracijo text_status_changed_by_changeset: "Dodano v zapis sprememb %{value}." text_issues_destroy_confirmation: 'Ali ste prepriÄani, da želite izbrisati izbrani(e) zahtevek(ke)?' text_select_project_modules: 'Izberite module, ki jih želite omogoÄiti za ta projekt:' text_default_administrator_account_changed: Spremenjen privzeti administratorski raÄun text_file_repository_writable: OmogoÄeno pisanje v shrambo datotek text_minimagick_available: MiniMagick je na voljo(neobvezno) text_destroy_time_entries_question: "%{hours} ur je bilo opravljenih na zahtevku, ki ga želite izbrisati. Kaj želite storiti?" text_destroy_time_entries: IzbriÅ¡i opravljene ure text_assign_time_entries_to_project: Predaj opravljene ure projektu text_reassign_time_entries: 'Prenesi opravljene ure na ta zahtevek:' text_user_wrote: "%{value} je napisal(a):" text_user_wrote_in: "%{value} je napisal(a) (%{link}):" text_enumeration_destroy_question: "%{count} objektov je doloÄenih tej vrednosti." text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:' text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniÅ¡kemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniÅ¡kem imenu ali e-poÅ¡tnem naslovu so samodejno dodeljeni." text_diff_truncated: '... Ta sprememba je bila odsekana ker presega najveÄjo velikost ki je lahko prikazana.' default_role_manager: Upravnik default_role_developer: Razvijalec default_role_reporter: PoroÄevalec default_tracker_bug: HroÅ¡Ä default_tracker_feature: Funkcija default_tracker_support: Podpora default_issue_status_new: Nov default_issue_status_in_progress: V teku default_issue_status_resolved: ReÅ¡en default_issue_status_feedback: Povratna informacija default_issue_status_closed: ZakljuÄen default_issue_status_rejected: Zavrnjen default_doc_category_user: UporabniÅ¡ka dokumentacija default_doc_category_tech: TehniÄna dokumentacija default_priority_low: Nizka default_priority_normal: ObiÄajna default_priority_high: Visoka default_priority_urgent: Urgentna default_priority_immediate: TakojÅ¡nje ukrepanje default_activity_design: Oblikovanje default_activity_development: Razvoj enumeration_issue_priorities: Prioritete zahtevkov enumeration_doc_categories: Kategorije dokumentov enumeration_activities: Aktivnosti (sledenje Äasa) warning_attachments_not_saved: "%{count} datotek(e) ni bilo mogoÄe shraniti." field_editable: Uredljivo text_plugin_assets_writable: Zapisljiva mapa za vtiÄnike label_display: Prikaz button_create_and_continue: Ustvari in nadaljuj text_custom_field_possible_values_info: 'Ena vrstica za vsako vrednost' setting_repository_log_display_limit: NajveÄje Å¡tevilo prikazanih revizij v log datoteki setting_file_max_size_displayed: NajveÄja velikost besedilnih datotek v vkljuÄenem prikazu field_watcher: Opazovalec field_content: Vsebina label_descending: PadajoÄe label_sort: Razvrsti label_ascending: NaraÅ¡ÄajoÄe label_date_from_to: Od %{start} do %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Ta stran ima %{descendants} podstran(i) in naslednik(ov). Kaj želite storiti? text_wiki_page_reassign_children: Znova dodeli podstrani tej glavni strani text_wiki_page_nullify_children: Obdrži podstrani kot glavne strani text_wiki_page_destroy_children: IzbriÅ¡i podstrani in vse njihove naslednike setting_password_min_length: Minimalna dolžina gesla field_group_by: Združi rezultate po mail_subject_wiki_content_updated: "'%{id}' wiki stran je bila posodobljena" label_wiki_content_added: Wiki stran dodana mail_subject_wiki_content_added: "'%{id}' wiki stran je bila dodana" mail_body_wiki_content_added: "%{author} je dodal '%{id}' wiki stran" label_wiki_content_updated: Wiki stran posodobljena mail_body_wiki_content_updated: "%{author} je posodobil '%{id}' wiki stran." permission_add_project: Ustvari projekt setting_new_project_user_role_id: Vloga, dodeljena neadministratorskemu uporabniku, ki je ustvaril projekt label_view_all_revisions: Poglej vse revizije label_tag: Oznaka label_branch: Veja error_no_tracker_in_project: Noben sledilnik ni povezan s tem projektom. Prosimo preverite nastavitve projekta. error_no_default_issue_status: Privzeti zahtevek ni definiran. Prosimo preverite svoje nastavitve (Pojdite na "Administracija -> Stanje zahtevkov"). text_journal_changed: "%{label} se je spremenilo iz %{old} v %{new}" text_journal_set_to: "%{label} nastavljeno na %{value}" text_journal_deleted: "%{label} izbrisan (%{old})" label_group_plural: Skupine label_group: Skupina label_group_new: Nova skupina label_time_entry_plural: Porabljen Äas text_journal_added: "%{label} %{value} dodan" field_active: Aktiven enumeration_system_activity: Sistemska aktivnost permission_delete_issue_watchers: IzbriÅ¡i opazovalce version_status_closed: zaprt version_status_locked: zaklenjen version_status_open: odprt error_can_not_reopen_issue_on_closed_version: Zahtevek dodeljen zaprti verziji ne more biti ponovno odprt label_user_anonymous: Anonimni button_move_and_follow: Premakni in sledi setting_default_projects_modules: Privzeti moduli za nove projekte setting_gravatar_default: Privzeta Gravatar slika field_sharing: Deljenje label_version_sharing_hierarchy: S projektno hierarhijo label_version_sharing_system: Z vsemi projekti label_version_sharing_descendants: S podprojekti label_version_sharing_tree: Z drevesom projekta label_version_sharing_none: Ni deljeno error_can_not_archive_project: Ta projekt ne more biti arhiviran button_copy_and_follow: Kopiraj in sledi label_copy_source: Vir setting_issue_done_ratio: IzraÄunaj razmerje opravljenega zahtevka z setting_issue_done_ratio_issue_status: Uporabi stanje zahtevka error_issue_done_ratios_not_updated: Razmerje opravljenega zahtevka ni bilo posodobljeno. error_workflow_copy_target: Prosimo izberite ciljni(e) sledilnik(e) in vlogo(e) setting_issue_done_ratio_issue_field: Uporabi polje zahtevka label_copy_same_as_target: Enako kot cilj label_copy_target: Cilj notice_issue_done_ratios_updated: Razmerje opravljenega zahtevka posodobljeno. error_workflow_copy_source: Prosimo izberite vir zahtevka ali vlogo label_update_issue_done_ratios: Posodobi razmerje opravljenega zahtevka setting_start_of_week: ZaÄni koledarje z permission_view_issues: Poglej zahtevke label_display_used_statuses_only: Prikaži samo stanja ki uporabljajo ta sledilnik label_revision_id: Revizija %{value} label_api_access_key: API dostopni kljuÄ label_api_access_key_created_on: API dostopni kljuÄ ustvarjen pred %{value} label_feeds_access_key: Atom dostopni kljuÄ notice_api_access_key_reseted: VaÅ¡ API dostopni kljuÄ je bil ponastavljen. setting_rest_api_enabled: OmogoÄi REST spletni servis label_missing_api_access_key: ManjkajoÄ API dostopni kljuÄ label_missing_feeds_access_key: ManjkajoÄ Atom dostopni kljuÄ button_show: Prikaži text_line_separated: Dovoljenih veÄ vrednosti (ena vrstica za vsako vrednost). setting_mail_handler_body_delimiters: Odreži e-poÅ¡to po eni od teh vrstic permission_add_subprojects: Ustvari podprojekte label_subproject_new: Nov podprojekt text_own_membership_delete_confirmation: |- Odstranili boste nekatere ali vse od dovoljenj zaradi Äesar morda ne boste mogli veÄ urejati tega projekta. Ali ste prepriÄani, da želite nadaljevati? label_close_versions: Zapri dokonÄane verzije label_board_sticky: Lepljivo label_board_locked: Zaklenjeno permission_export_wiki_pages: Izvozi wiki strani setting_cache_formatted_text: Predpomni oblikovano besedilo permission_manage_project_activities: Uredi aktivnosti projekta error_unable_delete_issue_status: Stanja zahtevka ni bilo možno spremeniti (%{value}) label_profile: Profil permission_manage_subtasks: Uredi podnaloge field_parent_issue: Nadrejena naloga label_subtask_plural: Podnaloge label_project_copy_notifications: Med kopiranjem projekta poÅ¡lji e-poÅ¡tno sporoÄilo error_can_not_delete_custom_field: Polja po meri ni mogoÄe izbrisati error_unable_to_connect: Povezava ni mogoÄa (%{value}) error_can_not_remove_role: Ta vloga je v uporabi in je ni mogoÄe izbrisati. error_can_not_delete_tracker_html: Ta sledilnik vsebuje zahtevke in se ga ne more izbrisati.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Shranjevanje uporabnika(ov) ni uspelo: %{errors}." text_zoom_out: Približaj text_zoom_in: Oddalji notice_unable_delete_time_entry: Brisanje dnevnika porabljenaga Äasa ni mogoÄe. field_time_entries: Beleži porabljeni Äas project_module_gantt: Gantogram project_module_calendar: Koledear button_edit_associated_wikipage: "Uredi povezano Wiki stran: %{page_title}" field_text: Besedilno polje setting_default_notification_option: Privzeta možnost obveÅ¡Äanja label_user_mail_option_only_my_events: Samo za stvari, ki jih opazujem ali sem v njih vpleten label_user_mail_option_none: Noben dogodek field_member_of_group: PooblaÅ¡ÄenÄeva skupina field_assigned_to_role: PooblaÅ¡ÄenÄeva vloga notice_not_authorized_archived_project: Projekt, do katerega poskuÅ¡ate dostopati, je bil arhiviran. label_principal_search: "PoiÅ¡Äi uporabnika ali skupino:" label_user_search: "PoiÅ¡Äi uporabnikia:" field_visible: Viden setting_emails_header: Glava e-poÅ¡te setting_commit_logtime_activity_id: Aktivnost zabeleženega Äasa text_time_logged_by_changeset: Uporabljeno v spremembi %{value}. setting_commit_logtime_enabled: OmogoÄi beleženje Äasa notice_gantt_chart_truncated: Graf je bil odrezan, ker je prekoraÄil najveÄje dovoljeno Å¡tevilo elementov, ki se jih lahko prikaže (%{max}) setting_gantt_items_limit: NajveÄje Å¡tevilo elementov prikazano na gantogramu field_warn_on_leaving_unsaved: Opozori me, kadar zapuÅ¡Äam stran z neshranjenim besedilom text_warn_on_leaving_unsaved: Trenutna stran vsebuje neshranjeno besedilo ki bo izgubljeno, Äe zapustite to stran. label_my_queries: Moje poizvedbe po meri text_journal_changed_no_detail: "%{label} posodobljen" label_news_comment_added: Komentar dodan novici button_expand_all: RazÅ¡iri vse button_collapse_all: SkrÄi vse label_additional_workflow_transitions_for_assignee: Dovoljeni dodatni prehodi kadar je uporabnik pooblaÅ¡Äenec label_additional_workflow_transitions_for_author: Dovoljeni dodatni prehodi kadar je uporabnik avtor label_bulk_edit_selected_time_entries: Skupinsko urejanje izbranih Äasovnih zapisov text_time_entries_destroy_confirmation: Ali ste prepriÄani, da želite izbristai izbran(e) Äasovn(i/e) zapis(e)? label_role_anonymous: Anonimni label_role_non_member: NeÄlan label_issue_note_added: Dodan zaznamek label_issue_status_updated: Status posodobljen label_issue_priority_updated: Prioriteta posodobljena label_issues_visibility_own: Zahtevek ustvarjen s strani uporabnika ali dodeljen uporabniku field_issues_visibility: Vidljivost zahtevkov label_issues_visibility_all: Vsi zahtevki permission_set_own_issues_private: Nastavi lastne zahtevke kot javne ali zasebne field_is_private: Zaseben permission_set_issues_private: Nastavi zahtevke kot javne ali zasebne label_issues_visibility_public: Vsi nezasebni zahtevki text_issues_destroy_descendants_confirmation: To bo izbrisalo tudi %{count} podnalog(o). field_commit_logs_encoding: Kodiranje sporoÄil ob predaji field_scm_path_encoding: Pot do kodiranja text_scm_path_encoding_note: "Privzeto: UTF-8" field_path_to_repository: Pot do shrambe field_root_directory: Korenska mapa field_cvs_module: Modul field_cvsroot: CVSROOT text_mercurial_repository_note: Lokalna shramba (npr. /hgrepo, c:\hgrepo) text_scm_command: Ukaz text_scm_command_version: Verzija label_git_report_last_commit: SporoÄi zadnje uveljavljanje datotek in map text_scm_config: Svoje SCM ukaze lahko nastavite v datoteki config/configuration.yml. Po urejanju prosimo ponovno zaženite aplikacijo. text_scm_command_not_available: SCM ukaz ni na voljo. Prosimo preverite nastavitve v upravljalskem podoknu. text_git_repository_note: Shramba je prazna in lokalna (npr. /gitrepo, c:\gitrepo) notice_issue_successful_create: Ustvarjen zahtevek %{id}. label_between: med setting_issue_group_assignment: Dovoli dodeljevanje zahtevka skupinam label_diff: diff description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 zahtevek one: 1 zahtevek other: "%{count} zahtevki" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: vsi label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: S podprojekti label_cross_project_tree: Z drevesom projekta label_cross_project_hierarchy: S projektno hierarhijo label_cross_project_system: Z vsemi projekti button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Skupaj notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: E-naslov setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Skupni porabljeni Äas notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API kljuÄ setting_lost_password: Spremeni geslo mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: IzbriÅ¡i povezavo error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sq.yml000066400000000000000000002265161500112024600172050ustar00rootroot00000000000000sq: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%m/%d/%Y" short: "%d %b" long: "%d %B, %Y" day_names: [E diel, E hënë, E martë, E mërkurë, E enjte, E premte, E shtunë] abbr_day_names: [Die, Hën, Mar, Mër, Enj, Pre, Sht] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, Janar, Shkurt, Mars, Prill, Maj, Qershor, Korrik, Gusht, Shtator, Tetor, Nëntor, Dhjetor] abbr_month_names: [~, Jan, Shk, Mar, Pri, Maj, Qer, Kor, Gus, Sht, Tet, Nën, Dhj] # Used in date_select and datime_select. order: - :vit - :muaj - :ditë time: formats: default: "%d/%m/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "gjysmë minute" less_than_x_seconds: one: "më pak se 1 sekondë" other: "më pak se %{count} sekonda" x_seconds: one: "1 sekondë" other: "%{count} sekonda" less_than_x_minutes: one: "më pak se një minutë" other: "më pak se %{count} minuta" x_minutes: one: "1 minutë" other: "%{count} minuta" about_x_hours: one: "rreth 1 orë" other: "rreth %{count} orë" x_hours: one: "1 orë" other: "%{count} orë" x_days: one: "1 ditë" other: "%{count} ditë" about_x_months: one: "rreth 1 muaj" other: "rreth %{count} muaj" x_months: one: "1 muaj" other: "%{count} muaj" about_x_years: one: "rreth 1 vit" other: "rreth %{count} vjet" over_x_years: one: "mbi 1 vit" other: "mbi %{count} vjet" almost_x_years: one: "thuajse 1 vit" other: "thuajse %{count} vjet" number: format: separator: "." delimiter: "," precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Bajt" other: "Bajte" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "dhe" skip_last_comma: false activerecord: errors: template: header: one: "Ruajtja e këtij %{model} u pengua nga 1 gabim" other: "Ruajtja e këtij %{model} u pengua nga %{count} gabime" messages: inclusion: "s’përfshihet te lista" exclusion: "është i rezervuar" invalid: "është i pavlefshëm" confirmation: "s’përputhet me ripohimin" accepted: "duhet pranuar" empty: "s’mund të jetë i zbrazët" blank: "s’mund të jetë hiç" too_long: "është shumë i gjatë (maksimumi është %{count} shenja)" too_short: "është shumë i shkurtër (minimumi është %{count} shenja)" wrong_length: "ka gjatësi të gabuar (duhet të jetë %{count} shenja)" taken: "është zënë tashmë" not_a_number: "s’është numër" not_a_date: "s’është datë e vlefshme" greater_than: "duhet të jetë më e madhe se %{count}" greater_than_or_equal_to: "duhet të jetë më e madhe ose baras me %{count}" equal_to: "duhet të jetë baras me %{count}" less_than: "duhet të jetë më e vogël se %{count}" less_than_or_equal_to: "duhet të jetë më e vogël ose baras me %{count}" odd: "duhet të jetë numër tek" even: "duhet të jetë numër çift" greater_than_start_date: "duhet të jetë më e madhe se data e fillimit" not_same_project: "s’bën pjesë te i njëjti projekt" circular_dependency: "Kjo marrëdhënie do të krijonte një varësi rrethore" cant_link_an_issue_with_a_descendant: "Një çështje s’mund të lidhet te një nga nënpunët e veta" earlier_than_minimum_start_date: "s’mund të bjerë më herët se sa %{date}, për shkak të çështjeve të mëparshme" not_a_regexp: "s’është shprehje e rregullt e vlefshme" open_issue_with_closed_parent: "Një çështje e hapur s’mund t’i bashkëngjitet një pune mëmë të mbyllur" must_contain_uppercase: "duhet të përmbajë shkronja të mëdha (A-Z)" must_contain_lowercase: "duhet të përmbajë shkronja të vogla (a-z)" must_contain_digits: "duhet të përmbajë shifra (0-9)" must_contain_special_chars: "duhet të përmbajë shenja speciale (!, $, %, …)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Ju lutemi, përzgjidhni general_text_No: 'Jo' general_text_Yes: 'Po' general_text_no: 'jo' general_text_yes: 'po' general_lang_name: 'Albanian (Shqip)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '7' notice_account_updated: Llogaria u përditësua me sukses. notice_account_invalid_credentials: Përdorues ose fjalëkalim i pavlefshëm notice_account_password_updated: Fjalëkalimi u përditësua me sukses. notice_account_wrong_password: Fjalëkalim i gabuar notice_account_register_done: Llogaria u krijua me sukses. Te %{email} u dërgua një email që përmban udhëzimet si të aktivizohet llogaria juaj. notice_account_not_activated_yet: S’e keni aktivizuar ende llogarinë tuaj. Nëse doni të merrni një email të ri aktivizimi, ju lutemi, klikoni mbi këtë lidhje. notice_account_locked: Llogaria juaj është e kyçur. notice_can_t_change_password: Kjo llogari përdor një burim të jashtëm mirëfilltësimesh. E pamundur të ndryshohet fjalëkalimi. notice_account_lost_email_sent: Ju është dërguar një email me udhëzime si të zgjidhet një fjalëkalim i ri. notice_account_activated: Llogaria juaj u aktivizua. Tani mund të bëni hyrjen në të. notice_successful_create: Krijim i suksesshëm. notice_successful_update: Përditësim i suksesshëm. notice_successful_delete: Fshirje e suksesshme. notice_successful_connection: Lidhje e suksesshme. notice_file_not_found: Faqja ku po rrekeni të hyni s’ekziston ose është hequr. notice_locking_conflict: Të dhënat janë përditësuar nga një tjetër përdorues. notice_not_authorized: S’jeni i autorizuar të hyni në këtë faqe. notice_not_authorized_archived_project: Projekti ku po rrekeni të hyni është arkivuar. notice_email_sent: "U dërgua një email te %{value}" notice_email_error: "Ndodhi një gabim teksa dërgohej email (%{value})" notice_feeds_access_key_reseted: Kyçi juaj për përdorim të Atom-it u ricaktua. notice_api_access_key_reseted: Kyçi juaj për përdorim të API-t u ricaktua. notice_failed_to_save_issues: "S’u arrit të ruhej %{count} çështje në %{total} të përzgjedhura: %{ids}." notice_failed_to_save_time_entries: "S’u arrit të ruhej %{count} zë(ra) kohe në %{total} të përzgjedhur: %{ids}." notice_failed_to_save_members: "S’u arrit të ruhej anëtar(ë): %{errors}." notice_account_pending: "Llogaria juaj u krijua dhe tani po pret miratim në përgjegjësi." notice_default_data_loaded: Formësimi parazgjedhje u ngarkua me sukses. notice_unable_delete_version: S’arrihet të fshihet version. notice_unable_delete_time_entry: S’arrihet të fshihet që regjistrimi kohor. notice_issue_done_ratios_updated: U përditësuan përpjesëtime përfundimi çështjesh. notice_gantt_chart_truncated: "Grafiku u cungua, ngaqë tejkalon numrin maksimum të objekteve që mund të shfaqen (%{max})" notice_issue_successful_create: "Çështja %{id} u krijua." notice_issue_update_conflict: "Çështja është përditësuar nga një tjetër përdorues teksa e përpunonit." notice_account_deleted: "Llogaria juaj është fshirë përgjithmonë." notice_user_successful_create: "Përdoruesi %{id} u krijua." notice_new_password_must_be_different: Fjalëkalimi i ri duhet të jetë i ndryshëm nga fjalëkalimi i tanishëm notice_import_finished: "U importuan %{count} objekte" notice_import_finished_with_errors: "S’u importuan dot %{count} nga %{total} objekte gjithsej" notice_issue_not_closable_by_open_tasks: "Kjo çështje s’mund të mbyllet, ngaqë ka të paktën një nënpunë të hapur." notice_issue_not_closable_by_blocking_issue: "Kjo çështje s’mund të mbyllet, ngaqë është e bllokuar nga të paktën një çështje e hapur." notice_issue_not_reopenable_by_closed_parent_issue: "Kjo çështje s’mund të rihapet, ngaqë çështja mëmë e saj është e mbyllur." error_can_t_load_default_data: "S’u ngarkua dot formësimi parazgjedhje: %{value}" error_scm_not_found: "Zëri ose rishikimi s’u gjet te depoja." error_scm_command_failed: "Ndodhi një gabim teksa provohej të hyhej te depoja: %{value}" error_scm_annotate: "Zëri s’ekziston ose s’mund t’i vihet shënim." error_scm_annotate_big_text_file: "Zërit s’mund t’i vihet shënim, ngaqë tejkalon madhësi maksimum kartelash tekst." error_issue_not_found_in_project: 'Çështja s’u gjet ose s’i përket këtij projekti' error_no_tracker_in_project: 'S’ka ndjekës përshoqëruar këtij projekti. Ju lutemi, kontrolloni rregullimet e Projektit.' error_no_default_issue_status: 'S’është përkufizuar gjendje parazgjedhje çështjesh. Ju lutemi, kontrolloni formësimin tuaj (Shkoni te "Administrim -> Gjendje çështjesh").' error_can_not_delete_custom_field: S’arrihet të fshihet fushë vetjake error_can_not_delete_tracker_html: "Ky ndjekës përmban çështje dhe s’mund të fshihet.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Ky rol është në përdorim dhe s’mund të fshihet." error_can_not_reopen_issue_on_closed_version: 'S’mund të rihapet një çështje caktuar një versioni të mbyllur' error_can_not_archive_project: Ky projekt s’mund të arkivohet error_issue_done_ratios_not_updated: "S’u përditësuan përpjesëtime përfundimesh çështjesh." error_workflow_copy_source: 'Ju lutemi, përzgjidhni një ndjekës ose rol burim' error_workflow_copy_target: 'Ju lutemi, përzgjidhni ndjekës dhe rol(e) objektiv' error_unable_delete_issue_status: 'S’arrihet të fshihet gjendje çështjeje (%{value})' error_unable_to_connect: "S’arrihet të bëhet lidhja (%{value})" error_attachments_too_many: "Kjo kartelë s’mund të ngarkohet, ngaqë tejkalon numrin maksimum të kartelave që mund të bashkëngjiten njëherësh (%{max_number_of_files})" error_attachment_too_big: "Kjo kartelë s’mund të ngarkohet, ngaqë tejkalon maksimumin e lejuar për madhësi kartelash (%{max_size})" error_bulk_download_size_too_big: "Këto bashkëngjitje s’mund të shkarkohen në masë, ngaqë madhësia gjithsej e kartelave tejkalon madhësinë maksimum të lejuar (%{max_size})" error_session_expired: "Sesioni juaj ka skaduar. Ju lutemi, ribëni hyrjen." error_token_expired: "Kjo lidhje rimarrjeje fjalëkalimi ka skaduar, ju lutemi, riprovoni." warning_attachments_not_saved: "S’u ruajt dot %{count} kartelë(a)." error_password_expired: "Fjalëkalimi juaj ka skaduar ose përgjegjësi ju kërkon ta ndryshoni." error_invalid_file_encoding: "Kartela s’është një kartelë e vlefshme e koduar si %{encoding}" error_invalid_csv_file_or_settings: "Kartela s’është kartelë CSV ose nuk përputhet me rregullimet më poshtë" error_can_not_read_import_file: "Ndodhi një gabim teksa lexohej kartela për importim" error_attachment_extension_not_allowed: "Zgjatimi i bashkëngjitjes %{extension} nuk lejohet" error_ldap_bind_credentials: "Llogari/Fjalëkalim LDAP i pavlefshëm" error_no_tracker_allowed_for_new_issue_in_project: "Projekti s’ka ndonjë ndjekës për të cilin mund të krijoni një çështje" error_no_projects_with_tracker_allowed_for_new_issue: "S’ka projekte me ndjekës për të cilët mund të krijoni një çështje" error_move_of_child_not_possible: "Nënpuna %{child} s’u shpu dot te projekti i ri: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "Koha e harxhuar nuk mund t’i ricaktohet një çështjeje që është gati për t’u fshirë" warning_fields_cleared_on_bulk_edit: "Ndryshimet do të sjellin fshirjen e vetvetishme të vlerave prej një ose më shumë fushash te objektet e përzgjedhur" error_exceeds_maximum_hours_per_day: "S’mund të regjistrohen më shumë se %{max_hours} orë në të njëjtën ditë (janë regjistruar tashmë %{logged_hours} orë)" error_can_not_delete_auth_source: "Kjo mënyrë mirëfilltësimesh është në përdorim dhe s’mund të fshihet." error_spent_on_future_date: "S’mund të regjistrohet kohë në një datë të ardhshme" error_not_allowed_to_log_time_for_other_users: "S’keni leje të regjistroni kohë për përdorues të tjerë" error_can_not_execute_macro_html: "Gabim në ekzekutimin e makros %{name} (%{error})" error_macro_does_not_accept_block: "Kjo makro nuk pranon bllok teksti" error_childpages_macro_no_argument: "Pa argument, kjo makro mund të thirret vetëm që prej faqesh wiki" error_circular_inclusion: "U pikas përfshirje rrethore" error_page_not_found: "S’u gjet faqe" error_filename_required: "Emri i kartelës është i domosdoshëm" error_invalid_size_parameter: "Parametër i pavlefshëm madhësie" error_attachment_not_found: "S’u gjet bashkëngjitja %{name}" mail_subject_lost_password: "Fjalëkalimi juaj %{value}" mail_body_lost_password: 'Që të ndryshoni fjalëkalimin, klikoni mbi lidhjen vijuese:' mail_body_lost_password_validity: 'Ju lutemi, mbani parasysh se fjalëkalimin mundeni ta ndryshoni vetëm një herë duke përdorur këtë lidhje.' mail_subject_register: "Aktivizim i llogarisë tuaj %{value}" mail_body_register: 'Që të aktivizoni llogarinë tuaj, klikoni mbi lidhjen vijuese:' mail_body_account_information_external: "Që të hyni, mund të përdorni llogarinë tuaj %{value}." mail_body_account_information: Të dhëna të llogarisë tuaj mail_subject_account_activation_request: "Kërkesë aktivizimi llogarie %{value}" mail_body_account_activation_request: "U regjistrua një përdorues i ri (%{value}). Llogaria po pret miratimin tuaj:" mail_subject_reminder: "%{count} çështje që skadojnë në %{days} ditët e ardhshme" mail_body_reminder: "%{count} çështje që ju janë caktuar juve skadojnë në %{days} ditët e ardhshme:" mail_subject_wiki_content_added: "U shtua faqja wiki '%{id}'" mail_body_wiki_content_added: "Faqja wiki '%{id}' është shtuar nga %{author}." mail_subject_wiki_content_updated: "Faqja wiki '%{id}' është përditësuar" mail_body_wiki_content_updated: "Faqja wiki '%{id}' është përditësuar nga %{author}." mail_subject_security_notification: "Njoftim sigurie" mail_body_security_notification_change: "%{field} u ndryshua." mail_body_security_notification_change_to: "%{field} u ndryshua në %{value}." mail_body_security_notification_add: "U shtua %{field} %{value}." mail_body_security_notification_remove: "U hoq %{field} %{value}." mail_body_security_notification_notify_enabled: "Adresa email %{value} tanimë merr njoftime." mail_body_security_notification_notify_disabled: "Adresa email %{value} s’merr më njoftime." mail_body_settings_updated: "U ndryshuan rregullimet vijuese:" mail_body_password_updated: "Fjalëkalimi juaj u ndryshua." field_name: Emër field_description: Përshkrim field_summary: Përmbledhje field_is_required: E domosdoshme field_firstname: Emër field_lastname: Mbiemër field_mail: Email field_address: Email field_filename: Kartelë field_filesize: Madhësi field_downloads: Shkarkime field_author: Autor field_created_on: Krijuar më field_updated_on: Përditësuar më field_closed_on: Mbyllur më field_field_format: Format field_is_for_all: Për krejt projektet field_possible_values: Vlera të mundshme field_regexp: Shprehje e rregullt field_min_length: Gjatësi minimum field_max_length: Gjatësi maksimum field_value: Vlerë field_category: Kategori field_title: Titull field_project: Projekt field_issue: Çështje field_status: Gjendje field_notes: Shënime field_is_closed: Çështja është mbyllur field_is_default: Vlerë parazgjedhje field_tracker: Ndjekës field_subject: Subjekt field_due_date: Datë skadimi field_assigned_to: Caktuar field_priority: Përparësi field_fixed_version: Version i synuar field_user: Përdorues field_principal: User or Group field_role: Rol field_homepage: Faqe hyrëse field_is_public: Publike field_parent: Nënprojekt i field_is_in_roadmap: Çështje të shfaqura në plan field_login: Hyrje field_mail_notification: Njoftim me email field_admin: Administrator field_last_login_on: Lidhja e fundit më field_passwd_changed_on: Fjalëkalimi u ndryshua së fundi më field_language: Gjuhë field_effective_date: Datë skadimi field_password: Fjalëkalim field_new_password: Fjalëkalim i ri field_password_confirmation: Ripohim field_twofa_scheme: Skemë mirëfilltësimi dyfaktorësh field_version: Version field_type: Lloj field_host: Strehë field_port: Portë field_account: Llogari field_base_dn: Base DN field_attr_login: Atribut hyrjeje field_attr_firstname: Atribut emri field_attr_lastname: Atribut mbiemri field_attr_mail: Atribut email-i field_onthefly: Krijim përdoruesi fluturimthi field_start_date: Datë fillimi field_done_ratio: "% Plotësimi" field_auth_source: Mënyrë mirëfilltësimi field_hide_mail: Fshihe adresën time email field_comments: Koment field_url: URL field_start_page: Faqe fillimi field_subproject: Nënprojekt field_hours: Orë field_activity: Veprimtari field_spent_on: Datë field_identifier: Identifikues field_is_filter: E përdorur si filtër field_issue_to: Çështje e lidhur field_delay: Vonesë field_assignable: Çështjet mund t’u caktohen përdoruesve me këtë rol field_redirect_existing_links: Ridrejto lidhje ekzistuese field_estimated_hours: Kohë përafërsisht field_column_names: Shtylla field_time_entries: Kohë regjistrimi field_time_zone: Zonë kohore field_searchable: E kërkueshme field_default_value: Vlerë parazgjedhje field_comments_sorting: Shfaq komente field_parent_title: Faqe mëmë field_editable: E përpunueshme field_watcher: Vëzhgues field_content: lëndë field_group_by: Grupoji përfundimet sipas field_sharing: Ndarje me të tjerë field_parent_issue: Punë mëmë field_parent_issue_subject: Subjekt pune mëmë field_member_of_group: "Grup i të caktuarit" field_assigned_to_role: "Rol i të caktuarit" field_text: Fushë tekstesh field_visible: E dukshme field_warn_on_leaving_unsaved: "Sinjalizomë kur largohem nga një faqe me tekst të paruajtur" field_issues_visibility: Dukshmëri çështjesh field_is_private: Private field_commit_logs_encoding: Kodim mesazhesh depozitimi field_scm_path_encoding: Kodim shtigjesh field_path_to_repository: Shteg për te depoja field_root_directory: Drejtori rrënjë field_cvsroot: CVSROOT field_cvs_module: Modul field_repository_is_default: Depoja kryesore field_multiple: Vlera të shumta field_auth_source_ldap_filter: Filtër LDAP field_core_fields: Fusha standarde field_timeout: "Mbarim kohe (në sekonda)" field_board_parent: Forum mëmë field_private_notes: Shënime private field_inherit_members: Trashëgo anëtarë field_generate_password: Prodho fjalëkalim field_must_change_passwd: Duhet të ndryshojë fjalëkalim gjatë hyrjes pasuese field_default_status: Gjendje parazgjedhje field_users_visibility: Dukshmëri përdoruesish field_time_entries_visibility: Dukshmëri regjistrash kohe field_total_estimated_hours: Kohë gjithsej përafërsisht field_default_version: Version parazgjedhje field_remote_ip: Adresë IP field_textarea_font: Shkronja të përdorura për fusha tekstesh field_updated_by: Përditësuar nga field_last_updated_by: Përditësimi i fundit nga field_full_width_layout: Skemë me gjerësi të plotë field_digest: Checksum field_default_assigned_to: I caktuari parazgjedhje field_recently_used_projects: Numër projektesh të përdorur së fundi, te kuadrati i hedhjes në to field_history_default_tab: Skedë parazgjedhjeje historiku çështjeje field_unique_id: ID unike field_toolbar_language_options: Gjuhë paneli theksimi kodi setting_app_title: Titull aplikacioni setting_welcome_text: Tekst mirëseardhjeje setting_default_language: Gjuhë parazgjedhje setting_login_required: Lypset mirëfilltësim setting_self_registration: Vetëregjistrim setting_show_custom_fields_on_registration: Shfaq fusha vetjake gjatë regjistrimi setting_attachment_max_size: Madhësi maksimum bashkëngjitjesh setting_bulk_download_max_size: Madhësi gjithsej maksimum për shkarkime në masë setting_issues_export_limit: Kufi eksportimi çështjesh setting_mail_from: Adresë email dërgimi setting_plain_text_mail: Postë si tekst i thjeshtë (jo HTML) setting_host_name: Emër dhe shteg strehe setting_text_formatting: Formatim tekstesh setting_wiki_compression: Ngjeshje historiku Wiki setting_feeds_limit: Numër maksimum zërash te prurje Atom setting_default_projects_public: Si parazgjedhje, projektet e rinj janë publikë setting_autofetch_changesets: Silli parashtrimet në mënyrë të automatizuar setting_sys_api_enabled: Aktivizoni WS për administrim depoje setting_commit_ref_keywords: Fjalëkyçe referencimi setting_commit_fix_keywords: Fjalëkyçe ndreqjeje setting_autologin: Vetëhyrje setting_date_format: Format datash setting_time_format: Format kohësh setting_timespan_format: Format shtrirjeje kohore setting_cross_project_issue_relations: Lejo marrëdhënie çështjesh nga një projekt në tjetrin setting_cross_project_subtasks: Lejo nënpunë nga një projekt në tjetrin setting_issue_list_default_columns: Parazgjedhje liste çështjesh setting_repositories_encodings: Kodime bashkëngjitjesh dhe deposh setting_emails_header: Krye email-esh setting_emails_footer: Fund email-esh setting_protocol: Protokoll setting_per_page_options: Mundësi rreth objektesh për faqe setting_user_format: Format shfaqjesh përdoruesish setting_activity_days_default: Ditë të shfaqura në veprimtari projekti setting_display_subprojects_issues: Shfaq, si parazgjedhje, te projekti kryesor çështje nënprojektesh setting_enabled_scm: SCM e aktivizuar setting_mail_handler_body_delimiters: "Cungoji email-et pas njërit prej këtyre rreshtave" setting_mail_handler_enable_regex: "Aktivizo shprehje të rregullta" setting_mail_handler_api_enabled: Aktivizo WS për email-e ardhës setting_mail_handler_api_key: Kyç API WS për email-e ardhës setting_mail_handler_preferred_body_part: Pjesë e parapëlqyer për email-e shumëpjesësh (HTML) setting_sys_api_key: Kyç API WS administrimi deposh setting_sequential_project_identifiers: Prodho identifikues sekuencialë projekti setting_gravatar_enabled: Përdor ikona Gravatar përdoruesish setting_gravatar_default: Figurë Gravatar parazgjedhje setting_diff_max_lines_displayed: Numër maksimum rreshtash të shfaqur për diff-e setting_file_max_size_displayed: Madhësi maksimum kartelash tekst të shfaqura brendazi setting_repository_log_display_limit: Numër maksimum rishikimesh të shfaqur në regjistër kartele setting_password_max_age: Kërko doemos ndryshim fjalëkalimi pas setting_password_min_length: Gjatësi minimum fjalëkalimi setting_password_required_char_classes : Klasa të domosdoshme shenjash për fjalëkalime setting_lost_password: Lejo ricaktim fjalëkalimi me email setting_new_project_user_role_id: Rol dhënë një përdoruesi jo përgjegjës që krijon një projekt setting_default_projects_modules: Module të aktivizuar si parazgjedhje për projekte të reja setting_issue_done_ratio: Përqindjet e përfundimit të çështjeve njehsoji setting_issue_done_ratio_issue_field: Duke përdorur fushën e çështjes setting_issue_done_ratio_issue_status: Duke përdorur gjendjen e çështjes setting_start_of_week: Kalendarët filloji më setting_rest_api_enabled: Aktivizo shërbim web REST setting_cache_formatted_text: Ruaj në fshehtinë tekst të formatuar setting_default_notification_option: Mundësi parazgjedhje njoftimesh setting_commit_logtime_enabled: Aktivizim regjistrim kohësh setting_commit_logtime_activity_id: Veprimtari për kohën e regjistruar setting_gantt_items_limit: Numër maksimum elementësh të shfaqur te grafiku gantt setting_gantt_months_limit: Numër maksimum muajsh të shfaqur te grafiku gantt setting_issue_group_assignment: Lejo caktim çështjesh grupeve setting_default_issue_start_date_to_creation_date: Për çështje të reja, si datë fillimi përdor datën e tanishme setting_commit_cross_project_ref: Lejo që të referencohen dhe ndreqen çështje të krejt projekteve të tjera setting_unsubscribe: Lejoju përdoruesve të fshijnë llogaritë e tyre setting_session_lifetime: Jetëgjatësi maksimum sesioni setting_session_timeout: Mbarim kohe për mosveprimtari sesioni setting_thumbnails_enabled: Shfaq miniatura bashkëngjitjesh setting_thumbnails_size: Madhësi miniaturash (në piksel) setting_non_working_week_days: Ditë kur s’punohet setting_jsonp_enabled: Aktivizo mbulim JSONP-je setting_default_projects_tracker_ids: Ndjekës parazgjedhje për projekte të reja setting_mail_handler_excluded_filenames: Përjashto bashkëngjitje sipas emrash setting_force_default_language_for_anonymous: Detyro përdorimin e gjuhës parazgjedhje për përdorues anonimë setting_force_default_language_for_loggedin: Detyro përdorimin e gjuhës parazgjedhje për përdorues që kanë bërë hyrjen setting_link_copied_issue: Lidh çështje gjatë kopjimesh setting_max_additional_emails: Numër maksimum adresash email shtesë setting_email_domains_allowed: Përkatësi email të lejuara setting_email_domains_denied: Përkatësi email të palejuara setting_search_results_per_page: Përfundime kërkimi për faqe setting_attachment_extensions_allowed: Zgjatime të lejuara setting_attachment_extensions_denied: Zgjatime të palejuara setting_new_item_menu_tab: Skedë menuje projekti për krijim objektesh të rinj setting_commit_logs_formatting: Apliko formatim teksti mbi mesazhe depozitimi setting_timelog_required_fields: Fusha të domosdoshme për regjistra kohësh setting_close_duplicate_issues: Çështjet e përsëdytura mbylli vetvetiu setting_time_entry_list_defaults: Parazgjedhje liste regjistri kohësh setting_timelog_accept_0_hours: prano regjistra kohësh me 0 orë setting_timelog_max_hours_per_day: Maksimum orësh që mund të regjistrohen për ditë dhe për përdorues setting_timelog_accept_future_dates: Prano regjistra kohësh në data të ardhshme setting_show_status_changes_in_mail_subject: Shfaq ndryshime gjendjesh te subjekt njoftimesh me email për çështjen setting_project_list_defaults: Parazgjedhje liste projektesh setting_twofa: Mirëfilltësim dyfaktorësh permission_add_project: Të krijojë projekt permission_add_subprojects: Të krijojë nënprojekte permission_edit_project: Të përpunojë projekt permission_close_project: Të mbyllë / rihapë projektin permission_delete_project: Të fshijë projektin permission_select_project_modules: Të përzgjedhë module projekti permission_manage_members: Të administrojë anëtarë permission_manage_project_activities: Të administrojë veprimtari projekti permission_manage_versions: Të administrojë versione permission_manage_categories: Të administrojë kategorie çështjeje permission_view_issues: Të shohë Çështje permission_add_issues: Të shtojë çështje permission_edit_issues: Të përpunojë çështje permission_edit_own_issues: Të përpunojë çështjet e veta permission_copy_issues: Të kopjojë çështje permission_manage_issue_relations: Të administrojë marrëdhënie çështjesh permission_set_issues_private: Të caktojë çështje si publike ose private permission_set_own_issues_private: Të caktojë çështje të vetat si publike ose private permission_add_issue_notes: Të shtojë shënime permission_edit_issue_notes: Të përpunojë shënime permission_edit_own_issue_notes: Të përpunojë shënimet e veta permission_view_private_notes: Të shohë shënime private permission_set_notes_private: T’i kalojë shënimet si private permission_delete_issues: Të fshijë çështje permission_manage_public_queries: Të administrojë kërkesa publike permission_save_queries: Të ruajë kërkesa permission_view_gantt: Të shohë grafik gantt permission_view_calendar: Të shohë kalendar permission_view_issue_watchers: Të shohë listë vëzhguesish permission_add_issue_watchers: Të shtojë vëzhgues permission_delete_issue_watchers: Të fshijë vëzhgues permission_log_time: Të regjistrojë kohë të shpenzuar permission_view_time_entries: Të shohë kohë të shpenzuar permission_edit_time_entries: Të përpunojë regjistra kohësh permission_edit_own_time_entries: Të përpunojë regjistra kohe të vetët permission_view_news: Të shohë lajme permission_manage_news: Të administrojë lajme permission_comment_news: Të komentojë lajme permission_view_documents: Të shohë dokumente permission_add_documents: Të shtojë dokumente permission_edit_documents: Të përpunojë dokumente permission_delete_documents: Të fshijë dokumente permission_manage_files: Të administrojë kartela permission_view_files: Të shohë kartela permission_manage_wiki: Të administrojë wiki permission_rename_wiki_pages: Të riemërtojë faqe wiki permission_delete_wiki_pages: Të fshijë faqe wiki permission_view_wiki_pages: Të shohë wiki-n permission_view_wiki_edits: Të shohë historik wiki permission_edit_wiki_pages: Të përpunojë faqe wiki permission_delete_wiki_pages_attachments: Të fshijë bashkëngjitje permission_protect_wiki_pages: Të mbrojë faqe wiki permission_manage_repository: Të administrojë depo permission_browse_repository: Të shfletojë depon permission_view_changesets: Të shohë grupe ndryshimesh permission_commit_access: Leje depozitimi permission_manage_boards: Të administrojë forume permission_view_messages: Të shohë mesazhe permission_add_messages: Të postojë mesazhe permission_edit_messages: Të përpunojë mesazhe permission_edit_own_messages: Të përpunojë mesazhe të vetët permission_delete_messages: Të fshijë mesazhe permission_delete_own_messages: Të fshijë mesazhe të vetët permission_export_wiki_pages: Të eksportojë faqe wiki permission_manage_subtasks: Të administrojë nënpunë permission_manage_related_issues: Të administrojë çështje të afërta permission_import_issues: Të importojë çështje permission_log_time_for_other_users: Të regjistrojë kohë të shpenzuar për përdorues të tjerë project_module_issue_tracking: Ndjekje çështjeje project_module_time_tracking: Ndjekje kohe project_module_news: Lajme project_module_documents: Dokumente project_module_files: Kartela project_module_wiki: Wiki project_module_repository: Depo project_module_boards: Forume project_module_calendar: Kalendar project_module_gantt: Gantt label_user: Përdorues label_user_plural: Përdorues label_user_new: Përdorues i ri label_user_anonymous: Anonim label_project: Projekt label_project_new: Projekt i ri label_project_plural: Projekte label_x_projects: zero: pa projekte one: 1 projekt other: "%{count} projekte" label_project_all: Krejt Projektet label_project_latest: Projektet Më të Reja label_issue: Çështje label_issue_new: Çështje e re label_issue_plural: Çështje label_issue_view_all: Shihni krejt çështjet label_issues_by: "Çështje nga %{value}" label_issue_added: U shtua çështje label_issue_updated: U përditësua çështje label_issue_note_added: U shtua shënim label_issue_status_updated: U përditësua gjendja label_issue_assigned_to_updated: U përditësua i caktuari label_issue_priority_updated: U përditësua përparësia label_issue_fixed_version_updated: U përditësua versioni i synuar label_document: Dokument label_document_new: Dokument i ri label_document_plural: Dokumente label_document_added: Dokumenti u shtua label_role: Rol label_role_plural: Role label_role_new: Rol i ri label_role_and_permissions: Role dhe leje label_role_anonymous: Anonim label_role_non_member: Jo anëtar label_member: Anëtar label_member_new: Anëtar i ri label_member_plural: Anëtarë label_tracker: Ndjekës label_tracker_plural: Ndjekës label_tracker_all: Krejt ndjekësit label_tracker_new: Ndjekës i ri label_workflow: Rrjedhë pune label_issue_status: Gjendje çështjeje label_issue_status_plural: Gjendje çështjeje label_issue_status_new: Gjendje e re label_issue_category: Kategori çështjeje label_issue_category_plural: Kategori çështjeje label_issue_category_new: Kategori e re label_custom_field: Fushë vetjake label_custom_field_plural: Fusha vetjake label_custom_field_new: Fushë e re vetjake label_enumerations: Numërime label_enumeration_new: Vlerë e re label_information: E dhënë label_information_plural: Të dhëna label_register: Regjistrohuni label_password_lost: Humbi fjalëkalimi label_password_required: Që të vazhdohet, ripohoni fjalëkalimin tuaj label_home: Kreu label_my_page: Faqja ime label_my_account: Llogaria ime label_my_projects: Projektet e mi label_administration: Administrim label_login: Hyni label_logout: Dilni label_help: Ndihmë label_reported_issues: Çështje të raportuara label_assigned_issues: Çështje të caktuara label_assigned_to_me_issues: Çështje të caktuara mua label_updated_issues: Çështje të përditësuara label_registered_on: Regjistruar më label_activity: Veprimtari label_user_activity: "Veprimtari për %{value}" label_new: E re label_logged_as: I futur si label_environment: Mjedis label_authentication: Mirëfilltësim label_auth_source: Mënyrë mirëfilltësimi label_auth_source_new: Mënyrë e re mirëfilltësimi label_auth_source_plural: Mënyra mirëfilltësimi label_subproject_plural: Nënprojekte label_subproject_new: Nënprojekt i ri label_and_its_subprojects: "%{value} dhe nënprojektet e tij" label_min_max_length: Gjatësi min - maks label_list: Listë label_date: Datë label_integer: Numër i plotë label_float: Float label_boolean: Buleane label_string: Tekst label_text: Tekst i gjatë label_attribute: Atribut label_attribute_plural: Atribute label_no_data: S’ka të dhëna për shfaqje label_no_preview: S’ka paraparje label_no_preview_alternative_html: S’ka paraparje. Në vend të kësaj, %{link} kartelën. label_no_preview_download: Shkarkoje label_change_status: Ndryshojini gjendjen label_history: Historik label_attachment: Kartelë label_attachment_new: Kartelë e re label_attachment_delete: Fshi kartelë label_attachment_plural: Kartela label_file_added: U shtua kartelë label_report: Raport label_report_plural: Raporte label_news: Lajme label_news_new: Shtoni lajme label_news_plural: Lajme label_news_latest: Lajmet e fundit label_news_view_all: Shihni krejt lajmet label_news_added: U shtuan lajme label_news_comment_added: U shtua koment te lajmet label_settings: Rregullime label_overview: Përmbledhje label_version: Version label_version_new: Version i ri label_version_plural: Versione label_version_and_files: Versione (%{count}) dhe Kartela label_close_versions: Mbylli versionet e plotësuar label_confirmation: Ripohim label_export_to: 'I gatshëm edhe në:' label_read: Lexoni… label_public_projects: Projekte publike label_open_issues: e hapur label_open_issues_plural: të hapura label_closed_issues: e mbyllur label_closed_issues_plural: të mbyllura label_x_open_issues_abbr: zero: 0 e hapur one: 1 e hapur other: "%{count} të hapura" label_x_closed_issues_abbr: zero: 0 e mbyllur one: 1 e mbyllur other: "%{count} të mbyllura" label_x_issues: zero: 0 çështje one: 1 çështje other: "%{count} çështje" label_total: Gjithsej label_total_plural: Gjithsej label_total_time: Kohë gjithsej label_permissions: Leje label_current_status: Gjendja e tanishme label_new_statuses_allowed: Lejohen gjendje të reja label_all: krejt label_any: cilido label_none: asnjë label_nobody: askush label_next: Pasuesja label_previous: E mëparshmja label_used_by: Përdorur nga label_details: Hollësi label_add_note: Shtoni një shënim label_calendar: Kalendar label_months_from: muaj nga label_gantt: Gantt label_internal: I brendshëm label_last_changes: "%{count} ndryshimet e fundit" label_change_view_all: Shihni krejt ndryshimet label_comment: Koment label_comment_plural: Komente label_x_comments: zero: pa komente one: 1 koment other: "%{count} komente" label_comment_add: Shtoni një koment label_comment_added: Komenti u shtua label_comment_delete: Fshiji komentet label_query: Kërkesë vetjake label_query_plural: Kërkesa vetjake label_query_new: Kërkesë e re label_my_queries: Kërkesat e mia vetjake label_filter_add: Shtoni filtër label_filter_plural: Filtra label_equals: është label_not_equals: s’është label_in_less_than: në më pak se label_in_more_than: në më shumë se label_in_the_next_days: në ditët e ardhshme label_in_the_past_days: në ditët e kaluara label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: mes label_in: në label_today: sot label_yesterday: dje label_tomorrow: nesër label_this_week: këtë javë label_last_week: javën e shkuar label_next_week: javën e ardhshme label_last_n_weeks: "%{count} javët e fundit" label_last_n_days: "%{count} ditët e fundit" label_this_month: këtë muaj label_last_month: muajin e fundit label_next_month: muajin e ardhshëm label_this_year: këtë vit label_date_range: Interval datash label_less_than_ago: më pak se ditë më parë label_more_than_ago: më shumë se ditë më parë label_ago: ditë më parë label_contains: përmban label_not_contains: s’përmban label_starts_with: fillon me label_ends_with: përfundon me label_any_issues_in_project: çfarëdo çështjesh në projekt label_any_issues_not_in_project: çfarëdo çështjesh jo në projekt label_no_issues_in_project: pa çështje në projekt label_any_open_issues: çfarëdo çështjesh të hapura label_no_open_issues: pa çështje të hapura label_day_plural: ditë label_repository: Depo label_repository_new: Depo e re label_repository_plural: Depo label_branch: Degë label_tag: Etiketë label_revision: Rishikim label_revision_plural: Rishikime label_revision_id: "Rishikim %{value}" label_associated_revisions: Versione përshoqëruar label_added: u shtua label_modified: u ndryshua label_copied: u kopjua label_renamed: u riemërtua label_deleted: u fshi label_latest_revision: Rishikimi më i ri label_latest_revision_plural: Rishikimet më të rinj label_view_revisions: Shihni rishikime label_view_all_revisions: Shihni krejt rishikimet label_x_revisions: "%{count} rishikime" label_max_size: Madhësi maksimum label_roadmap: Plan label_roadmap_due_in: "Skadon mën %{value}" label_roadmap_overdue: "%{value} vonë" label_roadmap_no_issues: S’ka çështje për këtë version label_search: Kërkoni label_result_plural: Përfundime label_all_words: Krejt fjalët label_wiki: Wiki label_wiki_edit: Përpunim Wiki label_wiki_edit_plural: Përpunime Wiki label_wiki_page: Faqe Wiki label_wiki_page_plural: Faqe Wiki label_wiki_page_new: Faqe Wiki e re label_index_by_title: Tregues sipas titujsh label_index_by_date: Tregues sipas datash label_current_version: Versioni i tanishëm label_preview: Paraparje label_feed_plural: Prurje label_changes_details: Hollësi të krejt ndryshimeve label_issue_tracking: Ndjekje çështjeje label_spent_time: Kohë e harxhuar label_total_spent_time: Kohë e harxhuar gjithsej label_f_hour: "%{value} orë" label_f_hour_plural: "%{value} orë" label_f_hour_short: "%{value} h" label_time_tracking: Ndjekje kohe label_change_plural: Ndryshime label_statistics: Statistika label_commits_per_month: Depozitime për muaj label_commits_per_author: Depozitime për autor label_diff: diff label_view_diff: Shihni dallimet label_diff_inline: brendazi label_diff_side_by_side: krah për krah label_options: Mundësi label_copy_workflow_from: Kopjoje rrjedhën e punës prej label_permissions_report: Raport lejesh label_watched_issues: Çështje të vëzhguara label_related_issues: Çështje të afërta label_applied_status: Gjendje e aplikuar label_loading: Po ngarkohet… label_relation_new: Marrëdhënie e re label_relation_delete: Fshije marrëdhënien label_relates_to: E lidhur me label_delete_link_to_subtask: Fshije lidhjen te nënpunë label_duplicates: Është përsëdytje e label_duplicated_by: Ka përsëdytje label_blocks: Bllokon label_blocked_by: Bllokuar nga label_precedes: I paraprin label_follows: Ndjek label_copied_to: Kopjuar te label_copied_from: Kopjuar nga label_stay_logged_in: Qëndro i futur label_disabled: e çaktivizuar label_optional: opsionale label_show_completed_versions: Shfaq versione të plotësuar label_me: unë label_board: Forum label_board_new: Forum i ri label_board_plural: Forume label_board_locked: I kyçur label_board_sticky: Ngjitës label_topic_plural: Subjekte label_message_plural: Mesazhe label_message_last: Mesazhi i fundit label_message_new: Mesazh i ri label_message_posted: Mesazhi u shtua label_reply_plural: Përgjigje label_send_information: Dërgoji përdoruesit të dhëna llogarie label_year: Vit label_month: Muaj label_week: Javë label_date_from: Nga label_date_to: Për label_language_based: Bazuar në gjuhën e përdoruesit label_sort_by: "Renditi sipas %{value}" label_send_test_email: Dërgo një email provë label_feeds_access_key: Kyç hyrjesh Atom label_missing_feeds_access_key: Mungon një kyç hyrjesh Atom label_feeds_access_key_created_on: "Kyç hyrjesh Atom i krijuar %{value} më parë" label_module_plural: Module label_added_time_by: "Shtuar nga %{author} %{age} më parë" label_updated_time_by: "Përditësuar nga %{author} %{age} më parë" label_updated_time: "Përditësuar %{value} më parë" label_jump_to_a_project: Hidhuni te një projekt… label_file_plural: Kartela label_changeset_plural: Grupe ndryshimesh label_default_columns: Shtylla parazgjedhje label_no_change_option: (Pa ndryshim) label_bulk_edit_selected_issues: Përpunoni në masë çështjet e përzgjedhura label_bulk_edit_selected_time_entries: Përpunoni në masë zërat kohorë të përzgjedhur label_theme: Temë label_default: Parazgjedhje label_search_titles_only: Kërko vetë, për tituj label_user_mail_option_all: "Për çfarëdo akti në krejt projektet e mi" label_user_mail_option_selected: "Për çfarëdo akti vetëm te projektet e përzgjedhur…" label_user_mail_option_none: "Pa akte" label_user_mail_option_only_my_events: "Vetëm për gjëra që vëzhgoj ose merrem" label_user_mail_option_only_assigned: "Vetëm për gjëra që vëzhgoj ose që më janë caktuar" label_user_mail_option_only_owner: "Vetëm për gjëra që vëzhgoj ose për të cilat jam i zoti" label_user_mail_no_self_notified: "S’dua të njoftohem për ndryshime që bëj unë vetë" label_user_mail_notify_about_high_priority_issues_html: "Njoftomëni gjithashtu rreth çështjesh me përparësi %{prio} ose më të lartë" label_registration_activation_by_email: aktivizim llogarie me email label_registration_manual_activation: aktivizim llogarie dorazi label_registration_automatic_activation: aktivizim automatik llogarie label_display_per_page: "Për faqe: %{value}" label_age: Moshë label_change_properties: Ndryshoni veti label_general: Të përgjithshme label_scm: SCM label_plugins: Shtojca label_ldap: LDAP label_ldap_authentication: Mirëfilltësim LDAP label_ldaps_verify_none: LDAPS (pa kontroll dëshmie) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Këshillohet të përdoret një lidhje e fshehtëzuar LDAPS me kontroll dëshmish, për të penguar çfarëdo manipulimi gjatë procesit të mirëfilltësimit. label_downloads_abbr: D/L label_optional_description: Përshkrim opsional label_add_another_file: Shtoni kartelë tjetër label_preferences: Parapëlqime label_chronological_order: Në rend kohor label_reverse_chronological_order: Në rend kohor së prapthi label_incoming_emails: Email-e ardhës label_generate_key: Prodho një kyç label_issue_watchers: Vëzhgues label_example: Shembull label_display: Shfaqje label_sort: Renditje label_ascending: Rritës label_descending: Zbritës label_date_from_to: Nga %{start} deri më %{end} label_days_to_html: "%{days} ditë deri më %{date}" label_wiki_content_added: U shtua faqe Wiki page added label_wiki_content_added: U shtua faqe Wiki label_wiki_content_updated: U përditësua faqe Wiki label_group: Grup label_group_plural: Grupe label_group_new: Grup i ri label_group_anonymous: Përdorues anonimë label_group_non_member: Përdorues jo anëtarë label_time_entry_plural: Kohë e harxhuar label_version_sharing_none: Jo i ndarë me dikë label_version_sharing_descendants: Me nënprojekte label_version_sharing_hierarchy: Me hierarki projekti label_version_sharing_tree: Me pemë projekti label_version_sharing_system: Me krejt projektet label_update_issue_done_ratios: Përditësimo përpjestim përfundimesh çështjesh label_copy_source: Burim label_copy_target: Objektiv label_copy_same_as_target: Njësoj si objektivi label_display_used_statuses_only: Shfaq vetëm gjendje që përdoren nga ky ndjekës label_api_access_key: Kyç përdorimi API label_missing_api_access_key: Mungon një kyç përdorimi API label_api_access_key_created_on: "Kyç përdorimi API i krijuar %{value} më parë" label_profile: Profil label_subtask_plural: Nënpunë label_project_copy_notifications: Dërgo njoftime me email gjatë kopjimit të projektit label_import_notifications: Dërgo njoftime me email gjatë importimit label_principal_search: "Kërkoni për përdorues ose grup:" label_user_search: "Kërkoni për përdorues:" label_additional_workflow_transitions_for_author: Tranzicione shtesë të lejuara kur përdoruesi është autori label_additional_workflow_transitions_for_assignee: Tranzicione shtesë të lejuara kur përdoruesi është i caktuari label_issues_visibility_all: Krejt çështjet label_issues_visibility_public: Krejt çështjet jo private label_issues_visibility_own: Çështje të krijuara ose caktuar përdoruesit label_git_report_last_commit: Njofto depozitim të fundit për kartela dhe drejtori label_parent_revision: Mëmë label_child_revision: Pjellë label_export_options: "Mundësi eksportimi %{export_format}" label_copy_attachments: Kopjo bashkëngjitje label_copy_subtasks: Kopjo nënpunë label_item_position: "%{position} nga %{count}" label_completed_versions: Versione të plotësuar label_search_for_watchers: Kërko për vëzhgues që të shtohen label_session_expiration: Skadim sesioni label_status_transitions: Tranzicione gjendjeje label_fields_permissions: Leja fushash label_readonly: Vetëm-lexim label_required: E domosdoshme label_required_lower: e domosdoshme label_hidden: E fshehur label_attribute_of_project: "%{name} i projektit" label_attribute_of_issue: "%{name} i çështjes" label_attribute_of_author: "%{name} i autorit" label_attribute_of_assigned_to: "%{name} i të caktuarit" label_attribute_of_user: "%{name} i përdoruesit" label_attribute_of_fixed_version: "%{name} versioni të synuar" label_attribute_of_object: "%{name} %{object_name}" label_cross_project_descendants: Me nënprojekte label_cross_project_tree: Me pemë projekti label_cross_project_hierarchy: Me hierarki projekti label_cross_project_system: Me krejt projektet label_gantt_progress_line: Vijë ecurie label_visibility_private: vetëm për mua label_visibility_roles: vetëm për këto role label_visibility_public: për çfarëdo përdoruesish label_link: Lidhje label_only: vetëm label_drop_down_list: listë hapmbyll label_checkboxes: kutiza label_radio_buttons: butona rrethorë label_link_values_to: Lidh vlera te URL label_custom_field_select_type: Përzgjidhni lloj objekti te i cili të ngjitet fusha vetjake label_check_for_updates: Kontrollo për përditësime label_latest_compatible_version: Versioni më i ri i përputhshëm label_unknown_plugin: Shtojcë e panjohur label_add_projects: Shtoni projekte label_users_visibility_all: Krejt përdoruesit aktivë label_users_visibility_members_of_visible_projects: Anëtarë projektesh të dukshëm label_edit_attachments: Përpunoni kartela të bashkëngjitura label_download_all_attachments: Shkarkoji krejt kartelat label_link_copied_issue: Link copied issue label_ask: Pyet label_search_attachments_yes: Kërko emra kartelash dhe përshkrime bashkëngjitjesh label_search_attachments_no: Mos kërko bashkëngjitje label_search_attachments_only: Kërko vetëm bashkëngjitje label_search_open_issues_only: Vetëm çështje të hapura label_email_address_plural: Email-e label_email_address_add: Shtoni adresë email label_enable_notifications: Aktivizoni njoftimet label_disable_notifications: Çaktivizoni njoftimet label_blank_value: e zbrazët label_parent_task_attributes: Atribute të punës mëmë label_parent_task_attributes_derived: Llogaritur nga nënpunë label_parent_task_attributes_independent: Pavarësisht nga nënpunë label_time_entries_visibility_all: Krejt zërat kohorë label_time_entries_visibility_own: Zëra kohorë të krijuar nga përdoruesi label_member_management: Administrim anëtarësh label_member_management_all_roles: Krejt rolet label_member_management_selected_roles_only: Vetëm këto role label_import_issues: Importoni çështje permission_import_time_entries: Importoni zëra kohorë label_select_file_to_import: Përzgjidhni kartelë për importim label_fields_separator: Ndarës fushash label_fields_wrapper: Mbështjellëse fushash label_encoding: Kodim label_comma_char: Presje label_semi_colon_char: Pikëpresje label_quote_char: Thonjëz label_double_quote_char: Thonjëza dyshe label_fields_mapping: Përshoqërim fushash label_relations_mapping: Përshoqërim marrëdhëniesh label_file_content_preview: Paraparje lënde kartele label_create_missing_values: Krijo vlera që mungojnë label_api: API label_field_format_enumeration: Listë kyç/vlerë label_default_values_for_new_users: Vlera parazgjedhje për përdorues të rinj label_relations: Marrëdhënie label_new_project_issue_tab_enabled: Shfaq skedën "Çështje e re" label_new_object_tab_enabled: Shfaq menunë hapmbyll "+" label_table_of_contents: Tryezë e lëndës label_font_default: Shkronja parazgjedhje label_font_monospace: Shkronja Monospace label_font_proportional: Shkronja Proportional label_optgroup_bookmarks: Faqerojtës label_optgroup_recents: Përdorur së fundi label_last_notes: Shënimet e fundit label_nothing_to_preview: Asgjë për paraparje label_inherited_from_parent_project: "Trashëguar nga projekt mëmë" label_inherited_from_group: "Trashëguar nga grupi %{name}" label_trackers_description: Përshkrim gjurmuesish label_open_trackers_description: Shihni krejt përshkrimin e gjurmuesve label_preferred_body_part_text: Tekst label_preferred_body_part_html: HTML label_issue_history_properties: Ndryshime vetish label_issue_history_notes: Shënime label_last_tab_visited: Skeda e vizituar e fundit label_password_char_class_uppercase: shkronja të mëdha label_password_char_class_lowercase: shkronja të vogla label_password_char_class_digits: shifra label_password_char_class_special_chars: shenja speciale label_display_type: Shfaqi përfundimet si label_display_type_list: Listë label_display_type_board: Bord label_my_bookmarks: Faqerojtësit e mi label_assign_to_me: Caktomani mua button_login: Hyrje button_submit: Parashtroje button_save: Ruaje button_check_all: Vëru shenjë krejt button_uncheck_all: Hiqua shenjën krejt button_collapse_all: Tkurri krejt button_expand_all: Zgjeroji krejt button_delete: Fshije button_create: Krijoje button_create_and_continue: Krijoje dhe shto tjetër button_test: Test button_edit: Përpunojeni button_edit_associated_wikipage: "Përpunoni faqen Wiki përshoqëruar: %{page_title}" button_add: Shtoni button_change: Ndryshojeni button_apply: Zbatoje button_clear: Spastroje button_lock: Kyçe button_unlock: Shkyçe button_download: Shkarkoje button_list: Listë button_view: Shiheni button_move: Lëvize button_move_and_follow: Lëvize dhe ndiqe button_back: Mbrapsht button_cancel: Anuloje button_activate: Aktivizoje button_disable: Çaktivizoje button_sort: Rendite button_log_time: Regjistro kohë button_rollback: Ktheje te ky version button_watch: Vëzhgoje button_unwatch: Mos e Vëzhgo button_reply: Përgjigju button_archive: Arkivoje button_unarchive: Çarkivoje button_reset: Ktheje te parazgjedhjet button_rename: Riemërtoje button_change_password: Ndryshoni fjalëkalimin button_copy: Kopjoje button_copy_and_follow: Kopjoje dhe ndiqe button_annotate: I vini shënime button_update: Përditësoje button_configure: Formësojeni button_quote: Citojeni button_show: Shfaqe button_hide: Fshihe button_edit_section: Përpunoni këtë ndarje button_export: Eksportoje button_delete_my_account: Fshije llogarinë time button_close: Mbylle button_reopen: Rihape button_import: Importoje button_project_bookmark: Shtoni faqerojtës button_project_bookmark_delete: Hiqe faqerojtësin button_filter: Filtër button_actions: Veprime status_active: aktive status_registered: e regjistruar status_locked: e kyçur project_status_active: aktiv project_status_closed: i mbyllur project_status_archived: i arkivuar version_status_open: i hapur version_status_locked: i kyçur version_status_closed: i mbyllur field_active: Aktive text_select_mail_notifications: Përzgjidhni veprime për të cilët duhen dërguar njoftime me email. text_regexp_info: p.sh., ^[A-Z0-9]+$ text_project_destroy_confirmation: Jeni i sigurt se doni të fshihet ky projekt dhe të dhënat përkatëse? text_subprojects_destroy_warning: "Do të fshihet gjithashtu nënprojekti(et) e tij: %{value}." text_workflow_edit: Përzgjidhni një rol dhe një ndjekës që të përpunohet rrjedha e punës text_are_you_sure: Jeni i sigurt? text_journal_changed: "%{label} u ndryshua nga %{old} në %{new}" text_journal_changed_no_detail: "%{label} u përditësua" text_journal_set_to: "%{label} u caktua si %{value}" text_journal_deleted: "%{label} u fshi (%{old})" text_journal_added: "U shtua %{label} %{value}" text_tip_issue_begin_day: çështje që fillon këtë ditë text_tip_issue_end_day: çështje që mbaron këtë ditë text_tip_issue_begin_end_day: çështje që fillon dhe mbaron këtë ditë text_project_identifier_info: 'Lejohen vetëm shkronja të vogla(a-z), numra, vija ndarëse dhe nënvija.
    Pasi të ruhet, identifikuesi s’mund të ndryshohet.' text_caracters_maximum: "Maksimumi %{count} shenja." text_caracters_minimum: "Duhet të jetë e pakta %{count} shenja i gjatë." text_characters_must_contain: "Duhet të përmbajë %{character_classes}." text_length_between: "Gjatësi mes %{min} dhe %{max} shenjash." text_tracker_no_workflow: S’ka të përkufizuar rrjedhë pune për këtë ndjekës text_role_no_workflow: S’ka të përkufizuar rrjedhë pune për këtë rol text_status_no_workflow: Këtë gjendje s’e përdor ndonjë ndjekës në rrjedhat e punës text_unallowed_characters: Shenja të palejuara text_comma_separated: Lejohen vlera të shumta (ndarë me presje). text_line_separated: Lejohen vlera të shumta (një rresht për secilën vlerë). text_issues_ref_in_commit_messages: Referencim dhe ndreqje çështjesh në mesazhe depozitimesh text_issue_added: "Çështja %{id} është raportuar nga %{author}." text_issue_updated: "Çështja %{id} është përditësuar nga %{author}." text_wiki_destroy_confirmation: Jeni i sigurt se doni të fshihet kjo wiki dhe krejt lënda e saj? text_issue_category_destroy_question: "Kësaj kategorie i janë caktuar disa çështje (%{count}). Ç’doni të bëhet?" text_issue_category_destroy_assignments: Hiq caktime kategorie text_issue_category_reassign_to: Ricaktoja çështjet kësaj kategorie text_user_mail_option: "Për projekte të papërzgjedhur, do të merrni njoftime vetëm rreth gjërash që vëzhgoni ose në të cilat jeni përfshirë (p.sh., çështje ku jeni autor ose i caktuar)." text_no_configuration_data: "S’janë formësuar ende role, ndjekës, gjendje çështjesh dhe rrjedha pune.\nKëshillohet me forcë të ngarkohet formësimi parazgjedhje. Pasi të ngarkohet, do të jeni në gjendje ta ndryshoni." text_load_default_configuration: Ngarko formësim parazgjedhje text_status_changed_by_changeset: "Aplikuar te grup ndryshimesh %{value}." text_time_logged_by_changeset: "Aplikuar te grup ndryshimesh %{value}." text_issues_destroy_confirmation: 'Jeni i sigurt se doni të fshihet çështja(et) e përzgjedhura?' text_issues_destroy_descendants_confirmation: "Kjo do të fshijë edhe %{count} nënpunë." text_time_entries_destroy_confirmation: 'Jeni i sigurt se doni të fshihet zëri(at) kohor(ë) i përzgjedhur?' text_select_project_modules: 'Përzgjidhni module që të aktivizohen për këtë projekt:' text_default_administrator_account_changed: U ndryshua llogaria parazgjedhje e përgjegjësit text_file_repository_writable: Drejtori bashkëngjitjes e shkrueshme text_plugin_assets_writable: Drejtori mjetesh shtojcash e shkrueshme text_minimagick_available: MiniMagick gati (opsionale) text_convert_available: Ka mbulim për shndërrime ImageMagick (opsionale) text_gs_available: Ka mbulim për ImageMagick PDF (opsionale) text_destroy_time_entries_question: "Te çështjet që jeni gati të fshini janë raportuar %{hours} orë. Ç’doni të bëhet?" text_destroy_time_entries: Fshiji orët e raportuara text_assign_time_entries_to_project: Caktoja orët e raportuara projektit text_reassign_time_entries: 'Ricaktoja orët e raportuara kësaj çështjeje:' text_user_wrote: "%{value} shkroi:" text_user_wrote_in: "%{value} shkroi te %{link}:" text_enumeration_destroy_question: "%{count} objekteve u është caktuar vlera “%{name}â€." text_enumeration_category_reassign_to: 'Ricaktoju këtë vlerë:' text_email_delivery_not_configured: "S’është formësuar dërgim email-esh, dhe njoftimet janë çaktivizuar.\nFormësoni shërbyesin tuaj SMTP te config/configuration.yml dhe rinisni aplikacionin që të aktivizohen." text_repository_usernames_mapping: "Përzgjidhni ose përditësoni përdoruesin Redmine përshoqëruar çdo emri përdoruesi të gjetur te regjistri i depos.\nPërdoruesit me të njëjtin emër përdoruesi apo email në Redmine dhe në depo përshoqërohen vetvetiu." text_diff_truncated: '… Ky diff qe cunguar, ngaqë tejkalon madhësinë maksimum që mund të shfaqet.' text_custom_field_possible_values_info: 'Një rresht për secilën vlerë' text_wiki_page_destroy_question: "kjo faqe ka %{descendants} faqe pjellë dhe pasardhës. Ç’doni të bëhet?" text_wiki_page_nullify_children: "Mbaji faqet pjella si faqe rrënjë" text_wiki_page_destroy_children: "Fshiji faqet pjellë dhe krejt pasardhësit e tyre" text_wiki_page_reassign_children: "Ricaktoja faqet pjella kësaj faqeje mëmë" text_own_membership_delete_confirmation: "Ju ndan një hap nga heqja e disa apo krejt lejeve tuaja dhe pas kësaj mund të mos jeni më në gjendje të përpunoni këtë projekt.\nJeni i sigurt se doni të vazhdohet?" text_zoom_in: Zmadhoje text_zoom_out: Zvogëloje text_warn_on_leaving_unsaved: "Faqja e tanishme përmban tekst të paruajtur, që do të humbë nëse e braktisni këtë faqe." text_scm_path_encoding_note: "Parazgjedhje: UTF-8" text_subversion_repository_note: "Shembuj: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: Depoja është e zhveshur dhe vendore (p.sh., /gitrepo, c:\gitrepo) text_mercurial_repository_note: Depo vendore (p.sh., /hgrepo, c:\hgrepo) text_scm_command: Urdhër text_scm_command_version: Version text_scm_config: Urdhrat tuaja SCM mund t’i formësoni te config/configuration.yml. Ju lutemi, riniseni aplikacionin pas një përpunimi të tillë. text_scm_command_not_available: S’ka urdhër SCM. Ju lutemi, kontrolloni rregullimet te paneli i administrimeve. text_issue_conflict_resolution_overwrite: "Zbatoji ndryshimet e mia, sido qoftë (shënimet e mëparshme do të mbahen, por disa ndryshime mund të mbishkruhen)" text_issue_conflict_resolution_add_notes: "Shto shënimet e mia dhe hidh tej ndryshimet e mia të tjera" text_issue_conflict_resolution_cancel: "Hidhi tej krejt ndryshimet e mia dhe rishfaq %{link}" text_account_destroy_confirmation: "Jeni i sigurt se doni të vazhdohet?\nLlogaria juaj do të fshihet përgjithmonë, pa ndonjë rrugë për ta riaktivizuar." text_session_expiration_settings: "Kujdes: ndryshimi i këtyre rregullimeve mund të sjellë skadimin e sesioneve të tanishëm, përfshi tuajin." text_project_closed: Ky projekt është i mbyllur dhe vetëm mund të lexohet. text_turning_multiple_off: "Nëse i çaktivizoni vlerat e shumta, vlerat e shumta do të hiqen, me qëllim ruajtjen vetëm të një vlere për element." text_select_apply_tracker: "Përzgjidhni ndjekës" text_avatar_server_config_html: Shërbyesi i tanishëm i avatarëve është %{url}. Mund ta formësoni te config/configuration.yml. text_no_subject: pa subjekt default_role_manager: Përgjegjës default_role_developer: Zhvillues default_role_reporter: Raportues default_tracker_bug: E metë default_tracker_feature: Veçori default_tracker_support: Asistencë default_issue_status_new: E re default_issue_status_in_progress: Në Ecuri default_issue_status_resolved: E zgjidhur default_issue_status_feedback: Përshtypje default_issue_status_closed: E mbyllur default_issue_status_rejected: E hedhur tej default_doc_category_user: User documentation default_doc_category_tech: Technical documentation default_priority_low: E ulët default_priority_normal: Normale default_priority_high: E lartë default_priority_urgent: Urgjente default_priority_immediate: Imediate default_activity_design: Konceptim default_activity_development: Zhvillim enumeration_issue_priorities: Përparësi çështjesh enumeration_doc_categories: Kategori dokumentesh enumeration_activities: Veprimtari (ndjekje kohore) enumeration_system_activity: Veprimtari Sistemi description_filter: Filtër description_search: Fushë kërkimi description_choose_project: Projekte description_project_scope: Fokus kërkimi description_notes: Shënime description_message_content: Lëndë mesazhi description_query_sort_criteria_attribute: Atribut renditjeje description_query_sort_criteria_direction: Kah renditjeje description_user_mail_notification: Rregullime njoftimesh me email description_available_columns: Shtylla të Gatshme description_selected_columns: Shtylla të Përzgjedhura description_all_columns: Krejt Shtyllat description_issue_category_reassign: Zgjidhni kategori çështjeje description_wiki_subpages_reassign: Zgjidhni faqe të re mëmë text_repository_identifier_info: 'Lejohen vetëm shkronja të vogla (a-z), numra, vija ndarëse dhe nënvija.
    Pasi të ruhet, identifikuesi s’mund të ndryshohet.' text_login_required_html: Kur nuk kërkohet mirëfilltësim doemos, projekte publike dhe lënda e tyre janë të passhëm haptazi në rrjet. Mundeni të përpunoni lejet e aplikueshme. label_login_required_yes: "Po" label_login_required_no: "Jo, lejo hyrje anonime te projekte publike" text_project_is_public_non_member: Projekte publike dhe lënda e tyre janë të passhëm për krejt përdoruesit që kanë bërë hyrjen. text_project_is_public_anonymous: Projekte publike dhe lënda e tyre janë të passhëm haptazi në rrjet. label_import_time_entries: Importoni zëra kohe label_import_users: Importoni përdorues twofa__totp__name: Aplikacion mirëfilltësimi twofa__totp__text_pairing_info_html: 'Skanojeni këtë kod QR ose jepni kyçin si tekst të thjeshtë te një aplikacion TOTP (p.sh., Google Authenticator, Authy, Duo Mobile) dhe jepeni kodin te fusha më poshtë që të aktivizoni mirëfilltësim dyfaktorësh.' twofa__totp__label_plain_text_key: Kyç si tekst i thjeshtë twofa__totp__label_activate: 'Aktivizoni aplikacion mirëfilltësimesh' twofa_currently_active: "Aktualisht aktiv: %{twofa_scheme_name}" twofa_not_active: "Jo i aktivizuar" twofa_label_code: Kod twofa_hint_disabled_html: Rregullimi %{label} do të çaktivizojë dhe do të heqë çiftimin e pajisjeve të mirëfilltësimit dyfaktorësh, për krejt përdoruesit. twofa_hint_required_html: Rregullimi %{label} do të kërkojë që krejt përdoruesit të ujdisin medoemos mirëfilltësim dyfaktorësh, herës tjetër që bëjnë hyrjen. twofa_label_setup: Aktivizo mirëfilltësim dyfaktorësh twofa_label_deactivation_confirmation: Çaktivizo mirëfilltësim dyfaktorësh twofa_notice_select: "Ju lutemi, përzgjidhni skemën për mirëfilltësim dyfaktorësh që dëshironi të përdorni:" twofa_warning_require: Përgjegjësi kërkon që të aktivizoni doemos mirëfilltësim dyfaktorësh. twofa_activated: Mirëfilltësimi dyfaktorësh u aktivizua me sukses. Rekomandohet të prodhoni kode kopjeruajtjeje për llogarinë tuaj. twofa_deactivated: Mirëfilltësimi dyfaktorësh u çaktivizua. twofa_mail_body_security_notification_paired: "Mirëfilltësimi dyfaktorësh u aktivizua me sukses, duke përdorur %{field}." twofa_mail_body_security_notification_unpaired: "Mirëfilltësimi dyfaktorësh u çaktivizua për llogarinë tuaj." twofa_mail_body_backup_codes_generated: "U prodhuan kode të rinj mirëfilltësimi dyfaktorësh për kopjeruajtje." twofa_mail_body_backup_code_used: "U përdor një kod mirëfilltësimi dyfaktorësh kopjeruajtjeje." twofa_invalid_code: Kodi është i pavlefshëm ose i vjetruar. twofa_label_enter_otp: Ju lutemi, jepni kodin tuaj të mirëfilltësimit dyfaktorësh. twofa_too_many_tries: Shumë prova. twofa_resend_code: Ridërgo kodin twofa_code_sent: U dërgua një kod mirëfilltësimi për ju. twofa_generate_backup_codes: Prodhoni kode kopjeruajtjesh twofa_text_generate_backup_codes_confirmation: Kjo do të bëjë të pavlefshëm krejt kodet ekzistues të kopjeruajtjeve dhe do të prodhojë të rinj. Doni të vazhdohet? twofa_notice_backup_codes_generated: Kopjet tuaj të kopjeruajtjeve u prodhuan. twofa_warning_backup_codes_generated_invalidated: U prodhuan kode të rinj kopjeruajtjesh. Kodet tuaj ekzistues prej %{time} tanimë janë të pavlefshëm. twofa_label_backup_codes: Kode mirëfilltësimi dyfaktorësh kopjeruajtjesh twofa_text_backup_codes_hint: Përdorni këto kode, në vend se të një fjalëkalimi njëpërdorimsh, për raste kur s’e keni faktorin e dytër. Çdo kod mund të përdoret vetëm një herë. Është e këshillueshme që të shtypen dhe të ruhen në një vend të parrezik. twofa_text_backup_codes_created_at: Kode kopjeruajtjesh prodhuar më %{datetime}. twofa_backup_codes_already_shown: Kodet e kopjeruajtjeve s’mund të shfaqen sërish, ju lutemi, nëse duhet, prodhoni kode të rinj kopjeruajtjesh. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sr-YU.yml000066400000000000000000002156771500112024600175470ustar00rootroot00000000000000# Serbian translations for Redmine # by Vladimir Medarović (vlada@medarovic.com) sr-YU: direction: ltr jquery: locale: "sr" date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y." short: "%e %b" long: "%B %e, %Y" day_names: [nedelja, ponedeljak, utorak, sreda, Äetvrtak, petak, subota] abbr_day_names: [ned, pon, uto, sre, Äet, pet, sub] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%d.%m.%Y. u %H:%M" time: "%H:%M" short: "%d. %b u %H:%M" long: "%d. %B %Y u %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "pola minuta" less_than_x_seconds: one: "manje od jedne sekunde" other: "manje od %{count} sek." x_seconds: one: "jedna sekunda" other: "%{count} sek." less_than_x_minutes: one: "manje od minuta" other: "manje od %{count} min." x_minutes: one: "jedan minut" other: "%{count} min." about_x_hours: one: "približno jedan sat" other: "približno %{count} sati" x_hours: one: "1 sat" other: "%{count} sati" x_days: one: "jedan dan" other: "%{count} dana" about_x_months: one: "približno jedan mesec" other: "približno %{count} meseci" x_months: one: "jedan mesec" other: "%{count} meseci" about_x_years: one: "približno godinu dana" other: "približno %{count} god." over_x_years: one: "preko godinu dana" other: "preko %{count} god." almost_x_years: one: "skoro godinu dana" other: "skoro %{count} god." number: format: separator: "," delimiter: "." precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "i" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "nije ukljuÄen u spisak" exclusion: "je rezervisan" invalid: "je neispravan" confirmation: "potvrda ne odgovara" accepted: "mora biti prihvaćen" empty: "ne može biti prazno" blank: "ne može biti prazno" too_long: "je predugaÄka (maksimum znakova je %{count})" too_short: "je prekratka (minimum znakova je %{count})" wrong_length: "je pogreÅ¡ne dužine (broj znakova mora biti %{count})" taken: "je već u upotrebi" not_a_number: "nije broj" not_a_date: "nije ispravan datum" greater_than: "mora biti veći od %{count}" greater_than_or_equal_to: "mora biti veći ili jednak %{count}" equal_to: "mora biti jednak %{count}" less_than: "mora biti manji od %{count}" less_than_or_equal_to: "mora biti manji ili jednak %{count}" odd: "mora biti paran" even: "mora biti neparan" greater_than_start_date: "mora biti veći od poÄetnog datuma" not_same_project: "ne pripada istom projektu" circular_dependency: "Ova veza će stvoriti kružnu referencu" cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Molim odaberite general_text_No: 'Ne' general_text_Yes: 'Da' general_text_no: 'ne' general_text_yes: 'da' general_lang_name: 'Serbian (Srpski)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Nalog je uspeÅ¡no ažuriran. notice_account_invalid_credentials: Neispravno korisniÄko ime ili lozinka. notice_account_password_updated: Lozinka je uspeÅ¡no ažurirana. notice_account_wrong_password: PogreÅ¡na lozinka notice_account_register_done: KorisniÄki nalog je uspeÅ¡no kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. notice_can_t_change_password: Ovaj korisniÄki nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke notice_account_activated: VaÅ¡ korisniÄki nalog je aktiviran. Sada se možete prijaviti. notice_successful_create: UspeÅ¡no kreiranje. notice_successful_update: UspeÅ¡no ažuriranje. notice_successful_delete: UspeÅ¡no brisanje. notice_successful_connection: UspeÅ¡no povezivanje. notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. notice_email_sent: "E-poruka je poslata na %{value}" notice_email_error: "Dogodila se greÅ¡ka prilikom slanja e-poruke (%{value})" notice_feeds_access_key_reseted: VaÅ¡ Atom pristupni kljuÄ je poniÅ¡ten. notice_api_access_key_reseted: VaÅ¡ API pristupni kljuÄ je poniÅ¡ten. notice_failed_to_save_issues: "NeuspeÅ¡no snimanje %{count} problema od %{total} odabranih: %{ids}." notice_failed_to_save_members: "NeuspeÅ¡no snimanje Älana(ova): %{errors}." notice_account_pending: "VaÅ¡ nalog je kreiran i Äeka na odobrenje administratora." notice_default_data_loaded: Podrazumevano konfigurisanje je uspeÅ¡no uÄitano. notice_unable_delete_version: Verziju je nemoguće izbrisati. notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. notice_issue_done_ratios_updated: Odnos reÅ¡enih problema je ažuriran. error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće uÄitati: %{value}" error_scm_not_found: "Stavka ili ispravka nisu pronaÄ‘ene u spremiÅ¡tu." error_scm_command_failed: "GreÅ¡ka se javila prilikom pokuÅ¡aja pristupa spremiÅ¡tu: %{value}" error_scm_annotate: "Stavka ne postoji ili ne može biti oznaÄena." error_issue_not_found_in_project: 'Problem nije pronaÄ‘en ili ne pripada ovom projektu.' error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podeÅ¡avanja projekta.' error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaÅ¡e konfigurisanje (idite na "Administracija -> Statusi problema").' error_can_not_delete_custom_field: Nemoguće je izbrisati prilagoÄ‘eno polje error_can_not_delete_tracker_html: "Ovo praćenje sadrži probleme i ne može biti obrisano.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' error_can_not_archive_project: Ovaj projekat se ne može arhivirati error_issue_done_ratios_not_updated: "Odnos reÅ¡enih problema nije ažuriran." error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' error_workflow_copy_target: 'Molimo odaberite odrediÅ¡no praćenje i ulogu' error_unable_delete_issue_status: 'Status problema je nemoguće obrisati (%{value})' error_unable_to_connect: "Povezivanje sa (%{value}) je nemoguće" warning_attachments_not_saved: "%{count} datoteka ne može biti snimljena." mail_subject_lost_password: "VaÅ¡a %{value} lozinka" mail_body_lost_password: 'Za promenu vaÅ¡e lozinke, kliknite na sledeći link:' mail_subject_register: "Aktivacija vaÅ¡eg %{value} naloga" mail_body_register: 'Za aktivaciju vaÅ¡eg naloga, kliknite na sledeći link:' mail_body_account_information_external: "VaÅ¡ nalog %{value} možete koristiti za prijavu." mail_body_account_information: Informacije o vaÅ¡em nalogu mail_subject_account_activation_request: "Zahtev za aktivaciju naloga %{value}" mail_body_account_activation_request: "Novi korisnik (%{value}) je registrovan. Nalog Äeka na vaÅ¡e odobrenje:" mail_subject_reminder: "%{count} problema dospeva narednih %{days} dana" mail_body_reminder: "%{count} problema dodeljenih vama dospeva u narednih %{days} dana:" mail_subject_wiki_content_added: "Wiki stranica '%{id}' je dodata" mail_body_wiki_content_added: "%{author} je dodao wiki stranicu '%{id}'." mail_subject_wiki_content_updated: "Wiki stranica '%{id}' je ažurirana" mail_body_wiki_content_updated: "%{author} je ažurirao wiki stranicu '%{id}'." field_name: Naziv field_description: Opis field_summary: Rezime field_is_required: Obavezno field_firstname: Ime field_lastname: Prezime field_mail: E-adresa field_filename: Datoteka field_filesize: VeliÄina field_downloads: Preuzimanja field_author: Autor field_created_on: Kreirano field_updated_on: Ažurirano field_field_format: Format field_is_for_all: Za sve projekte field_possible_values: Moguće vrednosti field_regexp: Regularan izraz field_min_length: Minimalna dužina field_max_length: Maksimalna dužina field_value: Vrednost field_category: Kategorija field_title: Naslov field_project: Projekat field_issue: Problem field_status: Status field_notes: BeleÅ¡ke field_is_closed: Zatvoren problem field_is_default: Podrazumevana vrednost field_tracker: Praćenje field_subject: Predmet field_due_date: Krajnji rok field_assigned_to: Dodeljeno field_priority: Prioritet field_fixed_version: OdrediÅ¡na verzija field_user: Korisnik field_principal: User or Group field_role: Uloga field_homepage: PoÄetna stranica field_is_public: Javno objavljivanje field_parent: Potprojekat od field_is_in_roadmap: Problemi prikazani u planu rada field_login: KorisniÄko ime field_mail_notification: ObaveÅ¡tenja putem e-poÅ¡te field_admin: Administrator field_last_login_on: Poslednje povezivanje field_language: Jezik field_effective_date: Datum field_password: Lozinka field_new_password: Nova lozinka field_password_confirmation: Potvrda lozinke field_version: Verzija field_type: Tip field_host: Glavni raÄunar field_port: Port field_account: KorisniÄki nalog field_base_dn: Bazni DN field_attr_login: Atribut prijavljivanja field_attr_firstname: Atribut imena field_attr_lastname: Atribut prezimena field_attr_mail: Atribut e-adrese field_onthefly: Kreiranje korisnika u toku rada field_start_date: PoÄetak field_done_ratio: "% uraÄ‘eno" field_auth_source: Režim potvrde identiteta field_hide_mail: Sakrij moju e-adresu field_comments: Komentar field_url: URL field_start_page: PoÄetna stranica field_subproject: Potprojekat field_hours: sati field_activity: Aktivnost field_spent_on: Datum field_identifier: Identifikator field_is_filter: Upotrebi kao filter field_issue_to: Srodni problemi field_delay: KaÅ¡njenje field_assignable: Problem može biti dodeljen ovoj ulozi field_redirect_existing_links: Preusmeri postojeće veze field_estimated_hours: Procenjeno vreme field_column_names: Kolone field_time_zone: Vremenska zona field_searchable: Može da se pretražuje field_default_value: Podrazumevana vrednost field_comments_sorting: Prikaži komentare field_parent_title: MatiÄna stranica field_editable: Izmenljivo field_watcher: PosmatraÄ field_content: Sadržaj field_group_by: Grupisanje rezultata po field_sharing: Deljenje field_parent_issue: MatiÄni zadatak setting_app_title: Naslov aplikacije setting_welcome_text: Tekst dobrodoÅ¡lice setting_default_language: Podrazumevani jezik setting_login_required: Obavezna potvrda identiteta setting_self_registration: Samoregistracija setting_attachment_max_size: Maks. veliÄina priložene datoteke setting_issues_export_limit: OgraniÄenje izvoza „problema“ setting_mail_from: E-adresa poÅ¡iljaoca setting_plain_text_mail: Poruka sa Äistim tekstom (bez HTML-a) setting_host_name: Putanja i naziv glavnog raÄunara setting_text_formatting: Oblikovanje teksta setting_wiki_compression: Kompresija Wiki istorije setting_feeds_limit: OgraniÄenje sadržaja izvora vesti setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata setting_autofetch_changesets: IzvrÅ¡avanje automatskog preuzimanja setting_sys_api_enabled: Omogućavanje WS za upravljanje spremiÅ¡tem setting_commit_ref_keywords: Referenciranje kljuÄnih reÄi setting_commit_fix_keywords: Popravljanje kljuÄnih reÄi setting_autologin: Automatska prijava setting_date_format: Format datuma setting_time_format: Format vremena setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema setting_emails_footer: Podnožje stranice e-poruke setting_protocol: Protokol setting_per_page_options: Opcije prikaza objekata po stranici setting_user_format: Format prikaza korisnika setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugaÄije navedeno setting_enabled_scm: Omogućavanje SCM setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke setting_mail_handler_api_key: API kljuÄ setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta setting_gravatar_enabled: Koristi Gravatar korisniÄke ikone setting_gravatar_default: Podrazumevana Gravatar slika setting_diff_max_lines_displayed: Maks. broj prikazanih razliÄitih linija setting_file_max_size_displayed: Maks. veliÄina tekst. datoteka prikazanih umetnuto setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju setting_password_min_length: Minimalna dužina lozinke setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte setting_issue_done_ratio: IzraÄunaj odnos reÅ¡enih problema setting_issue_done_ratio_issue_field: koristeći polje problema setting_issue_done_ratio_issue_status: koristeći status problema setting_start_of_week: Prvi dan u sedmici setting_rest_api_enabled: Omogući REST web usluge setting_cache_formatted_text: KeÅ¡iranje obraÄ‘enog teksta permission_add_project: Kreiranje projekta permission_add_subprojects: Kreiranje potpojekta permission_edit_project: Izmena projekata permission_select_project_modules: Odabiranje modula projekta permission_manage_members: Upravljanje Älanovima permission_manage_project_activities: Upravljanje projektnim aktivnostima permission_manage_versions: Upravljanje verzijama permission_manage_categories: Upravljanje kategorijama problema permission_view_issues: Pregled problema permission_add_issues: Dodavanje problema permission_edit_issues: Izmena problema permission_manage_issue_relations: Upravljanje vezama izmeÄ‘u problema permission_add_issue_notes: Dodavanje beleÅ¡ki permission_edit_issue_notes: Izmena beleÅ¡ki permission_edit_own_issue_notes: Izmena sopstvenih beleÅ¡ki permission_delete_issues: Brisanje problema permission_manage_public_queries: Upravljanje javnim upitima permission_save_queries: Snimanje upita permission_view_gantt: Pregledanje Gantovog dijagrama permission_view_calendar: Pregledanje kalendara permission_view_issue_watchers: Pregledanje spiska posmatraÄa permission_add_issue_watchers: Dodavanje posmatraÄa permission_delete_issue_watchers: Brisanje posmatraÄa permission_log_time: Beleženje utroÅ¡enog vremena permission_view_time_entries: Pregledanje utroÅ¡enog vremena permission_edit_time_entries: Izmena utroÅ¡enog vremena permission_edit_own_time_entries: Izmena sopstvenog utroÅ¡enog vremena permission_manage_news: Upravljanje vestima permission_comment_news: Komentarisanje vesti permission_view_documents: Pregledanje dokumenata permission_manage_files: Upravljanje datotekama permission_view_files: Pregledanje datoteka permission_manage_wiki: Upravljanje wiki stranicama permission_rename_wiki_pages: Promena imena wiki stranicama permission_delete_wiki_pages: Brisanje wiki stranica permission_view_wiki_pages: Pregledanje wiki stranica permission_view_wiki_edits: Pregledanje wiki istorije permission_edit_wiki_pages: Izmena wiki stranica permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka permission_protect_wiki_pages: ZaÅ¡tita wiki stranica permission_manage_repository: Upravljanje spremiÅ¡tem permission_browse_repository: Pregledanje spremiÅ¡ta permission_view_changesets: Pregledanje skupa promena permission_commit_access: Potvrda pristupa permission_manage_boards: Upravljanje forumima permission_view_messages: Pregledanje poruka permission_add_messages: Slanje poruka permission_edit_messages: Izmena poruka permission_edit_own_messages: Izmena sopstvenih poruka permission_delete_messages: Brisanje poruka permission_delete_own_messages: Brisanje sopstvenih poruka permission_export_wiki_pages: Izvoz wiki stranica permission_manage_subtasks: Upravljanje podzadacima project_module_issue_tracking: Praćenje problema project_module_time_tracking: Praćenje vremena project_module_news: Vesti project_module_documents: Dokumenti project_module_files: Datoteke project_module_wiki: Wiki project_module_repository: SpremiÅ¡te project_module_boards: Forumi label_user: Korisnik label_user_plural: Korisnici label_user_new: Novi korisnik label_user_anonymous: Anoniman label_project: Projekat label_project_new: Novi projekat label_project_plural: Projekti label_x_projects: zero: nema projekata one: jedan projekat other: "%{count} projekata" label_project_all: Svi projekti label_project_latest: Poslednji projekti label_issue: Problem label_issue_new: Novi problem label_issue_plural: Problemi label_issue_view_all: Prikaz svih problema label_issues_by: "Problemi (%{value})" label_issue_added: Problem je dodat label_issue_updated: Problem je ažuriran label_document: Dokument label_document_new: Novi dokument label_document_plural: Dokumenti label_document_added: Dokument je dodat label_role: Uloga label_role_plural: Uloge label_role_new: Nova uloga label_role_and_permissions: Uloge i dozvole label_member: ÄŒlan label_member_new: Novi Älan label_member_plural: ÄŒlanovi label_tracker: Praćenje label_tracker_plural: Praćenja label_tracker_new: Novo praćenje label_workflow: Tok posla label_issue_status: Status problema label_issue_status_plural: Statusi problema label_issue_status_new: Novi status label_issue_category: Kategorija problema label_issue_category_plural: Kategorije problema label_issue_category_new: Nova kategorija label_custom_field: PrilagoÄ‘eno polje label_custom_field_plural: PrilagoÄ‘ena polja label_custom_field_new: Novo prilagoÄ‘eno polje label_enumerations: Nabrojiva lista label_enumeration_new: Nova vrednost label_information: Informacija label_information_plural: Informacije label_register: Registracija label_password_lost: Izgubljena lozinka label_home: PoÄetak label_my_page: Moja stranica label_my_account: Moj nalog label_my_projects: Moji projekti label_administration: Administracija label_login: Prijava label_logout: Odjava label_help: Pomoć label_reported_issues: Prijavljeni problemi label_assigned_to_me_issues: Problemi dodeljeni meni label_registered_on: Registrovan label_activity: Aktivnost label_user_activity: "Aktivnost korisnika %{value}" label_new: Novo label_logged_as: Prijavljeni ste kao label_environment: Okruženje label_authentication: Potvrda identiteta label_auth_source: Režim potvrde identiteta label_auth_source_new: Novi režim potvrde identiteta label_auth_source_plural: Režimi potvrde identiteta label_subproject_plural: Potprojekti label_subproject_new: Novi potprojekat label_and_its_subprojects: "%{value} i njegovi potprojekti" label_min_max_length: Min. - Maks. dužina label_list: Spisak label_date: Datum label_integer: Ceo broj label_float: Sa pokretnim zarezom label_boolean: LogiÄki operator label_string: Tekst label_text: Dugi tekst label_attribute: Osobina label_attribute_plural: Osobine label_no_data: Nema podataka za prikazivanje label_change_status: Promena statusa label_history: Istorija label_attachment: Datoteka label_attachment_new: Nova datoteka label_attachment_delete: Brisanje datoteke label_attachment_plural: Datoteke label_file_added: Datoteka je dodata label_report: IzveÅ¡taj label_report_plural: IzveÅ¡taji label_news: Vesti label_news_new: Dodavanje vesti label_news_plural: Vesti label_news_latest: Poslednje vesti label_news_view_all: Prikaz svih vesti label_news_added: Vesti su dodate label_settings: PodeÅ¡avanja label_overview: Pregled label_version: Verzija label_version_new: Nova verzija label_version_plural: Verzije label_close_versions: Zatvori zavrÅ¡ene verzije label_confirmation: Potvrda label_export_to: 'TakoÄ‘e dostupno i u varijanti:' label_read: ÄŒitanje... label_public_projects: Javni projekti label_open_issues: otvoren label_open_issues_plural: otvorenih label_closed_issues: zatvoren label_closed_issues_plural: zatvorenih label_x_open_issues_abbr: zero: 0 otvorenih one: 1 otvoren other: "%{count} otvorenih" label_x_closed_issues_abbr: zero: 0 zatvorenih one: 1 zatvoren other: "%{count} zatvorenih" label_total: Ukupno label_permissions: Dozvole label_current_status: Trenutni status label_new_statuses_allowed: Novi statusi dozvoljeni label_all: svi label_none: nijedan label_nobody: nikome label_next: Sledeće label_previous: Prethodno label_used_by: Koristio label_details: Detalji label_add_note: Dodaj beleÅ¡ku label_calendar: Kalendar label_months_from: meseci od label_gantt: Gantov dijagram label_internal: UnutraÅ¡nji label_last_changes: "poslednjih %{count} promena" label_change_view_all: Prikaži sve promene label_comment: Komentar label_comment_plural: Komentari label_x_comments: zero: bez komentara one: jedan komentar other: "%{count} komentara" label_comment_add: Dodaj komentar label_comment_added: Komentar dodat label_comment_delete: ObriÅ¡i komentare label_query: PrilagoÄ‘en upit label_query_plural: PrilagoÄ‘eni upiti label_query_new: Novi upit label_filter_add: Dodavanje filtera label_filter_plural: Filteri label_equals: je label_not_equals: nije label_in_less_than: manje od label_in_more_than: viÅ¡e od label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: u label_today: danas label_yesterday: juÄe label_this_week: ove sedmice label_last_week: poslednje sedmice label_last_n_days: "poslednjih %{count} dana" label_this_month: ovog meseca label_last_month: poslednjeg meseca label_this_year: ove godine label_date_range: Vremenski period label_less_than_ago: pre manje od nekoliko dana label_more_than_ago: pre viÅ¡e od nekoliko dana label_ago: pre nekoliko dana label_contains: sadrži label_not_contains: ne sadrži label_day_plural: dana label_repository: SpremiÅ¡te label_repository_plural: SpremiÅ¡ta label_branch: Grana label_tag: Oznaka label_revision: Revizija label_revision_plural: Revizije label_revision_id: "Revizija %{value}" label_associated_revisions: Pridružene revizije label_added: dodato label_modified: promenjeno label_copied: kopirano label_renamed: preimenovano label_deleted: izbrisano label_latest_revision: Poslednja revizija label_latest_revision_plural: Poslednje revizije label_view_revisions: Pregled revizija label_view_all_revisions: Pregled svih revizija label_max_size: Maksimalna veliÄina label_roadmap: Plan rada label_roadmap_due_in: "Dospeva %{value}" label_roadmap_overdue: "%{value} najkasnije" label_roadmap_no_issues: Nema problema za ovu verziju label_search: Pretraga label_result_plural: Rezultati label_all_words: Sve reÄi label_wiki: Wiki label_wiki_edit: Wiki izmena label_wiki_edit_plural: Wiki izmene label_wiki_page: Wiki stranica label_wiki_page_plural: Wiki stranice label_index_by_title: Indeksiranje po naslovu label_index_by_date: Indeksiranje po datumu label_current_version: Trenutna verzija label_preview: Pregled label_feed_plural: Izvori vesti label_changes_details: Detalji svih promena label_issue_tracking: Praćenje problema label_spent_time: UtroÅ¡eno vreme label_f_hour: "%{value} sat" label_f_hour_plural: "%{value} sati" label_time_tracking: Praćenje vremena label_change_plural: Promene label_statistics: Statistika label_commits_per_month: IzvrÅ¡enja meseÄno label_commits_per_author: IzvrÅ¡enja po autoru label_view_diff: Pogledaj razlike label_diff_inline: unutra label_diff_side_by_side: uporedo label_options: Opcije label_copy_workflow_from: Kopiranje toka posla od label_permissions_report: IzveÅ¡taj o dozvolama label_watched_issues: Posmatrani problemi label_related_issues: Srodni problemi label_applied_status: Primenjeni statusi label_loading: UÄitavanje... label_relation_new: Nova relacija label_relation_delete: Brisanje relacije label_relates_to: srodnih sa label_duplicates: dupliranih label_duplicated_by: dupliranih od label_blocks: odbijenih label_blocked_by: odbijenih od label_precedes: prethodi label_follows: praćenih label_stay_logged_in: Ostanite prijavljeni label_disabled: onemogućeno label_show_completed_versions: Prikazivanje zavrÅ¡ene verzije label_me: meni label_board: Forum label_board_new: Novi forum label_board_plural: Forumi label_board_locked: ZakljuÄana label_board_sticky: Lepljiva label_topic_plural: Teme label_message_plural: Poruke label_message_last: Poslednja poruka label_message_new: Nova poruka label_message_posted: Poruka je dodata label_reply_plural: Odgovori label_send_information: PoÅ¡alji korisniku detalje naloga label_year: Godina label_month: Mesec label_week: Sedmica label_date_from: Å alje label_date_to: Prima label_language_based: Bazirano na jeziku korisnika label_sort_by: "Sortirano po %{value}" label_send_test_email: Slanje probne e-poruke label_feeds_access_key: Atom pristupni kljuÄ label_missing_feeds_access_key: Atom pristupni kljuÄ nedostaje label_feeds_access_key_created_on: "Atom pristupni kljuÄ je napravljen pre %{value}" label_module_plural: Moduli label_added_time_by: "Dodao %{author} pre %{age}" label_updated_time_by: "Ažurirao %{author} pre %{age}" label_updated_time: "Ažurirano pre %{value}" label_jump_to_a_project: Skok na projekat... label_file_plural: Datoteke label_changeset_plural: Skupovi promena label_default_columns: Podrazumevane kolone label_no_change_option: (Bez promena) label_bulk_edit_selected_issues: Grupna izmena odabranih problema label_theme: Tema label_default: Podrazumevano label_search_titles_only: Pretražuj samo naslove label_user_mail_option_all: "Za bilo koji dogaÄ‘aj na svim mojim projektima" label_user_mail_option_selected: "Za bilo koji dogaÄ‘aj na samo odabranim projektima..." label_user_mail_no_self_notified: "Ne želim biti obaveÅ¡tavan za promene koje sam pravim" label_registration_activation_by_email: aktivacija naloga putem e-poruke label_registration_manual_activation: ruÄna aktivacija naloga label_registration_automatic_activation: automatska aktivacija naloga label_display_per_page: "Broj stavki po stranici: %{value}" label_age: Starost label_change_properties: Promeni svojstva label_general: OpÅ¡ti label_scm: SCM label_plugins: Dodatne komponente label_ldap_authentication: LDAP potvrda identiteta label_downloads_abbr: D/L label_optional_description: Opciono opis label_add_another_file: Dodaj joÅ¡ jednu datoteku label_preferences: PodeÅ¡avanja label_chronological_order: po hronoloÅ¡kom redosledu label_reverse_chronological_order: po obrnutom hronoloÅ¡kom redosledu label_incoming_emails: Dolazne e-poruke label_generate_key: Generisanje kljuÄa label_issue_watchers: PosmatraÄi label_example: Primer label_display: Prikaz label_sort: Sortiranje label_ascending: Rastući niz label_descending: Opadajući niz label_date_from_to: Od %{start} do %{end} label_wiki_content_added: Wiki stranica je dodata label_wiki_content_updated: Wiki stranica je ažurirana label_group: Grupa label_group_plural: Grupe label_group_new: Nova grupa label_time_entry_plural: UtroÅ¡eno vreme label_version_sharing_none: Nije deljeno label_version_sharing_descendants: Sa potprojektima label_version_sharing_hierarchy: Sa hijerarhijom projekta label_version_sharing_tree: Sa stablom projekta label_version_sharing_system: Sa svim projektima label_update_issue_done_ratios: Ažuriraj odnos reÅ¡enih problema label_copy_source: Izvor label_copy_target: OdrediÅ¡te label_copy_same_as_target: Isto kao odrediÅ¡te label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja label_api_access_key: API pristupni kljuÄ label_missing_api_access_key: Nedostaje API pristupni kljuÄ label_api_access_key_created_on: "API pristupni kljuÄ je kreiran pre %{value}" label_profile: Profil label_subtask_plural: Podzadatak label_project_copy_notifications: PoÅ¡alji e-poruku sa obaveÅ¡tenjem prilikom kopiranja projekta button_login: Prijava button_submit: PoÅ¡alji button_save: Snimi button_check_all: UkljuÄi sve button_uncheck_all: IskljuÄi sve button_delete: IzbriÅ¡i button_create: Kreiraj button_create_and_continue: Kreiraj i nastavi button_test: Test button_edit: Izmeni button_add: Dodaj button_change: Promeni button_apply: Primeni button_clear: ObriÅ¡i button_lock: ZakljuÄaj button_unlock: OtkljuÄaj button_download: Preuzmi button_list: Spisak button_view: Prikaži button_move: Pomeri button_move_and_follow: Pomeri i prati button_back: Nazad button_cancel: PoniÅ¡ti button_activate: Aktiviraj button_sort: Sortiraj button_log_time: Evidentiraj vreme button_rollback: Povratak na ovu verziju button_watch: Prati button_unwatch: Ne prati viÅ¡e button_reply: Odgovori button_archive: Arhiviraj button_unarchive: Vrati iz arhive button_reset: PoniÅ¡ti button_rename: Preimenuj button_change_password: Promeni lozinku button_copy: Kopiraj button_copy_and_follow: Kopiraj i prati button_annotate: Pribeleži button_update: Ažuriraj button_configure: Podesi button_quote: Pod navodnicima button_show: Prikaži status_active: aktivni status_registered: registrovani status_locked: zakljuÄani version_status_open: otvoren version_status_locked: zakljuÄan version_status_closed: zatvoren field_active: Aktivan text_select_mail_notifications: Odaberi akcije za koje će obaveÅ¡tenje biti poslato putem e-poÅ¡te. text_regexp_info: npr. ^[A-Z0-9]+$ text_project_destroy_confirmation: Jeste li sigurni da želite da izbriÅ¡ete ovaj projekat i sve pripadajuće podatke? text_subprojects_destroy_warning: "Potprojekti: %{value} će takoÄ‘e biti izbrisan." text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla text_are_you_sure: Jeste li sigurni? text_journal_changed: "%{label} promenjen od %{old} u %{new}" text_journal_set_to: "%{label} postavljen u %{value}" text_journal_deleted: "%{label} izbrisano (%{old})" text_journal_added: "%{label} %{value} dodato" text_tip_issue_begin_day: zadatak poÄinje ovog dana text_tip_issue_end_day: zadatak se zavrÅ¡ava ovog dana text_tip_issue_begin_end_day: zadatak poÄinje i zavrÅ¡ava ovog dana text_caracters_maximum: "NajviÅ¡e %{count} znak(ova)." text_caracters_minimum: "Broj znakova mora biti najmanje %{count}." text_length_between: "Broj znakova mora biti izmeÄ‘u %{min} i %{max}." text_tracker_no_workflow: Ovo praćenje nema definisan tok posla text_unallowed_characters: Nedozvoljeni znakovi text_comma_separated: Dozvoljene su viÅ¡estruke vrednosti (odvojene zarezom). text_line_separated: Dozvoljene su viÅ¡estruke vrednosti (jedan red za svaku vrednost). text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvrÅ¡nim porukama text_issue_added: "%{author} je prijavio problem %{id}." text_issue_updated: "%{author} je ažurirao problem %{id}." text_wiki_destroy_confirmation: Jeste li sigurni da želite da obriÅ¡ete wiki i sav sadržaj? text_issue_category_destroy_question: "Nekoliko problema (%{count}) je dodeljeno ovoj kategoriji. Å ta želite da uradite?" text_issue_category_destroy_assignments: Ukloni dodeljene kategorije text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveÅ¡tenje o stvarima koje pratite ili ste ukljuÄeni (npr. problemi Äiji ste vi autor ili zastupnik)." text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla joÅ¡ uvek nisu podeÅ¡eni.\nPreporuÄljivo je da uÄitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog uÄitavanja." text_load_default_configuration: UÄitaj podrazumevano konfigurisanje text_status_changed_by_changeset: "Primenjeno u skupu sa promenama %{value}." text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbriÅ¡ete odabrane probleme?' text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen text_file_repository_writable: Fascikla priloženih datoteka je upisiva text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva text_minimagick_available: MiniMagick je dostupan (opciono) text_destroy_time_entries_question: "%{hours} sati je prijavljeno za ovaj problem koji želite izbrisati. Å ta želite da uradite?" text_destroy_time_entries: IzbriÅ¡i prijavljene sate text_assign_time_entries_to_project: Dodeli prijavljene sate projektu text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' text_user_wrote: "%{value} je napisao:" text_user_wrote_in: "%{value} je napisao (%{link}):" text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveÅ¡tenja su onemogućena.\nPodesite vaÅ¡ SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisniÄkog imena pronaÄ‘enog u evidenciji spremiÅ¡ta.\nKorisnici sa istim Redmine imenom i imenom spremiÅ¡ta ili e-adresom su automatski mapirani." text_diff_truncated: '... Ova razlika je iseÄena jer je dostignuta maksimalna veliÄina prikaza.' text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' text_wiki_page_destroy_question: "Ova stranica ima %{descendants} podreÄ‘enih stranica i podstranica. Å ta želite da uradite?" text_wiki_page_nullify_children: "Zadrži podreÄ‘ene stranice kao korene stranice" text_wiki_page_destroy_children: "IzbriÅ¡i podreÄ‘ene stranice i sve njihove podstranice" text_wiki_page_reassign_children: "Dodeli ponovo podreÄ‘ene stranice ovoj matiÄnoj stranici" text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaÅ¡ih dozvola nećete viÅ¡e moći da ureÄ‘ujete ovaj projekat.\nŽelite li da nastavite?" text_zoom_in: Uvećaj text_zoom_out: Umanji default_role_manager: Menadžer default_role_developer: Programer default_role_reporter: IzveÅ¡taÄ default_tracker_bug: GreÅ¡ka default_tracker_feature: Funkcionalnost default_tracker_support: PodrÅ¡ka default_issue_status_new: Novo default_issue_status_in_progress: U toku default_issue_status_resolved: ReÅ¡eno default_issue_status_feedback: Povratna informacija default_issue_status_closed: Zatvoreno default_issue_status_rejected: Odbijeno default_doc_category_user: KorisniÄka dokumentacija default_doc_category_tech: TehniÄka dokumentacija default_priority_low: Nizak default_priority_normal: Normalan default_priority_high: Visok default_priority_urgent: Hitno default_priority_immediate: Neposredno default_activity_design: Dizajn default_activity_development: Razvoj enumeration_issue_priorities: Prioriteti problema enumeration_doc_categories: Kategorije dokumenta enumeration_activities: Aktivnosti (praćenje vremena) enumeration_system_activity: Sistemska aktivnost field_time_entries: Vreme evidencije project_module_gantt: Gantov dijagram project_module_calendar: Kalendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Podrazumevana opcija za notifikaciju label_user_mail_option_only_my_events: Za dogadjaje koje pratim ili sam u njih ukljuÄen label_user_mail_option_none: Bez obaveÅ¡tenja field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: Projekat kome pokuÅ¡avate da pristupite je arhiviran label_principal_search: "Traži korisnike ili grupe:" label_user_search: "Traži korisnike:" field_visible: Vidljivo setting_emails_header: Email zaglavlje setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Omogući praćenje vremena notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maksimalan broj stavki na gant grafiku field_warn_on_leaving_unsaved: Upozori me ako napuÅ¡tam stranu sa tekstom koji nije snimljen text_warn_on_leaving_unsaved: Strana sadrži tekst koji nije snimljen i biće izgubljen ako je napustite. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} ažuriran" label_news_comment_added: Komentar dodat u novosti button_expand_all: ProÅ¡iri sve button_collapse_all: Zatvori sve label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Da li ste sigurni da želite da obriÅ¡ete selektovane stavke ? label_role_anonymous: Anonimus label_role_non_member: Nije Älan label_issue_note_added: Nota dodana label_issue_status_updated: Status ažuriran label_issue_priority_updated: Prioritet ažuriran label_issues_visibility_own: Problem kreiran od strane ili je dodeljen korisniku field_issues_visibility: Vidljivost problema label_issues_visibility_all: Svi problemi permission_set_own_issues_private: Podesi sopstveni problem kao privatan ili javan field_is_private: Privatno permission_set_issues_private: Podesi problem kao privatan ili javan label_issues_visibility_public: Svi javni problemi text_issues_destroy_descendants_confirmation: Ova operacija će takoÄ‘e obrisati %{count} podzadataka. field_commit_logs_encoding: Kodiranje izvrÅ¡nih poruka field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 problem one: 1 problem other: "%{count} problemi" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: svi label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Sa potprojektima label_cross_project_tree: Sa stablom projekta label_cross_project_hierarchy: Sa hijerarhijom projekta label_cross_project_system: Sa svim projektima button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Ukupno text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: E-adresa setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Celokupno utroÅ¡eno vreme notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API kljuÄ setting_lost_password: Izgubljena lozinka mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: Brisanje relacije error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sr.yml000066400000000000000000002464341500112024600172070ustar00rootroot00000000000000# Serbian translations for Redmine # by Vladimir Medarović (vlada@medarovic.com) sr: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d.%m.%Y." short: "%e %b" long: "%B %e, %Y" day_names: [недеља, понедељак, уторак, Ñреда, четвртак, петак, Ñубота] abbr_day_names: [нед, пон, уто, Ñре, чет, пет, Ñуб] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, јануар, фебруар, март, април, мај, јун, јул, авгуÑÑ‚, Ñептембар, октобар, новембар, децембар] abbr_month_names: [~, јан, феб, мар, апр, мај, јун, јул, авг, Ñеп, окт, нов, дец] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%d.%m.%Y. у %H:%M" time: "%H:%M" short: "%d. %b у %H:%M" long: "%d. %B %Y у %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "пола минута" less_than_x_seconds: one: "мање од једне Ñекунде" other: "мање од %{count} Ñек." x_seconds: one: "једна Ñекунда" other: "%{count} Ñек." less_than_x_minutes: one: "мање од минута" other: "мање од %{count} мин." x_minutes: one: "један минут" other: "%{count} мин." about_x_hours: one: "приближно један Ñат" other: "приближно %{count} Ñати" x_hours: one: "1 Ñат" other: "%{count} Ñати" x_days: one: "један дан" other: "%{count} дана" about_x_months: one: "приближно један меÑец" other: "приближно %{count} меÑеци" x_months: one: "један меÑец" other: "%{count} меÑеци" about_x_years: one: "приближно годину дана" other: "приближно %{count} год." over_x_years: one: "преко годину дана" other: "преко %{count} год." almost_x_years: one: "Ñкоро годину дана" other: "Ñкоро %{count} год." number: format: separator: "," delimiter: "." precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "и" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "није укључен у ÑпиÑак" exclusion: "је резервиÑан" invalid: "је неиÑправан" confirmation: "потврда не одговара" accepted: "мора бити прихваћен" empty: "не може бити празно" blank: "не може бити празно" too_long: "је предугачка (макÑимум знакова је %{count})" too_short: "је прекратка (минимум знакова је %{count})" wrong_length: "је погрешне дужине (број знакова мора бити %{count})" taken: "је већ у употреби" not_a_number: "није број" not_a_date: "није иÑправан датум" greater_than: "мора бити већи од %{count}" greater_than_or_equal_to: "мора бити већи или једнак %{count}" equal_to: "мора бити једнак %{count}" less_than: "мора бити мањи од %{count}" less_than_or_equal_to: "мора бити мањи или једнак %{count}" odd: "мора бити паран" even: "мора бити непаран" greater_than_start_date: "мора бити већи од почетног датума" not_same_project: "не припада иÑтом пројекту" circular_dependency: "Ова веза ће Ñтворити кружну референцу" cant_link_an_issue_with_a_descendant: "Проблем не може бити повезан Ñа једним од Ñвојих подзадатака" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Молим одаберите general_text_No: 'Ðе' general_text_Yes: 'Да' general_text_no: 'не' general_text_yes: 'да' general_lang_name: 'Serbian Cyrillic (СрпÑки)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Ðалог је уÑпешно ажуриран. notice_account_invalid_credentials: ÐеиÑправно кориÑничко име или лозинка. notice_account_password_updated: Лозинка је уÑпешно ажурирана. notice_account_wrong_password: Погрешна лозинка notice_account_register_done: КориÑнички налог је уÑпешно креиран. Кликните на линк који Ñте добили у е-поруци за активацију. notice_can_t_change_password: Овај кориÑнички налог за потврду идентитета кориÑти Ñпољни извор. Ðемогуће је променити лозинку. notice_account_lost_email_sent: ПоÑлата вам је е-порука Ñа упутÑтвом за избор нове лозинке notice_account_activated: Ваш кориÑнички налог је активиран. Сада Ñе можете пријавити. notice_successful_create: УÑпешно креирање. notice_successful_update: УÑпешно ажурирање. notice_successful_delete: УÑпешно бриÑање. notice_successful_connection: УÑпешно повезивање. notice_file_not_found: Страна којој желите приÑтупити не поÑтоји или је уклоњена. notice_locking_conflict: Податак је ажуриран од Ñтране другог кориÑника. notice_not_authorized: ÐиÑте овлашћени за приÑтуп овој Ñтрани. notice_email_sent: "E-порука је поÑлата на %{value}" notice_email_error: "Догодила Ñе грешка приликом Ñлања е-поруке (%{value})" notice_feeds_access_key_reseted: Ваш Atom приÑтупни кључ је поништен. notice_api_access_key_reseted: Ваш API приÑтупни кључ је поништен. notice_failed_to_save_issues: "ÐеуÑпешно Ñнимање %{count} проблема од %{total} одабраних: %{ids}." notice_failed_to_save_members: "ÐеуÑпешно Ñнимање члана(ова): %{errors}." notice_account_pending: "Ваш налог је креиран и чека на одобрење админиÑтратора." notice_default_data_loaded: Подразумевано конфигуриÑање је уÑпешно учитано. notice_unable_delete_version: Верзију је немогуће избриÑати. notice_unable_delete_time_entry: Ставку евиденције времена је немогуће избриÑати. notice_issue_done_ratios_updated: ÐžÐ´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема је ажуриран. error_can_t_load_default_data: "Подразумевано конфигуриÑање је немогуће учитати: %{value}" error_scm_not_found: "Ставка или иÑправка ниÑу пронађене у Ñпремишту." error_scm_command_failed: "Грешка Ñе јавила приликом покушаја приÑтупа Ñпремишту: %{value}" error_scm_annotate: "Ставка не поÑтоји или не може бити означена." error_issue_not_found_in_project: 'Проблем није пронађен или не припада овом пројекту.' error_no_tracker_in_project: 'Ðи једно праћење није повезано Ñа овим пројектом. Молимо проверите подешавања пројекта.' error_no_default_issue_status: 'Подразумевани ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° није дефиниÑан. Молимо проверите ваше конфигуриÑање (идите на "ÐдминиÑтрација -> СтатуÑи проблема").' error_can_not_delete_custom_field: Ðемогуће је избриÑати прилагођено поље error_can_not_delete_tracker_html: "Ово праћење Ñадржи проблеме и не може бити обриÑано.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Ова улога је у употреби и не може бити обриÑана." error_can_not_reopen_issue_on_closed_version: 'Проблем додељен затвореној верзији не може бити поново отворен' error_can_not_archive_project: Овај пројекат Ñе не може архивирати error_issue_done_ratios_not_updated: "ÐžÐ´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема није ажуриран." error_workflow_copy_source: 'Молимо одаберите изворно праћење или улогу' error_workflow_copy_target: 'Молимо одаберите одредишно праћење и улогу' error_unable_delete_issue_status: 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° је немогуће обриÑати (%{value})' error_unable_to_connect: "Повезивање Ñа (%{value}) је немогуће" warning_attachments_not_saved: "%{count} датотека не може бити Ñнимљена." mail_subject_lost_password: "Ваша %{value} лозинка" mail_body_lost_password: 'За промену ваше лозинке, кликните на Ñледећи линк:' mail_subject_register: "Ðктивација вашег %{value} налога" mail_body_register: 'За активацију вашег налога, кликните на Ñледећи линк:' mail_body_account_information_external: "Ваш налог %{value} можете кориÑтити за пријаву." mail_body_account_information: Информације о вашем налогу mail_subject_account_activation_request: "Захтев за активацију налога %{value}" mail_body_account_activation_request: "Ðови кориÑник (%{value}) је региÑтрован. Ðалог чека на ваше одобрење:" mail_subject_reminder: "%{count} проблема доÑпева наредних %{days} дана" mail_body_reminder: "%{count} проблема додељених вама доÑпева у наредних %{days} дана:" mail_subject_wiki_content_added: "Wiki Ñтраница '%{id}' је додата" mail_body_wiki_content_added: "%{author} је додао wiki Ñтраницу '%{id}'." mail_subject_wiki_content_updated: "Wiki Ñтраница '%{id}' је ажурирана" mail_body_wiki_content_updated: "%{author} је ажурирао wiki Ñтраницу '%{id}'." field_name: Ðазив field_description: ÐžÐ¿Ð¸Ñ field_summary: Резиме field_is_required: Обавезно field_firstname: Име field_lastname: Презиме field_mail: Е-адреÑа field_filename: Датотека field_filesize: Величина field_downloads: Преузимања field_author: Ðутор field_created_on: Креирано field_updated_on: Ðжурирано field_field_format: Формат field_is_for_all: За Ñве пројекте field_possible_values: Могуће вредноÑти field_regexp: Регуларан израз field_min_length: Минимална дужина field_max_length: МакÑимална дужина field_value: ВредноÑÑ‚ field_category: Категорија field_title: ÐаÑлов field_project: Пројекат field_issue: Проблем field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_notes: Белешке field_is_closed: Затворен проблем field_is_default: Подразумевана вредноÑÑ‚ field_tracker: Праћење field_subject: Предмет field_due_date: Крајњи рок field_assigned_to: Додељено field_priority: Приоритет field_fixed_version: Одредишна верзија field_user: КориÑник field_principal: User or Group field_role: Улога field_homepage: Почетна Ñтраница field_is_public: Јавно објављивање field_parent: Потпројекат од field_is_in_roadmap: Проблеми приказани у плану рада field_login: КориÑничко име field_mail_notification: Обавештења путем е-поште field_admin: ÐдминиÑтратор field_last_login_on: ПоÑледње повезивање field_language: Језик field_effective_date: Датум field_password: Лозинка field_new_password: Ðова лозинка field_password_confirmation: Потврда лозинке field_version: Верзија field_type: Тип field_host: Главни рачунар field_port: Порт field_account: КориÑнички налог field_base_dn: Базни DN field_attr_login: Ðтрибут пријављивања field_attr_firstname: Ðтрибут имена field_attr_lastname: Ðтрибут презимена field_attr_mail: Ðтрибут е-адреÑе field_onthefly: Креирање кориÑника у току рада field_start_date: Почетак field_done_ratio: "% урађено" field_auth_source: Режим потврде идентитета field_hide_mail: Сакриј моју е-адреÑу field_comments: Коментар field_url: URL field_start_page: Почетна Ñтраница field_subproject: Потпројекат field_hours: Ñати field_activity: ÐктивноÑÑ‚ field_spent_on: Датум field_identifier: Идентификатор field_is_filter: Употреби као филтер field_issue_to: Сродни проблеми field_delay: Кашњење field_assignable: Проблем може бити додељен овој улози field_redirect_existing_links: ПреуÑмери поÑтојеће везе field_estimated_hours: Протекло време field_column_names: Колоне field_time_zone: ВременÑка зона field_searchable: Може да Ñе претражује field_default_value: Подразумевана вредноÑÑ‚ field_comments_sorting: Прикажи коментаре field_parent_title: Матична Ñтраница field_editable: Изменљиво field_watcher: ПоÑматрач field_content: Садржај field_group_by: ГрупиÑање резултата по field_sharing: Дељење field_parent_issue: Матични задатак setting_app_title: ÐаÑлов апликације setting_welcome_text: ТекÑÑ‚ добродошлице setting_default_language: Подразумевани језик setting_login_required: Обавезна потврда идентитета setting_self_registration: СаморегиÑтрација setting_attachment_max_size: МакÑ. величина приложене датотеке setting_issues_export_limit: Ограничење извоза „проблема“ setting_mail_from: Е-адреÑа пошиљаоца setting_plain_text_mail: Порука Ñа чиÑтим текÑтом (без HTML-а) setting_host_name: Путања и назив главног рачунара setting_text_formatting: Обликовање текÑта setting_wiki_compression: КомпреÑија Wiki иÑторије setting_feeds_limit: Ограничење Ñадржаја извора веÑти setting_default_projects_public: Подразумева Ñе јавно приказивање нових пројеката setting_autofetch_changesets: Извршавање аутоматÑког преузимања setting_sys_api_enabled: Омогућавање WS за управљање Ñпремиштем setting_commit_ref_keywords: Референцирање кључних речи setting_commit_fix_keywords: Поправљање кључних речи setting_autologin: ÐутоматÑка пријава setting_date_format: Формат датума setting_time_format: Формат времена setting_cross_project_issue_relations: Дозволи повезивање проблема из унакрÑних пројеката setting_issue_list_default_columns: Подразумеване колоне приказане на ÑпиÑку проблема setting_emails_footer: Подножје Ñтранице е-поруке setting_protocol: Протокол setting_per_page_options: Опције приказа објеката по Ñтраници setting_user_format: Формат приказа кориÑника setting_activity_days_default: Број дана приказаних на пројектној активноÑти setting_display_subprojects_issues: Приказуј проблеме из потпројеката на главном пројекту, уколико није другачије наведено setting_enabled_scm: Омогућавање SCM setting_mail_handler_body_delimiters: "Скраћивање е-поруке након једне од ових линија" setting_mail_handler_api_enabled: Омогућавање WS долазне е-поруке setting_mail_handler_api_key: API кључ setting_sequential_project_identifiers: ГенериÑање Ñеквенцијалног имена пројекта setting_gravatar_enabled: КориÑти Gravatar кориÑничке иконе setting_gravatar_default: Подразумевана Gravatar Ñлика setting_diff_max_lines_displayed: МакÑ. број приказаних различитих линија setting_file_max_size_displayed: МакÑ. величина текÑÑ‚. датотека приказаних уметнуто setting_repository_log_display_limit: МакÑ. број ревизија приказаних у датотеци за евиденцију setting_password_min_length: Минимална дужина лозинке setting_new_project_user_role_id: Креатору пројекта (који није админиÑтратор) додељује је улога setting_default_projects_modules: Подразумевано омогућени модули за нове пројекте setting_issue_done_ratio: Израчунај Ð¾Ð´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема setting_issue_done_ratio_issue_field: кориÑтећи поље проблема setting_issue_done_ratio_issue_status: кориÑтећи ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° setting_start_of_week: Први дан у Ñедмици setting_rest_api_enabled: Омогући REST web уÑлуге setting_cache_formatted_text: Кеширање обрађеног текÑта permission_add_project: Креирање пројекта permission_add_subprojects: Креирање потпојекта permission_edit_project: Измена пројеката permission_select_project_modules: Одабирање модула пројекта permission_manage_members: Управљање члановима permission_manage_project_activities: Управљање пројектним активноÑтима permission_manage_versions: Управљање верзијама permission_manage_categories: Управљање категоријама проблема permission_view_issues: Преглед проблема permission_add_issues: Додавање проблема permission_edit_issues: Измена проблема permission_manage_issue_relations: Управљање везама између проблема permission_add_issue_notes: Додавање белешки permission_edit_issue_notes: Измена белешки permission_edit_own_issue_notes: Измена ÑопÑтвених белешки permission_delete_issues: БриÑање проблема permission_manage_public_queries: Управљање јавним упитима permission_save_queries: Снимање упита permission_view_gantt: Прегледање Гантовог дијаграма permission_view_calendar: Прегледање календара permission_view_issue_watchers: Прегледање ÑпиÑка поÑматрача permission_add_issue_watchers: Додавање поÑматрача permission_delete_issue_watchers: БриÑање поÑматрача permission_log_time: Бележење утрошеног времена permission_view_time_entries: Прегледање утрошеног времена permission_edit_time_entries: Измена утрошеног времена permission_edit_own_time_entries: Измена ÑопÑтвеног утрошеног времена permission_manage_news: Управљање веÑтима permission_comment_news: КоментариÑање веÑти permission_view_documents: Прегледање докумената permission_manage_files: Управљање датотекама permission_view_files: Прегледање датотека permission_manage_wiki: Управљање wiki Ñтраницама permission_rename_wiki_pages: Промена имена wiki Ñтраницама permission_delete_wiki_pages: БриÑање wiki Ñтраница permission_view_wiki_pages: Прегледање wiki Ñтраница permission_view_wiki_edits: Прегледање wiki иÑторије permission_edit_wiki_pages: Измена wiki Ñтраница permission_delete_wiki_pages_attachments: БриÑање приложених датотека permission_protect_wiki_pages: Заштита wiki Ñтраница permission_manage_repository: Управљање Ñпремиштем permission_browse_repository: Прегледање Ñпремишта permission_view_changesets: Прегледање Ñкупа промена permission_commit_access: Потврда приÑтупа permission_manage_boards: Управљање форумима permission_view_messages: Прегледање порука permission_add_messages: Слање порука permission_edit_messages: Измена порука permission_edit_own_messages: Измена ÑопÑтвених порука permission_delete_messages: БриÑање порука permission_delete_own_messages: БриÑање ÑопÑтвених порука permission_export_wiki_pages: Извоз wiki Ñтраница permission_manage_subtasks: Управљање подзадацима project_module_issue_tracking: Праћење проблема project_module_time_tracking: Праћење времена project_module_news: ВеÑти project_module_documents: Документи project_module_files: Датотеке project_module_wiki: Wiki project_module_repository: Спремиште project_module_boards: Форуми label_user: КориÑник label_user_plural: КориÑници label_user_new: Ðови кориÑник label_user_anonymous: Ðнониман label_project: Пројекат label_project_new: Ðови пројекат label_project_plural: Пројекти label_x_projects: zero: нема пројеката one: један пројекат other: "%{count} пројеката" label_project_all: Сви пројекти label_project_latest: ПоÑледњи пројекти label_issue: Проблем label_issue_new: Ðови проблем label_issue_plural: Проблеми label_issue_view_all: Приказ Ñвих проблема label_issues_by: "Проблеми (%{value})" label_issue_added: Проблем је додат label_issue_updated: Проблем је ажуриран label_document: Документ label_document_new: Ðови документ label_document_plural: Документи label_document_added: Документ је додат label_role: Улога label_role_plural: Улоге label_role_new: Ðова улога label_role_and_permissions: Улоге и дозволе label_member: Члан label_member_new: Ðови члан label_member_plural: Чланови label_tracker: Праћење label_tracker_plural: Праћења label_tracker_new: Ðово праћење label_workflow: Ток поÑла label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° label_issue_status_plural: СтатуÑи проблема label_issue_status_new: Ðови ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_category: Категорија проблема label_issue_category_plural: Категорије проблема label_issue_category_new: Ðова категорија label_custom_field: Прилагођено поље label_custom_field_plural: Прилагођена поља label_custom_field_new: Ðово прилагођено поље label_enumerations: Ðабројива лиÑта label_enumeration_new: Ðова вредноÑÑ‚ label_information: Информација label_information_plural: Информације label_register: РегиÑтрација label_password_lost: Изгубљена лозинка label_home: Почетак label_my_page: Моја Ñтраница label_my_account: Мој налог label_my_projects: Моји пројекти label_administration: ÐдминиÑтрација label_login: Пријава label_logout: Одјава label_help: Помоћ label_reported_issues: Пријављени проблеми label_assigned_to_me_issues: Проблеми додељени мени label_registered_on: РегиÑтрован label_activity: ÐктивноÑÑ‚ label_user_activity: "ÐктивноÑÑ‚ кориÑника %{value}" label_new: Ðово label_logged_as: Пријављени Ñте као label_environment: Окружење label_authentication: Потврда идентитета label_auth_source: Режим потврде идентитета label_auth_source_new: Ðови режим потврде идентитета label_auth_source_plural: Режими потврде идентитета label_subproject_plural: Потпројекти label_subproject_new: Ðови потпројекат label_and_its_subprojects: "%{value} и његови потпројекти" label_min_max_length: Мин. - МакÑ. дужина label_list: СпиÑак label_date: Датум label_integer: Цео број label_float: Са покретним зарезом label_boolean: Логички оператор label_string: ТекÑÑ‚ label_text: Дуги текÑÑ‚ label_attribute: ОÑобина label_attribute_plural: ОÑобине label_no_data: Ðема података за приказивање label_change_status: Промена ÑтатуÑа label_history: ИÑторија label_attachment: Датотека label_attachment_new: Ðова датотека label_attachment_delete: БриÑање датотеке label_attachment_plural: Датотеке label_file_added: Датотека је додата label_report: Извештај label_report_plural: Извештаји label_news: ВеÑти label_news_new: Додавање веÑти label_news_plural: ВеÑти label_news_latest: ПоÑледње веÑти label_news_view_all: Приказ Ñвих веÑти label_news_added: ВеÑти Ñу додате label_settings: Подешавања label_overview: Преглед label_version: Верзија label_version_new: Ðова верзија label_version_plural: Верзије label_close_versions: Затвори завршене верзије label_confirmation: Потврда label_export_to: 'Такође доÑтупно и у варијанти:' label_read: Читање... label_public_projects: Јавни пројекти label_open_issues: отворен label_open_issues_plural: отворених label_closed_issues: затворен label_closed_issues_plural: затворених label_x_open_issues_abbr: zero: 0 отворених one: 1 отворен other: "%{count} отворених" label_x_closed_issues_abbr: zero: 0 затворених one: 1 затворен other: "%{count} затворених" label_total: Укупно label_permissions: Дозволе label_current_status: Тренутни ÑÑ‚Ð°Ñ‚ÑƒÑ label_new_statuses_allowed: Ðови ÑтатуÑи дозвољени label_all: Ñви label_none: ниједан label_nobody: никоме label_next: Следеће label_previous: Претходно label_used_by: КориÑтио label_details: Детаљи label_add_note: Додај белешку label_calendar: Календар label_months_from: меÑеци од label_gantt: Гантов дијаграм label_internal: Унутрашњи label_last_changes: "поÑледњих %{count} промена" label_change_view_all: Прикажи Ñве промене label_comment: Коментар label_comment_plural: Коментари label_x_comments: zero: без коментара one: један коментар other: "%{count} коментара" label_comment_add: Додај коментар label_comment_added: Коментар додат label_comment_delete: Обриши коментаре label_query: Прилагођен упит label_query_plural: Прилагођени упити label_query_new: Ðови упит label_filter_add: Додавање филтера label_filter_plural: Филтери label_equals: је label_not_equals: није label_in_less_than: мање од label_in_more_than: више од label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: у label_today: Ð´Ð°Ð½Ð°Ñ label_yesterday: јуче label_this_week: ове Ñедмице label_last_week: поÑледње Ñедмице label_last_n_days: "поÑледњих %{count} дана" label_this_month: овог меÑеца label_last_month: поÑледњег меÑеца label_this_year: ове године label_date_range: ВременÑки период label_less_than_ago: пре мање од неколико дана label_more_than_ago: пре више од неколико дана label_ago: пре неколико дана label_contains: Ñадржи label_not_contains: не Ñадржи label_day_plural: дана label_repository: Спремиште label_repository_plural: Спремишта label_branch: Грана label_tag: Ознака label_revision: Ревизија label_revision_plural: Ревизије label_revision_id: "Ревизија %{value}" label_associated_revisions: Придружене ревизије label_added: додато label_modified: промењено label_copied: копирано label_renamed: преименовано label_deleted: избриÑано label_latest_revision: ПоÑледња ревизија label_latest_revision_plural: ПоÑледње ревизије label_view_revisions: Преглед ревизија label_view_all_revisions: Преглед Ñвих ревизија label_max_size: МакÑимална величина label_roadmap: План рада label_roadmap_due_in: "ДоÑпева %{value}" label_roadmap_overdue: "%{value} најкаÑније" label_roadmap_no_issues: Ðема проблема за ову верзију label_search: Претрага label_result_plural: Резултати label_all_words: Све речи label_wiki: Wiki label_wiki_edit: Wiki измена label_wiki_edit_plural: Wiki измене label_wiki_page: Wiki Ñтраница label_wiki_page_plural: Wiki Ñтранице label_index_by_title: ИндекÑирање по наÑлову label_index_by_date: ИндекÑирање по датуму label_current_version: Тренутна верзија label_preview: Преглед label_feed_plural: Извори веÑти label_changes_details: Детаљи Ñвих промена label_issue_tracking: Праћење проблема label_spent_time: Утрошено време label_f_hour: "%{value} Ñат" label_f_hour_plural: "%{value} Ñати" label_time_tracking: Праћење времена label_change_plural: Промене label_statistics: СтатиÑтика label_commits_per_month: Извршења меÑечно label_commits_per_author: Извршења по аутору label_view_diff: Погледај разлике label_diff_inline: унутра label_diff_side_by_side: упоредо label_options: Опције label_copy_workflow_from: Копирање тока поÑла од label_permissions_report: Извештај о дозволама label_watched_issues: ПоÑматрани проблеми label_related_issues: Сродни проблеми label_applied_status: Примењени ÑтатуÑи label_loading: Учитавање... label_relation_new: Ðова релација label_relation_delete: БриÑање релације label_relates_to: Ñродних Ñа label_duplicates: дуплираних label_duplicated_by: дуплираних од label_blocks: одбијених label_blocked_by: одбијених од label_precedes: претходи label_follows: праћених label_stay_logged_in: ОÑтаните пријављени label_disabled: онемогућено label_show_completed_versions: Приказивање завршене верзије label_me: мени label_board: Форум label_board_new: Ðови форум label_board_plural: Форуми label_board_locked: Закључана label_board_sticky: Лепљива label_topic_plural: Теме label_message_plural: Поруке label_message_last: ПоÑледња порука label_message_new: Ðова порука label_message_posted: Порука је додата label_reply_plural: Одговори label_send_information: Пошаљи кориÑнику детаље налога label_year: Година label_month: МеÑец label_week: Седмица label_date_from: Шаље label_date_to: Прима label_language_based: Базирано на језику кориÑника label_sort_by: "Сортирано по %{value}" label_send_test_email: Слање пробне е-поруке label_feeds_access_key: Atom приÑтупни кључ label_missing_feeds_access_key: Atom приÑтупни кључ недоÑтаје label_feeds_access_key_created_on: "Atom приÑтупни кључ је направљен пре %{value}" label_module_plural: Модули label_added_time_by: "Додао %{author} пре %{age}" label_updated_time_by: "Ðжурирао %{author} пре %{age}" label_updated_time: "Ðжурирано пре %{value}" label_jump_to_a_project: Скок на пројекат... label_file_plural: Датотеке label_changeset_plural: Скупови промена label_default_columns: Подразумеване колоне label_no_change_option: (Без промена) label_bulk_edit_selected_issues: Групна измена одабраних проблема label_theme: Тема label_default: Подразумевано label_search_titles_only: Претражуј Ñамо наÑлове label_user_mail_option_all: "За било који догађај на Ñвим мојим пројектима" label_user_mail_option_selected: "За било који догађај на Ñамо одабраним пројектима..." label_user_mail_no_self_notified: "Ðе желим бити обавештаван за промене које Ñам правим" label_registration_activation_by_email: активација налога путем е-поруке label_registration_manual_activation: ручна активација налога label_registration_automatic_activation: аутоматÑка активација налога label_display_per_page: "Број Ñтавки по Ñтраници: %{value}" label_age: СтароÑÑ‚ label_change_properties: Промени ÑвојÑтва label_general: Општи label_scm: SCM label_plugins: Додатне компоненте label_ldap_authentication: LDAP потврда идентитета label_downloads_abbr: D/L label_optional_description: Опционо Ð¾Ð¿Ð¸Ñ label_add_another_file: Додај још једну датотеку label_preferences: Подешавања label_chronological_order: по хронолошком редоÑледу label_reverse_chronological_order: по обрнутом хронолошком редоÑледу label_incoming_emails: Долазне е-поруке label_generate_key: ГенериÑање кључа label_issue_watchers: ПоÑматрачи label_example: Пример label_display: Приказ label_sort: Сортирање label_ascending: РаÑтући низ label_descending: Опадајући низ label_date_from_to: Од %{start} до %{end} label_wiki_content_added: Wiki Ñтраница је додата label_wiki_content_updated: Wiki Ñтраница је ажурирана label_group: Група label_group_plural: Групе label_group_new: Ðова група label_time_entry_plural: Утрошено време label_version_sharing_none: Ðије дељено label_version_sharing_descendants: Са потпројектима label_version_sharing_hierarchy: Са хијерархијом пројекта label_version_sharing_tree: Са Ñтаблом пројекта label_version_sharing_system: Са Ñвим пројектима label_update_issue_done_ratios: Ðжурирај Ð¾Ð´Ð½Ð¾Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ… проблема label_copy_source: Извор label_copy_target: Одредиште label_copy_same_as_target: ИÑто као одредиште label_display_used_statuses_only: Приказуј ÑтатуÑе коришћене Ñамо од Ñтране овог праћења label_api_access_key: API приÑтупни кључ label_missing_api_access_key: ÐедоÑтаје API приÑтупни кључ label_api_access_key_created_on: "API приÑтупни кључ је креиран пре %{value}" label_profile: Профил label_subtask_plural: Подзадатак label_project_copy_notifications: Пошаљи е-поруку Ñа обавештењем приликом копирања пројекта button_login: Пријава button_submit: Пошаљи button_save: Сними button_check_all: Укључи Ñве button_uncheck_all: ИÑкључи Ñве button_delete: Избриши button_create: Креирај button_create_and_continue: Креирај и наÑтави button_test: ТеÑÑ‚ button_edit: Измени button_add: Додај button_change: Промени button_apply: Примени button_clear: Обриши button_lock: Закључај button_unlock: Откључај button_download: Преузми button_list: СпиÑак button_view: Прикажи button_move: Помери button_move_and_follow: Помери и прати button_back: Ðазад button_cancel: Поништи button_activate: Ðктивирај button_sort: Сортирај button_log_time: Евидентирај време button_rollback: Повратак на ову верзију button_watch: Прати button_unwatch: Ðе прати више button_reply: Одговори button_archive: Ðрхивирај button_unarchive: Врати из архиве button_reset: Поништи button_rename: Преименуј button_change_password: Промени лозинку button_copy: Копирај button_copy_and_follow: Копирај и прати button_annotate: Прибележи button_update: Ðжурирај button_configure: ПодеÑи button_quote: Под наводницима button_show: Прикажи status_active: активни status_registered: региÑтровани status_locked: закључани version_status_open: отворен version_status_locked: закључан version_status_closed: затворен field_active: Ðктиван text_select_mail_notifications: Одабери акције за које ће обавештење бити поÑлато путем е-поште. text_regexp_info: нпр. ^[A-Z0-9]+$ text_project_destroy_confirmation: ЈеÑте ли Ñигурни да желите да избришете овај пројекат и Ñве припадајуће податке? text_subprojects_destroy_warning: "Потпројекти: %{value} ће такође бити избриÑан." text_workflow_edit: Одаберите улогу и праћење за измену тока поÑла text_are_you_sure: ЈеÑте ли Ñигурни? text_journal_changed: "%{label} промењен од %{old} у %{new}" text_journal_set_to: "%{label} поÑтављен у %{value}" text_journal_deleted: "%{label} избриÑано (%{old})" text_journal_added: "%{label} %{value} додато" text_tip_issue_begin_day: задатак почиње овог дана text_tip_issue_end_day: задатак Ñе завршава овог дана text_tip_issue_begin_end_day: задатак почиње и завршава овог дана text_caracters_maximum: "Ðајвише %{count} знак(ова)." text_caracters_minimum: "Број знакова мора бити најмање %{count}." text_length_between: "Број знакова мора бити између %{min} и %{max}." text_tracker_no_workflow: Ово праћење нема дефиниÑан ток поÑла text_unallowed_characters: Ðедозвољени знакови text_comma_separated: Дозвољене Ñу вишеÑтруке вредноÑти (одвојене зарезом). text_line_separated: Дозвољене Ñу вишеÑтруке вредноÑти (један ред за Ñваку вредноÑÑ‚). text_issues_ref_in_commit_messages: Референцирање и поправљање проблема у извршним порукама text_issue_added: "%{author} је пријавио проблем %{id}." text_issue_updated: "%{author} је ажурирао проблем %{id}." text_wiki_destroy_confirmation: ЈеÑте ли Ñигурни да желите да обришете wiki и Ñав Ñадржај? text_issue_category_destroy_question: "Ðеколико проблема (%{count}) је додељено овој категорији. Шта желите да урадите?" text_issue_category_destroy_assignments: Уклони додељене категорије text_issue_category_reassign_to: Додели поново проблеме овој категорији text_user_mail_option: "За неизабране пројекте, добићете Ñамо обавештење о Ñтварима које пратите или Ñте укључени (нпр. проблеми чији Ñте ви аутор или заÑтупник)." text_no_configuration_data: "Улоге, праћења, ÑтатуÑи проблема и тока поÑла још увек ниÑу подешени.\nПрепоручљиво је да учитате подразумевано конфигуриÑање. Измена је могућа након првог учитавања." text_load_default_configuration: Учитај подразумевано конфигуриÑање text_status_changed_by_changeset: "Примењено у Ñкупу Ñа променама %{value}." text_issues_destroy_confirmation: 'ЈеÑте ли Ñигурни да желите да избришете одабране проблеме?' text_select_project_modules: 'Одаберите модуле које желите омогућити за овај пројекат:' text_default_administrator_account_changed: Подразумевани админиÑтраторÑки налог је промењен text_file_repository_writable: ФаÑцикла приложених датотека је упиÑива text_plugin_assets_writable: ФаÑцикла елемената додатних компоненти је упиÑива text_minimagick_available: MiniMagick је доÑтупан (опционо) text_destroy_time_entries_question: "%{hours} Ñати је пријављено за овај проблем који желите избриÑати. Шта желите да урадите?" text_destroy_time_entries: Избриши пријављене Ñате text_assign_time_entries_to_project: Додели пријављене Ñате пројекту text_reassign_time_entries: 'Додели поново пријављене Ñате овом проблему:' text_user_wrote: "%{value} је напиÑао:" text_user_wrote_in: "%{value} је напиÑао (%{link}):" text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредноÑти." text_enumeration_category_reassign_to: 'Додели их поново овој вредноÑти:' text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање." text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориÑнике мапирањем Ñваког кориÑничког имена пронађеног у евиденцији Ñпремишта.\nКориÑници Ñа иÑтим Redmine именом и именом Ñпремишта или е-адреÑом Ñу аутоматÑки мапирани." text_diff_truncated: '... Ова разлика је иÑечена јер је доÑтигнута макÑимална величина приказа.' text_custom_field_possible_values_info: 'Један ред за Ñваку вредноÑÑ‚' text_wiki_page_destroy_question: "Ова Ñтраница има %{descendants} подређених Ñтраница и подÑтраница. Шта желите да урадите?" text_wiki_page_nullify_children: "Задржи подређене Ñтранице као корене Ñтранице" text_wiki_page_destroy_children: "Избриши подређене Ñтранице и Ñве њихове подÑтранице" text_wiki_page_reassign_children: "Додели поново подређене Ñтранице овој матичној Ñтраници" text_own_membership_delete_confirmation: "Ðакон уклањања појединих или Ñвих ваших дозвола нећете више моћи да уређујете овај пројекат.\nЖелите ли да наÑтавите?" text_zoom_in: Увећај text_zoom_out: Умањи default_role_manager: Менаџер default_role_developer: Програмер default_role_reporter: Извештач default_tracker_bug: Грешка default_tracker_feature: ФункционалноÑÑ‚ default_tracker_support: Подршка default_issue_status_new: Ðово default_issue_status_in_progress: У току default_issue_status_resolved: Решено default_issue_status_feedback: Повратна информација default_issue_status_closed: Затворено default_issue_status_rejected: Одбијено default_doc_category_user: КориÑничка документација default_doc_category_tech: Техничка документација default_priority_low: Ðизак default_priority_normal: Ðормалан default_priority_high: ВиÑок default_priority_urgent: Хитно default_priority_immediate: ÐепоÑредно default_activity_design: Дизајн default_activity_development: Развој enumeration_issue_priorities: Приоритети проблема enumeration_doc_categories: Категорије документа enumeration_activities: ÐктивноÑти (праћење времена) enumeration_system_activity: СиÑтемÑка активноÑÑ‚ field_time_entries: Време евиденције project_module_gantt: Гантов дијаграм project_module_calendar: Календар button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Кодирање извршних порука field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 Проблем one: 1 Проблем other: "%{count} Проблеми" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: Ñви label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: Са потпројектима label_cross_project_tree: Са Ñтаблом пројекта label_cross_project_hierarchy: Са хијерархијом пројекта label_cross_project_system: Са Ñвим пројектима button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: Укупно text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: Е-адреÑа setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Целокупно утрошено време notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API кључ setting_lost_password: Изгубљена лозинка mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: БриÑање релације error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/sv.yml000066400000000000000000002213201500112024600171760ustar00rootroot00000000000000# Swedish translation for Ruby on Rails # by Johan Lundström (johanlunds@gmail.com), # with parts taken from http://github.com/daniel/swe_rails # Update based on Redmine 2.6.0 by Khedron Wilk (khedron.wilk@gmail.com) 6th Dec 2014 sv: number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) separator: "," # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) delimiter: "." # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) precision: 2 # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) format: "%n %u" unit: "kr" # These three are to override number.format and are optional # separator: "." # delimiter: "," # precision: 2 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: half_a_minute: "en halv minut" less_than_x_seconds: one: "mindre än en sekund" other: "mindre än %{count} sekunder" x_seconds: one: "en sekund" other: "%{count} sekunder" less_than_x_minutes: one: "mindre än en minut" other: "mindre än %{count} minuter" x_minutes: one: "en minut" other: "%{count} minuter" about_x_hours: one: "ungefär en timme" other: "ungefär %{count} timmar" x_hours: one: "1 timme" other: "%{count} timmar" x_days: one: "en dag" other: "%{count} dagar" about_x_months: one: "ungefär en mÃ¥nad" other: "ungefär %{count} mÃ¥nader" x_months: one: "en mÃ¥nad" other: "%{count} mÃ¥nader" about_x_years: one: "ungefär ett Ã¥r" other: "ungefär %{count} Ã¥r" over_x_years: one: "mer än ett Ã¥r" other: "mer än %{count} Ã¥r" almost_x_years: one: "nästan 1 Ã¥r" other: "nästan %{count} Ã¥r" activerecord: errors: template: header: one: "Ett fel förhindrade denna %{model} frÃ¥n att sparas" other: "%{count} fel förhindrade denna %{model} frÃ¥n att sparas" # The variable :count is also available body: "Det var problem med följande fält:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: inclusion: "finns inte i listan" exclusion: "är reserverat" invalid: "är ogiltigt" confirmation: "stämmer inte överens" accepted : "mÃ¥ste vara accepterad" empty: "fÃ¥r ej vara tom" blank: "mÃ¥ste anges" too_long: "är för lÃ¥ng (maximum är %{count} tecken)" too_short: "är för kort (minimum är %{count} tecken)" wrong_length: "har fel längd (ska vara %{count} tecken)" taken: "har redan tagits" not_a_number: "är inte ett nummer" greater_than: "mÃ¥ste vara större än %{count}" greater_than_or_equal_to: "mÃ¥ste vara större än eller lika med %{count}" equal_to: "mÃ¥ste vara samma som" less_than: "mÃ¥ste vara mindre än %{count}" less_than_or_equal_to: "mÃ¥ste vara mindre än eller lika med %{count}" odd: "mÃ¥ste vara udda" even: "mÃ¥ste vara jämnt" greater_than_start_date: "mÃ¥ste vara senare än startdatumet" not_same_project: "tillhör inte samma projekt" circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende" cant_link_an_issue_with_a_descendant: "Ett ärende kan inte länkas till ett av dess underärenden" earlier_than_minimum_start_date: "kan inte vara tidigare än %{date} pÃ¥ grund av föregÃ¥ende ärenden" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%e %b" long: "%e %B, %Y" day_names: [söndag, mÃ¥ndag, tisdag, onsdag, torsdag, fredag, lördag] abbr_day_names: [sön, mÃ¥n, tis, ons, tor, fre, lör] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, januari, februari, mars, april, maj, juni, juli, augusti, september, oktober, november, december] abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, aug, sep, okt, nov, dec] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%Y-%m-%d %H:%M" time: "%H:%M" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "" pm: "" # Used in array.to_sentence. support: array: sentence_connector: "och" skip_last_comma: true actionview_instancetag_blank_option: Var god välj general_text_No: 'Nej' general_text_Yes: 'Ja' general_text_no: 'nej' general_text_yes: 'ja' general_lang_name: 'Swedish (Svenska)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Kontot har uppdaterats notice_account_invalid_credentials: Fel användarnamn eller lösenord notice_account_password_updated: Lösenordet har uppdaterats notice_account_wrong_password: Fel lösenord notice_account_register_done: Kontot har skapats. För att aktivera kontot, klicka pÃ¥ länken i mailet som skickades till dig. notice_can_t_change_password: Detta konto använder en extern autentiseringskälla. Det gÃ¥r inte att byta lösenord. notice_account_lost_email_sent: Ett mail med instruktioner om hur man väljer ett nytt lösenord har skickats till dig. notice_account_activated: Ditt konto har blivit aktiverat. Du kan nu logga in. notice_successful_create: Skapades korrekt. notice_successful_update: Uppdatering lyckades. notice_successful_delete: Borttagning lyckades. notice_successful_connection: Uppkoppling lyckades. notice_file_not_found: Sidan du försökte komma Ã¥t existerar inte eller är borttagen. notice_locking_conflict: Data har uppdaterats av en annan användare. notice_not_authorized: Du saknar behörighet att komma Ã¥t den här sidan. notice_not_authorized_archived_project: Projektet du försöker komma Ã¥t har arkiverats. notice_email_sent: "Ett mail skickades till %{value}" notice_email_error: "Ett fel inträffade när mail skickades (%{value})" notice_feeds_access_key_reseted: Din Atom-nyckel Ã¥terställdes. notice_api_access_key_reseted: Din API-nyckel Ã¥terställdes. notice_failed_to_save_issues: "Misslyckades med att spara %{count} ärende(n) pÃ¥ %{total} valda: %{ids}." notice_failed_to_save_time_entries: "Misslyckades med att spara %{count} tidloggning(ar) pÃ¥ %{total} valda: %{ids}." notice_failed_to_save_members: "Misslyckades med att spara medlem(mar): %{errors}." notice_account_pending: "Ditt konto skapades och avvaktar nu administratörens godkännande." notice_default_data_loaded: Standardkonfiguration inläst. notice_unable_delete_version: Denna version var inte möjlig att ta bort. notice_unable_delete_time_entry: Tidloggning kunde inte tas bort. notice_issue_done_ratios_updated: "% klart uppdaterade." notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som kan visas (%{max})" notice_issue_successful_create: "Ärende %{id} skapades." notice_issue_update_conflict: "Detta ärende har uppdaterats av en annan användare samtidigt som du redigerade det." notice_account_deleted: "Ditt konto har avslutats permanent." notice_user_successful_create: "Användare %{id} skapad." error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv." error_scm_command_failed: "Ett fel inträffade vid försök att nÃ¥ versionsarkivet: %{value}" error_scm_annotate: "Inlägget existerar inte eller kan inte kommenteras." error_scm_annotate_big_text_file: Inlägget kan inte annoteras eftersom det överskrider maximal storlek för textfiler. error_issue_not_found_in_project: 'Ärendet hittades inte eller sÃ¥ tillhör det inte detta projekt' error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.' error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (GÃ¥ till "Administration -> Ärendestatus").' error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält error_can_not_delete_tracker_html: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort." error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas på nytt' error_can_not_archive_project: Detta projekt kan inte arkiveras error_issue_done_ratios_not_updated: "% klart inte uppdaterade." error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll' error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mål' error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort (%{value})' error_unable_to_connect: "Kan inte ansluta (%{value})" error_attachment_too_big: "Denna fil kan inte laddas upp eftersom den överstiger maximalt tillåten filstorlek (%{max_size})" error_session_expired: "Din session har gått ut. Vänligen logga in på nytt." warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." mail_subject_lost_password: "Ditt %{value} lösenord" mail_body_lost_password: 'För att ändra ditt lösenord, klicka på följande länk:' mail_subject_register: "Din %{value} kontoaktivering" mail_body_register: 'För att aktivera ditt konto, klicka på följande länk:' mail_body_account_information_external: "Du kan använda ditt %{value}-konto för att logga in." mail_body_account_information: Din kontoinformation mail_subject_account_activation_request: "%{value} begäran om kontoaktivering" mail_body_account_activation_request: "En ny användare (%{value}) har registrerat sig och avvaktar ditt godkännande:" mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna" mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:" mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till" mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}." mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats" mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}." field_name: Namn field_description: Beskrivning field_summary: Sammanfattning field_is_required: Obligatorisk field_firstname: Förnamn field_lastname: Efternamn field_mail: Mail field_filename: Fil field_filesize: Storlek field_downloads: Nerladdningar field_author: Författare field_created_on: Skapad field_updated_on: Uppdaterad field_closed_on: Stängd field_field_format: Format field_is_for_all: För alla projekt field_possible_values: Möjliga värden field_regexp: Reguljärt uttryck field_min_length: Minimilängd field_max_length: Maxlängd field_value: Värde field_category: Kategori field_title: Titel field_project: Projekt field_issue: Ärende field_status: Status field_notes: Anteckningar field_is_closed: Ärendet är stängt field_is_default: Standardvärde field_tracker: Ärendetyp field_subject: Ämne field_due_date: Deadline field_assigned_to: Tilldelad till field_priority: Prioritet field_fixed_version: Versionsmål field_user: Användare field_principal: User or Group field_role: Roll field_homepage: Hemsida field_is_public: Publik field_parent: Underprojekt till field_is_in_roadmap: Visa ärenden i roadmap field_login: Användarnamn field_mail_notification: Mailnotifieringar field_admin: Administratör field_last_login_on: Senaste inloggning field_language: Språk field_effective_date: Datum field_password: Lösenord field_new_password: Nytt lösenord field_password_confirmation: Bekräfta lösenord field_version: Version field_type: Typ field_host: Värddator field_port: Port field_account: Konto field_base_dn: Bas-DN field_attr_login: Inloggningsattribut field_attr_firstname: Förnamnsattribut field_attr_lastname: Efternamnsattribut field_attr_mail: Mailattribut field_onthefly: Skapa användare on-the-fly field_start_date: Startdatum field_done_ratio: "% Klart" field_auth_source: Autentiseringsläge field_hide_mail: Dölj min mailadress field_comments: Kommentar field_url: URL field_start_page: Startsida field_subproject: Underprojekt field_hours: Timmar field_activity: Aktivitet field_spent_on: Datum field_identifier: Identifierare field_is_filter: Använd som filter field_issue_to: Relaterade ärenden field_delay: Fördröjning field_assignable: Ärenden kan tilldelas denna roll field_redirect_existing_links: Omdirigera existerande länkar field_estimated_hours: Estimerad tid field_column_names: Kolumner field_time_entries: Spenderad tid field_time_zone: Tidszon field_searchable: Sökbar field_default_value: Standardvärde field_comments_sorting: Visa kommentarer field_parent_title: Föräldersida field_editable: Redigerbar field_watcher: Bevakare field_content: Innehåll field_group_by: Gruppera resultat efter field_sharing: Delning field_parent_issue: Förälderaktivitet field_member_of_group: "Tilldelad användares grupp" field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält field_visible: Synlig field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text field_issues_visibility: Ärendesynlighet field_is_private: Privat field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden field_scm_path_encoding: Sökvägskodning field_path_to_repository: Sökväg till versionsarkiv field_root_directory: Rotmapp field_cvsroot: CVSROOT field_cvs_module: Modul field_repository_is_default: Huvudarkiv field_multiple: Flera värden field_auth_source_ldap_filter: LDAP-filter field_core_fields: Standardfält field_timeout: "Timeout (i sekunder)" field_board_parent: Förälderforum field_private_notes: Privata anteckningar field_inherit_members: Ärv medlemmar field_generate_password: Generera lösenord setting_app_title: Applikationsrubrik setting_welcome_text: Välkomsttext setting_default_language: Standardspråk setting_login_required: Kräver inloggning setting_self_registration: Självregistrering setting_attachment_max_size: Maxstorlek på bilaga setting_issues_export_limit: Exportgräns för ärenden setting_mail_from: Avsändaradress setting_plain_text_mail: Oformaterad text i mail (ingen HTML) setting_host_name: Värddatornamn setting_text_formatting: Textformatering setting_wiki_compression: Komprimering av wikihistorik setting_feeds_limit: Innehållsgräns för Feed setting_default_projects_public: Nya projekt är publika setting_autofetch_changesets: Automatisk hämtning av commits setting_sys_api_enabled: Aktivera WS för versionsarkivhantering setting_commit_ref_keywords: Referens-nyckelord setting_commit_fix_keywords: Fix-nyckelord setting_autologin: Automatisk inloggning setting_date_format: Datumformat setting_time_format: Tidsformat setting_cross_project_subtasks: Tillåt underaktiviteter mellan projekt setting_cross_project_issue_relations: Tillåt ärenderelationer mellan projekt setting_issue_list_default_columns: Standardkolumner i ärendelistan setting_repositories_encodings: Encoding för bilagor och versionsarkiv setting_emails_header: Mail-header setting_emails_footer: Signatur setting_protocol: Protokoll setting_per_page_options: Alternativ, objekt per sida setting_user_format: Visningsformat för användare setting_activity_days_default: Dagar som visas på projektaktivitet setting_display_subprojects_issues: Visa ärenden från underprojekt i huvudprojekt setting_enabled_scm: Aktivera SCM setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader" setting_mail_handler_api_enabled: Aktivera WS för inkommande mail setting_mail_handler_api_key: API-nyckel setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt setting_gravatar_enabled: Använd Gravatar-avatarer setting_gravatar_default: Förvald Gravatar-bild setting_diff_max_lines_displayed: Maximalt antal synliga rader i diff setting_file_max_size_displayed: Maxstorlek på textfiler som visas inline setting_repository_log_display_limit: Maximalt antal revisioner i filloggen setting_password_min_length: Minsta tillåtna lösenordslängd setting_new_project_user_role_id: Tilldelad roll för en icke-administratör som skapar ett projekt setting_default_projects_modules: Aktiverade moduler för nya projekt setting_issue_done_ratio: Beräkna % klart med setting_issue_done_ratio_issue_field: Använd ärendefältet setting_issue_done_ratio_issue_status: Använd ärendestatus setting_start_of_week: Första dagen i veckan setting_rest_api_enabled: Aktivera REST webbtjänst setting_cache_formatted_text: Cacha formaterad text setting_default_notification_option: Standard notifieringsalternativ setting_commit_logtime_enabled: Aktivera tidloggning setting_commit_logtime_activity_id: Aktivitet för loggad tid setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat setting_issue_group_assignment: Tillåt att ärenden tilldelas till grupper setting_default_issue_start_date_to_creation_date: Använd dagens datum som startdatum för nya ärenden setting_commit_cross_project_ref: Tillåt ärende i alla de andra projekten att bli refererade och fixade setting_unsubscribe: Tillåt användare att avsluta prenumereration setting_session_lifetime: Maximal sessionslivslängd setting_session_timeout: Tidsgräns för sessionsinaktivitet setting_thumbnails_enabled: Visa miniatyrbilder av bilagor setting_thumbnails_size: Storlek på miniatyrbilder (i pixlar) setting_non_working_week_days: Lediga dagar setting_jsonp_enabled: Aktivera JSONP-stöd setting_default_projects_tracker_ids: Standardärendetyper för nya projekt permission_add_project: Skapa projekt permission_add_subprojects: Skapa underprojekt permission_edit_project: Ändra projekt permission_close_project: Stänga / återöppna projektet permission_select_project_modules: Välja projektmoduler permission_manage_members: Hantera medlemmar permission_manage_project_activities: Hantera projektaktiviteter permission_manage_versions: Hantera versioner permission_manage_categories: Hantera ärendekategorier permission_add_issues: Lägga till ärenden permission_edit_issues: Ändra ärenden permission_view_issues: Visa ärenden permission_manage_issue_relations: Hantera ärenderelationer permission_set_issues_private: Sätta ärenden publika eller privata permission_set_own_issues_private: Sätta egna ärenden publika eller privata permission_add_issue_notes: Lägga till ärendeanteckning permission_edit_issue_notes: Ändra ärendeanteckningar permission_edit_own_issue_notes: Ändra egna ärendeanteckningar permission_view_private_notes: Visa privata anteckningar permission_set_notes_private: Ställa in anteckningar som privata permission_delete_issues: Ta bort ärenden permission_manage_public_queries: Hantera publika frågor permission_save_queries: Spara frågor permission_view_gantt: Visa Gantt-schema permission_view_calendar: Visa kalender permission_view_issue_watchers: Visa bevakarlista permission_add_issue_watchers: Lägga till bevakare permission_delete_issue_watchers: Ta bort bevakare permission_log_time: Logga spenderad tid permission_view_time_entries: Visa spenderad tid permission_edit_time_entries: Ändra tidloggningar permission_edit_own_time_entries: Ändra egna tidloggningar permission_manage_news: Hantera nyheter permission_comment_news: Kommentera nyheter permission_view_documents: Visa dokument permission_add_documents: Lägga till dokument permission_edit_documents: Ändra dokument permission_delete_documents: Ta bort dokument permission_manage_files: Hantera filer permission_view_files: Visa filer permission_manage_wiki: Hantera wiki permission_rename_wiki_pages: Byta namn på wikisidor permission_delete_wiki_pages: Ta bort wikisidor permission_view_wiki_pages: Visa wiki permission_view_wiki_edits: Visa wikihistorik permission_edit_wiki_pages: Ändra wikisidor permission_delete_wiki_pages_attachments: Ta bort bilagor permission_protect_wiki_pages: Skydda wikisidor permission_manage_repository: Hantera versionsarkiv permission_browse_repository: Bläddra i versionsarkiv permission_view_changesets: Visa changesets permission_commit_access: Commit-åtkomst permission_manage_boards: Hantera forum permission_view_messages: Visa meddelanden permission_add_messages: Lägg till meddelanden permission_edit_messages: Ändra meddelanden permission_edit_own_messages: Ändra egna meddelanden permission_delete_messages: Ta bort meddelanden permission_delete_own_messages: Ta bort egna meddelanden permission_export_wiki_pages: Exportera wikisidor permission_manage_subtasks: Hantera underaktiviteter permission_manage_related_issues: Hantera relaterade ärenden project_module_issue_tracking: Ärendeuppföljning project_module_time_tracking: Tidsuppföljning project_module_news: Nyheter project_module_documents: Dokument project_module_files: Filer project_module_wiki: Wiki project_module_repository: Versionsarkiv project_module_boards: Forum project_module_calendar: Kalender project_module_gantt: Gantt label_user: Användare label_user_plural: Användare label_user_new: Ny användare label_user_anonymous: Anonym label_project: Projekt label_project_new: Nytt projekt label_project_plural: Projekt label_x_projects: zero: inga projekt one: 1 projekt other: "%{count} projekt" label_project_all: Alla projekt label_project_latest: Senaste projekt label_issue: Ärende label_issue_new: Nytt ärende label_issue_plural: Ärenden label_issue_view_all: Visa alla ärenden label_issues_by: "Ärenden %{value}" label_issue_added: Ärende tillagt label_issue_updated: Ärende uppdaterat label_issue_note_added: Anteckning tillagd label_issue_status_updated: Status uppdaterad label_issue_priority_updated: Prioritet uppdaterad label_document: Dokument label_document_new: Nytt dokument label_document_plural: Dokument label_document_added: Dokument tillagt label_role: Roll label_role_plural: Roller label_role_new: Ny roll label_role_and_permissions: Roller och behörigheter label_role_anonymous: Anonym label_role_non_member: Icke-medlem label_member: Medlem label_member_new: Ny medlem label_member_plural: Medlemmar label_tracker: Ärendetyp label_tracker_plural: Ärendetyper label_tracker_new: Ny ärendetyp label_workflow: Arbetsflöde label_issue_status: Ärendestatus label_issue_status_plural: Ärendestatus label_issue_status_new: Ny status label_issue_category: Ärendekategori label_issue_category_plural: Ärendekategorier label_issue_category_new: Ny kategori label_custom_field: Användardefinerat fält label_custom_field_plural: Användardefinerade fält label_custom_field_new: Nytt användardefinerat fält label_enumerations: Uppräkningar label_enumeration_new: Nytt värde label_information: Information label_information_plural: Information label_register: Registrera label_password_lost: Glömt lösenord label_home: Hem label_my_page: Min sida label_my_account: Mitt konto label_my_projects: Mina projekt label_administration: Administration label_login: Logga in label_logout: Logga ut label_help: Hjälp label_reported_issues: Rapporterade ärenden label_assigned_to_me_issues: Ärenden tilldelade till mig label_registered_on: Registrerad label_activity: Aktivitet label_user_activity: "Aktiviteter för %{value}" label_new: Ny label_logged_as: Inloggad som label_environment: Miljö label_authentication: Autentisering label_auth_source: Autentiseringsläge label_auth_source_new: Nytt autentiseringsläge label_auth_source_plural: Autentiseringslägen label_subproject_plural: Underprojekt label_subproject_new: Nytt underprojekt label_and_its_subprojects: "%{value} och dess underprojekt" label_min_max_length: Min./Max.-längd label_list: Lista label_date: Datum label_integer: Heltal label_float: Flyttal label_boolean: Boolean label_string: Text label_text: Lång text label_attribute: Attribut label_attribute_plural: Attribut label_no_data: Ingen data att visa label_change_status: Ändra status label_history: Historia label_attachment: Fil label_attachment_new: Ny fil label_attachment_delete: Ta bort fil label_attachment_plural: Filer label_file_added: Fil tillagd label_report: Rapport label_report_plural: Rapporter label_news: Nyhet label_news_new: Lägg till nyhet label_news_plural: Nyheter label_news_latest: Senaste nyheterna label_news_view_all: Visa alla nyheter label_news_added: Nyhet tillagd label_news_comment_added: Kommentar tillagd till en nyhet label_settings: Inställningar label_overview: Översikt label_version: Version label_version_new: Ny version label_version_plural: Versioner label_close_versions: Stäng klara versioner label_confirmation: Bekräftelse label_export_to: 'Finns även som:' label_read: Läs... label_public_projects: Publika projekt label_open_issues: öppen label_open_issues_plural: öppna label_closed_issues: stängd label_closed_issues_plural: stängda label_x_open_issues_abbr: zero: 0 öppna one: 1 öppen other: "%{count} öppna" label_x_closed_issues_abbr: zero: 0 stängda one: 1 stängd other: "%{count} stängda" label_x_issues: zero: 0 ärenden one: 1 ärende other: "%{count} ärenden" label_total: Total label_total_time: Total tid label_permissions: Behörigheter label_current_status: Nuvarande status label_new_statuses_allowed: Nya tillåtna statusvärden label_all: alla label_any: vad/vem som helst label_none: inget/ingen label_nobody: ingen label_next: Nästa label_previous: Föregående label_used_by: Använd av label_details: Detaljer label_add_note: Lägg till anteckning label_calendar: Kalender label_months_from: månader från label_gantt: Gantt label_internal: Intern label_last_changes: "senaste %{count} ändringar" label_change_view_all: Visa alla ändringar label_comment: Kommentar label_comment_plural: Kommentarer label_x_comments: zero: inga kommentarer one: 1 kommentar other: "%{count} kommentarer" label_comment_add: Lägg till kommentar label_comment_added: Kommentar tillagd label_comment_delete: Ta bort kommentar label_query: Användardefinerad fråga label_query_plural: Användardefinerade frågor label_query_new: Ny fråga label_my_queries: Mina egna frågor label_filter_add: Lägg till filter label_filter_plural: Filter label_equals: är label_not_equals: är inte label_in_less_than: om mindre än label_in_more_than: om mer än label_in_the_next_days: under kommande label_in_the_past_days: under föregående label_greater_or_equal: '>=' label_less_or_equal: '<=' label_between: mellan label_in: om label_today: idag label_yesterday: igår label_this_week: denna vecka label_last_week: senaste veckan label_last_n_weeks: "senaste %{count} veckorna" label_last_n_days: "senaste %{count} dagarna" label_this_month: denna månad label_last_month: senaste månaden label_this_year: detta året label_date_range: Datumintervall label_less_than_ago: mindre än dagar sedan label_more_than_ago: mer än dagar sedan label_ago: dagar sedan label_contains: innehåller label_not_contains: innehåller inte label_any_issues_in_project: några ärenden i projektet label_any_issues_not_in_project: några ärenden utanför projektet label_no_issues_in_project: inga ärenden i projektet label_day_plural: dagar label_repository: Versionsarkiv label_repository_new: Nytt versionsarkiv label_repository_plural: Versionsarkiv label_branch: Gren label_tag: Tagg label_revision: Revision label_revision_plural: Revisioner label_revision_id: "Revision %{value}" label_associated_revisions: Associerade revisioner label_added: tillagd label_modified: modifierad label_copied: kopierad label_renamed: omdöpt label_deleted: borttagen label_latest_revision: Senaste revisionen label_latest_revision_plural: Senaste revisionerna label_view_revisions: Visa revisioner label_view_all_revisions: Visa alla revisioner label_max_size: Maxstorlek label_roadmap: Vägkarta label_roadmap_due_in: "Färdig om %{value}" label_roadmap_overdue: "%{value} sen" label_roadmap_no_issues: Inga ärenden för denna version label_search: Sök label_result_plural: Resultat label_all_words: Alla ord label_wiki: Wiki label_wiki_edit: Wikiändring label_wiki_edit_plural: Wikiändringar label_wiki_page: Wikisida label_wiki_page_plural: Wikisidor label_index_by_title: Innehåll efter titel label_index_by_date: Innehåll efter datum label_current_version: Nuvarande version label_preview: Förhandsgranska label_feed_plural: Källor label_changes_details: Detaljer om alla ändringar label_issue_tracking: Ärendeuppföljning label_spent_time: Spenderad tid label_f_hour: "%{value} timme" label_f_hour_plural: "%{value} timmar" label_time_tracking: Tidsuppföljning label_change_plural: Ändringar label_statistics: Statistik label_commits_per_month: Commits per månad label_commits_per_author: Commits per författare label_diff: skillnader label_view_diff: Visa skillnader label_diff_inline: i texten label_diff_side_by_side: sida vid sida label_options: Inställningar label_copy_workflow_from: Kopiera arbetsflöde från label_permissions_report: Behörighetsrapport label_watched_issues: Bevakade ärenden label_related_issues: Relaterade ärenden label_applied_status: Tilldelad status label_loading: Laddar... label_relation_new: Ny relation label_relation_delete: Ta bort relation label_relates_to: Relaterar till label_duplicates: Kopierar label_duplicated_by: Kopierad av label_blocks: Blockerar label_blocked_by: Blockerad av label_precedes: Kommer före label_follows: Följer label_copied_to: Kopierad till label_copied_from: Kopierad från label_stay_logged_in: Förbli inloggad label_disabled: inaktiverad label_show_completed_versions: Visa färdiga versioner label_me: mig label_board: Forum label_board_new: Nytt forum label_board_plural: Forum label_board_locked: Låst label_board_sticky: Klibbig label_topic_plural: Ämnen label_message_plural: Meddelanden label_message_last: Senaste meddelande label_message_new: Nytt meddelande label_message_posted: Meddelande tillagt label_reply_plural: Svar label_send_information: Skicka kontoinformation till användaren label_year: År label_month: Månad label_week: Vecka label_date_from: Från label_date_to: Till label_language_based: Språkbaserad label_sort_by: "Sortera på %{value}" label_send_test_email: Skicka testmail label_feeds_access_key: Atom-nyckel label_missing_feeds_access_key: Saknar en Atom-nyckel label_feeds_access_key_created_on: "Atom-nyckel skapad för %{value} sedan" label_module_plural: Moduler label_added_time_by: "Tillagd av %{author} för %{age} sedan" label_updated_time_by: "Uppdaterad av %{author} för %{age} sedan" label_updated_time: "Uppdaterad för %{value} sedan" label_jump_to_a_project: Gå till projekt... label_file_plural: Filer label_changeset_plural: Ändringssgrupper label_default_columns: Standardkolumner label_no_change_option: (Ingen ändring) label_bulk_edit_selected_issues: Gemensam ändring av markerade ärenden label_bulk_edit_selected_time_entries: Gruppredigera valda tidloggningar label_theme: Tema label_default: Standard label_search_titles_only: Sök endast i titlar label_user_mail_option_all: "För alla händelser i mina projekt" label_user_mail_option_selected: "För alla händelser i markerade projekt..." label_user_mail_option_none: "Inga händelser" label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i" label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort" label_registration_activation_by_email: kontoaktivering med mail label_registration_manual_activation: manuell kontoaktivering label_registration_automatic_activation: automatisk kontoaktivering label_display_per_page: "Per sida: %{value}" label_age: Ålder label_change_properties: Ändra inställningar label_general: Allmänt label_scm: SCM label_plugins: Tillägg label_ldap_authentication: LDAP-autentisering label_downloads_abbr: Nerl. label_optional_description: Valfri beskrivning label_add_another_file: Lägg till ytterligare en fil label_preferences: Användarinställningar label_chronological_order: I kronologisk ordning label_reverse_chronological_order: I omvänd kronologisk ordning label_incoming_emails: Inkommande mail label_generate_key: Generera en nyckel label_issue_watchers: Bevakare label_example: Exempel label_display: Visa label_sort: Sortera label_descending: Fallande label_ascending: Stigande label_date_from_to: Från %{start} till %{end} label_wiki_content_added: Wikisida tillagd label_wiki_content_updated: Wikisida uppdaterad label_group: Grupp label_group_plural: Grupper label_group_new: Ny grupp label_time_entry_plural: Spenderad tid label_version_sharing_none: Inte delad label_version_sharing_descendants: Med underprojekt label_version_sharing_hierarchy: Med projekthierarki label_version_sharing_tree: Med projektträd label_version_sharing_system: Med alla projekt label_update_issue_done_ratios: Uppdatera % klart label_copy_source: Källa label_copy_target: Mål label_copy_same_as_target: Samma som mål label_display_used_statuses_only: Visa endast status som används av denna ärendetyp label_api_access_key: API-nyckel label_missing_api_access_key: Saknar en API-nyckel label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan" label_profile: Profil label_subtask_plural: Underaktiviteter label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras label_principal_search: "Sök efter användare eller grupp:" label_user_search: "Sök efter användare:" label_additional_workflow_transitions_for_author: Ytterligare övergångar tillåtna när användaren är den som skapat ärendet label_additional_workflow_transitions_for_assignee: Ytterligare övergångar tillåtna när användaren är den som tilldelats ärendet label_issues_visibility_all: Alla ärenden label_issues_visibility_public: Alla icke-privata ärenden label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren label_git_report_last_commit: Rapportera senaste commit av filer och mappar label_parent_revision: Förälder label_child_revision: Barn label_export_options: "%{export_format} exportalternativ" label_copy_attachments: Kopiera bilagor label_copy_subtasks: Kopiera underaktiviteter label_item_position: "%{position}/%{count}" label_completed_versions: Klara versioner label_search_for_watchers: Sök efter bevakare att lägga till label_session_expiration: Sessionsutgång label_status_transitions: Statusövergångar label_fields_permissions: Fältbehörigheter label_readonly: Skrivskyddad label_required: Nödvändig label_attribute_of_project: Projektets %{name} label_attribute_of_issue: Ärendets %{name} label_attribute_of_author: Författarens %{name} label_attribute_of_assigned_to: Tilldelad användares %{name} label_attribute_of_user: Användarens %{name} label_attribute_of_fixed_version: Målversionens %{name} label_cross_project_descendants: Med underprojekt label_cross_project_tree: Med projektträd label_cross_project_hierarchy: Med projekthierarki label_cross_project_system: Med alla projekt label_gantt_progress_line: Framstegslinje button_login: Logga in button_submit: Skicka button_save: Spara button_check_all: Markera alla button_uncheck_all: Avmarkera alla button_collapse_all: Kollapsa alla button_expand_all: Expandera alla button_delete: Ta bort button_create: Skapa button_create_and_continue: Skapa och fortsätt button_test: Testa button_edit: Ändra button_edit_associated_wikipage: "Ändra associerad Wikisida: %{page_title}" button_add: Lägg till button_change: Ändra button_apply: Verkställ button_clear: Återställ button_lock: Lås button_unlock: Lås upp button_download: Ladda ner button_list: Lista button_view: Visa button_move: Flytta button_move_and_follow: Flytta och följ efter button_back: Tillbaka button_cancel: Avbryt button_activate: Aktivera button_sort: Sortera button_log_time: Logga tid button_rollback: Återställ till denna version button_watch: Bevaka button_unwatch: Stoppa bevakning button_reply: Svara button_archive: Arkivera button_unarchive: Ta bort från arkiv button_reset: Återställ button_rename: Byt namn button_change_password: Ändra lösenord button_copy: Kopiera button_copy_and_follow: Kopiera och följ efter button_annotate: Kommentera button_update: Uppdatera button_configure: Konfigurera button_quote: Citera button_show: Visa button_hide: Göm button_edit_section: Redigera denna sektion button_export: Exportera button_delete_my_account: Ta bort mitt konto button_close: Stäng button_reopen: Återöppna status_active: aktiv status_registered: registrerad status_locked: låst project_status_active: aktiv project_status_closed: stängd project_status_archived: arkiverad version_status_open: öppen version_status_locked: låst version_status_closed: stängd field_active: Aktiv text_select_mail_notifications: Välj för vilka händelser mail ska skickas. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: Är du säker på att du vill ta bort detta projekt och all relaterad data? text_subprojects_destroy_warning: "Alla underprojekt: %{value} kommer också tas bort." text_workflow_edit: Välj en roll och en ärendetyp för att ändra arbetsflöde text_are_you_sure: Är du säker ? text_journal_changed: "%{label} ändrad från %{old} till %{new}" text_journal_changed_no_detail: "%{label} uppdaterad" text_journal_set_to: "%{label} satt till %{value}" text_journal_deleted: "%{label} borttagen (%{old})" text_journal_added: "%{label} %{value} tillagd" text_tip_issue_begin_day: ärende som börjar denna dag text_tip_issue_end_day: ärende som slutar denna dag text_tip_issue_begin_end_day: ärende som börjar och slutar denna dag text_project_identifier_info: 'Endast gemener (a-z), siffror, streck och understreck är tillåtna, måste börja med en bokstav.
    När identifieraren sparats kan den inte ändras.' text_caracters_maximum: "max %{count} tecken." text_caracters_minimum: "Måste vara minst %{count} tecken lång." text_length_between: "Längd mellan %{min} och %{max} tecken." text_tracker_no_workflow: Inget arbetsflöde definerat för denna ärendetyp text_unallowed_characters: Otillåtna tecken text_comma_separated: Flera värden tillåtna (kommaseparerade). text_line_separated: Flera värden tillåtna (ett värde per rad). text_issues_ref_in_commit_messages: Referera och fixa ärenden i commit-meddelanden text_issue_added: "Ärende %{id} har rapporterats (av %{author})." text_issue_updated: "Ärende %{id} har uppdaterats (av %{author})." text_wiki_destroy_confirmation: Är du säker på att du vill ta bort denna wiki och allt dess innehåll ? text_issue_category_destroy_question: "Några ärenden (%{count}) är tilldelade till denna kategori. Vad vill du göra ?" text_issue_category_destroy_assignments: Ta bort kategoritilldelningar text_issue_category_reassign_to: Återtilldela ärenden till denna kategori text_user_mail_option: "För omarkerade projekt kommer du bara bli underrättad om saker du bevakar eller är inblandad i (T.ex. ärenden du skapat eller tilldelats)." text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst." text_load_default_configuration: Läs in standardkonfiguration text_status_changed_by_changeset: "Tilldelad i changeset %{value}." text_time_logged_by_changeset: "Tilldelad i changeset %{value}." text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?' text_issues_destroy_descendants_confirmation: Detta kommer även ta bort %{count} underaktivitet(er). text_time_entries_destroy_confirmation: Är du säker på att du vill ta bort valda tidloggningar? text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat text_file_repository_writable: Arkivet för bifogade filer är skrivbart text_plugin_assets_writable: Arkivet för plug-ins är skrivbart text_minimagick_available: MiniMagick tillgängligt (ej obligatoriskt) text_destroy_time_entries_question: "%{hours} timmar har rapporterats på ärendena du är på väg att ta bort. Vad vill du göra ?" text_destroy_time_entries: Ta bort rapporterade timmar text_assign_time_entries_to_project: Tilldela rapporterade timmar till projektet text_reassign_time_entries: 'Återtilldela rapporterade timmar till detta ärende:' text_user_wrote: "%{value} skrev:" text_user_wrote_in: "%{value} skrev (%{link}):" text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde." text_enumeration_category_reassign_to: 'Återtilldela till detta värde:' text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem." text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i både Redmine och versionsarkivet mappas automatiskt." text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.' text_custom_field_possible_values_info: 'Ett värde per rad' text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?" text_wiki_page_nullify_children: "Behåll undersidor som rotsidor" text_wiki_page_destroy_children: "Ta bort alla underliggande sidor" text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida" text_own_membership_delete_confirmation: "Några av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?" text_zoom_out: Zooma ut text_zoom_in: Zooma in text_warn_on_leaving_unsaved: "Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan." text_scm_path_encoding_note: "Standard: UTF-8" text_git_repository_note: Versionsarkiv är tomt och lokalt (t.ex. /gitrepo, c:\gitrepo) text_mercurial_repository_note: Lokalt versionsarkiv (t.ex. /hgrepo, c:\hgrepo) text_scm_command: Kommando text_scm_command_version: Version text_scm_config: Du kan konfigurera dina scm-kommando i config/configuration.yml. Vänligen starta om applikationen när ändringar gjorts. text_scm_command_not_available: Scm-kommando är inte tillgängligt. Vänligen kontrollera inställningarna i administratörspanelen. text_issue_conflict_resolution_overwrite: "Använd mina ändringar i alla fall (tidigare anteckningar kommer behållas men några ändringar kan bli överskrivna)" text_issue_conflict_resolution_add_notes: "Lägg till mina anteckningar och kasta mina andra ändringar" text_issue_conflict_resolution_cancel: "Kasta alla mina ändringar och visa igen %{link}" text_account_destroy_confirmation: "Är du säker på att du vill fortsätta?\nDitt konto kommer tas bort permanent, utan möjlighet att återaktivera det." text_session_expiration_settings: "Varning: ändring av dessa inställningar kan få alla nuvarande sessioner, inklusive din egen, att gå ut." text_project_closed: Detta projekt är stängt och skrivskyddat. text_turning_multiple_off: "Om du inaktiverar möjligheten till flera värden kommer endast ett värde per objekt behållas." default_role_manager: Projektledare default_role_developer: Utvecklare default_role_reporter: Rapportör default_tracker_bug: Bugg default_tracker_feature: Funktionalitet default_tracker_support: Support default_issue_status_new: Ny default_issue_status_in_progress: Pågår default_issue_status_resolved: Löst default_issue_status_feedback: Återkoppling default_issue_status_closed: Stängd default_issue_status_rejected: Avslagen default_doc_category_user: Användardokumentation default_doc_category_tech: Teknisk dokumentation default_priority_low: Låg default_priority_normal: Normal default_priority_high: Hög default_priority_urgent: Brådskande default_priority_immediate: Omedelbar default_activity_design: Design default_activity_development: Utveckling enumeration_issue_priorities: Ärendeprioriteter enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet description_filter: Filter description_search: Sökfält description_choose_project: Projekt description_project_scope: Sökomfång description_notes: Anteckningar description_message_content: Meddelandeinnehåll description_query_sort_criteria_attribute: Sorteringsattribut description_query_sort_criteria_direction: Sorteringsriktning description_user_mail_notification: Mailnotifieringsinställningar description_available_columns: Tillgängliga Kolumner description_selected_columns: Valda Kolumner description_all_columns: Alla kolumner description_issue_category_reassign: Välj ärendekategori description_wiki_subpages_reassign: Välj ny föräldersida text_repository_identifier_info: 'Endast gemener (a-z), siffror, streck och understreck är tillåtna.
    När identifieraren sparats kan den inte ändras.' notice_account_not_activated_yet: Du har inte aktiverat ditt konto än. Om du vill fÃ¥ ett nytt aktiveringsbrev, klicka pÃ¥ denna länk . notice_account_locked: Ditt konto är lÃ¥st. label_hidden: Dold label_visibility_private: endast för mig label_visibility_roles: endast för dessa roller label_visibility_public: för alla användare field_must_change_passwd: MÃ¥ste byta lösenord vid nästa inloggning. notice_new_password_must_be_different: Det nya lösenordet mÃ¥ste skilja sig frÃ¥n det nuvarande lösenordet setting_mail_handler_excluded_filenames: Uteslut bilagor med namn text_convert_available: ImageMagick-konvertering tillgänglig (valbart) label_link: Länk label_only: endast label_drop_down_list: droppmeny label_checkboxes: kryssrutor label_link_values_to: Länka värden till URL setting_force_default_language_for_anonymous: LÃ¥s till förvalt sprÃ¥k för anonyma användare setting_force_default_language_for_loggedin: LÃ¥s till förvalt sprÃ¥k för inloggade användare label_custom_field_select_type: Välj den typ av objekt som det anpassade fältet skall användas för label_issue_assigned_to_updated: Tilldelad har uppdaterats label_check_for_updates: Leta efter uppdateringar label_latest_compatible_version: Senaste kompatibla version label_unknown_plugin: Okänt tillägg label_radio_buttons: alternativknappar label_group_anonymous: Anonyma användare label_group_non_member: Icke-medlemsanvändare label_add_projects: Addera projekt field_default_status: Default-status text_subversion_repository_note: 'Exempel: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Användares synlighet label_users_visibility_all: Alla aktiva användare label_users_visibility_members_of_visible_projects: Medlemmar i synliga projekt label_edit_attachments: Editera bifogade filer setting_link_copied_issue: Länka ärenden pÃ¥ kopia label_link_copied_issue: Länka kopierat ärende label_ask: FrÃ¥ga label_search_attachments_yes: Sök bilagors filnamn och beskrivningar label_search_attachments_no: Sök inte bilagor label_search_attachments_only: Sök endast bilagor label_search_open_issues_only: Endast öppna ärenden field_address: Epost setting_max_additional_emails: Max antal ytterligare epost-adresser label_email_address_plural: Epost label_email_address_add: Addera epostadress label_enable_notifications: Aktivera underrättelser label_disable_notifications: Avaktivera underrättelser setting_search_results_per_page: Sökresultat per sida label_blank_value: blank permission_copy_issues: Kopiera ärenden error_password_expired: Ditt lösenord har gÃ¥tt ut eller administratören kräver att du ändrar det. field_time_entries_visibility: Synlighet för tidsloggar setting_password_max_age: Kräv lösenordsändring efter label_parent_task_attributes: Attribut för föräldraaktiviteter label_parent_task_attributes_derived: Kalkylerad frÃ¥n underaktiviteter label_parent_task_attributes_independent: Oberoende av underaktiviteter label_time_entries_visibility_all: Alla tidsangivelser label_time_entries_visibility_own: Tidsangivelser skapade av användaren label_member_management: Användarhantering label_member_management_all_roles: Alla roller label_member_management_selected_roles_only: Endast dessa roller label_password_required: Bekräfta ditt lösenord label_total_spent_time: Total tid spenderad notice_import_finished: "%{count} artiklar har importerats" notice_import_finished_with_errors: "%{count} av %{total} artiklar kunde inte importeras" error_invalid_file_encoding: Filen är inte en %{encoding}-kodad fil error_invalid_csv_file_or_settings: Filen är inte en CSV-fil eller stämmer inte med inställningarna nedan (%{value}) error_can_not_read_import_file: Fel vid läsning av fil att importera permission_import_issues: Importera ärenden label_import_issues: Importera ärenden label_select_file_to_import: Välj fil att importera label_fields_separator: Fältseparator label_fields_wrapper: Fältomslag label_encoding: Kodning label_comma_char: Komma label_semi_colon_char: Semicolon label_quote_char: Citationstecken label_double_quote_char: Dubbla citationstecken label_fields_mapping: Kartläggning av fält label_file_content_preview: Förhandsvisning av filinnehÃ¥ll label_create_missing_values: Skapa saknade värden button_import: Importera field_total_estimated_hours: Totalt uppskattad tid label_api: API label_total_plural: Totaler label_assigned_issues: Tilldelade ärenden label_field_format_enumeration: Nyckel/värde-lista label_f_hour_short: '%{value} h' field_default_version: Defaultversion error_attachment_extension_not_allowed: OtillÃ¥ten utökning av bilaga %{extension} setting_attachment_extensions_allowed: TillÃ¥tna utökningar setting_attachment_extensions_denied: OtillÃ¥tna utökningar label_any_open_issues: nÃ¥gra öppna ärenden label_no_open_issues: inga öppna ärenden label_default_values_for_new_users: Defaultvärden för nya användare error_ldap_bind_credentials: Ogiltigt LDAP konto/lösenord setting_sys_api_key: API-nyckel setting_lost_password: Glömt lösenord mail_subject_security_notification: Säkerhetsmeddelande mail_body_security_notification_change: ! '%{field} ändrades.' mail_body_security_notification_change_to: ! '%{field} ändrades till %{value}.' mail_body_security_notification_add: ! '%{field} %{value} las till.' mail_body_security_notification_remove: ! '%{field} %{value} togs bort.' mail_body_security_notification_notify_enabled: Epostadress %{value} kommer att fÃ¥ underrättelser. mail_body_security_notification_notify_disabled: Epostadress %{value} fÃ¥r inga fler underrättelser. mail_body_settings_updated: ! 'Följande inställningar ändrades:' field_remote_ip: IP-adress label_wiki_page_new: Ny wiki-sida label_relations: Relationer button_filter: Filter mail_body_password_updated: Ditt lösenord är ändrat. label_no_preview: Ingen förhandsvisning tillgänglig error_no_tracker_allowed_for_new_issue_in_project: Projektet har ingen spÃ¥rare som du kan skapa ett ärende för label_tracker_all: All spÃ¥rare label_new_project_issue_tab_enabled: Visa fliken "Nya ärenden" setting_new_item_menu_tab: Projektmenyflik för att skapa nya objekt label_new_object_tab_enabled: Visa "+" droppmeny error_no_projects_with_tracker_allowed_for_new_issue: Inga projekt med spÃ¥rare tillÃ¥tna för nya ärenden field_textarea_font: Font som används för textytor label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportionell font setting_timespan_format: Format för tidsintervall label_table_of_contents: InnehÃ¥llsförteckning setting_commit_logs_formatting: Använd textformatering för meddelanden setting_mail_handler_enable_regex: Aktivera reguljära uttryck error_move_of_child_not_possible: 'Underaktivitet %{child} kunde inte flyttas till det nya projektet: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spenderad tid kan inte flyttas till ett ärende som är pÃ¥ väg att tas bort setting_timelog_required_fields: Nödvändiga fält för tidsangivelser label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Bara för saker som jag följer eller är tilldelad label_user_mail_option_only_owner: Bara för saker som jag följer eller äger warning_fields_cleared_on_bulk_edit: Ändringar kommer att orsaka automatiskt borttagande av värden frÃ¥n ett eller flera fält för de valda objekten field_updated_by: Uppdaterad av field_last_updated_by: Senast uppdaterad av field_full_width_layout: Layout med full bredd label_last_notes: Senaste noteringar field_digest: Checksumma field_default_assigned_to: Defaultmottagare setting_show_custom_fields_on_registration: Visa anpassade fält vid registrering permission_view_news: Visa nyheter label_no_preview_alternative_html: Ingen förhandsvisning tillgänglig. %{link} filen istället. label_no_preview_download: Nerladdning setting_close_duplicate_issues: Stäng duplicerade ärenden automatiskt error_exceeds_maximum_hours_per_day: Kan inte logga mer än %{max_hours} timmar samma dag (%{logged_hours} timmar har redan loggats) setting_time_entry_list_defaults: Defaults för tidsloggning setting_timelog_accept_0_hours: Acceptera tidsloggar med 0 timmar setting_timelog_max_hours_per_day: Max timmar som kan loggas per dag och användare label_x_revisions: "%{count} revisioner" error_can_not_delete_auth_source: Denna autenticeringsmetod är i bruk och kan inte tas bort. button_actions: Handlingar mail_body_lost_password_validity: OBS att du endast kan ändra lösenordet en gÃ¥ng via denna länk. text_login_required_html: När autenticering inte krävs, är publika projekt och deras innehÃ¥ll tillgängliga pÃ¥ nätverket. Du kan ändra tillämpliga behörigheter. label_login_required_yes: 'Ja' label_login_required_no: Nej, tillÃ¥t anonym access till publika projekt text_project_is_public_non_member: Publika projekt och deras innehÃ¥ll är tillgängliga för alla inloggade användare. text_project_is_public_anonymous: Publika projekt och deras innehÃ¥ll är tillgängliga pÃ¥ nätverket. label_version_and_files: Versioner (%{count}) och filer label_ldap: LDAP label_ldaps_verify_none: LDAPS (utan certifikatkontroll) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Det rekommenderas att använda krypterad LDAPS-förbindelse med certifikatkontroll för att hindra manipulation av autenticeringsprocessen. label_nothing_to_preview: Ingenting att visa error_token_expired: Lösenordslänken gäller inte längre, var god försök igen. error_spent_on_future_date: Kan inte logga tid pÃ¥ framtida datum setting_timelog_accept_future_dates: Acceptera tidsloggningar pÃ¥ framtida datum label_delete_link_to_subtask: Ta bort relation error_not_allowed_to_log_time_for_other_users: Du fÃ¥r inte logga tid för andra användare permission_log_time_for_other_users: Logga spenderad tid för andra användare label_tomorrow: imorgon label_next_week: nästa vecka label_next_month: nästa mÃ¥nad text_role_no_workflow: Inget arbetsflöde definierat för denna roll text_status_no_workflow: Ingen spÃ¥rare använder denna status i arbetsflödet setting_mail_handler_preferred_body_part: Föredragen del av epost i flera delar(HTML) setting_show_status_changes_in_mail_subject: Visa statusändringar i ärendemailunderrättelsers ämne label_inherited_from_parent_project: Ärvd frÃ¥n föräldraprojekt label_inherited_from_group: Ärvd frÃ¥n grupp%{name} label_trackers_description: Beskrivning för spÃ¥rare label_open_trackers_description: Visa beskrivning för alla spÃ¥rare label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Ämne för föräldraärende permission_edit_own_issues: Ändra egna ärenden text_select_apply_tracker: Välj spÃ¥rare label_updated_issues: Updaterade ärenden text_avatar_server_config_html: Nuvarande avatar-server %{url}. Du kan konfigurera det i config/configuration.yml. setting_gantt_months_limit: Max antal mÃ¥nader pÃ¥ gantt-schemat permission_import_time_entries: Importera tidsangivelser label_import_notifications: Skicka underrättelser med epost under importen text_gs_available: ImageMagick PDF support tillgänglig (frivillig) field_recently_used_projects: Antal nyligen använda projekt label_optgroup_bookmarks: Bokmärken label_optgroup_recents: Nyligen använda button_project_bookmark: Lägg till bokmärke button_project_bookmark_delete: Ta bort bokmärke field_history_default_tab: Ärendes defaultflik för historik label_issue_history_properties: Ändrade egenskaper label_issue_history_notes: Noter label_last_tab_visited: Senast besökta flik field_unique_id: Unikt ID text_no_subject: inget ämne setting_password_required_char_classes: Teckenklasser som lösenord mÃ¥ste innehÃ¥lla label_password_char_class_uppercase: versaler label_password_char_class_lowercase: gemener label_password_char_class_digits: siffror label_password_char_class_special_chars: specialtecken text_characters_must_contain: MÃ¥ste innehÃ¥lla %{character_classes}. label_starts_with: startar med label_ends_with: slutar med label_issue_fixed_version_updated: MÃ¥lversion uppdaterad setting_project_list_defaults: Projektlista defaults label_display_type: Visa resultat som label_display_type_list: Lista label_display_type_board: Anslagstavla label_my_bookmarks: Mina bokmärken label_import_time_entries: Importera tidsangivelser notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found field_passwd_changed_on: Password last changed field_toolbar_language_options: Code highlighting toolbar languages setting_bulk_download_max_size: Maximum total size for bulk download setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains setting_twofa: Two-factor authentication permission_delete_project: Delete the project label_optional: optional label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_days_to_html: "%{days} days up to %{date}" label_required_lower: required label_download_all_attachments: Download all files label_relations_mapping: Relations mapping label_assign_to_me: Assign to me button_disable: Disable label_import_users: Import users twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/ta-IN.yml000066400000000000000000004245041500112024600174670ustar00rootroot00000000000000ta-IN: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d/%m/%Y" short: "%d %b" long: "%d %B, %Y" day_names: [ஞாயிறà¯, திஙà¯à®•ளà¯, செவà¯à®µà®¾à®¯à¯, பà¯à®¤à®©à¯, வியாழனà¯, வெளà¯à®³à®¿, சனி] abbr_day_names: [ஞா, திஙà¯, செவà¯, பà¯à®¤à®©à¯, வியா, வெளà¯, சனி] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, ஜனவரி, பிபà¯à®°à®µà®°à®¿, மாரà¯à®šà¯, à®à®ªà¯à®°à®²à¯, மே, ஜூனà¯, ஜூலை, ஆகஸà¯à®Ÿà¯, செபà¯à®Ÿà®®à¯à®ªà®°à¯, அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯, நவமà¯à®ªà®°à¯, டிசமà¯à®ªà®°à¯] abbr_month_names: [~, ஜன, பிபà¯, மாரà¯, à®à®ªà¯à®°, மே, ஜூனà¯, ஜூலை, ஆகஸà¯, செபà¯, அகà¯à®Ÿà¯‡à®¾, நவமà¯, டிசமà¯] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%d/%m/%Y %I:%M %p" time: "%I:%M %p" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "காலை" pm: "மாலை" datetime: distance_in_words: half_a_minute: "அரை நிமிடமà¯" less_than_x_seconds: one: "1 வினாடிகà¯à®•௠கà¯à®±à¯ˆà®µà®¾à®•" other: "% {count} விநாடிகளà¯à®•à¯à®•௠கà¯à®±à¯ˆà®µà®¾à®•" x_seconds: one: "1 விநாடி" other: "%{count} விநாடிகளà¯" less_than_x_minutes: one: "ஒர௠நிமிடதà¯à®¤à®¿à®±à¯à®•à¯à®®à¯ கà¯à®±à¯ˆà®µà®¾à®©à®¤à¯" other: "%{count} நிமிடஙà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ கà¯à®±à¯ˆà®µà®¾à®©à®¤à¯" x_minutes: one: "1 நிமிடமà¯" other: "%{count}நிமிடஙà¯à®•ளà¯" about_x_hours: one: "சà¯à®®à®¾à®°à¯ 1 மணி நேரமà¯" other: "சà¯à®®à®¾à®°à¯ %{count} மணிநேரமà¯" x_hours: one: "1 மணி நேரமà¯" other: "%{count} மணி" x_days: one: "1 நாளà¯" other: "%{count} நாடà¯à®•ளà¯" about_x_months: one: "சà¯à®®à®¾à®°à¯ 1 மாதமà¯" other: "சà¯à®®à®¾à®°à¯ %{count} மாதஙà¯à®•ளà¯" x_months: one: "1 மாதமà¯" other: "%{count} மாதஙà¯à®•ளà¯" about_x_years: one: "சà¯à®®à®¾à®°à¯ 1 ஆணà¯à®Ÿà¯" other: "சà¯à®®à®¾à®°à¯ %{count} ஆணà¯à®Ÿà¯à®•ளà¯" over_x_years: one: "1 ஆணà¯à®Ÿà¯à®•à¯à®•௠மேலà¯" other: "சà¯à®®à®¾à®°à¯ %{count} ஆணà¯à®Ÿà¯à®•ளà¯" almost_x_years: one: "கிடà¯à®Ÿà®¤à¯à®¤à®Ÿà¯à®Ÿ 1 ஆணà¯à®Ÿà¯" other: "கிடà¯à®Ÿà®¤à¯à®¤à®Ÿà¯à®Ÿ %{count} ஆணà¯à®Ÿà¯à®•ளà¯" number: format: separator: "." delimiter: "," precision: 3 currency: format: format: "%u%n" unit: "₹" human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "பைடà¯" other: "பைடà¯à®Ÿà¯à®•ளà¯" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "மறà¯à®±à¯à®®à¯" skip_last_comma: false activerecord: errors: template: header: one: "1 பிழை இநà¯à®¤ %{model} சேமிபà¯à®ªà®¤à¯ˆ தடைசெயà¯à®¤à®¤à¯" other: "%{count} பிழைகள௠இநà¯à®¤ %{model} சேமிபà¯à®ªà®¤à¯ˆ தடைசெயà¯à®¤à®¤à¯" messages: inclusion: "படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ" exclusion: "ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" invalid: "தவறானதà¯" confirmation: "உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ" accepted: "à®à®±à¯à®±à¯à®•à¯à®•ொளà¯à®³à®ªà¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯" empty: "காலியாக இரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" blank: "காலியாக இரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" too_long: "மிக நீளமாக உளà¯à®³à®¤à¯ (அதிகபடà¯à®šà®®à¯ %{count} எழà¯à®¤à¯à®¤à¯à®•à¯à®•ளே)" too_short: "மிக கà¯à®±à¯ˆà®µà®¾à®• உளà¯à®³à®¤à¯ (கà¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®šà®®à¯ %{count} எழà¯à®¤à¯à®¤à¯à®•à¯à®•ளே)" wrong_length: "தவறான நீளம௠( %{count} எழà¯à®¤à¯à®¤à¯à®•ளாக இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯)" taken: "à®à®±à¯à®•னவே எடà¯à®¤à¯à®¤à¯à®•à¯à®•ொளà¯à®³à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" not_a_number: "எண௠அலà¯à®²" not_a_date: "சரியான தேதி அலà¯à®²" greater_than: " %{count} ஠விட அதிகமாக இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" greater_than_or_equal_to: " %{count} ஠விட அதிகமாகவோ அலà¯à®²à®¤à¯ சமமாகவோ இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" equal_to: " %{count}கà¯à®•௠சமமாக இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" less_than: "%{count}கà¯à®•à¯à®®à¯ கà¯à®±à¯ˆà®µà®¾à®• இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" less_than_or_equal_to: "%{count}஠விட கà¯à®±à¯ˆà®µà®¾à®•வோ அலà¯à®²à®¤à¯ சமமாகவோ இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" odd: "à®’à®±à¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯ˆ இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" even: "சமமாக இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" greater_than_start_date: "தொடகà¯à®• தேதியை விட அதிகமாக இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" not_same_project: "ஒரே திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠சொநà¯à®¤à®®à®¾à®©à®¤à¯ அலà¯à®²" circular_dependency: "இநà¯à®¤ தொடரà¯à®ªà¯ வடà¯à®Ÿ சாரà¯à®ªà¯à®¨à®¿à®²à¯ˆà®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®®à¯" cant_link_an_issue_with_a_descendant: "ஒர௠சிகà¯à®•லை அதன௠தà¯à®£à¯ˆ பணிகளில௠ஒனà¯à®±à¯‹à®Ÿà¯ இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" earlier_than_minimum_start_date: "à®®à¯à®¨à¯à®¤à¯ˆà®¯ சிகà¯à®•லà¯à®•ள௠காரணமாக %{date} ஠விட à®®à¯à®©à¯à®ªà®¾à®• இரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" not_a_regexp: "சரியான வழகà¯à®•மான வெளிபà¯à®ªà®¾à®Ÿà¯ அலà¯à®²" open_issue_with_closed_parent: "மூடிய மேல௠பணியà¯à®Ÿà®©à¯ திறநà¯à®¤ சிகà¯à®•லை இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯" must_contain_uppercase: "பெரிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠(A-Z) இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" must_contain_lowercase: "சிறிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠(a-z) இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" must_contain_digits: "எணà¯à®•ள௠(0-9) இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" must_contain_special_chars: "சிறபà¯à®ªà¯ எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠(!, $, %, ...) இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯" actionview_instancetag_blank_option: தயவ௠செயà¯à®¤à¯ தேரà¯à®µà¯ செயà¯à®¯à®µà¯à®®à¯ general_text_No: 'இலà¯à®²à¯ˆ' general_text_Yes: 'ஆமà¯' general_text_no: 'இலà¯à®²à¯ˆ' general_text_yes: 'ஆமà¯' general_lang_name: 'Tamil (தமிழà¯)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: ISO-8859-1 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: கணகà¯à®•௠வெறà¯à®±à®¿à®•ரமாக பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_account_invalid_credentials: தவறான பயனர௠அலà¯à®²à®¤à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ notice_account_password_updated: கடவà¯à®šà¯à®šà¯Šà®²à¯ வெறà¯à®±à®¿à®•ரமாக பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_account_wrong_password: தவறான கடவà¯à®šà¯à®šà¯†à®¾à®²à¯ notice_account_register_done: கணகà¯à®•௠வெறà¯à®±à®¿à®•ரமாக உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. உஙà¯à®•ள௠கணகà¯à®•ை செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®±à¯à®•ான வழிமà¯à®±à¯ˆà®•ளைக௠கொணà¯à®Ÿ %{email}கà¯à®•௠அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_can_t_change_password: இநà¯à®¤ கணகà¯à®•௠வெளிபà¯à®ªà¯à®± à®…à®™à¯à®•ீகார மூலதà¯à®¤à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•ிறதà¯. கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à¯à®µà®¤à¯ சாதà¯à®¤à®¿à®¯à®®à®¿à®²à¯à®²à¯ˆ. notice_account_lost_email_sent: பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆà®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®ªà¯à®ªà®¤à®±à¯à®•ான வழிமà¯à®±à¯ˆà®•ளைக௠கொணà¯à®Ÿ மினà¯à®©à®žà¯à®šà®²à¯ உஙà¯à®•ளà¯à®•à¯à®•௠அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. notice_account_activated: உஙà¯à®•ள௠கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. நீஙà¯à®•ள௠இபà¯à®ªà¯‹à®¤à¯ உளà¯à®¨à¯à®´à¯ˆà®¯à®²à®¾à®®à¯. notice_successful_create: வெறà¯à®±à®¿à®•ரமான படைபà¯à®ªà¯. notice_successful_update: வெறà¯à®±à®¿à®•ரமான பà¯à®¤à¯à®ªà¯à®ªà®¿à®ªà¯à®ªà¯. notice_successful_delete: வெறà¯à®±à®¿à®•ரமாக நீகà¯à®•à¯à®¤à®²à¯. notice_successful_connection: வெறà¯à®±à®¿à®•ரமான இணைபà¯à®ªà¯. notice_file_not_found: நீஙà¯à®•ள௠அணà¯à®• à®®à¯à®¯à®±à¯à®šà®¿à®¤à¯à®¤ பகà¯à®•ம௠இலà¯à®²à¯ˆ அலà¯à®²à®¤à¯ அகறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_locking_conflict: மறà¯à®±à¯Šà®°à¯ பயனரால௠தரவ௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. notice_not_authorized: இநà¯à®¤à®ªà¯ பகà¯à®•தà¯à®¤à¯ˆ அணà¯à®• உஙà¯à®•ளà¯à®•à¯à®•௠அஙà¯à®•ீகாரம௠இலà¯à®²à¯ˆ. notice_not_authorized_archived_project: நீஙà¯à®•ள௠அணà¯à®• à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à¯à®®à¯ திடà¯à®Ÿà®®à¯ காபà¯à®ªà®•பà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. notice_email_sent: "%{value}கà¯à®•௠மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" notice_email_error: "அஞà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯à®®à¯à®ªà¯‹à®¤à¯ பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%{value})" notice_feeds_access_key_reseted: உஙà¯à®•ள௠ஆடà¯à®Ÿà®®à¯ அணà¯à®•ல௠சாவி மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_api_access_key_reseted: உஙà¯à®•ள௠API அணà¯à®•ல௠சாவி மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_failed_to_save_issues: "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ %{total}%{count} சிகà¯à®•லை (s) சேமிபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %{ids}." notice_failed_to_save_members: "உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ (களà¯) சேமிபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿: %{errors}." notice_account_pending: "உஙà¯à®•ள௠கணகà¯à®•௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, இபà¯à®ªà¯‹à®¤à¯ நிரà¯à®µà®¾à®•ி ஒபà¯à®ªà¯à®¤à®²à¯ நிலà¯à®µà¯ˆà®¯à®¿à®²à¯ உளà¯à®³à®¤à¯." notice_default_data_loaded: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ உளà¯à®³à®®à¯ˆà®µà¯ வெறà¯à®±à®¿à®•ரமாக à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. notice_unable_delete_version: பதிபà¯à®ªà¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. notice_unable_delete_time_entry: நேர பதிவ௠உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. notice_issue_done_ratios_updated: சிகà¯à®•ல௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ விகிதஙà¯à®•ள௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©. notice_gantt_chart_truncated: "காணà¯à®ªà®¿à®•à¯à®•கà¯à®•ூடிய உரà¯à®ªà¯à®ªà®Ÿà®¿à®•ளின௠அதிகபடà¯à®š எணà¯à®£à®¿à®•à¯à®•ையை மீறà¯à®µà®¤à®¾à®²à¯ விளகà¯à®•பà¯à®ªà®Ÿà®®à¯ தà¯à®£à¯à®Ÿà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%{max})" error_can_t_load_default_data: "இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ உளà¯à®³à®®à¯ˆà®µà¯ˆ à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %{value}" error_scm_not_found: "நà¯à®´à¯ˆà®µà¯ அலà¯à®²à®¤à¯ திரà¯à®¤à¯à®¤à®®à¯ களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®²à¯ காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ." error_scm_command_failed: "களஞà¯à®šà®¿à®¯à®¤à¯à®¤à¯ˆ அணà¯à®• à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %{value}" error_scm_annotate: "நà¯à®´à¯ˆà®µà¯ இலà¯à®²à¯ˆ அலà¯à®²à®¤à¯ சிறà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯." error_scm_annotate_big_text_file: "நà¯à®´à¯ˆà®µà¯ சிறà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯, à®à®©à¯†à®©à®¿à®²à¯ இத௠அதிகபடà¯à®š உரை கோபà¯à®ªà¯ அளவை மீறà¯à®•ிறதà¯." error_issue_not_found_in_project: 'சிகà¯à®•ல௠கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ அலà¯à®²à®¤à¯ இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠சொநà¯à®¤à®®à®¾à®©à®¤à¯ அலà¯à®²' error_no_tracker_in_project: 'இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à¯à®Ÿà®©à¯ எநà¯à®¤ தடமà¯à®®à¯ இணைகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ அமைபà¯à®ªà¯ˆ சரி பாரà¯à®•à¯à®•வà¯à®®à¯..' error_no_default_issue_status: 'இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ சிகà¯à®•ல௠நிலை எதà¯à®µà¯à®®à¯ வரையறà¯à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. உஙà¯à®•ள௠உள௠அமைபà¯à®ªà¯ˆ சரி பாரà¯à®•à¯à®•வà¯à®®à¯ ("நிரà¯à®µà®¾à®•ம௠-> வெளியீடà¯à®Ÿà¯ நிலைகளà¯" எனà¯à®ªà®¤à®±à¯à®•à¯à®šà¯ செலà¯à®²à®µà¯à®®à¯).' error_can_not_delete_custom_field: தனிபà¯à®ªà®¯à®©à¯ பà¯à®²à®¤à¯à®¤à¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ error_can_not_delete_tracker_html: "இநà¯à®¤ தடதà¯à®¤à®¿à®²à¯ சிகà¯à®•லà¯à®•ள௠உளà¯à®³à®©, அவறà¯à®±à¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "இநà¯à®¤ பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯ மறà¯à®±à¯à®®à¯ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯." error_can_not_reopen_issue_on_closed_version: 'மூடிய பதிபà¯à®ªà®¿à®±à¯à®•௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லை மீணà¯à®Ÿà¯à®®à¯ திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯' error_can_not_archive_project: இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à¯ˆ காபà¯à®ªà®•பà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ error_issue_done_ratios_not_updated: "சிகà¯à®•ல௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ விகிதஙà¯à®•ள௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ." error_workflow_copy_source: 'ஒர௠மூல தடதà¯à®¤à¯ˆ அலà¯à®²à®¤à¯ பாதà¯à®¤à®¿à®°à®¤à¯à®¤à¯ˆà®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯' error_workflow_copy_target: 'இலகà¯à®•௠தடம௠(களà¯) மறà¯à®±à¯à®®à¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠(களà¯) à®à®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯' error_unable_delete_issue_status: 'சிகà¯à®•ல௠நிலையை நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ (%{value})' error_unable_to_connect: "இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ (%{value})" warning_attachments_not_saved: "%{count} கோபà¯à®ªà¯ (களà¯) சேமிகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ." mail_subject_lost_password: "உஙà¯à®•ள௠%{value} கடவà¯à®šà¯à®šà¯Šà®²à¯" mail_body_lost_password: 'உஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±, பினà¯à®µà®°à¯à®®à¯ இணைபà¯à®ªà¯ˆà®•௠கிளிக௠செயà¯à®•:' mail_subject_register: "உஙà¯à®•ள௠%{value} கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯" mail_body_register: 'உஙà¯à®•ள௠கணகà¯à®•ைச௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤, பினà¯à®µà®°à¯à®®à¯ இணைபà¯à®ªà¯ˆà®•௠கிளிக௠செயà¯à®•:' mail_body_account_information_external: "உளà¯à®¨à¯à®´à¯ˆà®¯ உஙà¯à®•ள௠%{value} கணகà¯à®•ைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à®¾à®®à¯." mail_body_account_information: உஙà¯à®•ள௠கணகà¯à®•௠தகவல௠mail_subject_account_activation_request: "%{value} கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯ கோரிகà¯à®•ை" mail_body_account_activation_request: "பà¯à®¤à®¿à®¯ பயனர௠(%{value}) பதிவà¯à®šà¯†à®¯à¯à®¤à¯à®³à¯à®³à®¾à®°à¯. கணகà¯à®•௠உஙà¯à®•ள௠ஒபà¯à®ªà¯à®¤à®²à¯à®•à¯à®•ாக நிலà¯à®µà¯ˆà®¯à®¿à®²à¯ உளà¯à®³à®¤à¯:" mail_subject_reminder: "%{count} சிகà¯à®•ல௠அடà¯à®¤à¯à®¤ %{days} நாடà¯à®•ளில௠கெடà¯" mail_body_reminder: "%{count} உஙà¯à®•ளà¯à®•à¯à®•௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ சிகà¯à®•லà¯à®•ள௠அடà¯à®¤à¯à®¤ %{days} நாடà¯à®•ளில௠கெடà¯:" mail_subject_wiki_content_added: "'%{id}' விகà¯à®•ி பகà¯à®•ம௠சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" mail_body_wiki_content_added: "இநà¯à®¤ '%{id}' விகà¯à®•ி பகà¯à®•ம௠சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ %{author}." mail_subject_wiki_content_updated: "'%{id}' விகà¯à®•ி பகà¯à®•ம௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" mail_body_wiki_content_updated: "இநà¯à®¤ '%{id}' விகà¯à®•ி பகà¯à®•ம௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ %{author}." field_name: பெயர௠field_description: விளகà¯à®•ம௠field_summary: சà¯à®°à¯à®•à¯à®•ம௠field_is_required: தேவை field_firstname: à®®à¯à®¤à®²à¯ பெயர௠field_lastname: கடைசி பெயர௠field_mail: மினà¯à®©à®žà¯à®šà®²à¯ field_filename: கோபà¯à®ªà¯ field_filesize: அளவ௠field_downloads: பதிவிறகà¯à®•à®™à¯à®•ள௠field_author: நூலாசிரியர௠field_created_on: உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_updated_on: பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_field_format: வடிவம௠field_is_for_all: அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯à®®à¯ field_possible_values: சாதà¯à®¤à®¿à®¯à®®à®¾à®© மதிபà¯à®ªà¯à®•ள௠field_regexp: வழகà¯à®•மான வெளிபà¯à®ªà®¾à®Ÿà¯ field_min_length: கà¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®š நீளம௠field_max_length: அதிகபடà¯à®š நீளம௠field_value: மதிபà¯à®ªà¯ field_category: வகை field_title: தலைபà¯à®ªà¯ field_project: திடà¯à®Ÿà®®à¯ field_issue: சிகà¯à®•ல௠field_status: நிலை field_notes: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠field_is_closed: சிகà¯à®•ல௠மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_is_default: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மதிபà¯à®ªà¯ field_tracker: தடம௠field_subject: பொரà¯à®³à¯ field_due_date: உரிய தேதி field_assigned_to: நியமிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ field_priority: à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆ field_fixed_version: இலகà¯à®•௠பதிபà¯à®ªà¯ field_user: பயனர௠field_principal: à®®à¯à®¤à®²à¯à®µà®°à¯ field_role: பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠field_homepage: à®®à¯à®•பà¯à®ªà¯à®ªà¯à®ªà®•à¯à®•ம௠field_is_public: பொத௠field_parent: இன௠தà¯à®£à¯ˆ திடà¯à®Ÿà®®à¯ field_is_in_roadmap: வழிதà¯à®¤à®Ÿà®¤à¯à®¤à®¿à®²à¯ சிகà¯à®•லà¯à®•ள௠காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ field_login: உளà¯à®¨à¯à®´à¯ˆà®¯ field_mail_notification: மினà¯à®©à®žà¯à®šà®²à¯ அறிவிபà¯à®ªà¯à®•ள௠field_admin: நிரà¯à®µà®¾à®•ி field_last_login_on: கடைசி இணைபà¯à®ªà¯ field_language: மொழி field_effective_date: உரிய தேதி field_password: கடவà¯à®šà¯à®šà¯†à®¾à®²à¯ field_new_password: பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯†à®¾à®²à¯ field_password_confirmation: உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ field_version: பதிபà¯à®ªà¯ field_type: வகை field_host: தாஙà¯à®•ி field_port: தà¯à®³à¯ˆ field_account: கணகà¯à®•௠field_base_dn: அடிபà¯à®ªà®Ÿà¯ˆ DN field_attr_login: உளà¯à®¨à¯à®´à¯ˆà®µà¯ பணà¯à®ªà¯ field_attr_firstname: à®®à¯à®¤à®²à¯ பெயர௠பணà¯à®ªà¯à®•à¯à®•ூற௠field_attr_lastname: கடைசி பெயர௠பணà¯à®ªà¯ field_attr_mail: மினà¯à®©à®žà¯à®šà®²à¯ பணà¯à®ªà¯à®•à¯à®•ூற௠field_onthefly: தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பயனர௠உரà¯à®µà®¾à®•à¯à®•ம௠field_start_date: தொடகà¯à®• தேதி field_done_ratio: "% à®®à¯à®Ÿà®¿à®µà¯" field_auth_source: à®…à®™à¯à®•ீகார à®®à¯à®±à¯ˆ field_hide_mail: எனத௠மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரியை மறைகà¯à®•வà¯à®®à¯ field_comments: கரà¯à®¤à¯à®¤à¯ field_url: URL field_start_page: தொடகà¯à®• பகà¯à®•ம௠field_subproject: தà¯à®£à¯ˆ திடà¯à®Ÿà®®à¯ field_hours: மணி field_activity: செயலà¯à®ªà®¾à®Ÿà¯ field_spent_on: தேதி field_identifier: அடையாளஙà¯à®•ாடà¯à®Ÿà®¿ field_is_filter: வடிபà¯à®ªà®¾à®©à®¾à®•ப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறத௠field_issue_to: தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ பிரசà¯à®šà®¿à®©à¯ˆ field_delay: தாமதம௠field_assignable: இநà¯à®¤ பாதà¯à®¤à®¿à®°à®¤à¯à®¤à®¿à®±à¯à®•௠சிகà¯à®•லà¯à®•ளை ஒதà¯à®•à¯à®•லாம௠field_redirect_existing_links: இரà¯à®•à¯à®•à¯à®®à¯ இணைபà¯à®ªà¯à®•ளை திரà¯à®ªà¯à®ªà®¿ விடà¯à®™à¯à®•ள௠field_estimated_hours: கணிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நேரம௠field_column_names: நெடà¯à®µà®°à®¿à®šà¯ˆà®•ள௠field_time_entries: பதிவ௠நேரம௠field_time_zone: நேரம௠மணà¯à®Ÿà®²à®®à¯ field_searchable: தேடகà¯à®•ூடியத௠field_default_value: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மதிபà¯à®ªà¯ field_comments_sorting: கரà¯à®¤à¯à®¤à¯à®•ளைக௠காணà¯à®ªà®¿ field_parent_title: மேல௠பகà¯à®•ம௠field_editable: திரà¯à®¤à¯à®¤à®•à¯à®•ூடியத௠field_watcher: பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯ field_content: உளà¯à®³à®Ÿà®•à¯à®•ம௠field_group_by: கà¯à®´à¯ à®®à¯à®Ÿà®¿à®µà¯à®•ள௠field_sharing: பகிரà¯à®µà¯ field_parent_issue: மேல௠பணி field_member_of_group: "ஒதà¯à®•à¯à®•à¯à®ªà®µà®°à®¿à®©à¯ கà¯à®´à¯" field_assigned_to_role: "ஒதà¯à®•à¯à®•à¯à®ªà®µà®°à®¿à®©à¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ளà¯" field_text: உரை பà¯à®²à®®à¯ field_visible: தெரியà¯à®®à¯ field_warn_on_leaving_unsaved: "சேமிகà¯à®•ாத உரையà¯à®Ÿà®©à¯ ஒர௠பகà¯à®•தà¯à®¤à¯ˆ விடà¯à®Ÿà¯ வெளியேறà¯à®®à¯à®ªà¯‹à®¤à¯ எனà¯à®©à¯ˆ எசà¯à®šà®°à®¿à®•à¯à®•வà¯à®®à¯" setting_app_title: விணà¯à®£à®ªà¯à®ª தலைபà¯à®ªà¯ setting_welcome_text: வரவேறà¯à®ªà¯ உரை setting_default_language: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மொழி setting_login_required: à®…à®™à¯à®•ீகாரம௠தேவை setting_self_registration: சà¯à®¯ பதிவ௠setting_attachment_max_size: இணைபà¯à®ªà¯ அதிகபடà¯à®šà®®à¯. அளவ௠setting_issues_export_limit: à®à®±à¯à®±à¯à®®à®¤à®¿ வரமà¯à®ªà¯ˆ சிகà¯à®•லà¯à®•ள௠setting_mail_from: உமிழà¯à®µà¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரி setting_plain_text_mail: எளிய உரை அஞà¯à®šà®²à¯ (no HTML) setting_host_name: பà¯à®°à®µà®²à®©à¯ பெயர௠மறà¯à®±à¯à®®à¯ பாதை setting_text_formatting: உரை வடிவமைதà¯à®¤à®²à¯ setting_wiki_compression: விகà¯à®•ி வரலாற௠சà¯à®°à¯à®•à¯à®• setting_feeds_limit: ஊடà¯à®Ÿ வரமà¯à®ªà¯ setting_default_projects_public: பà¯à®¤à®¿à®¯ திடà¯à®Ÿà®™à¯à®•ள௠இயலà¯à®ªà®¾à®•வே பொத௠setting_autofetch_changesets: தானாக மாறà¯à®¤à®²à¯ˆ பெறà¯à®¤à®²à¯ setting_sys_api_enabled: களஞà¯à®šà®¿à®¯ மேலாணà¯à®®à¯ˆà®•à¯à®•௠WS ஠இயகà¯à®•௠setting_commit_ref_keywords: à®®à¯à®•à¯à®•ிய வாரà¯à®¤à¯à®¤à¯ˆà®•ளைக௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®µà®¤à¯ setting_commit_fix_keywords: à®®à¯à®•à¯à®•ிய வாரà¯à®¤à¯à®¤à¯ˆà®•ளை சரிசெயà¯à®¤à®²à¯ setting_autologin: தானாக உளà¯à®¨à¯à®´à¯ˆ setting_date_format: தேதி வடிவம௠setting_time_format: நேர அமைபà¯à®ªà¯ setting_cross_project_issue_relations: கà¯à®±à¯à®•à¯à®•௠திடà¯à®Ÿ சிகà¯à®•ல௠உறவà¯à®•ளை அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ setting_issue_list_default_columns: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ நெடà¯à®µà®°à®¿à®šà¯ˆà®•ள௠சிகà¯à®•ல௠படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ setting_emails_header: மினà¯à®©à®žà¯à®šà®²à¯ தலைபà¯à®ªà¯ setting_emails_footer: மினà¯à®©à®žà¯à®šà®²à¯ அடிகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯ setting_protocol: நெறிமà¯à®±à¯ˆ setting_per_page_options: பகà¯à®• விரà¯à®ªà¯à®ªà®™à¯à®•ளà¯à®•à¯à®•௠பொரà¯à®³à¯à®•ள௠setting_user_format: பயனரà¯à®•ள௠வடிவமைபà¯à®ªà¯ˆà®•௠காணà¯à®ªà®¿à®•à¯à®•ினà¯à®±à®©à®°à¯ setting_activity_days_default: திடà¯à®Ÿ செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ நாடà¯à®•ள௠காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ setting_display_subprojects_issues: à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà®¾à®• à®®à¯à®•à¯à®•ிய திடà¯à®Ÿà®™à¯à®•ளில௠தà¯à®£à¯ˆ திடà¯à®Ÿ சிகà¯à®•லà¯à®•ளைக௠காணà¯à®ªà®¿ setting_enabled_scm: இயகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ SCM setting_mail_handler_body_delimiters: "இநà¯à®¤ வரிகளில௠ஒனà¯à®±à®¿à®±à¯à®•à¯à®ªà¯ பிறக௠மினà¯à®©à®žà¯à®šà®²à¯à®•ளைக௠கà¯à®±à¯ˆà®•à¯à®•வà¯à®®à¯" setting_mail_handler_api_enabled: உளà¯à®µà®°à¯à®®à¯ மினà¯à®©à®žà¯à®šà®²à¯à®•ளà¯à®•à¯à®•௠WS ஠இயகà¯à®•௠setting_mail_handler_api_key: API சாவி setting_sequential_project_identifiers: தொடரà¯à®šà¯à®šà®¿à®¯à®¾à®© திடà¯à®Ÿ அடையாளஙà¯à®•ாடà¯à®Ÿà®¿à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®™à¯à®•ள௠setting_gravatar_enabled: கிராவதர௠பயனர௠சினà¯à®©à®®à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ setting_gravatar_default: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ கிராவதர௠படம௠setting_diff_max_lines_displayed: காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ அதிகபடà¯à®š வேறà¯à®ªà®¾à®Ÿà¯ கோடà¯à®•ள௠setting_file_max_size_displayed: கோடà¯à®Ÿà®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ உரை கோபà¯à®ªà¯à®•ளின௠அதிகபடà¯à®š அளவ௠setting_repository_log_display_limit: கோபà¯à®ªà¯ பதிவில௠காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ அதிகபடà¯à®š திரà¯à®¤à¯à®¤à®™à¯à®•ள௠setting_password_min_length: கà¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®š கடவà¯à®šà¯à®šà¯Šà®²à¯ நீளம௠setting_new_project_user_role_id: ஒர௠திடà¯à®Ÿà®¤à¯à®¤à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®®à¯ நிரà¯à®µà®¾à®•மறà¯à®± பயனரà¯à®•à¯à®•௠வழஙà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠setting_default_projects_modules: பà¯à®¤à®¿à®¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•ான இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ இயகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®¤à®¿à®•ள௠setting_issue_done_ratio: சிகà¯à®•லைச௠செயà¯à®¤ விகிததà¯à®¤à¯ˆà®•௠கணகà¯à®•ிடà¯à®™à¯à®•ள௠setting_issue_done_ratio_issue_field: சிகà¯à®•ல௠பà¯à®²à®¤à¯à®¤à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ setting_issue_done_ratio_issue_status: சிகà¯à®•ல௠நிலையைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ setting_start_of_week: நாடà¯à®•ாடà¯à®Ÿà®¿à®•ளைத௠தொடஙà¯à®•வà¯à®®à¯ setting_rest_api_enabled: REST வலை சேவையை இயகà¯à®•௠setting_cache_formatted_text: தறà¯à®•ாலிக சேமிபà¯à®ªà¯ வடிவமைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ உரை setting_default_notification_option: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ அறிவிபà¯à®ªà¯ விரà¯à®ªà¯à®ªà®®à¯ setting_commit_logtime_enabled: நேர பதிவை இயகà¯à®•௠setting_commit_logtime_activity_id: உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤ நேரதà¯à®¤à®¿à®±à¯à®•ான செயலà¯à®ªà®¾à®Ÿà¯ setting_gantt_items_limit: கேனà¯à®Ÿà¯ விளகà¯à®•பà¯à®ªà®Ÿà®¤à¯à®¤à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ அதிகபடà¯à®š உரà¯à®ªà¯à®ªà®Ÿà®¿à®•ள௠setting_issue_group_assignment: கà¯à®´à¯à®•à¯à®•ளà¯à®•à¯à®•௠சிகà¯à®•ல௠ஒதà¯à®•à¯à®•லை அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ setting_default_issue_start_date_to_creation_date: பà¯à®¤à®¿à®¯ சிகà¯à®•லà¯à®•ளà¯à®•à¯à®•௠தொடகà¯à®• தேதியாக தறà¯à®ªà¯‹à®¤à¯ˆà®¯ தேதியைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_add_project: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ permission_add_subprojects: தà¯à®£à¯ˆ திடà¯à®Ÿà®™à¯à®•ளை உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ permission_edit_project: திடà¯à®Ÿà®¤à¯à®¤à¯ˆà®¤à¯ திரà¯à®¤à¯à®¤à¯ permission_select_project_modules: திடà¯à®Ÿ தொகà¯à®¤à®¿à®•ள௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ permission_manage_members: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_manage_project_activities: திடà¯à®Ÿ நடவடிகà¯à®•ைகளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_manage_versions: பதிபà¯à®ªà¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_manage_categories: சிகà¯à®•ல௠வகைகளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_view_issues: சிகà¯à®•லà¯à®•ளைக௠காணà¯à®• permission_add_issues: சிகà¯à®•லà¯à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ permission_edit_issues: சிகà¯à®•லà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_manage_issue_relations: சிகà¯à®•ல௠உறவà¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_add_issue_notes: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ permission_edit_issue_notes: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளைத௠திரà¯à®¤à¯à®¤à¯ permission_edit_own_issue_notes: சொநà¯à®¤ கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_delete_issues: சிகà¯à®•லà¯à®•ளை நீகà¯à®•௠permission_manage_public_queries: பொத௠வினவலà¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_save_queries: வினவலà¯à®•ளைச௠சேமிகà¯à®•வà¯à®®à¯ permission_view_gantt: கேனà¯à®Ÿà¯ விளகà¯à®•பà¯à®ªà®Ÿà®¤à¯à®¤à¯ˆà®•௠காணà¯à®• permission_view_calendar: நாடà¯à®•ாடà¯à®Ÿà®¿à®•ளை காணà¯à®• permission_view_issue_watchers: கவனிபà¯à®ªà®¾à®³à®° படà¯à®Ÿà®¿à®¯à®²à¯ˆà®•௠காணà¯à®• permission_add_issue_watchers: கவனிபà¯à®ªà®¾à®³à®°à¯ˆ சேரà¯à®•à¯à®•வà¯à®®à¯ permission_delete_issue_watchers: கவனிபà¯à®ªà®¾à®³à®°à¯ˆ நீகà¯à®•௠permission_log_time: பதிவ௠நேரம௠செலவிடà¯à®Ÿà®¤à¯ permission_view_time_entries: செலவழிதà¯à®¤ நேரதà¯à®¤à¯ˆà®•௠காணà¯à®• permission_edit_time_entries: நேர பதிவà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_edit_own_time_entries: சொநà¯à®¤ நேர பதிவà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_manage_news: செயà¯à®¤à®¿à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_comment_news: கரà¯à®¤à¯à®¤à¯ செயà¯à®¤à®¿ permission_view_documents: ஆவணஙà¯à®•ளைக௠காணà¯à®• permission_manage_files: கோபà¯à®ªà¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_view_files: கோபà¯à®ªà¯à®•ளைக௠காணà¯à®• permission_manage_wiki: விகà¯à®•ியை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_rename_wiki_pages: விகà¯à®•ி பகà¯à®•à®™à¯à®•ளை மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà¯à®™à¯à®•ள௠permission_delete_wiki_pages: விகà¯à®•ி பகà¯à®•à®™à¯à®•ளை நீகà¯à®•௠permission_view_wiki_pages: விகà¯à®•ியைக௠காணà¯à®• permission_view_wiki_edits: விகà¯à®•ி வரலாறà¯à®±à¯ˆà®•௠காணà¯à®• permission_edit_wiki_pages: விகà¯à®•ி பகà¯à®•à®™à¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_delete_wiki_pages_attachments: இணைபà¯à®ªà¯à®•ளை நீகà¯à®•௠permission_protect_wiki_pages: விகà¯à®•ி பகà¯à®•à®™à¯à®•ளைப௠பாதà¯à®•ாகà¯à®•வà¯à®®à¯ permission_manage_repository: களஞà¯à®šà®¿à®¯à®¤à¯à®¤à¯ˆ நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_browse_repository: களஞà¯à®šà®¿à®¯à®¤à¯à®¤à¯ˆ உலாவà¯à®• permission_view_changesets: மாறà¯à®±à®™à¯à®•ளைக௠காணà¯à®• permission_commit_access: மாறà¯à®±à®®à¯ செயà¯à®¯ permission_manage_boards: மனà¯à®±à®™à¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ permission_view_messages: செயà¯à®¤à®¿à®•ளைக௠காணà¯à®• permission_add_messages: செயà¯à®¤à®¿à®•ளை இடà¯à®™à¯à®•ள௠permission_edit_messages: செயà¯à®¤à®¿à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_edit_own_messages: சொநà¯à®¤ செயà¯à®¤à®¿à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ permission_delete_messages: செயà¯à®¤à®¿à®•ளை நீகà¯à®•௠permission_delete_own_messages: சொநà¯à®¤ செயà¯à®¤à®¿à®•ளை நீகà¯à®•௠permission_export_wiki_pages: விகà¯à®•ி பகà¯à®•à®™à¯à®•ளை à®à®±à¯à®±à¯à®®à®¤à®¿ செயà¯à®• permission_manage_subtasks: தà¯à®£à¯ˆ பணிகளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ project_module_issue_tracking: சிகà¯à®•ல௠கணà¯à®•ாணிபà¯à®ªà¯ project_module_time_tracking: நேர கணà¯à®•ாணிபà¯à®ªà¯ project_module_news: செயà¯à®¤à®¿ project_module_documents: ஆவணஙà¯à®•ள௠project_module_files: கோபà¯à®ªà¯à®•ள௠project_module_wiki: விகà¯à®•ி project_module_repository: களஞà¯à®šà®¿à®¯à®®à¯ project_module_boards: மனà¯à®±à®™à¯à®•ள௠project_module_calendar: நாடà¯à®•ாடà¯à®Ÿà®¿ project_module_gantt: காணà¯à®Ÿà¯ label_user: பயனர௠label_user_plural: பயனரà¯à®•ள௠label_user_new: பà¯à®¤à®¿à®¯ பயனர௠label_user_anonymous: பெயர௠அறியபà¯à®ªà®Ÿà®¾à®¤ label_project: திடà¯à®Ÿà®®à¯ label_project_new: பà¯à®¤à®¿à®¯ திடà¯à®Ÿà®®à¯ label_project_plural: திடà¯à®Ÿà®™à¯à®•ள௠label_x_projects: zero: திடà¯à®Ÿà®™à¯à®•ள௠இலà¯à®²à¯ˆ one: 1 திடà¯à®Ÿà®®à¯ other: "%{count} திடà¯à®Ÿà®™à¯à®•ளà¯" label_project_all: அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®®à¯ label_project_latest: சமீபதà¯à®¤à®¿à®¯ திடà¯à®Ÿà®™à¯à®•ள௠label_issue: சிகà¯à®•ல௠label_issue_new: பà¯à®¤à®¿à®¯ சிகà¯à®•ல௠label_issue_plural: சிகà¯à®•லà¯à®•ள௠label_issue_view_all: எலà¯à®²à®¾ சிகà¯à®•லà¯à®•ளையà¯à®®à¯ காணà¯à®• label_issues_by: " சிகà¯à®•லà¯à®•ள௠மூலம௠%{value}" label_issue_added: சிகà¯à®•ல௠சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_issue_updated: சிகà¯à®•ல௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_document: ஆவணம௠label_document_new: பà¯à®¤à®¿à®¯ ஆவணம௠label_document_plural: ஆவணஙà¯à®•ள௠label_document_added: ஆவணம௠சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_role: பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠label_role_plural: பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠label_role_new: பà¯à®¤à®¿à®¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠label_role_and_permissions: பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠மறà¯à®±à¯à®®à¯ அனà¯à®®à®¤à®¿à®•ள௠label_role_anonymous: பெயர௠அறியபà¯à®ªà®Ÿà®¾à®¤ label_role_non_member: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ அலà¯à®²à®¾à®¤à®µà®°à¯ label_member: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ label_member_new: பà¯à®¤à®¿à®¯ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ label_member_plural: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯à®•ள௠label_tracker: தடம௠label_tracker_plural: தடம௠label_tracker_new: பà¯à®¤à®¿à®¯ தடம௠label_workflow: பணிபà¯à®ªà®¾à®¯à¯à®µà¯ label_issue_status: வெளியீடà¯à®Ÿà¯ நிலை label_issue_status_plural: வெளியீடà¯à®Ÿà¯ நிலைகள௠label_issue_status_new: பà¯à®¤à®¿à®¯ நிலை label_issue_category: வெளியீடà¯à®Ÿà¯ வகை label_issue_category_plural: வெளியீடà¯à®Ÿà¯ பிரிவà¯à®•ள௠label_issue_category_new: பà¯à®¤à®¿à®¯ வகை label_custom_field: தனிபà¯à®ªà®¯à®©à¯ பà¯à®²à®®à¯ label_custom_field_plural: விரà¯à®ªà¯à®ª பà¯à®²à®™à¯à®•ள௠label_custom_field_new: பà¯à®¤à®¿à®¯ தனிபà¯à®ªà®¯à®©à¯ பà¯à®²à®®à¯ label_enumerations: கணகà¯à®•ீடà¯à®•ள௠label_enumeration_new: பà¯à®¤à®¿à®¯ மதிபà¯à®ªà¯ label_information: தகவல௠label_information_plural: தகவல௠label_register: பதிவ௠label_password_lost: கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ இழநà¯à®¤à®¤à¯ label_home: இலà¯à®²à®®à¯ label_my_page: என௠பகà¯à®•ம௠label_my_account: என௠கணகà¯à®•௠label_my_projects: எனத௠திடà¯à®Ÿà®™à¯à®•ள௠label_administration: நிரà¯à®µà®¾à®•ம௠label_login: உளà¯à®¨à¯à®´à¯ˆà®• label_logout: வெளியேற௠label_help: உதவி label_reported_issues: பà¯à®•ாரளிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ள௠label_assigned_to_me_issues: எனகà¯à®•௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ள௠label_registered_on: இல௠பதிவ௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ label_activity: செயலà¯à®ªà®¾à®Ÿà¯ label_user_activity: "%{value}'கள௠செயலà¯à®ªà®¾à®Ÿà¯" label_new: பà¯à®¤à®¿à®¯à®¤à¯ label_logged_as: உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤à¯à®³à¯à®³à¯€à®°à¯ label_environment: சà¯à®±à¯à®±à¯à®šà¯à®šà¯‚ழல௠label_authentication: à®…à®™à¯à®•ீகார label_auth_source: à®…à®™à¯à®•ீகார à®®à¯à®±à¯ˆ label_auth_source_new: பà¯à®¤à®¿à®¯ à®…à®™à¯à®•ீகார à®®à¯à®±à¯ˆ label_auth_source_plural: à®…à®™à¯à®•ீகார à®®à¯à®±à¯ˆà®•ள௠label_subproject_plural: தà¯à®£à¯ˆ திடà¯à®Ÿà®™à¯à®•ள௠label_subproject_new: பà¯à®¤à®¿à®¯ தà¯à®£à¯ˆ திடà¯à®Ÿà®®à¯ label_and_its_subprojects: "%{value} மறà¯à®±à¯à®®à¯ அதன௠தà¯à®£à¯ˆ திடà¯à®Ÿà®™à¯à®•ளà¯" label_min_max_length: கà¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®šà®®à¯ - அதிகபடà¯à®š நீளம௠label_list: படà¯à®Ÿà®¿à®¯à®²à¯ label_date: தேதி label_integer: à®®à¯à®´à¯ label_float: மிதவை label_boolean: பூலியன௠label_string: உரை label_text: நீணà¯à®Ÿ உரை label_attribute: பணà¯à®ªà¯ label_attribute_plural: பணà¯à®ªà¯à®•à¯à®•ூறà¯à®•ள௠label_no_data: காணà¯à®ªà®¿à®•à¯à®• தரவ௠இலà¯à®²à¯ˆ label_no_preview: எநà¯à®¤ à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯à®®à¯ கிடைகà¯à®•விலà¯à®²à¯ˆ label_change_status: நிலையை மாறà¯à®±à®µà¯à®®à¯ label_history: வரலாற௠label_attachment: கோபà¯à®ªà¯ label_attachment_new: பà¯à®¤à®¿à®¯ கோபà¯à®ªà¯ label_attachment_delete: கோபà¯à®ªà¯ˆ அழிகà¯à®•வà¯à®®à¯ label_attachment_plural: கோபà¯à®ªà¯à®•ள௠label_file_added: கோபà¯à®ªà¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_report: அறிகà¯à®•ை label_report_plural: அறிகà¯à®•ைகள௠label_news: செயà¯à®¤à®¿ label_news_new: செயà¯à®¤à®¿à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ label_news_plural: செயà¯à®¤à®¿ label_news_latest: சமீபதà¯à®¤à®¿à®¯ செயà¯à®¤à®¿ label_news_view_all: எலà¯à®²à®¾ செயà¯à®¤à®¿à®•ளையà¯à®®à¯ காணà¯à®• label_news_added: செயà¯à®¤à®¿ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_news_comment_added: ஒர௠செயà¯à®¤à®¿à®¯à®¿à®²à¯ கரà¯à®¤à¯à®¤à¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_settings: அமைபà¯à®ªà¯à®•ள௠label_overview: கணà¯à®£à¯‹à®Ÿà¯à®Ÿà®®à¯ label_version: பதிபà¯à®ªà¯ label_version_new: பà¯à®¤à®¿à®¯ பதிபà¯à®ªà¯ label_version_plural: பதிபà¯à®ªà¯à®•ள௠label_version_and_files: பதிபà¯à®ªà¯à®•ள௠(%{count}) மறà¯à®±à¯à®®à¯ கோபà¯à®ªà¯à®•ள௠label_close_versions: பூரà¯à®¤à¯à®¤à®¿ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà¯à®•ளை மூட௠label_confirmation: உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ label_export_to: 'இல௠கிடைகà¯à®•ிறதà¯:' label_read: படி... label_public_projects: பொத௠திடà¯à®Ÿà®™à¯à®•ள௠label_open_issues: திறநà¯à®¤ label_open_issues_plural: திறநà¯à®¤ label_closed_issues: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_closed_issues_plural: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_x_open_issues_abbr: zero: 0 திறநà¯à®¤ one: 1 திறநà¯à®¤ other: "%{count} திறநà¯à®¤" label_x_closed_issues_abbr: zero: 0 மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ one: 1 மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ other: "%{count} மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" label_total: மொதà¯à®¤à®®à¯ label_permissions: அனà¯à®®à®¤à®¿à®•ள௠label_current_status: தறà¯à®ªà¯‡à®¾à®¤à¯ˆà®¯ நிலை label_new_statuses_allowed: பà¯à®¤à®¿à®¯ நிலைகள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®© label_all: அனைதà¯à®¤à¯à®®à¯ label_none: எதà¯à®µà¯à®®à¯ இலà¯à®²à¯ˆ label_nobody: யாரà¯à®®à¯ இலà¯à®²à¯ˆ label_next: அடà¯à®¤à¯à®¤à®¤à¯ label_previous: à®®à¯à®¨à¯à®¤à¯ˆà®¯à®¤à¯ label_used_by: பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯à®¤à¯ label_details: விவரஙà¯à®•ள௠label_add_note: ஒர௠கà¯à®±à®¿à®ªà¯à®ªà¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯ label_calendar: நாடà¯à®•ாடà¯à®Ÿà®¿ label_months_from: à®®à¯à®¤à®²à¯ மாதஙà¯à®•ள௠label_gantt: காணà¯à®Ÿà¯ label_internal: உள௠label_last_changes: "கடைசி %{count} மாறà¯à®±à®™à¯à®•ளà¯" label_change_view_all: எலà¯à®²à®¾ மாறà¯à®±à®™à¯à®•ளையà¯à®®à¯ காணà¯à®• label_comment: கரà¯à®¤à¯à®¤à¯ label_comment_plural: கரà¯à®¤à¯à®¤à¯à®°à¯ˆà®•ள௠label_x_comments: zero: கரà¯à®¤à¯à®¤à¯à®•ள௠இலà¯à®²à¯ˆ one: 1 கரà¯à®¤à¯à®¤à¯ other: "%{count} கரà¯à®¤à¯à®¤à¯à®•ளà¯" label_comment_add: ஒர௠கரà¯à®¤à¯à®¤à¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯ label_comment_added: கரà¯à®¤à¯à®¤à¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_comment_delete: கரà¯à®¤à¯à®¤à¯à®•ளை நீகà¯à®•௠label_query: விரà¯à®ªà¯à®ª கேளà¯à®µà®¿ label_query_plural: விரà¯à®ªà¯à®ª கேளà¯à®µà®¿à®•ளà¯à®•à¯à®•௠label_query_new: பà¯à®¤à®¿à®¯ கேளà¯à®µà®¿ label_my_queries: என௠விரà¯à®ªà¯à®ª கேளà¯à®µà®¿à®•ளà¯à®•à¯à®•௠label_filter_add: வடிபà¯à®ªà®¾à®©à¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯ label_filter_plural: வடிபà¯à®ªà®¾à®©à¯à®•ள௠label_equals: இரà¯à®•à¯à®•ிறத௠label_not_equals: இலà¯à®²à¯ˆ label_in_less_than: கà¯à®±à¯ˆà®µà®¾à®• label_in_more_than: விட label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: இல௠label_today: இனà¯à®±à¯ label_yesterday: நேறà¯à®±à¯ label_this_week: இநà¯à®¤ வாரம௠label_last_week: கடநà¯à®¤ வாரம௠label_last_n_days: "கடைசி %{count} நாடà¯à®•ளà¯" label_this_month: இநà¯à®¤ மாதம௠label_last_month: கடநà¯à®¤ மாதம௠label_this_year: இநà¯à®¤ வரà¯à®Ÿà®®à¯ label_date_range: தேதி வரமà¯à®ªà¯ label_less_than_ago: சில நாடà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯à®ªà¯ label_more_than_ago: நாடà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯à®ªà¯ label_ago: நாடà¯à®•ளà¯à®•à¯à®•௠மà¯à®©à¯à®ªà¯ label_contains: கொணà¯à®Ÿà®¿à®°à¯à®¨à¯à®¤à®¾à®²à¯ label_not_contains: இலà¯à®²à¯ˆ label_day_plural: நாடà¯à®•ள௠label_repository: களஞà¯à®šà®¿à®¯à®®à¯ label_repository_plural: களஞà¯à®šà®¿à®¯à®™à¯à®•ள௠label_branch: கிளை label_tag: கà¯à®±à®¿à®šà¯à®šà¯Šà®²à¯ label_revision: திரà¯à®¤à¯à®¤à®®à¯ label_revision_plural: திரà¯à®¤à¯à®¤à®™à¯à®•ள௠label_revision_id: "திரà¯à®¤à¯à®¤à®™à¯à®•ள௠%{value}" label_associated_revisions: தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ திரà¯à®¤à¯à®¤à®™à¯à®•ள௠label_added: சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_modified: மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_copied: நகலெடà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_renamed: மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_deleted: நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_latest_revision: சமீபதà¯à®¤à®¿à®¯ திரà¯à®¤à¯à®¤à®®à¯ label_latest_revision_plural: சமீபதà¯à®¤à®¿à®¯ திரà¯à®¤à¯à®¤à®™à¯à®•ள௠label_view_revisions: திரà¯à®¤à¯à®¤à®™à¯à®•ளைக௠காணà¯à®• label_view_all_revisions: எலà¯à®²à®¾ திரà¯à®¤à¯à®¤à®™à¯à®•ளையà¯à®®à¯ காணà¯à®• label_max_size: அதிகபடà¯à®š அளவ௠label_roadmap: வழிதà¯à®¤à®Ÿà®®à¯ label_roadmap_due_in: "காரணமாக %{value}" label_roadmap_overdue: "%{value} தாமதமாக" label_roadmap_no_issues: இநà¯à®¤ பதிபà¯à®ªà®¿à®±à¯à®•ான சிகà¯à®•லà¯à®•ள௠எதà¯à®µà¯à®®à¯ இலà¯à®²à¯ˆ label_search: தேடல௠label_result_plural: à®®à¯à®Ÿà®¿à®µà¯à®•ள௠label_all_words: எலà¯à®²à®¾ வாரà¯à®¤à¯à®¤à¯ˆà®•ளà¯à®®à¯ label_wiki: விகà¯à®•ி label_wiki_edit: விகà¯à®•ி திரà¯à®¤à¯à®¤ label_wiki_edit_plural: விகà¯à®•ி திரà¯à®¤à¯à®¤à¯à®•ிறத௠label_wiki_page: விகà¯à®•ி பகà¯à®•ம௠label_wiki_page_plural: விகà¯à®•ி பகà¯à®•à®™à¯à®•ள௠label_index_by_title: தலைபà¯à®ªà¯ மூலம௠அடà¯à®Ÿà®µà®£à¯ˆ label_index_by_date: தேதி மூலம௠அடà¯à®Ÿà®µà®£à¯ˆ label_current_version: நடபà¯à®ªà¯ வடிவம௠label_preview: à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯ label_feed_plural: ஊடà¯à®Ÿà®™à¯à®•ள௠label_changes_details: அனைதà¯à®¤à¯ மாறà¯à®±à®™à¯à®•ளின௠விவரஙà¯à®•ள௠label_issue_tracking: சிகà¯à®•ல௠கணà¯à®•ாணிபà¯à®ªà¯ label_spent_time: நேரம௠செலவிடà¯à®Ÿà®¾à®°à¯ label_f_hour: "%{value} மணி" label_f_hour_plural: "%{value} மணி" label_time_tracking: நேர கணà¯à®•ாணிபà¯à®ªà¯ label_change_plural: மாறà¯à®±à®™à¯à®•ள௠label_statistics: பà¯à®³à¯à®³à®¿à®µà®¿à®µà®°à®®à¯ label_commits_per_month: மாததà¯à®¤à®¿à®±à¯à®•௠செயà¯à®¤à¯à®•ொளà¯à®•ிறார௠label_commits_per_author: ஒர௠எழà¯à®¤à¯à®¤à®¾à®³à®°à¯à®•à¯à®•௠கமிட௠label_view_diff: வேறà¯à®ªà®¾à®Ÿà¯à®•ளைக௠காணà¯à®• label_diff_inline: கோடà¯à®Ÿà®¿à®²à¯ label_diff_side_by_side: à®…à®°à¯à®•à®°à¯à®•ில௠label_options: விரà¯à®ªà¯à®ªà®™à¯à®•ள௠label_copy_workflow_from: பணிபà¯à®ªà®¾à®¯à¯à®µà¯ நகலெடà¯à®•à¯à®•வà¯à®®à¯ label_permissions_report: அனà¯à®®à®¤à®¿ அறிகà¯à®•ை label_watched_issues: கவனிகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ சிகà¯à®•லà¯à®•ள௠label_related_issues: தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ சிகà¯à®•லà¯à®•ள௠label_applied_status: பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ நிலை label_loading: à®à®±à¯à®±à¯à®•ிறதà¯... label_relation_new: பà¯à®¤à®¿à®¯ உறவ௠label_relation_delete: உறவை நீகà¯à®•௠label_relates_to: தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ label_duplicates: எனà¯à®ªà®¤à¯ நகல௠label_duplicated_by: நகல௠உளà¯à®³à®¤à¯ label_blocks: தொகà¯à®¤à®¿à®•ள௠label_blocked_by: ஆல௠தடà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_precedes: à®®à¯à®¨à¯à®¤à®¿à®¯à®¤à¯ label_follows: பினà¯à®µà®°à¯à®®à®¾à®±à¯ label_stay_logged_in: உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤à®¿à®°à¯à®™à¯à®•ள௠label_disabled: à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_show_completed_versions: பூரà¯à®¤à¯à®¤à®¿ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà¯à®•ளைக௠காடà¯à®Ÿà¯ label_me: எனà¯à®©à¯ˆ label_board: மனà¯à®±à®®à¯ label_board_new: பà¯à®¤à®¿à®¯ மனà¯à®±à®®à¯ label_board_plural: மனà¯à®±à®™à¯à®•ள௠label_board_locked: பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ label_board_sticky: ஒடà¯à®Ÿà¯à®®à¯ label_topic_plural: தலைபà¯à®ªà¯à®•ள௠label_message_plural: செயà¯à®¤à®¿à®•ள௠label_message_last: கடைசி செயà¯à®¤à®¿ label_message_new: பà¯à®¤à®¿à®¯ தகவல௠label_message_posted: செயà¯à®¤à®¿ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_reply_plural: பதிலà¯à®•ள௠label_send_information: கணகà¯à®•௠தகவலை பயனரà¯à®•à¯à®•௠அனà¯à®ªà¯à®ªà®µà¯à®®à¯ label_year: ஆணà¯à®Ÿà¯ label_month: மாதம௠label_week: வாரம௠label_date_from: இரà¯à®¨à¯à®¤à¯ label_date_to: வரை label_language_based: பயனரின௠மொழியின௠அடிபà¯à®ªà®Ÿà¯ˆà®¯à®¿à®²à¯ label_sort_by: "மூலம௠வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ %{value}" label_send_test_email: சோதனை மினà¯à®©à®žà¯à®šà®²à¯ˆ அனà¯à®ªà¯à®ªà®µà¯à®®à¯ label_feeds_access_key: அண௠அணà¯à®•ல௠சாவி label_missing_feeds_access_key: ஆடà¯à®Ÿà®®à¯ அணà¯à®•ல௠சாவியை காணவிலà¯à®²à¯ˆ label_feeds_access_key_created_on: "அண௠அணà¯à®•ல௠சாவி %{value} à®®à¯à®©à¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" label_module_plural: தொகà¯à®¤à®¿à®•ள௠label_added_time_by: "%{author} %{age} à®®à¯à®©à¯à®ªà¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" label_updated_time_by: "%{author} %{age} à®®à¯à®©à¯à®ªà¯ பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" label_updated_time: "பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ %{value} à®®à¯à®©à¯à®ªà¯" label_jump_to_a_project: ஒர௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠செலà¯à®²à®µà¯à®®à¯... label_file_plural: கோபà¯à®ªà¯à®•ள௠label_changeset_plural: மாறà¯à®±à®™à¯à®•ள௠label_default_columns: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ நெடà¯à®µà®°à®¿à®šà¯ˆà®•ள௠label_no_change_option: (மாறà¯à®±à®®à¯ இலà¯à®²à¯ˆ) label_bulk_edit_selected_issues: தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ளை மொதà¯à®¤à®®à®¾à®• திரà¯à®¤à¯à®¤à¯à®™à¯à®•ள௠label_theme: நடை label_default: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ label_search_titles_only: தலைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯ தேடà¯à®™à¯à®•ள௠label_user_mail_option_all: "எனத௠எலà¯à®²à®¾ திடà¯à®Ÿà®™à¯à®•ளிலà¯à®®à¯ எநà¯à®¤à®µà¯Šà®°à¯ நிகழà¯à®µà®¿à®±à¯à®•à¯à®®à¯" label_user_mail_option_selected: "தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளில௠மடà¯à®Ÿà¯à®®à¯‡ எநà¯à®¤à®µà¯Šà®°à¯ நிகழà¯à®µà®¿à®±à¯à®•à¯à®®à¯..." label_user_mail_option_none: "நிகழà¯à®µà¯à®•ள௠இலà¯à®²à¯ˆ" label_user_mail_option_only_my_events: "ஒரே விஷயஙà¯à®•ளை நான௠பாரà¯à®•à¯à®• அலà¯à®²à®¤à¯ நான௠ஈடà¯à®ªà®Ÿà¯à®Ÿà¯ வரà¯à®•ிறேனà¯" label_user_mail_no_self_notified: "நான௠செயà¯à®¯à¯à®®à¯ மாறà¯à®±à®™à¯à®•ள௠கà¯à®±à®¿à®¤à¯à®¤à¯ எனகà¯à®•à¯à®¤à¯ தெரிவிகà¯à®• விரà¯à®®à¯à®ªà®µà®¿à®²à¯à®²à¯ˆ" label_registration_activation_by_email: மினà¯à®©à®žà¯à®šà®²à¯ மூலம௠கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ label_registration_manual_activation: கையேட௠கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ label_registration_automatic_activation: தானியஙà¯à®•ி கணகà¯à®•௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ label_display_per_page: "பகà¯à®•ம௠ஒனà¯à®±à¯à®•à¯à®•à¯: %{value}" label_age: வயத௠label_change_properties: பணà¯à®ªà¯à®•ளை மாறà¯à®±à®µà¯à®®à¯ label_general: பொத௠label_scm: SCM label_plugins: செரà¯à®•à¯à®¨à®¿à®°à®²à¯à®•ள௠label_ldap_authentication: LDAP à®…à®™à¯à®•ீகாரம௠label_downloads_abbr: D/L label_optional_description: விரà¯à®ªà¯à®ª விளகà¯à®•ம௠label_add_another_file: மறà¯à®±à¯Šà®°à¯ கோபà¯à®ªà¯ˆà®šà¯ சேரà¯à®•à¯à®•வà¯à®®à¯ label_preferences: விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯à®•ள௠label_chronological_order: காலவரிசைபà¯à®ªà®Ÿà®¿ label_reverse_chronological_order: தலைகீழ௠காலவரிசைபà¯à®ªà®Ÿà®¿ label_incoming_emails: உளà¯à®µà®°à¯à®®à¯ மினà¯à®©à®žà¯à®šà®²à¯à®•ள௠label_generate_key: ஒர௠விசையை உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ label_issue_watchers: பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠label_example: உதாரணமாக label_display: காடà¯à®šà®¿ label_sort: வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ label_ascending: à®à®±à¯à®µà®°à®¿à®šà¯ˆà®¯à®¿à®©à¯à®ªà®Ÿà®¿ label_descending: இறஙà¯à®•à¯à®µà®°à®¿à®šà¯ˆà®¯à®¿à®©à¯à®ªà®Ÿà®¿ label_date_from_to: இரà¯à®¨à¯à®¤à¯ %{start} வரை %{end} label_wiki_content_added: விகà¯à®•ி பகà¯à®•ம௠சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_wiki_content_updated: விகà¯à®•ி பகà¯à®•ம௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_group: கà¯à®´à¯ label_group_plural: கà¯à®´à¯à®•à¯à®•ள௠label_group_new: பà¯à®¤à®¿à®¯ கà¯à®´à¯ label_time_entry_plural: நேரம௠செலவிடà¯à®Ÿà®¾à®°à¯ label_version_sharing_none: பகிரபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ label_version_sharing_descendants: தà¯à®£à¯ˆ திடà¯à®Ÿà®™à¯à®•ளà¯à®Ÿà®©à¯ label_version_sharing_hierarchy: திடà¯à®Ÿ வரிசைமà¯à®±à¯ˆà®¯à¯à®Ÿà®©à¯ label_version_sharing_tree: திடà¯à®Ÿ மரதà¯à®¤à¯à®Ÿà®©à¯ label_version_sharing_system: அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®Ÿà®©à¯à®®à¯ label_update_issue_done_ratios: பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•ல௠விகிதஙà¯à®•ள௠label_copy_source: ஆதாரம௠label_copy_target: இலகà¯à®•௠label_copy_same_as_target: இலகà¯à®•௠அதே label_display_used_statuses_only: இநà¯à®¤ தடம௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯ நிலைகளை மடà¯à®Ÿà¯à®®à¯‡ காணà¯à®ªà®¿ label_api_access_key: API அணà¯à®•ல௠விசை label_missing_api_access_key: API அணà¯à®•ல௠விசையை காணவிலà¯à®²à¯ˆ label_api_access_key_created_on: "API அணà¯à®•ல௠சாவி %{value} à®®à¯à®©à¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" label_profile: சà¯à®¯à®µà®¿à®µà®°à®®à¯ label_subtask_plural: தà¯à®£à¯ˆ பணிகள௠label_project_copy_notifications: திடà¯à®Ÿ நகலின௠போத௠மினà¯à®©à®žà¯à®šà®²à¯ அறிவிபà¯à®ªà¯à®•ளை அனà¯à®ªà¯à®ªà®µà¯à®®à¯ label_principal_search: "பயனர௠அலà¯à®²à®¤à¯ கà¯à®´à¯à®µà¯ˆà®¤à¯ தேடà¯à®™à¯à®•ளà¯:" label_user_search: "பயனரைத௠தேடà¯à®™à¯à®•ளà¯:" button_login: உள௠நà¯à®´à¯ˆ button_submit: சமரà¯à®ªà¯à®ªà®¿à®•à¯à®•வà¯à®®à¯ button_save: சேமி button_check_all: அனைதà¯à®¤à¯ˆà®¯à¯à®®à¯ சரிபாரà¯à®•à¯à®•வà¯à®®à¯ button_uncheck_all: அனைதà¯à®¤à¯ˆà®¯à¯à®®à¯ தேரà¯à®µà¯à®¨à¯€à®•à¯à®•௠button_collapse_all: அனைதà¯à®¤à¯ˆà®¯à¯à®®à¯ சà¯à®°à¯à®•à¯à®•வà¯à®®à¯ button_expand_all: எலà¯à®²à®¾à®µà®±à¯à®±à¯ˆà®¯à¯à®®à¯ விரிவாகà¯à®•௠button_delete: நீகà¯à®•௠button_create: உரà¯à®µà®¾à®•à¯à®•௠button_create_and_continue: இனà¯à®©à¯Šà®©à¯à®±à¯ˆ உரà¯à®µà®¾à®•à¯à®•ி சேரà¯à®•à¯à®•வà¯à®®à¯ button_test: சோதனை button_edit: திரà¯à®¤à¯à®¤à¯ button_edit_associated_wikipage: "தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ விகà¯à®•ி பகà¯à®•தà¯à®¤à¯ˆà®¤à¯ திரà¯à®¤à¯à®¤à®µà¯à®®à¯: %{page_title}" button_add: கூடà¯à®Ÿà¯ button_change: மாறà¯à®±à®®à¯ button_apply: விணà¯à®£à®ªà¯à®ªà®¿à®•à¯à®•வà¯à®®à¯ button_clear: தெளிவாகà¯à®•௠button_lock: அடை button_unlock: திறதà¯à®¤à®²à¯ button_download: பதிவிறகà¯à®•௠button_list: படà¯à®Ÿà®¿à®¯à®²à¯ button_view: காணà¯à®• button_move: நகரà¯à®µà¯ button_move_and_follow: நகரà¯à®¤à¯à®¤à®µà¯à®®à¯ பினà¯à®ªà®±à¯à®±à®µà¯à®®à¯ button_back: பின௠button_cancel: ரதà¯à®¤à¯à®šà¯†à®¯à¯ button_activate: செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ button_sort: வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ button_log_time: பதிவ௠நேரம௠button_rollback: இநà¯à®¤ பதிபà¯à®ªà®¿à®±à¯à®•௠திரà¯à®®à¯à®ªà®µà¯à®®à¯ button_watch: பாரà¯à®™à¯à®•ள௠button_unwatch: கவனிபà¯à®ªà¯à®¨à¯€à®•à¯à®•௠button_reply: பதில௠button_archive: காபà¯à®ªà®•ம௠button_unarchive: à®’à®´à¯à®™à¯à®•à®±à¯à®±à®¤à¯ button_reset: மீடà¯à®Ÿà®®à¯ˆ button_rename: மறà¯à®ªà¯†à®¯à®°à®¿à®Ÿà¯ button_change_password: கடவà¯à®šà¯à®šà¯†à®¾à®²à¯à®²à¯ˆ மாறà¯à®±à¯ button_copy: நகல௠button_copy_and_follow: நகலெடà¯à®¤à¯à®¤à¯ பினà¯à®ªà®±à¯à®±à®µà¯à®®à¯ button_annotate: விளகà¯à®•வà¯à®°à¯ˆ button_update: பà¯à®¤à¯à®ªà¯à®ªà®¿à®ªà¯à®ªà¯ button_configure: உளà¯à®³à®®à¯ˆà®•à¯à®•வà¯à®®à¯ button_quote: மேறà¯à®•ோள௠button_show: காடà¯à®Ÿà¯ status_active: செயலில௠status_registered: பதிவà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ status_locked: அடைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ version_status_open: திறநà¯à®¤ version_status_locked: அடைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ version_status_closed: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_active: செயலில௠text_select_mail_notifications: எநà¯à®¤ மினà¯à®©à®žà¯à®šà®²à¯ அறிவிபà¯à®ªà¯à®•ளை அனà¯à®ªà¯à®ª வேணà¯à®Ÿà¯à®®à¯ எனà¯à®ªà®¤à®±à¯à®•ான செயலà¯à®•ளைத௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯. text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: நிசà¯à®šà®¯à®®à®¾à®• இநà¯à®¤ திடà¯à®Ÿà®®à¯, அதனà¯à®Ÿà®©à¯ தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ தரவà¯à®®à¯ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? text_subprojects_destroy_warning: "அதன௠தà¯à®£à¯ˆ திடà¯à®Ÿà®®à¯(s): %{value} நீகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯." text_workflow_edit: பணிபà¯à®ªà®¾à®¯à¯à®µà¯ திரà¯à®¤à¯à®¤ ஒர௠பாதà¯à®¤à®¿à®°à®™à¯à®•ள௠மறà¯à®±à¯à®®à¯ தடம௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ text_are_you_sure: நீஙà¯à®•ள௠உறà¯à®¤à®¿à®¯à®¾à®• இரà¯à®•à¯à®•ிறீரà¯à®•ளா? text_journal_changed: "%{label} இரà¯à®¨à¯à®¤à¯ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ %{old} வரை %{new}" text_journal_changed_no_detail: "%{label} பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" text_journal_set_to: "%{label} தயாராதல௠%{value}" text_journal_deleted: "%{label} நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (%{old})" text_journal_added: "%{label} %{value} சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯" text_tip_issue_begin_day: இநà¯à®¤ நாள௠தொடஙà¯à®•à¯à®®à¯ பணி text_tip_issue_end_day: இநà¯à®¤ நாள௠மà¯à®Ÿà®¿à®µà®Ÿà¯ˆà®¯à¯à®®à¯ பணி text_tip_issue_begin_end_day: இநà¯à®¤ நாள௠தொடஙà¯à®•ி à®®à¯à®Ÿà®¿à®µà®Ÿà¯ˆà®•ிறத௠text_project_identifier_info: 'சிறிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠(a-z), எணà¯à®•ளà¯, dashes மறà¯à®±à¯à®®à¯ underscores அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯.
    சேமதà¯à®¤à®µà¯à®Ÿà®©à¯ அடையாளஙà¯à®•ாடà¯à®Ÿà®¿à®¯à¯ˆ மாறà¯à®± இயலாதà¯' text_caracters_maximum: "%{count} எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠அதிகபடà¯à®šà®®à¯." text_caracters_minimum: "கà¯à®±à¯ˆà®¨à¯à®¤à®ªà®Ÿà¯à®šà®®à¯ இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯ %{count} எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠நீளமானதà¯." text_length_between: " %{min} மறà¯à®±à¯à®®à¯ %{max} எழà¯à®¤à¯à®¤à¯à®•ளà¯à®•à¯à®•௠இடையிலான நீளமà¯." text_tracker_no_workflow: இநà¯à®¤ தடம௠பணிபà¯à®ªà®¾à®¯à¯à®µà¯ எதà¯à®µà¯à®®à¯ வரையறà¯à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ text_unallowed_characters: அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà®¾à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠text_comma_separated: பல மதிபà¯à®ªà¯à®•ள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®© (காறà¯à®ªà®³à¯à®³à®¿ பிரிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯). text_line_separated: பல மதிபà¯à®ªà¯à®•ள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®© (ஒவà¯à®µà¯Šà®°à¯ மதிபà¯à®ªà¯à®•à¯à®•à¯à®®à¯ ஒர௠வரி). text_issues_ref_in_commit_messages: கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®®à¯ மறà¯à®±à¯à®®à¯ செயà¯à®¤à®¿à®•ளை செயà¯à®¤à¯ உளà¯à®³ பிரசà¯à®šà®¿à®©à¯ˆà®•ளை சரிசெயà¯à®¯ text_issue_added: "சிகà¯à®•ல௠%{id} மூலம௠பà¯à®•ார௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ %{author}." text_issue_updated: "சிகà¯à®•ல௠%{id} ஆல௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ %{author}." text_wiki_destroy_confirmation: இநà¯à®¤ விகà¯à®•ியையà¯à®®à¯ அதன௠அனைதà¯à®¤à¯ உளà¯à®³à®Ÿà®•à¯à®•தà¯à®¤à¯ˆà®¯à¯à®®à¯ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? text_issue_category_destroy_question: "சில சிகà¯à®•லà¯à®•ள௠(%{count}) இநà¯à®¤ வகைகà¯à®•௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©. நீஙà¯à®•ள௠எனà¯à®© செயà¯à®¯ விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளà¯?" text_issue_category_destroy_assignments: வகை பணிகளை அகறà¯à®±à¯ text_issue_category_reassign_to: இநà¯à®¤ வகைகà¯à®•௠சிகà¯à®•லà¯à®•ளை மறà¯à®šà¯€à®°à®®à¯ˆà®•à¯à®•வà¯à®®à¯ text_user_mail_option: "தேரà¯à®µà¯à®šà¯†à®¯à¯à®¯à®ªà¯à®ªà®Ÿà®¾à®¤ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯, நீஙà¯à®•ள௠பாரà¯à®•à¯à®•à¯à®®à¯ விஷயஙà¯à®•ள௠அலà¯à®²à®¤à¯ நீஙà¯à®•ள௠ஈடà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ விஷயஙà¯à®•ளைப௠பறà¯à®±à®¿à®¯ அறிவிபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯‡ பெறà¯à®µà¯€à®°à¯à®•ள௠(eg. issues you're the author or assignee)." text_no_configuration_data: "பாதà¯à®¤à®¿à®°à®™à¯à®•ளà¯, டிராகà¯à®•à®°à¯à®•ளà¯, வெளியீடà¯à®Ÿà¯ நிலைகள௠மறà¯à®±à¯à®®à¯ பணிபà¯à®ªà®¾à®¯à¯à®µà¯ இனà¯à®©à¯à®®à¯ கடà¯à®Ÿà®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.\nஇயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ உளà¯à®³à®®à¯ˆà®µà¯ˆ à®à®±à¯à®± மிகவà¯à®®à¯ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯. à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®µà¯à®Ÿà®©à¯ அதை நீஙà¯à®•ள௠மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à¯à®®à¯." text_load_default_configuration: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ உளà¯à®³à®®à¯ˆà®µà¯ˆ à®à®±à¯à®±à®µà¯à®®à¯ text_status_changed_by_changeset: "மாறà¯à®±à®™à¯à®•ள௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ %{value}." text_time_logged_by_changeset: "மாறà¯à®±à®™à¯à®•ளà¯à®ªà®¯à®©à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ %{value}." text_issues_destroy_confirmation: 'தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லை (s) நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா?' text_select_project_modules: 'இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à¯ˆ இயகà¯à®• தொகà¯à®¤à®¿à®•ள௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯:' text_default_administrator_account_changed: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ நிரà¯à®µà®¾à®•ி கணகà¯à®•௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ text_file_repository_writable: இணைபà¯à®ªà¯à®•ள௠அடைவ௠எழà¯à®¤à®•à¯à®•ூடியத௠text_plugin_assets_writable: செரà¯à®•à¯à®¨à®¿à®°à®²à¯ சொதà¯à®¤à¯ அடைவ௠எழà¯à®¤à®•à¯à®•ூடியத௠text_minimagick_available: மினிமேஜிக௠கிடைகà¯à®•ிறத௠(optional) text_destroy_time_entries_question: "%{hours} நீஙà¯à®•ள௠நீகà¯à®•விரà¯à®•à¯à®•à¯à®®à¯ சிகà¯à®•லà¯à®•ளில௠மணிநேரம௠அறிவிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. நீஙà¯à®•ள௠எனà¯à®© செயà¯à®¯ விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளà¯?" text_destroy_time_entries: அறிவிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நேரஙà¯à®•ளை நீகà¯à®•௠text_assign_time_entries_to_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠அறிவிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ மணிநேரஙà¯à®•ளை ஒதà¯à®•à¯à®•à¯à®™à¯à®•ள௠text_reassign_time_entries: 'இநà¯à®¤ சிகà¯à®•லà¯à®•à¯à®•௠மணிநேரஙà¯à®•ளை மறà¯à®ªà®°à®¿à®šà¯€à®²à®©à¯ˆ செயà¯à®¯à¯à®™à¯à®•ளà¯:' text_user_wrote: "%{value} எழà¯à®¤à®¿à®©à®¾à®°à¯:" text_user_wrote_in: "%{value} இல௠எழà¯à®¤à®¿à®©à®¾à®°à¯ %{link}:" text_enumeration_destroy_question: "%{count} இநà¯à®¤ மதிபà¯à®ªà¯à®•à¯à®•௠பொரà¯à®³à¯à®•ள௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®©." text_enumeration_category_reassign_to: 'இநà¯à®¤ மதிபà¯à®ªà¯à®•à¯à®•௠அவறà¯à®±à¯ˆ மீணà¯à®Ÿà¯à®®à¯ ஒதà¯à®•à¯à®•à¯à®™à¯à®•ளà¯:' text_email_delivery_not_configured: "மினà¯à®©à®žà¯à®šà®²à¯ விநியோக உளà¯à®³à®®à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ மறà¯à®±à¯à®®à¯ அறிவிபà¯à®ªà¯à®•ள௠எலà¯à®²à®¾à®®à¯ à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©.\n உனத௠SMTP server à® config/configuration.yml கடà¯à®Ÿà®®à¯ˆà®¤à¯à®¤à¯ செயலியை மறà¯à®¤à¯Šà®Ÿà®•à¯à®•ம௠செயà¯à®•." text_repository_usernames_mapping: "களஞà¯à®šà®¿à®¯ பதிவில௠காணபà¯à®ªà®Ÿà¯à®®à¯ ஒவà¯à®µà¯Šà®°à¯ பயனரà¯à®ªà¯†à®¯à®°à¯à®•à¯à®•à¯à®®à¯ மேப௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ ரெடà¯à®®à¯ˆà®©à¯ பயனரைத௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ அலà¯à®²à®¤à¯ பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•வà¯à®®à¯.\n அதே பயனர௠மறà¯à®±à¯à®®à¯ அதே களஞà¯à®šà®¿à®¯ பயனர௠அலà¯à®²à®¤à¯ மினà¯à®©à®žà¯à®šà®²à¯ தானாக இனைகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯." text_diff_truncated: '... இநà¯à®¤ வேறà¯à®ªà®¾à®Ÿà¯ தà¯à®£à¯à®Ÿà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, à®à®©à¯†à®©à®¿à®²à¯ இத௠காணà¯à®ªà®¿à®•à¯à®•கà¯à®•ூடிய அதிகபடà¯à®š அளவை மீறà¯à®•ிறதà¯.' text_custom_field_possible_values_info: 'ஒவà¯à®µà¯Šà®°à¯ மதிபà¯à®ªà¯à®•à¯à®•à¯à®®à¯ ஒர௠வரி' text_wiki_page_destroy_question: "இநà¯à®¤à®ªà¯ பகà¯à®•தà¯à®¤à®¿à®²à¯%{descendants} கீழ௠பகà¯à®•ம௠(s) மறà¯à®±à¯à®®à¯ சநà¯à®¤à®¤à®¿(s) உளà¯à®³à®©. நீஙà¯à®•ள௠எனà¯à®© செயà¯à®¯ விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளà¯?" text_wiki_page_nullify_children: "கீழ௠பகà¯à®•à®™à¯à®•ளை ரூட௠பகà¯à®•à®™à¯à®•ளாக வைதà¯à®¤à®¿à®°à¯à®™à¯à®•ளà¯" text_wiki_page_destroy_children: "கீழ௠பகà¯à®•à®™à¯à®•ளையà¯à®®à¯ அவறà¯à®±à®¿à®©à¯ சநà¯à®¤à®¤à®¿à®¯à®¿à®©à®°à¯ˆà®¯à¯à®®à¯ நீகà¯à®•à¯" text_wiki_page_reassign_children: "இநà¯à®¤ மேல௠பகà¯à®•தà¯à®¤à®¿à®±à¯à®•௠கீழ௠பகà¯à®•à®™à¯à®•ளை மீணà¯à®Ÿà¯à®®à¯ ஒதà¯à®•à¯à®•à¯à®™à¯à®•ளà¯" text_own_membership_delete_confirmation: "உஙà¯à®•ளத௠சில அலà¯à®²à®¤à¯ அனைதà¯à®¤à¯ அனà¯à®®à®¤à®¿à®•ளையà¯à®®à¯ நீகà¯à®•ப௠போகிறீரà¯à®•ளà¯, அதனà¯à®ªà®¿à®±à®•௠இநà¯à®¤ திடà¯à®Ÿà®¤à¯à®¤à¯ˆ இனி திரà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.\n நீஙà¯à®•ள௠தொடர விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா?" text_zoom_in: பெரிதாகà¯à®• text_zoom_out: சிறிதாகà¯à®•à¯à®• text_warn_on_leaving_unsaved: "தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பகà¯à®•தà¯à®¤à®¿à®²à¯ சேமிகà¯à®•பà¯à®ªà®Ÿà®¾à®¤ உரை உளà¯à®³à®¤à¯, நீஙà¯à®•ள௠இநà¯à®¤ பகà¯à®•தà¯à®¤à¯ˆ விடà¯à®Ÿà¯ வெளியேறினால௠இழகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯." default_role_manager: மேலாளர௠default_role_developer: உரà¯à®µà®¾à®•à¯à®•à¯à®ªà®µà®°à¯ default_role_reporter: பà¯à®•ார௠அளிபà¯à®ªà®µà®°à¯ default_tracker_bug: பிழை default_tracker_feature: à®…à®®à¯à®šà®®à¯ default_tracker_support: ஆதரவ௠default_issue_status_new: பà¯à®¤à®¿à®¯à®¤à¯ default_issue_status_in_progress: à®®à¯à®©à¯à®©à¯‡à®±à¯à®±à®¤à¯à®¤à®¿à®²à¯ உளà¯à®³à®¤à¯ default_issue_status_resolved: தீரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ default_issue_status_feedback: கரà¯à®¤à¯à®¤à®³à®¿à®ªà¯à®ªà¯ default_issue_status_closed: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ default_issue_status_rejected: நிராகரிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ default_doc_category_user: பயனர௠ஆவணஙà¯à®•ள௠default_doc_category_tech: தொழிலà¯à®¨à¯à®Ÿà¯à®ª ஆவணஙà¯à®•ள௠default_priority_low: கà¯à®±à¯ˆà®¨à¯à®¤ default_priority_normal: இயலà¯à®ªà®¾à®©à®¤à¯ default_priority_high: உயர௠default_priority_urgent: அவசரம௠default_priority_immediate: உடனடியாக default_activity_design: வடிவமைபà¯à®ªà¯ default_activity_development: வளரà¯à®šà¯à®šà®¿ enumeration_issue_priorities: à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®•ள௠வழஙà¯à®•வà¯à®®à¯ enumeration_doc_categories: ஆவண வகைகள௠enumeration_activities: செயலà¯à®ªà®¾à®Ÿà¯à®•ள௠(நேர கணà¯à®•ாணிபà¯à®ªà¯) enumeration_system_activity: கணினி செயலà¯à®ªà®¾à®Ÿà¯ label_additional_workflow_transitions_for_assignee: பயனர௠ஒதà¯à®•à¯à®•ீடà¯à®Ÿà®¾à®³à®°à®¾à®• இரà¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ கூடà¯à®¤à®²à¯ மாறà¯à®±à®™à¯à®•ள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®© label_additional_workflow_transitions_for_author: பயனர௠ஆசிரியராக இரà¯à®•à¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ கூடà¯à®¤à®²à¯ மாறà¯à®±à®™à¯à®•ள௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®© label_bulk_edit_selected_time_entries: தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நேர உளà¯à®³à¯€à®Ÿà¯à®•ளை மொதà¯à®¤à®®à®¾à®• திரà¯à®¤à¯à®¤à®µà¯à®®à¯ text_time_entries_destroy_confirmation: தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நேரதà¯à®¤à¯ˆ (y / ies) நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? label_issue_note_added: கà¯à®±à®¿à®ªà¯à®ªà¯ சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_issue_status_updated: நிலை பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_issue_priority_updated: à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆ பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_issues_visibility_own: பயனரால௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ அலà¯à®²à®¤à¯ ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ள௠field_issues_visibility: சிகà¯à®•லà¯à®•ள௠தெரிவà¯à®¨à®¿à®²à¯ˆ label_issues_visibility_all: அனைதà¯à®¤à¯ சிகà¯à®•லà¯à®•ளà¯à®®à¯ permission_set_own_issues_private: பொத௠அலà¯à®²à®¤à¯ தனிபà¯à®ªà®Ÿà¯à®Ÿ சொநà¯à®¤ சிகà¯à®•லà¯à®•ளை அமைகà¯à®•வà¯à®®à¯ field_is_private: தனியார௠permission_set_issues_private: பொத௠அலà¯à®²à®¤à¯ தனிபà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ளை அமைகà¯à®•வà¯à®®à¯ label_issues_visibility_public: அனைதà¯à®¤à¯ தனியார௠அலà¯à®²à®¾à®¤ சிகà¯à®•லà¯à®•ள௠text_issues_destroy_descendants_confirmation: இதà¯à®µà¯à®®à¯ நீகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ %{count} தà¯à®£à¯ˆ பணி(s). field_commit_logs_encoding: செயà¯à®¤à®¿à®•ளை கà¯à®±à®¿à®¯à®¾à®•à¯à®•ம௠செயà¯à®¯à¯à®™à¯à®•ள௠field_scm_path_encoding: பாதை கà¯à®±à®¿à®¯à®¾à®•à¯à®•ம௠text_scm_path_encoding_note: "இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ: UTF-8" field_path_to_repository: களஞà¯à®šà®¿à®¯à®¤à¯à®¤à®¿à®±à¯à®•௠பாதை field_root_directory: வேர௠அடைவ௠field_cvs_module: தொகà¯à®¤à®¿ field_cvsroot: CVSROOT text_mercurial_repository_note: உளà¯à®³à¯‚ர௠களஞà¯à®šà®¿à®¯à®®à¯ (e.g. /hgrepo, c:\hgrepo) text_scm_command: கடà¯à®Ÿà®³à¯ˆ text_scm_command_version: பதிபà¯à®ªà¯ label_git_report_last_commit: கோபà¯à®ªà¯à®•ள௠மறà¯à®±à¯à®®à¯ கோபà¯à®ªà®•à®™à¯à®•ளà¯à®•à¯à®•ான கடைசி உறà¯à®¤à®¿à®ªà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆà®ªà¯ பà¯à®•ாரளிகà¯à®•வà¯à®®à¯ text_scm_config: உனத௠SCM commands à® config/configuration.yml கடà¯à®Ÿà®®à¯ˆà®•à¯à®•லாமà¯. திரà¯à®¤à¯à®¤à®¿à®¯ பின௠செயலியை மறà¯à®¤à¯Šà®Ÿà®•à¯à®•ம௠செயà¯à®¯à¯à®™à¯à®•ளà¯. text_scm_command_not_available: SCM கடà¯à®Ÿà®³à¯ˆ கிடைகà¯à®•விலà¯à®²à¯ˆ. நிரà¯à®µà®¾à®• கà¯à®´à¯à®µà®¿à®²à¯ அமைபà¯à®ªà¯à®•ளை சரிபாரà¯à®•à¯à®•வà¯à®®à¯. notice_issue_successful_create: சிகà¯à®•ல௠%{id} உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. label_between: இடையில௠label_diff: வேறà¯à®ªà®¾à®Ÿà¯ text_git_repository_note: களஞà¯à®šà®¿à®¯à®®à¯ வெறà¯à®±à¯ மறà¯à®±à¯à®®à¯ உளà¯à®³à¯‚ர௠(e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: வரிசை திசை description_project_scope: தேடல௠நோகà¯à®•ம௠description_filter: வடிகடà¯à®Ÿà®¿ description_user_mail_notification: அஞà¯à®šà®²à¯ அறிவிபà¯à®ªà¯ அமைபà¯à®ªà¯à®•ள௠description_message_content: செயà¯à®¤à®¿ உளà¯à®³à®Ÿà®•à¯à®•ம௠description_available_columns: கிடைகà¯à®•à¯à®®à¯ நெடà¯à®µà®°à®¿à®šà¯ˆà®•ள௠description_issue_category_reassign: வெளியீடà¯à®Ÿà¯ வகையைத௠தேரà¯à®µà¯à®šà¯†à®¯à¯à®• description_search: தேடல௠பà¯à®²à®®à¯ description_notes: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠description_choose_project: திடà¯à®Ÿà®™à¯à®•ள௠description_query_sort_criteria_attribute: பணà¯à®ªà¯à®•à¯à®•ூற௠வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ description_wiki_subpages_reassign: பà¯à®¤à®¿à®¯ மேல௠பகà¯à®•தà¯à®¤à¯ˆà®¤à¯ தேரà¯à®µà¯à®šà¯†à®¯à¯à®• description_selected_columns: தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நெடà¯à®µà®°à®¿à®šà¯ˆà®•ள௠label_parent_revision: மேல௠label_child_revision: கீழ௠button_edit_section: இநà¯à®¤ பகà¯à®¤à®¿à®¯à¯ˆà®¤à¯ திரà¯à®¤à¯à®¤à®µà¯à®®à¯ setting_repositories_encodings: இணைபà¯à®ªà¯à®•ள௠மறà¯à®±à¯à®®à¯ களஞà¯à®šà®¿à®¯à®™à¯à®•ளின௠கà¯à®±à®¿à®¯à®¾à®•à¯à®•à®™à¯à®•ள௠description_all_columns: அனைதà¯à®¤à¯ நெடà¯à®µà®°à®¿à®šà¯ˆà®•ளà¯à®®à¯ button_export: à®à®±à¯à®±à¯à®®à®¤à®¿ label_export_options: "%{export_format} à®à®±à¯à®±à¯à®®à®¤à®¿ விரà¯à®ªà¯à®ªà®™à¯à®•ளà¯" error_attachment_too_big: அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ அதிகபடà¯à®š கோபà¯à®ªà®¿à®©à¯ அளவ௠மீறியà¯à®³à¯à®³à®¤à®¾à®²à¯ இநà¯à®¤à®•௠கோபà¯à®ªà¯ பதிவேறà¯à®±à®¿à®¯ இரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ (%{max_size}) notice_failed_to_save_time_entries: "சேமிபà¯à®ªà®¤à®¿à®²à¯ தோலà¯à®µà®¿ %{count} நேர உளà¯à®³à¯€à®Ÿà¯à®•ளà¯(s) மீத௠%{total} தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %{ids}." label_x_issues: zero: 0 சிகà¯à®•ல௠one: 1 சிகà¯à®•ல௠other: "%{count} சிகà¯à®•லà¯à®•ளà¯" label_repository_new: பà¯à®¤à®¿à®¯ களஞà¯à®šà®¿à®¯à®®à¯ field_repository_is_default: à®®à¯à®¤à®©à¯à®®à¯ˆ களஞà¯à®šà®¿à®¯à®®à¯ label_copy_attachments: இணைபà¯à®ªà¯à®•ளை நகலெடà¯à®•à¯à®•வà¯à®®à¯ label_item_position: "%{position} உளà¯à®³ %{count}" label_completed_versions: பூரà¯à®¤à¯à®¤à®¿ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ பதிபà¯à®ªà¯à®•ள௠field_multiple: பல மதிபà¯à®ªà¯à®•ள௠setting_commit_cross_project_ref: மறà¯à®± அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளின௠சிகà¯à®•லà¯à®•ளையà¯à®®à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà¯à®®à¯ சரி செயà¯à®¯à®µà¯à®®à¯ அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ text_issue_conflict_resolution_add_notes: எனத௠கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளைச௠சேரà¯à®¤à¯à®¤à¯ எனத௠பிற மாறà¯à®±à®™à¯à®•ளை நிராகரிகà¯à®•வà¯à®®à¯ text_issue_conflict_resolution_overwrite: எனத௠மாறà¯à®±à®™à¯à®•ளை எபà¯à®ªà®Ÿà®¿à®¯à¯à®®à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®™à¯à®•ள௠(à®®à¯à®¨à¯à®¤à¯ˆà®¯ கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠வைகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯, ஆனால௠சில மாறà¯à®±à®™à¯à®•ள௠மேலெழà¯à®¤à®ªà¯à®ªà®Ÿà®²à®¾à®®à¯) notice_issue_update_conflict: நீஙà¯à®•ள௠அதைத௠திரà¯à®¤à¯à®¤à¯à®®à¯à®ªà¯‹à®¤à¯ சிகà¯à®•ல௠மறà¯à®± பயனரால௠பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. text_issue_conflict_resolution_cancel: எனத௠எலà¯à®²à®¾ மாறà¯à®±à®™à¯à®•ளையà¯à®®à¯ நிராகரிதà¯à®¤à¯ மறà¯à®ªà®•ிரà¯à®µà¯ செயà¯à®¯à¯à®™à¯à®•ள௠%{link} permission_manage_related_issues: தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ சிகà¯à®•லà¯à®•ளை நிரà¯à®µà®•ிகà¯à®•வà¯à®®à¯ field_auth_source_ldap_filter: LDAP வடிபà¯à®ªà®¾à®©à¯ label_search_for_watchers: சேரà¯à®•à¯à®• பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ளைத௠தேடà¯à®™à¯à®•ள௠notice_account_deleted: உஙà¯à®•ள௠கணகà¯à®•௠நிரநà¯à®¤à®°à®®à®¾à®• நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. setting_unsubscribe: பயனரà¯à®•ள௠தஙà¯à®•ள௠சொநà¯à®¤ கணகà¯à®•ை நீகà¯à®• அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ button_delete_my_account: எனத௠கணகà¯à®•ை நீகà¯à®•௠text_account_destroy_confirmation: |- உனகà¯à®•௠தொடர நிசà¯à®šà®¯à®®à®¾à®• விரà¯à®ªà¯à®ªà®®à®¾? உனத௠கணகà¯à®•௠நிரநà¯à®¤à®°à®®à®¾à®• நீகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯, அதை மீணà¯à®Ÿà¯à®®à¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤ இயலாதà¯. error_session_expired: உஙà¯à®•ள௠அமரà¯à®µà¯ காலாவதியாகி விடà¯à®Ÿà®¤à¯. மீணà¯à®Ÿà¯à®®à¯ உளà¯à®¨à¯à®´à¯ˆà®•. text_session_expiration_settings: "எசà¯à®šà®°à®¿à®•à¯à®•ை: இநà¯à®¤ அமைபà¯à®ªà¯à®•ளை மாறà¯à®±à¯à®µà®¤à¯ உஙà¯à®•ளà¯à®Ÿà¯ˆà®¯à®¤à¯ உடà¯à®ªà®Ÿ தறà¯à®ªà¯‹à®¤à¯ˆà®¯ அமரà¯à®µà¯à®•ளின௠காலாவதியாகà¯à®®à¯." setting_session_lifetime: அமரà¯à®µà¯ அதிகபடà¯à®š வாழà¯à®¨à®¾à®³à¯ setting_session_timeout: அமரà¯à®µà¯ செயலறà¯à®± நேரம௠மà¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯ label_session_expiration: அமரà¯à®µà¯ காலாவதி permission_close_project: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ மூட௠/ மீணà¯à®Ÿà¯à®®à¯ திறகà¯à®•வà¯à®®à¯ button_close: மூட௠button_reopen: மீணà¯à®Ÿà¯à®®à¯ திறகà¯à®•வà¯à®®à¯ project_status_active: செயலில௠project_status_closed: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ project_status_archived: காபà¯à®ªà®•பà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ text_project_closed: இநà¯à®¤ திடà¯à®Ÿà®®à¯ மூடபà¯à®ªà®Ÿà¯à®Ÿà¯ படிகà¯à®• மடà¯à®Ÿà¯à®®à¯‡à®¯à®¾à®•à¯à®®à¯. notice_user_successful_create: பயனர௠%{id} உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. field_core_fields: நிலையான பà¯à®²à®™à¯à®•ள௠field_timeout: à®®à¯à®Ÿà®¿à®µà¯ காலம௠(விநாடி) setting_thumbnails_enabled: இணைபà¯à®ªà¯ சிறà¯à®ªà®Ÿà®™à¯à®•ளைக௠காணà¯à®ªà®¿ setting_thumbnails_size: சிற௠உரà¯à®µà®™à¯à®•ள௠(in pixels) label_status_transitions: நிலை மாறà¯à®±à®™à¯à®•ள௠label_fields_permissions: பà¯à®²à®™à¯à®•ள௠அனà¯à®®à®¤à®¿à®•ள௠label_readonly: படிகà¯à®• மடà¯à®Ÿà¯à®®à¯ label_required: தேவை text_repository_identifier_info: 'சிறிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠(a-z), எணà¯à®•ளà¯, கோடà¯à®•ள௠மறà¯à®±à¯à®®à¯ அடிகà¯à®•ோடிடà¯à®Ÿà¯à®•ள௠மடà¯à®Ÿà¯à®®à¯‡ அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ினà¯à®±à®©.
    சேமிதà¯à®¤à®¤à¯à®®à¯, அடையாளஙà¯à®•ாடà¯à®Ÿà®¿à®¯à¯ˆ மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.' field_board_parent: மேல௠மனà¯à®±à®®à¯ label_attribute_of_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ %{name} label_attribute_of_author: ஆசிரியர௠%{name} label_attribute_of_assigned_to: ஒதà¯à®•à¯à®•ீடà¯à®Ÿà®¾à®³à®°à¯ %{name} label_attribute_of_fixed_version: இலகà¯à®•௠பதிபà¯à®ªà¯ %{name} label_copy_subtasks: தà¯à®£à¯ˆ பணிகளை நகலெடà¯à®•à¯à®•வà¯à®®à¯ label_copied_to: நகலெடà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_copied_from: இரà¯à®¨à¯à®¤à¯ நகலெடà¯à®¤à¯à®¤à¯ label_any_issues_in_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯ à®à®¤à¯‡à®©à¯à®®à¯ சிகà¯à®•லà¯à®•ள௠label_any_issues_not_in_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯ இலà¯à®²à®¾à®¤ சிகà¯à®•லà¯à®•ள௠field_private_notes: தனியார௠கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠permission_view_private_notes: தனிபà¯à®ªà®Ÿà¯à®Ÿ கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளைக௠காணà¯à®• permission_set_notes_private: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளை தனிபà¯à®ªà®Ÿà¯à®Ÿà®¤à®¾à®• அமைகà¯à®•வà¯à®®à¯ label_no_issues_in_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯ சிகà¯à®•லà¯à®•ள௠இலà¯à®²à¯ˆ label_any_open_issues: எநà¯à®¤ திறநà¯à®¤ சிகà¯à®•லà¯à®•ளà¯à®®à¯ label_no_open_issues: திறநà¯à®¤ சிகà¯à®•லà¯à®•ள௠இலà¯à®²à¯ˆ label_any: அனைதà¯à®¤à¯à®®à¯ label_last_n_weeks: கடைசியாக %{count} வாரஙà¯à®•ள௠setting_cross_project_subtasks: கà¯à®±à¯à®•à¯à®•௠திடà¯à®Ÿ தà¯à®£à¯ˆ பணிகளை அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ label_cross_project_descendants: தà¯à®£à¯ˆ திடà¯à®Ÿà®™à¯à®•ளà¯à®Ÿà®©à¯ label_cross_project_tree: திடà¯à®Ÿ மரதà¯à®¤à¯à®Ÿà®©à¯ label_cross_project_hierarchy: திடà¯à®Ÿ வரிசைமà¯à®±à¯ˆà®¯à¯à®Ÿà®©à¯ label_cross_project_system: அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®Ÿà®©à¯à®®à¯ button_hide: மறை setting_non_working_week_days: வேலை செயà¯à®¯à®¾à®¤ நாடà¯à®•ள௠label_in_the_next_days: அடà¯à®¤à¯à®¤à¯ label_in_the_past_days: கடநà¯à®¤ காலதà¯à®¤à®¿à®²à¯ label_attribute_of_user: பயனரின௠%{name} text_turning_multiple_off: நீஙà¯à®•ள௠பல மதிபà¯à®ªà¯à®•ளை à®®à¯à®Ÿà®•à¯à®•ினாலà¯, பல மதிபà¯à®ªà¯à®•ள௠இரà¯à®•à¯à®•à¯à®®à¯ ஒர௠பொரà¯à®³à¯à®•à¯à®•௠ஒர௠மதிபà¯à®ªà¯ˆ மடà¯à®Ÿà¯à®®à¯‡ பாதà¯à®•ாபà¯à®ªà®¤à®±à¯à®•ாக அகறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. label_attribute_of_issue: சிகà¯à®•ல௠%{name} permission_add_documents: ஆவணஙà¯à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ permission_edit_documents: ஆவணஙà¯à®•ளைத௠திரà¯à®¤à¯à®¤à¯ permission_delete_documents: ஆவணஙà¯à®•ளை நீகà¯à®•௠label_gantt_progress_line: à®®à¯à®©à¯à®©à¯‡à®±à¯à®±à®•௠கோட௠setting_jsonp_enabled: JSONP ஆதரவை இயகà¯à®•௠field_inherit_members: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯à®•ளைப௠பெறà¯à®™à¯à®•ள௠field_closed_on: மூடபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_generate_password: கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ setting_default_projects_tracker_ids: பà¯à®¤à®¿à®¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•ான இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ டிராகà¯à®•à®°à¯à®•ள௠label_total_time: மொதà¯à®¤à®®à¯ notice_account_not_activated_yet: உஙà¯à®•ள௠கணகà¯à®•ை இதà¯à®µà®°à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ. உனகà¯à®•௠வேணà¯à®Ÿà¯à®®à¯†à®©à¯à®±à®¾à®²à¯ பà¯à®¤à®¿à®¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯ மினà¯à®©à®žà¯à®šà®²à¯ˆà®ªà¯ பெற, please click this link. notice_account_locked: உஙà¯à®•ள௠கணகà¯à®•௠அடைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. label_hidden: மறைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ label_visibility_private: எனகà¯à®•௠மடà¯à®Ÿà¯à®®à¯‡ label_visibility_roles: இநà¯à®¤ பாதà¯à®¤à®¿à®°à®™à¯à®•ளà¯à®•à¯à®•௠மடà¯à®Ÿà¯à®®à¯‡ label_visibility_public: எநà¯à®¤ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ field_must_change_passwd: அடà¯à®¤à¯à®¤ உளà¯à®¨à¯à®´à¯ˆà®µà®¿à®²à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®± வேணà¯à®Ÿà¯à®®à¯ notice_new_password_must_be_different: பà¯à®¤à®¿à®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ வேறà¯à®ªà®Ÿà¯à®Ÿà®¤à®¾à®• இரà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯ தறà¯à®ªà¯‹à®¤à¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ setting_mail_handler_excluded_filenames: இணைபà¯à®ªà¯à®•ளை பெயரால௠விலகà¯à®•வà¯à®®à¯ text_convert_available: ImageMagick மாறà¯à®±à®®à¯ கிடைகà¯à®•ிறத௠(optional) text_gs_available: ImageMagick PDF ஆதரவ௠கிடைகà¯à®•ிறத௠(optional) label_link: இணைபà¯à®ªà¯ label_only: மடà¯à®Ÿà¯à®®à¯ label_drop_down_list: கீழà¯à®¤à¯‹à®©à¯à®±à¯à®®à¯ படà¯à®Ÿà®¿à®¯à®²à¯ label_checkboxes: தேரà¯à®µà¯à®ªà¯à®ªà¯†à®Ÿà¯à®Ÿà®¿à®•ள௠label_link_values_to: URL உடன௠மதிபà¯à®ªà¯à®•ளை இணைகà¯à®•வà¯à®®à¯ setting_force_default_language_for_anonymous: பெயர௠அறியபà¯à®ªà®Ÿà®¾à®¤ இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மொழியை கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ பயனரà¯à®•ள௠setting_force_default_language_for_loggedin: உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤à®¤à®±à¯à®•௠இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மொழியை கடà¯à®Ÿà®¾à®¯à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ பயனரà¯à®•ள௠label_custom_field_select_type: தனிபà¯à®ªà®¯à®©à¯ பà¯à®²à®®à¯ எநà¯à®¤ பொரà¯à®³à®¿à®©à¯ வகையைத௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ இணைகà¯à®•பà¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯ label_issue_assigned_to_updated: நியமிகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_check_for_updates: பà¯à®¤à¯à®ªà¯à®ªà®¿à®ªà¯à®ªà¯à®•ளைச௠சரிபாரà¯à®•à¯à®•வà¯à®®à¯ label_latest_compatible_version: சமீபதà¯à®¤à®¿à®¯ இணகà¯à®•மான பதிபà¯à®ªà¯ label_unknown_plugin: தெரியாத சொரà¯à®•ி label_radio_buttons: வானொலி பொதà¯à®¤à®¾à®©à¯à®•ள௠label_group_anonymous: பெயர௠அறியபà¯à®ªà®Ÿà®¾à®¤ பயனரà¯à®•ள௠label_group_non_member: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ அலà¯à®²à®¾à®¤ பயனரà¯à®•ள௠label_add_projects: திடà¯à®Ÿà®™à¯à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ field_default_status: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ நிலை text_subversion_repository_note: 'உதாரணமà¯: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: பயனரà¯à®•ளின௠தெரிவà¯à®¨à®¿à®²à¯ˆ label_users_visibility_all: அனைதà¯à®¤à¯ செயலில௠உளà¯à®³ பயனரà¯à®•ளà¯à®®à¯ label_users_visibility_members_of_visible_projects: பà¯à®²à®ªà¯à®ªà®Ÿà¯à®®à¯ திடà¯à®Ÿà®™à¯à®•ளின௠உறà¯à®ªà¯à®ªà®¿à®©à®°à¯à®•ள௠label_edit_attachments: இணைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ setting_link_copied_issue: நகலில௠சிகà¯à®•லà¯à®•ளை இணைகà¯à®•வà¯à®®à¯ label_link_copied_issue: இணைபà¯à®ªà¯ நகலெடà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ சிகà¯à®•ல௠label_ask: கேளà¯à®™à¯à®•ள௠label_search_attachments_yes: இணைபà¯à®ªà¯ கோபà¯à®ªà¯ பெயரà¯à®•ள௠மறà¯à®±à¯à®®à¯ விளகà¯à®•à®™à¯à®•ளைத௠தேடà¯à®™à¯à®•ள௠label_search_attachments_no: இணைபà¯à®ªà¯à®•ளைத௠தேட வேணà¯à®Ÿà®¾à®®à¯ label_search_attachments_only: இணைபà¯à®ªà¯à®•ளை மடà¯à®Ÿà¯à®®à¯ தேடà¯à®™à¯à®•ள௠label_search_open_issues_only: சிகà¯à®•லà¯à®•ளை மடà¯à®Ÿà¯à®®à¯ திறகà¯à®•வà¯à®®à¯ field_address: மினà¯à®©à®žà¯à®šà®²à¯ setting_max_additional_emails: கூடà¯à®¤à®²à¯ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரிகளின௠அதிகபடà¯à®š எணà¯à®£à®¿à®•à¯à®•ை label_email_address_plural: மினà¯à®©à®žà¯à®šà®²à¯à®•ள௠label_email_address_add: மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரியைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ label_enable_notifications: அறிவிபà¯à®ªà¯à®•ளை இயகà¯à®•௠label_disable_notifications: அறிவிபà¯à®ªà¯à®•ளை à®®à¯à®Ÿà®•à¯à®•௠setting_search_results_per_page: ஒர௠பகà¯à®•தà¯à®¤à®¿à®±à¯à®•௠தேடல௠மà¯à®Ÿà®¿à®µà¯à®•ள௠label_blank_value: வெறà¯à®±à¯ permission_copy_issues: சிகà¯à®•லà¯à®•ளை நகலெடà¯à®•à¯à®•வà¯à®®à¯ error_password_expired: உஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯Šà®²à¯ காலாவதியானத௠அலà¯à®²à®¤à¯ நிரà¯à®µà®¾à®•ி உஙà¯à®•ளà¯à®•à¯à®•à¯à®¤à¯ தேவை அதை மாறà¯à®±. field_time_entries_visibility: நேரம௠பதிவà¯à®•ள௠தெரிவà¯à®¨à®¿à®²à¯ˆ setting_password_max_age: கடவà¯à®šà¯à®šà¯Šà®²à¯ மாறà¯à®±à®®à¯ தேவை label_parent_task_attributes: மேல௠பணிகள௠பணà¯à®ªà¯à®•à¯à®•ூறà¯à®•ள௠label_parent_task_attributes_derived: தà¯à®£à¯ˆ பணிகளில௠இரà¯à®¨à¯à®¤à¯ கணகà¯à®•ிடபà¯à®ªà®Ÿà¯à®•ிறத௠label_parent_task_attributes_independent: தà¯à®£à¯ˆ பணிகள௠சà¯à®¯à®¾à®¤à¯€à®©à®®à®¾à®• label_time_entries_visibility_all: எலà¯à®²à®¾ நேர உளà¯à®³à¯€à®Ÿà¯à®•ளà¯à®®à¯ label_time_entries_visibility_own: பயனரால௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நேர உளà¯à®³à¯€à®Ÿà¯à®•ள௠label_member_management: உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ மேலாணà¯à®®à¯ˆ label_member_management_all_roles: அனைதà¯à®¤à¯à®ªà¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ளà¯à®®à¯ label_member_management_selected_roles_only: இநà¯à®¤à®ªà¯ பாதà¯à®¤à®¿à®°à®™à¯à®•ளை மடà¯à®Ÿà¯à®®à¯ label_password_required: தொடர உஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ label_total_spent_time: ஒடà¯à®Ÿà¯à®®à¯Šà®¤à¯à®¤à®®à®¾à®• நேரம௠செலவிடà¯à®Ÿà®¾à®°à¯ notice_import_finished: "%{count} பொரà¯à®Ÿà¯à®•ள௠இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©" notice_import_finished_with_errors: "%{count} வெளியே %{total} பொரà¯à®Ÿà¯à®•ளை இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ" error_invalid_file_encoding: கோபà¯à®ªà¯ தவறானத௠%{encoding} கà¯à®±à®¿à®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ error_invalid_csv_file_or_settings: கோபà¯à®ªà¯ ஒர௠CSV கோபà¯à®ªà¯ அலà¯à®² அலà¯à®²à®¤à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ கீழே உளà¯à®³ அமைபà¯à®ªà¯à®•ள௠error_can_not_read_import_file: இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯ கோபà¯à®ªà¯ˆà®ªà¯ படிகà¯à®•à¯à®®à¯à®ªà¯‹à®¤à¯ பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯ permission_import_issues: இறகà¯à®•à¯à®®à®¤à®¿ சிகà¯à®•லà¯à®•ள௠label_import_issues: இறகà¯à®•à¯à®®à®¤à®¿ சிகà¯à®•லà¯à®•ள௠label_select_file_to_import: இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯ கோபà¯à®ªà¯ˆà®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ label_fields_separator: பà¯à®² பிரிபà¯à®ªà®¾à®©à¯ label_fields_wrapper: பà¯à®²à®®à¯ போரà¯à®¤à¯à®¤à®¿ label_encoding: கà¯à®±à®¿à®¯à®¾à®•à¯à®•ம௠label_comma_char: காறà¯à®ªà¯à®³à¯à®³à®¿ label_semi_colon_char: அரைபà¯à®ªà¯à®³à¯à®³à®¿ label_quote_char: மேறà¯à®•ோள௠label_double_quote_char: இரடà¯à®Ÿà¯ˆ மேறà¯à®•ோள௠label_fields_mapping: பà¯à®²à®™à¯à®•ள௠மேபà¯à®ªà®¿à®™à¯ label_file_content_preview: கோபà¯à®ªà¯ உளà¯à®³à®Ÿà®•à¯à®• à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯ label_create_missing_values: விடà¯à®ªà®Ÿà¯à®Ÿ மதிபà¯à®ªà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ button_import: இறகà¯à®•à¯à®®à®¤à®¿ field_total_estimated_hours: மொதà¯à®¤ மதிபà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿ நேரம௠label_api: API label_total_plural: மொதà¯à®¤à®®à¯ label_assigned_issues: ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ள௠label_field_format_enumeration: சாவி / மதிபà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ label_f_hour_short: '%{value} h' field_default_version: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ பதிபà¯à®ªà¯ error_attachment_extension_not_allowed: இணைபà¯à®ªà¯ நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯ %{extension} அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ setting_attachment_extensions_allowed: அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯à®•ள௠setting_attachment_extensions_denied: அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà®¾à®¤ நீடà¯à®Ÿà®¿à®ªà¯à®ªà¯à®•ள௠label_default_values_for_new_users: பà¯à®¤à®¿à®¯ பயனரà¯à®•ளà¯à®•à¯à®•ான இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ மதிபà¯à®ªà¯à®•ள௠error_ldap_bind_credentials: தவறான LDAP கணகà¯à®•௠/ கடவà¯à®šà¯à®šà¯Šà®²à¯ setting_sys_api_key: API சாவி setting_lost_password: இழநà¯à®¤à®¤ கடவà¯à®šà¯à®šà¯†à®¾à®²à¯ mail_subject_security_notification: பாதà¯à®•ாபà¯à®ªà¯ அறிவிபà¯à®ªà¯ mail_body_security_notification_change: ! '%{field} மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.' mail_body_security_notification_change_to: ! '%{field} என மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯%{value}.' mail_body_security_notification_add: ! '%{field} %{value} சேரà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.' mail_body_security_notification_remove: ! '%{field} %{value} அகறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.' mail_body_security_notification_notify_enabled: மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரி %{value} இபà¯à®ªà¯‹à®¤à¯ பெறà¯à®•ிறத௠அறிவிபà¯à®ªà¯à®•ளை. mail_body_security_notification_notify_disabled: மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•வரி %{value} இனி இலà¯à®²à¯ˆ அறிவிபà¯à®ªà¯à®•ளைப௠பெறà¯à®•ிறதà¯. mail_body_settings_updated: ! 'பினà¯à®µà®°à¯à®®à¯ அமைபà¯à®ªà¯à®•ள௠மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®©:' field_remote_ip: IP à®®à¯à®•வரி label_wiki_page_new: பà¯à®¤à®¿à®¯ விகà¯à®•ி பகà¯à®•ம௠label_relations: தொடரà¯à®ªà¯ button_filter: வடிகடà¯à®Ÿà®¿ mail_body_password_updated: உஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯†à®¾à®²à¯ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. error_no_tracker_allowed_for_new_issue_in_project: திடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯ எநà¯à®¤ தடமà¯à®•ளà¯à®®à¯ இலà¯à®²à¯ˆ இதறà¯à®•ாக நீஙà¯à®•ள௠ஒர௠சிகà¯à®•லை உரà¯à®µà®¾à®•à¯à®•லாம௠label_tracker_all: அனைதà¯à®¤à¯ தடம௠label_new_project_issue_tab_enabled: காடà¯à®šà®¿ "New issue" தாவல௠setting_new_item_menu_tab: பà¯à®¤à®¿à®¯ பொரà¯à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•ான திடà¯à®Ÿ படà¯à®Ÿà®¿à®¯à®²à¯ தாவல௠label_new_object_tab_enabled: காடà¯à®šà®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: தடமà¯à®•ளà¯à®Ÿà®©à¯ திடà¯à®Ÿà®™à¯à®•ள௠எதà¯à®µà¯à®®à¯ இலà¯à®²à¯ˆ இதறà¯à®•ாக நீஙà¯à®•ள௠ஒர௠சிகà¯à®•லை உரà¯à®µà®¾à®•à¯à®•லாம௠field_textarea_font: உரை பகà¯à®¤à®¿à®•ளà¯à®•à¯à®•௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®®à¯ எழà¯à®¤à¯à®¤à¯à®°à¯ label_font_default: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ எழà¯à®¤à¯à®¤à¯à®°à¯ label_font_monospace: அகலம௠மாறா எழà¯à®¤à¯à®¤à¯à®°à¯ label_font_proportional: விகிதாசார எழà¯à®¤à¯à®¤à¯à®°à¯ setting_timespan_format: நேர இடைவெளி வடிவம௠label_table_of_contents: பொரà¯à®³à®Ÿà®•à¯à®•ம௠setting_commit_logs_formatting: செயà¯à®¤à®¿à®•ளைச௠செயà¯à®¯ உரை வடிவமைபà¯à®ªà¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®™à¯à®•ள௠setting_mail_handler_enable_regex: வழகà¯à®•மான வெளிபà¯à®ªà®¾à®Ÿà¯à®•ளை இயகà¯à®•௠error_move_of_child_not_possible: 'தà¯à®£à¯ˆ பணி %{child} பà¯à®¤à®¿à®¯à®¤à¯à®•à¯à®•௠நகரà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ project: %{பிழைகளà¯}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: செலவழிதà¯à®¤ நேரம௠மà¯à®Ÿà®¿à®¯à®¾à®¤à¯ நீகà¯à®•பà¯à®ªà®Ÿà®µà®¿à®°à¯à®•à¯à®•à¯à®®à¯ சிகà¯à®•லà¯à®•à¯à®•௠மீணà¯à®Ÿà¯à®®à¯ நியமிகà¯à®•பà¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯ setting_timelog_required_fields: நேர பதிவà¯à®•ளà¯à®•à¯à®•௠தேவையான பà¯à®²à®™à¯à®•ள௠label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: நான௠பாரà¯à®•à¯à®•à¯à®®à¯ விஷயஙà¯à®•ளà¯à®•à¯à®•௠மடà¯à®Ÿà¯à®®à¯‡ அலà¯à®²à®¤à¯ எனகà¯à®•௠ஒதà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ label_user_mail_option_only_owner: நான௠பாரà¯à®•à¯à®•à¯à®®à¯ விஷயஙà¯à®•ளà¯à®•à¯à®•௠மடà¯à®Ÿà¯à®®à¯‡ அலà¯à®²à®¤à¯ நான௠அதன௠உரிமையாளர௠warning_fields_cleared_on_bulk_edit: மாறà¯à®±à®™à¯à®•ள௠தானாக நீகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ பொரà¯à®³à¯à®•ளில௠ஒனà¯à®±à¯ அலà¯à®²à®¤à¯ அதறà¯à®•௠மேறà¯à®ªà®Ÿà¯à®Ÿ பà¯à®²à®™à¯à®•ளிலிரà¯à®¨à¯à®¤à¯ மதிபà¯à®ªà¯à®•ள௠field_updated_by: பà¯à®¤à¯à®ªà¯à®ªà®¿à®¤à¯à®¤à®¤à¯ field_last_updated_by: கடைசியாக பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_full_width_layout: à®®à¯à®´à¯ அகல தளவமைபà¯à®ªà¯ label_last_notes: கடைசி கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠field_digest: சரிபாரà¯à®ªà¯à®ªà¯à®¤à¯ தொகை field_default_assigned_to: இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ ஒதà¯à®•à¯à®•ீடà¯à®Ÿà®¾à®³à®°à¯ setting_show_custom_fields_on_registration: பதிவில௠தனிபà¯à®ªà®¯à®©à¯ பà¯à®²à®™à¯à®•ளைக௠காடà¯à®Ÿà¯ permission_view_news: செயà¯à®¤à®¿à®•ளைக௠காணà¯à®• label_no_preview_alternative_html: எநà¯à®¤ à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯à®®à¯ கிடைகà¯à®•விலà¯à®²à¯ˆ. %{link} அதறà¯à®•௠பதிலாக கோபà¯à®ªà¯. label_no_preview_download: பதிவிறகà¯à®•௠setting_close_duplicate_issues: நகல௠சிகà¯à®•லà¯à®•ளை தானாக மூட௠error_exceeds_maximum_hours_per_day: இதை விட அதிகமாக பதிவ௠செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ %{max_hours} மணிநேரம௠அதே நாள௠(%{logged_hours} மணி நேரம௠எறà¯à®•னவே பதியபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯) setting_time_entry_list_defaults: நேர பூடà¯à®Ÿà¯ படà¯à®Ÿà®¿à®¯à®²à¯ இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ setting_timelog_accept_0_hours: நேர பதிவà¯à®•ளை 0 மணிநேரதà¯à®¤à¯à®Ÿà®©à¯ à®à®±à¯à®±à¯à®•à¯à®•ொளà¯à®³à¯à®™à¯à®•ள௠setting_timelog_max_hours_per_day: ஒர௠நாளைகà¯à®•௠மறà¯à®±à¯à®®à¯ பயனரà¯à®•à¯à®•௠உளà¯à®¨à¯à®´à¯ˆà®¯à®•à¯à®•ூடிய அதிகபடà¯à®š மணிநேரம௠label_x_revisions: "%{count} திரà¯à®¤à¯à®¤à®™à¯à®•ளà¯" error_can_not_delete_auth_source: இநà¯à®¤ à®…à®™à¯à®•ீகார à®®à¯à®±à¯ˆ பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯ உளà¯à®³à®¤à¯ மறà¯à®±à¯à®®à¯ இரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. button_actions: Actions mail_body_lost_password_validity: நீஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®²à®¾à®®à¯ எனà¯à®ªà®¤à¯ˆ நினைவில௠கொளà¯à®• இநà¯à®¤ இணைபà¯à®ªà¯ˆ ஒர௠மà¯à®±à¯ˆ மடà¯à®Ÿà¯à®®à¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®™à¯à®•ளà¯. text_login_required_html: à®…à®™à¯à®•ீகாரம௠தேவையிலà¯à®²à¯ˆ, பொத௠திடà¯à®Ÿà®™à¯à®•ள௠மறà¯à®±à¯à®®à¯ அவறà¯à®±à®¿à®©à¯ உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•ள௠பிணையதà¯à®¤à®¿à®²à¯ வெளிபà¯à®ªà®Ÿà¯ˆà®¯à®¾à®•க௠கிடைகà¯à®•ினà¯à®±à®©. நீஙà¯à®•ள௠தேவையான அனà¯à®®à®¤à®¿à®•ளை மாறà¯à®±à®²à®¾à®®à¯. label_login_required_yes: 'ஆமà¯' label_login_required_no: இலà¯à®²à¯ˆ, பொத௠திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•௠அநாமதேய அணà¯à®•லை அனà¯à®®à®¤à®¿à®•à¯à®•வà¯à®®à¯ text_project_is_public_non_member: பொத௠திடà¯à®Ÿà®™à¯à®•ளà¯à®®à¯ அவறà¯à®±à®¿à®©à¯ உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•ளà¯à®®à¯ கிடைகà¯à®•ினà¯à®±à®© உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤ அனைதà¯à®¤à¯ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯. text_project_is_public_anonymous: பொத௠திடà¯à®Ÿà®™à¯à®•ளà¯à®®à¯ அவறà¯à®±à®¿à®©à¯ உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•ளà¯à®®à¯ வெளிபà¯à®ªà®Ÿà¯ˆà®¯à®¾à®•க௠கிடைகà¯à®•ினà¯à®±à®© பிணையதà¯à®¤à®¿à®²à¯. label_ldap: LDAP label_ldaps_verify_none: LDAP (சானà¯à®±à®¿à®¤à®´à¯ சரிபாரà¯à®•à¯à®•ாமலà¯) label_ldaps_verify_peer: LDAP label_ldaps_warning: சானà¯à®±à®¿à®¤à®´à¯à®Ÿà®©à¯ மறைகà¯à®±à®¿à®¯à®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ LDAPS இணைபà¯à®ªà¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறத௠அஙà¯à®•ீகார செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®©à¯ போத௠எநà¯à®¤ கையாளà¯à®¤à®²à¯ˆà®¯à¯à®®à¯ தடà¯à®•à¯à®• சரிபாரà¯à®•à¯à®•வà¯à®®à¯. label_nothing_to_preview: à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à®¿à®Ÿ எதà¯à®µà¯à®®à¯ இலà¯à®²à¯ˆ error_token_expired: இநà¯à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯ மீடà¯à®ªà¯ இணைபà¯à®ªà¯ காலாவதியானதà¯, தயவà¯à®šà¯†à®¯à¯à®¤à¯ மீணà¯à®Ÿà¯à®®à¯ à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•வà¯à®®à¯. error_spent_on_future_date: எதிரà¯à®•ால தேதியில௠நேரதà¯à®¤à¯ˆ பதிவ௠செயà¯à®¯ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ setting_timelog_accept_future_dates: எதிரà¯à®•ால தேதிகளில௠நேர பதிவà¯à®•ளை à®à®±à¯à®±à¯à®•à¯à®•ொளà¯à®³à¯à®™à¯à®•ள௠label_delete_link_to_subtask: உறவை நீகà¯à®•௠error_not_allowed_to_log_time_for_other_users: பிற பயனரà¯à®•ளà¯à®•à¯à®•ான நேரதà¯à®¤à¯ˆ பதிவ௠செயà¯à®¯ உஙà¯à®•ளà¯à®•à¯à®•௠அனà¯à®®à®¤à®¿ இலà¯à®²à¯ˆ permission_log_time_for_other_users: பதிவ௠மறà¯à®± பயனரà¯à®•ளà¯à®•à¯à®•ாக நேரதà¯à®¤à¯ˆ செலவிடà¯à®Ÿà®¤à¯ label_tomorrow: நாளை label_next_week: அடà¯à®¤à¯à®¤ வாரம௠label_next_month: அடà¯à®¤à¯à®¤ மாதம௠text_role_no_workflow: இநà¯à®¤ பாதà¯à®¤à®¿à®°à®¤à¯à®¤à®¿à®±à¯à®•௠பணிபà¯à®ªà®¾à®¯à¯à®µà¯ எதà¯à®µà¯à®®à¯ வரையறà¯à®•à¯à®•பà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ text_status_no_workflow: எநà¯à®¤à®µà¯Šà®°à¯ தடம௠இநà¯à®¤ நிலையை பணிபà¯à®ªà®¾à®¯à¯à®µà¯à®•ளில௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®¿à®²à¯à®²à¯ˆ setting_mail_handler_preferred_body_part: மலà¯à®Ÿà®¿à®ªà®¾à®°à¯à®Ÿà¯ (HTML) மினà¯à®©à®žà¯à®šà®²à¯à®•ளின௠விரà¯à®ªà¯à®ªà®®à®¾à®© பகà¯à®¤à®¿ setting_show_status_changes_in_mail_subject: வெளியீடà¯à®Ÿà¯ அஞà¯à®šà®²à¯ அறிவிபà¯à®ªà¯à®•ள௠பாடதà¯à®¤à®¿à®²à¯ நிலை மாறà¯à®±à®™à¯à®•ளைக௠காடà¯à®Ÿà¯ label_inherited_from_parent_project: மேல௠திடà¯à®Ÿà®¤à¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ பெறபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_inherited_from_group: கà¯à®´à¯à®µà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ மரபà¯à®°à®¿à®®à¯ˆ பெறà¯à®±à®¤à¯ %{name} label_trackers_description: தடமà¯à®•ளின௠விளகà¯à®•ம௠label_open_trackers_description: அனைதà¯à®¤à¯ தடம௠விளகà¯à®•தà¯à®¤à¯ˆà®¯à¯à®®à¯ காணà¯à®• label_preferred_body_part_text: உரை label_preferred_body_part_html: HTML field_parent_issue_subject: மேல௠பணி பொரà¯à®³à¯ permission_edit_own_issues: சொநà¯à®¤ சிகà¯à®•லà¯à®•ளைத௠திரà¯à®¤à¯à®¤à®µà¯à®®à¯ text_select_apply_tracker: தடதà¯à®¤à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ label_updated_issues: பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ சிகà¯à®•லà¯à®•ள௠text_avatar_server_config_html: தறà¯à®ªà¯‹à®¤à¯ˆà®¯ அவதார௠சேவையகம௠%{url}. You can configure it in config/configuration.yml கடà¯à®Ÿà®®à¯ˆà®•à¯à®•லாமà¯. setting_gantt_months_limit: கேனà¯à®Ÿà¯ விளகà¯à®•பà¯à®ªà®Ÿà®¤à¯à®¤à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯ அதிகபடà¯à®š மாதஙà¯à®•ள௠permission_import_time_entries: நேர உளà¯à®³à¯€à®Ÿà¯à®•ளை இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®• label_import_notifications: இறகà¯à®•à¯à®®à®¤à®¿à®¯à®¿à®©à¯ போத௠மினà¯à®©à®žà¯à®šà®²à¯ அறிவிபà¯à®ªà¯à®•ளை அனà¯à®ªà¯à®ªà®µà¯à®®à¯ field_recently_used_projects: ஜமà¯à®ªà¯ பெடà¯à®Ÿà®¿à®¯à®¿à®²à¯ சமீபதà¯à®¤à®¿à®²à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ திடà¯à®Ÿà®™à¯à®•ளின௠எணà¯à®£à®¿à®•à¯à®•ை label_optgroup_bookmarks: பà¯à®¤à¯à®¤à®•பà¯à®ªà®•à¯à®• அடையாளம௠label_optgroup_recents: சமீபதà¯à®¤à®¿à®²à¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ button_project_bookmark: பà¯à®¤à¯à®¤à®•பà¯à®ªà®•à¯à®• அடையாளம௠சேரà¯à®•à¯à®•வà¯à®®à¯ button_project_bookmark_delete: பà¯à®¤à¯à®¤à®•பà¯à®ªà®•à¯à®• அடையாளம௠அகறà¯à®±à¯ field_history_default_tab: வெளியீடà¯à®Ÿà®¿à®©à¯ வரலாற௠இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ தாவல௠label_issue_history_properties: சொதà¯à®¤à¯ மாறà¯à®±à®™à¯à®•ள௠label_issue_history_notes: கà¯à®±à®¿à®ªà¯à®ªà¯à®•ள௠label_last_tab_visited: கடைசியாக பாரà¯à®µà¯ˆà®¯à®¿à®Ÿà¯à®Ÿ தாவல௠field_unique_id: தனிதà¯à®¤à¯à®µà®®à®¾à®© ID text_no_subject: பொரà¯à®³à¯ இலà¯à®²à¯ˆ setting_password_required_char_classes: கடவà¯à®šà¯à®šà¯Šà®±à¯à®•ளà¯à®•à¯à®•௠தேவையான எழà¯à®¤à¯à®¤à¯ வகà¯à®ªà¯à®ªà¯à®•ள௠label_password_char_class_uppercase: பெரிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠label_password_char_class_lowercase: சிறிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠label_password_char_class_digits: இலகà¯à®•à®™à¯à®•ள௠label_password_char_class_special_chars: சிறபà¯à®ªà¯ எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠text_characters_must_contain: கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à¯ %{character_classes}. label_starts_with: தொடஙà¯à®•à¯à®•ிறத௠label_ends_with: உடன௠மà¯à®Ÿà®¿à®•ிறத௠label_issue_fixed_version_updated: இலகà¯à®•௠பதிபà¯à®ªà¯ பà¯à®¤à¯à®ªà¯à®ªà®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ setting_project_list_defaults: திடà¯à®Ÿà®™à¯à®•ள௠படà¯à®Ÿà®¿à®¯à®²à¯ இயலà¯à®ªà¯à®¨à®¿à®²à¯ˆ label_display_type: à®®à¯à®Ÿà®¿à®µà¯à®•ளைக௠காணà¯à®ªà®¿ label_display_type_list: படà¯à®Ÿà®¿à®¯à®²à¯ label_display_type_board: வாரியம௠label_my_bookmarks: எனத௠பà¯à®¤à¯à®¤à®•பà¯à®ªà®•à¯à®• அடையாளம௠label_import_time_entries: நேர உளà¯à®³à¯€à®Ÿà¯à®•ளை இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®• notice_issue_not_closable_by_open_tasks: இநà¯à®¤à®šà¯ சிகà¯à®•லை மூட இயலாதà¯, ஒர௠திறநà¯à®¤ தà¯à®£à¯ˆà®ªà¯ பணி உளà¯à®³à®¤à¯. notice_issue_not_closable_by_blocking_issue: இநà¯à®¤ சிகà¯à®•லை மூட இயலாதà¯, ஒர௠திறநà¯à®¤ சிகà¯à®•லால௠தடà¯à®•à¯à®•ிறதà¯. notice_issue_not_reopenable_by_closed_parent_issue: மூலச௠சிகà¯à®•ல௠மூடபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à®¾à®²à¯, இநà¯à®¤à®šà¯ சிகà¯à®•லை மீணà¯à®Ÿà¯à®®à¯ திறகà¯à®• இயலாதà¯. notice_invalid_watcher: 'தவறான பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ளà¯: இநà¯à®¤à®ªà¯ பொரà¯à®³à¯ˆà®ªà¯ பாரà¯à®ªà¯à®ªà®¤à®±à¯à®•ான அணà¯à®®à®¤à®¿ இலà¯à®²à®¾à®¤à®¤à®¾à®²à¯, பயனர௠எநà¯à®¤ அறிவிபà¯à®ªà¯à®•ளையà¯à®®à¯ பெறமாடà¯à®Ÿà®¾à®°à¯.' error_attachments_too_many: அதிகபடà¯à®š கோபà¯à®ªà¯à®•ளின௠எணà¯à®£à®¿à®•à¯à®•ையை தாணà¯à®Ÿà®¿à®µà®¿à®Ÿà¯à®Ÿà®¤à®¾à®²à¯. இநà¯à®¤à®•௠கோபà¯à®ªà¯ˆà®ªà¯ பதிவேறà¯à®± இயலாத௠(%{max_number_of_files}) error_bulk_download_size_too_big: இநà¯à®¤ கோபà¯à®ªà¯ˆ பதிவிறகà¯à®• இயலாதà¯, மொதà¯à®¤ கோபà¯à®ªà¯ அளவ௠அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ அதிகபடà¯à®š அளவை விட அதிகமாக உளà¯à®³à®¤à¯ (%{max_size}) error_no_data_in_file: கோபà¯à®ªà®¿à®²à¯ தரவ௠எதà¯à®µà¯à®®à¯ இலà¯à®²à¯ˆ error_can_not_execute_macro_html: மேகà¯à®°à¯‹à®µà¯ˆ இயகà¯à®•à¯à®µà®¤à®¿à®²à¯ பிழை %{name} (%{error}) error_macro_does_not_accept_block: இநà¯à®¤ மேகà¯à®°à¯‹ உரையின௠தொகà¯à®¤à®¿à®¯à¯ˆ à®à®±à¯à®•ாத௠error_childpages_macro_no_argument: எநà¯à®¤ அளவà¯à®°à¯à®®à¯ இலà¯à®²à®¾à®¤à®¤à®¾à®²à¯, இநà¯à®¤ மேகà¯à®°à¯‹à®µà¯ˆ விகà¯à®•ி பகà¯à®•à®™à¯à®•ளிலிரà¯à®¨à¯à®¤à¯ மடà¯à®Ÿà¯à®®à¯‡ அழைகà¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯ error_circular_inclusion: சà¯à®´à®±à¯à®šà®¿ சேரà¯à®•à¯à®•ை கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ error_page_not_found: பகà¯à®•ம௠கிடைகà¯à®•விலà¯à®²à¯ˆ error_filename_required: கோபà¯à®ªà¯ பெயர௠தேவை error_invalid_size_parameter: தவறான அளவà¯à®°à¯à®µà®¿à®©à¯ அளவ௠error_attachment_not_found: இணைபà¯à®ªà¯ %{name} காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ error_invalid_authenticity_token: தவறான நமà¯à®ªà®•தà¯à®¤à®©à¯à®®à¯ˆ டோகà¯à®•னà¯. error_query_statement_invalid: வினவலை இயகà¯à®•à¯à®®à¯ போத௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà¯ உளà¯à®¨à¯à®´à¯ˆà®¨à¯à®¤à¯à®³à¯à®³à®¤à¯. உஙà¯à®•ள௠ரெடà¯à®®à¯ˆà®©à¯ நிரà¯à®µà®¾à®•ியிடம௠இநà¯à®¤à®ªà¯ பிழையைப௠பà¯à®•ாரளிகà¯à®•வà¯à®®à¯. mail_destroy_project_failed: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ %{value} நீகà¯à®• இயலாதà¯. mail_destroy_project_successful: திடà¯à®Ÿà®®à¯ %{value} வெறà¯à®±à®¿à®•ரமாக நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. mail_destroy_project_with_subprojects_successful: திடà¯à®Ÿà®®à¯ %{value} மறà¯à®±à¯à®®à¯ அதன௠தà¯à®£à¯ˆà®¤à¯ திடà¯à®Ÿà®™à¯à®•ள௠வெறà¯à®±à®¿à®•ரமாக நீகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©. field_is_member_of_group: கà¯à®´à¯à®µà®¿à®©à¯ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ field_passwd_changed_on: கடவà¯à®šà¯à®šà¯Šà®²à¯ கடைசியாக மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ field_current_password: தறà¯à®ªà¯‹à®¤à¯ˆà®¯ கடவà¯à®šà¯à®šà¯Šà®²à¯ field_twofa_scheme: இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகார திடà¯à®Ÿà®®à¯ field_toolbar_language_options: கரà¯à®µà®¿à®ªà¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®¿à®©à¯ மொழிகளைக௠கà¯à®±à®¿à®•à¯à®•à¯à®®à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ field_twofa_required: இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகாரம௠தேவை field_default_issue_query: இயலà¯à®ªà®¾à®© சிகà¯à®•ல௠வினவல௠field_default_project_query: இயலà¯à®ªà®¾à®© திடà¯à®Ÿ வினவல௠field_default_time_entry_activity: இயலà¯à®ªà®¾à®© செலவிடà¯à®®à¯ நேரச௠செயலà¯à®ªà®¾à®Ÿà¯ field_any_searchable: தேடகà¯à®•ூடிய எநà¯à®¤ உரையà¯à®®à¯ setting_bulk_download_max_size: பதிவிறகà¯à®•தà¯à®¤à®¿à®±à¯à®•ான அதிகபடà¯à®š மொதà¯à®¤ அளவ௠setting_email_domains_allowed: அனà¯à®®à®¤à®¿à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ மினà¯à®©à®žà¯à®šà®²à¯ களஙà¯à®•ள௠setting_email_domains_denied: அனà¯à®®à®¤à®¿à®¯à®¿à®²à¯à®²à®¾ மினà¯à®©à®žà¯à®šà®²à¯ களஙà¯à®•ள௠setting_twofa: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரம௠permission_delete_project: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ நீகà¯à®•௠permission_select_project_publicity: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ பொத௠அலà¯à®²à®¤à¯ தனியாக அமை permission_view_wiki_page_watchers: விகà¯à®•ி பகà¯à®• பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®•௠காணà¯à®• permission_add_wiki_page_watchers: விகà¯à®•ி பகà¯à®• பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ளைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ permission_delete_wiki_page_watchers: விகà¯à®•ி பகà¯à®• பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ளை நீகà¯à®•வà¯à®®à¯ permission_view_message_watchers: செயà¯à®¤à®¿ பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠படà¯à®Ÿà®¿à®¯à®²à¯ˆà®•௠காணà¯à®• permission_add_message_watchers: செயà¯à®¤à®¿ பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠சேரà¯à®•à¯à®•வà¯à®®à¯ permission_delete_message_watchers: செயà¯à®¤à®¿ பாரà¯à®ªà¯à®ªà®µà®°à¯à®•ளை நீகà¯à®•வà¯à®®à¯ label_attachment_description: கோபà¯à®ªà¯ விளகà¯à®•ம௠label_contains_any_of: à®à®¤à¯‡à®©à¯à®®à¯ அடஙà¯à®•ிய label_has_been: இரà¯à®¨à¯à®¤ label_has_never_been: இரà¯à®¨à¯à®¤à®¤à®¿à®²à¯à®²à¯ˆ label_changed_from: இதிலிரà¯à®¨à¯à®¤à¯ மாறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿ label_view_previous_annotation: இநà¯à®¤ மாறà¯à®±à®¤à¯à®¤à®¿à®±à¯à®•௠மà¯à®©à¯ சிறà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯ˆà®ªà¯ பாரà¯à®•à¯à®•வà¯à®®à¯ label_optional: விரà¯à®ªà¯à®ªà®¤à¯ தேரà¯à®µà¯ label_bulk_edit: மொதà¯à®¤ திரà¯à®¤à¯à®¤à®®à¯ label_user_mail_notify_about_high_priority_issues_html: மேலà¯à®®à¯ சிகà¯à®•லà¯à®•ளைப௠பறà¯à®±à®¿ எனகà¯à®•à¯à®¤à¯ தெரிவிகà¯à®•வà¯à®®à¯ %{prio} அலà¯à®²à®¤à¯ அதறà¯à®•௠மேறà¯à®ªà®Ÿà¯à®Ÿ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯ˆà®¯à¯à®Ÿà®©à¯ label_auto_watch_on: தானியஙà¯à®•ி கணà¯à®•ாணிபà¯à®ªà¯ label_auto_watch_on_issue_created: நான௠உரà¯à®µà®¾à®•à¯à®•ிய சிகà¯à®•லà¯à®•ள௠label_auto_watch_on_issue_contributed_to: நான௠பஙà¯à®•ளிதà¯à®¤ சிகà¯à®•லà¯à®•ள௠label_message_watchers: பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠label_wiki_page_watchers: பாரà¯à®µà¯ˆà®¯à®¾à®³à®°à¯à®•ள௠label_days_to_html: "%{days} நாடà¯à®•ள௠வரை %{date}" label_subtask: தà¯à®£à¯ˆà®ªà¯ பணி label_required_lower: தேவை label_required_administrators: நிரà¯à®µà®¾à®•ிகளà¯à®•à¯à®•௠தேவை label_download_all_attachments: எலà¯à®²à®¾ கோபà¯à®ªà¯à®•ளையà¯à®®à¯ பதிவிறகà¯à®•வà¯à®®à¯ label_relations_mapping: உறவà¯à®•ள௠இணைபà¯à®ªà¯ label_default_queries: for_all_projects: அனைதà¯à®¤à¯ திடà¯à®Ÿà®™à¯à®•ளà¯à®•à¯à®•à¯à®®à¯ for_current_project: தறà¯à®ªà¯‹à®¤à¯ˆà®¯ திடà¯à®Ÿà®¤à¯à®¤à®¿à®±à¯à®•௠for_all_users: அனைதà¯à®¤à¯ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ for_this_user: இநà¯à®¤ பயனரà¯à®•à¯à®•௠label_issue_statuses_description: சிகà¯à®•லின௠நிலைகள௠விளகà¯à®•ம௠label_open_issue_statuses_description: அனைதà¯à®¤à¯ சிகà¯à®•ல௠நிலைகளின௠விளகà¯à®•தà¯à®¤à¯ˆà®¯à¯à®®à¯ காணà¯à®• label_assign_to_me: எனகà¯à®•௠ஒதà¯à®•à¯à®•௠label_default_query: இயலà¯à®ªà®¾à®© வினவல௠label_edited: திரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ label_time_by_author: "%{time} மூலம௠%{author}" button_disable: à®®à¯à®Ÿà®•à¯à®•௠button_copy_link: நகல௠இணைபà¯à®ªà¯ button_fetch_changesets: உறà¯à®¤à®¿à®¯à®³à®¿à®ªà¯à®ªà¯ˆ எட௠button_add_subtask: தà¯à®£à¯ˆà®ªà¯ பணியைச௠சேரà¯à®•à¯à®•வà¯à®®à¯ button_save_object: சேமி %{object_name} button_edit_object: திரà¯à®¤à¯à®¤à¯ %{object_name} button_delete_object: நீகà¯à®•௠%{object_name} button_create_and_follow: உரà¯à®µà®¾à®•à¯à®•ி தொடர௠button_apply_issues_filter: சிகà¯à®•ல௠வடிபà¯à®ªà®¾à®©à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ project_status_scheduled_for_deletion: நீகà¯à®• திடà¯à®Ÿà®®à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯ text_projects_bulk_destroy_confirmation: தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿ திடà¯à®Ÿà®ªà¯à®ªà®£à®¿à®•ளையà¯à®®à¯ தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ தரவையà¯à®®à¯ நிசà¯à®šà®¯à®®à®¾à®• நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? text_projects_bulk_destroy_head: | தà¯à®£à¯ˆà®¤à¯ திடà¯à®Ÿà®™à¯à®•ள௠மறà¯à®±à¯à®®à¯ தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ தரவ௠உடà¯à®ªà®Ÿ பினà¯à®µà®°à¯à®®à¯ திடà¯à®Ÿà®™à¯à®•ளை நிரநà¯à®¤à®°à®®à®¾à®• நீகà¯à®• உளà¯à®³à¯€à®°à¯à®•ளà¯. கீழேயà¯à®³à¯à®³ தகவலை ஆயà¯à®µà¯ செயà¯à®¤à¯, இதைதà¯à®¤à®¾à®©à¯ நீஙà¯à®•ள௠செயà¯à®¯ விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ள௠எனà¯à®ªà®¤à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯. இநà¯à®¤à®šà¯ செயலை திரà¯à®®à¯à®ª பெற இயலாதà¯. text_projects_bulk_destroy_confirm: உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤, கீழே உளà¯à®³ பெடà¯à®Ÿà®¿à®¯à®¿à®²à¯ "%{yes}" உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. text_subprojects_bulk_destroy: 'தà¯à®£à¯ˆà®¤à¯ திடà¯à®Ÿà®®à¯ உடà¯à®ªà®Ÿ(s): %{value}' text_project_close_confirmation: திடà¯à®Ÿà®ªà¯à®ªà®£à®¿à®¯à¯ˆ à®®à¯à®Ÿà®¿ அதை படிகà¯à®• மடà¯à®Ÿà¯à®®à¯‡à®¯à®¾à®©à®¤à®¾à®• மாறà¯à®±à¯à®µà®¤à®±à¯à®•௠நிசà¯à®šà®¯à®®à®¾à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? '%{value}' text_project_reopen_confirmation: திடà¯à®Ÿà®¤à¯à®¤à¯ˆ மீணà¯à®Ÿà¯à®®à¯ திறகà¯à®• விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா?'%{value}' text_project_archive_confirmation: திடà¯à®Ÿà®¤à¯à®¤à¯ˆà®•௠காபà¯à®ªà®•பà¯à®ªà®Ÿà¯à®¤à¯à®¤ விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா?'%{value}' text_users_bulk_destroy_head: பினà¯à®µà®°à¯à®®à¯ பயனரà¯à®•ளை நீகà¯à®•ி, அவரà¯à®•ளà¯à®•à¯à®•ான அனைதà¯à®¤à¯ கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளையà¯à®®à¯ நீகà¯à®• உளà¯à®³à¯€à®°à¯à®•ளà¯. இதை திரà¯à®®à¯à®ª பெற இயலாதà¯.. பெரà¯à®®à¯à®ªà®¾à®²à¯à®®à¯, பயனரà¯à®•ளை நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯à®ªà¯ பதிலாக அவரà¯à®•ளைப௠பூடà¯à®Ÿà¯à®µà®¤à¯ சிறநà¯à®¤ தீரà¯à®µà®¾à®•à¯à®®à¯. text_users_bulk_destroy_confirm: உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤, கீழே "%{yes}" உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. text_all_migrations_have_been_run: அனைதà¯à®¤à¯ தரவà¯à®¤à¯à®¤à®³ நகரà¯à®µà¯à®•ளà¯à®®à¯ இயகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®© text_select_apply_issue_status: சிகà¯à®•ல௠நிலையைத௠தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯ text_allowed_queries_to_select: பொத௠(எநà¯à®¤à®ªà¯ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯) வினவலà¯à®•ள௠மடà¯à®Ÿà¯à®®à¯‡ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•லாம௠text_setting_config_change: நீஙà¯à®•ள௠இயஙà¯à®•à¯à®•ிற à®®à¯à®±à¯ˆà®¯à¯ˆ config/configuration.yml இல௠கடà¯à®Ÿà®®à¯ˆà®•à¯à®•லாமà¯. திரà¯à®¤à¯à®¤à®¿à®¯ பின௠செயலியை மீணà¯à®Ÿà¯à®®à¯ தொடஙà¯à®•வà¯à®®à¯. label_import_users: பயனரà¯à®•ளை இறகà¯à®•à¯à®®à®¤à®¿ செய௠sudo_mode_new_info_html: "எனà¯à®© நடகà¯à®•ிறதà¯? எநà¯à®¤à®µà¯Šà®°à¯ நிரà¯à®µà®¾à®• நடவடிகà¯à®•ைகளையà¯à®®à¯ எடà¯à®ªà¯à®ªà®¤à®±à¯à®•௠மà¯à®©à¯, நீஙà¯à®•ள௠மீணà¯à®Ÿà¯à®®à¯ உஙà¯à®•ள௠கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤ வேணà¯à®Ÿà¯à®®à¯. இத௠உஙà¯à®•ள௠கணகà¯à®•௠பாதà¯à®•ாகà¯à®•பà¯à®ªà®Ÿà¯à®µà®¤à¯ˆ உறà¯à®¤à®¿ செயà¯à®•ிறதà¯." twofa__totp__name: à®…à®™à¯à®•ீகரிபà¯à®ªà¯ செயலி twofa__totp__text_pairing_info_html: இநà¯à®¤ QR கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ ஸà¯à®•ேன௠செயà¯à®¯à®µà¯à®®à¯ அலà¯à®²à®¤à¯ எளிய உரை விசையை TOTP செயலி உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯ (எ.கா. கூகà¯à®³à¯ à®…à®™à¯à®•ீகரிபà¯à®ªà®¾à®³à®°à¯, Authy, இரடà¯à®Ÿà¯ˆà®¯à®°à¯ மொபைலà¯) மறà¯à®±à¯à®®à¯ இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤ கீழே உளà¯à®³ பà¯à®²à®¤à¯à®¤à®¿à®²à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. twofa__totp__label_plain_text_key: எளிய உரை விசை twofa__totp__label_activate: à®…à®™à¯à®•ீகரிபà¯à®ªà¯ செயலியை செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ twofa_currently_active: 'தறà¯à®ªà¯‹à®¤à¯ அமலில௠உளà¯à®³à®¤à¯: %{twofa_scheme_name}' twofa_not_active: அமலில௠இலà¯à®²à¯ˆ twofa_label_code: கà¯à®±à®¿à®¯à¯€à®Ÿà¯ twofa_hint_disabled_html: அமைபà¯à®ªà¯ %{label} அனைதà¯à®¤à¯ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ இர௠காரணி à®…à®™à¯à®•ீகார சாதனஙà¯à®•ளை செயலிழகà¯à®•ச௠செயà¯à®¯à¯à®®à¯. twofa_hint_optional_html: அமைபà¯à®ªà¯ %{label} பயனரà¯à®•ளை இர௠காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ அமைகà¯à®• அனà¯à®®à®¤à®¿à®•à¯à®•à¯à®®à¯, விரà¯à®ªà¯à®ªà®ªà¯à®ªà®¤à¯à®¤à¯‹à®Ÿà¯‹ அலà¯à®²à¯à®¤à¯ கà¯à®´à¯à®µà®¿à®²à¯ à®’à®°à¯à®µà®°à¯à®•à¯à®•à¯à®¤à¯ தேவைபà¯à®ªà®Ÿà®¾à®µà®¿à®Ÿà¯à®Ÿà®¾à®²à¯‹ . twofa_hint_required_html: அமைபà¯à®ªà¯ %{label} அனைதà¯à®¤à¯ பயனரà¯à®•ளà¯à®®à¯ தஙà¯à®•ளின௠அடà¯à®¤à¯à®¤ உளà¯à®¨à¯à®´à¯ˆà®µà®¿à®²à¯ இர௠காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ அமைகà¯à®• வைகà¯à®•à¯à®®à¯. twofa_hint_required_administrators_html: அமைபà¯à®ªà¯ %{label} விரà¯à®ªà¯à®ªà®®à®¾à®©à®¤à¯ போல௠செயலà¯à®ªà®Ÿà¯à®®à¯, ஆனால௠நிரà¯à®µà®¾à®• உரிமையாளரà¯à®•ள௠தஙà¯à®•ளின௠அடà¯à®¤à¯à®¤ உளà¯à®¨à¯à®´à¯ˆà®µà®¿à®²à¯ இர௠காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ அமைகà¯à®• வைகà¯à®•à¯à®®à¯. twofa_label_setup: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ அமலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ twofa_label_deactivation_confirmation: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ அமலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¾à®¤à¯‡ twofa_notice_select: 'நீஙà¯à®•ள௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ விரà¯à®®à¯à®ªà¯à®®à¯ இரடà¯à®Ÿà¯ˆ காரணி திடà¯à®Ÿà®¤à¯à®¤à¯ˆà®¤à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•வà¯à®®à¯:' twofa_warning_require: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரதà¯à®¤à¯ˆ நீஙà¯à®•ள௠இயகà¯à®• வேணà¯à®Ÿà¯à®®à¯ எனà¯à®±à¯ நிரà¯à®µà®¾à®•ி கோரà¯à®•ிறாரà¯. twofa_activated: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரம௠வெறà¯à®±à®¿à®•ரமாக அமலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. உஙà¯à®•ள௠கணகà¯à®•ிறà¯à®•ான காபà¯à®ªà¯à®•௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®• பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯. twofa_deactivated: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகாரம௠செயலிழநà¯à®¤à®¤à¯. twofa_mail_body_security_notification_paired: இரடà¯à®Ÿà¯ˆ-காரணி à®…à®™à¯à®•ீகாரம௠%{field}஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ வெறà¯à®±à®¿à®•ரமாக அமலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ . twofa_mail_body_security_notification_unpaired: உஙà¯à®•ள௠கணகà¯à®•ிறà¯à®•௠இர௠காரணி à®…à®™à¯à®•ீகாரம௠செயலிழகà¯à®• வைகà¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. twofa_mail_body_backup_codes_generated: பà¯à®¤à®¿à®¯ இரà¯-காரணி à®…à®™à¯à®•ீகார காபà¯à®ªà¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©. twofa_mail_body_backup_code_used: இரடà¯à®Ÿà¯ˆ காரணி à®…à®™à¯à®•ீகார காபà¯à®ªà¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. twofa_invalid_code: கà¯à®±à®¿à®¯à¯€à®Ÿà¯ தவறானத௠அலà¯à®²à®¤à¯ காலாவதியானதà¯. twofa_label_enter_otp: உஙà¯à®•ள௠இர௠காரணி à®…à®™à¯à®•ீகாரக௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. twofa_too_many_tries: பல à®®à¯à®¯à®±à¯à®šà®¿à®•ளà¯. twofa_resend_code: கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆ மீணà¯à®Ÿà¯à®®à¯ அனà¯à®ªà¯à®ªà¯ twofa_code_sent: à®…à®™à¯à®•ீகாரக௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯ உஙà¯à®•ளà¯à®•à¯à®•௠அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. twofa_generate_backup_codes: மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯ twofa_text_generate_backup_codes_confirmation: இத௠à®à®±à¯à®•னவே உளà¯à®³ அனைதà¯à®¤à¯ மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளையà¯à®®à¯ செலà¯à®²à®¾à®¤à®¤à®¾à®•à¯à®•ி பà¯à®¤à®¿à®¯à®µà®±à¯à®±à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®®à¯. நீஙà¯à®•ள௠தொடர விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? twofa_notice_backup_codes_generated: உஙà¯à®•ள௠மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®©. twofa_warning_backup_codes_generated_invalidated: பà¯à®¤à®¿à®¯ மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©. %{time} இலிரà¯à®¨à¯à®¤à¯ à®à®±à¯à®•னவே உளà¯à®³ உஙà¯à®•ள௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠இபà¯à®ªà¯‹à®¤à¯ தவறானவை. twofa_label_backup_codes: இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகார மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠twofa_text_backup_codes_hint: ஒர௠மà¯à®±à¯ˆ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯à®•à¯à®•à¯à®ªà¯ பதிலாக இநà¯à®¤à®•௠கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளைப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯ இரணà¯à®Ÿà®¾à®µà®¤à¯ காரணிகà¯à®•ான அணà¯à®•ல௠உஙà¯à®•ளிடம௠இலà¯à®²à¯ˆà®¯à¯†à®©à®¿à®²à¯. ஒவà¯à®µà¯Šà®°à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ˆà®¯à¯à®®à¯ ஒர௠மà¯à®±à¯ˆ மடà¯à®Ÿà¯à®®à¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯. அவறà¯à®±à¯ˆ அசà¯à®šà®¿à®Ÿà¯à®Ÿà¯ பாதà¯à®•ாபà¯à®ªà®¾à®© இடதà¯à®¤à®¿à®²à¯ சேமிகà¯à®• பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறத௠twofa_text_backup_codes_created_at: மாறà¯à®±à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ள௠%{datetime} உரà¯à®µà®¾à®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. twofa_backup_codes_already_shown: மாறà¯à®±à¯ பிரதி கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளை மீணà¯à®Ÿà¯à®®à¯ காடà¯à®Ÿ இயலாதà¯, தேவைபà¯à®ªà®Ÿà¯à®Ÿà®¾à®²à¯ பà¯à®¤à®¿à®¯ மாறà¯à®±à¯ பிரதி கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•ளை உரà¯à®µà®¾à®•à¯à®•வà¯à®®à¯. twofa_text_group_required: உலகளாவிய இர௠காரணி à®…à®™à¯à®•ீகார அமைபà¯à®ªà¯ 'கடà¯à®Ÿà®¾à®¯à®®à®±à¯à®±à®¤à®¾à®•' அமைகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ போத௠மடà¯à®Ÿà¯à®®à¯‡ இநà¯à®¤ அமைபà¯à®ªà¯ பயனà¯à®³à¯à®³à®¤à®¾à®• இரà¯à®•à¯à®•à¯à®®à¯. தறà¯à®ªà¯‹à®¤à¯, அனைதà¯à®¤à¯ பயனரà¯à®•ளà¯à®•à¯à®•à¯à®®à¯ இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகாரம௠தேவைபà¯à®ªà®Ÿà¯à®•ிறதà¯. twofa_text_group_disabled: அமைபà¯à®ªà¯ பரநà¯à®¤ இர௠காரணி à®…à®™à¯à®•ீகார அமைபà¯à®ªà¯ 'கடà¯à®Ÿà®¾à®¯à®®à®±à¯à®±à®¤à®¾à®•' அமைகà¯à®•பà¯à®ªà®Ÿà¯à®®à¯ போத௠மடà¯à®Ÿà¯à®®à¯‡ இநà¯à®¤ அமைபà¯à®ªà¯ பயனà¯à®³à¯à®³à®¤à®¾à®• இரà¯à®•à¯à®•à¯à®®à¯. தறà¯à®ªà¯‹à®¤à¯, இரணà¯à®Ÿà¯ காரணி à®…à®™à¯à®•ீகாரம௠மà¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. text_user_destroy_confirmation: இநà¯à®¤à®ªà¯ பயனரை நிசà¯à®šà®¯à®®à®¾à®• நீகà¯à®•ி, அவரà¯à®•ளà¯à®•à¯à®•ான அனைதà¯à®¤à¯à®•௠கà¯à®±à®¿à®ªà¯à®ªà¯à®•ளையà¯à®®à¯ அகறà¯à®± விரà¯à®®à¯à®ªà¯à®•ிறீரà¯à®•ளா? இதை திரà¯à®®à¯à®ª பெற இயலாதà¯. பெரà¯à®®à¯à®ªà®¾à®²à¯à®®à¯, ஒர௠பயனரை நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯à®ªà¯ பதிலாக அவரà¯à®•ளைப௠பூடà¯à®Ÿà¯à®µà®¤à¯ சிறநà¯à®¤ தீரà¯à®µà®¾à®•à¯à®®à¯. உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤, கீழே அவரà¯à®•ளின௠உளà¯à®¨à¯à®´à¯ˆà®µà¯ˆ (%{login}) உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. text_project_destroy_enter_identifier: உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤, திடà¯à®Ÿà®¤à¯à®¤à®¿à®©à¯ அடையாளஙà¯à®•ாடà¯à®Ÿà®¿à®¯à¯ˆ (%{identifier}) கீழே உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯. field_name_or_email_or_login: பெயரà¯, மினà¯à®©à®žà¯à®šà®²à¯ அலà¯à®²à®¤à¯ உளà¯à®¨à¯à®´à¯ˆà®µà¯ text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/th.yml000066400000000000000000002434231500112024600171710ustar00rootroot00000000000000th: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b %d" long: "%B %d, %Y" day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "am" pm: "pm" datetime: distance_in_words: half_a_minute: "half a minute" less_than_x_seconds: one: "less than 1 second" other: "less than %{count} seconds" x_seconds: one: "1 second" other: "%{count} seconds" less_than_x_minutes: one: "less than a minute" other: "less than %{count} minutes" x_minutes: one: "1 minute" other: "%{count} minutes" about_x_hours: one: "about 1 hour" other: "about %{count} hours" x_hours: one: "1 hour" other: "%{count} hours" x_days: one: "1 day" other: "%{count} days" about_x_months: one: "about 1 month" other: "about %{count} months" x_months: one: "1 month" other: "%{count} months" about_x_years: one: "about 1 year" other: "about %{count} years" over_x_years: one: "over 1 year" other: "over %{count} years" almost_x_years: one: "almost 1 year" other: "almost %{count} years" number: format: separator: "." delimiter: "," precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: KB tb: TB gb: GB byte: one: Byte other: Bytes mb: MB # Used in array.to_sentence. support: array: sentence_connector: "and" skip_last_comma: false activerecord: errors: template: header: one: "1 error prohibited this %{model} from being saved" other: "%{count} errors prohibited this %{model} from being saved" messages: inclusion: "ไม่อยู่ในรายà¸à¸²à¸£" exclusion: "ถูà¸à¸ªà¸‡à¸§à¸™à¹„ว้" invalid: "ไม่ถูà¸à¸•้อง" confirmation: "พิมพ์ไม่เหมือนเดิม" accepted: "ต้องยอมรับ" empty: "ต้องเติม" blank: "ต้องเติม" too_long: "ยาวเà¸à¸´à¸™à¹„ป" too_short: "สั้นเà¸à¸´à¸™à¹„ป" wrong_length: "ความยาวไม่ถูà¸à¸•้อง" taken: "ถูà¸à¹ƒà¸Šà¹‰à¹„ปà¹à¸¥à¹‰à¸§" not_a_number: "ไม่ใช่ตัวเลข" not_a_date: "ไม่ใช่วันที่ ที่ถูà¸à¸•้อง" greater_than: "must be greater than %{count}" greater_than_or_equal_to: "must be greater than or equal to %{count}" equal_to: "must be equal to %{count}" less_than: "must be less than %{count}" less_than_or_equal_to: "must be less than or equal to %{count}" odd: "must be odd" even: "must be even" greater_than_start_date: "ต้องมาà¸à¸à¸§à¹ˆà¸²à¸§à¸±à¸™à¹€à¸£à¸´à¹ˆà¸¡" not_same_project: "ไม่ได้อยู่ในโครงà¸à¸²à¸£à¹€à¸”ียวà¸à¸±à¸™" circular_dependency: "ความสัมพันธ์อ้างอิงเป็นวงà¸à¸¥à¸¡" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" earlier_than_minimum_start_date: "cannot be earlier than %{date} because of preceding issues" not_a_regexp: "is not a valid regular expression" open_issue_with_closed_parent: "An open issue cannot be attached to a closed parent task" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: à¸à¸£à¸¸à¸“าเลือภgeneral_text_No: 'ไม่' general_text_Yes: 'ใช่' general_text_no: 'ไม่' general_text_yes: 'ใช่' general_lang_name: 'Thai (ไทย)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: windows-874 general_pdf_fontname: freeserif general_pdf_monospaced_fontname: freeserif general_first_day_of_week: '1' notice_account_updated: บัà¸à¸Šà¸µà¹„ด้ถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹à¸¥à¹‰à¸§. notice_account_invalid_credentials: ชื้ผู้ใช้หรือรหัสผ่านไม่ถูà¸à¸•้อง notice_account_password_updated: รหัสได้ถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹à¸¥à¹‰à¸§. notice_account_wrong_password: รหัสผ่านไม่ถูà¸à¸•้อง notice_account_register_done: บัà¸à¸Šà¸µà¸–ูà¸à¸ªà¸£à¹‰à¸²à¸‡à¹à¸¥à¹‰à¸§. à¸à¸£à¸¸à¸“าเช็คเมล์ à¹à¸¥à¹‰à¸§à¸„ลิ๊à¸à¸—ี่ลิงค์ในอีเมล์เพื่อเปิดใช้บัà¸à¸Šà¸µ notice_can_t_change_password: บัà¸à¸Šà¸µà¸™à¸µà¹‰à¹ƒà¸Šà¹‰à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตนจาà¸à¹à¸«à¸¥à¹ˆà¸‡à¸ à¸²à¸¢à¸™à¸­à¸. ไม่สามารถปลี่ยนรหัสผ่านได้. notice_account_lost_email_sent: เราได้ส่งอีเมล์พร้อมวิธีà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸£à¸«à¸±à¸µà¸ªà¸œà¹ˆà¸²à¸™à¹ƒà¸«à¸¡à¹ˆà¹ƒà¸«à¹‰à¸„ุณà¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าเช็คเมล์. notice_account_activated: บัà¸à¸Šà¸µà¸‚องคุณได้เปิดใช้à¹à¸¥à¹‰à¸§. ตอนนี้คุณสามารถเข้าสู่ระบบได้à¹à¸¥à¹‰à¸§. notice_successful_create: สร้างเสร็จà¹à¸¥à¹‰à¸§. notice_successful_update: ปรับปรุงเสร็จà¹à¸¥à¹‰à¸§. notice_successful_delete: ลบเสร็จà¹à¸¥à¹‰à¸§. notice_successful_connection: ติดต่อสำเร็จà¹à¸¥à¹‰à¸§. notice_file_not_found: หน้าที่คุณต้องà¸à¸²à¸£à¸”ูไม่มีอยู่จริง หรือถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§. notice_locking_conflict: ข้อมูลถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดยผู้ใช้คนอื่น. notice_not_authorized: คุณไม่มีสิทธิเข้าถึงหน้านี้. notice_email_sent: "อีเมล์ได้ถูà¸à¸ªà¹ˆà¸‡à¸–ึง %{value}" notice_email_error: "เà¸à¸´à¸”ความผิดพลาดขณะà¸à¸³à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œ (%{value})" notice_feeds_access_key_reseted: Atom access key ของคุณถูภreset à¹à¸¥à¹‰à¸§. notice_failed_to_save_issues: "%{count} ปัà¸à¸«à¸²à¸ˆà¸²à¸ %{total} ปัà¸à¸«à¸²à¸—ี่ถูà¸à¹€à¸¥à¸·à¸­à¸à¹„ม่สามารถจัดเà¸à¹‡à¸š: %{ids}." notice_account_pending: "บัà¸à¸Šà¸µà¸‚องคุณสร้างเสร็จà¹à¸¥à¹‰à¸§ ขณะนี้รอà¸à¸²à¸£à¸­à¸™à¸¸à¸¡à¸±à¸•ิจาà¸à¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£." notice_default_data_loaded: ค่าเริ่มต้นโหลดเสร็จà¹à¸¥à¹‰à¸§. error_can_t_load_default_data: "ค่าเริ่มต้นโหลดไม่สำเร็จ: %{value}" error_scm_not_found: "ไม่พบรุ่นที่ต้องà¸à¸²à¸£à¹ƒà¸™à¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ." error_scm_command_failed: "เà¸à¸´à¸”ความผิดพลาดในà¸à¸²à¸£à¹€à¸‚้าถึงà¹à¸«à¸¥à¹ˆà¸‡à¹€à¸à¹‡à¸šà¸•้นฉบับ: %{value}" error_scm_annotate: "entry ไม่มีอยู่จริง หรือไม่สามารถเขียนหมายเหตุประà¸à¸­à¸š." error_issue_not_found_in_project: 'ไม่พบปัà¸à¸«à¸²à¸™à¸µà¹‰ หรือปัà¸à¸«à¸²à¹„ม่ได้อยู่ในโครงà¸à¸²à¸£à¸™à¸µà¹‰' mail_subject_lost_password: "รหัสผ่าน %{value} ของคุณ" mail_body_lost_password: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' mail_subject_register: "เปิดบัà¸à¸Šà¸µ %{value} ของคุณ" mail_body_register: 'คลิ๊à¸à¸—ี่ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่าน:' mail_body_account_information_external: "คุณสามารถใช้บัà¸à¸Šà¸µ %{value} เพื่อเข้าสู่ระบบ." mail_body_account_information: ข้อมูลบัà¸à¸Šà¸µà¸‚องคุณ mail_subject_account_activation_request: "à¸à¸£à¸¸à¸“าเปิดบัà¸à¸Šà¸µ %{value}" mail_body_account_activation_request: "ผู้ใช้ใหม่ (%{value}) ได้ลงทะเบียน. บัà¸à¸Šà¸µà¸‚องเขาà¸à¸³à¸¥à¸±à¸‡à¸£à¸­à¸­à¸™à¸¸à¸¡à¸±à¸•ิ:" field_name: ชื่อ field_description: รายละเอียด field_summary: สรุปย่อ field_is_required: ต้องใส่ field_firstname: ชื่อ field_lastname: นามสà¸à¸¸à¸¥ field_mail: อีเมล์ field_filename: à¹à¸Ÿà¹‰à¸¡ field_filesize: ขนาด field_downloads: ดาวน์โหลด field_author: ผู้à¹à¸•่ง field_created_on: สร้าง field_updated_on: ปรับปรุง field_field_format: รูปà¹à¸šà¸š field_is_for_all: สำหรับทุà¸à¹‚ครงà¸à¸²à¸£ field_possible_values: ค่าที่เป็นไปได้ field_regexp: Regular expression field_min_length: สั้นสุด field_max_length: ยาวสุด field_value: ค่า field_category: ประเภท field_title: ชื่อเรื่อง field_project: โครงà¸à¸²à¸£ field_issue: ปัà¸à¸«à¸² field_status: สถานะ field_notes: บันทึภfield_is_closed: ปัà¸à¸«à¸²à¸ˆà¸š field_is_default: ค่าเริ่มต้น field_tracker: à¸à¸²à¸£à¸•ิดตาม field_subject: เรื่อง field_due_date: วันครบà¸à¸³à¸«à¸™à¸” field_assigned_to: มอบหมายให้ field_priority: ความสำคัภfield_fixed_version: รุ่น field_user: ผู้ใช้ field_role: บทบาท field_homepage: หน้าà¹à¸£à¸ field_is_public: สาธารณะ field_parent: โครงà¸à¸²à¸£à¸¢à¹ˆà¸­à¸¢à¸‚อง field_is_in_roadmap: ปัà¸à¸«à¸²à¹à¸ªà¸”งใน à¹à¸œà¸™à¸‡à¸²à¸™ field_login: ชื่อที่ใช้เข้าระบบ field_mail_notification: à¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนทางอีเมล์ field_admin: ผู้บริหารจัดà¸à¸²à¸£ field_last_login_on: เข้าระบบครั้งสุดท้าย field_language: ภาษา field_effective_date: วันที่ field_password: รหัสผ่าน field_new_password: รหัสผ่านใหม่ field_password_confirmation: ยืนยันรหัสผ่าน field_version: รุ่น field_type: ชนิด field_host: โฮสต์ field_port: พอร์ต field_account: บัà¸à¸Šà¸µ field_base_dn: Base DN field_attr_login: เข้าระบบ attribute field_attr_firstname: ชื่อ attribute field_attr_lastname: นามสà¸à¸¸à¸¥ attribute field_attr_mail: อีเมล์ attribute field_onthefly: สร้างผู้ใช้ทันที field_start_date: เริ่ม field_done_ratio: "% สำเร็จ" field_auth_source: วิธีà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตน field_hide_mail: ซ่อนอีเมล์ของฉัน field_comments: ความเห็น field_url: URL field_start_page: หน้าเริ่มต้น field_subproject: โครงà¸à¸²à¸£à¸¢à¹ˆà¸­à¸¢ field_hours: ชั่วโมง field_activity: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ field_spent_on: วันที่ field_identifier: ชื่อเฉพาะ field_is_filter: ใช้เป็นตัวà¸à¸£à¸­à¸‡ field_issue_to: ปัà¸à¸«à¸²à¸—ี่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง field_delay: เลื่อน field_assignable: ปัà¸à¸«à¸²à¸ªà¸²à¸¡à¸²à¸£à¸–มอบหมายให้คนที่ทำบทบาทนี้ field_redirect_existing_links: ย้ายจุดเชื่อมโยงนี้ field_estimated_hours: เวลาที่ใช้โดยประมาณ field_column_names: สดมภ์ field_time_zone: ย่านเวลา field_searchable: ค้นหาได้ field_default_value: ค่าเริ่มต้น field_comments_sorting: à¹à¸ªà¸”งความเห็น setting_app_title: ชื่อโปรà¹à¸à¸£à¸¡ setting_welcome_text: ข้อความต้อนรับ setting_default_language: ภาษาเริ่มต้น setting_login_required: ต้องป้อนผู้ใช้-รหัสผ่าน setting_self_registration: ลงทะเบียนด้วยตนเอง setting_attachment_max_size: ขนาดà¹à¸Ÿà¹‰à¸¡à¹à¸™à¸šà¸ªà¸¹à¸‡à¸ªà¸¸à¸” setting_issues_export_limit: à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸›à¸±à¸à¸«à¸²à¸ªà¸¹à¸‡à¸ªà¸¸à¸” setting_mail_from: อีเมล์ที่ใช้ส่ง setting_host_name: ชื่อโฮสต์ setting_text_formatting: à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸‚้อความ setting_wiki_compression: บีบอัดประวัติ Wiki setting_feeds_limit: จำนวน Feed setting_default_projects_public: โครงà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆà¸¡à¸µà¸„่าเริ่มต้นเป็น สาธารณะ setting_autofetch_changesets: ดึง commits อัตโนมัติ setting_sys_api_enabled: เปิดใช้ WS สำหรับà¸à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸—ี่เà¸à¹‡à¸šà¸•้นฉบับ setting_commit_ref_keywords: คำสำคัภReferencing setting_commit_fix_keywords: คำสำคัภFixing setting_autologin: เข้าระบบอัตโนมัติ setting_date_format: รูปà¹à¸šà¸šà¸§à¸±à¸™à¸—ี่ setting_time_format: รูปà¹à¸šà¸šà¹€à¸§à¸¥à¸² setting_cross_project_issue_relations: อนุà¸à¸²à¸•ให้ระบุปัà¸à¸«à¸²à¸‚้ามโครงà¸à¸²à¸£ setting_issue_list_default_columns: สดมภ์เริ่มต้นà¹à¸ªà¸”งในรายà¸à¸²à¸£à¸›à¸±à¸à¸«à¸² setting_emails_footer: คำลงท้ายอีเมล์ setting_protocol: Protocol setting_per_page_options: ตัวเลือà¸à¸ˆà¸³à¸™à¸§à¸™à¸•่อหน้า setting_user_format: รูปà¹à¸šà¸šà¸à¸²à¸£à¹à¸ªà¸”งชื่อผู้ใช้ setting_activity_days_default: จำนวนวันที่à¹à¸ªà¸”งในà¸à¸´à¸ˆà¸à¸£à¸£à¸¡à¸‚องโครงà¸à¸²à¸£ setting_display_subprojects_issues: à¹à¸ªà¸”งปัà¸à¸«à¸²à¸‚องโครงà¸à¸²à¸£à¸¢à¹ˆà¸­à¸¢à¹ƒà¸™à¹‚ครงà¸à¸²à¸£à¸«à¸¥à¸±à¸ project_module_issue_tracking: à¸à¸²à¸£à¸•ิดตามปัà¸à¸«à¸² project_module_time_tracking: à¸à¸²à¸£à¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸² project_module_news: ข่าว project_module_documents: เอà¸à¸ªà¸²à¸£ project_module_files: à¹à¸Ÿà¹‰à¸¡ project_module_wiki: Wiki project_module_repository: ที่เà¸à¹‡à¸šà¸•้นฉบับ project_module_boards: à¸à¸£à¸°à¸”านข้อความ label_user: ผู้ใช้ label_user_plural: ผู้ใช้ label_user_new: ผู้ใช้ใหม่ label_project: โครงà¸à¸²à¸£ label_project_new: โครงà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆ label_project_plural: โครงà¸à¸²à¸£ label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: โครงà¸à¸²à¸£à¸—ั้งหมด label_project_latest: โครงà¸à¸²à¸£à¸¥à¹ˆà¸²à¸ªà¸¸à¸” label_issue: ปัà¸à¸«à¸² label_issue_new: ปัà¸à¸«à¸²à¹ƒà¸«à¸¡à¹ˆ label_issue_plural: ปัà¸à¸«à¸² label_issue_view_all: ดูปัà¸à¸«à¸²à¸—ั้งหมด label_issues_by: "ปัà¸à¸«à¸²à¹‚ดย %{value}" label_issue_added: ปัà¸à¸«à¸²à¸–ูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_issue_updated: ปัà¸à¸«à¸²à¸–ูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡ label_document: เอà¸à¸ªà¸²à¸£ label_document_new: เอà¸à¸ªà¸²à¸£à¹ƒà¸«à¸¡à¹ˆ label_document_plural: เอà¸à¸ªà¸²à¸£ label_document_added: เอà¸à¸ªà¸²à¸£à¸–ูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_role: บทบาท label_role_plural: บทบาท label_role_new: บทบาทใหม่ label_role_and_permissions: บทบาทà¹à¸¥à¸°à¸ªà¸´à¸—ธิ label_member: สมาชิภlabel_member_new: สมาชิà¸à¹ƒà¸«à¸¡à¹ˆ label_member_plural: สมาชิภlabel_tracker: à¸à¸²à¸£à¸•ิดตาม label_tracker_plural: à¸à¸²à¸£à¸•ิดตาม label_tracker_new: à¸à¸²à¸£à¸•ิดตามใหม่ label_workflow: ลำดับงาน label_issue_status: สถานะของปัà¸à¸«à¸² label_issue_status_plural: สถานะของปัà¸à¸«à¸² label_issue_status_new: สถานะใหม label_issue_category: ประเภทของปัà¸à¸«à¸² label_issue_category_plural: ประเภทของปัà¸à¸«à¸² label_issue_category_new: ประเภทใหม่ label_custom_field: เขตข้อมูลà¹à¸šà¸šà¸£à¸°à¸šà¸¸à¹€à¸­à¸‡ label_custom_field_plural: เขตข้อมูลà¹à¸šà¸šà¸£à¸°à¸šà¸¸à¹€à¸­à¸‡ label_custom_field_new: สร้างเขตข้อมูลà¹à¸šà¸šà¸£à¸°à¸šà¸¸à¹€à¸­à¸‡ label_enumerations: รายà¸à¸²à¸£ label_enumeration_new: สร้างใหม่ label_information: ข้อมูล label_information_plural: ข้อมูล label_register: ลงทะเบียน label_password_lost: ลืมรหัสผ่าน label_home: หน้าà¹à¸£à¸ label_my_page: หน้าของฉัน label_my_account: บัà¸à¸Šà¸µà¸‚องฉัน label_my_projects: โครงà¸à¸²à¸£à¸‚องฉัน label_administration: บริหารจัดà¸à¸²à¸£ label_login: เข้าระบบ label_logout: ออà¸à¸£à¸°à¸šà¸š label_help: ช่วยเหลือ label_reported_issues: ปัà¸à¸«à¸²à¸—ี่à¹à¸ˆà¹‰à¸‡à¹„ว้ label_assigned_to_me_issues: ปัà¸à¸«à¸²à¸—ี่มอบหมายให้ฉัน label_registered_on: ลงทะเบียนเมื่อ label_activity: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ label_activity_plural: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ label_new: ใหม่ label_logged_as: เข้าระบบในชื่อ label_environment: สภาพà¹à¸§à¸”ล้อม label_authentication: à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตน label_auth_source: วิธีà¸à¸²à¸£à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตน label_auth_source_new: สร้างวิธีà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตนใหม่ label_auth_source_plural: วิธีà¸à¸²à¸£ Authentication label_subproject_plural: โครงà¸à¸²à¸£à¸¢à¹ˆà¸­à¸¢ label_min_max_length: สั้น-ยาว สุดที่ label_list: รายà¸à¸²à¸£ label_date: วันที่ label_integer: จำนวนเต็ม label_float: จำนวนจริง label_boolean: ถูà¸à¸œà¸´à¸” label_string: ข้อความ label_text: ข้อความขนาดยาว label_attribute: คุณลัà¸à¸©à¸“ะ label_attribute_plural: คุณลัà¸à¸©à¸“ะ label_no_data: จำนวนข้อมูลที่à¹à¸ªà¸”ง label_change_status: เปลี่ยนสถานะ label_history: ประวัติ label_attachment: à¹à¸Ÿà¹‰à¸¡ label_attachment_new: à¹à¸Ÿà¹‰à¸¡à¹ƒà¸«à¸¡à¹ˆ label_attachment_delete: ลบà¹à¸Ÿà¹‰à¸¡ label_attachment_plural: à¹à¸Ÿà¹‰à¸¡ label_file_added: à¹à¸Ÿà¹‰à¸¡à¸–ูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_report: รายงาน label_report_plural: รายงาน label_news: ข่าว label_news_new: เพิ่มข่าว label_news_plural: ข่าว label_news_latest: ข่าวล่าสุด label_news_view_all: ดูข่าวทั้งหมด label_news_added: ข่าวถูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_settings: ปรับà¹à¸•่ง label_overview: ภาพรวม label_version: รุ่น label_version_new: รุ่นใหม่ label_version_plural: รุ่น label_confirmation: ยืนยัน label_export_to: 'รูปà¹à¸šà¸šà¸­à¸·à¹ˆà¸™à¹† :' label_read: อ่าน... label_public_projects: โครงà¸à¸²à¸£à¸ªà¸²à¸˜à¸²à¸£à¸“ะ label_open_issues: เปิด label_open_issues_plural: เปิด label_closed_issues: ปิด label_closed_issues_plural: ปิด label_x_open_issues_abbr: zero: 0 open one: 1 open other: "%{count} open" label_x_closed_issues_abbr: zero: 0 closed one: 1 closed other: "%{count} closed" label_total: จำนวนรวม label_permissions: สิทธิ label_current_status: สถานะปัจจุบัน label_new_statuses_allowed: อนุà¸à¸²à¸•ให้มีสถานะใหม่ label_all: ทั้งหมด label_none: ไม่มี label_nobody: ไม่มีใคร label_next: ต่อไป label_previous: à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² label_used_by: ถูà¸à¹ƒà¸Šà¹‰à¹‚ดย label_details: รายละเอียด label_add_note: เพิ่มบันทึภlabel_calendar: ปà¸à¸´à¸—ิน label_months_from: เดือนจาภlabel_gantt: Gantt label_internal: ภายใน label_last_changes: "last %{count} เปลี่ยนà¹à¸›à¸¥à¸‡" label_change_view_all: ดูà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_comment: ความเห็น label_comment_plural: ความเห็น label_x_comments: zero: no comments one: 1 comment other: "%{count} comments" label_comment_add: เพิ่มความเห็น label_comment_added: ความเห็นถูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_comment_delete: ลบความเห็น label_query: à¹à¸šà¸šà¸ªà¸­à¸šà¸–ามà¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง label_query_plural: à¹à¸šà¸šà¸ªà¸­à¸šà¸–ามà¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง label_query_new: à¹à¸šà¸šà¸ªà¸­à¸šà¸–ามใหม่ label_filter_add: เพิ่มตัวà¸à¸£à¸­à¸‡ label_filter_plural: ตัวà¸à¸£à¸­à¸‡ label_equals: คือ label_not_equals: ไม่ใช่ label_in_less_than: น้อยà¸à¸§à¹ˆà¸² label_in_more_than: มาà¸à¸à¸§à¹ˆà¸² label_in: ในช่วง label_today: วันนี้ label_yesterday: เมื่อวาน label_this_week: อาทิตย์นี้ label_last_week: อาทิตย์ที่à¹à¸¥à¹‰à¸§ label_last_n_days: "%{count} วันย้อนหลัง" label_this_month: เดือนนี้ label_last_month: เดือนที่à¹à¸¥à¹‰à¸§ label_this_year: ปีนี้ label_date_range: ช่วงวันที่ label_less_than_ago: น้อยà¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¸§à¸±à¸™ label_more_than_ago: มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¸§à¸±à¸™ label_ago: วันผ่านมาà¹à¸¥à¹‰à¸§ label_contains: มี... label_not_contains: ไม่มี... label_day_plural: วัน label_repository: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_repository_plural: ที่เà¸à¹‡à¸šà¸•้นฉบับ label_revision: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_revision_plural: à¸à¸²à¸£à¹à¸à¹‰à¹„ข label_associated_revisions: à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง label_added: ถูà¸à¹€à¸žà¸´à¹ˆà¸¡ label_modified: ถูà¸à¹à¸à¹‰à¹„ข label_deleted: ถูà¸à¸¥à¸š label_latest_revision: รุ่นà¸à¸²à¸£à¹à¸à¹‰à¹„ขล่าสุด label_latest_revision_plural: รุ่นà¸à¸²à¸£à¹à¸à¹‰à¹„ขล่าสุด label_view_revisions: ดูà¸à¸²à¸£à¹à¸à¹‰à¹„ข label_max_size: ขนาดใหà¸à¹ˆà¸ªà¸¸à¸” label_roadmap: à¹à¸œà¸™à¸‡à¸²à¸™ label_roadmap_due_in: "ถึงà¸à¸³à¸«à¸™à¸”ใน %{value}" label_roadmap_overdue: "%{value} ช้าà¸à¸§à¹ˆà¸²à¸à¸³à¸«à¸™à¸”" label_roadmap_no_issues: ไม่มีปัà¸à¸«à¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸™à¸µà¹‰ label_search: ค้นหา label_result_plural: ผลà¸à¸²à¸£à¸„้นหา label_all_words: ทุà¸à¸„ำ label_wiki: Wiki label_wiki_edit: à¹à¸à¹‰à¹„ข Wiki label_wiki_edit_plural: à¹à¸à¹‰à¹„ข Wiki label_wiki_page: หน้า Wiki label_wiki_page_plural: หน้า Wiki label_index_by_title: เรียงตามชื่อเรื่อง label_index_by_date: เรียงตามวัน label_current_version: รุ่นปัจจุบัน label_preview: ตัวอย่างà¸à¹ˆà¸­à¸™à¸ˆà¸±à¸”เà¸à¹‡à¸š label_feed_plural: Feeds label_changes_details: รายละเอียดà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ั้งหมด label_issue_tracking: ติดตามปัà¸à¸«à¸² label_spent_time: เวลาที่ใช้ label_f_hour: "%{value} ชั่วโมง" label_f_hour_plural: "%{value} ชั่วโมง" label_time_tracking: ติดตามà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹€à¸§à¸¥à¸² label_change_plural: เปลี่ยนà¹à¸›à¸¥à¸‡ label_statistics: สถิติ label_commits_per_month: Commits ต่อเดือน label_commits_per_author: Commits ต่อผู้à¹à¸•่ง label_view_diff: ดูความà¹à¸•à¸à¸•่าง label_diff_inline: inline label_diff_side_by_side: side by side label_options: ตัวเลือภlabel_copy_workflow_from: คัดลอà¸à¸¥à¸³à¸”ับงานจาภlabel_permissions_report: รายงานสิทธิ label_watched_issues: เà¸à¹‰à¸²à¸”ูปัà¸à¸«à¸² label_related_issues: ปัà¸à¸«à¸²à¸—ี่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง label_applied_status: จัดเà¸à¹‡à¸šà¸ªà¸–านะ label_loading: à¸à¸³à¸¥à¸±à¸‡à¹‚หลด... label_relation_new: ความสัมพันธ์ใหม่ label_relation_delete: ลบความสัมพันธ์ label_relates_to: สัมพันธ์à¸à¸±à¸š label_duplicates: ซ้ำ label_blocks: à¸à¸µà¸”à¸à¸±à¸™ label_blocked_by: à¸à¸µà¸”à¸à¸±à¸™à¹‚ดย label_precedes: นำหน้า label_follows: ตามหลัง label_stay_logged_in: อยู่ในระบบต่อ label_disabled: ไม่ใช้งาน label_show_completed_versions: à¹à¸ªà¸”งรุ่นที่สมบูรณ์ label_me: ฉัน label_board: สภาà¸à¸²à¹à¸Ÿ label_board_new: สร้างสภาà¸à¸²à¹à¸Ÿ label_board_plural: สภาà¸à¸²à¹à¸Ÿ label_topic_plural: หัวข้อ label_message_plural: ข้อความ label_message_last: ข้อความล่าสุด label_message_new: เขียนข้อความใหม่ label_message_posted: ข้อความถูà¸à¹€à¸žà¸´à¹ˆà¸¡à¹à¸¥à¹‰à¸§ label_reply_plural: ตอบà¸à¸¥à¸±à¸š label_send_information: ส่งรายละเอียดของบัà¸à¸Šà¸µà¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ label_year: ปี label_month: เดือน label_week: สัปดาห์ label_date_from: จาภlabel_date_to: ถึง label_language_based: ขึ้นอยู่à¸à¸±à¸šà¸ à¸²à¸©à¸²à¸‚องผู้ใช้ label_sort_by: "เรียงโดย %{value}" label_send_test_email: ส่งจดหมายทดสอบ label_feeds_access_key_created_on: "Atom access key สร้างเมื่อ %{value} ที่ผ่านมา" label_module_plural: ส่วนประà¸à¸­à¸š label_added_time_by: "เพิ่มโดย %{author} %{age} ที่ผ่านมา" label_updated_time: "ปรับปรุง %{value} ที่ผ่านมา" label_jump_to_a_project: ไปที่โครงà¸à¸²à¸£... label_file_plural: à¹à¸Ÿà¹‰à¸¡ label_changeset_plural: à¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ label_default_columns: สดมภ์เริ่มต้น label_no_change_option: (ไม่เปลี่ยนà¹à¸›à¸¥à¸‡) label_bulk_edit_selected_issues: à¹à¸à¹‰à¹„ขปัà¸à¸«à¸²à¸—ี่เลือà¸à¸—ั้งหมด label_theme: ชุดรูปà¹à¸šà¸š label_default: ค่าเริ่มต้น label_search_titles_only: ค้นหาจาà¸à¸Šà¸·à¹ˆà¸­à¹€à¸£à¸·à¹ˆà¸­à¸‡à¹€à¸—่านั้น label_user_mail_option_all: "ทุà¸à¹† เหตุà¸à¸²à¸£à¸“์ในโครงà¸à¸²à¸£à¸‚องฉัน" label_user_mail_option_selected: "ทุà¸à¹† เหตุà¸à¸²à¸£à¸“์ในโครงà¸à¸²à¸£à¸—ี่เลือà¸..." label_user_mail_no_self_notified: "ฉันไม่ต้องà¸à¸²à¸£à¹„ด้รับà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸•ือนในสิ่งที่ฉันทำเอง" label_registration_activation_by_email: เปิดบัà¸à¸Šà¸µà¸œà¹ˆà¸²à¸™à¸­à¸µà¹€à¸¡à¸¥à¹Œ label_registration_manual_activation: อนุมัติโดยผู้บริหารจัดà¸à¸²à¸£ label_registration_automatic_activation: เปิดบัà¸à¸Šà¸µà¸­à¸±à¸•โนมัติ label_display_per_page: "ต่อหน้า: %{value}" label_age: อายุ label_change_properties: เปลี่ยนคุณสมบัติ label_general: ทั่วๆ ไป label_scm: ตัวจัดà¸à¸²à¸£à¸•้นฉบับ label_plugins: ส่วนเสริม label_ldap_authentication: à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸•ัวตนโดยใช้ LDAP label_downloads_abbr: D/L label_optional_description: รายละเอียดเพิ่มเติม label_add_another_file: เพิ่มà¹à¸Ÿà¹‰à¸¡à¸­à¸·à¹ˆà¸™à¹† label_preferences: ค่าที่ชอบใจ label_chronological_order: เรียงจาà¸à¹€à¸à¹ˆà¸²à¹„ปใหม่ label_reverse_chronological_order: เรียงจาà¸à¹ƒà¸«à¸¡à¹ˆà¹„ปเà¸à¹ˆà¸² button_login: เข้าระบบ button_submit: จัดส่งข้อมูล button_save: จัดเà¸à¹‡à¸š button_check_all: เลือà¸à¸—ั้งหมด button_uncheck_all: ไม่เลือà¸à¸—ั้งหมด button_delete: ลบ button_create: สร้าง button_test: ทดสอบ button_edit: à¹à¸à¹‰à¹„ข button_add: เพิ่ม button_change: เปลี่ยนà¹à¸›à¸¥à¸‡ button_apply: ประยุà¸à¸•์ใช้ button_clear: ล้างข้อความ button_lock: ล็อค button_unlock: ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸¥à¹‡à¸­à¸„ button_download: ดาวน์โหลด button_list: รายà¸à¸²à¸£ button_view: มุมมอง button_move: ย้าย button_back: à¸à¸¥à¸±à¸š button_cancel: ยà¸à¹€à¸¥à¸´à¸ button_activate: เปิดใช้ button_sort: จัดเรียง button_log_time: บันทึà¸à¹€à¸§à¸¥à¸² button_rollback: ถอยà¸à¸¥à¸±à¸šà¸¡à¸²à¸—ี่รุ่นนี้ button_watch: เà¸à¹‰à¸²à¸”ู button_unwatch: เลิà¸à¹€à¸à¹‰à¸²à¸”ู button_reply: ตอบà¸à¸¥à¸±à¸š button_archive: เà¸à¹‡à¸šà¹€à¸‚้าโà¸à¸”ัง button_unarchive: เอาออà¸à¸ˆà¸²à¸à¹‚à¸à¸”ัง button_reset: เริ่มใหมท button_rename: เปลี่ยนชื่อ button_change_password: เปลี่ยนรหัสผ่าน button_copy: คัดลอภbutton_annotate: หมายเหตุประà¸à¸­à¸š button_update: ปรับปรุง button_configure: ปรับà¹à¸•่ง status_active: เปิดใช้งานà¹à¸¥à¹‰à¸§ status_registered: รอà¸à¸²à¸£à¸­à¸™à¸¸à¸¡à¸±à¸•ิ status_locked: ล็อค text_select_mail_notifications: เลือà¸à¸à¸²à¸£à¸à¸£à¸°à¸—ำที่ต้องà¸à¸²à¸£à¹ƒà¸«à¹‰à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¹Œà¹à¸ˆà¹‰à¸‡. text_regexp_info: ตัวอย่าง ^[A-Z0-9]+$ text_project_destroy_confirmation: คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹„หมว่าต้องà¸à¸²à¸£à¸¥à¸šà¹‚ครงà¸à¸²à¸£à¹à¸¥à¸°à¸‚้อมูลที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้่อง ? text_subprojects_destroy_warning: "โครงà¸à¸²à¸£à¸¢à¹ˆà¸­à¸¢: %{value} จะถูà¸à¸¥à¸šà¸”้วย." text_workflow_edit: เลือà¸à¸šà¸—บาทà¹à¸¥à¸°à¸à¸²à¸£à¸•ิดตาม เพื่อà¹à¸à¹‰à¹„ขลำดับงาน text_are_you_sure: คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹„หม ? text_tip_issue_begin_day: งานที่เริ่มวันนี้ text_tip_issue_end_day: งานที่จบวันนี้ text_tip_issue_begin_end_day: งานที่เริ่มà¹à¸¥à¸°à¸ˆà¸šà¸§à¸±à¸™à¸™à¸µà¹‰ text_caracters_maximum: "สูงสุด %{count} ตัวอัà¸à¸©à¸£." text_caracters_minimum: "ต้องยาวอย่างน้อย %{count} ตัวอัà¸à¸©à¸£." text_length_between: "ความยาวระหว่าง %{min} ถึง %{max} ตัวอัà¸à¸©à¸£." text_tracker_no_workflow: ไม่ได้บัà¸à¸à¸±à¸•ิลำดับงานสำหรับà¸à¸²à¸£à¸•ิดตามนี้ text_unallowed_characters: ตัวอัà¸à¸©à¸£à¸•้องห้าม text_comma_separated: ใส่ได้หลายค่า โดยคั่นด้วยลูà¸à¸™à¹‰à¸³( ,). text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages text_issue_added: "ปัà¸à¸«à¸² %{id} ถูà¸à¹à¸ˆà¹‰à¸‡à¹‚ดย %{author}." text_issue_updated: "ปัà¸à¸«à¸² %{id} ถูà¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¹‚ดย %{author}." text_wiki_destroy_confirmation: คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¸«à¸£à¸·à¸­à¸§à¹ˆà¸²à¸•้องà¸à¸²à¸£à¸¥à¸š wiki นี้พร้อมทั้งเนี้อหา? text_issue_category_destroy_question: "บางปัà¸à¸«à¸² (%{count}) อยู่ในประเภทนี้. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร ?" text_issue_category_destroy_assignments: ลบประเภทนี้ text_issue_category_reassign_to: ระบุปัà¸à¸«à¸²à¹ƒà¸™à¸›à¸£à¸°à¹€à¸ à¸—นี้ text_user_mail_option: "ในโครงà¸à¸²à¸£à¸—ี่ไม่ได้เลือà¸, คุณจะได้รับà¸à¸²à¸£à¹à¸ˆà¹‰à¸‡à¹€à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸´à¹ˆà¸‡à¸—ี่คุณเà¸à¹‰à¸²à¸”ูหรือมีส่วนเà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง (เช่นปัà¸à¸«à¸²à¸—ี่คุณà¹à¸ˆà¹‰à¸‡à¹„ว้หรือได้รับมอบหมาย)." text_no_configuration_data: "บทบาท, à¸à¸²à¸£à¸•ิดตาม, สถานะปัà¸à¸«à¸² à¹à¸¥à¸°à¸¥à¸³à¸”ับงานยังไม่ได้ถูà¸à¸•ั้งค่า.\nขอà¹à¸™à¸°à¸™à¸³à¹ƒà¸«à¹‰à¹‚หลดค่าเริ่มต้น. คุณสามารถà¹à¸à¹‰à¹„ขค่าได้หลังจาà¸à¹‚หลดà¹à¸¥à¹‰à¸§." text_load_default_configuration: โหลดค่าเริ่มต้น text_status_changed_by_changeset: "ประยุà¸à¸•์ใช้ในà¸à¸¥à¸¸à¹ˆà¸¡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ %{value}." text_issues_destroy_confirmation: 'คุณà¹à¸™à¹ˆà¹ƒà¸ˆà¹„หมว่าต้องà¸à¸²à¸£à¸¥à¸šà¸›à¸±à¸à¸«à¸²(ทั้งหลาย)ที่เลือà¸à¹„ว้?' text_select_project_modules: 'เลือà¸à¸ªà¹ˆà¸§à¸™à¸›à¸£à¸°à¸à¸­à¸šà¸—ี่ต้องà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¹‚ครงà¸à¸²à¸£à¸™à¸µà¹‰:' text_default_administrator_account_changed: ค่าเริ่มต้นของบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¸šà¸£à¸´à¸«à¸²à¸£à¸ˆà¸±à¸”à¸à¸²à¸£à¸–ูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ text_file_repository_writable: ที่เà¸à¹‡à¸šà¸•้นฉบับสามารถเขียนได้ text_minimagick_available: MiniMagick มีให้ใช้ (เป็นตัวเลือà¸) text_destroy_time_entries_question: "%{hours} ชั่วโมงที่ถูà¸à¹à¸ˆà¹‰à¸‡à¹ƒà¸™à¸›à¸±à¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹‚ดนลบ. คุณต้องà¸à¸²à¸£à¸—ำอย่างไร?" text_destroy_time_entries: ลบเวลาที่รายงานไว้ text_assign_time_entries_to_project: ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹‰ text_reassign_time_entries: 'ระบุเวลาที่ใช้ในโครงà¸à¸²à¸£à¸™à¸µà¹ˆà¸­à¸µà¸à¸„รั้ง:' default_role_manager: ผู้จัดà¸à¸²à¸£ default_role_developer: ผู้พัฒนา default_role_reporter: ผู้รายงาน default_tracker_bug: บั๊ภdefault_tracker_feature: ลัà¸à¸©à¸“ะเด่น default_tracker_support: สนับสนุน default_issue_status_new: เà¸à¸´à¸”ขึ้น default_issue_status_in_progress: In Progress default_issue_status_resolved: ดำเนินà¸à¸²à¸£ default_issue_status_feedback: รอคำตอบ default_issue_status_closed: จบ default_issue_status_rejected: ยà¸à¹€à¸¥à¸´à¸ default_doc_category_user: เอà¸à¸ªà¸²à¸£à¸‚องผู้ใช้ default_doc_category_tech: เอà¸à¸ªà¸²à¸£à¸—างเทคนิค default_priority_low: ต่ำ default_priority_normal: ปà¸à¸•ิ default_priority_high: สูง default_priority_urgent: เร่งด่วน default_priority_immediate: ด่วนมาภdefault_activity_design: ออà¸à¹à¸šà¸š default_activity_development: พัฒนา enumeration_issue_priorities: ความสำคัà¸à¸‚องปัà¸à¸«à¸² enumeration_doc_categories: ประเภทเอà¸à¸ªà¸²à¸£ enumeration_activities: à¸à¸´à¸ˆà¸à¸£à¸£à¸¡ (ใช้ในà¸à¸²à¸£à¸•ิดตามเวลา) label_and_its_subprojects: "%{value} and its subprojects" mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" text_user_wrote: "%{value} wrote:" text_user_wrote_in: "%{value} wrote (%{link}):" label_duplicated_by: duplicated by setting_enabled_scm: Enabled SCM text_enumeration_category_reassign_to: 'Reassign them to this value:' text_enumeration_destroy_question: "%{count} objects are assigned to this value." label_incoming_emails: Incoming emails label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers button_quote: Quote setting_sequential_project_identifiers: Generate sequential project identifiers notice_unable_delete_version: Unable to delete version label_renamed: renamed label_copied: copied setting_plain_text_mail: plain text only (no HTML) permission_view_files: View files permission_edit_issues: Edit issues permission_edit_own_time_entries: Edit own time logs permission_manage_public_queries: Manage public queries permission_add_issues: Add issues permission_log_time: Log spent time permission_view_changesets: View changesets permission_view_time_entries: View spent time permission_manage_versions: Manage versions permission_manage_wiki: Manage wiki permission_manage_categories: Manage issue categories permission_protect_wiki_pages: Protect wiki pages permission_comment_news: Comment news permission_delete_messages: Delete messages permission_select_project_modules: Select project modules permission_edit_wiki_pages: Edit wiki pages permission_add_issue_watchers: Add watchers permission_view_gantt: View gantt chart permission_manage_issue_relations: Manage issue relations permission_delete_wiki_pages: Delete wiki pages permission_manage_boards: Manage boards permission_delete_wiki_pages_attachments: Delete attachments permission_view_wiki_edits: View wiki history permission_add_messages: Post messages permission_view_messages: View messages permission_manage_files: Manage files permission_edit_issue_notes: Edit notes permission_manage_news: Manage news permission_view_calendar: View calendrier permission_manage_members: Manage members permission_edit_messages: Edit messages permission_delete_issues: Delete issues permission_view_issue_watchers: View watchers list permission_manage_repository: Manage repository permission_commit_access: Commit access permission_browse_repository: Browse repository permission_view_documents: View documents permission_edit_project: Edit project permission_add_issue_notes: Add notes permission_save_queries: Save queries permission_view_wiki_pages: View wiki permission_rename_wiki_pages: Rename wiki pages permission_edit_time_entries: Edit time logs permission_edit_own_issue_notes: Edit own notes setting_gravatar_enabled: Use Gravatar user icons label_example: Example text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." permission_edit_own_messages: Edit own messages permission_delete_own_messages: Delete own messages label_user_activity: "%{value}'s activity" label_updated_time_by: "Updated by %{author} %{age} ago" text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' setting_diff_max_lines_displayed: Max number of diff lines displayed text_plugin_assets_writable: Plugin assets directory writable warning_attachments_not_saved: "%{count} file(s) could not be saved." button_create_and_continue: Create and add another text_custom_field_possible_values_info: 'One line for each value' label_display: Display field_editable: Editable setting_repository_log_display_limit: Maximum number of revisions displayed on file log setting_file_max_size_displayed: Max size of text files displayed inline field_watcher: Watcher field_content: Content label_descending: Descending label_sort: Sort label_ascending: Ascending label_date_from_to: From %{start} to %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do? text_wiki_page_reassign_children: Reassign child pages to this parent page text_wiki_page_nullify_children: Keep child pages as root pages text_wiki_page_destroy_children: Delete child pages and all their descendants setting_password_min_length: Minimum password length field_group_by: Group results by mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" label_wiki_content_added: Wiki page added mail_subject_wiki_content_added: "'%{id}' wiki page has been added" mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}. label_wiki_content_updated: Wiki page updated mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}. permission_add_project: Create project setting_new_project_user_role_id: Role given to a non-admin user who creates a project label_view_all_revisions: View all revisions label_tag: Tag label_branch: Branch error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). text_journal_changed: "%{label} changed from %{old} to %{new}" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" label_group_plural: Groups label_group: Group label_group_new: New group label_time_entry_plural: Spent time text_journal_added: "%{label} %{value} added" field_active: Active enumeration_system_activity: System Activity permission_delete_issue_watchers: Delete watchers version_status_closed: closed version_status_locked: locked version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened label_user_anonymous: Anonymous button_move_and_follow: Move and follow setting_default_projects_modules: Default enabled modules for new projects setting_gravatar_default: Default Gravatar image field_sharing: Sharing label_version_sharing_hierarchy: With project hierarchy label_version_sharing_system: With all projects label_version_sharing_descendants: With subprojects label_version_sharing_tree: With project tree label_version_sharing_none: Not shared error_can_not_archive_project: This project can not be archived button_copy_and_follow: Copy and follow label_copy_source: Source setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_status: Use the issue status error_issue_done_ratios_not_updated: Issue done ratios not updated. error_workflow_copy_target: Please select target tracker(s) and role(s) setting_issue_done_ratio_issue_field: Use the issue field label_copy_same_as_target: Same as target label_copy_target: Target notice_issue_done_ratios_updated: Issue done ratios updated. error_workflow_copy_source: Please select a source tracker or role label_update_issue_done_ratios: Update issue done ratios setting_start_of_week: Start calendars on permission_view_issues: View Issues label_display_used_statuses_only: Only display statuses that are used by this tracker label_revision_id: Revision %{value} label_api_access_key: API access key label_api_access_key_created_on: API access key created %{value} ago label_feeds_access_key: Atom access key notice_api_access_key_reseted: Your API access key was reset. setting_rest_api_enabled: Enable REST web service label_missing_api_access_key: Missing an API access key label_missing_feeds_access_key: Missing a Atom access key button_show: Show text_line_separated: Multiple values allowed (one line for each value). setting_mail_handler_body_delimiters: Truncate emails after one of these lines permission_add_subprojects: Create subprojects label_subproject_new: New subproject text_own_membership_delete_confirmation: |- You are about to remove some or all of your permissions and may no longer be able to edit this project after that. Are you sure you want to continue? label_close_versions: Close completed versions label_board_sticky: Sticky label_board_locked: Locked permission_export_wiki_pages: Export wiki pages setting_cache_formatted_text: Cache formatted text permission_manage_project_activities: Manage project activities error_unable_delete_issue_status: Unable to delete issue status (%{value}) label_profile: Profile permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy error_can_not_delete_custom_field: Unable to delete custom field error_unable_to_connect: Unable to connect (%{value}) error_can_not_remove_role: This role is in use and can not be deleted. error_can_not_delete_tracker_html: This tracker contains issues and cannot be deleted.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Failed to save member(s): %{errors}." text_zoom_out: Zoom out text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. field_time_entries: Log time project_module_gantt: Gantt project_module_calendar: Calendar button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" field_text: Text field setting_default_notification_option: Default notification option label_user_mail_option_only_my_events: Only for things I watch or I'm involved in label_user_mail_option_none: No events field_member_of_group: Assignee's group field_assigned_to_role: Assignee's role notice_not_authorized_archived_project: The project you're trying to access has been archived. label_principal_search: "Search for user or group:" label_user_search: "Search for user:" field_visible: Visible setting_commit_logtime_activity_id: Activity for logged time text_time_logged_by_changeset: Applied in changeset %{value}. setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. label_my_queries: My custom queries text_journal_changed_no_detail: "%{label} updated" label_news_comment_added: Comment added to a news button_expand_all: Expand all button_collapse_all: Collapse all label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author label_bulk_edit_selected_time_entries: Bulk edit selected time entries text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)? label_role_anonymous: Anonymous label_role_non_member: Non member label_issue_note_added: Note added label_issue_status_updated: Status updated label_issue_priority_updated: Priority updated label_issues_visibility_own: Issues created by or assigned to the user field_issues_visibility: Issues visibility label_issues_visibility_all: All issues permission_set_own_issues_private: Set own issues public or private field_is_private: Private permission_set_issues_private: Set issues public or private label_issues_visibility_public: All non private issues text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). field_commit_logs_encoding: Commit messages encoding field_scm_path_encoding: Path encoding text_scm_path_encoding_note: "Default: UTF-8" field_path_to_repository: Path to repository field_root_directory: Root directory field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo) text_scm_command: Command text_scm_command_version: Version label_git_report_last_commit: Report last commit for files and directories notice_issue_successful_create: Issue %{id} created. label_between: between setting_issue_group_assignment: Allow issue assignment to groups label_diff: diff text_git_repository_note: Repository is bare and local (e.g. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sort direction description_project_scope: Search scope description_filter: Filter description_user_mail_notification: Mail notification settings description_message_content: Message content description_available_columns: Available Columns description_issue_category_reassign: Choose issue category description_search: Searchfield description_notes: Notes description_choose_project: Projects description_query_sort_criteria_attribute: Sort attribute description_wiki_subpages_reassign: Choose new parent page description_selected_columns: Selected Columns label_parent_revision: Parent label_child_revision: Child error_scm_annotate_big_text_file: The entry cannot be annotated, as it exceeds the maximum text file size. setting_default_issue_start_date_to_creation_date: Use current date as start date for new issues button_edit_section: Edit this section setting_repositories_encodings: Attachments and repositories encodings description_all_columns: All Columns button_export: Export label_export_options: "%{export_format} export options" error_attachment_too_big: This file cannot be uploaded because it exceeds the maximum allowed file size (%{max_size}) notice_failed_to_save_time_entries: "Failed to save %{count} time entrie(s) on %{total} selected: %{ids}." label_x_issues: zero: 0 ปัà¸à¸«à¸² one: 1 ปัà¸à¸«à¸² other: "%{count} ปัà¸à¸«à¸²" label_repository_new: New repository field_repository_is_default: Main repository label_copy_attachments: Copy attachments label_item_position: "%{position}/%{count}" label_completed_versions: Completed versions text_project_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_multiple: Multiple values setting_commit_cross_project_ref: Allow issues of all the other projects to be referenced and fixed text_issue_conflict_resolution_add_notes: Add my notes and discard my other changes text_issue_conflict_resolution_overwrite: Apply my changes anyway (previous notes will be kept but some changes may be overwritten) notice_issue_update_conflict: The issue has been updated by an other user while you were editing it. text_issue_conflict_resolution_cancel: Discard all my changes and redisplay %{link} permission_manage_related_issues: Manage related issues field_auth_source_ldap_filter: LDAP filter label_search_for_watchers: Search for watchers to add notice_account_deleted: Your account has been permanently deleted. setting_unsubscribe: Allow users to delete their own account button_delete_my_account: Delete my account text_account_destroy_confirmation: |- Are you sure you want to proceed? Your account will be permanently deleted, with no way to reactivate it. error_session_expired: Your session has expired. Please login again. text_session_expiration_settings: "Warning: changing these settings may expire the current sessions including yours." setting_session_lifetime: Session maximum lifetime setting_session_timeout: Session inactivity timeout label_session_expiration: Session expiration permission_close_project: Close / reopen the project button_close: Close button_reopen: Reopen project_status_active: active project_status_closed: closed project_status_archived: archived text_project_closed: This project is closed and read-only. notice_user_successful_create: User %{id} created. field_core_fields: Standard fields field_timeout: Timeout (in seconds) setting_thumbnails_enabled: Display attachment thumbnails setting_thumbnails_size: Thumbnails size (in pixels) label_status_transitions: Status transitions label_fields_permissions: Fields permissions label_readonly: Read-only label_required: Required text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.
    Once saved, the identifier cannot be changed. field_board_parent: Parent forum label_attribute_of_project: Project's %{name} label_attribute_of_author: Author's %{name} label_attribute_of_assigned_to: Assignee's %{name} label_attribute_of_fixed_version: Target version's %{name} label_copy_subtasks: Copy subtasks label_copied_to: copied to label_copied_from: copied from label_any_issues_in_project: any issues in project label_any_issues_not_in_project: any issues not in project field_private_notes: Private notes permission_view_private_notes: View private notes permission_set_notes_private: Set notes as private label_no_issues_in_project: no issues in project label_any: ทั้งหมด label_last_n_weeks: last %{count} weeks setting_cross_project_subtasks: Allow cross-project subtasks label_cross_project_descendants: With subprojects label_cross_project_tree: With project tree label_cross_project_hierarchy: With project hierarchy label_cross_project_system: With all projects button_hide: Hide setting_non_working_week_days: Non-working days label_in_the_next_days: in the next label_in_the_past_days: in the past label_attribute_of_user: User's %{name} text_turning_multiple_off: If you disable multiple values, multiple values will be removed in order to preserve only one value per item. label_attribute_of_issue: Issue's %{name} permission_add_documents: Add documents permission_edit_documents: Edit documents permission_delete_documents: Delete documents label_gantt_progress_line: Progress line setting_jsonp_enabled: Enable JSONP support field_inherit_members: Inherit members field_closed_on: Closed field_generate_password: Generate password setting_default_projects_tracker_ids: Default trackers for new projects label_total_time: จำนวนรวม text_scm_config: You can configure your SCM commands in config/configuration.yml. Please restart the application after editing it. text_scm_command_not_available: SCM command is not available. Please check settings on the administration panel. setting_emails_header: Email header notice_account_not_activated_yet: You haven't activated your account yet. If you want to receive a new activation email, please click this link. notice_account_locked: Your account is locked. label_hidden: Hidden label_visibility_private: to me only label_visibility_roles: to these roles only label_visibility_public: to any users field_must_change_passwd: Must change password at next logon notice_new_password_must_be_different: The new password must be different from the current password setting_mail_handler_excluded_filenames: Exclude attachments by name text_convert_available: ImageMagick convert available (optional) label_link: Link label_only: only label_drop_down_list: drop-down list label_checkboxes: checkboxes label_link_values_to: Link values to URL setting_force_default_language_for_anonymous: Force default language for anonymous users setting_force_default_language_for_loggedin: Force default language for logged-in users label_custom_field_select_type: Select the type of object to which the custom field is to be attached label_issue_assigned_to_updated: Assignee updated label_check_for_updates: Check for updates label_latest_compatible_version: Latest compatible version label_unknown_plugin: Unknown plugin label_radio_buttons: radio buttons label_group_anonymous: Anonymous users label_group_non_member: Non member users label_add_projects: Add projects field_default_status: Default status text_subversion_repository_note: 'Examples: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Users visibility label_users_visibility_all: All active users label_users_visibility_members_of_visible_projects: Members of visible projects label_edit_attachments: Edit attached files setting_link_copied_issue: Link issues on copy label_link_copied_issue: Link copied issue label_ask: Ask label_search_attachments_yes: Search attachment filenames and descriptions label_search_attachments_no: Do not search attachments label_search_attachments_only: Search attachments only label_search_open_issues_only: Open issues only field_address: อีเมล์ setting_max_additional_emails: Maximum number of additional email addresses label_email_address_plural: Emails label_email_address_add: Add email address label_enable_notifications: Enable notifications label_disable_notifications: Disable notifications setting_search_results_per_page: Search results per page label_blank_value: blank permission_copy_issues: Copy issues error_password_expired: Your password has expired or the administrator requires you to change it. field_time_entries_visibility: Time logs visibility setting_password_max_age: Require password change after label_parent_task_attributes: Parent tasks attributes label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks label_time_entries_visibility_all: All time entries label_time_entries_visibility_own: Time entries created by the user label_member_management: Member management label_member_management_all_roles: All roles label_member_management_selected_roles_only: Only these roles label_password_required: Confirm your password to continue label_total_spent_time: Overall spent time notice_import_finished: "%{count} items have been imported" notice_import_finished_with_errors: "%{count} out of %{total} items could not be imported" error_invalid_file_encoding: The file is not a valid %{encoding} encoded file error_invalid_csv_file_or_settings: The file is not a CSV file or does not match the settings below (%{value}) error_can_not_read_import_file: An error occurred while reading the file to import permission_import_issues: Import issues label_import_issues: Import issues label_select_file_to_import: Select the file to import label_fields_separator: Field separator label_fields_wrapper: Field wrapper label_encoding: Encoding label_comma_char: Comma label_semi_colon_char: Semicolon label_quote_char: Quote label_double_quote_char: Double quote label_fields_mapping: Fields mapping label_file_content_preview: File content preview label_create_missing_values: Create missing values button_import: Import field_total_estimated_hours: Total estimated time label_api: API label_total_plural: Totals label_assigned_issues: Assigned issues label_field_format_enumeration: Key/value list label_f_hour_short: '%{value} h' field_default_version: Default version error_attachment_extension_not_allowed: Attachment extension %{extension} is not allowed setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API key setting_lost_password: ลืมรหัสผ่าน mail_subject_security_notification: Security notification mail_body_security_notification_change: ! '%{field} was changed.' mail_body_security_notification_change_to: ! '%{field} was changed to %{value}.' mail_body_security_notification_add: ! '%{field} %{value} was added.' mail_body_security_notification_remove: ! '%{field} %{value} was removed.' mail_body_security_notification_notify_enabled: Email address %{value} now receives notifications. mail_body_security_notification_notify_disabled: Email address %{value} no longer receives notifications. mail_body_settings_updated: ! 'The following settings were changed:' field_remote_ip: IP address label_wiki_page_new: New wiki page label_relations: Relations button_filter: Filter mail_body_password_updated: Your password has been changed. label_no_preview: No preview available error_no_tracker_allowed_for_new_issue_in_project: The project doesn't have any trackers for which you can create an issue label_tracker_all: All trackers label_new_project_issue_tab_enabled: Display the "New issue" tab setting_new_item_menu_tab: Project menu tab for creating new objects label_new_object_tab_enabled: Display the "+" drop-down error_no_projects_with_tracker_allowed_for_new_issue: There are no projects with trackers for which you can create an issue field_textarea_font: Font used for text areas label_font_default: Default font label_font_monospace: Monospaced font label_font_proportional: Proportional font setting_timespan_format: Time span format label_table_of_contents: Table of contents setting_commit_logs_formatting: Apply text formatting to commit messages setting_mail_handler_enable_regex: Enable regular expressions error_move_of_child_not_possible: 'Subtask %{child} could not be moved to the new project: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Spent time cannot be reassigned to an issue that is about to be deleted setting_timelog_required_fields: Required fields for time logs label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Only for things I watch or I am assigned to label_user_mail_option_only_owner: Only for things I watch or I am the owner of warning_fields_cleared_on_bulk_edit: Changes will result in the automatic deletion of values from one or more fields on the selected objects field_updated_by: Updated by field_last_updated_by: Last updated by field_full_width_layout: Full width layout label_last_notes: Last notes field_digest: Checksum field_default_assigned_to: Default assignee setting_show_custom_fields_on_registration: Show custom fields on registration permission_view_news: View news label_no_preview_alternative_html: No preview available. %{link} the file instead. label_no_preview_download: Download setting_close_duplicate_issues: Close duplicate issues automatically error_exceeds_maximum_hours_per_day: Cannot log more than %{max_hours} hours on the same day (%{logged_hours} hours have already been logged) setting_time_entry_list_defaults: Timelog list defaults setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user label_x_revisions: "%{count} revisions" error_can_not_delete_auth_source: This authentication mode is in use and cannot be deleted. button_actions: Actions mail_body_lost_password_validity: Please be aware that you may change the password only once using this link. text_login_required_html: When not requiring authentication, public projects and their contents are openly available on the network. You can edit the applicable permissions. label_login_required_yes: 'Yes' label_login_required_no: No, allow anonymous access to public projects text_project_is_public_non_member: Public projects and their contents are available to all logged-in users. text_project_is_public_anonymous: Public projects and their contents are openly available on the network. label_version_and_files: Versions (%{count}) and Files label_ldap: LDAP label_ldaps_verify_none: LDAPS (without certificate check) label_ldaps_verify_peer: LDAPS label_ldaps_warning: It is recommended to use an encrypted LDAPS connection with certificate check to prevent any manipulation during the authentication process. label_nothing_to_preview: Nothing to preview error_token_expired: This password recovery link has expired, please try again. error_spent_on_future_date: Cannot log time on a future date setting_timelog_accept_future_dates: Accept time logs on future dates label_delete_link_to_subtask: ลบความสัมพันธ์ error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users permission_log_time_for_other_users: Log spent time for other users label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/tr.yml000066400000000000000000002226271500112024600172060ustar00rootroot00000000000000# Turkish translations for Ruby on Rails # by Ozgun Ataman (ozataman@gmail.com) # by Burak Yigit Kaya (ben@byk.im) # by Mert Salih Kaplan (mail@mertskaplan.com) # by Ömer Taha Öztop (omertahaoztop@gmail.com) tr: direction: ltr date: formats: default: "%d.%m.%Y" short: "%e %b" long: "%e %B %Y, %A" only_day: "%e" day_names: [Pazar, Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi] abbr_day_names: [Pzr, Pzt, Sal, Çrş, Prş, Cum, Cts] month_names: [~, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık] abbr_month_names: [~, Oca, Şub, Mar, Nis, May, Haz, Tem, Ağu, Eyl, Eki, Kas, Ara] order: - :day - :month - :year time: formats: default: "%a %d.%b.%y %H:%M" short: "%e %B, %H:%M" long: "%e %B %Y, %A, %H:%M" time: "%H:%M" am: "öğleden önce" pm: "öğleden sonra" datetime: distance_in_words: half_a_minute: 'yarım dakika' less_than_x_seconds: zero: '1 saniyeden az' one: '1 saniyeden az' other: '%{count} saniyeden az' x_seconds: one: '1 saniye' other: '%{count} saniye' less_than_x_minutes: zero: '1 dakikadan az' one: '1 dakikadan az' other: '%{count} dakikadan az' x_minutes: one: '1 dakika' other: '%{count} dakika' about_x_hours: one: 'yaklaşık 1 saat' other: 'yaklaşık %{count} saat' x_hours: one: "1 saat" other: "%{count} saat" x_days: one: '1 gün' other: '%{count} gün' about_x_months: one: 'yaklaşık 1 ay' other: 'yaklaşık %{count} ay' x_months: one: '1 ay' other: '%{count} ay' about_x_years: one: 'yaklaşık 1 yıl' other: 'yaklaşık %{count} yıl' over_x_years: one: '1 yıldan fazla' other: '%{count} yıldan fazla' almost_x_years: one: "neredeyse 1 Yıl" other: "neredeyse %{count} yıl" number: format: precision: 2 separator: ',' delimiter: '.' currency: format: unit: 'TRY' format: '%n%u' separator: ',' delimiter: '.' precision: 2 percentage: format: delimiter: '.' precision: format: delimiter: '.' human: format: delimiter: '.' precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Byte" kb: "KB" mb: "MB" gb: "GB" tb: "TB" support: array: sentence_connector: "ve" skip_last_comma: true activerecord: errors: template: header: one: "%{model} girişi kaydedilemedi: 1 hata." other: "%{model} girişi kadedilemedi: %{count} hata." body: "Lütfen aşağıdaki hataları düzeltiniz:" messages: inclusion: "kabul edilen bir kelime değil" exclusion: "kullanılamaz" invalid: "geçersiz" confirmation: "teyidi uyuşmamakta" accepted: "kabul edilmeli" empty: "doldurulmalı" blank: "doldurulmalı" too_long: "çok uzun (en fazla %{count} karakter)" too_short: "çok kısa (en az %{count} karakter)" wrong_length: "yanlış uzunlukta (tam olarak %{count} karakter olmalı)" taken: "hali hazırda kullanılmakta" not_a_number: "geçerli bir sayı değil" greater_than: "%{count} sayısından büyük olmalı" greater_than_or_equal_to: "%{count} sayısına eşit veya büyük olmalı" equal_to: "tam olarak %{count} olmalı" less_than: "%{count} sayısından küçük olmalı" less_than_or_equal_to: "%{count} sayısına eşit veya küçük olmalı" odd: "tek olmalı" even: "çift olmalı" greater_than_start_date: "başlangıç tarihinden büyük olmalı" not_same_project: "aynı projeye ait değil" circular_dependency: "Bu ilişki döngüsel bağımlılık meydana getirecektir" cant_link_an_issue_with_a_descendant: "Bir iş, alt işlerinden birine bağlanamaz" earlier_than_minimum_start_date: "önceki sorunlardan dolayı %{date} tarihinden önce olamaz" not_a_regexp: "geçerli bir düzenli ifade (REGEX) değil" open_issue_with_closed_parent: "açık bir sorun, kapalı bir ana göreve eklenemez" must_contain_uppercase: "büyük harf içermelidir (A-Z)" must_contain_lowercase: "küçük harf içermelidir (a-z)" must_contain_digits: "sayı içermelidir (0-9)" must_contain_special_chars: "özel karakterler içermelidir (!, $, %, ...)" domain_not_allowed: "izin verilmeyen bir alan adı içeriyor (%{domain})" too_simple: "is too simple" models: actionview_instancetag_blank_option: Lütfen Seçin general_text_No: 'Hayır' general_text_Yes: 'Evet' general_text_no: 'hayır' general_text_yes: 'evet' general_lang_name: 'Turkish (Türkçe)' general_csv_separator: ',' general_csv_encoding: ISO-8859-9 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Hesap başarıyla güncelleştirildi. notice_account_invalid_credentials: Geçersiz kullanıcı ya da parola notice_account_password_updated: Parola başarıyla güncellendi. notice_account_wrong_password: Yanlış parola notice_account_register_done: Hesap başarıyla oluşturuldu. Hesabınızı etkinleştirmek için, size gönderilen e-postadaki bağlantıya tıklayın. notice_can_t_change_password: Bu hesap harici bir denetim kaynağı kullanıyor. Parolayı değiştirmek mümkün değil. notice_account_lost_email_sent: Yeni parola seçme talimatlarını içeren e-postanız gönderildi. notice_account_activated: Hesabınız etkinleştirildi. Şimdi giriş yapabilirsiniz. notice_successful_create: Başarıyla oluşturuldu. notice_successful_update: Başarıyla güncellendi. notice_successful_delete: Başarıyla silindi. notice_successful_connection: Bağlantı başarılı. notice_file_not_found: Erişmek istediğiniz sayfa mevcut değil ya da kaldırılmış. notice_locking_conflict: Veri başka bir kullanıcı tarafından güncellendi. notice_not_authorized: Bu sayfaya erişme yetkiniz yok. notice_email_sent: "E-posta gönderildi %{value}" notice_email_error: "E-posta gönderilirken bir hata oluştu (%{value})" notice_feeds_access_key_reseted: Atom erişim anahtarınız sıfırlandı. notice_failed_to_save_issues: "Seçilen %{total} öğenin %{count}'ini kaydetme başarısız oldu: %{ids}." notice_account_pending: "Hesabınız oluşturuldu ve yönetici onayı bekliyor." notice_default_data_loaded: Varasayılan konfigürasyon başarılıyla yüklendi. error_can_t_load_default_data: "Varsayılan konfigürasyon yüklenemedi: %{value}" error_scm_not_found: "Depoda, giriş ya da değişiklik yok." error_scm_command_failed: "Depoya erişmeye çalışırken bir hata meydana geldi: %{value}" error_scm_annotate: "Giriş mevcut değil veya izah edilemedi." error_issue_not_found_in_project: 'İş bilgisi bulunamadı veya bu projeye ait değil' mail_subject_lost_password: "Parolanız %{value}" mail_body_lost_password: 'Parolanızı değiştirmek için, aşağıdaki bağlantıya tıklayın:' mail_subject_register: "%{value} hesap aktivasyonu" mail_body_register: 'Hesabınızı etkinleştirmek için, aşağıdaki bağlantıya tıklayın:' mail_body_account_information_external: "Hesabınızı %{value} giriş yapmak için kullanabilirsiniz." mail_body_account_information: Hesap bilgileriniz mail_subject_account_activation_request: "%{value} hesabı etkinleştirme isteği" mail_body_account_activation_request: "Yeni bir kullanıcı (%{value}) kaydedildi. Hesap onaylanmayı bekliyor:" field_name: İsim field_description: Açıklama field_summary: Özet field_is_required: Gerekli field_firstname: Ad field_lastname: Soyad field_mail: E-Posta field_filename: Dosya field_filesize: Boyut field_downloads: İndirilenler field_author: Oluşturan field_created_on: Oluşturulma field_updated_on: Güncellenme field_field_format: Biçim field_is_for_all: Tüm projeler için field_possible_values: Kullanılabilir değerler field_regexp: Düzenli ifadeler field_min_length: En az uzunluk field_max_length: En çok uzunluk field_value: Değer field_category: Kategori field_title: Başlık field_project: Proje field_issue: İş field_status: Durum field_notes: Notlar field_is_closed: İş kapatıldı field_is_default: Varsayılan Değer field_tracker: İş tipi field_subject: Konu field_due_date: Bitiş Tarihi field_assigned_to: Atanan field_priority: Öncelik field_fixed_version: Hedef Sürüm field_user: Kullanıcı field_role: Rol field_homepage: Anasayfa field_is_public: Genel field_parent: 'Üst proje: ' field_is_in_roadmap: Yol haritasında gösterilen işler field_login: Giriş field_mail_notification: E-posta uyarıları field_admin: Yönetici field_last_login_on: Son Bağlantı field_language: Dil field_effective_date: Tarih field_password: Parola field_new_password: Yeni Parola field_password_confirmation: Parola Doğrulama field_version: Sürüm field_type: Tip field_host: Host field_port: Port field_account: Hesap field_base_dn: Temel DN field_attr_login: Giriş Niteliği field_attr_firstname: Ad Niteliği field_attr_lastname: Soyad Niteliği field_attr_mail: E-Posta Niteliği field_onthefly: Anında kullanıcı oluşturma field_start_date: Başlangıç Tarihi field_done_ratio: Tamamlanma yüzdesi field_auth_source: Kimlik Denetim Modu field_hide_mail: E-posta adresimi gizle field_comments: Yorumlar field_url: URL field_start_page: Başlangıç Sayfası field_subproject: Alt Proje field_hours: Saat field_activity: Faaliyet field_spent_on: Tarih field_identifier: Tanımlayıcı field_is_filter: süzgeç olarak kullanılmış field_issue_to: İlişkili iş field_delay: Gecikme field_assignable: Bu roldeki kullanıcılara iş atanabilir field_redirect_existing_links: Mevcut bağlantıları yönlendir field_estimated_hours: Kalan zaman field_column_names: Sütunlar field_time_zone: Saat dilimi field_searchable: Aranabilir field_default_value: Varsayılan değer field_comments_sorting: Yorumları göster setting_app_title: Uygulama Bağlığı setting_welcome_text: Hoşgeldin Mesajı setting_default_language: Varsayılan Dil setting_login_required: Kimlik denetimi gerekli mi setting_self_registration: Otomatik kayıt setting_attachment_max_size: Maksimum ek boyutu setting_issues_export_limit: İşlerin dışa aktarılma sınırı setting_mail_from: Gönderici e-posta adresi setting_host_name: Host adı setting_text_formatting: Metin biçimi setting_wiki_compression: Wiki geçmişini sıkıştır setting_feeds_limit: Haber yayını içerik limiti setting_default_projects_public: Yeni projeler varsayılan olarak herkese açık setting_autofetch_changesets: Otomatik gönderi al setting_sys_api_enabled: Depo yönetimi için WS'yi etkinleştir setting_commit_ref_keywords: Başvuru Kelimeleri setting_commit_fix_keywords: Sabitleme kelimeleri setting_autologin: Otomatik Giriş setting_date_format: Tarih Formati setting_time_format: Zaman Formatı setting_cross_project_issue_relations: Çapraz-Proje iş ilişkilendirmesine izin ver setting_issue_list_default_columns: İş listesinde gösterilen varsayılan sütunlar setting_emails_footer: E-posta dip not setting_protocol: Protokol setting_per_page_options: Sayfada başına öğe sayısı setting_user_format: Kullanıcı gösterim biçimi setting_activity_days_default: Proje faaliyetlerinde gösterilen gün sayısı setting_display_subprojects_issues: Varsayılan olarak ana projenin iş listesinde alt proje işlerini göster project_module_issue_tracking: İş Takibi project_module_time_tracking: Zaman Takibi project_module_news: Haberler project_module_documents: Belgeler project_module_files: Dosyalar project_module_wiki: Wiki project_module_repository: Depo project_module_boards: Tartışma Alanı label_user: Kullanıcı label_user_plural: Kullanıcılar label_user_new: Yeni Kullanıcı label_project: Proje label_project_new: Yeni proje label_project_plural: Projeler label_x_projects: zero: hiç proje yok one: 1 proje other: "%{count} proje" label_project_all: Tüm Projeler label_project_latest: En son projeler label_issue: İş label_issue_new: Yeni İş label_issue_plural: İşler label_issue_view_all: Tüm işleri izle label_issues_by: "%{value} tarafından gönderilmiş işler" label_issue_added: İş eklendi label_issue_updated: İş güncellendi label_document: Belge label_document_new: Yeni belge label_document_plural: Belgeler label_document_added: Belge eklendi label_role: Rol label_role_plural: Roller label_role_new: Yeni rol label_role_and_permissions: Roller ve izinler label_member: Üye label_member_new: Yeni üye label_member_plural: Üyeler label_tracker: İş tipi label_tracker_plural: İş tipleri label_tracker_new: Yeni iş tipi label_workflow: İş akışı label_issue_status: İş durumu label_issue_status_plural: İş durumları label_issue_status_new: Yeni durum label_issue_category: İş kategorisi label_issue_category_plural: İş kategorileri label_issue_category_new: Yeni kategori label_custom_field: Özel alan label_custom_field_plural: Özel alanlar label_custom_field_new: Yeni özel alan label_enumerations: Numaralandırmalar label_enumeration_new: Yeni değer label_information: Bilgi label_information_plural: Bilgi label_register: Kayıt label_password_lost: Parolamı unuttum label_home: Anasayfa label_my_page: Kişisel Sayfam label_my_account: Hesabım label_my_projects: Projelerim label_administration: Yönetim label_login: Giriş label_logout: Çıkış label_help: Yardım label_reported_issues: Rapor edilmiş işler label_assigned_to_me_issues: Bana atanmış işler label_registered_on: Kayıt tarihi label_activity: Faaliyet label_new: Yeni label_logged_as: "Kullanıcı :" label_environment: Çevre label_authentication: Kimlik Denetimi label_auth_source: Kimlik Denetim Modu label_auth_source_new: Yeni Denetim Modu label_auth_source_plural: Denetim Modları label_subproject_plural: Alt Projeler label_min_max_length: Min - Maks uzunluk label_list: Liste label_date: Tarih label_integer: Tam sayı label_float: Ondalıklı sayı label_boolean: "Evet/Hayır" label_string: Metin label_text: Uzun Metin label_attribute: Nitelik label_attribute_plural: Nitelikler label_no_data: Gösterilecek veri yok label_change_status: Değişim Durumu label_history: Geçmiş label_attachment: Dosya label_attachment_new: Yeni Dosya label_attachment_delete: Dosyayı Sil label_attachment_plural: Dosyalar label_file_added: Eklenen Dosyalar label_report: Rapor label_report_plural: Raporlar label_news: Haber label_news_new: Haber ekle label_news_plural: Haber label_news_latest: Son Haberler label_news_view_all: Tüm haberleri oku label_news_added: Haber eklendi label_settings: Ayarlar label_overview: Genel label_version: Sürüm label_version_new: Yeni sürüm label_version_plural: Sürümler label_confirmation: Doğrulamama label_export_to: "Diğer uygun kaynaklar:" label_read: "Oku..." label_public_projects: Genel Projeler label_open_issues: açık label_open_issues_plural: açık label_closed_issues: kapalı label_closed_issues_plural: kapalı label_x_open_issues_abbr: zero: hiç açık yok one: 1 açık other: "%{count} açık" label_x_closed_issues_abbr: zero: hiç kapalı yok one: 1 kapalı other: "%{count} kapalı" label_total: Toplam label_permissions: İzinler label_current_status: Mevcut Durum label_new_statuses_allowed: Yeni durumlara izin verildi label_all: Hepsi label_none: Hiçbiri label_nobody: Hiçkimse label_next: Sonraki label_previous: Önceki label_used_by: 'Kullanan: ' label_details: Ayrıntılar label_add_note: Not ekle label_calendar: Takvim label_months_from: ay öncesinden itibaren label_gantt: İş-Zaman Çizelgesi label_internal: Dahili label_last_changes: "Son %{count} değişiklik" label_change_view_all: Tüm Değişiklikleri göster label_comment: Yorum label_comment_plural: Yorumlar label_x_comments: zero: hiç yorum yok one: 1 yorum other: "%{count} yorum" label_comment_add: Yorum Ekle label_comment_added: Yorum Eklendi label_comment_delete: Yorumları sil label_query: Özel Sorgu label_query_plural: Özel Sorgular label_query_new: Yeni Sorgu label_filter_add: Süzgeç ekle label_filter_plural: Süzgeçler label_equals: Eşit label_not_equals: Eşit değil label_in_less_than: küçüktür label_in_more_than: büyüktür label_in: içinde label_today: bugün label_yesterday: Dün label_this_week: Bu hafta label_last_week: Geçen hafta label_last_n_days: "Son %{count} gün" label_this_month: Bu ay label_last_month: Geçen ay label_this_year: Bu yıl label_date_range: Tarih aralığı label_less_than_ago: günler öncesinden az label_more_than_ago: günler öncesinden fazla label_ago: gün önce label_contains: içeriyor label_not_contains: içermiyor label_day_plural: Günler label_repository: Depo label_repository_plural: Depolar label_revision: Değişiklik label_revision_plural: Değişiklikler label_associated_revisions: Birleştirilmiş değişiklikler label_added: eklendi label_modified: güncellendi label_deleted: silindi label_latest_revision: En son değişiklik label_latest_revision_plural: En son değişiklikler label_view_revisions: Değişiklikleri izle label_max_size: En büyük boyut label_roadmap: Yol Haritası label_roadmap_due_in: "%{value} içinde bitmeli" label_roadmap_overdue: "%{value} geç" label_roadmap_no_issues: Bu sürüm için iş yok label_search: Ara label_result_plural: Sonuçlar label_all_words: Tüm Kelimeler label_wiki: Wiki label_wiki_edit: Wiki düzenleme label_wiki_edit_plural: Wiki düzenlemeleri label_wiki_page: Wiki sayfası label_wiki_page_plural: Wiki sayfaları label_index_by_title: Başlığa göre diz label_index_by_date: Tarihe göre diz label_current_version: Güncel sürüm label_preview: Önizleme label_feed_plural: Beslemeler label_changes_details: Bütün değişikliklerin detayları label_issue_tracking: İş Takibi label_spent_time: Harcanan zaman label_f_hour: "%{value} saat" label_f_hour_plural: "%{value} saat" label_time_tracking: Zaman Takibi label_change_plural: Değişiklikler label_statistics: İstatistikler label_commits_per_month: Aylık commit label_commits_per_author: Oluşturan başına commit label_view_diff: Farkları izle label_diff_inline: satır içi label_diff_side_by_side: Yan yana label_options: Tercihler label_copy_workflow_from: İşakışı kopyala label_permissions_report: İzin raporu label_watched_issues: İzlenmiş işler label_related_issues: İlişkili işler label_applied_status: uygulanmış işler label_loading: Yükleniyor... label_relation_new: Yeni ilişki label_relation_delete: İlişkiyi sil label_relates_to: ilişkili label_duplicates: yinelenmiş label_blocks: Engeller label_blocked_by: Engelleyen label_precedes: önce gelir label_follows: sonra gelir label_stay_logged_in: Sürekli bağlı kal label_disabled: Devredışı label_show_completed_versions: Tamamlanmış sürümleri göster label_me: Ben label_board: Tartışma Alanı label_board_new: Yeni alan label_board_plural: Tartışma alanları label_topic_plural: Konular label_message_plural: Mesajlar label_message_last: Son mesaj label_message_new: Yeni mesaj label_message_posted: Mesaj eklendi label_reply_plural: Cevaplar label_send_information: Hesap bilgisini kullanıcıya gönder label_year: Yıl label_month: Ay label_week: Hafta label_date_from: Başlangıç label_date_to: Bitiş label_language_based: Kullanıcı dili bazlı label_sort_by: "%{value} göre sırala" label_send_test_email: Test e-postası gönder label_feeds_access_key_created_on: "Atom erişim anahtarı %{value} önce oluşturuldu" label_module_plural: Modüller label_added_time_by: "%{author} tarafından %{age} önce eklendi" label_updated_time: "%{value} önce güncellendi" label_jump_to_a_project: Projeye git... label_file_plural: Dosyalar label_changeset_plural: Değişiklik Listeleri label_default_columns: Varsayılan Sütunlar label_no_change_option: (Değişiklik yok) label_bulk_edit_selected_issues: Seçili işleri toplu olarak düzenle label_theme: Tema label_default: Varsayılan label_search_titles_only: Sadece başlıkları ara label_user_mail_option_all: "Tüm projelerimdeki herhangi bir olay için" label_user_mail_option_selected: "Sadece seçili projelerdeki herhangi bir olay için" label_user_mail_no_self_notified: "Kendi yaptığım değişikliklerden haberdar olmak istemiyorum" label_registration_activation_by_email: e-posta ile hesap etkinleştirme label_registration_manual_activation: Elle hesap etkinleştirme label_registration_automatic_activation: Otomatik hesap etkinleştirme label_display_per_page: "Sayfa başına: %{value}" label_age: Yaş label_change_properties: Özellikleri değiştir label_general: Genel label_scm: KY label_plugins: Eklentiler label_ldap_authentication: LDAP Denetimi label_downloads_abbr: D/L label_optional_description: İsteğe bağlı açıklama label_add_another_file: Bir dosya daha ekle label_preferences: Tercihler label_chronological_order: Tarih sırasına göre label_reverse_chronological_order: Ters tarih sırasına göre button_login: Giriş button_submit: Gönder button_save: Kaydet button_check_all: Hepsini işaretle button_uncheck_all: Tüm işaretleri kaldır button_delete: Sil button_create: Oluştur button_test: Sına button_edit: Düzenle button_add: Ekle button_change: Değiştir button_apply: Uygula button_clear: Temizle button_lock: Kilitle button_unlock: Kilidi aç button_download: İndir button_list: Listele button_view: Bak button_move: Taşı button_back: Geri button_cancel: İptal button_activate: Etkinleştir button_sort: Sırala button_log_time: Zaman kaydı button_rollback: Bu sürüme geri al button_watch: İzle button_unwatch: İzlemeyi iptal et button_reply: Cevapla button_archive: Arşivle button_unarchive: Arşivlemeyi kaldır button_reset: Sıfırla button_rename: Yeniden adlandır button_change_password: Parolayı değiştir button_copy: Kopyala button_annotate: Değişiklik geçmişine göre göster button_update: Güncelle button_configure: Yapılandır status_active: faal status_registered: kayıtlı status_locked: kilitli text_select_mail_notifications: Gönderilecek e-posta uyarısına göre hareketi seçin. text_regexp_info: örn. ^[A-Z0-9]+$ text_project_destroy_confirmation: Bu projeyi ve bağlantılı verileri silmek istediğinizden emin misiniz? text_subprojects_destroy_warning: "Ayrıca %{value} alt proje silinecek." text_workflow_edit: İşakışını düzenlemek için bir rol ve iş tipi seçin text_are_you_sure: Emin misiniz ? text_tip_issue_begin_day: Bugün başlayan görevler text_tip_issue_end_day: Bugün sona eren görevler text_tip_issue_begin_end_day: Bugün başlayan ve sona eren görevler text_caracters_maximum: "En çok %{count} karakter." text_caracters_minimum: "En az %{count} karakter uzunluğunda olmalı." text_length_between: "%{min} ve %{max} karakterleri arasındaki uzunluk." text_tracker_no_workflow: Bu iş tipi için işakışı tanımlanmamış text_unallowed_characters: Yasaklı karakterler text_comma_separated: Çoklu değer girilebilir(Virgül ile ayrılmış). text_issues_ref_in_commit_messages: Teslim mesajlarındaki işleri çözme ve başvuruda bulunma text_issue_added: "İş %{id}, %{author} tarafından rapor edildi." text_issue_updated: "İş %{id}, %{author} tarafından güncellendi." text_wiki_destroy_confirmation: bu wikiyi ve tüm içeriğini silmek istediğinizden emin misiniz? text_issue_category_destroy_question: "Bazı işler (%{count}) bu kategoriye atandı. Ne yapmak istersiniz?" text_issue_category_destroy_assignments: Kategori atamalarını kaldır text_issue_category_reassign_to: İşleri bu kategoriye tekrar ata text_user_mail_option: "Seçili olmayan projeler için, sadece dahil olduğunuz (oluşturan veya atanan) ya da izlediğiniz öğeler hakkında uyarılar alacaksınız." text_no_configuration_data: "Roller, iş tipleri, iş durumları ve işakışı henüz yapılandırılmadı.\nVarsayılan yapılandırılmanın yüklenmesi şiddetle tavsiye edilir. Bir kez yüklendiğinde yapılandırmayı değiştirebileceksiniz." text_load_default_configuration: Varsayılan yapılandırmayı yükle text_status_changed_by_changeset: "Değişiklik listesi %{value} içinde uygulandı." text_issues_destroy_confirmation: 'Seçili işleri silmek istediğinizden emin misiniz ?' text_select_project_modules: 'Bu proje için etkinleştirmek istediğiniz modülleri seçin:' text_default_administrator_account_changed: Varsayılan yönetici hesabı değişti text_file_repository_writable: Dosya deposu yazılabilir text_minimagick_available: MiniMagick Kullanılabilir (isteğe bağlı) text_destroy_time_entries_question: Silmek üzere olduğunuz işler üzerine %{hours} saat raporlandı.Ne yapmak istersiniz ? text_destroy_time_entries: Raporlanmış süreleri sil text_assign_time_entries_to_project: Raporlanmış süreleri projeye ata text_reassign_time_entries: 'Raporlanmış süreleri bu işe tekrar ata:' default_role_manager: Yönetici default_role_developer: Geliştirici default_role_reporter: Raporlayıcı default_tracker_bug: Hata default_tracker_feature: Özellik default_tracker_support: Destek default_issue_status_new: Yeni default_issue_status_in_progress: Yapılıyor default_issue_status_resolved: Çözüldü default_issue_status_feedback: Geribildirim default_issue_status_closed: "Kapatıldı" default_issue_status_rejected: Reddedildi default_doc_category_user: Kullanıcı Dökümantasyonu default_doc_category_tech: Teknik Dökümantasyon default_priority_low: Düşük default_priority_normal: Normal default_priority_high: Yüksek default_priority_urgent: Acil default_priority_immediate: Derhal default_activity_design: Tasarım default_activity_development: Geliştirme enumeration_issue_priorities: İş önceliği enumeration_doc_categories: Belge Kategorileri enumeration_activities: Faaliyetler (zaman takibi) button_quote: Alıntı setting_enabled_scm: KKY Açık label_incoming_emails: "Gelen e-postalar" label_generate_key: "Anahtar oluştur" setting_sequential_project_identifiers: "Sıralı proje tanımlayıcıları oluştur" field_parent_title: Üst sayfa text_email_delivery_not_configured: "E-posta gönderme yapılandırılmadı ve bildirimler devre dışı.\nconfig/configuration.yml içinden SMTP sunucusunu yapılandırın ve uygulamayı yeniden başlatın." text_enumeration_category_reassign_to: 'Hepsini şuna çevir:' label_issue_watchers: Takipçiler mail_body_reminder: "Size atanmış olan %{count} iş %{days} gün içerisinde bitirilmeli:" label_duplicated_by: yineleyen text_enumeration_destroy_question: "Bu nesneye %{count} değer bağlanmış." text_user_wrote: "%{value} demiş ki:" text_user_wrote_in: "%{value} demiş ki (%{link}):" setting_mail_handler_api_enabled: Gelen e-postalar için WS'yi aç label_and_its_subprojects: "%{value} ve alt projeleri" mail_subject_reminder: "%{count} iş bir kaç güne bitecek" setting_mail_handler_api_key: API anahtarı general_csv_decimal_separator: '.' notice_unable_delete_version: Sürüm silinemiyor label_renamed: yeniden adlandırılmış label_copied: kopyalanmış setting_plain_text_mail: sadece düz metin (HTML yok) permission_view_files: Dosyaları gösterme permission_edit_issues: İşleri düzenleme permission_edit_own_time_entries: Kendi zaman girişlerini düzenleme permission_manage_public_queries: Herkese açık sorguları yönetme permission_add_issues: İş ekleme permission_log_time: Harcanan zamanı kaydetme permission_view_changesets: Değişimleri gösterme(SVN, vs.) permission_view_time_entries: Harcanan zamanı gösterme permission_manage_versions: Sürümleri yönetme permission_manage_wiki: Wiki'yi yönetme permission_manage_categories: İş kategorilerini yönetme permission_protect_wiki_pages: Wiki sayfalarını korumaya alma permission_comment_news: Haberlere yorum yapma permission_delete_messages: Mesaj silme permission_select_project_modules: Proje modüllerini seçme permission_edit_wiki_pages: Wiki sayfalarını düzenleme permission_add_issue_watchers: Takipçi ekleme permission_view_gantt: İş-Zaman çizelgesi gösterme permission_manage_issue_relations: İşlerin biribiriyle bağlantılarını yönetme permission_delete_wiki_pages: Wiki sayfalarını silme permission_manage_boards: Panoları yönetme permission_delete_wiki_pages_attachments: Ekleri silme permission_view_wiki_edits: Wiki geçmişini gösterme permission_add_messages: Mesaj gönderme permission_view_messages: Mesajları gösterme permission_manage_files: Dosyaları yönetme permission_edit_issue_notes: Notları düzenleme permission_manage_news: Haberleri yönetme permission_view_calendar: Takvimleri gösterme permission_manage_members: Üyeleri yönetme permission_edit_messages: Mesajları düzenleme permission_delete_issues: İşleri silme permission_view_issue_watchers: Takipçi listesini gösterme permission_manage_repository: Depo yönetimi permission_commit_access: Gönderme erişimi permission_browse_repository: Depoya gözatma permission_view_documents: Belgeleri gösterme permission_edit_project: Projeyi düzenleme permission_add_issue_notes: Not ekleme permission_save_queries: Sorgu kaydetme permission_view_wiki_pages: Wiki gösterme permission_rename_wiki_pages: Wiki sayfasının adını değiştirme permission_edit_time_entries: Zaman kayıtlarını düzenleme permission_edit_own_issue_notes: Kendi notlarını düzenleme setting_gravatar_enabled: Kullanıcı resimleri için Gravatar kullan label_example: Örnek text_repository_usernames_mapping: "Redmine kullanıcı adlarını depo değişiklik kayıtlarındaki kullanıcı adlarıyla eşleştirin veya eşleştirmeleri güncelleyin.\nRedmine kullanıcı adları ile depo kullanıcı adları aynı olan kullanıcılar otomatik olarak eşlendirilecektir." permission_edit_own_messages: Kendi mesajlarını düzenleme permission_delete_own_messages: Kendi mesajlarını silme label_user_activity: "%{value} kullanıcısının faaliyetleri" label_updated_time_by: "%{author} tarafından %{age} önce güncellendi" text_diff_truncated: '... Bu fark tam olarak gösterilemiyor çünkü gösterim için ayarlanmış üst sınırı aşıyor.' setting_diff_max_lines_displayed: Gösterilebilecek maksimumu fark satırı text_plugin_assets_writable: Eklenti yardımcı dosya dizini yazılabilir warning_attachments_not_saved: "%{count} adet dosya kaydedilemedi." button_create_and_continue: Oluştur ve devam et text_custom_field_possible_values_info: 'Her değer için bir satır' label_display: Göster field_editable: Düzenlenebilir setting_repository_log_display_limit: Dosya kaydında gösterilecek maksimum değişim sayısı setting_file_max_size_displayed: Dahili olarak gösterilecek metin dosyaları için maksimum satır sayısı field_watcher: Takipçi field_content: İçerik label_descending: Azalan label_sort: Sırala label_ascending: Artan label_date_from_to: "%{start} - %{end} arası" label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Bu sayfanın %{descendants} adet alt sayfası var. Ne yapmak istersiniz? text_wiki_page_reassign_children: Alt sayfaları bu sayfanın altına bağla text_wiki_page_nullify_children: Alt sayfaları ana sayfa olarak sakla text_wiki_page_destroy_children: Alt sayfaları ve onların alt sayfalarını tamamen sil setting_password_min_length: Minimum parola uzunluğu field_group_by: Sonuçları grupla mail_subject_wiki_content_updated: "'%{id}' wiki sayfası güncellendi" label_wiki_content_added: Wiki sayfası eklendi mail_subject_wiki_content_added: "'%{id}' wiki sayfası eklendi" mail_body_wiki_content_added: "'%{id}' wiki sayfası, %{author} tarafından eklendi." label_wiki_content_updated: Wiki sayfası güncellendi mail_body_wiki_content_updated: "'%{id}' wiki sayfası, %{author} tarafından güncellendi." permission_add_project: Proje oluştur setting_new_project_user_role_id: Yönetici olmayan ancak proje yaratabilen kullanıcıya verilen rol label_view_all_revisions: Tüm değişiklikleri göster label_tag: Etiket label_branch: Kol error_no_tracker_in_project: Bu projeye bağlanmış bir iş tipi yok. Lütfen proje ayarlarını kontrol edin. error_no_default_issue_status: Varsayılan iş durumu tanımlanmamış. Lütfen ayarlarınızı kontrol edin ("Yönetim -> İş durumları" sayfasına gidin). label_group_plural: Gruplar label_group: Grup label_group_new: Yeni grup label_time_entry_plural: Harcanan zaman text_journal_changed: "%{label}: %{old} -> %{new}" text_journal_set_to: "%{label} %{value} yapıldı" text_journal_deleted: "%{label} silindi (%{old})" text_journal_added: "%{label} %{value} eklendi" field_active: Etkin enumeration_system_activity: Sistem Faaliyetleri permission_delete_issue_watchers: İzleyicileri sil version_status_closed: kapalı version_status_locked: kilitli version_status_open: açık error_can_not_reopen_issue_on_closed_version: Kapatılmış bir sürüme ait işler tekrar açılamaz label_user_anonymous: Anonim button_move_and_follow: Yerini değiştir ve takip et setting_default_projects_modules: Yeni projeler için varsayılan modüller setting_gravatar_default: Varsayılan Gravatar resmi field_sharing: Paylaşım label_version_sharing_hierarchy: Proje hiyerarşisi ile label_version_sharing_system: Tüm projeler ile label_version_sharing_descendants: Alt projeler ile label_version_sharing_tree: Proje ağacı ile label_version_sharing_none: Paylaşılmamış error_can_not_archive_project: Bu proje arşivlenemez button_copy_and_follow: Kopyala ve takip et label_copy_source: Kaynak setting_issue_done_ratio: İş tamamlanma oranını şununla hesapla setting_issue_done_ratio_issue_status: İş durumunu kullan error_issue_done_ratios_not_updated: İş tamamlanma oranları güncellenmedi. error_workflow_copy_target: Lütfen hedef iş tipi ve rolleri seçin setting_issue_done_ratio_issue_field: İşteki alanı kullan label_copy_same_as_target: Hedef ile aynı label_copy_target: Hedef notice_issue_done_ratios_updated: İş tamamlanma oranları güncellendi. error_workflow_copy_source: Lütfen kaynak iş tipi ve rolleri seçin label_update_issue_done_ratios: İş tamamlanma oranlarını güncelle setting_start_of_week: Takvimleri şundan başlat permission_view_issues: İşleri Göster label_display_used_statuses_only: Sadece bu iş tipi tarafından kullanılan durumları göster label_revision_id: Değişiklik %{value} label_api_access_key: API erişim anahtarı label_api_access_key_created_on: API erişim anahtarı %{value} önce oluşturuldu label_feeds_access_key: Atom erişim anahtarı notice_api_access_key_reseted: API erişim anahtarınız sıfırlandı. setting_rest_api_enabled: REST web servisini etkinleştir label_missing_api_access_key: Bir API erişim anahtarı eksik label_missing_feeds_access_key: Bir Atom erişim anahtarı eksik button_show: Göster text_line_separated: Çoklu değer girilebilir (her satıra bir değer). setting_mail_handler_body_delimiters: Şu satırların birinden sonra e-postayı sonlandır permission_add_subprojects: Alt proje yaratma label_subproject_new: Yeni alt proje text_own_membership_delete_confirmation: "Projeyi daha sonra düzenleyememenize sebep olacak bazı yetkilerinizi kaldırmak üzeresiniz.\nDevam etmek istediğinize emin misiniz?" label_close_versions: Tamamlanmış sürümleri kapat label_board_sticky: Yapışkan label_board_locked: Kilitli permission_export_wiki_pages: Wiki sayfalarını dışarı aktar setting_cache_formatted_text: Biçimlendirilmiş metni önbelleğe al permission_manage_project_activities: Proje faaliyetlerini yönetme error_unable_delete_issue_status: İş durumu silinemiyor (%{value}) label_profile: Profil permission_manage_subtasks: Alt işleri yönetme field_parent_issue: Üst iş label_subtask_plural: Alt işler label_project_copy_notifications: Proje kopyalaması esnasında bilgilendirme e-postaları gönder error_can_not_delete_custom_field: Özel alan silinemiyor error_unable_to_connect: Bağlanılamıyor (%{value}) error_can_not_remove_role: Bu rol kullanımda olduğundan silinemez. error_can_not_delete_tracker_html: Bu iş tipi içerisinde iş barındırdığından silinemiyor.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Üyeler kaydedilemiyor: %{errors}." text_zoom_out: Uzaklaş text_zoom_in: Yakınlaş notice_unable_delete_time_entry: Zaman kayıt girdisi silinemiyor. field_time_entries: Zaman Kayıtları project_module_gantt: İş-Zaman Çizelgesi project_module_calendar: Takvim button_edit_associated_wikipage: "İlişkilendirilmiş Wiki sayfasını düzenle: %{page_title}" field_text: Metin alanı setting_default_notification_option: Varsayılan bildirim seçeneği label_user_mail_option_only_my_events: Sadece takip ettiğim ya da içinde olduğum şeyler için label_user_mail_option_none: Hiç bir şey için field_member_of_group: Atananın grubu field_assigned_to_role: Atananın rolü notice_not_authorized_archived_project: Erişmeye çalıştığınız proje arşive kaldırılmış. label_principal_search: "Kullanıcı ya da grup ara:" label_user_search: "Kullanıcı ara:" field_visible: Görünür setting_emails_header: "E-Posta başlığı" setting_commit_logtime_activity_id: Kaydedilen zaman için faaliyet text_time_logged_by_changeset: Değişiklik uygulandı %{value}. setting_commit_logtime_enabled: Zaman kaydını etkinleştir notice_gantt_chart_truncated: Görüntülenebilir öğelerin sayısını aştığı için tablo kısaltıldı (%{max}) setting_gantt_items_limit: İş-Zaman çizelgesinde gösterilecek en fazla öğe sayısı field_warn_on_leaving_unsaved: Kaydedilmemiş metin bulunan bir sayfadan çıkarken beni uyar text_warn_on_leaving_unsaved: Bu sayfada terkettiğiniz takdirde kaybolacak kaydedilmemiş metinler var. label_my_queries: Özel sorgularım text_journal_changed_no_detail: "%{label} güncellendi" label_news_comment_added: Bir habere yorum eklendi button_expand_all: Tümünü genişlet button_collapse_all: Tümünü daralt label_additional_workflow_transitions_for_assignee: Kullanıcı atanan olduğu zaman tanınacak ek yetkiler label_additional_workflow_transitions_for_author: Kullanıcı oluşturan olduğu zaman tanınacak ek yetkiler label_bulk_edit_selected_time_entries: Seçilen zaman kayıtlarını toplu olarak düzenle text_time_entries_destroy_confirmation: Seçilen zaman kaydını/kayıtlarını silmek istediğinize emin misiniz? label_role_anonymous: Anonim label_role_non_member: Üye Değil label_issue_note_added: Not eklendi label_issue_status_updated: Durum güncellendi label_issue_priority_updated: Öncelik güncellendi label_issues_visibility_own: Kullanıcı tarafından oluşturulmuş ya da kullanıcıya atanmış sorunlar field_issues_visibility: İşlerin görünürlüğü label_issues_visibility_all: Tüm işler permission_set_own_issues_private: Kendi işlerini özel ya da genel olarak işaretle field_is_private: Özel permission_set_issues_private: İşleri özel ya da genel olarak işaretleme label_issues_visibility_public: Özel olmayan tüm işler text_issues_destroy_descendants_confirmation: "%{count} alt görev de silinecek." field_commit_logs_encoding: Değişiklik mesajı kodlaması(encoding) field_scm_path_encoding: Yol kodlaması(encoding) text_scm_path_encoding_note: "Varsayılan: UTF-8" field_path_to_repository: Depo yolu field_root_directory: Ana dizin field_cvs_module: Modül field_cvsroot: CVSROOT text_mercurial_repository_note: Yerel depo (ör. /hgrepo, c:\hgrepo) text_scm_command: Komut text_scm_command_version: Sürüm label_git_report_last_commit: Son gönderilen dosya ve dizinleri raporla notice_issue_successful_create: İş %{id} oluşturuldu. label_between: arasında setting_issue_group_assignment: Gruplara iş atanmasına izin ver label_diff: farklar text_git_repository_note: Depo yalın halde (bare) ve yerel sistemde bulunuyor. (örn. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Sıralama yönü description_project_scope: Arama kapsamı description_filter: Süzgeç description_user_mail_notification: E-posta bildirim ayarları description_message_content: Mesaj içeriği description_available_columns: Kullanılabilir Sütunlar description_issue_category_reassign: İş kategorisini seçin description_search: Arama alanı description_notes: Notlar description_choose_project: Projeler description_query_sort_criteria_attribute: Sıralama ölçütü description_wiki_subpages_reassign: Yeni üst sayfa seç description_selected_columns: Seçilmiş Sütunlar label_parent_revision: Üst label_child_revision: Alt error_scm_annotate_big_text_file: Girdi maksimum metin dosyası boyutundan büyük olduğu için ek açıklama girilemiyor. setting_default_issue_start_date_to_creation_date: Geçerli tarihi yeni işler için başlangıç tarihi olarak kullan button_edit_section: Bölümü düzenle setting_repositories_encodings: Eklerin ve depoların kodlamaları description_all_columns: Tüm sütunlar button_export: Dışarı aktar label_export_options: "%{export_format} dışa aktarım seçenekleri" error_attachment_too_big: İzin verilen maksimum dosya boyutunu (%{max_size}) aştığı için dosya yüklenemedi. notice_failed_to_save_time_entries: "Seçilen %{total} adet zaman girdisinden %{count} tanesi kaydedilemedi: %{ids}." label_x_issues: zero: 0 İş one: 1 İş other: "%{count} İşler" label_repository_new: Yeni depo field_repository_is_default: Ana depo label_copy_attachments: Ekleri kopyala label_item_position: "%{position}/%{count}" label_completed_versions: Tamamlanmış sürümler text_project_identifier_info: Yalnızca küçük harfler (a-z), sayılar, tire ve alt tire kullanılabilir.
    Kaydedilen tanımlayıcı daha sonra değiştirilemez. field_multiple: Çoklu değer setting_commit_cross_project_ref: Diğer bütün projelerdeki iş kayıtlarının kaynak gösterilmesine ve kayıtların kapatılabilmesine izin ver text_issue_conflict_resolution_add_notes: Notlarımı ekle ve diğer değişikliklerimi iptal et text_issue_conflict_resolution_overwrite: Değişikliklerimi yine de uygula (önceki notlar saklanacak ancak bazı değişikliklerin üzerine yazılabilir) notice_issue_update_conflict: Düzenleme yaparken başka bir kullanıcı tarafından sorun güncellendi. text_issue_conflict_resolution_cancel: Tüm değişiklikleri iptal et ve yeniden görüntüle %{link} permission_manage_related_issues: Benzer sorunları yönet field_auth_source_ldap_filter: LDAP süzgeçi label_search_for_watchers: Takipçi eklemek için ara notice_account_deleted: Hesabınız kalıcı olarak silinmiştir. setting_unsubscribe: Kullanıcıların kendi hesaplarını silebilmesine izin ver button_delete_my_account: Hesabımı sil text_account_destroy_confirmation: |- Devam etmek istediğinize emin misiniz? Hesabınız tekrar açılmamak üzere kalıcı olarak silinecektir. error_session_expired: Oturum zaman aşımına uğradı. Lütfen tekrar giriş yapın. text_session_expiration_settings: "Uyarı: Bu ayarları değiştirmek (sizinki de dahil) tüm oturumları sonlandırabilir." setting_session_lifetime: Maksimum oturum süresi setting_session_timeout: Maksimum hareketsizlik zaman aşımı label_session_expiration: Oturum süre sonu permission_close_project: Projeyi kapat/yeniden aç button_close: Kapat button_reopen: Yeniden aç project_status_active: etkin project_status_closed: kapalı project_status_archived: arşivlenmiş text_project_closed: Proje kapatıldı ve artık değiştirilemez. notice_user_successful_create: Kullanıcı %{id} yaratıldı. field_core_fields: Standart alanlar field_timeout: Zaman aşımı (saniye olarak) setting_thumbnails_enabled: Küçük resmi görüntüle setting_thumbnails_size: Küçük resim boyutu (pixel olarak) label_status_transitions: Durum değiştirme label_fields_permissions: Alan izinleri label_readonly: Salt okunur label_required: Zorunlu text_repository_identifier_info: Yalnızca küçük harfler (a-z), sayılar, tire ve alt tire kullanılabilir.
    Kaydedilen tanımlayıcı daha sonra deÄŸiÅŸtirilemez. field_board_parent: Üst forum label_attribute_of_project: Proje %{name} label_attribute_of_author: OluÅŸturan %{name} label_attribute_of_assigned_to: Atanan %{name} label_attribute_of_fixed_version: Hedef sürüm %{name} label_copy_subtasks: Alt görevi kopyala label_copied_to: Kopyalama hedefi label_copied_from: Kopyalanacak kaynak label_any_issues_in_project: projedeki herhangi bir sorun label_any_issues_not_in_project: projede olmayan herhangi bir sorun field_private_notes: Özel notlar permission_view_private_notes: Özel notları görüntüle permission_set_notes_private: Notları özel olarak iÅŸaretle label_no_issues_in_project: projede hiçbir sorun yok label_any: Hepsi label_last_n_weeks: son %{count} hafta setting_cross_project_subtasks: Projeler arası alt iÅŸlere izin ver label_cross_project_descendants: Alt projeler ile label_cross_project_tree: Proje aÄŸacı ile label_cross_project_hierarchy: Proje hiyerarÅŸisi ile label_cross_project_system: Tüm projeler ile button_hide: Gizle setting_non_working_week_days: Tatil günleri label_in_the_next_days: gelecekte label_in_the_past_days: geçmiÅŸte label_attribute_of_user: Kullanıcı %{name} text_turning_multiple_off: Çoklu deÄŸer seçimini devre dışı bırakırsanız, çoklu deÄŸer içeren alanlar, her alan için yalnızca tek deÄŸer girilecek ÅŸekilde düzenlenecektir. label_attribute_of_issue: Sorun %{name} permission_add_documents: Belgeleri ekle permission_edit_documents: Belgeleri düzenle permission_delete_documents: Belgeleri sil label_gantt_progress_line: İlerleme çizgisi setting_jsonp_enabled: JSONP desteÄŸini etkinleÅŸtir field_inherit_members: Devralan kullanıcılar field_closed_on: Kapanış tarihi field_generate_password: Parola oluÅŸtur setting_default_projects_tracker_ids: Yeni projeler için varsayılan iÅŸ tipi label_total_time: Toplam text_scm_config: config/configuration.yml içinden SCM komutlarını yapılandırabilirsiniz. Lütfen yapılandırmadan sonra uygulamayı tekrar baÅŸlatın. text_scm_command_not_available: SCM komutu kullanılamıyor. Lütfen yönetim panelinden ayarları kontrol edin. notice_account_not_activated_yet: Hesabınız henüz etkinleÅŸtirilmedi. Yeni bir hesap etkinleÅŸtirme e-postası istiyorsanız, lütfen buraya tıklayınız.. notice_account_locked: Hesabınız kilitlendi. label_hidden: Gizle label_visibility_private: yalnız benim için label_visibility_roles: yalnız bu roller için label_visibility_public: herhangi bir kullanıcı için field_must_change_passwd: Bir sonraki giriÅŸinizde ÅŸifrenizi deÄŸiÅŸtirmeniz gerekir. notice_new_password_must_be_different: Yeni parola geçerli paroladan farklı olmalı setting_mail_handler_excluded_filenames: Dosya adı belirtilen ekleri hariç tut text_convert_available: ImageMagick dönüştürmesi kullanılabilir (isteÄŸe baÄŸlı) label_link: BaÄŸlantı label_only: sadece label_drop_down_list: seçme listesi label_checkboxes: kutucuk label_link_values_to: DeÄŸerleri URLye baÄŸla setting_force_default_language_for_anonymous: Anonim kullanıcılar için zorunlu dil seç setting_force_default_language_for_loggedin: GiriÅŸ yapmış kullanıcılar için zorunlu dil seç label_custom_field_select_type: Özel alanın baÄŸlı olacağı obje tipini seçin label_issue_assigned_to_updated: Atanan güncellendi label_check_for_updates: Güncellemeleri kontrol et label_latest_compatible_version: Son uyumlul sürüm label_unknown_plugin: Bilinmeyen eklenti label_radio_buttons: radyo butonları label_group_anonymous: Anonim kullanıcı label_group_non_member: Üye olmayan kullanıcılar label_add_projects: Proje ekle field_default_status: Öntanımlı durum text_subversion_repository_note: 'Örnek: file:///, http://, https://, svn://, svn+[tünelmetodu]://' field_users_visibility: Kullanıcı görünürlüğü label_users_visibility_all: Tüm aktif kullanıcılar label_users_visibility_members_of_visible_projects: Görünür projelerin kullanıcıları label_edit_attachments: Ekli dosyaları düzenle setting_link_copied_issue: Kopyalamada iÅŸleri iliÅŸkilendir label_link_copied_issue: Kopyalanmış iÅŸ ile iliÅŸkilendir label_ask: Sor label_search_attachments_yes: Ekli dosyalarada ve açıklamalarında arama yap label_search_attachments_no: Ekler içinde arama yapma label_search_attachments_only: Sadece ekleri ara label_search_open_issues_only: Sadece açık iÅŸler field_address: E-Posta setting_max_additional_emails: Maksimum ek e-posta adresleri label_email_address_plural: E-postalar label_email_address_add: E-posta adresi ekle label_enable_notifications: Bildirimleri aç label_disable_notifications: Bildirimleri kapat setting_search_results_per_page: Sayfa başına arama sonucu sayısı label_blank_value: boÅŸ permission_copy_issues: İşleri kopyala error_password_expired: Parolanızın süresi dolmuÅŸ veya yönetici parolanızı deÄŸiÅŸtirmenizi talep etmiÅŸ. field_time_entries_visibility: Zaman kaydı görünürlüğü setting_password_max_age: Bu kadar zaman sonra ÅŸifre dÄŸiÅŸtirmeye zorla label_parent_task_attributes: Üst iÅŸ özellikleri label_parent_task_attributes_derived: Alt iÅŸlerden hesalanır label_parent_task_attributes_independent: Alt iÅŸlerden bağımsız label_time_entries_visibility_all: Tüm zaman kayıtları label_time_entries_visibility_own: Kullanıcı tarafında yaratılmış zaman kayıtları label_member_management: Üye yönetimi label_member_management_all_roles: Tüm roller label_member_management_selected_roles_only: Sadece bu roller label_password_required: Devam etmek için ÅŸifrenizi doÄŸrulayın label_total_spent_time: Toplam harcanan zaman notice_import_finished: "%{count} kayıt içeri aktarıldı" notice_import_finished_with_errors: "%{total} kayıttan %{count} tanesi aktarılamadı" error_invalid_file_encoding: Dosyanın karakter kodlaması geçerli bir %{encoding} kodlaması deÄŸil. error_invalid_csv_file_or_settings: Dosya CSV dosyası deÄŸil veya aÅŸağıdaki ayarlara uymuyor (%{value}) error_can_not_read_import_file: İçeri aktarılacak dosyayı okurken bir hata oluÅŸtu permission_import_issues: İşleri içeri aktarma label_import_issues: İşleri içeri aktar label_select_file_to_import: İçeri aktarılacak dosyayı seçiniz label_fields_separator: Alan ayracı label_fields_wrapper: Alan kılıfı label_encoding: Karakter kodlaması label_comma_char: Virgül label_semi_colon_char: Noktalı virgül label_quote_char: Tek tırnak iÅŸareti label_double_quote_char: Çift tırnak iÅŸareti label_fields_mapping: Alan eÅŸleÅŸtirme label_file_content_preview: Dosya içeriÄŸi önizlemesi label_create_missing_values: EÅŸleÅŸlmeyen alanları oluÅŸtur button_import: İçeri aktar field_total_estimated_hours: Toplam tahmini zaman label_api: API label_total_plural: Toplamlar label_assigned_issues: Atanan iÅŸler label_field_format_enumeration: Anahtar/DeÄŸer listesi label_f_hour_short: '%{value} s' field_default_version: Ön tanımlı versiyon error_attachment_extension_not_allowed: Dosya uzantısına izin verilmiyor; %{extension} setting_attachment_extensions_allowed: İzin verilen dosya uzantıları setting_attachment_extensions_denied: Yasaklı dosya uzantıları label_any_open_issues: herhangi bir açık iÅŸ label_no_open_issues: hiçbir açık iÅŸ label_default_values_for_new_users: Default values for new users error_ldap_bind_credentials: Invalid LDAP Account/Password setting_sys_api_key: API anahtarı setting_lost_password: Parolamı unuttum mail_subject_security_notification: Güvenlik bildirimi mail_body_security_notification_change: ! '%{field} deÄŸiÅŸtirildi.' mail_body_security_notification_change_to: ! '%{field}, %{value} olarak deÄŸiÅŸtirildi.' mail_body_security_notification_add: ! '%{field} %{value} eklendi.' mail_body_security_notification_remove: ! '%{field} %{value} kaldırıldı.' mail_body_security_notification_notify_enabled: E-posta adresi %{value} artık bildirimler alıyor. mail_body_security_notification_notify_disabled: E-posta adresi %{value} artık bildirim almıyor. mail_body_settings_updated: ! 'AÅŸağıdaki ayarlar deÄŸiÅŸtirildi:' field_remote_ip: IP Adres label_wiki_page_new: Yeni Wiki Sayfası label_relations: BaÄŸlantılar button_filter: Filtre mail_body_password_updated: Åžifreniz deÄŸiÅŸtirildi label_no_preview: Önizleme uygun deÄŸil error_no_tracker_allowed_for_new_issue_in_project: Projede iÅŸ oluÅŸturabileceÄŸiniz herhangi bir izleyici yok label_tracker_all: Bütün izleyiciler label_new_project_issue_tab_enabled: "'Yeni iÅŸ' sekmesini görüntüle" setting_new_item_menu_tab: Yeni nesne oluÅŸturmak için Proje Sekmesi label_new_object_tab_enabled: '"+" açılır menüyü görüntüle' error_no_projects_with_tracker_allowed_for_new_issue: İş oluÅŸturabileceÄŸiniz izleyicisi olan hiçbir proje yok field_textarea_font: Metin alanları için kullanılan yazı tipi label_font_default: Varsayılan yazı tipi label_font_monospace: Monospaced yazı tipi label_font_proportional: Orantılı yazı tipi setting_timespan_format: Zaman aralığı biçimi label_table_of_contents: Tablo içeriÄŸi setting_commit_logs_formatting: Commit mesajlarına metin biçimlendirme uygula setting_mail_handler_enable_regex: Düzenli ifadeleri (REGEX) etkinleÅŸtir error_move_of_child_not_possible: 'Alt görev %{child}, yeni projeye taşınamadı: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Harcanan zaman, silinmeye hazırlanan bir iÅŸe yeniden atanamaz setting_timelog_required_fields: Zaman giriÅŸi için gerekli alanlar label_attribute_of_object: '%{object_name}''in %{name}' label_user_mail_option_only_assigned: Sadece takipçi olduÄŸum ve bana atanan iÅŸler label_user_mail_option_only_owner: Sadece takipçi olduÄŸum ve oluÅŸturduÄŸum iÅŸler warning_fields_cleared_on_bulk_edit: DeÄŸiÅŸiklikler, seçilen nesnelerin bir veya daha fazla alanındaki deÄŸerlerin otomatik olarak silinmesine neden olacaktır. field_updated_by: Tarafından güncellendi field_last_updated_by: Son olarak tarafından güncellendi field_full_width_layout: Tam geniÅŸlik düzeni label_last_notes: Son notlar field_digest: SaÄŸlama field_default_assigned_to: Varsayılan Atanan setting_show_custom_fields_on_registration: Kayıt için özel alanları göster permission_view_news: Haberleri görme izni label_no_preview_alternative_html: Önizleme mevcut deÄŸil. Dosyayı indirin %{link}. label_no_preview_download: İndir setting_close_duplicate_issues: Kopya iÅŸleri otomatik kapat error_exceeds_maximum_hours_per_day: Aynı günde %{max_hours} saatten fazla kayıt yapamazsınız (%{logged_hours} saat zaten kaydedilmiÅŸ) setting_time_entry_list_defaults: Zaman kaydı listesi varsayılanları setting_timelog_accept_0_hours: 0 saatlik zaman kayıtlarını kabul et setting_timelog_max_hours_per_day: Günde ve kullanıcı başına kaydedilebilecek maksimum saatler label_x_revisions: "%{count} revizyon" error_can_not_delete_auth_source: Bu kimlik doÄŸrulama yöntemi kullanımda ve silinemez. button_actions: Aksiyonlar mail_body_lost_password_validity: Lütfen bu baÄŸlantıyı kullanarak ÅŸifreyi yalnızca bir kez deÄŸiÅŸtirebileceÄŸinizi unutmayın. text_login_required_html: Kimlik doÄŸrulama gerektirmeyen durumlarda, public projeler ve içerikleri aÄŸ üzerinde herkese açıktır. İlgili izinleri düzenleyebilirsiniz. label_login_required_yes: 'Evet' label_login_required_no: Hayır, public projelere anonim eriÅŸime izin ver text_project_is_public_non_member: Public projeler ve içerikleri giriÅŸ yapan tüm kullanıcılara açıktır. text_project_is_public_anonymous: Public projeler ve içerikleri aÄŸ üzerinde herkese açıktır. label_version_and_files: Sürümler (%{count}) ve Dosyalar label_ldap: LDAP label_ldaps_verify_none: LDAPS (sertifika kontrolü olmadan) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Kimlik doÄŸrulama iÅŸlemi sırasında herhangi bir manipülasyonu önlemek için sertifika kontrolü yapılmış ÅŸifreli bir LDAPS baÄŸlantısı kullanılması önerilir. label_nothing_to_preview: Önizlenecek bir ÅŸey yok error_token_expired: Bu ÅŸifre kurtarma baÄŸlantısı süresi doldu, lütfen tekrar deneyin. error_spent_on_future_date: İleri tarihli bir zaman kaydedilemez. setting_timelog_accept_future_dates: İleri tarihli zaman kayıtlarını kabul et label_delete_link_to_subtask: İliÅŸkiyi sil error_not_allowed_to_log_time_for_other_users: DiÄŸer kullanıcılar için zaman giriÅŸi yapma yetkiniz yok permission_log_time_for_other_users: DiÄŸer kullanıcılar için zaman giriÅŸi label_tomorrow: yarın label_next_week: sonraki hafta label_next_month: sonraki ay text_role_no_workflow: Bu rol için tanımlanmış bir iÅŸ akışı yok text_status_no_workflow: Bu durumu iÅŸ akışlarında kullanan bir izleyici yok setting_mail_handler_preferred_body_part: Çoklu parçalı (HTML) e-postaların tercih edilen bölümü setting_show_status_changes_in_mail_subject: İş e-posta bildirimlerinin konusunda durum deÄŸiÅŸikliklerini göster label_inherited_from_parent_project: Üst düzey projeden devralınmıştır label_inherited_from_group: Grup %{name} tarafından devralınmıştır label_trackers_description: İzleyicilerin açıklaması label_open_trackers_description: Tüm izleyicilerin açıklamasını görüntüle label_preferred_body_part_text: Metin label_preferred_body_part_html: HTML field_parent_issue_subject: Üst görev konusu permission_edit_own_issues: Kendi iÅŸlerini düzenleme text_select_apply_tracker: İzleyiciyi seç label_updated_issues: Güncellenen iÅŸler text_avatar_server_config_html: Geçerli avatar sunucusu %{url}. Yapılandırmasını config/configuration.yml içinde yapabilirsiniz. setting_gantt_months_limit: Gantt grafiÄŸinde görüntülenen maksimum ay sayısı permission_import_time_entries: Zaman giriÅŸlerini içe aktar label_import_notifications: Aktarım sırasında e-posta bildirimlerini gönder text_gs_available: ImageMagick PDF desteÄŸi mevcut (isteÄŸe baÄŸlı) field_recently_used_projects: Jump box'ta en son kullanılan projelerin sayısı label_optgroup_bookmarks: Yer iÅŸaretleri label_optgroup_recents: Son kullanılanlar button_project_bookmark: Yer iÅŸareti ekle button_project_bookmark_delete: Yer iÅŸaretini kaldır field_history_default_tab: İş geçmiÅŸinin varsayılan sekmesi label_issue_history_properties: Özellik deÄŸiÅŸiklikleri label_issue_history_notes: Notlar label_last_tab_visited: Son ziyaret edilen sekme field_unique_id: Benzersiz Kimlik text_no_subject: BaÅŸlıksız setting_password_required_char_classes: Åžifreler için gereken karakter sınıfları label_password_char_class_uppercase: büyük harfler label_password_char_class_lowercase: küçük harfler label_password_char_class_digits: numerik label_password_char_class_special_chars: özel karakterler text_characters_must_contain: İçermeli %{character_classes}. label_starts_with: ile baÅŸlar label_ends_with: ile biter label_issue_fixed_version_updated: Hedef sürüm güncellendi setting_project_list_defaults: Projeler listesi varsayılanları label_display_type: Sonuçları ÅŸu ÅŸekilde görüntüle label_display_type_list: Liste label_display_type_board: Pano label_my_bookmarks: Yer iÅŸaretlerim label_import_time_entries: Zaman giriÅŸlerini içe aktar field_toolbar_language_options: Kod vurgulama araç çubuÄŸu dilleri label_user_mail_notify_about_high_priority_issues_html: Ayrıca beni önceliÄŸi %{prio} veya daha yüksek olan sorunlar hakkında bilgilendir label_assign_to_me: Bana ata notice_issue_not_closable_by_open_tasks: Alt iÅŸe sahip olduÄŸu için bu iÅŸ kapatılamaz notice_issue_not_closable_by_blocking_issue: Açık bir iÅŸe sahip olduÄŸu için bu iÅŸ kapatılamaz notice_issue_not_reopenable_by_closed_parent_issue: Bu iÅŸ, üst iÅŸi kapalı olduÄŸu için yeniden açılamaz. error_bulk_download_size_too_big: Toplam dosya boyutu izin verilen maksimum boyutu (%{max_size}) aÅŸtığı için bu ekler toplu olarak indirilemez. setting_bulk_download_max_size: Toplu indirme için maksimum toplam boyut label_download_all_attachments: Bütün dosyaları indir error_attachments_too_many: Bu dosya, aynı anda eklenebilecek maksimum dosya sayısını (%{max_number_of_files}) aÅŸtığı için yüklenemiyor setting_email_domains_allowed: İzin verilen e-mail domainleri setting_email_domains_denied: İzin verilmeyen e-mail domainleri field_passwd_changed_on: Åžifre en son ne zaman deÄŸiÅŸtirildi label_relations_mapping: İliÅŸkiler eÅŸlemesi label_import_users: Kullanıcıları içe aktar label_days_to_html: "%{date} tarihine kadar %{days} gün" setting_twofa: İki faktörlü kimlik doÄŸrulama label_optional: opsiyonel label_required_lower: gerekli button_disable: Devre dışı bırak twofa__totp__name: Authenticator Uygulaması twofa__totp__text_pairing_info_html: Bu QR kodunu tarayın veya düz metin anahtarını bir TOTP uygulamasına (örneÄŸin Google Authenticator, Authy, Duo Mobile) girin ve iki faktörlü kimlik doÄŸrulamayı etkinleÅŸtirmek için aÅŸağıdaki alana kodu girin. twofa__totp__label_plain_text_key: Düz metin anahtarı twofa__totp__label_activate: Authenticator uygulamasını aktive et twofa_currently_active: 'Åžu anda etkin: %{twofa_scheme_name}' twofa_not_active: Etkin deÄŸil twofa_label_code: Kod twofa_hint_disabled_html: %{label} ayarı, tüm kullanıcıların iki faktörlü kimlik doÄŸrulama cihazlarını devre dışı bırakacak ve eÅŸlemesini kaldıracaktır. twofa_hint_required_html: %{label} ayarı, tüm kullanıcıların bir sonraki oturum açmalarında iki faktörlü kimlik doÄŸrulamayı kurmalarını gerektirecektir. twofa_label_setup: İki faktörlü kimlik doÄŸrulamayı etkinleÅŸtir twofa_label_deactivation_confirmation: İki faktörlü kimlik doÄŸrulamayı devre dışı bırak twofa_notice_select: 'Lütfen kullanmak istediÄŸiniz iki faktörlü kimlik doÄŸrulama ÅŸemasını seçiniz:' twofa_warning_require: Yönetici, iki faktörlü kimlik doÄŸrulamayı etkinleÅŸtirmenizi istiyor. twofa_activated: İki faktörlü kimlik doÄŸrulama baÅŸarıyla etkinleÅŸtirildi. Hesabınız için yedek kodlar oluÅŸturmanız önerilir. twofa_deactivated: İki faktörlü kimlik doÄŸrulama devre dışı bırakıldı. twofa_mail_body_security_notification_paired: "%{field} kullanılarak iki faktörlü kimlik doÄŸrulama baÅŸarıyla etkinleÅŸtirildi." twofa_mail_body_security_notification_unpaired: Hesabınız için iki faktörlü kimlik doÄŸrulama devre dışı bırakıldı. twofa_mail_body_backup_codes_generated: Yeni iki faktörlü kimlik doÄŸrulama yedek kodları oluÅŸturuldu. twofa_mail_body_backup_code_used: İki faktörlü kimlik doÄŸrulama yedek kodu kullanıldı. twofa_invalid_code: Kod geçersiz veya güncel deÄŸil. twofa_label_enter_otp: Lütfen iki faktörlü kimlik doÄŸrulama kodunuzu girin. twofa_too_many_tries: Çok fazla deneme. twofa_resend_code: Kodu yeniden gönder twofa_code_sent: Size bir kimlik doÄŸrulama kodu gönderildi. twofa_generate_backup_codes: Yedek kodlar oluÅŸtur twofa_text_generate_backup_codes_confirmation: Bu, mevcut tüm yedek kodları geçersiz kılacak ve yeni kodlar oluÅŸturacaktır. Devam etmek istiyor musunuz? twofa_notice_backup_codes_generated: Yedek kodlarınız oluÅŸturuldu. twofa_warning_backup_codes_generated_invalidated: Yeni yedek kodlar oluÅŸturuldu. %{time} tarihine ait mevcut kodlarınız artık geçersiz. twofa_label_backup_codes: İki faktörlü kimlik doÄŸrulama yedek kodları twofa_text_backup_codes_hint: İkinci faktöre eriÅŸiminiz olmadığında bu kodları tek kullanımlık ÅŸifre yerine kullanın. Her kod yalnızca bir kez kullanılabilir. Bunları yazdırmak ve güvenli bir yerde saklamak önerilir. twofa_text_backup_codes_created_at: Yedek kodlar oluÅŸturuldu %{datetime}. twofa_backup_codes_already_shown: Yedek kodlar tekrar gösterilemez, gerekiyorsa yeni yedek kodlar oluÅŸturun. error_can_not_execute_macro_html: %{name} makrosu çalıştırılırken hata oluÅŸtu (%{error}) error_macro_does_not_accept_block: Bu makro metin bloÄŸunu kabul etmez error_childpages_macro_no_argument: Argüman olmadan, bu makro yalnızca wiki sayfalarından çaÄŸrılabilir error_circular_inclusion: Döngüsel dahil etme tespit edildi error_page_not_found: Sayfa bulunamadı error_filename_required: Dosya ismi gerekli error_invalid_size_parameter: Geçersiz boyut parametresi error_attachment_not_found: Ek %{name} bulunamadı permission_delete_project: Projeyi silme field_twofa_scheme: İki Faktörlü DoÄŸrulama Åžeması text_user_destroy_confirmation: Bu kullanıcıyı silmek ve ona yapılan tüm referansları kaldırmak istediÄŸinizden emin misiniz? Bu iÅŸlem geri alınamaz. Genellikle bir kullanıcıyı silmek yerine onu kilitlemek daha iyi bir çözüm olabilir. Onaylamak için lütfen giriÅŸ bilgilerini (%{login}) aÅŸağıya girin. text_project_destroy_enter_identifier: Onaylamak için lütfen proje kimliÄŸini (%{identifier}) aÅŸağıya girin. button_add_subtask: Alt iÅŸ ekle notice_invalid_watcher: 'Geçersiz takipçi: Kullanıcı herhangi bir bildirim almayacak çünkü bu nesneyi görüntüleme yetkisi yok.' button_fetch_changesets: DeÄŸiÅŸiklikleri Getir permission_view_message_watchers: Mesaj izleyici listesini görüntüle permission_add_message_watchers: Mesaj izleyici ekle permission_delete_message_watchers: Mesaj izleyici sil label_message_watchers: İzleyiciler button_copy_link: BaÄŸlantıyı Kopyala error_invalid_authenticity_token: Formun doÄŸrulama 'token'ı geçersiz. error_query_statement_invalid: Sorguyu çalıştırırken bir hata oluÅŸtu ve kaydedildi. Lütfen bu hatayı Redmine yöneticinize bildirin. permission_view_wiki_page_watchers: Wiki takipçi lsitesini görüntele permission_add_wiki_page_watchers: Wikiye takipçi ekle permission_delete_wiki_page_watchers: Wiki takipçilerini sil label_wiki_page_watchers: Takipçiler label_attachment_description: Dosya açıklaması error_no_data_in_file: Dosya herhangi bir veri içermiyor field_twofa_required: İki Faktörlü DoÄŸrulama gerekiyor twofa_hint_optional_html: %{label} ayarı, kullanıcıların istedikleri zaman iki faktörlü kimlik doÄŸrulama kurmalarına izin verecektir, ancak gruplarından biri tarafından gerektirilmediÄŸi sürece. twofa_text_group_required: Bu ayar, küresel iki faktörlü kimlik doÄŸrulama ayarı 'isteÄŸe baÄŸlı' olarak ayarlandığında yürürlüktedir. Åžu anda tüm kullanıcılar için iki faktörlü kimlik doÄŸrulama gereklidir. twofa_text_group_disabled: Bu ayar, küresel iki faktörlü kimlik doÄŸrulama ayarı 'isteÄŸe baÄŸlı' olarak ayarlandığında yürürlüktedir. Åžu anda iki faktörlü kimlik doÄŸrulama devre dışıdır. field_default_issue_query: Varsayılan iÅŸ sorgusu label_default_queries: for_all_projects: Bütün projeler için for_current_project: Geçerli proje için for_all_users: Bütün projeler için for_this_user: Geçerli kullanıcı için text_allowed_queries_to_select: Yalnızca herkese açık (herhangi bir kullanıcıya) sorgular seçilebilir text_all_migrations_have_been_run: Tüm veritabanı geçiÅŸleri tamamlandı button_save_object: Kaydet %{object_name} button_edit_object: Düzenle %{object_name} button_delete_object: Sil %{object_name} text_setting_config_change: Davranışı config/configuration.yml dosyasında yapılandırabilirsiniz. Lütfen düzenledikten sonra uygulamayı yeniden baÅŸlatın. label_bulk_edit: Toplu Düzenle button_create_and_follow: OluÅŸtur ve izle label_subtask: Alt Görev label_default_query: Varsayılan Sorgu field_default_project_query: Varsayılan proje sorgusu label_required_administrators: yöneticiler için gereklidir twofa_hint_required_administrators_html: %{label ayarı isteÄŸe baÄŸlı gibi davranır, ancak yönetim haklarına sahip tüm kullanıcıların bir sonraki oturum açmalarında iki faktörlü kimlik doÄŸrulamayı ayarlamasını gerektirir. label_auto_watch_on: Otomatik izle label_auto_watch_on_issue_contributed_to: Katkıda bulunduÄŸum iÅŸler text_project_close_confirmation: Projeyi kapatıp '%{value}' projeyi salt-okunabilir yapmayı onaylıyor musunuz? text_project_reopen_confirmation: Projeyi '%{value}' yeniden açmayı onaylıyor musunuz? text_project_archive_confirmation: Projeyi '%{value}' arÅŸive almayı onaylıyor musunuz? mail_destroy_project_failed: Proje %{value} silinemez. mail_destroy_project_successful: Proje %{value} baÅŸarıyla silindi. mail_destroy_project_with_subprojects_successful: Proje %{value} ve alt projeleri baÅŸarıyla silindi. project_status_scheduled_for_deletion: Silme için planlandı text_projects_bulk_destroy_confirmation: İlgili veriler ve projelerin silinmesini onaylıyor musunuz? text_projects_bulk_destroy_head: | Olası alt projeler ve ilgili veriler de dahil olmak üzere aÅŸağıdaki projeleri kalıcı olarak silmek üzeresiniz. Lütfen aÅŸağıdaki bilgileri inceleyin ve gerçekten yapmak istediÄŸiniz ÅŸeyin bu olduÄŸunu onaylayın. Bu eylem geri alınamaz. text_projects_bulk_destroy_confirm: Onaylamak için lütfen aÅŸağıdaki kutuya "%{yes}" yazın. text_subprojects_bulk_destroy: 'Åžu alt projeleri içeriyor: %{value}' field_current_password: Güncel ÅŸifre sudo_mode_new_info_html: "Neler oluyor? Herhangi bir yönetimsel iÅŸlem yapmadan önce ÅŸifrenizi yeniden onaylamanız gerekiyor, bu, hesabınızın korunmasını saÄŸlar." label_edited: Düzenlendi label_time_by_author: "%{time} - %{author} tarafından" field_default_time_entry_activity: Varsayılan harcanan süre etkinliÄŸi field_is_member_of_group: Grup üyesi text_users_bulk_destroy_head: AÅŸağıdaki kullanıcıları silecek ve onlarla ilgili tüm referansları kaldıracaksınız. Bu iÅŸlem geri alınamaz. Genellikle kullanıcıları silmek yerine kilitlemek daha iyi bir çözümdür. text_users_bulk_destroy_confirm: Onaylamak için lütfen aÅŸağıya "%{yes}" yazın. permission_select_project_publicity: Proje durumunu public veya private olarak ayarla label_auto_watch_on_issue_created: OluÅŸturduÄŸum iÅŸler field_any_searchable: Herhangi bir aranabilir metin label_contains_any_of: ÅŸunlardan herhangi birini içerir button_apply_issues_filter: İşler filtresini uygula label_view_previous_annotation: Bu deÄŸiÅŸiklikten önceki açıklamayı görüntüle label_has_been: olmuÅŸtur label_has_never_been: hiç olmamıştır label_changed_from: ÅŸuradan deÄŸiÅŸtirildi label_issue_statuses_description: İş durumu açıklaması label_open_issue_statuses_description: Tüm iÅŸ durumu açıklamalarını görüntüle text_select_apply_issue_status: İş durumu seç field_name_or_email_or_login: İsim, e-posta veya giriÅŸ text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/uk.yml000066400000000000000000002732401500112024600171750ustar00rootroot00000000000000uk: direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b %d" long: "%B %d, %Y" day_names: [неділÑ, понеділок, вівторок, Ñереда, четвер, п'ÑтницÑ, Ñубота] abbr_day_names: [Ðд, Пн, Ð’Ñ‚, Ср, Чт, Пт, Сб] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, ÑічнÑ, лютого, березнÑ, квітнÑ, травнÑ, червнÑ, липнÑ, ÑерпнÑ, вереÑнÑ, жовтнÑ, лиÑтопада, груднÑ] abbr_month_names: [~, Ñіч., лют., бер., квіт., трав., чер., лип., Ñерп., вер., жовт., лиÑÑ‚., груд.] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%B %d, %Y %H:%M" am: "ранку" pm: "вечора" datetime: distance_in_words: half_a_minute: "менше хвилини" less_than_x_seconds: one: "менше ніж за 1 Ñекунду" few: "менш %{count} Ñекунд" many: "менш %{count} Ñекунд" other: "менше ніж за %{count} Ñекунди" x_seconds: one: "1 Ñекунда" few: "%{count} Ñекунди" many: "%{count} Ñекунд" other: "%{count} Ñекунд" less_than_x_minutes: one: "менше ніж за хвилину" few: "менше %{count} хвилин" many: "менше %{count} хвилин" other: "менш ніж за %{count} хвилин" x_minutes: one: "1 хвилина" few: "%{count} хвилини" many: "%{count} хвилин" other: "%{count} хвилини" about_x_hours: one: "близько 1 години" other: "близько %{count} годин" x_hours: one: "1 година" few: "%{count} години" many: "%{count} годин" other: "%{count} години" x_days: one: "1 день" few: "%{count} днÑ" many: "%{count} днів" other: "%{count} днів" about_x_months: one: "близько 1 міÑÑцÑ" other: "близько %{count} міÑÑців" x_months: one: "1 міÑÑць" few: "%{count} міÑÑцÑ" many: "%{count} міÑÑців" other: "%{count} міÑÑців" about_x_years: one: "близько 1 року" other: "близько %{count} років" over_x_years: one: "більше 1 року" other: "більше %{count} років" almost_x_years: one: "майже 1 рік" few: "майже %{count} року" many: "майже %{count} років" other: "майже %{count} років" number: format: separator: "." delimiter: " " precision: 3 human: format: precision: 3 delimiter: "" storage_units: format: "%n %u" units: kb: КБ tb: ТБ gb: ГБ byte: one: Байт other: Байтів mb: МБ # Used in array.to_sentence. support: array: sentence_connector: "Ñ–" skip_last_comma: false activerecord: errors: template: header: one: "1 помилка не дозволÑÑ” зберегти %{model}" other: "%{count} помилок не дозволÑють зберегти %{model}" messages: inclusion: "немає в ÑпиÑку" exclusion: "зарезервовано" invalid: "невірне" confirmation: "не збігаєтьÑÑ Ð· підтвердженнÑм" accepted: "необхідно прийнÑти" empty: "не може бути порожнім" blank: "не може бути незаповненим" too_long: "дуже довге" too_short: "дуже коротке" wrong_length: "не відповідає довжині" taken: "вже викориÑтовуєтьÑÑ" not_a_number: "не Ñ” чиÑлом" not_a_date: "Ñ” недійÑною датою" greater_than: "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути більшим ніж %{count}" greater_than_or_equal_to: "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути більшим або дорівнювати %{count}" equal_to: "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” дорівнювати %{count}" less_than: "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути меншим ніж %{count}" less_than_or_equal_to: "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути меншим або дорівнювати %{count}" odd: "може мати тільки непарне значеннÑ" even: "може мати тільки парне значеннÑ" greater_than_start_date: "повинна бути пізніша за дату початку" not_same_project: "не відноÑÑтьÑÑ Ð´Ð¾ одного проекту" circular_dependency: "Такий зв'Ñзок приведе до циклічної залежноÑті" cant_link_an_issue_with_a_descendant: "Задача не може бути зв'Ñзана зі Ñвоїми підзадачами" earlier_than_minimum_start_date: "не може бути раніше ніж %{date} через попередні задачі" not_a_regexp: "недопуÑтимий регулÑрний вираз" open_issue_with_closed_parent: "Відкрите Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð½Ðµ може бути приєднано до закритого батьківÑького завданнÑ" must_contain_uppercase: "must contain uppercase letters (A-Z)" must_contain_lowercase: "must contain lowercase letters (a-z)" must_contain_digits: "must contain digits (0-9)" must_contain_special_chars: "must contain special characters (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: Оберіть general_text_No: 'ÐÑ–' general_text_Yes: 'Так' general_text_no: 'ÐÑ–' general_text_yes: 'Так' general_lang_name: 'Ukrainian (УкраїнÑька)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: freesans general_pdf_monospaced_fontname: freemono general_first_day_of_week: '1' notice_account_updated: Обліковий Ð·Ð°Ð¿Ð¸Ñ ÑƒÑпішно оновлений. notice_account_invalid_credentials: Ðеправильне ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача або пароль. notice_account_password_updated: Пароль уÑпішно оновлений. notice_account_wrong_password: Ðевірний пароль. notice_account_register_done: Обліковий Ð·Ð°Ð¿Ð¸Ñ ÑƒÑпішно Ñтворений. Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— Вашого облікового запиÑу зайдіть по поÑиланню, Ñке відіÑлане вам електронною поштою. notice_can_t_change_password: Ð”Ð»Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ облікового запиÑу викориÑтовуєтьÑÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾ зовнішньої аутентифікації. Ðеможливо змінити пароль. notice_account_lost_email_sent: Вам відправлений лиÑÑ‚ з інÑтрукціÑми по вибору нового паролÑ. notice_account_activated: Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¾Ð²Ð°Ð½Ð¸Ð¹. Ви можете увійти. notice_successful_create: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑƒÑпішно завершене. notice_successful_update: ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑƒÑпішно завершене. notice_successful_delete: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÑƒÑпішно завершене. notice_successful_connection: ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑƒÑпішно вÑтановлене. notice_file_not_found: Сторінка, на Ñку ви намагаєтеÑÑ Ð·Ð°Ð¹Ñ‚Ð¸, не Ñ–Ñнує або видалена. notice_locking_conflict: Дані оновлено іншим кориÑтувачем. notice_not_authorized: У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” прав Ð´Ð»Ñ Ð²Ñ–Ð´Ð²Ñ–Ð´Ð¸Ð½Ð¸ даної Ñторінки. notice_email_sent: "Відправлено лиÑта %{value}" notice_email_error: "Під Ñ‡Ð°Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта відбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (%{value})" notice_feeds_access_key_reseted: Ваш ключ доÑтупу Atom було Ñкинуто. notice_failed_to_save_issues: "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ %{count} пункт(ів) з %{total} вибраних: %{ids}." notice_account_pending: "Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñтворено Ñ– він чекає на Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратором." mail_subject_lost_password: "Ваш %{value} пароль" mail_body_lost_password: 'Ð”Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ паролÑ, зайдіть за наÑтупним поÑиланнÑм:' mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу %{value}" mail_body_register: 'Ð”Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— облікового запиÑу, зайдіть за наÑтупним поÑиланнÑм:' mail_body_account_information_external: "Ви можете викориÑтовувати ваш %{value} обліковий Ð·Ð°Ð¿Ð¸Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ." mail_body_account_information: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Вашому обліковому запиÑу mail_subject_account_activation_request: "Запит на активацію облікового запиÑу %{value}" mail_body_account_activation_request: "Ðовий кориÑтувач (%{value}) зареєÑтрувавÑÑ. Його обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ‡ÐµÐºÐ°Ñ” на ваше підтвердженнÑ:" field_name: Ім'Ñ field_description: ÐžÐ¿Ð¸Ñ field_summary: Короткий Ð¾Ð¿Ð¸Ñ field_is_required: Ðеобхідно field_firstname: Ім'Ñ field_lastname: Прізвище field_mail: Ел. пошта field_filename: Файл field_filesize: Розмір field_downloads: Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ field_author: Ðвтор field_created_on: Створено field_updated_on: Оновлено field_field_format: Формат field_is_for_all: Ð”Ð»Ñ ÑƒÑÑ–Ñ… проектів field_possible_values: Можливі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ field_regexp: РегулÑрний вираз field_min_length: Мінімальна довжина field_max_length: МакÑимальна довжина field_value: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ field_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ field_title: Ðазва field_project: Проект field_issue: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ field_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ field_notes: Примітки field_is_closed: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¾ field_is_default: Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ field_tracker: Координатор field_subject: Тема field_due_date: Дата Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ field_assigned_to: Призначена до field_priority: Пріоритет field_fixed_version: ВерÑÑ–Ñ field_user: КориÑтувач field_role: Роль field_homepage: Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка field_is_public: Публічний field_parent: Підпроект field_is_in_roadmap: ПитаннÑ, що відображаютьÑÑ Ð² оперативному плані field_login: Вхід field_mail_notification: ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð·Ð° електронною поштою field_admin: ÐдмініÑтратор field_last_login_on: ОÑтаннє Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ field_language: Мова field_effective_date: Дата field_password: Пароль field_new_password: Ðовий пароль field_password_confirmation: ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ field_version: ВерÑÑ–Ñ field_type: Тип field_host: Машина field_port: Порт field_account: Обліковий Ð·Ð°Ð¿Ð¸Ñ field_base_dn: Базове відмітне ім'Ñ field_attr_login: Ðтрибут РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ field_attr_firstname: Ðтрибут Ім'Ñ field_attr_lastname: Ðтрибут Прізвище field_attr_mail: Ðтрибут Email field_onthefly: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача на льоту field_start_date: Початок field_done_ratio: "% зроблено" field_auth_source: Режим аутентифікації field_hide_mail: Приховувати мій email field_comments: Коментар field_url: URL field_start_page: Стартова Ñторінка field_subproject: Підпроект field_hours: Годин(и/а) field_activity: ДіÑльніÑть field_spent_on: Дата field_identifier: Ідентифікатор field_is_filter: ВикориÑтовуєтьÑÑ Ñк фільтр field_issue_to: Зв'Ñзані задачі field_delay: ВідклаÑти field_assignable: Задача може бути призначена цій ролі field_redirect_existing_links: Перенаправити Ñ–Ñнуючі поÑÐ¸Ð»Ð°Ð½Ð½Ñ field_estimated_hours: Оцінний Ñ‡Ð°Ñ field_column_names: Колонки field_time_zone: ЧаÑовий поÑÑ field_searchable: ВживаєтьÑÑ Ñƒ пошуку setting_app_title: Ðазва додатку setting_welcome_text: ТекÑÑ‚ Ð¿Ñ€Ð¸Ð²Ñ–Ñ‚Ð°Ð½Ð½Ñ setting_default_language: Стандартна мова setting_login_required: Ðеобхідна Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ setting_self_registration: Можлива Ñамо-реєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ setting_attachment_max_size: МакÑимальний размір Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ setting_issues_export_limit: ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾ задачах, що екÑпортуютьÑÑ setting_mail_from: email адреÑа Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– інформації setting_host_name: Им'Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð¸ setting_text_formatting: Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту setting_wiki_compression: СтиÑÐ½ÐµÐ½Ð½Ñ Ñ–Ñторії Wiki setting_feeds_limit: ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ñту подачі setting_autofetch_changesets: Ðвтоматично доÑтавати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ setting_sys_api_enabled: Дозволити WS Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ñ–Ñ”Ð¼ setting_commit_ref_keywords: Ключові Ñлова Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ setting_commit_fix_keywords: ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¸Ñ… Ñлів setting_autologin: Ðвтоматичний вхід setting_date_format: Формат дати setting_time_format: Формат чаÑу setting_cross_project_issue_relations: Дозволити міжпроектні відноÑини між питаннÑми setting_issue_list_default_columns: Колонки, що відображаютьÑÑ Ð·Ð° умовчаннÑм в ÑпиÑку питань setting_emails_footer: ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð´Ð¾ електронної пошти setting_protocol: Протокол label_user: КориÑтувач label_user_plural: КориÑтувачі label_user_new: Ðовий кориÑтувач label_project: Проект label_project_new: Ðовий проект label_project_plural: Проекти label_x_projects: zero: немає проектів one: 1 проект other: "%{count} проектів" label_project_all: УÑÑ– проекти label_project_latest: ОÑтанні проекти label_issue: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_new: Ðові Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issue_plural: ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ label_issue_view_all: ПроглÑнути вÑÑ– Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issues_by: "ÐŸÐ¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° %{value}" label_document: Документ label_document_new: Ðовий документ label_document_plural: Документи label_role: Роль label_role_plural: Ролі label_role_new: Ðова роль label_role_and_permissions: Ролі Ñ– права доÑтупу label_member: УчаÑник label_member_new: Ðовий учаÑник label_member_plural: УчаÑники label_tracker: Координатор label_tracker_plural: Координатори label_tracker_new: Ðовий Координатор label_workflow: ПоÑлідовніÑть дій label_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issue_status_plural: СтатуÑи питань label_issue_status_new: Ðовий ÑÑ‚Ð°Ñ‚ÑƒÑ label_issue_category: ÐšÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_issue_category_plural: Категорії питань label_issue_category_new: Ðова ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ label_custom_field: Поле клієнта label_custom_field_plural: ÐŸÐ¾Ð»Ñ ÐºÐ»Ñ–Ñ”Ð½Ñ‚Ð° label_custom_field_new: Ðове поле клієнта label_enumerations: Довідники label_enumeration_new: Ðове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ label_information: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ label_information_plural: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ label_register: ЗареєÑтруватиÑÑ label_password_lost: Забули пароль label_home: Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка label_my_page: ÐœÐ¾Ñ Ñторінка label_my_account: Мій обліковий Ð·Ð°Ð¿Ð¸Ñ label_my_projects: Мої проекти label_administration: ÐдмініÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ label_login: Увійти label_logout: Вийти label_help: Допомога label_reported_issues: Створені Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_assigned_to_me_issues: Мої Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_registered_on: ЗареєÑтрований(а) label_activity: ÐктивніÑть label_new: Ðовий label_logged_as: Увійшов Ñк label_environment: ÐžÑ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ label_authentication: ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ label_auth_source: Режим аутентифікації label_auth_source_new: Ðовий режим аутентифікації label_auth_source_plural: Режими аутентифікації label_subproject_plural: Підпроекти label_min_max_length: Мінімальна - макÑимальна довжина label_list: СпиÑок label_date: Дата label_integer: Цілий label_float: З плаваючою крапкою label_boolean: Логічний label_string: ТекÑÑ‚ label_text: Довгий текÑÑ‚ label_attribute: Ðтрибут label_attribute_plural: атрибути label_no_data: Ðемає даних Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ label_change_status: Змінити ÑÑ‚Ð°Ñ‚ÑƒÑ label_history: ІÑÑ‚Ð¾Ñ€Ñ–Ñ label_attachment: Файл label_attachment_new: Ðовий файл label_attachment_delete: Видалити файл label_attachment_plural: Файли label_report: Звіт label_report_plural: Звіти label_news: Ðовини label_news_new: Додати новину label_news_plural: Ðовини label_news_latest: ОÑтанні новини label_news_view_all: ПодивитиÑÑ Ð²ÑÑ– новини label_settings: ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ label_overview: ПереглÑд label_version: ВерÑÑ–Ñ label_version_new: Ðова верÑÑ–Ñ label_version_plural: ВерÑÑ–Ñ— label_confirmation: ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ label_export_to: ЕкÑпортувати в label_read: ЧитаннÑ... label_public_projects: Публічні проекти label_open_issues: відкрите label_open_issues_plural: відкриті label_closed_issues: закрите label_closed_issues_plural: закриті label_x_open_issues_abbr: zero: 0 відкрито one: 1 відкрита other: "%{count} відкрито" label_x_closed_issues_abbr: zero: 0 закрито one: 1 закрита other: "%{count} закрито" label_total: Ð’Ñього label_permissions: Права доÑтупу label_current_status: Поточний ÑÑ‚Ð°Ñ‚ÑƒÑ label_new_statuses_allowed: Дозволені нові ÑтатуÑи label_all: УÑÑ– label_none: Ðікому label_nobody: Ðіхто label_next: ÐаÑтупний label_previous: Попередній label_used_by: ВикориÑтовуєтьÑÑ label_details: Подробиці label_add_note: Додати Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ label_calendar: Календар label_months_from: міÑÑців(цÑ) з label_gantt: Діаграма Ганта label_internal: Внутрішній label_last_changes: "оÑтанні %{count} змін" label_change_view_all: ПроглÑнути вÑÑ– зміни label_comment: Коментувати label_comment_plural: Коментарі label_x_comments: zero: немає коментарів one: 1 коментар other: "%{count} коментарів" label_comment_add: Залишити коментар label_comment_added: Коментар додано label_comment_delete: Видалити коментарі label_query: Запит клієнта label_query_plural: Запити клієнтів label_query_new: Ðовий запит label_filter_add: Додати фільтр label_filter_plural: Фільтри label_equals: Ñ” label_not_equals: немає label_in_less_than: менш ніж label_in_more_than: більш ніж label_in: у label_today: Ñьогодні label_this_week: цього Ñ‚Ð¸Ð¶Ð½Ñ label_less_than_ago: менш ніж днів(Ñ) тому label_more_than_ago: більш ніж днів(Ñ) тому label_ago: днів(Ñ) тому label_contains: міÑтить label_not_contains: не міÑтить label_day_plural: днів(Ñ) label_repository: Репозиторій label_revision: ВерÑÑ–Ñ label_revision_plural: ВерÑій label_added: додано label_modified: змінене label_deleted: видалено label_latest_revision: ОÑÑ‚Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ label_latest_revision_plural: ОÑтанні верÑÑ–Ñ— label_view_revisions: ПроглÑнути верÑÑ–Ñ— label_max_size: МакÑимальний розмір label_roadmap: Оперативний план label_roadmap_due_in: "Строк %{value}" label_roadmap_overdue: "%{value} запізненнÑ" label_roadmap_no_issues: Ðемає питань Ð´Ð»Ñ Ð´Ð°Ð½Ð¾Ñ— верÑÑ–Ñ— label_search: Пошук label_result_plural: Результати label_all_words: Ð’ÑÑ– Ñлова label_wiki: Wiki label_wiki_edit: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Wiki label_wiki_edit_plural: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Wiki label_wiki_page: Сторінка Wiki label_wiki_page_plural: Сторінки Wiki label_index_by_title: Ð†Ð½Ð´ÐµÐºÑ Ð·Ð° назвою label_index_by_date: Ð†Ð½Ð´ÐµÐºÑ Ð·Ð° датою label_current_version: Поточна верÑÑ–Ñ label_preview: Попередній переглÑд label_feed_plural: ÐŸÐ¾Ð´Ð°Ð½Ð½Ñ label_changes_details: Подробиці по вÑÑ–Ñ… змінах label_issue_tracking: ÐšÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ†Ñ–Ñ Ð¿Ð¸Ñ‚Ð°Ð½ÑŒ label_spent_time: Витрачений Ñ‡Ð°Ñ label_f_hour: "%{value} година" label_f_hour_plural: "%{value} годин(и)" label_time_tracking: Облік чаÑу label_change_plural: Зміни label_statistics: СтатиÑтика label_commits_per_month: Подань на міÑÑць label_commits_per_author: Подань на кориÑтувача label_view_diff: ПроглÑнути відмінноÑті label_diff_inline: підключений label_diff_side_by_side: порÑд label_options: Опції label_copy_workflow_from: Скопіювати поÑлідовніÑть дій з label_permissions_report: Звіт про права доÑтупу label_watched_issues: ПроглÑнуті Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_related_issues: Зв'Ñзані Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_applied_status: ЗаÑтоÑовний ÑÑ‚Ð°Ñ‚ÑƒÑ label_loading: ЗавантаженнÑ... label_relation_new: Ðовий зв'Ñзок label_relation_delete: Видалити зв'Ñзок label_relates_to: пов'Ñзане з label_duplicates: дублює label_blocks: блокує label_blocked_by: заблоковане label_precedes: передує label_follows: наÑтупний за label_stay_logged_in: ЗалишатиÑÑ Ð² ÑиÑтемі label_disabled: відключений label_show_completed_versions: Показати завершені верÑÑ–Ñ— label_me: мене label_board: Форум label_board_new: Ðовий форум label_board_plural: Форуми label_topic_plural: Теми label_message_plural: ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ label_message_last: ОÑтаннє Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ label_message_new: Ðове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ label_reply_plural: Відповіді label_send_information: Відправити кориÑтувачеві інформацію з облікового запиÑу label_year: Рік label_month: МіÑÑць label_week: ÐÐµÐ´Ñ–Ð»Ñ label_date_from: З label_date_to: Кому label_language_based: Ðа оÑнові мови кориÑтувача label_sort_by: "Сортувати за %{value}" label_send_test_email: ПоÑлати email Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ label_feeds_access_key_created_on: "Ключ доÑтупу Atom Ñтворений %{value} тому " label_module_plural: Модулі label_added_time_by: "Доданий %{author} %{age} тому" label_updated_time: "Оновлений %{value} тому" label_jump_to_a_project: Перейти до проекту... label_file_plural: Файли label_changeset_plural: Ðабори змін label_default_columns: Типові колонки label_no_change_option: (Ðемає змін) label_bulk_edit_selected_issues: Редагувати вÑÑ– вибрані Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ label_theme: Тема label_default: Типовий label_search_titles_only: Шукати тільки в назвах label_user_mail_option_all: "Ð”Ð»Ñ Ð²ÑÑ–Ñ… подій у вÑÑ–Ñ… моїх проектах" label_user_mail_option_selected: "Ð”Ð»Ñ Ð²ÑÑ–Ñ… подій тільки у вибраному проекті..." label_user_mail_no_self_notified: "Ðе Ñповіщати про зміни, Ñкі Ñ Ð·Ñ€Ð¾Ð±Ð¸Ð² Ñам" label_registration_activation_by_email: Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу електронною поштою label_registration_manual_activation: ручна Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу label_registration_automatic_activation: автоматична Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ‹ÐºÐ¾Ð²Ð¾Ð³Ð¾ button_login: Вхід button_submit: Відправити button_save: Зберегти button_check_all: Відзначити вÑе button_uncheck_all: ОчиÑтити button_delete: Видалити button_create: Створити button_test: Перевірити button_edit: Редагувати button_add: Додати button_change: Змінити button_apply: ЗаÑтоÑувати button_clear: ОчиÑтити button_lock: Заблокувати button_unlock: Разблокувати button_download: Завантажити button_list: СпиÑок button_view: ПереглÑнути button_move: ПереміÑтити button_back: Ðазад button_cancel: Відмінити button_activate: Ðктивувати button_sort: Сортувати button_log_time: ЗапиÑати Ñ‡Ð°Ñ button_rollback: Відкотити до даної верÑÑ–Ñ— button_watch: ДивитиÑÑ button_unwatch: Ðе дивитиÑÑ button_reply: ВідповіÑти button_archive: Ðрхівувати button_unarchive: Розархівувати button_reset: ПерезапуÑтити button_rename: Перейменувати button_change_password: Змінити пароль button_copy: Копіювати button_annotate: Ðнотувати status_active: Ðктивний status_registered: ЗареєÑтрований status_locked: Заблокований text_select_mail_notifications: Виберіть дії, на Ñкі відÑилатиметьÑÑ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð° електронну пошту. text_regexp_info: наприклад ^[A-Z0-9]+$ text_project_destroy_confirmation: Ви наполÑгаєте на видаленні цього проекту Ñ– вÑієї інформації, що відноÑитьÑÑ Ð´Ð¾ нього? text_workflow_edit: Виберіть роль Ñ– координатор Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑлідовноÑті дій text_are_you_sure: Ви впевнені? text_tip_issue_begin_day: день початку задачі text_tip_issue_end_day: день Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ñ– text_tip_issue_begin_end_day: початок задачі Ñ– Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð´Ð½Ñ text_caracters_maximum: "%{count} Ñимволів(и) макÑимум." text_caracters_minimum: "Повинно мати Ñкнайменше %{count} Ñимволів(и) у довжину." text_length_between: "Довжина між %{min} Ñ– %{max} Ñимволів." text_tracker_no_workflow: Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ координатора поÑлідовніÑть дій не визначена text_unallowed_characters: Заборонені Ñимволи text_comma_separated: ДопуÑтимі декілька значень (розділені комою). text_issues_ref_in_commit_messages: ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ‚Ð° зміна питань у повідомленнÑÑ… до подавань text_issue_added: "Задача %{id} була додана %{author}." text_issue_updated: "Задача %{id} була оновлена %{author}." text_wiki_destroy_confirmation: Ви впевнені, що хочете видалити цю wiki Ñ– веÑÑŒ зміÑÑ‚? text_issue_category_destroy_question: "Декілька питань (%{count}) призначено в цю категорію. Що ви хочете зробити?" text_issue_category_destroy_assignments: Видалити Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñ— text_issue_category_reassign_to: Перепризначити задачі до даної категорії text_user_mail_option: "Ð”Ð»Ñ Ð½ÐµÐ²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ñ… проектів ви отримуватимете Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ про те, що проглÑдаєте або в чому берете учаÑть (наприклад, Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñких ви Ñ” або Ñкі вам призначені)." default_role_manager: Менеджер default_role_developer: Розробник default_role_reporter: Репортер # default_tracker_bug: Bug # звітів default_tracker_bug: Помилка default_tracker_bug: Помилка default_tracker_feature: ВлаÑтивіÑть default_tracker_support: Підтримка default_issue_status_new: Ðовий default_issue_status_in_progress: Ð’ процеÑÑ– default_issue_status_resolved: Вирішено default_issue_status_feedback: Зворотний зв'Ñзок default_issue_status_closed: Зачинено default_issue_status_rejected: Відмовлено default_doc_category_user: Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñтувача default_doc_category_tech: Технічна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ default_priority_low: Ðизький default_priority_normal: Ðормальний default_priority_high: ВиÑокий default_priority_urgent: Терміновий default_priority_immediate: Ðегайний default_activity_design: ÐŸÑ€Ð¾ÐµÐºÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ default_activity_development: Розробка enumeration_issue_priorities: Пріоритети питань enumeration_doc_categories: Категорії документів enumeration_activities: Дії (облік чаÑу) text_status_changed_by_changeset: "Реалізовано в редакції %{value}." label_display_per_page: "Ðа Ñторінку: %{value}" label_issue_added: Задача додана label_issue_updated: Задача оновлена setting_per_page_options: КількіÑть запиÑів на Ñторінку notice_default_data_loaded: ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¿Ð¾ замовчуванню була завантажена. error_scm_not_found: "Сховище не міÑтить запиÑів Ñ–/чи виправлень." label_associated_revisions: Пов'Ñзані редакції label_document_added: Документ додано label_message_posted: ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ð½Ð¾ text_issues_destroy_confirmation: 'Ви впевнені, що хочете видалити вибрані задачі?' error_scm_command_failed: "Помилка доÑтупу до Ñховища: %{value}" setting_user_format: Формат Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу label_age: Вік label_file_added: Файл додано field_default_value: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ замовчуванню label_scm: Тип Ñховища label_general: Загальне button_update: Оновити text_select_project_modules: 'Виберіть модулі, Ñкі будуть викориÑтані в проекті:' label_change_properties: Змінити влаÑтивоÑті text_load_default_configuration: Завантажити Конфігурацію по замовчуванню text_no_configuration_data: "Ролі, трекери, ÑтатуÑи задач Ñ– оперативний план не були Ñконфігуровані.\nÐаполегливо рекомендуєтьÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ конфігурацію по-замовчуванню. Ви зможете Ñ—Ñ— змінити згодом." label_news_added: Додана новина label_repository_plural: Сховища error_can_t_load_default_data: "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¿Ð¾ замовчуванню не може бути завантажена: %{value}" project_module_boards: Форуми project_module_issue_tracking: Задачі project_module_wiki: Wiki project_module_files: Файли project_module_documents: Документи project_module_repository: Сховище project_module_news: Ðовини project_module_time_tracking: ВідÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу text_file_repository_writable: Сховище файлів доÑтупне Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñів text_default_administrator_account_changed: Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора по замовчуванню змінений text_minimagick_available: ДоÑтупно викориÑÑ‚Ð°Ð½Ð½Ñ MiniMagick (опційно) button_configure: ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ label_plugins: Модулі label_ldap_authentication: ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ñ–Ñ Ð·Ð° допомогою LDAP label_downloads_abbr: Завантажень label_this_month: цей міÑÑць label_last_n_days: "оÑтанні %{count} днів" label_this_year: цей рік label_date_range: інтервал чаÑу label_last_week: попередній тиждень label_yesterday: вчора label_last_month: попередній міÑÑць label_add_another_file: Додати ще один файл label_optional_description: ÐžÐ¿Ð¸Ñ (не обов'Ñзково) text_destroy_time_entries_question: "Ðа дану задачу зареєÑтровано %{hours} години(ин) трудовитрат. Що Ви хочете зробити?" error_issue_not_found_in_project: 'Задача не була знайдена або не ÑтоÑуєтьÑÑ Ð´Ð°Ð½Ð¾Ð³Ð¾ проекту' text_assign_time_entries_to_project: Додати зареєÑтрований Ñ‡Ð°Ñ Ð´Ð¾ проекту text_destroy_time_entries: Видалити зареєÑтрований Ñ‡Ð°Ñ text_reassign_time_entries: 'ПеренеÑти зареєÑтрований Ñ‡Ð°Ñ Ð½Ð° наÑтупну задачу:' setting_activity_days_default: КількіÑть днів, відображених в ДіÑÑ… label_chronological_order: Ð’ хронологічному порÑдку field_comments_sorting: Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ–Ð² label_reverse_chronological_order: Ð’ зворотньому порÑдку label_preferences: Переваги setting_display_subprojects_issues: Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð² по замовчуванню setting_default_projects_public: Ðові проекти Ñ” загальнодоÑтупними error_scm_annotate: "Коментар неможливий через Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимального розміру текÑтового файлу." text_subprojects_destroy_warning: "Підпроекти: %{value} також будуть видалені." label_and_its_subprojects: "%{value} Ñ– вÑÑ– підпроекти" mail_body_reminder: "%{count} призначених на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ на наÑтупні %{days} днів:" mail_subject_reminder: "%{count} призначених на Ð’Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡ в найближчі %{days} дні" text_user_wrote: "%{value} пиÑав(ла):" text_user_wrote_in: "%{value} пиÑав(ла) (%{link}):" label_duplicated_by: дублюєтьÑÑ setting_enabled_scm: Увімкнені SCM text_enumeration_category_reassign_to: 'Ðадати їм наÑтупне значеннÑ:' text_enumeration_destroy_question: "%{count} об'єкт(а,ів) зв'Ñзані з цим значеннÑм." label_incoming_emails: Прийом повідомлень label_generate_key: Згенерувати ключ setting_mail_handler_api_enabled: Увімкнути веб-ÑÐµÑ€Ð²Ñ–Ñ Ð´Ð»Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… повідомлень setting_mail_handler_api_key: API ключ text_email_delivery_not_configured: "Параметри роботи з поштовим Ñервером не налаштовані Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾ email не активна.\nÐалаштувати параметри Ð´Ð»Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ SMTP-Ñервера Ви можете в файлі config/configuration.yml. Ð”Ð»Ñ Ð·Ð°ÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ перезапуÑтіть програму." field_parent_title: Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка label_issue_watchers: СпоÑтерігачі button_quote: Цитувати setting_sequential_project_identifiers: Генерувати поÑлідовні ідентифікатори проектів notice_unable_delete_version: Ðеможливо видалити верÑÑ–ÑŽ. label_renamed: перейменовано label_copied: Ñкопійовано в setting_plain_text_mail: Тільки проÑтий текÑÑ‚ (без HTML) permission_view_files: ПереглÑд файлів permission_edit_issues: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ permission_edit_own_time_entries: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñного обліку чаÑу permission_manage_public_queries: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼Ð¸ запитами permission_add_issues: Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ permission_log_time: Облік трудовитрат permission_view_changesets: ПереглÑд змін Ñховища permission_view_time_entries: ПереглÑд трудовитрат permission_manage_versions: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми permission_manage_wiki: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ wiki permission_manage_categories: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ñ–Ñми задач permission_protect_wiki_pages: Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ wiki-Ñторінок permission_comment_news: ÐšÐ¾Ð¼ÐµÐ½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ð½ permission_delete_messages: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ permission_select_project_modules: Вибір модулів проекту permission_edit_wiki_pages: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ wiki-Ñторінок permission_add_issue_watchers: Додати ÑпоÑтерігачів permission_view_gantt: ПереглÑд діаграми Ганта permission_manage_issue_relations: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð·Ð²'ÑзуваннÑм задач permission_delete_wiki_pages: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ wiki-Ñторінок permission_manage_boards: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ„Ð¾Ñ€ÑƒÐ¼Ð°Ð¼Ð¸ permission_delete_wiki_pages_attachments: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ÐºÑ€Ñ–Ð¿Ð»ÐµÐ½Ð¸Ñ… файлів permission_view_wiki_edits: ПереглÑд Ñ–Ñторії wiki permission_add_messages: Відправка повідомлень permission_view_messages: ПереглÑд повідомлень permission_manage_files: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ permission_edit_issue_notes: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ñ‚Ð°Ñ‚Ð¾Ðº permission_manage_news: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ð½Ð°Ð¼Ð¸ permission_view_calendar: ПереглÑд ÐºÐ°Ð»ÐµÐ½Ð´Ð°Ñ€Ñ permission_manage_members: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÑƒÑ‡Ð°Ñниками permission_edit_messages: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ permission_delete_issues: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ permission_view_issue_watchers: ПереглÑд ÑпиÑку ÑпоÑтерігачів permission_manage_repository: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñховищем permission_commit_access: Зміна файлів в Ñховищі permission_browse_repository: ПереглÑд Ñховища permission_view_documents: ПереглÑд документів permission_edit_project: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð² permission_add_issue_notes: Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ð¾Ñ‚Ð°Ñ‚Ð¾Ðº permission_save_queries: Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² permission_view_wiki_pages: ПереглÑд wiki permission_rename_wiki_pages: ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ wiki-Ñторінок permission_edit_time_entries: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÑƒ чаÑу permission_edit_own_issue_notes: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñних нотаток setting_gravatar_enabled: ВикориÑтовувати аватар кориÑтувача із Gravatar label_example: Зразок text_repository_usernames_mapping: "Виберіть або оновіть кориÑтувача Redmine, пов'Ñзаного зі знайденими іменами в журналі Ñховища.\nКориÑтувачі з одинаковими іменами або email в Redmine Ñ– Ñховищі пов'ÑзуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾." permission_edit_own_messages: Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð»Ð°Ñних повідомлень permission_delete_own_messages: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð²Ð»Ð°Ñних повідомлень label_user_activity: "Дії кориÑтувача %{value}" label_updated_time_by: "Оновлено %{author} %{age} тому" text_diff_truncated: '... Цей diff обмежений, так Ñк перевищує макÑимальний розмір, що може бути відображений.' setting_diff_max_lines_displayed: МакÑимальна кількіÑть Ñ€Ñдків Ð´Ð»Ñ diff text_plugin_assets_writable: Каталог реÑурÑів модулів доÑтупний Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу warning_attachments_not_saved: "%{count} файл(ів) неможливо зберегти." button_create_and_continue: Створити та продовжити text_custom_field_possible_values_info: 'По одному значенню в кожному Ñ€Ñдку' label_display: Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ field_editable: ДоÑтупно до Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ setting_repository_log_display_limit: МакÑимальна кількіÑть редакцій, відображених в журналі змін setting_file_max_size_displayed: МакÑимальний розмір текÑтового файлу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ field_watcher: СпоÑтерігач field_content: ВміÑÑ‚ label_descending: За ÑпаданнÑм label_sort: Сортувати label_ascending: За зроÑтаннÑм label_date_from_to: Від %{start} до %{end} label_greater_or_equal: ">=" label_less_or_equal: <= text_wiki_page_destroy_question: Ð¦Ñ Ñторінка має %{descendants} дочірних Ñторінок Ñ– Ñ—Ñ… нащадків. Що Ви хочете зробити? text_wiki_page_reassign_children: Перепризначити дочірні Ñторінки поточній Ñторінці text_wiki_page_nullify_children: Зробити дочірні Ñторінки головними Ñторінками text_wiki_page_destroy_children: Видалити дочірні Ñторінки Ñ– вÑÑ–Ñ… Ñ—Ñ… нащадків setting_password_min_length: Мінімальна довжина паролю field_group_by: Групувати результати по mail_subject_wiki_content_updated: "Wiki-Ñторінка '%{id}' була оновлена" label_wiki_content_added: Wiki-Ñторінка додана mail_subject_wiki_content_added: "Wiki-Ñторінка '%{id}' була додана" mail_body_wiki_content_added: "%{author} додав(ла) wiki-Ñторінку %{id}." label_wiki_content_updated: Wiki-Ñторінка оновлена mail_body_wiki_content_updated: "%{author} оновив(ла) wiki-Ñторінку %{id}." permission_add_project: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñƒ setting_new_project_user_role_id: Роль, Ñка призначаєтьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачеві що Ñтворив проект label_view_all_revisions: Показати вÑÑ– ревізії label_tag: Мітка label_branch: Гілка error_no_tracker_in_project: З цим проектом не аÑоційований жоден трекер. Будь лаÑка, перевірте Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñƒ. error_no_default_issue_status: Ðе визначений ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡ за замовчуваннÑм. Будь лаÑка, перевірте Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ (див. "ÐдмініÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ -> СтатуÑи задач"). text_journal_changed: "Параметр %{label} змінивÑÑ Ð· %{old} на %{new}" text_journal_set_to: "Параметр %{label} змінивÑÑ Ð½Ð° %{value}" text_journal_deleted: "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %{old} параметру %{label} видалено" label_group_plural: Групи label_group: Група label_group_new: Ðова група label_time_entry_plural: Трудовитрати text_journal_added: "%{label} %{value} доданий" field_active: Ðктивно enumeration_system_activity: СиÑтемне permission_delete_issue_watchers: Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÑпоÑтерігачів version_status_closed: закритий version_status_locked: заблокований version_status_open: відкритий error_can_not_reopen_issue_on_closed_version: Задача, що прикріплена до закритої верÑÑ–Ñ—, не зможе бути відкрита знову label_user_anonymous: Ðнонім button_move_and_follow: ПереміÑтити Ñ– перейти setting_default_projects_modules: Включені по замовчуванню модулі Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… проектів setting_gravatar_default: Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Gravatar за замовчуваннÑм field_sharing: Спільне викориÑÑ‚Ð°Ð½Ð½Ñ label_version_sharing_hierarchy: З ієрархією пректів label_version_sharing_system: З уÑіма проектами label_version_sharing_descendants: З підпроектами label_version_sharing_tree: З деревом проектів label_version_sharing_none: Без Ñпільного доÑтупу error_can_not_archive_project: Цей проект не може бути заархівований button_copy_and_follow: Скопіювати та продовжити label_copy_source: Джерело setting_issue_done_ratio: Розраховувати готовніÑть задачі з допомогою Ð¿Ð¾Ð»Ñ setting_issue_done_ratio_issue_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ñ– error_issue_done_ratios_not_updated: Параметр готовніÑть задач не оновлений. error_workflow_copy_target: Оберіть цільові трекери Ñ– ролі setting_issue_done_ratio_issue_field: ГотовніÑть задачі label_copy_same_as_target: Те Ñаме, що Ñ– у цілі label_copy_target: Ціль notice_issue_done_ratios_updated: Параметр «Ð³Ð¾Ñ‚овніÑть» оновлений. error_workflow_copy_source: Будь лаÑка, виберіть початковий трекер або роль label_update_issue_done_ratios: Оновити готовніÑть задач setting_start_of_week: День початку Ñ‚Ð¸Ð¶Ð½Ñ permission_view_issues: ПереглÑд задач label_display_used_statuses_only: Відображати тільки ті ÑтатуÑи, Ñкі викориÑтовуютьÑÑ Ð² цьому трекері label_revision_id: Ð ÐµÐ²Ñ–Ð·Ñ–Ñ %{value} label_api_access_key: Ключ доÑтупу до API label_api_access_key_created_on: Ключ доÑтупу до API Ñтворено %{value} тому label_feeds_access_key: Ключ доÑтупу до Atom notice_api_access_key_reseted: Ваш ключ доÑтупу до API був Ñкинутий. setting_rest_api_enabled: Включити веб-ÑÐµÑ€Ð²Ñ–Ñ REST label_missing_api_access_key: ВідÑутній ключ доÑтупу до API label_missing_feeds_access_key: ВідÑутній ключ доÑтупу до Atom button_show: Показати text_line_separated: Дозволено кілька значень (по одному значенню в Ñ€Ñдок). setting_mail_handler_body_delimiters: Обрізати вміÑÑ‚ лиÑтів піÑÐ»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ з цих Ñ€Ñдків permission_add_subprojects: Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð² label_subproject_new: Ðовий підпроект text_own_membership_delete_confirmation: |- Ви збираєтеÑÑŒ видалити деÑкі або вÑÑ– права, через що можуть зникнути права на Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ проекту. Ви впевнені що хочете продовжити? label_close_versions: Закрити завершені верÑÑ–Ñ— label_board_sticky: Прикріплена label_board_locked: Заблокована permission_export_wiki_pages: ЕкÑпорт wiki-Ñторінок setting_cache_formatted_text: Кешувати форматований текÑÑ‚ permission_manage_project_activities: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð°Ð¼Ð¸ дій Ð´Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñƒ error_unable_delete_issue_status: Ðеможливо видалити ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð°Ð´Ð°Ñ‡Ñ– (%{value}) label_profile: Профіль permission_manage_subtasks: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ–Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°Ð¼Ð¸ field_parent_issue: БатьківÑька задача label_subtask_plural: Підзадачі label_project_copy_notifications: ВідправлÑти ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾ електронній пошті при копіюванні проекту error_can_not_delete_custom_field: Ðеможливо видалити поле що налаштовуєтьÑÑ error_unable_to_connect: Ðеможливо підключитиÑÑŒ (%{value}) error_can_not_remove_role: Ð¦Ñ Ñ€Ð¾Ð»ÑŒ викориÑтовуєтьÑÑ Ñ– не може бути видалена. error_can_not_delete_tracker_html: Цей трекер міÑтить задачі Ñ– не може бути видалений.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: User or Group notice_failed_to_save_members: "Ðе вдалоÑÑŒ зберегти учаÑника(ів): %{errors}." text_zoom_out: Віддалити text_zoom_in: Ðаблизити notice_unable_delete_time_entry: Ðеможливо видалити Ð·Ð°Ð¿Ð¸Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ. field_time_entries: ВидиміÑть трудовитрат project_module_gantt: Діаграма Ганта project_module_calendar: Календар button_edit_associated_wikipage: "Редагувати пов'Ñзану Wiki Ñторінку: %{page_title}" field_text: ТекÑтове поле setting_default_notification_option: СпоÑіб ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм label_user_mail_option_only_my_events: Тільки Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡, Ñкі Ñ Ð²Ñ–Ð´Ñлідковую чи беру учаÑть label_user_mail_option_none: Ðемає подій field_member_of_group: Група Ð²Ð¸ÐºÐ¾Ð½Ð°Ð²Ñ†Ñ field_assigned_to_role: Роль Ð²Ð¸ÐºÐ¾Ð½Ð°Ð²Ñ†Ñ notice_not_authorized_archived_project: Даний проект заархівований. label_principal_search: "Знайти кориÑтувача або групу:" label_user_search: "Знайти кориÑтувача:" field_visible: Видимий setting_commit_logtime_activity_id: Ð”Ð»Ñ Ð´Ð»Ñ Ð¾Ð±Ð»Ñ–ÐºÑƒ чаÑу text_time_logged_by_changeset: ВзÑто до уваги в редакції %{value}. setting_commit_logtime_enabled: Включити облік чаÑу notice_gantt_chart_truncated: Діаграма буде обрізана, так Ñк перевищено макÑимальну к-Ñть елементів Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (%{max}) setting_gantt_items_limit: МакÑимальна к-Ñть елементів Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° діаграмі Ганта field_warn_on_leaving_unsaved: Попереджувати при закритті Ñторінки з незбереженим текÑтом text_warn_on_leaving_unsaved: Дана Ñторінка міÑтить незбережений текÑÑ‚, Ñкий буде втрачено при закритті Ñторінки. label_my_queries: Мої збережені запити text_journal_changed_no_detail: "%{label} оновлено" label_news_comment_added: Добавлено новий коментар до новини button_expand_all: Розгорнути вÑе button_collapse_all: Згорнути вÑе label_additional_workflow_transitions_for_assignee: Додаткові переходи дозволені кориÑтувачу, Ñкий Ñ” виконавцем label_additional_workflow_transitions_for_author: Додаткові переходи дозволені кориÑтувачу, Ñкий Ñ” автором label_bulk_edit_selected_time_entries: МаÑова зміна вибраних запиÑів трудовитрат text_time_entries_destroy_confirmation: Ви впевнені, що хочете видалити вибрані трудовитрати? label_role_anonymous: Ðнонім label_role_non_member: Ðе учаÑник label_issue_note_added: Примітку додано label_issue_status_updated: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ label_issue_priority_updated: Пріоритет оновлено label_issues_visibility_own: Створені або призначені задачі Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача field_issues_visibility: ВидиміÑть задач label_issues_visibility_all: Ð’ÑÑ– задачі permission_set_own_issues_private: Ð’Ñтановити видиміÑть (повна/чаткова) Ð´Ð»Ñ Ð²Ð»Ð°Ñних задач field_is_private: Приватна permission_set_issues_private: Ð’Ñтановити видиміÑть (повна/чаткова) Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡ label_issues_visibility_public: Тільки загальні задачі text_issues_destroy_descendants_confirmation: Також буде видалено %{count} задача(Ñ–). field_commit_logs_encoding: ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ–Ð² у Ñховищі field_scm_path_encoding: ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ»Ñху text_scm_path_encoding_note: "По замовчуванню: UTF-8" field_path_to_repository: ШлÑÑ… до Ñховища field_root_directory: Коренева Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ field_cvs_module: Модуль field_cvsroot: CVSROOT text_mercurial_repository_note: Локальне Ñховище (наприклад. /hgrepo, c:\hgrepo) text_scm_command: Команда text_scm_command_version: ВерÑÑ–Ñ label_git_report_last_commit: Зазначати оÑтанні зміни Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² та директорій notice_issue_successful_create: Задача %{id} Ñтворена. label_between: між setting_issue_group_assignment: Ðадавати доÑтуп до ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° групам кориÑтувачів label_diff: Ñ€Ñ–Ð·Ð½Ð¸Ñ†Ñ text_git_repository_note: Сховище пуÑте та локальнеl (тобто. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: ПорÑдок ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ description_project_scope: ОблаÑть пошуку description_filter: Фільтр description_user_mail_notification: ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑˆÑ‚Ð¾Ð²Ð¸Ñ… Ñповіщень description_message_content: ЗміÑÑ‚ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ description_available_columns: ДоÑтупні колонки description_issue_category_reassign: Виберіть категорію задачі description_search: Поле пошуку description_notes: Примітки description_choose_project: Проекти description_query_sort_criteria_attribute: Критерій ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ description_wiki_subpages_reassign: Виберіть батьківÑьку Ñторінку description_selected_columns: Вибрані колонки label_parent_revision: БатьківÑький label_child_revision: ПідпорÑдкований error_scm_annotate_big_text_file: Ðеможливо додати коментарій через Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимального розміру текÑтового файлу. setting_default_issue_start_date_to_creation_date: ВикориÑтовувати поточну дату, Ñк дату початку нових задач button_edit_section: Редагувати дану Ñекцію setting_repositories_encodings: ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½ÑŒ та Ñховищ description_all_columns: Ð’ÑÑ– колонки button_export: ЕкÑпорт label_export_options: "%{export_format} параметри екпортуваннÑ" error_attachment_too_big: Ðеможливо завантажити файл, він перевищує макÑимальний дозволений розмір (%{max_size}) notice_failed_to_save_time_entries: "Ðе вдалоÑÑŒ зберегти %{count} трудовитрати %{total} вибраних: %{ids}." label_x_issues: zero: 0 Задач one: 1 Задача other: "%{count} Задач" label_repository_new: Ðове Ñховище field_repository_is_default: Сховище за замовчуваннÑм label_copy_attachments: Скопіювати Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ label_item_position: "%{position}/%{count}" label_completed_versions: Завершені верÑÑ–Ñ— text_project_identifier_info: ДопуÑкаютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ñ€Ñдкові малі букви (a-z), цифри, тире та підкреÑÐ»ÐµÐ½Ð½Ñ (нижнє тире).
    ПіÑÐ»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ заборонено редагувати. field_multiple: Множинні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ setting_commit_cross_project_ref: ДозволÑти поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ‚Ð° Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ у вÑÑ–Ñ… інших проектах text_issue_conflict_resolution_add_notes: Додати мої примітки та відмовитиÑÑŒ від моїх змін text_issue_conflict_resolution_overwrite: ЗаÑтоÑувати мої зміни (вÑÑ– попередні примітки будуть збережені, але деÑкі зміни зможуть бути перезапиÑані) notice_issue_update_conflict: ХтоÑÑŒ змінив задачу, поки ви Ñ—Ñ— редагували text_issue_conflict_resolution_cancel: СкаÑувати мої зміни та показати та повторно показати задачу %{link} permission_manage_related_issues: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ð¾Ð²'Ñзаними задачами field_auth_source_ldap_filter: Фільтр LDAP label_search_for_watchers: Знайти ÑпоÑтерігачів notice_account_deleted: "Ваш обліковій Ð·Ð°Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ð½Ñ–Ñтю видалений" setting_unsubscribe: "Дозволити кориÑтувачам видалÑти Ñвої облікові запиÑи" button_delete_my_account: "Видалити мій обліковий запиÑ" text_account_destroy_confirmation: "Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð±ÑƒÐ´Ðµ повніÑтю видалений без можливоÑті відновленнÑ.\nВи впевнені, що бажаете продовжити?" error_session_expired: Ð¡ÐµÐ°Ð½Ñ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾. Будь лаÑка, увійдіть іще раз. text_session_expiration_settings: "Увага!: зміна даних налаштувань може Ñпричинити Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ… ÑеанÑів, включаючи Ваш." setting_session_lifetime: МакÑимальна триваліÑть ÑеанÑу setting_session_timeout: Таймаут ÑеанÑу label_session_expiration: Термін Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ ÑеанÑу permission_close_project: Закривати/відкривати проекти button_close: Закрити button_reopen: Відкрити project_status_active: Відкриті(ий) project_status_closed: Закриті(ий) project_status_archived: Заархівовані(ий) text_project_closed: Проект закрито. ДоÑтупний лише в режимі читаннÑ. notice_user_successful_create: КориÑтувача %{id} Ñтворено. field_core_fields: Стандартні Ð¿Ð¾Ð»Ñ field_timeout: Таймаут (в Ñекундах) setting_thumbnails_enabled: Відображати попередній переглÑд Ð´Ð»Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½ÑŒ setting_thumbnails_size: Розмір попереднього переглÑду (в пікÑелÑÑ…) label_status_transitions: СтатуÑ-переходи label_fields_permissions: Права на Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð»Ñ–Ð² label_readonly: Тільки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду label_required: Обов'Ñзкове text_repository_identifier_info: ДопуÑкаютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ñ€Ñдкові малі букви (a-z), цифри, тире та підкреÑÐ»ÐµÐ½Ð½Ñ (нижнє тире).
    ПіÑÐ»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ заборонено редагувати. field_board_parent: БатьківÑький форум label_attribute_of_project: Проект %{name} label_attribute_of_author: Ім'Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° %{name} label_attribute_of_assigned_to: Призначено %{name} label_attribute_of_fixed_version: ВерÑÑ–Ñ %{name} label_copy_subtasks: Скопіювати підзадачі label_copied_to: Скопійовано в label_copied_from: Скопійовано з label_any_issues_in_project: будь-Ñкі задачі в проекті label_any_issues_not_in_project: будь-Ñкі задачі не в проекті field_private_notes: Приватні коментарі permission_view_private_notes: ПереглÑд приватних коментарів permission_set_notes_private: Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¸Ñ… коментарів label_no_issues_in_project: в проекті немає задач label_any: УÑÑ– label_last_n_weeks: минулий(Ñ–) %{count} тиждень(ні) setting_cross_project_subtasks: Дозволити підзадачі між проектами label_cross_project_descendants: З підпроектами label_cross_project_tree: З деревом проектів label_cross_project_hierarchy: З ієрархією проектів label_cross_project_system: З уÑіма проектами button_hide: Сховати setting_non_working_week_days: Ðеробочі дні label_in_the_next_days: в наÑтупні дні label_in_the_past_days: минулі дні label_attribute_of_user: КориÑтувач %{name} text_turning_multiple_off: Якщо відключити множинні значеннÑ, зайві Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ видалені зі ÑпиÑку, так аби залишилоÑÑŒ тільки по одному значенню. label_attribute_of_issue: Задача %{name} permission_add_documents: Додати документи permission_edit_documents: Редагувати документи permission_delete_documents: Видалити документи label_gantt_progress_line: Ð›Ñ–Ð½Ñ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€ÐµÑу setting_jsonp_enabled: Включити JSONP підтримку field_inherit_members: ÐаÑлідувати учаÑників field_closed_on: Закрито field_generate_password: Створити пароль setting_default_projects_tracker_ids: Трекери по замовчуванню Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… проектів label_total_time: Ð’Ñього text_scm_config: Ви можете налаштувати команди SCM в файлі config/configuration.yml. Будь лаÑка, перезавантажте додаток піÑÐ»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¾Ð³Ð¾ файлу. text_scm_command_not_available: SCM команада недоÑтупна. Будь лаÑка, перевірте Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð² адмініÑтративній панелі. setting_emails_header: Заголовок лиÑта notice_account_not_activated_yet: Поки що ви не маєте активованих облікових запиÑів. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾ аби отримати лиÑÑ‚ із активацією, перейдіть по click this link. notice_account_locked: Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾. label_hidden: Схований label_visibility_private: тільки Ð´Ð»Ñ Ð¼ÐµÐ½Ðµ label_visibility_roles: тільки Ð´Ð»Ñ Ð´Ð°Ð½Ð¸Ñ… ролей label_visibility_public: Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів field_must_change_passwd: Змінити пароль при наÑтупному вході notice_new_password_must_be_different: Ðовий пароль повинен відрізнÑтиÑÑŒ від Ñ–Ñнуючого setting_mail_handler_excluded_filenames: Виключити Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð¿Ð¾ імені text_convert_available: ImageMagick викориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупно (опціонально) label_link: ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ label_only: тільки label_drop_down_list: випадаючий ÑпиÑок label_checkboxes: чекбокÑи label_link_values_to: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñилань Ð´Ð»Ñ URL setting_force_default_language_for_anonymous: Ðе визначати мову Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ñ–Ð¼Ð½Ð¸Ñ… кориÑтувачів setting_force_default_language_for_loggedin: Ðе визначати мову Ð´Ð»Ñ Ð·Ð°Ñ€ÐµÑ”Ñтрованих кориÑтувачів label_custom_field_select_type: Виберіть тип об'єкта, Ð´Ð»Ñ Ñкого буде Ñтворено поле Ð´Ð»Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ label_issue_assigned_to_updated: Виконавець оновлений label_check_for_updates: Перевірити Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ label_latest_compatible_version: ОÑÑ‚Ð°Ð½Ð½Ñ ÑуміÑна верÑÑ–Ñ label_unknown_plugin: Ðевідомий плагін label_radio_buttons: радіо-кнопки label_group_anonymous: Ðнонімні кориÑтувачі label_group_non_member: КориÑтувачі неучаÑники label_add_projects: Додати проекти field_default_status: Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾ замовчуванню text_subversion_repository_note: 'наприклад:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: ВидиміÑть кориÑтувачів label_users_visibility_all: Ð’ÑÑ– активні кориÑтувачі label_users_visibility_members_of_visible_projects: УчаÑники видимих проектів label_edit_attachments: Редагувати прикріплені файли setting_link_copied_issue: Зв'Ñзати задачі при копіюванні label_link_copied_issue: Зв'Ñзати Ñкопійовану задачу label_ask: Спитати label_search_attachments_yes: Шукати в назвах прикріплених файлів та опиÑах label_search_attachments_no: Ðе шукати в прикріплених файлах label_search_attachments_only: Шукати тільки в прикріплених файлах label_search_open_issues_only: Тільки у відкритих задачах field_address: Ел. пошта setting_max_additional_emails: МакÑимальна кількіÑть додаткрвих email Ð°Ð´Ñ€ÐµÑ label_email_address_plural: Emails label_email_address_add: Додати email адреÑи label_enable_notifications: Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ label_disable_notifications: Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ setting_search_results_per_page: КількіÑть знайдених результатів на Ñторінку label_blank_value: пуÑто permission_copy_issues: ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ error_password_expired: Термін дії вашого паролю закінчивÑÑ Ð°Ð±Ð¾ адмініÑтратор запроÑив помінÑти його. field_time_entries_visibility: ВидиміÑть трудовитрат setting_password_max_age: Вимагати заміну Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¿Ð¾ завершенню label_parent_task_attributes: Ðтрибути батьківÑької задачі label_parent_task_attributes_derived: З урахуваннÑм підзадач label_parent_task_attributes_independent: Без ÑƒÑ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´Ð·Ð°Ð´Ð°Ñ‡ label_time_entries_visibility_all: Ð’ÑÑ– трудовитрати label_time_entries_visibility_own: Тільки влаÑні трудовитрати label_member_management: Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÑƒÑ‡Ð°Ñниками label_member_management_all_roles: Ð’ÑÑ– ролі label_member_management_selected_roles_only: Тільки дані ролі label_password_required: Підтвердіть ваш пароль Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ label_total_spent_time: Ð’Ñього витрачено чаÑу notice_import_finished: "%{count} елементи(ів) було імпортовано" notice_import_finished_with_errors: "%{count} з %{total} елементи(ів) неможливо імпортувати" error_invalid_file_encoding: ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ не відповідає видраній(ому) %{encoding} error_invalid_csv_file_or_settings: Файл не Ñ” файлом CSV або не відповідає вибраним налаштуваннÑм (%{value}) error_can_not_read_import_file: Під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ виникла помилка permission_import_issues: Імпорт задач label_import_issues: Імпорт задач label_select_file_to_import: Виберіть файл Ð´Ð»Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ñƒ label_fields_separator: Розділювач label_fields_wrapper: Обмежувач label_encoding: ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ label_comma_char: Кома label_semi_colon_char: Крапка з комою label_quote_char: Дужки label_double_quote_char: Подвійні дужки label_fields_mapping: ВідповідніÑть полів label_file_content_preview: Попередній переглÑд вміÑту файлу label_create_missing_values: Створити відÑутні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ button_import: Імпорт field_total_estimated_hours: Ð’Ñього залишилоÑÑŒ чаÑу label_api: API label_total_plural: ВиÑновки label_assigned_issues: Призначені задачі label_field_format_enumeration: Ключ/Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпиÑок label_f_hour_short: '%{value} г' field_default_version: ВерÑÑ–Ñ Ð·Ð° замовчуваннÑм error_attachment_extension_not_allowed: Дане Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ %{extension} заборонено setting_attachment_extensions_allowed: Дозволені розширенні setting_attachment_extensions_denied: Заборонені Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ label_any_open_issues: будь-Ñкі відкриті задачі label_no_open_issues: немає відкритих задач label_default_values_for_new_users: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° замовчуваннÑм Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… кориÑтувачів error_ldap_bind_credentials: Ðеправильний обліковий Ð·Ð°Ð¿Ð¸Ñ LDAP /Пароль setting_sys_api_key: API ключ setting_lost_password: Забули пароль mail_subject_security_notification: Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð±ÐµÐ·Ð¿ÐµÐºÐ¸ mail_body_security_notification_change: ! '%{field} змінено.' mail_body_security_notification_change_to: ! '%{field} було змінено на %{value}.' mail_body_security_notification_add: ! '%{field} %{value} додано.' mail_body_security_notification_remove: ! '%{field} %{value} видалено.' mail_body_security_notification_notify_enabled: Email адреÑа %{value} зараз отримує ÑповіщеннÑ. mail_body_security_notification_notify_disabled: Email адреÑа %{value} більше не отримує ÑповіщеннÑ. mail_body_settings_updated: ! 'ÐаÑтупні Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ змінено:' field_remote_ip: IP адреÑи label_wiki_page_new: Ðова wiki Ñторінка label_relations: Зв'Ñзки button_filter: Фільтр mail_body_password_updated: Ваш пароль змінено. label_no_preview: Попередній переглÑд недоÑтупний error_no_tracker_allowed_for_new_issue_in_project: Проект не міÑтить трекерів, Ð´Ð»Ñ Ñких можна Ñтворити задачу label_tracker_all: Ð’ÑÑ– трекери label_new_project_issue_tab_enabled: Відображати вкладку "Ðова задача" setting_new_item_menu_tab: Вкладка "меню проекту" Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… об'єктів label_new_object_tab_enabled: Відображати випадаючий ÑпиÑок "+" error_no_projects_with_tracker_allowed_for_new_issue: Ðемає проектів з трекерами, Ð´Ð»Ñ Ñких можна було б Ñтворити задачу field_textarea_font: Шрифт, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ‚ÐµÐºÑтових полів label_font_default: Шрифт за замовчуваннÑм label_font_monospace: Моноширинний шрифт label_font_proportional: Пропорційний шрифт setting_timespan_format: Формат чаÑового діапазону label_table_of_contents: ЗміÑÑ‚ setting_commit_logs_formatting: ЗаÑтоÑувати Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ setting_mail_handler_enable_regex: ВикориÑтовувати регулÑрні вирази error_move_of_child_not_possible: 'Підзадача %{child} не може бути перенеÑена в новий проект: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Витрачений Ñ‡Ð°Ñ Ð½Ðµ можна перенеÑти на задачу, Ñка має бути видалена setting_timelog_required_fields: Обов'Ñзкові Ð¿Ð¾Ð»Ñ Ð´Ð»Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ чаÑу label_attribute_of_object: '%{object_name}''s %{name}' warning_fields_cleared_on_bulk_edit: Зміни призведуть до автоматичного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ з одного або декількох полів на обраних об'єктах field_updated_by: Оновлено field_last_updated_by: ВоÑтаннє оновлено field_full_width_layout: Макет на повну ширину label_user_mail_option_only_assigned: Лише Ð´Ð»Ñ Ð¾Ð±'єктів за Ñкими Ñ ÑпоÑтерігаю або до Ñких прикріплений label_user_mail_option_only_owner: Лише Ð´Ð»Ñ Ð¾Ð±'єктів за Ñкими Ñ ÑпоÑтерігаю або Ñ” влаÑником label_last_notes: ОÑтанні коментарі field_digest: Контрольна Ñума field_default_assigned_to: Призначити по замовчуванню setting_show_custom_fields_on_registration: Показувати додаткові Ð¿Ð¾Ð»Ñ Ð¿Ñ€Ð¸ реєÑтрації permission_view_news: ПереглÑдати новини label_no_preview_alternative_html: Попередній переглÑд недоÑтупний. %{link} файл натоміÑть. label_no_preview_download: Завантажити setting_close_duplicate_issues: Закривати дублі задач автоматично error_exceeds_maximum_hours_per_day: Ðеможливо зареєÑтрувати більше ніж %{max_hours} годин за один день (%{logged_hours} годин вже зареєÑтровано) setting_time_entry_list_defaults: Перелік трудозатрат по замовчуванню setting_timelog_accept_0_hours: Приймати порожні трудозатрати із 0 годин setting_timelog_max_hours_per_day: МакÑимальна кількіÑть годин що можна зазвітувати кориÑтувачеві на дешь label_x_revisions: "%{count} верÑій" error_can_not_delete_auth_source: Цей метод аутентифікації викориÑтовуєтьÑÑ Ñ– не може бути видалений. button_actions: Actions mail_body_lost_password_validity: Ви можете змінити пароль лише один раз викориÑтовуючи це поÑиланнÑ. text_login_required_html: Без вимоги аутентифікації, публічні проекти та Ñ—Ñ… вміÑÑ‚ вільно доÑтупні в мережі. Ви можете змінити необхідні права. label_login_required_yes: 'Так' label_login_required_no: ÐÑ–, дозволити анонімний доÑтуп до публічних проектів text_project_is_public_non_member: Публічні проекти та Ñ—Ñ… вміÑÑ‚ доÑтупні вÑім зареєÑтрованим кориÑтувачам. text_project_is_public_anonymous: Публічні проекти та Ñ—Ñ… вміÑÑ‚ вільно доÑтупні в мережі. label_version_and_files: ВерÑій (%{count}) Ñ– Файлів label_ldap: LDAP label_ldaps_verify_none: LDAPS (без перевірки Ñертифікату) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Рекомендовано викориÑтовувати шифроване LDAPS з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· перевіркою Ñертифікату щоби попередити маніпулÑції під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу аутентифікації. label_nothing_to_preview: Ðічого не має Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду error_token_expired: Це поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ заÑтаріло, буль лаÑка Ñпробуйте заново. error_spent_on_future_date: Ðеможна внеÑти Ñ‡Ð°Ñ Ð½Ð° дату у майбутньому setting_timelog_accept_future_dates: Приймати внеÑÐµÐ½Ð½Ñ Ñ‡Ð°Ñу на дати у майбутньому label_delete_link_to_subtask: Видалити зв'Ñзок error_not_allowed_to_log_time_for_other_users: Ðе дозволено вноÑити Ñ‡Ð°Ñ Ð·Ð° інших кориÑтувачів. permission_log_time_for_other_users: ДозволÑти вноÑити Ñ‡Ð°Ñ Ð·Ð° інших кориÑтувачів. label_tomorrow: tomorrow label_next_week: next week label_next_month: next month text_role_no_workflow: No workflow defined for this role text_status_no_workflow: No tracker uses this status in the workflows setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject label_inherited_from_parent_project: Inherited from parent project label_inherited_from_group: Inherited from group %{name} label_trackers_description: Trackers description label_open_trackers_description: View all trackers description label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Parent task subject permission_edit_own_issues: Edit own issues text_select_apply_tracker: Select tracker label_updated_issues: Updated issues text_avatar_server_config_html: The current avatar server is %{url}. You can configure it in config/configuration.yml. setting_gantt_months_limit: Maximum number of months displayed on the gantt chart permission_import_time_entries: Import time entries label_import_notifications: Send email notifications during the import text_gs_available: ImageMagick PDF support available (optional) field_recently_used_projects: Number of recently used projects in jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: Recently used button_project_bookmark: Add bookmark button_project_bookmark_delete: Remove bookmark field_history_default_tab: Issue's history default tab label_issue_history_properties: Property changes label_issue_history_notes: Notes label_last_tab_visited: Last visited tab field_unique_id: Unique ID text_no_subject: no subject setting_password_required_char_classes: Required character classes for passwords label_password_char_class_uppercase: uppercase letters label_password_char_class_lowercase: lowercase letters label_password_char_class_digits: digits label_password_char_class_special_chars: special characters text_characters_must_contain: Must contain %{character_classes}. label_starts_with: starts with label_ends_with: ends with label_issue_fixed_version_updated: Target version updated setting_project_list_defaults: Projects list defaults label_display_type: Display results as label_display_type_list: List label_display_type_board: Board label_my_bookmarks: My bookmarks label_import_time_entries: Import time entries field_toolbar_language_options: Code highlighting toolbar languages label_user_mail_notify_about_high_priority_issues_html: Also notify me about issues with a priority of %{prio} or higher label_assign_to_me: Assign to me notice_issue_not_closable_by_open_tasks: This issue cannot be closed because it has at least one open subtask. notice_issue_not_closable_by_blocking_issue: This issue cannot be closed because it is blocked by at least one open issue. notice_issue_not_reopenable_by_closed_parent_issue: This issue cannot be reopened because its parent issue is closed. error_bulk_download_size_too_big: These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (%{max_size}) setting_bulk_download_max_size: Maximum total size for bulk download label_download_all_attachments: Download all files error_attachments_too_many: This file cannot be uploaded because it exceeds the maximum number of files that can be attached simultaneously (%{max_number_of_files}) setting_email_domains_allowed: Allowed email domains setting_email_domains_denied: Disallowed email domains field_passwd_changed_on: Password last changed label_relations_mapping: Relations mapping label_import_users: Import users label_days_to_html: "%{days} days up to %{date}" setting_twofa: Two-factor authentication label_optional: optional label_required_lower: required button_disable: Disable twofa__totp__name: Authenticator app twofa__totp__text_pairing_info_html: Scan this QR code or enter the plain text key into a TOTP app (e.g. Google Authenticator, Authy, Duo Mobile) and enter the code in the field below to activate two-factor authentication. twofa__totp__label_plain_text_key: Plain text key twofa__totp__label_activate: Enable authenticator app twofa_currently_active: 'Currently active: %{twofa_scheme_name}' twofa_not_active: Not activated twofa_label_code: Code twofa_hint_disabled_html: Setting %{label} will deactivate and unpair two-factor authentication devices for all users. twofa_hint_required_html: Setting %{label} will require all users to set up two-factor authentication at their next login. twofa_label_setup: Enable two-factor authentication twofa_label_deactivation_confirmation: Disable two-factor authentication twofa_notice_select: 'Please select the two-factor scheme you would like to use:' twofa_warning_require: The administrator requires you to enable two-factor authentication. twofa_activated: Two-factor authentication successfully enabled. It is recommended to generate backup codes for your account. twofa_deactivated: Two-factor authentication disabled. twofa_mail_body_security_notification_paired: Two-factor authentication successfully enabled using %{field}. twofa_mail_body_security_notification_unpaired: Two-factor authentication disabled for your account. twofa_mail_body_backup_codes_generated: New two-factor authentication backup codes generated. twofa_mail_body_backup_code_used: A two-factor authentication backup code has been used. twofa_invalid_code: Code is invalid or outdated. twofa_label_enter_otp: Please enter your two-factor authentication code. twofa_too_many_tries: Too many tries. twofa_resend_code: Resend code twofa_code_sent: An authentication code has been sent to you. twofa_generate_backup_codes: Generate backup codes twofa_text_generate_backup_codes_confirmation: This will invalidate all existing backup codes and generate new ones. Would you like to continue? twofa_notice_backup_codes_generated: Your backup codes have been generated. twofa_warning_backup_codes_generated_invalidated: New backup codes have been generated. Your existing codes from %{time} are now invalid. twofa_label_backup_codes: Two-factor authentication backup codes twofa_text_backup_codes_hint: Use these codes instead of a one-time password should you not have access to your second factor. Each code can only be used once. It is recommended to print and store them in a safe place. twofa_text_backup_codes_created_at: Backup codes generated %{datetime}. twofa_backup_codes_already_shown: Backup codes cannot be shown again, please generate new backup codes if required. error_can_not_execute_macro_html: Error executing the %{name} macro (%{error}) error_macro_does_not_accept_block: This macro does not accept a block of text error_childpages_macro_no_argument: With no argument, this macro can be called from wiki pages only error_circular_inclusion: Circular inclusion detected error_page_not_found: Page not found error_filename_required: Filename required error_invalid_size_parameter: Invalid size parameter error_attachment_not_found: Attachment %{name} not found permission_delete_project: Delete the project field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/vi.yml000066400000000000000000002411001500112024600171620ustar00rootroot00000000000000# Vietnamese translation for Ruby on Rails # by # Kevin Nguyen (https://www.enziin.org) # Do Hai Bac (dohaibac@gmail.com) # Dao Thanh Ngoc (ngocdaothanh@gmail.com, http://github.com/ngocdaothanh/rails-i18n/tree/master) vi: number: # Used in number_with_delimiter() # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' format: # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) separator: "," # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) delimiter: "." # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) precision: 3 # Used in number_to_currency() currency: format: # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) format: "%n %u" unit: "đồng" # These three are to override number.format and are optional separator: "," delimiter: "." precision: 2 # Used in number_to_percentage() percentage: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_precision() precision: format: # These three are to override number.format and are optional # separator: delimiter: "" # precision: # Used in number_to_human_size() human: format: # These three are to override number.format and are optional # separator: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: half_a_minute: "30 giây" less_than_x_seconds: one: "chưa tá»›i 1 giây" other: "chưa tá»›i %{count} giây" x_seconds: one: "1 giây" other: "%{count} giây" less_than_x_minutes: one: "chưa tá»›i 1 phút" other: "chưa tá»›i %{count} phút" x_minutes: one: "1 phút" other: "%{count} phút" about_x_hours: one: "khoảng 1 giá»" other: "khoảng %{count} giá»" x_hours: one: "1 giá»" other: "%{count} giá»" x_days: one: "1 ngày" other: "%{count} ngày" about_x_months: one: "khoảng 1 tháng" other: "khoảng %{count} tháng" x_months: one: "1 tháng" other: "%{count} tháng" about_x_years: one: "khoảng 1 năm" other: "khoảng %{count} năm" over_x_years: one: "hÆ¡n 1 năm" other: "hÆ¡n %{count} năm" almost_x_years: one: "gần 1 năm" other: "gần %{count} năm" prompts: year: "Năm" month: "Tháng" day: "Ngày" hour: "Giá»" minute: "Phút" second: "Giây" activerecord: errors: template: header: one: "má»™t lá»—i ngăn không cho lưu %{model} này" other: "%{count} lá»—i ngăn không cho lưu %{model} này" # The variable :count is also available body: "Có lá»—i vá»›i các mục sau:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: inclusion: "không có trong danh sách" exclusion: "đã được giành trước" invalid: "không hợp lệ" confirmation: "không khá»›p vá»›i xác nhận" accepted: "phải được đồng ý" empty: "không thể rá»—ng" blank: "không thể để trắng" too_long: "quá dài (tối Ä‘a %{count} ký tá»±)" too_short: "quá ngắn (tối thiểu %{count} ký tá»±)" wrong_length: "độ dài không đúng (phải là %{count} ký tá»±)" taken: "đã có" not_a_number: "không phải là số" greater_than: "phải lá»›n hÆ¡n %{count}" greater_than_or_equal_to: "phải lá»›n hÆ¡n hoặc bằng %{count}" equal_to: "phải bằng %{count}" less_than: "phải nhá» hÆ¡n %{count}" less_than_or_equal_to: "phải nhá» hÆ¡n hoặc bằng %{count}" odd: "phải là số chẵn" even: "phải là số lẻ" greater_than_start_date: "phải Ä‘i sau ngày bắt đầu" not_same_project: "không thuá»™c cùng dá»± án" circular_dependency: "quan hệ có thể gây ra lặp vô tận" cant_link_an_issue_with_a_descendant: "Má»™t vấn đỠkhông thể liên kết tá»›i má»™t trong số những tác vụ con cá»§a nó" earlier_than_minimum_start_date: "không thể sá»›m hÆ¡n %{date} vì các vấn đỠtrước đó" not_a_regexp: "không phải là má»™t biểu thức chính quy hợp lệ" open_issue_with_closed_parent: "Má»™t vấn đỠmở không thể được đính kèm vá»›i má»™t nhiệm vụ cha đã đóng" must_contain_uppercase: "phải chứa ký tá»± hoa (A-Z)" must_contain_lowercase: "phải chứa ký tá»± thưá»ng (a-z)" must_contain_digits: "phaỉ chứa chữ số (0-9)" must_contain_special_chars: "cần phải có ký tá»± đặc biệt (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%d-%m-%Y" short: "%d %b" long: "%d %B, %Y" day_names: ["Chá»§ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"] abbr_day_names: ["Chá»§ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, "Tháng má»™t", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mưá»i", "Tháng mưá»i má»™t", "Tháng mưá»i hai"] abbr_month_names: [~, "Tháng má»™t", "Tháng hai", "Tháng ba", "Tháng tư", "Tháng năm", "Tháng sáu", "Tháng bảy", "Tháng tám", "Tháng chín", "Tháng mưá»i", "Tháng mưá»i má»™t", "Tháng mưá»i hai"] # Used in date_select and datime_select. order: - :day - :month - :year time: formats: default: "%a, %d %b %Y %H:%M:%S %z" time: "%H:%M" short: "%d %b %H:%M" long: "%d %B, %Y %H:%M" am: "sáng" pm: "chiá»u" # Used in array.to_sentence. support: array: words_connector: ", " two_words_connector: " và " last_word_connector: ", và " actionview_instancetag_blank_option: Vui lòng chá»n general_text_No: 'Không' general_text_Yes: 'Có' general_text_no: 'không' general_text_yes: 'có' general_lang_name: 'Vietnamese (Tiếng Việt)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_fontname: DejaVuSans general_pdf_monospaced_fontname: DejaVuSans general_first_day_of_week: '1' notice_account_updated: Cập nhật tài khoản thành công. notice_account_invalid_credentials: Tài khoản hoặc mật mã không hợp lệ notice_account_password_updated: Cập nhật mật mã thành công. notice_account_wrong_password: Sai mật mã notice_account_register_done: Tài khoản được tạo thành công. Äể kích hoạt vui lòng làm theo hướng dẫn trong email gá»­i đến bạn. notice_can_t_change_password: Tài khoản được chứng thá»±c từ nguồn bên ngoài. Không thể đổi mật mã cho loại chứng thá»±c này. notice_account_lost_email_sent: Thông tin để đổi mật mã má»›i đã gá»­i đến bạn qua email. notice_account_activated: Tài khoản vừa được kích hoạt. Bây giá» bạn có thể đăng nhập. notice_successful_create: Tạo thành công. notice_successful_update: Cập nhật thành công. notice_successful_delete: Xóa thành công. notice_successful_connection: Kết nối thành công. notice_file_not_found: Trang bạn cố xem không tồn tại hoặc đã chuyển. notice_locking_conflict: Thông tin Ä‘ang được cập nhật bởi ngưá»i khác. Hãy chép ná»™i dung cập nhật cá»§a bạn vào clipboard. notice_not_authorized: Bạn không có quyá»n xem trang này. notice_email_sent: "Email đã được gá»­i tá»›i %{value}" notice_email_error: "Lá»—i xảy ra khi gá»­i email (%{value})" notice_feeds_access_key_reseted: Mã số chứng thá»±c Atom đã được tạo lại. notice_failed_to_save_issues: "Thất bại khi lưu %{count} vấn đỠtrong %{total} lá»±a chá»n: %{ids}." notice_account_pending: "Thông tin tài khoản đã được tạo ra và Ä‘ang chá» chứng thá»±c từ ban quản trị." notice_default_data_loaded: Äã nạp cấu hình mặc định. notice_unable_delete_version: Không thể xóa phiên bản. error_can_t_load_default_data: "Không thể nạp cấu hình mặc định: %{value}" error_scm_not_found: "Không tìm thấy dữ liệu trong kho chứa." error_scm_command_failed: "Lá»—i xảy ra khi truy cập vào kho lưu trữ: %{value}" error_scm_annotate: "Äầu vào không tồn tại hoặc không thể chú thích." error_issue_not_found_in_project: 'Vấn đỠkhông tồn tại hoặc không thuá»™c dá»± án' mail_subject_lost_password: "%{value}: mật mã cá»§a bạn" mail_body_lost_password: "Äể đổi mật mã, hãy click chuá»™t vào liên kết sau:" mail_subject_register: "%{value}: kích hoạt tài khoản" mail_body_register: "Äể kích hoạt tài khoản, hãy click chuá»™t vào liên kết sau:" mail_body_account_information_external: " Bạn có thể dùng tài khoản %{value} để đăng nhập." mail_body_account_information: Thông tin vá» tài khoản mail_subject_account_activation_request: "%{value}: Yêu cầu chứng thá»±c tài khoản" mail_body_account_activation_request: "Ngưá»i dùng (%{value}) má»›i đăng ký và cần bạn xác nhận:" mail_subject_reminder: "%{count} vấn đỠhết hạn trong các %{days} ngày tá»›i" mail_body_reminder: "%{count} công việc bạn được phân công sẽ hết hạn trong %{days} ngày tá»›i:" field_name: Tên dá»± án field_description: Mô tả field_summary: Tóm tắt field_is_required: Bắt buá»™c field_firstname: Tên đệm và Tên field_lastname: Há» field_mail: Email field_filename: Tập tin field_filesize: Cỡ field_downloads: Tải vá» field_author: Tác giả field_created_on: Tạo field_updated_on: Cập nhật field_field_format: Äịnh dạng field_is_for_all: Cho má»i dá»± án field_possible_values: Giá trị hợp lệ field_regexp: Biểu thức chính quy field_min_length: Chiá»u dài tối thiểu field_max_length: Chiá»u dài tối Ä‘a field_value: Giá trị field_category: Chá»§ đỠfield_title: Tiêu đỠfield_project: Dá»± án field_issue: Vấn đỠfield_status: Trạng thái field_notes: Ghi chú field_is_closed: Vấn đỠđóng field_is_default: Giá trị mặc định field_tracker: Kiểu vấn đỠfield_subject: Chá»§ đỠfield_due_date: Hết hạn field_assigned_to: Phân công cho field_priority: Mức ưu tiên field_fixed_version: Phiên bản field_user: Ngưá»i dùng field_role: Quyá»n field_homepage: Trang chá»§ field_is_public: Công cá»™ng field_parent: Dá»± án con cá»§a field_is_in_roadmap: Có thể thấy trong Kế hoạch field_login: Äăng nhập field_mail_notification: Thông báo qua email field_admin: Quản trị field_last_login_on: Kết nối cuối field_language: Ngôn ngữ field_effective_date: Ngày field_password: Mật khẩu field_new_password: Mật khẩu má»›i field_password_confirmation: Nhập lại mật khẩu field_version: Phiên bản field_type: Kiểu field_host: Host field_port: Cổng field_account: Tài khoản field_base_dn: Base DN field_attr_login: Thuá»™c tính đăng nhập field_attr_firstname: Thuá»™c tính tên đệm và Tên field_attr_lastname: Thuá»™c tính Há» field_attr_mail: Thuá»™c tính Email field_onthefly: Tạo ngưá»i dùng tức thì field_start_date: Bắt đầu field_done_ratio: Tiến độ field_auth_source: Chế độ xác thá»±c field_hide_mail: Không hiện email cá»§a tôi field_comments: Bình luận field_url: URL field_start_page: Trang bắt đầu field_subproject: Dá»± án con field_hours: Giá» field_activity: Hoạt động field_spent_on: Ngày field_identifier: Mã nhận dạng field_is_filter: Dùng như bá»™ lá»c field_issue_to: Vấn đỠliên quan field_delay: Äá»™ trá»… field_assignable: Vấn đỠcó thể gán cho vai trò này field_redirect_existing_links: Chuyển hướng trang đã có field_estimated_hours: Thá»i gian ước lượng field_column_names: Cá»™t field_time_zone: Múi giá» field_searchable: Tìm kiếm được field_default_value: Giá trị mặc định field_comments_sorting: Liệt kê bình luận field_parent_title: Trang mẹ setting_app_title: Tá»±a đỠứng dụng setting_welcome_text: Thông Ä‘iệp chào mừng setting_default_language: Ngôn ngữ mặc định setting_login_required: Cần đăng nhập setting_self_registration: Tá»± chứng thá»±c setting_attachment_max_size: Cỡ tối Ä‘a cá»§a tập tin đính kèm setting_issues_export_limit: Giá»›i hạn Export vấn đỠsetting_mail_from: Äịa chỉ email gá»­i thông báo setting_host_name: Tên miá»n và đưá»ng dẫn setting_text_formatting: Äịnh dạng bài viết setting_wiki_compression: Nén lịch sá»­ Wiki setting_feeds_limit: Giá»›i hạn ná»™i dung cá»§a feed setting_default_projects_public: Dá»± án mặc định là public setting_autofetch_changesets: Tá»± động tìm nạp commits setting_sys_api_enabled: Cho phép WS quản lý kho chứa setting_commit_ref_keywords: Từ khóa tham khảo setting_commit_fix_keywords: Từ khóa chỉ vấn đỠđã giải quyết setting_autologin: Tá»± động đăng nhập setting_date_format: Äịnh dạng ngày setting_time_format: Äịnh dạng giá» setting_cross_project_issue_relations: Cho phép quan hệ chéo giữa các dá»± án setting_issue_list_default_columns: Các cá»™t mặc định hiển thị trong danh sách vấn đỠsetting_emails_footer: Chữ ký cuối thư setting_protocol: Giao thức setting_per_page_options: Tùy chá»n đối tượng má»—i trang setting_user_format: Äịnh dạng hiển thị ngưá»i dùng setting_activity_days_default: Ngày hiển thị hoạt động cá»§a dá»± án setting_display_subprojects_issues: Hiển thị mặc định vấn đỠcá»§a dá»± án con ở dá»± án chính setting_enabled_scm: Cho phép SCM setting_mail_handler_api_enabled: Cho phép WS cho các email tá»›i setting_mail_handler_api_key: Mã số API setting_sequential_project_identifiers: Tá»± sinh chuá»—i ID dá»± án project_module_issue_tracking: Theo dõi vấn đỠproject_module_time_tracking: Theo dõi thá»i gian project_module_news: Tin tức project_module_documents: Tài liệu project_module_files: Tập tin project_module_wiki: Wiki project_module_repository: Kho lưu trữ project_module_boards: Diá»…n đàn label_user: Tài khoản label_user_plural: Tài khoản label_user_new: Tài khoản má»›i label_project: Dá»± án label_project_new: Dá»± án má»›i label_project_plural: Dá»± án label_x_projects: zero: không có dá»± án one: má»™t dá»± án other: "%{count} dá»± án" label_project_all: Má»i dá»± án label_project_latest: Dá»± án má»›i nhất label_issue: Vấn đỠlabel_issue_new: Tạo vấn đỠmá»›i label_issue_plural: Vấn đỠlabel_issue_view_all: Tất cả vấn đỠlabel_issues_by: "Vấn đỠcá»§a %{value}" label_issue_added: Äã thêm vấn đỠlabel_issue_updated: Vấn đỠđược cập nhật label_document: Tài liệu label_document_new: Tài liệu má»›i label_document_plural: Tài liệu label_document_added: Äã thêm tài liệu label_role: Vai trò label_role_plural: Vai trò label_role_new: Vai trò má»›i label_role_and_permissions: Vai trò và Quyá»n hạn label_member: Thành viên label_member_new: Thành viên má»›i label_member_plural: Thành viên label_tracker: Kiểu vấn đỠlabel_tracker_plural: Kiểu vấn đỠlabel_tracker_new: Tạo kiểu vấn đỠmá»›i label_workflow: Quy trình làm việc label_issue_status: Trạng thái vấn đỠlabel_issue_status_plural: Trạng thái vấn đỠlabel_issue_status_new: Thêm trạng thái label_issue_category: Chá»§ đỠlabel_issue_category_plural: Chá»§ đỠlabel_issue_category_new: Chá»§ đỠmá»›i label_custom_field: Trưá»ng tùy biến label_custom_field_plural: Trưá»ng tùy biến label_custom_field_new: Thêm Trưá»ng tùy biến label_enumerations: Liệt kê label_enumeration_new: Thêm giá trị label_information: Thông tin label_information_plural: Thông tin label_register: Äăng ký label_password_lost: Phục hồi mật mã label_home: Trang chính label_my_page: Trang riêng label_my_account: Cá nhân label_my_projects: Dá»± án cá»§a bạn label_administration: Quản trị label_login: Äăng nhập label_logout: Thoát label_help: Giúp đỡ label_reported_issues: Công việc bạn phân công label_assigned_to_me_issues: Công việc được phân công label_registered_on: Ngày tham gia label_activity: Hoạt động label_new: Má»›i label_logged_as: Tài khoản » label_environment: Môi trưá»ng label_authentication: Xác thá»±c label_auth_source: Chế độ xác thá»±c label_auth_source_new: Chế độ xác thá»±c má»›i label_auth_source_plural: Chế độ xác thá»±c label_subproject_plural: Dá»± án con label_and_its_subprojects: "%{value} và dá»± án con" label_min_max_length: Äá»™ dài nhá» nhất - lá»›n nhất label_list: Danh sách label_date: Ngày label_integer: Số nguyên label_float: Số thá»±c label_boolean: Boolean label_string: Văn bản label_text: Văn bản dài label_attribute: Thuá»™c tính label_attribute_plural: Các thuá»™c tính label_no_data: Chưa có thông tin gì label_change_status: Äổi trạng thái label_history: Lược sá»­ label_attachment: Tập tin label_attachment_new: Thêm tập tin má»›i label_attachment_delete: Xóa tập tin label_attachment_plural: Tập tin label_file_added: Äã thêm tập tin label_report: Báo cáo label_report_plural: Báo cáo label_news: Tin tức label_news_new: Thêm tin label_news_plural: Tin tức label_news_latest: Tin má»›i label_news_view_all: Xem má»i tin label_news_added: Äã thêm tin label_settings: Thiết lập label_overview: Tóm tắt label_version: Phiên bản label_version_new: Phiên bản má»›i label_version_plural: Phiên bản label_confirmation: Khẳng định label_export_to: 'Äịnh dạng khác cá»§a trang này:' label_read: Äá»c... label_public_projects: Các dá»± án công cá»™ng label_open_issues: mở label_open_issues_plural: mở label_closed_issues: đóng label_closed_issues_plural: đóng label_x_open_issues_abbr: zero: 0 mở one: 1 mở other: "%{count} mở" label_x_closed_issues_abbr: zero: 0 đóng one: 1 đóng other: "%{count} đóng" label_total: Tổng cá»™ng label_permissions: Quyá»n label_current_status: Trạng thái hiện tại label_new_statuses_allowed: Trạng thái má»›i được phép label_all: Tất cả label_none: không label_nobody: Chẳng ai label_next: Sau label_previous: Trước label_used_by: ÄÆ°á»£c dùng bởi label_details: Chi tiết label_add_note: Thêm ghi chú label_calendar: Lịch label_months_from: tháng từ label_gantt: Biểu đồ sá»± kiện label_internal: Ná»™i bá»™ label_last_changes: "%{count} thay đổi cuối" label_change_view_all: Xem má»i thay đổi label_comment: Bình luận label_comment_plural: Bình luận label_x_comments: zero: không có bình luận one: 1 bình luận other: "%{count} bình luận" label_comment_add: Thêm bình luận label_comment_added: Äã thêm bình luận label_comment_delete: Xóa bình luận label_query: Truy vấn riêng label_query_plural: Truy vấn riêng label_query_new: Truy vấn má»›i label_filter_add: Thêm lá»c label_filter_plural: Bá»™ lá»c label_equals: là label_not_equals: không là label_in_less_than: ít hÆ¡n label_in_more_than: nhiá»u hÆ¡n label_in: trong label_today: hôm nay label_yesterday: hôm qua label_this_week: tuần này label_last_week: tuần trước label_last_n_days: "%{count} ngày cuối" label_this_month: tháng này label_last_month: tháng cuối label_this_year: năm này label_date_range: Thá»i gian label_less_than_ago: cách đây dưới label_more_than_ago: cách đây hÆ¡n label_ago: cách đây label_contains: chứa label_not_contains: không chứa label_day_plural: ngày label_repository: Kho lưu trữ label_repository_plural: Kho lưu trữ label_revision: Bản Ä‘iá»u chỉnh label_revision_plural: Bản Ä‘iá»u chỉnh label_associated_revisions: Các bản Ä‘iá»u chỉnh được ghép label_added: thêm label_modified: đổi label_copied: chép label_renamed: đổi tên label_deleted: xóa label_latest_revision: Bản Ä‘iá»u chỉnh cuối cùng label_latest_revision_plural: Bản Ä‘iá»u chỉnh cuối cùng label_view_revisions: Xem các bản Ä‘iá»u chỉnh label_max_size: Dung lượng tối Ä‘a label_roadmap: Kế hoạch label_roadmap_due_in: "Hết hạn trong %{value}" label_roadmap_overdue: "Trá»… %{value}" label_roadmap_no_issues: Không có vấn đỠcho phiên bản này label_search: Tìm label_result_plural: Kết quả label_all_words: Má»i từ label_wiki: Wiki label_wiki_edit: Sá»­a Wiki label_wiki_edit_plural: Thay đổi wiki label_wiki_page: Trang wiki label_wiki_page_plural: Trang wiki label_index_by_title: Danh sách theo tên label_index_by_date: Danh sách theo ngày label_current_version: Bản hiện tại label_preview: Xem trước label_feed_plural: Nguồn cấp tin label_changes_details: Chi tiết cá»§a má»i thay đổi label_issue_tracking: Vấn đỠlabel_spent_time: Thá»i gian label_f_hour: "%{value} giá»" label_f_hour_plural: "%{value} giá»" label_time_tracking: Theo dõi thá»i gian label_change_plural: Thay đổi label_statistics: Thống kê label_commits_per_month: Commits má»—i tháng label_commits_per_author: Commits má»—i tác giả label_view_diff: So sánh label_diff_inline: inline label_diff_side_by_side: bên cạnh nhau label_options: Tùy chá»n label_copy_workflow_from: Sao chép quy trình từ label_permissions_report: Thống kê các quyá»n label_watched_issues: Chá»§ đỠđang theo dõi label_related_issues: Liên quan label_applied_status: Trạng thái áp dụng label_loading: Äang xá»­ lý... label_relation_new: Quan hệ má»›i label_relation_delete: Xóa quan hệ label_relates_to: liên quan label_duplicates: trùng vá»›i label_duplicated_by: bị trùng bởi label_blocks: chặn label_blocked_by: chặn bởi label_precedes: Ä‘i trước label_follows: Ä‘i sau label_stay_logged_in: Lưu thông tin đăng nhập label_disabled: Bị vô hiệu label_show_completed_versions: Xem phiên bản đã hoàn thành label_me: tôi label_board: Diá»…n đàn label_board_new: Tạo diá»…n đàn má»›i label_board_plural: Diá»…n đàn label_topic_plural: Chá»§ đỠlabel_message_plural: Diá»…n đàn label_message_last: Bài cuối label_message_new: Tạo bài má»›i label_message_posted: Äã thêm bài viết label_reply_plural: Hồi âm label_send_information: Gá»­i thông tin đến ngưá»i dùng qua email label_year: Năm label_month: Tháng label_week: Tuần label_date_from: Từ label_date_to: Äến label_language_based: Theo ngôn ngữ ngưá»i dùng label_sort_by: "Sắp xếp theo %{value}" label_send_test_email: Gá»­i má»™t email kiểm tra label_feeds_access_key_created_on: "Mã chứng thá»±c Atom được tạo ra cách đây %{value}" label_module_plural: Module label_added_time_by: "Thêm bởi %{author} cách đây %{age}" label_updated_time: "Cập nhật cách đây %{value}" label_jump_to_a_project: Nhảy đến dá»± án... label_file_plural: Tập tin label_changeset_plural: Thay đổi label_default_columns: Cá»™t mặc định label_no_change_option: (không đổi) label_bulk_edit_selected_issues: Sá»­a nhiá»u vấn đỠlabel_theme: Giao diện label_default: Mặc định label_search_titles_only: Chỉ tìm trong tá»±a đỠlabel_user_mail_option_all: "Má»i sá»± kiện trên má»i dá»± án cá»§a tôi" label_user_mail_option_selected: "Má»i sá»± kiện trên các dá»± án được chá»n..." label_user_mail_no_self_notified: "Äừng gá»­i email vá» các thay đổi do chính tôi thá»±c hiện" label_registration_activation_by_email: kích hoạt tài khoản qua email label_registration_manual_activation: kích hoạt tài khoản thá»§ công label_registration_automatic_activation: kích hoạt tài khoản tá»± động label_display_per_page: "má»—i trang: %{value}" label_age: Thá»i gian label_change_properties: Thay đổi thuá»™c tính label_general: Tổng quan label_scm: SCM label_plugins: Module label_ldap_authentication: Chứng thá»±c LDAP label_downloads_abbr: Số lượng Download label_optional_description: Mô tả bổ sung label_add_another_file: Thêm tập tin khác label_preferences: Cấu hình label_chronological_order: Bài cÅ© xếp trước label_reverse_chronological_order: Bài má»›i xếp trước label_incoming_emails: Nhận mail label_generate_key: Tạo mã label_issue_watchers: Theo dõi button_login: Äăng nhập button_submit: Gá»­i button_save: Lưu button_check_all: Äánh dấu tất cả button_uncheck_all: Bá» dấu tất cả button_delete: Xóa button_create: Tạo button_test: Kiểm tra button_edit: Sá»­a button_add: Thêm button_change: Äổi button_apply: Ãp dụng button_clear: Xóa button_lock: Khóa button_unlock: Mở khóa button_download: Tải vá» button_list: Liệt kê button_view: Xem button_move: Chuyển button_back: Quay lại button_cancel: Bá» qua button_activate: Kích hoạt button_sort: Sắp xếp button_log_time: Thêm thá»i gian button_rollback: Quay trở lại phiên bản này button_watch: Theo dõi button_unwatch: Bá» theo dõi button_reply: Trả lá»i button_archive: Äóng băng button_unarchive: Xả băng button_reset: Tạo lại button_rename: Äổi tên button_change_password: Äổi mật mã button_copy: Sao chép button_annotate: Chú giải button_update: Cập nhật button_configure: Cấu hình button_quote: Trích dẫn status_active: Äang hoạt động status_registered: Má»›i đăng ký status_locked: Äã khóa text_select_mail_notifications: Chá»n hành động đối vá»›i má»—i email sẽ gá»­i. text_regexp_info: ví dụ ^[A-Z0-9]+$ text_project_destroy_confirmation: Bạn có chắc chắn muốn xóa dá»± án này và các dữ liệu liên quan ? text_subprojects_destroy_warning: "Dá»± án con cá»§a : %{value} cÅ©ng sẽ bị xóa." text_workflow_edit: Chá»n má»™t vai trò và má»™t vấn đỠđể sá»­a quy trình text_are_you_sure: Bạn chắc chứ? text_tip_issue_begin_day: ngày bắt đầu text_tip_issue_end_day: ngày kết thúc text_tip_issue_begin_end_day: bắt đầu và kết thúc cùng ngày text_caracters_maximum: "Tối Ä‘a %{count} ký tá»±." text_caracters_minimum: "Phải gồm ít nhất %{count} ký tá»±." text_length_between: "Chiá»u dài giữa %{min} và %{max} ký tá»±." text_tracker_no_workflow: Không có quy trình được định nghÄ©a cho theo dõi này text_unallowed_characters: Ký tá»± không hợp lệ text_comma_separated: Nhiá»u giá trị được phép (cách nhau bởi dấu phẩy). text_issues_ref_in_commit_messages: Vấn đỠtham khảo và cố định trong ghi chú commit text_issue_added: "Vấn đỠ%{id} đã được báo cáo bởi %{author}." text_issue_updated: "Vấn đỠ%{id} đã được cập nhật bởi %{author}." text_wiki_destroy_confirmation: Bạn có chắc chắn muốn xóa trang wiki này và tất cả ná»™i dung cá»§a nó ? text_issue_category_destroy_question: "Má»™t số vấn đỠ(%{count}) được gán cho danh mục này. Bạn muốn làm gì ?" text_issue_category_destroy_assignments: Gỡ bá» danh mục được phân công text_issue_category_reassign_to: Gán lại vấn đỠcho danh mục này text_user_mail_option: "Vá»›i các dá»± án không được chá»n, bạn chỉ có thể nhận được thông báo vá» các vấn đỠbạn đăng ký theo dõi hoặc có liên quan đến bạn (chẳng hạn, vấn đỠđược gán cho bạn)." text_no_configuration_data: "Quyá»n, theo dõi, tình trạng vấn đỠvà quy trình chưa được cấu hình.\nBắt buá»™c phải nạp cấu hình mặc định. Bạn sẽ thay đổi nó được sau khi đã nạp." text_load_default_configuration: Nạp lại cấu hình mặc định text_status_changed_by_changeset: "Ãp dụng trong changeset : %{value}." text_issues_destroy_confirmation: 'Bạn có chắc chắn muốn xóa các vấn đỠđã chá»n ?' text_select_project_modules: 'Chá»n các module cho dá»± án:' text_default_administrator_account_changed: Thay đổi tài khoản quản trị mặc định text_file_repository_writable: Cho phép ghi thư mục đính kèm text_minimagick_available: Trạng thái MiniMagick text_destroy_time_entries_question: "Thá»i gian %{hours} giỠđã báo cáo trong vấn đỠbạn định xóa. Bạn muốn làm gì tiếp ?" text_destroy_time_entries: Xóa thá»i gian báo cáo text_assign_time_entries_to_project: Gán thá»i gian báo cáo cho dá»± án text_reassign_time_entries: 'Gán lại thá»i gian báo cáo cho Vấn đỠnày:' text_user_wrote: "%{value} đã viết:" text_user_wrote_in: "%{value} đã viết (%{link}):" text_enumeration_destroy_question: "%{count} đối tượng được gán giá trị này." text_enumeration_category_reassign_to: 'Gán lại giá trị này:' text_email_delivery_not_configured: "Cấu hình gá»­i Email chưa được đặt, và chức năng thông báo bị loại bá».\nCấu hình máy chá»§ SMTP cá»§a bạn ở file config/configuration.yml và khởi động lại để kích hoạt chúng." default_role_manager: 'Äiá»u hành ' default_role_developer: 'Phát triển ' default_role_reporter: Báo cáo default_tracker_bug: Lá»—i default_tracker_feature: Tính năng default_tracker_support: Há»— trợ default_issue_status_new: Má»›i default_issue_status_in_progress: Äang tiến hành default_issue_status_resolved: Äã được giải quyết default_issue_status_feedback: Phản hồi default_issue_status_closed: Äã đóng default_issue_status_rejected: Từ chối default_doc_category_user: Tài liệu ngưá»i dùng default_doc_category_tech: Tài liệu kỹ thuật default_priority_low: Thấp default_priority_normal: Bình thưá»ng default_priority_high: Cao default_priority_urgent: Khẩn cấp default_priority_immediate: Trung bình default_activity_design: Thiết kế default_activity_development: Phát triển enumeration_issue_priorities: Mức độ ưu tiên vấn đỠenumeration_doc_categories: Danh mục tài liệu enumeration_activities: Hoạt động setting_plain_text_mail: Mail dạng text đơn giản (không dùng HTML) setting_gravatar_enabled: Dùng biểu tượng Gravatar permission_edit_project: Chỉnh dá»± án permission_select_project_modules: Chá»n Module permission_manage_members: Quản lý thành viên permission_manage_versions: Quản lý phiên bản permission_manage_categories: Quản lý chá»§ đỠpermission_add_issues: Thêm vấn đỠpermission_edit_issues: Sá»­a vấn đỠpermission_manage_issue_relations: Quản lý quan hệ vấn đỠpermission_add_issue_notes: Thêm chú thích permission_edit_issue_notes: Sá»­a chú thích permission_edit_own_issue_notes: Sá»­a chú thích cá nhân permission_delete_issues: Xóa vấn đỠpermission_manage_public_queries: Quản lý truy vấn công cá»™ng permission_save_queries: Lưu truy vấn permission_view_gantt: Xem biểu đồ sá»± kiện permission_view_calendar: Xem lịch permission_view_issue_watchers: Xem những ngưá»i theo dõi permission_add_issue_watchers: Thêm ngưá»i theo dõi permission_log_time: Lưu thá»i gian đã qua permission_view_time_entries: Xem thá»i gian đã qua permission_edit_time_entries: Xem nhật ký thá»i gian permission_edit_own_time_entries: Sá»­a thá»i gian đã lưu permission_manage_news: Quản lý tin má»›i permission_comment_news: Chú thích vào tin má»›i permission_view_documents: Xem tài liệu permission_manage_files: Quản lý tập tin permission_view_files: Xem tập tin permission_manage_wiki: Quản lý wiki permission_rename_wiki_pages: Äổi tên trang wiki permission_delete_wiki_pages: Xóa trang wiki permission_view_wiki_pages: Xem wiki permission_view_wiki_edits: Xem lược sá»­ trang wiki permission_edit_wiki_pages: Sá»­a trang wiki permission_delete_wiki_pages_attachments: Xóa tệp đính kèm permission_protect_wiki_pages: Bảo vệ trang wiki permission_manage_repository: Quản lý kho lưu trữ permission_browse_repository: Duyệt kho lưu trữ permission_view_changesets: Xem các thay đổi permission_commit_access: Truy cập commit permission_manage_boards: Quản lý diá»…n đàn permission_view_messages: Xem bài viết permission_add_messages: Gá»­i bài viết permission_edit_messages: Sá»­a bài viết permission_edit_own_messages: Sá»­a bài viết cá nhân permission_delete_messages: Xóa bài viết permission_delete_own_messages: Xóa bài viết cá nhân label_example: Ví dụ text_repository_usernames_mapping: "Lá»±a chá»n hoặc cập nhật ánh xạ ngưá»i dùng hệ thống vá»›i ngưá»i dùng trong kho lưu trữ.\nKhi ngưá»i dùng trùng hợp vá» tên và email sẽ được tá»± động ánh xạ." permission_delete_own_messages: Xóa thông Ä‘iệp label_user_activity: "%{value} hoạt động" label_updated_time_by: "Cập nhật bởi %{author} cách đây %{age}" text_diff_truncated: '... Thay đổi này đã được cắt bá»›t do nó vượt qua giá»›i hạn kích thước có thể hiển thị.' setting_diff_max_lines_displayed: Số dòng thay đổi tối Ä‘a được hiển thị text_plugin_assets_writable: Cho phép ghi thư mục Plugin warning_attachments_not_saved: "%{count} file không được lưu." button_create_and_continue: Tạo và tiếp tục text_custom_field_possible_values_info: 'Má»™t dòng cho má»—i giá trị' label_display: Hiển thị field_editable: Có thể sá»­a được setting_repository_log_display_limit: Số lượng tối Ä‘a các bản Ä‘iá»u chỉnh hiển thị trong file log setting_file_max_size_displayed: Kích thước tối Ä‘a cá»§a tệp tin văn bản field_watcher: Ngưá»i quan sát field_content: Ná»™i dung label_descending: Giảm dần label_sort: Sắp xếp label_ascending: Tăng dần label_date_from_to: "Từ %{start} tá»›i %{end}" label_greater_or_equal: ">=" label_less_or_equal: "<=" text_wiki_page_destroy_question: "Trang này có %{descendants} trang con và trang cháu. Bạn muốn làm gì tiếp?" text_wiki_page_reassign_children: Gán lại trang con vào trang mẹ này text_wiki_page_nullify_children: Giữ trang con như trang gốc text_wiki_page_destroy_children: Xóa trang con và tất cả trang con cháu cá»§a nó setting_password_min_length: Chiá»u dài tối thiểu cá»§a mật khẩu field_group_by: Nhóm kết quả bởi mail_subject_wiki_content_updated: "%{id} trang wiki đã được cập nhật" label_wiki_content_added: Äã thêm trang Wiki mail_subject_wiki_content_added: "%{id} trang wiki đã được thêm vào" mail_body_wiki_content_added: "Có %{id} trang wiki đã được thêm vào bởi %{author}." label_wiki_content_updated: Trang Wiki đã được cập nhật mail_body_wiki_content_updated: "Có %{id} trang wiki đã được cập nhật bởi %{author}." permission_add_project: Tạo dá»± án setting_new_project_user_role_id: Quyá»n được gán cho ngưá»i dùng không phải quản trị viên khi tạo dá»± án má»›i label_view_all_revisions: Xem tất cả bản Ä‘iá»u chỉnh label_tag: Thẻ label_branch: Nhánh error_no_tracker_in_project: Không có ai theo dõi dá»± án này. Hãy kiểm tra lại phần thiết lập cho dá»± án. error_no_default_issue_status: Không có vấn đỠmặc định được định nghÄ©a. Vui lòng kiểm tra cấu hình cá»§a bạn (Vào "Quản trị -> Trạng thái vấn Ä‘á»"). text_journal_changed: "%{label} thay đổi từ %{old} tá»›i %{new}" text_journal_set_to: "%{label} gán cho %{value}" text_journal_deleted: "%{label} xóa (%{old})" label_group_plural: Các nhóm label_group: Nhóm label_group_new: Thêm nhóm label_time_entry_plural: Thá»i gian đã sá»­ dụng text_journal_added: "%{label} %{value} được thêm" field_active: Tích cá»±c enumeration_system_activity: Hoạt động hệ thống permission_delete_issue_watchers: Xóa ngưá»i quan sát version_status_closed: đóng version_status_locked: khóa version_status_open: mở error_can_not_reopen_issue_on_closed_version: Má»™t vấn đỠđược gán cho phiên bản đã đóng không thể mở lại được label_user_anonymous: Ẩn danh button_move_and_follow: Di chuyển và theo setting_default_projects_modules: Các Module được kích hoạt mặc định cho dá»± án má»›i setting_gravatar_default: Ảnh Gravatar mặc định field_sharing: Chia sẻ label_version_sharing_hierarchy: Vá»›i thứ bậc dá»± án label_version_sharing_system: Vá»›i tất cả dá»± án label_version_sharing_descendants: Vá»›i dá»± án con label_version_sharing_tree: Vá»›i cây dá»± án label_version_sharing_none: Không chia sẻ error_can_not_archive_project: Dá»±a án này không thể lưu trữ được button_copy_and_follow: Sao chép và theo label_copy_source: Nguồn setting_issue_done_ratio: Tính toán tá»· lệ hoàn thành vấn đỠvá»›i setting_issue_done_ratio_issue_status: Sá»­ dụng trạng thái cá»§a vấn đỠerror_issue_done_ratios_not_updated: Tá»· lệ hoàn thành vấn đỠkhông được cập nhật. error_workflow_copy_target: Vui lòng lá»±a chá»n đích cá»§a theo dấu và quyá»n setting_issue_done_ratio_issue_field: Dùng trưá»ng vấn đỠlabel_copy_same_as_target: Tương tá»± như đích label_copy_target: Äích notice_issue_done_ratios_updated: Tá»· lệ hoàn thành vấn đỠđược cập nhật. error_workflow_copy_source: Vui lòng lá»±a chá»n nguồn cá»§a theo dấu hoặc quyá»n label_update_issue_done_ratios: Cập nhật tá»· lệ hoàn thành vấn đỠsetting_start_of_week: Äịnh dạng lịch permission_view_issues: Xem Vấn đỠlabel_display_used_statuses_only: Chỉ hiển thị trạng thái đã được dùng bởi theo dõi này label_revision_id: "Bản Ä‘iá»u chỉnh %{value}" label_api_access_key: Khoá truy cập API label_api_access_key_created_on: "Khoá truy cập API đựơc tạo cách đây %{value}. Khóa này được dùng cho eDesignLab Client." label_feeds_access_key: Khoá truy cập Atom notice_api_access_key_reseted: Khoá truy cập API cá»§a bạn đã được đặt lại. setting_rest_api_enabled: Cho phép dịch vụ web REST label_missing_api_access_key: Mất Khoá truy cập API label_missing_feeds_access_key: Mất Khoá truy cập Atom button_show: Hiện text_line_separated: Nhiá»u giá trị được phép(má»—i dòng má»™t giá trị). setting_mail_handler_body_delimiters: "Cắt bá»›t email sau những dòng :" permission_add_subprojects: Tạo Dá»± án con label_subproject_new: Thêm dá»± án con text_own_membership_delete_confirmation: |- Bạn Ä‘ang cố gỡ bá» má»™t số hoặc tất cả quyá»n cá»§a bạn vá»›i dá»± án này và có thể sẽ mất quyá»n thay đổi nó sau đó. Bạn có muốn tiếp tục? label_close_versions: Äóng phiên bản đã hoàn thành label_board_sticky: Chú ý label_board_locked: Äã khóa permission_export_wiki_pages: Xuất trang wiki setting_cache_formatted_text: Cache định dạng các ký tá»± permission_manage_project_activities: Quản lý hoạt động cá»§a dá»± án error_unable_delete_issue_status: Không thể xóa trạng thái vấn đỠ(%{value}) label_profile: Hồ sÆ¡ permission_manage_subtasks: Quản lý tác vụ con field_parent_issue: Tác vụ cha label_subtask_plural: Tác vụ con label_project_copy_notifications: Gá»­i email thông báo trong khi dá»± án được sao chép error_can_not_delete_custom_field: Không thể xóa trưá»ng tùy biến error_unable_to_connect: "Không thể kết nối (%{value})" error_can_not_remove_role: Quyá»n này Ä‘ang được dùng và không thể xóa được. error_can_not_delete_tracker_html: Theo dõi này chứa vấn đỠvà không thể xóa được.

    The following projects have issues with this tracker:
    %{projects}

    field_principal: Chá»§ yếu notice_failed_to_save_members: "Thất bại khi lưu thành viên : %{errors}." text_zoom_out: Thu nhá» text_zoom_in: Phóng to notice_unable_delete_time_entry: Không thể xóa mục time log. field_time_entries: Log time project_module_gantt: Biểu đồ Gantt project_module_calendar: Lịch button_edit_associated_wikipage: "Chỉnh sá»­a trang Wiki liên quan: %{page_title}" field_text: Trưá»ng văn bản setting_default_notification_option: Tuỳ chá»n thông báo mặc định label_user_mail_option_only_my_events: Chỉ những thứ tôi theo dõi hoặc liên quan label_user_mail_option_none: Không có sá»± kiện field_member_of_group: Nhóm thụ hưởng field_assigned_to_role: Quyá»n thụ hưởng notice_not_authorized_archived_project: Dá»± án bạn Ä‘ang có truy cập đã được lưu trữ. label_principal_search: "Tìm kiếm ngưá»i dùng hoặc nhóm:" label_user_search: "Tìm kiếm ngưá»i dùng:" field_visible: Nhìn thấy setting_emails_header: Tiêu đỠEmail setting_commit_logtime_activity_id: Cho phép ghi lại thá»i gian text_time_logged_by_changeset: "Ãp dụng trong changeset : %{value}." setting_commit_logtime_enabled: Cho phép time logging notice_gantt_chart_truncated: "Äồ thị đã được cắt bá»›t bởi vì nó đã vượt qua lượng thông tin tối Ä‘a có thể hiển thị :(%{max})" setting_gantt_items_limit: Lượng thông tin tối Ä‘a trên đồ thị gantt description_selected_columns: Các cá»™t được lá»±a chá»n field_warn_on_leaving_unsaved: Cảnh báo tôi khi rá»i má»™t trang có các ná»™i dung chưa lưu text_warn_on_leaving_unsaved: Trang hiện tại chứa ná»™i dung chưa lưu và sẽ bị mất nếu bạn rá»i trang này. label_my_queries: Các truy vấn tùy biến text_journal_changed_no_detail: "%{label} cập nhật" label_news_comment_added: Bình luận đã được thêm cho má»™t tin tức button_expand_all: Mở rá»™ng tất cả button_collapse_all: Thu gá»n tất cả label_additional_workflow_transitions_for_assignee: Chuyển đổi bổ sung cho phép khi ngưá»i sá»­ dụng là ngưá»i nhận chuyển nhượng label_additional_workflow_transitions_for_author: Các chuyển đổi bổ xung được phép khi ngưá»i dùng là tác giả label_bulk_edit_selected_time_entries: Sá»­a nhiá»u mục đã chá»n text_time_entries_destroy_confirmation: Bạn có chắc chắn muốn xóa bá» các mục đã chá»n? label_role_anonymous: Ẩn danh label_role_non_member: Không là thành viên label_issue_note_added: Ghi chú được thêm label_issue_status_updated: Trạng thái cập nhật label_issue_priority_updated: Cập nhật ưu tiên label_issues_visibility_own: Vấn đỠtạo bởi hoặc gán cho ngưá»i dùng field_issues_visibility: Vấn đỠđược nhìn thấy label_issues_visibility_all: Tất cả vấn đỠpermission_set_own_issues_private: Äặt vấn đỠsở hữu là riêng tư hoặc công cá»™ng field_is_private: Riêng tư permission_set_issues_private: Gán vấn đỠlà riêng tư hoặc công cá»™ng label_issues_visibility_public: Tất cả vấn đỠkhông riêng tư text_issues_destroy_descendants_confirmation: "Hành động này sẽ xóa %{count} tác vụ con." field_commit_logs_encoding: Mã hóa ghi chú Commit field_scm_path_encoding: Mã hóa đưá»ng dẫn text_scm_path_encoding_note: "Mặc định: UTF-8" field_path_to_repository: ÄÆ°á»ng dẫn tá»›i kho chứa field_root_directory: Thư mục gốc field_cvs_module: Module field_cvsroot: CVSROOT text_mercurial_repository_note: Kho chứa cục bá»™ (vd. /hgrepo, c:\hgrepo) text_scm_command: Lệnh text_scm_command_version: Phiên bản label_git_report_last_commit: Báo cáo lần Commit cuối cùng cho file và thư mục text_scm_config: Bạn có thể cấu hình lệnh Scm trong file config/configuration.yml. Vui lòng khởi động lại ứng dụng sau khi chỉnh sá»­a nó. text_scm_command_not_available: Lệnh Scm không có sẵn. Vui lòng kiểm tra lại thiết đặt trong phần Quản trị. notice_issue_successful_create: "Vấn đỠ%{id} đã được tạo." label_between: Ở giữa setting_issue_group_assignment: Cho phép gán vấn đỠđến các nhóm label_diff: Sá»± khác nhau text_git_repository_note: Kho chứa cục bá»™ và công cá»™ng (vd. /gitrepo, c:\gitrepo) description_query_sort_criteria_direction: Chiá»u sắp xếp description_project_scope: Phạm vi tìm kiếm description_filter: Lá»c description_user_mail_notification: Thiết lập email thông báo description_message_content: Ná»™i dung thông Ä‘iệp description_available_columns: Các cá»™t có sẵn description_issue_category_reassign: Chá»n danh mục vấn đỠdescription_search: Trưá»ng tìm kiếm description_notes: Các chú ý description_choose_project: Các dá»± án description_query_sort_criteria_attribute: Sắp xếp thuá»™c tính description_wiki_subpages_reassign: Chá»n má»™t trang cấp trên label_parent_revision: Cha label_child_revision: Con error_scm_annotate_big_text_file: Các mục không được chú thích, vì nó vượt quá kích thước tập tin văn bản tối Ä‘a. setting_default_issue_start_date_to_creation_date: Sá»­ dụng thá»i gian hiện tại khi tạo vấn đỠmá»›i button_edit_section: Soạn thảo sá»± lá»±a chá»n này setting_repositories_encodings: Mã hóa kho chứa description_all_columns: Các cá»™t button_export: Export label_export_options: "%{export_format} tùy chá»n Export" error_attachment_too_big: "File này không thể tải lên vì nó vượt quá kích thước cho phép : (%{max_size})" notice_failed_to_save_time_entries: "Lá»—i khi lưu %{count} lần trên %{total} sá»± lá»±a chá»n : %{ids}." label_x_issues: zero: 0 vấn đỠone: 1 vấn đỠother: "%{count} vấn Ä‘á»" label_repository_new: Kho lưu trữ má»›i field_repository_is_default: Kho lưu trữ chính label_copy_attachments: Copy các file đính kèm label_item_position: "%{position}/%{count}" label_completed_versions: Các phiên bản hoàn thành text_project_identifier_info: Chỉ cho phép chữ cái thưá»ng (a-z), con số và dấu gạch ngang.
    Sau khi lưu, chỉ số ID không thể thay đổi. field_multiple: Nhiá»u giá trị setting_commit_cross_project_ref: Sá»­ dụng thá»i gian hiện tại khi tạo vấn đỠmá»›i text_issue_conflict_resolution_add_notes: Thêm ghi chú cá»§a tôi và loại bá» các thay đổi khác text_issue_conflict_resolution_overwrite: Ãp dụng thay đổi bằng bất cứ giá nào, ghi chú trước đó có thể bị ghi đè notice_issue_update_conflict: Vấn đỠnày đã được cập nhật bởi má»™t ngưá»i dùng khác trong khi bạn Ä‘ang chỉnh sá»­a nó. text_issue_conflict_resolution_cancel: "Loại bá» tất cả các thay đổi và hiển thị lại %{link}" permission_manage_related_issues: Quản lý các vấn đỠliên quan field_auth_source_ldap_filter: Bá»™ lá»c LDAP label_search_for_watchers: Tìm kiếm ngưá»i theo dõi để thêm notice_account_deleted: Tài khoản cá»§a bạn đã được xóa vÄ©nh viá»…n. button_delete_my_account: Xóa tài khoản cá»§a tôi setting_unsubscribe: Cho phép ngưá»i dùng xóa Account text_account_destroy_confirmation: |- Bạn đồng ý không ? Tài khoản cá»§a bạn sẽ bị xóa vÄ©nh viá»…n, không thể khôi phục lại! error_session_expired: Phiên làm việc cá»§a bạn bị quá hạn, hãy đăng nhập lại text_session_expiration_settings: "Chú ý : Thay đổi các thiết lập này có thể gây vô hiệu hóa Session hiện tại" setting_session_lifetime: Thá»i gian tồn tại lá»›n nhất cá»§a Session setting_session_timeout: Thá»i gian vô hiệu hóa Session label_session_expiration: Phiên làm việc bị quá hạn permission_close_project: Äóng / Mở lại dá»± án button_close: Äóng button_reopen: Mở lại project_status_active: Kích hoạt project_status_closed: Äã đóng project_status_archived: Lưu trữ text_project_closed: Dá»± án này đã đóng và chỉ Ä‘á»c notice_user_successful_create: "Ngưá»i dùng %{id} đã được tạo." field_core_fields: Các trưá»ng tiêu chuẩn field_timeout: Quá hạn setting_thumbnails_enabled: Hiển thị các thumbnail đính kèm setting_thumbnails_size: Kích thước Thumbnails(pixel) setting_session_lifetime: Thá»i gian tồn tại lá»›n nhất cá»§a Session setting_session_timeout: Thá»i gian vô hiệu hóa Session label_status_transitions: Trạng thái chuyển tiếp label_fields_permissions: Cho phép các trưá»ng label_readonly: Chỉ Ä‘á»c label_required: Yêu cầu text_repository_identifier_info: Chỉ có các chữ thưá»ng (a-z), các số (0-9), dấu gạch ngang và gạch dưới là hợp lệ.
    Khi đã lưu, tên định danh sẽ không thể thay đổi. field_board_parent: Diá»…n đàn cha label_attribute_of_project: "Cá»§a dá»± án : %{name}" label_attribute_of_author: "Cá»§a tác giả : %{name}" label_attribute_of_assigned_to: "ÄÆ°á»£c phân công bởi %{name}" label_attribute_of_fixed_version: "Phiên bản mục tiêu cá»§a %{name}" label_copy_subtasks: Sao chép các nhiệm vụ con label_copied_to: Sao chép đến label_copied_from: Sao chép từ label_any_issues_in_project: Bất kỳ vấn đỠnào trong dá»± án label_any_issues_not_in_project: Bất kỳ vấn đỠnào không thuá»™c dá»± án field_private_notes: Ghi chú riêng tư permission_view_private_notes: Xem ghi chú riêng tư permission_set_notes_private: Äặt ghi chú thành riêng tư label_no_issues_in_project: Không có vấn đỠnào trong dá»± án label_any: tất cả label_last_n_weeks: "%{count} tuần qua" setting_cross_project_subtasks: Cho phép các nhiệm vụ con liên dá»± án label_cross_project_descendants: Trong các dá»± án con label_cross_project_tree: Trong cùng cây dá»± án label_cross_project_hierarchy: Trong dá»± án cùng cấp bậc label_cross_project_system: Trong tất cả các dá»± án button_hide: Ẩn setting_non_working_week_days: Các ngày không làm việc label_in_the_next_days: Trong tương lai label_in_the_past_days: Trong quá khứ label_attribute_of_user: "Cá»§a ngưá»i dùng %{name}" text_turning_multiple_off: Nếu bạn vô hiệu hóa nhiá»u giá trị, chúng sẽ bị loại bỠđể duy trì chỉ có má»™t giá trị cho má»—i mục. label_attribute_of_issue: "Vấn đỠcá»§a %{name}" permission_add_documents: Thêm tài liệu permission_edit_documents: Soạn thảo tài liệu permission_delete_documents: Xóa tài liệu label_gantt_progress_line: Tiến độ setting_jsonp_enabled: Cho phép trợ giúp JSONP field_inherit_members: Các thành viên kế thừa field_closed_on: Äã đóng field_generate_password: Tạo mật khẩu setting_default_projects_tracker_ids: Trình theo dõi mặc định cho các dá»± án má»›i label_total_time: Tổng cá»™ng notice_account_not_activated_yet: Bạn chưa kích hoạt tài khoản cá»§a mình. Nếu bạn muốn nhận email kích hoạt má»›i, vui lòng nhấp vào liên kết này. notice_account_locked: Tài khoản cá»§a bạn bị khóa. label_hidden: Ẩn label_visibility_private: chỉ vá»›i tôi label_visibility_roles: chỉ vá»›i những vai trò này label_visibility_public: cho bất kỳ ngưá»i dùng nào field_must_change_passwd: Phải thay đổi mật khẩu ở lần đăng nhập tiếp theo notice_new_password_must_be_different: Mật khẩu má»›i phải khác vá»›i mật khẩu hiện tại setting_mail_handler_excluded_filenames: Loại trừ các tệp đính kèm theo tên text_convert_available: Chuyển đổi ImageMagick có sẵn (tùy chá»n) label_link: Link label_only: chỉ label_drop_down_list: danh sách thả xuống label_checkboxes: checkboxes label_link_values_to: Liên kết các giá trị vá»›i URL setting_force_default_language_for_anonymous: Bắt buá»™c ngôn ngữ mặc định cho ngưá»i dùng ẩn danh setting_force_default_language_for_loggedin: Bắt buá»™c ngôn ngữ mặc định cho ngưá»i dùng đã đăng nhập label_custom_field_select_type: Chá»n loại đối tượng mà trưá»ng tùy chỉnh được đính kèm label_issue_assigned_to_updated: Äã cập nhật ngưá»i được gán label_check_for_updates: Kiểm tra cập nhật label_latest_compatible_version: Phiên bản tương thích má»›i nhất label_unknown_plugin: Plugin không xác định label_radio_buttons: nút radio label_group_anonymous: Ngưá»i dùng ẩn danh label_group_non_member: Ngưá»i dùng không phải thành viên label_add_projects: Thêm dá»± án field_default_status: Trạng thái mặc định text_subversion_repository_note: 'Ví dụ: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: Khả năng hiển thị cá»§a ngưá»i dùng label_users_visibility_all: Tất cả ngưá»i dùng Ä‘ang hoạt động label_users_visibility_members_of_visible_projects: Thành viên cá»§a các dá»± án hiển thị label_edit_attachments: Chỉnh sá»­a tệp đính kèm setting_link_copied_issue: Liên kết các vấn đỠdá»±a trên bản sao label_link_copied_issue: Äã sao chép liên kết vấn đỠlabel_ask: Há»i label_search_attachments_yes: Tìm kiếm tên tệp đính kèm và mô tả label_search_attachments_no: Không tìm kiếm tệp đính kèm label_search_attachments_only: Chỉ tìm kiếm tệp đính kèm label_search_open_issues_only: Chỉ các vấn đỠmở field_address: Äịa chỉ setting_max_additional_emails: Số lượng địa chỉ email bổ sung tối Ä‘a label_email_address_plural: Emails label_email_address_add: Thêm địa chỉ email label_enable_notifications: Bật thông báo label_disable_notifications: Vô hiệu hóa thông báo setting_search_results_per_page: Kết quả tìm kiếm trên má»—i trang label_blank_value: trống permission_copy_issues: Sao chép vấn đỠerror_password_expired: Mật khẩu cá»§a bạn đã hết hạn hoặc quản trị viên yêu cầu bạn thay đổi nó. field_time_entries_visibility: Hiển thị nhật ký thá»i gian setting_password_max_age: Yêu cầu thay đổi mật khẩu sau label_parent_task_attributes: Thuá»™c tính nhiệm vụ cha label_parent_task_attributes_derived: ÄÆ°á»£c tính toán từ các nhiệm vụ con label_parent_task_attributes_independent: Äá»™c lập vá»›i các nhiệm vụ con label_time_entries_visibility_all: Tất cả các mục thá»i gian label_time_entries_visibility_own: Các mục thá»i gian do ngưá»i dùng tạo label_member_management: Quản lý thành viên label_member_management_all_roles: Tất cả các vai trò label_member_management_selected_roles_only: Chỉ những vai trò này label_password_required: Xác nhận mật khẩu cá»§a bạn để tiếp tục label_total_spent_time: Tổng thá»i gian sá»­ dụng notice_import_finished: "%{count} mục đã được nhập" notice_import_finished_with_errors: "không thể nhập %{count} trong tổng số %{total} mục" error_invalid_file_encoding: Tệp không phải là tệp được mã hóa %{encoding} hợp lệ error_invalid_csv_file_or_settings: Tệp không phải là CSV hoặc không khá»›p vá»›i cài đặt bên dưới error_can_not_read_import_file: Äã xảy ra lá»—i khi Ä‘á»c tệp để nhập permission_import_issues: Nhập các vấn đỠlabel_import_issues: Nhập các vấn đỠlabel_select_file_to_import: Chá»n tệp để nhập label_fields_separator: Dấu phân tách trưá»ng label_fields_wrapper: Trình bao bá»c trưá»ng label_encoding: Mã hóa label_comma_char: Dấu phẩy label_semi_colon_char: Dấu chấm phẩy label_quote_char: Dấu nháy đơn label_double_quote_char: Dấu nháy kép label_fields_mapping: Ãnh xạ trưá»ng label_file_content_preview: Xem trước ná»™i dung tệp label_create_missing_values: Tạo các giá trị còn thiếu button_import: Import field_total_estimated_hours: Tổng thá»i gian ước tính label_api: API label_total_plural: Tổng label_assigned_issues: Các vấn đỠđược giao label_field_format_enumeration: Danh sách khóa / giá trị label_f_hour_short: '%{value} h' field_default_version: Phiên bản mặc định error_attachment_extension_not_allowed: Phần mở rá»™ng cá»§a tệp đính kèm %{extension} không được phép setting_attachment_extensions_allowed: Các phần mở rá»™ng được phép setting_attachment_extensions_denied: Phần mở rá»™ng không được phép label_any_open_issues: bất kỳ vấn đỠmở label_no_open_issues: các vấn đỠkhông mở label_default_values_for_new_users: Giá trị mặc định cho ngưá»i dùng má»›i error_ldap_bind_credentials: Tài khoản / Mật khẩu LDAP không hợp lệ setting_sys_api_key: Mã số API setting_lost_password: Phục hồi mật mã mail_subject_security_notification: Thông báo bảo mật mail_body_security_notification_change: ! '%{field} vừa thay đổi.' mail_body_security_notification_change_to: ! '%{field} vừa thay đổi thành %{value}.' mail_body_security_notification_add: ! '%{field} %{value} đã thêm.' mail_body_security_notification_remove: ! '%{field} %{value} đã xóa.' mail_body_security_notification_notify_enabled: Äịa chỉ email %{value} nhận được thông báo. mail_body_security_notification_notify_disabled: Äịa chỉ email %{value} không còn nhận thông báo. mail_body_settings_updated: ! 'Các cài đặt sau đã được thay đổi:' field_remote_ip: địa chỉ IP label_wiki_page_new: Trang wiki má»›i label_relations: Mối quan hệ button_filter: Lá»c mail_body_password_updated: Mật khẩu cá»§a bạn đã được thay đổi. label_no_preview: Không có xem trước error_no_tracker_allowed_for_new_issue_in_project: Dá»± án không có bất kỳ trình theo dõi nào mà bạn có thể tạo ra má»™t vấn đỠlabel_tracker_all: Tất cả các trình theo dõi label_new_project_issue_tab_enabled: Hiển thị tab "Vấn đỠmá»›i" setting_new_item_menu_tab: Tab menu dá»± án để tạo các đối tượng má»›i label_new_object_tab_enabled: Hiển thị menu thả xuống "+" error_no_projects_with_tracker_allowed_for_new_issue: Không có dá»± án nào có trình theo dõi mà bạn có thể tạo ra vấn đỠfield_textarea_font: Phông chữ được sá»­ dụng cho các văn bản label_font_default: Phông chữ mặc định label_font_monospace: Phông chữ liá»n mạch label_font_proportional: Phông chữ tá»· lệ setting_timespan_format: Äịnh dạng khoảng thá»i gian label_table_of_contents: Mục lục setting_commit_logs_formatting: Ãp dụng định dạng văn bản cho tin nhắn commit setting_mail_handler_enable_regex: Cho phép biểu thức chính quy error_move_of_child_not_possible: 'Tác vụ con %{child} không thể chuyển đến dá»± án má»›i: %{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: Không thể gán lại thá»i gian đã dành cho má»™t vấn đỠđã bị xóa setting_timelog_required_fields: Các trưá»ng bắt buá»™c cho nhật ký thá»i gian label_attribute_of_object: '%{object_name}''s %{name}' label_user_mail_option_only_assigned: Chỉ dành cho những thứ tôi theo dõi hoặc tôi được gán label_user_mail_option_only_owner: Chỉ những thứ tôi theo dõi hoặc tôi là chá»§ sở hữu warning_fields_cleared_on_bulk_edit: Các thay đổi sẽ dẫn đến việc tá»± động xóa các giá trị từ má»™t hoặc nhiá»u trưá»ng trên các đối tượng đã chá»n field_updated_by: Cập nhật bởi field_last_updated_by: Cập nhật lần cuối bởi field_full_width_layout: Bố cục chiá»u rá»™ng đầy đủ label_last_notes: Ghi chú má»›i nhất field_digest: Checksum field_default_assigned_to: Ngưá»i được gán mặc định setting_show_custom_fields_on_registration: Hiển thị các trưá»ng tùy chỉnh khi đăng ký permission_view_news: Xem tin tức label_no_preview_alternative_html: Không có xem trước, tệp thay thế %{link} . label_no_preview_download: Download setting_close_duplicate_issues: Tá»± động đóng các vấn đỠtrùng lặp error_exceeds_maximum_hours_per_day: Không thể ghi lại hÆ¡n %{max_hours} giá» trong cùng má»™t ngày (%{logged_hours} giỠđã được ghi) setting_time_entry_list_defaults: Danh sách Timelog mặc định setting_timelog_accept_0_hours: Chấp nhận nhật ký thá»i gian vá»›i 0 giá» setting_timelog_max_hours_per_day: Số giá» tối Ä‘a có thể được ghi lại má»—i ngày và ngưá»i dùng label_x_revisions: "%{count} bản Ä‘iá»u chỉnh" error_can_not_delete_auth_source: Chế độ xác thá»±c này Ä‘ang được sá»­ dụng và không thể bị xóa. button_actions: Hành động mail_body_lost_password_validity: Xin lưu ý rằng bạn chỉ có thể thay đổi mật khẩu má»™t lần bằng cách sá»­ dụng liên kết này. text_login_required_html: Khi không yêu cầu xác thá»±c, các dá»± án công khai và ná»™i dung cá»§a chúng sẽ được công khai trên mạng. Bạn có thể chỉnh sá»­a các quyá»n hiện hành. label_login_required_yes: 'Yes' label_login_required_no: Không, cho phép truy cập ẩn danh vào các dá»± án công cá»™ng text_project_is_public_non_member: Các dá»± án công khai và ná»™i dung cá»§a chúng có sẵn cho tất cả ngưá»i dùng đã đăng nhập. text_project_is_public_anonymous: Các dá»± án công cá»™ng và ná»™i dung cá»§a chúng được công khai trên mạng. label_version_and_files: Có (%{count}) phiên bản và tệp label_ldap: LDAP label_ldaps_verify_none: LDAPS (không cần kiểm tra chứng chỉ) label_ldaps_verify_peer: LDAPS label_ldaps_warning: Bạn nên sá»­ dụng kết nối LDAPS được mã hóa vá»›i kiểm tra chứng chỉ để ngăn chặn bất kỳ thao tác nào trong quá trình xác thá»±c. label_nothing_to_preview: Không có gì để xem trước error_token_expired: Liên kết khôi phục mật khẩu này đã hết hạn, vui lòng thá»­ lại. error_spent_on_future_date: Không thể ghi lại thá»i gian vào má»™t ngày trong tương lai setting_timelog_accept_future_dates: Chấp nhận nhật ký thá»i gian vào các ngày trong tương lai label_delete_link_to_subtask: Xóa quan hệ error_not_allowed_to_log_time_for_other_users: Bạn không được phép ghi lại thá»i gian cho những ngưá»i dùng khác permission_log_time_for_other_users: Ghi nhật ký dành thá»i gian cho những ngưá»i dùng khác label_tomorrow: Ngày mai label_next_week: tuần tá»›i label_next_month: tháng tiếp theo text_role_no_workflow: Không có quy trình làm việc nào được xác định cho vai trò này text_status_no_workflow: Không có trình theo dõi nào sá»­ dụng trạng thái này trong quy trình làm việc setting_mail_handler_preferred_body_part: Phần ưu tiên cá»§a email nhiá»u phần (HTML) setting_show_status_changes_in_mail_subject: Hiển thị các thay đổi trạng thái trong chá»§ đỠthư thông báo vấn đỠlabel_inherited_from_parent_project: Kế thừa từ dá»± án cha label_inherited_from_group: ÄÆ°á»£c kế thừa từ nhóm %{name} label_trackers_description: Mô tả trình theo dõi label_open_trackers_description: Xem tất cả mô tả cá»§a trình theo dõi label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: Chá»§ đỠcá»§a tác vụ cha permission_edit_own_issues: Chỉnh sá»­a các vấn đỠriêng text_select_apply_tracker: Chá»n trình theo dõi label_updated_issues: Các vấn đỠđã cập nhật text_avatar_server_config_html: Máy chá»§ avatar hiện tại là %{url}. Bạn có thể cấu hình nó trong config/config.yml. setting_gantt_months_limit: Số tháng tối Ä‘a được hiển thị trên biểu đồ gantt permission_import_time_entries: Nhập các mục thá»i gian label_import_notifications: Gá»­i thông báo qua email trong quá trình nhập text_gs_available: Há»— trợ ImageMagick PDF có sẵn (tùy chá»n) field_recently_used_projects: Số lượng dá»± án được sá»­ dụng gần đây trong jump box label_optgroup_bookmarks: Bookmarks label_optgroup_recents: ÄÆ°á»£c sá»­ dụng gần đây button_project_bookmark: Thêm bookmark button_project_bookmark_delete: Xóa bookmark field_history_default_tab: Tab mặc định lịch sá»­ cá»§a vấn đỠlabel_issue_history_properties: Thay đổi thuá»™c tính label_issue_history_notes: Ghi chú label_last_tab_visited: Tab được truy cập lần cuối field_unique_id: ID duy nhất text_no_subject: không chá»§ đỠsetting_password_required_char_classes: Các ký tá»± bắt buá»™c cho mật khẩu label_password_char_class_uppercase: chữ viết hoa label_password_char_class_lowercase: chữ viết thưá»ng label_password_char_class_digits: chữ số label_password_char_class_special_chars: ký tá»± đặc biệt text_characters_must_contain: Cần phải chứa %{character_classes}. label_starts_with: bắt đầu vá»›i label_ends_with: kết thúc bằng label_issue_fixed_version_updated: Äã cập nhật phiên bản đích setting_project_list_defaults: Danh sách dá»± án mặc định label_display_type: Hiển thị kết quả dưới dạng label_display_type_list: Danh sách label_display_type_board: Bảng label_my_bookmarks: Äánh dấu cá»§a tôi label_import_time_entries: Nhập các mục thá»i gian field_toolbar_language_options: Thanh công cụ tô sáng mã nguồn label_user_mail_notify_about_high_priority_issues_html: Äồng thá»i thông báo cho tôi vá» các vấn đỠcó mức độ ưu tiên %{prio} trở lên label_assign_to_me: Gán cho tôi notice_issue_not_closable_by_open_tasks: Không thể đóng vấn đỠnày vì có ít nhất má»™t tác vụ con Ä‘ang mở. notice_issue_not_closable_by_blocking_issue: Không thể đóng vấn đỠnày vì nó bị chặn bởi ít nhất má»™t vấn đỠđang mở. notice_issue_not_reopenable_by_closed_parent_issue: Không thể mở lại vấn đỠnày vì vấn đỠcha cá»§a nó đã bị đóng. error_bulk_download_size_too_big: Không thể tải xuống hàng loạt các tệp đính kèm này vì tổng kích thước tệp vượt quá kích thước tối Ä‘a cho phép (%{max_size}) setting_bulk_download_max_size: Tổng kích thước tối Ä‘a để tải xuống hàng loạt label_download_all_attachments: Tải xuống tất cả các tệp error_attachments_too_many: Không thể tải tệp này lên vì nó vượt quá số tệp tối Ä‘a có thể được đính kèm đồng thá»i (%{max_number_of_files}) setting_email_domains_allowed: Tên miá»n email được phép setting_email_domains_denied: Tên miá»n email bị cấm field_passwd_changed_on: Mật khẩu được thay đổi lần cuối label_relations_mapping: Ãnh xạ quan hệ label_import_users: Nhập ngưá»i dùng label_days_to_html: "%{days} ngày đến %{date}" setting_twofa: Xác thá»±c hai yếu tố label_optional: không bắt buá»™c label_required_lower: bắt buá»™c button_disable: Cấm twofa__totp__name: Ứng dụng Authenticator twofa__totp__text_pairing_info_html: Quét mã QR này hoặc nhập vào ứng dụng TOTP như Google Authenticator, Authy, Duo Mobile) sau đó nhập mã vào trưá»ng bên dưới để kích hoạt xác thá»±c hai yếu tố. twofa__totp__label_plain_text_key: Phím văn bản thuần túy twofa__totp__label_activate: Bật ứng dụng xác thá»±c twofa_currently_active: 'Hiện Ä‘ang kích hoạt: %{twofa_scheme_name}' twofa_not_active: Không được kích hoạt twofa_label_code: Code twofa_hint_disabled_html: Thiết lập %{label} sẽ vô hiệu hóa và há»§y ghép nối thiết bị xác thá»±c hai yếu tố cho tất cả ngưá»i dùng. twofa_hint_required_html: Thiết lập %{label} sẽ yêu cầu tất cả ngưá»i dùng thiết lập xác thá»±c hai yếu tố ở lần đăng nhập tiếp theo cá»§a há». twofa_label_setup: Bật xác thá»±c hai yếu tố twofa_label_deactivation_confirmation: Tắt xác thá»±c hai yếu tố twofa_notice_select: 'Vui lòng chá»n lược đồ hai yếu tố bạn muốn sá»­ dụng:' twofa_warning_require: Quản trị viên yêu cầu bạn bật xác thá»±c hai yếu tố. twofa_activated: Äã bật xác thá»±c hai yếu tố thành công. Bạn nên tạo mã dá»± phòng cho tài khoản cá»§a mình. twofa_deactivated: Xác thá»±c hai yếu tố bị vô hiệu hóa. twofa_mail_body_security_notification_paired: Äã bật xác thá»±c hai yếu tố thành công bằng cách sá»­ dụng %{field}. twofa_mail_body_security_notification_unpaired: Xác thá»±c hai yếu tố bị vô hiệu hóa cho tài khoản cá»§a bạn. twofa_mail_body_backup_codes_generated: Äã tạo mã dá»± phòng xác thá»±c hai yếu tố má»›i. twofa_mail_body_backup_code_used: Mã dá»± phòng xác thá»±c hai yếu tố đã được sá»­ dụng. twofa_invalid_code: Mã không hợp lệ hoặc hết hạn. twofa_label_enter_otp: Vui lòng nhập mã xác thá»±c hai yếu tố cá»§a bạn. twofa_too_many_tries: Quá nhiá»u lần thá»­ twofa_resend_code: Gá»­i lại mã twofa_code_sent: Mã xác thá»±c đã được gá»­i cho bạn. twofa_generate_backup_codes: Tạo mã dá»± phòng twofa_text_generate_backup_codes_confirmation: Äiá»u này sẽ làm mất hiệu lá»±c cá»§a tất cả các mã dá»± phòng hiện có và tạo ra những mã má»›i. Bạn có muốn tiếp tục không? twofa_notice_backup_codes_generated: Mã dá»± phòng cá»§a bạn đã được tạo. twofa_warning_backup_codes_generated_invalidated: Mã dá»± phòng má»›i đã được tạo. Các mã hiện có cá»§a bạn từ %{time} hiện không hợp lệ. twofa_label_backup_codes: Mã dá»± phòng xác thá»±c hai yếu tố twofa_text_backup_codes_hint: Sá»­ dụng các mã này thay vì mật khẩu dùng má»™t lần nếu bạn không có quyá»n truy cập vào yếu tố thứ hai cá»§a mình. Má»—i mã chỉ được sá»­ dụng má»™t lần. Nên in và cất chúng ở nÆ¡i an toàn. twofa_text_backup_codes_created_at: Mã dá»± phòng đã tạo %{datetime}. twofa_backup_codes_already_shown: Không thể hiển thị lại mã dá»± phòng, vui lòng tạo mã dá»± phòng má»›i nếu được yêu cầu. error_can_not_execute_macro_html: Lá»—i thá»±c thi macro %{name} - (%{error}) error_macro_does_not_accept_block: Macro này không chấp nhận má»™t khối văn bản error_childpages_macro_no_argument: Không có đối số, macro này chỉ có thể được gá»i từ các trang wiki error_circular_inclusion: Äã phát hiện bao gồm hình tròn error_page_not_found: Không tìm thấy trang error_filename_required: Tên tệp bắt buá»™c error_invalid_size_parameter: Tham số kích thước không hợp lệ error_attachment_not_found: Phần đính kèm %{name} không tìm thấy permission_delete_project: Xóa dá»± án field_twofa_scheme: Two-factor authentication scheme text_user_destroy_confirmation: Are you sure you want to delete this user and remove all references to them? This cannot be undone. Often, locking a user instead of deleting them is the better solution. To confirm, please enter their login (%{login}) below. text_project_destroy_enter_identifier: To confirm, please enter the project's identifier (%{identifier}) below. button_add_subtask: Add subtask notice_invalid_watcher: 'Invalid watcher: User will not receive any notifications because they do not have access to view this object.' button_fetch_changesets: Fetch commits permission_view_message_watchers: View message watchers list permission_add_message_watchers: Add message watchers permission_delete_message_watchers: Delete message watchers label_message_watchers: Watchers button_copy_link: Copy link error_invalid_authenticity_token: Invalid form authenticity token. error_query_statement_invalid: An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator. permission_view_wiki_page_watchers: View wiki page watchers list permission_add_wiki_page_watchers: Add wiki page watchers permission_delete_wiki_page_watchers: Delete wiki page watchers label_wiki_page_watchers: Watchers label_attachment_description: File description error_no_data_in_file: The file does not contain any data field_twofa_required: Require two factor authentication twofa_hint_optional_html: Setting %{label} will let users set up two-factor authentication at will, unless it is required by one of their groups. twofa_text_group_required: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is required for all users. twofa_text_group_disabled: This setting is only effective when the global two factor authentication setting is set to 'optional'. Currently, two factor authentication is disabled. field_default_issue_query: Default issue query label_default_queries: for_all_projects: For all projects for_current_project: For current project for_all_users: For all users for_this_user: For this user text_allowed_queries_to_select: Public (to any users) queries only selectable text_all_migrations_have_been_run: All database migrations have been run button_save_object: Save %{object_name} button_edit_object: Edit %{object_name} button_delete_object: Delete %{object_name} text_setting_config_change: You can configure the behaviour in config/configuration.yml. Please restart the application after editing it. label_bulk_edit: Bulk edit button_create_and_follow: Create and follow label_subtask: Subtask label_default_query: Default query field_default_project_query: Default project query label_required_administrators: required for administrators twofa_hint_required_administrators_html: Setting %{label} behaves like optional, but will require all users with administration rights to set up two-factor authentication at their next login. label_auto_watch_on: Auto watch label_auto_watch_on_issue_contributed_to: Issues I contributed to text_project_close_confirmation: Are you sure you want to close the '%{value}' project to make it read-only? text_project_reopen_confirmation: Are you sure you want to reopen the '%{value}' project? text_project_archive_confirmation: Are you sure you want to archive the '%{value}' project? mail_destroy_project_failed: Project %{value} could not be deleted. mail_destroy_project_successful: Project %{value} was deleted successfully. mail_destroy_project_with_subprojects_successful: Project %{value} and its subprojects were deleted successfully. project_status_scheduled_for_deletion: scheduled for deletion text_projects_bulk_destroy_confirmation: Are you sure you want to delete the selected projects and related data? text_projects_bulk_destroy_head: | You are about to permanently delete the following projects, including possible subprojects and any related data. Please review the information below and confirm that this is indeed what you want to do. This action cannot be undone. text_projects_bulk_destroy_confirm: To confirm, please enter "%{yes}" in the box below. text_subprojects_bulk_destroy: 'including its subproject(s): %{value}' field_current_password: Current password sudo_mode_new_info_html: "What's happening? You need to reconfirm your password before taking any administrative actions, this ensures your account stays protected." label_edited: Edited label_time_by_author: "%{time} by %{author}" field_default_time_entry_activity: Default spent time activity field_is_member_of_group: Member of group text_users_bulk_destroy_head: You are about to delete the following users and remove all references to them. This cannot be undone. Often, locking users instead of deleting them is the better solution. text_users_bulk_destroy_confirm: To confirm, please enter "%{yes}" below. permission_select_project_publicity: Set project public or private label_auto_watch_on_issue_created: Issues I created field_any_searchable: Any searchable text label_contains_any_of: contains any of button_apply_issues_filter: Apply issues filter label_view_previous_annotation: View annotation prior to this change label_has_been: has been label_has_never_been: has never been label_changed_from: changed from label_issue_statuses_description: Issue statuses description label_open_issue_statuses_description: View all issue statuses description text_select_apply_issue_status: Select issue status field_name_or_email_or_login: Name, email or login text_default_active_job_queue_changed: Default queue adapter which is well suited only for dev/test changed label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/locales/zh-TW.yml000066400000000000000000002175431500112024600175330ustar00rootroot00000000000000# Chinese (Taiwan) translations for Ruby on Rails # by tsechingho (http://github.com/tsechingho) # See http://github.com/svenfuchs/rails-i18n/ for details. "zh-TW": direction: ltr jquery: locale: "zh-TW" date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b%dæ—¥" long: "%Yå¹´%b%dæ—¥" day_names: [星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六] abbr_day_names: [æ—¥, 一, 二, 三, å››, 五, å…­] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 乿œˆ, åæœˆ, å一月, å二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # 使用於 date_select 與 datime_select. order: - :year - :month - :day time: formats: default: "%Yå¹´%b%dæ—¥ %A %H:%M:%S %Z" time: "%H:%M" short: "%b%dæ—¥ %H:%M" long: "%Yå¹´%b%dæ—¥ %H:%M" am: "AM" pm: "PM" # 使用於 array.to_sentence. support: array: words_connector: ", " two_words_connector: " å’Œ " last_word_connector: ", å’Œ " sentence_connector: "且" skip_last_comma: false number: # 使用於 number_with_delimiter() # åŒæ™‚也是 'currency', 'percentage', 'precision', 與 'human' çš„é è¨­å€¼ format: # è¨­å®šå°æ•¸é»žåˆ†éš”字元,以使用更高的準確度 (例如: 1.0 / 2.0 == 0.5) separator: "." # åƒåˆ†ä½ç¬¦è™Ÿ (ä¾‹å¦‚ï¼šä¸€ç™¾è¬æ˜¯ 1,000,000) (å‡ä»¥ä¸‰å€‹ä½æ•¸ä¾†åˆ†çµ„) delimiter: "," # å°æ•¸é»žåˆ†éš”å­—å…ƒå¾Œä¹‹ç²¾ç¢ºä½æ•¸ (數字 1 æ­é… 2 ä½ç²¾ç¢ºä½æ•¸ç‚ºï¼š 1.00) precision: 3 # 使用於 number_to_currency() currency: format: # 貨幣符號的ä½ç½®? %u 是貨幣符號, %n 是數值 (é è¨­å€¼ï¼š $5.00) format: "%u%n" unit: "NT$" # 下列三個é¸é …設定, 若有設定值將會å–代 number.format æˆç‚ºé è¨­å€¼ separator: "." delimiter: "," precision: 2 # 使用於 number_to_percentage() percentage: format: # 下列三個é¸é …設定, 若有設定值將會å–代 number.format æˆç‚ºé è¨­å€¼ # separator: delimiter: "" # precision: # 使用於 number_to_precision() precision: format: # 下列三個é¸é …設定, 若有設定值將會å–代 number.format æˆç‚ºé è¨­å€¼ # separator: delimiter: "" # precision: # 使用於 number_to_human_size() human: format: # 下列三個é¸é …設定, 若有設定值將會å–代 number.format æˆç‚ºé è¨­å€¼ # separator: delimiter: "" precision: 3 # 儲存單ä½è¼¸å‡ºæ ¼å¼. # %u 是儲存單ä½, %n 是數值 (é è¨­å€¼: 2 MB) storage_units: format: "%n %u" units: byte: one: "ä½å…ƒçµ„ (B)" other: "ä½å…ƒçµ„ (B)" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # 使用於 distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() datetime: distance_in_words: half_a_minute: "åŠåˆ†é˜" less_than_x_seconds: one: "å°æ–¼ 1 ç§’" other: "å°æ–¼ %{count} ç§’" x_seconds: one: "1 ç§’" other: "%{count} ç§’" less_than_x_minutes: one: "å°æ–¼ 1 分é˜" other: "å°æ–¼ %{count} 分é˜" x_minutes: one: "1 分é˜" other: "%{count} 分é˜" about_x_hours: one: "ç´„ 1 å°æ™‚" other: "ç´„ %{count} å°æ™‚" x_hours: one: "1 å°æ™‚" other: "%{count} å°æ™‚" x_days: one: "1 天" other: "%{count} 天" about_x_months: one: "ç´„ 1 個月" other: "ç´„ %{count} 個月" x_months: one: "1 個月" other: "%{count} 個月" about_x_years: one: "ç´„ 1 å¹´" other: "ç´„ %{count} å¹´" over_x_years: one: "è¶…éŽ 1 å¹´" other: "è¶…éŽ %{count} å¹´" almost_x_years: one: "將近 1 å¹´" other: "將近 %{count} å¹´" prompts: year: "å¹´" month: "月" day: "æ—¥" hour: "時" minute: "分" second: "ç§’" activerecord: errors: template: header: one: "有 1 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" other: "有 %{count} 個錯誤發生使得「%{model}ã€ç„¡æ³•被儲存。" # The variable :count is also available body: "䏋颿‰€åˆ—æ¬„ä½æœ‰å•題:" # The values :model, :attribute and :value are always available for interpolation # The value :count is available when applicable. Can be used for pluralization. messages: inclusion: "沒有包å«åœ¨åˆ—表中" exclusion: "是被ä¿ç•™çš„" invalid: "是無效的" confirmation: "ä¸ç¬¦åˆç¢ºèªå€¼" accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½æ˜¯ç©ºç™½å­—å…ƒ" too_long: "éŽé•·ï¼ˆæœ€é•·æ˜¯ %{count} 個字)" too_short: "éŽçŸ­ï¼ˆæœ€çŸ­æ˜¯ %{count} 個字)" wrong_length: "字數錯誤(必須是 %{count} 個字)" taken: "已經被使用" not_a_number: "䏿˜¯æ•¸å­—" greater_than: "必須大於 %{count}" greater_than_or_equal_to: "必須大於或等於 %{count}" equal_to: "必須等於 %{count}" less_than: "å¿…é ˆå°æ–¼ %{count}" less_than_or_equal_to: "å¿…é ˆå°æ–¼æˆ–等於 %{count}" odd: "必須是奇數" even: "å¿…é ˆæ˜¯å¶æ•¸" # Append your own errors here or at the model/attributes scope. greater_than_start_date: "必須在開始日期之後" not_same_project: "ä¸å±¬æ–¼åŒä¸€å€‹å°ˆæ¡ˆ" circular_dependency: "é€™å€‹é—œè¯æœƒå°Žè‡´ç’°ç‹€ç›¸ä¾" cant_link_an_issue_with_a_descendant: "議題無法被連çµè‡³è‡ªå·±çš„å­ä»»å‹™" earlier_than_minimum_start_date: "ä¸èƒ½æ—©æ–¼ %{date} 因為有å‰ç½®è­°é¡Œ" not_a_regexp: "䏿˜¯ä¸€å€‹æœ‰æ•ˆçš„è¦å‰‡é‹ç®—å¼" open_issue_with_closed_parent: "進行中的議題ä¸èƒ½è¢«é™„åŠ æ–¼å·²çµæŸçš„父議題任務" must_contain_uppercase: "必須包å«å¤§å¯«å­—æ¯ (A-Z)" must_contain_lowercase: "必須包å«å°å¯«å­—æ¯ (a-z)" must_contain_digits: "å¿…é ˆåŒ…å«æ•¸å­— (0-9)" must_contain_special_chars: "必須包å«ç‰¹æ®Šå­—å…ƒ (!, $, %, ...)" domain_not_allowed: "包å«ä¸å…許的網域 (%{domain})" too_simple: "is too simple" # You can define own errors for models or model attributes. # The values :model, :attribute and :value are always available for interpolation. # # For example, # models: # user: # blank: "This is a custom blank message for %{model}: %{attribute}" # attributes: # login: # blank: "This is a custom blank message for User login" # Will define custom blank validation message for User model and # custom blank validation message for login attribute of User model. #models: # Translate model names. Used in Model.human_name(). #models: # For example, # user: "Dude" # will translate User model name to "Dude" # Translate model attribute names. Used in Model.human_attribute_name(attribute). #attributes: # For example, # user: # login: "Handle" # will translate User attribute "login" as "Handle" actionview_instancetag_blank_option: è«‹é¸æ“‡ general_text_No: 'å¦' general_text_Yes: '是' general_text_no: 'å¦' general_text_yes: '是' general_lang_name: 'Chinese/Traditional (ç¹é«”中文)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: Big5 general_pdf_fontname: msungstdlight general_pdf_monospaced_fontname: msungstdlight general_first_day_of_week: '7' notice_account_updated: 帳戶更新資訊已儲存 notice_account_invalid_credentials: å¸³æˆ¶æˆ–å¯†ç¢¼ä¸æ­£ç¢º notice_account_password_updated: 帳戶新密碼已儲存 notice_account_wrong_password: å¯†ç¢¼ä¸æ­£ç¢º notice_account_register_done: 帳號已建立æˆåŠŸã€‚æ¬²å•Ÿç”¨æ‚¨çš„å¸³è™Ÿï¼Œè«‹é»žæ“Šç³»çµ±ç¢ºèªä¿¡å‡½ä¸­çš„啟用連çµã€‚ notice_account_not_activated_yet: 您尚未完æˆå•Ÿç”¨æ‚¨çš„帳號。若您è¦ç´¢å–新的帳號啟用 Email ,請 é»žæ“Šæ­¤é€£çµ ã€‚ notice_account_locked: 您的帳號已被鎖定。 notice_can_t_change_password: 這個帳號使用外部驗證方å¼ï¼Œç„¡æ³•變更其密碼。 notice_account_lost_email_sent: 包å«é¸æ“‡æ–°å¯†ç¢¼æŒ‡ç¤ºçš„é›»å­éƒµä»¶ï¼Œå·²ç¶“寄出給您。 notice_account_activated: 您的帳號已經啟用,å¯ç”¨å®ƒç™»å…¥ç³»çµ±ã€‚ notice_successful_create: 建立æˆåŠŸ notice_successful_update: æ›´æ–°æˆåŠŸ notice_successful_delete: 刪除æˆåŠŸ notice_successful_connection: 連線æˆåŠŸ notice_file_not_found: 您想è¦å­˜å–çš„é é¢å·²ç¶“ä¸å­˜åœ¨æˆ–被æ¬ç§»è‡³å…¶ä»–ä½ç½®ã€‚ notice_locking_conflict: 資料已被其他使用者更新。 notice_not_authorized: ä½ æœªè¢«æŽˆæ¬Šå­˜å–æ­¤é é¢ã€‚ notice_not_authorized_archived_project: 您欲存å–的專案已經被å°å­˜ã€‚ notice_email_sent: "郵件已經æˆåŠŸå¯„é€è‡³ä»¥ä¸‹æ”¶ä»¶è€…: %{value}" notice_email_error: "寄é€éƒµä»¶çš„éŽç¨‹ä¸­ç™¼ç”ŸéŒ¯èª¤ (%{value})" notice_feeds_access_key_reseted: 您的 Atom å­˜å–é‡‘é‘°å·²è¢«é‡æ–°è¨­å®šã€‚ notice_api_access_key_reseted: 您的 API å­˜å–é‡‘é‘°å·²è¢«é‡æ–°è¨­å®šã€‚ notice_failed_to_save_issues: "無法儲存 %{count} 議題到下列所é¸å–çš„ %{total} 個項目中: %{ids}。" notice_failed_to_save_time_entries: "無法儲存 %{count} 個工時到下列所é¸å–çš„ %{total} 個項目中: %{ids}。" notice_failed_to_save_members: "æˆå“¡å„²å­˜å¤±æ•—: %{errors}." notice_account_pending: "您的帳號已經建立,正在等待管ç†å“¡çš„審核。" notice_default_data_loaded: é è¨­çµ„態已載入æˆåŠŸã€‚ notice_unable_delete_version: 無法刪除版本。 notice_unable_delete_time_entry: 無法刪除工時記錄項目。 notice_issue_done_ratios_updated: 議題完æˆç™¾åˆ†æ¯”已更新。 notice_gantt_chart_truncated: "由於項目數é‡è¶…éŽå¯é¡¯ç¤ºæ•¸é‡çš„æœ€å¤§å€¼ (%{max}),故此甘特圖尾部已被截斷" notice_issue_successful_create: "議題 %{id} 已建立。" notice_issue_update_conflict: "當您正在編輯這個議題的時候,它已經被其他人æ¶å…ˆä¸€æ­¥æ›´æ–°éŽã€‚" notice_account_deleted: "您的帳戶已被永久刪除。" notice_user_successful_create: "已建立用戶 %{id}。" notice_new_password_must_be_different: 新舊密碼必須相異 notice_import_finished: "å·²æˆåŠŸåŒ¯å…¥æ‰€æœ‰çš„é …ç›®å…± %{count} 個" notice_import_finished_with_errors: "無法匯入 %{count} 個項目 (全部共 %{total} 個)" error_can_t_load_default_data: "無法載入é è¨­çµ„態: %{value}" error_scm_not_found: "在儲存機制中找ä¸åˆ°é€™å€‹é …目或修訂版。" error_scm_command_failed: "嘗試存å–儲存機制時發生錯誤: %{value}" error_scm_annotate: "é …ç›®ä¸å­˜åœ¨æˆ–項目無法被加上附註。" error_scm_annotate_big_text_file: æ­¤é …ç›®ç„¡æ³•è¢«æ¨™è¨»ï¼Œå› ç‚ºå®ƒå·²ç¶“è¶…éŽæœ€å¤§çš„æ–‡å­—檔大å°ã€‚ error_issue_not_found_in_project: '該議題ä¸å­˜åœ¨æˆ–ä¸å±¬æ–¼æ­¤å°ˆæ¡ˆ' error_no_tracker_in_project: '此專案尚未指定追蹤標籤。請檢查專案的設定資訊。' error_no_default_issue_status: '尚未定義議題狀態的é è¨­å€¼ã€‚請您å‰å¾€ã€Œç¶²ç«™ç®¡ç†ã€->「議題狀態清單ã€é é¢ï¼Œæª¢æŸ¥ç›¸é—œçµ„態設定。' error_can_not_delete_custom_field: ç„¡æ³•åˆªé™¤è‡ªè¨‚æ¬„ä½ error_can_not_delete_tracker_html: "此追蹤標籤已包å«è­°é¡Œï¼Œç„¡æ³•被刪除。

    下列專案包å«äº†ä½¿ç”¨æ­¤è¿½è¹¤æ¨™ç±¤çš„項目:
    %{projects}

    " error_can_not_remove_role: "此角色已被使用,無法將其刪除。" error_can_not_reopen_issue_on_closed_version: 'åˆ†æ´¾çµ¦ã€Œå·²çµæŸã€ç‰ˆæœ¬çš„議題,無法å†å°‡å…¶ç‹€æ…‹è®Šæ›´ç‚ºã€Œé€²è¡Œä¸­ã€' error_can_not_archive_project: 此專案無法被å°å­˜ error_issue_done_ratios_not_updated: "議題完æˆç™¾åˆ†æ¯”未更新。" error_workflow_copy_source: 'è«‹é¸æ“‡ä¸€å€‹ä¾†æºè­°é¡Œè¿½è¹¤æ¨™ç±¤æˆ–角色' error_workflow_copy_target: 'è«‹é¸æ“‡ä¸€å€‹ï¼ˆæˆ–多個)目的議題追蹤標籤或角色' error_unable_delete_issue_status: '無法刪除議題狀態 (%{value})' error_unable_to_connect: "無法連線至(%{value})" error_attachment_too_big: "é€™å€‹æª”æ¡ˆç„¡æ³•è¢«ä¸Šå‚³ï¼Œå› ç‚ºå®ƒå·²ç¶“è¶…éŽæœ€å¤§çš„æª”æ¡ˆå¤§å° (%{max_size})" error_session_expired: "æ‚¨çš„å·¥ä½œéšŽæ®µå·²ç¶“éŽæœŸã€‚è«‹é‡æ–°ç™»å…¥ã€‚" warning_attachments_not_saved: "%{count} 個附加檔案無法被儲存。" error_password_expired: "æ‚¨çš„å¯†ç¢¼å·²ç¶“éŽæœŸæˆ–是管ç†å“¡è¦æ±‚您變更密碼." error_invalid_file_encoding: "é€™å€‹æª”æ¡ˆä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ %{encoding} 編碼檔案" error_invalid_csv_file_or_settings: "é€™å€‹æª”æ¡ˆä¸æ˜¯ä¸€å€‹ CSV 檔案,或是未符åˆä¸‹é¢æ‰€åˆ—之設定值 (%{value})" error_can_not_read_import_file: "讀å–匯入檔案時發生錯誤" error_attachment_extension_not_allowed: "附件之附檔åä¸å…許使用 %{extension}" error_ldap_bind_credentials: "無效的 LDAP 帳號/密碼" error_no_tracker_allowed_for_new_issue_in_project: "此專案沒有您å¯ç”¨ä¾†å»ºç«‹æ–°è­°é¡Œçš„追蹤標籤" error_no_projects_with_tracker_allowed_for_new_issue: "此追蹤標籤沒有您å¯ç”¨ä¾†å»ºç«‹æ–°è­°é¡Œçš„專案" error_move_of_child_not_possible: "å­ä»»å‹™ %{child} 無法被æ¬ç§»è‡³æ–°çš„專案: %{errors}" error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: "ç„¡æ³•å°‡è€—ç”¨å·¥æ™‚é‡æ–°åˆ†é…給å³å°‡è¢«åˆªé™¤çš„å•題" warning_fields_cleared_on_bulk_edit: "é¸å–物件的變更將導致一個或多個欄ä½ä¹‹å…§å®¹å€¼è¢«è‡ªå‹•刪除" error_exceeds_maximum_hours_per_day: "工時記錄單日ä¸èƒ½è¶…éŽ %{max_hours} å°æ™‚ (ç›®å‰å·²ç™»éŒ„ %{logged_hours} å°æ™‚)" mail_subject_lost_password: 您的 Redmine 網站密碼 mail_body_lost_password: '欲變更您的 Redmine 網站密碼, 請點é¸ä»¥ä¸‹éˆçµ:' mail_subject_register: 啟用您的 Redmine 帳號 mail_body_register: '欲啟用您的 Redmine 帳號, 請點é¸ä»¥ä¸‹éˆçµ:' mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨ %{value} 帳號登入 Redmine 網站。" mail_body_account_information: 您的 Redmine 帳號資訊 mail_subject_account_activation_request: Redmine 帳號啟用需求通知 mail_body_account_activation_request: "æœ‰ä½æ–°ç”¨æˆ¶ (%{value}) 已經完æˆè¨»å†Šï¼Œæ­£ç­‰å€™æ‚¨çš„審核:" mail_subject_reminder: "您有 %{count} 個議題å³å°‡åˆ°æœŸ (%{days})" mail_body_reminder: "%{count} 個分派給您的議題,將於 %{days} 天之內到期:" mail_subject_wiki_content_added: "'%{id}' wiki é é¢å·²è¢«æ–°å¢ž" mail_body_wiki_content_added: "æ­¤ '%{id}' wiki é é¢å·²è¢« %{author} 新增。" mail_subject_wiki_content_updated: "'%{id}' wiki é é¢å·²è¢«æ›´æ–°" mail_body_wiki_content_updated: "æ­¤ '%{id}' wiki é é¢å·²è¢« %{author} 更新。" mail_subject_security_notification: "安全性通知" mail_body_security_notification_change: "%{field} 已變更。" mail_body_security_notification_change_to: "%{field} 已變更為 %{value}。" mail_body_security_notification_add: "%{field} %{value} 已新增。" mail_body_security_notification_remove: "%{field} %{value} 已移除。" mail_body_security_notification_notify_enabled: "é›»å­éƒµä»¶åœ°å€ %{value} 已開始接收通知。" mail_body_security_notification_notify_disabled: "é›»å­éƒµä»¶åœ°å€ %{value} å·²ä¸å†æŽ¥æ”¶é€šçŸ¥ã€‚" mail_body_settings_updated: "下列設定已變更:" mail_body_password_updated: "您的密碼已變更。" field_name: å稱 field_description: 概述 field_summary: æ‘˜è¦ field_is_required: å¿…å¡« field_firstname: åå­— field_lastname: å§“æ° field_mail: é›»å­éƒµä»¶ field_address: é›»å­éƒµä»¶åœ°å€ field_filename: 檔案å稱 field_filesize: å¤§å° field_downloads: 下載次數 field_author: 作者 field_created_on: 建立日期 field_updated_on: 更新日期 field_closed_on: çµæŸæ—¥æœŸ field_field_format: æ ¼å¼ field_is_for_all: 給全部的專案 field_possible_values: å¯èƒ½å€¼ field_regexp: è¦å‰‡é‹ç®—å¼ field_min_length: 最å°é•·åº¦ field_max_length: 最大長度 field_value: 值 field_category: 分類 field_title: 標題 field_project: 專案 field_issue: 議題 field_status: 狀態 field_notes: 筆記 field_is_closed: è­°é¡Œå·²çµæŸ field_is_default: é è¨­å€¼ field_tracker: 追蹤標籤 field_subject: 主旨 field_due_date: å®Œæˆæ—¥æœŸ field_assigned_to: 被分派者 field_priority: 優先權 field_fixed_version: 版本 field_user: 用戶 field_principal: User or Group field_role: 角色 field_homepage: ç¶²ç«™é¦–é  field_is_public: 公開 field_parent: 父專案 field_is_in_roadmap: 議題顯示於版本è—圖中 field_login: 帳戶å稱 field_mail_notification: é›»å­éƒµä»¶æé†’é¸é … field_admin: 管ç†è€… field_last_login_on: 最近連線日期 field_language: 語言 field_effective_date: 日期 field_password: 密碼 field_new_password: 新密碼 field_password_confirmation: ç¢ºèªæ–°å¯†ç¢¼ field_version: 版本 field_type: Type field_host: Host field_port: 連接埠 field_account: 帳戶 field_base_dn: Base DN field_attr_login: 登入屬性 field_attr_firstname: å字屬性 field_attr_lastname: å§“æ°å±¬æ€§ field_attr_mail: é›»å­éƒµä»¶ä¿¡ç®±å±¬æ€§ field_onthefly: 峿™‚建立使用者 field_start_date: 開始日期 field_done_ratio: 完æˆç™¾åˆ†æ¯” field_auth_source: é©—è­‰æ¨¡å¼ field_hide_mail: éš±è—æˆ‘的電å­éƒµä»¶ field_comments: 回應 field_url: ç¶²å€ field_start_page: é¦–é  field_subproject: å­å°ˆæ¡ˆ field_hours: å°æ™‚ field_activity: 活動 field_spent_on: 日期 field_identifier: 代碼 field_is_filter: 用來作為篩é¸å™¨ field_issue_to: 相關議題 field_delay: 逾期 field_assignable: 議題å¯è¢«åˆ†æ´¾è‡³æ­¤è§’色 field_redirect_existing_links: 釿–°å°Žå‘ç¾æœ‰é€£çµ field_estimated_hours: é ä¼°å·¥æ™‚ field_column_names: æ¬„ä½ field_time_entries: 耗用工時 field_time_zone: æ™‚å€ field_searchable: å¯ç”¨åšæœå°‹æ¢ä»¶ field_default_value: é è¨­å€¼ field_comments_sorting: å›žæ‡‰æŽ’åº field_parent_title: 父é é¢ field_editable: å¯ç·¨è¼¯ field_watcher: 監看員 field_content: 內容 field_group_by: çµæžœåˆ†çµ„æ–¹å¼ field_sharing: 共用 field_parent_issue: 父議題 field_member_of_group: "被分派者的群組" field_assigned_to_role: "被分派者的角色" field_text: 內容文字 field_visible: å¯è¢«çœ‹è¦‹ field_warn_on_leaving_unsaved: "æé†’我將è¦é›¢é–‹çš„é é¢ä¸­å°šæœ‰æœªå„²å­˜çš„資料" field_issues_visibility: 議題å¯è¦‹åº¦ field_is_private: ç§äºº field_commit_logs_encoding: èªå¯è¨Šæ¯ç·¨ç¢¼ field_scm_path_encoding: 路徑編碼 field_path_to_repository: 儲存機制路徑 field_root_directory: 根資料夾 field_cvsroot: CVSROOT field_cvs_module: 模組 field_repository_is_default: 主è¦å„²å­˜æ©Ÿåˆ¶ field_multiple: 多é‡å€¼ field_auth_source_ldap_filter: LDAP 篩é¸å™¨ field_core_fields: æ¨™æº–æ¬„ä½ field_timeout: "逾時 (å–®ä½: ç§’)" field_board_parent: 父論壇 field_private_notes: ç§äººç­†è¨˜ field_inherit_members: 繼承父專案æˆå“¡ field_generate_password: 產生密碼 field_must_change_passwd: 必須在下次登入時變更密碼 field_default_status: é è¨­ç‹€æ…‹ field_users_visibility: 用戶å¯è¦‹åº¦ field_time_entries_visibility: 工時紀錄å¯è¦‹åº¦ field_total_estimated_hours: é ä¼°å·¥æ™‚總計 field_default_version: é è¨­ç‰ˆæœ¬ field_remote_ip: IP ä½å€ field_textarea_font: 文字å€åŸŸä½¿ç”¨çš„å­—åž‹ field_updated_by: 更新者 field_last_updated_by: 上次更新者 field_full_width_layout: 全寬度å¼ç‰ˆé¢é…ç½® field_digest: 總和檢查碼 field_default_assigned_to: é è¨­è¢«åˆ†æ´¾è€… setting_app_title: 標題 setting_welcome_text: 歡迎詞 setting_default_language: é è¨­èªžè¨€ setting_login_required: 需è¦é©—è­‰ setting_self_registration: 註冊é¸é … setting_show_custom_fields_on_registration: è¨»å†Šæ™‚é¡¯ç¤ºè‡ªè¨‚æ¬„ä½ setting_attachment_max_size: 附件大å°é™åˆ¶ setting_issues_export_limit: 議題匯出é™åˆ¶ setting_mail_from: 寄件者電å­éƒµä»¶ setting_plain_text_mail: 純文字郵件 (ä¸å« HTML) setting_host_name: 主機å稱 setting_text_formatting: æ–‡å­—æ ¼å¼ setting_wiki_compression: 壓縮 Wiki æ­·å²æ–‡ç«  setting_feeds_limit: Atom æ–°èžé™åˆ¶ setting_autofetch_changesets: 自動擷å–èªå¯ setting_default_projects_public: 新建立之專案é è¨­ç‚ºã€Œå…¬é–‹ã€ setting_sys_api_enabled: 啟用管ç†å„²å­˜æ©Ÿåˆ¶çš„ç¶²é æœå‹™ (Web Service) setting_commit_ref_keywords: èªå¯ç”¨æ–¼åƒç…§ä¹‹é—œéµå­— setting_commit_fix_keywords: èªå¯ç”¨æ–¼ä¿®æ­£ä¹‹é—œéµå­— setting_autologin: 自動登入 setting_date_format: æ—¥æœŸæ ¼å¼ setting_time_format: æ™‚é–“æ ¼å¼ setting_timespan_format: æ™‚é–“ç¯„åœæ ¼å¼ setting_cross_project_issue_relations: å…許關è¯è‡³å…¶å®ƒå°ˆæ¡ˆçš„議題 setting_cross_project_subtasks: å…許跨專案的å­ä»»å‹™ setting_issue_list_default_columns: é è¨­é¡¯ç¤ºæ–¼è­°é¡Œæ¸…å–®çš„æ¬„ä½ setting_repositories_encodings: 附加檔案與儲存機制的編碼 setting_emails_header: é›»å­éƒµä»¶å‰é ­èªªæ˜Ž setting_emails_footer: é›»å­éƒµä»¶é™„帶說明 setting_protocol: å”定 setting_per_page_options: æ¯é é¡¯ç¤ºå€‹æ•¸é¸é … setting_user_format: ç”¨æˆ¶é¡¯ç¤ºæ ¼å¼ setting_activity_days_default: 專案活動顯示天數 setting_display_subprojects_issues: é è¨­æ–¼çˆ¶å°ˆæ¡ˆä¸­é¡¯ç¤ºå­å°ˆæ¡ˆçš„議題 setting_enabled_scm: 啟用的 SCM setting_mail_handler_body_delimiters: "截去郵件中包å«ä¸‹åˆ—值之後的內容" setting_mail_handler_enable_regex: "啟用è¦å‰‡é‹ç®—å¼" setting_mail_handler_api_enabled: 啟用處ç†å‚³å…¥é›»å­éƒµä»¶çš„æœå‹™ setting_mail_handler_api_key: 傳入電å­éƒµä»¶ç¶²é æœå‹™ API 金鑰 setting_sys_api_key: 儲存機制管ç†ç¶²é æœå‹™ API 金鑰 setting_sequential_project_identifiers: 循åºç”¢ç”Ÿå°ˆæ¡ˆè­˜åˆ¥ç¢¼ setting_gravatar_enabled: 啟用 Gravatar å…¨çƒèªè­‰å¤§é ­åƒ setting_gravatar_default: é è¨­å…¨çƒèªè­‰å¤§é ­åƒåœ–片 setting_diff_max_lines_displayed: 差異顯示行數之最大值 setting_file_max_size_displayed: 檔案內容顯示大å°ä¹‹æœ€å¤§å€¼ setting_repository_log_display_limit: 修訂版顯示數目之最大值 setting_password_max_age: 必須在多少天後變更密碼 setting_password_min_length: 密碼最å°é•·åº¦ setting_lost_password: å…許使用電å­éƒµä»¶é‡æ–°è¨­å®šå¯†ç¢¼ setting_new_project_user_role_id: 管ç†è€…以外之用戶建立新專案時,將被分派的角色 setting_default_projects_modules: 新專案é è¨­å•Ÿç”¨çš„æ¨¡çµ„ setting_issue_done_ratio: 計算議題完æˆç™¾åˆ†æ¯”ä¹‹æ–¹å¼ setting_issue_done_ratio_issue_field: 便“šè­°é¡Œå®Œæˆç™¾åˆ†æ¯”æ¬„ä½ setting_issue_done_ratio_issue_status: 便“šè­°é¡Œç‹€æ…‹ setting_start_of_week: 週的第一天 setting_rest_api_enabled: 啟用 REST 網路æœå‹™æŠ€è¡“(Web Service) setting_cache_formatted_text: å¿«å–已格å¼åŒ–文字 setting_default_notification_option: é è¨­é€šçŸ¥é¸é … setting_commit_logtime_enabled: 啟用èªå¯ä¸­çš„æ™‚間記錄 setting_commit_logtime_activity_id: æ™‚é–“è¨˜éŒ„å°æ‡‰çš„æ´»å‹• setting_gantt_items_limit: 甘特圖中項目顯示數é‡çš„æœ€å¤§å€¼ setting_issue_group_assignment: å…許議題被分派至群組 setting_default_issue_start_date_to_creation_date: 設定新議題的起始日期為今天的日期 setting_commit_cross_project_ref: å…許關è¯ä¸¦ä¿®æ­£å…¶ä»–專案的議題 setting_unsubscribe: å…è¨±ç”¨æˆ¶å–æ¶ˆè¨»å†Šï¼ˆåˆªé™¤å¸³æˆ¶ï¼‰ setting_session_lifetime: 工作階段存留時間最大值 setting_session_timeout: 工作階段無活動逾時時間 setting_thumbnails_enabled: 顯示附加檔案的縮圖 setting_thumbnails_size: "ç¸®åœ–å¤§å° (å–®ä½: åƒç´  pixels)" setting_non_working_week_days: éžå·¥ä½œæ—¥ setting_jsonp_enabled: 啟用 JSONP æ”¯æ´ setting_default_projects_tracker_ids: 新專案é è¨­ä½¿ç”¨çš„追蹤標籤 setting_mail_handler_excluded_filenames: 移除符åˆä¸‹åˆ—å稱的附件 setting_force_default_language_for_anonymous: 強迫匿å用戶使用é è¨­èªžè¨€ setting_force_default_language_for_loggedin: 強迫已登入用戶使用é è¨­èªžè¨€ setting_link_copied_issue: 複製時連çµè­°é¡Œ setting_max_additional_emails: å…¶ä»–é›»å­éƒµä»¶åœ°å€çš„æœ€å¤§å€¼ setting_search_results_per_page: æ¯ä¸€é çš„æœå°‹çµæžœæ•¸ç›® setting_attachment_extensions_allowed: å…許使用的附檔å setting_attachment_extensions_denied: ç¦æ­¢ä½¿ç”¨çš„副檔å setting_new_item_menu_tab: å»ºç«‹æ–°ç‰©ä»¶çš„å°ˆæ¡ˆåŠŸèƒ½åˆ†é  setting_commit_logs_formatting: 套用文字格å¼è‡³èªå¯è¨Šæ¯ setting_timelog_required_fields: å·¥æ™‚è¨˜éŒ„å¿…å¡«æ¬„ä½ setting_close_duplicate_issues: è‡ªå‹•çµæŸé‡è¤‡çš„議題 setting_time_entry_list_defaults: 工時記錄清單é è¨­å€¼ setting_timelog_accept_0_hours: å…許工時為 0 的工時記錄 setting_timelog_max_hours_per_day: å–®ä¸€ç”¨æˆ¶æ¯æ—¥å·¥æ™‚之最大值 permission_add_project: 建立專案 permission_add_subprojects: 建立å­å°ˆæ¡ˆ permission_edit_project: 編輯專案 permission_close_project: 關閉 / 釿–°é–‹å•Ÿå°ˆæ¡ˆ permission_select_project_modules: 鏿“‡å°ˆæ¡ˆæ¨¡çµ„ permission_manage_members: ç®¡ç†æˆå“¡ permission_manage_project_activities: 管ç†å°ˆæ¡ˆæ´»å‹• permission_manage_versions: 管ç†ç‰ˆæœ¬ permission_manage_categories: 管ç†è­°é¡Œåˆ†é¡ž permission_view_issues: 檢視議題 permission_add_issues: 新增議題 permission_edit_issues: 編輯議題 permission_copy_issues: 複製議題 permission_manage_issue_relations: 管ç†è­°é¡Œé—œè¯ permission_set_issues_private: 設定議題為公開或ç§äºº permission_set_own_issues_private: 設定自己的議題為公開或ç§äºº permission_add_issue_notes: 新增筆記 permission_edit_issue_notes: 編輯筆記 permission_edit_own_issue_notes: 編輯自己的筆記 permission_view_private_notes: 檢視ç§äººç­†è¨˜ permission_set_notes_private: 設定筆記為ç§äººç­†è¨˜ permission_delete_issues: 刪除議題 permission_manage_public_queries: 管ç†å…¬é–‹æŸ¥è©¢ permission_save_queries: 儲存查詢 permission_view_gantt: 檢視甘特圖 permission_view_calendar: 檢視日曆 permission_view_issue_watchers: 檢視監看員清單 permission_add_issue_watchers: 新增監看員 permission_delete_issue_watchers: 刪除監看員 permission_log_time: 紀錄耗用工時 permission_view_time_entries: 檢視耗用工時 permission_edit_time_entries: 編輯工時紀錄 permission_edit_own_time_entries: 編輯自己的工時記錄 permission_view_news: æª¢è¦–æ–°èž permission_manage_news: ç®¡ç†æ–°èž permission_comment_news: å›žæ‡‰æ–°èž permission_view_documents: 檢視文件 permission_add_documents: 新增文件 permission_edit_documents: 編輯文件 permission_delete_documents: 刪除文件 permission_manage_files: ç®¡ç†æª”案 permission_view_files: 檢視檔案 permission_manage_wiki: ç®¡ç† wiki permission_rename_wiki_pages: 釿–°å‘½å wiki é é¢ permission_delete_wiki_pages: 刪除 wiki é é¢ permission_view_wiki_pages: 檢視 wiki permission_view_wiki_edits: 檢視 wiki æ­·å² permission_edit_wiki_pages: 編輯 wiki é é¢ permission_delete_wiki_pages_attachments: 刪除附件 permission_protect_wiki_pages: 專案 wiki é é¢ permission_manage_repository: 管ç†å„²å­˜æ©Ÿåˆ¶ permission_browse_repository: ç€è¦½å„²å­˜æ©Ÿåˆ¶ permission_view_changesets: 檢視變更集 permission_commit_access: å­˜å–èªå¯ permission_manage_boards: 管ç†è¨Žè«–版 permission_view_messages: æª¢è¦–è¨Šæ¯ permission_add_messages: æ–°å¢žè¨Šæ¯ permission_edit_messages: ç·¨è¼¯è¨Šæ¯ permission_edit_own_messages: ç·¨è¼¯è‡ªå·±çš„è¨Šæ¯ permission_delete_messages: åˆªé™¤è¨Šæ¯ permission_delete_own_messages: åˆªé™¤è‡ªå·±çš„è¨Šæ¯ permission_export_wiki_pages: 匯出 wiki é é¢ permission_manage_subtasks: 管ç†å­ä»»å‹™ permission_manage_related_issues: 管ç†ç›¸é—œè­°é¡Œ permission_import_issues: 匯入議題 project_module_issue_tracking: 議題追蹤 project_module_time_tracking: 工時追蹤 project_module_news: æ–°èž project_module_documents: 文件 project_module_files: 檔案 project_module_wiki: Wiki project_module_repository: 版本控管 project_module_boards: è¨Žè«–å€ project_module_calendar: 日曆 project_module_gantt: 甘特圖 label_user: 用戶 label_user_plural: 用戶清單 label_user_new: 建立新用戶 label_user_anonymous: 匿å用戶 label_project: 專案 label_project_new: 建立新專案 label_project_plural: 專案清單 label_x_projects: zero: 無專案 one: 1 個專案 other: "%{count} 個專案" label_project_all: 全部的專案 label_project_latest: 最近的專案 label_issue: 議題 label_issue_new: 建立新議題 label_issue_plural: 議題清單 label_issue_view_all: 檢視所有議題 label_issues_by: "議題按 %{value} 分組顯示" label_issue_added: 議題已新增 label_issue_updated: 議題已更新 label_issue_note_added: 筆記已新增 label_issue_status_updated: 狀態已更新 label_issue_assigned_to_updated: 被分派者已更新 label_issue_priority_updated: 優先權已更新 label_document: 文件 label_document_new: 建立新文件 label_document_plural: 文件 label_document_added: 文件已新增 label_role: 角色 label_role_plural: 角色 label_role_new: 建立新角色 label_role_and_permissions: è§’è‰²èˆ‡æ¬Šé™ label_role_anonymous: 匿å者 label_role_non_member: éžæœƒå“¡ label_member: æˆå“¡ label_member_new: 建立新æˆå“¡ label_member_plural: æˆå“¡ label_tracker: 追蹤標籤 label_tracker_plural: 追蹤標籤清單 label_tracker_all: 所有的追蹤標籤 label_tracker_new: 建立新的追蹤標籤 label_workflow: æµç¨‹ label_issue_status: 議題狀態 label_issue_status_plural: 議題狀態清單 label_issue_status_new: 建立新狀態 label_issue_category: 議題分類 label_issue_category_plural: 議題分類清單 label_issue_category_new: 建立新分類 label_custom_field: è‡ªè¨‚æ¬„ä½ label_custom_field_plural: è‡ªè¨‚æ¬„ä½æ¸…å–® label_custom_field_new: å»ºç«‹æ–°è‡ªè¨‚æ¬„ä½ label_enumerations: 列舉值清單 label_enumeration_new: 建立新列舉值 label_information: 資訊 label_information_plural: 資訊 label_register: 註冊 label_password_lost: éºå¤±å¯†ç¢¼ label_password_required: ç¢ºèªæ‚¨çš„密碼後繼續 label_home: ç¶²ç«™é¦–é  label_my_page: å¸³æˆ¶é¦–é  label_my_account: 我的帳戶 label_my_projects: 我的專案 label_administration: ç¶²ç«™ç®¡ç† label_login: 登入 label_logout: 登出 label_help: 說明 label_reported_issues: 我通報的議題 label_assigned_issues: 我被分派的議題 label_assigned_to_me_issues: 分派給我的議題 label_registered_on: 註冊於 label_activity: 活動 label_user_activity: "%{value} 的活動" label_new: 建立新的... label_logged_as: ç›®å‰ç™»å…¥ label_environment: 環境 label_authentication: é©—è­‰ label_auth_source: é©—è­‰æ¨¡å¼ label_auth_source_new: å»ºç«‹æ–°é©—è­‰æ¨¡å¼ label_auth_source_plural: é©—è­‰æ¨¡å¼æ¸…å–® label_subproject_plural: å­å°ˆæ¡ˆ label_subproject_new: 建立å­å°ˆæ¡ˆ label_and_its_subprojects: "%{value} 與其å­å°ˆæ¡ˆ" label_min_max_length: æœ€å° - 最大 長度 label_list: 清單 label_date: 日期 label_integer: 整數 label_float: 浮點數 label_boolean: 布林 label_string: 文字 label_text: 長文字 label_attribute: 屬性 label_attribute_plural: 屬性 label_no_data: 沒有任何資料å¯ä¾›é¡¯ç¤º label_no_preview: 無法é è¦½ label_no_preview_alternative_html: 無法é è¦½. 請改為使用 %{link} 此檔案. label_no_preview_download: 下載 label_change_status: 變更狀態 label_history: æ­·å² label_attachment: 檔案 label_attachment_new: 建立新檔案 label_attachment_delete: 刪除檔案 label_attachment_plural: 檔案 label_file_added: 檔案已新增 label_report: 報告 label_report_plural: 報告 label_news: æ–°èž label_news_new: å»ºç«‹æ–°èž label_news_plural: æ–°èž label_news_latest: æœ€è¿‘æ–°èž label_news_view_all: æª¢è¦–å…¨éƒ¨çš„æ–°èž label_news_added: æ–°èžå·²æ–°å¢ž label_news_comment_added: å›žæ‡‰å·²åŠ å…¥æ–°èž label_settings: 設定 label_overview: 概觀 label_version: 版本 label_version_new: 建立新版本 label_version_plural: 版本 label_close_versions: çµæŸå·²å®Œæˆçš„版本 label_confirmation: ç¢ºèª label_export_to: 匯出至 label_read: 讀å–... label_public_projects: 公開專案 label_open_issues: 進行中 label_open_issues_plural: 進行中 label_closed_issues: å·²çµæŸ label_closed_issues_plural: å·²çµæŸ label_x_open_issues_abbr: zero: 0 進行中 one: 1 進行中 other: "%{count} 進行中" label_x_closed_issues_abbr: zero: 0 å·²çµæŸ one: 1 å·²çµæŸ other: "%{count} å·²çµæŸ" label_x_issues: zero: 0 個議題 one: 1 個議題 other: "%{count} 個議題" label_total: 總計 label_total_plural: 總計 label_total_time: 工時總計 label_permissions: æ¬Šé™ label_current_status: ç›®å‰ç‹€æ…‹ label_new_statuses_allowed: å¯è®Šæ›´è‡³ä»¥ä¸‹ç‹€æ…‹ label_all: 全部 label_any: ä»»æ„一個 label_none: 空值 label_nobody: ç„¡å label_next: ä¸‹ä¸€é  label_previous: ä¸Šä¸€é  label_used_by: 已使用專案 label_details: 明細 label_add_note: 加入一個新筆記 label_calendar: 日曆 label_months_from: 個月, 開始月份 label_gantt: 甘特圖 label_internal: 內部 label_last_changes: "最近 %{count} 個變更" label_change_view_all: 檢視全部的變更 label_comment: 回應 label_comment_plural: 回應 label_x_comments: zero: 無回應 one: 1 個回應 other: "%{count} 個回應" label_comment_add: 加入新回應 label_comment_added: 新回應已加入 label_comment_delete: 刪除回應 label_query: 自訂查詢 label_query_plural: 自訂查詢 label_query_new: 建立新查詢 label_my_queries: 我的自訂查詢 label_filter_add: åŠ å…¥æ–°ç¯©é¸æ¢ä»¶ label_filter_plural: ç¯©é¸æ¢ä»¶ label_equals: 等於 label_not_equals: ä¸ç­‰æ–¼ label_in_less_than: åœ¨å°æ–¼ label_in_more_than: 在大於 label_in_the_next_days: 在未來幾天之內 label_in_the_past_days: 在éŽå޻幾天之內 label_greater_or_equal: "大於等於 (>=)" label_less_or_equal: "å°æ–¼ç­‰æ–¼ (<=)" label_between: å€é–“ label_in: 在 label_today: 今天 label_yesterday: 昨天 label_this_week: 本週 label_last_week: 上週 label_last_n_weeks: "éŽåŽ» %{count} 週" label_last_n_days: "éŽåŽ» %{count} 天" label_this_month: 這個月 label_last_month: 上個月 label_this_year: 今年 label_date_range: 日期å€é–“ label_less_than_ago: å°æ–¼å¹¾å¤©ä¹‹å‰ label_more_than_ago: å¤§æ–¼å¹¾å¤©ä¹‹å‰ label_ago: å¤©ä»¥å‰ label_contains: åŒ…å« label_not_contains: ä¸åŒ…å« label_any_issues_in_project: 在專案中的任æ„議題 label_any_issues_not_in_project: ä¸åœ¨å°ˆæ¡ˆä¸­çš„ä»»æ„議題 label_no_issues_in_project: 沒有議題在專案中 label_any_open_issues: ä»»æ„進行中之議題 label_no_open_issues: ä»»æ„éžé€²è¡Œä¸­ä¹‹è­°é¡Œ label_day_plural: 天 label_repository: 儲存機制 label_repository_new: 建立新儲存機制 label_repository_plural: 儲存機制清單 label_branch: 分支 label_tag: 標籤 label_revision: 修訂版 label_revision_plural: 修訂版清單 label_revision_id: "修訂版 %{value}" label_associated_revisions: é—œè¯çš„修訂版 label_added: 已新增 label_modified: 已修改 label_copied: 已複製 label_renamed: 已釿–°å‘½å label_deleted: 已刪除 label_latest_revision: 最新的修訂版 label_latest_revision_plural: 最新的修訂版清單 label_view_revisions: 檢視修訂版清單 label_view_all_revisions: 檢視所有的的修訂版清單 label_x_revisions: "%{count} 個修訂版" label_max_size: 最大長度 label_roadmap: 版本è—圖 label_roadmap_due_in: "剩餘 %{value}" label_roadmap_overdue: "逾期 %{value}" label_roadmap_no_issues: 此版本尚未包å«ä»»ä½•議題 label_search: æœå°‹ label_result_plural: çµæžœ label_all_words: 包å«å…¨éƒ¨çš„字詞 label_wiki: Wiki label_wiki_edit: Wiki 編輯 label_wiki_edit_plural: Wiki 編輯 label_wiki_page: Wiki ç¶²é  label_wiki_page_plural: Wiki ç¶²é  label_wiki_page_new: 新增 Wiki é é¢ label_index_by_title: 便¨™é¡Œç´¢å¼• label_index_by_date: 便—¥æœŸç´¢å¼• label_current_version: ç¾è¡Œç‰ˆæœ¬ label_preview: é è¦½ label_feed_plural: Feeds label_changes_details: 所有變更的明細 label_issue_tracking: 議題追蹤 label_spent_time: 耗用工時 label_total_spent_time: 耗用工時總計 label_f_hour: "%{value} å°æ™‚" label_f_hour_plural: "%{value} å°æ™‚" label_f_hour_short: "%{value} å°æ™‚" label_time_tracking: 工時追蹤 label_change_plural: 變更 label_statistics: 統計資訊 label_commits_per_month: 便œˆä»½çµ±è¨ˆèªå¯ label_commits_per_author: ä¾ä½œè€…統計èªå¯ label_view_diff: 檢視差異 label_diff: 差異 label_diff_inline: 直列 label_diff_side_by_side: 並排 label_options: é¸é …清單 label_copy_workflow_from: 從以下追蹤標籤複製工作æµç¨‹ label_permissions_report: 權é™å ±è¡¨ label_watched_issues: 監看中的議題清單 label_related_issues: 相關的議題清單 label_applied_status: 已套用狀態 label_loading: 載入中... label_relation_new: å»ºç«‹æ–°é—œè¯ label_relation_delete: åˆªé™¤é—œè¯ label_relates_to: é—œè¯è‡³ label_duplicates: å·²é‡è¤‡ label_duplicated_by: èˆ‡å¾Œé¢æ‰€åˆ—議題é‡è¤‡ label_blocks: 阻擋 label_blocked_by: 被阻擋 label_precedes: 優先於 label_follows: 跟隨於 label_copied_to: 複製到 label_copied_from: 複製於 label_stay_logged_in: ç¶­æŒå·²ç™»å…¥ç‹€æ…‹ label_disabled: 關閉 label_show_completed_versions: 顯示已完æˆçš„版本 label_me: 我自己 label_board: 論壇 label_board_new: 建立新論壇 label_board_plural: 論壇 label_board_locked: 鎖定 label_board_sticky: 置頂 label_topic_plural: 討論主題 label_message_plural: è¨Šæ¯ label_message_last: 上一å°è¨Šæ¯ label_message_new: å»ºç«‹æ–°è¨Šæ¯ label_message_posted: 訊æ¯å·²æ–°å¢ž label_reply_plural: 回應 label_send_information: 寄é€å¸³æˆ¶è³‡è¨Šé›»å­éƒµä»¶çµ¦ç”¨æˆ¶ label_year: å¹´ label_month: 月 label_week: 週 label_date_from: é–‹å§‹ label_date_to: çµæŸ label_language_based: ä¾ç”¨æˆ¶ä¹‹èªžè¨€æ±ºå®š label_sort_by: "按 %{value} 排åº" label_send_test_email: 坄逿¸¬è©¦éƒµä»¶ label_feeds_access_key: Atom å­˜å–金鑰 label_missing_feeds_access_key: 找ä¸åˆ° Atom å­˜å–金鑰 label_feeds_access_key_created_on: "Atom å­˜å–éµå»ºç«‹æ–¼ %{value} 之å‰" label_module_plural: 模組 label_added_time_by: "是由 %{author} æ–¼ %{age} å‰åŠ å…¥" label_updated_time_by: "是由 %{author} æ–¼ %{age} 剿›´æ–°" label_updated_time: "æ–¼ %{value} 剿›´æ–°" label_jump_to_a_project: 鏿“‡æ¬²å‰å¾€çš„專案... label_file_plural: 檔案清單 label_changeset_plural: 變更集清單 label_default_columns: é è¨­æ¬„使¸…å–® label_no_change_option: (ç¶­æŒä¸è®Š) label_bulk_edit_selected_issues: 大é‡ç·¨è¼¯é¸å–的議題 label_bulk_edit_selected_time_entries: 大é‡ç·¨è¼¯é¸å–的工時項目 label_theme: ç•«é¢ä¸»é¡Œ label_default: é è¨­ label_search_titles_only: 僅æœå°‹æ¨™é¡Œ label_user_mail_option_all: "æé†’與我的專案有關的全部事件" label_user_mail_option_selected: "åªæé†’æˆ‘æ‰€é¸æ“‡å°ˆæ¡ˆä¸­çš„事件..." label_user_mail_option_none: "å–æ¶ˆæé†’" label_user_mail_option_only_my_events: "åªæé†’æˆ‘ç›£çœ‹ä¸­æˆ–åƒèˆ‡ä¸­çš„事物" label_user_mail_option_only_assigned: "åªæé†’æˆ‘ç›£çœ‹ä¸­æˆ–åˆ†æ´¾çµ¦æˆ‘çš„äº‹ç‰©" label_user_mail_option_only_owner: "åªæé†’æˆ‘ç›£çœ‹ä¸­æˆ–æ“æœ‰è€…為我的事物" label_user_mail_no_self_notified: "ä¸æé†’æˆ‘è‡ªå·±æ‰€åšçš„變更" label_registration_activation_by_email: é€éŽé›»å­éƒµä»¶å•Ÿç”¨å¸³æˆ¶ label_registration_manual_activation: 手動啟用帳戶 label_registration_automatic_activation: 自動啟用帳戶 label_display_per_page: "æ¯é é¡¯ç¤º: %{value} 個" label_age: 年齡 label_change_properties: 變更屬性 label_general: 一般 label_scm: 版本控管 label_plugins: å¤–æŽ›ç¨‹å¼ label_ldap_authentication: LDAP é©—è­‰ label_downloads_abbr: 下載 label_optional_description: é¡å¤–的說明 label_add_another_file: 增加其他檔案 label_preferences: å好é¸é … label_chronological_order: 以時間由é è‡³è¿‘æŽ’åº label_reverse_chronological_order: ä»¥æ™‚é–“ç”±è¿‘è‡³é æŽ’åº label_incoming_emails: 傳入的電å­éƒµä»¶ label_generate_key: 產生金鑰 label_issue_watchers: 監看員 label_example: 範例 label_display: 顯示 label_sort: æŽ’åº label_ascending: éžå¢žæŽ’åº label_descending: éžæ¸›æŽ’åº label_date_from_to: èµ· %{start} è¿„ %{end} label_wiki_content_added: Wiki é é¢å·²æ–°å¢ž label_wiki_content_updated: Wiki é é¢å·²æ›´æ–° label_group: 群組 label_group_plural: 群組清單 label_group_new: 建立新群組 label_group_anonymous: 匿å用戶 label_group_non_member: éžæˆå“¡ç”¨æˆ¶ label_time_entry_plural: 耗用工時 label_version_sharing_none: ä¸å…±ç”¨ label_version_sharing_descendants: 與å­å°ˆæ¡ˆå…±ç”¨ label_version_sharing_hierarchy: 與專案階層架構共用 label_version_sharing_tree: 與專案樹共用 label_version_sharing_system: 與全部的專案共用 label_update_issue_done_ratios: 更新議題完æˆç™¾åˆ†æ¯” label_copy_source: ä¾†æº label_copy_target: 目的地 label_copy_same_as_target: èˆ‡ç›®çš„åœ°ç›¸åŒ label_display_used_statuses_only: 僅顯示此追蹤標籤所使用之狀態 label_api_access_key: API å­˜å–金鑰 label_missing_api_access_key: 找ä¸åˆ° API å­˜å–金鑰 label_api_access_key_created_on: "API å­˜å–金鑰建立於 %{value} 之å‰" label_profile: é…ç½®æ¦‚æ³ label_subtask_plural: å­ä»»å‹™ label_project_copy_notifications: 在複製專案的éŽç¨‹ä¸­ï¼Œå‚³é€é€šçŸ¥éƒµä»¶ label_principal_search: "æœå°‹ç”¨æˆ¶æˆ–群組:" label_user_search: "æœå°‹ç”¨æˆ¶ï¼š" label_additional_workflow_transitions_for_author: 用戶為作者時é¡å¤–å…許的æµç¨‹è½‰æ› label_additional_workflow_transitions_for_assignee: 用戶為被分派者時é¡å¤–å…許的æµç¨‹è½‰æ› label_issues_visibility_all: 所有議題 label_issues_visibility_public: 所有éžç§äººè­°é¡Œ label_issues_visibility_own: 使用者所建立的或被分派的議題 label_git_report_last_commit: 報告最後èªå¯çš„æ–‡ä»¶å’Œç›®éŒ„ label_parent_revision: 父項 label_child_revision: å­é … label_export_options: "%{export_format} 匯出é¸é …" label_copy_attachments: 複製附件 label_copy_subtasks: 複製å­ä»»å‹™ label_item_position: "%{position} / %{count}" label_completed_versions: 已完æˆç‰ˆæœ¬ label_search_for_watchers: æœå°‹å¯ä¾›åŠ å…¥çš„ç›£çœ‹å“¡ label_session_expiration: 工作階段逾期 label_status_transitions: ç‹€æ…‹è½‰æ› label_fields_permissions: æ¬„ä½æ¬Šé™ label_readonly: 唯讀 label_required: å¿…å¡« label_hidden: éš±è— label_attribute_of_project: "專案的 %{name}" label_attribute_of_issue: "議題的 %{name}" label_attribute_of_author: "作者的 %{name}" label_attribute_of_assigned_to: "被分派者的 %{name}" label_attribute_of_user: "用戶的 %{name}" label_attribute_of_fixed_version: "版本的 %{name}" label_attribute_of_object: "%{object_name}çš„ %{name}" label_cross_project_descendants: 與å­å°ˆæ¡ˆå…±ç”¨ label_cross_project_tree: 與專案樹共用 label_cross_project_hierarchy: 與專案階層架構共用 label_cross_project_system: 與全部的專案共用 label_gantt_progress_line: 進度線 label_visibility_private: 僅我自己å¯è¦‹ label_visibility_roles: 僅é¸å–之角色å¯è¦‹ label_visibility_public: 任何用戶å‡å¯è¦‹ label_link: é€£çµ label_only: 僅於 label_drop_down_list: ä¸‹æ‹‰å¼æ¸…å–® label_checkboxes: æ ¸å–æ–¹å¡Š label_radio_buttons: é¸é …按鈕 label_link_values_to: é€£çµæ¬„ä½å€¼è‡³æ­¤ç¶²å€ label_custom_field_select_type: è«‹é¸æ“‡é€£çµæ­¤è‡ªè¨‚欄ä½çš„物件類型 label_check_for_updates: 檢查更新 label_latest_compatible_version: 最新的相容版本 label_unknown_plugin: ç„¡æ³•è¾¨è­˜çš„å¤–æŽ›ç¨‹å¼ label_add_projects: 加入專案 label_users_visibility_all: 所有活動中的用戶 label_users_visibility_members_of_visible_projects: å¯è¦‹å°ˆæ¡ˆä¸­çš„æˆå“¡ label_edit_attachments: 編輯附加檔案 label_link_copied_issue: 連çµåˆ°è¢«è¤‡è£½çš„議題 label_ask: è©¢å• label_search_attachments_yes: æœå°‹é™„加檔案的檔案å稱與說明 label_search_attachments_no: 䏿œå°‹é™„加檔案 label_search_attachments_only: 僅æœå°‹é™„加檔案 label_search_open_issues_only: 僅æœå°‹é€²è¡Œä¸­çš„議題 label_email_address_plural: é›»å­éƒµä»¶ label_email_address_add: 新增電å­éƒµä»¶åœ°å€ label_enable_notifications: 啟用通知 label_disable_notifications: åœç”¨é€šçŸ¥ label_blank_value: 空白 label_parent_task_attributes: 父議題屬性 label_parent_task_attributes_derived: 從å­ä»»å‹™è¨ˆç®—導出 label_parent_task_attributes_independent: 與å­ä»»å‹™ç„¡é—œ label_time_entries_visibility_all: 所有工時紀錄 label_time_entries_visibility_own: 用戶自己建立的工時紀錄 label_member_management: æˆå“¡ç®¡ç† label_member_management_all_roles: 所有角色 label_member_management_selected_roles_only: 僅é™ä¸‹åˆ—角色 label_import_issues: 匯入議題 label_select_file_to_import: é¸å–è¦åŒ¯å…¥çš„æª”案 label_fields_separator: 欄ä½åˆ†éš”符號 label_fields_wrapper: 欄ä½åŒ…è£è­˜åˆ¥ç¬¦è™Ÿ label_encoding: 編碼 label_comma_char: 逗號(,) label_semi_colon_char: 分號(;) label_quote_char: 引號(') label_double_quote_char: 雙引號(") label_fields_mapping: 欄ä½å°æ‡‰ label_file_content_preview: 檔案內容é è¦½ label_create_missing_values: 建立缺少的數值 label_api: API label_field_format_enumeration: éµ/值 清單 label_default_values_for_new_users: 新用戶使用之é è¨­å€¼ label_relations: é—œè¯ label_new_project_issue_tab_enabled: é¡¯ç¤ºã€Œå»ºç«‹æ–°è­°é¡Œã€æ¨™ç±¤é é¢ label_new_object_tab_enabled: 顯示 "+" 下拉功能表 label_table_of_contents: 目錄 label_font_default: é è¨­å­—åž‹ label_font_monospace: 等寬字型 label_font_proportional: 調和間è·å­—åž‹ label_last_notes: 最後一則筆記 button_login: 登入 button_submit: é€å‡º button_save: 儲存 button_check_all: å…¨é¸ button_uncheck_all: å…¨ä¸é¸ button_collapse_all: 全部摺疊 button_expand_all: 全部展開 button_delete: 刪除 button_create: 建立 button_create_and_continue: 繼續建立 button_test: 測試 button_edit: 編輯 button_edit_associated_wikipage: "編輯相關 Wiki é é¢: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 套用 button_clear: 清除 button_lock: 鎖定 button_unlock: 解除鎖定 button_download: 下載 button_list: 清單 button_view: 檢視 button_move: 移動 button_move_and_follow: 移動後跟隨 button_back: 返回 button_cancel: å–æ¶ˆ button_activate: 啟用 button_sort: æŽ’åº button_log_time: 記錄時間 button_rollback: 還原至此版本 button_watch: 監看 button_unwatch: å–æ¶ˆç›£çœ‹ button_reply: 回應 button_archive: å°å­˜ button_unarchive: å–æ¶ˆå°å­˜ button_reset: 回復 button_rename: 釿–°å‘½å button_change_password: 變更密碼 button_copy: 複製 button_copy_and_follow: 複製後跟隨 button_annotate: 註解 button_update: æ›´æ–° button_configure: 設定 button_quote: 引用 button_show: 顯示 button_hide: éš±è— button_edit_section: 編輯此å€å¡Š button_export: 匯出 button_delete_my_account: 刪除我的帳戶 button_close: 關閉 button_reopen: 釿–°é–‹å•Ÿ button_import: 匯入 button_filter: 篩é¸å™¨ status_active: 活動中 status_registered: è¨»å†Šå®Œæˆ status_locked: 鎖定中 project_status_active: 使用中 project_status_closed: 已關閉 project_status_archived: å·²å°å­˜ version_status_open: 進行中 version_status_locked: 已鎖定 version_status_closed: å·²çµæŸ field_active: 活動中 text_select_mail_notifications: 鏿“‡æ¬²å¯„é€æé†’é€šçŸ¥éƒµä»¶ä¹‹å‹•ä½œ text_regexp_info: eg. ^[A-Z0-9]+$ text_project_destroy_confirmation: 您確定è¦åˆªé™¤é€™å€‹å°ˆæ¡ˆå’Œå…¶ä»–相關資料? text_subprojects_destroy_warning: "下列å­å°ˆæ¡ˆï¼š %{value} 將一併被刪除。" text_workflow_edit: 鏿“‡è§’色與追蹤標籤以設定其工作æµç¨‹ text_are_you_sure: 確定執行? text_journal_changed: "%{label} 從 %{old} 變更為 %{new}" text_journal_changed_no_detail: "%{label} 已更新" text_journal_set_to: "%{label} 設定為 %{value}" text_journal_deleted: "%{label} 已刪除 (%{old})" text_journal_added: "%{label} %{value} 已新增" text_tip_issue_begin_day: 今天起始的議題 text_tip_issue_end_day: 今天截止的的議題 text_tip_issue_begin_end_day: 今天起始與截止的議題 text_project_identifier_info: '僅å…許使用å°å¯«è‹±æ–‡å­—æ¯ (a-z), 阿拉伯數字, 虛線與底線。
    一旦儲存之後, ä»£ç¢¼ä¾¿ç„¡æ³•å†æ¬¡è¢«æ›´æ”¹ã€‚' text_caracters_maximum: "最多 %{count} 個字元." text_caracters_minimum: "長度必須大於 %{count} 個字元." text_length_between: "長度必須介於 %{min} 至 %{max} 個字元之間." text_tracker_no_workflow: 此追蹤標籤尚未定義工作æµç¨‹ text_unallowed_characters: ä¸å…許的字元 text_comma_separated: å¯è¼¸å…¥å¤šå€‹å€¼ï¼ˆé ˆä»¥é€—號分隔)。 text_line_separated: å¯è¼¸å…¥å¤šå€‹å€¼ï¼ˆé ˆä»¥æ›è¡Œç¬¦è™Ÿåˆ†éš”ï¼Œå³æ¯åˆ—åªèƒ½è¼¸å…¥ä¸€å€‹å€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: èªå¯è¨Šæ¯ä¸­åƒç…§(或修正)議題之關éµå­— text_issue_added: "議題 %{id} 已被 %{author} 通報。" text_issue_updated: "議題 %{id} 已被 %{author} 更新。" text_wiki_destroy_confirmation: 您確定è¦åˆªé™¤é€™å€‹ wiki 和其中的所有內容? text_issue_category_destroy_question: "有 (%{count}) 個議題被分派到此分類. è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" text_issue_category_destroy_assignments: 移除這些議題的分類 text_issue_category_reassign_to: 釿–°åˆ†æ´¾é€™äº›è­°é¡Œè‡³å…¶å®ƒåˆ†é¡ž text_user_mail_option: "å°æ–¼é‚£äº›æœªè¢«é¸æ“‡çš„å°ˆæ¡ˆï¼Œå°‡åªæœƒæŽ¥æ”¶åˆ°æ‚¨æ­£åœ¨ç›£çœ‹ä¸­ï¼Œæˆ–是åƒèˆ‡ä¸­çš„議題通知。(「åƒèˆ‡ä¸­çš„議題ã€åŒ…嫿‚¨å»ºç«‹çš„æˆ–是分派給您的議題)" text_no_configuration_data: "角色ã€è¿½è¹¤æ¨™ç±¤ã€è­°é¡Œç‹€æ…‹èˆ‡æµç¨‹å°šæœªè¢«è¨­å®šå®Œæˆã€‚\n強烈建議您先載入é è¨­çš„組態。將é è¨­çµ„態載入之後,您å¯å†è®Šæ›´å…¶ä¸­ä¹‹å€¼ã€‚" text_load_default_configuration: 載入é è¨­çµ„æ…‹ text_status_changed_by_changeset: "已套用至變更集 %{value}." text_time_logged_by_changeset: "紀錄於變更集 %{value}." text_issues_destroy_confirmation: 'ç¢ºå®šåˆªé™¤å·²é¸æ“‡çš„議題?' text_issues_destroy_descendants_confirmation: "這麼åšå°‡æœƒä¸€ä½µåˆªé™¤ %{count} å­ä»»å‹™ã€‚" text_time_entries_destroy_confirmation: 您確定è¦åˆªé™¤æ‰€é¸æ“‡çš„工時紀錄? text_select_project_modules: '鏿“‡æ­¤å°ˆæ¡ˆå¯ä½¿ç”¨ä¹‹æ¨¡çµ„:' text_default_administrator_account_changed: 已變更é è¨­ç®¡ç†å“¡å¸³è™Ÿå…§å®¹ text_file_repository_writable: å¯å¯«å…¥é™„加檔案目錄 text_plugin_assets_writable: å¯å¯«å…¥å¤–掛程å¼ç›®éŒ„ text_minimagick_available: å¯ä½¿ç”¨ MiniMagick (é¸é…) text_convert_available: å¯ä½¿ç”¨ ImageMagick 轉æ›åœ–ç‰‡æ ¼å¼ (é¸é…) text_destroy_time_entries_question: 您å³å°‡åˆªé™¤çš„議題已報工 %{hours} å°æ™‚. æ‚¨çš„é¸æ“‡æ˜¯ï¼Ÿ text_destroy_time_entries: 刪除已報工的時數 text_assign_time_entries_to_project: 指定已報工的時數至專案中 text_reassign_time_entries: '釿–°æŒ‡å®šå·²å ±å·¥çš„æ™‚數至此議題:' text_user_wrote: "%{value} å…ˆå‰æåˆ°:" text_user_wrote_in: "%{value} å…ˆå‰åœ¨ %{link} 中æåˆ°:" text_enumeration_destroy_question: "ç›®å‰æœ‰ %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '釿–°è¨­å®šå…¶åˆ—舉值為:' text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/configuration.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" text_repository_usernames_mapping: "鏿“‡æˆ–æ›´æ–° Redmine ä½¿ç”¨è€…èˆ‡å„²å­˜æ©Ÿåˆ¶ç´€éŒ„ä½¿ç”¨è€…ä¹‹å°æ‡‰é—œä¿‚。\n儲存機制中之使用者帳號或電å­éƒµä»¶ä¿¡ç®±ï¼Œèˆ‡ Redmine 設定相åŒè€…ï¼Œå°‡è‡ªå‹•ç”¢ç”Ÿå°æ‡‰é—œä¿‚。" text_diff_truncated: '... 這份差異已被截短以符åˆé¡¯ç¤ºè¡Œæ•¸ä¹‹æœ€å¤§å€¼' text_custom_field_possible_values_info: '一列輸入一個值' text_wiki_page_destroy_question: "æ­¤é é¢åŒ…å« %{descendants} 個å­é é¢åŠå»¶ä¼¸é é¢ã€‚ è«‹é¸æ“‡æ‚¨æƒ³è¦çš„動作?" text_wiki_page_nullify_children: "ä¿ç•™æ‰€æœ‰å­é é¢ç•¶ä½œæ ¹é é¢" text_wiki_page_destroy_children: "刪除所有å­é é¢åŠå…¶å»¶ä¼¸é é¢" text_wiki_page_reassign_children: "釿–°æŒ‡å®šæ‰€æœ‰çš„å­é é¢ä¹‹çˆ¶é é¢è‡³æ­¤é é¢" text_own_membership_delete_confirmation: "æ‚¨åœ¨å°ˆæ¡ˆä¸­ï¼Œæ‰€æ“æœ‰çš„部分或全部權é™å³å°‡è¢«ç§»é™¤ï¼Œåœ¨é€™ä¹‹å¾Œå¯èƒ½ç„¡æ³•冿¬¡ç·¨è¼¯æ­¤å°ˆæ¡ˆã€‚\n您確定è¦ç¹¼çºŒåŸ·è¡Œé€™å€‹å‹•作?" text_zoom_in: 放大 text_zoom_out: ç¸®å° text_warn_on_leaving_unsaved: "若您離開這個é é¢ï¼Œæ­¤é é¢æ‰€åŒ…å«çš„æœªå„²å­˜è³‡æ–™å°‡æœƒéºå¤±ã€‚" text_scm_path_encoding_note: "é è¨­: UTF-8" text_subversion_repository_note: "範例: file:///, http://, https://, svn://, svn+[tunnelscheme]://" text_git_repository_note: 儲存機制是本機的空(bare)目錄 (å³ï¼š /gitrepo, c:\gitrepo) text_mercurial_repository_note: 本機儲存機制 (å³ï¼š /hgrepo, c:\hgrepo) text_scm_command: 命令 text_scm_command_version: 版本 text_scm_config: 您å¯ä»¥åœ¨ config/configuration.yml 中設定 SCM å‘½ä»¤ã€‚è«‹åœ¨ç·¨è¼¯è©²æª”æ¡ˆä¹‹å¾Œé‡æ–°å•Ÿå‹• Redmine 應用程å¼ã€‚ text_scm_command_not_available: SCM 命令無法使用。請檢查管ç†é¢æ¿ä¸­çš„設定。 text_issue_conflict_resolution_overwrite: "直接套用我的變更 (å…ˆå‰çš„筆記將會被ä¿ç•™ï¼Œä½†æ˜¯æŸäº›è®Šæ›´å¯èƒ½æœƒè¢«è¤‡å¯«)" text_issue_conflict_resolution_add_notes: "æ–°å¢žæˆ‘çš„ç­†è¨˜ä¸¦æ¨æ£„我其他的變更" text_issue_conflict_resolution_cancel: "æ¨æ£„æˆ‘å…¨éƒ¨çš„è®Šæ›´ä¸¦é‡æ–°é¡¯ç¤º %{link}" text_account_destroy_confirmation: |- 您確定è¦ç¹¼çºŒé€™å€‹å‹•作嗎? æ‚¨çš„å¸³æˆ¶å°‡æœƒè¢«æ°¸ä¹…åˆªé™¤ï¼Œä¸”ç„¡æ³•è¢«é‡æ–°å•Ÿç”¨ã€‚ text_session_expiration_settings: "è­¦å‘Šï¼šè®Šæ›´é€™äº›è¨­å®šå°‡æœƒå°Žè‡´åŒ…å«æ‚¨åœ¨å…§çš„æ‰€æœ‰å·¥ä½œéšŽæ®µéŽæœŸã€‚" text_project_closed: 此專案已被關閉,僅供唯讀使用。 text_turning_multiple_off: "若您åœç”¨å¤šé‡å€¼è¨­å®šï¼Œé‡è¤‡çš„值將會被移除,以使æ¯å€‹é …目僅ä¿ç•™ä¸€å€‹å€¼ã€‚" default_role_manager: 管ç†äººå“¡ default_role_developer: 開發人員 default_role_reporter: 報告人員 default_tracker_bug: 臭蟲 default_tracker_feature: 功能 default_tracker_support: æ”¯æ´ default_issue_status_new: 新建立 default_issue_status_in_progress: 實作中 default_issue_status_resolved: 已解決 default_issue_status_feedback: 已回應 default_issue_status_closed: å·²çµæŸ default_issue_status_rejected: 已拒絕 default_doc_category_user: 使用手冊 default_doc_category_tech: 技術文件 default_priority_low: 低 default_priority_normal: 正常 default_priority_high: 高 default_priority_urgent: 速 default_priority_immediate: 急 default_activity_design: 設計 default_activity_development: 開發 enumeration_issue_priorities: 議題優先權 enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 description_filter: ç¯©é¸æ¢ä»¶ description_search: æœå°‹æ¬„ä½ description_choose_project: 專案清單 description_project_scope: æœå°‹ç¯„åœ description_notes: 筆記 description_message_content: 訊æ¯å…§å®¹ description_query_sort_criteria_attribute: 排åºå±¬æ€§ description_query_sort_criteria_direction: æŽ’åˆ—é †åº description_user_mail_notification: 郵件通知設定 description_available_columns: å¯ç”¨æ¬„ä½ description_selected_columns: å·²é¸å–çš„æ¬„ä½ description_all_columns: æ‰€æœ‰æ¬„ä½ description_issue_category_reassign: 鏿“‡è­°é¡Œåˆ†é¡ž description_wiki_subpages_reassign: 鏿“‡æ–°çš„父é é¢ text_repository_identifier_info: '僅å…許使用å°å¯«è‹±æ–‡å­—æ¯ (a-z), 阿拉伯數字, 虛線與底線。
    一旦儲存之後, ä»£ç¢¼ä¾¿ç„¡æ³•å†æ¬¡è¢«æ›´æ”¹ã€‚' error_can_not_delete_auth_source: "此驗證模å¼ç›®å‰ä½¿ç”¨ä¸­, 無法被刪除." button_actions: 動作 mail_body_lost_password_validity: 'è«‹æ³¨æ„æ‚¨åªèƒ½ä½¿ç”¨æ­¤éˆæŽ¥æ›´æ”¹å¯†ç¢¼ä¸€æ¬¡ã€‚' text_login_required_html: ç•¶ä¸éœ€è¦é©—證時, 公開的專案與其內容在網路上是開放å¯ç”¨çš„. æ‚¨å¯ ç·¨è¼¯é©ç”¨çš„æ¬Šé™è¨­å®š. label_login_required_yes: '是' label_login_required_no: å¦, å…è¨±ä»¥åŒ¿åæ–¹å¼å­˜å–公開之專案 text_project_is_public_non_member: 公開之專案åŠå…¶å…§å®¹, å¯ä¾›æ‰€æœ‰å·²ç™»å…¥çš„用戶使用. text_project_is_public_anonymous: 公開之專案åŠå…¶å…§å®¹, 在網路上是開放å¯ç”¨çš„. label_version_and_files: 版本 (%{count}) 與檔案 label_ldap: LDAP label_ldaps_verify_none: LDAPS (ä¸å« SSL 憑證檢查) label_ldaps_verify_peer: LDAPS label_ldaps_warning: å»ºè­°ä½¿ç”¨åŒ…å« SSL 憑證檢查的加密 LADPS å”定,以防止驗證éŽç¨‹è¢«ç«„改æ“縱。 label_nothing_to_preview: 沒有å¯ä¾›é è¦½çš„é …ç›® error_token_expired: 此密碼復原連çµå·²ç¶“éŽæœŸ, è«‹å†è©¦ä¸€æ¬¡. error_spent_on_future_date: 無法輸入未來日期的工時紀錄 setting_timelog_accept_future_dates: 接å—輸入未來日期的工時紀錄 label_delete_link_to_subtask: 刪除連çµè‡³å­ä»»å‹™çš„é—œè¯ error_not_allowed_to_log_time_for_other_users: 您未被å…è¨±å¯æ›¿ä»–人輸入工時紀錄 permission_log_time_for_other_users: 輸入他人的工時紀錄 label_tomorrow: 明天 label_next_week: 下一週 label_next_month: 下個月 text_role_no_workflow: 此角色尚未定義工作æµç¨‹ text_status_no_workflow: 工作æµç¨‹ä¸­å°šæœªæœ‰ä½¿ç”¨æ­¤ç‹€æ…‹çš„追蹤標籤 setting_mail_handler_preferred_body_part: Multipart (HTML) 郵件中å好使用的部分 setting_show_status_changes_in_mail_subject: 於議題通知電å­éƒµä»¶çš„主旨中顯示狀態變更 label_inherited_from_parent_project: 繼承自父專案 label_inherited_from_group: 繼承自 %{name} 群組 label_trackers_description: 追蹤標籤說明 label_open_trackers_description: 檢視所有追蹤標籤的說明 label_preferred_body_part_text: 純文字 label_preferred_body_part_html: HTML field_parent_issue_subject: 父議題主旨 permission_edit_own_issues: 編輯自己的議題 text_select_apply_tracker: 鏿“‡è¿½è¹¤æ¨™ç±¤ label_updated_issues: 已更新之議題 text_avatar_server_config_html: ç›®å‰ä½¿ç”¨çš„大頭åƒ(虛擬人å¶)伺æœå™¨æ˜¯ %{url}。 æ‚¨å¯æ–¼ config/configuration.yml 中進行設定。 setting_gantt_months_limit: 甘特圖中月份顯示數é‡çš„æœ€å¤§å€¼ permission_import_time_entries: 匯入工時項目紀錄 label_import_notifications: 匯入éŽç¨‹ä¸­å‚³é€é€šçŸ¥éƒµä»¶ text_gs_available: å¯ä½¿ç”¨ ImageMagick è½‰æ› PDF æ ¼å¼ (é¸é…) field_recently_used_projects: 跳轉下拉方塊中最近用éŽçš„專案數目 label_optgroup_bookmarks: 書籤 label_optgroup_recents: 最近用éŽçš„ button_project_bookmark: 新增書籤 button_project_bookmark_delete: 移除書籤 field_history_default_tab: 議題歷å²é è¨­åˆ†é  label_issue_history_properties: 屬性變更 label_issue_history_notes: 筆記 label_last_tab_visited: 上次ç€è¦½çš„åˆ†é  field_unique_id: 唯一識別碼 text_no_subject: 沒有主旨 setting_password_required_char_classes: 密碼必è¦çš„字元類別 label_password_char_class_uppercase: å¤§å¯«å­—æ¯ label_password_char_class_lowercase: å°å¯«å­—æ¯ label_password_char_class_digits: 數字 label_password_char_class_special_chars: 特殊字元 text_characters_must_contain: å¿…é ˆåŒ…å« %{character_classes}. label_starts_with: 開頭是 label_ends_with: çµå°¾æ˜¯ label_issue_fixed_version_updated: 目標版本已更新 setting_project_list_defaults: 專案清單é è¨­å€¼ label_display_type: 篩é¸çµæžœé¡¯ç¤ºç‚º label_display_type_list: 清單 label_display_type_board: 颿¿ label_my_bookmarks: 我的書籤 label_import_time_entries: 匯入工時項目紀錄 field_toolbar_language_options: 程å¼ç¢¼å白工具å¯ç”¨èªžè¨€ label_user_mail_notify_about_high_priority_issues_html: "åŒæ™‚通知我關於議題之優先權等級為 %{prio} 或以上等級之事物" label_assign_to_me: 分派給我 notice_issue_not_closable_by_open_tasks: æ­¤è­°é¡Œç„¡æ³•è¢«çµæŸï¼Œå› ç‚ºå®ƒè‡³å°‘還有一個尚在進行中的å­ä»»å‹™ã€‚ notice_issue_not_closable_by_blocking_issue: æ­¤è­°é¡Œç„¡æ³•è¢«çµæŸï¼Œå› ç‚ºå®ƒè¢«è‡³å°‘一個尚在進行中的議題所阻斷。 notice_issue_not_reopenable_by_closed_parent_issue: æ­¤è­°é¡Œç„¡æ³•è¢«é‡æ–°é–‹å•Ÿï¼Œå› ç‚ºå®ƒçš„çˆ¶è­°é¡Œå·²çµæŸã€‚ error_bulk_download_size_too_big: 這些附件無法被大é‡ä¸‹è¼‰ï¼Œå› ç‚ºå…¶æª”案大å°ç¸½è¨ˆè¶…éŽå…許的最大值 (%{max_size}) 。 setting_bulk_download_max_size: 大é‡ä¸‹è¼‰æª”案大å°ç¸½è¨ˆæœ€å¤§å€¼ label_download_all_attachments: 下載所有檔案 error_attachments_too_many: 此檔案無法被上傳,因為已經超出å…è¨±åŒæ™‚上傳之附加檔案數é‡çš„æœ€å¤§å€¼ (%{max_number_of_files}) 。 setting_email_domains_allowed: å…許的電å­éƒµä»¶ç¶²åŸŸ setting_email_domains_denied: å°éŽ–çš„é›»å­éƒµä»¶ç¶²åŸŸ field_passwd_changed_on: 密碼上次變更於 label_relations_mapping: é—œè¯å°æ‡‰ label_import_users: 匯入用戶 label_days_to_html: "%{days} 天,最多至 %{date}" setting_twofa: 雙因素驗證 label_optional: é¸ç”¨é … label_required_lower: å¿…è¦é … button_disable: 關閉 twofa__totp__name: é©—è­‰å™¨æ‡‰ç”¨ç¨‹å¼ twofa__totp__text_pairing_info_html: 掃æé€™å€‹ QR code 或將純文字金鑰輸入至 TOTP æ‡‰ç”¨ç¨‹å¼ (例如 Google Authenticator, Authy, Duo Mobile) 並將其顯示的代碼輸入至下é¢çš„æ¬„ä½ä¸­, 以啟用雙因素驗證. twofa__totp__label_plain_text_key: 純文字金鑰 twofa__totp__label_activate: å•Ÿç”¨é©—è­‰å™¨æ‡‰ç”¨ç¨‹å¼ twofa_currently_active: 'ç›®å‰ä½¿ç”¨ä¸­: %{twofa_scheme_name}' twofa_not_active: 尚未啟用 twofa_label_code: 代碼 twofa_hint_disabled_html: 設定為 %{label} 將會åœç”¨ä¸¦è§£é™¤æ‰€æœ‰ç”¨æˆ¶å·²é…å°ä¹‹é›™å› ç´ é©—è­‰è£ç½®. twofa_hint_required_html: 設定為 %{label} å°‡æœƒè¦æ±‚所有用戶於下次登入時, 設置雙因素驗證. twofa_label_setup: 開啟雙因素驗證 twofa_label_deactivation_confirmation: 關閉雙因素驗證 twofa_notice_select: 'è«‹é¸æ“‡æ‚¨æƒ³è¦ä½¿ç”¨çš„雙因素é…置方å¼:' twofa_warning_require: 管ç†å“¡è¦æ±‚您開啟雙因素驗證. twofa_activated: 雙因素驗證已開啟æˆåŠŸ. 建議您為自己的帳戶 產生備用代碼. twofa_deactivated: 雙因素驗證已關閉. twofa_mail_body_security_notification_paired: 雙因素驗證已使用 %{field} 開啟æˆåŠŸ. twofa_mail_body_security_notification_unpaired: 您帳戶的雙因素驗證已關閉. twofa_mail_body_backup_codes_generated: 新雙因素驗證的備用代碼已產生. twofa_mail_body_backup_code_used: 有個雙因素驗證的備用代碼被使用. twofa_invalid_code: ä»£ç¢¼æ˜¯ç„¡æ•ˆçš„æˆ–éŽæœŸçš„. twofa_label_enter_otp: 請輸入您的雙因素驗證代碼. twofa_too_many_tries: é‡è©¦æ¬¡æ•¸éŽå¤š. twofa_resend_code: é‡é€ä»£ç¢¼ twofa_code_sent: 有個驗證代碼已經傳é€çµ¦æ‚¨. twofa_generate_backup_codes: 產生備用代碼 twofa_text_generate_backup_codes_confirmation: 這會將所有ç¾å­˜çš„備用代碼設為無效, 並產生新的備用代碼. 您è¦ç¹¼çºŒå—Ž? twofa_notice_backup_codes_generated: 您的備用代碼已產生. twofa_warning_backup_codes_generated_invalidated: 新的備用代碼已產生. 您ç¾å­˜çš„備用代碼, 從 %{time} 起已經失效. twofa_label_backup_codes: 雙因素驗證備用代碼 twofa_text_backup_codes_hint: 當您無法存å–雙因素é…置方å¼å–得單次密碼時, 使用這些替代備用代碼. æ¯å€‹ä»£ç¢¼åƒ…能被使用一次. 建議您將備用代碼列å°å‡ºä¾†, 並存放於安全的地點. twofa_text_backup_codes_created_at: 備用代碼產生於 %{datetime}. twofa_backup_codes_already_shown: é€™äº›å‚™ç”¨ä»£ç¢¼ä¸æœƒå†æ¬¡å‡ºç¾, 冿¬¡éœ€è¦æ™‚è«‹é‡æ–° 產生新的備用代碼. error_can_not_execute_macro_html: 執行 %{name} 巨集時, 發生錯誤 (%{error}) error_macro_does_not_accept_block: æ­¤å·¨é›†ä¸æŽ¥å—æ–‡å­—å€å¡Š error_childpages_macro_no_argument: 缺少引數, 此巨集åªèƒ½å¾ž wiki é é¢ä¸­è¢«å‘¼å« error_circular_inclusion: 嵿¸¬åˆ°å¾ªç’°å¼•入內容 error_page_not_found: 找ä¸åˆ°é é¢ error_filename_required: 必須填入檔案å稱 error_invalid_size_parameter: 無效的尺寸大å°åƒæ•¸ error_attachment_not_found: 找ä¸åˆ°é™„件檔案 %{name} permission_delete_project: 刪除專案 field_twofa_scheme: 雙因素驗證é…ç½® text_user_destroy_confirmation: 您是å¦ç¢ºå®šè¦åˆªé™¤é€™å€‹ç”¨æˆ¶ä¸¦ä¸”移除該用戶所有的åƒç…§? 這是無法被復原的動作. 通常鎖定一個用戶是比較好的方案, 而éžå°‡ç”¨æˆ¶åˆªé™¤. è‹¥è¦ç¢ºèª, 請在下é¢è¼¸å…¥ç”¨æˆ¶çš„帳戶å稱 (%{login}). text_project_destroy_enter_identifier: è‹¥è¦ç¢ºèª, 請在下é¢è¼¸å…¥å°ˆæ¡ˆçš„代碼 (%{identifier}). button_add_subtask: 新增å­ä»»å‹™ notice_invalid_watcher: '無效的監看員: 監看用戶將無法收到任何通知, å› ç‚ºè©²ç”¨æˆ¶æ²’æœ‰æª¢è¦–æ­¤ç‰©ä»¶çš„å­˜å–æ¬Šé™.' button_fetch_changesets: æ“·å–èªå¯ permission_view_message_watchers: 檢視訊æ¯ç›£çœ‹å“¡æ¸…å–® permission_add_message_watchers: 新增訊æ¯ç›£çœ‹å“¡ permission_delete_message_watchers: 刪除訊æ¯ç›£çœ‹å“¡ label_message_watchers: 監看員 button_copy_link: è¤‡è£½é€£çµ error_invalid_authenticity_token: 無效的表單確實性授權權æ–. error_query_statement_invalid: 執行查詢時發生錯誤並已留下紀錄. è«‹å‘ Redmine 系統管ç†å“¡å ±å‘Šæ­¤éŒ¯èª¤. permission_view_wiki_page_watchers: 檢視 wiki é é¢ç›£çœ‹å“¡æ¸…å–® permission_add_wiki_page_watchers: 新增 wiki é é¢ç›£çœ‹å“¡ permission_delete_wiki_page_watchers: 刪除 wiki é é¢ç›£çœ‹å“¡ label_wiki_page_watchers: 監看員 label_attachment_description: 檔案概述說明 error_no_data_in_file: 檔案未包å«ä»»ä½•資料 field_twofa_required: 需è¦é›™å› ç´ é©—è­‰ twofa_hint_optional_html: 設定為 %{label} 將會讓用戶自己決定是å¦ä½¿ç”¨é›™å› ç´ é©—è­‰, 除éžç”¨æˆ¶æ‰€å±¬ç¾¤çµ„需è¦ä½¿ç”¨é›™å› ç´ é©—è­‰. twofa_text_group_required: 此設定僅供系統的全域雙因素驗證設定'é¸ç”¨é …'æ™‚æ‰æœ‰æ•ˆ. ç›®å‰ç³»çµ±ä¸­æ‰€æœ‰çš„用戶都必須使用雙因素驗證. twofa_text_group_disabled: 此設定僅供系統的全域雙因素驗證設定'é¸ç”¨é …'æ™‚æ‰æœ‰æ•ˆ. ç›®å‰ç³»çµ±çš„雙因素驗證設定值是'關閉'. field_default_issue_query: é è¨­è­°é¡ŒæŸ¥è©¢ label_default_queries: for_all_projects: é‡å°å…¨éƒ¨å°ˆæ¡ˆ for_current_project: é‡å°ç›®å‰å°ˆæ¡ˆ for_all_users: é‡å°å…¨éƒ¨ç”¨æˆ¶ for_this_user: é‡å°æ­¤ç”¨æˆ¶ text_allowed_queries_to_select: 僅å¯é¸å–公開 (給任何用戶) 的查詢 text_all_migrations_have_been_run: 資料庫移轉已全部執行完畢 button_save_object: 儲存 %{object_name} button_edit_object: 編輯 %{object_name} button_delete_object: 刪除 %{object_name} text_setting_config_change: 您å¯ä»¥åœ¨ config/configuration.yml 檔案中, 設定此行為. 檔案編輯完æˆå¾Œè«‹é‡æ–°å•Ÿå‹•應用程å¼. label_bulk_edit: 大é‡ç·¨è¼¯ button_create_and_follow: 建立並跟隨 label_subtask: å­ä»»å‹™ label_default_query: é è¨­æŸ¥è©¢ field_default_project_query: é è¨­å°ˆæ¡ˆæŸ¥è©¢ label_required_administrators: 管ç†å“¡å¿…è¦é … twofa_hint_required_administrators_html: 設定為 %{label} 的行為方å¼é¡žä¼¼æ–¼ é¸ç”¨é … 設定, ä½†æ­¤è¨­å®šæœƒè¦æ±‚具有管ç†å“¡æ¬Šé™çš„用戶, 在他們下次登入系統的時候, 必須設置雙因素驗證. label_auto_watch_on: 自動監看 label_auto_watch_on_issue_contributed_to: 我有æä¾›è²¢ç»çš„議題 text_project_close_confirmation: 您是å¦ç¢ºå®šè¦é—œé–‰ '%{value}' 專案以將其設為唯讀? text_project_reopen_confirmation: 您是å¦ç¢ºå®šè¦é‡æ–°é–‹å•Ÿ '%{value}' 專案? text_project_archive_confirmation: 您是å¦ç¢ºå®šè¦å°å­˜ '%{value}' 專案? mail_destroy_project_failed: "%{value} 專案無法被刪除。" mail_destroy_project_successful: "%{value} 專案已順利刪除。" mail_destroy_project_with_subprojects_successful: "%{value} 專案與其å­å°ˆæ¡ˆå·²é †åˆ©åˆªé™¤ã€‚" project_status_scheduled_for_deletion: 排程刪除 text_projects_bulk_destroy_confirmation: 您是å¦ç¢ºå®šè¦åˆªé™¤é¸å®šçš„專案與其相關資料? text_projects_bulk_destroy_head: | 您å³å°‡æ°¸ä¹…刪除下列專案, 包å«å¯èƒ½çš„å­å°ˆæ¡ˆèˆ‡ä»»ä½•相關的資料。 請檢閱下方資訊, 確èªé€™ç¢ºå¯¦æ˜¯æ‚¨è¦åŸ·è¡Œçš„動作。 此動作無法復原。 text_projects_bulk_destroy_confirm: è«‹åœ¨ä¸‹é¢æ–¹å¡Šä¸­ï¼Œ 輸入 "%{yes}" 以便確èªã€‚ text_subprojects_bulk_destroy: '包å«å®ƒçš„å­å°ˆæ¡ˆï¼š %{value}' field_current_password: ç›®å‰å¯†ç¢¼ sudo_mode_new_info_html: "發生甚麼事? 執行任何系統管ç†å‹•作之å‰ï¼Œ å¿…é ˆå†æ¬¡ç¢ºèªæ‚¨çš„密碼, 這樣å¯ç¢ºä¿æ‚¨çš„帳戶æŒçºŒå—到ä¿è­·ã€‚" label_edited: 已被編輯 label_time_by_author: "%{time} 編輯者為 %{author}" field_default_time_entry_activity: é è¨­è€—用工時活動 field_is_member_of_group: 群組的æˆå“¡ text_users_bulk_destroy_head: 您å³å°‡åˆªé™¤ä¸‹åˆ—用戶,並移除與這些用戶相關è¯çš„資料。 此動作無法復原。鎖定用戶經常是一個比刪除用戶還è¦ä¾†å¾—更好的解決方案。 text_users_bulk_destroy_confirm: 請於下方輸入 "%{yes}" 以便確èªã€‚ permission_select_project_publicity: 設定專案為公開或ç§äºº label_auto_watch_on_issue_created: 我所建立的議題 field_any_searchable: 任何坿œå°‹çš„æ–‡å­— label_contains_any_of: 包å«ä»»ä½•(任一個字) button_apply_issues_filter: å¥—ç”¨è­°é¡Œç¯©é¸æ¢ä»¶ label_view_previous_annotation: 檢視此變更之å‰çš„註釋 label_has_been: 曾經是 label_has_never_been: 未曾是 label_changed_from: å‰ä¸€å€‹æ˜¯ label_issue_statuses_description: 議題狀態說明 label_open_issue_statuses_description: 檢視所有議題狀態的說明 text_select_apply_issue_status: 鏿“‡è­°é¡Œç‹€æ…‹ field_name_or_email_or_login: å§“å, é›»å­éƒµä»¶æˆ–帳戶å稱 text_default_active_job_queue_changed: 已變更僅é©ç”¨æ–¼é–‹ç™¼/測試環境的佇列é©é…器 (queue adapter) label_option_auto_lang: 自動é¸å–語言 label_issue_attachment_added: 附加檔案已新增 field_estimated_remaining_hours: é ä¼°å‰©é¤˜å·¥æ™‚ field_last_activity_date: 最近一次活動 setting_issue_done_ratio_interval: 完æˆç™¾åˆ†æ¯”é¸é …的間隔值 setting_copy_attachments_on_issue_copy: 連åŒé™„件檔案一起複製 field_thousands_delimiter: åƒåˆ†ä½åˆ†éš”符號 label_involved_principals: 作者 / 歷任被分派者 label_attachment_summary: zero: "%{filename}" one: "%{filename} èˆ‡å¦ 1 個檔案" other: "%{filename} 與å¦å¤– %{count} 個檔案" redmine-6.0.5/config/locales/zh.yml000066400000000000000000002050241500112024600171720ustar00rootroot00000000000000# Chinese (China) translations for Ruby on Rails # by tsechingho (http://github.com/tsechingho) zh: # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr jquery: locale: "zh-CN" date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! default: "%Y-%m-%d" short: "%b%dæ—¥" long: "%Yå¹´%b%dæ—¥" day_names: [星期天, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六] abbr_day_names: [æ—¥, 一, 二, 三, å››, 五, å…­] # Don't forget the nil at the beginning; there's no such thing as a 0th month month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 乿œˆ, åæœˆ, å一月, å二月] abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月] # Used in date_select and datime_select. order: - :year - :month - :day time: formats: default: "%Yå¹´%b%dæ—¥ %A %H:%M:%S" time: "%H:%M" short: "%b%dæ—¥ %H:%M" long: "%Yå¹´%b%dæ—¥ %H:%M" am: "上åˆ" pm: "下åˆ" datetime: distance_in_words: half_a_minute: "åŠåˆ†é’Ÿ" less_than_x_seconds: one: "一秒内" other: "少于 %{count} ç§’" x_seconds: one: "一秒" other: "%{count} ç§’" less_than_x_minutes: one: "一分钟内" other: "少于 %{count} 分钟" x_minutes: one: "一分钟" other: "%{count} 分钟" about_x_hours: one: "å¤§çº¦ä¸€å°æ—¶" other: "大约 %{count} å°æ—¶" x_hours: one: "1 å°æ—¶" other: "%{count} å°æ—¶" x_days: one: "一天" other: "%{count} 天" about_x_months: one: "大约一个月" other: "大约 %{count} 个月" x_months: one: "一个月" other: "%{count} 个月" about_x_years: one: "大约一年" other: "大约 %{count} å¹´" over_x_years: one: "超过一年" other: "超过 %{count} å¹´" almost_x_years: one: "将近 1 å¹´" other: "将近 %{count} å¹´" number: # Default format for numbers format: separator: "." delimiter: "," precision: 3 human: format: delimiter: "" precision: 3 storage_units: format: "%n %u" units: byte: one: "Byte" other: "Bytes" kb: "KB" mb: "MB" gb: "GB" tb: "TB" # Used in array.to_sentence. support: array: sentence_connector: "å’Œ" skip_last_comma: false activerecord: errors: template: header: one: "由于å‘生了一个错误 %{model} 无法ä¿å­˜" other: "%{count} 个错误使得 %{model} 无法ä¿å­˜" messages: inclusion: "ä¸åŒ…å«äºŽåˆ—表中" exclusion: "是ä¿ç•™å…³é”®å­—" invalid: "是无效的" confirmation: "与确认值ä¸åŒ¹é…" accepted: "必须是å¯è¢«æŽ¥å—çš„" empty: "ä¸èƒ½ç•™ç©º" blank: "ä¸èƒ½ä¸ºç©ºå­—符" too_long: "过长(最长为 %{count} 个字符)" too_short: "过短(最短为 %{count} 个字符)" wrong_length: "é•¿åº¦éžæ³•(必须为 %{count} 个字符)" taken: "å·²ç»è¢«ä½¿ç”¨" not_a_number: "䏿˜¯æ•°å­—" not_a_date: "䏿˜¯åˆæ³•日期" greater_than: "必须大于 %{count}" greater_than_or_equal_to: "必须大于或等于 %{count}" equal_to: "必须等于 %{count}" less_than: "å¿…é¡»å°äºŽ %{count}" less_than_or_equal_to: "å¿…é¡»å°äºŽæˆ–等于 %{count}" odd: "å¿…é¡»ä¸ºå•æ•°" even: "å¿…é¡»ä¸ºåŒæ•°" greater_than_start_date: "必须在起始日期之åŽ" not_same_project: "ä¸å±žäºŽåŒä¸€ä¸ªé¡¹ç›®" circular_dependency: "此关è”将导致循环ä¾èµ–" cant_link_an_issue_with_a_descendant: "问题ä¸èƒ½å…³è”到它的å­ä»»åŠ¡" earlier_than_minimum_start_date: "ä¸èƒ½æ—©äºŽ %{date} 由于有å‰ç½®é—®é¢˜" not_a_regexp: "䏿˜¯ä¸€ä¸ªåˆæ³•的正则表达å¼" open_issue_with_closed_parent: "无法将一个打开的问题关è”至一个被关闭的父任务" must_contain_uppercase: "必须包å«å¤§å†™å­—æ¯ (A-Z)" must_contain_lowercase: "必须包å«å°å†™å­—æ¯ (a-z)" must_contain_digits: "å¿…é¡»åŒ…å«æ•°å­— (0-9)" must_contain_special_chars: "必须包å«ç‰¹æ®Šå­—符 (!, $, %, ...)" domain_not_allowed: "contains a domain not allowed (%{domain})" too_simple: "is too simple" actionview_instancetag_blank_option: 请选择 general_text_No: 'å¦' general_text_Yes: '是' general_text_no: 'å¦' general_text_yes: '是' general_lang_name: 'Chinese/Simplified (简体中文)' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: GB18030 general_pdf_fontname: stsongstdlight general_pdf_monospaced_fontname: stsongstdlight general_first_day_of_week: '7' notice_account_updated: å¸å·æ›´æ–°æˆåŠŸ notice_account_invalid_credentials: æ— æ•ˆçš„ç”¨æˆ·åæˆ–å¯†ç  notice_account_password_updated: å¯†ç æ›´æ–°æˆåŠŸ notice_account_wrong_password: 密ç é”™è¯¯ notice_account_register_done: å¸å·åˆ›å»ºæˆåŠŸï¼Œè¯·ä½¿ç”¨æ³¨å†Œç¡®è®¤é‚®ä»¶ä¸­çš„é“¾æŽ¥æ¥æ¿€æ´»æ‚¨çš„å¸å·ã€‚ notice_can_t_change_password: 该å¸å·ä½¿ç”¨äº†å¤–部认è¯ï¼Œå› æ­¤æ— æ³•更改密ç ã€‚ notice_account_lost_email_sent: 系统已将引导您设置新密ç çš„邮件å‘é€ç»™æ‚¨ã€‚ notice_account_activated: 您的å¸å·å·²è¢«æ¿€æ´»ã€‚您现在å¯ä»¥ç™»å½•了。 notice_successful_create: 创建æˆåŠŸ notice_successful_update: æ›´æ–°æˆåŠŸ notice_successful_delete: 删除æˆåŠŸ notice_successful_connection: 连接æˆåŠŸ notice_file_not_found: 您访问的页é¢ä¸å­˜åœ¨æˆ–已被删除。 notice_locking_conflict: æ•°æ®å·²è¢«å¦ä¸€ä½ç”¨æˆ·æ›´æ–° notice_not_authorized: 对ä¸èµ·ï¼Œæ‚¨æ— æƒè®¿é—®æ­¤é¡µé¢ã€‚ notice_not_authorized_archived_project: è¦è®¿é—®çš„项目已ç»å½’档。 notice_email_sent: "邮件已å‘é€è‡³ %{value}" notice_email_error: "å‘é€é‚®ä»¶æ—¶å‘生错误 (%{value})" notice_feeds_access_key_reseted: 您的Atomå­˜å–键已被é‡ç½®ã€‚ notice_api_access_key_reseted: 您的API访问键已被é‡ç½®ã€‚ notice_failed_to_save_issues: "%{count} 个问题ä¿å­˜å¤±è´¥ï¼ˆå…±é€‰æ‹© %{total} 个问题):%{ids}." notice_failed_to_save_members: "æˆå‘˜ä¿å­˜å¤±è´¥: %{errors}." notice_account_pending: "您的å¸å·å·²è¢«æˆåŠŸåˆ›å»ºï¼Œæ­£åœ¨ç­‰å¾…ç®¡ç†å‘˜çš„审核。" notice_default_data_loaded: æˆåŠŸè½½å…¥é»˜è®¤è®¾ç½®ã€‚ notice_unable_delete_version: 无法删除版本 notice_unable_delete_time_entry: 无法删除工时 notice_issue_done_ratios_updated: 问题完æˆåº¦å·²æ›´æ–°ã€‚ notice_gantt_chart_truncated: "由于项目数é‡è¶…è¿‡å¯æ˜¾ç¤ºçš„æœ€å¤§å€¼ (%{max}),故此甘特图将截断超出部分" error_can_t_load_default_data: "无法载入默认设置:%{value}" error_scm_not_found: "版本库中ä¸å­˜åœ¨è¯¥æ¡ç›®å’Œï¼ˆæˆ–)其修订版本。" error_scm_command_failed: "访问版本库时å‘生错误:%{value}" error_scm_annotate: "该æ¡ç›®ä¸å­˜åœ¨æˆ–无法追溯。" error_issue_not_found_in_project: '问题ä¸å­˜åœ¨æˆ–ä¸å±žäºŽæ­¤é¡¹ç›®' error_no_tracker_in_project: 该项目未设定跟踪标签,请检查项目é…置。 error_no_default_issue_status: 未设置默认的问题状æ€ã€‚请检查系统设置("管ç†" -> "问题状æ€")。 error_can_not_delete_custom_field: 无法删除自定义属性 error_can_not_delete_tracker_html: "该跟踪标签已包å«é—®é¢˜,无法删除

    The following projects have issues with this tracker:
    %{projects}

    " error_can_not_remove_role: "该角色正在使用中,无法删除" error_can_not_reopen_issue_on_closed_version: 该问题被关è”到一个已ç»å…³é—­çš„ç‰ˆæœ¬ï¼Œå› æ­¤æ— æ³•é‡æ–°æ‰“开。 error_can_not_archive_project: 该项目无法被存档 error_issue_done_ratios_not_updated: 问题完æˆåº¦æœªèƒ½è¢«æ›´æ–°ã€‚ error_workflow_copy_source: 请选择一个æºè·Ÿè¸ªæ ‡ç­¾æˆ–者角色 error_workflow_copy_target: 请选择目标跟踪标签和角色 error_unable_delete_issue_status: 'æ— æ³•åˆ é™¤é—®é¢˜çŠ¶æ€ (%{value})' error_unable_to_connect: "无法连接 (%{value})" warning_attachments_not_saved: "%{count} 个文件ä¿å­˜å¤±è´¥" mail_subject_lost_password: "您的 %{value} 密ç " mail_body_lost_password: '请点击以下链接æ¥ä¿®æ”¹æ‚¨çš„密ç ï¼š' mail_subject_register: "%{value}å¸å·æ¿€æ´»" mail_body_register: 'è¯·ç‚¹å‡»ä»¥ä¸‹é“¾æŽ¥æ¥æ¿€æ´»æ‚¨çš„å¸å·ï¼š' mail_body_account_information_external: "您å¯ä»¥ä½¿ç”¨æ‚¨çš„ %{value} å¸å·æ¥ç™»å½•。" mail_body_account_information: 您的å¸å·ä¿¡æ¯ mail_subject_account_activation_request: "%{value}å¸å·æ¿€æ´»è¯·æ±‚" mail_body_account_activation_request: "新用户(%{value}ï¼‰å·²å®Œæˆæ³¨å†Œï¼Œæ­£åœ¨ç­‰å€™æ‚¨çš„审核:" mail_subject_reminder: "%{count} 个问题需è¦å°½å¿«è§£å†³ (%{days})" mail_body_reminder: "指派给您的 %{count} 个问题需è¦åœ¨ %{days} 天内完æˆï¼š" mail_subject_wiki_content_added: "'%{id}' wiki页é¢å·²æ·»åŠ " mail_body_wiki_content_added: "'%{id}' wiki页é¢å·²ç”± %{author} 添加。" mail_subject_wiki_content_updated: "'%{id}' wiki页é¢å·²æ›´æ–°ã€‚" mail_body_wiki_content_updated: "'%{id}' wiki页é¢å·²ç”± %{author} 更新。" field_name: åç§° field_description: æè¿° field_summary: æ‘˜è¦ field_is_required: å¿…å¡« field_firstname: åå­— field_lastname: å§“æ° field_mail: é‚®ä»¶åœ°å€ field_filename: 文件 field_filesize: å¤§å° field_downloads: 下载次数 field_author: 作者 field_created_on: 创建于 field_updated_on: 更新于 field_field_format: æ ¼å¼ field_is_for_all: 用于所有项目 field_possible_values: å¯èƒ½çš„值 field_regexp: æ­£åˆ™è¡¨è¾¾å¼ field_min_length: 最å°é•¿åº¦ field_max_length: 最大长度 field_value: 值 field_category: 类别 field_title: 标题 field_project: 项目 field_issue: 问题 field_status: çŠ¶æ€ field_notes: 说明 field_is_closed: 已关闭的问题 field_is_default: 默认值 field_tracker: 跟踪 field_subject: 主题 field_due_date: è®¡åˆ’å®Œæˆæ—¥æœŸ field_assigned_to: 指派给 field_priority: 优先级 field_fixed_version: 目标版本 field_user: 用户 field_principal: 用户/用户组 field_role: 角色 field_homepage: 主页 field_is_public: 公开 field_parent: 上级项目 field_is_in_roadmap: 在路线图中显示 field_login: 登录å field_mail_notification: 邮件通知 field_admin: 管ç†å‘˜ field_last_login_on: 最åŽç™»å½• field_language: 语言 field_effective_date: 截止日期 field_password: å¯†ç  field_new_password: æ–°å¯†ç  field_password_confirmation: 确认 field_version: 版本 field_type: 类型 field_host: 主机 field_port: ç«¯å£ field_account: å¸å· field_base_dn: Base DN field_attr_login: 登录å属性 field_attr_firstname: å字属性 field_attr_lastname: å§“æ°å±žæ€§ field_attr_mail: 邮件属性 field_onthefly: 峿—¶ç”¨æˆ·ç”Ÿæˆ field_start_date: 开始日期 field_done_ratio: "% 完æˆ" field_auth_source: è®¤è¯æ¨¡å¼ field_hide_mail: éšè—æˆ‘çš„é‚®ä»¶åœ°å€ field_comments: 注释 field_url: URL field_start_page: 起始页 field_subproject: å­é¡¹ç›® field_hours: å°æ—¶ field_activity: 活动 field_spent_on: 日期 field_identifier: 标识 field_is_filter: 作为过滤æ¡ä»¶ field_issue_to: 相关问题 field_delay: 延期 field_assignable: é—®é¢˜å¯æŒ‡æ´¾ç»™æ­¤è§’色 field_redirect_existing_links: é‡å®šå‘到现有链接 field_estimated_hours: 预期时间 field_column_names: 列 field_time_entries: 工时 field_time_zone: 时区 field_searchable: å¯ç”¨ä½œæœç´¢æ¡ä»¶ field_default_value: 默认值 field_comments_sorting: 显示注释 field_parent_title: ä¸Šçº§é¡µé¢ field_editable: å¯ç¼–辑 field_watcher: 关注者 field_content: 内容 field_group_by: æ ¹æ®æ­¤æ¡ä»¶åˆ†ç»„ field_sharing: 共享 field_parent_issue: 父任务 field_member_of_group: 用户组的æˆå‘˜ field_assigned_to_role: 角色的æˆå‘˜ field_text: 文本字段 field_visible: å¯è§çš„ setting_app_title: åº”ç”¨ç¨‹åºæ ‡é¢˜ setting_welcome_text: 欢迎文字 setting_default_language: 默认语言 setting_login_required: è¦æ±‚è®¤è¯ setting_self_registration: å…许自注册 setting_attachment_max_size: 附件大å°é™åˆ¶ setting_issues_export_limit: 问题导出æ¡ç›®çš„é™åˆ¶ setting_mail_from: 邮件å‘ä»¶äººåœ°å€ setting_plain_text_mail: 纯文本(无HTML) setting_host_name: 主机åç§° setting_text_formatting: æ–‡æœ¬æ ¼å¼ setting_wiki_compression: 压缩WikiåŽ†å²æ–‡æ¡£ setting_feeds_limit: Atom Feedå†…å®¹æ¡æ•°é™åˆ¶ setting_default_projects_public: 新建项目默认为公开项目 setting_autofetch_changesets: 自动获å–程åºå˜æ›´ setting_sys_api_enabled: å¯ç”¨ç”¨äºŽç‰ˆæœ¬åº“管ç†çš„Web Service setting_commit_ref_keywords: 用于引用问题的关键字 setting_commit_fix_keywords: 用于解决问题的关键字 setting_autologin: 自动登录 setting_date_format: æ—¥æœŸæ ¼å¼ setting_time_format: æ—¶é—´æ ¼å¼ setting_cross_project_issue_relations: å…许ä¸åŒé¡¹ç›®ä¹‹é—´çš„é—®é¢˜å…³è” setting_issue_list_default_columns: 问题列表中显示的默认列 setting_emails_header: 邮件头 setting_emails_footer: 邮件签å setting_protocol: åè®® setting_per_page_options: æ¯é¡µæ˜¾ç¤ºæ¡ç›®ä¸ªæ•°çš„设置 setting_user_format: ç”¨æˆ·æ˜¾ç¤ºæ ¼å¼ setting_activity_days_default: 在项目活动中显示的天数 setting_display_subprojects_issues: 在项目页é¢ä¸Šé»˜è®¤æ˜¾ç¤ºå­é¡¹ç›®çš„问题 setting_enabled_scm: å¯ç”¨ SCM setting_mail_handler_body_delimiters: åœ¨è¿™äº›è¡Œä¹‹åŽæˆªæ–­é‚®ä»¶ setting_mail_handler_api_enabled: å¯ç”¨ç”¨äºŽæŽ¥æ”¶é‚®ä»¶çš„æœåŠ¡ setting_mail_handler_api_key: API key setting_sequential_project_identifiers: 顺åºäº§ç”Ÿé¡¹ç›®æ ‡è¯† setting_gravatar_enabled: 使用Gravatarç”¨æˆ·å¤´åƒ setting_gravatar_default: 默认的Gravatarå¤´åƒ setting_diff_max_lines_displayed: 查看差别页é¢ä¸Šæ˜¾ç¤ºçš„æœ€å¤§è¡Œæ•° setting_file_max_size_displayed: å…许直接显示的最大文本文件 setting_repository_log_display_limit: åœ¨æ–‡ä»¶å˜æ›´è®°å½•页é¢ä¸Šæ˜¾ç¤ºçš„æœ€å¤§ä¿®è®¢ç‰ˆæœ¬æ•°é‡ setting_password_min_length: 最短密ç é•¿åº¦ setting_new_project_user_role_id: éžç®¡ç†å‘˜ç”¨æˆ·æ–°å»ºé¡¹ç›®æ—¶å°†è¢«èµ‹äºˆçš„(在该项目中的)角色 setting_default_projects_modules: 新建项目默认å¯ç”¨çš„æ¨¡å— setting_issue_done_ratio: 计算问题完æˆåº¦ï¼š setting_issue_done_ratio_issue_field: 使用问题(的完æˆåº¦ï¼‰å±žæ€§ setting_issue_done_ratio_issue_status: ä½¿ç”¨é—®é¢˜çŠ¶æ€ setting_start_of_week: 日历开始于 setting_rest_api_enabled: å¯ç”¨REST web service setting_cache_formatted_text: 缓存格å¼åŒ–文字 setting_default_notification_option: 默认æé†’选项 setting_commit_logtime_enabled: 激活时间日志 setting_commit_logtime_activity_id: 记录的活动 setting_gantt_items_limit: 在甘特图上显示的最大记录数 permission_add_project: 新建项目 permission_add_subprojects: 新建å­é¡¹ç›® permission_edit_project: 编辑项目 permission_select_project_modules: é€‰æ‹©é¡¹ç›®æ¨¡å— permission_manage_members: ç®¡ç†æˆå‘˜ permission_manage_project_activities: 管ç†é¡¹ç›®æ´»åЍ permission_manage_versions: 管ç†ç‰ˆæœ¬ permission_manage_categories: 管ç†é—®é¢˜ç±»åˆ« permission_view_issues: 查看问题 permission_add_issues: 新建问题 permission_edit_issues: 更新问题 permission_manage_issue_relations: 管ç†é—®é¢˜å…³è” permission_add_issue_notes: 添加说明 permission_edit_issue_notes: 编辑说明 permission_edit_own_issue_notes: 编辑自己的说明 permission_delete_issues: 删除问题 permission_manage_public_queries: 管ç†å…¬å¼€çš„æŸ¥è¯¢ permission_save_queries: ä¿å­˜æŸ¥è¯¢ permission_view_gantt: 查看甘特图 permission_view_calendar: 查看日历 permission_view_issue_watchers: 查看关注者列表 permission_add_issue_watchers: 添加关注者 permission_delete_issue_watchers: 删除关注者 permission_log_time: 登记工时 permission_view_time_entries: 查看耗时 permission_edit_time_entries: 编辑耗时 permission_edit_own_time_entries: 编辑自己的耗时 permission_manage_news: ç®¡ç†æ–°é—» permission_comment_news: 为新闻添加评论 permission_view_documents: 查看文档 permission_manage_files: ç®¡ç†æ–‡ä»¶ permission_view_files: 查看文件 permission_manage_wiki: 管ç†Wiki permission_rename_wiki_pages: é‡å®šå‘/é‡å‘½åWikié¡µé¢ permission_delete_wiki_pages: 删除Wikié¡µé¢ permission_view_wiki_pages: 查看Wiki permission_view_wiki_edits: 查看Wiki历å²è®°å½• permission_edit_wiki_pages: 编辑Wikié¡µé¢ permission_delete_wiki_pages_attachments: 删除附件 permission_protect_wiki_pages: ä¿æŠ¤Wikié¡µé¢ permission_manage_repository: 管ç†ç‰ˆæœ¬åº“ permission_browse_repository: æµè§ˆç‰ˆæœ¬åº“ permission_view_changesets: æŸ¥çœ‹å˜æ›´ permission_commit_access: 访问æäº¤ä¿¡æ¯ permission_manage_boards: 管ç†è®¨è®ºåŒº permission_view_messages: æŸ¥çœ‹å¸–å­ permission_add_messages: å‘è¡¨å¸–å­ permission_edit_messages: ç¼–è¾‘å¸–å­ permission_edit_own_messages: ç¼–è¾‘è‡ªå·±çš„å¸–å­ permission_delete_messages: åˆ é™¤å¸–å­ permission_delete_own_messages: åˆ é™¤è‡ªå·±çš„å¸–å­ permission_export_wiki_pages: 导出 wiki é¡µé¢ permission_manage_subtasks: 管ç†å­ä»»åŠ¡ project_module_issue_tracking: 问题跟踪 project_module_time_tracking: 时间跟踪 project_module_news: æ–°é—» project_module_documents: 文档 project_module_files: 文件 project_module_wiki: Wiki project_module_repository: 版本库 project_module_boards: 讨论区 project_module_calendar: 日历 project_module_gantt: 甘特图 label_user: 用户 label_user_plural: 用户 label_user_new: 新建用户 label_user_anonymous: 匿å用户 label_project: 项目 label_project_new: 新建项目 label_project_plural: 项目 label_x_projects: zero: 无项目 one: 1 个项目 other: "%{count} 个项目" label_project_all: 所有的项目 label_project_latest: 最近的项目 label_issue: 问题 label_issue_new: 新建问题 label_issue_plural: 问题 label_issue_view_all: 查看所有问题 label_issues_by: "按 %{value} 分组显示问题" label_issue_added: 问题已添加 label_issue_updated: 问题已更新 label_document: 文档 label_document_new: 新建文档 label_document_plural: 文档 label_document_added: 文档已添加 label_role: 角色 label_role_plural: 角色 label_role_new: 新建角色 label_role_and_permissions: 角色和æƒé™ label_member: æˆå‘˜ label_member_new: 新建æˆå‘˜ label_member_plural: æˆå‘˜ label_tracker: 跟踪标签 label_tracker_plural: 跟踪标签 label_tracker_new: 新建跟踪标签 label_workflow: 工作æµç¨‹ label_issue_status: é—®é¢˜çŠ¶æ€ label_issue_status_plural: é—®é¢˜çŠ¶æ€ label_issue_status_new: æ–°å»ºé—®é¢˜çŠ¶æ€ label_issue_category: 问题类别 label_issue_category_plural: 问题类别 label_issue_category_new: 新建问题类别 label_custom_field: 自定义属性 label_custom_field_plural: 自定义属性 label_custom_field_new: 新建自定义属性 label_enumerations: 枚举值 label_enumeration_new: 新建枚举值 label_information: ä¿¡æ¯ label_information_plural: ä¿¡æ¯ label_register: 注册 label_password_lost: å¿˜è®°å¯†ç  label_home: 主页 label_my_page: æˆ‘çš„å·¥ä½œå° label_my_account: 我的å¸å· label_my_projects: 我的项目 label_administration: ç®¡ç† label_login: 登录 label_logout: 退出 label_help: 帮助 label_reported_issues: 已报告的问题 label_assigned_to_me_issues: 指派给我的问题 label_registered_on: 注册于 label_activity: 活动 label_user_activity: "%{value} 的活动" label_new: 新建 label_logged_as: 登录为 label_environment: 环境 label_authentication: è®¤è¯ label_auth_source: è®¤è¯æ¨¡å¼ label_auth_source_new: æ–°å»ºè®¤è¯æ¨¡å¼ label_auth_source_plural: è®¤è¯æ¨¡å¼ label_subproject_plural: å­é¡¹ç›® label_subproject_new: 新建å­é¡¹ç›® label_and_its_subprojects: "%{value} åŠå…¶å­é¡¹ç›®" label_min_max_length: æœ€å° - 最大 长度 label_list: 列表 label_date: 日期 label_integer: æ•´æ•° label_float: 浮点数 label_boolean: 布尔值 label_string: 字符串 label_text: 文本 label_attribute: 属性 label_attribute_plural: 属性 label_no_data: 没有任何数æ®å¯ä¾›æ˜¾ç¤º label_change_status: å˜æ›´çŠ¶æ€ label_history: 历å²è®°å½• label_attachment: 文件 label_attachment_new: 新建文件 label_attachment_delete: 删除文件 label_attachment_plural: 文件 label_file_added: 文件已添加 label_report: 报表 label_report_plural: 报表 label_news: æ–°é—» label_news_new: 添加新闻 label_news_plural: æ–°é—» label_news_latest: 最近的新闻 label_news_view_all: 查看所有新闻 label_news_added: 新闻已添加 label_settings: é…ç½® label_overview: 概述 label_version: 版本 label_version_new: 新建版本 label_version_plural: 版本 label_close_versions: 关闭已完æˆçš„版本 label_confirmation: 确认 label_export_to: 导出 label_read: 读å–... label_public_projects: 公开的项目 label_open_issues: 打开 label_open_issues_plural: 打开 label_closed_issues: 已关闭 label_closed_issues_plural: 已关闭 label_x_open_issues_abbr: zero: 0 打开 one: 1 打开 other: "%{count} 打开" label_x_closed_issues_abbr: zero: 0 已关闭 one: 1 已关闭 other: "%{count} 已关闭" label_total: åˆè®¡ label_permissions: æƒé™ label_current_status: 当å‰çŠ¶æ€ label_new_statuses_allowed: å…è®¸çš„æ–°çŠ¶æ€ label_all: 全部 label_none: æ—  label_nobody: 无人 label_next: 下一页 label_previous: 上一页 label_used_by: 使用中 label_details: 详情 label_add_note: 添加说明 label_calendar: 日历 label_months_from: ä¸ªæœˆä»¥æ¥ label_gantt: 甘特图 label_internal: 内部 label_last_changes: "最近的 %{count} æ¬¡å˜æ›´" label_change_view_all: æŸ¥çœ‹æ‰€æœ‰å˜æ›´ label_comment: 评论 label_comment_plural: 评论 label_x_comments: zero: 无评论 one: 1 æ¡è¯„论 other: "%{count} æ¡è¯„论" label_comment_add: 添加评论 label_comment_added: 评论已添加 label_comment_delete: 删除评论 label_query: 自定义查询 label_query_plural: 自定义查询 label_query_new: 新建查询 label_filter_add: 增加过滤器 label_filter_plural: 过滤器 label_equals: 等于 label_not_equals: ä¸ç­‰äºŽ label_in_less_than: 剩余天数å°äºŽ label_in_more_than: 剩余天数大于 label_greater_or_equal: '>=' label_less_or_equal: '<=' label_in: 剩余天数 label_today: 今天 label_yesterday: 昨天 label_this_week: 本周 label_last_week: 上周 label_last_n_days: "æœ€åŽ %{count} 天" label_this_month: 本月 label_last_month: 上月 label_this_year: 今年 label_date_range: 日期范围 label_less_than_ago: 之å‰å¤©æ•°å°‘于 label_more_than_ago: 之å‰å¤©æ•°å¤§äºŽ label_ago: 之å‰å¤©æ•° label_contains: åŒ…å« label_not_contains: ä¸åŒ…å« label_day_plural: 天 label_repository: 版本库 label_repository_plural: 版本库 label_branch: 分支 label_tag: 标签 label_revision: 修订 label_revision_plural: 修订 label_revision_id: 修订 %{value} label_associated_revisions: 相关修订版本 label_added: 已添加 label_modified: 已修改 label_copied: å·²å¤åˆ¶ label_renamed: å·²é‡å‘½å label_deleted: 已删除 label_latest_revision: 最近的修订版本 label_latest_revision_plural: 最近的修订版本 label_view_revisions: 查看修订 label_view_all_revisions: 查看所有修订 label_max_size: 最大尺寸 label_roadmap: 路线图 label_roadmap_due_in: "截止日期到 %{value}" label_roadmap_overdue: "%{value} 延期" label_roadmap_no_issues: 该版本没有问题 label_search: æœç´¢ label_result_plural: 结果 label_all_words: 所有å•è¯ label_wiki: Wiki label_wiki_edit: Wiki 编辑 label_wiki_edit_plural: Wiki 编辑记录 label_wiki_page: Wiki é¡µé¢ label_wiki_page_plural: Wiki é¡µé¢ label_index_by_title: 按标题索引 label_index_by_date: 按日期索引 label_current_version: 当å‰ç‰ˆæœ¬ label_preview: 预览 label_feed_plural: Feeds label_changes_details: æ‰€æœ‰å˜æ›´çš„详情 label_issue_tracking: 问题跟踪 label_spent_time: 耗时 label_f_hour: "%{value} å°æ—¶" label_f_hour_plural: "%{value} å°æ—¶" label_time_tracking: 时间跟踪 label_change_plural: å˜æ›´ label_statistics: 统计 label_commits_per_month: æ¯æœˆæäº¤æ¬¡æ•° label_commits_per_author: æ¯ç”¨æˆ·æäº¤æ¬¡æ•° label_view_diff: 查看差别 label_diff_inline: 直列 label_diff_side_by_side: 并排 label_options: 选项 label_copy_workflow_from: 从以下选项å¤åˆ¶å·¥ä½œæµç¨‹ label_permissions_report: æƒé™æŠ¥è¡¨ label_watched_issues: 关注的问题 label_related_issues: 相关的问题 label_applied_status: 应用åŽçš„çŠ¶æ€ label_loading: 载入中... label_relation_new: æ–°å»ºå…³è” label_relation_delete: åˆ é™¤å…³è” label_relates_to: å…³è”到 label_duplicates: é‡å¤ label_duplicated_by: 与其é‡å¤ label_blocks: 阻挡 label_blocked_by: 被阻挡 label_precedes: 优先于 label_follows: è·ŸéšäºŽ label_stay_logged_in: ä¿æŒç™»å½•çŠ¶æ€ label_disabled: ç¦ç”¨ label_show_completed_versions: 显示已完æˆçš„版本 label_me: 我 label_board: 讨论区 label_board_new: 新建讨论区 label_board_plural: 讨论区 label_board_locked: é”定 label_board_sticky: 置顶 label_topic_plural: 主题 label_message_plural: å¸–å­ label_message_last: æœ€æ–°çš„å¸–å­ label_message_new: æ–°è´´ label_message_posted: å‘帖æˆåŠŸ label_reply_plural: å›žå¤ label_send_information: 给用户å‘é€å¸å·ä¿¡æ¯ label_year: å¹´ label_month: 月 label_week: 周 label_date_from: 从 label_date_to: 到 label_language_based: æ ¹æ®ç”¨æˆ·çš„语言 label_sort_by: "æ ¹æ® %{value} 排åº" label_send_test_email: å‘逿µ‹è¯•邮件 label_feeds_access_key: Atomå­˜å–é”® label_missing_feeds_access_key: 缺少Atomå­˜å–é”® label_feeds_access_key_created_on: "Atomå­˜å–键是在 %{value} 之å‰å»ºç«‹çš„" label_module_plural: æ¨¡å— label_added_time_by: "ç”± %{author} 在 %{age} 之剿·»åŠ " label_updated_time: " 更新于 %{value} 之å‰" label_updated_time_by: "ç”± %{author} 更新于 %{age} 之å‰" label_jump_to_a_project: 选择一个项目... label_file_plural: 文件 label_changeset_plural: å˜æ›´ label_default_columns: 默认列 label_no_change_option: (ä¸å˜) label_bulk_edit_selected_issues: 批é‡ä¿®æ”¹é€‰ä¸­çš„问题 label_theme: 主题 label_default: 默认 label_search_titles_only: 仅在标题中æœç´¢ label_user_mail_option_all: "æ”¶å–æˆ‘的项目的所有通知" label_user_mail_option_selected: "æ”¶å–选中项目的所有通知..." label_user_mail_option_none: "䏿”¶å–任何通知" label_user_mail_option_only_my_events: "åªæ”¶å–我关注或å‚与的项目的通知" label_user_mail_no_self_notified: "ä¸è¦å‘é€å¯¹æˆ‘自己æäº¤çš„修改的通知" label_registration_activation_by_email: é€šè¿‡é‚®ä»¶è®¤è¯æ¿€æ´»å¸å· label_registration_manual_activation: 手动激活å¸å· label_registration_automatic_activation: 自动激活å¸å· label_display_per_page: "æ¯é¡µæ˜¾ç¤ºï¼š%{value}" label_age: æäº¤æ—¶é—´ label_change_properties: 修改属性 label_general: 一般 label_scm: SCM label_plugins: æ’ä»¶ label_ldap_authentication: LDAP è®¤è¯ label_downloads_abbr: D/L label_optional_description: å¯é€‰çš„æè¿° label_add_another_file: 添加其它文件 label_preferences: 首选项 label_chronological_order: æŒ‰æ—¶é—´é¡ºåº label_reverse_chronological_order: 按时间顺åºï¼ˆå€’åºï¼‰ label_incoming_emails: 接收邮件 label_generate_key: 生æˆä¸€ä¸ªkey label_issue_watchers: 关注者 label_example: 示例 label_display: 显示 label_sort: æŽ’åº label_ascending: å‡åº label_descending: é™åº label_date_from_to: 从 %{start} 到 %{end} label_wiki_content_added: Wiki 页é¢å·²æ·»åŠ  label_wiki_content_updated: Wiki 页é¢å·²æ›´æ–° label_group: 组 label_group_plural: 组 label_group_new: 新建组 label_time_entry_plural: 耗时 label_version_sharing_none: ä¸å…±äº« label_version_sharing_descendants: 与å­é¡¹ç›®å…±äº« label_version_sharing_hierarchy: 与项目继承层次共享 label_version_sharing_tree: 与项目树共享 label_version_sharing_system: 与所有项目共享 label_update_issue_done_ratios: 更新问题的完æˆåº¦ label_copy_source: æº label_copy_target: 目标 label_copy_same_as_target: 与目标一致 label_display_used_statuses_only: åªæ˜¾ç¤ºè¢«æ­¤è·Ÿè¸ªæ ‡ç­¾ä½¿ç”¨çš„çŠ¶æ€ label_api_access_key: API访问键 label_missing_api_access_key: 缺少API访问键 label_api_access_key_created_on: API访问键是在 %{value} 之å‰å»ºç«‹çš„ label_profile: 简介 label_subtask_plural: å­ä»»åŠ¡ label_project_copy_notifications: å¤åˆ¶é¡¹ç›®æ—¶å‘é€é‚®ä»¶é€šçŸ¥ label_principal_search: "æœç´¢ç”¨æˆ·æˆ–组:" label_user_search: "æœç´¢ç”¨æˆ·ï¼š" button_login: 登录 button_submit: æäº¤ button_save: ä¿å­˜ button_check_all: 全选 button_uncheck_all: 清除 button_delete: 删除 button_create: 创建 button_create_and_continue: 创建并继续 button_test: 测试 button_edit: 编辑 button_edit_associated_wikipage: "编辑相关wiki页é¢: %{page_title}" button_add: 新增 button_change: 修改 button_apply: 应用 button_clear: 清除 button_lock: é”定 button_unlock: è§£é” button_download: 下载 button_list: 列表 button_view: 查看 button_move: 移动 button_move_and_follow: 移动并转到新问题 button_back: 返回 button_cancel: å–æ¶ˆ button_activate: 激活 button_sort: æŽ’åº button_log_time: 登记工时 button_rollback: æ¢å¤åˆ°è¿™ä¸ªç‰ˆæœ¬ button_watch: 关注 button_unwatch: å–æ¶ˆå…³æ³¨ button_reply: å›žå¤ button_archive: 存档 button_unarchive: å–æ¶ˆå­˜æ¡£ button_reset: é‡ç½® button_rename: é‡å‘½å/é‡å®šå‘ button_change_password: ä¿®æ”¹å¯†ç  button_copy: å¤åˆ¶ button_copy_and_follow: å¤åˆ¶å¹¶è½¬åˆ°æ–°é—®é¢˜ button_annotate: 追溯 button_update: æ›´æ–° button_configure: é…ç½® button_quote: 引用 button_show: 显示 status_active: 活动的 status_registered: 已注册 status_locked: å·²é”定 version_status_open: 打开 version_status_locked: é”定 version_status_closed: 关闭 field_active: 活动 text_select_mail_notifications: 选择需è¦å‘é€é‚®ä»¶é€šçŸ¥çš„动作 text_regexp_info: 例如:^[A-Z0-9]+$ text_project_destroy_confirmation: 您确信è¦åˆ é™¤è¿™ä¸ªé¡¹ç›®ä»¥åŠæ‰€æœ‰ç›¸å…³çš„æ•°æ®å—? text_subprojects_destroy_warning: "以下å­é¡¹ç›®ä¹Ÿå°†è¢«åŒæ—¶åˆ é™¤ï¼š%{value}" text_workflow_edit: 选择角色和跟踪标签æ¥ç¼–辑工作æµç¨‹ text_are_you_sure: 您确定? text_journal_changed: "%{label} 从 %{old} å˜æ›´ä¸º %{new}" text_journal_set_to: "%{label} 被设置为 %{value}" text_journal_deleted: "%{label} 已删除 (%{old})" text_journal_added: "%{label} %{value} 已添加" text_tip_issue_begin_day: 今天开始的任务 text_tip_issue_end_day: 今天结æŸçš„任务 text_tip_issue_begin_end_day: 今天开始并结æŸçš„任务 text_caracters_maximum: "最多 %{count} 个字符。" text_caracters_minimum: "è‡³å°‘éœ€è¦ %{count} 个字符。" text_length_between: "长度必须在 %{min} 到 %{max} 个字符之间。" text_tracker_no_workflow: 此跟踪标签未定义工作æµç¨‹ text_unallowed_characters: éžæ³•字符 text_comma_separated: å¯ä»¥ä½¿ç”¨å¤šä¸ªå€¼ï¼ˆç”¨é€—å·,分开)。 text_line_separated: å¯ä»¥ä½¿ç”¨å¤šä¸ªå€¼ï¼ˆæ¯è¡Œä¸€ä¸ªå€¼ï¼‰ã€‚ text_issues_ref_in_commit_messages: 在æäº¤ä¿¡æ¯ä¸­å¼•用和解决问题 text_issue_added: "问题 %{id} 已由 %{author} æäº¤ã€‚" text_issue_updated: "问题 %{id} 已由 %{author} 更新。" text_wiki_destroy_confirmation: 您确定è¦åˆ é™¤è¿™ä¸ª wiki åŠå…¶æ‰€æœ‰å†…容å—? text_issue_category_destroy_question: "有一些问题(%{count} ä¸ªï¼‰å±žäºŽæ­¤ç±»åˆ«ã€‚æ‚¨æƒ³è¿›è¡Œå“ªç§æ“作?" text_issue_category_destroy_assignments: 删除问题的所属类别(问题å˜ä¸ºæ— ç±»åˆ«ï¼‰ text_issue_category_reassign_to: 为问题选择其它类别 text_user_mail_option: "对于没有选中的项目,您将åªä¼šæ”¶åˆ°æ‚¨å…³æ³¨æˆ–å‚与的项目的通知(比如说,您是问题的报告者, 或被指派解决此问题)。" text_no_configuration_data: "角色ã€è·Ÿè¸ªæ ‡ç­¾ã€é—®é¢˜çжæ€å’Œå·¥ä½œæµç¨‹è¿˜æ²¡æœ‰è®¾ç½®ã€‚\n强烈建议您先载入默认设置,然åŽåœ¨æ­¤åŸºç¡€ä¸Šè¿›è¡Œä¿®æ”¹ã€‚" text_load_default_configuration: 载入默认设置 text_status_changed_by_changeset: "å·²åº”ç”¨åˆ°å˜æ›´åˆ—表 %{value}." text_time_logged_by_changeset: "已应用到修订版本 %{value}." text_issues_destroy_confirmation: '您确定è¦åˆ é™¤é€‰ä¸­çš„问题å—?' text_select_project_modules: '请选择此项目å¯ä»¥ä½¿ç”¨çš„æ¨¡å—:' text_default_administrator_account_changed: 默认的管ç†å‘˜å¸å·å·²æ”¹å˜ text_file_repository_writable: 附件路径å¯å†™ text_plugin_assets_writable: æ’件的附件路径å¯å†™ text_minimagick_available: MiniMagick å¯ç”¨ï¼ˆå¯é€‰çš„) text_destroy_time_entries_question: 您è¦åˆ é™¤çš„问题已ç»ä¸ŠæŠ¥äº† %{hours} å°æ—¶çš„工作é‡ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_destroy_time_entries: åˆ é™¤ä¸ŠæŠ¥çš„å·¥ä½œé‡ text_assign_time_entries_to_project: å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æäº¤åˆ°é¡¹ç›®ä¸­ text_reassign_time_entries: 'å°†å·²ä¸ŠæŠ¥çš„å·¥ä½œé‡æŒ‡å®šåˆ°æ­¤é—®é¢˜ï¼š' text_user_wrote: "%{value} 写到:" text_user_wrote_in: "%{value} 在 %{link} 中写到:" text_enumeration_destroy_question: "%{count} 个对象被关è”到了这个枚举值。" text_enumeration_category_reassign_to: '将它们关è”到新的枚举值:' text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/configuration.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" text_repository_usernames_mapping: "选择或更新与版本库中的用户å对应的Redmine用户。\n版本库中与Redmine中的åŒå用户将被自动对应。" text_diff_truncated: '... å·®åˆ«å†…å®¹è¶…è¿‡äº†å¯æ˜¾ç¤ºçš„æœ€å¤§è¡Œæ•°å¹¶å·²è¢«æˆªæ–­' text_custom_field_possible_values_info: 'æ¯é¡¹æ•°å€¼ä¸€è¡Œ' text_wiki_page_destroy_question: æ­¤é¡µé¢æœ‰ %{descendants} 个å­é¡µé¢å’Œä¸‹çº§é¡µé¢ã€‚æ‚¨æƒ³è¿›è¡Œé‚£ç§æ“作? text_wiki_page_nullify_children: å°†å­é¡µé¢ä¿ç•™ä¸ºæ ¹é¡µé¢ text_wiki_page_destroy_children: 删除å­é¡µé¢åŠå…¶æ‰€æœ‰ä¸‹çº§é¡µé¢ text_wiki_page_reassign_children: å°†å­é¡µé¢çš„上级页é¢è®¾ç½®ä¸º text_own_membership_delete_confirmation: 你正在删除你现有的æŸäº›æˆ–全部æƒé™ï¼Œå¦‚果这样åšäº†ä½ å¯èƒ½å°†ä¼šå†ä¹Ÿæ— æ³•编辑该项目了。你确定è¦ç»§ç»­å—? text_zoom_in: 放大 text_zoom_out: ç¼©å° default_role_manager: 管ç†äººå‘˜ default_role_developer: å¼€å‘人员 default_role_reporter: 报告人员 default_tracker_bug: 错误 default_tracker_feature: 功能 default_tracker_support: æ”¯æŒ default_issue_status_new: 新建 default_issue_status_in_progress: 进行中 default_issue_status_resolved: 已解决 default_issue_status_feedback: å馈 default_issue_status_closed: 已关闭 default_issue_status_rejected: å·²æ‹’ç» default_doc_category_user: 用户文档 default_doc_category_tech: 技术文档 default_priority_low: 低 default_priority_normal: 普通 default_priority_high: 高 default_priority_urgent: 紧急 default_priority_immediate: 立刻 default_activity_design: 设计 default_activity_development: å¼€å‘ enumeration_issue_priorities: 问题优先级 enumeration_doc_categories: 文档类别 enumeration_activities: 活动(时间跟踪) enumeration_system_activity: 系统活动 field_warn_on_leaving_unsaved: 当离开未ä¿å­˜å†…å®¹çš„é¡µé¢æ—¶ï¼Œæç¤ºæˆ‘ text_warn_on_leaving_unsaved: 若离开当å‰é¡µé¢ï¼Œåˆ™è¯¥é¡µé¢å†…未ä¿å­˜çš„内容将丢失。 label_my_queries: 我的自定义查询 text_journal_changed_no_detail: "%{label} 已更新。" label_news_comment_added: 添加到新闻的评论 button_expand_all: 展开所有 button_collapse_all: åˆæ‹¢æ‰€æœ‰ label_additional_workflow_transitions_for_assignee: 当用户是问题的指派对象时所å…许的问题状æ€è½¬æ¢ label_additional_workflow_transitions_for_author: 当用户是问题作者时所å…许的问题状æ€è½¬æ¢ label_bulk_edit_selected_time_entries: 批é‡ä¿®æ”¹é€‰å®šçš„æ—¶é—´æ¡ç›® text_time_entries_destroy_confirmation: 是å¦ç¡®å®šè¦åˆ é™¤é€‰å®šçš„æ—¶é—´æ¡ç›®ï¼Ÿ label_role_anonymous: 匿å用户 label_role_non_member: éžæˆå‘˜ç”¨æˆ· label_issue_note_added: 问题备注已添加 label_issue_status_updated: é—®é¢˜çŠ¶æ€æ›´æ–° label_issue_priority_updated: 问题优先级更新 label_issues_visibility_own: 用户创建或被指派的问题 field_issues_visibility: 问题å¯è§åº¦ label_issues_visibility_all: 全部问题 permission_set_own_issues_private: è®¾ç½®è‡ªå·±çš„é—®é¢˜ä¸ºå…¬å¼€æˆ–ç§æœ‰ field_is_private: ç§æœ‰ permission_set_issues_private: è®¾ç½®é—®é¢˜ä¸ºå…¬å¼€æˆ–ç§æœ‰ label_issues_visibility_public: 全部éžç§æœ‰é—®é¢˜ text_issues_destroy_descendants_confirmation: æ­¤æ“ä½œåŒæ—¶ä¼šåˆ é™¤ %{count} 个å­ä»»åŠ¡ã€‚ field_commit_logs_encoding: æäº¤æ³¨é‡Šçš„ç¼–ç  field_scm_path_encoding: è·¯å¾„ç¼–ç  text_scm_path_encoding_note: "默认: UTF-8" field_path_to_repository: 库路径 field_root_directory: 根目录 field_cvs_module: CVS æ¨¡å— field_cvsroot: CVSROOT text_mercurial_repository_note: 本地库 (e.g. /hgrepo, c:\hgrepo) text_scm_command: 命令 text_scm_command_version: 版本 label_git_report_last_commit: 报告最åŽä¸€æ¬¡æ–‡ä»¶/目录æäº¤ text_scm_config: 您å¯ä»¥åœ¨config/configuration.yml中é…置您的SCM命令。 请在编辑åŽï¼Œé‡å¯Redmine应用。 text_scm_command_not_available: Scm命令ä¸å¯ç”¨ã€‚ 请检查管ç†é¢æ¿çš„é…置。 text_git_repository_note: 库中无内容。(e.g. /gitrepo, c:\gitrepo) notice_issue_successful_create: 问题 %{id} 已创建。 label_between: 介于 setting_issue_group_assignment: å…许将问题指派给组 label_diff: 差异 description_query_sort_criteria_direction: æŽ’åºæ–¹å¼ description_project_scope: æœç´¢èŒƒå›´ description_filter: 过滤器 description_user_mail_notification: 邮件通知设置 description_message_content: ä¿¡æ¯å†…容 description_available_columns: 备选列 description_issue_category_reassign: 选择问题类别 description_search: æœç´¢å­—段 description_notes: 批注 description_choose_project: 项目 description_query_sort_criteria_attribute: æŽ’åºæ–¹å¼ description_wiki_subpages_reassign: é€‰æ‹©çˆ¶é¡µé¢ description_selected_columns: 已选列 label_parent_revision: 父修订 label_child_revision: å­ä¿®è®¢ error_scm_annotate_big_text_file: 输入文本内容超长,无法输入。 setting_default_issue_start_date_to_creation_date: ä½¿ç”¨å½“å‰æ—¥æœŸä½œä¸ºæ–°é—®é¢˜çš„开始日期 button_edit_section: 编辑此区域 setting_repositories_encodings: é™„ä»¶å’Œç‰ˆæœ¬åº“ç¼–ç  description_all_columns: 所有列 button_export: 导出 label_export_options: "%{export_format} 导出选项" error_attachment_too_big: 该文件无法上传。超过文件大å°é™åˆ¶ (%{max_size}) notice_failed_to_save_time_entries: "无法ä¿å­˜ä¸‹åˆ—所选å–çš„ %{total} 个项目中的 %{count} 工时: %{ids}。" label_x_issues: zero: 0 问题 one: 1 问题 other: "%{count} 问题" label_repository_new: 新建版本库 field_repository_is_default: 主版本库 label_copy_attachments: å¤åˆ¶é™„ä»¶ label_item_position: "%{position}/%{count}" label_completed_versions: 已完æˆçš„版本 text_project_identifier_info: ä»…å°å†™å­—æ¯ï¼ˆa-zï¼‰ã€æ•°å­—ã€ç ´æŠ˜å·ï¼ˆ-)和下划线(_)å¯ä»¥ä½¿ç”¨ã€‚
    一旦ä¿å­˜ï¼Œæ ‡è¯†æ— æ³•修改。 field_multiple: 多é‡å–值 setting_commit_cross_project_ref: å…许引用/ä¿®å¤æ‰€æœ‰å…¶ä»–项目的问题 text_issue_conflict_resolution_add_notes: æ·»åŠ è¯´æ˜Žå¹¶å–æ¶ˆæˆ‘çš„å…¶ä»–å˜æ›´å¤„ç†ã€‚ text_issue_conflict_resolution_overwrite: ç›´æŽ¥å¥—ç”¨æˆ‘çš„å˜æ›´ (先å‰çš„说明将被ä¿ç•™ï¼Œä½†æ˜¯æŸäº›å˜æ›´å†…容å¯èƒ½ä¼šè¢«è¦†ç›–) notice_issue_update_conflict: 当您正在编辑这个问题的时候,它已ç»è¢«å…¶ä»–人抢先一步更新过了。 text_issue_conflict_resolution_cancel: å–æ¶ˆæˆ‘æ‰€æœ‰çš„å˜æ›´å¹¶é‡æ–°åˆ·æ–°æ˜¾ç¤º %{link} 。 permission_manage_related_issues: ç›¸å…³é—®é¢˜ç®¡ç† field_auth_source_ldap_filter: LDAP 过滤器 label_search_for_watchers: é€šè¿‡æŸ¥æ‰¾æ–¹å¼æ·»åŠ å…³æ³¨è€… notice_account_deleted: 您的账å·å·²è¢«æ°¸ä¹…删除(账å·å·²æ— æ³•æ¢å¤ï¼‰ã€‚ setting_unsubscribe: å…许用户退订 button_delete_my_account: åˆ é™¤æˆ‘çš„è´¦å· text_account_destroy_confirmation: |- 确定继续处ç†ï¼Ÿ 您的账å·ä¸€æ—¦åˆ é™¤ï¼Œå°†æ— æ³•冿¬¡æ¿€æ´»ä½¿ç”¨ã€‚ error_session_expired: 您的会è¯å·²è¿‡æœŸã€‚è¯·é‡æ–°ç™»é™†ã€‚ text_session_expiration_settings: "警告: 更改这些设置将会使包括你在内的当å‰ä¼šè¯å¤±æ•ˆã€‚" setting_session_lifetime: ä¼šè¯æœ€å¤§æœ‰æ•ˆæ—¶é—´ setting_session_timeout: 会è¯é—²ç½®è¶…æ—¶ label_session_expiration: 会è¯è¿‡æœŸ permission_close_project: 关闭/é‡å¼€é¡¹ç›® button_close: 关闭 button_reopen: é‡å¼€ project_status_active: 已激活 project_status_closed: 已关闭 project_status_archived: 已存档 text_project_closed: 当å‰é¡¹ç›®å·²è¢«å…³é—­ã€‚当å‰é¡¹ç›®åªè¯»ã€‚ notice_user_successful_create: 用户 %{id} 已创建。 field_core_fields: 标准字段 field_timeout: è¶…æ—¶ (ç§’) setting_thumbnails_enabled: 显示附件略缩图 setting_thumbnails_size: 略缩图尺寸 (åƒç´ ) label_status_transitions: 状æ€è½¬æ¢ label_fields_permissions: 字段æƒé™ label_readonly: åªè¯» label_required: å¿…å¡« text_repository_identifier_info: ä»…å°å†™å­—æ¯ï¼ˆa-zï¼‰ã€æ•°å­—ã€ç ´æŠ˜å·ï¼ˆ-)和下划线(_)å¯ä»¥ä½¿ç”¨ã€‚
    一旦ä¿å­˜ï¼Œæ ‡è¯†æ— æ³•修改。 field_board_parent: çˆ¶è®ºå› label_attribute_of_project: 项目 %{name} label_attribute_of_author: 作者 %{name} label_attribute_of_assigned_to: 指派给 %{name} label_attribute_of_fixed_version: 目标版本 %{name} label_copy_subtasks: å¤åˆ¶å­ä»»åŠ¡ label_copied_to: å¤åˆ¶åˆ° label_copied_from: å¤åˆ¶äºŽ label_any_issues_in_project: 项目内任æ„问题 label_any_issues_not_in_project: 项目外任æ„问题 field_private_notes: ç§æœ‰æ³¨è§£ permission_view_private_notes: æŸ¥çœ‹ç§æœ‰æ³¨è§£ permission_set_notes_private: è®¾ç½®ä¸ºç§æœ‰æ³¨è§£ label_no_issues_in_project: 项目内无相关问题 label_any: 全部 label_last_n_weeks: 上 %{count} å‘¨å‰ setting_cross_project_subtasks: 支æŒè·¨é¡¹ç›®å­ä»»åŠ¡ label_cross_project_descendants: 与å­é¡¹ç›®å…±äº« label_cross_project_tree: 与项目树共享 label_cross_project_hierarchy: 与项目继承层次共享 label_cross_project_system: 与所有项目共享 button_hide: éšè— setting_non_working_week_days: éžå·¥ä½œæ—¥ label_in_the_next_days: 在未æ¥å‡ å¤©ä¹‹å†… label_in_the_past_days: 在过去几天之内 label_attribute_of_user: 用户是 %{name} text_turning_multiple_off: 如果您åœç”¨å¤šé‡å€¼è®¾å®šï¼Œé‡å¤çš„值将被移除,以使æ¯ä¸ªé¡¹ç›®ä»…ä¿ç•™ä¸€ä¸ªå€¼ label_attribute_of_issue: 问题是 %{name} permission_add_documents: 添加文档 permission_edit_documents: 编辑文档 permission_delete_documents: 删除文档 label_gantt_progress_line: 进度线 setting_jsonp_enabled: å¯ç”¨JSONPæ”¯æŒ field_inherit_members: 继承父项目æˆå‘˜ field_closed_on: ç»“æŸæ—¥æœŸ field_generate_password: 生æˆå¯†ç  setting_default_projects_tracker_ids: 新建项目默认跟踪标签 label_total_time: åˆè®¡ notice_account_not_activated_yet: 您的账å·å°šæœªæ¿€æ´». 若您è¦é‡æ–°æ”¶å–激活邮件, 请å•击此链接. notice_account_locked: 您的å¸å·å·²è¢«é”定 label_hidden: éšè— label_visibility_private: 仅对我å¯è§ label_visibility_roles: 仅对选å–角色å¯è§ label_visibility_public: 对任何人å¯è§ field_must_change_passwd: ä¸‹æ¬¡ç™»å½•æ—¶å¿…é¡»ä¿®æ”¹å¯†ç  notice_new_password_must_be_different: 新密ç å¿…须和旧密ç ä¸åŒ setting_mail_handler_excluded_filenames: 移除符åˆä¸‹åˆ—å称的附件 text_convert_available: å¯ä½¿ç”¨ ImageMagick 转æ¢å›¾ç‰‡æ ¼å¼ (å¯é€‰) label_link: 连接 label_only: 仅于 label_drop_down_list: 下拉列表 label_checkboxes: å¤é€‰æ¡† label_link_values_to: é“¾æŽ¥æ•°å€¼è‡³æ­¤ç½‘å€ setting_force_default_language_for_anonymous: 强制匿å用户使用默认语言 setting_force_default_language_for_loggedin: 强制已登录用户使用默认语言 label_custom_field_select_type: 请选择需è¦å…³è”自定义属性的类型 label_issue_assigned_to_updated: 指派人已更新 label_check_for_updates: 检查更新 label_latest_compatible_version: 最新兼容版本 label_unknown_plugin: 未知æ’ä»¶ label_radio_buttons: å•选按钮 label_group_anonymous: 匿å用户 label_group_non_member: éžæˆå‘˜ç”¨æˆ· label_add_projects: 加入项目 field_default_status: é»˜è®¤çŠ¶æ€ text_subversion_repository_note: '示例: file:///, http://, https://, svn://, svn+[tunnelscheme]://' field_users_visibility: 用户å¯è§åº¦ label_users_visibility_all: 所有活动用户 label_users_visibility_members_of_visible_projects: å¯è§é¡¹ç›®ä¸­çš„æˆå‘˜ label_edit_attachments: 编辑附件 setting_link_copied_issue: å¤åˆ¶æ—¶å…³è”问题 label_link_copied_issue: å…³è”å·²å¤åˆ¶çš„问题 label_ask: 询问 label_search_attachments_yes: æœç´¢é™„件的文件åå’Œæè¿° label_search_attachments_no: 䏿œç´¢é™„ä»¶ label_search_attachments_only: åªæœç´¢é™„ä»¶ label_search_open_issues_only: åªæœç´¢è¿›è¡Œä¸­çš„问题 field_address: é‚®ä»¶åœ°å€ setting_max_additional_emails: 其它电å­é‚®ä»¶åœ°å€ä¸Šé™ label_email_address_plural: 电å­é‚®ä»¶ label_email_address_add: 增加电å­é‚®ä»¶åœ°å€ label_enable_notifications: å¯ç”¨é€šçŸ¥ label_disable_notifications: ç¦ç”¨é€šçŸ¥ setting_search_results_per_page: æ¯ä¸€é¡µçš„æœç´¢ç»“æžœæ•° label_blank_value: 空白 permission_copy_issues: å¤åˆ¶é—®é¢˜ error_password_expired: 您的密ç å·²ç»è¿‡æœŸæˆ–是管ç†å‘˜è¦æ±‚您修改密ç . field_time_entries_visibility: 工时记录å¯è§åº¦ setting_password_max_age: å¯†ç æœ‰æ•ˆæœŸ label_parent_task_attributes: 父问题属性 label_parent_task_attributes_derived: 从å­ä»»åŠ¡è®¡ç®—å¯¼å‡º label_parent_task_attributes_independent: 与å­ä»»åŠ¡æ— å…³ label_time_entries_visibility_all: 所有工时记录 label_time_entries_visibility_own: 用户自己创建的工时记录 label_member_management: æˆå‘˜ç®¡ç† label_member_management_all_roles: 所有角色 label_member_management_selected_roles_only: åªé™ä¸‹åˆ—角色 label_password_required: 确认您的密ç åŽç»§ç»­ label_total_spent_time: 总体耗时 notice_import_finished: æˆåŠŸå¯¼å…¥ %{count} 个项目 notice_import_finished_with_errors: 有 %{count} 个项目无法导入(共计 %{total} 个) error_invalid_file_encoding: è¿™ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ %{encoding} ç¼–ç æ–‡ä»¶ error_invalid_csv_file_or_settings: è¿™ä¸æ˜¯ä¸€ä¸ªCSV文件或者ä¸ç¬¦åˆä»¥ä¸‹è®¾ç½® (%{value}) error_can_not_read_import_file: 读å–导入文件时å‘生错误 permission_import_issues: 问题导入 label_import_issues: 问题导入 label_select_file_to_import: 选择è¦å¯¼å…¥çš„æ–‡ä»¶ label_fields_separator: 字段分隔符 label_fields_wrapper: 字段包装识别符 label_encoding: ç¼–ç  label_comma_char: 逗å·(,) label_semi_colon_char: 分å·(;) label_quote_char: å•引å·(') label_double_quote_char: åŒå¼•å·(") label_fields_mapping: 字段映射 label_file_content_preview: 文件内容预览 label_create_missing_values: 创建缺失的数值 button_import: 导入 field_total_estimated_hours: 预估工时统计 label_api: API label_total_plural: 总计 label_assigned_issues: 被指派的问题 label_field_format_enumeration: é”®/值 æ¸…å• label_f_hour_short: '%{value} å°æ—¶' field_default_version: 默认版本 error_attachment_extension_not_allowed: ä¸å…许上传此类型 %{extension} 附件 setting_attachment_extensions_allowed: å…许上传的附件类型 setting_attachment_extensions_denied: ç¦æ­¢ä¸Šä¼ çš„附件类型 label_any_open_issues: ä»»æ„进行中的问题 label_no_open_issues: ä»»æ„已关闭的问题 label_default_values_for_new_users: 新用户默认值 error_ldap_bind_credentials: 无效的LDAPè´¦å·æˆ–å¯†ç  setting_sys_api_key: 版本库管ç†ç½‘页æœåŠ¡ API 密钥 setting_lost_password: å¿˜è®°å¯†ç  mail_subject_security_notification: 安全通知 mail_body_security_notification_change: "%{field} å·²å˜æ›´." mail_body_security_notification_change_to: "%{field} å·²å˜æ›´ä¸º %{value}." mail_body_security_notification_add: "%{field} %{value} 已增加." mail_body_security_notification_remove: "%{field} %{value} 已移除." mail_body_security_notification_notify_enabled: é‚®ä»¶åœ°å€ %{value} 开始接收通知. mail_body_security_notification_notify_disabled: é‚®ä»¶åœ°å€ %{value} ä¸å†æŽ¥æ”¶é€šçŸ¥. mail_body_settings_updated: "下列设置已更新:" field_remote_ip: IP åœ°å€ label_wiki_page_new: 新建Wikié¡µé¢ label_relations: 相关的问题 button_filter: 设置为过滤æ¡ä»¶ mail_body_password_updated: 您的密ç å·²ç»å˜æ›´ã€‚ label_no_preview: 没有å¯ä»¥æ˜¾ç¤ºçš„预览内容 error_no_tracker_allowed_for_new_issue_in_project: 项目没有任何跟踪标签,您ä¸èƒ½åˆ›å»ºä¸€ä¸ªé—®é¢˜ label_tracker_all: 所有跟踪标签 label_new_project_issue_tab_enabled: æ˜¾ç¤ºâ€œæ–°å»ºé—®é¢˜â€æ ‡ç­¾ setting_new_item_menu_tab: 建立新对象æ¡ç›®çš„项目èœå•æ ç›® label_new_object_tab_enabled: 显示 "+" 为下拉列表 error_no_projects_with_tracker_allowed_for_new_issue: 当å‰é¡¹ç›®ä¸­ä¸åŒ…å«å¯¹åº”的跟踪类型,ä¸èƒ½åˆ›å»ºè¯¥ç±»åž‹çš„工作项。 field_textarea_font: 用于文本区域的字体 label_font_default: 默认字体 label_font_monospace: 等宽字体 label_font_proportional: 比例字体 setting_timespan_format: æ—¶é—´æ ¼å¼è®¾ç½® label_table_of_contents: 目录 setting_commit_logs_formatting: 在æäº¤æ—¥å¿—æ¶ˆæ¯æ—¶ï¼Œåº”ç”¨æ–‡æœ¬æ ¼å¼ setting_mail_handler_enable_regex: å¯ç”¨æ­£åˆ™è¡¨è¾¾å¼ error_move_of_child_not_possible: 'å­ä»»åŠ¡ %{child} ä¸èƒ½ç§»åŠ¨åˆ°æ–°é¡¹ç›®ï¼š%{errors}' error_cannot_reassign_time_entries_to_an_issue_about_to_be_deleted: 已用耗时ä¸èƒ½é‡æ–°åˆ†é…到å³å°†è¢«åˆ é™¤çš„任务里。 setting_timelog_required_fields: 工时登记必填字段 label_attribute_of_object: '%{object_name} çš„ %{name} 属性' label_user_mail_option_only_assigned: åªå‘逿ˆ‘å…³æ³¨æˆ–æŒ‡æ´¾ç»™æˆ‘çš„ç›¸å…³ä¿¡æ¯ label_user_mail_option_only_owner: åªå‘逿ˆ‘å…³æ³¨æˆ–æˆ‘åˆ›å»ºçš„ç›¸å…³ä¿¡æ¯ warning_fields_cleared_on_bulk_edit: 修改将导致所选内容的一个或多个字段值被自动删除。 field_updated_by: 更新人 field_last_updated_by: 最近更新人 field_full_width_layout: 全宽布局 label_last_notes: 最近批注 field_digest: 校验和 field_default_assigned_to: 默认指派给 setting_show_custom_fields_on_registration: 注册时显示自定义字段 permission_view_news: 查看新闻 label_no_preview_alternative_html: 无法预览。请使用文件 %{link} 查阅。 label_no_preview_download: 下载 setting_close_duplicate_issues: 自动关闭é‡å¤çš„问题 error_exceeds_maximum_hours_per_day: 当日内无法计入超过 %{max_hours} 的工时 (%{logged_hours} 工时已被记录) setting_time_entry_list_defaults: 默认日志一览 setting_timelog_accept_0_hours: å…许计入0å°æ—¶å·¥æ—¶ setting_timelog_max_hours_per_day: æ¯ç”¨æˆ·æ¯å¤©æœ€å¤§å¯è®¡å…¥å·¥æ—¶ä¸Šé™ label_x_revisions: "%{count} 修订" error_can_not_delete_auth_source: æ­¤è®¤è¯æ¨¡å¼æ­£åœ¨ä½¿ç”¨ï¼Œä¸èƒ½åˆ é™¤ã€‚ button_actions: 行为 mail_body_lost_password_validity: è¯·æ³¨æ„æ‚¨åªèƒ½ä½¿ç”¨æ­¤é“¾æŽ¥æ›´æ”¹ä¸€æ¬¡å¯†ç ã€‚ text_login_required_html: 当ä¸éœ€è¦è®¤è¯æ—¶ï¼Œå…¬å¼€é¡¹ç›®å’Œå®ƒä»¬çš„内容将会在网络上公开访问。你å¯ä»¥ç¼–辑åˆé€‚çš„æƒé™ã€‚ label_login_required_yes: '是' label_login_required_no: å¦ï¼Œå…许任何人访问公开项目 text_project_is_public_non_member: 所有已登录的用户都å¯ä»¥è®¿é—®å…¬å…±é¡¹ç›®å’Œå†…容。 text_project_is_public_anonymous: 公共项目åŠå…¶å†…容将在网络上公开。 label_version_and_files: 版本 (%{count}) 文件 label_ldap: LDAP label_ldaps_verify_none: LDAPS (æ— è¯ä¹¦æ£€æŸ¥) label_ldaps_verify_peer: LDAPS label_ldaps_warning: 建议使用带有è¯ä¹¦æ£€æŸ¥çš„加密LDAPS连接,以防止在身份验è¯è¿‡ç¨‹ä¸­çš„任何篡改伪造。 label_nothing_to_preview: 无预览 error_token_expired: æ­¤å¯†ç æ¢å¤é“¾æŽ¥å·²è¿‡æœŸï¼Œè¯·å†è¯•一次。 error_spent_on_future_date: 无法记录为将æ¥çš„工时。 setting_timelog_accept_future_dates: 接å—å°†æ¥å·¥æ—¶ã€‚ label_delete_link_to_subtask: åˆ é™¤å…³è” error_not_allowed_to_log_time_for_other_users: ä¸å…许为其他用户记录时间 permission_log_time_for_other_users: 记录其他用户的工时 label_tomorrow: 明天 label_next_week: 下周 label_next_month: 下月 text_role_no_workflow: 没有为此角色定义工作æµç¨‹ text_status_no_workflow: 在工作æµç¨‹ä¸­æ²¡æœ‰è·Ÿè¸ªç¨‹åºä½¿ç”¨æ­¤çŠ¶æ€ setting_mail_handler_preferred_body_part: Preferred part of multipart (HTML) emails setting_show_status_changes_in_mail_subject: é‚®ä»¶é€šçŸ¥çš„æ ‡é¢˜ä¸­æ˜¾ç¤ºæ›´æ”¹çŠ¶æ€ label_inherited_from_parent_project: 继承自父项目 label_inherited_from_group: 继承自 %{name} 组 label_trackers_description: 工作æè¿° label_open_trackers_description: 查看全部跟踪标签æè¿° label_preferred_body_part_text: Text label_preferred_body_part_html: HTML field_parent_issue_subject: 父任务主题 permission_edit_own_issues: 更新自己的问题 text_select_apply_tracker: 选择跟踪标签 label_updated_issues: 更新的问题 text_avatar_server_config_html: 当å‰çš„Gravatarå¤´åƒæœåŠ¡å™¨æ˜¯ %{url} 。您å¯ä»¥åœ¨ config/configuration.yml é…置它。 setting_gantt_months_limit: 甘特图上显示的最大月数 permission_import_time_entries: 导入工时æ¡ç›® label_import_notifications: 在导入期间å‘é€ç”µå­é‚®ä»¶é€šçŸ¥ text_gs_available: ImageMagick PDF æ”¯æŒ (å¯é€‰) field_recently_used_projects: è·³è½¬æ¡†ä¸­æœ€è¿‘ä½¿ç”¨çš„é¡¹ç›®æ•°é‡ label_optgroup_bookmarks: 书签 label_optgroup_recents: 最近使用 button_project_bookmark: 添加书签 button_project_bookmark_delete: 移除书签 field_history_default_tab: 问题的历å²é»˜è®¤æ ‡ç­¾ label_issue_history_properties: 更改属性 label_issue_history_notes: 说明 label_last_tab_visited: 最近访问标签 field_unique_id: 唯一ID text_no_subject: 无主题 setting_password_required_char_classes: 密ç éœ€è¦è¿™äº›ç‰¹å¾ label_password_char_class_uppercase: å¤§å†™å­—æ¯ label_password_char_class_lowercase: å°å†™å­—æ¯ label_password_char_class_digits: æ•°å­— label_password_char_class_special_chars: 特殊字符 text_characters_must_contain: 必须包å«å­—符 %{character_classes}。 label_starts_with: 开始于 label_ends_with: 结æŸäºŽ label_issue_fixed_version_updated: 更新目标版本 setting_project_list_defaults: 项目列表默认值 label_display_type: 显示结果到 label_display_type_list: 列表 label_display_type_board: 颿¿ label_my_bookmarks: 我的书签 label_import_time_entries: 导入工时æ¡ç›® field_toolbar_language_options: 代ç å·¥å…·æ è¯­è¨€çªå‡ºæ˜¾ç¤º label_user_mail_notify_about_high_priority_issues_html: 请通知我优先级高于%{prio}的问题 label_assign_to_me: 指派给我 notice_issue_not_closable_by_open_tasks: 此问题无法被关闭,因为它至少还有一个尚在打开的å­ä»»åŠ¡ã€‚ notice_issue_not_closable_by_blocking_issue: 此问题无法被关闭,因为它被至少一个尚在打开的问题所阻挡。 notice_issue_not_reopenable_by_closed_parent_issue: 此问题無法被é‡å¼€ï¼Œå› ä¸ºå®ƒçš„父任务已关闭。 error_bulk_download_size_too_big: 这些附件无法被批é‡ä¸‹è½½ï¼Œå› ä¸ºå…¶é™„件大尿€»è®¡è¶…过å…许的最大值 (%{max_size}) setting_bulk_download_max_size: 批é‡ä¸‹è½½é™„件大尿€»è®¡å¤§å°é™åˆ¶ label_download_all_attachments: 下载所有附件 error_attachments_too_many: è¯¥æ–‡ä»¶æ— æ³•ä¸Šä¼ ï¼Œå› ä¸ºè¶…è¿‡åŒæ—¶ä¸Šä¼ é™„ä»¶æ•°é‡çš„é™åˆ¶ (%{max_number_of_files}) setting_email_domains_allowed: å…许的邮件网域 setting_email_domains_denied: ç¦æ­¢çš„邮件网域 field_passwd_changed_on: 密ç ä¸Šæ¬¡å˜æ›´äºŽ label_relations_mapping: å…³è”对应 label_import_users: 导入用戶 label_days_to_html: "%{days} 天,最多至 %{date}" setting_twofa: åŒå› ç´ éªŒè¯ label_optional: 选用项 label_required_lower: å¿…è¦é … button_disable: 关闭 twofa__totp__name: 验è¯å™¨åº”ç”¨ç¨‹åº twofa__totp__text_pairing_info_html: 扫æè¿™ä¸ªäºŒç»´ç æˆ–将纯文本键输入至 TOTP åº”ç”¨ç¨‹åº (e.g. Google Authenticator, Authy, Duo Mobile) 并将其显示的代ç è¾“入至下é¢çš„字段中, 以å¯ç”¨åŒå› ç´ éªŒè¯ã€‚ twofa__totp__label_plain_text_key: 纯文本键 twofa__totp__label_activate: 啟用验è¯å™¨åº”ç”¨ç¨‹åº twofa_currently_active: '当å‰ä½¿ç”¨ä¸­: %{twofa_scheme_name}' twofa_not_active: 尚未啟用 twofa_label_code: ä»£ç  twofa_hint_disabled_html: 设定为 %{label} 将会åœç”¨å¹¶è§£é™¤æ‰€æœ‰ç”¨æˆ·å·²é…对之åŒå› ç´ éªŒè¯è£…置。 twofa_hint_required_html: 设定为 %{label} å°†ä¼šè¦æ±‚所有用户于下次登录时, 设置åŒå› ç´ éªŒè¯ã€‚ twofa_label_setup: 啟用åŒå› ç´ éªŒè¯ twofa_label_deactivation_confirmation: 关闭åŒå› ç´ éªŒè¯ twofa_notice_select: '请选择您想è¦ä½¿ç”¨çš„åŒå› ç´ é…置方å¼:' twofa_warning_require: 管ç†å‘˜è¦æ±‚您啟用åŒå› ç´ éªŒè¯ã€‚ twofa_activated: åŒå› ç´ éªŒè¯å·²å•Ÿç”¨æˆåŠŸã€‚å»ºè®®æ‚¨ä¸ºè‡ªå·±çš„å¸å· 生æˆå¤‡ç”¨ä»£ç ã€‚ twofa_deactivated: åŒå› ç´ éªŒè¯å·²å…³é—­ã€‚ twofa_mail_body_security_notification_paired: 雙因素驗證已使用 %{field} 開啟æˆåŠŸã€‚ twofa_mail_body_security_notification_unpaired: åŒå› ç´ éªŒè¯å·²å…³é—­ã€‚ twofa_mail_body_backup_codes_generated: æ–°åŒå› ç´ éªŒè¯çš„备用代ç å·²ç”Ÿæˆã€‚ twofa_mail_body_backup_code_used: 有个åŒå› ç´ éªŒè¯çš„备用代ç è¢«ä½¿ç”¨ã€‚ twofa_invalid_code: ä»£ç æ˜¯æ— æ•ˆçš„æˆ–过期的。 twofa_label_enter_otp: 请输入您的åŒå› ç´ éªŒè¯ä»£ç ã€‚ twofa_too_many_tries: é‡è¯•次数过多。 twofa_resend_code: é‡é€ä»£ç  twofa_code_sent: 有个验è¯ä»£ç å·²ç»ä¼ é€ç»™æ‚¨ã€‚ twofa_generate_backup_codes: 生æˆå¤‡ç”¨ä»£ç  twofa_text_generate_backup_codes_confirmation: 这会将所有现存的备用代ç è®¾ä¸ºæ— æ•ˆï¼Œå¹¶äº§ç”Ÿæ–°çš„备用代ç ã€‚您è¦ç»§ç»­å—? twofa_notice_backup_codes_generated: 您的备用代ç å·²ç”Ÿæˆã€‚ twofa_warning_backup_codes_generated_invalidated: 新的备用代ç å·²ç”Ÿæˆã€‚您现存的备用代ç ï¼Œä»Ž %{time} èµ·å·²ç»å¤±æ•ˆã€‚ twofa_label_backup_codes: åŒå› ç´ éªŒè¯å¤‡ç”¨ä»£ç  twofa_text_backup_codes_hint: 当您无法存å–åŒå› ç´ é…置方å¼å–得啿¬¡å¯†ç æ—¶ï¼Œä½¿ç”¨è¿™äº›æ›¿ä»£å¤‡ç”¨ä»£ç ã€‚æ¯ä¸ªä»£ç ä»…èƒ½è¢«ä½¿ç”¨ä¸€æ¬¡ã€‚å»ºè®®æ‚¨å°†å¤‡ç”¨ä»£ç æ‰“å°å‡ºæ¥ï¼Œå¹¶å­˜æ”¾äºŽå®‰å…¨çš„地点。 twofa_text_backup_codes_created_at: 备用代ç ç”ŸæˆäºŽ %{datetime}. twofa_backup_codes_already_shown: 这些备用代ç ä¸ä¼šå†æ¬¡å‡ºçް, 冿¬¡éœ€è¦æ—¶è¯·é‡æ–° ç”Ÿæˆæ–°çš„备用代ç ã€‚ error_can_not_execute_macro_html: 执行 %{name} 宿—¶ï¼Œå‘生错误 (%{error}) error_macro_does_not_accept_block: æ­¤å®ä¸æŽ¥å—æ–‡æœ¬å— error_childpages_macro_no_argument: 缺少引数, æ­¤å®åªèƒ½ä»Ž wiki 页é¢ä¸­è¢«å‘¼å« error_circular_inclusion: 侦测到循环引用内容 error_page_not_found: 找ä¸åˆ°é¡µé¢ error_filename_required: 必须填入文件åç§° error_invalid_size_parameter: 无效的尺寸大å°å‚æ•° error_attachment_not_found: 找ä¸åˆ°æ–‡ä»¶ %{name} permission_delete_project: 删除项目 field_twofa_scheme: åŒå› ç´ éªŒè¯é…ç½® text_user_destroy_confirmation: 您是å¦ç¡®å®šè¦åˆ é™¤è¿™ä¸ªç”¨æˆ·å¹¶ä¸”移除该用户所有的å‚照? 这是无法被å¤åŽŸçš„åŠ¨ä½œã€‚é€šå¸¸é”定一个用户是比较好的方案,而éžå°†ç”¨æˆ·åˆ é™¤ã€‚è‹¥è¦ç¡®è®¤ï¼Œè¯·åœ¨ä¸‹é¢è¾“入用户的å¸å·åç§° (%{login})。 text_project_destroy_enter_identifier: è‹¥è¦ç¡®è®¤, 请在下é¢è¾“入项目的标识 (%{identifier})。 button_add_subtask: 新建å­ä»»åŠ¡ notice_invalid_watcher: 'æ— æ•ˆçš„å…³æ³¨è€…ï¼šå› ä¸ºå®ƒæ— æƒæŸ¥çœ‹æ­¤å¯¹è±¡ï¼Œæ‰€ä»¥ç”¨æˆ·å°†ä¸ä¼šæ”¶åˆ°ä»»ä½•通知。' button_fetch_changesets: èŽ·å–æäº¤è®°å½• permission_view_message_watchers: 查看消æ¯å…³æ³¨è€…列表 permission_add_message_watchers: 添加消æ¯å…³æ³¨è€… permission_delete_message_watchers: 删除消æ¯å…³æ³¨è€… label_message_watchers: 关注者 button_copy_link: å¤åˆ¶é“¾æŽ¥ error_invalid_authenticity_token: 无效的表å•验è¯ä»¤ç‰Œã€‚ error_query_statement_invalid: 执行查询时å‘ç”Ÿé”™è¯¯å¹¶å·²è®°å½•ã€‚è¯·å‘æ‚¨çš„Redmine管ç†å‘˜æŠ¥å‘Šæ­¤é”™è¯¯ã€‚ permission_view_wiki_page_watchers: 查看Wiki页é¢å…³æ³¨è€…列表 permission_add_wiki_page_watchers: 添加Wiki页é¢å…³æ³¨è€… permission_delete_wiki_page_watchers: 删除Wiki页é¢å…³æ³¨è€… label_wiki_page_watchers: 关注者 label_attachment_description: 文件æè¿° error_no_data_in_file: 文件ä¸åŒ…å«ä»»ä½•æ•°æ® field_twofa_required: è¦æ±‚åŒå› ç´ èº«ä»½éªŒè¯ twofa_hint_optional_html: 设置 %{label},用户å¯ä»¥è‡ªè¡Œè®¾ç½®åŒå› ç´ èº«ä»½éªŒè¯ï¼Œé™¤éžå…¶æ‰€åœ¨ç»„è¦æ±‚必须设置。 twofa_text_group_required: 仅当全局åŒå› ç´ èº«ä»½éªŒè¯è®¾ç½®ä¸ºâ€œé€‰ç”¨é¡¹â€æ—¶ï¼Œæ­¤è®¾ç½®æ‰æœ‰æ•ˆã€‚ç›®å‰ï¼Œæ‰€æœ‰ç”¨æˆ·éƒ½éœ€è¦è¿›è¡ŒåŒå› ç´ èº«ä»½éªŒè¯ã€‚ twofa_text_group_disabled: 仅当全局åŒå› ç´ èº«ä»½éªŒè¯è®¾ç½®ä¸ºâ€œé€‰ç”¨é¡¹â€æ—¶ï¼Œæ­¤è®¾ç½®æ‰æœ‰æ•ˆã€‚ç›®å‰ï¼ŒåŒå› ç´ èº«ä»½éªŒè¯å·²ç¦ç”¨ã€‚ field_default_issue_query: 默认问题查询 label_default_queries: for_all_projects: 对于所有项目 for_current_project: 对于当å‰é¡¹ç›® for_all_users: 对于所有用户 for_this_user: 对于此用户 text_allowed_queries_to_select: åªå…许选择公开(对任何用户开放)的查询 text_all_migrations_have_been_run: 所有数æ®åº“è¿ç§»å·²å®Œæˆ button_save_object: ä¿å­˜ %{object_name} button_edit_object: 编辑 %{object_name} button_delete_object: 删除 %{object_name} text_setting_config_change: 您å¯ä»¥åœ¨ config/configuration.yml 中é…置此行为。请在编辑åŽé‡æ–°å¯åŠ¨åº”ç”¨ç¨‹åºã€‚ label_bulk_edit: 批é‡ç¼–辑 button_create_and_follow: 创建并关注 label_subtask: å­ä»»åŠ¡ label_default_query: 默认查询 field_default_project_query: 默认项目查询 label_required_administrators: 管ç†å‘˜æ‰€éœ€ twofa_hint_required_administrators_html: 设置 %{label} 与 选用项 ç±»ä¼¼ï¼Œä½†ä¼šè¦æ±‚æ‰€æœ‰å…·æœ‰ç®¡ç†æƒé™çš„用户在下次登录时设置åŒå› ç´ èº«ä»½éªŒè¯ã€‚ label_auto_watch_on: 自动关注 label_auto_watch_on_issue_contributed_to: 我更新的问题 text_project_close_confirmation: 您确定è¦å…³é—­é¡¹ç›®â€œ%{value}â€å¹¶å°†å…¶è®¾ç½®ä¸ºåªè¯»å—? text_project_reopen_confirmation: 您确定è¦é‡æ–°æ‰“开项目“%{value}â€å—? text_project_archive_confirmation: 您确定è¦å½’档项目“%{value}â€å—? mail_destroy_project_failed: 无法删除项目 %{value}。 mail_destroy_project_successful: 项目 %{value} å·²æˆåŠŸåˆ é™¤ã€‚ mail_destroy_project_with_subprojects_successful: 项目 %{value} åŠå…¶å­é¡¹ç›®å·²æˆåŠŸåˆ é™¤ã€‚ project_status_scheduled_for_deletion: 计划删除 text_projects_bulk_destroy_confirmation: 您确定è¦åˆ é™¤æ‰€é€‰çš„项目åŠå…¶ç›¸å…³æ•°æ®å—? text_projects_bulk_destroy_head: | 您å³å°†æ°¸ä¹…删除以下项目,包括å¯èƒ½çš„å­é¡¹ç›®å’Œæ‰€æœ‰ç›¸å…³æ•°æ®ã€‚ 请仔细查看下é¢çš„ä¿¡æ¯ï¼Œå¹¶ç¡®è®¤è¿™ç¡®å®žæ˜¯æ‚¨è¦æ‰§è¡Œçš„æ“ä½œã€‚ æ­¤æ“作无法撤销。 text_projects_bulk_destroy_confirm: 请在以下方框中输入 "%{yes}",以确认æ“作。 text_subprojects_bulk_destroy: '包括其å­é¡¹ç›®ï¼š%{value}' field_current_password: 当å‰å¯†ç  sudo_mode_new_info_html: "å‘生了什么? åœ¨æ‰§è¡Œä»»ä½•ç®¡ç†æ“作之å‰ï¼Œæ‚¨éœ€è¦é‡æ–°ç¡®è®¤å¯†ç ï¼Œä»¥ç¡®ä¿æ‚¨çš„叿ˆ·å®‰å…¨ã€‚" label_edited: 已编辑 label_time_by_author: "%{time},作者:%{author}" field_default_time_entry_activity: 默认记录时间活动 field_is_member_of_group: 所属组 text_users_bulk_destroy_head: 您å³å°†åˆ é™¤ä»¥ä¸‹ç”¨æˆ·å¹¶åˆ é™¤æ‰€æœ‰ä¸Žä¹‹ç›¸å…³çš„引用。此æ“作无法撤销。通常,é”å®šç”¨æˆ·è€Œä¸æ˜¯åˆ é™¤ç”¨æˆ·æ˜¯æ›´å¥½çš„解决方案。 text_users_bulk_destroy_confirm: 请在下é¢è¾“å…¥ "%{yes}",以确认æ“作。 permission_select_project_publicity: è®¾ç½®é¡¹ç›®ä¸ºå…¬å¼€æˆ–ç§æœ‰ label_auto_watch_on_issue_created: 我创建的问题 field_any_searchable: ä»»æ„坿œç´¢çš„æ–‡æœ¬ label_contains_any_of: 包å«ä»¥ä¸‹ä»»æ„项之一 button_apply_issues_filter: 应用问题筛选器 label_view_previous_annotation: 查看此更改å‰çš„æ³¨é‡Š label_has_been: ç›®å‰/æ›¾ç»æ˜¯ label_has_never_been: 从未是 label_changed_from: å˜æ›´è‡ª label_issue_statuses_description: é—®é¢˜çŠ¶æ€æè¿° label_open_issue_statuses_description: æŸ¥çœ‹å…¨éƒ¨é—®é¢˜çŠ¶æ€æè¿° text_select_apply_issue_status: é€‰æ‹©é—®é¢˜çŠ¶æ€ field_name_or_email_or_login: å§“åã€ç”µå­é‚®ä»¶æˆ–登录å text_default_active_job_queue_changed: 仅适用于开å‘/测试环境的默认队列适é…å™¨å·²æ”¹å˜ label_option_auto_lang: auto label_issue_attachment_added: Attachment added field_estimated_remaining_hours: Estimated remaining time field_last_activity_date: Last activity setting_issue_done_ratio_interval: Done ratio options interval setting_copy_attachments_on_issue_copy: Copy attachments on copy field_thousands_delimiter: Thousands delimiter label_involved_principals: Author / Previous assignee label_attachment_summary: zero: "%{filename}" one: "%{filename} and 1 file" other: "%{filename} and %{count} files" redmine-6.0.5/config/routes.rb000066400000000000000000000476331500112024600162640ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Rails.application.routes.draw do root :to => 'welcome#index', :as => 'home' match 'login', :to => 'account#login', :as => 'signin', :via => [:get, :post] match 'logout', :to => 'account#logout', :as => 'signout', :via => [:get, :post] match 'account/twofa/confirm', :to => 'account#twofa_confirm', :via => :get match 'account/twofa/resend', :to => 'account#twofa_resend', :via => :post match 'account/twofa', :to => 'account#twofa', :via => [:get, :post] match 'account/register', :to => 'account#register', :via => [:get, :post], :as => 'register' match 'account/lost_password', :to => 'account#lost_password', :via => [:get, :post], :as => 'lost_password' match 'account/activate', :to => 'account#activate', :via => :get get 'account/activation_email', :to => 'account#activation_email', :as => 'activation_email' match '/news/preview', :controller => 'previews', :action => 'news', :as => 'preview_news', :via => [:get, :post, :put, :patch] match '/issues/preview', :to => 'previews#issue', :as => 'preview_issue', :via => [:get, :post, :put, :patch] match '/preview/text', :to => 'previews#text', :as => 'preview_text', :via => [:get, :post, :put, :patch] match 'projects/:id/wiki/destroy', :to => 'wikis#destroy', :via => [:get, :post] match 'boards/:board_id/topics/new', :to => 'messages#new', :via => [:get, :post], :as => 'new_board_message' get 'boards/:board_id/topics/:id', :to => 'messages#show', :as => 'board_message' match 'boards/:board_id/topics/quote/:id', :to => 'messages#quote', :via => [:get, :post] get 'boards/:board_id/topics/:id/edit', :to => 'messages#edit' post 'boards/:board_id/topics/preview', :to => 'messages#preview', :as => 'preview_board_message' post 'boards/:board_id/topics/:id/replies', :to => 'messages#reply' post 'boards/:board_id/topics/:id/edit', :to => 'messages#edit' post 'boards/:board_id/topics/:id/destroy', :to => 'messages#destroy' # Auto complete routes match '/issues/auto_complete', :to => 'auto_completes#issues', :via => :get, :as => 'auto_complete_issues' match '/wiki_pages/auto_complete', :to => 'auto_completes#wiki_pages', :via => :get, :as => 'auto_complete_wiki_pages' # Misc issue routes. TODO: move into resources match '/issues/context_menu', :to => 'context_menus#issues', :as => 'issues_context_menu', :via => [:get, :post] match '/issues/changes', :to => 'journals#index', :as => 'issue_changes', :via => :get match '/issues/:id/quoted', :to => 'journals#new', :id => /\d+/, :via => :post, :as => 'quoted_issue' resources :journals, :only => [:edit, :update] do member do get 'diff' end end get '/projects/:project_id/issues/gantt', :to => 'gantts#show', :as => 'project_gantt' get '/issues/gantt', :to => 'gantts#show' get '/projects/:project_id/issues/calendar', :to => 'calendars#show', :as => 'project_calendar' get '/issues/calendar', :to => 'calendars#show' get 'projects/:id/issues/report', :to => 'reports#issue_report', :as => 'project_issues_report' get 'projects/:id/issues/report/:detail', :to => 'reports#issue_report_details', :as => 'project_issues_report_details' get '/issues/imports/new', :to => 'imports#new', :defaults => {:type => 'IssueImport'}, :as => 'new_issues_import' get '/time_entries/imports/new', :to => 'imports#new', :defaults => {:type => 'TimeEntryImport'}, :as => 'new_time_entries_import' get '/users/imports/new', :to => 'imports#new', :defaults => {:type => 'UserImport'}, :as => 'new_users_import' post '/imports', :to => 'imports#create', :as => 'imports' get '/imports/:id', :to => 'imports#show', :as => 'import' match '/imports/:id/settings', :to => 'imports#settings', :via => [:get, :post], :as => 'import_settings' match '/imports/:id/mapping', :to => 'imports#mapping', :via => [:get, :post], :as => 'import_mapping' match '/imports/:id/run', :to => 'imports#run', :via => [:get, :post], :as => 'import_run' match 'my/account', :controller => 'my', :action => 'account', :via => [:get, :put] match 'my/account/destroy', :controller => 'my', :action => 'destroy', :via => [:get, :post], :as => :delete_my_account match 'my/page', :controller => 'my', :action => 'page', :via => :get post 'my/page', :to => 'my#update_page' match 'my', :controller => 'my', :action => 'index', :via => :get # Redirects to my/page get 'my/api_key', :to => 'my#show_api_key', :as => 'my_api_key' post 'my/api_key', :to => 'my#reset_api_key' post 'my/atom_key', :to => 'my#reset_atom_key', :as => 'my_atom_key' match 'my/password', :controller => 'my', :action => 'password', :via => [:get, :post] match 'my/add_block', :controller => 'my', :action => 'add_block', :via => :post match 'my/remove_block', :controller => 'my', :action => 'remove_block', :via => :post match 'my/order_blocks', :controller => 'my', :action => 'order_blocks', :via => :post match 'my/twofa/activate/init', :controller => 'twofa', :action => 'activate_init', :via => :post match 'my/twofa/:scheme/activate/init', :controller => 'twofa', :action => 'activate_init', :via => :post match 'my/twofa/:scheme/activate/confirm', :controller => 'twofa', :action => 'activate_confirm', :via => :get match 'my/twofa/:scheme/activate', :controller => 'twofa', :action => 'activate', :via => [:get, :post] match 'my/twofa/:scheme/deactivate/init', :controller => 'twofa', :action => 'deactivate_init', :via => :post match 'my/twofa/:scheme/deactivate/confirm', :controller => 'twofa', :action => 'deactivate_confirm', :via => :get match 'my/twofa/:scheme/deactivate', :controller => 'twofa', :action => 'deactivate', :via => [:get, :post] match 'my/twofa/select_scheme', :controller => 'twofa', :action => 'select_scheme', :via => :get match 'my/twofa/backup_codes/init', :controller => 'twofa_backup_codes', :action => 'init', :via => :post match 'my/twofa/backup_codes/confirm', :controller => 'twofa_backup_codes', :action => 'confirm', :via => :get match 'my/twofa/backup_codes/create', :controller => 'twofa_backup_codes', :action => 'create', :via => [:get, :post] match 'my/twofa/backup_codes', :controller => 'twofa_backup_codes', :action => 'show', :via => [:get] match 'users/:user_id/twofa/deactivate', :controller => 'twofa', :action => 'admin_deactivate', :via => :post match '/users/context_menu', to: 'context_menus#users', as: :users_context_menu, via: [:get, :post] resources :users do collection do delete 'bulk_destroy' post :bulk_lock post :bulk_unlock end resources :memberships, :controller => 'principal_memberships' resources :email_addresses, :only => [:index, :create, :update, :destroy] end post 'watchers/watch', :to => 'watchers#watch', :as => 'watch' delete 'watchers/watch', :to => 'watchers#unwatch' get 'watchers/new', :to => 'watchers#new', :as => 'new_watchers' post 'watchers', :to => 'watchers#create' post 'watchers/append', :to => 'watchers#append' delete 'watchers', :to => 'watchers#destroy' get 'watchers/autocomplete_for_mention', to: 'watchers#autocomplete_for_mention', via: [:get] get 'watchers/autocomplete_for_user', :to => 'watchers#autocomplete_for_user' # Specific routes for issue watchers API post 'issues/:object_id/watchers', :to => 'watchers#create', :object_type => 'issue' delete 'issues/:object_id/watchers/:user_id' => 'watchers#destroy', :object_type => 'issue' resources :projects do collection do get 'autocomplete' delete 'bulk_destroy' end member do get 'settings(/:tab)', :action => 'settings', :as => 'settings' match 'archive', :via => [:post, :put] match 'unarchive', :via => [:post, :put] match 'close', :via => [:post, :put] match 'reopen', :via => [:post, :put] match 'copy', :via => [:get, :post] match 'bookmark', :via => [:delete, :post] end shallow do resources :memberships, :controller => 'members' do collection do get 'autocomplete' end end end resource :enumerations, :controller => 'project_enumerations', :only => [:update, :destroy] get 'issues/:copy_from/copy', :to => 'issues#new', :as => 'copy_issue' resources :issues, :only => [:index, :new, :create] # Used when updating the form of a new issue post 'issues/new', :to => 'issues#new' resources :files, :only => [:index, :new, :create] resources :versions, :except => [:index, :show, :edit, :update, :destroy] do collection do put 'close_completed' end end get 'versions.:format', :to => 'versions#index' get 'roadmap', :to => 'versions#index', :format => false get 'versions', :to => 'versions#index' resources :news, :except => [:show, :edit, :update, :destroy] resources :time_entries, :controller => 'timelog', :except => [:show, :edit, :update, :destroy] do get 'report', :on => :collection end resources :queries, :only => [:new, :create] shallow do resources :issue_categories end resources :documents, :except => [:show, :edit, :update, :destroy] resources :boards shallow do resources :repositories, :except => [:index, :show] do member do match 'committers', :via => [:get, :post] end end end match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get resources :wiki, :except => [:index, :create], :as => 'wiki_page' do member do get 'rename' post 'rename' get 'history' get 'diff' match 'preview', :via => [:post, :put, :patch] post 'protect' post 'add_attachment' end collection do get 'export' get 'date_index' post 'new' end end match 'wiki', :controller => 'wiki', :action => 'show', :via => :get get 'wiki/:id/:version', :to => 'wiki#show', :constraints => {:version => /\d+/} delete 'wiki/:id/:version', :to => 'wiki#destroy_version' get 'wiki/:id/:version/annotate', :to => 'wiki#annotate' get 'wiki/:id/:version/diff', :to => 'wiki#diff' end resources :issues do member do # Used when updating the form of an existing issue patch 'edit', :to => 'issues#edit' get 'tab/:name', :action => 'issue_tab', :as => 'tab' end collection do match 'bulk_edit', :via => [:get, :post] match 'bulk_update', :via => [:post, :patch] end resources :time_entries, :controller => 'timelog', :only => [:new, :create] shallow do resources :relations, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy] end end # Used when updating the form of a new issue outside a project post '/issues/new', :to => 'issues#new' match '/issues', :controller => 'issues', :action => 'destroy', :via => :delete resources :queries, :except => [:show] get '/queries/filter', :to => 'queries#filter', :as => 'queries_filter' resources :news, :only => [:index, :show, :edit, :update, :destroy, :create, :new] match '/news/:id/comments', :to => 'comments#create', :via => :post match '/news/:id/comments/:comment_id', :to => 'comments#destroy', :via => :delete resources :versions, :only => [:show, :edit, :update, :destroy] do post 'status_by', :on => :member end resources :documents, :only => [:show, :edit, :update, :destroy] do post 'add_attachment', :on => :member end match '/time_entries/context_menu', :to => 'context_menus#time_entries', :as => :time_entries_context_menu, :via => [:get, :post] resources :time_entries, :controller => 'timelog', :except => :destroy do member do # Used when updating the edit form of an existing time entry patch 'edit', :to => 'timelog#edit' end collection do get 'report' get 'bulk_edit' post 'bulk_update' end end match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/ # TODO: delete /time_entries for bulk deletion match '/time_entries/destroy', :to => 'timelog#destroy', :via => :delete # Used to update the new time entry form post '/time_entries/new', :to => 'timelog#new' # Used to update the bulk edit time entry form post '/time_entries/bulk_edit', :to => 'timelog#bulk_edit' get 'projects/:id/activity', :to => 'activities#index', :as => :project_activity get 'activity', :to => 'activities#index' # repositories routes get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats' get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph' post 'projects/:id/repository/:repository_id/fetch_changesets', :to => 'repositories#fetch_changesets' get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision' get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision' post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue' delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue' get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions' %w(browse show entry raw annotate).each do |action| get "projects/:id/repository/:repository_id/revisions/:rev/#{action}(/*path)", :controller => 'repositories', :action => action, :format => 'html', :constraints => {:rev => /[a-z0-9\.\-_]+/, :path => /.*/} end %w(browse entry raw changes annotate).each do |action| get "projects/:id/repository/:repository_id/#{action}(/*path)", :controller => 'repositories', :action => action, :format => 'html', :constraints => {:path => /.*/} end get "projects/:id/repository/:repository_id/revisions/:rev/diff(/*path)", :to => 'repositories#diff', :format => 'html', :constraints => {:rev => /[a-z0-9\.\-_]+/, :path => /.*/, :format => /(html|diff)/ } get "projects/:id/repository/:repository_id/diff(/*path)", :to => 'repositories#diff', :format => 'html', :constraints => {:path => /.*/, :format => /(html|diff)/ } get 'projects/:id/repository/:repository_id/show/*path', :to => 'repositories#show', :format => 'html', :constraints => {:path => /.*/} get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil get 'projects/:id/repository', :to => 'repositories#show', :path => nil # additional routes for having the file name at the end of url get 'attachments/:id/:filename', :to => 'attachments#show', :id => /\d+/, :filename => /.*/, :as => 'named_attachment', :format => 'html' get 'attachments/download/:id/:filename', :to => 'attachments#download', :id => /\d+/, :filename => /.*/, :as => 'download_named_attachment', :format => 'html' get 'attachments/download/:id', :to => 'attachments#download', :id => /\d+/ get 'attachments/thumbnail/:id(/:size)', :to => 'attachments#thumbnail', :id => /\d+/, :size => /\d+/, :as => 'thumbnail' resources :attachments, :only => [:show, :update, :destroy] # register plugin object types with ObjectTypeConstraint.register_object_type(PluginModel.name.underscore.pluralize') constraints Redmine::Acts::Attachable::ObjectTypeConstraint do get 'attachments/:object_type/:object_id/edit', :to => 'attachments#edit_all', :as => :object_attachments_edit patch 'attachments/:object_type/:object_id', :to => 'attachments#update_all', :as => :object_attachments get 'attachments/:object_type/:object_id/download', :to => 'attachments#download_all', :as => :object_attachments_download end resources :groups do resources :memberships, :controller => 'principal_memberships' member do get 'autocomplete_for_user' end end get 'groups/:id/users/new', :to => 'groups#new_users', :id => /\d+/, :as => 'new_group_users' post 'groups/:id/users', :to => 'groups#add_users', :id => /\d+/, :as => 'group_users' delete 'groups/:id/users/:user_id', :to => 'groups#remove_user', :id => /\d+/, :as => 'group_user' resources :trackers, :except => :show do collection do match 'fields', :via => [:get, :post] end end resources :issue_statuses, :except => :show do collection do post 'update_issue_done_ratio' end end resources :custom_fields, :except => :show do resources :enumerations, :controller => 'custom_field_enumerations', :except => [:show, :new, :edit] put 'enumerations', :to => 'custom_field_enumerations#update_each' end resources :roles do collection do get 'permissions' post 'permissions', :to => 'roles#update_permissions' end end resources :enumerations, :except => :show match 'enumerations/:type', :to => 'enumerations#index', :via => :get get '(projects/:id)/search', :controller => 'search', :action => 'index', :as => 'search' get 'mail_handler', :to => 'mail_handler#new' post 'mail_handler', :to => 'mail_handler#index' get 'admin', :to => 'admin#index' get 'admin/projects', :to => 'admin#projects' get 'admin/plugins', :to => 'admin#plugins' get 'admin/info', :to => 'admin#info' post 'admin/test_email', :to => 'admin#test_email', :as => 'test_email' post 'admin/default_configuration', :to => 'admin#default_configuration' match '/admin/projects_context_menu', :to => 'context_menus#projects', :as => 'projects_context_menu', :via => [:get, :post] resources :auth_sources do member do get 'test_connection', :as => 'try_connection' end collection do get 'autocomplete_for_new_user' end end resources :workflows, only: [:index] do collection do get 'edit' patch 'update' get 'permissions' patch 'update_permissions' get 'copy' post 'duplicate' end end match 'settings', :controller => 'settings', :action => 'index', :via => :get match 'settings/edit', :controller => 'settings', :action => 'edit', :via => [:get, :post] match 'settings/plugin/:id', :controller => 'settings', :action => 'plugin', :via => [:get, :post], :as => 'plugin_settings' match 'sys/projects', :to => 'sys#projects', :via => :get match 'sys/projects/:id/repository', :to => 'sys#create_project_repository', :via => :post match 'sys/fetch_changesets', :to => 'sys#fetch_changesets', :via => [:get, :post] match 'uploads', :to => 'attachments#upload', :via => :post get 'robots.:format', :to => 'welcome#robots', :constraints => {:format => 'txt'} get 'help/wiki_syntax/(:type)', :controller => 'help', :action => 'show_wiki_syntax', :constraints => { :type => /detailed/ }, :as => 'help_wiki_syntax' get 'help/code_highlighting', :controller => 'help', :action => 'show_code_highlighting', :as => 'help_code_highlighting' # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. # Can be used by load balancers and uptime monitors to verify that the app is live. get "up" => "rails/health#show", :as => :rails_health_check Redmine::Plugin.directory.glob("*/config/routes.rb").sort.each do |plugin_routes_path| instance_eval(plugin_routes_path.read, plugin_routes_path.to_s) rescue SyntaxError, StandardError => e plugin_name = plugin_routes_path.parent.parent.basename.to_s puts "An error occurred while loading the routes definition of #{plugin_name} plugin (#{plugin_routes_path}): #{e.message}." exit 1 end end redmine-6.0.5/config/settings.yml000066400000000000000000000165761500112024600170030ustar00rootroot00000000000000# Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # DO NOT MODIFY THIS FILE !!! # Settings can be defined through the application in Admin -> Settings app_title: default: Redmine welcome_text: default: |- Welcome to Redmine, an open-source, flexible project management software. Note: You can modify this message in the "Welcome text" setting (Administration > Settings > General). login_required: default: 0 security_notifications: 1 self_registration: default: '2' security_notifications: 1 show_custom_fields_on_registration: default: 1 lost_password: default: 1 security_notifications: 1 twofa: default: 1 security_notifications: 1 unsubscribe: default: 1 password_required_char_classes: serialized: true default: [] security_notifications: 1 password_min_length: format: int default: 8 security_notifications: 1 # Maximum password age in days password_max_age: format: int default: 0 security_notifications: 1 # Maximum number of additional email addresses per user max_additional_emails: format: int default: 5 email_domains_allowed: default: email_domains_denied: default: # Maximum lifetime of user sessions in minutes session_lifetime: format: int default: 0 security_notifications: 1 # User session timeout in minutes session_timeout: format: int default: 0 security_notifications: 1 attachment_max_size: format: int default: 5120 bulk_download_max_size: format: int default: 102400 attachment_extensions_allowed: default: attachment_extensions_denied: default: issues_export_limit: format: int default: 500 activity_days_default: format: int default: 10 per_page_options: default: '25,50,100' search_results_per_page: default: 10 mail_from: default: redmine@example.net plain_text_mail: default: 0 text_formatting: default: common_mark cache_formatted_text: default: 0 wiki_compression: default: "" default_language: default: en force_default_language_for_anonymous: default: 0 force_default_language_for_loggedin: default: 0 host_name: default: localhost:3000 protocol: default: http security_notifications: 1 feeds_limit: format: int default: 15 gantt_items_limit: format: int default: 500 gantt_months_limit: format: int default: 24 default_issue_query: default: '' # Maximum size of files that can be displayed # inline through the file viewer (in KB) file_max_size_displayed: format: int default: 512 diff_max_lines_displayed: format: int default: 1500 enabled_scm: serialized: true default: - Subversion - Mercurial - Cvs - Bazaar - Git security_notifications: 1 autofetch_changesets: default: 1 sys_api_enabled: default: 0 security_notifications: 1 sys_api_key: default: '' security_notifications: 1 commit_cross_project_ref: default: 0 commit_ref_keywords: default: 'refs,references,IssueID' commit_update_keywords: serialized: true default: [] commit_logtime_enabled: default: 0 commit_logtime_activity_id: format: int default: 0 # autologin duration in days # 0 means autologin is disabled autologin: format: int default: 0 # date format date_format: default: '' time_format: default: '' timespan_format: default: 'minutes' user_format: default: :firstname_lastname format: symbol cross_project_issue_relations: default: 0 # Enables subtasks to be in other projects cross_project_subtasks: default: 'tree' parent_issue_dates: default: 'derived' parent_issue_priority: default: 'derived' parent_issue_done_ratio: default: 'derived' link_copied_issue: default: 'ask' copy_attachments_on_issue_copy: default: 'ask' close_duplicate_issues: default: 1 issue_group_assignment: default: 0 default_issue_start_date_to_creation_date: default: 1 notified_events: serialized: true default: - issue_added - issue_updated mail_handler_body_delimiters: default: '' mail_handler_enable_regex_delimiters: default: 0 mail_handler_enable_regex_excluded_filenames: default: 0 mail_handler_excluded_filenames: default: '' mail_handler_api_enabled: default: 0 security_notifications: 1 mail_handler_api_key: default: security_notifications: 1 mail_handler_preferred_body_part: default: plain issue_list_default_columns: serialized: true default: - tracker - status - priority - subject - assigned_to - updated_on issue_list_default_totals: serialized: true default: [] display_subprojects_issues: default: 1 time_entry_list_defaults: serialized: true default: column_names: - spent_on - user - activity - issue - comments - hours totalable_names: - hours project_list_display_type: default: board project_list_defaults: serialized: true default: column_names: - name - identifier - short_description default_project_query: default: '' issue_done_ratio: default: 'issue_field' issue_done_ratio_interval: format: int default: 10 default_projects_public: default: 1 default_projects_modules: serialized: true default: - issue_tracking - time_tracking - news - documents - files - wiki - repository - boards - calendar - gantt default_projects_tracker_ids: serialized: true default: # Role given to a non-admin user who creates a project new_project_user_role_id: format: int default: '' sequential_project_identifiers: default: 0 default_users_hide_mail: default: 1 default_users_no_self_notified: default: 1 default_users_time_zone: default: "" # encodings used to convert files content to UTF-8 # multiple values accepted, comma separated repositories_encodings: default: '' # encoding used to convert commit logs to UTF-8 commit_logs_encoding: default: 'UTF-8' commit_logs_formatting: default: 1 repository_log_display_limit: format: int default: 100 ui_theme: default: '' emails_footer: default: |- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://hostname/my/account gravatar_enabled: default: 0 gravatar_default: default: 'identicon' start_of_week: default: '' rest_api_enabled: default: 0 security_notifications: 1 jsonp_enabled: default: 0 security_notifications: 1 default_notification_option: default: 'only_assigned' emails_header: default: '' thumbnails_enabled: default: 1 thumbnails_size: format: int default: 100 non_working_week_days: serialized: true default: - '6' - '7' new_item_menu_tab: default: 2 timelog_required_fields: serialized: true default: [] timelog_accept_0_hours: default: 1 timelog_max_hours_per_day: format: int default: 999 timelog_accept_future_dates: default: 1 show_status_changes_in_mail_subject: default: 1 redmine-6.0.5/db/000077500000000000000000000000001500112024600135215ustar00rootroot00000000000000redmine-6.0.5/db/migrate/000077500000000000000000000000001500112024600151515ustar00rootroot00000000000000redmine-6.0.5/db/migrate/001_setup.rb000066400000000000000000000424151500112024600172240ustar00rootroot00000000000000# Redmine - project management software # Copyright (C) 2006 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Setup < ActiveRecord::Migration[4.2] class User < ActiveRecord::Base end # model removed class Permission < ActiveRecord::Base; end def self.up create_table "attachments", :force => true do |t| t.column "container_id", :integer, :default => 0, :null => false t.column "container_type", :string, :limit => 30, :default => "", :null => false t.column "filename", :string, :default => "", :null => false t.column "disk_filename", :string, :default => "", :null => false t.column "filesize", :integer, :default => 0, :null => false t.column "content_type", :string, :limit => 60, :default => "" t.column "digest", :string, :limit => 40, :default => "", :null => false t.column "downloads", :integer, :default => 0, :null => false t.column "author_id", :integer, :default => 0, :null => false t.column "created_on", :timestamp end create_table "auth_sources", :force => true do |t| t.column "type", :string, :limit => 30, :default => "", :null => false t.column "name", :string, :limit => 60, :default => "", :null => false t.column "host", :string, :limit => 60 t.column "port", :integer t.column "account", :string, :limit => 60 t.column "account_password", :string, :limit => 60 t.column "base_dn", :string, :limit => 255 t.column "attr_login", :string, :limit => 30 t.column "attr_firstname", :string, :limit => 30 t.column "attr_lastname", :string, :limit => 30 t.column "attr_mail", :string, :limit => 30 t.column "onthefly_register", :boolean, :default => false, :null => false end create_table "custom_fields", :force => true do |t| t.column "type", :string, :limit => 30, :default => "", :null => false t.column "name", :string, :limit => 30, :default => "", :null => false t.column "field_format", :string, :limit => 30, :default => "", :null => false t.column "possible_values", :text t.column "regexp", :string, :default => "" t.column "min_length", :integer, :default => 0, :null => false t.column "max_length", :integer, :default => 0, :null => false t.column "is_required", :boolean, :default => false, :null => false t.column "is_for_all", :boolean, :default => false, :null => false end create_table "custom_fields_projects", :id => false, :force => true do |t| t.column "custom_field_id", :integer, :default => 0, :null => false t.column "project_id", :integer, :default => 0, :null => false end create_table "custom_fields_trackers", :id => false, :force => true do |t| t.column "custom_field_id", :integer, :default => 0, :null => false t.column "tracker_id", :integer, :default => 0, :null => false end create_table "custom_values", :force => true do |t| t.column "customized_type", :string, :limit => 30, :default => "", :null => false t.column "customized_id", :integer, :default => 0, :null => false t.column "custom_field_id", :integer, :default => 0, :null => false t.column "value", :text end create_table "documents", :force => true do |t| t.column "project_id", :integer, :default => 0, :null => false t.column "category_id", :integer, :default => 0, :null => false t.column "title", :string, :limit => 60, :default => "", :null => false t.column "description", :text t.column "created_on", :timestamp end add_index "documents", ["project_id"], :name => "documents_project_id" create_table "enumerations", :force => true do |t| t.column "opt", :string, :limit => 4, :default => "", :null => false t.column "name", :string, :limit => 30, :default => "", :null => false end create_table "issue_categories", :force => true do |t| t.column "project_id", :integer, :default => 0, :null => false t.column "name", :string, :limit => 30, :default => "", :null => false end add_index "issue_categories", ["project_id"], :name => "issue_categories_project_id" create_table "issue_histories", :force => true do |t| t.column "issue_id", :integer, :default => 0, :null => false t.column "status_id", :integer, :default => 0, :null => false t.column "author_id", :integer, :default => 0, :null => false t.column "notes", :text t.column "created_on", :timestamp end add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id" create_table "issue_statuses", :force => true do |t| t.column "name", :string, :limit => 30, :default => "", :null => false t.column "is_closed", :boolean, :default => false, :null => false t.column "is_default", :boolean, :default => false, :null => false t.column "html_color", :string, :limit => 6, :default => "FFFFFF", :null => false end create_table "issues", :force => true do |t| t.column "tracker_id", :integer, :default => 0, :null => false t.column "project_id", :integer, :default => 0, :null => false t.column "subject", :string, :default => "", :null => false t.column "description", :text t.column "due_date", :date t.column "category_id", :integer t.column "status_id", :integer, :default => 0, :null => false t.column "assigned_to_id", :integer t.column "priority_id", :integer, :default => 0, :null => false t.column "fixed_version_id", :integer t.column "author_id", :integer, :default => 0, :null => false t.column "lock_version", :integer, :default => 0, :null => false t.column "created_on", :timestamp t.column "updated_on", :timestamp end add_index "issues", ["project_id"], :name => "issues_project_id" create_table "members", :force => true do |t| t.column "user_id", :integer, :default => 0, :null => false t.column "project_id", :integer, :default => 0, :null => false t.column "role_id", :integer, :default => 0, :null => false t.column "created_on", :timestamp end create_table "news", :force => true do |t| t.column "project_id", :integer t.column "title", :string, :limit => 60, :default => "", :null => false t.column "summary", :string, :limit => 255, :default => "" t.column "description", :text t.column "author_id", :integer, :default => 0, :null => false t.column "created_on", :timestamp end add_index "news", ["project_id"], :name => "news_project_id" create_table "permissions", :force => true do |t| t.column "controller", :string, :limit => 30, :default => "", :null => false t.column "action", :string, :limit => 30, :default => "", :null => false t.column "description", :string, :limit => 60, :default => "", :null => false t.column "is_public", :boolean, :default => false, :null => false t.column "sort", :integer, :default => 0, :null => false t.column "mail_option", :boolean, :default => false, :null => false t.column "mail_enabled", :boolean, :default => false, :null => false end create_table "permissions_roles", :id => false, :force => true do |t| t.column "permission_id", :integer, :default => 0, :null => false t.column "role_id", :integer, :default => 0, :null => false end add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id" create_table "projects", :force => true do |t| t.column "name", :string, :limit => 30, :default => "", :null => false t.column "description", :string, :default => "", :null => false t.column "homepage", :string, :limit => 60, :default => "" t.column "is_public", :boolean, :default => true, :null => false t.column "parent_id", :integer t.column "projects_count", :integer, :default => 0 t.column "created_on", :timestamp t.column "updated_on", :timestamp end create_table "roles", :force => true do |t| t.column "name", :string, :limit => 30, :default => "", :null => false end create_table "tokens", :force => true do |t| t.column "user_id", :integer, :default => 0, :null => false t.column "action", :string, :limit => 30, :default => "", :null => false t.column "value", :string, :limit => 40, :default => "", :null => false t.column "created_on", :datetime, :null => false end create_table "trackers", :force => true do |t| t.column "name", :string, :limit => 30, :default => "", :null => false t.column "is_in_chlog", :boolean, :default => false, :null => false end create_table "users", :force => true do |t| t.column "login", :string, :limit => 30, :default => "", :null => false t.column "hashed_password", :string, :limit => 40, :default => "", :null => false t.column "firstname", :string, :limit => 30, :default => "", :null => false t.column "lastname", :string, :limit => 30, :default => "", :null => false t.column "mail", :string, :limit => 60, :default => "", :null => false t.column "mail_notification", :boolean, :default => true, :null => false t.column "admin", :boolean, :default => false, :null => false t.column "status", :integer, :default => 1, :null => false t.column "last_login_on", :datetime t.column "language", :string, :limit => 2, :default => "" t.column "auth_source_id", :integer t.column "created_on", :timestamp t.column "updated_on", :timestamp end create_table "versions", :force => true do |t| t.column "project_id", :integer, :default => 0, :null => false t.column "name", :string, :limit => 30, :default => "", :null => false t.column "description", :string, :default => "" t.column "effective_date", :date t.column "created_on", :timestamp t.column "updated_on", :timestamp end add_index "versions", ["project_id"], :name => "versions_project_id" create_table "workflows", :force => true do |t| t.column "tracker_id", :integer, :default => 0, :null => false t.column "old_status_id", :integer, :default => 0, :null => false t.column "new_status_id", :integer, :default => 0, :null => false t.column "role_id", :integer, :default => 0, :null => false end # project Permission.create :controller => "projects", :action => "show", :description => "label_overview", :sort => 100, :is_public => true Permission.create :controller => "projects", :action => "changelog", :description => "label_change_log", :sort => 105, :is_public => true Permission.create :controller => "reports", :action => "issue_report", :description => "label_report_plural", :sort => 110, :is_public => true Permission.create :controller => "projects", :action => "settings", :description => "label_settings", :sort => 150 Permission.create :controller => "projects", :action => "edit", :description => "button_edit", :sort => 151 # members Permission.create :controller => "projects", :action => "list_members", :description => "button_list", :sort => 200, :is_public => true Permission.create :controller => "projects", :action => "add_member", :description => "button_add", :sort => 220 Permission.create :controller => "members", :action => "edit", :description => "button_edit", :sort => 221 Permission.create :controller => "members", :action => "destroy", :description => "button_delete", :sort => 222 # versions Permission.create :controller => "projects", :action => "add_version", :description => "button_add", :sort => 320 Permission.create :controller => "versions", :action => "edit", :description => "button_edit", :sort => 321 Permission.create :controller => "versions", :action => "destroy", :description => "button_delete", :sort => 322 # issue categories Permission.create :controller => "projects", :action => "add_issue_category", :description => "button_add", :sort => 420 Permission.create :controller => "issue_categories", :action => "edit", :description => "button_edit", :sort => 421 Permission.create :controller => "issue_categories", :action => "destroy", :description => "button_delete", :sort => 422 # issues Permission.create :controller => "projects", :action => "list_issues", :description => "button_list", :sort => 1000, :is_public => true Permission.create :controller => "projects", :action => "export_issues_csv", :description => "label_export_csv", :sort => 1001, :is_public => true Permission.create :controller => "issues", :action => "show", :description => "button_view", :sort => 1005, :is_public => true Permission.create :controller => "issues", :action => "download", :description => "button_download", :sort => 1010, :is_public => true Permission.create :controller => "projects", :action => "add_issue", :description => "button_add", :sort => 1050, :mail_option => 1, :mail_enabled => 1 Permission.create :controller => "issues", :action => "edit", :description => "button_edit", :sort => 1055 Permission.create :controller => "issues", :action => "change_status", :description => "label_change_status", :sort => 1060, :mail_option => 1, :mail_enabled => 1 Permission.create :controller => "issues", :action => "destroy", :description => "button_delete", :sort => 1065 Permission.create :controller => "issues", :action => "add_attachment", :description => "label_attachment_new", :sort => 1070 Permission.create :controller => "issues", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1075 # news Permission.create :controller => "projects", :action => "list_news", :description => "button_list", :sort => 1100, :is_public => true Permission.create :controller => "news", :action => "show", :description => "button_view", :sort => 1101, :is_public => true Permission.create :controller => "projects", :action => "add_news", :description => "button_add", :sort => 1120 Permission.create :controller => "news", :action => "edit", :description => "button_edit", :sort => 1121 Permission.create :controller => "news", :action => "destroy", :description => "button_delete", :sort => 1122 # documents Permission.create :controller => "projects", :action => "list_documents", :description => "button_list", :sort => 1200, :is_public => true Permission.create :controller => "documents", :action => "show", :description => "button_view", :sort => 1201, :is_public => true Permission.create :controller => "documents", :action => "download", :description => "button_download", :sort => 1202, :is_public => true Permission.create :controller => "projects", :action => "add_document", :description => "button_add", :sort => 1220 Permission.create :controller => "documents", :action => "edit", :description => "button_edit", :sort => 1221 Permission.create :controller => "documents", :action => "destroy", :description => "button_delete", :sort => 1222 Permission.create :controller => "documents", :action => "add_attachment", :description => "label_attachment_new", :sort => 1223 Permission.create :controller => "documents", :action => "destroy_attachment", :description => "label_attachment_delete", :sort => 1224 # files Permission.create :controller => "projects", :action => "list_files", :description => "button_list", :sort => 1300, :is_public => true Permission.create :controller => "versions", :action => "download", :description => "button_download", :sort => 1301, :is_public => true Permission.create :controller => "projects", :action => "add_file", :description => "button_add", :sort => 1320 Permission.create :controller => "versions", :action => "destroy_file", :description => "button_delete", :sort => 1322 # create default administrator account user = User.new :firstname => "Redmine", :lastname => "Admin", :mail => "admin@example.net", :mail_notification => true, :status => 1 user.login = 'admin' user.hashed_password = "d033e22ae348aeb5660fc2140aec35850c4da997" user.admin = true user.save end def self.down drop_table :attachments drop_table :auth_sources drop_table :custom_fields drop_table :custom_fields_projects drop_table :custom_fields_trackers drop_table :custom_values drop_table :documents drop_table :enumerations drop_table :issue_categories drop_table :issue_histories drop_table :issue_statuses drop_table :issues drop_table :members drop_table :news drop_table :permissions drop_table :permissions_roles drop_table :projects drop_table :roles drop_table :trackers drop_table :tokens drop_table :users drop_table :versions drop_table :workflows end end redmine-6.0.5/db/migrate/002_issue_move.rb000066400000000000000000000006301500112024600202340ustar00rootroot00000000000000class IssueMove < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "move_issues", :description => "button_move", :sort => 1061, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'projects', 'move_issues').first.destroy end end redmine-6.0.5/db/migrate/003_issue_add_note.rb000066400000000000000000000006241500112024600210470ustar00rootroot00000000000000class IssueAddNote < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "issues", :action => "add_note", :description => "label_add_note", :sort => 1057, :mail_option => 1, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'issues', 'add_note').first.destroy end end redmine-6.0.5/db/migrate/004_export_pdf.rb000066400000000000000000000013121500112024600202300ustar00rootroot00000000000000class ExportPdf < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "export_issues_pdf", :description => "label_export_pdf", :sort => 1002, :is_public => true, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "issues", :action => "export_pdf", :description => "label_export_pdf", :sort => 1015, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'projects', 'export_issues_pdf').first.destroy Permission.where("controller=? and action=?", 'issues', 'export_pdf').first.destroy end end redmine-6.0.5/db/migrate/005_issue_start_date.rb000066400000000000000000000004511500112024600214240ustar00rootroot00000000000000class IssueStartDate < ActiveRecord::Migration[4.2] def self.up add_column :issues, :start_date, :date add_column :issues, :done_ratio, :integer, :default => 0, :null => false end def self.down remove_column :issues, :start_date remove_column :issues, :done_ratio end end redmine-6.0.5/db/migrate/006_calendar_and_activity.rb000066400000000000000000000016751500112024600224030ustar00rootroot00000000000000class CalendarAndActivity < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "activity", :description => "label_activity", :sort => 160, :is_public => true, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "projects", :action => "calendar", :description => "label_calendar", :sort => 165, :is_public => true, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "projects", :action => "gantt", :description => "label_gantt", :sort => 166, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'projects', 'activity').first.destroy Permission.where("controller=? and action=?", 'projects', 'calendar').first.destroy Permission.where("controller=? and action=?", 'projects', 'gantt').first.destroy end end redmine-6.0.5/db/migrate/007_create_journals.rb000066400000000000000000000044031500112024600212450ustar00rootroot00000000000000class CreateJournals < ActiveRecord::Migration[4.2] # model removed, but needed for data migration class IssueHistory < ActiveRecord::Base; belongs_to :issue; end # model removed class Permission < ActiveRecord::Base; end def self.up create_table :journals, :force => true do |t| t.column "journalized_id", :integer, :default => 0, :null => false t.column "journalized_type", :string, :limit => 30, :default => "", :null => false t.column "user_id", :integer, :default => 0, :null => false t.column "notes", :text t.column "created_on", :datetime, :null => false end create_table :journal_details, :force => true do |t| t.column "journal_id", :integer, :default => 0, :null => false t.column "property", :string, :limit => 30, :default => "", :null => false t.column "prop_key", :string, :limit => 30, :default => "", :null => false t.column "old_value", :string t.column "value", :string end # indexes add_index "journals", ["journalized_id", "journalized_type"], :name => "journals_journalized_id" add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id" Permission.create :controller => "issues", :action => "history", :description => "label_history", :sort => 1006, :is_public => true, :mail_option => 0, :mail_enabled => 0 # data migration IssueHistory.all.each {|h| j = Journal.new(:journalized => h.issue, :user_id => h.author_id, :notes => h.notes, :created_on => h.created_on) j.details << JournalDetail.new(:property => 'attr', :prop_key => 'status_id', :value => h.status_id) j.save } drop_table :issue_histories end def self.down drop_table :journal_details drop_table :journals create_table "issue_histories", :force => true do |t| t.column "issue_id", :integer, :default => 0, :null => false t.column "status_id", :integer, :default => 0, :null => false t.column "author_id", :integer, :default => 0, :null => false t.column "notes", :text, :default => "" t.column "created_on", :timestamp end add_index "issue_histories", ["issue_id"], :name => "issue_histories_issue_id" Permission.where("controller=? and action=?", 'issues', 'history').first.destroy end end redmine-6.0.5/db/migrate/008_create_user_preferences.rb000066400000000000000000000004361500112024600227520ustar00rootroot00000000000000class CreateUserPreferences < ActiveRecord::Migration[4.2] def self.up create_table :user_preferences do |t| t.column "user_id", :integer, :default => 0, :null => false t.column "others", :text end end def self.down drop_table :user_preferences end end redmine-6.0.5/db/migrate/009_add_hide_mail_pref.rb000066400000000000000000000003361500112024600216270ustar00rootroot00000000000000class AddHideMailPref < ActiveRecord::Migration[4.2] def self.up add_column :user_preferences, :hide_mail, :boolean, :default => false end def self.down remove_column :user_preferences, :hide_mail end end redmine-6.0.5/db/migrate/010_create_comments.rb000066400000000000000000000010211500112024600212200ustar00rootroot00000000000000class CreateComments < ActiveRecord::Migration[4.2] def self.up create_table :comments do |t| t.column :commented_type, :string, :limit => 30, :default => "", :null => false t.column :commented_id, :integer, :default => 0, :null => false t.column :author_id, :integer, :default => 0, :null => false t.column :comments, :text t.column :created_on, :datetime, :null => false t.column :updated_on, :datetime, :null => false end end def self.down drop_table :comments end end redmine-6.0.5/db/migrate/011_add_news_comments_count.rb000066400000000000000000000003411500112024600227560ustar00rootroot00000000000000class AddNewsCommentsCount < ActiveRecord::Migration[4.2] def self.up add_column :news, :comments_count, :integer, :default => 0, :null => false end def self.down remove_column :news, :comments_count end end redmine-6.0.5/db/migrate/012_add_comments_permissions.rb000066400000000000000000000013201500112024600231440ustar00rootroot00000000000000class AddCommentsPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "news", :action => "add_comment", :description => "label_comment_add", :sort => 1130, :is_public => false, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "news", :action => "destroy_comment", :description => "label_comment_delete", :sort => 1133, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'news', 'add_comment').first.destroy Permission.where("controller=? and action=?", 'news', 'destroy_comment').first.destroy end end redmine-6.0.5/db/migrate/013_create_queries.rb000066400000000000000000000007021500112024600210600ustar00rootroot00000000000000class CreateQueries < ActiveRecord::Migration[4.2] def self.up create_table :queries, :force => true do |t| t.column "project_id", :integer t.column "name", :string, :default => "", :null => false t.column "filters", :text t.column "user_id", :integer, :default => 0, :null => false t.column "is_public", :boolean, :default => false, :null => false end end def self.down drop_table :queries end end redmine-6.0.5/db/migrate/014_add_queries_permissions.rb000066400000000000000000000006661500112024600230120ustar00rootroot00000000000000class AddQueriesPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "add_query", :description => "button_create", :sort => 600, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'projects', 'add_query').first.destroy end end redmine-6.0.5/db/migrate/015_create_repositories.rb000066400000000000000000000005051500112024600221350ustar00rootroot00000000000000class CreateRepositories < ActiveRecord::Migration[4.2] def self.up create_table :repositories, :force => true do |t| t.column "project_id", :integer, :default => 0, :null => false t.column "url", :string, :default => "", :null => false end end def self.down drop_table :repositories end end redmine-6.0.5/db/migrate/016_add_repositories_permissions.rb000066400000000000000000000030231500112024600240540ustar00rootroot00000000000000class AddRepositoriesPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "repositories", :action => "show", :description => "button_view", :sort => 1450, :is_public => true Permission.create :controller => "repositories", :action => "browse", :description => "label_browse", :sort => 1460, :is_public => true Permission.create :controller => "repositories", :action => "entry", :description => "entry", :sort => 1462, :is_public => true Permission.create :controller => "repositories", :action => "revisions", :description => "label_view_revisions", :sort => 1470, :is_public => true Permission.create :controller => "repositories", :action => "revision", :description => "label_view_revisions", :sort => 1472, :is_public => true Permission.create :controller => "repositories", :action => "diff", :description => "diff", :sort => 1480, :is_public => true end def self.down Permission.where("controller=? and action=?", 'repositories', 'show').first.destroy Permission.where("controller=? and action=?", 'repositories', 'browse').first.destroy Permission.where("controller=? and action=?", 'repositories', 'entry').first.destroy Permission.where("controller=? and action=?", 'repositories', 'revisions').first.destroy Permission.where("controller=? and action=?", 'repositories', 'revision').first.destroy Permission.where("controller=? and action=?", 'repositories', 'diff').first.destroy end end redmine-6.0.5/db/migrate/017_create_settings.rb000066400000000000000000000010111500112024600212410ustar00rootroot00000000000000class CreateSettings < ActiveRecord::Migration[4.2] def self.up create_table :settings, :force => true do |t| t.column "name", :string, :limit => 30, :default => "", :null => false t.column "value", :text end # Persist default settings for new installations Setting.create!(name: 'default_notification_option', value: Setting.default_notification_option) Setting.create!(name: 'text_formatting', value: Setting.text_formatting) end def self.down drop_table :settings end end redmine-6.0.5/db/migrate/018_set_doc_and_files_notifications.rb000066400000000000000000000022321500112024600244420ustar00rootroot00000000000000class SetDocAndFilesNotifications < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.where(:controller => "projects", :action => "add_file").each {|p| p.update_attribute(:mail_option, true)} Permission.where(:controller => "projects", :action => "add_document").each {|p| p.update_attribute(:mail_option, true)} Permission.where(:controller => "documents", :action => "add_attachment").each {|p| p.update_attribute(:mail_option, true)} Permission.where(:controller => "issues", :action => "add_attachment").each {|p| p.update_attribute(:mail_option, true)} end def self.down Permission.where(:controller => "projects", :action => "add_file").each {|p| p.update_attribute(:mail_option, false)} Permission.where(:controller => "projects", :action => "add_document").each {|p| p.update_attribute(:mail_option, false)} Permission.where(:controller => "documents", :action => "add_attachment").each {|p| p.update_attribute(:mail_option, false)} Permission.where(:controller => "issues", :action => "add_attachment").each {|p| p.update_attribute(:mail_option, false)} end end redmine-6.0.5/db/migrate/019_add_issue_status_position.rb000066400000000000000000000004651500112024600233630ustar00rootroot00000000000000class AddIssueStatusPosition < ActiveRecord::Migration[4.2] def self.up add_column :issue_statuses, :position, :integer, :default => 1 IssueStatus.all.each_with_index {|status, i| status.update_attribute(:position, i+1)} end def self.down remove_column :issue_statuses, :position end end redmine-6.0.5/db/migrate/020_add_role_position.rb000066400000000000000000000004211500112024600215510ustar00rootroot00000000000000class AddRolePosition < ActiveRecord::Migration[4.2] def self.up add_column :roles, :position, :integer, :default => 1 Role.all.each_with_index {|role, i| role.update_attribute(:position, i+1)} end def self.down remove_column :roles, :position end end redmine-6.0.5/db/migrate/021_add_tracker_position.rb000066400000000000000000000004431500112024600222500ustar00rootroot00000000000000class AddTrackerPosition < ActiveRecord::Migration[4.2] def self.up add_column :trackers, :position, :integer, :default => 1 Tracker.all.each_with_index {|tracker, i| tracker.update_attribute(:position, i+1)} end def self.down remove_column :trackers, :position end end redmine-6.0.5/db/migrate/022_serialize_possibles_values.rb000066400000000000000000000004751500112024600235200ustar00rootroot00000000000000class SerializePossiblesValues < ActiveRecord::Migration[4.2] def self.up CustomField.all.each do |field| if field.possible_values and field.possible_values.is_a? String field.possible_values = field.possible_values.split('|') field.save end end end def self.down end end redmine-6.0.5/db/migrate/023_add_tracker_is_in_roadmap.rb000066400000000000000000000003531500112024600232120ustar00rootroot00000000000000class AddTrackerIsInRoadmap < ActiveRecord::Migration[4.2] def self.up add_column :trackers, :is_in_roadmap, :boolean, :default => true, :null => false end def self.down remove_column :trackers, :is_in_roadmap end end redmine-6.0.5/db/migrate/024_add_roadmap_permission.rb000066400000000000000000000006601500112024600225700ustar00rootroot00000000000000class AddRoadmapPermission < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "roadmap", :description => "label_roadmap", :sort => 107, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where("controller=? and action=?", 'projects', 'roadmap').first.destroy end end redmine-6.0.5/db/migrate/025_add_search_permission.rb000066400000000000000000000006601500112024600224130ustar00rootroot00000000000000class AddSearchPermission < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "search", :description => "label_search", :sort => 130, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "projects", :action => "search").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/026_add_repository_login_and_password.rb000066400000000000000000000005401500112024600250470ustar00rootroot00000000000000class AddRepositoryLoginAndPassword < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :login, :string, :limit => 60, :default => "" add_column :repositories, :password, :string, :limit => 60, :default => "" end def self.down remove_column :repositories, :login remove_column :repositories, :password end end redmine-6.0.5/db/migrate/027_create_wikis.rb000066400000000000000000000006241500112024600205410ustar00rootroot00000000000000class CreateWikis < ActiveRecord::Migration[4.2] def self.up create_table :wikis do |t| t.column :project_id, :integer, :null => false t.column :start_page, :string, :limit => 255, :null => false t.column :status, :integer, :default => 1, :null => false end add_index :wikis, :project_id, :name => :wikis_project_id end def self.down drop_table :wikis end end redmine-6.0.5/db/migrate/028_create_wiki_pages.rb000066400000000000000000000006431500112024600215370ustar00rootroot00000000000000class CreateWikiPages < ActiveRecord::Migration[4.2] def self.up create_table :wiki_pages do |t| t.column :wiki_id, :integer, :null => false t.column :title, :string, :limit => 255, :null => false t.column :created_on, :datetime, :null => false end add_index :wiki_pages, [:wiki_id, :title], :name => :wiki_pages_wiki_id_title end def self.down drop_table :wiki_pages end end redmine-6.0.5/db/migrate/029_create_wiki_contents.rb000066400000000000000000000021531500112024600222740ustar00rootroot00000000000000class CreateWikiContents < ActiveRecord::Migration[4.2] def self.up create_table :wiki_contents do |t| t.column :page_id, :integer, :null => false t.column :author_id, :integer t.column :text, :text t.column :comments, :string, :limit => 255, :default => "" t.column :updated_on, :datetime, :null => false t.column :version, :integer, :null => false end add_index :wiki_contents, :page_id, :name => :wiki_contents_page_id create_table :wiki_content_versions do |t| t.column :wiki_content_id, :integer, :null => false t.column :page_id, :integer, :null => false t.column :author_id, :integer t.column :data, :binary t.column :compression, :string, :limit => 6, :default => "" t.column :comments, :string, :limit => 255, :default => "" t.column :updated_on, :datetime, :null => false t.column :version, :integer, :null => false end add_index :wiki_content_versions, :wiki_content_id, :name => :wiki_content_versions_wcid end def self.down drop_table :wiki_contents drop_table :wiki_content_versions end end redmine-6.0.5/db/migrate/030_add_projects_feeds_permissions.rb000066400000000000000000000006731500112024600243300ustar00rootroot00000000000000class AddProjectsFeedsPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "projects", :action => "feeds", :description => "label_feed_plural", :sort => 132, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "projects", :action => "feeds").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/031_add_repository_root_url.rb000066400000000000000000000003441500112024600230360ustar00rootroot00000000000000class AddRepositoryRootUrl < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :root_url, :string, :limit => 255, :default => "" end def self.down remove_column :repositories, :root_url end end redmine-6.0.5/db/migrate/032_create_time_entries.rb000066400000000000000000000017131500112024600220760ustar00rootroot00000000000000class CreateTimeEntries < ActiveRecord::Migration[4.2] def self.up create_table :time_entries do |t| t.column :project_id, :integer, :null => false t.column :user_id, :integer, :null => false t.column :issue_id, :integer t.column :hours, :float, :null => false t.column :comments, :string, :limit => 255 t.column :activity_id, :integer, :null => false t.column :spent_on, :date, :null => false t.column :tyear, :integer, :null => false t.column :tmonth, :integer, :null => false t.column :tweek, :integer, :null => false t.column :created_on, :datetime, :null => false t.column :updated_on, :datetime, :null => false end add_index :time_entries, [:project_id], :name => :time_entries_project_id add_index :time_entries, [:issue_id], :name => :time_entries_issue_id end def self.down drop_table :time_entries end end redmine-6.0.5/db/migrate/033_add_timelog_permissions.rb000066400000000000000000000006611500112024600227710ustar00rootroot00000000000000class AddTimelogPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "timelog", :action => "edit", :description => "button_log_time", :sort => 1520, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "timelog", :action => "edit").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/034_create_changesets.rb000066400000000000000000000010101500112024600215230ustar00rootroot00000000000000class CreateChangesets < ActiveRecord::Migration[4.2] def self.up create_table :changesets do |t| t.column :repository_id, :integer, :null => false t.column :revision, :integer, :null => false t.column :committer, :string, :limit => 30 t.column :committed_on, :datetime, :null => false t.column :comments, :text end add_index :changesets, [:repository_id, :revision], :unique => true, :name => :changesets_repos_rev end def self.down drop_table :changesets end end redmine-6.0.5/db/migrate/035_create_changes.rb000066400000000000000000000007741500112024600210300ustar00rootroot00000000000000class CreateChanges < ActiveRecord::Migration[4.2] def self.up create_table :changes do |t| t.column :changeset_id, :integer, :null => false t.column :action, :string, :limit => 1, :default => "", :null => false t.column :path, :string, :default => "", :null => false t.column :from_path, :string t.column :from_revision, :integer end add_index :changes, [:changeset_id], :name => :changesets_changeset_id end def self.down drop_table :changes end end redmine-6.0.5/db/migrate/036_add_changeset_commit_date.rb000066400000000000000000000003751500112024600232110ustar00rootroot00000000000000class AddChangesetCommitDate < ActiveRecord::Migration[4.2] def self.up add_column :changesets, :commit_date, :date Changeset.update_all "commit_date = committed_on" end def self.down remove_column :changesets, :commit_date end end redmine-6.0.5/db/migrate/037_add_project_identifier.rb000066400000000000000000000003171500112024600225500ustar00rootroot00000000000000class AddProjectIdentifier < ActiveRecord::Migration[4.2] def self.up add_column :projects, :identifier, :string, :limit => 20 end def self.down remove_column :projects, :identifier end end redmine-6.0.5/db/migrate/038_add_custom_field_is_filter.rb000066400000000000000000000003571500112024600234220ustar00rootroot00000000000000class AddCustomFieldIsFilter < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :is_filter, :boolean, :null => false, :default => false end def self.down remove_column :custom_fields, :is_filter end end redmine-6.0.5/db/migrate/039_create_watchers.rb000066400000000000000000000005261500112024600212370ustar00rootroot00000000000000class CreateWatchers < ActiveRecord::Migration[4.2] def self.up create_table :watchers do |t| t.column :watchable_type, :string, :default => "", :null => false t.column :watchable_id, :integer, :default => 0, :null => false t.column :user_id, :integer end end def self.down drop_table :watchers end end redmine-6.0.5/db/migrate/040_create_changesets_issues.rb000066400000000000000000000006471500112024600231320ustar00rootroot00000000000000class CreateChangesetsIssues < ActiveRecord::Migration[4.2] def self.up create_table :changesets_issues, :id => false do |t| t.column :changeset_id, :integer, :null => false t.column :issue_id, :integer, :null => false end add_index :changesets_issues, [:changeset_id, :issue_id], :unique => true, :name => :changesets_issues_ids end def self.down drop_table :changesets_issues end end redmine-6.0.5/db/migrate/041_rename_comment_to_comments.rb000066400000000000000000000016201500112024600234610ustar00rootroot00000000000000class RenameCommentToComments < ActiveRecord::Migration[4.2] def self.up rename_column(:comments, :comment, :comments) if ActiveRecord::Base.connection.columns(Comment.table_name).detect{|c| c.name == "comment"} rename_column(:wiki_contents, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContent.table_name).detect{|c| c.name == "comment"} rename_column(:wiki_content_versions, :comment, :comments) if ActiveRecord::Base.connection.columns(WikiContentVersion.table_name).detect{|c| c.name == "comment"} rename_column(:time_entries, :comment, :comments) if ActiveRecord::Base.connection.columns(TimeEntry.table_name).detect{|c| c.name == "comment"} rename_column(:changesets, :comment, :comments) if ActiveRecord::Base.connection.columns(Changeset.table_name).detect{|c| c.name == "comment"} end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/042_create_issue_relations.rb000066400000000000000000000006171500112024600226220ustar00rootroot00000000000000class CreateIssueRelations < ActiveRecord::Migration[4.2] def self.up create_table :issue_relations do |t| t.column :issue_from_id, :integer, :null => false t.column :issue_to_id, :integer, :null => false t.column :relation_type, :string, :default => "", :null => false t.column :delay, :integer end end def self.down drop_table :issue_relations end end redmine-6.0.5/db/migrate/043_add_relations_permissions.rb000066400000000000000000000013471500112024600233340ustar00rootroot00000000000000class AddRelationsPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "issue_relations", :action => "new", :description => "label_relation_new", :sort => 1080, :is_public => false, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "issue_relations", :action => "destroy", :description => "label_relation_delete", :sort => 1085, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "issue_relations", :action => "new").each {|p| p.destroy} Permission.where(:controller => "issue_relations", :action => "destroy").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/044_set_language_length_to_five.rb000066400000000000000000000003441500112024600236000ustar00rootroot00000000000000class SetLanguageLengthToFive < ActiveRecord::Migration[4.2] def self.up change_column :users, :language, :string, :limit => 5, :default => "" end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/045_create_boards.rb000066400000000000000000000011441500112024600206630ustar00rootroot00000000000000class CreateBoards < ActiveRecord::Migration[4.2] def self.up create_table :boards do |t| t.column :project_id, :integer, :null => false t.column :name, :string, :default => "", :null => false t.column :description, :string t.column :position, :integer, :default => 1 t.column :topics_count, :integer, :default => 0, :null => false t.column :messages_count, :integer, :default => 0, :null => false t.column :last_message_id, :integer end add_index :boards, [:project_id], :name => :boards_project_id end def self.down drop_table :boards end end redmine-6.0.5/db/migrate/046_create_messages.rb000066400000000000000000000013421500112024600212210ustar00rootroot00000000000000class CreateMessages < ActiveRecord::Migration[4.2] def self.up create_table :messages do |t| t.column :board_id, :integer, :null => false t.column :parent_id, :integer t.column :subject, :string, :default => "", :null => false t.column :content, :text t.column :author_id, :integer t.column :replies_count, :integer, :default => 0, :null => false t.column :last_reply_id, :integer t.column :created_on, :datetime, :null => false t.column :updated_on, :datetime, :null => false end add_index :messages, [:board_id], :name => :messages_board_id add_index :messages, [:parent_id], :name => :messages_parent_id end def self.down drop_table :messages end end redmine-6.0.5/db/migrate/047_add_boards_permissions.rb000066400000000000000000000016611500112024600226110ustar00rootroot00000000000000class AddBoardsPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => "boards", :action => "new", :description => "button_add", :sort => 2000, :is_public => false, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "boards", :action => "edit", :description => "button_edit", :sort => 2005, :is_public => false, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => "boards", :action => "destroy", :description => "button_delete", :sort => 2010, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "boards", :action => "new").each {|p| p.destroy} Permission.where(:controller => "boards", :action => "edit").each {|p| p.destroy} Permission.where(:controller => "boards", :action => "destroy").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/048_allow_null_version_effective_date.rb000066400000000000000000000003641500112024600250260ustar00rootroot00000000000000class AllowNullVersionEffectiveDate < ActiveRecord::Migration[4.2] def self.up change_column :versions, :effective_date, :date, :default => nil, :null => true end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/049_add_wiki_destroy_page_permission.rb000066400000000000000000000006661500112024600246720ustar00rootroot00000000000000class AddWikiDestroyPagePermission < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => 'wiki', :action => 'destroy', :description => 'button_delete', :sort => 1740, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "wiki", :action => "destroy").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/050_add_wiki_attachments_permissions.rb000066400000000000000000000013611500112024600246640ustar00rootroot00000000000000class AddWikiAttachmentsPermissions < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => 'wiki', :action => 'add_attachment', :description => 'label_attachment_new', :sort => 1750, :is_public => false, :mail_option => 0, :mail_enabled => 0 Permission.create :controller => 'wiki', :action => 'destroy_attachment', :description => 'label_attachment_delete', :sort => 1755, :is_public => false, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "wiki", :action => "add_attachment").each {|p| p.destroy} Permission.where(:controller => "wiki", :action => "destroy_attachment").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/051_add_project_status.rb000066400000000000000000000003251500112024600217440ustar00rootroot00000000000000class AddProjectStatus < ActiveRecord::Migration[4.2] def self.up add_column :projects, :status, :integer, :default => 1, :null => false end def self.down remove_column :projects, :status end end redmine-6.0.5/db/migrate/052_add_changes_revision.rb000066400000000000000000000002711500112024600222220ustar00rootroot00000000000000class AddChangesRevision < ActiveRecord::Migration[4.2] def self.up add_column :changes, :revision, :string end def self.down remove_column :changes, :revision end end redmine-6.0.5/db/migrate/053_add_changes_branch.rb000066400000000000000000000002631500112024600216230ustar00rootroot00000000000000class AddChangesBranch < ActiveRecord::Migration[4.2] def self.up add_column :changes, :branch, :string end def self.down remove_column :changes, :branch end end redmine-6.0.5/db/migrate/054_add_changesets_scmid.rb000066400000000000000000000002711500112024600222010ustar00rootroot00000000000000class AddChangesetsScmid < ActiveRecord::Migration[4.2] def self.up add_column :changesets, :scmid, :string end def self.down remove_column :changesets, :scmid end end redmine-6.0.5/db/migrate/055_add_repositories_type.rb000066400000000000000000000004371500112024600224730ustar00rootroot00000000000000class AddRepositoriesType < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :type, :string # Set class name for existing SVN repositories Repository.update_all "type = 'Subversion'" end def self.down remove_column :repositories, :type end end redmine-6.0.5/db/migrate/056_add_repositories_changes_permission.rb000066400000000000000000000007171500112024600253740ustar00rootroot00000000000000class AddRepositoriesChangesPermission < ActiveRecord::Migration[4.2] # model removed class Permission < ActiveRecord::Base; end def self.up Permission.create :controller => 'repositories', :action => 'changes', :description => 'label_change_plural', :sort => 1475, :is_public => true, :mail_option => 0, :mail_enabled => 0 end def self.down Permission.where(:controller => "repositories", :action => "changes").each {|p| p.destroy} end end redmine-6.0.5/db/migrate/057_add_versions_wiki_page_title.rb000066400000000000000000000003171500112024600237720ustar00rootroot00000000000000class AddVersionsWikiPageTitle < ActiveRecord::Migration[4.2] def self.up add_column :versions, :wiki_page_title, :string end def self.down remove_column :versions, :wiki_page_title end end redmine-6.0.5/db/migrate/058_add_issue_categories_assigned_to_id.rb000066400000000000000000000003441500112024600252730ustar00rootroot00000000000000class AddIssueCategoriesAssignedToId < ActiveRecord::Migration[4.2] def self.up add_column :issue_categories, :assigned_to_id, :integer end def self.down remove_column :issue_categories, :assigned_to_id end end redmine-6.0.5/db/migrate/059_add_roles_assignable.rb000066400000000000000000000003141500112024600222150ustar00rootroot00000000000000class AddRolesAssignable < ActiveRecord::Migration[4.2] def self.up add_column :roles, :assignable, :boolean, :default => true end def self.down remove_column :roles, :assignable end end redmine-6.0.5/db/migrate/060_change_changesets_committer_limit.rb000066400000000000000000000003661500112024600250020ustar00rootroot00000000000000class ChangeChangesetsCommitterLimit < ActiveRecord::Migration[4.2] def self.up change_column :changesets, :committer, :string, :limit => nil end def self.down change_column :changesets, :committer, :string, :limit => 30 end end redmine-6.0.5/db/migrate/061_add_roles_builtin.rb000066400000000000000000000003201500112024600215410ustar00rootroot00000000000000class AddRolesBuiltin < ActiveRecord::Migration[4.2] def self.up add_column :roles, :builtin, :integer, :default => 0, :null => false end def self.down remove_column :roles, :builtin end end redmine-6.0.5/db/migrate/062_insert_builtin_roles.rb000066400000000000000000000006731500112024600223310ustar00rootroot00000000000000class InsertBuiltinRoles < ActiveRecord::Migration[4.2] def self.up Role.reset_column_information nonmember = Role.new(:name => 'Non member', :position => 0) nonmember.builtin = Role::BUILTIN_NON_MEMBER nonmember.save anonymous = Role.new(:name => 'Anonymous', :position => 0) anonymous.builtin = Role::BUILTIN_ANONYMOUS anonymous.save end def self.down Role.where('builtin <> 0').destroy_all end end redmine-6.0.5/db/migrate/063_add_roles_permissions.rb000066400000000000000000000002721500112024600224560ustar00rootroot00000000000000class AddRolesPermissions < ActiveRecord::Migration[4.2] def self.up add_column :roles, :permissions, :text end def self.down remove_column :roles, :permissions end end redmine-6.0.5/db/migrate/064_drop_permissions.rb000066400000000000000000000003201500112024600214610ustar00rootroot00000000000000class DropPermissions < ActiveRecord::Migration[4.2] def self.up drop_table :permissions drop_table :permissions_roles end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/065_add_settings_updated_on.rb000066400000000000000000000003661500112024600227470ustar00rootroot00000000000000class AddSettingsUpdatedOn < ActiveRecord::Migration[4.2] def self.up add_column :settings, :updated_on, :timestamp # set updated_on Setting.all.each(&:save) end def self.down remove_column :settings, :updated_on end end redmine-6.0.5/db/migrate/066_add_custom_value_customized_index.rb000066400000000000000000000004331500112024600250440ustar00rootroot00000000000000class AddCustomValueCustomizedIndex < ActiveRecord::Migration[4.2] def self.up add_index :custom_values, [:customized_type, :customized_id], :name => :custom_values_customized end def self.down remove_index :custom_values, :name => :custom_values_customized end end redmine-6.0.5/db/migrate/067_create_wiki_redirects.rb000066400000000000000000000006761500112024600224350ustar00rootroot00000000000000class CreateWikiRedirects < ActiveRecord::Migration[4.2] def self.up create_table :wiki_redirects do |t| t.column :wiki_id, :integer, :null => false t.column :title, :string t.column :redirects_to, :string t.column :created_on, :datetime, :null => false end add_index :wiki_redirects, [:wiki_id, :title], :name => :wiki_redirects_wiki_id_title end def self.down drop_table :wiki_redirects end end redmine-6.0.5/db/migrate/068_create_enabled_modules.rb000066400000000000000000000010211500112024600225320ustar00rootroot00000000000000class CreateEnabledModules < ActiveRecord::Migration[4.2] def self.up create_table :enabled_modules do |t| t.column :project_id, :integer t.column :name, :string, :null => false end add_index :enabled_modules, [:project_id], :name => :enabled_modules_project_id # Enable all modules for existing projects Project.all.each do |project| project.enabled_module_names = Redmine::AccessControl.available_project_modules end end def self.down drop_table :enabled_modules end end redmine-6.0.5/db/migrate/069_add_issues_estimated_hours.rb000066400000000000000000000003111500112024600234710ustar00rootroot00000000000000class AddIssuesEstimatedHours < ActiveRecord::Migration[4.2] def self.up add_column :issues, :estimated_hours, :float end def self.down remove_column :issues, :estimated_hours end end redmine-6.0.5/db/migrate/070_change_attachments_content_type_limit.rb000066400000000000000000000004011500112024600256700ustar00rootroot00000000000000class ChangeAttachmentsContentTypeLimit < ActiveRecord::Migration[4.2] def self.up change_column :attachments, :content_type, :string, :limit => nil end def self.down change_column :attachments, :content_type, :string, :limit => 60 end end redmine-6.0.5/db/migrate/071_add_queries_column_names.rb000066400000000000000000000003021500112024600231050ustar00rootroot00000000000000class AddQueriesColumnNames < ActiveRecord::Migration[4.2] def self.up add_column :queries, :column_names, :text end def self.down remove_column :queries, :column_names end end redmine-6.0.5/db/migrate/072_add_enumerations_position.rb000066400000000000000000000007631500112024600233410ustar00rootroot00000000000000class AddEnumerationsPosition < ActiveRecord::Migration[4.2] def self.up add_column(:enumerations, :position, :integer, :default => 1) unless Enumeration.column_names.include?('position') Enumeration.all.group_by(&:opt).each do |opt, enums| enums.each_with_index do |enum, i| # do not call model callbacks Enumeration.where({:id => enum.id}).update_all(:position => (i+1)) end end end def self.down remove_column :enumerations, :position end end redmine-6.0.5/db/migrate/073_add_enumerations_is_default.rb000066400000000000000000000003611500112024600236070ustar00rootroot00000000000000class AddEnumerationsIsDefault < ActiveRecord::Migration[4.2] def self.up add_column :enumerations, :is_default, :boolean, :default => false, :null => false end def self.down remove_column :enumerations, :is_default end end redmine-6.0.5/db/migrate/074_add_auth_sources_tls.rb000066400000000000000000000003341500112024600222660ustar00rootroot00000000000000class AddAuthSourcesTls < ActiveRecord::Migration[4.2] def self.up add_column :auth_sources, :tls, :boolean, :default => false, :null => false end def self.down remove_column :auth_sources, :tls end end redmine-6.0.5/db/migrate/075_add_members_mail_notification.rb000066400000000000000000000003671500112024600241110ustar00rootroot00000000000000class AddMembersMailNotification < ActiveRecord::Migration[4.2] def self.up add_column :members, :mail_notification, :boolean, :default => false, :null => false end def self.down remove_column :members, :mail_notification end end redmine-6.0.5/db/migrate/076_allow_null_position.rb000066400000000000000000000011571500112024600221720ustar00rootroot00000000000000class AllowNullPosition < ActiveRecord::Migration[4.2] def self.up Enumeration.reset_column_information # removes the 'not null' constraint on position fields change_column :issue_statuses, :position, :integer, :default => 1, :null => true change_column :roles, :position, :integer, :default => 1, :null => true change_column :trackers, :position, :integer, :default => 1, :null => true change_column :boards, :position, :integer, :default => 1, :null => true change_column :enumerations, :position, :integer, :default => 1, :null => true end def self.down # nothing to do end end redmine-6.0.5/db/migrate/077_remove_issue_statuses_html_color.rb000066400000000000000000000003161500112024600247550ustar00rootroot00000000000000class RemoveIssueStatusesHtmlColor < ActiveRecord::Migration[4.2] def self.up remove_column :issue_statuses, :html_color end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/078_add_custom_fields_position.rb000066400000000000000000000007041500112024600234710ustar00rootroot00000000000000class AddCustomFieldsPosition < ActiveRecord::Migration[4.2] def self.up add_column(:custom_fields, :position, :integer, :default => 1) CustomField.all.group_by(&:type).each do |t, fields| fields.each_with_index do |field, i| # do not call model callbacks CustomField.where({:id => field.id}).update_all(:position => (i+1)) end end end def self.down remove_column :custom_fields, :position end end redmine-6.0.5/db/migrate/079_add_user_preferences_time_zone.rb000066400000000000000000000003251500112024600243150ustar00rootroot00000000000000class AddUserPreferencesTimeZone < ActiveRecord::Migration[4.2] def self.up add_column :user_preferences, :time_zone, :string end def self.down remove_column :user_preferences, :time_zone end end redmine-6.0.5/db/migrate/080_add_users_type.rb000066400000000000000000000003131500112024600210740ustar00rootroot00000000000000class AddUsersType < ActiveRecord::Migration[4.2] def self.up add_column :users, :type, :string User.update_all "type = 'User'" end def self.down remove_column :users, :type end end redmine-6.0.5/db/migrate/081_create_projects_trackers.rb000066400000000000000000000011541500112024600231410ustar00rootroot00000000000000class CreateProjectsTrackers < ActiveRecord::Migration[4.2] def self.up create_table :projects_trackers, :id => false do |t| t.column :project_id, :integer, :default => 0, :null => false t.column :tracker_id, :integer, :default => 0, :null => false end add_index :projects_trackers, :project_id, :name => :projects_trackers_project_id # Associates all trackers to all projects (as it was before) tracker_ids = Tracker.all.collect(&:id) Project.all.each do |project| project.tracker_ids = tracker_ids end end def self.down drop_table :projects_trackers end end redmine-6.0.5/db/migrate/082_add_messages_locked.rb000066400000000000000000000003121500112024600220230ustar00rootroot00000000000000class AddMessagesLocked < ActiveRecord::Migration[4.2] def self.up add_column :messages, :locked, :boolean, :default => false end def self.down remove_column :messages, :locked end end redmine-6.0.5/db/migrate/083_add_messages_sticky.rb000066400000000000000000000003061500112024600220740ustar00rootroot00000000000000class AddMessagesSticky < ActiveRecord::Migration[4.2] def self.up add_column :messages, :sticky, :integer, :default => 0 end def self.down remove_column :messages, :sticky end end redmine-6.0.5/db/migrate/084_change_auth_sources_account_limit.rb000066400000000000000000000003651500112024600250200ustar00rootroot00000000000000class ChangeAuthSourcesAccountLimit < ActiveRecord::Migration[4.2] def self.up change_column :auth_sources, :account, :string, :limit => nil end def self.down change_column :auth_sources, :account, :string, :limit => 60 end end redmine-6.0.5/db/migrate/085_add_role_tracker_old_status_index_to_workflows.rb000066400000000000000000000004631500112024600276300ustar00rootroot00000000000000class AddRoleTrackerOldStatusIndexToWorkflows < ActiveRecord::Migration[4.2] def self.up add_index :workflows, [:role_id, :tracker_id, :old_status_id], :name => :wkfs_role_tracker_old_status end def self.down remove_index(:workflows, :name => :wkfs_role_tracker_old_status); rescue end end redmine-6.0.5/db/migrate/086_add_custom_fields_searchable.rb000066400000000000000000000003441500112024600237150ustar00rootroot00000000000000class AddCustomFieldsSearchable < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :searchable, :boolean, :default => false end def self.down remove_column :custom_fields, :searchable end end redmine-6.0.5/db/migrate/087_change_projects_description_to_text.rb000066400000000000000000000003051500112024600254010ustar00rootroot00000000000000class ChangeProjectsDescriptionToText < ActiveRecord::Migration[4.2] def self.up change_column :projects, :description, :text, :null => true, :default => nil end def self.down end end redmine-6.0.5/db/migrate/088_add_custom_fields_default_value.rb000066400000000000000000000003261500112024600244460ustar00rootroot00000000000000class AddCustomFieldsDefaultValue < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :default_value, :text end def self.down remove_column :custom_fields, :default_value end end redmine-6.0.5/db/migrate/089_add_attachments_description.rb000066400000000000000000000003161500112024600236240ustar00rootroot00000000000000class AddAttachmentsDescription < ActiveRecord::Migration[4.2] def self.up add_column :attachments, :description, :string end def self.down remove_column :attachments, :description end end redmine-6.0.5/db/migrate/090_change_versions_name_limit.rb000066400000000000000000000003411500112024600234370ustar00rootroot00000000000000class ChangeVersionsNameLimit < ActiveRecord::Migration[4.2] def self.up change_column :versions, :name, :string, :limit => nil end def self.down change_column :versions, :name, :string, :limit => 30 end end redmine-6.0.5/db/migrate/091_change_changesets_revision_to_string.rb000066400000000000000000000026571500112024600255400ustar00rootroot00000000000000class ChangeChangesetsRevisionToString < ActiveRecord::Migration[4.2] def self.up # Some backends (eg. SQLServer 2012) do not support changing the type # of an indexed column so the index needs to be dropped first # BUT this index is renamed with some backends (at least SQLite3) for # some (unknown) reasons, thus we check for the other name as well # so we don't end up with 2 identical indexes if index_exists? :changesets, [:repository_id, :revision], :name => :changesets_repos_rev remove_index :changesets, :name => :changesets_repos_rev end if index_exists? :changesets, [:repository_id, :revision], :name => :altered_changesets_repos_rev remove_index :changesets, :name => :altered_changesets_repos_rev end change_column :changesets, :revision, :string, :null => false add_index :changesets, [:repository_id, :revision], :unique => true, :name => :changesets_repos_rev end def self.down if index_exists? :changesets, :changesets_repos_rev remove_index :changesets, :name => :changesets_repos_rev end if index_exists? :changesets, [:repository_id, :revision], :name => :altered_changesets_repos_rev remove_index :changesets, :name => :altered_changesets_repos_rev end change_column :changesets, :revision, :integer, :null => false add_index :changesets, [:repository_id, :revision], :unique => true, :name => :changesets_repos_rev end end redmine-6.0.5/db/migrate/092_change_changes_from_revision_to_string.rb000066400000000000000000000003371500112024600260410ustar00rootroot00000000000000class ChangeChangesFromRevisionToString < ActiveRecord::Migration[4.2] def self.up change_column :changes, :from_revision, :string end def self.down change_column :changes, :from_revision, :integer end end redmine-6.0.5/db/migrate/093_add_wiki_pages_protected.rb000066400000000000000000000003501500112024600230720ustar00rootroot00000000000000class AddWikiPagesProtected < ActiveRecord::Migration[4.2] def self.up add_column :wiki_pages, :protected, :boolean, :default => false, :null => false end def self.down remove_column :wiki_pages, :protected end end redmine-6.0.5/db/migrate/094_change_projects_homepage_limit.rb000066400000000000000000000004151500112024600242730ustar00rootroot00000000000000class ChangeProjectsHomepageLimit < ActiveRecord::Migration[4.2] def self.up change_column :projects, :homepage, :string, :limit => nil, :default => '' end def self.down change_column :projects, :homepage, :string, :limit => 60, :default => '' end end redmine-6.0.5/db/migrate/095_add_wiki_pages_parent_id.rb000066400000000000000000000003251500112024600230520ustar00rootroot00000000000000class AddWikiPagesParentId < ActiveRecord::Migration[4.2] def self.up add_column :wiki_pages, :parent_id, :integer, :default => nil end def self.down remove_column :wiki_pages, :parent_id end end redmine-6.0.5/db/migrate/096_add_commit_access_permission.rb000066400000000000000000000004771500112024600237750ustar00rootroot00000000000000class AddCommitAccessPermission < ActiveRecord::Migration[4.2] def self.up Role.all.select { |r| not r.builtin? }.each do |r| r.add_permission!(:commit_access) end end def self.down Role.all.select { |r| not r.builtin? }.each do |r| r.remove_permission!(:commit_access) end end end redmine-6.0.5/db/migrate/097_add_view_wiki_edits_permission.rb000066400000000000000000000004571500112024600243500ustar00rootroot00000000000000class AddViewWikiEditsPermission < ActiveRecord::Migration[4.2] def self.up Role.all.each do |r| r.add_permission!(:view_wiki_edits) if r.has_permission?(:view_wiki_pages) end end def self.down Role.all.each do |r| r.remove_permission!(:view_wiki_edits) end end end redmine-6.0.5/db/migrate/098_set_topic_authors_as_watchers.rb000066400000000000000000000013701500112024600242200ustar00rootroot00000000000000class SetTopicAuthorsAsWatchers < ActiveRecord::Migration[4.2] def self.up # Sets active users who created/replied a topic as watchers of the topic # so that the new watch functionality at topic level doesn't affect notifications behaviour Message.connection.execute("INSERT INTO #{Watcher.table_name} (watchable_type, watchable_id, user_id)" + " SELECT DISTINCT 'Message', COALESCE(m.parent_id, m.id), m.author_id" + " FROM #{Message.table_name} m, #{User.table_name} u" + " WHERE m.author_id = u.id AND u.status = 1") end def self.down # Removes all message watchers Watcher.where("watchable_type = 'Message'").delete_all end end redmine-6.0.5/db/migrate/099_add_delete_wiki_pages_attachments_permission.rb000066400000000000000000000005301500112024600272140ustar00rootroot00000000000000class AddDeleteWikiPagesAttachmentsPermission < ActiveRecord::Migration[4.2] def self.up Role.all.each do |r| r.add_permission!(:delete_wiki_pages_attachments) if r.has_permission?(:edit_wiki_pages) end end def self.down Role.all.each do |r| r.remove_permission!(:delete_wiki_pages_attachments) end end end redmine-6.0.5/db/migrate/100_add_changesets_user_id.rb000066400000000000000000000003201500112024600225170ustar00rootroot00000000000000class AddChangesetsUserId < ActiveRecord::Migration[4.2] def self.up add_column :changesets, :user_id, :integer, :default => nil end def self.down remove_column :changesets, :user_id end end redmine-6.0.5/db/migrate/101_populate_changesets_user_id.rb000066400000000000000000000011721500112024600236270ustar00rootroot00000000000000class PopulateChangesetsUserId < ActiveRecord::Migration[4.2] def self.up committers = Changeset.connection.select_values("SELECT DISTINCT committer FROM #{Changeset.table_name}") committers.each do |committer| next if committer.blank? if committer.strip =~ /^([^<]+)(<(.*)>)?$/ username, email = $1.strip, $3 u = User.find_by_login(username) u ||= User.find_by_mail(email) unless email.blank? Changeset.where(["committer = ?", committer]).update_all("user_id = #{u.id}") unless u.nil? end end end def self.down Changeset.update_all('user_id = NULL') end end redmine-6.0.5/db/migrate/102_add_custom_fields_editable.rb000066400000000000000000000003351500112024600233620ustar00rootroot00000000000000class AddCustomFieldsEditable < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :editable, :boolean, :default => true end def self.down remove_column :custom_fields, :editable end end redmine-6.0.5/db/migrate/103_set_custom_fields_editable.rb000066400000000000000000000004231500112024600234240ustar00rootroot00000000000000class SetCustomFieldsEditable < ActiveRecord::Migration[4.2] def self.up UserCustomField.update_all("editable = #{CustomField.connection.quoted_false}") end def self.down UserCustomField.update_all("editable = #{CustomField.connection.quoted_true}") end end redmine-6.0.5/db/migrate/104_add_projects_lft_and_rgt.rb000066400000000000000000000003771500112024600230750ustar00rootroot00000000000000class AddProjectsLftAndRgt < ActiveRecord::Migration[4.2] def self.up add_column :projects, :lft, :integer add_column :projects, :rgt, :integer end def self.down remove_column :projects, :lft remove_column :projects, :rgt end end redmine-6.0.5/db/migrate/105_build_projects_tree.rb000066400000000000000000000002001500112024600221020ustar00rootroot00000000000000class BuildProjectsTree < ActiveRecord::Migration[4.2] def self.up Project.rebuild_tree! end def self.down end end redmine-6.0.5/db/migrate/106_remove_projects_projects_count.rb000066400000000000000000000003401500112024600244100ustar00rootroot00000000000000class RemoveProjectsProjectsCount < ActiveRecord::Migration[4.2] def self.up remove_column :projects, :projects_count end def self.down add_column :projects, :projects_count, :integer, :default => 0 end end redmine-6.0.5/db/migrate/107_add_open_id_authentication_tables.rb000066400000000000000000000011361500112024600247440ustar00rootroot00000000000000class AddOpenIdAuthenticationTables < ActiveRecord::Migration[4.2] def self.up create_table :open_id_authentication_associations, :force => true do |t| t.integer :issued, :lifetime t.string :handle, :assoc_type t.binary :server_url, :secret end create_table :open_id_authentication_nonces, :force => true do |t| t.integer :timestamp, :null => false t.string :server_url, :null => true t.string :salt, :null => false end end def self.down drop_table :open_id_authentication_associations drop_table :open_id_authentication_nonces end end redmine-6.0.5/db/migrate/108_add_identity_url_to_users.rb000066400000000000000000000003001500112024600233250ustar00rootroot00000000000000class AddIdentityUrlToUsers < ActiveRecord::Migration[4.2] def self.up add_column :users, :identity_url, :string end def self.down remove_column :users, :identity_url end end redmine-6.0.5/db/migrate/20090214190337_add_watchers_user_id_type_index.rb000066400000000000000000000004011500112024600255330ustar00rootroot00000000000000class AddWatchersUserIdTypeIndex < ActiveRecord::Migration[4.2] def self.up add_index :watchers, [:user_id, :watchable_type], :name => :watchers_user_id_type end def self.down remove_index :watchers, :name => :watchers_user_id_type end end redmine-6.0.5/db/migrate/20090312172426_add_queries_sort_criteria.rb000066400000000000000000000003051500112024600243600ustar00rootroot00000000000000class AddQueriesSortCriteria < ActiveRecord::Migration[4.2] def self.up add_column :queries, :sort_criteria, :text end def self.down remove_column :queries, :sort_criteria end end redmine-6.0.5/db/migrate/20090312194159_add_projects_trackers_unique_index.rb000066400000000000000000000011331500112024600262650ustar00rootroot00000000000000class AddProjectsTrackersUniqueIndex < ActiveRecord::Migration[4.2] def self.up remove_duplicates add_index :projects_trackers, [:project_id, :tracker_id], :name => :projects_trackers_unique, :unique => true end def self.down remove_index :projects_trackers, :name => :projects_trackers_unique end # Removes duplicates in projects_trackers table def self.remove_duplicates Project.all.each do |project| ids = project.trackers.collect(&:id) unless ids == ids.uniq project.trackers.clear project.tracker_ids = ids.uniq end end end end redmine-6.0.5/db/migrate/20090318181151_extend_settings_name.rb000066400000000000000000000003601500112024600233530ustar00rootroot00000000000000class ExtendSettingsName < ActiveRecord::Migration[4.2] def self.up change_column :settings, :name, :string, :limit => 255, :default => '', :null => false end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/20090323224724_add_type_to_enumerations.rb000066400000000000000000000002761500112024600242360ustar00rootroot00000000000000class AddTypeToEnumerations < ActiveRecord::Migration[4.2] def self.up add_column :enumerations, :type, :string end def self.down remove_column :enumerations, :type end end redmine-6.0.5/db/migrate/20090401221305_update_enumerations_to_sti.rb000066400000000000000000000005401500112024600245650ustar00rootroot00000000000000class UpdateEnumerationsToSti < ActiveRecord::Migration[4.2] def self.up Enumeration.where("opt = 'IPRI'").update_all("type = 'IssuePriority'") Enumeration.where("opt = 'DCAT'").update_all("type = 'DocumentCategory'") Enumeration.where("opt = 'ACTI'").update_all("type = 'TimeEntryActivity'") end def self.down # no-op end end redmine-6.0.5/db/migrate/20090401231134_add_active_field_to_enumerations.rb000066400000000000000000000003541500112024600256560ustar00rootroot00000000000000class AddActiveFieldToEnumerations < ActiveRecord::Migration[4.2] def self.up add_column :enumerations, :active, :boolean, :default => true, :null => false end def self.down remove_column :enumerations, :active end end redmine-6.0.5/db/migrate/20090403001910_add_project_to_enumerations.rb000066400000000000000000000005031500112024600247010ustar00rootroot00000000000000class AddProjectToEnumerations < ActiveRecord::Migration[4.2] def self.up add_column :enumerations, :project_id, :integer, :null => true, :default => nil add_index :enumerations, :project_id end def self.down remove_index :enumerations, :project_id remove_column :enumerations, :project_id end end redmine-6.0.5/db/migrate/20090406161854_add_parent_id_to_enumerations.rb000066400000000000000000000003551500112024600252260ustar00rootroot00000000000000class AddParentIdToEnumerations < ActiveRecord::Migration[4.2] def self.up add_column :enumerations, :parent_id, :integer, :null => true, :default => nil end def self.down remove_column :enumerations, :parent_id end end redmine-6.0.5/db/migrate/20090425161243_add_queries_group_by.rb000066400000000000000000000002701500112024600233360ustar00rootroot00000000000000class AddQueriesGroupBy < ActiveRecord::Migration[4.2] def self.up add_column :queries, :group_by, :string end def self.down remove_column :queries, :group_by end end redmine-6.0.5/db/migrate/20090503121501_create_member_roles.rb000066400000000000000000000004271500112024600231330ustar00rootroot00000000000000class CreateMemberRoles < ActiveRecord::Migration[4.2] def self.up create_table :member_roles do |t| t.column :member_id, :integer, :null => false t.column :role_id, :integer, :null => false end end def self.down drop_table :member_roles end end redmine-6.0.5/db/migrate/20090503121505_populate_member_roles.rb000066400000000000000000000004241500112024600235220ustar00rootroot00000000000000class PopulateMemberRoles < ActiveRecord::Migration[4.2] def self.up MemberRole.delete_all Member.all.each do |member| MemberRole.insert!({:member_id => member.id, :role_id => member.role_id}) end end def self.down MemberRole.delete_all end end redmine-6.0.5/db/migrate/20090503121510_drop_members_role_id.rb000066400000000000000000000002711500112024600233050ustar00rootroot00000000000000class DropMembersRoleId < ActiveRecord::Migration[4.2] def self.up remove_column :members, :role_id end def self.down raise ActiveRecord::IrreversibleMigration end end redmine-6.0.5/db/migrate/20090614091200_fix_messages_sticky_null.rb000066400000000000000000000002731500112024600242360ustar00rootroot00000000000000class FixMessagesStickyNull < ActiveRecord::Migration[4.2] def self.up Message.where('sticky IS NULL').update_all('sticky = 0') end def self.down # nothing to do end end redmine-6.0.5/db/migrate/20090704172350_populate_users_type.rb000066400000000000000000000002461500112024600232620ustar00rootroot00000000000000class PopulateUsersType < ActiveRecord::Migration[4.2] def self.up Principal.where("type IS NULL").update_all("type = 'User'") end def self.down end end redmine-6.0.5/db/migrate/20090704172355_create_groups_users.rb000066400000000000000000000006041500112024600232350ustar00rootroot00000000000000class CreateGroupsUsers < ActiveRecord::Migration[4.2] def self.up create_table :groups_users, :id => false do |t| t.column :group_id, :integer, :null => false t.column :user_id, :integer, :null => false end add_index :groups_users, [:group_id, :user_id], :unique => true, :name => :groups_users_ids end def self.down drop_table :groups_users end end redmine-6.0.5/db/migrate/20090704172358_add_member_roles_inherited_from.rb000066400000000000000000000003311500112024600255130ustar00rootroot00000000000000class AddMemberRolesInheritedFrom < ActiveRecord::Migration[4.2] def self.up add_column :member_roles, :inherited_from, :integer end def self.down remove_column :member_roles, :inherited_from end end redmine-6.0.5/db/migrate/20091010093521_fix_users_custom_values.rb000066400000000000000000000004631500112024600241210ustar00rootroot00000000000000class FixUsersCustomValues < ActiveRecord::Migration[4.2] def self.up CustomValue.where("customized_type = 'User'"). update_all("customized_type = 'Principal'") end def self.down CustomValue.where("customized_type = 'Principal'"). update_all("customized_type = 'User'") end end redmine-6.0.5/db/migrate/20091017212227_add_missing_indexes_to_workflows.rb000066400000000000000000000005441500112024600257630ustar00rootroot00000000000000class AddMissingIndexesToWorkflows < ActiveRecord::Migration[4.2] def self.up add_index :workflows, :old_status_id add_index :workflows, :role_id add_index :workflows, :new_status_id end def self.down remove_index :workflows, :old_status_id remove_index :workflows, :role_id remove_index :workflows, :new_status_id end end redmine-6.0.5/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb000066400000000000000000000004301500112024600304760ustar00rootroot00000000000000class AddMissingIndexesToCustomFieldsProjects < ActiveRecord::Migration[4.2] def self.up add_index :custom_fields_projects, [:custom_field_id, :project_id] end def self.down remove_index :custom_fields_projects, :column => [:custom_field_id, :project_id] end end redmine-6.0.5/db/migrate/20091017212644_add_missing_indexes_to_messages.rb000066400000000000000000000004161500112024600255360ustar00rootroot00000000000000class AddMissingIndexesToMessages < ActiveRecord::Migration[4.2] def self.up add_index :messages, :last_reply_id add_index :messages, :author_id end def self.down remove_index :messages, :last_reply_id remove_index :messages, :author_id end end redmine-6.0.5/db/migrate/20091017212938_add_missing_indexes_to_repositories.rb000066400000000000000000000003111500112024600264560ustar00rootroot00000000000000class AddMissingIndexesToRepositories < ActiveRecord::Migration[4.2] def self.up add_index :repositories, :project_id end def self.down remove_index :repositories, :project_id end end redmine-6.0.5/db/migrate/20091017213027_add_missing_indexes_to_comments.rb000066400000000000000000000004751500112024600255550ustar00rootroot00000000000000class AddMissingIndexesToComments < ActiveRecord::Migration[4.2] def self.up add_index :comments, [:commented_id, :commented_type] add_index :comments, :author_id end def self.down remove_index :comments, :column => [:commented_id, :commented_type] remove_index :comments, :author_id end end redmine-6.0.5/db/migrate/20091017213113_add_missing_indexes_to_enumerations.rb000066400000000000000000000003261500112024600264300ustar00rootroot00000000000000class AddMissingIndexesToEnumerations < ActiveRecord::Migration[4.2] def self.up add_index :enumerations, [:id, :type] end def self.down remove_index :enumerations, :column => [:id, :type] end end redmine-6.0.5/db/migrate/20091017213151_add_missing_indexes_to_wiki_pages.rb000066400000000000000000000004131500112024600260400ustar00rootroot00000000000000class AddMissingIndexesToWikiPages < ActiveRecord::Migration[4.2] def self.up add_index :wiki_pages, :wiki_id add_index :wiki_pages, :parent_id end def self.down remove_index :wiki_pages, :wiki_id remove_index :wiki_pages, :parent_id end end redmine-6.0.5/db/migrate/20091017213228_add_missing_indexes_to_watchers.rb000066400000000000000000000004711500112024600255470ustar00rootroot00000000000000class AddMissingIndexesToWatchers < ActiveRecord::Migration[4.2] def self.up add_index :watchers, :user_id add_index :watchers, [:watchable_id, :watchable_type] end def self.down remove_index :watchers, :user_id remove_index :watchers, :column => [:watchable_id, :watchable_type] end end redmine-6.0.5/db/migrate/20091017213257_add_missing_indexes_to_auth_sources.rb000066400000000000000000000003251500112024600264330ustar00rootroot00000000000000class AddMissingIndexesToAuthSources < ActiveRecord::Migration[4.2] def self.up add_index :auth_sources, [:id, :type] end def self.down remove_index :auth_sources, :column => [:id, :type] end end redmine-6.0.5/db/migrate/20091017213332_add_missing_indexes_to_documents.rb000066400000000000000000000003021500112024600257150ustar00rootroot00000000000000class AddMissingIndexesToDocuments < ActiveRecord::Migration[4.2] def self.up add_index :documents, :category_id end def self.down remove_index :documents, :category_id end end redmine-6.0.5/db/migrate/20091017213444_add_missing_indexes_to_tokens.rb000066400000000000000000000002611500112024600252270ustar00rootroot00000000000000class AddMissingIndexesToTokens < ActiveRecord::Migration[4.2] def self.up add_index :tokens, :user_id end def self.down remove_index :tokens, :user_id end end redmine-6.0.5/db/migrate/20091017213536_add_missing_indexes_to_changesets.rb000066400000000000000000000004241500112024600260530ustar00rootroot00000000000000class AddMissingIndexesToChangesets < ActiveRecord::Migration[4.2] def self.up add_index :changesets, :user_id add_index :changesets, :repository_id end def self.down remove_index :changesets, :user_id remove_index :changesets, :repository_id end end redmine-6.0.5/db/migrate/20091017213642_add_missing_indexes_to_issue_categories.rb000066400000000000000000000003341500112024600272620ustar00rootroot00000000000000class AddMissingIndexesToIssueCategories < ActiveRecord::Migration[4.2] def self.up add_index :issue_categories, :assigned_to_id end def self.down remove_index :issue_categories, :assigned_to_id end end redmine-6.0.5/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb000066400000000000000000000004251500112024600264030ustar00rootroot00000000000000class AddMissingIndexesToMemberRoles < ActiveRecord::Migration[4.2] def self.up add_index :member_roles, :member_id add_index :member_roles, :role_id end def self.down remove_index :member_roles, :member_id remove_index :member_roles, :role_id end end redmine-6.0.5/db/migrate/20091017213757_add_missing_indexes_to_boards.rb000066400000000000000000000003011500112024600252000ustar00rootroot00000000000000class AddMissingIndexesToBoards < ActiveRecord::Migration[4.2] def self.up add_index :boards, :last_message_id end def self.down remove_index :boards, :last_message_id end end redmine-6.0.5/db/migrate/20091017213835_add_missing_indexes_to_user_preferences.rb000066400000000000000000000003161500112024600272700ustar00rootroot00000000000000class AddMissingIndexesToUserPreferences < ActiveRecord::Migration[4.2] def self.up add_index :user_preferences, :user_id end def self.down remove_index :user_preferences, :user_id end end redmine-6.0.5/db/migrate/20091017213910_add_missing_indexes_to_issues.rb000066400000000000000000000012011500112024600252300ustar00rootroot00000000000000class AddMissingIndexesToIssues < ActiveRecord::Migration[4.2] def self.up add_index :issues, :status_id add_index :issues, :category_id add_index :issues, :assigned_to_id add_index :issues, :fixed_version_id add_index :issues, :tracker_id add_index :issues, :priority_id add_index :issues, :author_id end def self.down remove_index :issues, :status_id remove_index :issues, :category_id remove_index :issues, :assigned_to_id remove_index :issues, :fixed_version_id remove_index :issues, :tracker_id remove_index :issues, :priority_id remove_index :issues, :author_id end end redmine-6.0.5/db/migrate/20091017214015_add_missing_indexes_to_members.rb000066400000000000000000000003771500112024600253610ustar00rootroot00000000000000class AddMissingIndexesToMembers < ActiveRecord::Migration[4.2] def self.up add_index :members, :user_id add_index :members, :project_id end def self.down remove_index :members, :user_id remove_index :members, :project_id end end redmine-6.0.5/db/migrate/20091017214107_add_missing_indexes_to_custom_fields.rb000066400000000000000000000003301500112024600265560ustar00rootroot00000000000000class AddMissingIndexesToCustomFields < ActiveRecord::Migration[4.2] def self.up add_index :custom_fields, [:id, :type] end def self.down remove_index :custom_fields, :column => [:id, :type] end end redmine-6.0.5/db/migrate/20091017214136_add_missing_indexes_to_queries.rb000066400000000000000000000003771500112024600254100ustar00rootroot00000000000000class AddMissingIndexesToQueries < ActiveRecord::Migration[4.2] def self.up add_index :queries, :project_id add_index :queries, :user_id end def self.down remove_index :queries, :project_id remove_index :queries, :user_id end end redmine-6.0.5/db/migrate/20091017214236_add_missing_indexes_to_time_entries.rb000066400000000000000000000004311500112024600264120ustar00rootroot00000000000000class AddMissingIndexesToTimeEntries < ActiveRecord::Migration[4.2] def self.up add_index :time_entries, :activity_id add_index :time_entries, :user_id end def self.down remove_index :time_entries, :activity_id remove_index :time_entries, :user_id end end redmine-6.0.5/db/migrate/20091017214308_add_missing_indexes_to_news.rb000066400000000000000000000002571500112024600247050ustar00rootroot00000000000000class AddMissingIndexesToNews < ActiveRecord::Migration[4.2] def self.up add_index :news, :author_id end def self.down remove_index :news, :author_id end end redmine-6.0.5/db/migrate/20091017214336_add_missing_indexes_to_users.rb000066400000000000000000000004201500112024600250630ustar00rootroot00000000000000class AddMissingIndexesToUsers < ActiveRecord::Migration[4.2] def self.up add_index :users, [:id, :type] add_index :users, :auth_source_id end def self.down remove_index :users, :column => [:id, :type] remove_index :users, :auth_source_id end end redmine-6.0.5/db/migrate/20091017214406_add_missing_indexes_to_attachments.rb000066400000000000000000000005141500112024600262370ustar00rootroot00000000000000class AddMissingIndexesToAttachments < ActiveRecord::Migration[4.2] def self.up add_index :attachments, [:container_id, :container_type] add_index :attachments, :author_id end def self.down remove_index :attachments, :column => [:container_id, :container_type] remove_index :attachments, :author_id end end redmine-6.0.5/db/migrate/20091017214440_add_missing_indexes_to_wiki_contents.rb000066400000000000000000000003111500112024600265750ustar00rootroot00000000000000class AddMissingIndexesToWikiContents < ActiveRecord::Migration[4.2] def self.up add_index :wiki_contents, :author_id end def self.down remove_index :wiki_contents, :author_id end end redmine-6.0.5/db/migrate/20091017214519_add_missing_indexes_to_custom_values.rb000066400000000000000000000003251500112024600266220ustar00rootroot00000000000000class AddMissingIndexesToCustomValues < ActiveRecord::Migration[4.2] def self.up add_index :custom_values, :custom_field_id end def self.down remove_index :custom_values, :custom_field_id end end redmine-6.0.5/db/migrate/20091017214611_add_missing_indexes_to_journals.rb000066400000000000000000000004141500112024600255560ustar00rootroot00000000000000class AddMissingIndexesToJournals < ActiveRecord::Migration[4.2] def self.up add_index :journals, :user_id add_index :journals, :journalized_id end def self.down remove_index :journals, :user_id remove_index :journals, :journalized_id end end redmine-6.0.5/db/migrate/20091017214644_add_missing_indexes_to_issue_relations.rb000066400000000000000000000004641500112024600271440ustar00rootroot00000000000000class AddMissingIndexesToIssueRelations < ActiveRecord::Migration[4.2] def self.up add_index :issue_relations, :issue_from_id add_index :issue_relations, :issue_to_id end def self.down remove_index :issue_relations, :issue_from_id remove_index :issue_relations, :issue_to_id end end redmine-6.0.5/db/migrate/20091017214720_add_missing_indexes_to_wiki_redirects.rb000066400000000000000000000003101500112024600267240ustar00rootroot00000000000000class AddMissingIndexesToWikiRedirects < ActiveRecord::Migration[4.2] def self.up add_index :wiki_redirects, :wiki_id end def self.down remove_index :wiki_redirects, :wiki_id end end redmine-6.0.5/db/migrate/20091017214750_add_missing_indexes_to_custom_fields_trackers.rb000066400000000000000000000004301500112024600304610ustar00rootroot00000000000000class AddMissingIndexesToCustomFieldsTrackers < ActiveRecord::Migration[4.2] def self.up add_index :custom_fields_trackers, [:custom_field_id, :tracker_id] end def self.down remove_index :custom_fields_trackers, :column => [:custom_field_id, :tracker_id] end end redmine-6.0.5/db/migrate/20091025163651_add_activity_indexes.rb000066400000000000000000000015021500112024600233270ustar00rootroot00000000000000class AddActivityIndexes < ActiveRecord::Migration[4.2] def self.up add_index :journals, :created_on add_index :changesets, :committed_on add_index :wiki_content_versions, :updated_on add_index :messages, :created_on add_index :issues, :created_on add_index :news, :created_on add_index :attachments, :created_on add_index :documents, :created_on add_index :time_entries, :created_on end def self.down remove_index :journals, :created_on remove_index :changesets, :committed_on remove_index :wiki_content_versions, :updated_on remove_index :messages, :created_on remove_index :issues, :created_on remove_index :news, :created_on remove_index :attachments, :created_on remove_index :documents, :created_on remove_index :time_entries, :created_on end end redmine-6.0.5/db/migrate/20091108092559_add_versions_status.rb000066400000000000000000000003641500112024600232460ustar00rootroot00000000000000class AddVersionsStatus < ActiveRecord::Migration[4.2] def self.up add_column :versions, :status, :string, :default => 'open' Version.update_all("status = 'open'") end def self.down remove_column :versions, :status end end redmine-6.0.5/db/migrate/20091114105931_add_view_issues_permission.rb000066400000000000000000000005011500112024600245630ustar00rootroot00000000000000class AddViewIssuesPermission < ActiveRecord::Migration[4.2] def self.up Role.reset_column_information Role.all.each do |r| r.add_permission!(:view_issues) end end def self.down Role.reset_column_information Role.all.each do |r| r.remove_permission!(:view_issues) end end end redmine-6.0.5/db/migrate/20091123212029_add_default_done_ratio_to_issue_status.rb000066400000000000000000000003521500112024600271130ustar00rootroot00000000000000class AddDefaultDoneRatioToIssueStatus < ActiveRecord::Migration[4.2] def self.up add_column :issue_statuses, :default_done_ratio, :integer end def self.down remove_column :issue_statuses, :default_done_ratio end end redmine-6.0.5/db/migrate/20091205124427_add_versions_sharing.rb000066400000000000000000000003771500112024600233460ustar00rootroot00000000000000class AddVersionsSharing < ActiveRecord::Migration[4.2] def self.up add_column :versions, :sharing, :string, :default => 'none', :null => false add_index :versions, :sharing end def self.down remove_column :versions, :sharing end end redmine-6.0.5/db/migrate/20091220183509_add_lft_and_rgt_indexes_to_projects.rb000066400000000000000000000003601500112024600263730ustar00rootroot00000000000000class AddLftAndRgtIndexesToProjects < ActiveRecord::Migration[4.2] def self.up add_index :projects, :lft add_index :projects, :rgt end def self.down remove_index :projects, :lft remove_index :projects, :rgt end end redmine-6.0.5/db/migrate/20091220183727_add_index_to_settings_name.rb000066400000000000000000000002541500112024600245130ustar00rootroot00000000000000class AddIndexToSettingsName < ActiveRecord::Migration[4.2] def self.up add_index :settings, :name end def self.down remove_index :settings, :name end end redmine-6.0.5/db/migrate/20091220184736_add_indexes_to_issue_status.rb000066400000000000000000000005611500112024600247400ustar00rootroot00000000000000class AddIndexesToIssueStatus < ActiveRecord::Migration[4.2] def self.up add_index :issue_statuses, :position add_index :issue_statuses, :is_closed add_index :issue_statuses, :is_default end def self.down remove_index :issue_statuses, :position remove_index :issue_statuses, :is_closed remove_index :issue_statuses, :is_default end end redmine-6.0.5/db/migrate/20091225164732_remove_enumerations_opt.rb000066400000000000000000000007211500112024600241210ustar00rootroot00000000000000class RemoveEnumerationsOpt < ActiveRecord::Migration[4.2] def self.up remove_column :enumerations, :opt end def self.down add_column :enumerations, :opt, :string, :limit => 4, :default => '', :null => false Enumeration.where("type = 'IssuePriority'").update_all("opt = 'IPRI'") Enumeration.where("type = 'DocumentCategory'").update_all("opt = 'DCAT'") Enumeration.where("type = 'TimeEntryActivity'").update_all("opt = 'ACTI'") end end redmine-6.0.5/db/migrate/20091227112908_change_wiki_contents_text_limit.rb000066400000000000000000000007521500112024600256040ustar00rootroot00000000000000class ChangeWikiContentsTextLimit < ActiveRecord::Migration[4.2] def self.up # Migrates MySQL databases only # Postgres would raise an error (see http://dev.rubyonrails.org/ticket/3818) # Not fixed in Rails 2.3.5 if Redmine::Database.mysql? max_size = 16.megabytes change_column :wiki_contents, :text, :text, :limit => max_size change_column :wiki_content_versions, :data, :binary, :limit => max_size end end def self.down # no-op end end redmine-6.0.5/db/migrate/20100129193402_change_users_mail_notification_to_string.rb000066400000000000000000000021501500112024600274430ustar00rootroot00000000000000class ChangeUsersMailNotificationToString < ActiveRecord::Migration[4.2] def self.up rename_column :users, :mail_notification, :mail_notification_bool add_column :users, :mail_notification, :string, :default => '', :null => false User.where("mail_notification_bool = #{connection.quoted_true}"). update_all("mail_notification = 'all'") User.where("EXISTS (SELECT 1 FROM #{Member.table_name} WHERE #{Member.table_name}.mail_notification = #{connection.quoted_true} AND #{Member.table_name}.user_id = #{User.table_name}.id)"). update_all("mail_notification = 'selected'") User.where("mail_notification NOT IN ('all', 'selected')"). update_all("mail_notification = 'only_my_events'") remove_column :users, :mail_notification_bool end def self.down rename_column :users, :mail_notification, :mail_notification_char add_column :users, :mail_notification, :boolean, :default => true, :null => false User.where("mail_notification_char <> 'all'"). update_all("mail_notification = #{connection.quoted_false}") remove_column :users, :mail_notification_char end end redmine-6.0.5/db/migrate/20100129193813_update_mail_notification_values.rb000066400000000000000000000003661500112024600255630ustar00rootroot00000000000000# Patch the data from a boolean change. class UpdateMailNotificationValues < ActiveRecord::Migration[4.2] def self.up # No-op # See 20100129193402_change_users_mail_notification_to_string.rb end def self.down # No-op end end redmine-6.0.5/db/migrate/20100221100219_add_index_on_changesets_scmid.rb000066400000000000000000000004031500112024600251150ustar00rootroot00000000000000class AddIndexOnChangesetsScmid < ActiveRecord::Migration[4.2] def self.up add_index :changesets, [:repository_id, :scmid], :name => :changesets_repos_scmid end def self.down remove_index :changesets, :name => :changesets_repos_scmid end end redmine-6.0.5/db/migrate/20100313132032_add_issues_nested_sets_columns.rb000066400000000000000000000010551500112024600254060ustar00rootroot00000000000000class AddIssuesNestedSetsColumns < ActiveRecord::Migration[4.2] def self.up add_column :issues, :parent_id, :integer, :default => nil add_column :issues, :root_id, :integer, :default => nil add_column :issues, :lft, :integer, :default => nil add_column :issues, :rgt, :integer, :default => nil Issue.update_all("parent_id = NULL, root_id = id, lft = 1, rgt = 2") end def self.down remove_column :issues, :parent_id remove_column :issues, :root_id remove_column :issues, :lft remove_column :issues, :rgt end end redmine-6.0.5/db/migrate/20100313171051_add_index_on_issues_nested_set.rb000066400000000000000000000003151500112024600253500ustar00rootroot00000000000000class AddIndexOnIssuesNestedSet < ActiveRecord::Migration[4.2] def self.up add_index :issues, [:root_id, :lft, :rgt] end def self.down remove_index :issues, [:root_id, :lft, :rgt] end end redmine-6.0.5/db/migrate/20100705164950_change_changes_path_length_limit.rb000066400000000000000000000007221500112024600256360ustar00rootroot00000000000000class ChangeChangesPathLengthLimit < ActiveRecord::Migration[4.2] def self.up # these are two steps to please MySQL 5 on Win32 change_column :changes, :path, :text, :default => nil, :null => true change_column :changes, :path, :text, :null => false change_column :changes, :from_path, :text end def self.down change_column :changes, :path, :string, :default => "", :null => false change_column :changes, :from_path, :string end end redmine-6.0.5/db/migrate/20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb000066400000000000000000000006521500112024600316010ustar00rootroot00000000000000class EnableCalendarAndGanttModulesWhereAppropriate < ActiveRecord::Migration[4.2] def self.up EnabledModule.where(:name => 'issue_tracking').each do |e| EnabledModule.create(:name => 'calendar', :project_id => e.project_id) EnabledModule.create(:name => 'gantt', :project_id => e.project_id) end end def self.down EnabledModule.where("name = 'calendar' OR name = 'gantt'").delete_all end end redmine-6.0.5/db/migrate/20101104182107_add_unique_index_on_members.rb000066400000000000000000000017021500112024600246440ustar00rootroot00000000000000class AddUniqueIndexOnMembers < ActiveRecord::Migration[4.2] def self.up # Clean and reassign MemberRole rows if needed MemberRole.where("member_id NOT IN (SELECT id FROM #{Member.table_name})").delete_all MemberRole.update_all("member_id =" + " (SELECT min(m2.id) FROM #{Member.table_name} m1, #{Member.table_name} m2" + " WHERE m1.user_id = m2.user_id AND m1.project_id = m2.project_id" + " AND m1.id = #{MemberRole.table_name}.member_id)") # Remove duplicates Member.connection.select_values("SELECT m.id FROM #{Member.table_name} m" + " WHERE m.id > (SELECT min(m1.id) FROM #{Member.table_name} m1 WHERE m1.user_id = m.user_id AND m1.project_id = m.project_id)").each do |i| Member.where(["id = ?", i]).delete_all end # Then add a unique index add_index :members, [:user_id, :project_id], :unique => true end def self.down remove_index :members, [:user_id, :project_id] end end redmine-6.0.5/db/migrate/20101107130441_add_custom_fields_visible.rb000066400000000000000000000004701500112024600243140ustar00rootroot00000000000000class AddCustomFieldsVisible < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :visible, :boolean, :null => false, :default => true CustomField.update_all("visible = #{CustomField.connection.quoted_true}") end def self.down remove_column :custom_fields, :visible end end redmine-6.0.5/db/migrate/20101114115114_change_projects_name_limit.rb000066400000000000000000000004411500112024600244570ustar00rootroot00000000000000class ChangeProjectsNameLimit < ActiveRecord::Migration[4.2] def self.up change_column :projects, :name, :string, :limit => nil, :default => '', :null => false end def self.down change_column :projects, :name, :string, :limit => 30, :default => '', :null => false end end redmine-6.0.5/db/migrate/20101114115359_change_projects_identifier_limit.rb000066400000000000000000000003631500112024600256770ustar00rootroot00000000000000class ChangeProjectsIdentifierLimit < ActiveRecord::Migration[4.2] def self.up change_column :projects, :identifier, :string, :limit => nil end def self.down change_column :projects, :identifier, :string, :limit => 20 end end redmine-6.0.5/db/migrate/20110220160626_add_workflows_assignee_and_author.rb000066400000000000000000000007011500112024600260570ustar00rootroot00000000000000class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration[4.2] def self.up add_column :workflows, :assignee, :boolean, :null => false, :default => false add_column :workflows, :author, :boolean, :null => false, :default => false WorkflowRule.update_all(:assignee => false) WorkflowRule.update_all(:author => false) end def self.down remove_column :workflows, :assignee remove_column :workflows, :author end end redmine-6.0.5/db/migrate/20110223180944_add_users_salt.rb000066400000000000000000000002651500112024600221410ustar00rootroot00000000000000class AddUsersSalt < ActiveRecord::Migration[4.2] def self.up add_column :users, :salt, :string, :limit => 64 end def self.down remove_column :users, :salt end end redmine-6.0.5/db/migrate/20110223180953_salt_user_passwords.rb000066400000000000000000000006021500112024600232460ustar00rootroot00000000000000class SaltUserPasswords < ActiveRecord::Migration[4.2] def self.up say_with_time "Salting user passwords, this may take some time..." do User.salt_unsalted_passwords! end end def self.down # Unsalted passwords can not be restored raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed." end end redmine-6.0.5/db/migrate/20110224000000_add_repositories_path_encoding.rb000066400000000000000000000003651500112024600253360ustar00rootroot00000000000000class AddRepositoriesPathEncoding < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil end def self.down remove_column :repositories, :path_encoding end end redmine-6.0.5/db/migrate/20110226120112_change_repositories_password_limit.rb000066400000000000000000000004311500112024600262740ustar00rootroot00000000000000class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration[4.2] def self.up change_column :repositories, :password, :string, :limit => nil, :default => '' end def self.down change_column :repositories, :password, :string, :limit => 60, :default => '' end end redmine-6.0.5/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb000066400000000000000000000004571500112024600277770ustar00rootroot00000000000000class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration[4.2] def self.up change_column :auth_sources, :account_password, :string, :limit => nil, :default => '' end def self.down change_column :auth_sources, :account_password, :string, :limit => 60, :default => '' end end redmine-6.0.5/db/migrate/20110227125750_change_journal_details_values_to_text.rb000066400000000000000000000005111500112024600267460ustar00rootroot00000000000000class ChangeJournalDetailsValuesToText < ActiveRecord::Migration[4.2] def self.up change_column :journal_details, :old_value, :text change_column :journal_details, :value, :text end def self.down change_column :journal_details, :old_value, :string change_column :journal_details, :value, :string end end redmine-6.0.5/db/migrate/20110228000000_add_repositories_log_encoding.rb000066400000000000000000000003621500112024600251640ustar00rootroot00000000000000class AddRepositoriesLogEncoding < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil end def self.down remove_column :repositories, :log_encoding end end redmine-6.0.5/db/migrate/20110228000100_copy_repositories_log_encoding.rb000066400000000000000000000005551500112024600254130ustar00rootroot00000000000000class CopyRepositoriesLogEncoding < ActiveRecord::Migration[4.2] def self.up encoding = Setting.commit_logs_encoding.to_s.strip encoding = encoding.presence || 'UTF-8' # encoding is NULL by default Repository.where("type IN ('Bazaar', 'Cvs', 'Darcs')"). update_all(["log_encoding = ?", encoding]) end def self.down end end redmine-6.0.5/db/migrate/20110401192910_add_index_to_users_type.rb000066400000000000000000000002431500112024600240360ustar00rootroot00000000000000class AddIndexToUsersType < ActiveRecord::Migration[4.2] def self.up add_index :users, :type end def self.down remove_index :users, :type end end redmine-6.0.5/db/migrate/20110408103312_add_roles_issues_visibility.rb000066400000000000000000000004021500112024600247210ustar00rootroot00000000000000class AddRolesIssuesVisibility < ActiveRecord::Migration[4.2] def self.up add_column :roles, :issues_visibility, :string, :limit => 30, :default => 'default', :null => false end def self.down remove_column :roles, :issues_visibility end end redmine-6.0.5/db/migrate/20110412065600_add_issues_is_private.rb000066400000000000000000000003371500112024600235040ustar00rootroot00000000000000class AddIssuesIsPrivate < ActiveRecord::Migration[4.2] def self.up add_column :issues, :is_private, :boolean, :default => false, :null => false end def self.down remove_column :issues, :is_private end end redmine-6.0.5/db/migrate/20110511000000_add_repositories_extra_info.rb000066400000000000000000000003131500112024600246620ustar00rootroot00000000000000class AddRepositoriesExtraInfo < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :extra_info, :text end def self.down remove_column :repositories, :extra_info end end redmine-6.0.5/db/migrate/20110902000000_create_changeset_parents.rb000066400000000000000000000010221500112024600241270ustar00rootroot00000000000000class CreateChangesetParents < ActiveRecord::Migration[4.2] def self.up create_table :changeset_parents, :id => false do |t| t.column :changeset_id, :integer, :null => false t.column :parent_id, :integer, :null => false end add_index :changeset_parents, [:changeset_id], :unique => false, :name => :changeset_parents_changeset_ids add_index :changeset_parents, [:parent_id], :unique => false, :name => :changeset_parents_parent_ids end def self.down drop_table :changeset_parents end end redmine-6.0.5/db/migrate/20111201201315_add_unique_index_to_issue_relations.rb000066400000000000000000000011541500112024600264210ustar00rootroot00000000000000class AddUniqueIndexToIssueRelations < ActiveRecord::Migration[4.2] def self.up # Remove duplicates IssueRelation.connection.select_values("SELECT r.id FROM #{IssueRelation.table_name} r" + " WHERE r.id > (SELECT min(r1.id) FROM #{IssueRelation.table_name} r1 WHERE r1.issue_from_id = r.issue_from_id AND r1.issue_to_id = r.issue_to_id)").each do |i| IssueRelation.where(["id = ?", i]).delete_all end add_index :issue_relations, [:issue_from_id, :issue_to_id], :unique => true end def self.down remove_index :issue_relations, :column => [:issue_from_id, :issue_to_id] end end redmine-6.0.5/db/migrate/20120115143024_add_repositories_identifier.rb000066400000000000000000000003161500112024600246700ustar00rootroot00000000000000class AddRepositoriesIdentifier < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :identifier, :string end def self.down remove_column :repositories, :identifier end end redmine-6.0.5/db/migrate/20120115143100_add_repositories_is_default.rb000066400000000000000000000003411500112024600246560ustar00rootroot00000000000000class AddRepositoriesIsDefault < ActiveRecord::Migration[4.2] def self.up add_column :repositories, :is_default, :boolean, :default => false end def self.down remove_column :repositories, :is_default end end redmine-6.0.5/db/migrate/20120115143126_set_default_repositories.rb000066400000000000000000000011401500112024600242340ustar00rootroot00000000000000class SetDefaultRepositories < ActiveRecord::Migration[4.2] def self.up Repository.update_all(["is_default = ?", false]) # Sets the last repository as default in case multiple repositories exist for the same project Repository.connection.select_values("SELECT r.id FROM #{Repository.table_name} r" + " WHERE r.id = (SELECT max(r1.id) FROM #{Repository.table_name} r1 WHERE r1.project_id = r.project_id)").each do |i| Repository.where(["id = ?", i]).update_all(["is_default = ?", true]) end end def self.down Repository.update_all(["is_default = ?", false]) end end redmine-6.0.5/db/migrate/20120127174243_add_custom_fields_multiple.rb000066400000000000000000000003361500112024600245260ustar00rootroot00000000000000class AddCustomFieldsMultiple < ActiveRecord::Migration[4.2] def self.up add_column :custom_fields, :multiple, :boolean, :default => false end def self.down remove_column :custom_fields, :multiple end end redmine-6.0.5/db/migrate/20120205111326_change_users_login_limit.rb000066400000000000000000000004331500112024600241630ustar00rootroot00000000000000class ChangeUsersLoginLimit < ActiveRecord::Migration[4.2] def self.up change_column :users, :login, :string, :limit => nil, :default => '', :null => false end def self.down change_column :users, :login, :string, :limit => 30, :default => '', :null => false end end redmine-6.0.5/db/migrate/20120223110929_change_attachments_container_defaults.rb000066400000000000000000000022071500112024600267110ustar00rootroot00000000000000class ChangeAttachmentsContainerDefaults < ActiveRecord::Migration[4.2] def self.up # Need to drop the index otherwise the following error occurs in Rails 3.1.3: # # Index name 'temp_index_altered_attachments_on_container_id_and_container_type' on # table 'altered_attachments' is too long; the limit is 64 characters remove_index :attachments, [:container_id, :container_type] change_column :attachments, :container_id, :integer, :default => nil, :null => true change_column :attachments, :container_type, :string, :limit => 30, :default => nil, :null => true Attachment.where("container_id = 0").update_all("container_id = NULL") Attachment.where("container_type = ''").update_all("container_type = NULL") add_index :attachments, [:container_id, :container_type] end def self.down remove_index :attachments, [:container_id, :container_type] change_column :attachments, :container_id, :integer, :default => 0, :null => false change_column :attachments, :container_type, :string, :limit => 30, :default => "", :null => false add_index :attachments, [:container_id, :container_type] end end redmine-6.0.5/db/migrate/20120301153455_add_auth_sources_filter.rb000066400000000000000000000003011500112024600240100ustar00rootroot00000000000000class AddAuthSourcesFilter < ActiveRecord::Migration[4.2] def self.up add_column :auth_sources, :filter, :string end def self.down remove_column :auth_sources, :filter end end redmine-6.0.5/db/migrate/20120422150750_change_repositories_to_full_sti.rb000066400000000000000000000013451500112024600255760ustar00rootroot00000000000000class ChangeRepositoriesToFullSti < ActiveRecord::Migration[4.2] def up Repository.connection. select_rows("SELECT id, type FROM #{Repository.table_name}"). each do |repository_id, repository_type| unless /^Repository::/.match?(repository_type) Repository.where(["id = ?", repository_id]). update_all(["type = ?", "Repository::#{repository_type}"]) end end end def down Repository.connection. select_rows("SELECT id, type FROM #{Repository.table_name}"). each do |repository_id, repository_type| if repository_type =~ /^Repository::(.+)$/ Repository.where(["id = ?", repository_id]).update_all(["type = ?", $1]) end end end end redmine-6.0.5/db/migrate/20120705074331_add_trackers_fields_bits.rb000066400000000000000000000003241500112024600241340ustar00rootroot00000000000000class AddTrackersFieldsBits < ActiveRecord::Migration[4.2] def self.up add_column :trackers, :fields_bits, :integer, :default => 0 end def self.down remove_column :trackers, :fields_bits end end redmine-6.0.5/db/migrate/20120707064544_add_auth_sources_timeout.rb000066400000000000000000000003001500112024600242220ustar00rootroot00000000000000class AddAuthSourcesTimeout < ActiveRecord::Migration[4.2] def up add_column :auth_sources, :timeout, :integer end def self.down remove_column :auth_sources, :timeout end end redmine-6.0.5/db/migrate/20120714122000_add_workflows_type.rb000066400000000000000000000002671500112024600230360ustar00rootroot00000000000000class AddWorkflowsType < ActiveRecord::Migration[4.2] def up add_column :workflows, :type, :string, :limit => 30 end def down remove_column :workflows, :type end end redmine-6.0.5/db/migrate/20120714122100_update_workflows_to_sti.rb000066400000000000000000000003031500112024600241000ustar00rootroot00000000000000class UpdateWorkflowsToSti < ActiveRecord::Migration[4.2] def up WorkflowRule.update_all "type = 'WorkflowTransition'" end def down WorkflowRule.update_all "type = NULL" end end redmine-6.0.5/db/migrate/20120714122200_add_workflows_rule_fields.rb000066400000000000000000000004451500112024600243520ustar00rootroot00000000000000class AddWorkflowsRuleFields < ActiveRecord::Migration[4.2] def up add_column :workflows, :field_name, :string, :limit => 30 add_column :workflows, :rule, :string, :limit => 30 end def down remove_column :workflows, :field_name remove_column :workflows, :rule end end redmine-6.0.5/db/migrate/20120731164049_add_boards_parent_id.rb000066400000000000000000000002571500112024600232600ustar00rootroot00000000000000class AddBoardsParentId < ActiveRecord::Migration[4.2] def up add_column :boards, :parent_id, :integer end def down remove_column :boards, :parent_id end end redmine-6.0.5/db/migrate/20120930112914_add_journals_private_notes.rb000066400000000000000000000003441500112024600245500ustar00rootroot00000000000000class AddJournalsPrivateNotes < ActiveRecord::Migration[4.2] def up add_column :journals, :private_notes, :boolean, :default => false, :null => false end def down remove_column :journals, :private_notes end end redmine-6.0.5/db/migrate/20121026002032_add_enumerations_position_name.rb000066400000000000000000000003321500112024600253650ustar00rootroot00000000000000class AddEnumerationsPositionName < ActiveRecord::Migration[4.2] def up add_column :enumerations, :position_name, :string, :limit => 30 end def down remove_column :enumerations, :position_name end end redmine-6.0.5/db/migrate/20121026003537_populate_enumerations_position_name.rb000066400000000000000000000002731500112024600265050ustar00rootroot00000000000000class PopulateEnumerationsPositionName < ActiveRecord::Migration[4.2] def up IssuePriority.compute_position_names end def down IssuePriority.clear_position_names end end redmine-6.0.5/db/migrate/20121209123234_add_queries_type.rb000066400000000000000000000002431500112024600224620ustar00rootroot00000000000000class AddQueriesType < ActiveRecord::Migration[4.2] def up add_column :queries, :type, :string end def down remove_column :queries, :type end end redmine-6.0.5/db/migrate/20121209123358_update_queries_to_sti.rb000066400000000000000000000002561500112024600235470ustar00rootroot00000000000000class UpdateQueriesToSti < ActiveRecord::Migration[4.2] def up ::Query.update_all :type => 'IssueQuery' end def down ::Query.update_all :type => nil end end redmine-6.0.5/db/migrate/20121213084931_add_attachments_disk_directory.rb000066400000000000000000000003141500112024600253610ustar00rootroot00000000000000class AddAttachmentsDiskDirectory < ActiveRecord::Migration[4.2] def up add_column :attachments, :disk_directory, :string end def down remove_column :attachments, :disk_directory end end redmine-6.0.5/db/migrate/20130110122628_split_documents_permissions.rb000066400000000000000000000014041500112024600250000ustar00rootroot00000000000000class SplitDocumentsPermissions < ActiveRecord::Migration[4.2] def up # :manage_documents permission split into 3 permissions: # :add_documents, :edit_documents and :delete_documents Role.all.each do |role| if role.has_permission?(:manage_documents) role.add_permission! :add_documents, :edit_documents, :delete_documents role.remove_permission! :manage_documents end end end def down Role.all.each do |role| if role.has_permission?(:add_documents) || role.has_permission?(:edit_documents) || role.has_permission?(:delete_documents) role.remove_permission! :add_documents, :edit_documents, :delete_documents role.add_permission! :manage_documents end end end end redmine-6.0.5/db/migrate/20130201184705_add_unique_index_on_tokens_value.rb000066400000000000000000000010031500112024600257110ustar00rootroot00000000000000class AddUniqueIndexOnTokensValue < ActiveRecord::Migration[4.2] def up say_with_time "Adding unique index on tokens, this may take some time..." do # Just in case duplicates = Token.connection.select_values("SELECT value FROM #{Token.table_name} GROUP BY value HAVING COUNT(id) > 1") Token.where(:value => duplicates).delete_all add_index :tokens, :value, :unique => true, :name => 'tokens_value' end end def down remove_index :tokens, :name => 'tokens_value' end end redmine-6.0.5/db/migrate/20130202090625_add_projects_inherit_members.rb000066400000000000000000000003521500112024600250320ustar00rootroot00000000000000class AddProjectsInheritMembers < ActiveRecord::Migration[4.2] def up add_column :projects, :inherit_members, :boolean, :default => false, :null => false end def down remove_column :projects, :inherit_members end end redmine-6.0.5/db/migrate/20130207175206_add_unique_index_on_custom_fields_trackers.rb000066400000000000000000000023511500112024600277610ustar00rootroot00000000000000class AddUniqueIndexOnCustomFieldsTrackers < ActiveRecord::Migration[4.2] def up table_name = "#{CustomField.table_name_prefix}custom_fields_trackers#{CustomField.table_name_suffix}" duplicates = CustomField.connection.select_rows("SELECT custom_field_id, tracker_id FROM #{table_name} GROUP BY custom_field_id, tracker_id HAVING COUNT(*) > 1") duplicates.each do |custom_field_id, tracker_id| # Removes duplicate rows CustomField.connection.execute("DELETE FROM #{table_name} WHERE custom_field_id=#{custom_field_id} AND tracker_id=#{tracker_id}") # And insert one CustomField.connection.execute("INSERT INTO #{table_name} (custom_field_id, tracker_id) VALUES (#{custom_field_id}, #{tracker_id})") end if index_exists? :custom_fields_trackers, [:custom_field_id, :tracker_id] remove_index :custom_fields_trackers, [:custom_field_id, :tracker_id] end add_index :custom_fields_trackers, [:custom_field_id, :tracker_id], :unique => true end def down if index_exists? :custom_fields_trackers, [:custom_field_id, :tracker_id] remove_index :custom_fields_trackers, [:custom_field_id, :tracker_id] end add_index :custom_fields_trackers, [:custom_field_id, :tracker_id] end end redmine-6.0.5/db/migrate/20130207181455_add_unique_index_on_custom_fields_projects.rb000066400000000000000000000023511500112024600277770ustar00rootroot00000000000000class AddUniqueIndexOnCustomFieldsProjects < ActiveRecord::Migration[4.2] def up table_name = "#{CustomField.table_name_prefix}custom_fields_projects#{CustomField.table_name_suffix}" duplicates = CustomField.connection.select_rows("SELECT custom_field_id, project_id FROM #{table_name} GROUP BY custom_field_id, project_id HAVING COUNT(*) > 1") duplicates.each do |custom_field_id, project_id| # Removes duplicate rows CustomField.connection.execute("DELETE FROM #{table_name} WHERE custom_field_id=#{custom_field_id} AND project_id=#{project_id}") # And insert one CustomField.connection.execute("INSERT INTO #{table_name} (custom_field_id, project_id) VALUES (#{custom_field_id}, #{project_id})") end if index_exists? :custom_fields_projects, [:custom_field_id, :project_id] remove_index :custom_fields_projects, [:custom_field_id, :project_id] end add_index :custom_fields_projects, [:custom_field_id, :project_id], :unique => true end def down if index_exists? :custom_fields_projects, [:custom_field_id, :project_id] remove_index :custom_fields_projects, [:custom_field_id, :project_id] end add_index :custom_fields_projects, [:custom_field_id, :project_id] end end redmine-6.0.5/db/migrate/20130215073721_change_users_lastname_length_to_255.rb000066400000000000000000000004521500112024600261300ustar00rootroot00000000000000class ChangeUsersLastnameLengthTo255 < ActiveRecord::Migration[4.2] def self.up change_column :users, :lastname, :string, :limit => 255, :default => '', :null => false end def self.down change_column :users, :lastname, :string, :limit => 30, :default => '', :null => false end end redmine-6.0.5/db/migrate/20130215111127_add_issues_closed_on.rb000066400000000000000000000003011500112024600232720ustar00rootroot00000000000000class AddIssuesClosedOn < ActiveRecord::Migration[4.2] def up add_column :issues, :closed_on, :datetime, :default => nil end def down remove_column :issues, :closed_on end end redmine-6.0.5/db/migrate/20130215111141_populate_issues_closed_on.rb000066400000000000000000000025511500112024600244000ustar00rootroot00000000000000class PopulateIssuesClosedOn < ActiveRecord::Migration[4.2] def up closed_status_ids = IssueStatus.where(:is_closed => true).pluck(:id) if closed_status_ids.any? # First set closed_on for issues that have been closed once closed_status_values = closed_status_ids.map {|status_id| "'#{status_id}'"}.join(',') subselect = "SELECT MAX(#{Journal.table_name}.created_on)" + " FROM #{Journal.table_name}, #{JournalDetail.table_name}" + " WHERE #{Journal.table_name}.id = #{JournalDetail.table_name}.journal_id" + " AND #{Journal.table_name}.journalized_type = 'Issue' AND #{Journal.table_name}.journalized_id = #{Issue.table_name}.id" + " AND #{JournalDetail.table_name}.property = 'attr' AND #{JournalDetail.table_name}.prop_key = 'status_id'" + " AND #{JournalDetail.table_name}.old_value NOT IN (#{closed_status_values})" + " AND #{JournalDetail.table_name}.value IN (#{closed_status_values})" Issue.update_all "closed_on = (#{subselect})" # Then set closed_on for closed issues that weren't up updated by the above UPDATE # No journal was found so we assume that they were closed on creation Issue.where({:status_id => closed_status_ids, :closed_on => nil}). update_all("closed_on = created_on") end end def down Issue.update_all :closed_on => nil end end redmine-6.0.5/db/migrate/20130217094251_remove_issues_default_fk_values.rb000066400000000000000000000013201500112024600255710ustar00rootroot00000000000000class RemoveIssuesDefaultFkValues < ActiveRecord::Migration[4.2] def up change_column_default :issues, :tracker_id, nil change_column_default :issues, :project_id, nil change_column_default :issues, :status_id, nil change_column_default :issues, :assigned_to_id, nil change_column_default :issues, :priority_id, nil change_column_default :issues, :author_id, nil end def down change_column_default :issues, :tracker_id, 0 change_column_default :issues, :project_id, 0 change_column_default :issues, :status_id, 0 change_column_default :issues, :assigned_to_id, 0 change_column_default :issues, :priority_id, 0 change_column_default :issues, :author_id, 0 end end redmine-6.0.5/db/migrate/20130602092539_create_queries_roles.rb000066400000000000000000000006111500112024600233510ustar00rootroot00000000000000class CreateQueriesRoles < ActiveRecord::Migration[4.2] def self.up create_table :queries_roles, :id => false do |t| t.column :query_id, :integer, :null => false t.column :role_id, :integer, :null => false end add_index :queries_roles, [:query_id, :role_id], :unique => true, :name => :queries_roles_ids end def self.down drop_table :queries_roles end end redmine-6.0.5/db/migrate/20130710182539_add_queries_visibility.rb000066400000000000000000000007031500112024600237030ustar00rootroot00000000000000class AddQueriesVisibility < ActiveRecord::Migration[4.2] def up add_column :queries, :visibility, :integer, :default => 0 Query.where(:is_public => true).update_all(:visibility => 2) remove_column :queries, :is_public end def down add_column :queries, :is_public, :boolean, :default => true, :null => false Query.where('visibility <> ?', 2).update_all(:is_public => false) remove_column :queries, :visibility end end redmine-6.0.5/db/migrate/20130713104233_create_custom_fields_roles.rb000066400000000000000000000010101500112024600245120ustar00rootroot00000000000000class CreateCustomFieldsRoles < ActiveRecord::Migration[4.2] def self.up create_table :custom_fields_roles, :id => false do |t| t.column :custom_field_id, :integer, :null => false t.column :role_id, :integer, :null => false end add_index :custom_fields_roles, [:custom_field_id, :role_id], :unique => true, :name => :custom_fields_roles_ids CustomField.where({:type => 'IssueCustomField'}).update_all({:visible => true}) end def self.down drop_table :custom_fields_roles end end redmine-6.0.5/db/migrate/20130713111657_add_queries_options.rb000066400000000000000000000002521500112024600232020ustar00rootroot00000000000000class AddQueriesOptions < ActiveRecord::Migration[4.2] def up add_column :queries, :options, :text end def down remove_column :queries, :options end end redmine-6.0.5/db/migrate/20130729070143_add_users_must_change_passwd.rb000066400000000000000000000003511500112024600250520ustar00rootroot00000000000000class AddUsersMustChangePasswd < ActiveRecord::Migration[4.2] def up add_column :users, :must_change_passwd, :boolean, :default => false, :null => false end def down remove_column :users, :must_change_passwd end end redmine-6.0.5/db/migrate/20130911193200_remove_eols_from_attachments_filename.rb000066400000000000000000000005471500112024600267400ustar00rootroot00000000000000class RemoveEolsFromAttachmentsFilename < ActiveRecord::Migration[4.2] def up Attachment.where("filename like ? or filename like ?", "%\r%", "%\n%").each do |attachment| filename = attachment.filename.to_s.tr("\r\n", "_") Attachment.where(:id => attachment.id).update_all(:filename => filename) end end def down # nop end end redmine-6.0.5/db/migrate/20131004113137_support_for_multiple_commit_keywords.rb000066400000000000000000000014251500112024600267260ustar00rootroot00000000000000class SupportForMultipleCommitKeywords < ActiveRecord::Migration[4.2] def up # Replaces commit_fix_keywords, commit_fix_status_id, commit_fix_done_ratio settings # with commit_update_keywords setting keywords = Setting.where(:name => 'commit_fix_keywords').pick(:value) status_id = Setting.where(:name => 'commit_fix_status_id').pick(:value) done_ratio = Setting.where(:name => 'commit_fix_done_ratio').pick(:value) if keywords.present? Setting.commit_update_keywords = [{'keywords' => keywords, 'status_id' => status_id, 'done_ratio' => done_ratio}] end Setting.where(:name => %w(commit_fix_keywords commit_fix_status_id commit_fix_done_ratio)).delete_all end def down Setting.where(:name => 'commit_update_keywords').delete_all end end redmine-6.0.5/db/migrate/20131005100610_add_repositories_created_on.rb000066400000000000000000000003061500112024600246420ustar00rootroot00000000000000class AddRepositoriesCreatedOn < ActiveRecord::Migration[4.2] def up add_column :repositories, :created_on, :timestamp end def down remove_column :repositories, :created_on end end redmine-6.0.5/db/migrate/20131124175346_add_custom_fields_format_store.rb000066400000000000000000000003111500112024600253740ustar00rootroot00000000000000class AddCustomFieldsFormatStore < ActiveRecord::Migration[4.2] def up add_column :custom_fields, :format_store, :text end def down remove_column :custom_fields, :format_store end end redmine-6.0.5/db/migrate/20131210180802_add_custom_fields_description.rb000066400000000000000000000003071500112024600252050ustar00rootroot00000000000000class AddCustomFieldsDescription < ActiveRecord::Migration[4.2] def up add_column :custom_fields, :description, :text end def down remove_column :custom_fields, :description end end redmine-6.0.5/db/migrate/20131214094309_remove_custom_fields_min_max_length_default_values.rb000066400000000000000000000013451500112024600315200ustar00rootroot00000000000000class RemoveCustomFieldsMinMaxLengthDefaultValues < ActiveRecord::Migration[4.2] def up change_column :custom_fields, :min_length, :int, :default => nil, :null => true change_column :custom_fields, :max_length, :int, :default => nil, :null => true CustomField.where(:min_length => 0).update_all(:min_length => nil) CustomField.where(:max_length => 0).update_all(:max_length => nil) end def self.down CustomField.where(:min_length => nil).update_all(:min_length => 0) CustomField.where(:max_length => nil).update_all(:max_length => 0) change_column :custom_fields, :min_length, :int, :default => 0, :null => false change_column :custom_fields, :max_length, :int, :default => 0, :null => false end end redmine-6.0.5/db/migrate/20131215104612_store_relation_type_in_journal_details.rb000066400000000000000000000015371500112024600271570ustar00rootroot00000000000000class StoreRelationTypeInJournalDetails < ActiveRecord::Migration[4.2] MAPPING = { "label_relates_to" => "relates", "label_duplicates" => "duplicates", "label_duplicated_by" => "duplicated", "label_blocks" => "blocks", "label_blocked_by" => "blocked", "label_precedes" => "precedes", "label_follows" => "follows", "label_copied_to" => "copied_to", "label_copied_from" => "copied_from" } def up StoreRelationTypeInJournalDetails::MAPPING.each do |prop_key, replacement| JournalDetail.where(:property => 'relation', :prop_key => prop_key).update_all(:prop_key => replacement) end end def down StoreRelationTypeInJournalDetails::MAPPING.each do |prop_key, replacement| JournalDetail.where(:property => 'relation', :prop_key => replacement).update_all(:prop_key => prop_key) end end end redmine-6.0.5/db/migrate/20131218183023_delete_orphan_time_entries_custom_values.rb000066400000000000000000000004211500112024600274660ustar00rootroot00000000000000class DeleteOrphanTimeEntriesCustomValues < ActiveRecord::Migration[4.2] def up CustomValue.where("customized_type = ? AND NOT EXISTS (SELECT 1 FROM #{TimeEntry.table_name} t WHERE t.id = customized_id)", "TimeEntry").delete_all end def down # nop end end redmine-6.0.5/db/migrate/20140228130325_change_changesets_comments_limit.rb000066400000000000000000000004001500112024600256640ustar00rootroot00000000000000class ChangeChangesetsCommentsLimit < ActiveRecord::Migration[4.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :changesets, :comments, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20140903143914_add_password_changed_at_to_user.rb000066400000000000000000000002141500112024600255120ustar00rootroot00000000000000class AddPasswordChangedAtToUser < ActiveRecord::Migration[4.2] def change add_column :users, :passwd_changed_on, :datetime end end redmine-6.0.5/db/migrate/20140920094058_insert_builtin_groups.rb000066400000000000000000000007551500112024600236110ustar00rootroot00000000000000class InsertBuiltinGroups < ActiveRecord::Migration[4.2] def up Group.reset_column_information unless GroupAnonymous.any? g = GroupAnonymous.new(:lastname => 'Anonymous users') g.status = 1 g.save :validate => false end unless GroupNonMember.any? g = GroupNonMember.new(:lastname => 'Non member users') g.status = 1 g.save :validate => false end end def down GroupAnonymous.delete_all GroupNonMember.delete_all end end redmine-6.0.5/db/migrate/20141029181752_add_trackers_default_status_id.rb000066400000000000000000000006311500112024600253610ustar00rootroot00000000000000class AddTrackersDefaultStatusId < ActiveRecord::Migration[4.2] def up add_column :trackers, :default_status_id, :integer status_id = IssueStatus.where(:is_default => true).pick(:id) status_id ||= IssueStatus.order(:position).pick(:id) if status_id Tracker.update_all :default_status_id => status_id end end def down remove_column :trackers, :default_status_id end end redmine-6.0.5/db/migrate/20141029181824_remove_issue_statuses_is_default.rb000066400000000000000000000006511500112024600260110ustar00rootroot00000000000000class RemoveIssueStatusesIsDefault < ActiveRecord::Migration[4.2] def up remove_column :issue_statuses, :is_default end def down add_column :issue_statuses, :is_default, :boolean, :null => false, :default => false # Restores the first status as default default_status_id = IssueStatus.order(:position).pick(:id) IssueStatus.where(:id => default_status_id).update_all(:is_default => true) end end redmine-6.0.5/db/migrate/20141109112308_add_roles_users_visibility.rb000066400000000000000000000003731500112024600245650ustar00rootroot00000000000000class AddRolesUsersVisibility < ActiveRecord::Migration[4.2] def self.up add_column :roles, :users_visibility, :string, :limit => 30, :default => 'all', :null => false end def self.down remove_column :roles, :users_visibility end end redmine-6.0.5/db/migrate/20141122124142_add_wiki_redirects_redirects_to_wiki_id.rb000066400000000000000000000005771500112024600272250ustar00rootroot00000000000000class AddWikiRedirectsRedirectsToWikiId < ActiveRecord::Migration[4.2] def self.up add_column :wiki_redirects, :redirects_to_wiki_id, :integer WikiRedirect.update_all "redirects_to_wiki_id = wiki_id" change_column :wiki_redirects, :redirects_to_wiki_id, :integer, :null => false end def self.down remove_column :wiki_redirects, :redirects_to_wiki_id end end redmine-6.0.5/db/migrate/20150113194759_create_email_addresses.rb000066400000000000000000000007341500112024600236300ustar00rootroot00000000000000class CreateEmailAddresses < ActiveRecord::Migration[4.2] def change create_table :email_addresses do |t| t.column :user_id, :integer, :null => false t.column :address, :string, :null => false t.column :is_default, :boolean, :null => false, :default => false t.column :notify, :boolean, :null => false, :default => true t.column :created_on, :datetime, :null => false t.column :updated_on, :datetime, :null => false end end end redmine-6.0.5/db/migrate/20150113211532_populate_email_addresses.rb000066400000000000000000000007701500112024600241710ustar00rootroot00000000000000class PopulateEmailAddresses < ActiveRecord::Migration[4.2] def self.up t = EmailAddress.connection.quoted_true n = EmailAddress.connection.quoted_date(Time.now) sql = "INSERT INTO #{EmailAddress.table_name} (user_id, address, is_default, notify, created_on, updated_on)" + " SELECT id, mail, #{t}, #{t}, '#{n}', '#{n}' FROM #{User.table_name} WHERE type = 'User' ORDER BY id" EmailAddress.connection.execute(sql) end def self.down EmailAddress.delete_all end end redmine-6.0.5/db/migrate/20150113213922_remove_users_mail.rb000066400000000000000000000005331500112024600226560ustar00rootroot00000000000000class RemoveUsersMail < ActiveRecord::Migration[4.2] def self.up remove_column :users, :mail end def self.down add_column :users, :mail, :string, :limit => 60, :default => '', :null => false EmailAddress.where(:is_default => true).each do |a| User.where(:id => a.user_id).update_all(:mail => a.address) end end end redmine-6.0.5/db/migrate/20150113213955_add_email_addresses_user_id_index.rb000066400000000000000000000002741500112024600260030ustar00rootroot00000000000000class AddEmailAddressesUserIdIndex < ActiveRecord::Migration[4.2] def up add_index :email_addresses, :user_id end def down remove_index :email_addresses, :user_id end end redmine-6.0.5/db/migrate/20150208105930_replace_move_issues_permission.rb000066400000000000000000000014141500112024600254450ustar00rootroot00000000000000class ReplaceMoveIssuesPermission < ActiveRecord::Migration[4.2] def self.up Role.all.each do |role| if role.has_permission?(:edit_issues) && !role.has_permission?(:move_issues) # inserts one line per tracker and status rule = WorkflowPermission.connection.quote_column_name('rule') # rule is a reserved keyword in SQLServer WorkflowPermission.connection.execute( "INSERT INTO #{WorkflowPermission.table_name} (tracker_id, old_status_id, role_id, type, field_name, #{rule})" + " SELECT t.id, s.id, #{role.id}, 'WorkflowPermission', 'project_id', 'readonly'" + " FROM #{Tracker.table_name} t, #{IssueStatus.table_name} s" ) end end end def self.down raise IrreversibleMigration end end redmine-6.0.5/db/migrate/20150510083747_change_documents_title_limit.rb000066400000000000000000000004471500112024600250620ustar00rootroot00000000000000class ChangeDocumentsTitleLimit < ActiveRecord::Migration[4.2] def self.up change_column :documents, :title, :string, :limit => nil, :default => '', :null => false end def self.down change_column :documents, :title, :string, :limit => 60, :default => '', :null => false end end redmine-6.0.5/db/migrate/20150525103953_clear_estimated_hours_on_parent_issues.rb000066400000000000000000000012151500112024600271520ustar00rootroot00000000000000class ClearEstimatedHoursOnParentIssues < ActiveRecord::Migration[4.2] def self.up # Clears estimated hours on parent issues Issue.where("rgt > lft + 1 AND estimated_hours > 0").update_all :estimated_hours => nil end def self.down table_name = Issue.table_name leaves_sum_select = "SELECT SUM(leaves.estimated_hours) FROM (SELECT * FROM #{table_name}) AS leaves" + " WHERE leaves.root_id = #{table_name}.root_id AND leaves.lft > #{table_name}.lft AND leaves.rgt < #{table_name}.rgt" + " AND leaves.rgt = leaves.lft + 1" Issue.where("rgt > lft + 1").update_all "estimated_hours = (#{leaves_sum_select})" end end redmine-6.0.5/db/migrate/20150526183158_add_roles_time_entries_visibility.rb000066400000000000000000000004171500112024600261300ustar00rootroot00000000000000class AddRolesTimeEntriesVisibility < ActiveRecord::Migration[4.2] def self.up add_column :roles, :time_entries_visibility, :string, :limit => 30, :default => 'all', :null => false end def self.down remove_column :roles, :time_entries_visibility end end redmine-6.0.5/db/migrate/20150528084820_add_roles_all_roles_managed.rb000066400000000000000000000002521500112024600246150ustar00rootroot00000000000000class AddRolesAllRolesManaged < ActiveRecord::Migration[4.2] def change add_column :roles, :all_roles_managed, :boolean, :default => true, :null => false end end redmine-6.0.5/db/migrate/20150528092912_create_roles_managed_roles.rb000066400000000000000000000003611500112024600245020ustar00rootroot00000000000000class CreateRolesManagedRoles < ActiveRecord::Migration[4.2] def change create_table :roles_managed_roles, :id => false do |t| t.integer :role_id, :null => false t.integer :managed_role_id, :null => false end end end redmine-6.0.5/db/migrate/20150528093249_add_unique_index_on_roles_managed_roles.rb000066400000000000000000000002601500112024600272420ustar00rootroot00000000000000class AddUniqueIndexOnRolesManagedRoles < ActiveRecord::Migration[4.2] def change add_index :roles_managed_roles, [:role_id, :managed_role_id], :unique => true end end redmine-6.0.5/db/migrate/20150725112753_insert_allowed_statuses_for_new_issues.rb000066400000000000000000000022501500112024600272250ustar00rootroot00000000000000class InsertAllowedStatusesForNewIssues < ActiveRecord::Migration[4.2] def self.up # Adds the default status for all trackers and roles sql = "INSERT INTO #{WorkflowTransition.table_name} (tracker_id, old_status_id, new_status_id, role_id, type)" + " SELECT t.id, 0, t.default_status_id, r.id, 'WorkflowTransition'" + " FROM #{Tracker.table_name} t, #{Role.table_name} r" WorkflowTransition.connection.execute(sql) # Adds other statuses that are reachable with one transition # to preserve previous behaviour as default sql = "INSERT INTO #{WorkflowTransition.table_name} (tracker_id, old_status_id, new_status_id, role_id, type)" + " SELECT t.id, 0, w.new_status_id, w.role_id, 'WorkflowTransition'" + " FROM #{Tracker.table_name} t" + " JOIN #{IssueStatus.table_name} s on s.id = t.default_status_id" + " JOIN #{WorkflowTransition.table_name} w on w.tracker_id = t.id and w.old_status_id = s.id and w.type = 'WorkflowTransition'" + " WHERE w.new_status_id <> t.default_status_id" WorkflowTransition.connection.execute(sql) end def self.down WorkflowTransition.where(:old_status_id => 0).delete_all end end redmine-6.0.5/db/migrate/20150730122707_create_imports.rb000066400000000000000000000005351500112024600221650ustar00rootroot00000000000000class CreateImports < ActiveRecord::Migration[4.2] def change create_table :imports do |t| t.string :type t.integer :user_id, :null => false t.string :filename t.text :settings t.integer :total_items t.boolean :finished, :null => false, :default => false t.timestamps :null => false end end end redmine-6.0.5/db/migrate/20150730122735_create_import_items.rb000066400000000000000000000003771500112024600232100ustar00rootroot00000000000000class CreateImportItems < ActiveRecord::Migration[4.2] def change create_table :import_items do |t| t.integer :import_id, :null => false t.integer :position, :null => false t.integer :obj_id t.text :message end end end redmine-6.0.5/db/migrate/20150921204850_change_time_entries_comments_limit_to_1024.rb000066400000000000000000000004001500112024600274050ustar00rootroot00000000000000class ChangeTimeEntriesCommentsLimitTo1024 < ActiveRecord::Migration[4.2] def self.up change_column :time_entries, :comments, :string, :limit => 1024 end def self.down change_column :time_entries, :comments, :string, :limit => 255 end end redmine-6.0.5/db/migrate/20150921210243_change_wiki_contents_comments_limit_to_1024.rb000066400000000000000000000007341500112024600276010ustar00rootroot00000000000000class ChangeWikiContentsCommentsLimitTo1024 < ActiveRecord::Migration[4.2] def self.up change_column :wiki_content_versions, :comments, :string, :limit => 1024, :default => '' change_column :wiki_contents, :comments, :string, :limit => 1024, :default => '' end def self.down change_column :wiki_content_versions, :comments, :string, :limit => 255, :default => '' change_column :wiki_contents, :comments, :string, :limit => 255, :default => '' end end redmine-6.0.5/db/migrate/20151020182334_change_attachments_filesize_limit_to_8.rb000066400000000000000000000004661500112024600270040ustar00rootroot00000000000000class ChangeAttachmentsFilesizeLimitTo8 < ActiveRecord::Migration[4.2] def self.up change_column :attachments, :filesize, :integer, :limit => 8, :default => 0, :null => false end def self.down change_column :attachments, :filesize, :integer, :limit => 4, :default => 0, :null => false end end redmine-6.0.5/db/migrate/20151020182731_fix_comma_in_user_format_setting_value.rb000066400000000000000000000006211500112024600271240ustar00rootroot00000000000000class FixCommaInUserFormatSettingValue < ActiveRecord::Migration[4.2] def self.up Setting. where(:name => 'user_format', :value => 'lastname_coma_firstname'). update_all(:value => 'lastname_comma_firstname') end def self.down Setting. where(:name => 'user_format', :value => 'lastname_comma_firstname'). update_all(:value => 'lastname_coma_firstname') end end redmine-6.0.5/db/migrate/20151021184614_change_issue_categories_name_limit_to_60.rb000066400000000000000000000004731500112024600272140ustar00rootroot00000000000000class ChangeIssueCategoriesNameLimitTo60 < ActiveRecord::Migration[4.2] def self.up change_column :issue_categories, :name, :string, :limit => 60, :default => "", :null => false end def self.down change_column :issue_categories, :name, :string, :limit => 30, :default => "", :null => false end end redmine-6.0.5/db/migrate/20151021185456_change_auth_sources_filter_to_text.rb000066400000000000000000000003241500112024600262710ustar00rootroot00000000000000class ChangeAuthSourcesFilterToText < ActiveRecord::Migration[4.2] def self.up change_column :auth_sources, :filter, :text end def self.down change_column :auth_sources, :filter, :string end end redmine-6.0.5/db/migrate/20151021190616_change_user_preferences_hide_mail_default_to_true.rb000066400000000000000000000004301500112024600312410ustar00rootroot00000000000000class ChangeUserPreferencesHideMailDefaultToTrue < ActiveRecord::Migration[4.2] def self.up change_column :user_preferences, :hide_mail, :boolean, :default => true end def self.down change_column :user_preferences, :hide_mail, :boolean, :default => false end end redmine-6.0.5/db/migrate/20151024082034_add_tokens_updated_on.rb000066400000000000000000000003561500112024600234560ustar00rootroot00000000000000class AddTokensUpdatedOn < ActiveRecord::Migration[4.2] def self.up add_column :tokens, :updated_on, :timestamp Token.update_all("updated_on = created_on") end def self.down remove_column :tokens, :updated_on end end redmine-6.0.5/db/migrate/20151025072118_create_custom_field_enumerations.rb000066400000000000000000000005361500112024600257350ustar00rootroot00000000000000class CreateCustomFieldEnumerations < ActiveRecord::Migration[4.2] def change create_table :custom_field_enumerations do |t| t.integer :custom_field_id, :null => false t.string :name, :null => false t.boolean :active, :default => true, :null => false t.integer :position, :default => 1, :null => false end end end redmine-6.0.5/db/migrate/20151031095005_add_projects_default_version_id.rb000066400000000000000000000006051500112024600255240ustar00rootroot00000000000000class AddProjectsDefaultVersionId < ActiveRecord::Migration[4.2] def self.up # Don't try to add the column if redmine_default_version plugin was used unless column_exists?(:projects, :default_version_id, :integer) add_column :projects, :default_version_id, :integer, :default => nil end end def self.down remove_column :projects, :default_version_id end end redmine-6.0.5/db/migrate/20160404080304_force_password_reset_during_setup.rb000066400000000000000000000004631500112024600261520ustar00rootroot00000000000000class ForcePasswordResetDuringSetup < ActiveRecord::Migration[4.2] def up User.where(login: "admin", last_login_on: nil).update_all(must_change_passwd: true) end def down User.where(login: "admin", last_login_on: nil, must_change_passwd: true).update_all(must_change_passwd: false) end end redmine-6.0.5/db/migrate/20160416072926_remove_position_defaults.rb000066400000000000000000000006511500112024600242650ustar00rootroot00000000000000class RemovePositionDefaults < ActiveRecord::Migration[4.2] def up [Board, CustomField, Enumeration, IssueStatus, Role, Tracker].each do |klass| change_column klass.table_name, :position, :integer, :default => nil end end def down [Board, CustomField, Enumeration, IssueStatus, Role, Tracker].each do |klass| change_column klass.table_name, :position, :integer, :default => 1 end end end redmine-6.0.5/db/migrate/20160529063352_add_roles_settings.rb000066400000000000000000000001651500112024600230270ustar00rootroot00000000000000class AddRolesSettings < ActiveRecord::Migration[4.2] def change add_column :roles, :settings, :text end end redmine-6.0.5/db/migrate/20161001122012_add_tracker_id_index_to_workflows.rb000066400000000000000000000003001500112024600260360ustar00rootroot00000000000000class AddTrackerIdIndexToWorkflows < ActiveRecord::Migration[4.2] def self.up add_index :workflows, :tracker_id end def self.down remove_index :workflows, :tracker_id end end redmine-6.0.5/db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb000066400000000000000000000002141500112024600273500ustar00rootroot00000000000000class AddIndexOnMemberRolesInheritedFrom < ActiveRecord::Migration[4.2] def change add_index :member_roles, :inherited_from end end redmine-6.0.5/db/migrate/20161010081301_change_issues_description_limit.rb000066400000000000000000000003761500112024600255540ustar00rootroot00000000000000class ChangeIssuesDescriptionLimit < ActiveRecord::Migration[4.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :issues, :description, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20161010081528_change_journal_details_value_limit.rb000066400000000000000000000005171500112024600262210ustar00rootroot00000000000000class ChangeJournalDetailsValueLimit < ActiveRecord::Migration[4.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :journal_details, :value, :text, :limit => max_size change_column :journal_details, :old_value, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20161010081600_change_journals_notes_limit.rb000066400000000000000000000003661500112024600247040ustar00rootroot00000000000000class ChangeJournalsNotesLimit < ActiveRecord::Migration[4.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :journals, :notes, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20161126094932_add_index_on_changesets_issues_issue_id.rb000066400000000000000000000002121500112024600272440ustar00rootroot00000000000000class AddIndexOnChangesetsIssuesIssueId < ActiveRecord::Migration[4.2] def change add_index :changesets_issues, :issue_id end end redmine-6.0.5/db/migrate/20161220091118_add_index_on_issues_parent_id.rb000066400000000000000000000001671500112024600251760ustar00rootroot00000000000000class AddIndexOnIssuesParentId < ActiveRecord::Migration[4.2] def change add_index :issues, :parent_id end end redmine-6.0.5/db/migrate/20170207050700_add_index_on_disk_filename_to_attachments.rb000066400000000000000000000002131500112024600275120ustar00rootroot00000000000000class AddIndexOnDiskFilenameToAttachments < ActiveRecord::Migration[4.2] def change add_index :attachments, :disk_filename end end redmine-6.0.5/db/migrate/20170302015225_change_attachments_digest_limit_to_64.rb000066400000000000000000000003431500112024600265230ustar00rootroot00000000000000class ChangeAttachmentsDigestLimitTo64 < ActiveRecord::Migration[4.2] def up change_column :attachments, :digest, :string, limit: 64 end def down change_column :attachments, :digest, :string, limit: 40 end end redmine-6.0.5/db/migrate/20170309214320_add_project_default_assigned_to_id.rb000066400000000000000000000007321500112024600261560ustar00rootroot00000000000000class AddProjectDefaultAssignedToId < ActiveRecord::Migration[4.2] def up add_column :projects, :default_assigned_to_id, :integer, :default => nil # Try to copy existing settings from the plugin if redmine_default_assign plugin was used if column_exists?(:projects, :default_assignee_id, :integer) Project.update_all('default_assigned_to_id = default_assignee_id') end end def down remove_column :projects, :default_assigned_to_id end end redmine-6.0.5/db/migrate/20170320051650_change_repositories_extra_info_limit.rb000066400000000000000000000004071500112024600266060ustar00rootroot00000000000000class ChangeRepositoriesExtraInfoLimit < ActiveRecord::Migration[4.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :repositories, :extra_info, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20170418090031_add_view_news_to_all_existing_roles.rb000066400000000000000000000002751500112024600264330ustar00rootroot00000000000000class AddViewNewsToAllExistingRoles < ActiveRecord::Migration[4.2] def up Role.all.each { |role| role.add_permission! :view_news } end def down # nothing to revert end end redmine-6.0.5/db/migrate/20170419144536_add_view_messages_to_all_existing_roles.rb000066400000000000000000000003051500112024600272730ustar00rootroot00000000000000class AddViewMessagesToAllExistingRoles < ActiveRecord::Migration[4.2] def up Role.all.each { |role| role.add_permission! :view_messages } end def down # nothing to revert end end redmine-6.0.5/db/migrate/20170723112801_rename_comments_to_content.rb000066400000000000000000000002051500112024600245450ustar00rootroot00000000000000class RenameCommentsToContent < ActiveRecord::Migration[5.1] def change rename_column :comments, :comments, :content end end redmine-6.0.5/db/migrate/20180501132547_add_author_id_to_time_entries.rb000066400000000000000000000005031500112024600252010ustar00rootroot00000000000000class AddAuthorIdToTimeEntries < ActiveRecord::Migration[5.1] def up add_column :time_entries, :author_id, :integer, :default => nil, :after => :project_id # Copy existing user_id to author_id TimeEntry.update_all('author_id = user_id') end def down remove_column :time_entries, :author_id end end redmine-6.0.5/db/migrate/20180913072918_add_verify_peer_to_auth_sources.rb000066400000000000000000000002761500112024600256020ustar00rootroot00000000000000class AddVerifyPeerToAuthSources < ActiveRecord::Migration[5.2] def change change_table :auth_sources do |t| t.boolean :verify_peer, default: true, null: false end end end redmine-6.0.5/db/migrate/20180923082945_change_sqlite_booleans_to_0_and_1.rb000066400000000000000000000030051500112024600256330ustar00rootroot00000000000000class ChangeSqliteBooleansTo0And1 < ActiveRecord::Migration[5.2] COLUMNS = { AuthSource => ['onthefly_register', 'tls'], CustomFieldEnumeration => ['active'], CustomField => ['is_required', 'is_for_all', 'is_filter', 'searchable', 'editable', 'visible', 'multiple'], EmailAddress => ['is_default', 'notify'], Enumeration => ['is_default', 'active'], Import => ['finished'], IssueStatus => ['is_closed'], Issue => ['is_private'], Journal => ['private_notes'], Member => ['mail_notification'], Message => ['locked'], Project => ['is_public', 'inherit_members'], Repository => ['is_default'], Role => ['assignable', 'all_roles_managed'], Tracker => ['is_in_chlog', 'is_in_roadmap'], UserPreference => ['hide_mail'], User => ['admin', 'must_change_passwd'], WikiPage => ['protected'], WorkflowRule => ['assignee', 'author'], } def up if /sqlite/i.match?(ActiveRecord::Base.connection.adapter_name) COLUMNS.each do |klass, columns| columns.each do |column| klass.where("#{column} = 't'").update_all(column => 1) klass.where("#{column} = 'f'").update_all(column => 0) end end end end def down if /sqlite/i.match?(ActiveRecord::Base.connection.adapter_name) COLUMNS.each do |klass, columns| columns.each do |column| klass.where("#{column} = 1").update_all(column => 't') klass.where("#{column} = 0").update_all(column => 'f') end end end end end redmine-6.0.5/db/migrate/20180923091603_change_sqlite_booleans_default.rb000066400000000000000000000040301500112024600253420ustar00rootroot00000000000000class ChangeSqliteBooleansDefault < ActiveRecord::Migration[5.2] DEFAULTS = { "auth_sources" => { "onthefly_register" => false, "tls" => false }, "custom_field_enumerations" => { "active" => true }, "custom_fields" => { "is_required" => false, "is_for_all" => false, "is_filter" => false, "searchable" => false, "editable" => true, "visible" => true, "multiple" => false }, "email_addresses" => { "is_default" => false, "notify" => true }, "enumerations" => { "is_default" => false, "active" => true }, "imports" => { "finished" => false }, "issue_statuses" => { "is_closed" => false }, "issues" => { "is_private" => false }, "journals" => { "private_notes" => false }, "members" => { "mail_notification" => false }, "messages" => { "locked" => false }, "projects" => { "is_public" => true, "inherit_members" => false }, "repositories" => { "is_default" => false }, "roles" => { "assignable" => true, "all_roles_managed" => true }, "trackers" => { "is_in_chlog" => false, "is_in_roadmap" => true }, "user_preferences" => { "hide_mail" => true }, "users" => { "admin" => false, "must_change_passwd" => false }, "wiki_pages" => { "protected" => false }, "workflows" => { "assignee" => false, "author" => false } } def up if /sqlite/i.match?(ActiveRecord::Base.connection.adapter_name) DEFAULTS.each do |table, defaults| defaults.each do |column, value| # Reset default values for boolean column (t/f => 1/0) change_column_default(table, column, value) end end end end def down if /sqlite/i.match?(ActiveRecord::Base.connection.adapter_name) # Cannot restore default values as t/f raise ActiveRecord::IrreversibleMigration end end end redmine-6.0.5/db/migrate/20190315094151_change_custom_values_value_limit.rb000066400000000000000000000003771500112024600257450ustar00rootroot00000000000000class ChangeCustomValuesValueLimit < ActiveRecord::Migration[5.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :custom_values, :value, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20190315102101_add_trackers_description.rb000066400000000000000000000002241500112024600241560ustar00rootroot00000000000000class AddTrackersDescription < ActiveRecord::Migration[5.2] def change add_column :trackers, :description, :string, :after => :name end end redmine-6.0.5/db/migrate/20190510070108_add_unique_id_to_import_items.rb000066400000000000000000000003071500112024600252260ustar00rootroot00000000000000class AddUniqueIdToImportItems < ActiveRecord::Migration[5.2] def change change_table :import_items do |t| t.string "unique_id" t.index ["import_id", "unique_id"] end end end redmine-6.0.5/db/migrate/20190620135549_change_roles_name_limit.rb000066400000000000000000000003701500112024600240030ustar00rootroot00000000000000class ChangeRolesNameLimit < ActiveRecord::Migration[5.2] def self.up change_column :roles, :name, :string, :limit => 255, :default => '' end def self.down change_column :roles, :name, :string, :limit => 30, :default => '' end end redmine-6.0.5/db/migrate/20200826153401_add_twofa_scheme_to_user.rb000066400000000000000000000001771500112024600241600ustar00rootroot00000000000000class AddTwofaSchemeToUser < ActiveRecord::Migration[5.2] def change add_column :users, :twofa_scheme, :string end end redmine-6.0.5/db/migrate/20200826153402_add_totp_to_user.rb000066400000000000000000000002641500112024600225000ustar00rootroot00000000000000class AddTotpToUser < ActiveRecord::Migration[5.2] def change add_column :users, :twofa_totp_key, :string add_column :users, :twofa_totp_last_used_at, :integer end end redmine-6.0.5/db/migrate/20210704125704_add_twofa_required_to_groups.rb000066400000000000000000000002261500112024600250710ustar00rootroot00000000000000class AddTwofaRequiredToGroups < ActiveRecord::Migration[6.1] def change add_column :users, :twofa_required, :boolean, default: false end end redmine-6.0.5/db/migrate/20210705111300_add_projects_default_issue_query_id.rb000066400000000000000000000003651500112024600264060ustar00rootroot00000000000000class AddProjectsDefaultIssueQueryId < ActiveRecord::Migration[4.2] def self.up add_column :projects, :default_issue_query_id, :integer, :default => nil end def self.down remove_column :projects, :default_issue_query_id end end redmine-6.0.5/db/migrate/20210728131544_drop_is_in_chlog_column.rb000066400000000000000000000003451500112024600240250ustar00rootroot00000000000000class DropIsInChlogColumn < ActiveRecord::Migration[6.1] def self.up remove_column :trackers, :is_in_chlog end def self.down add_column :trackers, :is_in_chlog, :boolean, :default => true, :null => false end end redmine-6.0.5/db/migrate/20210801145548_remove_bcc_recipients_setting.rb000066400000000000000000000002171500112024600252340ustar00rootroot00000000000000class RemoveBccRecipientsSetting < ActiveRecord::Migration[6.1] def change Setting.where(:name => 'bcc_recipients').delete_all end end redmine-6.0.5/db/migrate/20210801211024_remove_orphaned_user_custom_values.rb000066400000000000000000000005651500112024600263170ustar00rootroot00000000000000class RemoveOrphanedUserCustomValues < ActiveRecord::Migration[6.1] def up user_custom_field_ids = CustomField.where(field_format: 'user').ids if user_custom_field_ids.any? user_ids = Principal.ids CustomValue. where(custom_field_id: user_custom_field_ids). where.not(value: [nil, ''] + user_ids). delete_all end end end redmine-6.0.5/db/migrate/20211213122100_remove_identity_url_from_users.rb000066400000000000000000000002101500112024600254440ustar00rootroot00000000000000class RemoveIdentityUrlFromUsers < ActiveRecord::Migration[6.1] def change remove_column :users, :identity_url, :string end end redmine-6.0.5/db/migrate/20211213122101_drop_open_id_authentication_tables.rb000066400000000000000000000007401500112024600262130ustar00rootroot00000000000000class DropOpenIdAuthenticationTables < ActiveRecord::Migration[6.1] def change drop_table :open_id_authentication_associations do |t| t.integer "issued" t.integer "lifetime" t.string "handle" t.string "assoc_type" t.binary "server_url" t.binary "secret" end drop_table :open_id_authentication_nonces do |t| t.integer "timestamp", null: false t.string "server_url" t.string "salt", null: false end end end redmine-6.0.5/db/migrate/20211213122102_remove_open_id_setting.rb000066400000000000000000000002001500112024600236400ustar00rootroot00000000000000class RemoveOpenIdSetting < ActiveRecord::Migration[6.1] def change Setting.where(:name => 'openid').delete_all end end redmine-6.0.5/db/migrate/20220224194639_delete_orphaned_time_entry_activities.rb000066400000000000000000000003261500112024600267610ustar00rootroot00000000000000class DeleteOrphanedTimeEntryActivities < ActiveRecord::Migration[6.1] def self.up TimeEntryActivity.where.missing(:project).where.not(project_id: nil).delete_all end def self.down # no-op end end redmine-6.0.5/db/migrate/20220714093000_add_journal_updated_on.rb000066400000000000000000000004011500112024600236120ustar00rootroot00000000000000class AddJournalUpdatedOn < ActiveRecord::Migration[5.2] def up add_column :journals, :updated_on, :datetime, :after => :created_on Journal.update_all('updated_on = created_on') end def down remove_column :journals, :updated_on end end redmine-6.0.5/db/migrate/20220714093010_add_journal_updated_by.rb000066400000000000000000000003451500112024600236200ustar00rootroot00000000000000class AddJournalUpdatedBy < ActiveRecord::Migration[5.2] def up add_column :journals, :updated_by_id, :integer, :default => nil, :after => :updated_on end def down remove_column :journals, :updated_by_id end end redmine-6.0.5/db/migrate/20220806215628_add_default_time_entry_activity_to_roles.rb000066400000000000000000000002341500112024600274650ustar00rootroot00000000000000class AddDefaultTimeEntryActivityToRoles < ActiveRecord::Migration[6.1] def change add_column :roles, :default_time_entry_activity_id, :int end end redmine-6.0.5/db/migrate/20221002193055_delete_orphaned_query_and_role_from_queries_roles.rb000066400000000000000000000010461500112024600313340ustar00rootroot00000000000000class DeleteOrphanedQueryAndRoleFromQueriesRoles < ActiveRecord::Migration[6.1] def self.up queries_roles = "#{Query.table_name_prefix}queries_roles#{Query.table_name_suffix}" queries = Query.table_name roles = Role.table_name ActiveRecord::Base.connection.execute "DELETE FROM #{queries_roles} WHERE query_id NOT IN (SELECT DISTINCT(id) FROM #{queries})" ActiveRecord::Base.connection.execute "DELETE FROM #{queries_roles} WHERE role_id NOT IN (SELECT DISTINCT(id) FROM #{roles})" end def self.down # no-op end end redmine-6.0.5/db/migrate/20221004172825_ensure_text_formatting_setting_is_stored_in_db.rb000066400000000000000000000004071500112024600307040ustar00rootroot00000000000000class EnsureTextFormattingSettingIsStoredInDb < ActiveRecord::Migration[6.1] def change unless Setting.where(name: "text_formatting").exists? setting = Setting.new(:name => "text_formatting", :value => 'textile') setting.save! end end end redmine-6.0.5/db/migrate/20221012135202_add_index_to_custom_values.rb000066400000000000000000000005221500112024600245150ustar00rootroot00000000000000class AddIndexToCustomValues < ActiveRecord::Migration[6.1] def change remove_index :custom_values, column: [:customized_type, :customized_id], name: :custom_values_customized, if_exists: true add_index :custom_values, [:customized_type, :customized_id, :custom_field_id], name: :custom_values_customized_custom_field end end redmine-6.0.5/db/migrate/20221214173537_add_select_project_publicity_permission.rb000066400000000000000000000005041500112024600273150ustar00rootroot00000000000000class AddSelectProjectPublicityPermission < ActiveRecord::Migration[6.1] def up Role.find_each do |r| r.add_permission!(:select_project_publicity) if r.permissions.include?(:edit_project) end end def down Role.find_each do |r| r.remove_permission!(:select_project_publicity) end end end redmine-6.0.5/db/migrate/20230818020734_add_status_description.rb000066400000000000000000000003261500112024600237040ustar00rootroot00000000000000class AddStatusDescription < ActiveRecord::Migration[6.1] def up add_column :issue_statuses, :description, :string, :after => :name end def down remove_column :issue_statuses, :description end end redmine-6.0.5/db/migrate/20231012112407_remove_mention_users_permission.rb000066400000000000000000000004061500112024600256460ustar00rootroot00000000000000class RemoveMentionUsersPermission < ActiveRecord::Migration[6.1] def up Role.reset_column_information Role.all.each do |r| r.remove_permission!(:mention_users) if r.has_permission?(:mention_users) end end def down # no-op end end redmine-6.0.5/db/migrate/20231113131245_ensure_default_notification_option_is_stored_in_db.rb000066400000000000000000000005431500112024600315050ustar00rootroot00000000000000class EnsureDefaultNotificationOptionIsStoredInDb < ActiveRecord::Migration[6.1] def up # Set the default value in Redmine <= 5.1 to preserve the behavior of existing installations Setting.find_or_create_by!(name: 'default_notification_option') do |setting| setting.value = 'only_my_events' end end def down # no-op end end redmine-6.0.5/db/migrate/20240213101801_add_queries_description.rb000066400000000000000000000002701500112024600240150ustar00rootroot00000000000000class AddQueriesDescription < ActiveRecord::Migration[7.1] def up add_column :queries, :description, :string end def down remove_column :queries, :description end end redmine-6.0.5/db/migrate/20241007144951_change_text_formatting_from_markdown_to_common_mark.rb000066400000000000000000000003411500112024600316770ustar00rootroot00000000000000class ChangeTextFormattingFromMarkdownToCommonMark < ActiveRecord::Migration[7.2] def up Setting.find_by(name: 'text_formatting', value: 'markdown')&.update(value: 'common_mark') end def down # no-op end end redmine-6.0.5/db/migrate/20241022095140_remove_orphaned_custom_value_attachments.rb000066400000000000000000000004751500112024600275010ustar00rootroot00000000000000class RemoveOrphanedCustomValueAttachments < ActiveRecord::Migration[7.2] def up Attachment.where(container_type: 'CustomValue') .where('NOT EXISTS (SELECT 1 FROM custom_values WHERE custom_values.id = attachments.container_id)') .destroy_all end def down # no-op end end redmine-6.0.5/db/migrate/20241026031710_update_orphaned_journal_updated_by_id_to_anonymous.rb000066400000000000000000000011471500112024600315170ustar00rootroot00000000000000class UpdateOrphanedJournalUpdatedByIdToAnonymous < ActiveRecord::Migration[7.2] def up # Don't use `User.anonymous` here because it creates a new anonymous # user if one doesn't exist yet. anonymous_user_id = AnonymousUser.unscoped.pick(:id) # The absence of an anonymous user implies a fresh installation. return if anonymous_user_id.nil? Journal.joins('LEFT JOIN users ON users.id = journals.updated_by_id') .where.not(updated_by_id: nil) .where(users: { id: nil }) .update_all(updated_by_id: anonymous_user_id) end def down # no-op end end redmine-6.0.5/db/migrate/20241103150135_change_settings_value_limit.rb000066400000000000000000000003661500112024600246750ustar00rootroot00000000000000class ChangeSettingsValueLimit < ActiveRecord::Migration[7.2] def up if Redmine::Database.mysql? max_size = 16.megabytes change_column :settings, :value, :text, :limit => max_size end end def down # no-op end end redmine-6.0.5/db/migrate/20241103184550_change_builtin_roles_user_visibility.rb000066400000000000000000000010501500112024600266210ustar00rootroot00000000000000class ChangeBuiltinRolesUserVisibility < ActiveRecord::Migration[7.2] def up # Default to members_of_visible_projects for all newly created roles change_column_default :roles, :users_visibility, 'members_of_visible_projects' # Set the users visibility of the builtin roles (Anonymous and Non-Member) # to members_of_visible_projects as a saf(er) default. Role.where.not(builtin: 0).update_all(users_visibility: 'members_of_visible_projects') end def down change_column_default :roles, :users_visibility, 'all' end end redmine-6.0.5/doc/000077500000000000000000000000001500112024600137015ustar00rootroot00000000000000redmine-6.0.5/doc/CHANGELOG000066400000000000000000013363621500112024600151310ustar00rootroot00000000000000== Redmine changelog Redmine - project management software Copyright (C) 2006- Jean-Philippe Lang https://www.redmine.org/ == 2025-04-20 v6.0.5 === [Administration] * Defect #42584: NoMethodError when creating a user with an invalid email address and domain restrictions are enabled === [Attachments] * Defect #42394: Inconsistent behaviour between attachment download routes with and without filename === [Code cleanup/refactoring] * Patch #42562: Fix random test failure in ProjectAdminQueryTest due to missing language setting * Patch #42572: Fix random test failure in MemberTest#test_update_roles_with_inherited_roles due to non-deterministic ordering === [Custom fields] * Defect #42342: Missing thousands separator in Integer and Float custom field totals * Patch #41935: Add "editable" attribute in the custom fields API response === [Gantt] * Defect #42145: MiniMagick (> 5) removed cli_path, result crash when supplied imagemagick_convert_command === [Issues] * Defect #42458: "For all projects" checkbox should be disabled when editing an existing query in which the checkbox is already checked === [Performance] * Defect #40728: Slow loading of global spent time list in MySQL * Feature #42574: Optimize autocomplete issue listing triggered by typing "##" by eager loading trackers === [Plugin API] * Defect #42509: Plugin activity icons broken when multiple plugins are loaded === [Projects] * Patch #42440: Fix project selector focus by explicitly targeting the first selected item === [SCM] * Patch #42500: Skip repository tests when the SCM client command is unavailable === [Text formatting] * Defect #42545: Commit message in issue history might be rendered in incorrect context === [UI] * Defect #41828: In mobile view, delete relation svg icon in 'Related Issues' on an issue page, overflow text * Defect #41833: Tabs left / right buttons use legacy icons * Defect #41947: Collapse arrow shows the wrong direction at /workflows/edit * Defect #41952: Flash notice icons use the legacy icons * Defect #41967: Replace SCM action legacy icons with SVG icons in the tree view of the repository browser * Defect #42181: Project jump box uses legacy caret icons * Defect #42285: Icon expanded for closed fixed versions missing * Defect #42286: Context menu right arrow uses the legacy icon * Defect #42369: Expander icons not switch in Collapse all/Expand all * Defect #42465: Improve SVG icon compatibility with RTL languages * Defect #42487: Improve SVG contrast when a row is selected on table list * Defect #42520: PNG icon displayed instead of SVG in subtasks list when viewing all tasks * Defect #42532: Expander icon not working in repository tree * Defect #42575: Fix sidebar switch button display in RTL language * Defect #42576: Newly attached files are displayed using the legacy icons * Patch #42497: Adjust the position of the news comment delete button * Patch #42577: Replace legacy Atom icon with SVG icon * Patch #42596: Do not show user icon in add watchers modal when gravatar is disabled == 2025-03-10 v6.0.4 === [Administration] * Feature #42008: Expose default Rails health check endpoint "/up" for load balancers and uptime monitoring === [Code cleanup/refactoring] * Defect #42200: InlineAutocompleteSystemTest login test fails randomly * Patch #42244: Fix random failures in IssuesTest#test_bulk_copy due to StaleElementReferenceError === [Custom fields] * Defect #42233: Float custom values with ',' as decimal separator are not converted to '.' and cause SQL errors when sorting or summing === [Gems support] * Defect #42245: 5.1-stable: Redmine fails to start with error: Unknown database adapter `"mysql2"` found in config/database.yml === [No category] * Feature #30069: Use GitHub Actions as a secondary CI solution to run tests through the existing mirroring === [Project settings] * Defect #42192: Project settings members tab may raise ArgumentError if orphaned member records exist === [Security] * Defect #42238: Stored Cross-Site Scripting (XSS) in custom query * Defect #42326: Stored Cross-Site Scripting (XSS) in macros * Defect #42352: ProjectQuery leaks details of private projects * Defect #42194: /my/account does not correctly enforce sudo mode * Patch #42333: Update Nokogiri to 1.18.3 === [Time tracking] * Defect #42172: `format_hours` method produces incorrect output for negative time values when `Setting.timespan_format` is "minutes" === [Translations] * Defect #42170: Fix Turkish translation of field_assignable * Patch #42239: Czech translation update for 6.0-stable === [UI] * Defect #42229: Latest news box on home page misses icons === [UI - Responsive] * Defect #42182: Poor color contrast of icons on flyout menu == 2025-01-29 v6.0.3 === [Accounts / authentication] * Defect #41930: Redirection after signing in fails when the back_url includes a port number === [Activity view] * Defect #42003: Misalignment of icons and titles in Activity view * Defect #42070: Whitespace missing after hyphen between project name and event title in Activity view * Feature #42038: Improve readability by adjusting font sizes and colors in activity view and search results === [Attachments] * Defect #42084: Placeholder icon for non-existent thumbnail flickers rapidly on hover === [Code cleanup/refactoring] * Defect #42088: Fix incorrect syntax in application.css on 6.0-stable * Patch #41961: Use `fixtures :all` to ensure consistent test data and improve test reliability * Patch #42089: Fix Lint workflow error on 6.0-stable due to unsupported ruby/setup-ruby on Ubuntu 24.04 * Patch #42140: Update footer copyright year to 2025 === [Gantt] * Defect #41925: Context menu submenus close unexpectedly on Gantt chart due to z-index conflict === [Gems support] * Defect #42013: Redmine fails to start with error: Unknown database adapter `"mysql2"` found in config/database.yml === [Issues] * Defect #42066: NoMethodError exception occurs in IssuePriority#high and #low when both default and active priorities are absent === [Permissions and roles] * Defect #42106: Member roles are incorrectly added when a user's memberships are updated === [Rails support] * Defect #42113: Redmine 5.x not starting with ActiveSupport Logger error * Patch #41970: Updates Rails to 7.2.2.1 === [UI] * Defect #42023: Search results page uses legacy icons * Defect #42051: "Font used for text areas" setting causes inconsistent font size * Defect #42117: Key-value list reorder icon uses legacy icon * Defect #42126: The member table layout breaks due to .icon class on td elements * Defect #42130: Multiselect toggle uses legacy icons * Feature #42005: Improve readability of error pages by updating fonts and layout * Feature #42072: Adjust font size for breadcrumb and subtitle to improve readability and consistency == 2024-12-11 v6.0.2 === [Accounts / authentication] * Feature #41927: Enable browser autocomplete for 2FA input fields * Feature #41937: Enable browser autocomplete for login input fields === [Code cleanup/refactoring] * Defect #41795: Missing fixture: a test does not pass if the 'issue_categories' fixtures are not already loaded * Patch #41623: Fix tests that randomly failed due to required fixtures not being loaded * Patch #41861: Add License URLs to Icons Credits * Patch #41881: Improper deletion of custom fields in IssueNestedSetConcurrencyTest causes test failures of other tests * Patch #41889: Fix random test failures in Redmine::Acts::MentionableTest due to unsorted mentioned_users * Patch #41894: Fix random test failure by ensuring WatchersController#find_objects_from_params returns results in consistent order * Patch #41901: Fix random test failure in DestroyProjectsJobTest due to unsorted @projects * Patch #41902: Fix class name to match file name in keyboard_shortcuts_test.rb * Patch #41914: Fix random test failure in UserTest#test_validate_password_complexity due to missing explicit language setting * Patch #41931: Fix random failures in IssueRelationTest#test_create_with_initialized_journals due to ambiguous conditions for retrieving the expected detail * Patch #41934: Fix random test failure in ProjectsControllerTest::test_post_copy_should_copy_requested_items due to missing :issue_categories fixture * Patch #41951: Fix random test failure in IssueTest due to unsorted expected_statuses === [Documentation] * Feature #41754: Add asset precompilation instructions to doc/INSTALL and doc/UPGRADING === [Email receiving] * Defect #41737: Deprecation warning for IMAP4 email receiving: "Call Net::IMAP.new with keyword options" === [Gantt] * Defect #41786: Long subject may not be displayed in Gantt chart with narrow column width === [Gems support] * Defect #41749: Warning during startup: "Unresolved or ambiguous specs during Gem::Specification.reset" * Defect #41860: FrozenError when using SQLite3 gem version 2.0.0 or later === [Issues] * Defect #40301: Error when create a version with custom field of "File" type from Issue page === [Plugin API] * Defect #41880: Plugin activity icons broken after switching to SVG icons === [REST API] * Defect #41791: Projects endpoint returns list of all projects * Defect #41819: Time entry API returning `hours` as Rational instead of Float === [SCM] * Patch #41775: Adjust the vertical alignment of icons in the tree view of the repository browser === [Time tracking] * Defect #41895: Spent time CSV report returning `hours` as Rational instead of Float === [Translations] * Patch #41736: Update Turkish translation of label_description from "Yorum" to "Açıklama" * Patch #41945: Bulgarian translation update for 6.0-stable === [UI] * Defect #41714: Replace search and magnifier icons with SVG icon * Defect #41756: An unnecessary scroll bar is displayed on the user's profile page * Defect #41778: Name field in custom query creation/edit form is not marked as required * Defect #41779: Restore `margin-top` for `#sidebar h3` * Defect #41780: Unnecessary indentation for "Completed versions" in the Roadmap sidebar * Defect #41789: HTML syntax broken for sidebar-wrapper * Defect #41818: Redundant tooltip appearing after clicking the ellipsis button in the action menus * Defect #41821: Icons shrink in the Activity view when event titles are long * Defect #41853: Group icons in watchers and membership modals are using a mix of legacy and SVG icons * Defect #41864: Report tab of Spent time page still displays deprecated raster icons instead of SVGs * Defect #41873: Table layout breaks due to .icon class on td elements * Defect #41883: Download button in issue comments still uses deprecated raster icon * Defect #41918: Replaces warning icon with SVG in watcher list and workflow warnings * Defect #41957: Remove nesting selectors because are not support in old browsers * Feature #41748: Optimize font loading by replacing variable fonts with specific weights for Noto Sans === [UI - Responsive] * Defect #41822: First icon on the Activity page is replaced with chevrons-left or chevrons-right in responsive mode == 2024-11-12 v6.0.1 === [Gems support] * Defect #41729: Installing Redmine 6.0.0 may cause a LoadError for svg_sprite * Patch #41728: Update Rouge gem to 4.5 === [Issues list] * Defect #40303: Layout distortion in issue list descriptions with code blocks == 2024-11-10 v6.0.0 === [Accounts / authentication] * Defect #28243: Principal.not_member_of scope does not accept ActiveRecord::Relation * Feature #37279: Reject passwords that are the same as login, first name, last name, or email * Feature #38853: Changes user visibility from "all" to "member of visible projects" for new roles and existing builtin roles * Feature #39500: Change the default notification option for users to "Only for things I watch or I am assigned to" === [Administration] * Feature #12521: Improve tracker deletion error message to display projects containing issues under the tracker * Feature #40913: Add bulk lock/unlock feature to user list context menu === [Attachments] * Defect #38966: Attachment custom fields not removed when issue is deleted * Feature #37530: Add timeout for thumbnail generation process === [Calendar] * Patch #41509: Replace "even" and "odd" CSS classes with "this-month" and "other-month" for calendar days === [Code cleanup/refactoring] * Defect #31507: Test fails if trailing whitespaces are removed * Defect #31831: Back url parse in validation * Defect #32985: Remove unnecessary use of instance variables in CSV and Atom response handlers * Defect #37730: Missing copyright headers in source files * Defect #39527: Deprecate unused ApplicationHelper#render_if_exist * Defect #40205: ThemesTest may fail if a third-party theme having theme.js is installed * Feature #39111: Enable Asset Pipeline Integration using Propshaft * Feature #40190: Stop appending the utf8 checkmark parameter to form URLs * Patch #27510: Introduce active? method to Group via Principal model * Patch #32523: Replace `for` loops with `forEach` in buildFilterRow function * Patch #35217: Replace use of Digest::MD5 / Digest::SHA1 with ActiveSupport::Digest * Patch #36806: Remove rss_* deprecated methods * Patch #38975: Use ApplicationRecord instead of ActiveRecord::Base * Patch #39110: Replacing request_store with ActiveSupport::CurrentAttributes * Patch #39380: Replace hardcoded issues count check with `limit` variable in IssuesController#retrieve_previous_and_next_issue_ids * Patch #39558: Remove deprecated methods in Repository and AbstractAdapter * Patch #39777: Remove useless method #run_in_request? from db/migrate/20221214173537_add_select_project_publicity_permission.rb * Patch #39971: Remove specific platform constraints for database adapter gems * Patch #40087: Rewrite ApplicationHelper#favicon_url method using image_url * Patch #40124: Remove deprecated empty status param to get all users from API * Patch #40210: Remove overrides that inserts a non-breaking space (nbsp) to empty option elements * Patch #40211: Remove appveyor.yml * Patch #40506: Remove redundant ApplicationHelper inclusions * Patch #40513: Fix initial_page_content method to avoid referencing @page instance variable in wiki formatting helpers * Patch #40652: Replace MD5 with SHA256 when creating the hash for gravatar URL * Patch #40691: Remove ambiguity in queries utilizing a Project scope * Patch #40801: Add missing fixture journal_details to JournalsHelperTest * Patch #40882: Remove unused "label_browse" from all locales * Patch #41023: Set default age parameter for User.prune to 30 days * Patch #41142: Add missing assertion in Redmine::MenuManager::MapperTest#test_push_onto_root * Patch #41188: Refactor Calendar#first_wday method for improved readability and efficiency * Patch #41238: Fix test failure in IssuesSystemTest due to incorrect attachment count expectation * Patch #41287: Add .vscode to svn:ignore, .gitignore, and .hgignore * Patch #41402: Remove Internet Explorer-specific CSS rules and vendor prefixes === [Custom fields] * Defect #27543: Key/value-pair custom field type not available to all customisable contents * Feature #39997: Add an option to render values of Integer- and Float-format custom fields with thousands delimiters === [Database] * Feature #35014: Review and update supported database engines and versions * Patch #34218: Increase size of value field in settings === [Documentation] * Feature #40681: Dynamic generation of supported code highlighting languages in help section * Patch #40202: Add LICENSE.txt in the root directory * Patch #41011: Add more configuration examples to config/additional_environment.rb.example * Patch #41469: Update helps and docs to use HTTPS links instead of HTTP === [Email notifications] * Feature #13359: Add project identifier to List-Id header in notification emails for better Gmail filtering * Feature #40569: Add an option to send email notification when an attachment is added * Feature #41450: Include attachment filename in "File added" email notification subject === [Feeds] * Feature #34025: Raise the maximum length of the title element in the Atom feed from 100 to 300 characters === [Forums] * Defect #41234: Forum message's subject field overflows beyond container === [Gems support] * Patch #37258: Switch default backend of ActiveSupport::XmlMini from rexml to Nokogiri * Patch #39547: Prevent automatic requiring of unnecessary gems at runtime * Patch #39887: Update RuboCop to 1.68 * Patch #39888: Update RuboCop Performance to 1.22 * Patch #39889: Update RuboCop Rails to 2.27 * Patch #39972: Update Nokogiri to 1.16.0 * Patch #39985: Update SQLite3 gem to 1.7 * Patch #40685: Update roadie-rails to 3.2.0 * Patch #41312: Update MiniMagick to 5.0 === [Hook requests] * Feature #41044: Add view hooks in My page === [I18n] * Feature #21677: Support localized decimal separator for hours in the web UI * Feature #22024: Support localized decimal separators for float values * Feature #29208: Support email addresses with IDN (internationalized domain names) in user accounts * Patch #39879: Fix hardcoded string on user preferences page === [Importers] * Defect #41464: CSV file encoding auto-detection may fail with multibyte characters * Feature #39511: Auto-detection of field wrapper type when importing CSV file === [Issues] * Defect #41572: `updated_by_id` in Journal retains deleted user id instead of being set to `User.anonymous` * Feature #691: Add column totals to Issues Summary Report * Feature #9309: Add description field to custom queries * Feature #16045: Add "Author / Previous assignee" group to assignee dropdown in issue form * Feature #31756: Introduce setting for done ratio options interval * Feature #36197: Add configurable setting for copying attachments when copying an issue * Feature #41202: Change the default CSV export encoding to UTF-8 === [Issues filter] * Feature #7867: Add filters for "Author's group" and "Author's role" to issues list * Feature #39805: Extend "contains" operator in "Parent task" filter to support multiple issue IDs === [Issues list] * Feature #29894: View watchers on the issue list * Feature #37862: Estimated time remaining issue query column === [Performance] * Patch #23328: Optimize Project#notified_users to improve issue create/update speed * Patch #39835: Optimize repository menu visibility check * Patch #39837: Optimize query models by replacing `map` with `pluck` * Patch #39840: Optimize `Issue#relations` method to fetch both `relations_from` and `relations_to` using a single query * Patch #39847: Cache the result of `Journal#attachments` * Patch #39849: Optimize IssueCategory SQL queries when showing an issue * Patch #39852: Optimize queries visibility check * Patch #39857: Optimize users visibility check * Patch #39993: Optimize loading of journals, relations, and allowed_statuses in IssuesController#show for API requests * Patch #40000: Optimize gantt chart rendering for issues without subtasks * Patch #40008: Replace String#sub with delete_prefix / delete_suffix * Patch #40010: Replace regular expression matches with String#start_with? / end_with? * Patch #40775: Reduce an extra SQL query in IssuesController#retrieve_default_query * Patch #40798: Optimize Version model === [Projects] * Feature #23954: Shows the date of the last activity on Projects administration * Feature #40829: Expose project updated_on column and filter in project query === [REST API] * Feature #23307: Include auth_source field in User API response * Feature #38948: Add user status to users list API * Feature #40449: Add updated_on and updated_by fields to Issues API journal response === [Rails support] * Defect #38155: RuntimeError when reloading Rails console * Feature #36320: Migrate to Rails 7.2 * Feature #40092: Drop FastCGI support === [Roadmap] * Defect #4682: Completed version with wrong progress bar status * Defect #24457: Progress of version should be calculated the same way as parent tasks === [Ruby support] * Feature #38585: Drop Ruby 2.7 and 3.0 support * Feature #39761: Ruby 3.3 support === [SCM] * Defect #39747: Diff of a javascript file in repository module is not displayed with layout * Defect #40020: ScmData.binary? incorrectly considers UTF-8 text as binary * Feature #39238: Redirect to repositories#show after repositories#fetch_changesets to avoid the user-visible browser URL === [Search engine] * Feature #38446: Support multiple multi-word phrases in the search engine === [Text formatting] * Defect #34473: Displaying the table of content on the right causes wrong position * Defect #40515: Displaying issue descriptions in the issues list ignores CommonMark table alignment * Defect #40650: Fix duplicate alt and title attributes when alt text is specified for attached images in Textile formatter * Defect #41467: Unexpected font size on CommonMark Markdown help pages due to missing doctype declaration * Feature #20620: Add data-text-formatting attribute for selected markup language to body tag * Feature #36594: Relax rouge version dependency in Gemfile * Feature #40149: Drop deprecated Redcarpet based Markdown formatter * Patch #40014: Add support for quoted arguments containing commas in wiki macros * Patch #40939: Add "underline" button to jsToolbar for CommonMark Markdown formatting === [Themes] * Defect #26778: Invalid "theme-*" CSS class in body element when theme name contains spaces === [Third-party libraries] * Feature #40853: Upgrade jQuery to 3.7.1 * Feature #40864: Upgrade jQuery UI to 1.13.3 === [Time tracking] * Defect #36897: The minutes part of a time entry is displayed as 60 instead of being carried over * Defect #40914: Fix precision issues in TimeEntry#hours calculation by returning Rational instead of Float * Defect #41401: Hours column in "Details" tab of Spent time is not right-aligned * Feature #41053: Add "User's group" and "User's role" filters to Spent time list === [UI] * Defect #37390: Extraneous whitespace when selecting and copying issue number on Chrome/Windows * Defect #38915: Duplicate spacer id in jsToolBar * Defect #39795: Fix improper error highlighting for description field in issue form * Feature #2464: Add placeholder "h:mm" to hours field for better user guidance * Feature #2499: Change CSS font-size units from px to rem to respect browser font settings * Feature #21808: Make the Sidebar collapsible, stateful * Feature #23980: Replace icon images with Tabler SVG icons * Feature #40901: Disable custom query links while loading to prevent multiple requests * Feature #41266: Improve header design with gradient background * Feature #41272: Improve tooltip positioning for thumbnails * Feature #41294: Partial quoting feature for Issues and Forums * Feature #41298: Refine UI with updated box styling and border colors * Feature #41321: Improve readability by refining font sizes and switching to Noto Sans font * Feature #41475: Improve table readability by adding row borders * Feature #41500: Swap odd and even table row background colors * Patch #33638: Add informative default welcome text for new installations === [UI - Responsive] * Feature #39806: Improve filter rendering on narrow screens by replacing the layout tables with a flex layout == 2024-11-03 v5.1.4 === [Code cleanup/refactoring] * Patch #41313: Fix test/unit/issue_test.rb to use correct IANA timezone name "Asia/Hong_Kong" instead of deprecated "Hongkong" === [Filters] * Defect #41079: Incorrect sorting of users grouped by status in issue filters for administrators === [Gantt] * Defect #41263: Gantt progress line misrendering for 0% progress issues/versions with future start dates beyond chart range === [I18n] * Defect #37072: Capitalization issue for object names in I18n keys: button_save_object, button_edit_object, and button_delete_object * Defect #39778: Untranslated string "OK" in the repository browser === [Importers] * Defect #41465: "Import issues" and "Import time entries" pages are visible to users without "Add issues" and "Log spent time" permissions === [Issues] * Defect #8539: Fix NoMethodError in Issue#blocked? due to invalid issue_from_id in Issue#relations_from * Defect #40860: Creating a new issue fails with an internal error if no issue priorities are defined === [Projects] * Defect #41217: Broken project list table when filter scheduled for deletion === [Ruby support] * Patch #41489: Update Rails to 6.1.7.10 === [Security] * Defect #40946: Watcher list visible with only add watchers permissions === [SCM] * Defect #40948: ActiveRecord::ValueTooLong error with git author longer than 255 characters === [Text formatting] * Defect #41096: "##" syntax auto complete does not work === [Time tracking] * Defect #40924: Spent Hours ignoring "Time Span Format" Setting on several pages === [Translations] * Patch #40875: Improve Czech translation for "two-factor authentication" * Patch #40950: Improve english translation for invalid watcher notice * Patch #41254: Brazilian Portuguese translation update for 5.1-stable * Patch #41420: Italian translation update for 5.1-stable === [UI] * Patch #41624: CSS-fix to prevent 'blinking' tooltips === [Wiki] * Defect #40655: Revisions count is wrong on the wiki content page * Defect #40716: "Edit this section" on Wiki pages misinterprets issue links with double hash (##nnn) as ATX headings == 2024-06-12 v5.1.3 === [Code cleanup/refactoring] * Defect #40389: Missing fixture: add :groups_users fixture to Redmine::ApiTest::UsersTest === [Gems support] * Defect #40603: Mocha 2.2.0 causes test failure: "unexpected invocation" * Patch #40802: Support builder 3.3.0 === [Issues] * Defect #40410: Watcher groups on new issue form get dereferenced on validation error * Defect #40412: Issue list filter "Watched by: me" only shows issues watched via group for projects with the view_issue_watchers permission * Feature #40556: Focus on the textarea after clicking the Edit Journal button === [Issues workflow] * Patch #40693: Ignore status in roleld_up_status if workflow only defines identity transition === [Performance] * Defect #40610: Slow display of projects list when including project description column === [Rails support] * Patch #40818: Update Rails to 6.1.7.8 === [Translations] * Patch #40682: Czech translation update for 5.1-stable == 2024-03-04 v5.1.2 === [Activity view] * Defect #39995: Project Activities and Roadmap views disclose presence of private sub projects === [Administration] * Defect #40166: Internationalize "Check all / Uncheck all" tooltip in project list for admins === [Code cleanup/refactoring] * Defect #39864: Backport fix of random failing integration test for plugin routes * Defect #40239: Add missing fixtures in Redmine::ApiTest::IssuesTest * Patch #39894: Explicitly render a 404 on non-JS requests to watchers#new * Patch #39999: Explicitly render a 404 on non-JS requests to messages#quote * Patch #40043: Remove year ranges from all copyright headers === [Database] * Patch #39865: Extend mysql8? test helper to handle complex version strings === [Filters] * Defect #39991: Fix "any" operator for text filters to exclude empty text values === [Issues] * Defect #39932: Incorrect position of "Edited" mark in issue notes with h4 headings === [Plugin API] * Defect #39862: Attachments functionality for (custom) plugins broken since fix for CVE-2022-44030 * Feature #39948: Add Redmine::Plugin proxy method for Redmine::Acts::Attachable::ObjectTypeConstraint.register_object_type === [REST API] * Defect #40099: User api filtering by status=* broke on upgrade from 5.0 to 5.1 === [Rails support] * Patch #40319: Update Rails to 6.1.7.7 === [SEO] * Defect #40208: An ActionController::RespondToMismatchError occurred in welcome#robots === [Security] * Defect #39875: Mitigate CVE-2023-23913 (rails-ujs) === [Text formatting] * Defect #39755: CommonMark Markdown help page does not reflect user's language setting * Defect #40193: Performance issue with email address auto-linking in the default ("none") formatter * Feature #39884: Allow multiple footnotes per single word === [Translations] * Defect #39801: Fix typo in Russian translation of text_status_no_workflow * Patch #39751: Additional translation for Tamil language * Patch #39781: Persian translation update for 5.1-stable * Patch #39782: Russian translation update for 5.1-stable * Patch #40240: Catalan translation update for 5.1-stable === [UI] * Defect #39780: User select element on activity sidebar views cutoff when displaying long user names * Defect #39802: Fix click event handling in mobile view after closing flyout menu * Defect #40237: Error in autocomplete (`ActionController::BadRequest (Invalid query parameters: invalid %-encoding (%)`) == 2023-11-27 v5.1.1 === [Database] * Defect #39437: MySQL / MariaDB issue nested set deadlocks and consistency * Defect #39443: Invalid statement query error on MSSQL when role filter is used in issues query * Patch #39737: Support MySQL 8 === [Email notifications] * Defect #39553: Mention notification is not sent (MENTION_PATTERN / LINKS_RE inconsistency) === [Filters] * Defect #39714: Query grouping filter not working for custom field relations === [Gems support] * Defect #39576: `rake yard` does not work with Ruby >= 3.2 === [Issues] * Defect #39521: Mention autocomplete not displaying for users without "Edit issues" permission === [PDF export] * Defect #39534: Error (undefined method) in issue list PDF export === [Text formatting] * Defect #38852: ## issue syntax is not kept when selecting an issue from the inline autocomplete === [Translations] * Patch #39513: Bulgarian translation update for 5.1-stable * Patch #39551: Simplified Chinese translation update for 5.1-stable == 2023-10-31 v5.1.0 === [Accounts / authentication] * Defect #6254: Remove "Unknown user" notification on password request with non-existent email address * Defect #36969: EmailAddress regex matches invalid email addresses * Feature #33660: Information text on sudo password entry * Feature #35450: Better validation error message when the domain of email is not allowed * Feature #37679: Raise the maximum length of the last name to 255 characters === [Administration] * Defect #37692: Plugins page does not have a table header * Feature #33422: Re-implement admin project list using ProjectQuery system * Feature #36691: Background job and dedicated status for project deletion * Feature #36695: Add check in Redmine information page if default queue adapter is used in production * Feature #36891: Ask more specific confirmation questions when closing/reopening/archiving projects * Feature #37674: Upgrade Admin/Users list to use the query system === [Attachments] * Feature #38168: WebP images support * Patch #37597: Don't create two thumbnails of different resolutions for a single image === [Calendar] * Feature #27346: Use the new pagination style for the calendars view * Feature #33682: Display calendar in vertical list layout on mobile screens === [Code cleanup/refactoring] * Defect #15667: Fix shadowing variable in ApplicationHelper#textilizable * Defect #20042: A test fail when running it with PostgreSQL * Defect #37389: Add missing fixture to JournalObserverTest * Defect #37586: Typo in method names * Defect #37587: Unnecessary requirement in /lib/redmine/scm/adapters/filesystem_adapter.rb * Defect #38145: Unreachable branch in ApplicationHelper#format_object due to the use of the deprecated Fixnum class * Defect #38250: config/settings.yml not closed in Setting.load_available_settings * Defect #39180: Fix an intermittent test failure in JournalTest * Feature #37119: Drop redcarpet dependency for common_mark formatter * Patch #36844: Cleanup orphaned query and role ids from habtm join table queries_roles * Patch #37448: Add missing fixture users to RoleTest * Patch #37451: Add missing fixture versions to IssuesPdfHelperTest * Patch #37466: Add missing fixture issue_categories to VersionTest * Patch #37469: Add missing fixture versions to RepositoryTest * Patch #37470: Add missing fixture versions to MailHandlerControllerTest * Patch #37477: Add missing fixture issue_categories to MyControllerTest * Patch #37482: Replace JQuery `.focus()` method with HTML `autofocus` attribute * Patch #37507: Normalize HTML in app/views/settings/_users.html.erb * Patch #37591: Use start_with? or end_with? to check the first or last character of a string * Patch #37599: Remove extra call of Attachment#thumbnailable? in AttachmentsController#thumbnail * Patch #37614: Cleanup app/models/repository/git.rb * Patch #37657: Rename Repository#supports_all_revisions? to Repository#supports_history? * Patch #37668: Fix bad I18n `t` call in macro error handler * Patch #37682: Add the `# frozen_string_literal: true` magic comment to config/initializers/secret_token.rb * Patch #37851: Add missing fixture to test/integration/issue_test.rb * Patch #37974: Database migration to remove unused "mention_users" permission * Patch #38054: Remove unused i18n keys label_sort_highest, label_sort_higher, label_sort_lower, and label_sort_lowest * Patch #38091: Fix redundant 'private' modifier in repositories_git_controller_test.rb * Patch #38093: Use require_relative instead of generating the full path for a file * Patch #38139: Add guard clause to time_tag method to handle nil time * Patch #38228: Remove X-UA-Compatible meta tag for Internet Explorer * Patch #38478: Remove unused i18n key label_last_login * Patch #38496: Add missing fixtures to SearchControllerTest * Patch #38646: Remove unused locale entry: label_optgroup_others * Patch #38772: <=> should return nil when invoked with an incomparable object * Patch #39021: Add ".byebug_history" to svn:ignore, .gitignore, and .hgignore * Patch #39066: Remove set_language_if_valid from MyController * Patch #39109: Improving Test Reliability with Capybara Assertions * Patch #39184: Cleanup debug code in app/models/mail_handler.rb * Patch #39207: Replace `YAML.load` with `YAML.load_file` in locales.rake and improve error reporting for invalid YAML files === [Custom fields] * Patch #37750: Use existing html pipeline based sanitization for links in custom fields === [Email notifications] * Feature #2746: Send out issue priority in the email notification header * Feature #34302: Show parent issues in notification email * Feature #38238: Auto watch issues on issue creation === [Email receiving] * Feature #38263: Try importing journal replies as issue reply where applicable * Feature #38273: Improve errors in MailHandler: add MissingContainer and LockedTopic exception * Feature #38274: Receive e-mail replies to news and news comments * Patch #38408: Remove experimental flag from "Preferred part of multipart (HTML) emails" setting === [Filters] * Feature #38435: "contains any of" operator for text filters to perform OR search of multiple terms * Feature #38456: OR search with multiple terms for "starts with" and "ends with" filter operators === [Gems support] * Patch #36919: Update RuboCop to 1.57 * Patch #37236: Update Rouge to 4.2 * Patch #37247: Update RuboCop Performance to 1.19 * Patch #37248: Update RuboCop Rails to 2.22 * Patch #37401: Update I18n to 1.14 * Patch #37525: Update Pg to 1.5 * Patch #37558: Update webdrivers to 5.0 * Patch #37656: Update sqlite3 gem to 1.5 * Patch #37993: Update Mail gem to 2.8 * Patch #38121: Update MiniMagick to 4.12 * Patch #38122: Remove Bundler from requirements * Patch #38124: Update csv, net-imap, net-pop, and net-smtp gems to the same versions shipped with Ruby 3.2.0 * Patch #38137: Update SimpleCov to 0.22 * Patch #38181: Update Nokogiri to 1.15.2 * Patch #38187: Update SQLite3 gem to 1.6 * Patch #38220: Update Redcarpet to 3.6 * Patch #39211: Update roadie-rails to 3.1 === [I18n] * Defect #38509: Untranslated string "OK" in the repository browser * Feature #37878: Allow using ideographic space (U+3000) as a separator for search terms * Patch #38529: Limit available locales to those defined by Redmine itself === [Importers] * Feature #36823: Allow to import time entries for issues in different projects === [Issues] * Defect #38458: Display order of watchers in the sidebar is indeterminate * Defect #38493: The related issues count on the issue view is not updated after deleting one of the related issues * Defect #39186: Missing synchronization between watchers and watcher_users for unsaved objects * Feature #2568: Description for issue statuses * Feature #16207: Use query name as the file name when exporting queries * Feature #31505: Mark edited journal notes as "Edited" * Feature #37362: CSV export of issues report * Feature #37532: Add CSS class for relation type to related issues list * Feature #37621: Add field separator option to CSV export dialog * Feature #38416: Ability to disable the priority field * Patch #38820: Retry in case of stale issue during Issue.update_versions === [Issues filter] * Feature #38301: Multiple issue ids in "Related to" filter * Feature #38402: "Any searchable text" filter for issues * Feature #38527: New issues filter operators "has been", "has never been", and "changed from" === [Issues workflow] * Defect #37635: Respect Role#consider_workflow? when checking for allowed status transitions * Patch #37636: Ignore statuses if workflow only defines identity transition === [News] * Feature #2631: Add breadcrumbs to news pages === [PDF export] * Feature #38368: WebP images support in PDF output === [Performance] * Patch #29171: Add an index to improve the performance of issue queries involving custom fields * Patch #37057: Query optimization for attachments activity * Patch #37528: Don't load changesets when IssuesController#show processes API requests without "include=changesets" * Patch #37687: Retrieve attachments with a single query when rendering a journal * Patch #38146: Fix all performance-related RuboCop offenses * Patch #38198: Improve MySQL query plan for Project#project_condition * Patch #38319: Optimize IssueQuery#sql_for_assigned_to_role_field for PostgreSQL performance * Patch #38474: Preload default_status when listing trackers === [Permissions and roles] * Feature #37807: Allow access to /robots.txt even if logins are required * Feature #38048: Introduce permission to set a project public === [Plugin API] * Defect #31116: Database migrations don't run correctly for plugins when specifying the `VERSION` env variable * Defect #38707: Fix order of loading plugins' config/routes.rb * Feature #38730: Generate snake-case file name by redmine_plugin_migration === [REST API] * Defect #38668: Unable to retrieve custom fields set as "For all projects" via Projects API * Feature #37617: Add description field to custom fields API * Feature #39113: Add missing Homepage attribute in Projects API response === [Rails support] * Feature #38216: Add template filenames as comments to HTML output in development mode === [Roadmap] * Feature #36679: Export a version as changelog text === [Ruby support] * Feature #37159: Drop Ruby 2.5 support * Feature #38099: Add Ruby 3.2 support * Feature #38134: Drop Ruby 2.6 support === [SCM] * Feature #35432: Git: View annotation prior to the change === [Search engine] * Feature #38459: Support "My bookmarks" in the search * Feature #38481: Further narrow search results with issues filter === [Text formatting] * Feature #34863: Change default text formatter for new installations from textile to common_mark * Patch #36807: Remove CommonMark experimental flag and mark as deprecated the RedCarpet Markdown === [Third-party libraries] * Feature #39400: Migrate Stylelint to 15.11.0 * Patch #37538: Update Chart.js to 3.9.1 * Patch #38162: Update jQuery UI Datepicker i18n files to 1.13.2 === [Time tracking] * Feature #10314: Make the only enabled activity in a project the default one for time entry * Feature #27821: "Issue's subject" filter for spent time * Feature #29286: Add default spent time activity per role * Feature #37623: Add Parent task filter and column to Spent time === [Translations] * Defect #38477: Fix the English and Japanese translations of field_last_login_on * Defect #38871: Fix mistranslation of label_board_sticky in Spanish translation * Feature #34924: Add Tamil language support * Feature #36938: Update translations of field_principal to User or Group * Patch #32435: Change Russian translation for "Submit" === [UI] * Feature #1069: Open Help in a separate tab * Feature #36908: Improve wording on password change form * Feature #38231: Limit the year to 4 digits in date input * Patch #38449: Align buttons in modal dialogs to the left instead of right === [UI - Responsive] * Patch #38360: Do not apply table-layout:fixed in potentially wide tables of detailed issue reports === [Wiki] * Defect #34634: Deletion of project wiki leaves the project wiki inaccessible (404) until module reactivation == 2023-09-30 v5.0.6 === [Code cleanup/refactoring] * Defect #38797: Fix incorrect argument format for assert_select === [Custom fields] * Defect #38464: Rendering a custom field with a URL pattern set and containing " :" in the value raises Addressable::URI::InvalidURIError === [Gantt] * Defect #38728: Correctly escape issue text in Gantt PNG export for ImageMagick convert === [Gems support] * Patch #39070: Allow using the latest version of mocha even when using Ruby < 2.7 === [Groups] * Defect #38443: Cannot add a user to a group if the group is a member without roles in a certain project === [PDF export] * Defect #37694: CommonMark Markdown task list item markers are not exported to PDF === [Project settings] * Defect #37166: Roles of a project member should not be made empty === [Projects] * Defect #38286: "Cannot delete enumeration" error may occur when attempting to delete a project with time entries === [Rails support] * Patch #38374: Update Rails to 6.1.7.6 === [Ruby support] * Defect #38617: Redmine 4.2 on Ruby 2.4 is not compatible with loofah 2.21 or higher === [Security] * Defect #38539: Update Nokogiri to 1.15.2 in 5.0-stable and 4.2-stable * Defect #38807: XSS in Textile formatter * Defect #38806: XSS in Markdown formatter * Defect #38417: XSS Vulnerability in Thumbnails === [Text formatting] * Defect #38697: Exception during thumbnail macro to image tag conversion in emails === [Time tracking] * Defect #39079: NoMethodError when trying to remove the date of an existing time entry === [Translations] * Defect #38507: Fix typo in French translation of setting_bulk_download_max_size * Patch #38533: Improve the clarity of German translation of label_user_mail_notify_about_high_priority_issues_html === [UI] * Defect #33502: Issue field labels for fields with descriptions are missing styling on issues show view * Defect #38448: The margin below the Submit button on the issue edit page is too narrow * Patch #38359: Render numeric axes in charts as Integers == 2023-03-05 v5.0.5 === [Code cleanup/refactoring] * Patch #38141: Update copyright year to 2023 === [Documentation] * Defect #38114: Example plugin (extra/sample_plugin) breaks Activity page === [Gems support] * Defect #38239: Test failure with Commonmarker 0.23.8 * Patch #38135: Allow use of Puma 6.0.0 or later * Patch #38272: Update RBPDF to 1.21 === [Groups] * Patch #38144: Refactoring: Use Group.visible instead of manual visibility check in GroupsController === [Importers] * Defect #38254: Time Entry Import fails to import custom fields with "User" format === [Issues] * Defect #37755: Mentioning users with certain characters renders incorrectly * Defect #38217: "Property changes" tab does not appear when all issue journals have both notes and property changes === [PDF export] * Defect #32740: Incorrect characters when copying out of a Redmine generated PDF * Defect #36452: Infinite loop on PDF export if image included with attributes === [Project settings] * Defect #38064: Avoid exception when adding a project without any givable roles defined === [Rails support] * Defect #36273: Modifying the source code of a plugin does not reload it after r21295 * Defect #38199: Fix deprecation warning for db:structure:dump in db:migrate when using sql schema format * Patch #38191: Update Rails to 6.1.7.2 === [Security] * Defect #38063: Avoid double-render error with ApplicationController#find_optional_project * Defect #38070: Role#permission_tracker? and related does not consider whether the base permission is (still) set * Defect #38133: Update Nokogiri to fix several security issues * Defect #38297: Insufficient permission checks when adding attachments to issues === [SEO] * Defect #38201: Fix robots.txt to disallow issue lists with a sort or query_id parameter in any position === [Text formatting] * Defect #37881: Thumbnails are no longer fetched for all notes of an issue * Defect #38073: CommonMark Markdown formatter does not support min-width, max-width, min-height, and max-height CSS properties * Defect #38215: Nested CommonMark Markdown task lists are not indented === [Time tracking] * Defect #35066: Missing project_id in redirect after clicking "Create and add another" button * Defect #38237: Unable to choose any user other than the current user when logging spent time after clicking "Create and add another" == 2022-12-01 v5.0.4 === [Activity view] * Defect #37875: Unnecessary closing li element when there is no "Next" button on Activity page === [Code cleanup/refactoring] * Patch #37938: Unused permission "Mention user" === [Documentation] * Defect #37983: Duplicate vertical-align property in wiki_syntax.css === [Gems support] * Defect #37884: All system tests fail on 4.2-stable branch with "ArgumentError: unknown keyword: :desired_capabilities" * Patch #37867: Limit puma < 6.0.0 to avoid system test error * Patch #37883: Limit mocha version to < 2.0.0 when Ruby version is < 2.7 to avoid test error === [Issues] * Defect #37958: Groups added to watchers are not shown as links === [Issues workflow] * Defect #37685: Read-only field permission for the project field is ignored if the current project has subprojects === [Projects] * Defect #37925: Do not allow unkown display_type for query === [Rails support] * Defect #37814: Plugins that serialize Date or Time objects cause Psych::DisallowedClass exception === [Security] * Defect #37772: Access Control Issue in attachments#download_all * Defect #37751: Persistent XSS in textile formatting due to blockquote citation * Defect #37767: Redmine contains a cross-site scripting vulnerability * Defect #37880: Open Redirect in attachments#download_all === [Translations] * Defect #37812: "Yes" and "No" are swapped in Polish translation == 2022-10-02 v5.0.3 === [Code cleanup/refactoring] * Defect #37609: Remove obsolete remnant public/images/openid-bg.gif * Defect #37449: Passing a wrong parameter to `with_settings` in UserTest::test_random_password_include_required_characters === [Filters] * Defect #36940: Chained custom field filter doesn't work for User fields * Defect #37349: Chained custom field filter for User fields returns 500 internal server error when filtering after a float value === [Issues] * Defect #37369: Mention auto-complete not works in bulk-edit comments * Defect #37499: Default query should not be applied if the query is not allowed to be set as the default * Defect #37473: Focus IssueId not working when linking issues === [Issues list] * Defect #37268: Performance problem with Redmine 4.2.7 and 5.0.2 === [Rails support] * Patch #37452: Update Rails to 6.1.7 === [Security] * Defect #37492: Update jQuery UI to 1.13.2 === [SCM] * Defect #33953: Repository tab is not displayed if no repository is set as the main repository * Defect #36258: Support revision without any message in Mercurial repositories * Defect #37585: Do not show "History" tab for content in Filesystem repository * Defect #37626: Diff of a javascript file in repository module is not displayed with layout * Defect #37718: Repository browser does not show "+" (plus sign) in filename === [SCM extra] * Defect #37562: POST Requests to repository WS fail with "Can't verify CSRF token authenticity" === [Text formatting] * Defect #37237: Common Markdown Formatter does not render all properties on HTML elements * Patch #37713: Add rel="noopener" to all external links that would open a new tab/window * Defect #37379: Thumbnail macro does not work when a file is attached and preview is displayed immediately === [Translations] * Defect #37529: Fix mistranslation of label button_create_and_follow in Russian translation * Defect #37603: Missing translation for label_default_queries.for_this_user * Patch #35613: German translation update of Wiki syntax help for 5.0-stable * Patch #37263: Lithuanian translation update for 5.0-stable * Patch #37698: Persian translation update for 4.2-stable === [UI] * Defect #36901: Jump to project is misaligned in Safari 15.4 and later * Defect #37282: Subtask isn't displayed correctly since 4.2.7 * Defect #37481: Fix the unintentional selection of rows with the context menu * Defect #37566: The number of the ordered list in the project description is not displayed and the indentation does not match the unordered list == 2022-06-21 v5.0.2 === [Email notifications] * Defect #37138: Mentions of users with "@" in their username * Patch #37065: When someone is member of watcher group, 'watched_by' may be wrong and incomplete * Defect #37162: Missing space between notification sentence and author name when edit a wiki page === [Email receiving] * Defect #37187: no-permission-check allows issue creation in closed/archived projects === [Gems support] * Defect #35892: Redmine::WikiFormatting::CommonMark::FormatterTest#test_footnotes fails with CommonMarker 0.23.2 * Defect #37249: Missing rexml gem causes errors in PUT - Adding the gem manually everything works === [Issues] * Defect #37151: The done ratio of a parent issue may not be 100% even if all subtasks have a done ratio of 100% * Patch #37155: Issue#last_notes fallback does not respect notes visibility * Defect #37171: Ability to change the issue category or issue target version with nonexistent value for the specific project === [Performance] * Patch #37135: Reduce extra queries in ProjectQuery.default === [REST API] * Defect #37157: Internal server error when trying to retrieve AnonymousUser's information via Users API === [Security] * Defect #37255: Information Leak in QueryAssociationColumn/QueryAssociationCustomFieldColumn * Defect #37256: Medium severity XSS security vulnerabilities (3x) in jQuery UI v1.12.1 * Defect #37136: Remote code execution vulnerability in commonmarker === [Text formatting] * Defect #37130: Wiki notation `attachment:file_name` cannot make a link to a file attached to other journals === [Time tracking] * Defect #33914: Even if the default value of Activities (time tracking) is set, it may not be reflected. === [UI - Responsive] * Defect #36453: Issue subject overflow in subtasks and relations tables == 2022-05-16 v5.0.1 === [Administration] * Defect #36932: Handle nil return of Redmine::Themes.theme(Setting.ui_theme) in Redmine::Info.environment === [Attachments] * Defect #36887: copyImageFromClipboard function failed to generate a unique file name * Patch #36817: copyImageFromClipboard function targets the first file input of the page and may conflict with other plugins * Defect #37053: Attachments are lost when the status of the ticket is changed === [Documentation] * Defect #36862: Duplicate v5.0.0 section in Changelog * Defect #36863: Missing v4.2.5 section in Changelog === [Email notifications] * Defect #36909: Mentions not working if status is changed === [Email receiving] * Defect #37030: Requests fail with "Can't verify CSRF token authenticity" in mail handler === [Gems support] * Defect #36892: Redmine does not start when installed --without markdown === [I18n] * Defect #36998: Revert lazy loading of i18n files introduced in Redmine 5.0 === [Rails support] * Patch #36917: Update Rails to 6.1.6 === [Security] * Patch #36912: Update Nokogiri versions to fix two critical CVE's === [Text formatting] * Defect #36958: Crafted input breaks CommonMark Markdown formatter === [Translations] * Patch #36905: German translation update for 5.0-stable * Patch #36930: Bulgarian translation update for 5.0-stable * Patch #36934: Russian translation update for 5.0-stable * Patch #37003: Czech translation update for 5.0-stable * Patch #37024: Galician translation update for 5.0-stable * Patch #37025: Polish translation update for 5.0-stable == 2022-03-28 v5.0.0 === [Accounts / authentication] * Feature #30998: Add an rake task to prune registered users after a certain number of days * Feature #31920: Require 2FA only for certain user groups * Feature #33345: Include an authentication method name in LDAP connection error messages * Feature #35001: Disable API authentication with username and password when two-factor authentication is enabled for the user * Feature #35439: Option to require 2FA only for users with administration rights * Feature #36825: Increase email address length limit from 60 to 254 === [Administration] * Defect #35421: Unhandled exception when a YAML syntax error is detected in configuration.yml * Feature #32116: Add configured theme to Redmine::Info * Feature #35562: Show warning in admin/info when there are pending migrations * Feature #35934: Show 2FA status in users list from administration with option to filter * Feature #36391: Change the default value for "Time span format" from "decimal" to "minutes" === [Attachments] * Defect #35539: Race condition (possible filename collision) in Attachment.disk_filename * Feature #32898: PDF thumbnails support on Windows * Feature #35462: Download all attachments in a journal === [Code cleanup/refactoring] * Defect #31132: Remove unused column trackers.is_in_chlog * Defect #36149: Typo in CSS class for lists expander icon * Defect #36361: IssueRelationsControllerTest#test_bulk_create_should_show_errors randomly fails * Defect #36394: Avoid passing ActionController::Parameters outside of MailHandlerController * Feature #34337: Remove jQuery Migrate * Feature #35259: Output test coverage report to the console * Feature #35671: Move subtasks section on issues show view into a separate partial * Patch #15118: Deprecate and rename rss_* methods to atom_* methods * Patch #31035: Remove redefinition of ActionMailer::LogSubscriber#deliver which is no longer necessary because of the removal of Setting.bcc_recipients * Patch #32922: Reload detached attachments * Patch #33079: Remove unused argument from Redmine::Helpers::TimeReport * Patch #33337: Clean-up workflows controller * Patch #34976: Add missing fixtures to TimeEntryCustomFieldTest * Patch #35024: System test fails in Windows due to "/" path separator * Patch #35026: Remove rake task check_parsing_by_psych * Patch #35031: Remove deprecated code that are supposed to be removed in Redmine 5 * Patch #35075: Use named routes in base layout and account sidebar * Patch #35076: Menu manager - generate correct URLs when rendering from a namespaced controller * Patch #35208: Use `Time.use_zone` instead of `Time.zone=` * Patch #35230: Fix typo in ApplicationHelper.html_title comment * Patch #35396: Use base_scope for issue query results * Patch #35466: Rename test/fixtures/configuration/*.yml.example to test/fixtures/files/configuration/*.yml * Patch #35610: Cleanups after Wiki tab removal from project settings (#26579) * Patch #35727: Add missing fixtures to Redmine::ProjectJumpBoxTest * Patch #35773: Move sidebar content on versions index view (roadmap) into a separate partial * Patch #35952: Explicitly specify text formatting in the test suite * Patch #35975: Add missing fixtures to UserTest * Patch #36005: Adopt 2FA emails to new Mailer interface * Patch #36241: MenuManagerTest randomly fails * Patch #36347: Add missing fixture to IssuesHelperTest * Patch #36358: Use File.exist? instead of deprecated File.exists? * Patch #36379: Update copyright year in source files to 2022 * Patch #36716: IssuesControllerTest randomly fails * Patch #36730: Replace Member.find_or_new with ActiveRecord's find_or_initialize_by * Patch #36770: Fix to use a correct exception class ActiveRecord::IrreversibleMigration in migrations === [Custom fields] * Defect #32977: Remove references to deleted user from "user"-Format CustomFields * Feature #14275: Add hinting to custom fields === [Database] * Feature #35073: Escape values in LIKE statements to prevent injection of placeholders (_ or %) * Patch #36416: Cleanup more dependent objects on project delete === [Documentation] * Feature #33859: Add a list of supported languages by the code highlighter to the help * Feature #34978: Add the list of supported browsers to docs and drop support for IE 11 === [Documents] * Patch #17924: Structured Document list for more flexible UI design with CSS === [Email notifications] * Defect #32199: Security notification is not sent when an admin changes the password of a user * Defect #35017: X-Redmine-Issue-Assignee email header field is empty when the assignee of an issue is a group * Defect #36393: Mailer.with_synched_deliveries doesn't correctly detect other async Queue adapters * Feature #13919: Mention user on issues and wiki pages using @user with autocomplete * Feature #30820: Drop setting "Blind carbon copy recipients (bcc)" === [Filters] * Defect #36389: Filter parameters of Query string do not work when default query is enabled * Feature #5893: Filter issues by notes * Feature #34715: Filter issues by file description * Feature #35764: Multiple search terms in the "contains" operator of text filters * Patch #35312: Gracefully handle invalid operators and associations requested in queries === [Gantt] * Defect #33381: Possible double includes in issue query in gantt helper === [Gems support] * Patch #35000: Update SimpleCov to 0.21 * Patch #35025: Update capybara to 3.36 * Patch #35136: Update RuboCop to 1.25 * Patch #35142: Update RuboCop Performance to 1.13 * Patch #35207: Update RuboCop Rails to 2.14 * Patch #35361: Update CSV to 3.2 * Patch #35691: Update Nokogiri to 1.13 * Patch #36325: Update Rouge to 3.28 * Patch #36355: Update roadie-rails to 3.0 * Patch #36564: Update I18n to 1.10 === [Groups] * Feature #12795: View group members by non-admin users === [Hook requests] * Defect #34743: Hooks for queries helper === [I18n] * Defect #36396: Custom I18n Pluralization rules are not applied correctly * Feature #36728: Reintroduce lazy loading of i18n files === [Importers] * Defect #36377: Encoding drop-down in the import settings defaults to US-ASCII instead of general_csv_encoding in Korean, Thai, and Shimplified Chinese * Feature #34718: Auto guess file encoding when importing CSV file * Feature #35137: Reject CSV file without data row when importing * Feature #35365: Allow sending account information when importing users === [Issues] * Defect #15634: Add watching users to a ticket should switch "watch" link to "unwatch" if own user was added * Defect #33521: Use issue path instead of bulk update issues path when using the context menu with only one issue selected * Defect #34641: When editing an issue, the Log time and/or Add notes does not show or hide dynamically * Feature #4347: Contributing to an issue should automatically add the user to the watchers list * Feature #6033: Allow addition/removal of subtasks to show in parent's history * Feature #7360: Issue custom query: default query per instance, project and user * Feature #13099: Issue Summary: add statistics about issues without assignee, version or category * Feature #29076: Add button to "Create and follow" when adding a subtask from the parent issue * Feature #31278: Change Delete button name to Delete issue * Feature #35559: Query links for related issues on issue page === [Issues list] * Feature #34932: "Copy link" feature for issues list === [OpenID] * Feature #35755: Drop OpenID support === [PDF export] * Feature #35683: PDF rendering improvements when exporting an issue or a list of issues === [Performance] * Feature #29041: Update session token only once per minute * Feature #35324: Preload principal and roles in members#index * Feature #35374: Reduce amount of work on projects show API * Feature #36294: Lazy load inline images * Feature #36505: Reduce database queries when rendering Custom fields box in the project settings tab * Feature #36696: Improve performance of adding or removing members of a group === [Permissions and roles] * Defect #34029: 403 Forbidden error when non-member try to upload a file === [Plugin API] * Defect #35455: Require redmine/sort_criteria globally === [Project settings] * Defect #13199: "Edit" misaligned in project members view * Defect #36318: Saving time tracking activities without any change may turn a system activity into a project activity === [Projects] * Feature #35795: Settings for global and user default custom ProjectQuery === [REST API] * Feature #10171: Updating journal notes via REST API * Feature #15855: Add information about whether an issue is open or closed to Issues API response * Feature #24976: Include new statuses allowed by workflow in Issues REST API * Feature #34766: Better error message when no API format is recognised * Feature #34857: Add total estimated hours, spent hours, total spent hours for issues to issue list API * Feature #35420: API to archive/unarchive projects * Feature #35505: Add enabled core fields to /trackers API response * Feature #35507: API to close/reopen projects * Feature #36303: Include avatar URL in Users API === [Rails support] * Feature #29914: Migrate to Rails 6.1 with Zeitwerk autoloading * Feature #35030: Allow parallel testing * Patch #35081: Update config/environments/*.rb for Rails 6.1 * Patch #36317: Set default protect from forgery true === [Roadmap] * Feature #6432: Allow unchecking all trackers in Roadmap view sidebar === [Ruby support] * Feature #31128: Drop Ruby < 2.5 support * Feature #34992: Ruby 3.0 support * Feature #36205: Ruby 3.1 support === [SCM] * Feature #5242: Display source project for cross-project associated revisions for issues * Feature #16849: Render Textile and Markdown files in the repository browser === [Text formatting] * Defect #36580: Fix code copying in common browsers * Feature #20511: Comments for Textile text formatting * Feature #32424: CommonMark Markdown Text Formatting * Feature #35677: Preserve leading white space when quoting using the JS toolbar * Feature #35742: Enable task list items for CommonMark text formatting * Patch #35104: Code blocks - consistent rendering and retaining user-supplied language name in rendered HTML === [Third-party libraries] * Feature #36701: Update Chart.js to 3.7.1 * Patch #35729: Update jQuery to 3.6.0 === [Time tracking] * Defect #21056: Project specific TimeEntryActivity name not updating properly === [UI] * Defect #36524: Query Links on Issues and Time Logs Import Sidebars broken * Feature #34494: Rename the save, edit and delete buttons on the query form to clarify the scope * Feature #35770: Change "Edit" label in the context menu to "Bulk Edit" when multiple issues are selected * Patch #30448: Remove wrapper2 and wrapper3 wrapping containers * Patch #36429: Make issue tabs DOM more consistent === [Wiki] * Feature #7652: Ability to add watchers to Wiki pages == 2022-03-28 v4.2.5 === [Attachments] * Defect #36013: Paste image mixed with other DataTransferItem === [Database] * Defect #36766: Database migration from Redmine 0.8.7 or earlier fails === [Documents] * Defect #36686: Allow pasting screenshots from clipboard in documents === [Gems support] * Patch #36795: Set the minimum required version of ROTP gem to 5.0.0 === [Issues filter] * Defect #30924: Filter on Target version's Status in subproject doesn't work on version from top project === [Projects] * Defect #36593: User without permissions to view required project custom fields cannot create new projects === [Rails support] * Patch #36757: Update Rails to 5.2.6.3 == 2022-02-20 v4.2.4 === [Gantt] * Defect #35027: Gantt PNG export ignores imagemagick_convert_command === [Gems support] * Defect #35435: Psych 4: aliases in database.yml cause Psych::BadAlias exception * Defect #36226: Psych 4: Psych::DisallowedClass exception when unserializing a setting value === [Importers] * Defect #35656: When importing issue relations, the validation messages are not shown in the UI === [Issues] * Defect #36455: Text custom field values are not aligned with their labels when text formatting is enabled === [Rails support] * Patch #36633: Update Rails to 5.2.6.2 === [Time tracking] * Defect #20018: Duplicate activities in time entry report when project-specific activies exist * Defect #36248: Time entries of sub-projects are not listed when activity is specified in filters === [Translations] * Defect #36517: Label error_can_not_execute_macro_html in Russian translation is broken === [UI] * Defect #36446: Watchers autocomplete fails with 403 error when the search is made from multiple objects with different projects * Patch #35215: Don't display "No Match Found!" when the inline autocomplete doesn't return any result * Defect #35090: Permission check of the setting button on the issues page mismatches button semantics * Defect #36363: Cannot select text in a table with a context menu available * Patch #36378: Update copyright year in the footer to 2022 === [Wiki] * Defect #36494: WikiContentVersion API returns 500 if author is nil * Defect #36561: Wiki revision page does not return 404 if revision does not exist == 2021-10-10 v4.2.3 === [Administration] * Defect #35731: Password and Confirmation fields are marked as required when editing a user === [Attachments] * Defect #35642: Long text custom field values are not aligned with their labels * Defect #35715: File upload fails when run with uWSGI === [Issues] * Defect #35655: Create duplicated follows relations fails with 500 internal error === [Issues planning] * Defect #35669: Prints of Issues Report details are messed-up due to the size of the graphs === [Permissions and roles] * Defect #35634: Attachments deletable even though issue edit not permitted === [Projects] * Defect #35827: Deleting a closed or archived project returns 403 === [Roadmap] * Feature #35758: Add some space around the versions on the Roadmap === [Security] * Defect #35789: Redmine is leaking usernames on activities index view * Patch #35463: Enforce stricter class filtering in WatchersController === [Translations] * Patch #35662: Mongolian translation update for "Notes", "Totals", and "% Done" * Patch #35766: Galician translation update for 4.2-stable === [UI] * Defect #34834: Line breaks in the description of a custom field are ignored in a tooltip == 2021-08-01 v4.2.2 === [Accounts / authentication] * Defect #35226: Add SameSite=Lax to cookies to fix warnings in web browsers * Patch #35372: Better presentation for 2FA recovery codes === [Attachments] * Defect #33752: Uploading a big file fails with NoMemoryError === [Documentation] * Patch #35375: German translation of wiki syntax help file === [Gantt] * Defect #34694: Progress bar for a shared version on gantt disappears when the tree is collapsed and then expanded === [Gems support] * Defect #35621: Bundler fails to install globalid when using Ruby < 2.6.0 === [Issues] * Defect #35134: Change total spent time link to global time entries when issue has subtasks that can be on non descendent projects === [Issues filter] * Defect #35201: Duplicate entries in issue filter values === [News] * Defect #35308: "Add news" button on global news index is displayed for users without permissions === [Projects] * Defect #35606: Locked users should not be displayed in the members box of the project overview page === [Rails support] * Patch #35214: Update Rails to 5.2.6 === [Security] * Defect #35417: User sessions not reset after 2FA activation === [Text formatting] * Defect #35036: Markdown text sections broken by thematic breaks (horizontal rules) * Defect #35441: Inline image in Textile is not displayed if the image URL contains ampersands === [Time tracking] * Defect #34856: Time entry error on private issue === [Translations] * Defect #35319: Wrong Japanese translation for permission_delete_message_watchers * Patch #34979: French translation update for 4.2-stable * Patch #35016: French translations for two-factor authentication * Patch #35051: German translation update for 4.2-stable * Patch #35110: Lithuanian translation update for 4.2-stable * Patch #35111: Russian translation update for 4.2-stable * Patch #35267: German translation update (jstoolbar-de.js) == 2021-04-26 v4.2.1 === [Accounts / authentication] * Defect #35087: Users without two-factor authentication enabled cannot sign out when two-factor authentication is required * Defect #35135: FrozenError when new LDAP users try to login === [Activity view] * Defect #34933: Atom feed of the activity page does not contain items after the second page === [Attachments] * Defect #34999: The result of Attachment.latest_attach is unstable if attachments have the same timestamp === [Custom fields] * Defect #35115: Time entries are broken if grouped by project and issue custom fields === [Email receiving] * Defect #35100: MailHandler raises NameError exception when generating error message === [Importers] * Defect #35131: Issue import - allow auto mapping for Unique ID and relation type fields === [Issues] * Defect #34921: Do not journalize attachments that are added during a "Copy Issue" operation * Defect #34982: Cannot change the default version and default assignee under settings === [Performance] * Patch #35034: Improve loading speed of workflow page === [REST API] * Defect #35039: API create issue relation method returns undefined method `split' when issue id is sent as integer === [Roadmap] * Defect #34983: Roadmap tab is missing if there are only inherited from parent project versions === [Security] * Defect #34367: Allowed filename extensions of attachments can be circumvented * Defect #35045: Mail handler bypasses add_issue_notes permission * Defect #35085: Arbitrary file read in Git adapter === [Text formatting] * Defect #34894: User link using @ not working at the end of line === [UI] * Defect #34998: Cannot open journal dropdown menu after editing note == 2021-03-28 v4.2.0 === [Accounts / authentication] * Defect #33601: Additional email addresses are not displayed in user profile page * Feature #1237: Add support for two-factor authentication * Feature #3369: Allowed/Disallowed email domains settings to restrict users' email addresses * Feature #32998: Change the default value for "Default Gravatar image" to "Identicons" * Feature #33126: Support custom fields when exporting users to CSV * Feature #33347: Include updated_on and passwd_changed_on columns when exporting users to CSV * Feature #34241: Include twofa_scheme (two-factor scheme) column when exporting users to CSV * Patch #34071: handle AuthSourceExceptions in User.try_to_login === [Activity view] * Feature #1422: Date selection for Activity Page * Feature #32248: Change the default value for "Days displayed on project activity" setting to 10 * Feature #33602: Add an interface to filter activities by user * Feature #33692: Improved view of the activity page === [Administration] * Feature #32672: Add Check all / Uncheck all button to filters in permissions report * Feature #34258: Create tracker by copy * Feature #34307: Create custom field by copy === [Attachments] * Defect #33357: rendering extra "--" footer of git patch attachment * Feature #7056: Download all attachments at once * Feature #18555: Show warning when attempting to attach more than the allowed number of attachments === [Calendar] * Defect #32194: Calendar page lacks buttons to manage custom queries === [Code cleanup/refactoring] * Defect #33392: Fix invalid selector in function displayTabsButtons() * Defect #33562: Some tests in ApplicationHelperTest are declared as private * Patch #32054: Add test for 4 byte characters (emoji) support * Patch #32653: Fix random test failure due to missing call to set_tmp_attachments_directory in WikiControllerTest * Patch #32813: Clean up toggleMultiSelect js function * Patch #32888: Use stylelint to avoid errors and enforce conventions in CSS files * Patch #32890: Fix violations reported by Stylelint * Patch #32924: tmp/pdf directory is no longer necessary * Patch #32927: CSS selector in test_index_should_show_warning_when_no_workflow_is_defined is too specific * Patch #32929: Add missing fixtures to AttachmentsControllerTest * Patch #32937: test_revisions_latin_1_identifier should be skipped on Windows * Patch #33069: Update copyright year in source files to 2021 * Patch #33226: Skip thumbnail tests if ImageMagick convert command is not available * Patch #33268: Add missing test: ProjectCustomField creation * Patch #33315: IssuesSystemTest#test_bulk_watch_issues_via_context_menu randomly fails due to Capybara clicks out out of context menu * Patch #33342: Remove unused i18n key "label_overall_activity" and "label_overall_spent_time" * Patch #33367: Use more efficient "exists?" instead of "first" in tests when checking the existence of rows * Patch #33376: Add missing fixtures to VersionsHelperTest * Patch #33384: jQuery: replace deprecated size() method with length * Patch #33393: Remove unused i18n key "notice_no_issue_selected" * Patch #33567: Fix typo in watchers_controller.rb * Patch #33700: Add missing fixture to Redmine::ApiTest::ProjectsTest * Patch #33728: Remove an unused variable in Query#add_chained_custom_field_filters * Patch #33785: Add missing fixture to TimelogControllerTest * Patch #33786: Add missing fixture to UsersControllerTest * Patch #34119: Fix selenium chrome options so files are downloaded to tmp/downloads in system tests * Patch #34122: Store inline autocomplete data sources in a JS variable * Patch #34166: Fix wrong comment for Mailer.deliver_lost_password * Patch #34169: MessagesControllerTest#test_post_new randomly fails * Patch #34269: Allow system tests to run on remote Selenium hub (eg: Docker) * Patch #34321: Add missing fixtures to AttachmentsControllerTest * Patch #34444: Remove unused key :preview from Redmine::AccessKeys::ACCESSKEYS * Patch #34492: Fix passing a wrong parameter to assert_select in API test for 'GET /users/:id' * Patch #34745: Remove unused i18n key "text_min_max_length_info" * Patch #34750: Remove unsupported encodings ISO-2022-KR and ISCII91 from Setting::ENCODINGS * Patch #34789: Fix misplaced comment in config/settings.yml === [Custom fields] * Defect #5354: Updating custom fields does not trigger update to "updated_on" field in the customized object * Defect #33930: 500 error when attempting to create custom field enumeration with empty name * Feature #30776: Drag and drop file upload to file type custom field * Feature #32783: Redirect to index page instead of edit page after creating a new custom field === [Documentation] * Defect #32795: Remove RubyGems from Requirements in doc/INSTALL * Patch #33208: `--without rmagick` option for bundle command is no longer necessary === [Email notifications] * Feature #16006: Include attachments in forum post notifications * Feature #32628: Notify users about high issues (only) * Feature #33002: Include attachments in news post notifications * Feature #33099: Add a link to the issues list in reminder email * Feature #33834: Show open/closed badge in email notifications * Feature #34787: Ability to set default value for "I don't want to be notified of changes that I make myself" === [Email receiving] * Feature #34794: Allow newlines and quote characters within mail body delimiters === [Feeds] * Feature #15212: Atom feed on project with subprojects should show in article title the name of the project === [Filters] * Feature #33296: Load default custom queries when running redmine:load_default_data rake task === [Forums] * Defect #32156: No left padding for first level entries in discussion board list * Feature #3390: Ability to add watchers to forum threads === [Gems support] * Patch #32453: Update capybara (~> 3.31.0) * Patch #32468: Update Rouge to 3.26.0 * Patch #32530: Update RuboCop to 1.12 * Patch #32531: Update RuboCop Rails to 2.9 * Patch #32763: Update mini_magick to 4.11 * Patch #32782: Update pg gem (~> 1.2.2) * Patch #32805: Update request_store to 1.5 * Patch #32841: Drop support for Bundler prior to 1.12.0 * Patch #32906: Update i18n (~> 1.8.2) * Patch #32950: Update simplecov to 0.18 * Patch #34159: Update RuboCop Performance to 1.10 * Patch #34339: Update net-ldap to 0.17 * Patch #34443: Update roadie-rails to 2.2 * Patch #34579: Use 'webdrivers' gem to manage the Chrome driver for system tests * Patch #34969: Remove dependency on MimeMagic === [Hook requests] * Patch #34072: Hook after plugins were loaded === [I18n] * Defect #33186: field_activity should be used rather than label_activity in the context of time tracking * Defect #33232: Hard-coded error messages in ApplicationController * Defect #33426: Error messages for Wiki macros are not internationalized * Patch #33741: Decimal separator for Dutch locale should be a comma === [Importers] * Feature #22913: Auto-select fields mapping in Importing * Feature #28198: Support issue relations when importing issues * Feature #33102: Import user accounts from CSV file * Feature #34762: Display more detailed error message when attempting to import malformed CSV file === [Issues] * Defect #10084: Disabled trackers of subprojects are listed in project overview * Defect #32125: Issues autocomplete may not find issues with a subject longer than 60 characters * Defect #32471: Layout of the custom field edit page is different between the single edit page and the batch edit page * Defect #33255: Issue auto complete doesn't work for custom fields with text formatting enabled on issue bulk edit page * Defect #33419: Show only valid projects on issue form when the issue is a subtask * Defect #34185: Trackers of subprojects are not displayed in the Issue summary page * Feature #4511: Allow adding user groups as watchers for issues * Feature #28471: Query links for subtasks on issue page * Feature #31881: Add "behind-schedule" CSS class to issues * Feature #33254: Show open/closed badge on issue page * Feature #33418: Bulk addition of related issues * Feature #33832: Move the "Private" badge next to the "Open/Closed" badge * Feature #34303: Allow to add subtask from context menu * Feature #34798: Show project tree instead of subprojects in the project selector when you create a new issue * Patch #33329: Improve watchers functionality to mark the users that are watching a non visible object and to not return watchers that cannot see the object * Patch #33437: Add missing icon class to items with icon-checked class in the context menu === [Issues filter] * Feature #34700: Allow to use watch_by filter in the global issues list === [Issues list] * Feature #32240: Add download buttons in Files columns of the issues list === [Performance] * Defect #33289: Updating time tracking activities in project setting may take too long time * Patch #33244: Replace "**" method with bitwise left shift in Tracker#disabled_core_fields and Tracker#core_fields * Patch #33664: evaluate acts_as_activity_provider's scope lazily * Patch #34150: Use match? instead of =~ when MatchData is not used * Patch #34153: Use sum instead of inject(0, :+) * Patch #34160: Replace Hash#merge! with Hash#[]= * Patch #34161: Replace gsub with tr, delete, or squeeze * Patch #34399: Use sum { ... } instead of map { ... }.sum === [Permissions and roles] * Feature #13767: Export permissions report to CSV * Feature #33945: Allow normal users to delete projects with permission === [Plugin API] * Defect #33290: Unnecessary database access when IssueQuery class is defined * Patch #33453: Add plugin CSS classes to plugin settings views === [Project settings] * Defect #34032: Project settings tab contains two items with the same id === [Projects] * Defect #33733: No trackers are selected for new projects * Feature #32818: Add a system setting for default results display format of project query * Feature #32944: Always preserve the tree structure in the project jump box * Feature #33174: Show groups in members box on project overview page === [Rails support] * Patch #34966: Update Rails to 5.2.5 === [REST API] * Defect #11870: Users can delete their own accounts unconditionally via REST API * Defect #30121: Projects API should not return invisible trackers * Feature #22008: Associated Revision API * Feature #33301: Add option to include enabled issue custom fields in projects#show API response * Feature #33592: Include updated_on and passwd_changed_on columns in users API response * Feature #34242: Include two-factor authentication scheme in users API response === [Rails support] * Patch #32886: Rails 6: Use #media_type instead of #content_type to test the MIME type of a response * Patch #32887: Rails 6: Use "render template:" instead of "render file:" in app/views/layouts/admin.html.erb * Patch #32911: Rails 6: Fix deprecation warning "Class level methods will no longer inherit scoping" === [Roadmap] * Defect #32860: Invalid links to versions with sharing in project tree * Feature #7956: Show Roadmap tab when subprojects have defined versions === [Ruby support] * Feature #31500: Ruby 2.7 support * Feature #34142: Drop Ruby 2.3 support === [Security] * Defect #34950: SysController and MailHandlerController are vulnerable to timing attack === [SCM] * Defect #23055: Error with Fetch commits with Mercurial repository when log has invalid char * Defect #27790: mercurial: error of double quotes in branch and tag names * Defect #32153: Repository browser does not render previews for audio/video files * Feature #8875: Allow manually fetching changesets * Feature #34942: Support for Git repositories with default branch "main" * Patch #32835: Make breadcrumbs of repository browser copy-paste friendly === [SEO] * Feature #31617: robots.txt: disallow crawling dynamically generated PDF documents * Feature #33658: robots.txt: disallow crawling login, register, and lost password form === [Text formatting] * Defect #27780: Case-insensitive matching fails for Unicode filenames when referring to attachments in text formatting * Feature #1575: Toolbar button to insert a table * Feature #1718: Table column sorting * Feature #32528: Make languages in Highlighted code button in toolbar customizable === [Third-party libraries] * Feature #33383: Update jQuery to 3.5.1 * Patch #33424: Update Tribute to 5.1.3 === [Time tracking] * Defect #29838: Time logging via commit message does not work when the configured activity has been overridden on the project level * Defect #33952: Spent time details are displayed in incorrect order when sorted by week and date * Feature #32436: Add support for grouping by issue on timelog view * Feature #33256: Show wiki toolbar for spent time custom fields with text formatting enabled === [Translations] * Defect #32828: Fix typos in Russian translation * Defect #32857: Fix grammatical agreement in translation for "parent issue" in pt and pt-BR * Defect #34456: Fix Japanese translation for less_than_x_seconds and less_than_x_minutes * Patch #32238: Improvement of the German translation * Patch #32380: Change Italian translation for "news" * Patch #33403: Change Japanese translation for text_file_repository_writable * Patch #33763: Change Japanese translation for field_onthefly * Patch #34418: Unify the translation of the word "relation" in Czech * Patch #34659: Change Traditional Chinese translation for "watch" and "watcher" === [UI] * Defect #33116: Successful deletion notice is not displayed after deleting some types of content * Defect #33234: Vertical scroll bar in some browsers hide content * Defect #34580: Custom field labels do not contain class "error" when the field value is invalid * Defect #34805: Activity tab in cross-project menu is sometimes broken * Feature #28392: Improve wiki headings style * Feature #29285: Add "Assign to me" shortcut to issue edit form * Feature #29473: Submit a form with Ctrl+Enter / Command+Return * Feature #30459: Switch edit/preview tabs with keyboard shortcuts * Feature #31589: Show warning and the reason when the issue cannot be closed because of open subtasks or blocking open issue(s) * Feature #31887: Update jQuery UI to 1.12.1 * Feature #32764: Make form validation errors more obvious for users * Feature #32976: Display avatar on add watcher dialog * Feature #33167: "Add news" button in cross-project News tab * Feature #33820: Auto complete wiki page links * Feature #33908: Show an icon for a bookmarked project in the projects list * Feature #34340: Make archived projects visually distinguishable in nested projects lists * Feature #34417: Require explicit confirmation when deleting a user or a project * Feature #34549: Add keyboard shortcuts for wiki toolbar buttons * Feature #34703: "Copy link" feature for issue and issue journal * Feature #34714: Move delete button for issues and journals to the dropdown menu * Patch #34955: Update copyright year in the footer to 2021 === [UI - Responsive] * Defect #33913: Input fields of the login form are too small in height on mobile === [Wiki] * Defect #31287: Ordering wiki pages should not be case sensitive * Feature #32629: Add edit button to Wiki sidebar == 2021-03-21 v4.1.2 === [Accounts / authentication] * Defect #33926: Rake tasks "db:encrypt" and "db:decrypt" may fail due to validation error === [Administration] * Defect #33310: Warnings while running redmine:load_default_data rake task * Defect #33339: Broken layout of the preview tab of "Welcome text" setting due to unexpectedly applied padding-left * Defect #33355: TypeError when attempting to update a user with a blank email address * Defect #34247: Web browser freezes when displaying workflow page with a large number of issue statuses * Patch #32341: Show tooltip when hovering on repeat-value link in Field permission tab === [Attachments] * Defect #33283: Thumbnail support for PDF attachments may not be detected * Defect #33459: The order of thumbnails in journals does not match the order of file name list * Defect #33639: Cannot paste image from clipboard when copying the image from web browsers or some apps * Defect #33769: When creating more than two identical attachments in a single db transaction, the first one always ends up unreadable * Patch #34479: Fix possible race condition with parallel, identical file uploads === [Custom fields] * Defect #33275: Possible values field in list format custom field form is not marked as required * Defect #33550: Per role visibility settings for spent time custom fields is not properly checked === [Documentation] * Defect #33939: Unnecessary translation of {{toc}} macros in Russian Wiki formatting help === [Filters] * Defect #33281: Totals of custom fields may not be sorted as configured * Defect #34375: "is not" operator for Subproject filter incorrectly excludes closed subprojects === [Gantt] * Defect #33140: Gantt bar is not displayed if the due date is the leftmost date or the start date is the rightmost date * Defect #33175: Starting or ending marker is not displayed if they are on the leftmost or rightmost boundary of the gantt * Defect #33220: Parent task subject column in gantt is not fully displayed when the column is widened * Defect #33724: Selected gantt columns are not displayed with MS Edge Legacy === [Gems support] * Defect #33206: Unable to autoload constant Version.table_name if gems uses Version class * Defect #33768: Bundler may fail to install stringio if Ruby prior to 2.5 is used * Patch #34461: Update Redcarpet to 3.5.1 * Patch #34619: Update Nokogiri to 1.11 === [I18n] * Defect #33452: Untranslated string "diff" in journal detail === [Issues] * Defect #33338: Property changes tab does not show journals with both property changes and notes * Defect #33576: Done ratio of a parent issue may be shown as 99% even though all subtasks are completed === [Issues list] * Defect #33273: Total estimated time column shows up as decimal value regardless of time setting * Defect #33548: Column header is clickable even when the column is not actually sortable * Defect #34297: Subprojects issues are not displayed on main project when all subprojects are closed === [Projects] * Defect #33889: Do not show list for custom fields without list entry on project overview * Patch #34595: Filter list of recent projects in the project jump box === [REST API] * Defect #33417: Updating an issue via REST API causes internal server error if invalid project id is specified * Defect #34615: 'Search' falsy parameters are not respected === [Security] * Defect #33846: Inline issue auto complete doesn't sanitize HTML tags === [SEO] * Defect #6734: robots.txt: disallow crawling issues list with a query string === [Security] * Defect #33360: Names of private projects are leaked by issue journal details that contain project_id changes * Defect #33689: Issues API bypasses add_issue_notes permission * Feature #33906: Upgrade Rails to 5.2.4.5 === [Themes] * Defect #8251: Classic Theme: Missed base line === [Time tracking] * Defect #33341: Time entry user is shown twice in the User drop-down when editing spent time === [Translations] * Defect #34447: Typo in translation string 'setting_issue_list_default_columns': s//Isuses/Issues * Patch #34200: Portuguese (Brazil) translation for 4.1-stable * Patch #34439: Spanish translation update for 4.1-stable === [UI] * Defect #33563: File selection buttons are not fully displayed with Google Chrome in some language * Feature #34123: System tests for inline auto complete feature * Patch #33958: Jump to end of line in editor when starting list or quote == 2020-04-06 v4.1.1 === [Accounts / authentication] * Defect #32793: Email address with Punycode top-level domain is not accepted === [Administration] * Defect #33176: Sort order icon is missing in users index * Feature #32945: Show module names in bold in permission report === [Attachments] * Defect #32656: Drag and drop objects from Outlook to Redmine deletes the objects * Defect #32785: X-Sendfile header field is not set if rack 2.1.0 is installed === [Custom fields] * Defect #33085: Unable to update the values of a custom field for enumerations when multiple values option is enabled * Defect #33183: Unable to edit user or group that has custom fields with text formatting enabled === [Database] * Defect #30285: Microsoft SQL server support is broken === [Gantt] * Defect #19248: End markers in gantt PDF are misaligned * Defect #23645: Gantt bars for single-day tasks may be rendered wrongly in PDF * Defect #32812: Clicking on a parent object in gantt wrongly collapses objects at the same level * Defect #33082: Links in the last column in gantt are unclickable === [Gems support] * Defect #32839: Redmine 4.1 installation fails due to an attempt to install sprockets 4.0.0 if bundler prior to 1.15.2 is used on Ruby prior to 2.5 === [Importers] * Defect #33027: Fix missing closing div in _time_entries_fields_mapping.html.erb === [Issues] * Defect #32737: Duplicate sort keys for issue query cause SQL error with SQL Server * Defect #33169: Issues CSV export does not include custom fields with "Full width layout" enabled === [Issues list] * Defect #33110: Sort does not work with group by datetime columns * Defect #33163: Parent task subject column should be in the same style as Subject column === [Issues workflow] * Defect #33059: "Role" dropdown in Workflow page is unexpectedly expanded when selecting "all" === [PDF export] * Defect #32477: Right-aligned TOC tag is displayed in exported PDF if the text formatting setting is Markdown * Defect #32832: FrozenError when exporting content to PDF in some languages * Defect #32858: Exporting issue as PDF fails when the issue has private journal * Defect #32859: Issue list: long text custom field missing in PDF export * Defect #33103: Export to PDF fails when subject of parent task is included in issue list === [Projects] * Defect #32769: Unable to sort projects table by custom field * Defect #32891: Bookmark link on project page should not use full path with hostname * Defect #32896: Totals not working in projects list view * Defect #33083: Projects filter "Subproject of" does not work when the given value is "My projects" or "My bookmarks" === [REST API] * Defect #33113: Default version and assignee are not exposed via projects API === [Rails support] * Patch #33196: Update Rails to 5.2.4.2 === [Ruby support] * Patch #32788: Specify supported Ruby version in Gemfile and doc/INSTALL === [SCM] * Defect #32449: Diff view for .js files in repositories is broken === [Security] * Defect #32850: XSS vulnerability due to missing back_url validation * Defect #32934: XSS vulnerabilities in textile inline links * Defect #33075: Time entries csv export should check issue visibility === [Text formatting] * Defect #32754: Fix missing arrow icon of collapse macro * Defect #32765: ##123 syntax for linking to issues: Title cannot be distinguished from following text * Defect #32971: New line between list items break a list === [Time tracking] * Defect #32768: Internal Error when issue text custom field is shown in Spent time query results * Defect #32774: Creating time tracking entry for other user through rest API fails with 403 * Defect #32959: Fix selected user on log time edit page when user has permissions to log time for another user * Defect #32973: Editing a time entry for a locked user changes the user to the current user * Defect #33052: Missing subject and tracker name in CSV export of time entries report * Feature #3800: Editing time entries should show the person involved === [Translations] * Patch #32659: Russian translation update for 4.1-stable * Patch #32746: Italian translation update for 4.1-stable * Patch #32917: Bulgarian translation * Patch #32928: Czech translation for 4.1-stable * Patch #32995: Russian translation update for 4.1-stable * Patch #33070: Simplified Chinese translation update for 4.1-stable * Patch #33122: German translation update for 4.1-stable * Patch #33219: Persian translation update for 4.1-stable === [UI] * Defect #32772: Tabs are displayed on two lines when the total width of the tabs is greater than 2000px * Defect #32829: HTML entity is used in CSS string * Defect #32838: Typo in application.css: s/paddin-bottom/padding-bottom/ * Defect #32981: Unable to distinguish disabled input fields * Patch #32991: Make group names bold on tracker summary view * Patch #33068: Update copyright year in the footer to 2020 === [UI - Responsive] * Defect #32889: Responsive layout for issue tree and issue relation on issue page is broken * Feature #33156: Allow zooming on mobile devices == 2019-12-20 v4.1.0 === [Accounts / authentication] * Feature #4221: Force passwords to contain specified character classes * Feature #9112: Libravatar and Gravatar-compatible servers support * Feature #26127: Display user logins on profiles === [Administration] * Defect #29601: Redmine::VERSION::revision may return wrong value * Feature #8343: Add wiki toolbar to "Email header" and "Email footer" in "Email notifications" admin tab * Feature #30853: Show warning when no workflow is defined for the role * Feature #30916: Show warning when no tracker uses the status in the workflows * Feature #31154: Reject setting RFC non-compliant emission email addresses * Feature #31361: Include a reason in the error message when an issue status cannot be deleted * Feature #32343: Ability to filter roles that are displayed on the permissions report * Patch #29589: Set the first status as a default status in "New tracker" form === [Attachments] * Defect #32289: Don't try to generate thumbnails if convert command is not available * Feature #3816: Allow pasting screenshots from clipboard * Feature #22481: Show thumbnails for PDF attachments * Feature #29752: Render Textile and Markdown attachments on the preview page * Feature #31553: Preview .webm as video instead of audio * Feature #32249: Show attachment thumbnails by default * Patch #13688: Chosen thumbnail has to be bigger than requested one and not smaller * Patch #30177: Thumbnail lifecycle: reuse thumbs from identical files, delete thumbs when diskfile is deleted === [Calendar] * Feature #27096: Mark non-working days in calendar view === [Code cleanup/refactoring] * Defect #30474: IssuesControllerTest#test_index_sort_by_total_estimated_hours tests practically nothing * Defect #30806: TimeEntryTest#test_create_should_validate_user_id occasionally fails * Defect #31053: Some issue fixtures are set inconsistent tracker id which is not available in the project * Defect #31074: TimelogTest#test_default_query_setting fails depending on the language of the browser * Defect #31093: Duplicate method definition: ProjectsControllerTest#test_jump_should_not_redirect_to_unknown_tab * Defect #31387: Don't rescue Exception class * Defect #31388: ApiTest fails if config.time_zone is set * Defect #31510: Fix missing closing tags in workflows/permissions.html.erb * Defect #31929: MarkdownFormatterTest#test_should_support_underlined_text is declared as private * Patch #29441: Remove code related to JRuby and unsupported Ruby versions * Patch #30163: Remove unnecessary tests in test/unit/initializers/patches_test.rb * Patch #30276: Add missing fixtures to several tests * Patch #30347: test_links_separated_with_line_break_should_link tests nothing * Patch #30445: Remove unnecessary bgl and bgr wrappers from the footer * Patch #30466: Remove unused i18n key "label_all_time" * Patch #30994: Refactor custom field css classes * Patch #31004: Decode hexadecimal-encoded literals in order to be frozen string literals friendly * Patch #31034: Remove encoding magic comments * Patch #31046: Remove unused method ApplicationHelper#generate_csv * Patch #31059: Use #b shortcut instead of #force_encoding * Patch #31088: Remove useless code in TimeEntryQuery#sql_for_activity_id_field * Patch #31131: CalendarsControllerTest#test_show fails depending on the date * Patch #31205: Replace jquery-rails with vanilla javascript ujs * Patch #31344: Remove unused i18n key "label_please_login" * Patch #31391: Small refactorization of avatar methods * Patch #31402: Add support for customization by block to IssueCustomField.generate! * Patch #31433: Use "icon icon-*" classes for sort-handler, collapsible fieldsets and collapsible versions * Patch #31506: Remove trailing whitespaces * Patch #31509: Add Rubocop to enforce some styles * Patch #31555: Use Redmine::Database.mysql? instead of a regular expression * Patch #31705: Add missing fixtures to AttachmentFormatVisibilityTest * Patch #31865: Add missing fixtures to ImportsControllerTest * Patch #31941: ThemesTest may fail if a third-party theme with a favicon is installed * Patch #31965: Add missing fixtures to Redmine::ApiTest::VersionsTest * Patch #31966: Add missing fixtures to Redmine::Helpers::GanttHelperTest * Patch #31967: IssueCustomFieldTest randomly fails * Patch #32023: Add missing fixtures to IssueStatusesControllerTest * Patch #32025: mail_body method in test/test_helper.rb raises an exception if the message is not multipart * Patch #32094: Remove unnecessary call to set_tmp_attachments_directory * Patch #32122: Fix test failure due to missing call to set_tmp_attachments_directory * Patch #32297: Remove code for unsupported versions of Rails from open_id_authentication * Patch #32400: Remove unused i18n key "button_duplicate" * Patch #32431: Invalid association IssueCustomField#issue_custom_values * Patch #32432: Avoid class name overlap that causes TypeError on `rake test:system test` === [Custom fields] * Defect #29209: Long text custom fields don't accept values longer than 64KB if backend database is MySQL * Feature #23997: Per role visibility settings for version custom fields * Feature #29712: Preview and wiki toolbar for full width custom fields * Feature #31159: "Create and continue" button for custom fields * Feature #31444: Add "<< me >>" option to user format issue custom fields * Feature #31859: Per role visibility settings for spent time custom fields * Feature #31925: Per role visibility settings for project custom fields * Patch #31320: Set an appropriate default type in New custom field page depending on the current tab === [Database] * Feature #31921: Changes to properly support 4 byte characters (emoji) when database is MySQL === [Documentation] * Feature #32119: Add TOC to wiki formatting help * Feature #32123: Add "Highlighted code" section in Wiki Syntax Quick Reference * Feature #32169: Add links to the detailed Wiki formatting help in Quick Reference * Patch #30970: Small improvements in appearance of the code coverage index page * Patch #31169: Wiki syntax help for document image pasting and drag/drop embedding * Patch #31327: Update CONTRIBUTING.md === [Documents] * Feature #29725: Show recent documents first when sorting documents by date === [Email notifications] * Defect #13888: Daylight savings causes inconsistency of Message-Id in emails * Defect #14792: Don't add a display name and extra angle brackets in List-Id header field * Defect #17096: Issue emails cannot be threaded by some mailers due to inconsistent Message-ID and References field * Defect #31501: reminder.rake should ignore blank parameters * Feature #5913: Authors name in from address of email notifications * Feature #10378: Don't show empty fields in email notifications * Feature #13111: New setting to include the status changes in issue mail notifications subject * Feature #13307: Start date and due date in email notifications * Feature #17840: Option to send email notification on "Target version updated" * Feature #22771: Option to send email notifications while importing issues from CSV files * Feature #31104: Show the total number of open issues in a reminder * Feature #31225: Show the number of days left until the due date in reminders * Feature #31910: Add additional mail headers for issue tracker === [Email receiving] * Defect #31232: Text may unexpectedly be enclosed in pre tags when an issue is created via HTML email * Defect #31549: LF line terminators cause misparse of a multi-part email when rdm-mailhandler.rb is invoked from /etc/aliases * Defect #31695: Convert HTML links to Textile/Markdown links when creating an issue from an email * Defect #31946: No log message when MailHandler ignored a reply to a nonexistent issue, journal, or message * Feature #17699: Parse author's name enclosed in parentheses in the From field when creating a user account from an email * Feature #19903: Change textfield to textarea for "Exclude attachments by name" * Feature #30838: Option to parse HTML part of multipart (HTML) emails first * Feature #31231: Better handling of HTML tables when creating an issue from an email * Patch #31324: Allow to set is_private flag through a keyword in emails * Patch #31899: Improve MailHandler logging for unauthorized attempts === [Gantt] * Feature #6417: Allow collapse/expand in gantt chart * Feature #14654: Allow a bigger range for the gantt timeline * Feature #27672: Show selected columns in gantt chart * Feature #31373: Previous and next month links in gantt === [Gems support] * Defect #31657: Update capybara (~> 3.25.0) * Defect #32223: Disable sprockets to avoid Sprockets::Railtie::ManifestNeededError raised by sprockets 4.0.0 * Feature #29946: Update i18n gem (~> 1.6.0) * Feature #30492: Replace RMagick with MiniMagick * Feature #30963: Update simplecov gem (~> 0.17.0) * Feature #31911: Update request_store gem to 1.4 * Patch #31126: Update sqlite3 gem (~> 1.4.0) * Patch #31556: Update Rouge to 3.12.0 * Patch #31611: Update csv gem (~> 3.1.1) * Patch #31847: Update redcarpet to 3.5.0 * Patch #31877: Update rbpdf (~> 1.20.0) * Patch #31919: Update roadie-rails gem (~> 2.1.0) === [Groups] * Feature #12796: Display user's groups on profile === [Hook requests] * Patch #7975: Hook for adding content to the side bar of Wiki page === [I18n] * Defect #5820: Hard-coded string "no subject" in app/models/mail_handler.rb === [Importers] * Defect #21766: CSV import does not keep the project it was clicked from * Feature #28213: Support external ID when importing issues * Feature #28234: Add CSV Import for Time Entries * Feature #31450: Support "YYYY/MM/DD" date format when importing issues === [Issues] * Defect #28502: Support issue[assigned_to_id]=me when prefilling issues * Feature #442: Add a description for trackers * Feature #3058: Show issue history using tabs * Feature #22368: Ability to add private comments from the issue bulk edit page * Feature #25540: Unify fields of subtasks and related issues on issue page * Feature #31418: Stacked bar charts in the issue details report * Feature #31427: Insert a link to the source to the attribution line when quoting a note or a message * Feature #31499: Show "Due in X days" in issue details page * Patch #28138: Add link to add a new issue on the version page * Patch #31493: Add a link to project_issues_report from project_issues_report_details * Patch #31994: Allow issue auto complete to return 10 issues when there is not search term provided === [Issues filter] * Defect #32546: Issue relations filter lacks "is not" * Feature #13803: Implement grouping issues by date (start, due, creation, update, closing dates) * Feature #16904: Add anonymous user to users list in query filters * Feature #26826: Issue filtering by spent time * Feature #30482: Multiple issue ids in "Parent task" filter * Feature #30808: Multiple issue ids in "Subtasks" filter * Feature #31328: Change the "+" button in the issues filter to a larger one * Feature #31879: "starts with" and "ends with" filter operators for string values * Patch #4502: New date filter operators: tomorrow, next week, next month * Patch #25265: QueriesController can not handle subclass of IssueQuery === [Issues list] * Defect #29581: Issues in paginated views may be lost because sorting criteria are not unique * Feature #19371: Add a new query column for the parent task subject * Feature #26081: Allow full_width_layout long-text custom fields to appear in the issue list like 'Description' (as a block column) * Patch #31280: Left align long text custom fields in the issues list === [My page] * Feature #30975: New My page block: Updated issues === [PDF export] * Patch #30162: Wiki page collapse block image is not displayed in exported PDF === [Performance] * Feature #26561: Enable frozen string literals * Patch #28940: Use Regexp#match? to reduce allocations of MatchData object * Patch #30249: Performance improvement when rendering news or calendar block on My page * Patch #30828: Refactor GitAdapter#default_branch not to unnecessarily iterate through all elements * Patch #31855: Speed up workflow edit page rendering === [Permissions and roles] * Defect #17219: Rename label for "Issues can be assigned to this role" * Defect #30431: Useless "Delete issues" tracker permission is shown on the role page for Anonymous and Non-member * Feature #1248: New Permission: Edit own issues * Patch #27625: Increase maximum size for role name === [Plugin API] * Patch #27659: redmine_plugin_model_generator improvements(fixes and timestamps) * Patch #31110: Raise an exception if the plugin directory name differs from the plugin id * Patch #31457: Add support for reloading plugin assets automatically in development mode * Patch #31485: Add support for :sql ActiveRecord::Base.schema_format in redmine:plugins:migrate * Patch #31498: Add redmine_plugin_migration generator * Patch #31746: Add redmine:plugins:test:system task === [Project settings] * Defect #27101: Project identifier model constraint doesn't match with text_project_identifier_info and JS-generated identifiers * Feature #22090: Make project settings more accessible * Feature #31032: Display details about inheritance when editing a member roles * Patch #30203: Add links to administration pages in project settings === [Projects] * Feature #29482: Query system for Projects page * Feature #31355: Bookmarks and recently used projects for the project jump box * Feature #32306: Add a link to projects administration page on projects page * Patch #31356: replace icon-fav with icon-user for 'my projects' * Patch #31465: Add an icon linked to trackers detail report on the project overview page === [REST API] * Defect #30073: Ajax Request Returns 200 but an error event is fired instead of success * Feature #26237: Support wiki_page_title attribute in Versions REST API * Feature #30086: Use HTTP status code 403 instead of 401 when REST API is disabled * Feature #31559: Support "active" attribute in Enumerations REST API * Feature #32002: Add inherit_members to projects API response * Feature #32242: Add estimated hours and spent hours to Versions API * Patch #13468: REST API for News * Patch #31399: make /my/account endpoint accessible through API === [Roadmap] * Defect #30949: Roadmap shows 100%, but one of its tasks is still set to 90% * Patch #28510: Show issue assignee gravatar in roadmap and version page * Patch #29391: Show version status in Roadmap and Version pages * Patch #31424: Add issue css classes to issue rows in Roadmap and Version pages === [Ruby support] * Defect #30967: "rake test:coverage" fails in Ruby 2.5 and 2.6 * Feature #30356: Drop Ruby 2.2 support === [SCM] * Defect #16881: Git: repository page crashes when non-ascii character in tag or branch name === [Text formatting] * Defect #30259: URLs end with "-" are rendered incorrectly in Textile * Feature #29489: Issue macro for flexible linking to issues * Feature #30829: Simpler link syntax "#note-123" to make a link to a note of the current issue * Patch #32359: Markdown: Fix sections parsing with code blocks === [Third-party libraries] * Feature #31196: Updates jQuery to 2.2.4 and adds jQuery Migrate library * Feature #31434: Update Chart.js to 2.8.0 * Feature #31436: Update raphael.js to 2.3.0 === [Time tracking] * Feature #3322: Setting to restrict spent times on future dates * Feature #3848: Permission to log time for another user * Feature #5061: Show time log entries in issue history * Feature #30233: Allow grouping of time entries by creation date * Feature #30346: Add "Target Version" to the list of "Available columns" in "Spent time" Tab * Feature #30464: Show estimated hours on the overview page as well as spent hours === [Translations] * Defect #31269: Fix Japanese translation for status_locked * Defect #32354: Fix inconsistent capitalization in Italian translation * Patch #10702: Change "Create and Continue" translation to "Create and add another" * Patch #29142: Japanese translation change for "lost password" * Patch #29151: Add honorific suffixes ("san") in Japanese translation * Patch #30170: Change Japanese translation for "note" * Patch #31256: german translation for missing parts * Patch #31260: Improvement of Japanese translation for permission names * Patch #32358: Fix incomplete Italian translation for notice_successful keys === [UI] * Defect #27330: "Name" field in the 'edit version' form has no "maxlength" * Defect #30467: Footer is not placed at the bottom on pages with little content * Defect #31496: Switch between toggle plus and minus icons for toggle multi select * Feature #6831: Add different style for group names in the New member modal window * Feature #23392: Link to remove a subtask from its parent task * Feature #30207: Hide menu item in the cross-project menu if the module is not enabled in any project * Feature #31294: Add "robohash" to "Default Gravatar image" options * Feature #31989: Inline issue auto complete (#) in fields with text-formatting enabled * Feature #32052: Auto-complete issues #id in search form * Patch #5899: Display user's gravatar when editing profile * Patch #26604: Set a random name attribute on all forms to prevent overwritten values after soft reload with Firefox * Patch #26646: Remove hardcoded width in query column selects * Patch #29289: Wrap subprojects in the overview section with an unordered list to improve customisation * Patch #30168: Wrap "splitcontentright" and "splitcontentleft" containers with a flexbox * Patch #30294: Move the links (View all issues, Summary, Import) from the Issues section of the issues list sidebar under a dropdown * Patch #30421: Issue tracking table on user profile page * Patch #30435: Replace float rules with flexbox for content and sidebar block * Patch #31022: Always use HTTPS when accessing gravatar.com * Patch #31066: Show projects using a table instead of an unordered list in the user profile page * Patch #31147: Add custom styles for all fields * Patch #31204: Add hover styles to buttons * Patch #31343: Visually distinguishable style for code tag * Patch #31441: Show elements titles using jQuery UI tooltips * Patch #31598: Move the links (All time entries, Import) from Spent time section of the spent time list sidebar under a dropdown * Patch #31640: Add clear query icon next to selected query in sidebar * Patch #31697: Show closed date in a tooltip if the issue is closed * Patch #31950: Add CSS class to "journal" and "reply" headers * Patch #31971: Change the color of the input field frame when in focus * Patch #32013: Rounded corners of the main menu * Patch #32014: Rounded corners on table.list elements * Patch #32015: Rounded corners of "my page" blocks * Patch #32037: Constrain sidebar width on different resolutions * Patch #32165: Rounded corners on table.cal === [Wiki] * Defect #11359: Wiki diff doesn't keep spaces * Defect #20910: Hierarchy in TOC is not preserved when Wiki index is exported to HTML * Feature #9634: Show locked badge for locked wiki pages == 2019-12-20 v4.0.6 === [Attachments] * Defect #20277: "Couldn't find template for digesting" error in the log when sending a thumbnail or an attachment === [Gems support] * Patch #32592: Require 'mocha/minitest' instead of deprecated 'mocha/setup' === [Rails support] * Feature #32526: Update Rails to 5.2.4.1 === [Text formatting] * Defect #32422: Textile indentation does not work in the preview tab * Patch #25742: Improper markup sanitization in user content for space separated attribute values and different quoting styles === [Time tracking] * Defect #32500: Spent time report csv shows translation missing text if custom fields are involved == 2019-10-19 v4.0.5 === [Code cleanup/refactoring] * Defect #31870: Remove deprecated .zIndex() method * Defect #32022: IssueSubtaskingTest fails with high probability * Defect #32110: "already initialized constant Redmine::Scm::Adapters::SubversionAdapter::SVN_BIN" warning when executing rake tasks * Patch #32189: Remove unnecessary requiring of "rexml/document" === [Documentation] * Defect #32170: Text enclosed in pre tag in Wiki formatting reference is not displayed in monospaced font in Chrome * Defect #32184: Incorrect headings example in Textile help === [Gantt] * Defect #31552: View switches from gantt to list after editing an issue === [Gems support] * Defect #32300: Don't use sprockets 4.0.0 in order to avoid Sprockets::Railtie::ManifestNeededError * Patch #32294: Update ruby-openid to 2.9.2 === [Issues] * Defect #31778: Total estimated time issue query column and issue field might leak information === [Issues list] * Defect #31779: Total estimated time column shown even when estimated time field is deactivated === [Translations] * Defect #32290: Typo in Russian translation for label_in_the_next_days * Patch #31951: German translation update for 4.0-stable === [UI] * Defect #31742: The color of h4 in the comment also changes when #note-1 is specified * Defect #32012: Broken JavaScript icon in the repository view * Defect #32024: Broken gzip icon in the repository view == 2019-06-10 v4.0.4 === [Administration] * Defect #31125: Don't output ImageMagick version information to stdout === [Attachments] * Defect #29259: Attachment preview does not work for some source files such as JavaScript and Go * Defect #30441: Attachments with Unicode uppercase names are not shown in wiki pages * Defect #31275: Safari adds .html extension when downloading files of unknown type === [Code cleanup/refactoring] * Defect #30811: "rake db:fixtures:load" does not work === [Email receiving] * Defect #30457: MailHandler.safe_receive does not output any error log * Defect #31365: Issue subject may be broken if the subject field in the receiving email is split into multiple lines * Defect #31503: Undefined local variable sender_email in MailHandler#receive_message_reply === [Gantt] * Defect #31268: Fix gaps in resizable gantt chart === [Issues filter] * Patch #31276: Serialize group_by and totalable_names in Query#as_params === [Rails support] * Defect #31337: Explicitly load redmine/info in order to avoid "uninitialized constant" error * Patch #31113: Update Rails to 5.2.3 === [SCM] * Defect #30850: Unified diff link broken on specific file/revision diff view * Defect #31120: Garbage lines in the output of 'git branch' break git adapter === [Security] * Defect #31520: Persistent XSS in textile formatting === [Text formatting] * Defect #31285: Syntax highlighting does not work for attachments with .pl extension === [Time tracking] * Defect #31511: CSV export of time entries report does not honor project filter === [Translations] * Defect #31264: Conflicting translation between "track" and "watch" in Simplified Chinese === [UI] * Defect #31330: Import issues: File content preview block is scrolling * Defect #31438: Incorrect position of the "Associated revisions" block when comments are displayed in reverse chronological order === [UI - Responsive] * Defect #31153: Display horizontal scroll bar of files table when overflow occurs on small screen * Defect #31311: admin/info page: text cut off in pre tag on mobile === [Wiki] * Patch #31334: Do not lose content when updating a wiki page that has been renamed in the meantime == 2019-03-31 v4.0.3 === [Administration] * Defect #30939: Timeout for "Check for updates" on Plugins page is too short === [Email notifications] * Defect #30955: "View all issues" link in email reminders points to issues list which does not include issues assigned to a group === [Files] * Defect #31087: Deleting a version silently deletes its attachments === [Gantt] * Defect #31063: Can't uncheck Gantt chart options of custom queries === [Issues filter] * Defect #30367: "Last updated by" filter causes an SQL error with MariaDB === [Issues list] * Defect #26836: Filtering issues via context menu should not reset selected columns === [Plugin API] * Defect #30753: Plugins auto_load and eager_load paths * Patch #31030: Include plugin name in the exception when the plugin required by requires_redmine_plugin is not found === [REST API] * Defect #29055: Searching for issue number with REST API redirects to issue HTML page === [Rails support] * Feature #31026: Upgrade to Rails 5.2.2.1 === [SCM] * Defect #30731: "View differences" buttons are shown in the repository page even without "Browse repository" permission * Defect #30850: Unified diff link broken on specific file/revision diff view === [Search engine] * Defect #30923: Project search should select subprojects scope when the project has subprojects === [Text formatting] * Defect #30256: Cannot make cross-project wiki link if the project name includes square brackets === [Translations] * Patch #31124: Galician translation update for 4.0-stable === [UI] * Defect #30872: Copyright is outdated * Defect #30988: Preformatted text overflows the preview area * Feature #30977: Add CSS class to project custom fields * Feature #30985: Add CSS class to user custom fields == 2019-02-21 v4.0.2 === [Attachments] * Defect #30434: Line height is too large when previewing files with syntax highlighting if the line terminators are CRLF === [Email receiving] * Defect #30785: Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name === [Gems support] * Defect #30114: Installing xpath with Bundler fails in Ruby <=2.2 * Patch #30821: Stay in RMagick 2.16.0 and don't update to 3.0.0 === [Issues filter] * Defect #30718: Translation missing for filter by project status === [Issues list] * Defect #30236: Accidentally clicking next to the checkbox breaks issue selection === [Rails support] * Patch #30725: Plugin eager_load should depend on environment setting instead of name === [SCM] * Defect #30411: Filesystem adapter does not show correct size for large files === [Translations] * Defect #30732: Bulgarian translation update for 4.0-stable * Patch #30791: Traditional Chinese translation update for 4.0-stable === [UI] * Feature #10264: Add a check/uncheck all button to search * Feature #30834: Links to forum replies should highlight the linked reply * Patch #30818: Issues autocomplete should respond with content type json === [Wiki] * Defect #30758: Preview URL in Wiki Toolbar should be escaped == 2019-01-20 v4.0.1 === [Calendar] * Defect #30287: The tooltip layout of the calendar is broken === [Code cleanup/refactoring] * Patch #30115: Move Version#fixed_issues extension to a module * Patch #30413: Add ".ruby-version" to svn:ignore, .git:ignore, and .hgignore === [Database] * Defect #30171: Decrypting LDAP and SCM passwords fail if the plaintext password is longer than 31 bytes === [Documentation] * Defect #30161: Incorrect supported Ruby version in doc/INSTALL === [Email receiving] * Defect #30455: Adding an issue note via email fails due to NoMethodError === [Forums] * Patch #2635: Display notice on forum updates === [Gems support] * Defect #30353: Installing rails with Bundler 2.0 fails in 3.x * Patch #30241: Update nokogiri gem (~> 1.10.0) * Patch #30420: Update pg gem (~> 1.1.4) === [Importers] * Patch #30412: Import UTF-8 issue CSV files with BOM and quoted strings === [Performance] * Patch #30465: Deadlock when assigning custom values === [Ruby support] * Feature #30118: Ruby 2.6 support === [Translations] * Patch #29767: Traditional Chinese translation update * Patch #30292: Ukrainian translation update for 4.0-stable === [UI] * Defect #30426: Table rows are not highlighted on mouseover on some pages * Patch #29951: Quick design fix/proposals for projects index page == 2018-12-09 v4.0.0 === [Accounts / authentication] * Feature #28561: Add note about link validity to password lost email * Patch #5957: Export users list to CSV * Patch #29781: Prevent users from getting stuck with an expired password recovery token in their session === [Administration] * Defect #28920: Redmine::VERSION::revision should take subversion_command setting into account * Feature #29993: Option to unarchive the project when admins visit an archived project * Patch #26341: Add useful details to error message when a template is missing === [Attachments] * Feature #16410: Bulk delete wiki attachments * Feature #27822: Remove filename from attachment preview links * Feature #28616: Handle image orientation of attachments and thumbnails * Patch #27336: Render previews for audio and video files * Patch #28295: Show name changes in diff preview * Patch #29190: Add link to container on attachment preview * Patch #29395: Pagination between repository entries and attachments of the same container === [Calendar] * Feature #28067: Add context menu for issues in calendar === [Code cleanup/refactoring] * Defect #28268: Fix typo in test name: s/udpate/update/ * Defect #28931: Unreachable code in QueriesControllerTest#test_bulk_copy_to_another_project * Defect #29215: Fixture is missing for IssuesTest#test_create_issue_with_new_target_version * Defect #29708: Wrong use of refute_includes in tests * Defect #29820: Missing fixture enabled_modules in TrackerTest * Defect #29883: AttachmentsVisibilityTest and Redmine::AttachmentFieldFormatTest fail randomly due to uninitialized User.current * Defect #29912: Missing closing tag in app/views/roles/_form.html.erb * Defect #29990: Add missing fixtures for test_create_should_send_notification * Defect #30054: Add missing fixtures for test_create_with_one_attachment * Defect #30120: Add missing fixture for reports_controller_test * Patch #26130: Refactor "multiple_values_detail" struct creation * Patch #26323: Remove ActiveRecord workaround (fixed in Rails 5) * Patch #27670: Fix typo in configuration.yml.example * Patch #28024: Fix typo in error message in mailer.rb * Patch #28028: Remove unused method Mailer#mylogger * Patch #28229: Remove unused i18n key "setting_app_subtitle" * Patch #28478: Update the app name in extra/sample_plugin/init.rb: s/RedMine/Redmine/ * Patch #28605: Add the missing icon class to the items with icons from the contextual menu * Patch #28611: Remove unused i18n strings from locale files * Patch #29160: Remove unused and broken method CustomField.visibility_condition * Patch #29440: Fix typo in test name: s/highligth/highlight/ * Patch #29632: Redmine::SortCriteria#normalize! does not limit properly the number of elements * Patch #29710: Remove unused variable 'filter_options' from Query#add_filter * Patch #30137: Remove rails-html-sanitizer from Gemfile === [Custom fields] * Defect #25726: Issue details page shows default values for custom fields that aren't actually set * Patch #27024: Links on custom field values don't have "external" class * Patch #29161: Avoid SQL errors when adding a project custom field as a time report criteria * Patch #29189: Display custom fields on group pages === [Documentation] * Patch #28943: Remove RDoc tags * Patch #28996: Update Redmine::Plugin documentation === [Email notifications] * Defect #5703: On SMTP failure, an internal error occurs and all changes to an issue are lost * Defect #8157: Redmine do not send notification emails if a recipients email address is not valid * Feature #26791: Send individual notification mails per mail recipient * Feature #29771: Sort issues by due date in email reminders * Feature #30068: Remove :async_smtp and :async_sendmail delivery methods === [Email receiving] * Defect #27810: Typo in rdm-mailhandler.rb: s/Proccessed/Processed/ * Defect #27812: Typo in rdm-mailhandler.rb: s/subadress/subaddress/ * Defect #29442: Vendor-defined characters in ISO-2022-JP email subject break issue's subject * Feature #27070: Allow setting "Parent issue" attribute in emails * Patch #27025: Regex support for excluded mail attachments * Patch #28026: "project_from_subbaddress" option is not listed in the help of "rake redmine:email:receive_imap" * Patch #29614: redmine:email:read and rdm-mailhandler.rb should use safe_receive instead of receive * Patch #29669: "no_notification" option is not listed in the description of email.rake === [Gantt] * Defect #13521: Gantt bars with start date and end date on the same day don't become red by overdue * Feature #10485: Add new context menu in Gantt view for each issue * Feature #20481: Gantt: right and left resizable panel * Patch #26671: Use the new pagination style in gantt * Patch #26869: Use number input field instead of text input for Gantt months field * Patch #28602: Move edit and delete buttons for queries to the buttons section === [Gems support] * Defect #26066: Selenium::WebDriver doesn't work with current version of Firefox * Feature #29443: Update mail gem (~> 2.7.1) * Feature #29947: Update roadie gem to 3.4.0 * Patch #26322: Update simplecov gem (~> 0.14.1) * Patch #26503: Update nokogiri gem (~> 1.8.0) * Patch #28504: Update mysql2 gem to 0.5.0 * Patch #28505: Update pg gem to 1.0 * Patch #28929: Update roadie-rails to ~> 1.3.0 * Patch #29999: Update rdoc gem === [Hook requests] * Patch #28895: view_projects_copy_only_items hook === [I18n] * Feature #26618: Support of default ActiveRecord I18n scopes in LabelledFormBuilder === [Issues] * Defect #14846: Calculation of the start date of following issues ignores the "non-working days" setting * Defect #27848: The progress exceeding 99.5% is displayed as 100% * Defect #28264: Global and public custom queries are shown as editable to non administrators in projects * Defect #28951: Cannot clear category field on copying an Issue * Defect #29701: Custom queries are broken by updating with nil parameter values * Feature #2529: Extend Issue Summary to include subprojects * Feature #12704: Allow selecting subprojects on new issue form * Feature #15919: Set default category assignee immediately upon category selection * Feature #23518: Move action links and edit form above the history when displaying comments in reverse order * Feature #26192: Option to disable automatic closing of duplicate issues * Feature #26279: Allow switching the encoding to UTF-8 when exporting to CSV * Patch #27772: Issues reports should show only statuses used by the project * Patch #28154: Support for lastnames with spaces in user autocompleters * Patch #28494: Recalculate issue priority position names if default value changed === [Issues filter] * Feature #8160: Extend watched_by_me-issue filter to include all project-members instead of only <>-substitution * Feature #15201: Filter "Assignee" should contain locked users * Feature #28660: Change default operator for text format custom fields from "is" to "contains" * Patch #26091: Allow to filter by any visible version on the global issues view === [Issues list] * Feature #27316: Highlight due date of overdue issues in the issues list === [LDAP] * Defect #24970: Net::LDAP::LdapError is deprecated * Defect #28000: Deletion of an LDAP authentication mode may fail silently * Feature #21923: net-ldap 0.12.0 - 0.12.1 dropped support of UTF-8 * Patch #29606: Support self-signed LDAPS connections === [My page] * Feature #2471: Add my activities to my page * Feature #29449: Filter out issues from closed projects in My Page blocks === [PDF export] * Defect #12510: Issues PDF export: Spent time/Float-values aren't rounded to 2 digits === [Performance] * Feature #28952: Update User#last_login_on only once per minute * Patch #26711: Use pluck instead of collect/map * Patch #26747: Use find_by instead of where.first to remove unnecessary sorting * Patch #27671: Use reverse_each instead of reverse.each for better performance * Patch #29299: Use Enumerable#sort_by instead of Enumerable#sort * Patch #29305: Use Hash#each_key instead of Hash#keys.each * Patch #29359: Switch to mini_mime from mime-types * Patch #29363: Use String#tr instead of String#gsub * Patch #29406: Use sorted instead of sort === [Permissions and roles] * Defect #26145: Don't redirect anonymous users to the login form for disabled modules === [Plugin API] * Defect #26610: Migration file generated by redmine_plugin_model generator is not compatible with Rails 5.1 * Defect #28668: redmine_plugin_controller generates camelcase filename * Patch #28564: JSON API responses cannot have elements named 'request' or 'response' === [Project settings] * Feature #26488: Project settings : Move issue tracking settings to their own tab * Feature #26579: Project settings : remove Wiki tab * Patch #27799: Mark default version in versions tab from project settings === [Projects] * Feature #10282: Copy wiki attachments on project copy * Feature #20081: Filter issues and time entries by project status * Patch #26621: Allow to copy documents along with projects * Patch #26622: Copy version attachments (i.e. Files) along with the versions on project copy === [REST API] * Defect #28686: /users API does not accept boolean-like String values for generate_password * Patch #28191: Add assignable, issues_visibility, time_entries_visibility and users_visibility to Roles API response * Patch #29459: Add admin flag to users API === [Rails support] * Feature #19755: Drop protected_attributes gem * Feature #23630: Migrate to Rails 5.2 * Patch #28934: Support migration context for plugins === [Roadmap] * Patch #27676: Information leak on roadmap and versions view === [Ruby support] * Feature #25538: Drop support for Ruby 2.2.1 and ealier, 2.2.2+ is now required * Feature #27849: Ruby 2.5 support === [SCM] * Feature #26576: Use tabs to switch between file changes and diff of a commit * Patch #26391: Drop Darcs SCM support * Patch #26522: Repository routing bug when file path starts with (browse|entry|raw|changes|annotate|diff)/ === [SEO] * Defect #27865: RailsBaseURI ignored while creating robots.txt * Feature #27876: Add project id to robots.txt * Feature #29503: Discourage search engines from indexing old versions of wiki pages === [Search engine] * Feature #26620: Change the text of the submit button on search page from button_submit to label_search * Patch #30037: Allow single Chinese character as a search keyword === [Text formatting] * Defect #26443: User link syntax (user:login) doesn't work for logins consisting of an email adress * Defect #26507: "attachment:filename" link syntax would not work if the file name contains "@" * Defect #26708: Diff formatting results empty lines if they contains HTML tags * Defect #26892: Link to user in wiki syntax only works when login is written in lower case * Defect #27968: Image filename for HDPI monitors (image@2x.jpg) are misrecognized as email address * Feature #22843: Change the value of "pre" button in Markdown toolbar from "~~~" to "```" * Feature #24681: Syntax highlighter: replace CodeRay with Rouge * Feature #26552: Allow "max-height", "max-width", "min-height" and "min-width" CSS properties in Textile * Feature #28796: Make sure that inline markups inserted by wiki toolbar are surrounded by whitespaces * Patch #16313: Allow to link to an anchor of the current wikipage * Patch #27114: Make robust Redmine::Helpers::URL#uri_with_safe_scheme? * Patch #28169: Enable and add underline button to the toolbar for Markdown formatting * Patch #28207: Test improvements for footnotes formatting syntax * Patch #29488: ##123 syntax for linking to issues with tracker name and subject === [Time tracking] * Feature #26356: Time entry list: set default column options * Feature #26396: Timelog list : new column that contains the date when the time was logged * Feature #28391: Add issue category filter and column to spent time queries * Feature #29042: Add links to Users, Projects and Versions (at least) in timelog report * Patch #24005: Settings to accept 0 hours time entries and for maximum hours per user and day * Patch #26534: Allow project bulk edit of time entries * Patch #29162: Only allow visible custom fields as aggregation criteria in time reports === [Translations] * Defect #22424: Change Russian translation for default_issue_status_feedback * Defect #28160: Misleading russian translation for "Log time" button * Defect #29901: Fix typo in French text_tracker_no_workflow * Patch #26501: Change English translation for setting_issue_list_default_columns * Patch #26514: German translation for 404-error-page is semantically not correct and misleading * Patch #26591: Spanish "text_journal_changed" translate change * Patch #27506: Czech translation change * Patch #27768: Lithuanian "default_role_developer" translation change * Patch #27926: Change Bulgarian translation for label_news_new * Patch #27989: Change Galician translation for "Underline" and "Wiki link" (jstoolbar-gl.js) * Patch #28279: Change German translation for not_a_regexp and setting_mail_handler_enable_regex * Patch #28311: Remove unused i18n key "permission_move_issues" * Patch #28321: Change Japanese translation for "in use" * Patch #28493: Persian translation update and improvements * Patch #28769: Change inconsistent Japanese translation for time tracking activities * Patch #29115: Change Japanese translation for date filter operators * Patch #29118: Change Japanese translation for text_user_mail_option * Patch #29129: Use active voice instead of passive voice in Japanese translation * Patch #29275: Update French translations * Patch #29697: Czech translation fixes * Patch #29739: Change English name for zh and zh-TW to "Chinese/Simplified" and "Chinese/Traditional" === [UI] * Defect #5593: Grey out workflow checkboxes for transitions to the same status * Defect #17517: Attempting to Add a Related Issue Multiple Times Sequentially Causes 500 * Defect #29607: Allow project column to break into new line in time entry table * Feature #8888: Add a link / button to get back to the Issue/Time tracking screen from the "Log time" screen * Feature #12221: Add "View Differences" button above wiki and repository revisions table * Feature #22978: Links to issue notes should highlight the linked note * Feature #26253: Render repository graphs using Chart.js instead of SVG * Feature #26577: More neutral color download icon * Feature #26638: Move journal action links above the notes * Feature #26648: Show transparency grid when previewing images * Feature #27758: Adds preview option to the wiki toolbar * Feature #28330: Links to wiki headings should highlight the linked heading * Feature #28413: Add CSS class to identify public projects * Feature #28531: Add css to distinguish when a main menu is present or not * Feature #29053: Add check/unchek all icon in "Email notifications" section on "My account" page * Feature #29080: Add check/uncheck all icon in "Copy" section on copy_project page * Feature #29183: Move "Latest news" above "Members" on project overview page * Feature #29306: Add assignee's icon to tooltips in gantt and calendar * Patch #25853: Move left bottom links from project settings above * Patch #26125: Unify form#query_form on calendar/gantt views with issues/spent time views * Patch #26655: Additional icon for contextmenu * Patch #26662: Add border around issue history to prevent accidental deletion of an issue * Patch #26674: Add CSS classes to column headers of issues and timelogs list * Patch #27009: Clarify consequences of disabling the login_required setting * Patch #27219: Show default status on the trackers list * Patch #27240: Render the activities block on the UsersController#show view grouped, with event_type icon and with the 'me' indication * Patch #27807: Use a unique way to check/uncheck a group/fieldset with checkboxes * Patch #28242: Add toggle checkboxes link (green tick) to several screens * Patch #28662: Replace "Cancel" buttons from the modals with "Cancel" link * Patch #29033: Move attachments to their own section in issue page * Patch #29644: Add a link to issues summary to issue tracking box on overview page === [Wiki] * Defect #22967: Special character like quote breaks wiki links * Defect #22975: Moving a wiki page to a different project should refresh parent page list * Feature #26575: Add update info at the bottom of the wiki page * Patch #16446: Generate full URLs to images and linked pages in the Wiki HTML export * Patch #26043: Set the parent page automatically when creating a wiki page from the "Add page" link == 2018-06-10 v3.4.6 === [Issues] * Defect #27863: If version is closed or locked subtasks don't get copied * Defect #28765: Copying an issue fails if the issue is watched by a locked user * Patch #28649: Log automatic rescheduling of following issues to journal === [Permissions and roles] * Defect #28693: Irrelevant permission is required to access some tabs in project settings page === [Project settings] * Defect #27122: Filter for version name should be case-insensitive === [SCM] * Defect #28725: Mercurial 4.6 compatibility === [Text formatting] * Defect #28469: Syntax highlighter does not work if language name is single-quoted === [Translations] * Patch #28881: Fix Japanese mistranslation for label_comment_added === [UI] * Defect #22023: Issue id input should get focus after adding related issue === [UI - Responsive] * Defect #28523: Display horizontal scroll bar of plugins table when overflow occurs on small screen === [Wiki] * Patch #27090: Show the number of attachments on wiki pages == 2018-04-07 v3.4.5 === [Custom fields] * Defect #28393: Sort issue custom fields by position in tracker UI === [Email notifications] * Defect #28302: Security notification when changing password on password forgotten is empty === [Gantt] * Defect #28204: Too large avatar breaks gantt when assignee is a group === [Issues] * Defect #27862: Preformatted text overflows in preview * Patch #28168: Allow context-menu edit of % done and priority of parent issues if the fields are not derived === [Issues filter] * Defect #28180: Role-base cross-project issue query visibility calculated incorrectly === [Plugin API] * Patch #27963: Remove 'unloadable' from bundled sample plugin === [Security] * Defect #26857: Fix for CVE-2015-9251 in JQuery 1.11.1 === [Text formatting] * Defect #27884: RTL wiki class broken in Redmine 3.2.6 * Defect #28331: h4, h5 and h6 headings on wiki pages should have a paragraph mark * Patch #28119: Enable lax_spacing for markdown formatting in order to allow markdown blocks not surrounded by empty lines === [Time tracking] * Defect #28110: Don't allow reassigning reported hours to the project if issue is a required field for time logs === [Translations] * Defect #28109: Incorrect interpolation in Swedish locale * Defect #28113: Fix typo in German label_font_default * Defect #28192: Fix typo in German label_font_monospace * Patch #27994: Galician translation update (jstoolbar-gl.js) * Patch #28102: Fix typo in Lithuanian label_version_sharing_tree === [UI] * Defect #28079: The green tick is positioned after the label in the new member modals * Defect #28208: Anonymous icon is wrongly displayed when assignee is a group * Defect #28259: attachments_fields id to class change not properly reflected in all CSS === [Wiki] * Defect #25299: Markdown pre-block could derive incorrect wiki sections == 2018-01-08 v3.4.4 === [Accounts / authentication] * Defect #22532: Strip whitespace from login on login page * Defect #27754: Strip whitespace from email addresses on lost password page === [Administration] * Defect #27586: "Uncheck all" icon at the upper left corner in workflow status transitions page is not working === [Calendar] * Defect #27153: Custom query breaks calendar view with error 500 * Patch #27139: Fix for project link background in calendar tooltips === [Custom fields] * Defect #26705: Unable to download file if custom field is not defined as visible to any users === [Email receiving] * Patch #27885: Empty email attachments are imported to Redmine, creating broken DB records === [Gantt] * Defect #26410: Gravatar icon is misaligned in gantt === [Gems support] * Defect #27206: cannot install public_suffix if ruby < 2.1 * Defect #27505: Cannot install nokogiri 1.7 on Windows Ruby 2.4 === [Issues] * Defect #26880: Cannot clear all watchers when copying an issue * Defect #27110: Changing the tracker to a tracker with the tracker field set to read-only won't work * Defect #27881: No validation errors when entering an invalid "Estimate hours" value * Patch #27663: Same relates relation can be created twice * Patch #27695: Fix ActiveRecord::RecordNotUnique errors when trying to add certain issue relations === [Issues list] * Defect #27533: Cannot change the priority of the parent issue in issue query context menu when parent priority is independent of children === [Plugin API] * Defect #20513: Unloadable plugin convention breaks with Rails 4.2.3 === [SCM] * Defect #27333: Switching SCM fails after validation error in "New repository" page === [Security] * Defect #27516: Remote command execution through mercurial adapter === [Translations] * Patch #27502: Lithuanian translation for 3.4-stable * Patch #27620: Brazilian translation update * Patch #27642: Spanish translation update (jstoolbar-es.js) * Patch #27649: Spanish/Panama translation update (jstoolbar-es-pa.js) * Patch #27767: Czech translation for 3.4-stable === [UI] * Defect #19578: Issues reports table header overlaping * Defect #26699: Anonymous user should have their icon == 2017-10-15 v3.4.3 === [Administration] * Defect #26564: Enumerations sorting does not work === [Custom fields] * Defect #26468: Using custom fields of type "File" leads to unsolvable error if filetype is not allowed === [Issues] * Defect #26627: Editing issues no longer sends notifications to previous assignee === [Issues list] * Defect #26471: Issue Query: inconsistency between spent_hours sum and sum of shown spent_hours values === [PDF export] * Defect #25702: Exporting wiki page with specific table to PDF causes 500 === [Roadmap] * Patch #26492: % is not valid without a format specifier === [SCM] * Defect #26403: The second and subsequent lines of commit messages are not displayed in repository browser * Defect #26645: git 2.14 compatibility === [Text formatting] * Patch #26682: URL-escape the ! character in generated markup for dropped uploads === [Time tracking] * Defect #26520: Blank "Issue" field on the "Log time" from the "Spent time - Details" page for an issue * Defect #26667: Filtering time entries after issue's target version doesn't work as expected in some cases * Defect #26780: Translation for label_week in time report is not working === [Translations] * Patch #26703: German translations in 3.4-stable * Patch #27034: Patch for updated Chinese translation === [UI] * Defect #26568: Multiple Selection List Filter View - items are cut off from view * Patch #26395: Jump to project autocomplete: focus selected project * Patch #26689: Add title to author's and assignee's icon === [Wiki] * Defect #26599: Corrupted file name when exporting a wiki page with Non-ASCII title using Microsoft's browsers === [Security] * Defect #27186: XSS vulnerabilities == 2017-07-16 v3.4.2 === [Administration] * Defect #26393: Error when unchecking all settings on some plugins configurations === [Attachments] * Defect #26379: Fix thumbnail rendering for images with height >> width === [Time tracking] * Defect #26387: Error displaying time entries filtered by Activity === [UI] * Defect #26445: Text formatting not applied to commit messages even if enabled in settings * Patch #26424: Avatar Spacing in Headlines == 2017-07-09 v3.4.1 === [Issues list] * Defect #26364: Sort is not reflected when export CSV of issues list === [Projects] * Defect #26376: Wrong issue counts and spent time on project overview === [Translations] * Patch #26344: Bulgarian translation * Patch #26365: Traditional Chinese translation === [UI] * Defect #26325: Wrong CSS syntax * Defect #26350: Don't display file download button while on repository directory entries == 2017-07-02 v3.4.0 === [Accounts / authentication] * Defect #13741: Not landing on home page on login after visiting lost password page * Feature #10840: Allow "Stay logged in" from multiple browsers * Feature #25253: Password reset should count as a password change for User#must_change_passwd * Feature #26190: Add setting to hide optional user custom fields on registration form * Patch #25483: Forbid to edit/update/delete the anonymous user === [Activity view] * Patch #18399: Missing "next" pagination link when looking at yesterday's activity === [Administration] * Defect #7577: "Send account information to the user" only works when password is set * Defect #25289: Adding a principal to 2 projects with member inheritance leads to an error * Feature #12598: Add tooltip on Workflow matrix for helping in big ones * Feature #16484: Add default timezone for new users * Feature #24780: Add tooltip on Permissions report matrix * Feature #24790: Add tooltip on trackers summary matrix === [Attachments] * Defect #24308: Allow Journal to return empty Array instead nil in Journal#attachments * Feature #13072: Delete multiple attachments with one action * Patch #22941: Allow thumbnails on documents, messages and wiki pages * Patch #24186: Restrict the length attachment filenames on disk * Patch #25215: Re-use existing identical disk files for new attachments * Patch #25240: Use SHA256 for attachment digest computation * Patch #25295: Use path instead of URL of image in preview === [Code cleanup/refactoring] * Defect #24928: Wrong text in log/delete.me * Defect #25563: Remove is_binary_data? from String * Feature #15361: Use css pseudo-classes instead of cycle("odd", "even") * Patch #24313: Use the regular "icon icon-*" classes for all elements with icons * Patch #24382: More readable regex for parse_redmine_links * Patch #24523: Source: ignore .idea * Patch #24578: Remove unused CSS class ".icon-details" * Patch #24643: Rename "issue" to "item" in query helpers * Patch #24713: Remove iteration in ApplicationHelper#syntax_highlight_lines * Patch #24832: Remove instance variable which is unused after r9603 * Patch #24899: Remove unused "description_date_*" from locale files * Patch #24900: Remove unused "label_planning" from locale files * Patch #24901: Remove unused "label_more" from locale files * Patch #26149: Remove duplicate method shell_quote === [Core Plugins] * Feature #24167: Rebuild a single nested set with nested_set plugin === [Custom fields] * Feature #6719: File format for custom fields (specific file uploads) * Feature #16549: Set multiple values in emails for list custom fields * Feature #23265: Group versions by status in version custom field filter * Patch #21705: Option for long text custom fields to be displayed using full width * Patch #24801: Flash messages on CustomFields destroy === [Database] * Defect #23347: MySQL: You can't specify target table for update in FROM clause * Defect #25416: "My account" broken with MySQL 8.0 (keyword admin should be escaped) === [Documentation] * Defect #21375: Working external URL prefixes (protocols and 'www' host part) not documented in wiki syntax * Feature #25616: Change format of the changelog (both on redmine.org and in the shipped changelog file) * Patch #24800: Remove internal style sheet duplication and obsoleted meta tag from wiki_syntax_* documentation. * Patch #26188: Documentation (detailed syntax help & code) additions/improvements === [Email notifications] * Feature #25842: Add table border to email notifications * Patch #23978: Make the email notifications for adding/updating issues more readable/clear === [Email receiving] * Defect #25256: Mail parts with empty content should be ignored * Feature #5864: Regex Text on Receiver Email * Patch #17718: Body delimiters to truncate emails do not take uncommon whitespace into account === [Forums] * Patch #24535: Flash messages on Board destroy === [Gantt] * Patch #25876: Gantt chart shows % done even if the field is disabled for the tracker === [Gems support] * Feature #23932: Update TinyTds to recent version (1.0.5) * Feature #25781: Markdown: Upgrade redcarpet gem to 3.4 === [Hook requests] * Patch #23545: Add before_render hook to WikiController#show === [I18n] * Defect #24616: Should not replace all invalid utf8 characters (e.g in mail) * Patch #24938: Update tr.yml for general_first_day_of_week * Patch #25014: redmine/i18n.rb - languages_lookup class variable is rebuilt every time === [Importers] * Feature #22701: Allow forward reference to parent when importing issues === [Issues] * Defect #5385: Status filter should show statuses related to project trackers only * Defect #15226: Searching for issues with "updated = none" always returns zero results * Defect #16260: Add Subtask does not work correctly from tasks with Parent Task field disabled * Defect #17632: Users can't see private notes created by themselves if "Mark notes as private" is set but "View private notes" is not * Defect #17762: When copying an issue and changing the project, the list of watchers is not updated * Defect #20127: The description column in the issues table is too short (MySQL) * Defect #21579: The cancel operation in the issue edit mode doesn't work * Defect #23511: Progress of parent task should be calculated using total estimated hours of children * Defect #23755: Bulk edit form not show fields based on target tracker and status * Feature #482: Default assignee on each project * Feature #3425: View progress bar of related issues * Feature #10460: Option to copy watchers when copying issues * Feature #10989: Prevent parent issue from being closed if a child issue is open * Feature #12706: Ability to change the private flag when editing a note * Feature #20279: Allow to filter issues with "Any" or "None" target version defined when viewing all issues * Feature #21623: Journalize values that are cleared after project or tracker change * Feature #22600: Add warning when loosing data from custom fields when bulk editing issues * Feature #23610: Reset status when copying issues * Feature #24015: Do not hide estimated_hours label when value is nil * Feature #25052: Allow to disable description field in tracker setting * Patch #23888: Show an error message when changing an issue's project fails due to errors in child issues * Patch #24692: Issue destroy : Reassign time issue autocomplete * Patch #24877: Filter parent task issues in auto complete by open/closed status depending on the subtask status * Patch #25055: Filter out current issue from the related issues autocomplete === [Issues filter] * Defect #24769: User custom field filter lists only "Me" on cross project issue list * Defect #24907: Issue queries: "Default columns" option conflicts with "Show description" * Defect #25077: Issue description filter's 'none' operator does not match issues with blank descriptions * Feature #2783: Filter issues by attachments * Feature #10412: Target version filter shoud group versions by status * Feature #15773: Filtering out specific subprojects (using 'is not' operator) * Feature #17720: Filter issues by "Updated by" and "Last updated by" * Feature #21249: Ability to filter issues by attributes of a version custom field (e.g. release date) * Feature #23215: Add the possibility to filter issues after Target Version's Status and Due Date === [Issues list] * Feature #1474: Show last comment/notes in the issue list * Feature #6375: Last updated by colum in issue list * Feature #25515: View attachments on the issue list * Patch #24649: Make Spent time clickable in issue lists === [Issues workflow] * Defect #14696: Limited status when copying an issue * Patch #24281: Workflow editing shows statuses of irrelevant roles === [My page] * Feature #1565: Custom query on My page * Feature #7769: Sortable columns in issue lists on "My page" * Feature #8761: My page - Spent time section only display 7 days, make it a parameter * Feature #23459: Columns selection on the issues lists on "My page" * Feature #25297: In place editing of "My page" layout === [Performance] * Defect #24433: The changeset display is slow when changeset_issues has very many records * Feature #23743: Add index to workflows.tracker_id * Feature #23987: Add an index on issues.parent_id * Patch #21608: Project#allowed_to_condition performance * Patch #22850: Speedup remove_inherited_roles * Patch #23519: Don't preload projects and roles on Principal#memberships association * Patch #24587: Improve custom fields list performance * Patch #24787: Don't preload all filter values when displaying issues/time entries * Patch #24839: Minor performance improvement - Replace count by exists? * Patch #24865: Load associations of query results more efficiently * Patch #25022: Add an index on attachments.disk_filename === [Permissions and roles] * Feature #4866: New permission: view forum * Feature #7068: New permission: view news === [Project settings] * Defect #23470: Disable "Select project modules" permission does not apply to the new project form * Feature #22608: Enable filtering versions on Project -> Settings -> Versions * Feature #24011: Add option to set a new version as default directly from New Version page === [REST API] * Defect #23921: REST API Issue PUT responds 200 OK even when it can't set assigned_to_id * Feature #7506: Include allowed activities list in "project" API response * Feature #12181: Add attachment information to issues.xml in REST API * Feature #23566: REST API should return attachment's id in addition to token * Patch #19116: Files REST API * Patch #22356: Add support for updating attachments over REST API * Patch #22795: Render custom field values of enumerations in API requests === [Roadmap] * Defect #23377: Don't show "status" field when creating a new version * Feature #23137: Completed versions on Roadmap: Sort it so that recently created versions are on top === [Ruby support] * Feature #25048: Ruby 2.4 support === [SCM] * Defect #14626: Repositories' extra_info column is too short with MySQL === [SCM extra] * Defect #23865: Typo: s/projet/project/ in Redmine.pm comments === [Search engine] * Feature #9909: Search in project and its subprojects by default === [Text formatting] * Defect #26310: "attachment:filename" should generate a link to preview instead of download * Feature #4179: Link to user in wiki syntax * Feature #22758: Make text formatting of commit messages optional * Feature #24922: Support high resolution images in formatted content * Patch #26157: Render all possible inline textile images === [Themes] * Defect #25118: ThemesTest#test_without_theme_js may fail if third-party theme is installed === [Time tracking] * Defect #13653: Keep displaying spent time page when switching project via dropdown menu * Defect #23912: No validation error when date value is invalid in time entries filter * Defect #24041: Issue subject is not updated when you select another issue in the new "Log time" page * Feature #588: Move timelog between projects * Feature #13558: Add version filter in spent time report * Feature #14790: Ability to save spent time query filters * Feature #16843: Enable grouping on time entries list * Feature #23401: Add tracker and status columns/filters to detailed timelog * Feature #24157: Make project custom fields available in timelogs columns * Feature #24577: Settings to make the issue and/or comment fields mandatory for time logs * Patch #24189: Time entry form - limit issue autocomplete to already selected project === [Translations] * Defect #25470: Fix Japanese mistranslation for field_base_dn * Defect #25687: Bad translation in french for indentation * Patch #23108: Change Japanese translation for text_git_repository_note * Patch #23250: Fixes issues with Catalan translation * Patch #23359: Change Japanese translation for label_commits_per_author * Patch #23388: German translation change * Patch #23419: Change Japanese translation for label_display_used_statuses_only * Patch #23659: Change Japanese translation for label_enumerations * Patch #23806: Fix Japanese translation inconsistency of label_tracker_new and label_custom_field_new * Patch #24174: Change Japanese translation for "format" * Patch #24177: Change translation for label_user_mail_option_only_(assigned|owner) * Patch #24268: Wrong German translation of logging time error message * Patch #24407: Dutch (NL) translation enhancements and complete review (major update) * Patch #24494: Spanish Panama "label_issue_new" translation change * Patch #24518: Spanish translation change (adding accent mark and caps) * Patch #24572: Spanish label_search_open_issues_only: translation change * Patch #24750: Change Japanese translation for setting_text_formatting and setting_cache_formatted_text * Patch #24891: Change Japanese translation for "items" * Patch #25019: Localization for Ukrainian language - completed * Patch #25204: Portuguese translation file * Patch #25392: Change Russian translation for field_due_date and label_relation_new * Patch #25609: Change Japanese translation for field_attr_* * Patch #25628: Better wording for issue update conflict resolution in German * Patch #26180: Change Russian translation for "Estimated time" === [UI] * Defect #23575: Issue subjects are truncated at 60 characters on activity page * Defect #23840: Reduce the maximum height of the issue description field * Defect #23979: Elements are not aligned properly in issues table for some cases * Defect #24617: Browser js/css cache remains after upgrade * Feature #5920: Unify and improve cross-project views layout * Feature #9850: Differentiate shared versions in version-format custom field drop-downs by prepending its project name * Feature #10250: Renaming "duplicates" and "duplicated by" to something less confusing * Feature #23310: Improved "jump to project" drop-down * Feature #23311: New "Spent time" menu tab when spent time module is enabled on project * Feature #23653: User preference for monospaced / variable-width font in textareas * Feature #23996: Introduce a setting to change the display format of timespans to HH:MM * Feature #24720: Move all 'new item' links in project settings to above the item tables * Feature #24927: Render high resolution Gravatars and Thumbnails * Feature #25988: Preview files by default instead of downloading them * Feature #25999: View repository content by default (instead of the history) * Feature #26035: More visually consistent download links * Feature #26071: Generate markup for uploaded image dropped into wiki-edit textarea * Feature #26189: For 3 comments or more on news items and forum messages, show reply link at top of comments as well * Patch #23146: Show revision details using the same structure and look from the journals details * Patch #23192: Add the new pagination style in the activity page * Patch #23639: Add "Log time" to global button menu (+) * Patch #23998: Added link to author in Repository * Patch #24776: UI inconsistencies on /enumerations/index view * Patch #24833: Always show "Jump to project" drop-down * Patch #25320: Remove initial indentation of blockquotes for better readability * Patch #25775: Show assignee's icon in addition to author's icon === [Wiki] * Feature #12183: Hide attachments by default on wiki pages * Feature #23179: Add heading to table of contents macro == 2017-07-02 v3.3.4 === [Accounts / authentication] * Patch #25653: Fix NoMethodError on HEAD requests to AccountController#register === [Code cleanup/refactoring] * Defect #26055: Three issues with Redmine::SyntaxHighlighting::CodeRay.language_supported? === [Gems support] * Defect #25829: mysql2 0.3 gem doesn't properly close connections === [Importers] * Patch #25861: CSV Importer - handle UndefinedConversionErrors === [Issues] * Defect #26072: Set default assignee before validation === [Issues filter] * Defect #25212: User profile should link to issues assigned to user or his groups === [Issues permissions] * Defect #25791: Bypass Tracker role-based permissions when copying issues === [Security] * Defect #26183: Use Nokogiri 1.7.2 === [Text formatting] * Defect #25634: Highlight language aliases are no more supported === [Translations] * Patch #26264: Simplified Chinese translation for 3.3-stable === [UI] * Defect #25760: Clicking custom field label should not check the first option === [UI - Responsive] * Defect #25064: Issue description edit link corrupted in low resolution * Patch #25745: Optimize Gantt Charts for mobile screens == 2017-04-09 v3.3.3 * Defect #22335: Images with non-ASCII file names are not shown in PDF * Defect #24271: htmlentities warning * Defect #24869: Circular inclusion detected when including a wiki page with the same name * Defect #24875: Issues API does not respect time_entries_visibility * Defect #24999: Mercurial 4.1 compatibility * Defect #25371: Git 2.9 compatibility * Defect #25478: Related to "no open issues" shows all issues * Defect #25501: Time entries query through multiple projects by issue custom field not possible anymore * Patch #20661: Show visible spent time link for users allowed to view time entries. * Patch #24778: Czech localisation for 3.3-stable * Patch #24824: Traditional Chinese translation (to r16179) * Patch #24885: Japanese translation for 3.3-stable * Patch #24948: Bulgarian translation for 3.3-stable * Patch #25459: Portuguese translation for 3.3-stable * Patch #25502: Russian translation for 3.3-stable * Patch #25115: Support upload of empty files and fix invalid API response * Patch #25526: Revert API change in spent_hours field in issue#show * Defect #23793: Information leak when rendering of Wiki links * Defect #23803: Information leak when rendering Time Entry activities * Defect #24199: Stored XSS with SVG attachments * Defect #24307: Redmine.pm doesn't check that the repository module is enabled on project * Defect #24416: Use redirect to prevent password reset tokens in referers * Defect #25503: Improper markup sanitization in user content == 2017-01-07 v3.3.2 * Defect #13622: "Clear" button in Spent Time Report tab also clears global filters * Defect #14658: Wrong activity timezone on user page * Defect #14817: Redmine loses filters after deleting a spent time * Defect #22034: Locked users disappear from project settings * Defect #23922: Time Entries context menu/bulk edit shows activities not available for the time entry's project * Defect #24000: z-index children menu should be greater than content * Defect #24092: bundler error: selenium-webdriver requires Ruby version >= 2.0. * Defect #24156: Redmine might create many AnonymousUser and AnonymousGroup entries * Defect #24274: Query totals and query buttons overlaps on small screens * Defect #24297: Show action not allowed for time entries in closed projects * Defect #24311: Project field disappears when target project disallows user to edit the project * Defect #24348: acts_as_versioned use old style (Rails 2.x) of method call for #all * Defect #24595: Unarchive link for a subproject of a closed project does not work * Defect #24646: X-Sendfile is missing in response headers * Defect #24693: Spent time on subtasks should also be reassigned when deleting an issue * Defect #24718: Prevent from reassigning spent time to an issue that is going to be deleted * Defect #24722: Error when trying to reassign spent time when deleting issues from different projects * Patch #24003: Catalan Translation * Patch #24004: Spanish & Spanish (PA) Translation * Patch #24062: Allow only vertical reorderingin sortable lists * Patch #24283: Validate length of string fields * Patch #24296: Add tablename to siblings query to prevent AmbiguousColumn errors == 2016-10-10 v3.3.1 * Defect #23067: Custom field List Link values to URL breaks on entries with spaces * Defect #23655: Restricted permissions for non member/anonymous on a given project not working * Defect #23839: "Invalid query" (Error 500) message with MS SQL when displaying an issue from a list grouped and sorted by fixed version * Defect #23841: Custom field URL spaces not decoded properly * Defect #22123: Totals cannot be removed completely if some columns are set in the global settings * Defect #23054: Clearing time entry custom fields while bulk editing results in values set to __none__ * Defect #23206: Wrong filters are applied when exporting issues to CSV with blank filter * Defect #23246: Saving an empty Markdown image tag in Wiki pages causes internal server error * Defect #23829: Wrong allow-override example in rdm-mailhandler.rb * Defect #23152: Distinguish closed subprojects on the project overview * Defect #23172: Tickets can be assigned to users who are not available in specific tracker * Defect #23242: thumbnail macro does not render when displaying wiki content version * Defect #23369: encoding error in locales de.yml * Defect #23391: Wrong CSS classes in subtasks tree * Defect #23410: Error if create new issue and there is no project * Defect #23472: Show open issues only in "Reported Issues" on My page * Defect #23558: IssueImportTest#test_should_not_import_with_default_tracker_when_tracker_is_invalid fails randomly * Defect #23596: Filter on issue ID with between/lesser/greater operator does not work * Defect #23700: Creating a wiki page named "Sidebar" without proper permission raises an exception * Defect #23751: Tab buttons appear on pages that have no tabs * Defect #23766: API : creating issues with project identifier no longer possible * Defect #23878: Closing all subtasks causes error if default priority is not defined and priority is derived from subtasks * Defect #23969: Edit/delete links displayed on issue even if project is closed * Defect #24014: Custom fields not used in project should not be visible in spent time report * Patch #23117: Traditional Chinese textile and markdown help translation * Patch #23387: Traditional Chinese textile and markdown detailed help translation (to r15723) * Patch #23764: closed_on field of copied issue is always set to source issue's value * Patch #23269: Fix for Error: Unable to autoload constant Redmine::Version when accessing the time report in first request * Patch #23278: When creating issues by receiving an email, watchers created via CC in the mail don't get an email notification * Patch #23389: Print Styles get overriden by responsive media query * Patch #23708: Too long words in subtasks break layout * Patch #23883: iOS 10 ignore disabled Zoom * Patch #23134: Updated Korean locale * Patch #23153: Plugin hooks for custom search results * Patch #23171: Simplified Chinese translation for 3.3-stable * Patch #23180: Make the issue id from email notifications linkable to issue page * Patch #23334: Issue#editable_custom_field_values very slow for issues with many custom fields * Patch #23346: Set user's localization before redirecting on forced password change to generate flash message in current user's language * Patch #23376: Downloading of attachments with MIME type text/javascript fails * Patch #23497: Russian translation for 3.3.0 * Patch #23587: Sudo-Mode refinements * Patch #23725: Updated Brazilian translation for 3.3.0.stable * Patch #23745: German translation for 3.3-stable == 2016-06-19 v3.3.0 * Defect #5880: Only consider open subtasks when computing the priority of a parent issue * Defect #8628: "Related to" reference may yield circular dependency error message * Defect #12893: Copying an issue does not copy parent task id * Defect #13654: Can't set parent issue when issue relations among child issues are present * Defect #15777: Watched issues count on "My page" is shown for all issues instead of only open ones * Defect #17580: After copying a task, setting the parent as the orignal task's parent triggers an error * Defect #19924: Adding subtask takes very long * Defect #20882: % done: progress bar blocked at 80 in the issue list * Defect #21037: Issue show : bullet points not aligned if sub-task is in a different project * Defect #21433: "version-completed" class is never set when version has no due date * Defect #21674: The LDAP connection test does not check the credentials * Defect #21695: Warning "Can't mass-assign protected attributes for IssueRelation: issue_to_id" * Defect #21742: Received text attachments doesn't hold the original encoding on Ruby >= 2.1 * Defect #21855: Gravatar get images over http instead https * Defect #21856: I18n backend does not support original i18n Pluralization * Defect #21861: typo: s/creditentials/credentials/ * Defect #22059: Issue percentage selector extends screen border * Defect #22115: Text in the "removed" part of a wiki diff is double-escaped * Defect #22123: Totals cannot be removed completely if some columns are set in the global settings * Defect #22135: Semi colon is spelled semicolon * Defect #22405: SQL server: non ASCII filter does not work * Defect #22493: Test code bug in application_helper_test * Defect #22745: Rest API for Custom Fields does not return keys for key/value types * Defect #23044: Typo in Azerbaijani general_lang_name * Defect #23054: Clearing time entry custom fields while bulk editing results in values set to __none__ * Defect #23067: Custom field List Link values to URL breaks on entries with spaces * Feature #285: Tracker role-based permissioning * Feature #1725: Delete button on comments * Feature #4266: Display changeset comment on repository diff view. * Feature #4806: Filter the issue list by issue ids * Feature #5536: Simplify Wiki Page creation ("Add Page" link) * Feature #5754: Allow addition of watchers via bulk edit context menu * Feature #6204: Make the "New issue" menu item optional * Feature #7017: Add watchers from To and Cc fields in issue replies * Feature #7839: Limit trackers for new issue to certain roles * Feature #12456: Add units in history for estimated time * Feature #12909: Drag'n'drop order configuration for statuses, trackers, roles... * Feature #13718: Accept dots in JSONP callback * Feature #14462: Previous/next links may be lost after editing the issue * Feature #14574: "I don't want to be notified of changes that I make myself" as Default for all User * Feature #14830: REST API : Add support for attaching file to Wiki pages * Feature #14937: Code highlighting toolbar button * Feature #15880: Consistent, global button/menu to add new content * Feature #20985: Include private_notes property in xml/json Journals output * Feature #21125: Removing attachment after rollback transaction * Feature #21421: Security Notifications when security related things are changed * Feature #21500: Add the "Hide my email address" option on the registration form * Feature #21757: Add Total spent hours and Estimated hours to the REST API response * Feature #22018: Add id and class for easier styling of query filters * Feature #22058: Show image attachments and repo entries instead of downloading them * Feature #22147: Change "Related issues" label for generic grouped query filters * Feature #22381: Require password reset on initial setup for default admin account * Feature #22383: Support of default Active Record (I18n) transliteration paths * Feature #22482: Respond with "No preview available" instead of sending the file when no preview is available * Feature #22951: Make Tracker and Status map-able for CSV import * Feature #22987: Ruby 2.3 support * Feature #23020: Default assigned_to when receiving emails * Feature #23107: Update CodeRay to v1.1.1. * Patch #3551: Additional case of USER_FORMAT, #{lastname}#{firstname} without any sperator * Patch #6277: REST API for Search * Patch #14680: Change Simplified Chinese translation for version 'field_effective_date' * Patch #14828: Patch to add support for deleting attachments via API * Patch #19468: Replace jQuery UI Datepicker with native browser date fields when available * Patch #20632: Tab left/right buttons for project menu * Patch #21256: Use CSS instead of image_tag() to show icons for better theming support * Patch #21282: Remove left position from gantt issue tooltip * Patch #21434: Additional CSS class for version status * Patch #21474: Adding issue css classes to subtasks and relations tr * Patch #21497: Tooltip on progress bar * Patch #21541: Russian translation improvement * Patch #21582: Performance in User#roles_for_project * Patch #21583: Use association instead of a manual JOIN in Project#rolled_up_trackers * Patch #21587: Additional view hook for body_top * Patch #21611: Do not collect ids of subtree in Query#project_statement * Patch #21628: Correct Turkish translation * Patch #21632: Updated Estonian translation * Patch #21663: Wrap textilizable with DIV containing wiki class * Patch #21678: Add missing wiki container for news comments * Patch #21685: Change Spanish Panama thousand delimiters and separator * Patch #21738: Add .sql to mime-types * Patch #21747: Catalan translation * Patch #21776: Add status, assigned_to and done_ratio classes to issue subtasks * Patch #21805: Improve accessibility for icon-only links * Patch #21931: Simplified Chinese translation for 3.3 (some fixes) * Patch #21942: Fix Czech translation of field_time_entries_visibility * Patch #21944: Bugfix: Hide custom field link values from being shown when value is empty * Patch #21947: Improve page header title for deeply nested project structures (+ improved XSS resilience) * Patch #21963: German translations change * Patch #21985: Increase space between menu items * Patch #21991: Japanese wiki_syntax_detailed_textile.html translation improvement * Patch #22078: Incorrect French translation of :setting_issue_group_assignment * Patch #22126: Update for Lithuanian translation * Patch #22138: fix Korean translation typo * Patch #22277: Add id to issue query forms to ease styling within themes * Patch #22309: Add styles for blockquote in email notifications * Patch #22315: Change English translation for field_effective_date: "Date" to "Due date" * Patch #22320: Respect user's timezone when comparing / parsing Dates * Patch #22345: Trackers that have parent_issue_id in their disabled_core_fields should not be selectable for new child issues * Patch #22376: Change Japanese translation for label_issue_watchers * Patch #22401: Notify the user of missing attachments * Patch #22496: Add text wrap for multiple value list custom fields * Patch #22506: Updated Korean locale data * Patch #22693: Add styles for pre in email notifications * Patch #22724: Change Japanese translation for "last name" and "first name" * Patch #22756: Edit versions links on the roadmap * Patch #23021: fix Russian "setting_thumbnails_enabled" misspelling * Patch #23065: Fix confusing Japanese translation for permission_manage_related_issues * Patch #23083: Allow filtering for system-shared versions in version custom fields in the global issues view == 2016-06-05 v3.2.3 * Defect #22808: Malformed SQL query with SQLServer when grouping and sorting by fixed version * Defect #22912: Selecting a new filter on Activities should not reset the date range * Defect #22924: Persistent XSS in Markdown parsing * Defect #22925: Persistent XSS in project homepage field * Defect #22926: Persistent XSS in Textile parsing * Defect #22932: "Group by" row from issues listing has the colspan attribute bigger with one than the number of columns from the table * Patch #22427: pt-BR translation for 3.2.stable * Patch #22761: Korean translation for 3.2-stable * Patch #22898: !>image.png! generates invalid HTML * Patch #22911: Error raised when importing issue with Key/Value List custom field == 2016-05-05 v3.2.2 * Defect #5156: Bulk edit form lacks estimated time field * Defect #22105: Responsive layout. Change menu selector in responsive.js. * Defect #22134: HTML markup discrepancy ol and ul at app/views/imports/show.html.erb * Defect #22196: Improve positioning of issue history and changesets on small screens * Defect #22305: Highlighting of required and read-only custom fields broken in Workflow editor * Defect #22331: bundler error: Ruby 1.9.3 = "mime-types-data requires Ruby version >= 2.0." * Defect #22342: When copying issues to a different project, subtasks /w custom fields not copied over * Defect #22354: Sort criteria defined in custom queries are not applied when exporting to CSV * Defect #22583: CSV import delimiter detection broken * Patch #22278: Revision Graph and Table should work with vertical-align: middle * Patch #22296: Add collision option to autocomplete initialization * Patch #22319: Fix German "error_invalid_csv_file_or_settings" typo * Patch #22336: Revision Table does not scroll horizontally on small screens * Patch #22721: Check that the file is actually an image before generating the thumbnail == 2016-03-13 v3.2.1 * Defect #21588: Simplified Chinese "field_cvs_module" translation has problem (Patch #21430) * Defect #21656: Fix Non ASCII attachment filename encoding broken (MOJIBAKE) in Microsoft Edge Explorer * Defect #22072: Private notes get copied without private flag to Duplicate issues * Defect #22127: Issues can be assigned to any user * Defect #21219: Date pickers images for start/due date fields are not shown for issues with subtasks * Defect #21477: Assign to "Anonymous" doesn't make much sense * Defect #21488: Don't use past start date as default due date in the date picker * Defect #21504: IssuePriority.position_name not recalculated every time it should * Defect #21551: Private note flag disappears in issue update conflict * Defect #21843: Nokogiri security issue * Defect #21900: Moving a page with a child raises an error if target wiki contains a page with the same name as the child * Defect #20988: % done field shown on issue show subtree even if deactivated for that tracker * Defect #21263: Wiki lists in the sidebar are broken * Defect #21453: LDAP account creation fails when first name/last name contain non ASCII * Defect #21531: rdm-mailhandler with project-from-subaddress fails * Defect #21534: Backtrace cleaner should not clean plugin paths * Defect #21535: Moving a custom field value in the order switches in the edit view * Defect #21775: Field "Done" from issue subtasks table overlaps the layout in responsive mode, width 400 * Defect #22108: Issues filter for CSV Export are not applied * Defect #22178: Grouping issues by key/value custom field raises error 500 * Feature #21447: Option to show email adresses by default * Patch #21650: Simplified Chinese translation of wiki formating for 2.6-stable * Patch #21881: Russian wiki translation for 2.6-stable * Patch #21898: Catalan wiki translation for 2.6-stable * Patch #21456: Simplified Chinese translation of wiki formating for 3.1-stable * Patch #21686: Russian translation for 3.1-stable * Patch #21687: German translations for 3.1-stable * Patch #21689: Turkish translation for 3.1-stable * Patch #21882: Russian wiki translation for 3.1-stable * Patch #21899: Catalan wiki translation for 3.1-stable * Patch #22131: German translations for 3.1-stable * Patch #22139: Japanese wiki syntax (Markdown) translation for 3.1-stable * Patch #21436: Prevent admins from sending themselves their own password * Patch #21454: Simplified Chinese translation for 3.2.0 * Patch #21487: Larger font for email notifications * Patch #21521: Updated Spanish and Spanish Panama Translations * Patch #21522: Simplified Chinese translation for r14976 * Patch #21527: Russian translation for 3.2.0 * Patch #21593: Add class to contextual edit button that relates to heading on wiki pages * Patch #21620: Turkish translation for 3.2-stable * Patch #21635: German translations for 3.2 * Patch #21740: Fixes misspelled word "RMagcik" in configuration.yml.example * Patch #21847: Let mobile header be fixed * Patch #21867: Add column `estimated_hours` for CSV import. * Patch #21883: Russian wiki translation for 3.2-stable * Patch #22009: Japanese wiki syntax (Markdown) translation for 3.2-stable * Patch #22074: Prevent username from overlapping in mobile menu * Patch #22101: Set max-with to 100% for input, select and textea * Patch #22104: Prevent font scaling in landscape mode on webkit * Patch #22128: Attachment form too wide on small screens * Patch #22132: German translations for 3.2-stable == 2015-12-06 v3.2.0 * Defect #17403: Unknown file size while downloading attachment * Defect #18223: Table renders wrong if a trailing space is after | symbol * Defect #19017: Wiki PDF Export:
     not rendered with monospaced font
    * Defect #19271: Configuration of which versions are shown in version-format custom fields should not affect issue query filter
    * Defect #19304:  tag without attributes in description results in undefined method + for nil:NilClass
    * Defect #19403: Mistake in Polish Translation file.
    * Defect #19657: Can't reorder activities after disabling activities on a project
    * Defect #20117: Activities set as inactive missing in spent time report filter
    * Defect #20296: Double full stops in Japanese
    * Defect #20361: Project copy does not update custom field of version type values
    * Defect #20438: Subject filter doesn't work with non ASCII uppercase symbols
    * Defect #20463: Internal error when moving an issue to a project without selected trackers and active issue tracking
    * Defect #20501: Empty divs when there are no custom fields on the issue form
    * Defect #20543: Mail handler: don't allow override of some attributes by default
    * Defect #20551: Typo "coma" (correct: "comma")
    * Defect #20565: Search and get a 404 page when adding a new project
    * Defect #20583: Setting Category/Version as a required field causes error in projects without categories/versions
    * Defect #20995: Automatic done ratio calculation in issue tree is wrong in some cases
    * Defect #21012: Link custom fields with long URLs are distorting issue detail view
    * Defect #21069: Hard-coded label for hour
    * Defect #21074: When changing the tracker of an existing issue, new custom fields are not initialized with their default value
    * Defect #21175: Unused strings: label_(start|end)_to_(start|end)
    * Defect #21182: Project.uniq.visible raises an SQL error under certain conditions
    * Defect #21226: Some log messages are missing the "MailHandler" prefix
    * Defect #21382: Watcher deletion of inactive user not possible for non-admin users
    * Feature #950: Import Issues from delimited/CSV file
    * Feature #1159: Allow issue description to be searchable as a filter
    * Feature #1561: Totals for estimated/spent time and numeric custom fields on the issue list
    * Feature #1605: Activity page to remember user's selection of activities
    * Feature #1828: Default target version for new issues
    * Feature #3034: Add day numbers to gantt
    * Feature #3398: Link to assigned issues on user profiles
    * Feature #4285: Add cancel button during edition of the wiki
    * Feature #5816: New issue initial status should be settable in workflow
    * Feature #7346: Allow a default version to be set on the command line for incoming emails
    * Feature #8335: Email styles inline
    * Feature #10672: Extend Filesize in the attachments table for files with size > 2147483647 bytes
    * Feature #13429: Include attachment thumbnails in issue history
    * Feature #13946: Add tracker name to Redmine issue link titles
    * Feature #16072: Markdown footnote support
    * Feature #16621: Ability to filter issues blocked by any/no open issues
    * Feature #16941: Do not clear category on project change if category with same exists
    * Feature #17618: Upgrade net-ldap version to 0.12.0
    * Feature #19097: Responsive layout for mobile devices
    * Feature #19885: Raise time entries comments limit to 1024
    * Feature #19886: Raise wiki edits comments limit to 1024
    * Feature #20008: Files upload Restriction by files extensions
    * Feature #20221: Time entry query : column week
    * Feature #20388: Removing attachment after commit transaction
    * Feature #20929: Raise maximum length of LDAP filter
    * Feature #20933: Options for shorter session maximum lifetime
    * Feature #20935: Set autologin cookie as secure by default when using https
    * Feature #20991: Raise maximum length of category name to 60
    * Feature #21042: Check "Hide my email address" by default for new users
    * Feature #21058: Keep track of valid user sessions
    * Feature #21060: Custom field format with possible values stored as records
    * Feature #21148: Remove "Latest Projects" from Home page
    * Feature #21361: Plugins ui tests rake task
    * Patch #20271: Fix for multiple tabs on the same page
    * Patch #20288: Finalize CodeRay 1.1.0 upgrade
    * Patch #20298: "div" tag around revision details
    * Patch #20338: Turkish "activity" translation change
    * Patch #20368: Make corners rounded
    * Patch #20369: Use String#casecmp for case insensitive comparison
    * Patch #20370: Lighter colors for journal details in issue history
    * Patch #20411: Change Japanese translation for "view"
    * Patch #20413: Use a table instead of an unordered list in "Issue tracking" box
    * Patch #20496: Change Japanese translation for "time tracking"
    * Patch #20506: redmine I18n autoload instead of require
    * Patch #20507: ThemesHelper reopening ApplicationHelper is problem with autoloading
    * Patch #20508: Required file lib/redmine/hook.rb is patching autoloaded ApplicationHelper
    * Patch #20589: Activate sudo mode after password based login
    * Patch #20720: Traditional Chinese "issue" translation change
    * Patch #20732: MailHandler: Select project by subaddress (redmine+project@example.com)
    * Patch #20740: Confusing name: test public query called "private"
    * Patch #21033: Polish translation change
    * Patch #21110: Keep anchor (i.e. to a specific issue note) throughout login
    * Patch #21119: Give numbers in query sort criteria consistent width for non-monospaced fonts
    * Patch #21126: Change Japanese translation for "List"
    * Patch #21137: Rescue network level errors with LDAP auth
    * Patch #21159: Hide empty 
    Index: app/views/common/_diff.rhtml =================================================================== --- app/views/common/_diff.rhtml (revision 2111) +++ app/views/common/_diff.rhtml (working copy) @@ -1,4 +1,5 @@ -<% Redmine::UnifiedDiff.new(diff, :type => diff_type).each do |table_file| -%> +<% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%> +<% diff.each do |table_file| -%>
    <% if diff_type == 'sbs' -%> @@ -62,3 +63,5 @@ <% end -%> + +<%= l(:text_diff_truncated) if diff.truncated? %> Index: lang/lt.yml =================================================================== --- config/settings.yml (revision 2094) +++ config/settings.yml (working copy) @@ -61,6 +61,9 @@ feeds_limit: format: int default: 15 +diff_max_lines_displayed: + format: int + default: 1500 enabled_scm: serialized: true default: Index: lib/redmine/unified_diff.rb =================================================================== --- lib/redmine/unified_diff.rb (revision 2110) +++ lib/redmine/unified_diff.rb (working copy) @@ -19,8 +19,11 @@ # Class used to parse unified diffs class UnifiedDiff < Array def initialize(diff, options={}) + options.assert_valid_keys(:type, :max_lines) diff_type = options[:type] || 'inline' + lines = 0 + @truncated = false diff_table = DiffTable.new(diff_type) diff.each do |line| if line =~ /^(---|\+\+\+) (.*)$/ @@ -28,10 +31,17 @@ diff_table = DiffTable.new(diff_type) end diff_table.add_line line + lines += 1 + if options[:max_lines] && lines > options[:max_lines] + @truncated = true + break + end end self << diff_table unless diff_table.empty? self end + + def truncated?; @truncated; end end # Class that represents a file diff redmine-6.0.5/test/fixtures/documents.yml000066400000000000000000000007021500112024600205070ustar00rootroot00000000000000documents_001: created_on: 2007-01-27 15:08:27 +01:00 project_id: 1 title: "Test document" id: 1 description: "Document description" category_id: 1 documents_002: created_on: 2007-02-12 15:08:27 +01:00 project_id: 1 title: "An other document" id: 2 description: "" category_id: 1 documents_003: created_on: 2007-03-05 15:08:27 +01:00 project_id: 1 title: "An other document 2" id: 3 description: "" category_id: 3 redmine-6.0.5/test/fixtures/email_addresses.yml000066400000000000000000000025311500112024600216340ustar00rootroot00000000000000--- email_address_001: id: 1 user_id: 1 address: admin@somenet.foo is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_002: id: 2 user_id: 2 address: jsmith@somenet.foo is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_003: id: 3 user_id: 3 address: dlopper@somenet.foo is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_004: id: 4 user_id: 4 address: rhill@somenet.foo is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_005: id: 5 user_id: 5 address: dlopper2@somenet.foo is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_007: id: 7 user_id: 7 address: someone@foo.bar is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_008: id: 8 user_id: 8 address: miscuser8@foo.bar is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 email_address_009: id: 9 user_id: 9 address: miscuser9@foo.bar is_default: true created_on: 2006-07-19 19:34:07 +02:00 updated_on: 2006-07-19 19:34:07 +02:00 redmine-6.0.5/test/fixtures/enabled_modules.yml000066400000000000000000000032021500112024600216260ustar00rootroot00000000000000--- enabled_modules_001: name: issue_tracking project_id: 1 id: 1 enabled_modules_002: name: time_tracking project_id: 1 id: 2 enabled_modules_003: name: news project_id: 1 id: 3 enabled_modules_004: name: documents project_id: 1 id: 4 enabled_modules_005: name: files project_id: 1 id: 5 enabled_modules_006: name: wiki project_id: 1 id: 6 enabled_modules_007: name: repository project_id: 1 id: 7 enabled_modules_008: name: boards project_id: 1 id: 8 enabled_modules_009: name: repository project_id: 3 id: 9 enabled_modules_010: name: wiki project_id: 3 id: 10 enabled_modules_011: name: issue_tracking project_id: 2 id: 11 enabled_modules_012: name: time_tracking project_id: 3 id: 12 enabled_modules_013: name: issue_tracking project_id: 3 id: 13 enabled_modules_014: name: issue_tracking project_id: 5 id: 14 enabled_modules_015: name: wiki project_id: 2 id: 15 enabled_modules_016: name: boards project_id: 2 id: 16 enabled_modules_017: name: calendar project_id: 1 id: 17 enabled_modules_018: name: gantt project_id: 1 id: 18 enabled_modules_019: name: calendar project_id: 2 id: 19 enabled_modules_020: name: gantt project_id: 2 id: 20 enabled_modules_021: name: calendar project_id: 3 id: 21 enabled_modules_022: name: gantt project_id: 3 id: 22 enabled_modules_023: name: calendar project_id: 5 id: 23 enabled_modules_024: name: gantt project_id: 5 id: 24 enabled_modules_025: name: news project_id: 2 id: 25 enabled_modules_026: name: repository project_id: 2 id: 26 redmine-6.0.5/test/fixtures/encoding/000077500000000000000000000000001500112024600175525ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/encoding/iso-8859-1.txt000066400000000000000000000000331500112024600216520ustar00rootroot00000000000000Texte encodé en ISO-8859-1.redmine-6.0.5/test/fixtures/enumerations.yml000066400000000000000000000034131500112024600212210ustar00rootroot00000000000000--- enumerations_001: name: Uncategorized id: 1 type: DocumentCategory active: true position: 1 enumerations_002: name: User documentation id: 2 type: DocumentCategory active: true position: 2 enumerations_003: name: Technical documentation id: 3 type: DocumentCategory active: true position: 3 enumerations_004: name: Low id: 4 type: IssuePriority active: true position: 1 position_name: lowest enumerations_005: name: Normal id: 5 type: IssuePriority is_default: true active: true position: 2 position_name: default enumerations_006: name: High id: 6 type: IssuePriority active: true position: 3 position_name: high3 enumerations_007: name: Urgent id: 7 type: IssuePriority active: true position: 4 position_name: high2 enumerations_008: name: Immediate id: 8 type: IssuePriority active: true position: 5 position_name: highest enumerations_009: name: Design id: 9 type: TimeEntryActivity position: 1 active: true enumerations_010: name: Development id: 10 type: TimeEntryActivity position: 2 is_default: true active: true enumerations_011: name: QA id: 11 type: TimeEntryActivity position: 3 active: true enumerations_012: name: Default Enumeration id: 12 type: Enumeration is_default: true active: true position: 1 enumerations_013: name: Another Enumeration id: 13 type: Enumeration active: true position: 2 enumerations_014: name: Inactive Activity id: 14 type: TimeEntryActivity position: 4 active: false enumerations_015: name: Inactive Priority id: 15 type: IssuePriority position: 6 active: false enumerations_016: name: Inactive Document Category id: 16 type: DocumentCategory active: false position: 4 redmine-6.0.5/test/fixtures/files/000077500000000000000000000000001500112024600170665ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2006/000077500000000000000000000000001500112024600174555ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2006/07/000077500000000000000000000000001500112024600177035ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2006/07/060719210727_archive.zip000066400000000000000000000002351500112024600233610ustar00rootroot00000000000000PK4mR6{]\#$ testfile.txt+ÉÈ,V¢D…’ÔŠ…´ÌœT…´ü"…Ò‚œüÄ `qI1PK4mR6{]\#$  ¶testfile.txtPK:Mredmine-6.0.5/test/fixtures/files/2006/07/060719210727_changeset_iso8859-1.diff000066400000000000000000000012561500112024600253610ustar00rootroot00000000000000Index: trunk/app/controllers/issues_controller.rb =================================================================== --- trunk/app/controllers/issues_controller.rb (révision 1483) +++ trunk/app/controllers/issues_controller.rb (révision 1484) @@ -149,7 +149,7 @@ attach_files(@issue, params[:attachments]) flash[:notice] = 'Demande créée avec succès' Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') - redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project + redirect_to :controller => 'issues', :action => 'show', :id => @issue return end end redmine-6.0.5/test/fixtures/files/2006/07/060719210727_changeset_utf8.diff000066400000000000000000000013001500112024600247470ustar00rootroot00000000000000Index: trunk/app/controllers/issues_controller.rb =================================================================== --- trunk/app/controllers/issues_controller.rb (révision 1483) +++ trunk/app/controllers/issues_controller.rb (révision 1484) @@ -149,7 +149,7 @@ attach_files(@issue, params[:attachments]) flash[:notice] = 'Demande créée avec succès' Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') - redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project + redirect_to :controller => 'issues', :action => 'show', :id => @issue return end end redmine-6.0.5/test/fixtures/files/2006/07/060719210727_source.rb000066400000000000000000000002561500112024600230440ustar00rootroot00000000000000# frozen_string_literal: true # The Greeter class class Greeter def initialize(name) @name = name.capitalize end def salute puts "Hello #{@name}!" end end redmine-6.0.5/test/fixtures/files/2010/000077500000000000000000000000001500112024600174505ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2010/11/000077500000000000000000000000001500112024600176715ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2010/11/101123161450_testfile_1.png000066400000000000000000000051361500112024600237330ustar00rootroot00000000000000‰PNG  IHDR,ÈRßÜUsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ  ëù‰é ÞIDATxÚíÝkHSÿÇñf‘ÊV-Ë¥]Aéf%ë*ZTTt!Ê¢ ô¤2(¢çY=*{DtE#ºA/…DZB+-+ l•] ÓZ›vµó{ðÿýâ?·yYË[ïùÝÙÙÙ×ñfgb†!èB™ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚€`Á‚€`Á‚€`µg©©© ñøó‚ ‚ €Î(Œ)𯾾^eeeª¬¬TUU•jjjd2™¥¸¸8%&&*,,xSèt:uÿþ}UTTÈétÊív«k×®ŠˆˆPïÞ½«!C†(::š?þJ!†aí~#ƒpìPKžf~~¾<¨ÂÂB}øðÁïrf³Y)))Ú¶m›’’’Ú®oß¾éðáÃ:~ü¸n޼٬팉‰Ñ¤I“4þ|¥¥¥)22²Mç h5F é·šÃn·“'OhýsçÎ5ªªªZô¼Š‹‹!C†üÖóÚ±cG›ÍÐÚø ë_ÙÙÙš2eŠŠ‹‹ºÿÅ‹5~üx=xð YËhÆŒzòä “t¦Ï°Fõë߇Cn·ÛïíÈÊÊÒ¦M›|îò͘1CãÆS¿~ýd2™ät:åp8tõêUÙívåŸ?®Y³f©´´T}ûöõûx555JOO×çÏŸ½n9r¤RSS5|øpY,uëÖM.—K>|УGT^^®Û·o«¾¾¾Íæ `—°™RRR‚ºûRTTd„……y¬¯gÏžÆþýûÚÚÚFï[RRbÄÇÇ{mÏôéÓ½ßÎ;½îmäææ6k›«««cÇŽ6›ÍÈÌÌlÕùÚôã¡¿9Xn·Û°Z­ë:t¨QYYÙìuÔÕÕS§NõÚ¦ .ø½Ïøñã½–¿qãF@Ï¡©¨,ðV'qðàA½yóæ×ï‘‘‘ÊÏÏWLLL³×®sçÎÉb±xŒïÚµËï}ž>}êµh³Ùzì&à¯ñ×ëû÷ïÚ³gÇØöíÛ×âuY,eddxŒ•””èíÛ·>—ÿôé“Çï½{÷æ•,ÿJJJôêÕ«_¿‡„„híÚµ¯oîܹ^c×®]ó¹lTT”Çïååår¹\¼‚å[ØÄÅÅ©ÿþ¯oðàÁ^c¥¥¥>—8q¢×;®eË–5z*€¿ø«9 ·z÷îFÔǨªªò9¾fÍ?ÞcìÒ¥KoÞ<-\¸PgÏžõÿøñ£²²²”••%“É$›Í¦ &())I“'O–Ùlæ v ÿFþbL¾ ýω'´råJ¿·»\.åççkÇŽJKK“Åb‘ÍfÓ¾}ûü¾sV'ÕÖŸ…‡‡ëèÑ£*,,TjjªBCÿSÔ×׫¤¤D›7oVll¬¶lÙâu;@°:©†Ç/Ùl6ý{ mÐ~®^½Úäv$''ëÊ•+ª¬¬Ô´lÙ2 8°Éwn{÷îÕØ±cUYYÉ««³kxhAMMM›nÏ€´~ýzeggëÅ‹zýúµN:¥ 6øüHIª¨¨PZZš¾}ûÆ+«3kx¼W¯^5ú…âÖfµZµxñbeeeÉápÈn·kéÒ¥^Ë=|øP‡â• ‚Õ™5<ÊívëÎ;ív{uòäIíÞ½Ûë¶3gÎðJÁj|›È;£™3gz>}ºÝ?ÿmÛ¶yº¦¼¼üÏ@°`2™¼Æùß²iÓ¦©W¯^ch•Ã~ëªaÆyŒ9Î?>_Á @ÃÈHÿ;q^K…‡‡këÖ­c.—Kéééúùóg»žƒ†_ªîÓ§ÏŸ/€` >>Þk,/// ueddx}øž››«+V¨®®. u~ýúU‡Rff¦ße6nÜð©‘/]º$‡Ãá1ÖØDƒ9_@›ëh'ð²Ûí^'¤3›ÍFNNŽñõëׯïúõëF·nݼÖ9bÄ#''ÇøñãG“먯¯7ŠŠŠŒŒŒ #::Úd,_¾¼Ñ‹j„††sæÌ1Ž9bÔÔÔ4ë1Ž;f˜L&¯mÍÎÎnµùÚR‡¸ÌWC >/öеkWÅÄÄ(22ÒëRWwïÞõ»¾£GjõêÕ>/mÕ·o_M›6M‰‰‰ŠŠŠ’ÙlVmm­>~ü¨—/_ª¬¬Leee^GÎ/_¾\'Nœðùx ·-,,L 3fŒFŽ©^½z©Gúñ㇪ªªôðáCåååù­îæ®f¼;gÏ4½~˜W B9A2#Šy6ƒh‹¿2Åe‘_»ÏýQ°€°"¿|¿f˜‘gžÝý>;oŸg÷Ùç1†aF€†Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á@°€`Á@°`x³0=«‹ˆðeÚ¯]å‡üñ Û¼¹ÇÛÖVµ>¬–Ü\yÊËåýþ{.—(“ͦ€ dž2E–ÄDYæÍ“9>^&“iО;@° Ij=rDîÌLy««}oôxd45ÉóÃò”•©åßÿ–$™uÏ_0x X#Uðºu½Þîýáµ~òIŸçïMàO(`ܸ¾¯¸Y³ºÞüÁr¿ü²äõþºß?i’Ìññ °Ûe´µÉ¨«“çôiy/\øu‹ìúõ!{î@_™ Ã0ÿ´•–êÆ’%~ïòtÜí²åçË2gÎm=Ó©úäd©©é§¨Í«°¿üE–ÄÄî£såŠZrrÔ¼¿ŒÚZÝ[V6hÏ` ë.×ô÷¿·ÇÊüÛßÊúÉ'2÷8Àøñ ÉÈPHF†<çÎ1€öø”piýïÛÿò‡?ô«®Ìqq ÷òå_WlL ‚…á¼6]^§“ñÁÂðÕq·®éÿñóûYÁ°´lYû¿=ÿûŸn¤¤¨ùƒ~:`ø”p˜¸¹m[¿ŽÃ ÿë_}¦…¼ü²š÷ï—÷üùöh¹ÿ{¹-™ããe™5K–™3eIJRÀÔ©ŽlFŽÃº yVõt_žêj5¬]+ω½¯ø1côä“ ÎÈåÁý¹ìBæ˜Ù þÏöz ªQ[«æýK7æÏ—{Ó&-- Ø%Dß Ä‘îí[Of³‚W­RðªUò^¾¬Ö£GÕvü¸<j«¨Üîå2Ô¼c‡¼ÕÕúMv¶Lü¶°0T+8:ZÁ+W*üÏ–-'GN§¬yy ÎÈ‚‚ÚçkÍËSó®] †“Ù¬À¹sþ·¿ÉöÅ2Û~[Óöí †éû>¨°­[Û÷ž=+oM ‚…á)°Ã'}’äýþ{ Ãt±Ë¤ûó…i€`aPµUTtx5(`üx wž{ýzyúñ¥g£µU7;¼‡eIN–Éje A°pç5ïÞ­úÙ³åZ³F-ÿùŒ††ž·¬Nž”kÅ µ·O ݸ‘AİƣÃD¿K(uÿ}ByĈÁÙŒ¼é€`Á@°€`ÀݬÔÔT™L¦N?`¼@°€`Á@°€`Á0q¶†^x<•——Ëétª¦¦Fuuu²Z­ŠŒŒTll¬’’’d± ÜÖ××ëÔ©Sª¬¬T}}½¨°°03F'NÔäÉ“ÅÊÁ]iDœ­a ŽêÏÓÌËËÓŽ;TXX¨k×®õ8ŸÍfSJJŠ6mÚ¤ääd¿WKK‹víÚ¥÷Þ{OGíÓ㌉‰Ñ¼yó´|ùr¥¥¥)<<|HÇ 4Æ é¶ú¢´´Ô˜?¾_Ë_ºt©QSSÓ¯çU\\lLž<ù¶ž×–-[†l¼€ÁÆ{X?ËÎÎÖ‚ TÜáçýñÙgŸiΜ9úæ›oú4~~¾/^¬³gÏ2øÀhzkÆŒíÿ®ªªRC—‹+t¼ÝYYYzíµ×ºÝå[¼x±fÏž­ûî»OV«UõõõªªªRAAJKK;ÍÿÝwßéÑGUYY™Æõr~öºº:¥§§ëæÍ›>·MŸ>]©©©š:uªìv»‚‚‚är¹tíÚ59sF:~ü¸<ÏÀ.a¥¤¤ èîKQQ‘a±X:-ïÞ{ï5¶mÛf¸Ýî^ÿ¶¤¤Äˆ÷y<<òH¯÷úë¯ûüMTT”‘››Û§Ç\[[kìÙ³Çp8ÆÖ­[u¼€!}{ènVCCƒÝiYS¦L1œNgŸ—ÑØØh<üðÃ>éÓO?íñoæÌ™ã3ÿW_}å×s¸UT xk”رc‡._¾Üþ{xx¸òòòÓçe„††êã?–Ýnï4ý7ÞèñoÎ;ç³èp8üzaaaì&à®q׫µµUo½õV§i›7oVlll¿—e·Û•™™ÙiZII‰®\¹Òíü7nÜèôû˜1cx%«g%%%ºxñbûï&“I~/oéÒ¥>ÓŽ9Òí¼‘‘‘~¯¨¨ËåâÕ¬îuIll¬Æï÷òâââ|¦•••u;ïC=ä³Åµzõê^Rp5§ëñVW¯^Ubbâ€ÞGMMM·Ó_|ñEž &襗^Rvv¶ª««uéÒ%½ÿþûzå•WºýR’*++•––¦––^É X£Yדà]¼x±×/¶èèh=ýôÓÊÊÊRUU•JKKõì³ÏúÌwúôiíܹ“W2ÖhÖõX¨††}ýõ×Ãöñ&%%iÿþýzóÍ7}nûè£x%ƒ` GÝ›äÏ–Ñ’%K|¦}øá‡ÃþùoÚ´ÉçÔ5w|¼‚å«Õê3ÍŸOË.\¨ˆˆˆNÓ¶oß>(‡;ÜÖ Ð<ÐiZ}}ý/€`ù¡kd¤ŸNœ×_¡¡¡Ú¸qc§i.—Kéééòz½Ãz º~©zìØ±w|¼‚凸øxŸi‡ökY™™™>o¾çææê¹çžScc£_ËlnnÖÎ;µuëÖçyõÕWý>5ò¡C‡TUUÕiZogÈñ†ÜH;Wii©Ï él6›±oß>£¹¹¹ßËûòË/   ŸeN›6ÍØ·oŸÑÖÖvËex<£¨¨ÈÈÌÌ4¢¢¢ IÆš5kz½¨F@@€ñøãï¾û®QWW×§ûسgaµZ}kvvö 0”FÄe¾ºJHHèöbЉ‰Qxx¸Ï¥®Nœ8ÑãòvïÞ­^x¡ÛK[7N .TRR’"##e³Ùäv»uýúu]¸pAååå*//÷9r~Íš5Ú»wo·÷×õ±Y,%$$hæÌ™š>}º"""tÏ=÷¨­­M555:}ú´>ÜíA¢ ,Б#Gz=R~ Ç ` « ³Ù< —­ÊÉÉ1ìvû€\"«/[Xño\ºtiHÆ àÉ}´hÑ"8p ×+Óô×c=¦òòr=óÌ3·ü^̘߭1C+V¬èñöÛ½r³ÉdÒÚµkU\\¬èèè!/`(ŒÈ]Â_455éàÁƒÊÏÏשS§tá¹\.ݼyÓg÷®?O³²²RÛ¶mS~~¾¾ýöÛ[Î"‡Ã¡””-[¶L ·ÚªUii©rssUTT¤cÇŽõ錣QQQZ¹r¥Ö­[ç×¹»îÔxk˜¸zõªÊÊÊôã?ª¶¶V “ÕjUtt´¦NªØØX™Íf¿ïÃëõêüù󪪪RuuµêëëÕØØ¨Ùl6EGG+!!A“&Mb…€`1 F.U€`Á@°€`Á@°€`Á@°€`Á@°€`Á@°€`Á@°€`Á@°€`Á@°€`Á@°€` X ‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚ Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á‚€`Á@°€`Á@°€`Á@°€`Á@°€`@ÿýb¨ áùÃ+IEND®B`‚redmine-6.0.5/test/fixtures/files/2019/000077500000000000000000000000001500112024600174615ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2019/04/000077500000000000000000000000001500112024600177045ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2019/04/190430092344_redmine_logo.ai.unknown000066400000000000000000000116021500112024600256660ustar00rootroot00000000000000%!PS-Adobe-3.0 %%Creator: Adobe Fireworks %%DocumentNeededResources: procset Adobe_level2_AI5 1.0 0 %%+ procset Adobe_packedarray 2.0 0 %%+ procset Adobe_cmykcolor 1.1 0 %%+ procset Adobe_cshow 1.1 0 %%+ procset Adobe_customcolor 1.0 0 %%+ procset Adobe_typography_AI5 1.0 0 %%+ procset Adobe_Illustrator_AI5 1.0 0 %%BoundingBox:0 0 183 94 %AI3_TemplateBox: 0 0 183 94 %%PageOrigin:0 0 %AI5_FileFormat 3 %AI3_ColorUsage: Color %%DocumentProcessColors: Cyan Magenta Yellow Black %%EndComments %%BeginProlog %%EndProlog %%BeginSetup Adobe_packedarray /initialize get exec Adobe_cmykcolor /initialize get exec Adobe_cshow /initialize get exec Adobe_customcolor /initialize get exec Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec [ 39/quotesingle 96/grave 130/quotesinglbase 131/florin 132/quotedblbase 133/ellipsis 134/dagger 135/daggerdbl 136/circumflex 137/perthousand 139/guilsinglleft 140/OE 145/quoteleft 146/quoteright 147/quotedblleft 148/quotedblright 149/bullet 150/endash 151/emdash 152/tilde 155/guilsinglright 156/oe 157/dotlessi 159/Ydieresis 164/currency 166/brokenbar 168/dieresis 169/copyright 170/ordfeminine 172/logicalnot 174/registered 175/macron 176/ring 177/plusminus 178/twosuperior 179/threesuperior 180/acute 181/mu 183/periodcentered 184/cedilla 185/onesuperior 186/ordmasculine 188/onequarter 189/onehalf 190/threequarters 192/Agrave 193/Aacute 194/Acircumflex 195/Atilde 196/Adieresis 197/Aring 198/AE 199/Ccedilla 200/Egrave 201/Eacute 202/Ecircumflex 203/Edieresis 204/Igrave 205/Iacute 206/Icircumflex 207/Idieresis 208/Eth 209/Ntilde 210/Ograve 211/Oacute 212/Ocircumflex 213/Otilde 214/Odieresis 215/multiply 216/Oslash 217/Ugrave 218/Uacute 219/Ucircumflex 220/Udieresis 221/Yacute 222/Thorn 223/germandbls 224/agrave 225/aacute 226/acircumflex 227/atilde 228/adieresis 229/aring 230/ae 231/ccedilla 232/egrave 233/eacute 234/ecircumflex 235/edieresis 236/igrave 237/iacute 238/icircumflex 239/idieresis 240/eth 241/ntilde 242/ograve 243/oacute 244/ocircumflex 245/otilde 246/odieresis 247/divide 248/oslash 249/ugrave 250/uacute 251/ucircumflex 252/udieresis 253/yacute 254/thorn 255/ydieresis TE %AI3_BeginEncoding: _Delicious-Bold-Bold Delicious-Bold-Bold [/_Delicious-Bold-Bold/Delicious-Bold-Bold 0 0 0 TZ %AI3_EndEncoding TrueType %%EndSetup 1 1 1 1 0 0 0 79 128 255 Lb (Ebene 1) Ln 0.000 0.000 0.000 Xa 1 XR 44.00 44.80 m 49.60 44.80 l 50.00 49.60 l 44.80 50.80 l 44.00 44.80 l f 0.000 0.000 0.000 Xa 1 XR 45.00 51.60 m 50.00 50.40 l 51.20 54.60 l 47.00 56.80 l 45.00 51.60 l f 0.000 0.000 0.000 Xa 1 XR 47.40 57.60 m 51.40 55.40 l 54.60 57.60 l 51.60 61.00 l 47.40 57.60 l f 0.000 0.000 0.000 Xa 1 XR 69.80 44.80 m 64.20 44.80 l 63.80 49.60 l 69.00 50.80 l 69.80 44.80 l f 0.000 0.000 0.000 Xa 1 XR 68.80 51.60 m 63.80 50.40 l 62.60 54.60 l 66.80 56.80 l 68.80 51.60 l f 0.000 0.000 0.000 Xa 1 XR 66.40 57.60 m 62.40 55.40 l 59.20 57.60 l 62.20 61.00 l 66.40 57.60 l f 0.000 0.000 0.000 Xa 1 XR 52.60 61.60 m 55.60 58.00 l 58.40 58.00 l 61.00 61.60 l 58.40 62.40 l 55.53 62.40 l 52.60 61.60 l f 1 To 1 0 0 1 74 43 0.000000 Tp 74.80 43.20 m 141.58 43.20 l 141.58 34.56 l 74.80 34.56 l 74.80 43.20 l n TP 0 -14.00 Td 0.200 0.200 0.200 Xa /_Delicious-Bold-Bold 14.00 Tf 0.000000 Ts 100.000000 100.0 Tz 1 0 Tk 0.000000 Tt 0 Ta 0.200 0.200 0.200 Xa 0 Tr (Flexible Project Management) Tj TO 1 To 1 0 0 1 74 60 0.000000 Tp 74.00 60.00 m 139.29 60.00 l 139.29 36.48 l 74.00 36.48 l 74.00 60.00 l n TP 0 -45.00 Td 0.604 0.027 0.000 Xa /_Delicious-Bold-Bold 45.00 Tf 0.000000 Ts 100.000000 100.0 Tz 1 0 Tk 0.000000 Tt 0 Ta 0.604 0.027 0.000 Xa 0 Tr (RED) Tj /_Delicious-Bold-Bold 45.00 Tf 0.000000 Ts 100.000000 100.0 Tz 1 0 Tk 0.000000 Tt 0 Ta 0.753 0.106 0.102 Xa 0 Tr (MINE) Tj TO 0.604 0.027 0.000 Xa 1 XR 44.00 44.80 m 49.60 44.80 l 50.00 49.60 l 44.80 50.80 l 44.00 44.80 l f 0.706 0.055 0.059 Xa 1 XR 45.00 51.60 m 50.00 50.40 l 51.20 54.60 l 47.00 56.80 l 45.00 51.60 l f 0.753 0.106 0.102 Xa 1 XR 47.40 57.60 m 51.40 55.40 l 54.60 57.60 l 51.60 61.00 l 47.40 57.60 l f 0.604 0.027 0.000 Xa 1 XR 69.80 44.80 m 64.20 44.80 l 63.80 49.60 l 69.00 50.80 l 69.80 44.80 l f 0.706 0.055 0.059 Xa 1 XR 68.80 51.60 m 63.80 50.40 l 62.60 54.60 l 66.80 56.80 l 68.80 51.60 l f 0.753 0.106 0.102 Xa 1 XR 66.40 57.60 m 62.40 55.40 l 59.20 57.60 l 62.20 61.00 l 66.40 57.60 l f 0.753 0.106 0.102 Xa 1 XR 52.60 61.60 m 55.60 58.00 l 58.40 58.00 l 61.00 61.60 l 58.40 62.40 l 55.53 62.40 l 52.60 61.60 l f LB %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_typography_AI5 /terminate get exec Adobe_customcolor /terminate get exec Adobe_cshow /terminate get exec Adobe_cmykcolor /terminate get exec Adobe_packedarray /terminate get exec %%EOF redmine-6.0.5/test/fixtures/files/2019/05/000077500000000000000000000000001500112024600177055ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/2019/05/190511141819_ecookbook-gantt.pdf000066400000000000000000000756041500112024600250120ustar00rootroot00000000000000%PDF-1.7 %âãÏÓ 9 0 obj << /Length1 1372 /Filter /FlateDecode /Length 913 >> stream xœ…S]hW>wþv㚟5¡†®•;]ŸœY7+%hhéÝ ¤ËÆ´3a³M6Ù”ÝdY·[ÓA "AúCÛBi¡rW,øSè‹…¾´%%UÄA}_”Ò²fûÝÙ1õÉÞË9ßw¾sî=sÏ#¢ •Þ‹ïþûèo0?b9ÓõײÆ"Ö¼c¶2W~¸zãðà_æJK³ß^¹z—H¤\±ŸyðõMø•ð`„qWÙ ü™Œ/–kÇØ#Ú| X+-Nçe°Ü/XΫ°_æ ùraÛƒŸßÁž'+ÕB¥wyò„áDŒ]fçH‡ÿŒr•âtV¾[o³Û”`8’Ò5EíÎÖ•V–ž´õ•<êÁÑqNIâ­–Ê[¨E½Çì)b?Ýþ‹¼¡lVÎ+Ò( Ó(E‡h sHÅsœ&iR-¨wDìÌ8âPÝ}½_–óšëq»|M°Þ]ý1ÁlÎoÄË+_FÎFÓùw¹ÃgÞÙ1M7bº1¡Ø#Y'u͘Píù~.’ÇIx4[¦4£æέȯn:çI䉚B·‘®»žÃu±nwæ&b°/³eœŠ/çrAH°;<*¹Aí-a¾7“W‡û`kê*j P‚. !¬†¸/(ÞÐ÷™Æ…rý¢¢šÕИu‘Úf³h ÁÂfX7Ã&[[_d£ëYH]mÆÕÕýÍHö{eïÏ¿¿Õ¤ûÕÇJ·zO~Ýkÿ<}7‡×wSÚ‹òþ¥ÚûüLÞÈúMß7‡›_S>ÿß`í>òF®½ûŽf¨ŠwÈ4zÝ¡hõ‘–jXm›Ñv ¶­P}âÛ* ¢OÚ¶ÍußÖét]Û6h;ÛD‡©Hót”¸ÿÌcÍÒ"- /§÷=ï4žOý5*P™*PT¡­‚-Ñ’ç]€¿®„Y@%»À€ŽÃ³èe{Š™´oc“Eid)`Ž!VæÈžƒ¶äåÏ Gš†þ'fˆ0ØsÀ›ÏW¿ »Š÷¼W'÷ãžC—Xëˆ`Æi0¶â6Ò²±Eþ–¾,ŒîKhõœCBã)¡ZD§.h§Ë€à €@ŸtžºB«“;dØ’6IgÇñ–ïd"ä'ï„*´E±jº¸Yê:ÕOiƒé’LÈ‹ô™nÉt=Ëô Iwr†¥ çû/ó2à endstream endobj 8 0 obj << /Type /FontDescriptor /FontName /AAAAAB+FreeSans /Ascent 1000 /Descent -300 /CapHeight 22 /Flags 32 /FontBBox [-958 -550 1632 1050] /ItalicAngle 0 /StemV 70 /MissingWidth 600 /FontFile2 9 0 R >> endobj 10 0 obj << /Length 5770 /Filter /FlateDecode >> stream xœíÜ”%Y¶0à}öñ¹U·lÛ¶mÛ¶mÛ¶mÛ¶mÛ¶_t®œzÓ35Ó˜þ»×ÿfkí8ŠÈ{ãVVf$Àˆƒ 4°àÀA (ø!‡BAha!„‡"AdˆQ!D‡bAlˆq!ćAbHI!$‡RAjHi!¤‡ 2AfÈY!d‡rAnÈy!ä‡P Aa(E¡‡PJAi(e¡”‡ P*Ae¨U¡T‡ÿéÉ{jB-¨ u .ÔƒúÐB#h M )4ƒæÐZB+h m -´ƒöÐ:B'è ] +tƒîÐzB/è } /ôƒþ0  C`( ƒá0FÂ( c`,Œƒñ0&Â$˜ S`*Lƒé0fÂ,˜ s`.̃ù°Â"X K`),ƒå°VÂ*X k`-¬ƒõ°6Â&Ø [`+lƒí°vÂ.Ø {`/ìƒýpÂ!8 Gà(ƒãpNÂ)8 gà,œƒóp.Â%¸ Wà*\ƒëpnÂ-¸ wà.܃ûðÂ#x Oà)<ƒçð^Â+x oà-¼ƒ÷ð>Â'ø _à+|cÀCÆ™`’)¦™a–9æcAXPægÁXp‚…d¡Xh†…eáXxEd‘Xd…EeÑXtƒÅd±Xl‡ÅeñX|–€%d‰Xb–„%eÉXr–‚¥d©Xj–†¥eéXz–ed™Xf–…eeÙXv–ƒåd¹Xn–‡åeùX~V€d…XaV„eÅXqV‚•d¥XiV†•eåXyVUd•XeV…UeÕXuVƒÕdµXmV‡ÕeõX}Ö€5dXcÖ„5eÍXsÖ‚µd­XkÖ†µeíX{ÖudXgÖå§—ëʺ±î¬ëÉz±Þ¬ëËú±þlȱÁlʆ±álÉF±Ñl ËÆ±ñl›È&±Él ›Ê¦±él›Éf±Ùl›Ëæ±ùl[ȱÅl [Ê–±ål[ÉV±Õl·âZ¶Ž­gØF¶‰mf[ØV¶mg;ØN¶‹íf{Ø^¶ígØAvˆfGØQvŒg'ØIvŠfgØYvŽgØEv‰]fWØÕ¿½ Ø5vÝ`7Ù-v›ÝawÙ=vŸ=`Ù#ö˜=aO{=û­o/öœ½`/Ù+öš½aoÙ;öž}`Ù'ö™}a_Ù7dˆÈQ D… Ztèà ý ƒc ‰¡04†Á°ÃcŒˆ‘02FÁ¨ £c Œ‰±06ÆÁ¸ãcLˆ‰01&Á¤˜ “c L‰©05¦Á´˜Óc̈™03fÁ¬˜ ³c̉¹07æÁ¼˜óc,ˆ…°0Á¢X ‹c ,‰¥°4–Á²XËc¬ˆ•°2VÁªX «c ¬‰µ°6ÖÁºXëclˆ°16Á¦Ø ›c l‰­°5¶Á¶ØÛc숰3vÁ®Ø »c쉽°7öÁ¾Øû㈃p0Á¡8 ‡ã‰£p4ŽÁ±8Ç㜈“p2NÁ©8 §ã œ‰³p6ÎÁ¹8çã\ˆ‹p1.Á¥¸ —ã \‰«p5®Áµ¸×ã܈›p3nÁ­¸ ·ã܉»p7îÁ½¸÷ã<ˆ‡ð0Á£x ã <‰§ð4žÁ³xÏ㼈—ð2^Á«x ¯ã ¼‰·ð6ÞÁ»xïã|ˆð1>Á§ø Ÿã |‰¯ð5¾Á·øßãüˆŸð3~Á¯øg9ç‚K®¸æ†[î¸áA¹ŸûÛëˆç!¾×C–¡þ÷uÆCó0<,ÇÃó<¢×Žä¥È< Ê£ñè<ÉcñØ<Ëãñø<OÈñÄ< OÊ“y=“ó<%OÅSó4<-OÇÓó <#ÏÄ3ó,<+ÏÆ³ó<'ÏÅsó<˜áCù0>œà#ù(>šácù8>žOàù$>™OáSù4>Ïà3ù,>›Ïásù<>Ÿ/à ù"¾˜/áKù2¾œ¯à+ù*¾š¯ákù:¾žoàù&¾™oá[ù6¾ïà;ù.¾›ïùU×`/ß÷›¯Û~~€䇸a~„åÇøq~‚Ÿä§øi~†Ÿåçøy~_ä—øe~…_å×øu~ƒßä·øm~‡ßå÷ø}þ€?äøcþ„?åÏøsþ‚¿ä¯økþ†¿åïø{þäŸøgþ…åß&Pp!„Jha„NøDTøE0\„!E(Z„aE8^DE$YDQE4]Ä1E,[ÄqE<_$ E"‘X$IE2‘\¤øé¼DJ‘ê·^‹ÿŒH-Òˆ´"H/2ˆŒ"“È,²ˆ¬"›È.rˆœ"—È-òˆ¼"ŸÈ/ ˆ‚¢(,Šˆ¢¢˜(.Jˆ’¢”(-ʈ²¢œ(/*ÌWQT•EQUTÕ½v QSÔµEQWÔõEÑP4EÑT4ÍE ÑR´­EÑV´íEÑQtEÑUtÝEÑSô½EÑWôóæë/üg?P ƒÅ1T ÃÅ1RŒò¢£Å1VŒãÅ1QL“Å”1~ª˜&¦‹b¦˜%f‹9b®˜'æ‹b¡X$‹%b©X&–‹b¥X%V‹5b­X'ÖÿÝø b£Ø$6‹-Ü9‘ÿ;ÄV±Ml;ÄN±Kì{Ä^±OìÄAqÈ;zXGÅ1q\œ'Å)qZœgÅ9q^\Å%qY\WÅ5q]Ü7Å-q[ÜwÅ=q_<œÿ¡x$‹'â©x&ž‹â¥x%^‹7â­x'Þ‹â£ø$>‹/â«ø&A2‰’Kñ×^Bþ{H)•ÔÒH+ôÉ 2¨ôË`2¸ !CÊP2´ #ÃÊp2¼Œ #ÊH2²Œ"£Êh2ºŒ!cÊX2¶Œ#ãÊx2¾L ÊD2±L"“Êd2¹L!SÊT2µL#ÓÊt2½Ì 3ÊL2³Ìâ­™Uf“Ùe™Sæ’¹e™Wæ“ùeYP’…eYT“Ž~%dIYJ––edYY.`·åeYQV’•eYUV“Õe YSÖ’µeYWÖ“õeÙP6’eÙT6“Íe ÙR¶’­eÙö‡çßN¶—¼²£ì$;Ë.²«ì&»ËÇzÊ^eoÙGö•ýd9@”ƒä`9D•Ãäp9BŽ”£äh9FŽ•ãäx9Áë=QN’“å9UN“Ó½öŒÀ•fÊYr¶œPŸ+çÉùr\(ÉÅr‰\]&—”+äJ¹J®þ§½®ù^[+×yùz¹An”›äæ€Ø¹Un“Ûå¹Sî’»å¹Wî“ûåyP’‡åyT“Ç剟ÍyRž’§½òŒ<+ÏÉóò‚¼øýØ%y9 ¼"¯Êkòº¼!oÊ[ò¶¼#ïÊ{ò¾| ÊGò±|"ŸÊgò¹|!_z½_É×ò|+ßÉ÷òƒ×þ(?yùgùÅË¿Êo?ͨ~JL¡âJ(ù·õ”R: 4Ê*÷ã׫ò© *¨ò{µ`ÿp$¸ ¡BªP*´ £Âªp*¼Š "ªH*²Š¢¢þx6oT4]Åðʘ*–Š­â¨¸*žŠïµx)¡J¤{e•T%SÉU •R¥R©U•V¥SéU•QeR™U•UeSÙU•ÓëKåVyT^•OåW¼vAUÈË «"ª¨*¦Š«^«¤*¥J«2ª¬*§Ê« ª¢ò¾ÛS•UUÕ+«©ê*à'Õ/|ǧj–µUUWÕSõUÕP5RUÕT5SÍU‹?Q-U+/o­Ú¨¶ªj¯:Æ;ªNª³WvQ]U7Õ=0ÚCõôrï¾ z«>±¾ª_`­¿ Ö©Ájˆª†©áj„éEF©ÑjÌ÷uǪqj¼šð½=QMR“½rŠšª¦©é?ØiÀDÍT³Ôl5'06÷»„B!ä—¨yj¾Z ªEj±Z¢–ªej¹Z¡VªUjµZ£Öªuj½Ú 6ªMj³Ú¢¶ªmj»Ú¡vª]j·Ú£öª_øÉ„Ú¯¨ƒê:¬Ž¨£ê˜:®N¨“ê”:­Î¨³êœ:¯.¨‹ê’º¬®¨«êšº®n¨›ê–º­î¨»êžº¯¨‡ê‘z¬žü9W„B!„B!„B!„ü•ÔSõL=W/ÔKõJ½VoÔ[õN½WÔGõI}V_ÔWõMƒf5×BK­´ÖF[í´OÑAµ_ÓÁuR‡Ò¡uV‡ÓáuQGÒ‘uUGÓÑu SÇÒ±uWÇÓñuP'Ò‰uT'ÓÉu R§Ò©uV§ÓéuQgÒ™uUgÓÙuSçÒ¹uWçÓùu]PÒ…u]TÓÅu ]R—Ò¥u]V—Óåu]QWÒ•u]UWÓÕu ]S×Òµu]W×ÓõuÝP7ÒuÝT7ÓÍu ÝR·Ò­uÝV·ÓíuÝQwÒuÝUwÓÝuÝS÷Ò½uÝW÷Óýõ÷'Dô@=HÖCôP=L×#ôH=JÖcôX=N×ôD=IOÖSôT=MO×3ôL=KÏÖsô\=OÏ× ôB½H/ÖKôR½L/×+ôJ½J¯ÖkôZ½N¯×ôF½IoÖ[ôV½Mo×;ôN½KïÖ{ô^½Oï×ôA}HÖGôQ}L×'ôI}JŸÖgôY}NŸ×ôE}I_ÖWôU}M_×7ôM}ëï¿þú¶¾£ïê{ú¾~ êGú±~¢Ÿêgú¹~¡_êWúµ~£ßêwú½þÐÿ£þ¤?ë/ú«ø=N†4Ü#2Úc3>Ä5~Ì7!LHÊ„6aLX΄7LDÉD6QLTÍD71LLËÄ6qæ‹kâ™ø&Ih´›$&©If’›&¥IåER{)—Òz)Io2˜Œ&“Él²˜¬&›Énr˜œ&—Émò˜¼&ŸÉo ˜‚¦)lŠ˜¢¦˜)nJ˜’¦”)mÊÌ_Ö”3åMSÑT2•MSÕT3ÕM SÓÔ2µMS×Ô3õMÓÐ42MÓÔ43ÍM ÓÒ´2­MÓÖ´3íMÓÑt2MÓÕt3ÝMÓÓô2½MÓ×ô3ýÍ3Ð[kl†˜¡f˜nF˜‘f”mƘ±fœo&xÇ'šIf²™b¦šifº™afšYf¶™cæšy{o˜…f‘Yl–x­¥f™YnV˜•f•YmÖ˜µfYo6˜f“Ùl¶˜­f›Ù0n‡Ùivyån³Çì5ûÌ~sÀ4‡Ìa/vÄ5ÇÌqsœ4§ÌisÆœ5çÌysÁ\4—ÌesÅ\5×ÌusÃÜ4·ÌmsÇÜ5÷Ì}óÀ<4ÌcóÄ<5ÏÌsó¼4¯ÌkóƼ5ïÌ{óÁ|4ŸÌgóÅ|5ß,XfÑr+¬´Êjk¬µÎúlÔúm0܆°!m(Ú†±am8ÞF°m$ÙF±Qm4ÝÆ°1m,ÛÆ±qm<ß&° m"›Ø&±Im2›Ü¦øñýͦ´Ï»ÙÔ6MkÓÙô6ƒÍh3ÙÌ6‹Íj³Ùì6‡ÍisÙÜ6ÍkóÙü¶€-h Ù¶ˆ-ê+f‹Û¶¤-õ¯î ¶´-cËÚr¶¼­`+ÚJ¶²­b«Új¶º­á­ikÙÚ¶Ž­këýžû³­o؆¶Q@½±mmj›Ùæ¶…mi[ÙÖ±6¶­mgÛÛ¶£íd;Û.¶«íf»ÿÂü=lO/ïå¥Þ6à·Ym_/õ³ý°í Àú`;Ä ¨ ³Ã¿Ï0ÂŽ ¬²£í;ÖŽ³ãí;1 6ÉN¶SìT¯6ÍN·3ìL¯6ËÎþ…]ÍñÒ\;ï{{¾]`ÚEv±]b—Úev¹]aWÚUvµ]c×Úuv½Ý`7ÚMv³Ýb·Úmv»ÝawÚ]v·Ýc÷Ú}v¿=`ÚCö°=bÚcö¸=aOÚSöô/^ÿ3ö¬=gÏÛ ö¢½d/Û+öê¿ì{- ¿noüðèÍŸµnÙÛö޽kïÙûö}øO½–íûÔ>³Ïí‹èñò—öþkØW^zmßxù[ûξ·ìGûÉ~¶_ìW/öÍcwÂI§œpÆÙŸF:ç|^$ Ôù]0Ü…p!](Ú…qa]8þ×q~¾®‹è"¹È^ÅEuÑ\tÃÅt±\lÇÅ ì/ ÿï÷︄Îû¤p‰]’ﱤ.™—'w)\J—Ê¥vi\ÚŸIçÒ» .c@=“Ë첸¬.›Ëîr¸œ.—ËÏçuù\~WÀt…\aWÄuÅ\ñÚC WÒ•r¥]Wö‡{,çÊ» ®âUr•]WÕ«UsÕ½ü7þMWÓÕrµÝŸíþUãëþC»ž«ï¸†¿z|#ר5qMÿ.ÒÌ5ÿ½»ùÿ…káZºV®µkãÚºv®½ëà:ºN®ó?ôêò×ìîÏæººnÙÚÝ]×Óõr½]××õsýÝøôöÿ}n ä»!n¨憻n¤åF»1n¬çÆ» n¢›ä&»)nª›æ¦»n¦›åf»9n®›çæ»n¡[ä»%n©[æ–»n¥[åV»5n­[çÖ» n£Ûä6»-n«Ûæ¶»n§Ûåv»=n¯Ûçö»î ;ä»#î¨;掻î¤;åN»3ß÷wÖsçÝwÑ]r—ÝwÕ]s×Ý wÓÝr·Ýw×Ýs÷Ý÷Ð=rÝ÷Ô=sÏÝ ÷+?Ý+÷Ú½qoÝ;÷Þ}pÝ'÷Ù}q_Ý7ø˜}Ü'|Ò§|Úg|Öç|>__PŸßÌÜÂÒÊÀÆÖîosú¼Ï=ßÏ>ï|ÿye_¤Ä"äQ|ÿòiµßÆí™çw¬ýOZ'†/¦/–/¶/Ž/®/žÏûׂ//¡/‘/±/‰/©/ÙŸ³ ò{ù’ÿÕ; „ÿN¾¾”¾T¾Ô¾4ß#iÿ]B!„ü·ñ¥û«w@!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„Bùý|é}|ÿê]B!„B!„B!„B!„òçðŸðŸôŸòŸöŸñŸý#ÏùÏû/ø/ú/ù/û¯ø¯ú¯ù¯ûoøoúoùoûïøïúïùïûøúùûŸøŸúŸùŸ{£^ø_ú_ù_ûßxõ·^zçïåü½ü“ÿ³ÿ‹ÿ«ÿ[0Æ‚a0Lü¿9kB!„ÿFÁäOùÿD9è” endstream endobj 7 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /AAAAAB+FreeSans /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 8 0 R /DW 600 /W [32 33 278 34 [355 556 556] 37 [889 667 191] 40 41 333 42 [389 584 278 333] 46 47 278 48 57 556 58 59 278 60 62 584 63 [556 1015] 65 66 667 67 68 722 69 [667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667] 90 [611 278 278] 93 [277 469 556 333] 97 98 556 99 [500 556 556] 102 [278 556 556] 105 106 222 107 [500 222 833] 110 113 556 114 [333 500 278 556 500 722] 120 122 500 123 [334 260 334 584] 160 161 278 162 165 556 166 [260 556 333 737 370 556 584 333 737 333 606 584] 178 179 350 180 [333 556 537 278 333 350 365 556] 188 190 869 191 191 556 192 197 667 198 [1000 722] 200 203 667 204 207 278 208 209 722 210 214 778 215 [584 778] 217 220 722 221 [667 666 611] 224 229 556 230 [889 500] 232 235 556 236 239 278 240 246 556 247 [584 611] 249 252 556 253 [500 555 500]] /CIDToGIDMap 10 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type0 /BaseFont /AAAAAB+FreeSans /Encoding /Identity-H /DescendantFonts [7 0 R] >> endobj 14 0 obj << /Length1 8984 /Filter /FlateDecode /Length 6037 >> stream xœZ p\Õy>çÞ»÷î{÷î[Z­ö¥—µ’VÚÕJÖ[–m˲-ÉÈùý¶1¶ñalÀv@P Ä5N(MIèL;÷®EB˜¤úHÂÔšBBÒ$A„0mHÚ)^õ;ç^a·Í4™zùïyÝ{ξÿyŽ ”â ‘4¯½-››¸RêEÏ+ ±­ÇŽ$¤YÛ!4€vbÇ¡û‹³S+ÑnEûowî;±ãÜ»—¡ý !ÑÍ»¶OnûðOÿú·„Ä&0Þ¶ Êûâ­h?vÕ®ýGŽçý2¾9²ïàÖI"íÀ\ñ´ïŸ<~ˆžQ`©çÙz&÷oOït úmŒñÐáí‡Fk Ií¸F(ý‘ð ±"<"|ƒdÉ4+ç7Г* ×¡Hû'½'¸çûÉON±YAdÅš;¨%毋‰ùÅ„ˆЇ́|3þ[Âÿ «ÂÛäˆDöÃä4~á÷Ç$)œÐHƒFü«´ú‘1mèØ¸FÒ}MÎŒõŒó¾©ñÄ›õ7E5ÚH¼“m~jÀ5–H¬HNîIŒ%¶mYM&Ç£ÉñFMhX5:¶<=žlÔĆݑ„Ö?2–Ôú1"5°)“éäɱw£ßâ½±ëÑ_ŽGÓIÍ’Óóñq¬cipM¬oÔä=E/€«Ä…‰‰¨F0Ò Wñ®þO»¬ >5Ñ‘mÄ6I¸Ö W }…4é”d»‹ŠäþeN—-?ì.ŠªDY·…uÙóIw‘²þ¼šTkój:Im¼þºpåúޤ0F Ðü/ÄMÂkÄN$BªH#y‘ã„dôze®F¥ˆ•3º­ *ZÙ¬^­Ìiê¬.+sTkÊj¶Ù·ƒø¤Œî§™Ѩ¦P­3ª ¨VÕ,ÅKnÕ×o·SYq8‰ŽT…;ô†:Ö¬*+'ªkBõè#zu½êûZ¬"ªkhd/9T´%›èöøh7·øs¡`@N§jZÛB)9åÚ ­Õyš¦ >b |õÞý«†÷í;8˜Ë æh×péèjúÖë^Ý»zåÞ½—önmI¥[@Ÿ¿^Kì]ƒ¾áUèd}Lå()'oÐzº²ˆA·³:µ )« ³3ÄE¬Ø«…fHs & ´¾ô]wþ<û®_Ï’'ñ]œaΙb#A)c~¬לùe{0]˜½ôä“O2'±ù9Á"¼I¼øn)&¡ i®hc Z±x"«YfõˆcNW² e¥h”Ø‚¡Š@Ó\ªf¶Á n“]î¸ê³DÊ8œRªI(´¶·åsaÀç¦bkM3\+i>×ÞFÇßRu;³$jˆÖ§7—gÒ=e¾pÇžÓ·ýÃÈ]»oýÖÈÔ^Úµ÷XõÝOí¸§zIÎÀj'¡c i%E™©”®¯Y²ff…T²í[³™Õ-Ž9ÍÒ4#9(SŸ.äÚ¡»þÙËÉ ÓtnÃéë]|ÞJ#“J²­ Ù6W¬`ˆø"ñ,ÓÖð ‚2ÒbjätÉ>C„¨EÅëè*>¨8+©Dœ.7.+çÀЀ[T’Ád/m聾Ö€£i¦\ù\HókF‡½´¡TiY¾þh!Û\8GO8ô ý·®ÍKÚ—¤¦¶ÜÓ7º¶«Ð3Ðv¸Md¼3yJà=Cž Eã=iÊŒ÷ZëÜÕ„O6I›†¬äÑ2³z=ŠªY݆":«{°«Fì*”Q}š¿C¯ªg‚õ…#er2Q[Ç6U5¥C³ù4'¶˜€>¼äõ„‚Q¾ù¤Š^­Ö÷’ÝVU]Ÿ1̪µWÌs R*©aGµùPžÙPMmMºÏ(éšx¶¿#¾ódCK÷âówï?C/ÈÛšºêÓmÎûšêÛ넳ô_ÛooŽÙwµ¬ˆÇîèÝujjÏÁîlm‡]Ù¸·¡¥·ëv;÷A.ÒCŠ"Ó+×ÑjÍèŠ#Ÿ×©ÅÈQÍÕ¤YÍ‘Óìß–c’%º•¨lwÌÚÒ°XÔEûÐté=*¾0ý—T=òì³Çh±4L³¥þQnO¯‘(%EÃ_þÜÕÁ”¯†+[˜UdµÀ¬nÎ1àl ¨¾"• ×—0<Ò×mV;䪢YTMäl$•¶ü‚ú¼tJIûé\éáŽ-§?¼óŒðˆeC¡§§°4|ŸðÚÔÓ™ ûïyüž c·ôö¯l£‚øT¸Ž/"GI±œqZ NÆ©Ó:W´R/g@˜C®çv¤TN¯ÇapžAYfû]¢Mpyò(s´Œå° ÷Á6¯Æf*I$œJ×-b#US™:x“¹J1œæÎ@‘•^zcg5UÜïòí%¨ì¯êÉf”³îÚT}‡]“ý wÝóàž¾Ýñ<­ÛÒÝÝœí¡·Ò¥@j°9kk®\•Š=°ãÈ‹[ný›•]‹oê0ì:}ðB6Nì¹(}‚ìÌź¸—“°'7“<±Cò”C. Jº Úž,ÞûÙ+_Ü™(='¼vàriî«ß¬éóidGð¼!`ê¦adòR´1Tk%#ÂéØ_Ò„ýÅnØŸsV¯¦¾Ù™¨ƒ$¤Œ–€£7j‹ M+¬ò©>ÝîéèÐQ í†"e¶Xe&™ªeŒ,·"°NÖk>¨ªz vZLÕ=bG‡ñÍPâ‹&X_PÕýáînX"œN{5\ÌB°oU>~5ôã–LOûôÁCÓí=Í g¶n9sucWW¶©ko®§{GO·X¼4œ\×·íôýÛûÖ%Ë—åoß¿_ÊZGßïo+ôöæÛ—0›¬˜ÿ€û§8dpÚðÚº •3„@¨Z.g*'*žÕÓÀ Öô³LßÒaXŠ5hƒ¥hµj¿S‘.èÝ¢DÒ^Íý®Ow{˜â\ 4¼§U«:E—–ð}-ELsÿeø_nG,xP)Ö.÷AJåo¨™8%œ²ÕG¥H4_¹ñØÃ{R½ËóÉëÙöÅ›»»èáÍOÞžW÷ŽÆkþ^‰„Ô >êÉ=teåÉ·tö±}ÃÀ„o"›Tà2¤ˆÄ4£Éù¢$Âʬ–N˜:²º“éŸd…Dmà±:©¤iÞŸvôãÒ¯Zž¡â—?¹2¾iÓSO o#‰ðÒXégL÷F1ÿ̯ÂëÅÉÙrÄ-Edq ¾§LV°ŒßfÄtyV÷¹æ´²œšeQ]‹ÍrˆYpwŰº–•3¯DXÓüª®zQú|E·+ÔÁ¨:àÒIv,0¯¢AæÃÓ¢QW"…=+K/Óå˶¶„šÚN”Ö|iÏž/]=xðZÕ²:áíº¾îXvYzM¼0z[éG¯nÜdÄõØÑŸ ïc'¤èaû°bA¶q_–…½èd4„f˜Ïv‚ïr¦"¨¿ Zmo0ÄtÁ©]á÷©ý:±È§Ï1Ä_“^ð2íy7]~(,D+ß6yçàíÊ“ÊW/\.Î\9ó‚þôÁ 'î=7<8õÔ÷4ýûœà1f5/w䡤ÃÌŸœà–š¨SÍϧÓed Ê“°ÏÉÔXñp ‘Fc]x?EN×2ð2t5ݾ¿z||ÅsçÏ¿øây Õ°ç/´]wLýê#†ÑZ¬{ˆ¯›3" /E [U¬‰h¬ml}'‹l,ÿÓ¬9Ýed>Adj’=ƒïÓG¯ÿXð”ÎÓ ´óÕ)áí©¦0?SÚ!Ìo#MF>YÙÜ67­|ªÙrKMÎécnDHcæ¾$Ò%ÚG;Kß1¦Å¼,2¿…yY~kÌ‹êïÈRÙ4o]b:Ž—\Oø,ç§ß@Y ëÑ”<çCœÕ)¾–¡$§[Q?hB“-¿„P®S™¤˜;OÕ¼JçK?¸t…&/Ñ/Y…·K^úÑõZ~ô#ÃxœÀzvÈuéÍ0Krpˆ)]è¡û¿ Ø¡ú®Z·ÇH~,F|ã®ÉП^¢‡Oßöé£ÝÓT*}"¼}äÀÁ‡¦ö/nãvÀbô ØÁ"2EŠ^&ã0Ú+©±ô› ªp©ºÜ^=ÔM 7ò­¡õÏ-Vë’¡[[ë-ç]ï¼›¸ìZé¯kn¨Z”.t†ÇWþQÔN­ö2[¢þ_.½YS©ÕÕØ¬6[*^™àº×…ý÷A÷ܤŒ0=yÉØþ"³‚‡é@yV³Ã“cßV'ˆ`ó"Q”$ _wË Yð†¢Š”g4œF4k‡æQ_’D8Ã2#jj.&j3« ÂDTóøËM'&Ϟܚ›žÎß5°¤Ð: TaêäókÚa8××Ý0´zãÆ¡ULoSàßùEÈ$):÷Hx‹>Æ3±þÛ3ËmÝ k q±±œ›¹pÁ£2N4«úRÞÚé3„¥û̉ÿO†S¿Ëƒ#©¤‰Ã=…EM®söÓ[Ž?|îÄö)圳‘Îèk×7¶NÞýô¹G.ÚZh\8'oàMðfé{ÑÆð–oÆ[4ð³¬an7ñö‰žïë͵/_.T\¿¶i÷mƒ}=-+RWîŸúÊDÙæÕ+'&V®ÚÂcÍRl>Æå°Òð8š/_´2Ýw² L÷¾bÄ«Ÿi<6Ê$à‡G¹* Nß”S€ìŒsæ.ƒ*÷$y–#ªizq]¶gzºs[¢£=1M‡¶u7•^ùøNµvM¡t‰Ë¼7xŽ 3öJföÁñç·:Â,K:XØ“r 7:X‹]o½1==¿'T¼:5eÈUš¯!×0§ ò2Rt³é<ætH> lЗÕ\³š×˜Õmì‘à¡IØ–©™Ìîu4…tî' ~¾êµÎ%UY—3ì㋟è´’üaá.“Jp ªxÎV0Οš5_´3Œ)ß”“Ýyòµ#SÓ)ÖD.'+FÑžWüéZ…ùæ×õç^~íù3‹§âµï–´{tÌLoÂîwæWŽ›ó«7¦oäWÈË„ô^%kŒ;/Í‹üЉÞ)-€îã™,´[ópÄùåÃȆP[”œ.¦èVÕÈ·Þjc:äWXÏT‡¾éÎ]ë6M¯Ï÷§5wn‡×X=ÙÙ\zrJ×u€; 2ÀcŸ×jú2Rˆ£ä6—MO¼pûK” Ã‰øÍ5ÑáU}/±›]ób÷Óû[o[Ø<ã2Ëi<ýا¦|ªcp°cñŠåBõ3Ÿ9{ùjæîÍW6oÙdèP'|C/xsá„¿“-Œ7¿‰ŽîFÅÎaŠpU0¦8à B&—eì6]ìÀó®y!$ûרeš[½*ª¡°Ë\ϘKg3ï¸ïÌä6ŽOìYb„ãçó¥±ÒυߌŒÝxyÃÆ•« ¹ÒÃàÙMÚIÑÅôÁB;S¨žO…êÌé^¦tv—‘XÔ²«î@¹ôB#Í6k™ÿ¤·§½›>.*ý„,Ü=Z±V¹—k:¢bÆý»BZÄã~ÔÁ³t=‰²e¿hw°›/MVû’hóù‘’•Uò{¤äBKôˆÈ2U#QõCÑŠÊx"™âw‘>çÕæ–ö›²Rq!ø4ye·Ï°ü²’éni–ÅY[[qïÎý÷ çé¶ê†@LßjÙ²ô?ägSUeÞ€µ•úÂmÕ·MN®[ {U[>¾;ÞÕ™žaqk~Ž6 _$2`ÞóÉÊœF²0›jÄ+7âU0«¹g5ÕˆW~C·¯¨‘ˆ‘ŠÉµ=QxÈÊiã_…#˜Ê~fùòi«Þ© ‹[§éð†‹9ÞÀ;&T6+‘[åל”[0·Y+ö:E®åá®Í°Y+?áp`Z.·dÚl© 2pÜîÞòBì†ÑöÃdéñÒ 0Y:jÆp!>d’4²§¢Àƒ$–W²,ÇÃé›p/ʦóQš§Ÿzõé£ûŸ*JG飘ƒýý®„9œÈùó˜7TÕêÈçÙýœq1gÁDEA±ócs2í Æ|øOØ~ñÖuO\¾¸ntúÖÑ‹tªô &?GO22ü¯m¾Z(Ç’% ,²‰}L9ƒY&„dvkdc·E‚Z¤’—/.ðUD·´àò¯ýÝ•{=ñ#Y.OdB!Ou®\r¥{ég®ŸqV&£>i·Üj¬ *ÿÉÛÛÞ lòt,xÄX÷·ÕòÞBy}ºÔ*¤V¼k5¿àOñƒÒ›d½å]ŒÈ³ÿÆ¿ tûÛ^] ñò}‡ä„"‚Bâ ®Áò?$9ŒÕBôanA;DúÑ.çeˆx?Zª4ëP”0Û!P¾¹›æ¨cóðr+éßÀ»×H9hÔZ-|ެŨh'õh/Ã:}|Þkdý#â2Àú1^‡w‡QfÐA=q7êèGD¸P†@QôWbýšÿ5JÖïæÿu•ñ‡ñ.”)”œgô»Qgí¥XŸ‘„þ.V>Ýèï¥A  àÃxŒ™ßu¢î_”^ÍÄþöÿ›èôï¡o/g$¼ Iãx/~—韱 ƒ~Mˆ =Qn!ĺÛ¶ßC˜Ïþ!ŽnÐ !Nœûn¢çÿ7¹&]¾Aî'þäyG\è[„øî#Ä£_n)€±t=¸ „=†$“€C¸ôCƒ"ØkL¦ x”÷ƒ}`Pt3×þ ô¢ïAä…oÛ˜™X¶Â{`>ô®G²C$&£#üFžÕ)2ù#f]€¯ºbÖEÒK¾jÖ%¼ós³nÎ8ͺLjh òÜEv“{HÂ|N‚v€‹˜7XÇF·â¹0~„l'ûÉ!¼qïFï>r‚ÀøôíÃo;ÙFšÐ» ï%0rÏvol‡U/!ƒdˆ¬B>7J2¨Fïvr¾es àí}ø~};ñÍ>¾Îæ$à·¤¿ðÐÌØWëÐwíÝ|ÿ óû?ì[ò2˜¬Ò¬#cˆFëƒìnм㫴À(*ŒÇ4931F4)±\3Ë4kbyQš2¼¡ aÍš  Åe6,‰åEdzŒ˜mû¬ÏlØÙ íô¼9H5‡9¹“ 8ø€.C ß9 Íqò_‡»û endstream endobj 13 0 obj << /Type /FontDescriptor /FontName /AFJKCR+FreeSansBold /Ascent 1000 /Descent -300 /CapHeight 22 /Flags 32 /FontBBox [-628 -1175 1556 1639] /ItalicAngle 0 /StemV 120 /MissingWidth 600 /FontFile2 14 0 R >> endobj 15 0 obj << /Length 3868 /Filter /FlateDecode >> stream xœíÛuÔ•Õ¶à9׌Eww# ÒÝ%ÒÝÝ!ÝÝ]ÒÝ6ØÝ-Ø6Ø` ÆÝç‡ç^½^=÷œß3Æ\]ïú¾½ÇxÿØDÿ$!%#§HÉ(9¥ ””ŠRSJKé(=e Œ”‰2SÊJÙ(;å œ”‹rSÊKù(? ‚Tˆ S*J—P1*N%èR*I¥¨4•¡²TŽÊSªH—Q%ªLU¨*U£êTƒjR-ªMu¨.Õ£úÔ€R#jLM¨)5£æÔ‚.§–tµ¢ÖÔ†ÚR;jO¨#u¢ÎÔ…ºR7êN=¨'õúg>¡7õ¡¾ÔúÓHƒh0 ¡¡4Œ†ÓI£h4]Ich,£ñ4&Ò$šLSh*M£é4ƒfÒ,šMsh.Í£ù´€Ò"ZLKh)-£å´‚VÒ*ZMkh-­£«h=m ´‰6ÓÚJÛh;í ´‹vÓÚKûh? ƒt5]C×Òut=Ý@7Ò!:L7ÑÍt ÝJ·ÑítÝIwÑÝtÝK÷Ñýô=HÑÃô=JÑãô=IOÑÓt„ŽÒ3ô,=GÏÓ ô"½D/Ó+ô*£ãô½NoЛô½MïÐ :IïÒ{ô>}@ÒGô1¢Óô }JŸÑçô}Igè,£óô}Mè"}CßÒwô=3V6vŽœŒ“s NÉ©85§á´œŽÓsÎÈ™83gᬜ³sÎɹ87çἜós.È…¸0á¢| ãâ\‚/å’\ŠKs.Ëå¸Àùj¾†¯åëøz¾oäC|˜oâ›;Þ·òm|;ßÁwò]|7ßÃ÷ò}|??ÀòCü0?Âòcü8?ÁOòSü4á£ü ?ËÏñóü¿È/ñËü ¿ÊÇø8¿Æ¯óÿð›ü¿Íïð >Éïò{ü>ÀòGü1ŸâÓüÉ£>ý­/þŒ?ç/øK>“(Ÿås|ž¿J”¾æ ‰ô"Ãßòwü}HŒ B Á‚ÿmfˆ!YHR„”!UHÒ„´I­éBú!d ™Bæ%d ÙBö#ä ¹BîDož7äK—?y¡DND‘P4\’È‹…â¡D"¿4%C©P:” eëS…r¡|¨*†Ëþ¡µR¨œH«„ª¡Ú/άj„š¡V¨êüÖ]v½º¡^¨„†¡Qhš„¦¡YhZ„Ë“z[&âŠD´ ­u¥6¡mhÚÿŽ3tHDÇÐé·Ïü {t]~,wý!ïö“þî¡Gèz…Þ¡O蛨÷KDÿ0 ƒÂà0$ ÃÂð0"Œ £ÂèpeƆqa|˜&&FN “Ô05L ÓÃŒ03Ì ³Ãœ07Ì ó°0, ‹Ã’°4, Ëʰ2¬ «Ãš°6¬ W…õaCØ6…ÍaKض…íaGØv…ÝaOÒÉö†}a8†«Ã5¿ù¹¯ ×ýPºþgûo7†Cáp¸)Ün ·†ÛÂíáŽpg¸+Üî ÷†ûÂýáð`x(< †ÇÂãá‰ðdx*<Ž„£á™ðlx.<^/†—ÂËá•ðj8އ×Âëáðfx+¼Þ 'ÂÉðnx/¼>†ÂÇáT8> Ÿ†ÏÂçá‹ðe8Άsá|ø*|.„‹á›ðmø.|/$,ADTL\¢$“ä’BRJ*I-i$ío½ÿ+I'é%ƒd”L’Y²HVÉ&Ù%‡ä”\’[òH^É'ù¥€”BRXŠHQ¹DŠIq)‘4÷R))¥¤´”‘²RNÊK©(—I%©,U¤ªT“êRCjJ-©-u¤®Ô“úÒ@J#i,M¤©4“æÒB.—–’øäI+i-m¤­´“öÒA:J'é,]¤«t“îÒCz&í×KzKé+ý¤¿ 2HË*Ãd¸Œ‘2JFË•2&iìX÷¯º³_¸Éñ2A&Ê$™,SdªL“é2CfÊ,™-sd®Ì“ù²@Ê"Y,Kd©,“å²BVÊ*Y-kd­¬K¬°^6ÈFÙ$›“ÖÛ"[e›l—²Sv%ê»eì•}²_ÈA¹Z®‘kå:¹^nå–›äf¹En•Ûäv¹Cî”»än¹Gî•ûä~y@”‡äayD•Çäqy"±Þ“òÔøôOË9*ÏȳòœÛoì ]mרµv]o7ØvÈÛMv³Ýb·Úmv»ÝawÚ]v·Ýc÷Ú}v¿=`ÚCö°=bÚcö¸=aOZÒ¯nìi;bGí{ÖžKª?o/Ø‹ö’½l¯Ø«v,Ñr<¯%âõD¼aoÚ[ö¶½c'줽kïÙûö}hÙÇvÊNÛ'ö©}fŸÛö¥±³vÎÎÛWöµ]°‹öMÒúßÚwö½“³W7wžÌ“{ Oé©<µ§ñ´žÎÓ{Ïè™<³gñ¬žÍ³{Ïé¹<·çñ¼žÏó{/è…¼°ñ¢~‰óâ^Â/õ’^ÊK{/Käå¼¼WðŠ~™WòÊ^Å«z5¯î5¼¦×òÚ‰þ:^×ëy}oà ½‘7ö&ÞÔ›ysoáI¿Æô–~…·òÖÞÆÛ&jí¼½wðŽÞÉ;{ïêݼ»÷ðžÞË{{ïëý¼¿Hš7ÐùàD>ćú0î#|¤òÑ~e¢mŒõq>Þ'øDŸä“}ŠOõi>ÝgøLŸå³}ŽÏõy>ßøB_ä‹}‰/õe¾ÜWøJ_å«}¯õu~•¯÷ ¾Ñ7ùfßâ[}›o÷¾Ówùnßã{}Ÿï÷~ЯöküZ¿Î¯÷üF?ä‡ý&¿Ùoñ[ý6¿Ýïð;ý.¿Ûïñ{ý>¿ßðý!ØñGý1ÜŸð'ý)ÚøQÆŸõçüyÁ_ô—üeåç¿ßüU?–”÷×üuÃßô·ümÇOøI×ßó÷ýÿÐ?òý”ŸöOüSÿÌ?÷/üK?ãgßwªŸKÄùÿÑúÕï[í_Ë¿ö ‰ôb"¾ño“Z¾ûűßÿ\k¤È?”B”DªÑ¢ÿȘ”&‹ÉcŠ˜2QJSÿï§ŠibÚ˜î'õô1CÌ3ÅÌ1K̳Åì1GÌsÅÜ1OÌóÅü±@, űH,/‰ÅbñX"^KÆR±t,ËÆr±|¬+ÆËb¥X9V‰UcµX=Öøµû‰5c­X;Ö‰uc½X?6ˆ c£Ø86Iêk›Åæ±E¼<¶ŒWÄV±ulÛþÚŠ¿°O»Ø>vˆc§Ø9vùõñ”Ø5Ýb÷¤rØógFôн“ò>?¶ôýÕUûýaüµúÿˆÿ¬=à§â ¿úÿ.âà¿úÿ¼8äOÚgh‡ÇqdGÇÄMÇÆqq|œ'ÆIÎ)à÷Š“ÿêÀž8%NÓâô8#ÎŒ³âì8'Îóâü¸ .Œ‹ââ¸$.Ëâò¸"®Œ«âê¸&®MÌZ¯Šëㆸ1QÞ”ˆÍqK"Ý·%ÒíqGÜwÅÝqOÜ÷ÅýñÀ_ý”ÿ>âÁ¿¥ÿ8ÈÎ… endstream endobj 12 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /AFJKCR+FreeSansBold /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 13 0 R /DW 600 /W [32 [278 333 474] 35 36 556 37 [889 722 238] 40 41 333 42 [389 584 278 333] 46 47 278 48 57 556 58 59 333 60 62 584 63 [611 975] 65 68 722 69 [667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667] 90 [611 333 278 333 584 556 333 556 611 556 611 556 333 611 611] 105 106 278 107 [556 278 889] 110 113 611 114 [389 556 333 611 556 778] 120 121 556 122 [500 389 280 389 584] 160 [278 333] 162 165 556 166 [280 556 333 737 370 556 584 333 737 333 606 584] 178 179 351 180 [333 611 556 278 333 300 365 556] 188 190 869 191 191 611 192 197 722 198 [1000 722] 200 203 667 204 207 278 208 209 722 210 214 778 215 [584 778] 217 220 722 221 222 667 223 223 611 224 229 556 230 230 889 231 235 556 236 239 278 240 246 611 247 247 584 248 252 611 253 [556 611 556]] /CIDToGIDMap 15 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type0 /BaseFont /AFJKCR+FreeSansBold /Encoding /Identity-H /DescendantFonts [12 0 R] >> endobj 16 0 obj << /Type /OCG /Name /Usage << /Print << /PrintState /OFF >> /View << /ViewState /ON >> >> >> endobj 17 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 18 0 obj << /Type /ExtGState /ca 0 /CA 0 /BM /Normal /AIS false >> endobj 22 0 obj << /Length1 2524 /Filter /FlateDecode /Length 1786 >> stream xœ­V[lǽ³ËÝ%õ Ä‡(UÌÊ»¤$S&%¾dQŠ’‘rdË’­ØZºòC²ž)e)ª¬Xq I“:EÑúÃhÐô£þmÑ»t€¶nƒô£NòS †P§M@?, i }¤ˆÄž]ÑEúi \Ü9wîܹ÷ÜÙ#¢JºN<ÅÆ&¢‰ß]ú ú%D»¸±®ðoÙLj˜ø‰ùÕ…å?4óyàð{ …Íù«öcÿ‹È[œ›žýëÝë¿%CïZ„ÂîæF/7/.¯_ICÀ_^/¬\œ&RMŒùteyúÊ*Ëð³DÒ*°rizy.ø´|kÜ]]›[ýó?~…ØÇ0~“û9»I÷Mî¥o™mé,û#Åm¥`ã8ÎÁÙþœ¥Aš¾jz5Ó>~J!FJi‡WJÝDüCAˆoïû'Y?®Š{ƒ{@lj# ÑS4G#•ÛÔ)¢“ç¨~`\ÓG6ò:t1¬õç-Ý×òÊ}y:ÚuQ”¢_þÓ{²¦(ÃÁÜô3ЦÌÎtûU5ïWóí:9zRËój»ÎG–}p\SõAŒØ"¦K5¨>¯}èÿMÞ;mÇÿqÞTu!¬é¹¼5Ïc!R=u¦]#F€Ý@TÊ©)¿Np#EŒfK5ø_•=âv)=Ñv¤H*8=À½ŽÊKÔa0Ц‹’­êã„! ¿Oy]2xS-˜ê¢$Vž.2SŸt©®ýIWPeއï¾Ë½¾3¯rÜ•>-}ÄŠ`Ž'Q‚pÝ0ÓmQC`aŠÅY’ÙÕÔîfŠ{°ã1©¦™Ò6wš»‡ûÁrÑYF½m»hçÐQlÛLEuÚ2Z*· ™…J´mhå—{Ðáp{öÛêµ¹¾‡ ¥ÞÔùUUÊM-­ÐÅâ©ÎŒLøê¼N[0ÐÁÕ'2üÁÎÖ`ÀÉÕy}3’GN:×}ê|ECüɯjêí¼•8UªRñþ³íu]?zbä™ù…ÑøÂT`êÚÆÂ€;4Þlù¥Ù@ÿ“+·_éèÃîÅNz¯Oƒº©(™y ˆþI‚=lprpDu¶õ¦XI’-lT |‘¹Üo'Hv3r0LeX*ÉÙʪ áÞ×4öÙ@Mû‰>²Ö€¬ÖPšŠU&KŽí"™,ùL–‚QÝ»e`§T¾ PQ- v‡Tër{å¦}ŠEK4!ñ&Jª¤fØË0‹ Q fûqj,ä~gõÕF¶éÙmSg_\Ìd;;ÙU+IL“op÷ÔTJþîlÏÐÑÉÍËÙNåô…¾*O£,7ÖIמCœ9Ôó2âT¨@E2ãt š^+NÇöò‚“F3b5ª‹[†„ˆ«Ìz¢  •D—[÷ôèU®A§ÂÈ©u{ëýV‰k.÷O%±ªÚí‘› Ñ]zòPÛ~–ô%]Vy‘J]Ví%‘Õ¨™Ã!Ͷyjåp:Ò×1þ ¶æÞ½ŸËåNÍeµzg`ä ïÊóg{ü!öâä;ásÇ×´usN ŸIäÓBqzŠÕ´Gøó­¶í;‘jBF²™Q"ª×nžÊm]Ù2ÚP ™%I¢mó 1gEb-¬ÚWOrS¼uC¤ÝJLö¹Üw\µ7Ñ17²((jCÛhì •s Á@ëÁÎTÒ‹T=NÞB¾> ÖyËɳ[©mnÉ»¯+;›?Ï&“±×ÒŽæPZ=qÁê›O>µ”>x¬0ÄÝkI÷ÊM£……ÅÑøé#µ•ÝÌéð7ºÏ}éðÓÙØèúxWÿÚXboC|o…û÷íó5é¿s5üCs[þúoñµ;·vOˆÍ¶ˆ±—gXoþáî}:#|¸skÇ/6Ó,ÕÑ2+˜gLqS0Ÿ%/°‹dpê‚dùMz…û>Ά·é'°y––>c/Ó¹#4ÛtÓh'™¯ô)ìg ïCaÈ$9 y2™(¯ýôÿIn jÜI w•y>>ô¿nLVd|tç.ga‡I—ÂMf’è M²9Ì;²×gÚësä¤Ûå>ûérß›OÊ}|¬©Ü)Â:ç"-ÑWñ]î½§!ó´B—àW¡ç¬Ñ‹x?_§9Z¦UX¬Áv ÚmZ£—0¾]ÏêÙí쌬XÞ.ÃbU=¦Gè ã. S^æðL`®écŒfàa‰ž…ý„, W°V‡Çõ>–‡^Šá‰#ž˜õ<ÎÜÓ5h—,F”²—Çñ@?c¥—é¨n× Æ¾7ræ%®×âŸ÷$:×ó2®õ)t›’ÕùðnW²EÛ2¶€`ï-@ò– dï’È6¨Œæ´Í2¨0×JåA¦Wî9Ç¿´ÿ©|7 endstream endobj 21 0 obj << /Type /FontDescriptor /FontName /ASJHGN+FreeSansOblique /Ascent 1000 /Descent -300 /CapHeight 22 /Flags 96 /FontBBox [-620 -431 1572 1072] /ItalicAngle -12 /StemV 70 /MissingWidth 600 /FontFile2 22 0 R >> endobj 23 0 obj << /Length 3868 /Filter /FlateDecode >> stream xœíÛuðTÇ–ðãÍœÁÁ-8„`Aƒwwwww»»»»»»»»îäWlê¥^²Ùg›}¯¾ŸªÓÝ÷t÷½Ý=sÿ›!ú)9%ÊEÊMQÊKù(? ‚Tˆ ÓÁT„ŠR1:„ŠS *I¥¨4•¡²TŽÊSªH•¨2U¡C©*U£êtÕ šT‹jSªKõ¨>5 †Ôˆ§ÆÔ„šR3jN-¨%µ¢Ötµ¡#©-µ£öÔ:ÒQÔ‰:SêJݨ;M=¨'õ¢ÞÔ‡úÒ1ÔúÓHƒh0 ¡¡4Œ†ÿ£›ÏA#i¦14–ÆÑxš@iM¦)4•¦ÑtšA3iͦ94—æÑ|Z@ i-¦%´”–ÑrZA+i­¦5´–ÖÑzÚ@im¦-´•¶ÑvÚA;ií¦=´—öÑ~:–Ž£ãé:‘N¢“é:•N£Óé :“΢³é:—Σóéº.¢‹éº”.£Ëé º’®¢«éº–®£ë麑n¢›éº•n£Û麓麗î£ûéz¢‡éz”£Çé z’ž¢§éz–ž£çéz‘^¢—éz•^£×é z“Þ¢·éz—Þ£÷éú>¢éú”>£Ïé ú’¾¢¯éú–¾£ïéú‘~bbfaecçàĹ8ùù ÎÃy9çç\ qa>˜‹pQ.Ƈpq.Á%¹—æ2\–Ëqy®À¹Wæ*|(Wåj\ã\“kqm®Ãu¹×çÜñáܘ›pSnÆÍ¹·äVÜšà6|$·åvÜž;pG>Š;qgîÂ]¹w磹÷ä^Ü›ûp_>†ûqÀyæ!<”‡ñpÁ#yæ1<–ÇñxžÀyOæ)<•§ñtžÁ3yÏæ9<—çñ|^À y/þù«ÃKx)/ã异Wò*^Íkx-¯ãõ¼7ò&ÞÌ[x+oãí¼ƒwò.ÞÍ{x/ïãý|,ÇÇó |"ŸÄ'ó)|*ŸÆ§ó|&ŸÅgó9|.ŸÇçó|!_Äó%|)_Æ—óÙ'^ÉWñÕ| _Ë×ñõ|ßÈ7ñÍ| ßÊ·ñí|ßÉwñÝ|ßË÷ñýü?ÈñÃü?Êñãü?ÉOñÓü ?ËÏñóü¿øß¯¿Ä/ó+ü*¿Æ¯óü&¿Åoó;ü.¿ÇïóüáQý­¯ÌŸð§üžmÁ_òWüu¶õ ›-¿ãïùþ‘’ìHaQ1q‰ŸgJ’\’‘Ür䑼’OòKl¶ ’Âr°‘¢RL‘âRBJJ))-e²½e¥œ”— RQ*Ie©’ÍšªÙ¨&Õå°l]CjfËZR;[Ö‘ºRï^¿Ô—ÒPÉáÒXšHSi&Í¥…´”VÒZŽ6¿{”t’ÎÒEºJ·_r½¤·ô‘¾rŒô“þ2@Ê ,Cd¨ “á2BFÊ(-cd¬Œ“ñ2A&Ê$™,SdªL“é2CfÊ,™-sd®Ì“ù²@Ê"Y,Kd©,“å²BVÊ*Y-kdmöYëd½l²I6g¯¶dck6¶ec»ìø[?¹¿Ø×οî?‹ì’Ý¿´÷¨÷þEÿ>Ù/ÇÊqr¼œ 'f¯OÊÆÉrŠœ*§Éér†œ)gÉÙrŽœ+çÉùr\(ÉÅr‰\*—eG^.WÈ•r•\-×ȵr\/7Èr“Ü,·È­r›Ü.wÈr—Ü-÷ȽrŸÜ/ȃò<,È£ò˜<.OÈ“ò”<-Ïȳòœ¦ëú¤>•½~ZŸÑgõ9}^_Ðõ%}Y_ÑWõ5}]ßÐ7õ-}[ßÑwõ=}_?Ðõ#ýX?ÑOõ3ý\¿Ð/õ+ýZ¿Ñoõ;ý^г÷ûÉþ‰»76153·°d¹,c¹³Ùƒ,åµ|–ß XA+d…íàß™_ÄŠZ1;ÄŠ[ +i¥¬´•±²VÎÊ[«h•¬²U±C­ªU³êv˜Õ°šVËjÿÅü:V×êY}kðOÜÀ¿=khìðlÝØšXSkfÍ­…µ´V9}­íˆœºim­µ·ÖÑŽ²NÖÙºXWëfÝíhëa=­—õ¶>Ö׎Ɏîgým€ ´A6؆d¯‡xÒ0n#ldN{”¶16ÖÆÙx›`mRNv²MÉ©§Ú4›n3þj­3iͲÙÙrŽÍµy6ßääÚ"[lKl©-³å¶ÂVÚ*[mkl­­³õ¶Á6Ú&Ûl[lë¿öDþÙ6Ûn;l§í²Ý¶ÇöÚ>ÛoÇÚqv¼`'ÚIv²b§ÚivºagÚYv¶cçÚyv¾]`ÚEvñÜÿ»Ô.³Ëí »Ò®²«í»Ö®³ëí»Ñn²›í»Õn³Ûí»Óî²»í»×î³ûí{в‡í{Ô³Çí {òÿæDàÏdOÙÓöŒ=kÏÙóö‚½h/ÙËöнj¯Ùëö†½ioÙÛö޽kïÙûö}hÙÇö‰}jŸÙçö…}i_Ù×ö}kßÙ÷öƒýh?99»¸º¹{xò\žñÜ~çñ¼žÏó{/è…¼°ìE¼¨óC¼¸—ð’^ÊK{/ëå¼¼WðŠ^É+{?Ô«z5¯î‡y ¯éµ¼¶×ñº^Ïë{oèüpoìM¼©7óæÞÂ[z+oíGx?ÒÛz;oC弳wñ®ÞÍ»ûÑÞÃ{z/ïí}¼¯ãý¼¿ð>ÈûêÃ|¸ð‘>ÊGûëã|¼Oð‰>É'ûŸêÓˆü—_fúLŸå³}ŽÏõy>ßøB_ä‹}‰/õe¾ÜWøJ_å«}¯õu¾Þ7øFßä›}‹oõm¾ÝwøNßå»}ïõ}¾ßõãüx?ÁOô“üd?ÅOõÓüt?ÃÏô³ül?ÇÏõóü|¿À/ô‹üb¿Ä/ýG?Àô‡üaÄõÇüqŸô§üiÆŸõçüyÁ_ô—üeÅ_Íÿš¿îoø›þ–çü¯Ìßñwý=ß?ðý#ÿØ?ñOý3ÿÜ¿ð/ý+ÿÚ¿ñoý;ÿÞðý§ àаðˆH‘+2‘;Š<‘7òý|¿È¢`ŠÂ‘ó˜(E£XÅ£D”ŒRÙLél”ÉFÙl”‹òQ!*F¥¨UâШÕ¢z5¢fÔŠÚQ'êF½¨ ¢a4ŠÃ£q4‰¦Ñ,šG‹h™sÿVÑ:Žˆ6qd´vÑ>:DÇ8*:Eçè]£[t££GôŒ^Ñ;úDß8&úEÿcP Ž!14†Åð#cTŒŽ116ÆÅø˜cRLŽ)15¦Åô˜3³Ïš³cNÌy1?ÄÂX‹cI,e±MHÓ¤49MISÓ´4=ÍH3Ó¬4;ÍùÃ󙛿¥ùiAZ˜ýÑØWiñzÉoö.MËrêå¿dVüÕ˜•ÙXõ/YÜH«ÔkÒÚ?ãùÖýÙ+øO‘ÖÿÙ+ø÷‘6¤iSÚœ¶¤­i[ÚžÍìH;Ó®´;íI{Ó¾?{}ðÿMfbfRfrfJfjfZfzfFfffVfvfNfnf^f~fAfafQfqfIfifYfyfEfefUvÖêÌšÌÚ̺Ìúl{C66f6eËÍ™-Ùrkf[f{fGfgfWfwfOfofߟ½K€ÿ™ý?—ÿöÈ" endstream endobj 20 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /ASJHGN+FreeSansOblique /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 21 0 R /DW 600 /W [32 33 278 34 [355 556 556] 37 [889 667 191] 40 41 333 42 [389 584 278 333] 46 47 278 48 57 556 58 59 278 60 62 584 63 [556 1015] 65 66 667 67 68 722 69 [667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667] 90 [611 278 278 278] 94 [469 556 333] 97 98 556 99 [500 556 556] 102 [278 556 556] 105 106 222 107 [500 222 833] 110 113 556 114 [333 500 278 556 500 722] 120 122 500 123 [334 260 334 584] 160 [278 333] 162 165 556 166 [260 556 333 737 370 556 584 333 737 333 606 584] 178 179 352 180 [333 556 537 278 333 250 365 556] 188 190 947 191 191 611 192 197 667 198 [1000 722] 200 203 667 204 207 278 208 209 722 210 214 778 215 [584 778] 217 220 722 221 222 667 223 223 611 224 229 556 230 [889 500] 232 235 556 236 239 278 240 246 556 247 [584 611] 249 252 556 253 [500 556 500]] /CIDToGIDMap 23 0 R >> endobj 19 0 obj << /Type /Font /Subtype /Type0 /BaseFont /ASJHGN+FreeSansOblique /Encoding /Identity-H /DescendantFonts [20 0 R] >> endobj 5 0 obj << /Filter /FlateDecode /Length 2482 >> stream xœÅ[K$· ¾Ï¯¨£}p­ÞRAïìŒAlxnq.É>.6œL òïCJd‰©JÝ= äÐÝCŠb}¢¾¢(UZ~¸SË—;µú¸¼Ü½º{xEQ¾{4‹6ËÓgÒ¿nµµUAgçWëoÝjÓòôñî¯P*x¥œ…ßGú¼‡‘òÿ¶<ý©÷N€ð"^Ã$»º°x fùe·ù5¦å×»Ÿ³F§laXذ­Q³Œ¨q¶ú Yø ‘XmVçÀÎã°€†¡¬†Ï¦”ù¿~Çþ õüB¨Ñ®‚uÞ¬›ÄŠŠ`ª ’X·¸*3ÅްÎ/„k+VoÓš¢‹Ÿª’{°.éÕoS°ñìüB¨Xƒqk²+j¼¯.Hî±úW¦XÓÖù…PcBUÊSYÁF×誒{°æHÛ)ØíìüB¨q^€Ýìº5”EM.²ØC ŒžBÅ¿ÕÜýî˜rj6z-³Z¨€p›@ÉÙ4Ö $W|ѹ%j”«W³d+¯fu(%,W|?+“»&Äåé³É›ûF ū೜Äí…’{|Fç®->s6[sßÖzL)ŸÙ7ø@ãÅŒ³Üãs*wíñéC|Sߨ1‚M6z¼s%¾èÖ- $÷ø‚Ê]{|æßÔ7jÂ&ðm Çhì&|Üã‹ÛÒŸ=Ä7õ]á9íV•$<§íšª{pÛ¶ªmήoϨð›…T²5Ø@c´pAr‡ÎiXFà …¹kg¡00^.$:^¯ÙÉ=:×MàÍjƒßTTxdÓà‹†SañArÏÇܵÇwXÌ}»¨×è¾ ä&1£Æ‰äÉr/†ÜµÇwXÌ}£F‹ÄìµÆºPàÃõ4‰äÉr,ô01.sßy5‰Ù[UŠ˜ŠÏ*N…ÅÉ>¯}îÚâ³g ÇÜ·7Ûº‰ÄìÈMbFMɓ埥¬Úá;\8æ¾QcEböP÷Û&1£F‰äÉrÏçÕßáÂ1÷íCZeøRÂjMÂK9§íŠØƒ‹Pìu‰Ùž­3Ϩ0"1¨Žu“ú‚*]°Ü£ƒR´Ë,ölÕ˜»FM‰9t&r*,.HîÐØm†.1Û³ucî5J$æàò6QâsSañAr– 5 ßáÂ1÷'s¡l‘+¾8$÷ø¼Î]{|‡ ÇÜwàM$æ€Þ›ÄŒ/Ìr/ªÜµÇw¼wœúF‰9*›Ä•ãT˜}°ÜãÛTîÚã;Ù.Î|£&ˆÌa¯šû5VTf,wø¢¢¬Úàsg ÇÜ7j”HÌÑÜ$æèJJÛ}Üãƒ5Hu‰Ù-sߨ·G P•6‰5"؃s)—³=¸ÃUcæ9ù±`KfMMbFMÙ“å]ˆëÜáª1w+3THxt2Á.ŠØïûÁ“ :áˆetZ¾3 {=êì\ ~c†Y‰Ï"òé°\-þ•ý4ç¨X¹Ã9êOõÜbz]:XÛTn‘ßÏ_ŠûQû°º&U9ˆN-„ë3ôÑ#ø»q6h°!÷t°…ió˜¾ËßÅ×Q·&’Ó&Џ·oåè:<Éb½ÅâTNxQ¯Í£Ù†ÍÛOÍM÷q;šòA˜ø‹ú²)GD(Çí© 3<ûÂo€[+€]Äß­´Ãê”m÷7Ô×›ÜÏ_’ɨ™\‚hµñ6¢aRŒ‹v«nÈ¡ÁÒ¦¹|“£N9q2ìÓ² ú„×SçJø"…Ï5Íëðu~+ƒ€ò;¡l®Ö%¡Ø€åj1â,!VŸr ç×ÒÇà†x"åÌ—GÁŸm6 9àJl@bm¿°Ý2ÛRrôÍŒ8pr# O2¯ÿ&F@á©ëµiöh›%ÍÛïIwFØ¢ŸïkÝ5)÷8•üÙ€ÄÚ~Û½ž6¿æÜ¥µ·ô‘ï¤ëjoâl3o©½1ÁT~ÁF%55ènÀrµñËåSékùeèfz¤ì}»Hôü»°=_ÉêË^¢ý6nx…'éoãFñq;7š)x7œÂ…qçìqZjp;Ë»Áˆø Û|­Ìãø@çÕ!`Î4Iؘµ÷¹”E‡ã$Öp;‰{óm‚}ù¦ßÈ¡âãv5“õ&™€™jçìÿ|óPa7`¹ZŒX¤=¾óö¸þ¢uˆ÷Á—2åx0Ì 2 ±¶ŸÅP›µä—7Û€ÚI£*o_y^­ps¶>G«´I4ŸÄ­¶º¾Ñ[µ"x»ËÕb=“âzºUøúÁ«‰-?y¼0˜'ãªñÛêÒ'ÚÏ VÑ×pâû8ÍyînÀrµ…joszž{Óvì¬\å'JªÎI^ ¶2M ;+Kc„ìXÝŠöW³5í†NÞýå~YÞ¸§ÿ9y÷ÃÏzùòï1¦wzÑø(ÿÕÁâ ¿Ÿ÷ IV‹´h|±çã›ùôüéãò÷ÿ.O÷?~x\~ùæååeýÏ?þùñóúûó—_¾ý¶Fã§»‡?ßÃÏ£YRý·›X®Ø´´ÈÃ× £Æ‡UЧé5rMùÒýlfš«à &½º »•¹þÀYÖÿÄo; endstream endobj 4 0 obj << /Type /Page /CropBox [0 0 841.89 595.28] /MediaBox [0 0 841.89 595.28] /Rotate 0 /Resources << /Font << /F2 6 0 R /F3 11 0 R /F1 17 0 R /F4 19 0 R >> /Properties << /OC2 16 0 R >> /ExtGState << /GS1 18 0 R >> >> /Contents 5 0 R /LastModified (D:20190511135747+09'00') /BleedBox [0 0 841.89 595.28] /TrimBox [0 0 841.89 595.28] /ArtBox [0 0 841.89 595.28] /Group << /Type /Group /S /Transparency /CS /DeviceRGB >> /Annots [24 0 R] /PZ 1 /Parent 2 0 R >> endobj 26 0 obj << /Type /OCG /Name /Usage << /Print << /PrintState /ON >> /View << /ViewState /OFF >> >> >> endobj 2 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj 1 0 obj << /Type /Catalog /Pages 2 0 R /PageLayout /OneColumn /PageMode /UseNone /Names << >> /ViewerPreferences << /Direction /L2R >> /OCProperties << /OCGs [26 0 R 16 0 R] /D << /ON [26 0 R] /OFF [16 0 R] /AS [<< /Event /Print /OCGs [26 0 R 16 0 R] /Category [/Print] >> << /Event /View /OCGs [26 0 R 16 0 R] /Category [/View] >>] >> >> >> endobj 3 0 obj << /Title /Creator /CreationDate (D:20190511135747+09'00') /Producer (www.ilovepdf.com) /ModDate (D:20190512051509Z) >> endobj 25 0 obj << /Type /ObjStm /N 1 /First 5 /Filter /FlateDecode /Length 222 >> stream xœEOMkÃ0 ½ëWèÖ–1KvRÛ)¡m +lc¤ë©ô²6û`à„Ì#ìßO^;¼§'é I&G(K §ï¾EªBè"Ðîë9þæwïá¨iOÞå=²ò9ú¬PlQ‹>]w!¶!~bYoêšÙzf—ÿ™³ŠÙÔœû‡ÙL›M>›´ê6yD·zD¹ ‡{œ‹Q_ ñHÒ›•a]ðRk-]î.¸˜1ϤyÕ çvÀË,Ë™¦GwHûf ‰pþc¿"ÇQÅS~QÝ𺀵¬¼EÚ&?øCO endstream endobj 27 0 obj << /Size 28 /Root 1 0 R /Info 3 0 R /ID [<6CA88ACE09FCA48604EB9148C7C21F85> <0D6140CDC9D05D8ED919B65B60FAB72E>] /Type /XRef /W [1 2 2] /Filter /FlateDecode /Index [0 28] /Length 114 >> stream xœc``øÿŸ±l cY4(ÿ$Šÿ‰,F !?HHÏÌ߀?`9 $|´„‡0ÿ$„€„ÅÄ ák"&‰ÌZ ‘Z$Bõ@b %a| L ’@VÅ= QzHT)20òq endstream endobj startxref 31265 %%EOF redmine-6.0.5/test/fixtures/files/configuration/000077500000000000000000000000001500112024600217355ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/files/configuration/default.yml000066400000000000000000000001001500112024600240730ustar00rootroot00000000000000default: somesetting: foo production: development: test: redmine-6.0.5/test/fixtures/files/configuration/empty.yml000066400000000000000000000000531500112024600236140ustar00rootroot00000000000000default: production: development: test: redmine-6.0.5/test/fixtures/files/configuration/no_default.yml000066400000000000000000000001001500112024600245670ustar00rootroot00000000000000default: production: development: test: somesetting: foo redmine-6.0.5/test/fixtures/files/configuration/overrides.yml000066400000000000000000000001231500112024600244560ustar00rootroot00000000000000default: somesetting: foo production: development: test: somesetting: bar redmine-6.0.5/test/fixtures/files/hello.js000066400000000000000000000000411500112024600205220ustar00rootroot00000000000000document.write('Hello, World!'); redmine-6.0.5/test/fixtures/files/hg-export.diff000066400000000000000000000004461500112024600216410ustar00rootroot00000000000000# HG changeset patch # User test # Date 1348014182 -32400 # Node ID d1c871b8ef113df7f1c56d41e6e3bfbaff976e1f # Parent 180b6605936cdc7909c5f08b59746ec1a7c99b3e modify test1.txt diff -r 180b6605936c -r d1c871b8ef11 test1.txt --- a/test1.txt +++ b/test1.txt @@ -1,1 +1,1 @@ -test1 +modify test1 redmine-6.0.5/test/fixtures/files/import_dates.csv000066400000000000000000000002071500112024600222740ustar00rootroot00000000000000subject;start;due;custom Valid dates;10/07/2015;12/08/2015;14/07/2015 Invalid start date;04/15/2015;; Invalid custom date;;;04/15/2015 redmine-6.0.5/test/fixtures/files/import_dates_ja.csv000066400000000000000000000000621500112024600227450ustar00rootroot00000000000000subject;start Date in %Y/%m/%d format;2019/05/28; redmine-6.0.5/test/fixtures/files/import_iso8859-1.csv000066400000000000000000000001271500112024600224630ustar00rootroot00000000000000column A;column B;column C Contenu en français;value1B;value1C value2A;value2B;value2C redmine-6.0.5/test/fixtures/files/import_issues.csv000066400000000000000000000007041500112024600225110ustar00rootroot00000000000000priority;subject;description;start_date;due_date;parent;private;progress;custom;version;category;user;estimated_hours;tracker;status;multicustom High;First;First description;2015-07-08;2015-08-25;;no;;PostgreSQL;;New category;dlopper;1;bug;new;"PostgreSQL, Oracle" Normal;Child 1;Child description;;;1;yes;10;MySQL;2.0;New category;;2;feature request;new;MySQL Normal;Child of existing issue;Child description;;;#2;no;20;;2.1;Printing;;3;bug;assigned; redmine-6.0.5/test/fixtures/files/import_issues_auto_mapping.csv000066400000000000000000000004371500112024600252570ustar00rootroot00000000000000priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6;unique_id;"Is duplicate of" High;First;2015-07-08;;no;;PostgreSQL;;New category;dlopper;1;bug;new;"PostgreSQL, Oracle";2;1;4;"Column with empty header" redmine-6.0.5/test/fixtures/files/import_issues_no_data_row.csv000066400000000000000000000002101500112024600250550ustar00rootroot00000000000000priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6; redmine-6.0.5/test/fixtures/files/import_issues_single_quotation.csv000066400000000000000000000007041500112024600261550ustar00rootroot00000000000000priority;subject;description;start_date;due_date;parent;private;progress;custom;version;category;user;estimated_hours;tracker;status;multicustom High;First;First description;2015-07-08;2015-08-25;;no;;PostgreSQL;;New category;dlopper;1;bug;new;'PostgreSQL, Oracle' Normal;Child 1;Child description;;;1;yes;10;MySQL;2.0;New category;;2;feature request;new;MySQL Normal;Child of existing issue;Child description;;;#2;no;20;;2.1;Printing;;3;bug;assigned; redmine-6.0.5/test/fixtures/files/import_issues_utf8_with_bom.csv000066400000000000000000000006411500112024600253470ustar00rootroot00000000000000"priority";subject;description;start_date;due_date;parent;private;progress;custom;version;category;user;estimated_hours;tracker;status High;First;First description;2015-07-08;2015-08-25;;no;;PostgreSQL;;New category;dlopper;1;bug;new Normal;Child 1;Child description;;;1;yes;10;MySQL;2.0;New category;;2;feature request;new Normal;Child of existing issue;Child description;;;#2;no;20;;2.1;Printing;;3;bug;assigned redmine-6.0.5/test/fixtures/files/import_issues_with_relation_and_invalid_issues.csv000066400000000000000000000004271500112024600313660ustar00rootroot00000000000000row;tracker;subject;status;related to; 1;Feature request;Issue 1;New;; 2;Feature request;Issue 2;New;1; 3;Feature request;;New;;This issue failes to import 4;Feature request;Issue 4;New;3;This import failes to reate the relationsip - import hangs 5;Feature request;Issue 5;New;; redmine-6.0.5/test/fixtures/files/import_subtasks.csv000066400000000000000000000002261500112024600230340ustar00rootroot00000000000000row;tracker;subject;parent;simple relation;delayed relation 1;bug;Root;;; 2;bug;Child 1;1;1,4;1 2d 3;bug;Grand-child;4;4;4 -1d 4;bug;Child 2;1;1;1 1d redmine-6.0.5/test/fixtures/files/import_subtasks_with_relations.csv000066400000000000000000000003251500112024600261470ustar00rootroot00000000000000row;tracker;subject;start;due;parent;follows 1;bug;2nd Child;2020-01-12;2020-01-20;3;2 1d 2;bug;1st Child;2020-01-01;2020-01-10;3; 3;bug;Parent;2020-01-01;2020-01-31;; 4;bug;3rd Child;2020-01-22;2020-01-31;3;1 1d redmine-6.0.5/test/fixtures/files/import_subtasks_with_unique_id.csv000066400000000000000000000004451500112024600261340ustar00rootroot00000000000000id;tracker;subject;parent;follows RED-IV;bug;Grand-child;RED-III; RED-III;bug;Child 2;RED-I;RED-II 1d RED-II;bug;Child 1;RED-I; RED-I;bug;Root;; BLUE-I;bug;Root;; BLUE-II;bug;Child 1;BLUE-I; BLUE-III;bug;Child 2;BLUE-I;BLUE-II 1d BLUE-IV;bug;Grand-child;BLUE-III; GREEN-II;bug;Thing;#1;#2 3d; redmine-6.0.5/test/fixtures/files/import_time_entries.csv000066400000000000000000000004611500112024600236650ustar00rootroot00000000000000row;issue_id;date;hours;comment;activity;overtime;user 1;;2020-01-01;1;Some Design;Design;yes;jsmith@somenet.foo 2;;2020-01-02;2;Some Development;Development;yes;jsmith@somenet.foo 3;1;2020-01-03;3;Some QA;QA;no;dlopper@somenet.foo 4;2;2020-01-04;4;Some Inactivity;Inactive Activity;no;jsmith@somenet.foo redmine-6.0.5/test/fixtures/files/import_users.csv000066400000000000000000000005461500112024600223430ustar00rootroot00000000000000row;login;firstname;lastname;mail;language;admin;auth_source;password;must_change_passwd;status;phone_number 1;user1;One;CSV;user1@somenet.foo;en;yes;;password;yes;active;000-1111-2222 2;user2;Two;Import;user2@somenet.foo;ja;no;;password;no;locked;333-4444-5555 3;user3;Three;User;user3@somenet.foo;-;no;LDAP test server;password;no;registered;666-7777-8888 redmine-6.0.5/test/fixtures/files/invalid-Shift_JIS.csv000066400000000000000000000000021500112024600230010ustar00rootroot00000000000000È€redmine-6.0.5/test/fixtures/files/iso8859-1.txt000066400000000000000000000012561500112024600211210ustar00rootroot00000000000000Index: trunk/app/controllers/issues_controller.rb =================================================================== --- trunk/app/controllers/issues_controller.rb (révision 1483) +++ trunk/app/controllers/issues_controller.rb (révision 1484) @@ -149,7 +149,7 @@ attach_files(@issue, params[:attachments]) flash[:notice] = 'Demande créée avec succès' Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') - redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project + redirect_to :controller => 'issues', :action => 'show', :id => @issue return end end redmine-6.0.5/test/fixtures/files/japanese-utf-8.txt000066400000000000000000000000121500112024600223470ustar00rootroot00000000000000日本語 redmine-6.0.5/test/fixtures/files/mbcs-multiline-text.txt000066400000000000000000000104471500112024600235430ustar00rootroot00000000000000An emoticon is represented by 4 bytes in UTF-8 encoding. If you simply read the first 4096 bytes of this file, the trailing characters of a multi-byte sequence might be cut off, resulting in an invalid UTF-8 string. 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ 😀ðŸ˜ðŸ˜‚😃😄😅😆😇😈😉😊😋😌ðŸ˜ðŸ˜ŽðŸ˜ðŸ˜ðŸ˜‘😒😓😔😕😖😗😘😙😚😛😜ðŸ˜ðŸ˜žðŸ˜ŸðŸ˜ ðŸ˜¡ðŸ˜¢ðŸ˜£ðŸ˜¤ðŸ˜¥ðŸ˜¦ðŸ˜§ðŸ˜¨ðŸ˜©ðŸ˜ªðŸ˜«ðŸ˜¬ðŸ˜­ðŸ˜®ðŸ˜¯ðŸ˜°ðŸ˜±ðŸ˜²ðŸ˜³ðŸ˜´ðŸ˜µðŸ˜¶ðŸ˜·ðŸ˜¸ðŸ˜¹ðŸ˜ºðŸ˜»ðŸ˜¼ðŸ˜½ðŸ˜¾ðŸ˜¿ðŸ™€ðŸ™ðŸ™‚🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌ðŸ™ðŸ™ŽðŸ™ redmine-6.0.5/test/fixtures/files/testfile.md000066400000000000000000000000441500112024600212250ustar00rootroot00000000000000# Header 1 ## Header 2 ### Header 3 redmine-6.0.5/test/fixtures/files/testfile.textile000066400000000000000000000000511500112024600223010ustar00rootroot00000000000000h1. Header 1 h2. Header 2 h3. Header 3 redmine-6.0.5/test/fixtures/files/testfile.txt000066400000000000000000000000731500112024600214460ustar00rootroot00000000000000this is a text file for upload tests with multiple lines redmine-6.0.5/test/fixtures/files/unclosed_quoted_field.csv000066400000000000000000000000561500112024600241440ustar00rootroot00000000000000subject;description foo;"Unclosed quoted fieldredmine-6.0.5/test/fixtures/groups_users.yml000066400000000000000000000001431500112024600212450ustar00rootroot00000000000000--- groups_users_001: group_id: 10 user_id: 8 groups_users_002: group_id: 11 user_id: 8 redmine-6.0.5/test/fixtures/issue_categories.yml000066400000000000000000000005311500112024600220430ustar00rootroot00000000000000--- issue_categories_001: name: Printing project_id: 1 assigned_to_id: 2 id: 1 issue_categories_002: name: Recipes project_id: 1 assigned_to_id: id: 2 issue_categories_003: name: Stock management project_id: 2 assigned_to_id: id: 3 issue_categories_004: name: Printing project_id: 2 assigned_to_id: id: 4 redmine-6.0.5/test/fixtures/issue_relations.yml000066400000000000000000000003041500112024600217140ustar00rootroot00000000000000issue_relation_001: id: 1 issue_from_id: 10 issue_to_id: 9 relation_type: blocks delay: issue_relation_002: id: 2 issue_from_id: 2 issue_to_id: 3 relation_type: relates delay: redmine-6.0.5/test/fixtures/issue_statuses.yml000066400000000000000000000011601500112024600215700ustar00rootroot00000000000000--- issue_statuses_001: id: 1 name: New description: Description for New issue status is_closed: false position: 1 issue_statuses_002: id: 2 name: Assigned description: Description for Assigned issue status is_closed: false position: 2 issue_statuses_003: id: 3 name: Resolved description: Description for Resolved issue status is_closed: false position: 3 issue_statuses_004: id: 4 name: Feedback is_closed: false position: 4 issue_statuses_005: id: 5 name: Closed is_closed: true position: 5 issue_statuses_006: id: 6 name: Rejected is_closed: true position: 6 redmine-6.0.5/test/fixtures/issues.yml000066400000000000000000000137001500112024600200230ustar00rootroot00000000000000--- issues_001: created_on: <%= 3.days.ago.to_fs(:db) %> project_id: 1 updated_on: <%= 1.day.ago.to_fs(:db) %> priority_id: 4 subject: Cannot print recipes id: 1 fixed_version_id: category_id: 1 description: Unable to print recipes tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 start_date: <%= 1.day.ago.to_date.to_fs(:db) %> due_date: <%= 10.day.from_now.to_date.to_fs(:db) %> estimated_hours: 200.0 root_id: 1 lft: 1 rgt: 2 lock_version: 3 issues_002: created_on: 2006-07-19 21:04:21 +02:00 project_id: 1 updated_on: 2006-07-19 21:09:50 +02:00 priority_id: 5 subject: Add ingredients categories id: 2 fixed_version_id: 2 category_id: description: Ingredients of the recipe should be classified by categories tracker_id: 2 assigned_to_id: 3 author_id: 2 status_id: 2 start_date: <%= 2.day.ago.to_date.to_fs(:db) %> due_date: estimated_hours: 0.5 root_id: 2 lft: 1 rgt: 2 lock_version: 3 done_ratio: 30 issues_003: created_on: 2006-07-19 21:07:27 +02:00 project_id: 1 updated_on: 2006-07-19 21:07:27 +02:00 priority_id: 4 subject: Error 281 when updating a recipe id: 3 fixed_version_id: category_id: description: Error 281 is encountered when saving a recipe tracker_id: 1 assigned_to_id: 3 author_id: 2 status_id: 1 start_date: <%= 15.day.ago.to_date.to_fs(:db) %> due_date: <%= 5.day.ago.to_date.to_fs(:db) %> estimated_hours: 1.0 root_id: 3 lft: 1 rgt: 2 issues_004: created_on: <%= 5.days.ago.to_fs(:db) %> project_id: 2 updated_on: <%= 2.days.ago.to_fs(:db) %> priority_id: 4 subject: Issue on project 2 id: 4 fixed_version_id: category_id: description: Issue on project 2 tracker_id: 1 assigned_to_id: 2 author_id: 2 status_id: 1 root_id: 4 lft: 1 rgt: 2 issues_005: created_on: <%= 5.days.ago.to_fs(:db) %> project_id: 3 updated_on: <%= 2.days.ago.to_fs(:db) %> priority_id: 4 subject: Subproject issue id: 5 fixed_version_id: category_id: description: This is an issue on a cookbook subproject tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 estimated_hours: 2.0 root_id: 5 lft: 1 rgt: 2 issues_006: created_on: <%= 1.minute.ago.to_fs(:db) %> project_id: 5 updated_on: <%= 1.minute.ago.to_fs(:db) %> priority_id: 4 subject: Issue of a private subproject id: 6 fixed_version_id: category_id: description: This is an issue of a private subproject of cookbook tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 start_date: <%= Date.today.to_fs(:db) %> due_date: <%= 1.days.from_now.to_date.to_fs(:db) %> root_id: 6 lft: 1 rgt: 2 issues_007: created_on: <%= 10.days.ago.to_fs(:db) %> project_id: 1 updated_on: <%= 10.days.ago.to_fs(:db) %> priority_id: 5 subject: Issue due today id: 7 fixed_version_id: category_id: description: This is an issue that is due today tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 start_date: <%= 10.days.ago.to_fs(:db) %> due_date: <%= Date.today.to_fs(:db) %> lock_version: 0 root_id: 7 lft: 1 rgt: 2 issues_008: created_on: <%= 10.days.ago.to_fs(:db) %> project_id: 1 updated_on: <%= 10.days.ago.to_fs(:db) %> priority_id: 5 subject: Closed issue id: 8 fixed_version_id: category_id: description: This is a closed issue. tracker_id: 1 assigned_to_id: author_id: 2 status_id: 5 start_date: due_date: lock_version: 0 root_id: 8 lft: 1 rgt: 2 closed_on: <%= 3.days.ago.to_fs(:db) %> issues_009: created_on: <%= 1.minute.ago.to_fs(:db) %> project_id: 5 updated_on: <%= 1.minute.ago.to_fs(:db) %> priority_id: 5 subject: Blocked Issue id: 9 fixed_version_id: category_id: description: This is an issue that is blocked by issue #10 tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 start_date: <%= Date.today.to_fs(:db) %> due_date: <%= 1.days.from_now.to_date.to_fs(:db) %> root_id: 9 lft: 1 rgt: 2 issues_010: created_on: <%= 1.minute.ago.to_fs(:db) %> project_id: 5 updated_on: <%= 1.minute.ago.to_fs(:db) %> priority_id: 5 subject: Issue Doing the Blocking id: 10 fixed_version_id: category_id: description: This is an issue that blocks issue #9 tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 start_date: <%= Date.today.to_fs(:db) %> due_date: <%= 1.days.from_now.to_date.to_fs(:db) %> root_id: 10 lft: 1 rgt: 2 issues_011: created_on: <%= 3.days.ago.to_fs(:db) %> project_id: 1 updated_on: <%= 1.day.ago.to_fs(:db) %> priority_id: 5 subject: Closed issue on a closed version id: 11 fixed_version_id: 1 category_id: 1 description: tracker_id: 1 assigned_to_id: author_id: 2 status_id: 5 start_date: <%= 1.day.ago.to_date.to_fs(:db) %> due_date: root_id: 11 lft: 1 rgt: 2 closed_on: <%= 1.day.ago.to_fs(:db) %> issues_012: created_on: <%= 3.days.ago.to_fs(:db) %> project_id: 1 updated_on: <%= 1.day.ago.to_fs(:db) %> priority_id: 5 subject: Closed issue on a locked version id: 12 fixed_version_id: 2 category_id: 1 description: tracker_id: 1 assigned_to_id: author_id: 3 status_id: 5 start_date: <%= 1.day.ago.to_date.to_fs(:db) %> due_date: root_id: 12 lft: 1 rgt: 2 closed_on: <%= 1.day.ago.to_fs(:db) %> issues_013: created_on: <%= 5.days.ago.to_fs(:db) %> project_id: 3 updated_on: <%= 2.days.ago.to_fs(:db) %> priority_id: 4 subject: Subproject issue two id: 13 fixed_version_id: category_id: description: This is a second issue on a cookbook subproject tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 root_id: 13 lft: 1 rgt: 2 issues_014: id: 14 created_on: <%= 15.days.ago.to_fs(:db) %> project_id: 3 updated_on: <%= 15.days.ago.to_fs(:db) %> priority_id: 5 subject: Private issue on public project fixed_version_id: category_id: description: This is a private issue tracker_id: 1 assigned_to_id: author_id: 2 status_id: 1 is_private: true root_id: 14 lft: 1 rgt: 2 redmine-6.0.5/test/fixtures/journal_details.yml000066400000000000000000000014241500112024600216670ustar00rootroot00000000000000--- journal_details_001: old_value: "1" property: attr id: 1 value: "2" prop_key: status_id journal_id: 1 journal_details_002: old_value: "40" property: attr id: 2 value: "30" prop_key: done_ratio journal_id: 1 journal_details_003: old_value: property: attr id: 3 value: "6" prop_key: fixed_version_id journal_id: 4 journal_details_004: old_value: "This word was removed and an other was" property: attr id: 4 value: "This word was and an other was added" prop_key: description journal_id: 3 journal_details_005: old_value: Old value property: cf id: 5 value: New value prop_key: 2 journal_id: 3 journal_details_006: old_value: property: attachment id: 6 value: 060719210727_picture.jpg prop_key: 4 journal_id: 3 redmine-6.0.5/test/fixtures/journals.yml000066400000000000000000000022401500112024600203420ustar00rootroot00000000000000--- journals_001: created_on: <%= 2.days.ago.to_date.to_fs(:db) %> updated_on: <%= 1.days.ago.to_date.to_fs(:db) %> notes: "Journal notes" id: 1 journalized_type: Issue user_id: 1 journalized_id: 1 updated_by_id: 1 journals_002: created_on: <%= 1.days.ago.to_date.to_fs(:db) %> updated_on: <%= 1.days.ago.to_date.to_fs(:db) %> notes: "Some notes with Redmine links: #2, r2." id: 2 journalized_type: Issue user_id: 2 journalized_id: 1 journals_003: created_on: <%= 1.days.ago.to_date.to_fs(:db) %> updated_on: <%= 1.days.ago.to_date.to_fs(:db) %> notes: "A comment with inline image: !picture.jpg! and a reference to #1 and r2." id: 3 journalized_type: Issue user_id: 2 journalized_id: 2 journals_004: created_on: <%= 1.days.ago.to_date.to_fs(:db) %> updated_on: <%= 1.days.ago.to_date.to_fs(:db) %> notes: "A comment with a private version." id: 4 journalized_type: Issue user_id: 1 journalized_id: 6 journals_005: id: 5 created_on: <%= 1.days.ago.to_date.to_fs(:db) %> updated_on: <%= 1.days.ago.to_date.to_fs(:db) %> notes: "A comment on a private issue." user_id: 2 journalized_type: Issue journalized_id: 14 redmine-6.0.5/test/fixtures/ldap/000077500000000000000000000000001500112024600167045ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/ldap/slapd.centos6.conf000066400000000000000000000012261500112024600222370ustar00rootroot00000000000000# Sample OpenLDAP configuration file for Redmine LDAP test server # CentOS6 openldap-servers-2.4.40-6.el6_7.x86_64 # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/openldap.schema include /etc/openldap/schema/nis.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args modulepath /usr/lib64/openldap moduleload back_bdb.la database bdb suffix "dc=redmine,dc=org" rootdn "cn=Manager,dc=redmine,dc=org" rootpw secret directory /var/lib/ldap # Indices to maintain index objectClass eq redmine-6.0.5/test/fixtures/ldap/slapd.conf000066400000000000000000000007361500112024600206640ustar00rootroot00000000000000# Sample OpenLDAP configuration file for Redmine LDAP test server # ucdata-path ./ucdata include ./schema/core.schema include ./schema/cosine.schema include ./schema/inetorgperson.schema include ./schema/openldap.schema include ./schema/nis.schema pidfile ./run/slapd.pid argsfile ./run/slapd.args database bdb suffix "dc=redmine,dc=org" rootdn "cn=Manager,dc=redmine,dc=org" rootpw secret directory ./redmine # Indices to maintain index objectClass eq redmine-6.0.5/test/fixtures/ldap/slapd.ubuntu.12.04.conf000066400000000000000000000011611500112024600226410ustar00rootroot00000000000000# Sample OpenLDAP configuration file for Redmine LDAP test server # Ubuntu 12.04 LTS Server Edition 64 bit slapd (2.4.28-1.1ubuntu4.6) # include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/nis.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args modulepath /usr/lib/ldap moduleload back_bdb.la database bdb suffix "dc=redmine,dc=org" rootdn "cn=Manager,dc=redmine,dc=org" rootpw secret # Indices to maintain index objectClass eq redmine-6.0.5/test/fixtures/ldap/test-ldap.ldif000066400000000000000000000020031500112024600214340ustar00rootroot00000000000000dn: dc=redmine,dc=org objectClass: top objectClass: dcObject objectClass: organization o: redmine.org dc: redmine dn: cn=admin,dc=redmine,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e2NyeXB0fWlWTU9DcUt6WWxXRDI= dn: ou=Person,dc=redmine,dc=org ou: Person objectClass: top objectClass: organizationalUnit dn: uid=example1,ou=Person,dc=redmine,dc=org objectClass: posixAccount objectClass: top objectClass: inetOrgPerson gidNumber: 0 givenName: Example sn: One uid: example1 homeDirectory: /home/example1 cn: Example One uidNumber: 0 mail: example1@redmine.org userPassword:: e1NIQX1mRXFOQ2NvM1lxOWg1WlVnbEQzQ1pKVDRsQnM9 dn: uid=edavis,ou=Person,dc=redmine,dc=org objectClass: posixAccount objectClass: top objectClass: inetOrgPerson gidNumber: 0 givenName: Eric sn: Davis uid: edavis mail: edavis@littlestreamsoftware.com homeDirectory: /home/edavis cn: Eric Davis uidNumber: 0 userPassword:: e1NIQX1mRXFOQ2NvM1lxOWg1WlVnbEQzQ1pKVDRsQnM9 redmine-6.0.5/test/fixtures/mail_handler/000077500000000000000000000000001500112024600204035ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/mail_handler/apple_mail_with_attachment.eml000066400000000000000000000370171500112024600264600ustar00rootroot00000000000000From JSmith@somenet.foo Mon Jun 27 06:55:56 2011 Return-Path: X-Original-To: redmine@somenet.foo Delivered-To: redmine@somenet.foo From: John Smith Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: multipart/alternative; boundary=Apple-Mail-3-163265085 Subject: Test attaching images to tickets by HTML mail Date: Mon, 27 Jun 2011 16:55:46 +0300 To: redmine@somenet.foo Message-Id: <7ABE3636-07E8-47C9-90A1-FCB1AA894DA1@somenet.foo> X-Mailer: Apple Mail (2.1084) --Apple-Mail-3-163265085 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Yet another test! --Apple-Mail-3-163265085 Content-Type: multipart/related; type="text/html"; boundary=Apple-Mail-4-163265085 --Apple-Mail-4-163265085 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
    = --Apple-Mail-4-163265085 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=paella.jpg Content-Type: image/jpg; x-unix-mode=0644; name="paella.jpg" Content-Id: <1207F0B5-9F9D-4AB4-B547-AF9033E82111> /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCACmAMgDASIA AhEBAxEB/8QAHQAAAgMBAQEBAQAAAAAAAAAABQYABAcDCAIBCf/EADsQAAEDAwMCBQIDBQcFAQAA AAECAwQABREGEiExQQcTIlFhcYEUMpEVI0Kh0QhSYrHB4fAWJCUzQ3L/xAAaAQADAQEBAQAAAAAA AAAAAAADBAUCAQYA/8QAKhEAAgIBBAICAgIDAAMAAAAAAQIAAxEEEiExIkEFE1FhMnFCkaEjwdH/ 2gAMAwEAAhEDEQA/ACTUdSsdhRCNE54GTRaBaXHiBtNOVo0wEpSt8BKfmpWCZRPHcVbdZ3X1J9Jx Tla9OBpIU8Noo7Gjx4qdrCBkfxGupUSck13GJjeT1ObEdthOG04/zpX8SNXjR1njym46ZMmQ+llp pStuc9T9hRq/X22afhKl3iazEYHdxWCfgDqT9K83eKfiFG1RfIEi3tuC3W9KlNh0YLqyeuO3QV0D MznM9O2uai4QI8psYQ8gLA9virY615P034xX+zNNslLDsMKOG1J5HuAa3nQPiBZ9WtpUy4lmcE4U ypXP2rmMHmcI/EealD7te7ZZ2S7dLhGiN9cvOBP+dIF18btHw3C1DkSbi7nATGZJBPwTitTIyZp9 SsCun9oJaEFUDTy0oyQFyXSOfoB/rQOL466huE9LIagxW1A48tkuKJxwBlQrm4YzNhGPE9Mmua8Y JrzsrXPiQ42y7+KtsZt4kpS8ltK0p91J5IzXGFr3xFef8pMqE4vJABZT6se3FDNyEZzNCh89Tfbv aoV2iKj3GO2+0eyh0+h7VkWq/CqTDUqXpp0uJHPkKOFj6HofvQRzxZ1bbwFTG7c+jO0lKeh+cGi8 bxrebZZVMtjDqljKgw4Rt9uuea5vEIEceoL09ZnHQoyGy3KaOFhxO0j6g0J8QNPr3tzorHmsJSUv NgdQeprTIuqbfqdtD7MRxh7HO/H6ZHWlnW0e5tQnv2WgupAyEg8p9xUl7WGowpzKCoDXyJ5nvMdK Uuho4bSv057CqK2stIWrgEZp2kWtE+O5+MC0OKUchHFCbnaWVNeW1KU3tTtwtAUkj6jkfpXoK7gQ AZLsqYEmJ0mUBlLeCfeqHKl5PqJopNhriupQWyoqPpKeQfpTXYPDW+3ZlEhTTcVpXI8w+oj6Cmty qMxTazHAi1ZLG/PXuKClv3Ip7t2n4yI3lKZSsEc7hmicXwfu5ThN22fCUH+tXB4QX1KdzN6WVjth Q/1oDuG/yjCIV/xgWLouQFfiLK/5LqejbnKT9D1FStX05DRaYrTN8K232wEl1aMJV856VKF9hPc3 9QPM32HEjxEjykBSh/ERSd4s61uGjLbBnQrcie2t4pfClEFKAM8Y704uvtsMrdfcQ20gZUtZAAHu SawHxt8V7PKt/wCytPp/aLrToW7JAPlNkAjAPfOfpQ0JY4E42B3Nf09ruwXvTQvjM9lmGkfvvOWE llXdKvn/ADrONZeNwU28zo2Ml1tHpXc5Y2spP+EHlR/5ivOzYkPPKdjMechRDjrCUHy1Ec9Aa1Lw l0VF10pcy4XJC0RlbTFTgKbHwnokfSibFXkzAJbiJ0tN81jc1yHXplzkEEqkPA7UjvtR2H1/SrOl rGu6NvP7Q8yhaWkDruVj/n616Lvl20n4Z2cpeS02tSfRHbAU69/t8nivOGoNXzNQSVRbFAbtsFal FESEjBOepUR1rBs3D8CFVMHjmXNYW+wWtsMrlMvyyOW4h3FB9irpn70lx7k9AeDttW4w70DgWd3+ 1NmlvDi7XpL0iShcWG0dqllO5SlHsB35NG7l4PSRG823z0YbGFqkDaFK+MZx7d6XOu09Z2M8MKHb OBM1vBuAkJcuUgyHXRu3KfDp+5ycVTaeU36kKUlYOQQcEVrehvC5l1Mh/VClISHFMttIVgL45VnH TkEH4rQbjpHTbyGWVQIzL7bYabc2AnaMfYnAxk0K35Smo7e/2IRdC7eXUwfT5m6pfbtC/wARIlLW VNu7yoN9MlQ9h3NO+n9Cwo8rzZU1Sm2Mlx9YLaUkHjaOv3Nc7zd7FoyY5D07HR56SfMl7961ZGNo 9gKXrtd77dnkssoSwt7K9rZG8jHU44Tkc9q0rvbyvipnNgT9kTRLvqKy2JDgS/8AiH3hjecKXjv2 /SkG8akmRyhqG+hKSQ4dpyofBxxV2w+Hkuda27pMW5tcSpWxati1HJGQTkYp70xoS2MW1pp+ImXN koJLi+UtfP1FAt1dFPHcPXQ9nPUy+/3pu4usrYZS16MOKCAkuLJypRxX5aG5ExX4VlfC/Vt98e3z WvL8M9NsNMtyFyVyGx6h5uPMPyMcV9Q9HQbbdWwzHQGFHKVhStw+uTQTr6tu1IQad85M46baVarV uVkJ/mDVCVqWUll59t4FxlW0ocOA4k+1P8uLGU35UgAhQ2kgdRWUeIMi2WyKqASFLJJbWchQI7Ul pWWyw5GSYZ1IXA4Ez7U12mR7q95jCWgTuCQeoPsaGqntylbCpIdxnaSM/wBK56lujtydZS4UkNIw CBzQO4RURywWnUupcQF7knoT1BHYg5r0lFY2DIwZKvYq5x1DjUo26WzJKEuIQoFSFDIP+9bzaL0x +HZcZcQpC0ggewIrzYzNJQGpGVt+/cUw2PU8+0vqWEJnW8q/9KzgpHslXb6UV6yw4gBZg8z1NZbj Ek43LQDjkZFMLbkMcJW3+orKvDq86T1SUssrEef3iPq2rz8f3vtTZrtizaR0pOvD8XephOG2959a ycJH60HBBxDBhjMB+L9/RY7WpT7jam3kkNNJwSs+/NSss0Bpi4+Jmpfxl7kPOQ2k7iCfyI/hQOwz /vUroqrUnceZ8LnIG2Cdaa61Dq54i7SVJi5ymGwdjSf/ANe/86s6W0TLvkNySp5pcVjBUy0oAD5x 1P1NbDbPALTQjp/aC5bj+OS27tH+VOmjPDqw6QEv9lNPFcpIQ4p5zeSB0A/WtNYoXCwK1nOWgjwk sFrg2wuJjtKl5IJUBwPakLxDXbNI6/alaGW6b87uL1vjJCmAogjcvHTrnb8DpVnxj1q1oOS7b9PP j9qSEErA58gHuf8AF7CsStOurpBjKZioQqS6sqU+vlayepPvQytu3cgz/fEPWaXfFjYEfLlo5+bM /aurr+X33vW6lIJUD/dyen2p80zboMNG6NBEGOygJLy04cdAGRjjn5NYRD1NcjMMme8XpST6Q4Mp H0HStstF4kO2lMS5vAlTfq9O04PQZ+KifILaqg3PnPodS5o0S3I0q4x2T3Kr+obzH1HsjuFFpeUU B5s5Snck4ST0z0p502w5HZW86qW5lXLbpSeMfHFZH4gpFutbDlrmNtujlxvzc705HAHfB5qknVSI VliuWK7STcHVBL7Ticc8c8f70IaMaipWq4z+oo6jT2sr8ma3qCfBky48be4zvcAOB6gR/CMd6EXF m9EPKhx3Vx92EJdADmOmQKJ2y5xVpiJlW+OzPSj1LbSBtURyoGjFzWqPbHljClFBLbiBnHHUmpeT WdqiPISuDM/e0bark4YzkEJkJ9RebGF7u+T/AKVeg6DbVdXHJ6U/hi35KAlRGU44zj/WrtpdfSlt D7m54jKznr/WnOAVKa9Y7cGtDVWodhaH1WnVlD7cZxPhq3NMobbeBeZQnalKlZ47cUQDSGtvlqwn GEp7AVQdbddWQHkp2dOea6qWHQlPmJSscEE9aET/AJCK/X+JFxUtuKecHnKxx8VXRKiBSkuKII55 PSvq4yUQmf3qspxwc8is71fqZMeKtTO0AHn3V8UaitrDgdmcdtoyZ215q1USShq0bZClghTYPqFL Vr0xH1otbt1XKZkpT6cccfOaF6SZkz7q7dZYWHjz0ykJp2Yvi4YaYVHdUXjs2eSUlR7HPt89KoW5 p8af5D3OVLldz9GLmsNLR1WZiI+oJlRB5aHgBuKe2cdaxd5tVsuy0OJbdWwvkKGUq+or0PqiyXVy IJ7za1NlIJbz6m/fgdv61lN000qWJ09EWQ8++6lqM01k8geokY5p/wCK1RXK2Nn/AOz75PS1vStt Y594iCUnOauWi5SLXMDzIQ4g8ONOp3IcT7KHcVduWn7nbWg5OgSI6SopBcQUjPtzXK1RX1OqkMtb 0xcPO9PSkHrzV0WKRkHM86a2BwZqFm0da9c2pdw0asM3JgBT9qdd2uNH+8y51x7A/rSjrXUmq129 Om9TuyvKhu70NyUYd4GBlX8QofG1hcLbrBF/tZ/DvtqGEDhJQONpA6gjrXq61f8AS/jDo9mXNhNu nGxxPR2O5jkBXX+tY3bcFhPtoPAin4H6gsMTQgLEhtM7eoyGioBYI4Tx7Yx+pqUr668ILjZXDOtS XZsdvlMiGkJlND/GgYDg+Rg1KwUDHIM2r7Bgiei5NwiQo635cllllAypbiwAPvWO678c4UJuRH0y gSHkDBkrHpz2CR3+prHbXJ1L4o6matwkKaYP7xzkhthsdVEf8NLWrzbo94fh2RKjAjqLSHFnKniO Cs/X/KuLSAcN3OfYW5HUD3SXJutxfnTnVOyn1lbi1HJJNPnh9otyfbJF5lLabjpJQ0FjlZHUis9C lDOO9bdHkS4WkbXBlIMdaGUnyhwkjqFfU5pf5K566gqe+I98TpBqb9pnB/Q9wu7kdyOGUNNp3oWp Owq7+3P1r9uQmqllqS+S+ghClFWR+vtT/Z7goWGOopbjodwEltQOcdR16/WrcrTFmW4tyYZHmuDc dhwkDHSvNvq2BC2+up6PThdIzDvMypelJN2lI8+M9JKxsZS1/Cfcn2+tF9K6Oh6ZeW5fYS5VwKgl locpR3Cvk0+zJTdtioi2htDe5OVL/KAPcn3r5j3ZtdmkrKFTFJ3EDG7BAzgH9a+XX2sNi8CJXaZW c3GIN7u0u931+KwhaGGspKQMKcKepVV5UmU1DZZtzspMVKQXm3F5B+gHIH0zQCBImKuiJMeCuEH1 YCfVkjv+bqSKr6t1U7a7uxEgurS0yMLBASc/arlenBULiSGtOSSY6WKJKXckJU2tplSt6FA7gfvW gxA/sUBggDGSayGya5ed8tkNqSlXVYOVVpEZydIablRFF6ORgjGFJPyKga3Tuj5Il2rVC6sKT1L9 tiuPTnDI3eSfc/lqrqWOuHFK4qlF1HIX7j2NWIkyQ8XEApSUcD/Ea5TmZj2SggqUMKSrp9KUByQM T45U5mSS9UzJMtMZ93GFcqJ7UL8Q3UOOww24Bx6h3V8/Sqev0sx7u4IqkB5w8tJ4KFfNBXG3Fuo/ FPqLxA3FXXHtXp9PQiBXXiTGZrmIjTo68qh+Y2ygPhYSAlXIBz1rYHp04RkNRnWDOA5KyEgDrgVh mmSmPcCfQpWCACnINFdRXOW3GQ4+60GgcJKDgr+R70lqdP8AZaAvuUK3woDY4mqyrjeFWppZZUXW lnzUlYCVp+K+LLeYEoLLG5lGdxQk4wcfyrOourlyIzbDhcKVNhHB7e9XYlxatbam0dVDOAOT96Rf TEDBHMMpU9dTQpVxiTWXGUqDy1n0hxCSAPvXnfWVtnWO9TI8lpLHnZOGxhKkE54+K1K1XhLj4S4j GOnxX5qiNZ7wlpd1Di30ZS0hKtu4kdCaN8fqG0luxhwYtrdOtqZXsTA1dTWh+B+unNG6tbTIWTap hDUhGeE56L+oP8qSbtBXDnyWSB+7WUnadwH3rgYT6IQmEpS0VbU5WNyj8DrXr/F1/ueXIZT1P6Hh aVoSpJBSoZBB4IqVjPgP4ii72eHZLsSJrCPKadP8YA4B+cfrUpMgg4jK8jMybw5vUfT/AIXatujD iRc5S24DX95KVAkn/P8ASstODk9asPSXvwZbUEoQpzhtIwkYHt9z1q3NZiO2uNMhFLbif3chkryc 9lAHsabbAbP5i6DI/qctPSokW9w3p0cvsIcBLY7+2fituuVxYvDbAMZ2VIUkeX5I5x3Tgdqznwz0 xbb/ADZQuy3w2y2FISycHJz3+MVtWnNLwNMb3G0SZDvlgb3DlWPgf86V5/5e+oOAc7l/9y18WLK/ IdH/AHB+l23bLPLMl0RkyQS22r1eWQO/tR178NEju3GS8ZahyVIc7ewA4qpKKfxzTMOGHCsBZSob ueveitut+XGo8tpDacEp2DAP69ahNYHO4yo1rMxJgt22RLy0l5bYQ04jckLWfM+o7frVPUMpdg0a 65EfXvaX5XOArnp9hTtGgRbcyhL6PPbaG1ClnJAPvWeeMl0FogwnWGYkqKHSFxnUkpSojgkD79aJ pQbblr9ZgNRcAhMzli9zZYfS27NkPBIKAFKVnnkn2pf1PaZbMNm4PpkDzeV+c0UEK+p6/WtX8H5M GXDm3OS22Jq3P/W2AlIHwOgFVPF+VBfjqKi4sEHBKSAVfFegXWsmo+pV4zJZ0wareTFbw71Y1Ab/ AAjbcNh1Q/8Ae9yaYU33VESW5KdK1wucuMpwgj3FYq4S456E7VDjimGHqa6wYqIS5HmMq42LOQBT Wo0AYll5z+YCjV7MA+puVmuDkgh7evZt3bsdK46s1uiNZSY6iHwSj82CPnFC7PcbdbdOxkPTiqaB 5iQlXCf61mV9uC79dn39oDIVztGAajafRK9pPoSrZezKAOzKclyXcLgue8VLUo7sHrUaVIfeCloG T0Uo9qstKdbcBLZUg9DiuzkbY4VDIBGQkdBVkuBxOrRtAwf7naKlyMoqQ4pRI9RHH2qtc1/i/KS+ p3yWchtKwcIzX7HnoQv1nbgYUR7+9NESXCmR1xdjexxOXCTg9ODSzO1bBiJvCsCBFu3eahwltCnA O6ATj6082K2rlltyXGSsIGEhzPP1xQa1QJNngLmMuNPMrPKE5BwKuzrw6Yu6JJVGWkZSkHIXn274 pe8m0+H+51G2DBlu4J/DzFKbWhICiS2EgH7H2FD3JTMuclt7B2ArBzgJPvQNF1lSUFoON5JyST1P tmgEu5yY0wgJ2uoUd27nPtRKdEzHk8xezVLUnHudtXsRYc4rt8pxZdKvMSpWcH60M07a03W5JZcW UtgFSj8Dt96orKnVKUQVK6nv966R5b0dCksLLe4gkp68dOatKjBNgPMiM4Z9xHE1fwCkQx4pqYdC vJcC1RwT0WkZH8s1KVPDm+Psa208ogAtysqWOqyo4JP2qUtanPM2jDEL+OWn49u8R5UK0MbGClDg bSOApYyQPvSzM0rKt9qiXCRs8uSSlCeQoHnII+1aJ/aAZWjxImL3FILTSwR/+RX7bhqJ561XC5Jj O20pSnyFYJWMZypJ6djWLdSa1BzxDUaYWnaOzH/RlmZ0nYWPJab9SQqS5t/eLV2+wzj7UfZmouM8 MNtlsNoKlFZAV8H4FULPfmrmtyCtwJfQjKggFIVx2orHsbUZ1TzCktFwfvVKJJUB05968jqHaxyz y3t+sBeiJJTLSXA6hAWscFSTjke561yfkAlte4h88BIJwB3q5Hjx297RUpWfUD+YYqs5Gjx3HJJK ywRylIGM+/vShBMIrDMtpKiyVKcWtvaP3aRnn3HevOfi9eZM/UEiEv8A7eOHgkhfT0jg4+5r0JJu ENLad0plpWM9c8dqUtTaMtGoJS37gyXH3UANyEHH6iqXx99entD2CK31m1CqmZZomd+HjORbXte8 hOVLSk4USeTRm4xrvqbTjseUGmozTmVPLH5fgfNNNhYtWmJardbw3tf59XqIwepNM2poyJVpdKEt +SRuCR/EfemLdWou3oO/cJXVmsI08z3BiFp7UakMuonR0jk47+31oG7iTM/dkNoWvCdx/KCe9P8A dIzR1PAZfjtI3gx3QsAJHznFKOqbfbbXKSzbriZrwJ8390UJRjpgnrXpdNeLAM9kSDqKDWT+AYcu 1ivcK2x1KdiyYSejrCgSnPZXehTLqou7cghKRkgd6Px9SWp2xsMT23HF7QgpaOCFDoaCxFee4UKC gCT14P3oKs5B+xccx+kIpG0wlaJKZLB9KglB5Uo9KsLeDj2GzjI+1AjmPLH4ZzCVEApPAIopGCFR 1rSpW4naaFbWB5DqUabMnaYEuTGyc40le4deO1fMZam17krwAOua7yYjyZCiG8hZ65ya57WW3W2y lS3FDkFW0CmgdygdydZ4MT1HezzUy4iCwVKLKcFtSuD74r9uVtRJabLZ8obckpTlP60ItSLXOeDT KlR1spG9W7clw/ejN4mXa0MDYA9FLn7olIxtxyFCprVkWbU7/cY+0FNx6/UU70GYDBQw6FrUcAgH ke9Lq3FHkkk980xXedHuYWt6D5L4A2rQrCQO4xV+yaaiTrW5JL29GRgflUCOoJ5wPmqaOKUy/cl3 Zufw6itbriuAJHloSVPNlvJ/hB61RCwVAKPHc1YubQZmvNpSlKUqIACtwH371Tzk/FOKAeR7ibEj g+o06QWy7riziG2pDf4lsJCjknnrUrv4TtIe1/ZQ50Q+Fk/TkfzxUpW7ggQ1a7xmbF/aGsKEX83N U4IU8wFJZWMbtvBwf04pOieITadOMxXmWRJR6CsD1HHTH2xWx/2irAu9aJTIjJJkQXgsYHJSrg/6 V5os1rjsynVXOQY8uMsER1t8r+M9j0pSymu1P/J6j+ktatxtE23QtvmwYar3cX0JjyE+hhQ9ROeC a0CJJaLTe+Uhfm/l7/YUhWKUxfbKxCztdQkJStWdySf7o/rTHZLC7bW3g5M819Y2pLiPy/TmvLak AsSeCPUp7i1hB6h+Ytbnl+US2AfVx/nXyWg4kpeOQ4CPT2FVX0JacS6qWpASnC0qIINDLlKKGyGp QaLmADgYA74xzSY7zDpWW4Eq2e0N2yXMdmKS6twlCUO4IQj3+po86RGWzGjtNgO4AATwlPXNAmPK dLanH15K04SEE5x7GrsGWLnclJ9SHGuCrOCU+1E2s5zNfSE/7mJniFFciyHJ6XEktoIylWBjPPHv SnC1HKlFK25Kls7cBpSvy4PtWwXHSsCXIUqUt15Tg2qStfpx7kUIc0JZIqHlpGwqTgFJxgZzx809 XfWE22DJgwQD49TGr0pN2nlL7i2JKjvC1DCc9qUtRR47sjLQWiYkYdbX0PyDWwax09bZpcZtpdbl FJO5aztJxkD46Vl83TclMT8SlDjh28lIJwfY/NXdDqK8Ag4iGsosYHK8QVKiRIztv/BqccWUhT6l jASruBVpEoKkOAYLhJO0D9KGIUoqQ2vucYPaidptb0i6lCMNt8lSlq/N8VRcDblz1J9Tbf4CEGYb rzbjiEBLqQQAtQAzUs7jrqnGFNJy0fUMcA/WjlutUySrLT0dLGw5C08hQ6fbNCrTBuVlubjjkJ58 pJwU5Lef72B1pQMLFYZGY0bHQggS7KYUw35ivUlXU9xSfdCp5QWltSUp/iPfNaBLtv4KGiVOkYcf X5imS2dyE9uM8DvjrQc2hyYsg+WGSfSQKxRatfJMLepvXA7iilxtKmlMJcQ4nlSlKzn7U4wbou7Y RK9SGeUpzjJPciuLmi5ayDF8t3nsrHFfFx0lcbeSptYWhKUlS0EjBP8ADR2votx5DMSFF1eRjiGF OWuK4mO+y2lTyFIWpw5SCeivgZpNuCzBU4zEmBbTnUtq4UP+ZoxaNIXG6So5ebX5C3NillXQd/pV zWlmYtEJmEiARLz6XEerf78jrXy3VK4XO4mDsSzbwMYiQI8iQlx5tpa2kfmWBwK4BKVdDiicpq5t NGItl1DbbYdUgDgAjO40JZSpxwBA5zVBDnn1EnGD+5rn9n+1pXeZlzcQFIYbCEEjoo9x9galN/hp BFn06wwQA89+9cPfJ7fpUpG072zHql2Libtf225NukRX+WnWyhX0Iry9drM3ar2i4XN0h6BKS28r O5TiByleD8Yr0ldJyHWtyOD0UKzHW9taloXM8jzkhBbkN4yVt+4HunqPvQXBxkTqH1E2dck2u5wp 9rUW0yiVPKCdwQgkYJx361pca9NSGG3C5kIR6nkD0g/Ws5uMMT4DJtFyZTCdSlAjlsJKTnHpP+hr hapk+yxP2fNW7+DeSrAIyN3uP0qJfQtij8/9lPTlkznmPNwdh3FgILzgcK/3bqSfUfZQpW1BMuNr hKeeQlCyrCWeu0DjdXL9oW2NAadjuLbdj4UFBQIWoe6Scg/NEo5cu81h+5JAQtvcgdE++Tmlvr+o 5YZEbpvstyvRlPSGtFvNJjzox4JKHknHP0pq03c2GlTAp5j8Spw7d5CVEYHANL9xsrTbMibHUCUJ IKEt8JPvxSey4ZylLX/8yOSMbqIK67stXwIT0NxyZubSDKUX1lbawkAZ9u+KHXeez5ja3HwhpPxy D2HNZu1rG7W5zeqS0EgbUggHA+nvVaNqOXdr5HVNcQhCV71BKQNx7ZzxQxoW7PUIgGcmNs6SqW+W 2hvdc53qRgkHgc0YsdpVGgluSGygrUdqQClJ+TXVu2sSSu4x3PxD20qDa14yccAe2KruPvNw23Lg z+HDytqh1Chjoo9utAJ9LC22h0CqMRc15omyXhCnLc0mLc0c7mcBKiBnCk/PuKy646YvkCU0qLuL iWylQUPyE9cH5/WtkRLs0VhTLzqW22sEqLm5xXPTjtV2bLt88sttrCSpQxsOSCPeqGn191ACnyH7 k27RI/K8TFdFOOYcTcAWENqIcUpJBz23DvTqvWMRElm3uQiUpIQ08BgJV259qdFWjzorsd8RXQ7k KJHCh7E9yBWWatszVpmsKRuCRgJTn0g5P9KKt9WrtJYYM+q07IgQGWpsNN/lsTH5W7yF7H22+Nqc ZJz84r8sMda284IRztBHal19yRbslgltMjKVA01abvCmLamK6AprbtGeoo1ysKwF5Eao0TsxK9xu 03BS6hS9gU4DzkUWj26G4osKbSpRysBQJGaE2W822NHDbyngM7s4wM/avmZqdhrelhorSoEbxknn 5qVtctnEOdLZnkQvKjIhuNojNZyraQMYTx1PtXzeYMZtDS30IS4lQWhWMkH4+tIxvz8GT5iQt1Bz vSoHBPbNVjPvGo33HWnSEsgqTgcE9NtMJpWyGJwJ9dQVGOxAGt9QruazbYxQGMAOOjBUo9hn4pf0 vYiu7AvEKQ0rcQOh9hX47bJMW5qjlrCyohKSoEgfOKboflWmIhhsb5S+Sfk16SsCmsLX1PLWoXsz Z2I6QZ3kBKc5dPGPapSw28qMn1q3PK/Mc9PipQ4YVMwyJt2oHV2uZuGVML/mKoKWlwbkHchQ4qkN ZaevsQxzcmQsj0byUkH71TgOvRVqbeG6Ks+l5PqSD9RXxBioihqTS8Vm7JlNyHGIqlZWWujDmQQr H9339q/bihUVLqVvh1ak7S6g8KHwO1OshQIIUAoHg96z7VdpkxIEw2chTDqTmOr/AOZ90Ht9KWv0 7WkYMf0Oqr075sXIgLTkZl7Uy1zZCQhpsuDOOuQOa05NvYkS0J8h1UUDd5w5UOOAfisK026yJZj3 YOR3i56XRzkn+EitUsN4uEvEeCpDCGlEOL67ldMikfk6HUg54Ef02pS9i6jEcLpcGUMLSW9iU43J 6EjH+VZ9NuLDmQqCIsdxR7e30rQWNPKaebmOTVrdXysq5C+OhFfcm129Y/7ptghJ3JKU8j6VLqtS rvmNFNx4mNXGMy6jEQqeUF5V8D2oS63JalpaQdrhxjdyQK2O6Ls8SOGm0hO7ohKeVH2FIl205Pdd cmMskrICkNg+pIz0IqrptWGGDwP3M3VhFye4w2hmVGYaUmUUsrwcpOSn5xTpcpUJu1vOmQpwObUK S6njfnjjtzWOu6iu3luRnIhQGTtJHBB/pRq1u3G5hhKFlIVneVdz9+lKXaRgdzkCdRxYMg9S9qB+ A/MS0tpYIVudaZTgOqwAPtUdjTkORXGmhHbKgltKVBJSMd+9Mtv/ABrcWRFLUdxATl0lGFlWOx7/ AAaEOJhuLZipYdksr6BokraVnnd7VhbOl7xBfWwctnj8T9m39strVFa9aMggZKlK+lLGpXLhc47d smsKjlSgpJWg5A65B7dfrWk2vTdus8p+clS1vYyEurB2H+pqs9erVc32zJIbeZXtS2oZO8fH+tap sVH3VrnHucXftIeZf/0zdZDYbKlPlpJWVnkZ7D704WLRhTbkOzg6XVpxsB2+Wfr3p0hzIylPPtth KEr2uFQxuI7ChV61IhaTGay24okBST0J6GutrLLPACMJY6DxMze/Ldtdzcik7gnlJ+DVJF2KTlVO 0O2M3WK8mQ0h5/HoIOFdepPalq5aTuapziQhptrPUkHA609VZW3i3cbHyRVfKU03RLishXIpfVqe Q2lyJC/dZWQpfzmqF5f/AGdcSw08hwJxnb3V7CqcNl5qWp6U2lKRnYnOefeqlOjQDcw4kX5D5g2Y Wn13GOKsQklxR8yU51UecUSt+5GX3vU8rue1CbeypxfnO/YUWB9jRGIHAiVNZc72lgLJVzzUrmg1 KFiOjjqIwUpPKSR96KWnUl1tLoXCmOt+4CuD9qFlOe9fm3nrT5wexPN5I6msWHxHjzili+Nhlw4A faGBn5HSmicCI6X2loeiufkeb5Sf6GvPqknrTJpPVs2wPbMh+EvhxhzlKh9KA1XtYZbM9xj1Laos /K1ICHv74/1qnbryuwBtCIYQgDatbayQv5wehpnu8NiXaBebK6X7csgOIPK4yj/Cr49jSbJXwQel BesWLseGrsNTbkjx/wBWQ4FvYfdntLW8NwZC8qT9RQ9Gq3bo8ERlBDajgrJ/KPekB1ltLqZCAlK0 HcCUgjP0NfIuy1Tg+yw2y4kEL8kYSv52nj9KSPxNQ/jyZRr+UYfyGJt+nm7Kje95pflEAFxR6H/C DQW+OSocpBjL/EFZOHmzyR7GkzSl9ZLr5uE2LFBOPLWlWSPccYFaxpS8WZlP4aEpDri8OKO4KBP+ lTL9NZQ/kMxg21agBi3MXo9ulOvB1uC8p0j1LV0PH86JQ7QpiSh94mO3tUFBSeMn2zTsJjKFrde8 g8DbsIJA78VzbuEd6MVLaSWFZSCUZI985pRnJjCviI2nbncJNzXDUhL7aSU5C8J2/OKcbTaodsU7 K8hLL6zuUndkA/GaU7tM/ZUlQjBlu3bdzbkdHKTnkE+59qU77q+4zISmGY8lbyVH96hKjlPHHFGG me0+HAM7bcmMxv1V/wCQkLFvcdxzktd6RbNDC71lDgbS2dy3F9sHmh8PVF5ZQtEdteFDar0eof0o 8q7abXHYNxdDEhgYUUnYpffkdxmqFelspGMZz+Io2qQ+51v9/wDw7KkwZflxlElIKgTnPJNcH7mz Asjbi1smU8QouE/PBH2pd1DreyOwnojMGPIK8+tLe3HGAfrSE9cVrjtJjFfozwv1bfpnj+VOaf40 so3DETv+RReF5m53LUNis0Bp9ExK3QkAoQ5nPfisq1druXd3CmMVtsDITlXOPn3pcMGS/HW84VKd zwF9SKFKCs7T27U/pvjqaju7Mm6jW2uMdCE4tsukyI5cmY77sdtYSt4DICuoBNMFoWiapJcVhY6o V7138N9XK0/JWw42l+BIT5cmMv8AK6jv9COxpi1XpBtE2LctJvfi7bOBdbAI8xrH5krHYj370zaf R4gqCQwxzOCMJGE9K6A4rm20ttnDysuJ4OBxmq0uWllv08rNIjyOBPRsCg5GJLnODDZQg+s/yqUs zJKlqUVHJNSmkqGOZOt1TBvGfZIxkVwWsg1KlaEmT8DhxX7u3dqlStTka/D3Ur2nrylKkfiIEr9z IjK/K4g9fvR/xBsyLDqF+IwsrjqSl5rd1CFjcAfkZqVKHYIZOonyclpZz0oeygoUpWetSpWVmz1O c6Ol9o9lDoaBIkPMOZS4obTg4URUqUzWAeDE7SVPEYrXrSZb30ORGwhwDG4rUr/M0SXri+SpYcYu EiMMcJbVx9alSgtpad27aMw6ai0pjdKFz1nqJuSn/wAtIJIznj+lfQu11VueVdJm9weohwjNSpWj UigYAmfsck8wPPlPKz5jzyz33LJoOt1SieSB7VKlGQQDk5n2w35qwCaYLbEQEBwgY7CpUrlphaAC 3MIkBKc0DuUUKC5CcJIPI96lSh18GH1AyINiI8x9CM4x3Fat4f6okWOY0qKkFv8AKpCgCFp75qVK xqfUY+MUENmMmv7bHbDV5tqPJjTFcsK6pVgE4+Kz68xy41vZUEKPvUqUovDyufKjmfrVmYbiHd6n cbis+/WpUqUcMZKdF44n/9k= --Apple-Mail-4-163265085-- --Apple-Mail-3-163265085-- redmine-6.0.5/test/fixtures/mail_handler/body_ks_c_5601-1987.eml000066400000000000000000000006051500112024600241200ustar00rootroot00000000000000From: John Smith To: "redmine@somenet.foo" Subject: This is a test Content-Type: multipart/alternative; boundary="_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_" --_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_ Content-Type: text/plain; charset="ks_c_5601-1987" Content-Transfer-Encoding: base64 sO24v73AtM+02S4= --_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_-- redmine-6.0.5/test/fixtures/mail_handler/different_contents_in_text_and_html.eml000066400000000000000000000021101500112024600303570ustar00rootroot00000000000000From JSmith@somenet.foo Sun Mar 02 23:30:00 2019 From: John Smith Content-Type: multipart/mixed; boundary="Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Different contents in text part and HTML part Date: Sun, 03 Mar 2019 08:30:00 +0900 To: redmine@somenet.foo X-Mailer: Apple Mail (2.1503) --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The text part. --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii

    The html part.

    --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9-- redmine-6.0.5/test/fixtures/mail_handler/empty_text_and_html_part.eml000066400000000000000000000020211500112024600261730ustar00rootroot00000000000000From JSmith@somenet.foo Fri Mar 22 08:30:28 2013 From: John Smith Content-Type: multipart/mixed; boundary="Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Test with an empty text part Date: Fri, 22 Mar 2013 17:30:20 +0200 To: redmine@somenet.foo X-Mailer: Apple Mail (2.1503) --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9-- redmine-6.0.5/test/fixtures/mail_handler/empty_text_part.eml000066400000000000000000000020471500112024600243350ustar00rootroot00000000000000From JSmith@somenet.foo Fri Mar 22 08:30:28 2013 From: John Smith Content-Type: multipart/mixed; boundary="Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Test with an empty text part Date: Fri, 22 Mar 2013 17:30:20 +0200 To: redmine@somenet.foo X-Mailer: Apple Mail (2.1503) --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii

    The html part.

    --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9-- redmine-6.0.5/test/fixtures/mail_handler/fullname_of_sender_as_utf8_encoded.eml000066400000000000000000000002251500112024600300420ustar00rootroot00000000000000From: =?utf-8?b?w4TDpCDDlsO2?= Subject: foo Content-Type: text/plain; charset=utf-8 testing user creation with quoted From-header redmine-6.0.5/test/fixtures/mail_handler/fullname_of_sender_in_parentheses.eml000066400000000000000000000003741500112024600300240ustar00rootroot00000000000000Return-Path: From: jdoe@example.net (John Doe) To: Subject: Name in parentheses Date: Sun, 03 Mar 2019 21:23:00 +0900 Content-Type: text/plain; charset="utf-8" The author's full name is enclosed in parentheses.redmine-6.0.5/test/fixtures/mail_handler/gmail-iso8859-2.eml000066400000000000000000000004271500112024600234630ustar00rootroot00000000000000Date: Tue, 13 Aug 2013 10:56:04 +0700 From: John Smith Subject: =?ISO-8859-2?Q?Nikad_vi=B9e?= To: redmine@somenet.foo Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: quoted-printable Na =B9triku se su=B9i =B9osi=E6. --=20 =B9osi=E6 redmine-6.0.5/test/fixtures/mail_handler/gmail_with_attachment_iso-8859-1.eml000066400000000000000000000015701500112024600270640ustar00rootroot00000000000000Date: Tue, 20 Nov 2012 23:08:25 +0900 Message-ID: Subject: test From: John Smith To: redmine@somenet.foo Content-Type: multipart/mixed; boundary=14dae93a13bf76ca5d04ceedc458 --14dae93a13bf76ca5d04ceedc458 Content-Type: text/plain; charset=ISO-8859-1 test --14dae93a13bf76ca5d04ceedc458 Content-Type: text/plain; charset=US-ASCII; name="=?ISO-8859-1?B?xOTW9tz8xOTW9tz8xOTW9tz8xOTW9tz8xOTW9tw=?= =?ISO-8859-1?B?/MTk1vbc/MTk1vbc/MTk1vbc/MTk1vbc/MTk1vbc?= =?ISO-8859-1?B?/MTk1vbc/C50eHQ=?=" Content-Disposition: attachment; filename="=?ISO-8859-1?B?xOTW9tz8xOTW9tz8xOTW9tz8xOTW9tz8xOTW9tw=?= =?ISO-8859-1?B?/MTk1vbc/MTk1vbc/MTk1vbc/MTk1vbc/MTk1vbc?= =?ISO-8859-1?B?/MTk1vbc/C50eHQ=?=" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h9r3mcjz0 dGVzdAo= --14dae93a13bf76ca5d04ceedc458-- redmine-6.0.5/test/fixtures/mail_handler/gmail_with_attachment_ja.eml000066400000000000000000000012321500112024600261060ustar00rootroot00000000000000Date: Mon, 19 Nov 2012 10:17:45 +0900 Message-ID: Subject: test From: John Smith To: redmine@somenet.foo Content-Type: multipart/mixed; boundary=bcaec54ee4ea84f77904cecee22e --bcaec54ee4ea84f77904cecee22e Content-Type: text/plain; charset=ISO-8859-1 test --bcaec54ee4ea84f77904cecee22e Content-Type: text/plain; charset=US-ASCII; name="=?ISO-2022-JP?B?GyRCJUYlOSVIGyhCLnR4dA==?=" Content-Disposition: attachment; filename="=?ISO-2022-JP?B?GyRCJUYlOSVIGyhCLnR4dA==?=" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h9owndpv0 dGVzdAo= --bcaec54ee4ea84f77904cecee22e-- redmine-6.0.5/test/fixtures/mail_handler/invalid_utf8.eml000066400000000000000000000007011500112024600234740ustar00rootroot00000000000000From: John Smith To: "redmine@somenet.foo" Subject: This is a test Content-Type: multipart/alternative; boundary="_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_" --_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable =D0=97=D0=B4=D1=80=D0=B0=D0=B2=D1=81=D1=82=D0=B2=D1=83=D0=B9=D1=82=D0=B5=AA --_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_-- redmine-6.0.5/test/fixtures/mail_handler/issue_update_with_cc.eml000066400000000000000000000010761500112024600253000ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> In-Reply-To: From: "John Smith" To: Cc: Subject: Re: update to issue 2 Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit An update to the issue by the sender. redmine-6.0.5/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml000066400000000000000000000036621500112024600325210ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> In-Reply-To: From: "John Smith" To: Subject: Re: update to issue 2 Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 An update to the issue by the sender. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. >> > --- Reply above. Do not remove this line. --- >> > >> > Issue #6779 has been updated by Eric Davis. >> > >> > Subject changed from Projects with JSON to Project JSON API >> > Status changed from New to Assigned >> > Assignee set to Eric Davis >> > Priority changed from Low to Normal >> > Estimated time deleted (1.00) >> > >> > Looks like the JSON api for projects was missed. I'm going to be >> > reviewing the existing APIs and trying to clean them up over the next >> > few weeks. redmine-6.0.5/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml000066400000000000000000000036151500112024600306040ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> In-Reply-To: From: "John Smith" To: Subject: Re: update to issue 2 Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 An update to the issue by the sender. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. > --- Reply above. Do not > remove this line. --- > > Issue #6779 has been updated by Eric Davis. > > Subject changed from Projects with JSON to Project JSON API > Status changed from New to Assigned > Assignee set to Eric Davis > Priority changed from Low to Normal > Estimated time deleted (1.00) > > Looks like the JSON api for projects was missed. I'm going to be > reviewing the existing APIs and trying to clean them up over the next > few weeks. redmine-6.0.5/test/fixtures/mail_handler/japanese_keywords_iso_2022_jp.eml000066400000000000000000000037741500112024600266420ustar00rootroot00000000000000Message-ID: <001101ca9762$293d68c0$0600a8c0@osiris> From: "jsmith" To: Subject: Japanese Character pattern matching Date: Sun, 17 Jan 2010 11:45:18 +0100 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_000E_01CA976A.8AF5E9E0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 This is a multi-part message in MIME format. ------=_NextPart_000_000E_01CA976A.8AF5E9E0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable It should be noted that I am receiving emails using pop and the patch in = Issue #2420 but I don't think the problem lies with this. When I try and send emails to the redmine server with Japanese = characters in them it appears to work apart from the pattern matching. For example if I send an email with the following keywords. Tracker: =1B$B3+H/=1B(B ------=_NextPart_000_000E_01CA976A.8AF5E9E0 Content-Type: text/html; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable

    It should be noted that I am receiving emails using pop and the patch = in=20 Issue #2420 but I don't think = the=20 problem lies with this.

    When I try and send emails to the redmine server with Japanese = characters in=20 them it appears to work apart from the pattern matching.

    For example if I send an email with the following keywords.

    Tracker: = =1B$B3+H/=1B(B

    ------=_NextPart_000_000E_01CA976A.8AF5E9E0-- redmine-6.0.5/test/fixtures/mail_handler/message_reply.eml000066400000000000000000000007451500112024600237470ustar00rootroot00000000000000Message-ID: <4974C93E.3070005@somenet.foo> Date: Mon, 19 Jan 2009 19:41:02 +0100 From: "John Smith" User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: redmine@somenet.foo Subject: Reply via email References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a reply to a forum message. redmine-6.0.5/test/fixtures/mail_handler/message_reply_by_subject.eml000066400000000000000000000006321500112024600261530ustar00rootroot00000000000000Message-ID: <4974C93E.3070005@somenet.foo> Date: Mon, 19 Jan 2009 19:41:02 +0100 From: "John Smith" User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: redmine@somenet.foo Subject: Re: [eCookbook - Help board - msg2] Reply to the first post Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a reply to a forum message. redmine-6.0.5/test/fixtures/mail_handler/multiple_text_parts.eml000066400000000000000000000033031500112024600252110ustar00rootroot00000000000000From JSmith@somenet.foo Fri Mar 22 08:30:28 2013 From: John Smith Content-Type: multipart/mixed; boundary="Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9" Message-Id: Mime-Version: 1.0 (Mac OS X Mail 6.3 \(1503\)) Subject: Test with multiple text parts Date: Fri, 22 Mar 2013 17:30:20 +0200 To: redmine@somenet.foo X-Mailer: Apple Mail (2.1503) --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The first text part. --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Disposition: inline; filename=1st.pdf Content-Type: application/pdf; x-unix-mode=0644; name="1st.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The second text part. --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Disposition: inline; filename=2nd.pdf Content-Type: application/pdf; x-unix-mode=0644; name="2nd.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The third one. --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="textfile.txt" Plain text attachment --Apple-Mail=_33C8180A-B097-4B87-A925-441300BDB9C9-- redmine-6.0.5/test/fixtures/mail_handler/news_comment_reply.eml000066400000000000000000000007541500112024600250210ustar00rootroot00000000000000Message-ID: <4974C93E.3071105@somenet.foo> Date: Mon, 19 Jan 2023 19:41:02 +0100 From: "John Smith" User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: redmine@somenet.foo Subject: News comment reply via email References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a reply to a comment. redmine-6.0.5/test/fixtures/mail_handler/news_reply.eml000066400000000000000000000007351500112024600232760ustar00rootroot00000000000000Message-ID: <4974C93E.3071005@somenet.foo> Date: Mon, 19 Jan 2023 19:41:02 +0100 From: "John Smith" User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: redmine@somenet.foo Subject: News comment via email References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is a reply to a news. redmine-6.0.5/test/fixtures/mail_handler/no_subject_header.eml000066400000000000000000000005211500112024600245430ustar00rootroot00000000000000Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: binary From: John Smith To: "redmine@somenet.foo" Date: Fri, 1 Jun 2012 14:39:38 +0200 Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> Accept-Language: de-CH, en-US Content-Language: de-CH Fixture redmine-6.0.5/test/fixtures/mail_handler/outlook_2010_html_only.eml000066400000000000000000001224531500112024600253340ustar00rootroot00000000000000From: jsmith@somenet.foo To: testuser@example.org Subject: =?utf-8?Q?Test_email?= Date: Mon, 11 May 2015 10:50:31 -0500 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="Mark=_539924359269962179476" X-Priority: 3 This is a multi-part message in MIME format. --Mark=_539924359269962179476 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Simple, unadorned test email generated by Outlook 2010. It is in HTML f= ormat, but no special formatting has been chosen. I=E2=80=99m going to = save this as a draft and then manually drop it into the Inbox for scrap= ing by Redmine 3.0.2. --Mark=_539924359269962179476 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable
    <= p class=3DMsoPlainText>Simple, unadorned test email generated by Outloo= k 2010. It is in HTML format, but no special formatting has been chosen= . I=E2=80=99m going to save this as a draft and then manually drop it i= nto the Inbox for scraping by Redmine 3.0.2.

    --Mark=_539924359269962179476-- redmine-6.0.5/test/fixtures/mail_handler/outlook_web_access_2010_html_only.eml000066400000000000000000000032661500112024600275120ustar00rootroot00000000000000From: "John Smith" To: redmine Subject: Upgrade Redmine to 3.0.x Thread-Topic: Upgrade Redmine to 3.0.x Thread-Index: AQHQknBe94y5Or7Yl02JransMRF41p2Dv6Hu Date: Tue, 19 May 2015 16:27:43 -0400 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Exchange-Organization-AuthAs: Internal X-MS-Exchange-Organization-AuthMechanism: 04 X-MS-Exchange-Organization-AuthSource: EHUB01.exch.local X-MS-Has-Attach: X-MS-Exchange-Organization-SCL: -1 X-MS-TNEF-Correlator: Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0
    A mess.

    --Geoff Maciolek
    MYCOMPANYNAME, LLC
    redmine-6.0.5/test/fixtures/mail_handler/quoted_printable_utf8.eml000066400000000000000000000010321500112024600254050ustar00rootroot00000000000000Date: Tue, 13 Aug 2013 10:56:04 +0700 From: John Smith Content-Type: multipart/alternative; boundary=001a11c260fa53f8dc04e3cc380b Subject: issue 14675 To: redmine@somenet.foo --001a11c260fa53f8dc04e3cc380b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Freundliche Gr=C3=BCsse --001a11c260fa53f8dc04e3cc380b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
    Freundliche Gr=C3=BCsse
    --001a11c260fa53f8dc04e3cc380b-- redmine-6.0.5/test/fixtures/mail_handler/smime_signature.eml000066400000000000000000000111011500112024600242670ustar00rootroot00000000000000Return-Path: Message-ID: Subject: Self-Signed S/MIME signature From: JSmith To: Date: Wed, 03 Jun 2020 22:29:36 +0900 Content-Type: multipart/signed; micalg="sha-256"; protocol="application/x-pkcs7-signature"; boundary="=-a6R2ultRPmAp8zmxN9qV" X-Mailer: Evolution 3.28.5 (3.28.5-8.el7) Mime-Version: 1.0 --=-a6R2ultRPmAp8zmxN9qV Content-Type: multipart/mixed; boundary="=-WFkuWLE/majN4BpDwkgg" --=-WFkuWLE/majN4BpDwkgg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable smime.sh.txt describes how to create Self-Signed S/MIME Certs. --=-WFkuWLE/majN4BpDwkgg Content-Disposition: attachment; filename="smime.sh.txt" Content-Type: text/plain; name="smime.sh.txt"; charset="UTF-8" Content-Transfer-Encoding: base64 IyBCYXNlZCBvbiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9yaWNoaWVmb3JlbWFuLzMxNjYzODcK Cm9wZW5zc2wgZ2VucnNhIC1kZXMzIC1vdXQgY2Eua2V5IDQwOTYKb3BlbnNzbCByZXEgLW5ldyAt eDUwOSAtZGF5cyAzNjUwIC1rZXkgY2Eua2V5IC1vdXQgY2EuY3J0CgpvcGVuc3NsIGdlbnJzYSAt ZGVzMyAtb3V0IHNtaW1lLmtleSA0MDk2Cm9wZW5zc2wgcmVxIC1uZXcgLWtleSBzbWltZS5rZXkg LW91dCBzbWltZS5jc3IKb3BlbnNzbCB4NTA5IC1yZXEgLWRheXMgMzY1MCAtaW4gc21pbWUuY3Ny IC1DQSBjYS5jcnQgLUNBa2V5IGNhLmtleSBcCiAgICAtc2V0X3NlcmlhbCAxIC1vdXQgc21pbWUu Y3J0IC1zZXRhbGlhcyAiU2VsZiBTaWduZWQgU01JTUUiIFwKICAgIC1hZGR0cnVzdCBlbWFpbFBy b3RlY3Rpb24gLWFkZHJlamVjdCBjbGllbnRBdXRoIC1hZGRyZWplY3Qgc2VydmVyQXV0aCAtdHJ1 c3RvdXQKb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtaW4gc21pbWUuY3J0IC1pbmtleSBzbWltZS5r ZXkgLW91dCBzbWltZS5wMTIK --=-WFkuWLE/majN4BpDwkgg-- --=-a6R2ultRPmAp8zmxN9qV Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCBSEw ggUdMIIDBQIBATANBgkqhkiG9w0BAQsFADBCMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVs dCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMCAXDTIwMDYwMTEzMzA1NloYDzIx MjAwNTA4MTMzMDU2WjBlMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYD VQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMSEwHwYJKoZIhvcNAQkBFhJKU21pdGhAc29tZW5ldC5m b28wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDRFsPzuElFmsH9v0xg4qJWBPpQ6S9J r6LXoRRCxTAR2juDi9fUUHhl25mSA64EOx7PM2zGNJ2FMaZ44LqoiytX0XBSh9RvHxFKPHOO60bl 3wUSV2KSu6EquahiTEoxxWN3OO1jLRwrAxCrfPYCr97782IerkJHEPIH0Ghn9iKrpWc+F8d1zoZ5 2+J1/Hk7Qm1qgz9LSDOw15AR5ccjlmb7Dd2jVxUGo8u2dHKbm1Kxkf12/1wTXe2M/+pygjwKXHMC raP5kIjtfWzip/p0YDql8eOcyPE2T12DOvryREA50jACcpBOpsvpqhu2ZZJsUuNdTJ28YEfxPyLm nfsA442Tb32hK8jmpg9YOy5xmhxRruFoMusRp1DVbU36AiAnrE6ZuDRs60BYqvlIh9UyQQu8eWVM 1hkNN6d0vkikiZ4VSAszmv4aYTYjHyvlgKfoyz/TL1wZSiWas9EiMcdQlFKC+gEbvkTMkLvDfG3r ENLqozGc1RiHBAvzwV68MwOHIODOyCIIWQPczDzTeXFcS/rm0ThRAB6SRQQ3bcmRA0rZBXPSB5Ce VlklbDsMNgLjE8+o2cdm1TBgGlbZXyURMYfQxNn0bGF/vE/qQIOiQKyf08bIf0K75zT13gsN5gat YGNBIrcXvzQIGCokc81UjcsP735yanVtHZsiORxoaB52kQIDAQABMA0GCSqGSIb3DQEBCwUAA4IC AQBPyCw1RuImCX8l//KOaNJbVFLd7H0yrCEc0kfbJ8NbsyLLcZ72q4GmGnPE++UjagHsssn/PefU AXA20Cpq4fcgORnNptTYtICerM5W/GpYaFruuYzSJCqxgAoGImMphh2YIPlifCEYUPd1jRCu61hy pYzJoN9WOJBoVNKzm2ewAjjTO5fu+iJMs2DC+u9CN6PIyJxKo7Fop4MXYRmdOWk2dl/ULM+Q0F4B 8yi5AAGtU2PjN5Om/hpJohaYTRIBB0hHDD5XrNb82cVohffnl2/hmtP7zwZBqirCrjFvOsdwXHMR UZxcmrUJt7+mgpGtbHE6ulQaGyVQwdizFvC7Bdy8A84xH4/ruCillJUHz/71HDbYHtzLjYv5704U Odj4DSyPqkuU351eH7JVx4LekWdXYzVTdnxThlhOi4Su5wNISN92MpouBPFv7dmHNNYUTem/J7z+ ut5DPDXKiPkWspaIQDlN+iRufcFA5rpUzZzbt80I8mZTwcUXuKch1nJbZr/+may/057G1hHZM9D5 0mOJLpkYgtIlZuCrV2mruL8wV+hy2a7aobPygnrU7CilLvwog2EW7YZhYlTEUiiNDBbNRfw7ultQ xifX9MivQFD1NmCx6UcBLzSaqPC/t5yBF3qdqC9iZD931t/vwFetaPpJbZYh+gygk1Wea3od3bON 3zGCAt0wggLZAgEBMEcwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoG A1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZAIBATANBglghkgBZQMEAgEFAKBpMBgGCSqGSIb3DQEJ AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMDYwMzEzMjkzNlowLwYJKoZIhvcNAQkE MSIEIARh7x/XsykreP/2eJUyee5aCBZphUgPb1OWKPIe3W3AMA0GCSqGSIb3DQEBAQUABIICALSa ICt8vhkcJHaZO+jFdDSB/HklU/7q3gIWUzcYjKUcp/awr3IysOIAqKOcUhxLls2RYua5I4XxkgXF SMBonemYc17ORQE2LxGWyexxvDjlOR3k5p7v7r4WARG2vML8PNrN0ITrPoA5Th+F/emNQ1knHCw8 oYi/pYpQwoeZsS6tgnBAISqsSpgOPMIn9hpLqLTQsVQyh7F5/0udwrBl+obpgalbyjRGxxAdqD6X pPxGB+qOMICdjWqPezuvqnAqtu/3RLdusxXYd2m6ZH6c9Cy2GMCAKi48Hd2I+XTzfgj/ToQSjN6d htzUR3+O6VdkoqEm+1yFSboLTQ/9BzBsY2tJc5oEYZhvSyKIU83RwSmHcYAFtd+m1DKdFHKmIvGG MyaOfpIE30CVKLT73Gv8UZWQ3usQPu4yQxyWBpkniaQ6i3AVSmOc4mviQSJ7F0Iq5/N9uMD3zAAT EQRhHOuv1sE9h702Qv6ecj5IVp3RhcudL97y9E9mtHYq9Ixypg0argOUF3ACt3KREG2Vnhc+IbNI yP9WNpcdOsl3ZhlTVbk4nGsomeVaUf2sgfHyqB7BlHYZiztO9CfYNBSbizArjS3qKB+7pIMHLOxV Z0eWZUQfOwd7SSEkQYvl3SC1czXxKSRRWkE3hgbIDE0A0veJBZw9PWFfrSBmsLIJfbSAh2mRAAAA AAAA --=-a6R2ultRPmAp8zmxN9qV-- redmine-6.0.5/test/fixtures/mail_handler/subject_as_iso-8859-1.eml000066400000000000000000000006211500112024600246460ustar00rootroot00000000000000Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: binary From: John Smith To: "redmine@somenet.foo" Subject: =?iso-8859-1?Q?Testmail_from_Webmail:_=E4_=F6_=FC...?= Date: Fri, 1 Jun 2012 14:39:38 +0200 Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> Accept-Language: de-CH, en-US Content-Language: de-CH Fixture redmine-6.0.5/test/fixtures/mail_handler/subject_japanese_1.eml000066400000000000000000000003621500112024600246300ustar00rootroot00000000000000From: John Smith To: "redmine@somenet.foo" Subject: =?iso-2022-jp?b?GyRCJUYlOSVIGyhCCg=?= Date: Fri, 1 Jun 2012 14:39:38 +0200 Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> Fixture redmine-6.0.5/test/fixtures/mail_handler/subject_japanese_2.eml000066400000000000000000000003661500112024600246350ustar00rootroot00000000000000From: John Smith To: "redmine@somenet.foo" Subject: Re: =?iso-2022-jp?b?GyRCJUYlOSVIGyhCCg=?= Date: Fri, 1 Jun 2012 14:39:38 +0200 Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> Fixture redmine-6.0.5/test/fixtures/mail_handler/subject_japanese_3.eml000066400000000000000000000006371500112024600246370ustar00rootroot00000000000000From: John Smith To: "redmine@somenet.foo" Subject: =?iso-2022-jp?B?GyRCLSEbKEIgGyRCNF0/dDt6JUYlOSVIGyhC?= Date: Mon, 27 Aug 2018 09:30:00 +0900 Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> The subject contains a "CIRCLED DIGIT ONE" character (U+2460). It is undefined in ISO-2022-JP but defined in some vendor-extended variants such as ISO-2022-JP-MS. redmine-6.0.5/test/fixtures/mail_handler/thunderbird_with_attachment_iso-8859-1.eml000066400000000000000000000027071500112024600303100ustar00rootroot00000000000000Message-ID: <50AB9546.7020800@gmail.com> Date: Tue, 20 Nov 2012 23:35:50 +0900 From: John Smith User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc13 Thunderbird/3.1.10 MIME-Version: 1.0 To: redmine@somenet.foo Subject: test Content-Type: multipart/mixed; boundary="------------050902080306030406090208" This is a multi-part message in MIME format. --------------050902080306030406090208 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit test --------------050902080306030406090208 Content-Type: image/png; name="=?ISO-8859-1?Q?=C4=E4=D6=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4?= =?ISO-8859-1?Q?=D6=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4=D6?= =?ISO-8859-1?Q?=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4=D6=F6=DC=FC=C4=E4=D6=F6?= =?ISO-8859-1?Q?=DC=FC=C4=E4=D6=F6=DC=FC=2Epng?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0*=ISO-8859-1''%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6; filename*1*=%DC%FC%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC; filename*2*=%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC%C4%E4; filename*3*=%D6%F6%DC%FC%C4%E4%D6%F6%DC%FC%2E%70%6E%67 iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlz AAALEwAACxMBAJqcGAAAAAd0SU1FB9wLFA4fJhRKIUQAAAAUSURBVAjXY/z//z8DEmBiQAWk 8gHq9gMHP8uZWAAAAABJRU5ErkJggg== --------------050902080306030406090208-- redmine-6.0.5/test/fixtures/mail_handler/thunderbird_with_attachment_ja.eml000066400000000000000000000015421500112024600273330ustar00rootroot00000000000000Message-ID: <50AA00C6.4070108@gmail.com> Date: Mon, 19 Nov 2012 18:49:58 +0900 From: John Smith User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Lightning/1.0b1 Thunderbird/3.0.10 MIME-Version: 1.0 To: redmine@somenet.foo Subject: test Content-Type: multipart/mixed; boundary="------------030104060902010800050907" This is a multi-part message in MIME format. --------------030104060902010800050907 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit test --------------030104060902010800050907 Content-Type: text/plain; name="=?ISO-2022-JP?B?GyRCJUYlOSVIGyhCLnR4dA==?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*=ISO-2022-JP''%1B%24%42%25%46%25%39%25%48%1B%28%42%2E%74%78%74 dGVzdAo= --------------030104060902010800050907-- redmine-6.0.5/test/fixtures/mail_handler/ticket_by_empty_user.eml000066400000000000000000000007241500112024600253360ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> To: Subject: Ticket by unknown user Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit This is a ticket submitted by an unknown user. redmine-6.0.5/test/fixtures/mail_handler/ticket_by_unknown_user.eml000066400000000000000000000010261500112024600256730ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Doe" To: Cc: Subject: Ticket by unknown user Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit This is a ticket submitted by an unknown user. redmine-6.0.5/test/fixtures/mail_handler/ticket_from_emission_address.eml000066400000000000000000000010611500112024600270210ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Doe" To: Subject: Ticket with the Redmine emission address Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit This is a ticket submitted with the Redmine emission address. It should be ignored. redmine-6.0.5/test/fixtures/mail_handler/ticket_html_only.eml000066400000000000000000000014041500112024600244510ustar00rootroot00000000000000x-sender: x-receiver: Received: from [127.0.0.1] ([127.0.0.1]) by somenet.foo with Quick 'n Easy Mail Server SMTP (1.0.0.0); Sun, 14 Dec 2008 16:18:06 GMT Message-ID: <494531B9.1070709@somenet.foo> Date: Sun, 14 Dec 2008 17:18:01 +0100 From: "John Smith" User-Agent: Thunderbird 2.0.0.18 (Windows/20081105) MIME-Version: 1.0 To: redmine@somenet.foo Subject: HTML email Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit This is a html-only email.

    With a title

    and a paragraph.

    redmine-6.0.5/test/fixtures/mail_handler/ticket_on_given_project.eml000066400000000000000000000042601500112024600260010ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=original Content-Transfer-Encoding: quoted-printable X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Project: onlinestore Status: Resolved due date: 2010-12-31 Start Date:2010-01-01 Assigned to: John Smith fixed version: alpha estimated hours: 2.5 done ratio: 30 parent issue: 4 --- This line starts with a delimiter and should not be stripped This paragraph is before delimiters. BREAK This paragraph is between delimiters. ---=C2=A0 This paragraph is after the delimiter so it shouldn't appear. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. redmine-6.0.5/test/fixtures/mail_handler/ticket_on_project_given_by_to_header.eml000066400000000000000000000042131500112024600305030ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Status: Resolved due date: 2010-12-31 Start Date:2010-01-01 Assigned to: John Smith fixed version: alpha estimated hours: 2.5 done ratio: 30 --- This line starts with a delimiter and should not be stripped This paragraph is before delimiters. BREAK This paragraph is between delimiters. --- This paragraph is after the delimiter so it shouldn't appear. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. redmine-6.0.5/test/fixtures/mail_handler/ticket_reply.eml000066400000000000000000000036221500112024600236030ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sat, 21 Jun 2008 18:41:39 +0200 Message-ID: <006a01c8d3bd$ad9baec0$0a00a8c0@osiris> In-Reply-To: From: "John Smith" To: References: <485d0ad366c88_d7014663a025f@osiris.tmail> Subject: Re: Add ingredients categories Date: Sat, 21 Jun 2008 18:41:39 +0200 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0067_01C8D3CE.711F9CC0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 This is a multi-part message in MIME format. ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This is reply ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable =EF=BB=BF
    This is=20 reply
    ------=_NextPart_000_0067_01C8D3CE.711F9CC0-- redmine-6.0.5/test/fixtures/mail_handler/ticket_reply_from_mail.eml000066400000000000000000000017011500112024600256240ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer; Wed, 12 Oct 2016 03:05:50 -0700 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Wed, 12 Oct 2016 13:05:38 +0300 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Project: onlinestore Status: Resolved due date: 2010-12-31 Start Date:2010-01-01 Assigned to: John Smith fixed version: alpha estimated hours: 2.5 remaining hours: 1 done ratio: 30 This paragraph is before delimiter On Wed, 11 Oct at 1:05 PM, Jon Smith > wrote: This paragraph is after the delimiter redmine-6.0.5/test/fixtures/mail_handler/ticket_reply_with_status.eml000066400000000000000000000037741500112024600262510ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sat, 21 Jun 2008 18:41:39 +0200 Message-ID: <006a01c8d3bd$ad9baec0$0a00a8c0@osiris> From: "John Smith" To: References: <485d0ad366c88_d7014663a025f@osiris.tmail> Subject: Re: [Cookbook - Feature #2] (New) Add ingredients categories Date: Sat, 21 Jun 2008 18:41:39 +0200 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0067_01C8D3CE.711F9CC0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 This is a multi-part message in MIME format. ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This is reply Status: Resolved due date: 2010-12-31 Start Date:2010-01-01 Assigned to: jsmith@somenet.foo float field: 52.6 ------=_NextPart_000_0067_01C8D3CE.711F9CC0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable =EF=BB=BF
    This is=20 reply Status: Resolved
    ------=_NextPart_000_0067_01C8D3CE.711F9CC0-- redmine-6.0.5/test/fixtures/mail_handler/ticket_with_attachment.eml000066400000000000000000000376641500112024600256500ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200 Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris> From: "John Smith" To: Subject: Ticket created by email with attachment Date: Sat, 21 Jun 2008 15:53:25 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 This is a multi-part message in MIME format. ------=_NextPart_000_001F_01C8D3B6.F05C5270 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270" ------=_NextPart_001_0020_01C8D3B6.F05C5270 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This is a new ticket with attachments ------=_NextPart_001_0020_01C8D3B6.F05C5270 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    This is  a new ticket with=20 attachments
    ------=_NextPart_001_0020_01C8D3B6.F05C5270-- ------=_NextPart_000_001F_01C8D3B6.F05C5270 Content-Type: image/jpeg; name="Paella.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Paella.jpg" /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCACmAMgDASIA AhEBAxEB/8QAHQAAAgMBAQEBAQAAAAAAAAAABQYABAcDCAIBCf/EADsQAAEDAwMCBQIDBQcFAQAA AAECAwQABREGEiExQQcTIlFhcYEUMpEVI0Kh0QhSYrHB4fAWJCUzQ3L/xAAaAQADAQEBAQAAAAAA AAAAAAADBAUCAQYA/8QAKhEAAgIBBAICAgIDAAMAAAAAAQIAAxEEEiExIkEFE1FhMnFCkaEjwdH/ 2gAMAwEAAhEDEQA/ACTUdSsdhRCNE54GTRaBaXHiBtNOVo0wEpSt8BKfmpWCZRPHcVbdZ3X1J9Jx Tla9OBpIU8Noo7Gjx4qdrCBkfxGupUSck13GJjeT1ObEdthOG04/zpX8SNXjR1njym46ZMmQ+llp pStuc9T9hRq/X22afhKl3iazEYHdxWCfgDqT9K83eKfiFG1RfIEi3tuC3W9KlNh0YLqyeuO3QV0D MznM9O2uai4QI8psYQ8gLA9virY615P034xX+zNNslLDsMKOG1J5HuAa3nQPiBZ9WtpUy4lmcE4U ypXP2rmMHmcI/EealD7te7ZZ2S7dLhGiN9cvOBP+dIF18btHw3C1DkSbi7nATGZJBPwTitTIyZp9 SsCun9oJaEFUDTy0oyQFyXSOfoB/rQOL466huE9LIagxW1A48tkuKJxwBlQrm4YzNhGPE9Mmua8Y JrzsrXPiQ42y7+KtsZt4kpS8ltK0p91J5IzXGFr3xFef8pMqE4vJABZT6se3FDNyEZzNCh89Tfbv aoV2iKj3GO2+0eyh0+h7VkWq/CqTDUqXpp0uJHPkKOFj6HofvQRzxZ1bbwFTG7c+jO0lKeh+cGi8 bxrebZZVMtjDqljKgw4Rt9uuea5vEIEceoL09ZnHQoyGy3KaOFhxO0j6g0J8QNPr3tzorHmsJSUv NgdQeprTIuqbfqdtD7MRxh7HO/H6ZHWlnW0e5tQnv2WgupAyEg8p9xUl7WGowpzKCoDXyJ5nvMdK Uuho4bSv057CqK2stIWrgEZp2kWtE+O5+MC0OKUchHFCbnaWVNeW1KU3tTtwtAUkj6jkfpXoK7gQ AZLsqYEmJ0mUBlLeCfeqHKl5PqJopNhriupQWyoqPpKeQfpTXYPDW+3ZlEhTTcVpXI8w+oj6Cmty qMxTazHAi1ZLG/PXuKClv3Ip7t2n4yI3lKZSsEc7hmicXwfu5ThN22fCUH+tXB4QX1KdzN6WVjth Q/1oDuG/yjCIV/xgWLouQFfiLK/5LqejbnKT9D1FStX05DRaYrTN8K232wEl1aMJV856VKF9hPc3 9QPM32HEjxEjykBSh/ERSd4s61uGjLbBnQrcie2t4pfClEFKAM8Y704uvtsMrdfcQ20gZUtZAAHu SawHxt8V7PKt/wCytPp/aLrToW7JAPlNkAjAPfOfpQ0JY4E42B3Nf09ruwXvTQvjM9lmGkfvvOWE llXdKvn/ADrONZeNwU28zo2Ml1tHpXc5Y2spP+EHlR/5ivOzYkPPKdjMechRDjrCUHy1Ec9Aa1Lw l0VF10pcy4XJC0RlbTFTgKbHwnokfSibFXkzAJbiJ0tN81jc1yHXplzkEEqkPA7UjvtR2H1/SrOl rGu6NvP7Q8yhaWkDruVj/n616Lvl20n4Z2cpeS02tSfRHbAU69/t8nivOGoNXzNQSVRbFAbtsFal FESEjBOepUR1rBs3D8CFVMHjmXNYW+wWtsMrlMvyyOW4h3FB9irpn70lx7k9AeDttW4w70DgWd3+ 1NmlvDi7XpL0iShcWG0dqllO5SlHsB35NG7l4PSRG823z0YbGFqkDaFK+MZx7d6XOu09Z2M8MKHb OBM1vBuAkJcuUgyHXRu3KfDp+5ycVTaeU36kKUlYOQQcEVrehvC5l1Mh/VClISHFMttIVgL45VnH TkEH4rQbjpHTbyGWVQIzL7bYabc2AnaMfYnAxk0K35Smo7e/2IRdC7eXUwfT5m6pfbtC/wARIlLW VNu7yoN9MlQ9h3NO+n9Cwo8rzZU1Sm2Mlx9YLaUkHjaOv3Nc7zd7FoyY5D07HR56SfMl7961ZGNo 9gKXrtd77dnkssoSwt7K9rZG8jHU44Tkc9q0rvbyvipnNgT9kTRLvqKy2JDgS/8AiH3hjecKXjv2 /SkG8akmRyhqG+hKSQ4dpyofBxxV2w+Hkuda27pMW5tcSpWxati1HJGQTkYp70xoS2MW1pp+ImXN koJLi+UtfP1FAt1dFPHcPXQ9nPUy+/3pu4usrYZS16MOKCAkuLJypRxX5aG5ExX4VlfC/Vt98e3z WvL8M9NsNMtyFyVyGx6h5uPMPyMcV9Q9HQbbdWwzHQGFHKVhStw+uTQTr6tu1IQad85M46baVarV uVkJ/mDVCVqWUll59t4FxlW0ocOA4k+1P8uLGU35UgAhQ2kgdRWUeIMi2WyKqASFLJJbWchQI7Ul pWWyw5GSYZ1IXA4Ez7U12mR7q95jCWgTuCQeoPsaGqntylbCpIdxnaSM/wBK56lujtydZS4UkNIw CBzQO4RURywWnUupcQF7knoT1BHYg5r0lFY2DIwZKvYq5x1DjUo26WzJKEuIQoFSFDIP+9bzaL0x +HZcZcQpC0ggewIrzYzNJQGpGVt+/cUw2PU8+0vqWEJnW8q/9KzgpHslXb6UV6yw4gBZg8z1NZbj Ek43LQDjkZFMLbkMcJW3+orKvDq86T1SUssrEef3iPq2rz8f3vtTZrtizaR0pOvD8XephOG2959a ycJH60HBBxDBhjMB+L9/RY7WpT7jam3kkNNJwSs+/NSss0Bpi4+Jmpfxl7kPOQ2k7iCfyI/hQOwz /vUroqrUnceZ8LnIG2Cdaa61Dq54i7SVJi5ymGwdjSf/ANe/86s6W0TLvkNySp5pcVjBUy0oAD5x 1P1NbDbPALTQjp/aC5bj+OS27tH+VOmjPDqw6QEv9lNPFcpIQ4p5zeSB0A/WtNYoXCwK1nOWgjwk sFrg2wuJjtKl5IJUBwPakLxDXbNI6/alaGW6b87uL1vjJCmAogjcvHTrnb8DpVnxj1q1oOS7b9PP j9qSEErA58gHuf8AF7CsStOurpBjKZioQqS6sqU+vlayepPvQytu3cgz/fEPWaXfFjYEfLlo5+bM /aurr+X33vW6lIJUD/dyen2p80zboMNG6NBEGOygJLy04cdAGRjjn5NYRD1NcjMMme8XpST6Q4Mp H0HStstF4kO2lMS5vAlTfq9O04PQZ+KifILaqg3PnPodS5o0S3I0q4x2T3Kr+obzH1HsjuFFpeUU B5s5Snck4ST0z0p502w5HZW86qW5lXLbpSeMfHFZH4gpFutbDlrmNtujlxvzc705HAHfB5qknVSI VliuWK7STcHVBL7Ticc8c8f70IaMaipWq4z+oo6jT2sr8ma3qCfBky48be4zvcAOB6gR/CMd6EXF m9EPKhx3Vx92EJdADmOmQKJ2y5xVpiJlW+OzPSj1LbSBtURyoGjFzWqPbHljClFBLbiBnHHUmpeT WdqiPISuDM/e0bark4YzkEJkJ9RebGF7u+T/AKVeg6DbVdXHJ6U/hi35KAlRGU44zj/WrtpdfSlt D7m54jKznr/WnOAVKa9Y7cGtDVWodhaH1WnVlD7cZxPhq3NMobbeBeZQnalKlZ47cUQDSGtvlqwn GEp7AVQdbddWQHkp2dOea6qWHQlPmJSscEE9aET/AJCK/X+JFxUtuKecHnKxx8VXRKiBSkuKII55 PSvq4yUQmf3qspxwc8is71fqZMeKtTO0AHn3V8UaitrDgdmcdtoyZ215q1USShq0bZClghTYPqFL Vr0xH1otbt1XKZkpT6cccfOaF6SZkz7q7dZYWHjz0ykJp2Yvi4YaYVHdUXjs2eSUlR7HPt89KoW5 p8af5D3OVLldz9GLmsNLR1WZiI+oJlRB5aHgBuKe2cdaxd5tVsuy0OJbdWwvkKGUq+or0PqiyXVy IJ7za1NlIJbz6m/fgdv61lN000qWJ09EWQ8++6lqM01k8geokY5p/wCK1RXK2Nn/AOz75PS1vStt Y594iCUnOauWi5SLXMDzIQ4g8ONOp3IcT7KHcVduWn7nbWg5OgSI6SopBcQUjPtzXK1RX1OqkMtb 0xcPO9PSkHrzV0WKRkHM86a2BwZqFm0da9c2pdw0asM3JgBT9qdd2uNH+8y51x7A/rSjrXUmq129 Om9TuyvKhu70NyUYd4GBlX8QofG1hcLbrBF/tZ/DvtqGEDhJQONpA6gjrXq61f8AS/jDo9mXNhNu nGxxPR2O5jkBXX+tY3bcFhPtoPAin4H6gsMTQgLEhtM7eoyGioBYI4Tx7Yx+pqUr668ILjZXDOtS XZsdvlMiGkJlND/GgYDg+Rg1KwUDHIM2r7Bgiei5NwiQo635cllllAypbiwAPvWO678c4UJuRH0y gSHkDBkrHpz2CR3+prHbXJ1L4o6matwkKaYP7xzkhthsdVEf8NLWrzbo94fh2RKjAjqLSHFnKniO Cs/X/KuLSAcN3OfYW5HUD3SXJutxfnTnVOyn1lbi1HJJNPnh9otyfbJF5lLabjpJQ0FjlZHUis9C lDOO9bdHkS4WkbXBlIMdaGUnyhwkjqFfU5pf5K566gqe+I98TpBqb9pnB/Q9wu7kdyOGUNNp3oWp Owq7+3P1r9uQmqllqS+S+ghClFWR+vtT/Z7goWGOopbjodwEltQOcdR16/WrcrTFmW4tyYZHmuDc dhwkDHSvNvq2BC2+up6PThdIzDvMypelJN2lI8+M9JKxsZS1/Cfcn2+tF9K6Oh6ZeW5fYS5VwKgl locpR3Cvk0+zJTdtioi2htDe5OVL/KAPcn3r5j3ZtdmkrKFTFJ3EDG7BAzgH9a+XX2sNi8CJXaZW c3GIN7u0u931+KwhaGGspKQMKcKepVV5UmU1DZZtzspMVKQXm3F5B+gHIH0zQCBImKuiJMeCuEH1 YCfVkjv+bqSKr6t1U7a7uxEgurS0yMLBASc/arlenBULiSGtOSSY6WKJKXckJU2tplSt6FA7gfvW gxA/sUBggDGSayGya5ed8tkNqSlXVYOVVpEZydIablRFF6ORgjGFJPyKga3Tuj5Il2rVC6sKT1L9 tiuPTnDI3eSfc/lqrqWOuHFK4qlF1HIX7j2NWIkyQ8XEApSUcD/Ea5TmZj2SggqUMKSrp9KUByQM T45U5mSS9UzJMtMZ93GFcqJ7UL8Q3UOOww24Bx6h3V8/Sqev0sx7u4IqkB5w8tJ4KFfNBXG3Fuo/ FPqLxA3FXXHtXp9PQiBXXiTGZrmIjTo68qh+Y2ygPhYSAlXIBz1rYHp04RkNRnWDOA5KyEgDrgVh mmSmPcCfQpWCACnINFdRXOW3GQ4+60GgcJKDgr+R70lqdP8AZaAvuUK3woDY4mqyrjeFWppZZUXW lnzUlYCVp+K+LLeYEoLLG5lGdxQk4wcfyrOourlyIzbDhcKVNhHB7e9XYlxatbam0dVDOAOT96Rf TEDBHMMpU9dTQpVxiTWXGUqDy1n0hxCSAPvXnfWVtnWO9TI8lpLHnZOGxhKkE54+K1K1XhLj4S4j GOnxX5qiNZ7wlpd1Di30ZS0hKtu4kdCaN8fqG0luxhwYtrdOtqZXsTA1dTWh+B+unNG6tbTIWTap hDUhGeE56L+oP8qSbtBXDnyWSB+7WUnadwH3rgYT6IQmEpS0VbU5WNyj8DrXr/F1/ueXIZT1P6Hh aVoSpJBSoZBB4IqVjPgP4ii72eHZLsSJrCPKadP8YA4B+cfrUpMgg4jK8jMybw5vUfT/AIXatujD iRc5S24DX95KVAkn/P8ASstODk9asPSXvwZbUEoQpzhtIwkYHt9z1q3NZiO2uNMhFLbif3chkryc 9lAHsabbAbP5i6DI/qctPSokW9w3p0cvsIcBLY7+2fituuVxYvDbAMZ2VIUkeX5I5x3Tgdqznwz0 xbb/ADZQuy3w2y2FISycHJz3+MVtWnNLwNMb3G0SZDvlgb3DlWPgf86V5/5e+oOAc7l/9y18WLK/ IdH/AHB+l23bLPLMl0RkyQS22r1eWQO/tR178NEju3GS8ZahyVIc7ewA4qpKKfxzTMOGHCsBZSob ueveitut+XGo8tpDacEp2DAP69ahNYHO4yo1rMxJgt22RLy0l5bYQ04jckLWfM+o7frVPUMpdg0a 65EfXvaX5XOArnp9hTtGgRbcyhL6PPbaG1ClnJAPvWeeMl0FogwnWGYkqKHSFxnUkpSojgkD79aJ pQbblr9ZgNRcAhMzli9zZYfS27NkPBIKAFKVnnkn2pf1PaZbMNm4PpkDzeV+c0UEK+p6/WtX8H5M GXDm3OS22Jq3P/W2AlIHwOgFVPF+VBfjqKi4sEHBKSAVfFegXWsmo+pV4zJZ0wareTFbw71Y1Ab/ AAjbcNh1Q/8Ae9yaYU33VESW5KdK1wucuMpwgj3FYq4S456E7VDjimGHqa6wYqIS5HmMq42LOQBT Wo0AYll5z+YCjV7MA+puVmuDkgh7evZt3bsdK46s1uiNZSY6iHwSj82CPnFC7PcbdbdOxkPTiqaB 5iQlXCf61mV9uC79dn39oDIVztGAajafRK9pPoSrZezKAOzKclyXcLgue8VLUo7sHrUaVIfeCloG T0Uo9qstKdbcBLZUg9DiuzkbY4VDIBGQkdBVkuBxOrRtAwf7naKlyMoqQ4pRI9RHH2qtc1/i/KS+ p3yWchtKwcIzX7HnoQv1nbgYUR7+9NESXCmR1xdjexxOXCTg9ODSzO1bBiJvCsCBFu3eahwltCnA O6ATj6082K2rlltyXGSsIGEhzPP1xQa1QJNngLmMuNPMrPKE5BwKuzrw6Yu6JJVGWkZSkHIXn274 pe8m0+H+51G2DBlu4J/DzFKbWhICiS2EgH7H2FD3JTMuclt7B2ArBzgJPvQNF1lSUFoON5JyST1P tmgEu5yY0wgJ2uoUd27nPtRKdEzHk8xezVLUnHudtXsRYc4rt8pxZdKvMSpWcH60M07a03W5JZcW UtgFSj8Dt96orKnVKUQVK6nv966R5b0dCksLLe4gkp68dOatKjBNgPMiM4Z9xHE1fwCkQx4pqYdC vJcC1RwT0WkZH8s1KVPDm+Psa208ogAtysqWOqyo4JP2qUtanPM2jDEL+OWn49u8R5UK0MbGClDg bSOApYyQPvSzM0rKt9qiXCRs8uSSlCeQoHnII+1aJ/aAZWjxImL3FILTSwR/+RX7bhqJ561XC5Jj O20pSnyFYJWMZypJ6djWLdSa1BzxDUaYWnaOzH/RlmZ0nYWPJab9SQqS5t/eLV2+wzj7UfZmouM8 MNtlsNoKlFZAV8H4FULPfmrmtyCtwJfQjKggFIVx2orHsbUZ1TzCktFwfvVKJJUB05968jqHaxyz y3t+sBeiJJTLSXA6hAWscFSTjke561yfkAlte4h88BIJwB3q5Hjx297RUpWfUD+YYqs5Gjx3HJJK ywRylIGM+/vShBMIrDMtpKiyVKcWtvaP3aRnn3HevOfi9eZM/UEiEv8A7eOHgkhfT0jg4+5r0JJu ENLad0plpWM9c8dqUtTaMtGoJS37gyXH3UANyEHH6iqXx99entD2CK31m1CqmZZomd+HjORbXte8 hOVLSk4USeTRm4xrvqbTjseUGmozTmVPLH5fgfNNNhYtWmJardbw3tf59XqIwepNM2poyJVpdKEt +SRuCR/EfemLdWou3oO/cJXVmsI08z3BiFp7UakMuonR0jk47+31oG7iTM/dkNoWvCdx/KCe9P8A dIzR1PAZfjtI3gx3QsAJHznFKOqbfbbXKSzbriZrwJ8390UJRjpgnrXpdNeLAM9kSDqKDWT+AYcu 1ivcK2x1KdiyYSejrCgSnPZXehTLqou7cghKRkgd6Px9SWp2xsMT23HF7QgpaOCFDoaCxFee4UKC gCT14P3oKs5B+xccx+kIpG0wlaJKZLB9KglB5Uo9KsLeDj2GzjI+1AjmPLH4ZzCVEApPAIopGCFR 1rSpW4naaFbWB5DqUabMnaYEuTGyc40le4deO1fMZam17krwAOua7yYjyZCiG8hZ65ya57WW3W2y lS3FDkFW0CmgdygdydZ4MT1HezzUy4iCwVKLKcFtSuD74r9uVtRJabLZ8obckpTlP60ItSLXOeDT KlR1spG9W7clw/ejN4mXa0MDYA9FLn7olIxtxyFCprVkWbU7/cY+0FNx6/UU70GYDBQw6FrUcAgH ke9Lq3FHkkk980xXedHuYWt6D5L4A2rQrCQO4xV+yaaiTrW5JL29GRgflUCOoJ5wPmqaOKUy/cl3 Zufw6itbriuAJHloSVPNlvJ/hB61RCwVAKPHc1YubQZmvNpSlKUqIACtwH371Tzk/FOKAeR7ibEj g+o06QWy7riziG2pDf4lsJCjknnrUrv4TtIe1/ZQ50Q+Fk/TkfzxUpW7ggQ1a7xmbF/aGsKEX83N U4IU8wFJZWMbtvBwf04pOieITadOMxXmWRJR6CsD1HHTH2xWx/2irAu9aJTIjJJkQXgsYHJSrg/6 V5os1rjsynVXOQY8uMsER1t8r+M9j0pSymu1P/J6j+ktatxtE23QtvmwYar3cX0JjyE+hhQ9ROeC a0CJJaLTe+Uhfm/l7/YUhWKUxfbKxCztdQkJStWdySf7o/rTHZLC7bW3g5M819Y2pLiPy/TmvLak AsSeCPUp7i1hB6h+Ytbnl+US2AfVx/nXyWg4kpeOQ4CPT2FVX0JacS6qWpASnC0qIINDLlKKGyGp QaLmADgYA74xzSY7zDpWW4Eq2e0N2yXMdmKS6twlCUO4IQj3+po86RGWzGjtNgO4AATwlPXNAmPK dLanH15K04SEE5x7GrsGWLnclJ9SHGuCrOCU+1E2s5zNfSE/7mJniFFciyHJ6XEktoIylWBjPPHv SnC1HKlFK25Kls7cBpSvy4PtWwXHSsCXIUqUt15Tg2qStfpx7kUIc0JZIqHlpGwqTgFJxgZzx809 XfWE22DJgwQD49TGr0pN2nlL7i2JKjvC1DCc9qUtRR47sjLQWiYkYdbX0PyDWwax09bZpcZtpdbl FJO5aztJxkD46Vl83TclMT8SlDjh28lIJwfY/NXdDqK8Ag4iGsosYHK8QVKiRIztv/BqccWUhT6l jASruBVpEoKkOAYLhJO0D9KGIUoqQ2vucYPaidptb0i6lCMNt8lSlq/N8VRcDblz1J9Tbf4CEGYb rzbjiEBLqQQAtQAzUs7jrqnGFNJy0fUMcA/WjlutUySrLT0dLGw5C08hQ6fbNCrTBuVlubjjkJ58 pJwU5Lef72B1pQMLFYZGY0bHQggS7KYUw35ivUlXU9xSfdCp5QWltSUp/iPfNaBLtv4KGiVOkYcf X5imS2dyE9uM8DvjrQc2hyYsg+WGSfSQKxRatfJMLepvXA7iilxtKmlMJcQ4nlSlKzn7U4wbou7Y RK9SGeUpzjJPciuLmi5ayDF8t3nsrHFfFx0lcbeSptYWhKUlS0EjBP8ADR2votx5DMSFF1eRjiGF OWuK4mO+y2lTyFIWpw5SCeivgZpNuCzBU4zEmBbTnUtq4UP+ZoxaNIXG6So5ebX5C3NillXQd/pV zWlmYtEJmEiARLz6XEerf78jrXy3VK4XO4mDsSzbwMYiQI8iQlx5tpa2kfmWBwK4BKVdDiicpq5t NGItl1DbbYdUgDgAjO40JZSpxwBA5zVBDnn1EnGD+5rn9n+1pXeZlzcQFIYbCEEjoo9x9galN/hp BFn06wwQA89+9cPfJ7fpUpG072zHql2Libtf225NukRX+WnWyhX0Iry9drM3ar2i4XN0h6BKS28r O5TiByleD8Yr0ldJyHWtyOD0UKzHW9taloXM8jzkhBbkN4yVt+4HunqPvQXBxkTqH1E2dck2u5wp 9rUW0yiVPKCdwQgkYJx361pca9NSGG3C5kIR6nkD0g/Ws5uMMT4DJtFyZTCdSlAjlsJKTnHpP+hr hapk+yxP2fNW7+DeSrAIyN3uP0qJfQtij8/9lPTlkznmPNwdh3FgILzgcK/3bqSfUfZQpW1BMuNr hKeeQlCyrCWeu0DjdXL9oW2NAadjuLbdj4UFBQIWoe6Scg/NEo5cu81h+5JAQtvcgdE++Tmlvr+o 5YZEbpvstyvRlPSGtFvNJjzox4JKHknHP0pq03c2GlTAp5j8Spw7d5CVEYHANL9xsrTbMibHUCUJ IKEt8JPvxSey4ZylLX/8yOSMbqIK67stXwIT0NxyZubSDKUX1lbawkAZ9u+KHXeez5ja3HwhpPxy D2HNZu1rG7W5zeqS0EgbUggHA+nvVaNqOXdr5HVNcQhCV71BKQNx7ZzxQxoW7PUIgGcmNs6SqW+W 2hvdc53qRgkHgc0YsdpVGgluSGygrUdqQClJ+TXVu2sSSu4x3PxD20qDa14yccAe2KruPvNw23Lg z+HDytqh1Chjoo9utAJ9LC22h0CqMRc15omyXhCnLc0mLc0c7mcBKiBnCk/PuKy646YvkCU0qLuL iWylQUPyE9cH5/WtkRLs0VhTLzqW22sEqLm5xXPTjtV2bLt88sttrCSpQxsOSCPeqGn191ACnyH7 k27RI/K8TFdFOOYcTcAWENqIcUpJBz23DvTqvWMRElm3uQiUpIQ08BgJV259qdFWjzorsd8RXQ7k KJHCh7E9yBWWatszVpmsKRuCRgJTn0g5P9KKt9WrtJYYM+q07IgQGWpsNN/lsTH5W7yF7H22+Nqc ZJz84r8sMda284IRztBHal19yRbslgltMjKVA01abvCmLamK6AprbtGeoo1ysKwF5Eao0TsxK9xu 03BS6hS9gU4DzkUWj26G4osKbSpRysBQJGaE2W822NHDbyngM7s4wM/avmZqdhrelhorSoEbxknn 5qVtctnEOdLZnkQvKjIhuNojNZyraQMYTx1PtXzeYMZtDS30IS4lQWhWMkH4+tIxvz8GT5iQt1Bz vSoHBPbNVjPvGo33HWnSEsgqTgcE9NtMJpWyGJwJ9dQVGOxAGt9QruazbYxQGMAOOjBUo9hn4pf0 vYiu7AvEKQ0rcQOh9hX47bJMW5qjlrCyohKSoEgfOKboflWmIhhsb5S+Sfk16SsCmsLX1PLWoXsz Z2I6QZ3kBKc5dPGPapSw28qMn1q3PK/Mc9PipQ4YVMwyJt2oHV2uZuGVML/mKoKWlwbkHchQ4qkN ZaevsQxzcmQsj0byUkH71TgOvRVqbeG6Ks+l5PqSD9RXxBioihqTS8Vm7JlNyHGIqlZWWujDmQQr H9339q/bihUVLqVvh1ak7S6g8KHwO1OshQIIUAoHg96z7VdpkxIEw2chTDqTmOr/AOZ90Ht9KWv0 7WkYMf0Oqr075sXIgLTkZl7Uy1zZCQhpsuDOOuQOa05NvYkS0J8h1UUDd5w5UOOAfisK026yJZj3 YOR3i56XRzkn+EitUsN4uEvEeCpDCGlEOL67ldMikfk6HUg54Ef02pS9i6jEcLpcGUMLSW9iU43J 6EjH+VZ9NuLDmQqCIsdxR7e30rQWNPKaebmOTVrdXysq5C+OhFfcm129Y/7ptghJ3JKU8j6VLqtS rvmNFNx4mNXGMy6jEQqeUF5V8D2oS63JalpaQdrhxjdyQK2O6Ls8SOGm0hO7ohKeVH2FIl205Pdd cmMskrICkNg+pIz0IqrptWGGDwP3M3VhFye4w2hmVGYaUmUUsrwcpOSn5xTpcpUJu1vOmQpwObUK S6njfnjjtzWOu6iu3luRnIhQGTtJHBB/pRq1u3G5hhKFlIVneVdz9+lKXaRgdzkCdRxYMg9S9qB+ A/MS0tpYIVudaZTgOqwAPtUdjTkORXGmhHbKgltKVBJSMd+9Mtv/ABrcWRFLUdxATl0lGFlWOx7/ AAaEOJhuLZipYdksr6BokraVnnd7VhbOl7xBfWwctnj8T9m39strVFa9aMggZKlK+lLGpXLhc47d smsKjlSgpJWg5A65B7dfrWk2vTdus8p+clS1vYyEurB2H+pqs9erVc32zJIbeZXtS2oZO8fH+tap sVH3VrnHucXftIeZf/0zdZDYbKlPlpJWVnkZ7D704WLRhTbkOzg6XVpxsB2+Wfr3p0hzIylPPtth KEr2uFQxuI7ChV61IhaTGay24okBST0J6GutrLLPACMJY6DxMze/Ldtdzcik7gnlJ+DVJF2KTlVO 0O2M3WK8mQ0h5/HoIOFdepPalq5aTuapziQhptrPUkHA609VZW3i3cbHyRVfKU03RLishXIpfVqe Q2lyJC/dZWQpfzmqF5f/AGdcSw08hwJxnb3V7CqcNl5qWp6U2lKRnYnOefeqlOjQDcw4kX5D5g2Y Wn13GOKsQklxR8yU51UecUSt+5GX3vU8rue1CbeypxfnO/YUWB9jRGIHAiVNZc72lgLJVzzUrmg1 KFiOjjqIwUpPKSR96KWnUl1tLoXCmOt+4CuD9qFlOe9fm3nrT5wexPN5I6msWHxHjzili+Nhlw4A faGBn5HSmicCI6X2loeiufkeb5Sf6GvPqknrTJpPVs2wPbMh+EvhxhzlKh9KA1XtYZbM9xj1Laos /K1ICHv74/1qnbryuwBtCIYQgDatbayQv5wehpnu8NiXaBebK6X7csgOIPK4yj/Cr49jSbJXwQel BesWLseGrsNTbkjx/wBWQ4FvYfdntLW8NwZC8qT9RQ9Gq3bo8ERlBDajgrJ/KPekB1ltLqZCAlK0 HcCUgjP0NfIuy1Tg+yw2y4kEL8kYSv52nj9KSPxNQ/jyZRr+UYfyGJt+nm7Kje95pflEAFxR6H/C DQW+OSocpBjL/EFZOHmzyR7GkzSl9ZLr5uE2LFBOPLWlWSPccYFaxpS8WZlP4aEpDri8OKO4KBP+ lTL9NZQ/kMxg21agBi3MXo9ulOvB1uC8p0j1LV0PH86JQ7QpiSh94mO3tUFBSeMn2zTsJjKFrde8 g8DbsIJA78VzbuEd6MVLaSWFZSCUZI985pRnJjCviI2nbncJNzXDUhL7aSU5C8J2/OKcbTaodsU7 K8hLL6zuUndkA/GaU7tM/ZUlQjBlu3bdzbkdHKTnkE+59qU77q+4zISmGY8lbyVH96hKjlPHHFGG me0+HAM7bcmMxv1V/wCQkLFvcdxzktd6RbNDC71lDgbS2dy3F9sHmh8PVF5ZQtEdteFDar0eof0o 8q7abXHYNxdDEhgYUUnYpffkdxmqFelspGMZz+Io2qQ+51v9/wDw7KkwZflxlElIKgTnPJNcH7mz Asjbi1smU8QouE/PBH2pd1DreyOwnojMGPIK8+tLe3HGAfrSE9cVrjtJjFfozwv1bfpnj+VOaf40 so3DETv+RReF5m53LUNis0Bp9ExK3QkAoQ5nPfisq1druXd3CmMVtsDITlXOPn3pcMGS/HW84VKd zwF9SKFKCs7T27U/pvjqaju7Mm6jW2uMdCE4tsukyI5cmY77sdtYSt4DICuoBNMFoWiapJcVhY6o V7138N9XK0/JWw42l+BIT5cmMv8AK6jv9COxpi1XpBtE2LctJvfi7bOBdbAI8xrH5krHYj370zaf R4gqCQwxzOCMJGE9K6A4rm20ttnDysuJ4OBxmq0uWllv08rNIjyOBPRsCg5GJLnODDZQg+s/yqUs zJKlqUVHJNSmkqGOZOt1TBvGfZIxkVwWsg1KlaEmT8DhxX7u3dqlStTka/D3Ur2nrylKkfiIEr9z IjK/K4g9fvR/xBsyLDqF+IwsrjqSl5rd1CFjcAfkZqVKHYIZOonyclpZz0oeygoUpWetSpWVmz1O c6Ol9o9lDoaBIkPMOZS4obTg4URUqUzWAeDE7SVPEYrXrSZb30ORGwhwDG4rUr/M0SXri+SpYcYu EiMMcJbVx9alSgtpad27aMw6ai0pjdKFz1nqJuSn/wAtIJIznj+lfQu11VueVdJm9weohwjNSpWj UigYAmfsck8wPPlPKz5jzyz33LJoOt1SieSB7VKlGQQDk5n2w35qwCaYLbEQEBwgY7CpUrlphaAC 3MIkBKc0DuUUKC5CcJIPI96lSh18GH1AyINiI8x9CM4x3Fat4f6okWOY0qKkFv8AKpCgCFp75qVK xqfUY+MUENmMmv7bHbDV5tqPJjTFcsK6pVgE4+Kz68xy41vZUEKPvUqUovDyufKjmfrVmYbiHd6n cbis+/WpUqUcMZKdF44n/9k= ------=_NextPart_000_001F_01C8D3B6.F05C5270-- redmine-6.0.5/test/fixtures/mail_handler/ticket_with_attributes.eml000066400000000000000000000035551500112024600256760ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Project: onlinestore Tracker: Feature Request category: stock management priority: URGENT redmine-6.0.5/test/fixtures/mail_handler/ticket_with_cc.eml000066400000000000000000000034551500112024600240740ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Cc: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. redmine-6.0.5/test/fixtures/mail_handler/ticket_with_custom_fields.eml000066400000000000000000000036141500112024600263440ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket with custom field values Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. category: Stock management searchable field: Value for a custom field Database: postgresql OS: Mac OS X ,windows redmine-6.0.5/test/fixtures/mail_handler/ticket_with_duplicate_keyword.eml000066400000000000000000000013201500112024600272120ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Project: ecookbook Priority: High Priority: Low redmine-6.0.5/test/fixtures/mail_handler/ticket_with_empty_attachment.eml000066400000000000000000000033161500112024600270510ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sat, 21 Jun 2008 15:53:25 +0200 Message-ID: <002301c8d3a6$2cdf6950$0a00a8c0@osiris> From: "John Smith" To: Subject: Ticket created by email with attachment Date: Sat, 21 Jun 2008 15:53:25 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_001F_01C8D3B6.F05C5270" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 This is a multi-part message in MIME format. ------=_NextPart_000_001F_01C8D3B6.F05C5270 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0020_01C8D3B6.F05C5270" ------=_NextPart_001_0020_01C8D3B6.F05C5270 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This is a new ticket with attachments ------=_NextPart_001_0020_01C8D3B6.F05C5270 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    This is  a new ticket with=20 attachments
    ------=_NextPart_001_0020_01C8D3B6.F05C5270-- ------=_NextPart_000_001F_01C8D3B6.F05C5270 Content-Type: application/json; name="response.json" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="response.json" ------=_NextPart_000_001F_01C8D3B6.F05C5270-- redmine-6.0.5/test/fixtures/mail_handler/ticket_with_invalid_attributes.eml000066400000000000000000000036751500112024600274070ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Project: onlinestore Tracker: Feature request category: Stock management assigned to: miscuser9@foo.bar priority: foo done ratio: x start date: some day due date: never redmine-6.0.5/test/fixtures/mail_handler/ticket_with_keyword_after_delimiter.eml000066400000000000000000000013241500112024600304030ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Project: ecookbook == DELIMITER == Priority: High redmine-6.0.5/test/fixtures/mail_handler/ticket_with_localized_attributes.eml000066400000000000000000000035551500112024600277240ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Projet: onlinestore Tracker: Feature request catégorie: Stock management priorité: Urgent redmine-6.0.5/test/fixtures/mail_handler/ticket_with_localized_private_flag.eml000066400000000000000000000034631500112024600301770ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Projet: onlinestore Privée: oui redmine-6.0.5/test/fixtures/mail_handler/ticket_with_long_subject.eml000066400000000000000000000045331500112024600261630ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project with a very long subject line which exceeds 255 chars and should not be ignored but chopped off. And if the subject line is still not long enough, we just add more text. And more text. Wow, this is really annoying. Especially, if you have nothing to say... Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. --- This line starts with a delimiter and should not be stripped This paragraph is before delimiters. BREAK This paragraph is between delimiters. --- This paragraph is after the delimiter so it shouldn't appear. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Project: onlinestore Status: Resolved due date: 2010-12-31 Start Date:2010-01-01 Assigned to: John Smith redmine-6.0.5/test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml000066400000000000000000000035571500112024600334660ustar00rootroot00000000000000Return-Path: Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> From: "John Smith" To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Project : onlinestore Tracker: Feature request category : Stock management priority: Urgent redmine-6.0.5/test/fixtures/mail_handler/ticket_with_text_attachment_iso-8859-2.eml000066400000000000000000000015401500112024600303200ustar00rootroot00000000000000Date: Thu, 14 Jan 2016 18:32:45 +0100 From: John Smith To: redmine@somenet.foo Message-ID: <7A3.L9Yi.1Ki1}PMZiV5.1Mbzkz@seznam.cz> Subject: issue #21742 Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_08d580646981073f1a667ba3=898e56d9-3d29-5ed2-9c9a-cc3a5d9474b5_="; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Mailer: szn-ebox-4.5.88 --=_08d580646981073f1a667ba3=898e56d9-3d29-5ed2-9c9a-cc3a5d9474b5_= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 --=_08d580646981073f1a667ba3=898e56d9-3d29-5ed2-9c9a-cc3a5d9474b5_= Content-Type: text/plain; charset=UTF-8; name=latin2.txt Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename=latin2.txt; size=19 p=F8=EDli=B9 =BEluou=E8k=FD k=F9n= --=_08d580646981073f1a667ba3=898e56d9-3d29-5ed2-9c9a-cc3a5d9474b5_=-- redmine-6.0.5/test/fixtures/mail_handler/ticket_without_from_header.eml000066400000000000000000000033601500112024600265050ustar00rootroot00000000000000Received: from osiris ([127.0.0.1]) by OSIRIS with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200 Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris> To: Subject: New ticket on a given project Date: Sun, 22 Jun 2008 12:28:07 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique sed, mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse platea dictumst. Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem. Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et, dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed, massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo pulvinar dui, a gravida orci mi eget odio. Nunc a lacus. Project: onlinestore Status: Resolved redmine-6.0.5/test/fixtures/member_roles.yml000066400000000000000000000013531500112024600211640ustar00rootroot00000000000000--- member_roles_001: id: 1 role_id: 1 member_id: 1 member_roles_002: id: 2 role_id: 2 member_id: 2 member_roles_003: id: 3 role_id: 2 member_id: 3 member_roles_004: id: 4 role_id: 2 member_id: 4 member_roles_005: id: 5 role_id: 1 member_id: 5 member_roles_006: id: 6 role_id: 1 member_id: 6 member_roles_007: id: 7 role_id: 2 member_id: 6 member_roles_008: id: 8 role_id: 1 member_id: 7 inherited_from: 6 member_roles_009: id: 9 role_id: 2 member_id: 7 inherited_from: 7 member_roles_010: id: 10 role_id: 2 member_id: 9 inherited_from: member_roles_011: id: 11 role_id: 2 member_id: 10 inherited_from: 10 member_roles_012: id: 12 role_id: 1 member_id: 8 redmine-6.0.5/test/fixtures/members.yml000066400000000000000000000022671500112024600201500ustar00rootroot00000000000000--- members_001: created_on: 2006-07-19 19:35:33 +02:00 project_id: 1 id: 1 user_id: 2 mail_notification: true members_002: created_on: 2006-07-19 19:35:36 +02:00 project_id: 1 id: 2 user_id: 3 mail_notification: true members_003: created_on: 2006-07-19 19:35:36 +02:00 project_id: 2 id: 3 user_id: 2 mail_notification: true members_004: id: 4 created_on: 2006-07-19 19:35:36 +02:00 project_id: 1 # Locked user user_id: 5 mail_notification: true members_005: id: 5 created_on: 2006-07-19 19:35:33 +02:00 project_id: 5 user_id: 2 mail_notification: true members_006: id: 6 created_on: 2006-07-19 19:35:33 +02:00 project_id: 5 user_id: 10 mail_notification: false members_007: id: 7 created_on: 2006-07-19 19:35:33 +02:00 project_id: 5 user_id: 8 mail_notification: false members_008: created_on: 2006-07-19 19:35:33 +02:00 project_id: 5 id: 8 user_id: 1 mail_notification: true members_009: id: 9 created_on: 2006-07-19 19:35:33 +02:00 project_id: 2 user_id: 11 mail_notification: false members_010: id: 10 created_on: 2006-07-19 19:35:33 +02:00 project_id: 2 user_id: 8 mail_notification: false redmine-6.0.5/test/fixtures/messages.yml000066400000000000000000000034461500112024600203250ustar00rootroot00000000000000--- messages_001: created_on: 2007-05-12 17:15:32 +02:00 updated_on: 2007-05-12 17:15:32 +02:00 subject: First post id: 1 replies_count: 2 last_reply_id: 3 content: "This is the very first post\n\ in the forum" author_id: 1 parent_id: board_id: 1 messages_002: created_on: 2007-05-12 17:18:00 +02:00 updated_on: 2007-05-12 17:18:00 +02:00 subject: First reply id: 2 replies_count: 0 last_reply_id: content: "Reply to the first post" author_id: 1 parent_id: 1 board_id: 1 messages_003: created_on: 2007-05-12 17:18:02 +02:00 updated_on: 2007-05-12 17:18:02 +02:00 subject: "RE: First post" id: 3 replies_count: 0 last_reply_id: content: "An other reply" author_id: 2 parent_id: 1 board_id: 1 messages_004: created_on: 2007-08-12 17:15:32 +02:00 updated_on: 2007-08-12 17:15:32 +02:00 subject: Post 2 id: 4 replies_count: 2 last_reply_id: 6 content: "This is an other post" author_id: parent_id: board_id: 1 messages_005: created_on: <%= 3.days.ago.to_date.to_fs(:db) %> updated_on: <%= 3.days.ago.to_date.to_fs(:db) %> subject: 'RE: post 2' id: 5 replies_count: 0 last_reply_id: content: "Reply to the second post" author_id: 1 parent_id: 4 board_id: 1 messages_006: created_on: <%= 2.days.ago.to_date.to_fs(:db) %> updated_on: <%= 2.days.ago.to_date.to_fs(:db) %> subject: 'RE: post 2' id: 6 replies_count: 0 last_reply_id: content: "Another reply to the second post" author_id: 3 parent_id: 4 board_id: 1 messages_007: created_on: <%= 2.days.ago.to_date.to_fs(:db) %> updated_on: <%= 2.days.ago.to_date.to_fs(:db) %> subject: 'Message on a private project' id: 7 replies_count: 0 last_reply_id: content: "This is a private message" author_id: 1 parent_id: board_id: 3 redmine-6.0.5/test/fixtures/news.yml000066400000000000000000000013611500112024600174640ustar00rootroot00000000000000--- news_001: created_on: 2006-07-19 22:40:26 +02:00 project_id: 1 title: eCookbook first release ! id: 1 description: |- eCookbook 1.0 has been released. Visit http://ecookbook.somenet.foo/ summary: First version was released... author_id: 2 comments_count: 1 news_002: created_on: 2006-07-19 22:42:58 +02:00 project_id: 1 title: 100,000 downloads for eCookbook id: 2 description: eCookbook 1.0 have downloaded 100,000 times summary: eCookbook 1.0 have downloaded 100,000 times author_id: 2 comments_count: 0 news_003: created_on: 2006-07-19 22:42:58 +02:00 project_id: 2 title: News on a private project id: 3 description: This is a private news summary: author_id: 2 comments_count: 0 redmine-6.0.5/test/fixtures/plugins/000077500000000000000000000000001500112024600174455ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/000077500000000000000000000000001500112024600216065ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/_foo_plugin_settings.html.erb000066400000000000000000000001631500112024600274630ustar00rootroot00000000000000

    <%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %>

    redmine-6.0.5/test/fixtures/plugins/foo_plugin/app/000077500000000000000000000000001500112024600223665ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/app/models/000077500000000000000000000000001500112024600236515ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/app/models/foo.rb000066400000000000000000000001011500112024600247510ustar00rootroot00000000000000# frozen_string_literal: true class Foo < ActiveRecord::Base end redmine-6.0.5/test/fixtures/plugins/foo_plugin/assets/000077500000000000000000000000001500112024600231105ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/assets/stylesheets/000077500000000000000000000000001500112024600254645ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/foo_plugin/assets/stylesheets/foo.css000066400000000000000000000000001500112024600267470ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/other_plugin/000077500000000000000000000000001500112024600221445ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/other_plugin/_other_plugin_settings.html.erb000066400000000000000000000001631500112024600303570ustar00rootroot00000000000000

    <%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %>

    redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/000077500000000000000000000000001500112024600243315ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/app/000077500000000000000000000000001500112024600251115ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/000077500000000000000000000000001500112024600274575ustar00rootroot00000000000000bar_plugin_articles_controller.rb000066400000000000000000000002121500112024600361730ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/app/controllersclass BarPluginArticlesController < ApplicationController def index render plain: "bar BarPluginArticlesController#index" end end redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/config/000077500000000000000000000000001500112024600255765ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb000066400000000000000000000001651500112024600274460ustar00rootroot00000000000000# same path helper name with foo's get '/bar_plugin_articles', as: :plugin_articles, to: 'bar_plugin_articles#index' redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_bar/init.rb000066400000000000000000000004171500112024600256230ustar00rootroot00000000000000Redmine::Plugin.register :redmine_test_plugin_bar do name 'Test plugin redmine_test_plugin_bar' author 'Author name' description 'This is a plugin for Redmine test' version '0.0.1' end Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| require path end redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/000077500000000000000000000000001500112024600243505ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/app/000077500000000000000000000000001500112024600251305ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/000077500000000000000000000000001500112024600274765ustar00rootroot00000000000000plugin_articles_controller.rb000066400000000000000000000002041500112024600353670ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/app/controllersclass PluginArticlesController < ApplicationController def index render plain: "foo PluginArticlesController#index" end end redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/config/000077500000000000000000000000001500112024600256155ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb000066400000000000000000000000541500112024600274620ustar00rootroot00000000000000resources :plugin_articles, only: %i[index] redmine-6.0.5/test/fixtures/plugins/redmine_test_plugin_foo/init.rb000066400000000000000000000005501500112024600256400ustar00rootroot00000000000000Redmine::Plugin.register :redmine_test_plugin_foo do name 'Test plugin redmine_test_plugin_foo' author 'Author name' description 'This is a plugin for Redmine test' version '0.0.1' end Redmine::Acts::Attachable::ObjectTypeConstraint.register_object_type('plugin_articles') Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| require path end redmine-6.0.5/test/fixtures/projects.yml000066400000000000000000000032011500112024600203340ustar00rootroot00000000000000--- projects_001: created_on: 2006-07-19 19:13:59 +02:00 name: eCookbook updated_on: 2006-07-19 22:53:01 +02:00 id: 1 description: Recipes management application homepage: http://ecookbook.somenet.foo/ is_public: true identifier: ecookbook parent_id: lft: 1 rgt: 10 projects_002: created_on: 2006-07-19 19:14:19 +02:00 name: OnlineStore updated_on: 2006-07-19 19:14:19 +02:00 id: 2 description: E-commerce web site homepage: "" is_public: false identifier: onlinestore parent_id: lft: 11 rgt: 12 projects_003: created_on: 2006-07-19 19:15:21 +02:00 name: eCookbook Subproject 1 updated_on: 2006-07-19 19:18:12 +02:00 id: 3 description: eCookBook Subproject 1 homepage: "" is_public: true identifier: subproject1 parent_id: 1 lft: 6 rgt: 7 projects_004: created_on: 2006-07-19 19:15:51 +02:00 name: eCookbook Subproject 2 updated_on: 2006-07-19 19:17:07 +02:00 id: 4 description: eCookbook Subproject 2 homepage: "" is_public: true identifier: subproject2 parent_id: 1 lft: 8 rgt: 9 projects_005: created_on: 2006-07-19 19:15:51 +02:00 name: Private child of eCookbook updated_on: 2006-07-19 19:17:07 +02:00 id: 5 description: This is a private subproject of a public project homepage: "" is_public: false identifier: private-child parent_id: 1 lft: 2 rgt: 5 projects_006: created_on: 2006-07-19 19:15:51 +02:00 name: Child of private child updated_on: 2006-07-19 19:17:07 +02:00 id: 6 description: This is a public subproject of a private project homepage: "" is_public: true identifier: project6 parent_id: 5 lft: 3 rgt: 4 redmine-6.0.5/test/fixtures/projects_trackers.yml000066400000000000000000000016041500112024600222370ustar00rootroot00000000000000--- projects_trackers_001: project_id: 4 tracker_id: 3 projects_trackers_002: project_id: 1 tracker_id: 1 projects_trackers_003: project_id: 5 tracker_id: 1 projects_trackers_004: project_id: 1 tracker_id: 2 projects_trackers_005: project_id: 5 tracker_id: 2 projects_trackers_006: project_id: 5 tracker_id: 3 projects_trackers_007: project_id: 2 tracker_id: 1 projects_trackers_008: project_id: 2 tracker_id: 2 projects_trackers_009: project_id: 2 tracker_id: 3 projects_trackers_010: project_id: 3 tracker_id: 2 projects_trackers_011: project_id: 3 tracker_id: 3 projects_trackers_012: project_id: 4 tracker_id: 1 projects_trackers_013: project_id: 4 tracker_id: 2 projects_trackers_014: project_id: 1 tracker_id: 3 projects_trackers_015: project_id: 6 tracker_id: 1 projects_trackers_016: project_id: 3 tracker_id: 1 redmine-6.0.5/test/fixtures/queries.yml000066400000000000000000000075601500112024600201740ustar00rootroot00000000000000--- queries_001: id: 1 type: IssueQuery project_id: 1 visibility: 2 name: Multiple custom fields query description: Description for Multiple custom fields query filters: | --- cf_1: :values: - MySQL :operator: "=" status_id: :values: - "1" :operator: o cf_2: :values: - "125" :operator: "=" user_id: 1 column_names: queries_002: id: 2 type: IssueQuery project_id: 1 visibility: 0 name: Private query for cookbook description: Description for Private query for cookbook filters: | --- tracker_id: :values: - "3" :operator: "=" status_id: :values: - "1" :operator: o user_id: 3 column_names: queries_003: id: 3 type: IssueQuery project_id: visibility: 0 name: Private query for all projects description: Description for Private query for all projects filters: | --- tracker_id: :values: - "3" :operator: "=" user_id: 3 column_names: queries_004: id: 4 type: IssueQuery project_id: visibility: 2 name: Public query for all projects description: Description for Public query for all projects filters: | --- tracker_id: :values: - "3" :operator: "=" user_id: 2 column_names: queries_005: id: 5 type: IssueQuery project_id: visibility: 2 name: Open issues by priority and tracker description: Description for Open issues by priority and tracker filters: | --- status_id: :values: - "1" :operator: o user_id: 1 column_names: sort_criteria: | --- - - priority - desc - - tracker - asc queries_006: id: 6 type: IssueQuery project_id: visibility: 2 name: Open issues grouped by tracker description: Description for Open issues grouped by tracker filters: | --- status_id: :values: - "1" :operator: o user_id: 1 column_names: group_by: tracker sort_criteria: | --- - - priority - desc queries_007: id: 7 type: IssueQuery project_id: 2 visibility: 2 name: Public query for project 2 description: Description for Public query for project 2 filters: | --- tracker_id: :values: - "3" :operator: "=" user_id: 2 column_names: queries_008: id: 8 type: IssueQuery project_id: 2 visibility: 0 name: Private query for project 2 description: Description for Private query for project 2 filters: | --- tracker_id: :values: - "3" :operator: "=" user_id: 2 column_names: queries_009: id: 9 type: IssueQuery project_id: visibility: 2 name: Open issues grouped by list custom field description: Description for Open issues grouped by list custom field filters: | --- status_id: :values: - "1" :operator: o user_id: 1 column_names: group_by: cf_1 sort_criteria: | --- - - priority - desc queries_010: id: 10 type: TimeEntryQuery project_id: 1 visibility: 2 name: My spent time description: Description for My spent time filters: | --- user_id: :values: - "me" :operator: = user_id: 1 column_names: group_by: sort_criteria: | --- - - spent_on - desc queries_011: id: 11 type: ProjectQuery visibility: 2 name: Projects as list description: Description for Projects as list filters: | --- id: :values: - "mine" :operator: = column_names: group_by: sort_criteria: options: | --- :display_type: list queries_012: id: 12 type: ProjectQuery visibility: 1 name: My bookmarks description: Description for My bookmarks filters: | --- id: :values: - "bookmarks" :operator: = user_id: 1 options: | --- :display_type: board redmine-6.0.5/test/fixtures/repositories.yml000066400000000000000000000010061500112024600212330ustar00rootroot00000000000000--- repositories_001: project_id: 1 url: file:///<%= Rails.root %>/tmp/test/subversion_repository id: 10 root_url: file:///<%= Rails.root %>/tmp/test/subversion_repository password: "" login: "" type: Repository::Subversion is_default: true created_on: 2006-07-19 19:04:21 +02:00 repositories_002: project_id: 2 url: svn://localhost/test id: 11 root_url: svn://localhost password: "" login: "" type: Repository::Subversion is_default: true created_on: 2006-07-19 19:04:21 +02:00 redmine-6.0.5/test/fixtures/repositories/000077500000000000000000000000001500112024600205135ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/repositories/bazaar_repository.tar.gz000066400000000000000000000741411500112024600254100ustar00rootroot00000000000000‹“§9Rì] |ÕÖkihýØT‘a„¤³Oƒ"¤´…Ö²•²)X&3“…&3afÒÒ‚ïCQAE( È&ROPqú@°¨hUÐ ŸHE„ŠQQóî$Mi Ï6)„¼ç=¿.™É™{çÏ9÷œ{νÆ [À²r¶,¸%Å¡Jr~‚î* ˆa(ÿ@µÿû?c8ŽÑN©C1‚$Bé"@EeeÑÉ’¤þU¹º¾ÿ%ãðWe˜“aü1ŠfHÅI ’Æ ˆÿõÅßh)®þÉÐÿ(Àß"³"g7X%ÙŪ ÁŸ¦É?IÔÄÓ!(ÄÿšS’}ÃÐAˆKPY„wȧu‚>HsÓë ý÷RüŸ™bN’räÿ_ñ?ŽQµä?MP$äÿHP–Ý¡ à‡E’á$Q•%ç%I`Ô'Kˆ(©ggE›€°b>bu8p™ˆ¨ÚåÕŠŽÄ®ªî¾ •ýÊË)FI¶%hòqI². ˆ‡$"¬Eò¨•6BIuüÏÙ.@”ÐPþmüÇ(ÿGþN‰ Û$ Å ˆTád¹ô©úe8j28xN’y™§ò<¼’ÃP¬Îjeªgµpœ4䢂d£Àíe/+ö@µ$ÎàÊU2ªSTí¨ê úÕ(JXžÏ.UìN†³y ¸Îª³ –D3‘VŽq O Iš¬ga÷˜1šÁ9ÔBr:œÁíHJF¯ÔŽqfsÚ 4ô;þûe$’”Q•ä ÕŽ©¤Z\ Ðt§lwàSÆ@Ml¢3%ò‰¬I )žÅ- ô×ÇëÊ‚Ä"¢‡ä ²6:øj±¾ñúQ k«,­© ÿ­ä´L£|9Ì­ø*Ú׆Ü>ˆÁîawGüå‡i£LÞ¡¸l>"Ȳ$++òH+‹Ѧ€ìÚUvÁé\2Ò.å!þC— hOe’…“þ'ê g&{¹¬SUD•Nk‹6½©Ú…K-ð?œ–çµoªÊÿKü|O N ]þÓ4ó?£ÿKW_þc(C^6ÿ‹¡PþG‚8Vׯ.øÇÈ ÷5I©¥‚ØD²= å| låÍ‘ äfÐk ÉXðEž•yDò¨nz¹zOBRÓ2R†š‡¤ÔT2bΤ ûàýúãx}¥Ø¤‹_ìWù(Ü×ÅŸN *ëpú•Åå*&¹R»ÔÎ9ÑJOÖJ!¨õWG‘u «,¹ªê¬cxYnVµ#Z‘@ZŒ€HN ]dAW•¥YQºôŠR%—CJ™ïã€æ”¯ñ½Gx£véPIú"YlÀ­Wµûø¹6NHž¦=J@;‚›p’Ë¥5]KÎA,àyr ÝÇ€‚u*R ~NEéo!ÿ«Â7¯Íø'/“ÿ¨a åè±áC¨½Uóòħ NÎÿ[i¿-š€¿= ÿ3Rë#jÊXÕoh‚&Ëát ë2"42‰sˆ6e„àX_ ïKáHo ÐÑcÓßWƨiCRb>k‡‘ó_Z>œŠu$‡þGí·QÒFòYp²©Í<ĬÓmYÐòw¶™N×D7<#+eÍÌÌk—¬É)Ù9µ¤¤¤T‡•ÎäJKKËfêÊ ÓËv攕••g¶*W’Ê‹2ËK§–——W%U¥WTTxï›é-œê-.ò–,ò–zKм¥ó¼¥‹¼¥…ÞÒ5ÞŠ"¯×ë[3Ï·Sç+?­|¥}e½|ee¾ò$_yº¯ü>_y…Ï[äónóy‹}ÞŸ·Ôçg¼>_‰ÏWêó•ù|>8„éj“N×hqoüÕ©™CGþÝ_ÆHoLw 'òÓ’ÍYSs¿,hÞÞÝrp¯9“»´ÜûbÎÜŸºÄþþ–G_9Û¹i·sç©QŸÇk<à­Gþoaç/‡Ç>8Ø®¯ÚüÖwCú{©ú.]ô lBºÿÃ|»Ù¼~úÌ%[t7÷ŽY°¢EV˹w3DÛÙ+¹&n^ÆÝúžCǼsææñuñEÛÆjï~HKš¼)i⌿‘ýÌÖ¹úÓ’ýkÇÿÃüÿÈS©eþeøc€ƒùýlЄ©eÌ9äþáæ¬ÁjZr•æxUCg¸ìU¿i¤ Ä ¹~kD3_ü¥€1©}®Œ/Ðîà°‰À`ã«_<寕¿PŽCä5#¹TåʜĀyêfeÕÁyœY­h_ÿ¥}ª¯n¢ä»œ1'tÓÑpÉZ­Š—N^ª$`"QÊ« žª*TÃ0LcU™Êy@µr… š,‰wh&£vZk˜f¶{,Á·â¨¬·*apðJµ*¢‚,²ND²LÒŒHðmà)§©æ5`AQ8‡:*é‰öB@Á‚›#AÍ„ʦ#àœ]öÚš‹€áoìUðÔ4S9Ví£½ªÚ«õ”ÿ¬GµKr¶ p¬t¨Èøµõÿ€Õ‡¢•þ_ú£ÿ†®:þ ÉÀøïè¿+ÁÕký·êøãZâ1ÿE‚àúoPÿ׋ÿ°\½Ö«Áÿ(AAÿoD®ÿù?ýŸ.ÿ×{ü‡Sÿ3pý¯èÄ?œHÐÐñÇ`þg”âN&h½ò?kèŒb`ügtò™ õZÿ§ÿ$ã¿"B8¢ ŠšmÀQŒ@MX"jÂ)7LvLrX]9ÎÉ.“Ë“kq¡ÿ… Zwþ'SKþ(çÿ"BnVD5 ëY?Äh¬E ÛCþ·58´^ùŸµý¿pü‚ùŸÿC™ÿ¹æöÀþ£)¸ÿÓuÃ_p¹Õ|ÃUYú­þøã¿0B›ÿGI âø_…màÂÀŸñÑ„ö iÿ7 mú®ÿÁñœÿ‡ã¿¿âÿ†mÒþo~ùÏP Œÿ‰ÁùÈÿuóö yü‡£ÇÿшX A…Ž?FRÿhÄ?¬màêÔÿ] gàüoD¨~û¿Qd"¦Z»¿az´j;7-M,[{GÚL2ä7 þ fEγX'»rŠÏ½´³Ú”:HÇQÇÿayBÚÿ) ÿýñÿ#eÿ_qÿ§ÊY ̈‘pòøÛ@…´ÿS@ÿƒOÿ#Âÿpÿ'Èÿõçÿ\‡wmâkêŠú?ŠðoØ\pþ ÚÿQˆ˜Ë€‡áÿÆ#Ä?êðs°0ä?ŠÃøß(äÿ𶫬6þ8MÃù¿ˆŠhkøô…ƒ}8þ¯›ÿÃÜ,tùã$ŒÿŽ>ü¯YüsYü\ÿ7BþŸ+Åÿ3HOQx øièþ…ò¿Û@…eÿÁüÿë†ÿUùŒÆu(Fñ¿®ø7,ä;DýOÔŸֺ ÔÿÓÿ0þêÿZü_í8"ò_Ëÿ#p‚Âýë¿R$ å´àïq;%–Oˆþ8Š0ÿ+jðw³\Ž÷+%|üÿ2þS[ÿ¿&þ ý?‘Ñÿ½ý!_ƒdÖmGÒD^˜‚àzQâÐ!¬ÙZ@ˆÒÕçùÙ‚SÐ6Túaz§ öÃõ²”— >ÙT»vnJaÇýØMM:·ÐÈv¬µ.eõ^¶ÕÊÃ]R–~yÏŽ^.›tÏ×yonzyãû±¸™wìÏøxàso¾»Ü«Û“™ºîB«wzäÙGÝ>ž^x±Ùéîâs—-v8¾æè{îø-ãõ‚?íp[ÔÖׇÿ¶ûs8úŸÑ¶ƒò?Šä¿’Qüi˜ÿmø³‰(É›·˜0ÔDðœÀ24ÁÒ¬ÕÊRεbáècjëŠÀ`üWíDîÊâGz:´PÞà ¼–䉱Ä^ú$<1Q¯·q¬@3¤ž L@é¼ëÚ´K^“õÿÍßüíë‰/›º¿ï8Øk⬳wô '6Ú‘ùêbõ©Ñ™ƒÝ´w óó½+p?½‘Øt•+«GAEúÊn£VŽ_Z‘p¸ù¨ÂuSãŽýç±]Ö÷Û³´tUö≃ÇÎx§leˆ¯’’ ¶ =C'‚ö-rÇÐ&X+Ã~¡÷/^˜Ð¿4÷Î¥[‘”s{Ëcòº=óð]ƒô¿ßÕ&ÆÜj}‹å‚£ø¹mûOå;?[vÛû?o¿gÀŠFâ˜ýß~õý‰2~_¼gÏgÍuwg<8æÈKxÜ3CÚÏJÞÚmÄ”}Ñ£§Š¦íû³éüDùýV¹Û:Ÿ~9~äo,]W0Îöh»yõà{ ;p ÎeýQ–Ø£ûw’NÒù“Ïöÿ}ÇÑŸ§avÏNºí¶‹úй;:÷¬zuGú Ý÷›&~Ý?éDŸq[†¬‰ý讃…[ÕG:.å¹]ΈÃq™ïQ«;‹kó..ؾ¢µyÛÁçï/<<¾wÇ »Û>û¦%mb~øäæ³ïRÇ'ÈïÚè^{{¬üxÈ;Å=–)q_ä<öÅCŸžYøÉæòì×uxÿ› m_Îf³¿èýJŸ‡fÄí±?^2åηw›@ñî›9«eÏ÷¶ŸŽðíÑO“0Æ|ÁMVCÁ ž5¿þa´]òÀg~}æþ3CæmùjÇM»|býü_Võ˜ñÇ#ª Û>LÉ# eüœØþÈyÏ…ùÍÛ~´uù¼Ö ?‘;ýÃcOÏ}íPÜ7dÒÉŒ#36/ïÿÛ§³ÿ(n\ðDüôONY5³[J—ÆËX¼ñë¡ O>ÛmÚW/OÂ?Üñša‘!¦Ù¤6=Óz'7[³5¯ëìÖËOoÛnì?gåK‡ó_›ö}öG‡µ™2¼SIVu \“ Ö÷¶½·aßބ̽ûŽtÇå^8—Õ3Í`<ÖXg=s&Eé?HÿSPü‹2M1´7ñ8g¥,(ÇQ5aáê 'i¼Öú¿ŠÁùÿhÓÿ¨J2a$­Ç ?—?=ê®·¥´Z,~鬛;ˆlÝüØ8ç¼ÂË‘<½iÄ\øµCaœ?ðÃy±mKkQÚ–½­ÍS Í3ø}¿Ç.LI-é´Âvpqiù‘]¿±ŽúãÓ1çœðô×Ë­ÙûÓÚ¢Œl]ìÊO–älØðÝÅ3\Øñúò;>Vº,ÿPF‘Cš™)<8bÖ7koh¦Çhú¤á°µõá·Z,ÙëÌ™Ä ;õ^Çé6šèµ_åìZurÎ[Ž¥[Rnb>m<¶ùŠYÝæÅö½1=uÀÞÃî±jÊÈu³l]¦>—œûÄ€ØÇç}¼Õ¶ûĆ>¿œÅ&ø`hû%ô'¾Yötycä'’œ·mµíö‹¦soQ,ãFtJ¹—9}¢yû}-b^ΩY’oEO÷3÷ô̙ܾOwÎ4üä_ðÖÞ{}kí}‰ˆßœZLsáì+³3½u8ÈXÔRê)D/ùHÜÔxî„go fÞ£:0Ş颷éM~Ú0u<ËêkJô4wVâ5LBœ¹„˜Öãe0ÏÊíµ)[ìÍR{“˜UUx„4{éS©àL™^¬¨žü-Û‘þsög—åÄ>‡±.)¸)é?Ftê#ö¼–3 Áµ_žÚ›L ÷E€´S;‹ ±ZÑ|›:aŠïd·!‰—fÛÖî‹öÇëÝó¬õÝM lo!úâ3G²ê"(PÜfÚÓL4Ä„a0eࡆ+>c‹?ÞÿÜÌÉàf?ÓÏ*,‚bÅrM =ÁÊ”êÌêŒC ݘïÈnP.Û˜­aXÆS¸,="¥z¨Kø–¢üµ¢Üg_Xs!e,È“Tö¼¯²A=<ÎÉIæYÁe´v.l®ög&Üs3W›¨%0HFL¡¾Icí8yvKÉÂKÌAI™Ù“„Õ¾ÒFxé©…:Ä–IëæsصD{ÇC\NX;ËT-´>&ÆÓéN¬CLanNAcua¥÷0WfÖo5ƒž(ñg `I»îš×„ßR”aôÍÆ—&W{ä–ž£”S0H2uO~òÁÙj’ç|«i W…qÔå÷…‰Ý5Åþ˜iÃPмh²pAzsQpœ%ÒÔu8ÔÅØÁšØüÍ'°µ»À¸×•ŸÉ“¸[Ý^Æ—rÕërey"Ü0îxÖ>Ÿgôx´ÃDÖ»ÿÔ ÙÑQr–±¥)ŸƒõF"[M‰µ¯OøÜãP^‡è,¾µ.vçSášÅÂJq~}ö5šç0¦m/Ùfå–‡*RÈDbÙô%óµÛºY””ë°¸Ø ß?Ž8~ôÚM Mv/Ð{œzòl’ƒˆtñ¿*Yi2®Ø«1•SPǪP”­öÍÕZ…?N+€á¦EFU²è]"Ù‡º!IóçinÚÛ¹¼›>?qp©Ó&.!¹vs´f-òœ>»qä)Môu½Êmb—q¸ÝÞäE“ªdZYñ²>i¾îˆ¯ÌN*^7cçи9êY©_r$Ì b‚û,쫎Cf WøÒ‡;+ª«-Ò3Xyo{º_;;°óÈ ¥4‡$šÌÀ'$™>`MŠ,ÛòíŒÑa»õ ÕÕ+²¥f2ëe2v9?Œ7ÎÒáA¿ø>®ªÒ˜P÷~MæÈ„àª<°¨jf[ߣ¥—é%JN.=ѵn†Õ(#˜X ;!ˆÄþ5p: Ô:±µã;æôH£a{|È– qŠ#ãÚ//…rw·_šZ—ÞÖÏ B±FñòU‚á'#$‹&ÅÝ?¦Ó)Èׯwç¥÷T¹ÕﶃSl³×Âåè|°Ù&bëoïzlpưo¸e}Œ¼0ÕI3‡Á1gõür§OŸu(¢(šÜ„}¢­Ðj ¼›ë|h´„ìmèb?ê|ÜPv«Šx®ÁňN@¤t_öi;‡? L†½6¡¿gpÞxw¿&º¡ÞÝ-aKCT)ô4.bß­cÑUy¢žÓo“/Ë;‹ùt–%0”ò*—‰E³ E{Bé 欮nØÀþÐ$§Üc´²¬áì4ÀYïf¤#™¥ÐAY+gÙ\N&jŽ’‹3.<ú%EÃKNp& š~_Ù=¥ÇYPDaü}çXç öÐô²ÎÒâèbèrDy£¿TCÞì±5¤a¥ÿ-0Aɳ€ Ñ<ÍÍä´$‡3À-tzƒìfˆß°ÈÁ‡:Ä`ë^2jSºEÑ£ô õ‹Îý…C"”­Jƒ,yÙ3Bíƒw|A{9&t—¢ÛÆm*m˜„û|Ã0ü±AŸ¿¼Úxé§Úò™)­þMRmvä®z$.—ë^Lâ´ÜB]¯½,¨¨~¯–G:%¼$ûfú:<&t}½ëM ^<^[:@_dE‹´+Cßô®üµëpXÈaÿ[ÁÆÎ…úÞO~§v^™'DS‰À‰æSwSƒÀkª·3tØuWÃ'/gáüaÈt¹†]‡ÓÓÝMœMRC"Eš#ÓÓ1ÇÔÌ)¡áÝSCà*åÛì/€ÉŸdœLü8”/ì®Z¼¾Þs÷x´ Ú‹R¼3ï$¤|æòbtOcª´äk½ëÉ9*¸b°mÒCšEgn4o¼ zb¦>nŽi§+̳MSÌñ3«H'1Ì/Ht19v¤DtŠuK¿ó%Q­f¯TÓ('ˆº«†Z ýLËÇ-@Þ ^f)ùØ ÌŸ˜DBQÿd~åÄKŠþØ,më\nrI‘!âx0 {£‡)ÖWAÒƒ¿Ñ4#WÜÛI#Á=TÜ>C!X%¨®º”&/£¡‰œ" é#uœ˜Ö|z˜s¯ûf¹»»§«]?Q›Ÿ«ŠÊš_f¼—'“² ‘ ¢<I""ÊÈ/EÓ Ï!¦ˆ£¸¤5ÕŸ‰ÇÚP\ÀóaVŸžeímU®÷r-c—÷™Ë:BÚ]à"|Éqa—bE¤u¦µw.¶ó ) VN„ðØ<…ŸÍ I…¬bÐÄЦ˜¢s¶ ú¾Î º Ö¡cè÷¬qs^[3p—ÚÕŠíÊ› ,jlp¶6™ªêO÷¬¯‡Ë®­«šÐ'›´É) ç!z’/*2ßÃiX(¿3ŽÔ¶ª‚Ê +E6éV_Ä€f{×ÚnF¨GŸý¤k:LýéÉãÌ— Í!¡Ò ÁÎiÄ3`£¡zÄGŒÞÊ{é¬ C-³kí*¥»ó7fDªs|Î\T¯J=ºõàmvÓ?Ëž£’òë×2©+Ñ>³èóì út1x{%ìvqàB²Gq ±{¾‚eÚð: îmÈ‹Žf‹< ½p«×[è|²—§N/èú´(_2’¾²Òp¼!Q™9;‡…-»ºÊ:=ÙÂT¯‡Üt„鲡øG<é¶Ògtkm(uJ•ÚI¥ü&öuæ¿KB+=À=㕫θhµkãØxÆ;NüLú'·MeC$¬0Ï™úÇÜlo¿Í¤i^y§óW?)Ð[Cd~ݪª¸õ%CFŽM‚Žàè}¡¡¡55Lì°câqhÛæ^ó¾óîô‹/™ký׸*œ )%ïªyžhM“XmËDÞV õÙ0Çò¬–|Dfy$õž]9ÌÑx5f¼¾ÛzÕÒ\©*ÃãcÑbI`ØÉ;¹úªó ßZç£r‡·WMò‚SÞ‚¦±ù·Ì9Mc7 Ãqëϵœ9•|)‡’ËïÌôÓ-)œ®“?ø'Ey>š6yÄ+ùLÕà¨&3ºýrÏ.t2¿-*ò Éä®HÃt>>ý+øu),á7˜Iâr6tñÐÌ\4(idO‹b…:‰ÏÖ\d„ 1w>{¯yH†Fƒ7™¤v¶u¡žísè§8ˆTÁ„ NIa~Ëë­uƒ\kRKo&ÆY36PÏ\.Ô…°ŸÃQ‘©Ä›â¨ç&Çä­ÆìÕ|(q4¯éQë–wéÖSTFêY´¸¼3Q£M¡˜ûå^™¼+û±f¤íQ÷ö+#—Ýb¬ ŠJ±´5ìd›m’³¥0!_ÿÓ%–€öÃroÒMz'V‹i>^wMäö»Òo°öÚoÙ›¢ØÁ ;„íûç_WÜpø8?nÏì{øOzðmþ=Ï‘¤’!ãâÕÏÂkdµ+‡¤ÆÁfŠ'à…Nÿb|z{le¸{Ÿ[ÔÓÕ6>ALë}¾rgÚóíÆ”ᬭ×o<¾6^Ñø[#º5ï>r{ßEP%¥¯þ^­È×Õ£²å~sóð°6ļ:Ú0~åÔÍ)Õf çÃè‚&WÆŠ1Á ¶Ž~¯ÚsÁÛˆó)K4ÂìF;Û¬8 d‹À)—`Ëh37Ïõ4ËìUžt|$ŒÛε£gž³Žëq®,FŸŠûá#cÚÑSp¾*¿If€eÛ¶ÞtÖäP#ª²Òš®3xäö)ñpæ‘ñ]‹ËMöPq» §ú=%ñ˜_…ê{¸åÎ Î8ñõµùq}ñÞ! tÎKp»89p]âæ}ïIŸ"LëÀ ÿўъþ +ßqeÐãºJl®'ö9/ož[õR!šdúÁIY„¿¿ç–Pl½5ÇO ì—Y7M©€Ñ*˜Äe¦Ÿ‡rˆ ø³™ó—sÙ0Ê~s£d%MÈgQö…ƦÀ·6î2¿ô\Yå0ªÞ1®£ö5l%ˆ)gÂÍ áqs¢€BA{“Í/HôŽòu.ân<|V”®K›\y¡×' †\”õ÷÷a=ZÚn)Ù’ØZHP~‚ñ_*ºˆªiË-Ææ-êïÆlú•tìºÅ…¾xy¢Á~úÈxåíƒSL!/SâãÊýêU[* zP–/¿®#W±Ñ$3æÀ¦Ûܱrá –¤š\ Ö¢øÓY9´Âl¼²Hf‘Ef$ìÞF³ByI„w¾#KÓU*;§â³ËÔÌÐÞU¼1c(ÈïE>P¶§!Àôï 7…¾¿î :ŒbYÊi„ÆÌ­ U•1¶·³¤Ð£v€¹q1¢ÐKdV™u»îGBÑÃ@9£0O2Àž/ŸKäÖf-ª§RažÇ Ç1ç,æ1È¿-›ÞcÖ5 W‰Ü€Âö¨¶^ÓЀnlªÑäSË(a \òXR±ºÉ(éc‘nüôð·|àOŒ×E12Ç–R³>ð3‚À{™³ùr /gçè~ŒçôMíŠ^ÝÅh£pCp#”›œï¯ ¶w¶¦ƒ¯ÝnÜo®/Îßi=ozþcfr÷QÎAb#m¬X‘{ $s•¦˜áØg/S²ÉÅãÜ>5éP¿fie”§QP;]ý¬];‘²ƒ«µQ±ÃT+óɱ¯»ÇQ²TÃi>lgRÿé¦s©†§™z¿Fà›9ÑÓ–ù…¹uÉ'Î3ÕB™I(è´-’ßxí§&-z‡¦d=n½®OYµö:øæ.úr3kªxOw¬Ýi›Ï¼ÜwOy½ fõsnë²Ý‘½ ÆIoI#<å¶Ç¢«ˆUkf¿Üyúê6á¿ÿZ—o9=Áaï%T¼rzçÙpàzÕhmkµ’›ÜUÖŠôXE“~BlÞm]E£»÷ ­§ÌÿLä‚ß›§KmÔ n?Žó$·@7æê‡{ð!õÑÂÿlþ ô õØ }°ñCM@È€KÏ€ƒ ` 1AÀ,?É?ûoõÿ{áÿþ ÈÃþÏ_–¶ÿÿJý~Lø‘R.V96ï0%<møYàã|0vm“íÖvIÆS¥ÒhÑ4Ï¿ÂõÀ„Â.6õ-Ó†XØžÞ¬’Dô ïE§î |¬´¥÷~ã/4 À>éž85˜Åì.™ÂúHœ÷Û%ÿØÈb‚AFœ@XŸËȈݘ“ˈ‹ë§ùAßç¿ï“ˆÌù ÿþï_œÿßç¿r£¥¿óаŽÛÄÿɽ̻pÄ€äGeFvqëê¬H7WÂ;ïkM~êŠËcG†¡¢ñÍ‘Õ/à/ã,ÞV£«Vf‰¼¸ªJム—Ѐ³E, Êm¢žvšuJj|D…×Þ3ï?ÿe&ÔM磊„¦FÚ"³ßíBψÎc¤Ú¸iœÍp{–ºÿ5õßà§ë?äwõÿÁÿù‹Ïÿ¿çŸº¿– Jn;Õ«•oWŒ°!›±”“ެ“bíìà¶îÄ5÷`ÅÑÍ[Œ”JO_F(„íc†•µvó`¹Ñ·?~7¡,²ç-4x¡°Ú5”Bƒ¬P9D è}iœà×W~ÇFFªC½I¶ö°ž§»1ÀðûØÏÅ20³Aô!=°1»!äçç0Ç_ë?üýÿ¢ÿ=ìÿþÓÍÿÒý<Øßû(9s™ÔÎéèÔ¤vÂ2?Cy85ª#ã’f÷Ú·ÅnUOf sa4>vTÍ>ƒÆ¦Bà º2ªMù¬Ø…³¦0C¢‰wn£…æ` p1Ïo+GTÆÝS£hRªô¸¹ôméän`£,)‚Àý…ûÿŸæþ]ÿxÐÿÿlü[öIcó“@ɽÊÛ„I> íj(2” ¨ØìûòÞ÷WýOn2- ??ùŽÍ—Eª:½{lûySóYQfæ©æ’Š)yÿj;]þ2=dÞžJãÄh{™ÁŠ ¹LˆNŸQFµwÞ‚OñVò—mw%Æý/ú*ªOÇTPpéË-½­CÈ”Àý×ñÏø^ç9€ú}6v.0dh`È 2Òç!6.6¶ßAÿ€Ðÿºÿücÿ;ÛƒþÿÏáÿÿ=ÿÉþ͸ „ p‚~ìð“¶Ââ"ÚPÇ„qò_ØCÑ÷||^™%‰—íº ÝàMVÈS¿N ¸rN¶ùƒe±Ø)…åE9•`Š@¯«_]“a .·Z>æXJê?*¸·†ÚÈêFz-†0|’`b/­Û^ËŠÜ¥!«!éK È¥ŠY¦àžÅT¥=nÇnùÁ̳CL(7²[;YaÎÒêJz±Y4VZˆú\ÙéT©}é+EV‹Ž‡‰ÊWÖ|UûwÑ|; ‰áý+™*:þn²«|ˆÙÊxå|Ú;.Äôvž®'<]qQNiï0${à˜õÛIÇMß]npïÜš™±¯x1Y¡î»´AO¦L9·<µ>œÑŠÞõ¹V¬¢Y!$Îcô©ð·ß/Ö¡ELLaä»ÌÔát(óR9Øk:‚¼Åœüdúõoê/›˜ªñ¥³;çêŠÖŒîwφß&­—P)›M¨ÓÏ¿¤õQ£ðUV;ŸçŒOr6èm;W"pu¶4b: ‚Á ÿøÇ³q¢à¾ä¦7M2küh¹Ì'¸üÊžóÕÌ!¾È L @…Q¡ú9éx Vç¾Íªòpº2¶ðöþ|Õ¨™qfW<»cöE©š[ÖÄ3å8'¯HíÜõt`%¼c¶þéø˜ŒŠsÍÔÔøÞààü¡Fué^GAoéAÊ–*­ÆÓ3ÛÌ®t»ˆRCRThq³ÖØçÜ/0 |Ù¨ßnk~Ôß0Ò™ì>ÕóVºJ,Ù¦˜Ý„Î:ñaaså{ ×5¶Ònm-W°ðè¹d_Í-ò¾zÑÎ<.ÆÆmU MŸ¡Š{@¾Ê8œÀ¢Üúf¾»Mp’âH í!­^ëöQ.¦ëçxS¢§yLoõ(vÁdœSƒ˜+îöJ…üŽ ò›ÑÃ"u05Ê%øGJ©)üo̓^KÙ10{Æû]€yýK/æ.¬gy½ÏñÁFç‘þŸƒ¤4©í&u±QxH™¾¼¬XµÎz‹;˜•+fÌ^A$t˜«jÛýaUYó¼.ñÎÕòWðýôP¥É52|æ´­“&Žyþ ƒзDY*‚nd|ß`ÍÞÉO r°ÿ-“Å 9ÀÉu¿l°ÂÀí’Q0Ü””Vµ>ÄóXP"0NL^‚ ,;{d0ê–Ž »òñ™&]Ä—»óAÉÍ]„`££ [æDF™6ÏM³®ÛŠÔ™Ò² ÑX‘·q=!ó¹[8?OmšŸ¿ED»òúpfhë‹Éqmt 2pÅ.‚@ “„ý‰_™Í"›èüÊ"ˆÄ~žˆT3¿§Ÿz§ø@Kû²ý$» j¸×¨ á5cJà¾Rk…ñ1‹,±Èþm…¤†¥ÅfÆDý{OTT·Ë؉©tš@ì®;UèEx‹¿„ºÌjÆÄ2ŽZÝÕÈsîIùSEcôê±~Ì4äh ñ÷#2Z¦`±¾ý5èOˆsÞ›æ×Î.Ùq&ä&Å­Ô'•»1±ktE~ãLæd2n¢ÔÜÜ&èmšŒTœÉBdŸk¶è"úS)î§O^-µ¦t׿µâÎhS÷z+€e݉ËI7œžd#ClÄŸ?Bl‹üÉãð¶âÄiî¶Œ¡àå-F9žXyŸ­ò&WݪÔ6'A]’ß,¼Ý;Öú‚i¬4 mÊ6³Rö)o}UϪ‡¢JæLª’éóÌÌ¡…šÑ!d<×çãÝè(4>_’Ì^€SÿiÖaw¯Ž^QÇ–‹Me;1TNT•¡ö$Ct‹ê\n9š2åÑÞË"æÍ‹E¼ÕVº2 AÓ¦P—ëoZzÍ]åíÎðÎI¼ÊIftÑ7¾[[UOµÙü!¯Û IF~~p§Ohr^- VܱY…à ¥™%’_vH¶ÇyÓmÑšŽ—jÓ¼žºs-Ms®}æ™;³†8ðÞ²qVóoŸ*l\(?zLɆž´´˜ô7)IÆ]FÆææÝFFÝ]]­º½±W·‰HWHýt9†x¹4‰«øJ0kKZ”°°öB”°BöŠ”°’óq«ß²â²pÇÇâ–-쵄 qŽß8Úôu;“`à¿JÛQ׋@H´MCdò’æÉÆ:!®Éjm^â6QŒ>ý—Â4ý€ç˜’bÇ„½±csŸ±ØmXæs\iÙ©? —‘±’˜¢FˆË%U$œhÃ1EqSeq¥ÅÄřťj‰Å¡¦ (a玙AßŠÇÆrôWN±W9Ó]fÍõݺ ñ»ë迹'ѲáK{è¢àÔzò#õ€Cp}8Pâ½[‚Àï ×oÄùK DÉÒTC‰ y»á=*†ä–Üdb©ÛMhÖS Y·Þ‰#wP?…-Ã)Ö}lnm=m7íMç<ȇð»v~”í@O'iQ>_XË1(,§†-"ÌN$`ÅÝ*Ö«c`˜E|¿éÀu˜køæÙ°{,÷ÁÇ!ª0w¦Id°éÐÞ­|ƨ¡ ÕBpæ4d©É4ù½.ÝïÅìý ïsZ¹B7¸ÔÕ÷ädf"Pžë§P †½·D^]“n}RLƒœ÷E€É6ŠÚO^ué”lœ 3Š*r—\c•øYdENR¼þ³ð³1!Þ˜šP‹Õ§YCàŠ¤Ô€‚À°$ÅÖݽדöcŸJ VšŒCGªø‡àÈ‘xüØûì„ac÷7Šii„ìàÀÃ-íŒ,#JqI¹ÜÐôC4&Å¡|}¾xql̘´ŸÕÈÄØ¢YÃs7àzÀÉ“Iç¸ðúÅñ'äâáüÔ¢õeßõHXÁšªbuDiÎ|jôç+€]øüT7Ö! =®Öó>ùž%f÷°‘hÙΆÐ0ØŽq,Þ¬dDa =ÄYñ=€>›7Qû²£*J¤§E@G~ŠÇè„s™:›ãÚc–C²^ ÷Æ×@x¬ZÞÐÍò`ÞšÀ…-Œ‡l–E–@C\9¤Áì`L |­„? Þ6gž¬qYÝðÜM=›âEì<œŸhü§N¢ÚÓóÛµõwú:³J:擉ƒüÓÐ÷œo6”¯ï¡hUU²J^;~â~åÞ¦‚hЦkãÈSì8Él¾IN;wîd¾’g¹©â‹t™ãCbŠ0o,®î\-ͬ´h‰„¥»PqšÏì?y›yÃæ ͘žõú¶÷¨3YýæMAÿÿ"û a¡WMƱ¾À| §ô¼SëF)߃ÍX"ô~ææÎc¶ÄÄW¡é#m‡_l¨À¼)½‹a÷KTôC±ëX_„ÇÚ +N!;™Á\Ê;.Mô£ôÂÓl]d|Fj©~ž%O­aQëÌŸ±†<þ¬H) ÛC8‚i „3iß[Åý.«ZBìN¥ÆQ$iRïˆSNª*!yÏê .è¿›ÊÆ’ÛhÑ#ð=ì•CÛO=uîྜ·Zx]ó–ØKÂ-2϶{ 7„0ªí@<.ˆyvq¾/të ëy ë~=:´Ð¼°pÃý¢%(™„íïÜ‘–FOwó¼u†÷=]·=¥,jÇá}V‹¥æ®¾ßžâ»£×zšI{×OÊ Ž¢L¼Ïøp4’øjkU3†ãðeú×ÂFU’Å•â·#äÓŸ”°N˜3WÐ ¼ÊU-±«P.šô?3mÒvލµ§ïŠÕàÝIؘ³ûT’æÄh2ß—¦‘ì¼C=å8ñͬJ7_äÒB!¾¤°^H©¨#ß<»ÐIxb»™þ"Ö?^CÙJ¤Ó6žQI¾°ð¥½K“ý|Õ™åÁnçá«^UÃe§ìºÁDà’“…¿½>÷3Ü0¾ ¡ãáé†êÕzQ§FÛ¬†Ùh¶<¯}â«-ß)–»úªÛ˜¯÷_@Wž‹/¾®è4Okh” óèpÖ/·®^-®ŒZc\74ÜöÌ`ÏY¹OåèN—$AZŽƒÝ¤ç5ä Žæ÷ÍZÍnCÎF^+[nïöb:tn¯Ô2±è´¸1“æ¡°žF¡yr»ì®yC 7‡=¬šúgêÿv?­ÿ³ÿÞÿópÿñϧÿ7 ûüðÿ¾z¯ =0ô¦½S LaŽ+WnãŽ8QÖ<}LНìYÕ«ÀYCÆŒ_¤X4D[¬´Çdmq×MÍÓ·û±Á}4f]‹Ö„ÓfšëZé€õ×_€ÿ?ôÿÿ#ùŸÿðÿ³?è¿¶ÿç!ÿóïÊÿæÿþ!ÿßÿÌÿ=ÜøÅùÿ{þ¿è0@4ø‘"ë°ÌY¾¨ÈN€LZˆ 2Qõ•ö=ïשz>•Ý“[¤zö" èŠ:´Í/Û Á,%(V¯dzm‰)f$˜ntcf1*`〚bÙàXø\8­šsAcãÄD´*²Ôpáúÿäþ£þs<ôÿ¿jÿÿËÿø“ýxÿÏðCÕ½C£ÛÊ UrGѽ$™…h9)—U2 “i\àÐ(Оa«ùAJŒ½>é¼|tñÁŸ\i•ÿÞ Ö=ŠK¬%çB’ZuðbN!×_H[•¾'¥$Hôþ‰¹Í¶ÿJþÿÐÿû_êÿÿ³ÿ÷Áÿ÷Ðÿ?|ýŠüÿaþÇîÈÿÿ-ÿóàÿû³éû~äÿ0ä&ÓüP+¯Œ¯iQ±Ka8áà-„ÂåeËJÖãc­Þ蕆¯Âlò55=·ÌÊ«eDÀ"v§èØ},ÎJ»©0fšø­xßµ%>7ÓàóŠÍ7î¢ÉçJÞKÊ=×bî:‰Çê³o |¯Q©@Ôuÿró¿ÃÇþŸ‡üϯÝÿ?ÔÿWþÿÐÿo÷ûÿ!ßáÿ?YýGÿ^ÿÛÉ0FJÝQX|y¹«™¤CÍCp_ßÉáüÕÿ/Â".úUyzGú7ÿ?Æ_ýÿq)®ÃïxËšãÆÁV÷2MÐjã —í*sºJËŸål½ðÇTxXyˬÑ>€û óÿÓú?ø»üÇÃüÿkÏÿOÿçÁ$Çä—ß®AIhõÐ%ÀÁïð åØ×ÆNM[öh.kä³ßÛ¹UµIű±ñ¡çV€™É ÚÂp’!—Ü"a<“׈'÷Þõ• l• Õšt†&E¡ÂnœÅ£™-\é»ÝBYÜ< ûËòÿ“ùŸïà³ÿçúd{ØÿñÏáÿ'î¿B8~3d³¡€þr·…=ZÒ΀)\d‡]VÑÁžÍ:ƱE&ˆðãUÕzü•‚Ìù©ùƱåê†ÎhC3ëÕS_:žuÏW/ã,_În¥ Z§FŸ„>3‰"ö›—XÈË: V ÙšiÖ¯ö<Îu¼¨^µ{Ç]?˜·ƒê0··Ò‹yE±‘þ8‘Ãò]poÞ¬fË{VØUÝrÄ*ƒùAïk®Ò%<éF¾ C÷ŽÇ–Ödq·Å7WkCWÏj+`ù)a£ÔýVçkiΩìY‹zci¸…ζ>àØ]mo/Ëùp pF¾…{.]úâ=îÑcäZ`N2¿ˆÀì|A=#ðÒž÷–'>‹—ÑÑKí·›¯œ»ù*ÕA†)Ì®!ƒªš¸â9“µ‹•)jüº›RÇSY(VZ\k;Oeé _Ú~Îiμ¯G %e—æùÊ;ÈÇe—©dîÉ‹ù2.1™‚íÍžñ[§ºÍÙ37ÚGožÌJXJ·ág¿#g¹ôbzã;êj·ª[ç‡J;¸ˆ+ac¯)Á ƒžá.˶ÿ¡³²i4,w;J~ñeÿãÂŒ#ž GíŒ"uo§†×4VÍïJî¿ ìûV|<Ô}lA x‚°6ªÆ gh,vMªP+büv÷•ÂùëÝW…¦È_ヒª¨$ LMõhÞðf÷0pT”“ÀxðÀ·SÊaÕ“ ¦1’Ì–m|0W?w…Ýi÷ƒ/W×Ö)K¬©)Á<ÅÃ×A„²8½ÔZknAó P•hL r$×ÿ˜‹ïÔðN¾i½sÑYqâÑ3QokNôøX¨‚Ÿ–™{L!Ô‹ x˵åàÒËpÚ*à#ù3+Ë]°÷9V^œNòe3¿ ½[Ê0±gŸ÷SÎßÙÏï+}rä‚Z7³myå‚€´2 €Â|!2k-)~l+²³$_ǽ=P͗·¹ðæñz ™WŒ ]`ìsØ—}ÒÕCN8ÄLÞœEEÊd¶ ÂG¿“¢¶?ÝÅ%× ‹Nç8ØçíFN¢‘îs‹}C!ëÈÿn7—6³ŠmÔœ¤–ºnåzžÁÙiÁ†‹mR‘{²'„pþvúü—ØÃÓ¯Ò(þa¡Ä:ɾÄNÓ½…*²}ÉÑ£`*ý&AY­¶j¼úM« Hc)­w‘‘g×ÌgÝh/(…mÕ §KzOŽÅĆÚ"¢LËV?c #ÏÛ×[6gC¦¡õø¹rNaèqÀÙ',Åýc;Ÿ^™?9>ó+”ÇÚÑ©.ÙuUä$´IA‚ ‚-ßB-|f?‰Î:(œ$I½eÔ¿DF”?ü-ÿ¢°þrùUú¯—_Řed˜z$UþçáW£ÏHnÜ?uýÿÃ÷¿ŸÞÿøÝþ àAÿûµõ?ðï÷ÿü¸Q 7•AÒè:ú…)@»+Eæ¸Ju«ã„V×þƆ?ýðjÐbw‹½´Z¸!Ì_šy[çØèO U¥{‰~ÃEÃq›Ïz¾hv#¡# Ä߉ jѺá 6-BˆB1‰ñ[b:‰{húaCœå·9»Ô}f+xïã‡=_¶@ã1¹Ð?€ý/Ôÿþýü{ýÿAÿû³é‘ý’?ô?¨‘ÒTD~È#§ÌÏ}$÷¥•u£€Šõ™9«‡än¦ÁZ6Œ”÷þ·³:ªŒö jh ‚аˆ˜‘õ"¿LKµõ[›õ˜x‚¬ô‘‰ã‘#™gŸ©nôk¸zš–ÂÁœFp\Œü¦–ݤDuÜ’ÿSùÿÃý?½ÿ‹ôŸ÷€ô¿_œÿß×ÿøá¿¼ÿéýxÿÿ,•Âý±ÿ{óÒ\º€ˆ«I¯- |óõÄëè&îD:…·…å‚>*qáFq.J™’À’ðK¾•×"ÃãÀªZš!ál=Y!ªF| B!6lHΙ—nO& ¶¢2y@y9FØŽ&Š;VÖ4ض!ˆÚJ_Rø1òLs½tcéˆ|âµAÍ«r׫Gýv—°ÿ“øÿYýŸý÷ü?ä~mýŸó÷û?_óD‘Ñà ŠXbG´D‡ztaOÊq¾.¸eàKµ–™¸Ý8(»¾ÒÍliñ†ºžÛmG©hõELU1¤¨SÊ­‰9ïAlOJdжY"¸ì¦6Œ§ê]˜æç¬prô±sÂÀÈ|5ì¿sú* 'X²ÍÊ«ö-§„ ƒôÌ+IRXÎÑ6Ž03ÝÚˆ϶û<¼åxö™‰Í.öf™AptˆÏÑ\–û—×ó–ÒÞl¡A‡¹ÐQ¸Ç—êÓôU$äµx“ÛzÛ€4y-€6Åž4G!h p»Ï|ql/: ´1 ZÅõæ%ãSò¥,™B'P5,®´M]_»œœ |¡„ K…&:mbOFU3>û¶åýù~øòêÑ8È×öÿþÿÐÿgößàÿ<øÿÿlýÿû?íÿÝQX ’ ½ê[Jt2þÕHôŸóóTT¬O®ŽVÊ#Ò5å¼i¼5!Ê Å}ˆ³hì° ìn¡žq§~ÎèhZÓWKé¸ÛYŒáÏ®Ñ­ŠØñçõà=ŸÀíWyZ<ᇆ‚¹jû † ‰ºñ¡„ÿrõÿÈÿþVÿô¿_»þ?øÿþ]ùÿÃ÷ÿŸÏÿïÿ{ðÿÿÚúÿßÉÿõµ¡|¯ÿü ʰNÂOUúá ]l(ЉT2›M.#N ƒÛ­ž1‡ÚYgßDK%K*ç¿CP·,÷Ug¦§å¦”€ózI–qéù\¸ª~}icJ·½ÚY©Vd²ä3vÑ2Ì£ *öjÿ¥üÿáûŸÁÃýŽþíúÿwümè‚@$¨‘Œ{\h:9óe@+ëÑb›0«UY7ô‚{éÛWíž“u·KŸ²ù» Û7©` üó‰R«ªñœ`vFÏ¢7æRßæP˜3Ãñc¼pºÂPŒÔÏ«¤áæD‰ó”T_€\ìÜ_xþÿ‡îÿGþïaþèÿ¾þ”óÿÏöÿ ß¿ÿAÞÿñþÿ÷ @Õ›&«v®(è×:û•9¬¾1U§¶¯eìkRÊúÀ¼²Ž1L¦ ¦ÌMï©t 7ííA« mf¼Ì¢5;’ÝTçéž¡¤-'dØzØœP¾Âxì<;9UðAF8p¨ ¹H·’ÞgžÛcø™ÁÐléxË ð¥³OÏUˆŸiG|Ïãún+Ñ#D¾¡¬½†Ôø:ÎL;®!o€KfÙÿ`ïÊáî÷¶±„±f 2hì³a$û¾3d'ûRYÒYª±„„„4²/…¢mìkF’5K¶BÊ’½zßêœç¼çêé<çzNÏõÎü?×5¿ë÷½çþ|?÷ýùÜ^9ðµ4”í c3®ê“:©¹˜køÙòÐy)Ɔëï.BÙbw|G®…c‡ÝÙµ_錤›Ð]­?n3hYBD:hs!δïà(Ü»Æ?o‘W7óæduCwPÖÓ¢ˆ´Á–\Æ<à©(ùµg ô KÊŽOÙˆ ­–SÄ©{˺åœñÑá¹oÑìŸÜ§#–Ma\™Ì9·*J›Öà‡ NÕ "Š“«@ÿªøÿáþŸŸöÿC¿Ýÿ#)Iðÿÿ9øÿýþè7s2Ùƒ;Éþ÷Š·…%û¦å„8œ;1”^¥7ûvÑ:aì’ž‹KpÈP—Ù€•öÚQYÁ1V“"JÁ±;éßýdi~°O‡ýìà¸8!nz¢ä^›eÖ$ôˆwÊÒê,ňl$Ñì›ãÞQ…Ý‹8zLÄ`¹QÜíiž‡r\ÃUxLÒÝp}˜J3¥÷9,m•¿ ¾”‘ËòÐêMôì†G‹Q”-ëAçYûƒÑeÒ¥¶3¨õY¾†È›&ÛŽÊÒ/99HÒ,¥ŸµNn¨‘:ÚúzUOê—ÕèUf†U¸)-úʆW¾ÆÈT5>ÇFjN^ Ž-~ bIhÑô?‚)É`¢ˆPW§Wñ{L†-¼œ,¤ $¼Ð¡jÉäë8¯(ÒŠ|ÆÚÍK5(}F°ñÏTLì«Z€ˆÐRE¨Ä·ù( „ÁÅ¿ø¾€{ÿ¦Êókc|Ë—žóŽ×Î+¾µÖ,UM–BàGìY™ï7ö=ƒR„Á¿ „I~¹öÅhD7BèUr¬·˜,¹ŸLû†—Ø5¦|T~Âh ¡ÁÑâ^uþª,â€1_`_ÁîéÝå%YQ:KÍ¡µT‡Ò䘙hœÙBÔ§£CìüÊ+g|ŠsŒž±n5½»(›Œ¦¼ÏjÁ)Šc5wÎ1Ú qaãÆ8Èð¨5 ½Z³5¿åÛ&´’l[$Üœp³æMŸ¸IÓô‰¶+t>k, M3õ ’l-ûmª;f1L9ݘÅ`74\í”Nz£"êSý oE|³€•·© ¤ùÑ,Xª+q'=ßñeZóœn."㦷žpÔÏY\fì¡›nÅtlý„ûÿ—ûÿOó?ä·ùß’8aÿç_†ÿßùò•ÿcqîò_ù{;&¡.kþt`˜Õ6˜›+Á#ê ðŠ‘þƒR¬ôú±¢Úüä7ÏIKQŠ$WHMEJbZjnÐãÚ‡?’½ ÄÎw«ªFã¢Ò@0`“€š‰"ÓŸÇ FÔKwÔïñÿ#~mãMÏq‰ìáoM¯E%srì*U3ÕÓo rr½¾èwe•ï‡p:÷áË œkê‹çèè­nzr,*ë;ê¢Y;i¿3¤Œˆ5Öá`ãêñº ‹kN•±8«Jó’Ù `¼‚ìðö!¢¡ù•0¯}©Mvèúy‹¿ðX©áŸqüiÞpÔy¯©>¾ÇåùéÍ/s¨½70däO‘§v—kuoÃÿ+òoØ÷R*/Uí¢JpÝV»n‡xJ:,‰¥8¼a/§ôBYû„/ö¶öŒN੺%ý—Ò[]¨¨Ù/ó/#^Íš ‹æé²dWúçÙñ*6%ªÃÝn͵&œi—˜u¥6ïY/fdÞþ¡íö;æ!ÂÌâw¦¿.ø8MYRdMö¸”õ%z¤"–§Ç>“AOÝÍP,RÜÿaßÈúüuN7AèC3´RxX<ñu|EUíÇé‹Y@~QÚvêùcW ã p¾Ÿ „ ÙHê?Ò]†Æbb•Ðt'F€T´w)ø.Xæ-²ÓÆæ»s^ÝŸr¬ØŸrdŸj-Ãû7ì,uܱi¢‰g?´6"¢Qê€Íþö4š"Ùwµºý]¯ÓªÃÏßîÝRJÔ|»é-»Džø.b661Ú°õÞk,´¡rÑ4¼*ÈÀinÆQXÚU°3]ãñ¥Ïëâó$¨3ÙöjT»8rŒ·mDXŒtÀHÐ¥\"ãé=æÿv°aHÈ7æWpoâ¦ÿ_æÇ¢*' 1¶–½­Ä â•Jï-GÐÃ}ibÕ›—¶‚,¹æ&[÷d^¿6X3£ù¶@<•üù WŸ'¡µ Ub{Ìïc/`›ã<öä—çN’iIAQÆËd²Ý|52âÞ`Õ—Øùä=2ƒòS{Å£Åî*˜Pc•×c•F†Æ·Gw3/SÈÜ ¿ÌLv¬äÇØu­›p'»%Üd9Úé\H3ÛÁd/9d€p“D+ÑÉx¼ò¶×{^Žf~tLO϶ñBQH§[ªb~PÓQíž*XD)®!v@ôÓ“<ÕsgÑÆxXÒl˜Î.øÑ¨diâ§žØ'Gö¨_­~ú__f'P?Aÿû®ÿyýqýJðÿý²ý¿åÿÓéfØã,"ýÓº7¨šé“0lE'R3ÞGøÞ3®»ÖCbÇ£ÜúPݬ½›éB*%PÝF{T󥎧yђƵékNÚOçÂëêYIH×nùåÄäöËúBœé½‘•…ô œIà1!÷¿‡ÿÎÿ¹þæÿþŸ¿þ¯w(|ñÿÖ§&oËÊ—àÈÉë0hñ¾·™Ëþ“t±½êBR'ü'”ˆÂä|>‡Ys¾Nð˜z…ƒÌ 2¶\Cž¥¹YñdH¯ïX-Ýfu‹e6yzRãTÅ9Æx„n[¬šF£zSÜyOvQU Ð¡a­±õíò튕 #Ñét!€Òê5sC #!'Ñ“-(\Q÷bu”LU¼®ê,ùjI>ÓÞ>i}›ÓÝ®m–”×Èôùç+¬·Ôç;2í"õªî+Ë%·Ì§•V'SÔ]áqjÐ-aÅ’µ 1k>:&¤öQ²z–iaC,¥]¿å,Ñþ¡Ì*o±#£ìõx¢eWˆuIaºe$¼ÒÉ5Y¼)“¯®²4D-0¶åÕÃ}»ø¹×±©³ï¸oP5…BŠ$[]G%t޳Jd¤ ™¬†a b…+‡Yž3Kqsî±o™Ì‹>q¨ÙÃûÊeNEì»JE|Ù•æ{G$¦a¿o¤œÃ¹¹s¹ÀŠ]{ÁPLJ-ÒKíš±Ž›`z^ÀbÌ-Õšè™·i·øF&ׯäVwgB¦ù’¤ß;e%Ì*¥3TYç-&_¸a˜Ï_µéYsGwÆKöT˱éÖ2¼©àN[6*†kG8Qy³ô¡çй/q‹¼ t<>úˆTž°Ù @yFMê¦Wê•Gä!›c¢U9ðOÒÏ2:œáO.Ò_dq¯I¤ÐqLÙß즅[*êëT¢£=`¦­k]<ìnì¥/å˜6p½¿·w5—i=Ó/:óTÓš_´œCŒZÈ틉³Ãç®*éˆÝè鬉ô’ö‹·k¦* ¾j×.µµÀ«PöL½£v‘vÎ䣵“ŽúÝ|¸Ýn}tûy7ÕÓ‚œ2›™ÙÑÆRÂn<*•UB† &«$ù{e1½¶õC}¨›Õ^ÉXL ñóã°òôCwÆ,àLÚ®&TMÉY¯¿~%YáË%NP§³q¨³’¸iZöi£ÚI–OÉÜðü%ö^f¨ ZÖÎÒvVùh7ž³y&à"(õ¶”_+IĤ³~åamÞ üÕX‡W}vú·èÓù#{``€FY+Éé—2»f6éVêîÎŒö, Q X ƒ^ Þš‘öV²«#*bÖmT„"¿½2¨¤øÞkÛ?œ ]=@ „é€M®¦#"å[_M?Æ— &žc6ÁoêÁ°*QczM˜x~qwâCJ]Å3t%ÜÏü~F«1œ——"–÷«ûk°f“9Mk—Õìαnê(Th”—ÓÃöûŸÖÊZ-#Ûáž³2^.¼IÏ® ZNënRÏy½Àìq_%dªX öm™cìÜiÒ"ö†&?TNô—ªÐ¥Ã•Ü>ìÉ÷NÝw½ÿŸmc‚"¢=5Y&(ƒF2;Á‘ ÍIU¢…Ô^„ÖäŸÎÿ?ïÿ—ü§ü_ÿ™úÿwúÿE¾æÿ½TQý ·°i†\Xxòº p]ÚZÿ|bå³úpÛ-Z1¿ý\SƵªÑÎï½VÍú·™Î+4èNRV ê´^ÍU·›pä!%e×Ô9ûO‡Ì(íšÌ„â6Ÿ!gJ¼GXššaÓԼ‹‚Õò˜})6Æ”×úÌô]þ.¦AáZEx:⾕M˜—ñËË"½gˆSźÕ@?:°2• x¤ò‡–….ƒ¼R]ÙÅŠ~o/ÉwýJê=Ùœw“^N“]0fRÒfö£„B‘#1äGž ›äçZ60H Èﮘɱ íØ L*M%Óרz¿X¨I¬ÑV9Æ4-˜ ¢¯¿ÁKÝÞ¦™¹u¹Y ´/Î,ÝEš¿ƒ‘‹g399)CÕߣJA>]ýáQ¢R¸ŠÄ{³€ÁaT'³L£?ðÖ7®ÏIÕ´<¶©÷b=Sd2­å‡…š²›>ÖÎ*_ä1Dʽp©65kl <Êå[ÿ¼áäûª…㬡`¶6 ÿ.œ~s ¨Æ¶¨äÐ)¢òBSY-‚*8‹ä-/¥YD!¾u§êËjßô“8ÚÙ¹8JªÛ¿»Z±ûv­ê,-3%8©aFÅËu¬;Í£5¾Pû¦oNáA¬6âµLkÆcèø%ÉU]p…6S†ž `©ÒÑ€Ÿ‹GcxøG Ú“ÿ©e "p(6_ÇïýàÙ`”¯äêÂúˆ[/½¾)˜Ç[x×ÙO†.à!UÑuH²ÍPÞ;©£=‡,’Ka 6åegµˆC1·áB3µ$ŽÏ,¥Æ´Á òØðÛb, rìàHH4Óøþ¾á¬õÄtW«—ZD "êcgœ˜Â¬k¯ð)ÎxŠ$æIö—W¯/ÛiLjü{1^‚lTûOʳ¡—CÇjpÅYWD±_U2]>p|‰Èy,Xú-ùA+7–¿)ù‰¶ýõÅx»‡Ó·-ŒH?ì †´´x»:gDäà¢õˆ Äýb„ÎÙŽ…ì¼´6ùX)vz"9-SN’rê°¾kT#Šií‚ÊY’üר¤ÒtZ¶…gNZ­º{Ñ›®t>DS¿hÂÒmáíΙO;±ÕìfþѦ.¥BÜc=|ƒê>Ó|á`óni\"Œ_|u:µÄÇÌõ¼lGùl£ƒp¢B«OïßþÝêÿŸêÿÿÕúþ¨ÿOÏÿ'­þÿ!ÍaÇ%Iÿ‡ŠZ.ÿÝÕoR(@a±ß’v5«0RˆŽGÊ{ž»Ÿ±£êM÷ûŸ¤Â¥ã º½%e¸×í†;ó½ÈktlÚô.o\may°…³*šïÉì”@K=ÕoáÙâm^}ëþŽïtgp|á“¡Ïkž‚m›8ÒÀÊ»ª5K‘mlt*EדBÂxF¹“-éž$~:ºÖ…Ã`—Äæ£Qµc”øüÎ.Jõk‹¢SÑ•fòUó´á}"œbv‘â‹~ Ö†#™;:š¼iÐÈ'd¯…Yª À<Ç‹5¤ˆv»´\ø°É¹òjê¾ÁpŽÚþM¹E·æ¦Éïi®-ëš ô»æûÇûߪî›M.gØ©äó“"‚Q¹hÚ1ÅäÎî> Æ1ö8'a 6Å+ó]²é›éþíƒ÷-¹ù5аվWi±œìÓ4œ1ß®‚YÖZúEõZÿè.yqydz1šèXõ#zy¿k,Í)Ä’’<+€Û¼ÒS"2Œ?¥`z5\;a ¹÷Ó‘ˆ}1hdùÎÜnNW©²rÃ=Šíý»(s ³Ë¤Rññãó«uÕѯ³b®Ü…ÍXˆ‘M€9ñYÒIGÃQÔJsJ—Gú%îcñ Â¥õÖ-@B~_wÀI¾Ó÷ãßüR]c@Oˆzýé|sÈðVàáJ,ù¸ «x˜ŸZ n¯ó‘؃Х½£s9 ù6±âž™õNÍdW¥î¡igGeÿÓ©*v‘/ÞÁ>ëë_67‘•/æ«Fq¬°†-‘^ŸK¦êÒqÈÎCH’¦Ü æ±ÞãùX=Ô|¡ÚƒW«ô~üŽf£ý–5‘AÃiÛ3×ÐFöïÄ3Õ»Ÿø|Xy~ÔQàí9Aè 3^©4èÑUb³^¥R!33¸ºSìßÞ}  !7[‘ß›5âNíÏjâ pÆ‹µ£,{jéôlE›§× \³u!ò~èÐÇ{äRi wßíÐ[…Ã4”‹œCŠß u\ƒ›×b·êv?5¥µ0(er ¿§Õßx¤ˆ r¼´3ã†Ì±»TÞ¸~ÑÌá]‘ó+ Çóm‰xH>;塪{×è…mbð£I |Žx×'ïcëøŠŒs¶".'Êu¯óÅ"'¥Âe¨zTH«j˼ˆÊŸ€ ‘\m…³áW™«ö‹¼8xÞè°0©IQé§Ro(1,jR©Ià´R+cÎ,ŽBˆÐñ•B¶Ð3“Ó 4Ò.©OÌâUžL¹†_•®\ÙnÇ»@ú¢²b.%Æ*Å2Ìh“s ü¶„ô;% ?öŸ ù›qŽIàB-³ —ÓÃ3au”âžœ)qåÁ³Ÿ;zJéçû§©Þ«jD÷Uõ{õÑ5‰“– «FñQÜÚŒ®¥úV×p¿ºðÀäO뿯°‡Úc-èñýÚó¯?ãÏúÇ¿ÕÿaÇþ ø´ÿwrâÿ /øûÏøÓøç|ÿ ;ÿöÉÿ~ö¯,„fãsÁ`¬=ؾ l@! ŒÍÕÍ í‰q¿tÚíý¿½‹µ½ÆCøƒ8ú?çÿãû0 û¿~¤6è)þOTü¡PKƒÀ¡0(fBXƒ¬l –++¨%€þdüý‹ùûãýx:ÿóäÜÿýsýà'@ÆV—0Y$ÂðØ*^‘S—r7zdÂÚÀÉî²*Q:G;+¯[SðC:ËÞ¢9’»\JÑEsÜøjÊ C¡Ñ¦|úÙ»• QÅj‡Ê84n æ;:géîùG›v¡g+Bö†¿ðgˆ¹ãvÉq€°”ƺ%ãäîwGì¶žµ²ÔǸDãŒï­OOøSñ!ùŽÓ'c^½èÍ”¸6Ò :ñÚÆswÇóúèjñ9XO‰ÛI¬ÿž ÿ@Ðwnø‡ú:ÿbëÿ/ó¿A? €k’U]§T!ˆuþ¯Dñ6ûÝ3:†Å~žÁ|Ÿ³{‡¬.½Q6l ¡ÊSmA\Ûï‡3hšN.X䛗ϳ®YüÏþïò?èùpÚÿ=á翟Ò?y¯*Åùo¯Ósè S5¥*kì2ê]N]l‘•Ãë\h­ ´ØU~ÙA#ìj/ŒÝÌ×E˜#‰Uü¶'ÿžÿàŸð<Ýÿz²ùß?Ûÿ¨JÆFM ÕYJŽš ˜/˜0ZnS×l«½ûÀõ`í㑹yæmÛTMóÚ§.Ž’& Ìâ0|Õ³çhDX,3?ö}†+P–°Ù_‚ óæá[€jjIqU´ò”x…½ØéOA{Rϯÿƒîÿžî>éýŸŸû¿úºˆr8YÀš”<« 5|8„’S(ô !öy|¯6tç Phé¼;?Ù²¸%å˜i|ôøcnííxe½ ™ z›E,¸v&4ÞÔsê¨&T¹oÂaÚê”o]×Ô ‘3hL†Dø43ó’Ó•KK¤1S–ÆtãõÖ ”;㟱„Û¯úÓLÚïK#LjçI)ó®á^8¨Í2“ªâÞѼO_tgÀà4³ã"j\±¯µÊÆ÷vHy?:µ1©:®‡¦LÈ]3X§ÄõU‹ØîeEJ?C¹Žˆû\®ÿ=uæ€âä-ÈnËŽ¬LÆúcÙ(û(‡íqßb-å£þ3VÓü$&W»v¦xæÞ%0ãT^늴ª€q]v¾ö±)²¯3l%NÚõq&ÈÄ£‰UúéuX0Ú*j¿aÍÓ--²É›°œ{†fÁö '?3Ù6?S=r˜h«IZÅËž4wjýV%ÀÿdôùáuŸì Z7Åkê³]]‹y{½X{8ÐÓ/Úo°¾PÉ5 Òû‚.{H¢Û¼R2šµü–s…·76¬´N7q~Îê=FÜŽRÃv‹kœ¨Âï0†-{("€C]L‰[·ïx^òâµw5ÀQ”g8¢¶Ài)N)²P¦µÈÞí·¿wQ”˜D BI ކÍÝ^n“»½Ëî^B ‚­CëPëP«ÒÚ"èt@Ñ;–*´J¢vPlQEEü[(¶ßw?ÉÝr?I¾[å}‡!ÉÝîÝ·÷Üó}ïû~ïóî–/-¶—?7fûî¶±«ÆÞÿæÃMÓŽn~~©ž¯ÚsÙ·ö^]=zÓæ“÷ŽœZßtdêñflühÏmÛ>ûä„zT;é?¾sßK~öîãSg_yókîfW.EŸ®q\±ûçÖ}Sþø;yÎ;7îy|ò³eÇüݳòÞÈ•÷Á;þùôùß>Pµé–íû6Ŷ|óª‹îØËNü4ü£½›¯Ó~lgÝ=Wžª iï±Fçíümæ[Â'÷˜±ëä«+Z^Ÿù?˜ÙKàÿYÅù½ú¿ôøôÿΞÿAÿþ_¶ÿ7XþÃþ?ðì‹»þ›C—ÿ…üÏ2ÿKúÿÔ¿ºöÇ#:·áó–Ž­ŠÝùJèU#—8¾ñW7þiÿwjz{÷ö1LÕ³øŠ#]ZG_¼tÎ]Ÿغjëá×\ûîÚG>¿ü¼©‹G]rÅë'w7\¨4oû²‡÷À9½rËUçN™4hëÌõß²ú?žƒûÿ9œÿýÕÿ]kÜÂ}mæÂY‡'šçÌÞÜ<Ñ=íØwG\t×â¹ÛÖÍ«mùªÔ8žm_Ø#¯ýìÐøGXfì?òXÅEO¯Ú»sò­/.u$Qûï¹´¾á­ ÷/­:µòó¶üzé7[:¦ìÛ4gÌ.?ÓÚyÎøï7>üäÓÓO<8í‰#&]ñP4¼í…ÝëüåüC—LÏ7]ì}a÷òÕËv¯{ûòÎÛwÄëÿ^_ßôä„·îßµ÷øo÷ßò•îÓžš<"td×O—½ñŸM÷]ñïÕç}œ^½rîÁEï¼rbÚKÖ­ß©ëU×ÍÿɨGž¹yåï·m}¹ó¼ý;Œ]{£ G]ó‹)/Ÿ¨[üÐyw¾2ûè‘ìᎉݯ]ý¯ M\¾féûÞ¿ê¹g×Þòpåe+›n}0úÀާØïýeýôð¸ÉÛmÏõ8ÁÁ n?õƒ¦ëîùäMáãu~tû:mͯÇ~xìóºõ+®lõ¦šûßóÝttá÷7NrŸ |ôß¼³áƒëo*õÁÜÔøßPSY=ohäO9×$eé?$Aÿ_*¶ ¨[ þ§2I%ˆ/B´¿!Ư›š|\åÕƈ،/¨m£=L@i‘Ûäô´Cçã¹$hÛÑ wò{Åvù,WÄls] Ž˜>-!1Ñ#£¶Fbvò­]D8hýo5UÃdC_‡{øŸSÿ‘ÁY"úД#b´¨–O×ÝCóùéâýx$rdþ‰ÿø—ÿøLPüeô_ŽÁ?¹¯Ωÿ…LüqôÇCÿ:ñ_ÂK«Å„5[íså¦÷vƒ¯ìlóÿ²ø?èH0¯ø/cþWÈà?Ä`NYÿ݃ã^þ_êþ/H‘ˆÿ†ñ™€‚ñç9Qü†¿­¶YóþŸÿñœýÇÕ²YSëÒ-¼p-þ2Êâ?ÏK ÿ¥bck–Íq3‘ˆ«ûk<‡¡ð\RǶsŠ޵m¡M[=øhg+ÿ?\8> õü/(Yó?’y¨ÿ¡bQÕÔ »;w‰€lãr%¡æ87°øŸâÿpæùÓó¿àÿQ±dÖçê8ÆÌ5‰œ¯Ì\Jš>r.$A¯Gàÿ`+ ÞÿÃñ¿ñÉðï]þ‡è= ©ÿÀ Ùÿç$Øÿ/=þC³ý_ þŠûÿÁÐÛÿùíÿ§ãÏãˆöÿ)ú°ÿþß™ø?øBðBê¿ó¿,Cý7ƒýàÿÀü÷5_FÉ=(þæÿ)’þ¿Óð/:P0þdÿðwþxšÇŸ•­…ÿ€ý¿Òð—‚?âÐR±o'àgRà2vú“¾¿Pî3}_Á(‘€$¾Üˆ…[4ì!èšUŸGeíVX·ƒiÛÇœ‚pü†§pNX_‡Á/Õ¼1³CŒHš_++/ãÊÈ:¿ ¡¦¦¥¡®nA™AÊŒ²ÊÊÊšÊA›W·¤Vh¯¶*+«½UÝ••óçã_kf{SÇü~eþˆ Y.{‰M~Mü–q'±ªìñ aƒ³‚!Å×cQY Ì«zZ‘×ã÷¨^M–ü*ßêç±UåZ¿¢i>UóŠ<§yÊÑ“¸‚*¥¿+hŒTVΙÅþŠÅ]k¸ƒ™ºÜÞ?r^1ǧˆ2P‘Ê«I”}É‹¼Çãç%^ÃcÇCÅŽy@” (‰ÙÕµý]±•ºâ_±ð+£5ÿÊ™ÿ‘N[ÿò?ó?LsÄìÐ6&Þ ¹ (Â. ð?ÿ¤ò'¤ûlkÈù/dç‘(Bÿw:ü_ÔÀ¤€eH»ÈûÿûÙÿÌ6`ùñ¿ÃðD#ˆ"ò?þοxùGA÷ÿNâÏ Pÿç0þ-ÿÈOÿ‘éÿ)àOÅSXʼ³”ÿÅË?òˆÿÄlþó ìÿS±~õ¶3:@üüùG~úìú?Xÿéä@ÿüϧþ—vüúÒ㟹›\´åšÿEYÎÎÿ‰PÿAÇâðŽ.¯™~­âÂÑå£Ë«LT‚¨Œ¡u3]šI"~ÍŸVæ9º¼ÑRÛ’G“•"þ*Lõœ— ?Y%®¤Ežf»¦3,‹_£¿:?¾Z·¢!µç´ZP|"ÛIŽîŒéš8¶Îõà÷Mœ ™fÄ´Õð3ݪièF›EÎ ’s‚Z(š8e~0ÒÍÄÿ k%>¦Z³|¦UbÌ©ªW ¿W—Â0cG¹n² jµ¾«¿!~Ä`T¿Ÿ<«Û®³ˆÿÉÊ™ÁXÎú/IÌæ?ž€ÿ4,de‘n|0Uß­2¶©i§>d1××W.˜}C&ÛÙ€ ³ä£J±ÞÔ1µ¢ª´S avui„i„`ñ£"øïÉäy½ÍÀƒ?ýüÔCñQÅêÐ ÿŒÊ†YLß“EiäUüަ­ûb!Œ,9´"~êôtu‹ÕéF‡«à)Ší›Ó†Ø÷`ß q mDºôÃRõ”ÇäUԤȃÅÃÃêÒF—'¯+b|×f“ ÃHX±ÖÔ§¢'ÇmáA°ºßJ>T3 5ÄDZÛñ± ~6ñ.±P(qX³©“%cˆp˜©mœË\Ê}±4 …Š_œiÕìnMK^:ƒ j&ÆžœAÖ FübMÃJ.8•j&0§ÆOÔSâOêY+ªù¦Ä¥~ÍVõ9J Y‘Ä·Õ§Úm[µcVX!ó?*þWB¼×ÿBÿgàg†¡PŽ¿Lü€?¢Œ?'Äõߊø—ÿèÿEAIèÿ!ÿãüéêÿãøóœÈÁþÅü?èÿÁÿ?ÿéêÿó¿,Ãý_éèÿÿóŸªþ?ÿ)’ñ¿Óðkf›ÆU+¨Yã?°ÿ‡2ñçyNÿŽÿ·¨IŽøõ€®ùAó¿ü§ÑÿCBb"þS þwþÃÖÿCQPþ¤×Ìÿ4,¿þ¬G’%Ñ£(™ý?¤rT–¸}„‹ü˜©-QÃÑæòEÂä>ˆ“x!—$–‹y k݆_ïÑm5w#ºÐ¢Z¡=ÚÜ×T¢f°@ÈvFâÿôá!Na{bQÅ\Q,k;‰E9‡³°2c8y|HäÙ¿lxÃÁH µó¡¨O %þÏøØ— úü]¼_1nïYÒ!ô3®ŽZ2®êÞq5·:.ž—Yä ÊvŒC;Ú*­®’4NiðâK© ô^JS÷—½qÊiWÌQnœRÀüO¥ÿG2ÿ‹‡ ó?½ü/ôÿÿ?'ÿiôÿHÆÿH„þ?ôâèÿüϵÿK©ÿG"þC ‚øßaøÓÑÿ¤ò?ˆü…?¥þIÿŸl Àúï(þcÿ…ÏÎÿ)ô¿T,uÿׂxàž]üÆþHä³ã?^ú*–ãþ¯V¬5¬Û-‰ð“¤ð§Âív7ÔTÏ›S[ã^P3ÛPS_çÆ¤»¹®áZ7þÎà3“/ÁC‘/ ÿ)õÿè­ÿÿNþúÿó©ÿ§Ôÿ#Éăþ«ôø— ÿG¢þ[‘8èÿMÅ ÿôÿÿ”û$ù à? ƒþÐÿú€ÿßÏüÏ— ÿ‡¨(qý?Ùÿ¿ÔøÓïÿ‘Ä_æÄ¥ÇŸ~ÿQ‘ýD¸ÿ‡Cð§Úÿ!?ωâŠù_èÿþß™øOµÿCrþ—eê©ôþ̪ý’üW$ ú¿9 *úorã·¸þ[ü†ÿ°é¿¥´ú¯þH€ü?ËSÿ-z9Á«xO¦\ÌO~ás.xÀ®Ú ¥O;§¤ðìá4_7dpÊBë:ÈŽ®¾K¿äBëÓ¯ØCYhýÅŸÿiè¿SùE†üÅüè¿!þËÉúï$ÿ‘(ÿG‡ÿ ÿþç±ÿCKÿÿˆþâgáOIÿÌÿ ðwþtôß)ÿÇR°þ;‹ÿtôßÉüŸ‚àþTŒgŠÌ[{xvñõßœ dÇ$×ü§`鿈·ÿtõß}õàÿÑÉÿ€þøŸOý/ø?Å$€þ£ôøÓ×÷ÖAüGÇ@ÿ úïùOWÿâ?ÿ4 ôß ÿý7øÿé󿳃³…ZâhVš—ÿÏóHxAÀއdö„ÿ uÀ…ã¯È¢ ø; ÿâuÀyéÓñçyÿG1ÿú_Xÿsñ¿xp^úß þsù*ú_à!ë¿»Hþçëÿâã qàÿ9ÿ"ö ÇŸ'e`€¿ñ/¢4¯úÏŒõ)è¿ÊÿÂë@óÒÿeð_y¨ÿ b‰úÏRí)p^ä!Åž‚ÌÚÁ˜L)²¦ráp\3ðÿŠ®Í«þ3cþxèÿ@ÇrÜÿü×[šWýgvþü?*õŸÀÿ‚ö†9þOòŸÄÿ````````````````````````````````ùØÿô£’øredmine-6.0.5/test/fixtures/repositories/cvs_repository.tar.gz000066400000000000000000000276561500112024600247540ustar00rootroot00000000000000‹ {Mì=kwÚH²ù çðúÁ¾ÆÌØãlÇN<ëØ¾¶óÚ99N#5 X¨Y=°ÙÉü€û¯oUuKŒß{vEDwuuUu½¥/¬apâ‹ œPú£ÏæÿªÂ«Ùl¨ß««¿õë™YmÖ«µæJÕ4ŸUÍz½¾úŒ5ž-à!÷{Š <.}]÷ý_ôeLó÷ùâøo6ê«æjc¥^þÃO3ãÿãñÿp«õúÝVy8?þ¯¬¬\ÆsµÖ˜âc¥QƪÿüÕÜΙF}=Ï-KÁz>õÛÒ ò¹¶Ï=«W­®™Fͨµ|.ä]õ1Ÿšð›þäsßêýzÞ•Öi°Î‚Ðw¬p=oÉ~_xaîÕsöj=ŸÏÃ:y›‡"W5oTë†Y5Ìþ­ÿ¼žãQØ“>S„^Ï_BÁ¶Îëy…‰ä6s<öTQþU>PùW›Žhcl¬°ògNØcÒÌêq¯+òz‚’‚w|&YÇqE ‡Ø <»ÎÌx,‘õâúñ)HæðÌI]Uü§‰;l“»€ÝÐ éש%ë(ªN wúé‡ÉàWùG×ÿŒ|Ð/Ëþ¯‚ ÙÿÇçÿá$ûÁ‰%½Ð—®+|ÃoßÖ/¸Æþ¯4j ÿWVPNjµÕf5³ÿ ´ÿµÙÿûØå§iŽo%¯µjÏÁÙï0‰6ðå7a…¬Ï=ÞÈ ÈNxÆ}‘Î6å`ä;Ý^È–6—à¿ZÁM0ö›à^å ç¸Î` Ø.ÀÏ?‡ñÇ='@]Ÿ÷¼íøB$ðÖÙHFÌâ.ï  ´#Ø­2îÙ/¤óûÒv:#¼y¶'¥'Àžûý€É}x³÷ž½žðÁ,Dmױخc /@l9¬×‚˜æöˆ&l#G¶-.Áô®3~,1õŸY èE4Ä2¾,ñÑö™à´eÀuÄ\àR2Ó€‰3¶>Þ!¹ ·'Va ÂÏ×emÁ¢@t"· `,û¸süvÿý1kí}f[‡‡­½ãÏë ] ߊ¡PÀ#p ›1 G€9x·u¸ùf´~ÝÙÝ9þŒèoïïm±íýCÖb­ÃãÍ÷»­Cvðþð`ÿhË`ìH RH¿Ë‰Ë:«/‚¶¹ãzÓŸ¡ æÚ¬Ç‡k gˆqfèÜŒk®ôº´E;¦á:s:Ì“a™ùˆI(/òf9Zf;že”YÄAÜ;uêG! ÛNÀo»Rúeö« Bþ®ÅXµfšÕŠY¯šeöþ¨eäó–˃€}Ô†m3±kìÖÕ-Zl|=Ï@FÈR›¢”‡ ¶è0nÛðŽ!}¶ÁÞÃ/Ê|N]õJOÛ€‘'Ú.áèeúÞÁ@zö ìÛ–ì;0 ÏÃïôcê“Ñ û.û†ÒaYÃÓÍ6^²’Æqø¥2[Ó(—¡ öç$œoAei- ²Zf|€FøÎð§€Ë-qB+–4¶X¿;bŸ.%[*Ó®—ÿÔëà|üSSÇ}97$|Â]÷è¤xR”Ê|gÐ5½:lQëjyJbºÁöÛxÉÿ+Oº"\p8<Áïk’¾8 GñŰx_¸ˆgL³0ò=Öá.íÈ(€Æ˜š_ÒÈÛ'íQiy’%°°xM/éØ_âá±uÙHqs¼ XÌŠ„ÆIz²R]ÑûÇ7ª¼ß9Ûþ;}P%óJÿß!ÿßh4³þGôÿ4ÿmáŠP¯{¯V€kü¿êêj}*ÿM™ÿ·@ÿÏŒ½•œvŒ®ª¨?] ¸cUà?Ù™»–ÿ¿ƒ½7•b¸òüsÛ¾÷á¿Áù¯7“çßÄX0;ÿ‹=ÿWŸøÉÓ~ç3ýÓm*}é&Ÿ¶Ã?}êV?ÔvÂO3&}fZ˜§p‰$xú„=Ë^·:ÿé…sP·¶ÿf³Q5³óŸÙÿÌþ/Üþo~8:Üß?žg øú¿fÖÿý8ú?æ¿oŽ×‘óè¿®ÿ»ú_åÿõÚ öÿÕë+™þ_”þ§xJëçDñã[Òß8æ‚glZ‰¬IÅŠZg,­Y»Tµ„±zeúµòÓív¯ýög¿î+-;KÉ:ZkRå×ñÆ óãž`E-ÔEʦc¢7 À_ %Ó¥-Šþ€w*§yÖs¬¥.Ñ¢,7Lr¼¡<%?“),1®õ´¡S阰÷ƒ‘üŽäÌÅ|=Lç`º‘ R'Î>Ð3Øj%øåLؘZírǸºíøÂÂã©2ÐxI5}ጶp¼.ësó¬ep†qÒ ýMŸiƒ±m©òò ¹>¹uR;`ÌÆ–ñk•§öEŸ;”ÉW™`€o¿öx_Ä9b"'ÁAB"Þ:û¯¨©ˆ²ÓÑ`c]£@بíÉLÑËxä4™•w‡k¶¬øzk»õ~÷¸˜à‡l-cÚ¡a9G؈ÐêÅÖîn‘ñÁ@p?À"ÄLî(0Ü=ã#ÁÃþ3Êq~;EUd ç˜ÈO4ÐÌÿ5ô?uT,Dÿ×›«Lÿgúú_ µÖÿZ郮ï ¾…“ :hÙe8»ÂH Ê `ËÆ•{D ˤZéÎQ«ƒBãî ôøW¥E±×> ]„ `]yš¤äŸgs룃(|ÂüCëw]²6îPŒŒ×Ø `¸]QV¤§ ޒвn/´UE¼#]Wžkð ^?XlKðÒs,ñ´F±E'DI8V¤¼œ6€iîLZˆRwP©Qؤ™âÜÍ@—†˜ÞIämYÿ#ø0üæð0np[él!re&AŒâ½õÛ iK@…Š>ËeK¿‘&i¢‘Ÿ•ÉoăÁ´p©yC‰Š'Psd7$!ºÀþ +S¡(=w”–$òdõiR2C«¦ˆ†kì d]ªô£ÜÜÐÀîw#…6G˜`)YS{e¢‚t¬ÜI:œa|B™~™ìGú]+Ó&¥q@Ç—}4C &̈€%!¤ãx³ʰz[/S“0è*mwTŽéÔ@ñŽÔ™£…ËÎyjgZé€\€ž\ÓÔ2˸B9F¡ã®1ˆßԿѵç<^´J`KÂêIV,®3Ç^gôá‡`¡©\‡³.³—/“£•8_Š&hО3Œ:®‚F›½ÄIôRÿ.Ÿù¨7ýàë?f£º2åÿ5k+Ùýß™ÿ7_ÿ]#Ô[¼Ó¡Vpµl—TXGßH…M@±fw|R–Á8 ¯ôuYâmçH¦oLCñ.ÍÔ~W…Åi§œŠÑ(tF¸G oI]ƶIݶ¬Àr¢bPå¾úhª -]<íã˦ÎH}^&H¨m Ü·Üï¥!w#ñeò“az49Èú;T“žP]k¬ÒÉåH-£ó¬<š\Žf¯)Ÿ#”ú2s9̶Ühl?—Sw`5Arl Åãßm¾Ù½mî|¦á§¹Ü˜ˆ}i‹vì}™žËìGKm­ }«,jbàŠÊ¿"I-©®£,0.èöÿ1º`Û€›¥véÉôóŠÿ‚Hï¼òÿWõ×êætü_Íîÿ]Ì 5veÚhEìQTž¬r.•/ §À±× ùç9PV¹ Gm —@W  ôu¦5GðeÖ^ñ•V4þ¢[¸X¤uÁ€T¢BîÐê‡ÂÔ\î0òXßQWO„í¤ŠB9¨¸|AÔ”JŽ ÍŠ¼Ú ˆ©9âò9 n <º0#¼|†òî…ñÑåã•þ»0ÃFBærèßë/ЃS·o‹q82žMMps¹ã„L㉲Êv™lM<ûÔU›Õ5dTʬøw²½ªïÀ«á*@…Ï{ê3Æ®ŽEÓWpúøøÐµFå%S„Œ3lì÷Éàø|Ñ[›Oº¸0™/.èm›mhä)"‚O¸Ã%µ? _À*qŠt™}§ý.©ñË…‰äçøõ¨°„ÞÁäÈ$€sdCóä»fÆwEþÂSÙ…›å² ·MfÇ0q’¯»$¸Q¨b¾( ÛÓDD÷´<‘çNO¢Ç9à~–@Æ4=–Ÿ†Eùʘâȧk  S±×§É™²íé×ý2åÓЮO–'>å|Òä…TžüÃÝóäÄ[„•$Ê‘zI¢œîw¼]šÍÊ”3æàg]›$¿YùZ )ºËrçÊS)r”šÉŒùÏyð‰,8‚¹Y"¼03þs:ž\L¼r`•Wù·ð%ŠP˜jI )‹ƒ™Q"p ` xÚpJA†Sîù½:i ·o¥?ÿ/]yE@ÚY¾oCMa|»ê5Úw÷#ÏÛŠ¹ÕW w-°NârŸ&šÂ]»h²èàáýÿTÊø¡û?ÍÆtÿO³ZÍê? óÿïXIiè»–FÒ îQÑ`æRѰn\ IÆÏ,‘nW#)ܦHR¸e•¤p›2I¼­ÛJ S•’Âd©$ÓÚ)ý/½ŽÓË×èPúÓõŸÆj3Óÿ ÒÿG"d_Fà+÷[QØ+¡‚ùêÉú~ƒ@ø˜«URþ‡4œžm¼ð @5Mê| hÓ…<ªZ`WBœÿ¥Ïi ¥åGèÍãW:¿ŽZ{ µ@Àiï>ƒ˜nÀ¿·‚“?¬£Gl¡ŠS }uJ:ÚQ–‰ƒËN ¬éDŒ“ÒWq“)èq«iˆßÄÂaXÞÃ$ÁkPΈYÈËÁ.dZvßñò#ÐJºc)Íé8†ÑL($)z‘gñþt5e„fÊK ¾¦k_ªn btÜÒ: ; €F$°+D»qИª¸p²ý Åe)¶o*|Ñ|=}íø/†Ü0Q!MN÷-F+‚p×-¡Eûz¼¿µýñýÁæ›w­Cú U1Cú`ݸ¥ŠP*¦@h=E=J΢vk€ÜyB`îeÉ’@€8õ›$±E©4)´V;`\«¦úƒðAÖã `TbKŠÜp™*V(pD¡! ïð–ï B’§RØ{ícê£+è)@ôT"„Ž©IZN’%ˆQ*5)‚ƒ^rztöU‰³‡¬±z ãÄÕéÕ)`Kº ºœÐŸô&‘C œ§§u} „ÆÌ× HçÆ%9-4$Ü_OK$Ì”ÍâqN'Éjh/>%jà¢_MÙaä‡:ÐøîZ$uÎ ›8ˆNײ)«5k[I¦‚’‹9žq>JåÏTº‡ G:‡3iKöÂu á‹>ç4—6x«m‰Sw·ïíÉ ŒÞ§XºCwm퉳mÜø±ü¢)ý_)³½4MiaG•½Ïœ —°¤ö«ÐS÷€%ø©”U¾©R¬ˆRùÖÅż/×…ÑTjå:|&­ê;~¾©:ñvÉ–ì ¯«M8.ÕççN?êƒ]ÀËxNu^«£²V”‹BÙç]LÃÙŸØæx0&nñs ²*‘õP6/383)‘*Ó™1 é Ã-É)U“qÊeKÆæ'µª8·@3ʼèm¨\7Ð…Ã8YV¨â-<¦-ßê9C1AœCeÛ*tÀñkäé ¦¤"êvQÊ-¤*·¢U,å0åuêøÕªz·ã4þ¨´øl.mÔª“ªe6ÎNåKµNïà¡hs0ÂÒSšELS/Ù¯`‡›…«´t¨ðTNØraˆÙr™RÒ[KÁNçŠÝi«@VØSOžK/„pºäùh_âR‰'CåZÞn¨r®(™±XŽ“ðÈÚ% ©Š%´DSá$Í\ô‚¯dì%Û¢3úWÿŒçº÷þMêWôÿ­L÷¯6ÍFÿ-°þ?æõÕ-ú~ç;v¤ 괓ߤ«!Êó 7€cÓÕÍ IªQ).&i$³zÒuõ¤íɦƒ™ Z fõ<µjþÁŸ“uúÔÛqÎvçšî“)BÄd»ÒÚß("‚?Åq0PNRК˜hr("Œ>XìÓ'Õû¬Ø—ûžLÿßîÿ_i¬^°ÿø+³ÿ xýwÝÿÛ6Çûw9ޤɑnIšhqœW‡ãýgô7Þ¼½ñ¡ï…¿Gkã;oÓØøoÑO55ί§qŽ-óíhœkCãíûè¦ÿû63γ—qŽ­Œóéd¼q#ãmú‰‘sêb|¬§Í9çqÞ6àÌöDvyÿ‡. £îzXÿ¿Úl^xþƒYÏú?šÿKqû¢wDô2qC«èäÿS‰1,»áÿ£|˜¤;`º¯ ñ¨É#/6^¡1q,^¥'cãL›êC4+㪈¯ÿßC<”X Qô&TaŒÛX½&ùÍËŸ .‰ï㯣JÉH,4Nê±ˆà ‚rSˆ4ŠI)»®+ ¹ßÀ À”¿üòK¼Ý—×™X† Ï®ÈNq{©a'Õ¸†¦¢å”žëv¼+òÿúa™ó‰ÿ¯Èÿ›µÚêtü_3³ó¿ÈóߣnðdÔGÌÀ_ö½ÂüžŽZ¸ÇãQ³Œo–ñ}zý¿sªþÞàù/ë¿ìù/Yý7«ÿfõ߬þ›y™•~”þ/ý°ìÿê+ñ_Vÿ]¤ý¿ÏƒÑ sy2za^F/ÌçÙè…9>ý‰kô;=!½p·G¤/â©7OÏ™Ã“Ò ó~Tza¾ÏJ/Üõaé÷˜{©·íýßáýw;¹ü˜¨E GR½AÂ* $ÜÝÐÇ{êk–kÒú!ÞÿµGÏSÝ´¢0ÜQÒ6É%–t÷‘Y~báàP`ˆ™"ÝÀï´J8Ï@&cæø¥wo߬­‚ ÿ‚#|ÎúHi_@›)ó›³r­|ð5ÅZÆ-Òž5¾ZûoŠÿÃ)wûS#c¬Âÿ;>Íá?¶lþï.ù?ïö|ó/ý XêzJWEÁœgö¨êN×c£×CQç SŒÑú#󃘈÷ûŠ\¿!SÛ{ô¬ÓzÌüj†gNKêw’SЦ+ P™ŸM1—þ£°GæÝ‰³cr=úÒÃÓ߉æèP( _²YÜpꜮ¦Ãµ,(JƒãåÉwM14r‰Éæ„¡ <ê]âMà½HÎ2µ¦[—VÇo޽*þ»ÕÎåÿž¶›–ÿïâóuá?oæn"Ê}ã ÷'ŸoŠy;˜Ç ÂÛ…lX-ë3F`}¦ú¿1í5ÿŸ£ÿ[û¯Õÿ­þoõ«ÿ[ýßêÿŸ@ÿ‡į̈ÿ+ùÿI+ÿbñ¿¬þo^ÿ—CWÿÚÍWïWâ2¹ÂÚÝ( ÃÁ˜hQydÒÐÎŒÊ.`Ù#Ê~¤(:M >ÐQ ôü Ci —˦I †‡Æ†õí %g- ÖÂ`- Ÿ±…a‰ÿä÷&Cn=ÿ£Ùl5òøŸ6ÿ{gú •±‚„ˆ3õ¾C›Hº…ªƒÔ¾rB2–2~_ú?&yý¯„t-ù“À=ÅPÌ0Ш4ä„q op*1z¼O£W]Š.®&²r@ÉtR2ãGþ¸:Twjˆ4†O1M³ê/é@°Ê³Ï¨ÅÏív{"ZüD9ƒ\ûÉâö“1ÊT¹'z¸…Â[Jêæ? ¥JV· ?–5Âbò4QCîbX(\ÇË”PÏÿáH‚oäyþIì«}Ó(§Zƒ§;8{ý'Ó3ø÷o_0=9GZ€\]ð»¸!éÇþIïÄ=À%cJÔ: ÅâÇp~™Ï\šáá$Ì/æ¨y“¿öǯРމö<ù© é2º¢)¡H–, 9ò þ>vzqS÷9kú”2£ñ‡´ï£RLâð•2Ó‰·ó-zœJ…I…"ý)‹»CVfàìÚ-1Œ#®2f^Ü×Û—npvtçGØ'¤ÌÁüZó‚8Ãa)ê‡ëË‹ŸÿøýíO¿¼>¿¢?aX"E N†ŽD%5án¸á|Î&D0v0UB!kÛwaI®©Cè-¤î(p#¶ hÒzRgéi¤¦}¥ÐÚ íÎѰôŽÂkõ ©”öI¸b–{Úâ·q4.ÙÍ9ƒdF»$jMWþ¡ GdaðŠÕ4ܤ®¢bh ÆÂMd8nœPzíé`œ6žèoŸ6‘s«06gIñ®ÃUÿ0¦4Æ ˜xëgDÂÃRè ÷©:´Øì@ebÞ\f_ÉC犬×üüIH/ÖQŽä´zøn¤ /Ÿ¬€VӋꃟ^@xfÞvñN¥6õw wt.ÙÅUÑl_“ºNß^¹Hai_bñúݤå+ÏÉcƒÀ‡…FqÍ$Bmâ’‘CC‡ûÃm…39îœ8pX éäbz Oa:b‘¨‰7„‡ûÁZ9ɤfÇ3œÔå<CŽ¥þMîµbIÀÅ2O ãŠq„®òpŒîáܵ%~Áá¦4_tÏîÒ™sÞéª_o‡¯FÞ?Œ&¿§¶ô×JÛoÔ=–á ¯ýwp4ýà_¤‘^𦍰ËnÏ{7¼‰/Xìûãé¹Ô[%äE‡T±§¥ú¿À]†ˆûæˆc,…T±j>Y®úÚùøk⯈—¼RÞ@X85r>º£Éø~÷TÔ4 ª'¨‘Iäœ*7p‚âX¶^R;ˆzf5™¸ó<}Ì^q­59R‡xX:Óˆî0ÜÑJßR~˜â³ ™©XÄ£ª=2{‘×àhaXÚ‰6Î'ë1ã5=@¿S™Å©\½æUï[*}˜xC—ŠéUX?¦h&n™ýy­ô)‡G^¦®_³.o;g\GçÏÛ¥³f=KZæÏ9#ú/4½—¢ãæZŽZ#M­^ü¾Šª^9<€p@—¼‡ñ¶<æ0èmYt)ôZNèZ‹ßN¸qa²•d¢R„$ùˆ,±ðij'ó"‰÷Ç“©e‡›CoDj-¡X*9Ñ®Þ\”‚—nì‚×¢;úÙç9C| ·¯ÿaøß“Vó¾NOPÿkœØüï|`‹ëõÒTl°ô£uŠXÿÏõ‘±êï+ý?óê¿×Û6þcgñŸ¶þ»­ÿnë¿Ûúï¶þ»­ÿnë¿ÛúïôւȰù¯ÑlΑÿ,þç.å?ÙíÅQ1_#ä8–Û(„¿‡ç†¤$† ÃS€ §´"wü”ˆþkÊŠO NÙ‚üo‹£S’$ ¬)²¦-ÙÂû?¿øOq £¶aè*úßÊÅœ¶Ú-Kÿmü§ñøÏÔ¡Îó:m‰)t£%jaƒCŽŽDç"ô0+‰c f%Çû&F§â´×uâ4±%Q_æ~Z¡ÒK˜F‡¢}ìø Pž÷Ù/‡Î~9/©'–IL¡‰,¶ƒ€ °mâ,ÇuB'”›âl k{bÄŸÔü$ [°îõ¿(üçx#¸McP¶~üëýž?f¾ÿ!3(4S^¯ê÷«8­©ßØQDÀ5€w%ѤòMŦlNÿ¥õ1VÅÿ×›¹ø¿†µÿZúožþoTæÞT•{3EîÔ¸7VâÞL…û|{"õ›—·§nÖ-nÿãþó…íuŽCl;3PÕÞòMËÿ5ÿ—pYSö¿%ñfÿqrÜjÿoYýo'ŸËãÓvã¤×8y@¾üðòÅû@¡z£êí÷Ñhü_û=ãs¼ïúG¯?à7ôß½×üpÛYëa~²Qk>\]œ¿|}ñ”Çø×ºaö„ÿkgA-èìs·Nûݺ#P3°×Æ0öÚØì]Q7ªþýSg§†À(ÔÌä.{§ÿPÿPí>PGW/_ÿúæâèúâ·ëêÕÅÛK¼‚ô[½~ÄrËŽ}|Ú|Rä…÷”Mø:súݧv–ì&vÔitžØQKwd‰ò³°ÿQö×.ô¿6üËéM‹ÿfõ?“úŸÁ4·™,·=39nËSÜöŒ%¸=%¿mUzÛâì¶=¹mRÛR™mùĶ=Ãim ²ÚöŒæ´™Li[˜Ñ¶g6ŸÍh:›Él6ƒÉlærٞʶ4“mÏP›4¶M³ØÌ%±mšÃ–ør6Ê`‹ØÖÉ_Û3”½¶aòZ&wm­Ôµ=C‰kfòÖ ¥­mžµf&iíÑ9ksLˆËóÕöÌd«HV3˜«f(UÍP¦ÚÓÕíæâ$54÷.Åÿ$Zµ}üÏúéiÿÓâXýo+øŸt¨àR¬œ4˜ÅMŠ{1ö±÷´àžÉÊ~¾PûoíøÃ}€§)7çÿËü“þg£eùÿN>¢ý2ªu¿Ä8äjy¢s³*ÝqÂ8‹Ë ˆÚ„éxþê(_>Du2–¡àDÉÂêH™îâ6ßE^ÅßWµA ÚvHÅ鸞LfŠ7¬åÜòkíç3z’“$­–úý@ƒ;gîu Wê%¬Jý•ý-)`"ADòWLŠò4I©Ú/Øls 3)¨ƒq¹ þš›G…ªOë5 \%䫞bÐT?ðúâê— |ÅŸ.ßþÉío …¬Å$î½sX{{{wXú®«_ ¥‹Ø4â”Pöªê'˜­×S¢…Šš9'›ëïµp.ØÛJ§bÃú?'ú÷u âÙ‘ÿß)âz,ÂÿÈûÿZðUéÄÒÿOÉÿãb ÛŽÿi7Z¹úŸm[ÿsgüß@aŒâ“+c|e€Ÿ*r¾]4§F«GÛ¤Ççô¸ºþÓÖãæÑÿã–Íÿ°ôßÒKÿ-ýÿtô?rŒ€® ÿÇõFÎÿ×:¶ôßúÿ¶âÿ£¼‹½ôççãûëoáõáð¦³RùŸåÒ~O …ð…¥ªî:(=”Ê@íö¹ýA+ù@£7Ј" Ò ¿õ¡ó8&¢Gh>òïèÿ0hù9&Ç!”lÎ≈k4ÉvðÒöfVí·‡صô3°Rá¶\:G`ô™®8’G9Ñ$P¤«ä¬mãôÑôg3Ô¶™ÎVöñ7Ö–Âj{÷t¬6ÚTè*†jÃu‹¡ÚE?§-ŽÁÉ"µ•JnMÕVc´aÜQ 8!jéßi¤¶>›„±¦àھπ°eØ(yu ¶¹lß§!Øâ/m±0ëÏ·þ|ëÿYlÿç<ó¿™‘ÿ—ÙÿOóõ¿Úÿ}—öŸ€1Ц1Šf 1ŠF°1ŠÆÀ1ŠfÐ1Šyx ±[l!­ ‘ñ\‘–ó0óAf7FÊøbb–ùáÛÀÿ8Ý6ýo6ë'yû¿ÅÝ©ý_ö:gAŠÀj#¥ÇÖV’dY ¡Ô;ÔÕ‡rM⤌PÄö(Ñ0q4V“(1Uzòò ;JF8²#`' ‘Hù}.)œžàõÃðžê¦¥Þl/’|¦sGXÂùu?¦  j*©%FÓ:´¼ ÁèÛdŒ4öÝÛ7+ªÐšx*Â,ÕÏÙÅQÚg–Q^©åZùÀz>¬çÃÂý~ñ_‘c ô þß:iäô¿¦ÿÞ¹ÿÿ)Ž‘âbÏÈ.¸ÞÞ‘âÚî‘âcü#ÏU3JùHŠæœ$Eƒ^’¢Y7IѨŸ¤øxGÉöêÚlê+)št– zKŠfÜ%ŵý%ÅÇ8L¬ keØ/N†]!ÿ1­²ÿÔsò_Ûâî\þ[`BJì<ÉüÓú!ÂhEájËL\K~©m&)Õpl®ü<±Ípů5Í3Ö6cm3–¯YÛŒµÿ,¬ÿ®‘ç¶ŽÿÓjäë?ŸÖmþŸÿ5ÿê|ñ'F«¤âäEÒ}"ú ‘ÏØ¡" J¨dNRåißI‘q‘’‹,ÒÐ86H\wn/µÓñI­7 ºíàˆÐ;òDÝ?iò)+!>$hþƒ*¬—>LºŽ• üýOØ”w®"’u)í'8³Ùñ„U±)DúŽ;6ð†°ë†'°1bì€TÖ%.NÆ*ªdBËEÊp:>J¸j}NQZæ‘‚›Œ:Ù¡¶A¤Ã Î ¶s…Úœ8ûÜ‹¢ ¡½žC.³‰¨•rSA•žÿáÞÑ0£¥2ŒR¦…áòf(yy½ä”ê'ÐêF[9¡"iYs%Íá\À{uI8 /aÃW×§ÄHª@‡xÍh`“³àdiîá³r³'Òº¼,CLbxÜKÏz|þ%2©Ca]|è dù†ËÀkÄ;Ä€#®‰GF×k “ëJæEŒjâñ©s ‚w ÑJ#áNmxéç%ÿóþ­–ÿæøÿukÿ±þ?ëÿ³þ?ëÿ³þ?ëÿ³vRk'ݱüg*ú{5þ÷œøïˆ„Vþ³ñß6þÛú-ï´¼Ó~vÍÿAŸž Ì¾}üàú9ûOËâ¿YÿŸaÿ_ /UÄ”‘y13aª¡ôbï›Â­šªŽIõUX«Õøë’ ‡%Œgñ_ã¼Ævø?Èx^–fœ ï÷í}¸êRq¡p5ñP$óeä”GÍËQfÅ8òÇÕ¸ "_TœaÕ_ò¼B,Ï<¢?Ä8ùìÑâ2f›O7gØòÙz¸€…Â[JXæï‘­$«Z†Ë%”ðèÆï¢†…Âu¼@Ésd©V¿êÚ}“ Ôx6—×/(k¤‰‘â¼e˜~YÀÝCöÂbÓ ÈfT!-b×êPÁy!Y5PU½äÔÑl¹J„·çÎCýšRëž.ÇÓ.³d¤‘ßt1Ê”ÄË01ªK¹ê”óˆúŽÇ‡dsù‘ýž žkØéçöue8ö‰y+@y9^ìÿÆA¹¢éx^П¸ªä«"ÿ¦£÷ MR„)¿w¦©ž4k¸Ê•ï*œÐ8]‘¢x¾>­µOFÀø¤h÷1‹­údÅU“¼øþ„lg\}”5é„$>ñC7Œh—F¸ƒ©£Âw?Ø^ÿNLäèÒE *n]_öc?öc?öóŒõ¿ÿLžè÷¸redmine-6.0.5/test/fixtures/repositories/filesystem_repository.tar.gz000066400000000000000000000007371500112024600263340ustar00rootroot00000000000000‹4‰M홿N1Çó%¾Ã=€m¯×Άààdâ1ÔB@åÈ]I$¾«»¼ƒOàÂ#àêæÆjÔöĘðG9NÐß')×Ðßöáû£íŠµÆ…Jº‰V—DZjGICGq·B 2Ò§aú™Î) 83Ä—@(÷¥n9ÐIt5v]ˆ£HÏ«[´¾¥fø×*ÑYúœÏöO©ñO£‚QÎŒÿ€™Ÿ‹KÐÿÚ ËG¡[Ú @þ#³ò߬¶«-•¨bFù—r‰þÏ|*}aò/¨$Øÿ7ÂG×<* úJ¯ä_ˆÙýŸ±iÿRrìÿ¹ðöZöÁ vÀ&T¡mF $fØïžÔnýîÆÎÎÉ5¹%!±ó!‘1¬*ì@6,ÿªsê5ÛkÍ?õùWþ™Ùÿ3³#d˜ÿ<(WJÞÁ¡ó©Ûyx>Þ?;½aoÔ÷NØõÇýÁ0Ì!ÿ'ºgKVè òŸžù&ç!(·ùçÄÇüçÑë¦zݹ3ë°ë°î»u¸ ØÎÿÿ³FœÙ;€åîÿ9„ä,°çÿï6À¿vqý÷ÿ©ÿôþßœ©½ÿãÖ?îÿ~×Ò9ɤ ,—ÿ‰úáßÇü#‚ ‚ Hæ¼0#¿(redmine-6.0.5/test/fixtures/repositories/git_repository.tar.gz000066400000000000000000000571541500112024600247400ustar00rootroot00000000000000‹àp’fì}\ËóxAˆ¨Ø»E© ¹$—"JQE©VÀËÝ"`¤‰½a+Š¢ˆ…gïbW;6Ć]Tì€õ¿w ‚ˆOÞ{Èûþ/óù ÉewgvvfvfË3(X¢ ’2…D)“ÇÐ~°X,>‚@äÿªÿÏb±ùæò¸\.|ã@,˜ÍE¸4ˆõ;ˆ©‘ %*¤üÓvªwîÿÐiÓˆÖ€FëbÐh0¤òMü±Á_ø#¿¬]“½|}½ÕÉKÁŸiµ"Z•Ï[c²p&F0GE¢rTª”H Ú([KÀ¶«;ßbx4›å'EåXˆd4!·«ƒ¾k€ö½öÛþ¿ÒòK5ýç°ø4ù-ÔTƒÿ¸þWf&“Š%ÁuŠð î/ì?‡‹À\PÇãÏá³9û_/ð¿mÿy<c,®Æþÿ&¨¦ÿ¿Aû­ÿ®®ÿiÿ5úÿûÁ Q*#ºÛÚFEE1C ¹”cÊäÁ¶‘"[…L¬ŒBå„­ ·‚b‹Ë0…­7æ)S Ìä3ÙLe´’n † (`EÉ&r(Œ@AS8dÂÀ )NØFÃ" H¡”ȤRÉ€Ë%8©D.RŽ’¿PMFåTF@b¹,R†eÂÃQ)…ÓÀ¤Ó‡a29@ׯ\±LŽ*A“ ²y{ˆE×Kˆp@`)å‘]_ºRñ´&“ƒ&"%à…Æ(èÃ$°@@‡ 0Y°,R©$¤˜ —HƒA7Ÿ 2àoèM¡Q‘€¨2ä’ªOÄh˜ ­‘⨆*I¤2:ýßx5ü0ÿËD# L©¨Kµÿ>ŸÏúÏæ@£ÿõÿÛó¿&þûÍPMÿÕÚ_·q`íã¿ ýçðyšø¯^àûß×µ—Kã¨Uüóa„Çùl„˜kì½Àÿ¶ý×Ä¿ªéÿoÐþ_ë?‹Ëª¦ÿÀ"hü¿z9!î¶!Š+lÃQ…’3Ø` Xl˜ý¿¦hà7Áó¿D*–Õ1ŽZÅäúÂeóø,rþçˆFÿëþ·çMü÷›¡šþ“Ú_盀µŠÿ¾×6ÂÒÄõ?ØœP`r µL[W8jÿ±ø<.‹Ïe±¹äúŸ¯Yÿ¯øß¶ÿšøï7C5ýÿ Ú_‹øÏ®®ÿ¢Ñÿz?)¹=‡C•2`¸D )C$ ˆÜC#7ëÈ2x(–É! 1Q„ˆ©‰ ÿOÀóˆLZ§»µŒÿ`Ÿ¸.›Úÿçñ4ú_/ð¿=ÿkâ¿ß ÕôŸÒþºkÿ}¯ÿ\6¬‰ÿê~°ÿäZp㨕ýÿÎÿãpaý¯ÐØÿÿ4TÓj'¨®qÔÊþ¯ÿlDcÿë~°ÿ" XQ—sÀ_·ÿ\6W³ÿ[? ±ÿÿi¨¦ÿÚ_§sÀ_·ÿà“æü_½@µñ@±PgÔmÀúóõ_aU¿ÿËÕìÿטBäSEI”!Ý¡‚#pHÃPQÈäJðòlá¡àóQH,Äp."d\ÄGøbÆÃø‚ª'Š$ E$A^àÓ¹b A0.G$æàcbsÁq æó8BŒÀDÕêa(˜0Ce™… L‡1”/FœÃç„"Œ 9(Ê@›lÃx†ÀlþŸ·ÃþGíw<÷Cè"˜‡°ãc Ay8*Ša¡ bLH`".è†aìZýƒª•§´x|0B6F°Y†l‚+ñ9³„"GÈÀBL àp«¶¡$J†º7t±å |‘@À ¸Á‡a‚âl!xˆcqa>. ÙÕP»‹t>›ÃÅDl>Âñ8b._$ó9€³ O(Œ±P.‡ƒŸ^-J4˜ú‡Åb†I‚C”Qù/æ…[L B‚ËÁù<F3Øl., X¸@Œ 0!ÌåTkf¢R©L‰ ¥ „BP ¡,R G Ä8b„Ã'yB°Øà Ç„qì¿!cW¥˜YÈÒøo«ð?‚ü𠔉¡À ¨3¿°ÿßÎs”€²ÿ\Íþ_ýÀÿ¶ÿ¯ÙÿÿÍPMÿƒöÿRÿ¹,ÎúÏæ°4ú_Î×~öçÁ"ž‹ÌÌ,D„ O† GøÀó€QŠ ù†âø0p„À£ç lžA˜á Øl¶Xs€“Cð1‘ˆÅ­u“ñtC1Ž€(&wŒOzOˆç p$Qà=ˆØÄa£„@(‘ °Å|‚ÀØÀ?ÁŽ:D¤£ÜO\ Åࡈ/à‰D8ÊÆ ‚Çÿ!,1*F€ qè;å‹ ®˜Íãñ¸—Íâ?D£b¡XÀg³y\> Ú㢂×'€ç³ÅÀ•²p!ÀE84ˆa\ÀC.ôS äœZO¯uwj?:\ô‚àÀÀMÃÄl@ÀÂbÁÃD˜ã"\#ÀÏ„à/ŒN­©¬µ°Åñ 0¦ŸÅ#ƒáÃ!0ðqÀ0ŽŽÖºÉxz­YÄá±aXÈ…qðÍùb|!8"Và—ƒFP˜ÅN ŠcƒˆÅÂá¢B |ð/ @TƒðD\b#L̇¸(_Èáò ”+âî#D‰”%ƹl€šÅщj;¾ö~­ýóÚ¤ó¸bRdB‡1Âòyb1 ÅIÿ›Å ºà“µ>ár€ ÁD|®D¥b\Ìá³AsŸ…ðp «å‰9"!P=˜'†a8ÀvðXB T°Æ. g‹ÿËkÝZ³<®¶1K­›Œ¯} .FY€»*Š›ÄB>Îç#(æ B„#‹9À00:}â0N 1Î"p”Kˆ@DÆãò@ÜÊ#€î Å!$dÉCÅ.Œ=ðíAg€Ýp@‰—ÇÁ`Œ8ÀÉ‚1!"…Ã,œ D,ôV„pa ƈAÔšÈßÒo_‚ròq.ÆÅÁ fûO.w׎ZÙÿïîÿÐNcÿë4öÿ? 5é?µÙU‡8jeÿ¿×6¬±ÿõ5žÿgEÈ †œ¡ŠºØ`ýåû¿­9ÿW?ð¿mÿ5û¿jÔÿ:Õþ_é? TžW]ÿ¹°fÿ¯^ÀÔØV$‘Ú*Bè¦tSÈY#'O¶@˜%Äã¹GJ%2Èꋆ£R(Eˆ…I!öR"ZI'…DuÈÞÄ 6¡KÄy.2135ì!6]BHéúJY„³7©^š±Mè™WýÛ ‰"&\$ “`äy4ˆÌE6‚.–Ðé@Z¬ÄecFU2$Rºê,”M•¦m­,éúvvtò?"4Ì‚ìL¡(ÂeT¦Õ@yd„’úä &UšP pÁSE–%ÓãFæÿ%ÆA(Da…T4@"‚üE¥'8¨Få5Ž€dbHE‚Üä­éäjUAðÝ‘Ä~Q5F³ƒÂ y0“ÅTué€Ì ‰4Hõ•â`Êhà¼b0€†*•1ö2)A¦D†UÅT|ñm±àáwm™¨‡„ÀBdC7vE%ˆ¼ï]#1v «J²y9.Mvi¢æ+¬æ+&‹ Ã!4, °N¢´D‘ä rp´*•A2Àr&5˜UúN;^)PŽ€ibH!ƒbd‘"„j–1¡b Ér€Ÿ.“†Å‘‚àjÌùÆ‹À !1‹S‹l<4†:Ê8¢JuöOªWB Õ+¥¼ ¤¼W}À®à´šý•r^‰­’HÚtýšFNU¨ Õ^C‡†ÉðÇ@‘ ¥Œ“‰¦)¡­tý¿5`ú*U+™T[­´jÂÈŽþR8«0°R@õ#yÄ sÐ|x ¤î‰=dÖË»ÿ0V€úy¸‚L¿mbUQ"UPùÀ%ÊÊNWÊ…©BE»—š¨›±èZ…bKÐ`8Åßôm-†±B”!°¶„lÉòúf0dïÁ–ä·xH&QZØ—ÚڨɃ¨ŸÈ|$DY|k²Z›L+K3UÃúÃT-›±©þÕØ6;ÀÒRÕ cÀzèªYúã(„ À¥xuQª,É«Šïúr0‚¯‹«·7ÅEú‘R×ÊñôJ›@à5 ©bàÏüÛVJ'I’ÉfF-p”Ò«å‡núN÷%óR(Ðpà/B¤·>‹‰`à8âŠïÌ3¾† J .Àb‰ 7j!$Ï6“yå+Ìw” p„I6 4F&“**‘dZ µFt§Ó!+h€#ªO@BªMÔ·ùö‰Ò%ÒÈÑQË(`³ŒœÐ`T"…, ©u.‘˜Ø^ PiÅ7KæOñ~3Öàh–ÌŽ_Ã7bHÔ(ƒ1U8“²°¤y•*EJ€-¨œ¾Èì2аœ¤‚¬O ò0 iª$¢¡„ÂP#%¢~ ÚHžÅP|!ù‹R 9ü•ªqòcq€j8)“f¥\B1AJ`„BÊc(»¤îA8‰™ü@€YH %ˆ²'r´Bú¯BB †Šmƒ€±¤f˜ª}¥L+`²ZTµ±TL ŒLÕ%c…Ù¨ØJÒ®f­JÞUÔ‚£Êšc£*T Ñ”ˆÚù“㘠§Ä‘ø†VÍ32¯ BݪÊ«Æ pc´ SÍáTþ•oïJ ߎ~¤›õqó rqóV¿¸ÐJöE¢t "Í?•Æ¥B¬m(VDQ¦? Z¥²( Þ°%Äd2!`FªIio)6’JTÅÒªC8(P0ɲêú‡>Pê§PFFHðoâS… 9JŠ?U #@ùÈ€Ï7V~ÚPÒ­$?VUj•[ª¦]”O÷=€Á¤ØÙRûkÔä(S „ŠÅ@ÒÉ‘SU d¤A ©}ªùfAª0’j€$¥‚¡À¢ ¦œºûϸJ1´ºËõM7¨†lI)\d'T L¶ AýIaîÀcSÍa¢j× Ø Æw}’ómU÷@5”JT0]N„QŠM*©ÊTO@"P%ÅbʘÅ"µ‰ª^i +'©bnÄ‘r ½ZålÔœU;˜jä¤ñ¨‚ȸ !h„ê‚ õ\Aæ#"•ÇŒœ Uñª•ªLM%+éý¥¹ #ç TÛH­¡@öõõAƒÁøåŸZè©¶j÷°âÿ>“¥È(¨Iþ‰ ^5²­ö¬†2Už’híÛäôcIÛ*•0ü‡‚Uˉ(¿+©.g ýy“¶×kÃÀJFVx tz/ÐRéë{#¢2å½(}%$–D#¯VÉ(ðP­9ÀnTÚ$ªŽUG,‘RKÎzÊŸhºnŤM’¢¶Æd¿È¯RHQÙꊙ”ÂãLµJZ€ê¶‘5àa“¦˜¨fuUŽ·³º=µM²!ïšD‚±—Êâ‘·‹€­&èN? ö%'èpò50ݤ×Ū¸I…ê5—PUB|®“vh¶ TérWé ð[Èâ•Ý«J ûGbÔá0S5·ª‘¨¦}"PRΤÖ`ªtˆz÷0µ!’ɨÅh0é+€ËCP+–?t=JFú?T;kÏä$ÙN¥N‘ËÈ1ä½`42ŒÚc^”LjN®]3¿§EµºÚþ%T9Òú u@„:­K-éø¶Ô^´ÐUF­ò•Ïtµ¤¨Ž˜I‘£Ág¶ ‹ê3Ǥ¢¢*&”1  %7ꇩvÒÕ¾˜ `U9aâB¡–GJUb¥–øšß­ì†š&C¦z ª]ù]ÕÈÝô#}äî‚õG¤ã@iOue±7³þ¶! ’ò½²¤ÿ X¿ª]µìwÕÄ×®.(hIvê½RTåít@¯º%É!ò,<ʼŠß^¥¼‰e•A¨R—b|µ'ö€Ý÷µ ? œ••4PÕzUúUm„  •â”jþt )&(c"xú¡–2’#g+&“IþG®ÃšƒxK2‘ª·œPÒV3U¨1ÐOV-¡J·TµƒHjìUÍW)©ò5Æ U2¨~2”$[V=V¡ 64Q•©Saú•'Ù­lTý±¤ëë›3ÎøÎŽƒ‡ •“^ÊÆ˜Å©?™šV¶Až~P÷¾ºx›@Æ€äÛß«tR¿Êè‘‘nu¬6ÙwXm*öÀ¿³œÔ¶C…©·jË~€ æ¤2€IÙD¡1C˜SEÍŠ:bf4À¬lK%*úäÁ}ò Üw|S ŠojIPq¬*+¾éÛ/áR1_ Á¡ÇJ%¥ê$‰ÕÇõ[AÕ±Àïå@=ÃÕPª†^+ücÇU?ý•¾Wž—øgÝ'Oã)‰êýRÊ«U9)×\¡¦ý¡^]ôµZ«ÿ¨ÓV*z{Ic¨]iˆ´`V¨Ï­¡UŸ;ZÒ¿Sʤf‰î@É3RÊ’ÛÄ*gQµuLc…WJžU!K|oZTÔ}#®Ê©QÒÐöVï6Vœwú·½û_ÃÏödŠoÎû?Æñ××xl–æþGý€fýç? 5ïÿÔ¥öÿZÿùüîhÞÿXOP«õÊ›$O/V‘ òL T©ÞÊ© œÉÉÄÒª=›ïVÈC$(†¤ƒ†Ri‡ÕçúÈ‚J¬<¤£š˜ÕGwÈãw¨‚ŒÓ¾­ ©Ü¹,28R(q ¹3¤Zq )'—~s©ð—œßÀϽA¿¾¥Q”‹pØ0‡E‚+$øbžX(àra1Šð„\ŽSI‰XO æ£"1—¿³Ù_ Š6•.ŽÀp,â Ř[Cº_’a ‚\X*å‘Zã(“ë+êS£2r½‰të)µD¢:pC§·‘'ETjI®–ÐM™m¤B†•¶¸ ³¥B'øò=Žª£Ç È9úŸÏÿ*·òŸËØß˜ÿY[£ÿõšùÿ? ?ŸÿëJûk¡ÿœêï@xlÍû¿êj·ÿ£>õ©övT“; )"1òž†82Œ\hU­‚Rá(NüÍãÝ!OÄÿ9ÿ߀ŸÌÿ•‡xáŠàˆãoÌÿšóŸõšùÿ? 5êj-ÎòáÏjÞÿS/PÛóª}ÔÊó”P˜,øÛÑKòVŸŨNfþ/žþ„*1JÈ=Њ PT½-û­c-’ÞÉï=5ªBHªØŸœ­Zè7œý³ø¿®Žýø_óþÇzÍüÿŸ†ŸÇÿuwôWúÏùšøÿ_‚ÚÎÿ@HÈÛ¹ª…ûïN6Qk×äµU™éÂÂ#ÃEäÆ¿TAÞNWü9ôûÓœUÄ‘¼ÛKM“ä«z&Y9@ÌHÅ2ͲÁ_…ŸÌÿ•^Gàøëó?¢9ÿ]_ ™ÿÿÓP£þשöÿRÿa.Ìý!ÿ#Gãÿ× ÔEüÿãµu* '³vTlÙÛ¨ö²+Ž×…¨¢lP]ÕGQC ^5vÿéj¹©^ózÁ_Y-ø¶ñýzÁo^-0…ü¾Ûêdn2IN”ð‘K œ!‹€»Ôuž*ì÷à¤>?•SWzùùöàäæâêéKæ-$¸K!s…màp ¦•ÃpK¦•™íwmw‡†Ã¶æ– ¹`` Æ(™Ÿ4M&wƒM 1c Õ‘JÕ3ê1½âH…ä`ê¤@xdD˜#Ùþcȼ.ª Šª¬‰FóÀj™«Óõ©Ä‹ ‘RÉ(ˆUôˆ€Ìm‡AúV0ù¯-nnIÑW%¿¥ËŸÓQq˜3þ?é<þIþ:ÛÖøÿàñÿþÓðÓüuwüãWúÏa#ìý?ÍúO½@]æÿøs?P*«<¹ù£OªÖ~è'>yü³Î3€˜~KQª#3£“Êd¸D,©È#ÛKŠË‰(2!£R&5W@ 9™MHºA$Kú‘~uK"UÊex$FTÍlMå²TÊQ‰*ÑxˆøE(F¹u½Â²*WAÏ%R0¥®~sš}V$ÍD!ß^NLêÂhE ¶T® C=‚dVuˆí`‹£m¥‘aaêÕdiÐ+1ƒD 1€û×T¢^Ž«*1ê‹z¦§««‹Ï ÞÝÉ\ÒêÎD¨û†BdCêÛÞRUŠ7ÐA‚ ²é’Õu Zŵ4\V™Ó‘"’tÖ¨+ŽêcÇ©DI&BU¥»[wºXœÂÊ ÒäŒEæa“¹|ƒD(œJ–]åc0ªdÐQù„4yr ²A?‘^¨Iåï¤o(•©¾+"Eh2ˆr½cIf“6‹ ‰±Q#“I÷ ²£«²5W’@%b&ëŸZÙJ•P¹†ÈDªê|©2òV|¤"B‚Id‘ê4›*µûO«Wþð`ð0^E\ ½=úÆŸ ¹I+ UÁR«°šÄZ½%’mÅH5‹-U ~_ð[+ÝÕ¥TÿSEIÔñÔ¿@U€²Zôp ';>&=ƒŒ„P[2ñ6$²›ùÖ9³ªÔÂê¾§«+ùdس'Äîc ·¶Ž[[ÚVÖVÑCÕ…ÐÏêC?Ô°¶®±(ŽYÛþ¼4ˆaÂ#ÔŸ©¦‡+ÌT¥õ+DÒ¤ãa„3ÈR]1¾JýÀá +h¸ò‡6Tv…´$b™:Ú%s9‘æäçmY ëá`9ŽãÅCcíãøñ?)• YØhBŸšº¸ â1eõfã« -9XTQ%;ºù2:ûýPÍÿ#7Q@øGDca‘ø¿™ÿ‰«9ÿW? ‰ÿþÓP“þ×­ö×bÿŸWýü?—ÇÖè½€)'„)¨< à9©^ˆ>¨¥€A9öLPê;áø×PAÉCuìfnjN¥ñV¯h“ÛÿÔ=;RçHá“‚Œ¢$RÈÙF}Yô8(† $ÈBP°L†“9M ™˜Š )¬¤' BA©²øîz\8T%SÇÈç–ä½>+æ0@~«ñ"ªAÍó?ym±îpÔjþ¯þþ_MþÇúÍüÿŸ†šô¿nµ¿ûÿ<¸ºþÚýÿú6ʰa„‡rD<‚ÏG"±ùˆEpá‹9ã ª¦H"b †@€ðé\1† —#spޱ ±ˆÇƒ¹‡‡à8óy!F`¢jõ0h8f¨R1 ,˜c(_Œ8‡ÏErP”6Ù†ñ Ùü?o‡ýÚ¾Eƒ|çN^@p0ã—ÇâqPÆ'{‡ð"”ÃAÐITH°ElLÿÇ+þ¿*ƒÍ‚Ù,6̦óø`4„lŒ`³0 %ØW$âsg E"Ž/€…˜@ÀáVmƒÜPg¨{Cl_$ð„.AðaX€ 8›ÅC"&æãB‘]½ uþ'>›ÃÅDl>Âñ8b._$ó9€³ÂBEF¹ÆF`A•T\à‹I­’Gä¿t˜#]ˆàrp>…àdsa¡PÀÂbT€ Ál_­˜Y™”S ‚Z¸eVŠ8€ãˆŸd Ábƒ0þ¼‰À¸ø¿(ßZaWí ³ $õßVØ:†jö_&"]tꊅÖÖ/Þÿþ£ÿ‡°8ÿ¯~àÛÿ«ÿ÷›à'úOj¿m]áø•þ“_ªù<ðÿº"àÏà?®ÿ?.Rg£_Ëñç‚‹pY\„àiÆ¿>à'ã/`ýÛãÏÒŒ}ÀOý?r% Žpüÿ«9ÿU? ñÿþÓðý§Öë Çßðÿøšù¿~à'ã/‚ÿùañÙÔühüÿzŸŒ?Ìýwý?˜hÆ¿>àçãq¸|6Ÿ+ä³1!&ƒŠYbDÈÄ|TŒ „äê3KX€Ü?ÛÿE¸ð÷úφaMþ×úh-kK÷þ~@å0—LÅá5°onžÛ¼þ~çlröõ=åÖ¿_NžÇ fß~ž—­Ó-¼F̻˞Ça~£8¯¬=ÃõàÓýÄз« & ï0& ý3G¤Ý×%–WV–^#Þ}õ¶¼í,É{?°uN¹NRºå«É­'vJ\¾´Q¤Þµ¢yŸ J2¦ìÞ‘É´vR`§OGùgt±^ÖŽ6ÁI,ÅŽ„Gzø)ƒ‡g'e1n¯nÄ»ôeýó=Náç<sµ7àm¸»6Çè£ùnÛÈä-'7Ãç/ß•ü•áÐ\`à]äá=ÓãÐHÓÂ#YýoƒÜ.m-Ή½{Vç¶ñâ6–´éª#,+õrÖª‰èÚ;[ev®Î“wüÑÁØÊÍžyo‚œeÀæëÙ掶ö°m×,›Ý–ÙÄ¡ëN d¿Yöv—Vo ºnò~}†«c¿?Ê¥_ÒXÏWq'oÑ6²Óÿíþü|þç!,ÅøÂBPŽŠ„bX(@@÷…&â `Ã0vmpüRÿ«Ïÿl˜ÏÓ䫈֊œçá¡ ž´/Y¿ô t½Ï{-רæÇvF%u[ îº<¿xr/ÿf—3æåNNúzoý‘y;¶ Zôº™¾§ã²Õ˧öîZ™êl:+9i’/˜ÝHHï>Âìk}í…Å®·Eu7wHü¼ïèžE;JB“7\Gþ8’Çs‰Þ«˜øÚpN+Û;okÇ6yì=~kÎa㼕×6ìÒvâˆÓ;†blWÁõ!×7 ö4XlÒk?>Ó`mŸò¯é=£ŽùÏW¾ïàѬ_„ɶè´][N’ÀÆ„@‘ˆ#àá<6Êg‰ ¼68~åÿƒ ºÿÏãjÎÿÔ DkyœÎàÍbcz9§lüi©.SÒRe´š’‘/Ÿ²+/ÙוIˈ¡ïÿ·éÔÀÿ@8\‘FD<±€Å°p¶ÇùŒ p.F°¸"F~mpü:þç¿þˆ9š÷?ÔDkóúÐ66œj_²uéÁÔñZ@â‰h^™¹ÜÒ€h2…>)ük¦òƱ “s ~ŽV–´Õ½¾'*yúªÎJÇ~7¹Ò/¹ßèe2eÑÈü‘Nƒ‘sŸ!_Å!— è Ä=ô>kÆö“zG™Œ™oû@°gÆ£>Âì­ð˜Û<ËbÅá“Û´ tÏ?ÒK!ЉÎÃÄnßà…~êæ”wX¾À(håà.ŽX¨÷´›¾ÁþéGÙÍÈ^Ÿ°E§ŽØöþAŸÓ‚|ט9)¦æÂ·\“y¢üÑËaÉ9Wý[‰® ïèmŸºÍ¡‹ñâ†SmÚ5ÙڣǔÎv×ö{’à¹Ï1:vC¸ÑêçâôɦŒ» á+:aì ¯Œ@½°Âî=:÷˜Úõ–ÿzÏ<Ìþéž‚Ëéæç_Ýdú¥ 0¸¡8{<»›$KË÷òV¯{ÿ6üÙù?Uüÿ×|ÚpüåøŸ­¹ÿUo ‰ÿÿÓðgú_7Úÿ+ýgóylVuý‡5þýÀÀ^Î4•v+—5‹N^4ËNª èÄ­pÊìèžêÐÐÀtÐê ëÍŽ¿Ð }ðåz+‡ñ˯æå 3¿ã<­/šNøoIï¸iý¬@zz?“ƒ·­nÎ]ymIŸ]›ú÷nwž×µXÃ?èà~ÅšMt‹)Ï|ÏÎß”øÄšë.÷“7YöžÎ+ð[Û3âÃÁ¬9—l{ J3´ô~SúùÚ«WŽÍŒRÓ'%|z>ñþ³k{Jv¿ô¼ÇKN‰gö¡oË”&€Ê\¸é–AÏ öëOÍ¡të0ÌiúF³íÖÝw¹n¶5掞͸òØ=é±…'’wôlÝ¡k+|C×ÃPçnÏ…½6æ½ðãäqz3#Ó̦›.î[¨?¿…dIáEøUó,Ä^SÜÌx"ÕÓÒšð)|HÛøOòR-¡·nƒ—ëK^½³2ï­Ñ=ßno.eÅv;ýàÃCæ{^©Öœ§7U”ÙS”ÝUQV®0›¼oFǃ©ÎÃò´8ÙhΡ׋ןãù¥ìoôG€iîµÐ?Ò§ îi8ôÈx÷ùg_ÏŒ¾t|LÎЈy<ùs¯‚iÆ-]['.6<Û¾ç‚{GW?ì嬧§w_–{àñ½%›]3Y;ƒöåíŠ;ºŸ[ôK>-(u>ç²?p\«;"™ÂHGÏñ Š°þM'² §Þp!Ó+ûËa.|b£ÁsîšAÂɶsî<¼™£l½é õc¼Û"3ƒ×›¬ÄfwêÚ<­Oh@úãóFN+ºëî)|Ôb¹ó”5ZyzÎ3¶äω5„3Šã†l>½nÚË—ÐÇ¥K†¯¼RÞÉbjÓmK°# ‰e½ýÊO¶K_S0êÆèý-Ö~ë½oùØËŸh“ƒz†UÌ)*–™{vès_:C=˜¦/§Ž‹ùÖú¢åÅy—–lbªÚ!ñâªé¢ð~Œ _Zí,_Ö²ùúü½Kwô mïž3KKqfð»§:w¿õ|⼩¯þœòÜQCs¹³Å¯çŽbÏzx2üÆ÷…¹ŸÓhüË>j]NvtXI’6Óƒ~„eسTèú>ÕSÌ.?}ÛýÑü ,£ÇÜ0Ýó2ºG€kØ‹Õiw†ç¼Hgú´[¥;Ë«ð<Ýd[ùB?ñî¤x÷ãW›”^~nûñSS:ŸÎl饟ÞRBì¶Zn"h87zÃÎ->v©{ÞB‹hZœÐdé~—6X}í±n—˜¤lY‹“c&|2èL3V®ƒýJzUÊŽ?s]ñi™þôèEK“F´ _4ñ$ß~âòFsO^ hha¶gs“ÅQ÷ l¦w•­÷?â‹FLƒ}š~³Û Œ éÜÝ,zÓ «­-lcƽžcx—m²ì#w‰›u´ð£ñ Ô¥/%D_ں̈7^·¼)…º©“±­495n$f€C¸ö|j;Iû^¾_Ý€ÏYž$ôíuqÇô™–ëiù¹e í‹8~ÙûÖ‚–3'?<ì|£áÞ6V3§žr>»¥ž0_ß>±Ʀ Ç^†~_ü&ð‘NSÇ÷’ƒÇîéᓜ;6ç½]›óù cÝ—ííÚLð–}˜\pçÄÎ=Œ { ×îáôí¼,بdE9ÍkHlÁwJørޝÐñ،ɆÖvmûëÓdd±¬½·QBKV惸‚¥Zö¦£÷]Z=ä|À±9Sf¼yŒ-[?>¹Sð‚ }'ßþƒQþÎße*¼×zðr‹#rë3R“ðôŽm·7^ÉpºÙTÒ}éÉ#çËæútìv¹š9iš÷ “Êi!Ö=úžÓN˜u˜+—’ò™ïð$³Þ- _ âå mu©ÍÍI_2-oõ0Ð~³tïýƒ­Ö.mqc çèÎsÐIßOHÙšgŠ6ûšº3r·¶òå#§[¾;4§Ç¹™;Üoîq[™öÚ{p÷ÏLdÒbçc{,ˆ|5þ1í|S-ÖÔЛ.ÜO×ußèÌžwYBÚœÜ&€’-¢Žz×^™Ï™l¸ySéšv] ×3ñÒZ•t!ã–KÏyÚç®èZýãý6ÇnnÞ•í‚#-,˜­‰Á š¶ª•©NPþÎà®îL—Î~Ëò$3;¸ìIî­;1a»m#>>w.ýì½íæáÙ³£çä±f÷Ô÷ÏÍ|Z½ôM·M׊C#Î?x¼*²õyN®ß»¡þ…ÇÆh5•÷~3$p¶GÓ£Niò‘¶}u÷4ñóÛ*ÚæåýÀ§yé×§ú’ö&­¿Ð­ñå0s#}g(¸xúuýÆ’rL»õž–Þ/ìVþýó/Ú:¥ÌX›¨ÈÑ$Q.Ú83{„í0Þ17äñšÜëw"ŸodF|}¾så#†OÜøŽëY7„ƒOzÎ}Pxpõë“Ç 9aiŰ`àþVOèç¯d¤=lÌKsÖYHY¨3M(yŠ[wªï象úÆþ ‡1Fvluä æ•ßzlÂc99]x¼¡ÅaöFë#îz é$šã´lEÌbæ£m¾‰±ëæYws½ÿxç€,3H¯uûÁøøÜÂÂo:žäùÇ}~·esÿáΤ.7Õ*oÿLÇdü‚W­¿ î—~ùöHg³ô`¿‡Ú‚ÅדÈyzf)ÏÞ¥LJCʰ“ަ~zi;ðKgq°æî-ð¼Ï3'ÇŽßâ¹¾ôÝ:ºÐk´é‹„ëîœ?n8ýâä¤O.SBG¹+Üÿ¤àpŸ`Æl¶Õz+ÛAlݳÃÃÂ.ÌÅ^OMù¼Ùç°xÐ7™Ó„<Þìʃž}o´3<³‹±5µØ‘9ÕõΉøÀFv§ Ú|¹pw@~ùºƒþãMx°ÏzLÊœ G ÊuܘšG'¯%ZiH‹Ë9îÊ*rqš¾xÆÄ¶›V .&úôÞE1…ÖëÙwö9ÛwA¬x^§dþþ„ »Í]¿[/hv«M`Kï…Ú½Ã6<âMð)h¸5Ù5¥8$yîI®ß¶¾l¨ýæI;vîòظeÚ± CÝ#—» zÌ9w©øSÖpYT»q—–æ‡]éAàh¥Ó‡‰Ò gZèÞÈ·|•m$utùy ñÌxÓ§ ÍrlE–’$ç‘hÆ=ïücéAãw2–qVÚ_V¢Øæð–+§°ä‰Ý:Ì pöœ[òo1Á8jWúµ?Lƒ;¼aè3c?kÁ.h'EwsÿÇ9áºy WŸ§è¡½ßÏäœ\6stÌ?zÉžei»Ç$Évì×ÒóÓëF˜dïÅySNÜp°-Ù¶ô~¦ÓL²f·ÕÇ=‘Í?œtZªÓð…u“B½.—¬Ñç÷¬NËÊzðxôq§§ÍNŸz2É¢¾C˜Û?^vÖ?síú§¾z‡§èn8”ÞB,^¤?qâãÉ'Î_9ô*~š«m˹ó—NÞñp“ïtx¾ïâvÌ)þMñ"ieÊ&Îz+'žìÚaýŽ„Gs¸ì”ÎqEætó“);;kßz[}7sÏm£KZF—´½Wp¶àÚºsO–EOm½`ÀBýå¶;;öņ Kñùº=b«É¡Ÿÿ°“уâyÙðw“³œSÌ o~ÖºûÊçc2ì3=F–ª´»k‰³núæ¹:Î}Gï}<Êqv“öœ¤F+Œ—§¶ñËÔºßÒ}þ,|æ¤Ça[·0ƒgG; =™fgº\ŒP^œo~ò¸nŽ¿bò-eÆ›±ø­Û†“YícÞ¿ {sÅ®C¼}¶]@Gåí¦%íÆ¸´¸ujÔ²õ§x½c·‡mr6þvìÉlñ›Õô®«wø?wåêÝ&ÞŶ—ßì»äü!—; çD’ØÜþÔ4|7Þn;ðâ®3ͦ?>Ò2zb¾N÷bï½Ø¸™}"J£_î^Ô~©Aœ¾ñôELƒ~›ï÷:ïjí¼ãŠë³Í;Ÿ&XÛ6‰ôlÒܳ!ì¢èÒ³o%³,g¯™«íºàÃB—»íŸÒ¯Næ†JRšxîû\Ä>³4wþÓ1SÏøÇݳkÜèù.ÿ+¡Ÿùíåo]¸7£ßøµ=ãX}™}W Ÿ ES<ò–¶„Î ÙÐØÐåkÜŒ¬žžo0t’O9£_°ç¦Á¬ÐˆÂ)…-Né¼Þº!öÝCC-öô[ewíe úŸ-ON<³td‚ñ@./õÍÓ™S »AOOn=¨#fãkÞ1ØsVûÜe]¿¼êÅsîÄmÓœ¹C˜wkú€)‹¯?&˜ÉÆ®¥å×e´ùòÂÜòø#Wdß}^â¸rÿÞA¬6ñ»Nè4Ð=d³ÿ÷ÂFƒ"ç»Ú§ÑJ‡Ù^iž¡£ïê£ýOøå7Ûø`hî’ß³‡kÒ¾únor¬Á¦ËŒÔ4Z¶÷á#̨õKí¿ö“Oîé•¿15ºÅ„&嫼wÝwö;÷Ü}‘xÚÈÝ.áî<¤Ã¢c3H »ô¿ß©Û“Ä£ÏÖ,:°oáÿ6šhé~gÅVìHúˆi[·¿Ä&™JÇÝ}~q;Ã6æí Ý[fîÑ]IÌó~.Ë{;wcY`cvë²)·ÏÒîvy [;èÕÕ݃†ÌÙ¥’ÎÃîÁF":¬g›:³LËÓ Ñ”ƒ1³WÓ#!­$câA7í):<øÄV›g‰¢Míf|Ý›`û’«Xšäì2̈½ú$}=z:ÉT˜¢ß£mÚq“AÓŸöwôÙÚz&âÑp@Hzï#EX‹¶4§÷I]G¥{]–Æ?>¹}ïþ'ÅsK >&J wín7©Q#ÿ YHïEY)Ç:¶Ùý´`¥üq¦bcÿh¯ VÇÊþجÊC'g×£éz+ñÄ~aÇ;¸ùdfé ¸ó4üV\fBÏQë¢'Íjq",§,d7¡|H3S»y÷'äÏ\ÞÃÎð +±åºÇç}ÚÅ7…éʼn’ž{ ¦±z–2rÒÇyñ/Í]â] Ëí´E B&Oê½Ùï\©²ÜÔëjB ?gÛæ¸÷yŠ1zoéF/$‰ë²’/º` (Ž #É£}UÌøÜ¿µÏ8¼îúùáî³VÞoþ2´ÝÒ'ýNÄzøÜ1s¸&¶²ìÓ1`Ù|F“%!>þø×íÚñ%Ý?’ußXäÝ3wÂLÏ9HY«ìÞ{Þ(h»ïS´õî•-÷ZÏ:w0¡_D„Óì ÌNÍ5šy ×ß1qõ‹DüŒ >ntx´‚b™×È£ÀÏÿ9ã³íÂE„k›…‰VM»ðü}»_؃/Íß6üÜaiŒìÃjº°%c±÷«e.9Ns ædlÛ>WÄf¼XÒô¦óËí,tÕ!cÛ!ÏSŠý“O@®;Ö º¡5W±1~ÊÖ쌡¡)ýNò£S.ËŽN~9¡Ë·ºÞÍø(Y;ôrƒðAÛ>ø>’Æ b®x!“úŸ[ðâé­†/Ü¢©®Å»’˜ã·¦$Þìß¡±É‡…xÔ¤Ö7úvü*;Ü6ºC;ñ±®kÀ~ ¸÷ÅÙë‰S<¶A&÷éßrgÜ£3Wš>±H8#kÖpg«ÝÝæ¬kßû•ÕØµÇÁOOæî9¬zøe|îܽ_Ö9f9»•”Ü#¶$ÑçÂó¹ÇoúõŸ°ê¬í ã­tKûÏN ÛØäEcÿeN¥kD's`Zƒ)yEE}7öQL½çÕÇQ왵ßoãZê Ùî6´‚k½75¥UGÖ-ÜL˜uÞ:ÝÝõøíÑ n_c…þÂvÒGâ=ÞÌÊ4N´rNþƒ»Ê(­$ºg½ Oó[ôà–Ãíe»z½{´8>vójÓ95#‰æ•^xÖ¿íVa\Tèë¹F=vðÒÅÙÌoê¿Ò¦+Æ–åÞ²=iÕèèóŒÜM ‚WnoDÛ ]«©¾WÖ÷Û[³yƒ]7c‡¨ìǹ³J;¶ÖºÓµiûu jÝ?{šáöfkêY®y^f'dÈ¢õ;¤+Î8¯>‡èÓŠv6Óùë=S\Ý|ûúÃ7Ç!åÍûñ¯Ù½@|mAÛhmYêM2ÂfZ}8=.¯UÀæ¥>YDñ¦£;i×­šv${¦Õvý+¬Z&Ó±XLe´’¶bËÖýSû½eùmYµmë•“\²ÓšE6—Õ„àIñÝ›c.ͺø.0ºëõ¼V{ÅfiÓr÷ÓŸÿÕ¾ ü´hÛF›Ô4@ûfùD[9>{l9.ëÑüàÏÓÂ×{Ðʼ ck š±ÐZj®»Qï[=y¤òU$=‚»ùÆÀ¤È¡S×v,/’~>»ôF“nº=WÍKZ¾tåмÃvKßdö ö¸mgwÉhiFÏPùT‹Sn69y—üþ96¢k/mRBî®ÉyÊéá>ÆéÖ¾ŒqìÖ©²wY´™³}ò³!%—Î|ôÏȺwÕp$;~ùëEMi‡x¼yëèߨ9Õ?Ïóò™ŠFsóÜ.[»‹–ÆD]_ÞèýÃ@7·¹M†—¼óÌ?j¡±K¼ÛÈQ /:˜f&Îh¡»ȸ+6Ãáð‡‡ÏZÄ^éTR:´” x¸tGÑÅ´…y&S¯vìŸ7#Õî¨÷ëļ«]Äžzo>~lz¼Ç6IÉ¢lÆ­‘™Ï¯¬í¼Î¦tNá°7O’.DѦÜ®Ñw¬½¹&tà o¯#/Ëom¾rCP€ž–—œÊDRV¶ç»x7ô7çŸ[6ÅzÝ™×b\‡[vïs`î‘þO#–éÒ.®åÿ-Ü7ÜÉzàãBžôÖ³9ÌÙ²õYwVß6ô;^¾Ö5§§bVWü\lŠôÖÞ¢w³§\ðäÆÂ­J­Ó'N§ßB͈ÖÓ_`; %c—¾ÈI ’zt|{Ó úcÆ™‰¶ó8µòÃÍ Ùñb»±MVw»´×2è oŠð 5çí¡÷~îw}}ÜïáùµïrÅÙÇ-Œ\üF•x±ÏwÂô¯ï¼µ~yéæèø“[óñ¼ÖiWBø:¿…=ŸŒ½AÃ$¢>)åçάFRÇ-îl9uƒÕY[†»î2ÌÆ8îÊG囬Ö[KÊÉËúÝ^7f­6mK!Ïq•ößГV´åZÎ_ÿCGN)/&,9›ýÊsÝž‚³‰;¹½R_lJÐ2´Àv[·¾ ç­Ewf”´»ð$/Ý}1Õrë‹km§TtßÇÞ>µØåÔÄñ’E…O¦ÂÜ,ÏîM¼¼’ƒ†.4à%ŠqÉâKÁ Öu|³©dùÓc¾[GéÒģتت¾ngÜ€òSÁ†[½zzÈÌxÉ{ߤ™Ç+/foòYfÐôxÍÆ­lå»—ÏعèÁò·ÙOGìÜ›Àh@+c7]œZÉ%‹6ngû2¬æ 8{ÎÚòô¹7ÆEÀ§ KVï-8­Ü?}oYàçµãºð͵h¯·ô_Õá[å¿}û¬‰q}^?krF}ýìq™rùË„ÕcîîÇ¿´3²Ï‹xŽ£6íÒͦë=ŒKM_ø³ìwLí¤Sû¾›u*¦àIJ¼¢²Äü¢Ä¼Œ·e‰³òËŽ¥å%ç%ž.û´«,5aa^F~Yâ§²‹E¾_uCÏhÃh»™©ƒ-Ìß½Íñ›}lkT›.e¾%C¯Œ)*_lÔú¶k›…bUC5Žy³ò‹òË2Žæ•åϸŸŸ¿0ÚÔçRÙýYÇR‹Êò2@ó‰Ç:鮟Ë;i«—ô…!Ù{NqïÉäf{•´ŸÓt¾5tLE. ³ЛœHfk÷9ž=uùÖö˜>gv›Hó_Ó!xµÎ·aÈóH°Íé{F»¹kú«¤ã¯bÊ»¾J'zÎ/úTÆ °z×ÅŒŒÓ ÷ÑóZ3üTá4¦YÖŒ«= ú¿þ°:{ÐÃùÑÍh­ŒMS›V7oÛ¾æø´npÜ-lÉå¯kÇ4[ ßèèäkö¨-¾nݱ{^!"ZCzÒþ„'éÇ Ò~VŒú,þ°gÌ´.×\‚?¤ì¹AG,mw÷p`pÌý¶¦¥N¾û3íJIØßÓúo_ïÔztÉ?+ýë\#ù˫؂ðËÎ| W0âKžõ7â5O°9§}ê*Ê×Ú`â9&öj®Uðà ow™»‡wP=”ëmO3۽υìñƳܴa½¿.jõùÝ•›Ún~4üegÚ¹xäÂZÝê´ìSzý]áÍÆqas]¥áÖpöØù].£éµb+Z^ò™Ù~äÆ+á_Úæ> {üA{ÁÞÃ’þg uT®GëQE—ú 9W×~z½k÷õãå—GÓ^[ýØíé¶¹¾>ÁqV·_Ïvn¤ç~+¢ÊHíö+æ}ù@¹çmæNÎç 97îìê<}bѧ‹©øª‚WOl7&'{ëQPð¬èÓÈÝóŒ%ÝUIÞÞm¶ ¤í?ò~{µ8vGகŠÃQ´#—S?vûÔõÐÞõñïLî:uŠÁ£Ó–;»,«õ”ÂÁùm…Y![ߟi­°Z¶u™íÙónœîÑÉÖÀßµÒjNkí¤½ˆ¬M€ÐBÔ?4 éZhåfêG'#³©ý:’ ŸŽ^<¨hOï¢s¸Ù¼v)ÏE;,—·~rÛcm—i’8ÜìE>ÆÎ|ï¼Í;‘€Œ7/6¸½v9ú‡´Ôhrâ,b¯Ñã³ô‰Ð~ûÁ½‹<—7½@÷n9¾ÛÎrCìs¶SŸ M÷_.»Ûöä¥Åû–u;ºoàà¯AúÛxžO̱ŽNöy³lÕ:QȈbQê¼e‰CRÍ[röo¬ÏÙ”£ÊÕs¯¦ÈÖÏ)ü(«KÓ jöj¿atr±ÁKÅ£‰E¢#î¼{¡ßàâ§žyG˜|8=HÛ»{×-Í»žóIפòºqÒþtƒã ûcéëèû’è½uuÒ§êú÷žêßm½@wª®nüY{­žñϺ®ÌÚòìê!Âc‚e‘{µ¦÷0™Ù¾Ý¾)=—¾ºxó€cÏ^‹•}‚úèNý¹p\‹!½šê½ÔõùÜ¡—Ÿ?–®\)<—âøõë×샅F«tO$BÙ#t§ó/ŽïÔx@Û“óf Û9gŒn§iƒ³¾òKºß?½dÝyÆÌ1ý˜k¿,m[p覉ãƒiS®Ü›¼o½¾=¼ y3z$sÍÂömWÒÎŒx©|§òháù†´-!þú>ÑÉÏ}û‡¶ôjïö‡¤[]ס§Ì††èë/صÝð@ÄëÕn!Î}½óE«õ½1¤×ÂUÓfwH˜ Ñ›hÿ2t²•¿y$¼oÙŸ4ƒ}±wŽxym™ÿ¹™ß¾PÑ´ôДö¾ÞuA³{ê½Â/æ4ˆ*éö±óð>Î(tz—Ÿ[4fHºíÊÍ3Ö_ËN·ô0~µ-ºwz ^Bs·e†¦w ZÌì}l|«Åi™[ž ûdSð:Ÿ³ÍxzF:{iš¢‡œ±~À½æYáÛŒãM™¿þ$iÞî=·î˜dØ(gÀ"ï‘;ÏûØØÒqäñLjÁÑUfý–7^è½Ó-Ozå™_¿K¸ŽíÆãIþ#vn·s×¾µ#wâõnÊŽ«BG(=ž¸Z+\ë9íy¿Ãi´ËmÞë=“Ñ7>dNªÄd¦i®ÉrW±qˆ^±^÷‰z6n0]×ĕۜá’%Å:~í8ùÚ V[ÒOµÞ{àL›I­ ó¾[ÛÏ›ði×˃™Šë+ºdÆŸ-ûuߎ×GKÜÇ]zó *èöê”ìTŽ‘}Êó>AãF]Ý;?*`åÌÅ‹&mxð뱕øíέ?Eo-Ž˜¥3më©Fxù…Ë'!ìv{}ôx±('a»=ßÿyǧ=CGz·Ëé<îMäË…+¢w½›,ÞpÚc^?«%cº¤d¿ofµÜ2!Æ©þôI,CÝóÀ*Þ·íxŠÍtYâ"Iƒ‰.9ýX·²L²lìÂ’˜ô0Ä{eÓTúçÒòTÛ‚ëE·öl¹šŠè÷~ù9»x©Eò~©ƒÃZ’O©çK$þÍziï™."×jåãfýÎA»2À Ýúôaýñ,óqëËZ*›5›hϱjݼOV7Ç<Ú;óꓡݹÏsÇzº5íÒÝ ²]¼òýôŠK'¾fmIk—axTþæÞ¶ã|`tòxåš6¤ål§2K ô%_Z§¶ EµÀ`º¯‡¨LÃÀ•Ë$§,ï’œ2È{aÊ‚CÓ-<ö‘¥gÚÁSû,Y©äÖF*jLk—×ZþLË9:ÙÃs%d¾c…cð²3O|?mªäEäߎ··<2u¾1m»¾Á`Üã-Ѧ­5ø‰9Õ³—AæEQVÂóŸ\ë²{Vß¶vøúgt¾÷¬þ~}úõ˜æš«Õòè¡#nkl{&>oc·C§dÔ‹æ\†ØèDªur°•]Å´^qòü¡>_}>ÉÆú˜®ŸÚUa‰Éçð¶ Ó#z¹¥è2qÅ(Ç€¬ÌaŒæ·î8$Ÿ;zãÁQ»ƒùÛÎï™c3(qþ~–õ®K3úìÛ¿lîmyß²ØXû‡²Ý.=x~Y4!çf'cñÝ1ÂÎ[·Š7–?“ŽjMküz×ÈÖ_ƒ03ƒÅí¯ÀÝÌÓ¬š.rŒm¼n½(MÔ§°húý99ú.=z]w ÞîÙ²`Å\÷ÀžÝΟx÷ ï:`ç«tS3Ç÷{æ¦Ï™è0¶ÓŽ%ççÎ8$x<+¡_»q©³¶Çgð¦¼yÁ7f Œš6 >j¤{ÔÁæ<;û„…ôÂÆm_¥µÂÖ¬@ÜG=×kéÎ^+^DmÐeöé½é;›ëD~:,4~z÷žâlJrpYðËA&©‘+v\j!¾?z÷Ã÷ö£K]߈KyÓîšmÁÕ@3¤ë®>ÍÇIïPVÒÓ¥±û:=G>Ž1ìXz2ö“í¨½¯‚{áÊ»W†Éo™iskv¿ðÁ­Ö—ö2c{7ð¹—Ý ¡³],¾ÈmŽ]ž~Øëòíáú¯b}"c¿>k,ýd¿ÓVqºì󭸝ޣcž=&"vlH³ïºõÙ‡Ëw.÷šúáÔÏ¡/t§ ŽN^~âj®éºM† xÜDsI Ç¤?  “bÒ3†wl {´Yûðá’µ'–˜/6 NkóJnIÓZÊ)·Ùy÷òë¯WÂßyû~‹+,JZ†N]ÕÍe”×H7‰×J'7¯'÷Ù{thY Ì¢Š´ƒŸñ üP¦×³†œF¶K.l3àË©Mç¦ùñœ°ÁÖ¦ýðØœ„ý霄ãé °Áü´ šÛ<Б5÷ç8xåÆŽwÛ“Ÿ|ÿSa~N¯¼u1ÃétËt =)Æ2½54gâDçÀ‘1Û'nžh4ïb®› °ƒ^z OÆE&ÃÊýŒõ„?¬,NŸsïÏÔJ7ÏeéyÆãîƒ-iîË­6…LЧ(< (´³¦5ËÒº¯=8yÝ<µónÃcbDnòÞ#›“Ä.°eït<Ëf=´éLð…íµŠÒ›? Iï<ìÄ`¾±H4©­Ym×çZé,ճî÷#—mÜöÉÓ&cí b³—ÇŒ_Qç—îEEntø$EŸO[¨Þ'Ø/ÆÎàC.C‰íëñþZ›¾P†@üäHÖë€J{õ^ÐçûkOÞáN¼ðµÞ Y^qnÜF›—Ã'‚ nãÿãÁÈÛ·ÓøÞhzâ pŒ lU¤P9 ç£ 4(W«ór&ÄŸù}á›9-*ù»}ÀUQº¾êpäºÝÃgxJCšÃ{É%Ûý*iÙbÜám´][‘ æW«;I‘*%_”Kn¯—¨9Ï´”ÖoôÑpÕd©ÍW2ľÜ®h@¾ñ鑚¨ùáâþà @ÑGZWqJ(hÔ÷â©u¶×6>g¬†Å,AÔ/]¶]*S¿W¾R5ûЈ²ùª9š¥*Ï4&¤ÄøæÜˆ—‚§8F)#+”oé#µ´\)#Ý®dƒ3B¾ÈÒ¬4âû¥“ÿ·ÑH ?4Œð©ÛmXƒ,U6©Cï7‰#‡˜^£6;SòŸïh†¸w’xÔIpXpæ ݦmøíœÁ„ÁF"½MóðCÅnôÎ ´t©W6u±³¡˜“B:CçÛôWñ|Ú:½]E|}pŒ–¾¦¶¡¦¦çñ 8ÙådÖNyWÁ%Ó²ß97ˆ“ BU?ê’çzÕ˜ìœÓ´ÕÖfVƒÛ«a¬¾ËKE•Ê硺ªhæ < ž¾N¢ÌÈvñ€½RÙ½œV#sKéš"8yÆÔ˜e;‹w3ߨÅ9 ™æý Íý×ùÞ¿Ù#áÜ™ø*QTbŠ-vÔh” 5!Ú²ˆyÓÝR4:ëI«ÑŸ¼aAV{s§sëÉÓ¹]ÿdܧ(ˆíí·/?r¿QJ;˜Ë1¯&òOÕ5˜8;y—ö°_ÝÒF†€û{@wÝ=V >v/MÌ5û/öé—ζÿp-»>š,¥cG0’^̵Î ¹mK:íæq˜êbÆ}2‘ ÞŒÂñ‡ð{AæñÒÈÁ’C'ƒ†Ïöçcï ÿ0ǃKäéqÅ:¢Üm°´£ÉžV;ü{£¹9äA8…ä ‘?5­§¬b7M;VùÈÓõEè7›ð ¼Éª—@"ü‡—$‡ñ#H$!Æ!ó8ü•œ?†"@éÊ8TŽ ú7¨áPhC p‡@÷zG¸ô7èã¸ü¿À‡ÑŒ&ÿ‚«8Ìþ!æ8_ûiuëcØápþ¾GLJ#§c8wÚº®ãpÿnàð<Æák½¼‚s”MD<û¢öþ7qLpÛ‡o’½¾åæ}u.IŸÌßZ;'‘ÑF•°@Dc‹/Åú)x»¿«þ{\Ý€ˆw¶IȧʒqJù’«[¦‰'©þ®ÇKnæ·ñ×á¶åÜ;UÏmèŠZèT#X¼²7‹éÑS?®bå}²Më9•Ð!#»wãU®im28Ç4ù‹=3˜¸bû[ÿ¤ñI)qržºPbÉPµ§ç‘TõpÚÖ=æaãªdQGá9m[94†,©%ó|²–Ï–†l_ø"’,’ »(ÊR°¹$©'WÉô ô2´uʼý‹>/[ê~Iva2úEÔ €°,ÉJ“´ÇS¶Ž*û¯¦ «ÁSêl¯bdÈViØ«»ôI/ÕŸXt¶zæù E·¥mªõ?‰ð¼_ èÖR7öJñš;|6Êzy±"SF”vëk‡D¶h×Y'˜QnÍgÿ˜ŒÚý¹ñ›(9W?¡–“›LkQ+y=ÛÈäÀ>Ñ7TÂZR/ûQ•.Ž-LUÑ»’×âàéøƒ"¦­¢6¿i£ª¦¹‰-ÑÒ¨O xð^®¡¦!“ª!ùIÄ)VÌ…žÐç…‹º!†b)5\ƒ‘°ÓJ#TßiɆ˜F¯Öd¨zIËJ<ÍD¾úÐM ¦È¸Î5ï½­4–àI Ë­n—1Œ{·ÔçùK¥÷åË)OäøÅún£¡a®¾UÕ©/SÖB,^¦UÜdÒiE((¯Êu hÒ‰÷T]~®UÑcýuLPµú3aÆ6AQ›¤Œï£mÙ«ÑÅ6‹‚"¹' ”ɸ&B™5VvÝX]Z^åìÈr8cbk JÐ&þ!Ò¼¿¿>ÛÓÕf`¾2=§}K,8¯ö”–ÔhÃõ ,Ÿ8Ó£áÍÊå 4EÜÙÅ ÔÏaŒ–™žºÝvf¿á·Opô1¦*@Ô9gN–êñ Uì9P…e™œöþOK,Tô^™«4ËË·®ÔبIXL0ڥϱÁ>4 pÆGÆò¼^5 „îç·yw«’õ4ÖjÝfŸ”äÉ–¸aôÖÞxD"Ï0›úLÅÒRý˜˜Æ Cà=u£„1ÑN˜žp4¶ Š"ÍÚ2}Ñ'3Ù¡q‘Þú ©2ÝœŒãe‹2VüÀ`DCJëÃnçp â ”ég.ié´HqëkÝ]ßÏSZ¨¯5=(o›šð½Ór3Óö0ü!O &—.¯ûÕõ¹Ôã÷¯OÐÙÄx¹š¬D3øãϵ ƒÛO1f4CçV*`aþfQ–qpyªÖrfÎz=ç«fFwåÓÜ C—î‰=3„`?ßœ¢èžÂ6x-÷§U¦ü–)æ¬ÌÇ`Åì>²Ìp^šô¦õ©`ŒkÓ9ŒÝ9<š96?')Ò¢ÄÔOnÓ¤¦lT#CüC±'U=³@<´Tí#y6M^ܿܦ{Ø@è)ÖÃ{©FA£yK|é ™Š÷)ïð {w ~Z-ò:“Ä”>ØVäûÝ ÿÒʤ*Ò:õŽÅ–® o«Û”ÜÐYÆÌŠU³]+¤%Ÿ¨C1w ?–/Õâ»wõ懠ÀhÊãñ.äƒ&ÏלwmVK'¯é„Þú4¡Tâ¢þŽaDVùˆUITÚm5¤~BF.¨uÆéÂÉôH@0,ˆ}#è±…%»î)÷¡*sÄ·.Lùîa‡J&»ï%ëª{¼}{)­-x¼Ä ™Å„t-VµÔ®Ér=ÝYÁ¹|Q!$¨÷KìãDµ7fÝÉòD¦ð>Ôô¾hðEu›T[3Öë8Ø6òzJM.z‰sÇT„êgÏe9X’Ðéz4ý§Ê‹ ª•0.ð¯ËMs#ÚšžÏz†2ÕØè^ ‘Y6Nš½ v¹Ãº9ßk,qZ¢¼7˜yŒ“¨CfØaÕ9ÎÏ( ºQuV‰]æIGŠ\\¢!•qÚë¶ ñ÷…¿<Õ¤—7}6}Ïrž“¾6Ø~¾,õ-Uá¦*VË|*o0o&ä3õ7ÌÛ÷³Ãn ÙwåÛ¯Vßñ– ´ÅŒ$ë4È „3ŸqKñðqÍßLèŽÚE<(;Û1)ÈE¯z©÷ŒTgdñ.--:d™5X¸Öõ£2‹¾͇֞O»b?î‘+ŠÔRæËÚ¡{>xÀ‰Š(“—šnìöjŒª>7I™žœZ¤N-Šv1ᯰ/Z–Ù=7 û(š#ÂE”ì$Íö…Ý+e>2õª0ƒu!®)oñn²º)r>,S[tS9ú¹ß{9½¦¤äF29ݤ¦ÙŒ©´§ïT.Äð—úšŽ´bï^‰_…\lÞFåÚÑ?égýÔ]Õ~gj‰€n0”ëÖÛáHh>WJÚ]¬“ð4‹2²¿n+ùä%µ‘î÷å/ÂqèL÷Óº¯Y:¬ j6Þ9>“ðY2«½Ó0&´ŒÌ¢.ÓWÎh$” X •, W¸á)¢ÝýV5 sñÿm…ë[nµlÍØ›:qÂmJÖfE·6¯Æw7Í/à›yûDÒ¿”0“ß² gb{ðN-Æ:\§7_,ùÌÒ™-['%¦ðpÂoÌ?®H,Ù„Ñìå×Ýy¨û™6ü ‡Ã¬U‹RPZÂ>SjT(AÌ“‚YV÷¢òK·[×£MyÞ„âNÁ‚#×’$÷ÈdÎ3˜¶m;|Fâ…ç^®sr•漞 óò sÜÉ•åÖ«°Llï„b¶ÉÇ=Iu«Óíýcº!‚*Ø1{4ÅRÍcGÁÔ6k˜Ì¹ï*(Oµ ^Ã[É×ÜT2ÓãÔï$”9‚¾Tœ3ò%õ÷ÃÞJ ýn½ÍiëVü<Æ*“haòvÖMŽ `NŸ(ÊÌ]·|TZ§É•khîaš|õ³R\‰‚VÝö’µˆÄ.\¼†QA|ÎÂRAО Q Ñu„mךžgrÈðÕWàïo¾ÉÍtéÀW—-/dXHªü­“PâÀ§Oy½E`ñŽ'Þ„{¹Ïö ÐDeG5› ¬æa{n%lÏ8Ñ¥¹eŽ4"uæ÷¯·˜ ô7Çó_ȺÅ› «‰mØ?$ôM9ΠéÄù÷jv”Þ—êK\® ]ÙyïâŒ7jå\`úyªÕSk¶æaªè÷“såÃ*­ëõ%å÷E‘Å96Ò>«ù "Àðºd-y"¶©ÄQOy/¡_ø{Îe]÷ð›î\‰²÷Îæ<ñÎÈå=Ž Í@odH§o Þj‰ì#Zž’&å°Ú‘zSÞÈ9´ ¬€ƒ ƒõ/=;ëº ÖãÂ; ¸"ÃÐÊ»@uq7:mâ“AÜ*PÃû?|UÀ¨c8ÐSàšäXî+ÐRM Œ³ LPXO €ºXåA:/ Ö÷B ëc§ ¨è   Y,r”sø$1 ¨ªÐAŸ¬ëÁúŸ8´ú6h#HOŸ Tõ#ÐrÐjàÀàÀ·¸Ÿ…nmu²€<°„¸ X÷³G€úߑׅR‚ºA[A{Oš?Ú ´I8 hìkÐ.P18æã"|†ôw”»ŽÓ°¢A06Ð]ÿ"È–”;Ê*ãô ´}Ô |›¾ä¹Æ|æ ýâ˜cú$XÊ>ôû§ Œ2ú}rô%üãÍvØfP 5ˆ;¬xð èsè+Hü³gç…¶U;¢µrF_ yåsÇ<1sçïWø~…_áWøYø/«w7ÿXredmine-6.0.5/test/fixtures/repositories/git_utf8_repository.tar.gz000066400000000000000000000150761500112024600257030ustar00rootroot00000000000000‹‘¥•^ì=iwÛF’~ûMøˆkŠ ^"eK‘<²œL¼ãqò|lÞ>Ÿ Ð$ƒŒC²{~ûÖÑ € ­#VlO†|–ÝÕÕuuUu5dw¦~ö*Ï&·^%2ŽR?‹’³Îkýtá³»;¤ßð©ÿ¦ëÞ`´3ôûƒþèF·7ØönˆáÏðÉÓÌI„¸‘DQv^»‹žÿ›~ì•ü÷ÃIÔù‚üßÙíî¬ùÿ…ù/ß¹AîÉëáÿh´óQþF%ÿ»ýðÔGýï®ùÿ§6ð_©5ñ™ ËŠ²™LðB±ßš$ÑüÀ†V RalŠ~=²™“ ¤a&Nýl&š›Má$R¸Ñ|.Ã,µ¡åQ"'ѯÒÍÄà¯í­¶µý_ÔÿY½I;שÿW´ÿ]Ôÿµýÿ²üÏcÏɤ:ó8ÿw»ƒAÿ»ÃÑ:ÿÿyâÿo:c?ì¤3cÓØG¡ïˆÝE@°ß>ÿ8ˆÜ7©ÈC' £ Ä™3…!‰æB†°føásýÇN€ƒñ™0qg!‘®ôO¤…Y“wœdšÓÖ-<L¤3§gEÇ¡<%lžDÙ’ƒĨ ]Tø¡Ã@ÎdI5mêv… }à‚ÄÙvp—¡2x Ä„3Ž¢@:!n7¤ât&q dyª§~ÐÞ›~CCS‚S …„¸{&<9qò€6'ÎÄ)Ntµqñd 3 °/À„ÚáöÈGÐø$$æ‘çOÎ.FÂÁÑÅÜ9ñ©“ƒ;à¼pé`thW%p çÎãŒËN_G%×HO†g„ýåPIä<Êdp¦f¼ '€è+Ùb´ÎA †j(¼,´ Áó¹z"ðCi(90=ÓIä \÷MÔ„¯¦îøØ™È °›I÷áOÄ3aý&ÌÆßï?yuïþ#S¼ØGŒBcCº3P›{D$¥í¤Òˆ¸[AÃ6Åá;î(¶*ûmmºrië.ÍãÈ£¤ÁþbgÑèŠï`Z‡â;ž\ðd[ºå;ž1ñÊ4%LaE|ƒ{—ßÈÒ4óԙʽsF]Tó,IÝp4¶Ð´¹ô¢¨|ÄÆ´Œ%i¿¨wµm˨ è9½ëMÆå½ÜÀÐPu,,ÃE‹†-$ Ÿ˜D‰#QIjÿoÄôÖ’¢Ù{Û,%´šx4[†ë¤V:š T†¹œ´2·Å{aBÅòíímñ³Úo®Àäcæ¤l$©÷"÷7ö÷ ™:n!4ì,–)ÜaTR†š‹Þ‹mÛø« ¶® ºLJãÓ’Éô„[ t¶ñ›L¢³{ÉÉb_Šô\#ˆŠpó£WˆÚeÈ •‹뜌6ø…•iü[$çŠÂZ³Úz@êLÄæ?\y:ÛmžPycÖGka„›é,J²WÚ`5~WW››%ŒÐLM­®+¦øf™%¹¬Lr£ÂÐ'`“ꣶEcaÔ6òž/® p¯"+Ìï*ä§@…& ×8°6H“•ŠM’cZv«Õ ±3E߸„¥¤g¨º2´@7fÓM‰S¬JŠBÿ.$Ä=½"ò¢|…Ÿ‹%i0¢XçkËBÙ°7o v÷NÀÕK€œZ¦Ä¡­>é„9¬ýÛ8ú ÖÂ4šºK¦vÌ;gÔO³Ô^Á±W Á…¬âüÇ¢Œ+§  €^pJmQ1uËK Îáß±ö5§³Pc¿BÒê“XZe®"o×…/{Ruzg „ ¥[µºÃ*eZêws­Aý¤Io3¾Gáôh©Á‹Âú)™À"Q½ÛVŒ7´àîý{F§!-H"šŽ|Ð(•J¥ƒ'ÔbÑœ3vrµ•î?ôÓø®Ô »Îþ§çÿââö<}jè‚üØÝYÌÿô»ÝÁºþã3çÎMÿœÈ–[ˆƒŒBÖq”sZH ”ˆ^E-óàð‰©R`QÀíæàý Š‹Ñ¢cíh–§m1ÎÑ%«b ± ºé  s²­¢±JUb ÌshẬ€¢¹&8:8W@8»¤sJ8!—q'0‹%©àÍ€A…)¤{Ô­Ñc)j#[Ψq:ó]î!ܱD^bv¢ÑÇ®O=¸¸-´†yâF?›!Áó”&ý𸳖’"©VÌU¾Í€§z?²Î)E£Y§Â{¢a‚5»Œ 1¢hžÒ<)%`µŠv‡ž“à*<•êÀa˜LB|D@UÁ7_cvïƒpBœŸh)ÀG%_ØâÀÝè™tÊ^·<Áz_¢оÄWP>ˆ¦b.S ÷¹$C6â©ùËýŸM±u%oWpà§ 4lÙ†Ápz%Oέ¿ít.¬Æý4EÓR81Ç4cŒJÔLPqŒnªK¸kx‘¡Ý•¢)z ÀA¼0´·¼)~’Rù<°R°§»–«} W{S<”§Ê‘i“–?Ñ•ÑdÄFðtŠ”(Ñ@w‡O _ƒüòÒ3*‚»± `‰œm/BÇ aYà”øâൎ-WX¡@%Æ¢ùÚc†2_k‚@³Á½ÍB°_õC”‡^e(ŠFÁ²6ùyJûÌ%‡~HKÿ ŽÒ¹ë”fÖ5l]´ÿׇgµõ¸³^ÿ¿ªý0¾1.ŽàÚàJÔCZ‹."ðˆ—ÏÇ;…i%täJ{9©3mÔ1éRjoY©L` O(¬#”?ÝÿGž[l"­y:ýcfàýïêõ?ð«×]ëÿרÿ¥ãXõ¶Vlüêµ·p©ÃŠËÌÊŽÁzø¼w§ *ˆmå‚3DìSMã+0ÊMØÔšà8FyâJ[P²ç÷â<‰ÑGÆlK¤«[—{V:ÀP˜8~ð±è¢­\aíAPX”dE|qy‹·¤ghø"”Ž¿!©)5R5͉Ÿ¤YqàN(ÿ˜¸øn–î™Èàa:˜Ç\&S¶Ž…Àa–nzÕ¡$‚BïzO=2Ç §`©ËJLÜQ[á%÷~½Òá> þÜÇT`‘ÔH6Å{,"À³®ƒk ŽIÚ§q£X2 , Fa½¡ï)„8”±ÒÒ“–ÓCt¢¥Ùñ<ÜœyìOCéYÑdbTaH#ꈓTº†œàâªP D†bÏ'jË6vgú”¢ïIÇ.öRúíÆ€vNºÝ‚+!:yšªÅ2 „åÛcç x©R4ÓÎËΦè´\lŠÍÎf·™:/ æu„m ¸½Z”Fo·gŠý}”‘öûL ae„q6?:P°IáC@„ù<4…-^Wøê:.~u¿667#ÀìæMÑ yûö[qp ºd„Øn‰JNññOwÕöÓ XXÜá;zúäÇŸ½ºïû‡OÄ{A[€!àù–½}ø¼eo7: <ÚÏ{¸‰S#wßz› óe@›<ðû÷‚=z¾wxH·×žÁuåÿÜÏÌý„,àEþÿ¨7ª­ÿ½þ`½þUëÿ9 @6½\PVµ”®$q¦5‡u´â,(Íc̨r„bi²êõ$žJ ¦iNÙ/´Ì0FÃt„^½ÁB!—À ;GqeyþkrEöq=¶1 ±ÒD Y™ÄLÄ»JíB©4Ú÷¹yË ~9¯Qã÷Þ·fãoæcÏøúô?‘cXÖ>mà|ýïõ†KþC‚µþvý?Žâ³ÄŸÎ2±å¶DLsÿ¿%þ'ýH‹¹F…›¥ˆ˜E.ëɪåFœ–ßtG¸þ5·Ö™×U$y«õgdFjHGª ÈtZ`ÔìEͼüä>¶Éã4K¤Ã…p)?,ñƒXf„ÙDÉ.RúØFís gë‰-ðTÁ=ËÐpb%Þ¦BNœ]ž$8SU¬e_.ù VÍw˪CòV)/ÃÍ€ÓéaŸf(ß·¨0#*Ne–Ulþ¶£IB¿‡#‘)Ö)úÄuaFœÚ,€04Ô½Õ@ðªb2°Îd1ÍÆ&æ§ûçci:f¥„³ïœrægä ¦góq¾0žSx8é58~ªd«+öaˆ#ÊÚúX‹œäqV"íÉŒ=[ìY-{¢ÈW¯ pçN7ëÁ‘Å_çÁ/K±ŠÆÃN%1â‚@ *ÖTx·((Ð ¢Z\± Ôâ#8¥¸¢ýôÞÝdžðýŽq/Rƒžª–¹cÁ@lˆXÖÛržà+ÿ® äoö…ùT>#Õ¬¨„û€#ÝOÕt¼"\ŒåòÊ_ñ×z¢Þ±Í²³ƒ(”l½äfJ¯ ¹àúÍ*,Ó¨Ôp¾Ü 5z52û@T|= m®œ ±ìb6Šƒ\¥JÂyÓ‘+0¨¸CÄ`—ÀWàÐbî zIe4ð;”'H#ª S. ÊÆX–r‡^Gg¯°Ã«^8-^jþ4~W*ôƒ£(É^Wº÷?Ò½ü¬è^j]._ª@Ö”Vä¯è]1Z‰$û𶬖8§%Hm¶¬b¶ yle‘EJ¤šéˆaz—JíÈઅdÄp¢ g…€¥€nÔj ¤76ægJ]p¯íèÑßÿ÷Y÷žº?O§HámÝ‚ö½Õ^¥ž})L4¤¶ {”+0[ÿ]A½çNŒê»±Ñy¹õ¬kÝv¬É‹o[¢ƒí7¶`å:8½~û Ò8ð³­Îó°ÓVèõ^Ð#LÕ#Ž2s±U€¬Á„`¼Õ`ÀÏr£Oó[ »ÿ¢Õb8 [ßpÑžhTðÿ´JTSj‹´Òß78/ñøÉ½ï="*2yèaiSqヱÔÚz€Þ EBj?ÍÒþ™U”Ìe{S-W‚dl~âÇ0ªK:<ÎDNs'ñÒ•«ùÌ9‘\ôP.²´vëã÷.m ªîÈuÃð‹”jì†Ø?…®¬¯;èÀ¨c;¦šx»¸"¥Bk‡)+%£”Ûb8S<-éó¡ ?‘.¾Æ Êõ7ÜOÿȸ…ÕvXRŽ]u„ƒÏ@{ÞèV5hgCÉ:3Î}0 åŠÉõÖn” Ø_:Ià£ÍItÞÈ´Ù[yº„mRŠéB µÕu¢Y#WI¢±Ñ'"„ÒÅ(49#¥f0Ç‘ñBÂrÈŠo¤Œq&‰v›Dê£`0Ù~«IKMu®dcÈJ¸·;ÃÝnŠsiJ8¢–¢¶Êïòkш´,ïÜ@ Göm%TN÷·AþÏtX«h†‘²Áa?Ce‹ÌüjœøNÀ òÊáò™<¡˜E ¬NÌ%ÎÅOÁ›6~a i±æ£%ìêâk¬ñÞ굄mÛö×$ í-‘‘ üKKË ÿhJIÙšþaBê—B„ï{…øT°HêìÒù <ÖqŽ"ГÃ*=ª*5û2¤ÞUÙ'7r Ì:ƒØ€léXBQgg2IGÎq×XF1í]ÜÅl=js¤° BDE,ЉXF­þyT%‚Ö}¯B7ðŒsè<LBUçú˜êÿ'’„ü78k×<'ê½B±!¼ªÎ‘N éUTÍ€¹A*¡‰žÈ€ëףЛ 3 l˜Œ(ju/m!øt~ÅÜLò„†W*×V”Už¦Ge -pfNœ–!gŠ&TžðâªYqÊŠåMMIJãÄã$®Ž:*¦4t f OdYÖ…?Jè©GGù‰ŠÏ¸p­ð†=ñg,ŽV6êÔî­hS¹‹?.@+~ÄÝå–ÊOùy¾Ô°ÚnL(/´Tí:€ìÕ/CÀ’ÚK0Œ£6L5ü˜¢¼E#¦üˆôÿóï£ÿÅ}˜Ó_{åYrãËÓ5U\ŽWØ ª×¾J¬¸Ò^•ä‹ãϲõŠÿ§Õ?jdÀÅ?ì×^X¼nSe×a¶ f^N@Œ®TÇûSÊÄ Šít±|A½" ûÎ1uÔT uHÉún]*¥¥ÕUy}/ßEF/S S³\ Á[êi !UÑŽQ QÀ<òÐ !ˆž‘ÍÎËgbãÅvÿïxÍÖRmͽóñ(Kl¾NÿÓ×õØ«ÿý·á¾ÿýþ×/Íÿëù;€Wçÿh€ïÿXóÿ«à?øM?•ÿç¾ÿ}4ªñw0¬ý¿Ïñù™ÿþÏp"îÎГýÝ^ד#·?wÜÉx0y^ïö¸?ð&ÃþØÆÖÆ:ó¢ÿÈí/cÿûë¿ÿñµðÿêbÿwv>nÿ‡;»‹üïz½õßú<öÿèøðë¿þ@Ì<‰»bÎÔÓ»y0\¸#¯x÷æAyE­F¶ zéN‰ÑFçXtwõ4¼ÈÈŒû^%Ìh¿¸û dûÉIé—46«”\œÖÕ™v8§©+;>«ù´ƒ{÷³¿Uv Z[O<<-—ñz­óÛ/Ìl.GMŸG¿ÿän9¿Ì×ë̦׷n^>cy¹î覣޹ÒíJ ­¹fqrÿœ"†k[xº×€Êþƒ@< ˆy°U„^Çý«rß>`brªp{ñwýü·%¿·öÂ[ýÞK5;H¿ÿËÄ|tüwÀã|+ÀÀÄ¿©™Éhÿ ã²žÎñÿ177ÿ‹Èâ@j–ÿxïÿöhùßÐÈd´ÿGœ_” ºcù£ÂËR‹ŠA'-ÚBvÓç¤ææ§¤y µ¡\œI õŸPÎhjŒ‚Q0 FÁ(£`Œ‚Q0 FÁ(£`0&åÕ¹ redmine-6.0.5/test/fixtures/repositories/mercurial_repository.hg000066400000000000000000000302321500112024600253150ustar00rootroot00000000000000HG20Compression=BZBZh91AY&SY]hu ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà02ŸG¥òUíd.Ýo_@v>—x667€û`nÀ è€ |>õTjYÛmža>÷==Èî=x ´6ÔÖ´úè*½u¤¼¨E£èÂ*Bd`DÍ2i '¡2i‰´20&d`2i§¡00Ð&‰â4m “L&@dÁžšb {jza44FF†šPhM¦¦†IµOjzŸ¨˜IêoSÕ=56‘ä0šhz¦F˜ƒ@ÓFÔÄÓÔ44=F†€ 4CC@4†š2€ÓM4%B@"žôÔÙ&š4hÈÑ 4È@d Fššh 4Р44 ˆ‰ÐŒ©æ¥=¡¦R=ª='åG¨xCSÒ ¨ôCÊoTÓi ƒAê=C! zš¨€hP‡¤ 1é"”@˜¤oE<‰¦§£Ú†©£Äô5M²OSÑ&™ê›OBi©§¨= ODdÍ&ž¦ÒoD›Tôj=CAé<¦Ôi¦ÓS Í50dÑ=O)POI Æ“4jyLÑ’E$ ¦L&ÐjdbSÛJ™?&£Õ6˜4öŠ{DÂ=)äÓQúòG‘2i¦CM”zOSÔzšiêfõ<¦'¤õõPÓÔ Ð4='¤<  PФdP§À¥>Ú7Ýíœú©0¦L‡â­~IC¥½Óm»\VYqî+=挫kÚ˜š†=4®O3Mµ¹ëia©¨þ¯?U©î¾—]#o•©ãw)YÚ”Å>©7 ›ªtzÐï•è„çZv‹ºÛÚ`£×ø•|Ö×±èLLž}³‘µÊä÷û: 6«áµØ¶@ÖSPÀ ¯«åùçÐÓn4›yØ–8Šk}âÎÇk“ŠÃ]Ï´ÆTE޶9'>ê:Qp»-îb¡Åß®îñÙΚ–®æ8'²}Þõ{f¡«»·{uÿe.“/˜HƒOÁé©åÕQ,2@9qó|‰4òó;Y •úÏ{ñçì¸òì9GeÃçpY³h†tÁ >…µÄÞ[OϺf3?Œ¸¤èôX–H"1®h©zÌ<êff`ÄØhùØE=Ôwúp†l`¢‚ëwç¤9-ÿØjWîþ¥a(¹lçÙÜ߀°†c ¯à:8ªt(Œh:'!Ò×0– 0ç…S'UC‹Ú@mØY棶µœÕæ,±ó.7±¾ï]w3Ðr™k´WŒ·±°ƒ3PêqæŠ1oK::éªÉÓRjCÈ[Ç1[hKH–.”æTÁSÓØ/0øZ(©¼üô@7šDˆÐ?d»T®Q7(Öá™Uî6u$Ôfɤ)måí :ŠÁW¾§)Ûó*“…B|Ov-¥DW’…­ TÍÀ Óa~[¸o¡UêFÒ©L•d„ƒ—±”zJ•K*DÑÁD¶™p•ŒElaeJ$t)jx %n×@‹\³HÁ‚ùÜŒ7¢¨Xa©™C¸M˜EĉlÜ:IŽ˜MZ@¼H×ÀŽù`u}úµ[Ä‚{b…²;ÿÁý}¦…V“.´“²48ÎnKÐ rúáù˜Ë$5òBC~ýÄ$8è^ÜÂܰbtpµnB¬ÿæ­Î‡ø³æ?Hí#¦_´â#|÷×<8B_ ¢Q0ÿí•ëŸG“ΣéO'Ù±ímŒù“ZÀzº¯b:K’ÆpþvâÇ€Kôg“šIe§JÅ÷¨4¨‘):í»´ ‡ˆ â?z)ÌìÐÔ„½Ï ·“‰™yH°ƒTWHLÞ$`°&iYÌ)×:çÁ”7? (dô»XèŸÑ«V5uý_œlù‹#›K§¥´Ás8ì²ëÂ;]//×S>ªÝÁ“|žÅ÷s:ŒDôn#;Ë~Fˆz¡—ø7„̤p§«ä(‘&¢ÄÖ„Ô ýöh çC;·µØüBY—@å˘ XSM¸§L<Ém‹ô°h´tœMñ‡Q*œ?d¦Ç•±ëëJÄU{rã ,w÷¶VÃE©ºaä’iêØ’ËfÉy‰ÞÀÝŸG•Ú ¸ÁL"ãj ‡­BùWëòª]H’› )»`¨47MÚ!؜ՉŸ£Žnyõ¬<νkö$™à¯êÆ t+köÙ>Åã6vk¢·Š¤y*êݹ'“…é~åUCUÇè«wµ³ag½úò^·]Œæ WžÎŽ ÙæÀùH_ýK™Åp‘ZSh¢š <Šm±o‰€%¦Wú÷Ä[í°Ï¥ù}W+à·g v}?“oøÖ“^P˜£8êÂÛ {aˆ÷Û²3'ÏI-öA‚‹F¸ÐrÑÀ‹A ‚µ œ’Pºi†ä´ÁCˆ àl`Ì¢ I€–ÇÙ|DìËÔchɹ‹ ÔBjúúÒѼÊ$¹,øñm-µ ûö¾¨a[Úþ rT*P Ð8BЇ“nYu¡\»xYPÖéPÛÓ]k6ò™Ã…òçb<Êè]žMM´Õ$ÔÈwÏÀLnÿnqF Í×Ä<.jï’DÏÕ6“Q#CU¤§(˜À½äžˆm–¸Ègd5–¹}pNw! ”ŶawÃQ]£tf$«Ÿ\…ëö“›‡Ä Ä-Z˜Éw„WŽrJÔ³«ów.'Ñ×._I3Ù£Þy‘xl™¤€ÿG¬Â9)X‘?fFäýÃò†iÑû,h]9ŸÑůvÞoƒWÙ;S¨0¤0á'ñÁ¾JšéW¢oÂ~Oìq±p¥Ø3- Îr>ÔŽÛÖr´­BIMÀ‡\òB„GÂf`C?Uà[”Áuuš>ÜŒOŠö¼3Dx¤?C•œ"Î~•0!-ªyÞû¸¾sIeêó %–mÈ£ƒÅÆæÃ8ÊkÚ•¶Ó1ßAäh÷-u¸`2Q˜‹³LÓ ¯­ 逻ßÎ;£HïKfÉ[aüåÒƒAŒ€$zÑùF™Q·ßÌ„™Œç04 ¦7zj’Ý ±c­“L˜(* X~”Eó"š1¹CʤÈ!КiÄ•HöKyÅ,p,@™czTò@ȯl@"<‘éDÁ˜ª3®0ÂW4{\N›&¨YÅœE68cDþ}‚gôÜÆ‘y½ ó”ßæú¬$“èÕµE5<€äæ@ÜaÆ¡û£€øà½‹·ƒÛxâªuœÎè/S¼ïl_²¢’5«;%süOV”;CäL6,87G&]8`îŽè±õ¨îÒr$TO‹Árc “ýô7 Ø6äˆ6Lól°Ý5J‰Î–Fx"(0å2§® (ävZ1©×Èø¥ÚŠ¡b§!9ƒ˜€¥$(¼Hx“qÃô…‡ î±Ôª5{‚F Äêw%Eà‘¦X_'o·Ù´y«ã¶\þªÛ .åôoÊó¯¤tí;ç Mîìãн.bRÏþD0z˜³•mdìá4béZŒÞvËbE+È% #V‡[¬õ¯Í_‹0Õøi(/=ÑÉi|nµ;4=Âì6ãÒ7Ïœò¾C_°Pm|%’´‡Bl†«*FÍ`Kbò`ùÙE>%ÕR9t.Wÿqµ¡«uoŸÚ }xÛÙêŽîý‚ÝwˆjR&¦á܇]¿¯¬ÞŸ¡mÌuª¡K?L¡q2¥Ïã’äG ÑCëa5bQñ¿—m\;ŽHôÈ‘ÈI´,"LÒ-‡¿¨Å 0Z(&þ£¼÷Ð^Ó&‹³û‘Œìëö·%)>v÷ àœÙ11ê‚>JÌ¡‰·H²Ç+údíËŽ¥>óSÓ<Ùaÿ#r#¢ÐeÞ5OŸ–°Ö›'™ß¥Ò¿ ƒ²Ðšv‘r1Ft˜h}ÉZ­×ŠÁ †“bÙÌÓh‡«Ï. Ë»¥º|ºî¶ƒ†;ÅÁ DA‚-â:•ê ‰!ßdfDÌ„AÞÛKFPO“6áÙuQfO^K¡Å!:´°¬/¡¯Ã¨´¼±ï´CÃMæmÞ‘¼›Sð@ÆoËrª©a3ͨxÅ …eeªðËÇ€7ÃÁ3ÖNôê±õipðþèòŸ”Ò!ÉÝÜÙ5}Åßo GJ”¥˜MyäÓ¡lbãcxbø bf4¤…xØ‚ã®a”X»±&äpIµ0 ÂaH–¦„Ř£&"+KAµÿR¿}±ÉîWÕ5Ì'Õ½ ¥‚ÌÐ:RËàïô¯˜ókÛ”$Àë™T&W P€v«€ŒksëüÙz¤ÊìtÌjóðz‰¶:ÈŠ‹‰$0nÊu;ª§æªÏä|Æd7°o 80u€éî:R]å-â+B‹!D8¸9‹&“"À¡“GÁ¢±Š±Š†}‚µØØîe‘ʵ-„Â1‘iBÜFLr¿HU\Úµ/)p&>sv$AØv'YåÌQâñL$|‘zœÞ=H–šZu©´thcDÚï)©nOGÙ•\GÚÉ#·íšã(Ä0¿ Í1›ŒAn8ø~2ìA©®¹ EOluž@BÀƃsœèãÑÇqý6ëpê¶©7ͧU£¬Ož#ÂÇÊÝXØ¢öb„Óª@Œòa¸JZŒ(²ÃåyWuàŽZz4HBH±£7(„ÍÄ¢É=HÝ0\ŠKDa#41×V^W³A;úÚõˆ¹Rj1’´y¶±#Á#=bšÎäh4µge±8Y“ƒÅ›²8’ú•HmŽ?åß> Õn*µ90f×3+‘Â@©µ`¼x+ªHm’ÌB×ï¿VÁlÇÛdHr¡¥Pa[ƒÌÐS}‘L~«Ûƒà¹7 ={Ö¿5=aC†1éG©3è3nå6$“¨H” Ʊò:ý0sxRON¢À…ûư¿_°Ä4\ÏJ)BÖî"Xf‹GJÔ&‹©S³*MñnF®µ5‰Ð‚ÂØviÂwc‡Æ‰8"•Š U/#ašÔÞ%ó–`Ôä?"-|B({#M’Æ’Ö¸¦®V¥Y)‘½1RZYÂh\W•s/E 1¨äˆ֩D±&X™ J ÿ]½ ÿ‰à'É ñ‰¶Ù8)3ɉÌdÀýåËsƒIV|!ÀhsG™`0êk’‰KãŽpf\æ[âÅm´×œVÍ`Ë}d¦Y ÐÚP%Ú\eK½Ð|¹÷xÊ΃ÖH=‘|ˆÓJl<ƒq[fô•µ¦¤× 4š2XZ?7 -[,2Í&Pa6$‘ø‹Gåïš%J’'Ã7¼ÄUÉ¢™I‘«ICZ%5Ò{õ®?7t ó˜Í¬iL!6“òºa š'o͇À¡4x¿´ö!•.ÚÁ膃£ª¸_´Ù,Òš«cÕÉU’#W§Ÿ$Pê3cG ¤ìè® ŠéŒXBr:FSFŒ›.µ…éG)dÁŒ?Bq"n£G‘¤fÝRWrEÏ- u)uGÚE Tª3:J0“^5—Ä‚,{àýÆ Ég“.cIÖLaG’šZšG7ÐÈ¡Ë%ç­F;RPv†°k!éºÉΊš¦M ÁFM•€Ëì˦+ã£LÆWV4taƒiBFi(nä˜Ü<ð˜¾`ð že,zJÜEë×ÊÓ ñ º›Åa«¶Þ›,¨þ%›1¬ã1áË~„5]i(£G9ø”)z%:*¦dS?¤1,^´ð.¯Ðœ7Ê=ñKmnö&£ˆÐÑ©‰jŽ&­eD]K˜´4¸8kX’˜—HU•YRø44“)tóZַܼM!¹} nÝS]«,›„óó}SuÑ‹Iêö³+t#‡vžH»LÊɬ…ÉA*Jû7O^zÄ KRÔØAùÎë¡ÉEP„WÌkˆ_ÂÉ÷îì«5…B_Y9âÂâÒ›Iœ=ò”D£¯•%×Ì&Á8“2¾ÿ·í¦Hö²4^ºúò݆G½ð7 @¬Œ†…g¸¾ 9ÇFS@ÙHA9 \¦ÿ+ÎóL-¡„Åô †3SFÄFsÜ•ÜÙ… ιÇ“è–â½Ï3ŠÞËm]îåošç*$@ÃÖ&QÔøvŸ»ù'—¿åÌZ>?‹ò‰?èÌXLkŸ:Z7mä„ò»e^n_Èíé’PÿEêâÏ;²iL¢å{?/•É(FÙ¶¬ÑÞ|·óÝ¿­](´T¸û“àZoT‡^–6ÀngHGpñÊfòi…«;³ J‰P"”èk.Ò}¡ÜZµL¡ïV‘lD‹Wžà¼{|× åv!‘O–I¿clý5¦ 49EñK“!‰Ð?F’-IlÃÜóùbæŒrHq»¢¡™VÀd?þ’Ìí¾'·À˜O<¢N¤€üéÛ¶!ôÇkÆ-d} »MJ›• ÑÝrœÚ{âb÷´{/¥ø?°³²˜€½Ó…/ò„©+$Lví=Ô¶¾ƒ”MˆÚmY-håS¢àfH»Hö cC§TMÙ^b/Òtšä ØrÒÐÔ¢JA©g·||!Û ^ìÚ:æ}òS¬q ¹ïYA{)Ðl! ÅjÑ&v1§À϶­¡Í6Ëò,Í.Ý®~¤—ç:þ>ôßÃrdë {GËd<† ÎìÍs°ÿ›N“t ›zMa²@PrCn݃¦ñCÄN‘ÿAð—({]!ÖÍñO®•BP†AÏr¥¡×DÐqùcd¶ÒOÆÁxA±—ÜÆ¯M¢u)¦trèœV?çü÷†2E±2V ƒˆÔ.ÁqÈáÚå_ê³ q¼MoÆÔ•²oæ|éå.8‡‚;,É2_‚€¬‡ì¸Bmź÷m7lư,lWEÕüyZœLmØ ¢ãB4!ÀÂ7wj8Ÿ¬:~‚rO…È[^—*jPÅV,®éq¨^'ô°lêÈ¥UƒI1X–Öô¬–üO-ëæçC³|@;Ôç_|éöøÍÙýÛ‹”߉¬ksƒÂ/ÔŒBAwTE‡õ•¿R&âCÒ ù›²ÅOۻǿxOónÛ$úLŸ¬;ƒK<ñÄ]Â*TŽ^T²E™ðkl`²DëAE»lÂ¥ŽUD\ ‡Cj\pä!‹zP•’¿ÎŒ°Ö‘*¤R‘i!9*<êQ#¬èUtͲŽ5"¯J–“ Öƒ\…m6®¡®0Æ\Ô…²É¥®ØǤt‹ÄJù êEä‚ïv®.ŽÕGÚ¾ “cBí^-¾‹„zæ,ô[ñІ}{dðéRç×ÁƒgK²—©ãÏ€¨¯&µó9ó3ܽA‹M+"ÄÕá£óÀj¼CîÖLèÊX4 *å1ËpPˆ3ÛåR'd8ËdÂ_» ˆ,}¡ñ’öt* K¹j @ŒO^3 £·5'*´ô¬ª1,¨0´{2ˆÕä´ BÖßmá„00@A %!I"ÑŒº‡ß?Ü{¥î~XÉÌ×4WÔ–†XŠºÚÅRïà—D!Æ+ïÒ+ÔÅÑNMiÛ•Œ;¾d’ÞÐ{=~µÊ“AãùVW’å ¹q”µO½”ü,¢5o êfÈe/=“$ÝH³QÐU~Kÿ~•Kí¡wd•9 ¾a­ë\†¼N)ë‚ÂCM÷ ÊwY‘LdäÊ× PxœÎfŠ*qYí(+sU­a¢Ë ‰Žù˜­2–—°MšË. #j%fÁ%›m±´ØCd ârÂ0<]Hd>_Ç=yŸòø|¾+a¢C°vXìÑPœ„Ý&Xæâiˆ™r…–F #€HP@§ `ÂNÀgÇ›LÉ4Lj“ñèÐFTpÑòÔˆÂX¢NÒî ¦X"„Qñ # ¡Â…Æ“%¥™,aRà¡ÀÔ7Îë¬z í¥x4oG„©ßµ"~_~¹8¿S:·U¼+–Í•lZÒI#Oðc ÜVU³®¦Ñ’LÜ£ëz¾sY>¬sV°”§T!d´YƒY‹_œgé£4€YͶÆ1¶;W4+¶€Ó|ïÈä"3ÌT.‚P™ÈãÔç.˲èÿ@‘®df'¤µ¹* –{zÁ|E]äS‘4ê ã¶:(D 9í±E„ r='Ó»ßB„vB£“YÃ’šì)n›÷É­Ëå •ºïj0¥:óÝ.&´zÇrRWYÂqÈÄgg1tu¡H6ŸÄ­6ťω' ±›]óM7pú"Fø‚ÐüAæÔRƒ"D†:š9‚vY„(P… ‘©L$lØ ¥\!xáŒb c((R”L"B5ÍȨŽtƒ›\‹|XÓà &`)+è(ßJ sH¥© 0!ØÑa[åb3‡»ðß…ú9ž¾y²›}FYÉòŒ4•í%„àø¶zþ±9 Îa0fØb0­•íŒ#ÏyEwŒÉ'DÐÒ $ÈçKNªÇ¤š‹Zªh72**C^öˆÚ•Ò¤òÒ¶)ÏxÎ1ئÌ0)MÛ£HÔÓÔ823Àž®Þ8qå„É‚g ë#.hIº¤R\…Né#Dª†øJÒEÒUC{XÛAwj Š çàÑ]ˆÓi’B›uŒ“ uÜ÷]*Õ“’x©TrPMP:Ú9-2D °†õ i²‚HäØu@Ä[У@’ñ¢B}ý#í5¯aºL¡­°A‘Üèª4Dl7¢j‰jÈY%bîÂTi#ª*:’7a‰w Š8H…â”X›Æ"4…D”óòšàˆë ’úR”A “©ºG¹*OT0•’8æV³Øñ?Þ¹„xlD`û@;–A­Õ«ºy×t†œ(îÁ‘õ`m8z$ägk0¯4A2½H…".É#L›°Ô?ÒzmË­„ârF¾¢‹é®3õcÔ9d-£ a3’}!Jb NéÒ `!© ¨@9iR9 `(:“Žoù+b—à:£rA8A W +Ã$SB„Ó"‚g¹ö?#éþ<¶_~<‹:êËÒ@Ý3©Õ„’ã\âq#ˆ""nñ‚¾`­‰d<ÊwîíF*¶×If©†!šTg‚ §(w>CùüÙpæ˜D#Ì™A98N^YÁþgêŸ9sÑ ’ÏãLÁ¬fzCëþ#‹)ý¹©"!³·¸†o î9R+ã¤TN 4?~Â’^1n †Ä*1…âÁQª¢´,g‰i(ZHY% È· Äž[`–ç €¬„L‚J•=òl¿Y5e× :š(†fZðǹª°ÃÆ¢ÍAŽ8¡Cœ žÕwäYxäå›`¡¶V¤á­B .«*…‘!`Œd0 ¦˜‹çdL·&P¸ÉCx^aHíÏë ƦŒ…z°œ€TB˜OÛ£s–ntí𼵘-p"›‚_ø¬U©·}³Èd<É ls›² 0ÚgÙ<Ò\i¸Z6æÓ¾[A5*Îê9†Uñ&&%|Ò,-%$5}žg;Ú ´Þ’£—Õµm¡Ç&k6öKüÄíÃ<-×µ†¡¡ÚS¡*=„ýót‘C¶>Á à’@Æ ÂÎ2‹Ð€ CM‹œ®ÑN~=9ÒG€¡vÁèX0@ rGF‡HVq¹ã‚T@[[¡Ñ•–ˆÚb’ËÉA;´Pš)' ›`;C®0¸D‹X„ $'*$¯¶^!92ÂÔRNk •“¤P¨ÓÆ¡’†põxÝ7áÏ©c½&EIõ®ºcéòâØ/ÒPI®EåBQ–!UŒä…ÊHm•Ò鹬!ô%¹ ôñ]`IÀÆi´ª¢FKÁ˜ ŒHÀÔ“MLt‹¥–@íIµu à¬@­Â”Üð]Ȫši¦øÆO„b¤ˆX ÌBĆÙû˜Î`Õ°¡&2é%1’[dÔp@òbcG R ñ¡ßUâ"- I´™ E„jU-C”ƒ§DÆŽžäÝaðÙ­ Œ±z4o˜ƒ)}ˆD pJF¢’ZšM _FØ3y…å€÷B4X˜rع)ŽÊøâ¾ò¸$í5ùÐoÊPî‚kKnäŒZ/†A^€‡¶e‘#0IÆ@h Þ%!„„ ÎTSŽqN[I4-ÕIÙXZ+ BŸ5ËÀl%¢¤Ò,51iÆÆ~ñw£Ï1#¼CPI”èÇHæ§1ÉŸ`á Œ!€d6`¥M¼¢  m* d%·öX… T,@Âä†Ã½¼7ƒ˜ —™«€éǃ0ì·bö`‘äèr¤[÷纗˜{ž»•Û?9`>ÍÞ§X½{ŠبŒKky3'y8oxLŸ3„”š¤£"Î]@üW‡Cz³ªQ.܈ßë‘Bq”s ;ܶìŽxe ½Â‰Ê9 XL~#*d BR´‚a<©‘"tNXÖnC¦e°Üž”€á…³Êm¦It<©qéË èØi±Í²©í›Ppo[ w¡šdê¯ÑãØ'r}0ÓðÒ¹‹œ+Í+Zèí!’rZk“cFeá4hÔÜÅé²åæ2üa‰â†­âµ]G¸ì.Úê¢Þÿòltéòž¾‚]mˆkýS°Öœ[8=눔ÒyÈ\Ýýɲµl”õ¦2È×C‰WÖ†à~*÷ *ÉV,.E¸ã~²v´ë¦¹Š2\ÕÿÁÏ¿––^ø¿‘vMxäç ¼6ž6¹«Æ·F\5} Wk›+‹ãÆðSà°ei§Ä˜ÝãC0;Ê %ʺjÝ‚–¤vºÞ]¶|)õ·”ó4.Èâ{ü†³Ît?ÀÙßÒš…(þSñPd(ÍÛ¾hS6Žó6ᧇ:ꛥ°&5žòe »S\ úwŸ‡ïãkhð ’Né’—¾•„ß4©õŒÆ«$9`¶?b_&µN/.1a§ò÷g~ÄK×$nzEͶ²ÞfÌ2 w–3ŠîÍ­SÁåàñQÒìÚýt²Š÷|Ü,ø?Ûã —u_M™B;€›ºÍèÐõG†™=¤%)a˜0Îà–¼…cúJ@aÇÊðN¥ù$¹?´}¡È9§ÜÕ[é+±‹yOë=GᥠOÏ¥ù×Ü£ô²AÁ°ªa¡ÎZQå³CÁJW“³3>ñžê¹´A¢ ~ôñ­Ç)ÙÛS±¥Q l~“Öû)¿0È¡NëMñ´ž^Bù¼¿ÈÚÆWŸÙù›§rVh-¨a[‚Õ2B’ä\¤zW§ ÍaaÈ7aȬa°î4 s–CçãöT¤¦ZÇÈZd°î–ÏŸÁC`taweIZpÁë8g°‘so0÷ #}<¼1‰±Œ§M9(±4£¸I„)î&“ÓÙ‚Tï€üÌ5޼\뙯ïˆ}ùfî2.vå7?·ñ8­¦¶:…“¶m  ‹KÃ…‰Í)Àc¾X#6Ã冷Ηé=½BÇKx5øè*¾›‰î²Oö>°Gü~õP4?ÁÍfbê Ï·Œ`Ó Åñ†il¡³˜oAÖpí(rØëKªxKj}×JžÌms¥»¾]§tè]hü!ãRÍŒ…òZ~2ž/”µ¯'šP’ ¿‚¿„Œ…˦\'õ§`À¿W²&¸|ýı![[{?å[¤PÇ>ð“!I*QÏYÿçšÙ¤¥~IøD½ÕxÇ·û‚¢ýôv*PÄ¿.Ú÷#fý9Ü]§9@ÜÕ1Ãá”ã~’Í£¢Ib²{#ˆ™öˆÌË´ÖS¯}¿e¢ÃêRþÂ’ɵ|Ï;ëå½`ºôÙs}BØ%Ý6ƒ­F;ÿ« ¬Ý£ÂkijxüÏj¥~kK³5á2ßµ«º ¤Ôƒ›×ü–ƒÞ=°È½‰1ÄaRnÁJ ZäòÒÒ¼±É¯ŠÇWÆçÕ˜–äŽ,aô›Bþ,?E`¾?£3»Ù`+Æ~œ‘ZÝ´oFC°ôRPƒ ØŸ†%7»yÕ b¾k³ Npkøgÿ0%ûš½†y¹/é~Jàé&rð˜QçŸ4èð&¢Cp(zXE”ÿ É ‚º•M¶Õ$frø×þÜ)Ç$+#ìòâsë–=S:›p.5a¹‡Šº–€{€ú¡ökP«ÊÐÁ÷|œln7P?Þ/\ÿC—n'wìd¸Åѳ7/kzvwt-ÛŸ¦åƒã~aÁn˜ í‚é¡ êÆþ]ò®ì¬rÚ’¢mYà×å|q²›D6Kïn¾‡_ƒ:³åp7¯âzŸ,û ˆ èSÒöUp°Ë2^?¦Û€µ²yX[Û¤d¯¾jþÙ] ÁËQæÚå·]+ƒ6áO»žÛ,„Ÿç‡Åó1l£…ê–Æ œ®=éñ˜ðŸ$™¿†Lòûz^üíÏÑMÊôÙ$°SíÎ!Ä_ù°çŽ*±¸²MÛŒÚ!- #òN}÷— 1§ ¬šÀ™Nâ …/9s‚%Ê+”Æçéœëû6yü»fÎZ1néü´·þ€ì¾! ° ³Áâ‡ôö¼I†äØúht—bÃ6k¬yÔy0Î3¹³ì¡ê D Þ 3cÇj÷ë0ç!;t,Fº/c§ }¤Ô:ö]`þ¶téÞQÁú§#öGÛgœZ^·¹»­Xd†V¾a¯xÌY+©ÑßÔ#Þm‘w¾3Ù?àúÁÂ*IðÑÒ:ÒZŸÅöº(-kâXBvmóÿGÎN`ÿAÞïÀÙ§W}ª¿8Ü_µ8Bì.— Î÷±÷;Þà[(^_yvAI\M3åi$BÐr¼ä’ÿ\ͯӼá¦û¢8'Ëõ à’K‡B„½Ç;#ý[¥¨nõ^&1~Ð8ÃÐå¤ Î^>~·aÇÆÇŽ pÁQµXš•„듳_TâÏß*õS·Oº35Bü‹- ÅÖavÌÖsƒfÁOXçüÁ½}zxžP_‡¼l-Y+¹¯=á6ùÁß5XÛ>zúB1‹Ð».y1n°½Ž! Š]ÓvËBy£ó´¡ìo Neº­XiÝ&ÎXh$ö1Ÿ‚ÜkK np¡ã¸ìyº¼FŸ‘aÁ(Òí«Œéòˆ¨Ö„ãù‡¿Ñ°³.\bìLø¬#<UøP÷BôâS´rany”HAÈ`è9ïÙ(hØÛ +§~ŒbUƒødØÆ’ÜW`ž Ë8ú/}®ܱÍP“ ¶ Çæ!ÇçDò'ÏŠò˜-‹6»'ÓCæ §h^šJë»›‡§ä~ÄHw,òS̵w-ørIÚ÷ž›ÀŽ~ˆ·gVÛ8ÒaK—Y9UŸ¯ r.þ‡T‹.x#ù']&Úë~CL:ŠâkýË).Â…Àa|M艠ü\A©©ÿ¼’Ïþ®"^3wÒ}댧…dÜÀtGT1høE#™{O˜êiîî³~Õw|i´HfVGq÷?V…ˆÏĹÖv¬ùM Ô<ÚMµj“)JWhoºÒ5‚%Óö]ÅFhŠÔаŠ¼‹Å{ z‘¼N•}o}DøNZMzýA-øvɹ}(É(=Eܵðª'"ÔçÈ^Þmb2¬"³R|ŽôžÆŒ^³09×\™v2˜„“ßžðøQ¹Ž†žÀÏH~Éæ¤,³ú–™B.a±Â›øá\2þ èì"Üm˜MNŸ.¶fjŽË2nUy†˹»¿ü]ÉáBAu¡Ö€redmine-6.0.5/test/fixtures/repositories/subversion_repository.dump.gz000066400000000000000000003424071500112024600265310ustar00rootroot00000000000000‹Ìî‡esubversion_repository.dumpì¼XSY·7~’ÐBÁzèEˆééMÐP¥)¤œ@ „˜‚"¢¡Š ‚TT,ˆŽEÅNQ±+vGGó?AqÞÁ÷¾3÷~÷ûžÿ3ûá!'ûì½ö*¿½ÖÚ'{Ÿà°<‰W–$rà%‹“XR‡H,á' A"êëáRÈdƒF#:°y4Ž•Bæ:°©ª…H‡Èx›DåÂmƒ ¾²£ƒP–ĆĎ Ã'‹8ÉB)$”: aœ4¦FŸÿ¹ 3¤c$)BG.K aÂ@" CÄãix†B :’©Žx2ŽL!ˆ”H 3h&3ØÁs†ÇãF—@ þi`e<2?<4K&O+Ç$ˆþK†(dGG¦“ñx|$Üš6ÜZ7&P0¾B¾”Ï€ü$Q²XŠû‘ãÉ\ÈAÄR2 ‘±¿é;F I¤_o%ò…\GËýÊâH‡íÁâr"þÏ‚á1?Žøg%ÿ×”D!âˆxÒÿ ’&ãDâäˆómñøèÏê æK“1‰Kq©ƒLg“Èx6žÈâP ˆBæPÉ4‡A%sÿÒEÏ"()Ù\ O%±i‰ Ñ!bÓðx…@æÉl›J§?µÎh~¯'R5&òƒœ¦ÍO€ßdŸjFÀáÍ@HÈIæò…qSÍBC¼èfÓœµ1NßâI8b¾H)?\‹v²’ çÑžÓäáZåmNrR<º³ÓäïWÊÚo´$Ã_&ÿá[ÆpƒEçë½?~²¤21ô­Ûï_~#ñGæþ­yÉ.$þ?6þË‘'lj!H ‰qbößÁ ÑX *žB#qÙ•H#Cd:Ï"Ù"ž5ƈd—G¥‘HDÃeðè›Fg3X Ï&C0¾(\—:²ÐäŸa žÂ•6EIÉ‹ÒÒÁÒM}¥›lX§XYлaÝ‹µk×®¹½vÍû‚å%%=kV-_>Xß[X0˜¿¤qÍš«…ŠÌœYY½Ë2/,ÊÎ.))y¿xÁÅeK³²iiw²²ng/x‘¾`páÂ+‹Éí´ùï%’û©)= >—‰»ÒÓHĽ2Ñ©… _’<Þ‰àêܹƒ‚„‡ ÜÛ‰¼Þ„„ËIÐS.Ô•ÄîIHX¼xq“Pøs‡ËºÊeuðx½¬È]Áèˆ;‘Á÷g1/GDí š~&|Æåà †ˆYí!¾·§VDFÞòsïœ>Çã]ñöèuŸrÂÏﺛc—ËÔ“-nnצî“ÎLz™ÁXëíÝK \#nN¶ÛïèØA"£âoÚÙÍœ9³Ž2ivÛzÂU[Ó.[Ûƒ“'÷XØß15í°6?à`vûpüø«f&Çl­ºAp¿­m'8ºgœñ!‹‰cÇž=‚M§M›Ö2vìr;»j3“cÝl[Û6cìNS“NÝcŒZ {°ê'Œôû´µwŒ×ïÃ-XãzzùãǔƒH¤“:èXl'¸Šöèê¶¡>hÑÐØŽÅîÐŽ¡ôŽkh,01ÙˆÅG°ØC(Ô^4ºÔÐ]‡EwÀZ]ÝXl5 ¨@£›TTÖé;4€“°…JÇb7iu¥£³…ZƒBì€|4B퀹::Ù(T(€…(Ôĉ%(T>Üþ Rà€®®.ðÇbú‹Ò öÊ/Ê9 5Χ¦¬1 e`}º¦¼y ÖÜo“OíÖÖ寤„[§k·µ‚îËÆùîß~fµMð®è3û+έÇsÎnò=°ãüFºäñ­3v^Øâ’…ïw°òâ6ŸÕv³Ï¬êÞÉÜæWêwhוÝánŸ=´»g_ló²ñÓ몯ˆïÞ5û\C+€2t*ŽíoZ¢k>ãa@yrÅø)ÂŽø‹ üfsÒ§(Ðcú¦)™ØÙcBíB'EuȤܧ"ÐÅ?² @Žvš_/2Ç2ǹó¤èûaë÷øºÓ:ĸh­Ÿ cبa“†«zÜz\o%A¼Çš37R×b¬’nÖͽÜô^±wÖd¦ÚÀC ¦ðÄâ’n™FymY´]GMïëWXæµòø@Á¼»†ñe仂à©ûã‹îdрʘ½„WŸ_MOßÎtiÐæoŸ«>!ߨ|s†ÍŠ,Ç[ךûR±m•«€±÷óéÑóµryõýÄ4”  ÷†åGíõ0`rïÚ‹>Õ¥1,"HÂo[Á°!ÏÆ¸»â•é¶~â‰lØ\8ãæÒtœíùU¶{ó:§<8U¨öî—•£þRçºnÃçËY‘6¼Ü7×k¬R‡[é ™SE5=:¿*e`éLMr«+: žµklMƒ[Ö×€†%ŽY»’FOI{ëÒÇñƒ Cœ0rõ5þ‘|âZÞ†ªeó—êb÷_8ÐåüD}·3ºFuò³–]+ª{./x²þȲ¥¦é¼7LXɱ­xJ5¸Ã¸µÉ]‡ñFÍlSи5Ž3~òŸþl¦‘8å¶ qEõ ¡]'-6“oZòJÆÂjN¦Õ´3óWW‘o×J:Ï‹VÚ#.{ì²ÙYM<›]¨2½ÓíÉ‹Sôˆ2Ÿ:äè…Õ·n|Ô®o§k½$2Ð1×ÁÐ;}üѪ›e’Î)÷NßÕ™z1o¨hì¯)ÏÞøˆpñ³ô˜B:OI¯ñsRÛ½ZrøVʱ¡õ}VG9 '±spõŠ.wsSÛ ã´ci¢žÍ8½Ðù -=ï‰^ü\ðëãn?Þ¶¤Õ˜3-ÝN/œž<º“ñ>çÆS6B…˜c»0Ãkœqí²î%§Üß^¹WoÐæAú´ß•ü°ùÅ µìù/þD)õèMa÷²¡G¯~$mYVuÞµ©Kcü½î¹íÒ U4&ì¨~‚£Ü‘’O›ö¸®|‰šÛõö¥%CáäïüП®þÚ½vEzÛÚ :96šå >6´ÊCy8eê­*ö0×Ò[.˱žóJ¼äÊ=Ö©¥}º¦Ñˬ6XP4f£.{Ó+gUíLƒysõ>2S#Ÿm¸ª¾ÅJ‘ ºÌl—Û¨Åj“Žg¬˜_¶m ÑÊ©÷æ¦=ì_tq`‹ë¸.Б߹#óÍ~OwÕ :׎y•ï`íÆ-Ýf Âl"†.s\—¹¢êô6(2u0ËIs¿÷¨Ýy…“6à—c®6ûÔã†ßk!iܧ%IÁ“¶¾\uÈ/|lk ÂÉmlE|ŽHbÕ×dT×…Ä3Ñù)Z¯Ö~¨o[ƒrpcÁ;D^ª—ºê¡gÐ*¨ºß¤;¯MxÅo4‹X^å¿Ã¸P'—j%Ô¹/«=®á|o®Z¤ó¹uÈÆû4ÙuŸ9î©Ýù`‰ðób±÷K¨¨7bWÄù0îj°v.'(´ã»Ãövì ^ÈPM~®ºI­1ú _ö,¡aÙçâöëkš¾–AcgtùŠK/'î´œÙ~ k¼½&\nÛ8¿è]wñu÷¾uu:²øÕE—»n˜JãÏß«nĸ¢š÷_îÞ#•ÓË+ŽD-JÚ¤–ºëÁ˜Ø¥ èw·]æìÄ>JZ-ÜïPiñ®ÃõjÉ‚+»WVMj¼En(Còy™Â(ªp“ëI ‹nì³zx%±8¶Ò¥¾ÌgÑyUŽùéûDoÔA¤‹îKQ.7ƒ1µtîÛý7¼-#Ýs]K¯ÄòJ«âus·Í¿§:±’ D˜ÍHG]£éå®D!Ù MÉëx76£/÷”¾jêâ$Ûª÷Õ „›mÛCK Ž—N<ÛÿÌþZ]¨…7(ÿlqøÜì ¸ÓÛ®?š­©µÃ/Ä4»+1šÎ8ùܽÙï"Ò¢Æïašvf¶¾ƒ=*nÙ6®?')=æ°CŠ»ï=V ’§»~Û¨Z}C/@œ° lH`=é~m·ýä]Ì–ÖYÆxœ\îP9öþžÃ~jCîSvëÜ_!lˆ xÓ´ ›5Ú£çgé„Ç|jk’ô+®éLÓŠmV-GàÞöçöX©µhœÎ{ߨsÀ„{î£*éãfú¯W%¸¼ö|þ-í3Ôõг+µ+n¯ëÎ P‘ r ;˜_0.ºøjêã‹+!Ù1->דŽÄÞ×Ýùá\Ú!‡í ù©ýáàÚÜ«3õì/ú#*ëÛWž[¹'U$BÛöÂQƒ‹ÐtÌIŒÊMÇî‘iê]ÓycMt>‡¼öR;÷ä¶xýh}FüÜF°uÑ:/Í&Ït§ ¿ ²ª› S_©Ú<Çé• Ã/3©x®µ'©àžåMó¨9}”ƒ‘<»^ê‹NSój,?{æä©Ê+^rcò…ÐXãw}’‚éÏ7JWx[Å’Mѱˆ5yKV¶ž¯sV<ƒ3“NÙ\öüû—XDÝ:ótìÑKïë\³k]×Ìã'œ`u%8g豃¼)7Kçæ¨Ù!Ðá.ª£‡š«›Ç?_ö‰Ñ´IæZ>.ËáEs·–ã+Ä®žUúXõí4Úíæ§K*MÌW[ÒÝ‚îVŸ÷žßÈ£7Ì7¾«Äè@Õøš R;6§uv‚³uIJ1ÉíZŽ›¡ÌƒW›µÓæÕN¸â»~ÓKÛêDí˜ùR=¬.¬lžŠO¸9®1+áÁ¹ìð„7±(w¹ŠavQ®{¢ÉóåÒê9°wÖ•äšï>&²yŽOÒb…ýÌ'ÉÝ[Þ©ííÙt«§—þ,ËlÎÈ]5¨ª_ŠU'Ýc?ô:üAñ”4'!ùaÈñµO·£]+Z>-zÙ°sÞ©Ý_ŒEïU—Þª½X—)l1?ºmáÉ—«,bÕŒu^iŽZ¬F|¬úaûª{ñ‰ýæ-öN»NÔ%JÓX)8k$[¶3üíhÕ0o,²,¾hx¾--Ô €˜Úg@í’©½¥DÃXá`ÂËÌàY ó<‘óƒ,çÒ>“4«Ewwrûs1É­R»¶‡ž4S¯Ì—ïç¿M.²ÙH¬ —£ïæTgYX­#±Zw9â0ïK+ð’ ­"Äè»|íùp¢¡É(.j•ËÜCïâÍ< ËÍrT3Ø4’g)òfYÎÏT œcZŒ]µžŸçí0Љ®îÃaf½S¸;³¡ÑÂs¡:ocÑÚ ­A†¸æË]MÈèÕXôá9kODϼg.èþœEO<—²æ=ÒXlaµxkÿÁþ4MÖ5`—KµB•v¡7_Óº›‘¥hƒ¼:ûL—j5'ä¨ý>ËW3=¯~Çr„Æ$÷F¦Qª¿ÌúX´´à½ý'+^ó8|Zmª×ýˆEÿE ½›¥n‹ýõÕÚ—PÈGfŽ"7êêL]\¤9St°¦ÑS¼ãÐc`¢slhÍ‚Ìö챕Ù~a&’—6ž\¤N¼A#ÓÂO-œž3qD`AïæDí`\¥¨ŸA,;¸J70\tÆÎLŽ„ºÔçÛ¢ —±ßiuà%™\3‡±v«f“¯æò3~Ùš_æ%¦Û®zW£óœëÞ£óH]/@T³M·¦aÕ»y¥“MTÁbÆÆ»RœbiflÖôb‘“NWÔ7­ ñ§®R²ÂCŽ 7NãìfÚÞmLØÁ]㢒(Veï÷®ÙT½ÝäšÖaŸ¼ÂGfGtú4&9cõ~¡Ì -o§c‘C¥¬âðڜҪL´½• ,™ë.ºAŽŒ¢Ö÷Nj]€»›Z žÔ·zmº¶hËyù2šÖÌX q«ÚaÓîlÍÖ>”]Àåí3»´ºúе›=ªÑéÃK ¨óµv® ÑV!»Ô¢0š&‡¶¢©ç}Hc™jú]½K5ˆ¹%ZÚ….¯Á¤™,{‡×If"懩kfmG Èö è*š™Ó4we}€"^·o¨ìb•ÎÕ•à@€ç§×Ù´NA±î `V£*³Q¹³–©}]¬¹›˜ ˆ‡´;úü³1Z¿„ìÆUT&f»tyÞØôhhw§Iú6ŽÖï1)uó6 ïŠMEŽÈ$PcZ¦¾“‹\ôxÒL¬î[Àƒ»´~ÍÞ}¥Ë¡8$l aw¸íª»ƒÇ”d±µÇbtˆã:Wå_6C¤ÈQ'Dª^ˆI}ª¤êI5HF âö;•!ÑÙóngîÆS&asà+ejöct‚?î},×ÞÍÙèôZTEØÈÑç’æçš5@ ç¶Ðíðe:ýKHEÅl½:Ëòð¼!yíSLõ³Xí¹ö•Qbÿ¬­Ì’u%Õn*e èc]#<µœ¬ÍDŒuQÁ¹¨¤2¥w½¼¶ŒbYA: ìV=}¼).JçŠ\Ûã êÔ|£#ï7«4fù’ìDc{]Ôp‰‡Â5U¤óT]ªN5˜UG²¶„rljÜd”VW¸«Îc¬VÖ—ÿrn4–‘ŒöšÌôë’c´âé—!}R™Œ­¯=%Ï"k¦öáäE…m«ÐlÛ[ˆ©6Ö,¿2¤ut’F¢k‘íÍŠKª> fÓAÀP‰Œ::•©Vë>û¹ðß×st´—×ÀPÄ[¼Ï´åu77ê«Õ¨`ª ^–îzäÃÄ´iÝìC§²ŽîÚ‰Œ©IŸ fÜ{¹Xµvzqª¼z˳.TZ·"­68Aû(p2¼ËȲ¦"ßHï¸å~b#bƒ¶é?V/¼afë~í¤ÕÚòt>þTJÍ’‡Y(tXBÚè4ïÃÜ5Ëù÷ýÞö8ôä@Ü1« šGË4ƒjôüÓìv®* iÌ|·,ÓI`7ù]¢ûB;nD¾^`à‹+‹Fª÷0µ³hWº cð§%Ù óP¹XŒ• É3·‰V¹\p¨)qðÀ­åuFÇt:E͵EªcúÕùË2K"U8óG4õŽ{âxí’GX$Så…WT “±RR~:RÏVQßnP®>ˆ·÷·ÐN©Gþºl¿ ºQ~Jß(ý—)m8¢Ï‡"Ýl¯Š[“šjêvb5b5íŠôJrc>50WªŽõ`yTl±^ë¶RˆÃ–ÜÒƒ‚[tL}*gî4hï•k¬³G»n_QÆl⪵mÜtÊħͽgïÍijO˜:µXÍꮳƮ({Ôñò…Ñî¾ý@±Ë¹åôõžžå)ØZÏ­æ”1Àò.5«ªûµócQÆÙ+_[¹G~Š»&B5+c°-L–tû¯N}¬ì¬‚ ¢'Êõ"7t¢=ç,AOŠØWYrd¬ŸÖR«ðTÁ%¡ j\Mù‹ sk ¹(¾E!:BpQý䯸Dt8Q¡»{Uûç­!âåݯ­±•nZ¯».­TÕÄŸÐÝD» ýºa³†kÔ§vO’ä²ïçÊ•qEíå¥sÖ/þ$šÓ=pÉ|·xÓ/mMŸÏWÌJc¢½»­J/lîÒ)Šoa5W2»fF`Zå]66ÙåëêÎNŠÔÑ]pìДŠ'eš;™h¹^F(Õ5ÚéËÖi›è‘^Ûæ4ÚûªÕéX4ñ­_T÷À,ýµ™G~qÄÎÞ†Zý¹Äª8 ‰z`¢zÌ{/šØ½söåìØ­ŸjÚ—ŒSµ4IÝ7žpk.¸Õºgëñ›ãjÜvÜžõYeCNû­S³‰›é‚öÛRSÍÛ\=MÑìÏùwtÎ× ëXÞ ×1Öö×­OÍZ£û¾á ×Pç S{ÙùŸljaòÊ"\UÛwL»[ÚšÔBÅ~ªqµ»?…Qõ)ºC÷¯ÊFí¯ U‰¾ÇšEíh¦h­Ç⢡m+ͱ‹BÞ#5ÇÍIápcÓ»Íø“ „®•—7­*TLsÖê1_ˆ-ïÜJ°n}MŒ–:-ßtaV×d5! I{Ó$¸ª8ßöZz{×ôuºêŽv×9\Òê¯Ñé\ÚÖ°Ö&*yŠÞ'«Ã¶qvGßvn~×ÿxó`+›EÂ.Þ¼øôÎiQK+ú/)nðÎôi­µ[i}Pæ”1ûº( ³òœdJªqç@DØ#fÜC—ç¶,Eo¦>:>õÂÆÍw#¼z‡î,]Ø\­§&"}îð˜$Ö9ÏÄ4Ûnj-Ó¬´³>ß_4x&1T×ÚêU—ƒ°ZWkt†À‹ªh¹Ëà ;I§ƒQ‡÷fÙ§ö ÔévÏYão«fô?;üìãû°vïã–W°ÎávÏ챟=pÅšºjF¾ÖÑ|»âÖ/‹æ<ÊÁ¾\~ {>䦘0ôðùCBÑc­“z…­r8ÖöA›.e—½~v(̤bIRÓÐÙºÏ'ž"«Ï?9ªsg"š¬ïtµ³i+GpÕ‹Ô}I›=?`Bè¹gŽçaföz‰%ÖvÆLì”ÅXÖ²gлµÅŸÏùf.:Ä·ú’%½ Ëÿlõvß¡é›JW÷#¶=Ýdö¢KËëèËË-ZÇOÏ[u¦ÒÌä7o£Ý§y’ökoÜ-CH#WT$ùÜéà˹ïW}ˆ~^ózù´—N1³$Ï'Ÿpz·ªoB”¥äM±U`á¾7BÂ/L;ÐñË–3r"Ñì£ý¶sÌk5½';b}äKÜ;½ ‹Æê©=+#\Ë{ù@®sñòöþÚâ‰ï¯:-ÊöÌs¨òøtâ8ö³ÑxÍ;eƒui˜P¦ž¥Ë»h…Á½þÙØÅ¿ÞË¢Üq‹Qùˆ-ÈsÆ‹xGñ6)>\KðŠ™oz被ÉYý%°õ éÔÝZ§p ¶™oü1VO œktf¹Ñp[‹3MÍAß¾æEŸgfMÞ\é}j®Y¨QmXŸ¢å>™ÅTý­§ý7¨9ä¿^'¸E—Ní=aþ@Ûø`¢Ç¾ªÄõd¾Sųⶬ1û…>!$m)=´çÊq#M#jñÞð£á¥~u:sŽÊÍ@W™ô üÓ³ÕZl\âï8§“í;okž{á©óiƒH°õ‚vùêùoÏ7·@›g¯RE?1Wß}fŽ›N˜ãÃz‚zmz±Ÿ¡ó8óížnź֛54KÎ’ÜõŪ»ï15ï^æŒJi]ÛÏïåO+wî}äƒQý'öícFŸn|ÿ±ö¥q%úRƒs‘êàõ3Wlü²Uîþlƒï“G6ÇØÝ;Jš Gíú<£|Æž»>ïOعqOMÕ`I\ØÝöaœrVÇ>˜4~Ö|ædwmZ~c†~×J¹>&<ž¾ÁãV€ÇÛäìÌn¦Ç ú¹^ù±¿žó &‰ ^†SÆñÛëæµoLøôh|ê­ÚÁ±²!÷]U_6YÛU©pýJíÖ¾Ú?6±ÆµË8~YÎèýR“êàK-ÖÉžF´¯ÕËo!ÍÌ\–ï:yªBÌtÕ°$»«)l–.“ríß e·XÞã$Ç;ĶÓK#ý¦‡²1Â]^±›/zž§L”¾^3Ó™o±Fú4¢"Ë-β²fÙÞ»«ÃfÏ»¨Ç)ª(a£Ué  ‰•Ç ÏMÚ¶³YvY|õz\·¯õfñº}lb5Áªzÿ…k¦;/Ý~ËKeÛzí…Úp|âŠÙ©*÷M¨¢^÷S/•εðL8…ØòñED–.•9߈w-6¡±ÑÖ„s‰Ûº6ØqeK‘_£|Ná4u·èmåãM’|ÅzÖÓÑ›Gð¯¸Õó6˜´™<];c56FQ±Ê[-Õ•»­ÐË‘ïÔL°9íôܾ ·^î€2Poãagzéæ´ ¼â-sZõË5UWPZN«xàC…G̈ÌvjÜ8áÄíÔöq_~ÍZæ°'ÑëÁAÓ»ûB=ÎXL7 ¼W8íC™û3B[½ÙkjÓ †úR6pÔÛúÄ›9ÈxS­ˆ­£’3·iªI.ŸmØ66†«wæ—>wê`l–6ñ28¡€tµÞ)õþä ¿.³iæ¬ ØàO,x²¯}5 )ïr7`Ý+°‹'vm5ôg²½ÐùU¹Žã=ÐyÑÀ’-ÓæS»Ü]7AÒ±±wœq.í8¡ HÓðˆUqØša~¼1ƒ‹j6¨s)ÛMµy5±cb¤ø®¬¹ñª¿ÞÛ©þkÿ-kCwÌ"·ºZ͈®MƒÔ%ÈÉrjp3JÀÈw]K$š Zƒ.ê“úÑÓñ[G]ÍmÔŠ,Z:Z°y³+—x°1;Û<ºc‰×jÆlw½Éi½†€©èo-ʶ ga’[šŒ.Ë'^½¸ÔtcsÌß\Ìó¾œi|•K^X^´D­y´~Éi²¼\k…½»…eUÎdfæúj·Ñ»\3ÄDô 7›•òl ›~´ŸK…þ޲쉦ªó²!û4(“aÃÒðxÈÁy:H30‘@–夈3Ó#_­ šê‘“ÉÁ%«ÝÈ»¤^Ѹ᪡›~ñªp`?Êフ^^™Ú°\}¿Gœ£j…ÜîÚ*”+˜©›)R›Ï+_}Ê~‡Ñ®¢™þƒ5çª=4RK@fFºb˜±*††‘jV†®(ÝQ*º‹ÊT'|ˆÕ˜z¡—R”5áiƒ¥+CG«lƪuRwk›&í}Yk?ºlvÅfã½Jo XŠ#‘¶o.žiø¥2ÛTËå9ÊMw~MȄˠ½ÈU‡+R5 9´kJ §*.hoÊ[3Õù®:‚®‹+ž7TÓQP¤{ 3§îÊáÔx½²¡Ë¼î½Þóã°ágC*^5¨SkviE÷©4Â+=ûXWm·¾Ð6ñ!„br BK R=”¢ÎèBÐ(çÎçž Ýë‰Üè®i¦ÅªØIIL˜+Ï:õå-r2^€‰o^¾Zgí‚Ðd‚GÛÞ•ÈcÕ³±ê$€ï³vwt—ÕÛJ'ciÅîËBeÔ#R’kn\™ð¾7?ËŠ2ØÞ§f¸.¸’˜©— ªÙ—mK¾Ÿæ­Y ßg)\”XóåÝau¿ó]­Ø¸C‡ä¥OµcAÕN@ЊÄ÷ÚärbtÛºKM†·LÕæÚã…ž·š5*Z¬r3æG ©´Ô]kÍ+äë.Œ=™UŸ+kÄDãûÑåjCÀס mÃë§=ërõU Z±eÍNãæ®ÑÍ“Oœõ‹šuxšYáæ•œ£,Ú£-p>-ëi™Ät]w@ BM+SM~.G‘˸–Q £j€Í¯pû† &ÆUk³O åj¹ï />™ãE;zÑÜæuú¹…lƒ˜_Î:óH—hÅÑ»M.Œª”«y8d Š6\Ö-Ó2¯kß„ÛÈš ÝË ºÚd{eS3 Š.Íš±o·¦ébð„øjãä® Mò'ÃÓ¤Jsü3 §2DOµÎdH®æ¨Ô¨¿¿¥?”©Þ§âq@†?‹K9|ìv®ó›òÄ©/"»?ž>ÿîµXô:êJ÷ U…Ê¢$¤áñ>~~£A >D½¥K‹¼ð™š!}*~¼„~ .½uwbœ‹ŠM‹7ÏEu4þUëäØéŽõÞYçrhbMR&- wéÔ«‘l~q @ц}¢¼ÑŸ9†.®V`Æ)˜Ik´ð²]cÁ‡³¶[f9#–Çè}6çP‡I—¼–jæü i΀ (¦·¶MˆßÖS:Gã! n›¤JW€SßçùMð ÜÀåm?ô<©­°ônÜäW,/¼®3—ëÛ×N¦v¸ý|ËúàÆàÔú;ovjÈ»JŸ^tƒýxe·³¬júçW{~DâgËok‚ÀIÅÔÔ5:fZ¨‚"à2­÷ jý®¸™²*ïÒ¡ì é/ŸJïS6Ôk}òeë´J× ¡Š?Ñ/¶gõ~¼zjѯ[&Èûu'ÝÑ=îL[ôå‰-Lù·»Yâ•»p†·çüÍÝUd‹@Å“èT6 ‚Èt‡ÈàRH žA ±é,úH»W ™ÅãrITˆH&Èe;—E§ÒÙd¸OÂylÄûk»«4ÒŸwWHuw•”,“€?lO‚oˆÄÉqbVÈ—€R1?ex“¤®’±Sq`D² ä& ­¥ ‚¸ŽsøŽÈÍ’X|¡˜I㓹ÃuBhž€/„@HÂa‰ ÉpJâs’ÉBÉpGH YÃÃÀ¬p`õ;b@̱¾o˜ú·V•ÂúQ'ÿ·¶eâI‹Â"!6ƒÄb¸4Bã0¸d2™Ê¦sx#Ï`°ÁcSÙ…`4ˆcE!±I4ˆÈæ)¿ÿµm™t }„Iôwkù'‹!Ø2"‰, ¶‚ Y JøRkÝÖ P)·%É 1,+_Ä—pøÂ8ð¥80â‚Âd!(æKdœ6&X&AB._"@Ü †4Y ÿÙƒ\~œ®ç'ý@üzBˆcÊ068|H›”kÿ•˜ª»˜%„”[:a¿¶‚qù¬$À‚8n!àÇÉ,0‰%‘°ìÁ–˜_Áð)7û% ãd=Éø’¤äa¾íÁ$>LÖ'_*wìJùü&‹9|%GÊ6²¤¤T0)Y£‚¯ì-„%€¯•üðy°¬0 ûað ñ7•|°°‚ßD!1K äý8ü…%æÈ¾³,áÀDaUΕA` _Ê‚¾©®Œ%…g‹=<‰ )€õ•È„ wù* t—Á N]|X‹J«°ãáaX2±RùXõÃWJÖ”Áÿ~`ø7“þ€²0;Ì¡ÒôÃÿ&«O ›Qiï6ª“~2}É”?ï©$SþþFuª#™Ž#Sé#lT'Ó1ÄaO&ÍåóøJ—kþ1’ÙðÿÙNö¿ 9ñ,a4ÒnN2— ñ <‘ÌåxˆÂ…•E$Id—1ânc™‚'¸ ‘GaÐéƒË"’ˆxL…È\•€gÿ,îQF8$×ý?Ïþ†®Ÿš€@¥qyx —ΣÓ8"„'³ÙD<‹Eb±!‰0â¡:ƒ §"t8m¡‰l‘Î#B$ˆBl> @‚(<‡8² h#œ¢QÖý›þ×bÓ?Qãÿá¨AþÙñ¦vâ+·âÿݨAw$2pte¤ãMðâ`؉(S^ˆûŸnú!$pþN&ͳ :•Ë"sðx6 Χ)dåq˜F$è‹T"—Má¹T*•K£8 ± <&Ħ©4 0-“fŒ%ðÄis¾#Áxp’Ha@ãâµ1Ú>Œs¥ß·IIæsmµ1iÚ_‡ˆá<³aÙƒÃ*ŠšÙNQöQ6€gœL,ñpEúˆ øÙJ€øçƒXʺ¿ š#žàˆ§ãð´‘R ð-…“á06ŒxÆ)__Owü§8ù‹'•~»è6{l<†1ƒJ Ð9ÇXx*›L†FÄ žK$X<…Ê#Qá$ƒ@dáá•8Q $.Lcsè$*ñ§‡’~rðíÿÆa#·daB²Lü¿yÜèO¸üÉ¡.i„—ôwSÜa\’i8*6.é0.S`Pþ!#yâä$p2÷ÁÉ ñaÏp'Y”ª×A ¥(Óÿ?Vþ'yô7Ô‰R$°i9Ð_Ë“ïös忚é—œ §#ã'§©òQŒü÷At$PqTâ)N"ìý!žÈ Â›Î%“X<Ä!Ñ 2J'¨ðÊ“Âfýä9øÏ=•:‚)¨´?æz°¡¹Ê¥»øíD8 !+nx)çõ<é4o ³› XÒß»â”=G’ÿw1¹ß³ËødXeÒxå“Q)8/€l”I žL`¯$7gù†øÌ ]gD€³\ƒ‚\g„DLÃÓ¾ ¥@_Iñ“De &†Wg©0óJ žAî>pW7_ߥ^¾!3<ƒƒA¯™A +Èt ñuõw ™¡AÌ™Áž8 †”l kñç:†sc1l#X\HÊâ $¿I®|r$ÙÀ© +‚MÌøÊhÅ•¡ü?4Ÿ ^h*å„ÿ®É) Ÿ¯<¥°Ï‚š2 ú“a•Ý·­=è+äàìA nÅ& `åK•Ðôâó`ú^‚dåS ·d‰TÙ<ÀñDx ê@ á ö`h°+NéJ¿¦½~ßœ…ûo¾t]?ý{½Ò•²!XKP ì?”qäÁÞ$æ›»QÞÖþ–Ãs@úÕóÂÒ‰!x.‘âà½tÚ×Z8•þÖ ')e Kú LGXp œê ŠX°†$Q_+fÛ*‰ý±êOÔ¸ð@âäTeË꾚JIS§VV¿ß¦‚S>¼Hü3K ˆ‰ONN´qüÝÆüæS•¢Å(E±Ó@ÇoÕJf¿µ¿2ù»é¶ß‰‹!‰(Ölfn2¸ðëëp~¿ ‚_+pñÒ$L^éK`°I•Í`FIØz8?Xã}uáÕ0Jç)«øÜ9Â}û„—*ÜøVúŸÆK 6ì–~¤÷Õ8Ö¿÷€›|½üvñíCà¸éwü+0~7¼¬ù9œ²‘Íwƒò¹³m¿k%1dà ûô8ÈM¹°!àq$Ù}fÄðü™pÆÌ Ä+ ‘JÿvAc|½ Ó½¾]0¨_/¼Üþå‚Nôr¾ ¹{¾Þ¢yQ†/$70_Æ*^KçêÁŪˆ-˜èÑN.À8Ä1ÓA-@ý¸÷âZq $G(•æ­ô^°ðJlÐoÌsœU––}ˆ} Í×·Qß±Þ—a|&O[|ñcéWºWÇŃE»ÄS&•L[°þÔçÕÕËW¼Ðܵë9äÅeµj£í«¼.ùWΞ©z¦«[…sÿPøÝñ⸲MïÕX5Èé*û‡UnËÇ\Yìwê+Åí´5,ì-V ˜iÖ'¬òëŸ1Ó‰3ûË©‡5ƒ U.3³¶ÔxëôÎQ „[Ñs|ó+Mbo–j5ë{å{¦-É÷“ÔžsÅyE)^`PkαZ‘‰:%NÍ«CŸ'\ø:ÜSå¿Ï7|¶nÁgöå—Vø6Þ~íky{†úKp†ÛÒÂ/k7tºN%tŸye¬Ý\Œ¾å¹…,YzLsƒv Ý' U2ãMÈ’y̳ž)>O»ùÐÛW1˜ÙhäçÝÏhÛ¾Ž†/o¹±p9<ô*ÒÕûazïrbH·lAªÝÅì.öÒo·ªk·®ÜåµQ)®±I3Úö® 8ºiú.c3º:h"ÞY³Õ%*‡gåG®hyô£mgîª,/rY÷T}nEW8›F?úlIl>ñtŸ°å‹ÿô ¿àÝó-< —bælX>ä°ÅogÚ y\ÝŠÉAa³CE¢A8rT/\P±p™Ö±,)€YwìäÚUFydƲ5£÷}P[¯»ds3ÞfR`»^šÏšBÇ5ŒÕ~ú½Âg‹Ÿì·«”ùo—«(çPì8‘‹½ã›¥wÚÔecºC®Šº±CζbnY\ÖÞƒ-_µåî†ZÔàKæþ¼M9ˆÐ™°U ®¯ %<½tSPPoce¹”…åß^<önS¦¾Ö#gņ•Î.Ñ¡ö»džÂÇ;o‹PF2÷¢ÁvTó¥º*B.¬”¯þeœ^4ýIÃC„¯ÎâK5—ÅÆ5æcó‘U×<-<þð’7h_üJ»z¶®ÞXŽªR X ;ý¹zôqàÍ=ãšõ‘÷LÄÛ6¹¹¤¨àÒòù÷ Ò°5ŠW.XS€Øú2´±œ0yKo™s)âñÖõ‹?-¾ù›âßß|ºÎ¡lyP¸ €pi70+Q¡GGn›–úV¯Tÿô"FQ£w:hÆâKí!¹V­êz̨Q¬§fkb™¿U®­Æ¾!``{×Ò´L¦Ú¥ÍBÅôÈj§¦kú>«ò8®õ¹•ã´wN{AѨ×Gq.™Þß³ ©¢ÈAŽˆÔíeå™ÐûvW7SA§¥gçsûg㤴«1kØ›Ùíĺ~J[w#}â°º!˪g„4Œ¦1Ö ã7°´³€Li‹mZ¾Ã&éÅ—§ïV„ÝÜÆœomè–ž*/÷«ÎŽŸïgc©¾.Z­;.Ó!ñnt[ìSRe^^’5 hh§C,R–¸nmÎB´È±¢¬BšâÍ‚Ö0g¿Ï ßf9äOmÉüðÊ&6:Ðò¶OíMæ$±ºm{iwwAÜ#S •õ Û ¨š±|[Pþ¤ÔÄL_íèŒr‹¾ØlçÒÆüÄN³sÛ¦ ‚žÜgž}ÝTU¥^ʯë™|¸äS£/ïj€ö–Ü]¯“­jOôíLš:ñúóäÅ“rZÉEf|MP™¦Ž 'hÌc>T÷°ð\áæa÷&¡òôë‹g¯T[eÇè¤Nq ¾cv|’ o–áf3á‰Á‘ÅoyÓ>~swŠÏ1ocæ±ÌÍêò¼AØïU#C+ÕV—ÎØ~£fÀ%FÝu7[)¯ŠŠFdaË&¨L*À›Ñ‘×(Bí܆ÅÙÏ¥-ùEþÄG]Ô=ô`”à§ggô^¢Xc¯$°K§VuÜm¿òÉœ+'N{ömàJãxû³}*€z˜úBF˨¢&Ûd,fc™«×D+ŠÅ†é Åz¹V;wåÁÕ‹Ý2Âû5èÍÏV:¢ÍMÕ»£1ëòóßÚ=u›ºåË‹/û+|ž•€^× f¬êˆ¬/ÒÞóeSb\{»$“³öä¿Ñ¢>· L,W  xj1±^t”9[³ÔÞœŽìH\¼M˨î“Jò}Ë3ÎÑÏ8úš¦Ýœaá=§÷ùoúïQ|ÞÆO–ÑîÌ<« ÏšXÓí«™söž|WŸ¶Ïr¥ÚV@_ñ(¢à6Õn©Ùî¶•¿¤ÜN^»žš>¿M»ewÚÍ{ɵ1ŒOÃðY*^-à5€M‰w‡Æc µUú}× AϘ×Ë·ÍÉ*Ѱ’ûét¿ ªÛáÁÜ. oÝ[Ké+Û`¢h¶‘¥•ñH?¦aùíAÀóCDZ.,мL!ÞÊõäãê~ˆ4ÚQT#ròuÀ¢¼0M;G2u͉Œ¨ƒ¸êŽjº:úÖ6ñXë]®9….ýÁí6Ü3=µúMí!¾N1à²S?PSÜd>óày¤’›_]m+£M(Ùèœvsæ¶ô÷ŽEÆ£?ì8‰4ý8j,~­³6âUæs%kÆpŠ/Øl0¬×³X²QñU¿ÊÀr]1³J)Pœ‘§4Ámx’ {9õhŠh' ¹Äì¤{T KAÀ°È£Ïs3I ³áù`«O‹Ï¥§N}þ(Ç©ù%¿©¶*äÒ &8šñöY?bû&Ní+¿dÆÚ‹3ÃÎK›÷fÞ⊗[·ž'W³¾ÑÛXd6:£Qßz…IÀ3ô§C»°)3ÒÑÖ0èMnL>4?ºlnU©Ø­Ç~ÕöœY=‡Ó öï‘Ì+£Íe%v…qþø¬Ê¨“GßùÞ=ã*R $’#¶©GÛ>ÅéßÈ3f[!·OI˵ð諹a(”×ÛW=[ó+ƒ€Úoô¬³ÝßÛÍÉ©\êü()åÝ–åË|ûW$ا“O$̺%¬o@ðU¼‹U~Ò ù¬ êêÿÎÑfeáQÅ+¼·+Zúfw¬]ïŸWÑ¿œpºØwb•›ß‹<ÇÄ#c²—‹ÆùÛ5/w×}¦ªRøxË»«òý¥[Í, n–£¡ó‚Øx_ɓ͓N˜£T±ä¢ÙC,œN'w=.{}Ø[‹n?¯h±ÎrMÀqˆ)®–Vj·¦ 4*,ÒÕŸq›QÅÏ㛳زQØÕ‡¼n4½VÜà³ì@­¬lª¼áÙÅ eæç­ÌŒˆ`•×´7[ŽÂê~À!€‡#m&®ÔŠÝžu¶cu‰¬ÓeþÇ Ü5£¬zêÏ¢õ«Ÿn{vµ÷sÚ´].*t< ´³Aã5Ðǵ,›]-Ï_&ºKߢX\öÄÇsZpÏEÉî×( Ëh)öçÏ7³åÈñ>ù ÷Ü ý cñ<…—®R \9"YÿæÒG& &»]ñÍVHïíq@JVWRì“  <üߤ_¼là…™2®eÀE˜™XPå÷dç[EàÑ']ÃÙø`™<¼.åìŇž^å¸óKû×9^ò˜½»­5üÚ¾=2›ˆñ©9uvz\ÃåØ>9F¤(Þ:‡µûƒµ/Õ^Þgj(\º…wT­yh4qlýÊ_Uüž§<ݽ]˜U¿ûØèöóÝÖ»'g~èöì1ŸÝÿÞÓÈú©ª -þ4ž«žé!Nñº÷áÚQ{él‰R µrÄ2½(ØB `ìF>ÚVëš Q,È}*—æeØ*;ñ´Â»øèɧÉoä6>£3š.Šºª<å|û[ˆìIçÎM÷ÊŽåÞ)Ú.GXêÞ¹âM·Nñ:²kJ¼Æ&†õ§×ÚŒ‹OÜLðßxK4Aµ”>Á[Ðáh–ºtæÍY³=\B«Î¤€í¯DȦE^ö'CîÏ(z.æŽÎª"k1£ —œ*zX×:ž{6ØlMÜÆ»A‚êuŒê«ûópÛuuç|X™¶ò™§!Y}íq‘Õê}ÚVÎÞJ8u£F Pןª‘§é§fVöö0©fæµ;ElTÖúB‰qä·½J×/”cP¸Ëw\Æ.ÙÙ[cáG¹¼ôZ¼R }‚¬™±”Ð`Ñ´Ñ’Ñ‘ AEqKülAËÁbæ‘ÐZ/­`¢ÅåÇ·¥;ª"ç0¯ëœ'Š`Ë]+m=°@¹Ö›NÅc99 \ã~!w"Ù¼?»ð]^ÜÄ¥/½Ñ3×½*SõAÕP¶«»NñOƒ*Ô̽’Ëû¡†Óo>k %k..ˆn¦y[øÙª’×a;9Ýjä‰E;TðZjê`H¶ì «È~×ó Ô0BÐ^âë”/iïó˜/Zû }ÐKÙᡸ\'Û+:"G¬×¿®ÈRe 0Õœ®. åiÔ´ÅêÕ×Zò‹óGœ»»$eÍ'âñ®<­Q–v£´rã¶ø\*_säÕÆM½ïvîîÎ$SúËuš›54œ(9çkOà„\ªïŠ´!ƒï//.2Ä]–Ì>­µpkQäŒÌæºGàƒÄåo-î^ìhÓsÕ3Þ¿NKh1ÑJ»zà\ë†è´ a_pò,yö‘I}tŽã¨Æø¹ŸÅ¿VÒcCvÙ·÷ÚÜë"b¾øÌVùe_{x÷5òÍ-³B{Jˆ.“ëªZ„†ñ¦ÇL êVö®ÖT @–û´E‚*‘¶Ñ©«6ŸúÑ™Æ ㆋèZÛê—óœjgO ‰ØffWEä„’õLü'•½µÜf¾°8´aZTÑ©Yo‘Õ¬­H3æº5ОÿAõ7£ìÌ^Ÿ®­¸6¡¥qlì¾wüK‰Úª…ê/í2ͤ veXEoÛ¯]€À4-ºßz­úà—êýoñyËE] Q$pzÿDöËUë2, ø¢c^m°ÃVäj}!Õ´ß`´R :9âÔ¨¨ÚGzJ§€je¥¾&8ÞÞ)æ<Ín).v0U_O3O¶\wn‘ì×7u¯s€îI%…5µ ÷Ϲ…³'”Nlзj½X|΂ývûÓ±­ÛPÖ£³üry±Ç9«ï}ôº ¸o ÷™aeŽsIÑ#ø|YhmäÛÙ>ÛŽäo1lR'È™M…&Φ•ûýžÎ),Єö²âõ§&­Ò˜±Åþ4D9€:°¶wŸâj=è “eùŸW™ñËÁ/z»—v õrD›IaP¯dí¨+˜­{¹ì\AÑ;­â)kå† 2wKåA\tÐÄW6m”ì¼°Gì°éÓR™ÜK»JϺìýZÖç±de¡ˆÿ‰¯Žkòñ¢~cŒf” £”ÑÝ]ºÑ-ÒˆÈèFZDº‘nTºU@:$TBÀÄ‚/ì¾üÞÏûmŸóÜsÏ9÷î¹DÓr±ˆ€†î*€A:„þgáxÙ¦þo…·„Åœcª)Y´wtª¯·dÁv•Íut,¾Î¦1sJ¯æì¹Y¿¿>\lYRAK{™P„þôÙ»$ÄÇoˆnèaèòC×Ç2–_¶VF†F9Ò ¹„Åd=Ãò6áÏ’í¸,ƒߣ‡Æÿ(€n²Y§E= ýÇ+‹Qóà/Ó€†‘{Çɹ±ÙdSS2Kcï•Fì5ßߢ”ýéßÔÆ;A¾o¯ª…-˜°R{™x € nÒ÷[IýÓÇÍúbù˜’šï¼Vpö#ãy„l¬¦ìe:?3}•þÕKÜ&øW†3ÇkIãw% øRŽ D4•™x¨SEzûÏ’éo*[Wǃ$F.õT¤é÷ÎIa3âhCÝk PÀ%ÂGÚ+ßÄj˜Aç›4(¾ìØïh½¿€ºñ "®5ÖXKþmÊ’·pÖ öPE‚‡RtÑ&çSV¨ÔmËÉ”ßóï Š9>=ÒAP ˜ˆTT ÚŒ2e([ŽÝ9¹š»<¾*ØŸ3´:;y‹/²ÃlX•N\ÍCÄ42ð Öù8“–@Ó½â(†*!az§ã.¬à)hß.Ì@D†i|m+Ó˜PVª÷ô{,õn×ܺy|l‚5#ð¤$ЛVlh´€¿§BsJLAH•}Ñ}ß„c¿=MŠ.vŸg :F°%æCû_@m¨±¢µÏfˆÜªe¹‹&ÓôðAºq±¨\»Ì+›s’ŸÍrJ•]îWµ€e®vå3R¼"|‰ñ,q!Ñ??æÀ50ýxéõ²»óÌÛ×…¾œýKT¹p~ƒ«êÛ@E%_³67¿½JR”Ì´^*®ËÓõ¾“F6väâJ„¯VnH /ñ[lJâôqÃLJM °ò¢DmÛÄA‰%v'0«§ÿ±lÉ =^q‡Ž$ó@—òD^g<•ûßn» 51/kÇ>eÊMb…þÓpŸB¹ ¢½~%’‰˜i¯7JÛ˜ô#œØ­xø¶2_{¬dÃé©!‹³ç/-ö6…¥bÄƵIº `—kZàÎXOÄàJĀϬü[a=4鑟"¨àFšÆªŽG³6í âU¥f|…ÊKYÓíy©rJ~“ñû tnÓÔü‚зÊýÀà4nF‘¤ ãx3˜›•uxí±«ÉÁjWŒdŒ‡s’pë!¬ú«çù%÷Wû ÿjŃ:˜mòv`c\=2 hÒ˜X÷ŽSÿOƽÌ×2ÚÅäå÷eC”¯Ókà¨öëLÖRè—+4ò— ü¹°JÒaу9Â{:õdUtͶ¯Èï¾bdYÃ3æh™ˆª%R®­f‹äLqÖÔ’ý/‡·ž¼>¼ú£Öß·Ç@¸jìK”ˆ@ÎäíEº¯ërø<_x-߿޹Bu‰Ñ–v&€‘#ÕÑbøAí£€v‰fÌ#ï¬þ-ëÛð JÄM£w –¼ö”UÒjà¨+ï †ZþDæáÒNtünK–ZëhîM©©j~fÓu44">íäê6§°?7âaGX?ìœâ¤7˜9ãOÆQQÕ ówkbÅèí?º9W€Õ~Üö¦þ›g[ÕÉSü>â›ÿŠmÞ9T]áÕˆhG--IÿW\½õœ„T.ЦÑÌêCÍŠ2@Ýuî› 1›á¾^¯µùH)|Ù“·äe~™‘‚:õ¦Ó1;ÃOCɦì.d»—ßvæ›% QåÐÒä@Ч'\ 9èNÎ…žÌPº[ý)æä¸>qewWÖñeÄ#L±^áãc[“Ì4é06Äbµ˜Ù<ŽÁ̲? Ë)²)`ï~´ô©Â-ñ<+æÌúë+éO¶7©ÔKæiº”„ç&ô^r™‘ç V+ÑèÜ'ë*§ÊñY¨jùéõcªd-5úæ)›™áׯк¾"ü¥,Šñ¤aQM*Ê*ÊX ¸2¹ÆÂ7@ ¬h-ás(èü å°'*WÌakôÁ’´²…ÛAC¢ÍÜøË\‘äµs?rs·™]{ ›ƒ)üëà_½ƒõ¶ó¶½³†Ñ©ï–¿6NÏ‹:¹BVÚMÊë’>¯Òé¶®¥µ¯ *o¥è0™Þµ¾r¨9Üö< šÌYæû L­K¥êD2„þºBÀ¾qŽÌTÔ4ÖvþñK©ÇØjLKé‹5bsºÇ¿rJkÚOŠiGÔtP”B×TyNS¼–ð?ÕÌé ”2SLzuð7 [•')Ôm^T(„Ëv&ŠÍR¤»Ñ)Všlóº»FÁÐf1ÔC)*ysE·"öѰm¯%z¦kÖ24¨X(øZ½’C­ÃkÕË™<åÝ£2ñ€Ú¬×ÍO_,Êðð½(Ô‰g€ÍuÏR¤`üÝlõ=æNkæÜ°hÇ×3l–-tt°'†'ÁÍd§W8g‘ÜÉó>ÝǶ%Úeë½–>•o:”·gUæ~à\•(åBåZàË]‡J}\¼¨A&ˆ«S€j 2 ZkK½©Î—£jµ‚³c[®/è.kõ}ƒ8Í•¾ÇÞ yGÁkdù2³ÝÝ—fIÇ™nK—Æçz™îË Î5•þêàóé꯷.X=êbi*²æ-˜¶)Œi.'v¼²nˆ¼1f5Býý’¹m—K…ÍÀýK¾o'û½>›œo<9H @ê2^Ô_D#Š4aŒÐŒï1 óÂñQ@Ú^œzËPãJ&–.(×Ïe=³ÇfÉE",ƒp&?tôìÕÂÜ&¯Å)W8tÊ…k[ßRS Gã,ÄÚž¾¢x43Q÷%£qvHmáhyææ—ÑÇOÀB–‘e˜ªž8_A&­­¢ˆ¤]})á (±J-¬q)kr]Š«$•)U‹¬_¯ o(ܸ¼˜ZÒÆ»ÆóP?Ùry¦ÊÎ Öµ|¤v3ÛßJÓ†òJYtñ°²œóûýÅÜ*vUsT{ƒF®÷¬oýÚA¯¶EWWùP™‹ õ3­°SÈGp–+h”“Ú2<éážµæ¯9 QýÅ_%;ŸµW¼åëw}ëˆnÔér¹œ\úZLÁë`&÷éIXÕMúåˆ+¹ôJå[=’[Nd¯¤ÚèÁ]ž1Ò$2æ¶é7sèUahÅG¡½Þ›—E sl;Ý™²jIx¥¬ÐLß—ZpǺ>˺’îd®‘¹Mâ…Sç”h¡ð@AÑ×y7_Ëö‰ÙÔwf•0VJ˜UÙ`„ÍaI¡±¶O4V.̤5Gä·ßm\7콸Z̯º<稱’‡2Žf.{å£L4zy¯•¦Å$ð0©u¡‹ç’þÜl8‘‡-xÐ5íC§³¿þ=/bNRKdaxÅ’p¾»‡î¼^™¬é™NXÖÕHËPùE]2O¼›2à6v­xã©c3…'îNìÀõ®z˜ôVnáVÒV È£H‹3UßàarºƒüôŸThMòo&Æ6RZ±û„eÈXÍW‰-ÿj@]\6=P6KÄÖ© /2dປ;Š €Dÿ¤Þ’,KvüVL-|meÜãþã‚¢{¥¯Ï–:¥\ áØ\mÏóQÞÄ[úÍ‘®eÉsƒ†ÛUËp›ºÌªò “Jö9hÏ:: `¼}ûçzˆm`ù8Iï'÷[ð×צYè^¦õã׫‘#gŠ{|ç[?J/öŒ.ï°vH,¢Ë‚û36ÅѽÎ_êl-ò L̲#Âtæ|]ìwü³lv²dz `H0"”›@¬äS²YrFÜVØE«ûÝÑÈÕÂÞ‹­sÌÊÍ5ÎQÍ3•®Œ`ÒûŒX5D§;K¶ %F$·͉2µ¹BŒxz±Jضµ’<Ü·ê\­A”LïÇ.Q0^“8ÿÜ@×6Î:~G}] ’R”¹låœïZ¯êí°ÏÐîìff±/Õ'ì‹yî›ÁHÉÌNÏ_c€7qÅõq“ˆ^fÊu³\Êe7ß;Ñ5¦lüA#ÆÕ³C±êÕn±=&Nß©6´Çr/ë [×ùBZ9¬Y÷Ù,9zHĤGZqD@H<´ÎrºYŽxžêý@Ø^q||E÷yµWõΈ—¬ózèqåƒ]ÂUÑ”¾FI‚iêHÿ$iÆ5å:OÏM»˜¥O:x²ÈÎ%îíÆÑ󇳩ÜûŒúQ”#?ä`6FLÚ(9¼ äG¦}ª·Wä2¦žXï]úù`xf5žþLÖf¡Àé¥gTL$soEÁë^uìÖÄR§\!ê ¤ÓÖTò%FxRý}~aÿERÈg[ÎÛgCr»Ï(ì£Ô£#ˆÆê†MŠT A·È)¢_eØfvÕßøb v›ç^×)“—å =åó“/ba2èÊÚèWÕÜ:îpo4’‚TÐ-·iudÓGT¿8j’ûµûâ]sÇf©ê!yk-˜öc+žÁ46¤<±ÜéCWèd˺bÚÞ ^ŠtZ…%Ž*ì;jžñ²cÅA%ÕùÌÑý‰äGŒÓ-›ôb¿Ô¹êvAá«°–ãP"½ÆÙ}㾆°4Ùšà®^ßG?r™*RMç6Ð ’ÉœŸÚ÷©d¡è6! U$Ò;ئ¿˜@Ôô’Ê,ï¤IM'Í­ýÆ”7ýx®¿Ýnø©.çÿÄüø‡¸T†=¡7ÄÂëT±édþ"¥×šVˆUîBˆÈ´S[jARµï1|«ŽYÊ-(Í›4”¥j•l¬ î.’ÂS•.¢ñðPÎࢤ!i Î.ÕØ8ÈV,üQ;Y•{AÍÔµµå–‹6ië÷)"¹¹0'ÓàIÄhÉë ýGfÆÛ}Ém#¿‹q±´ñÆkiÔ“"Ih•gòJeäãv-cLà`«^%ß§[´ê¦È(ïÜñ¬VYñžÔ‹º}Fáž³ÿØ%@Jþú4&7ëpR,@É}ïnÑÚKÇ_,ëb•ÕOŠyÀi=q sGè—môMq 5µ”?Å{঄Sÿ²]ÈnÅú6Æ "R.5à¢Q¦…ˆ>¤þOcueÀ O ñ>ù|ÿôøõÕ(˜v¡R›äÑ,ï,Ó¨¬®)^¡å)~*ícޓŠJϘžoáíGÛ§¾uÙŠúY€:‰¢=3L§OCU¸^ß³øV«ç/W¼Ú! >> Ûߘ¼VK~…‘Ó à“Ñ~ûþîÝ><©3 ôáG‰ u*ö¡mÎÍnÖí^ÏÉûHñò@Ñxé™QÒ(‚ÿõPmÖ¢üìbqÚɾœOMl!ë>b6U¯òs>$F¹„˜CÛãä܈SVŽQ•WNünm´ë~¡ÕwW9(¥”sÎÒôËÅ ’¬¾+]*{CÒ/Ï}„ì±UKª<Ó ïó© &RÅOj?HÅV=y—¢bî¢}ÛeyŠìæf›ƒÀø³OÜ—-+¿Hö|ì²>ãTóXÑ™V†=IGç-ˆý‘8!TŸsÁ°Û,A<ò'¨hüòæÓé)Éé{ÜxŒBòU°sц"7æõ©’ãŠk.T{„×ZBTmPÍ.;â¥KÔ„ˆ×cêMáA°ê¦ÓWبKó0Á›Yém¬ÕÞ\@ø³â`¸[OÖ3æX€lºÑ>ÍÖ§È»t0מélKÏ!/y«éÈÏþ-¶©Ÿ«‘ÓÀC•r*7éÍH'ߟª–ïH³^=á5 =ŸÃk«ÏêbHÉbæÒz‹‹êæ±’£b°äÜì’D33`=åµ0¡dµK?ái€-h¿5;´kš•dÈ+N¢Í_[ÒÌYɉñ×äUôÃÐ.mÒ¶¹ÏTcj­‚âÆäà6ÉëÆcêà 6ÝJ%’ @Éð¥| Ö1Þ­ÄÜ>Z½UÍE£QU/ñ=^SÃ|§F÷ûáÖW2eH£²M%bgg,‰¸J‹<ó‡][®éxËŸBbšðŒ—ŠÏòûœÁ íBËû*ø–þvƒ}k3E€Fºmãñ,ɲ]Iª½üÞð¥f’ç®è£ÂÌÔlã::|Å•ø×¬Îš@°{öyÓˆ.ªÆ;4þˆ¯Píæ&K­ü1Ñøfàóhë0 FöóZP¯², ºª Ê¥³[Ëì)Õ4{ˆ,ÚÌÞ¥LC <öcB"O”ïƒ@Û¢Õ¬à\þÍ7šDI€ÖÈqE‹Ï6‡S†¦!©B¶”4I¨¯Œõ01FÅâ^õ‚-Ùµäü»Ò{ gJÒ+Z[lÐà­l1n†¾ë–ùÝr̵å\Qìâ‡ÅµVÇ~…mÓA+6/v¶Çþž¡¤r©© ÉÛ³]§]hÿP ƒuh+2?ý]ðñ¬ bãøÐTXqüû6o£Ð\ÑEP(d·ì"žˆîf\ZÍЫ‹rAV%º WÀ·íB–Ò¦P N¢t)’v¢®'²ÐøÞ¢¢‚UÓÕâQ[¶‰>FìPoÔu½LÍB²wÁYÏË›bà4`mÙ¯•O41BŽ9Ù$âH{k:Ëuü‚bjþùÍï^©–ù^ª”Ý‘åxeU64K£8ï½z‹À‘}é <_JRŸûül»wOé}_ŠÐ|ŽA¯W‚]2á*ÅȬnïÎZ¼³SüÒÛÆ¢›e=†}A¡•}Yf6ƳU3¨@ì!&»›žòù”5 ‡¹›|· ïV£bsÙŠ2+êéBƒ-‡µ"†Sx Cv~šãà_Âʘã¨èÓ’¨¾Ü¾¤æ_ÅŸƒêI?¶OÝØ?±•ÕsGzcR¼F<‹ê™Ò|¬S"»Rsâ½ÉšwÙÜœNÚƒM7½w?[úH˜=Íl–k€øx‹LÃeÉNGr óŠj$w“éòÞtÓ¯a‹™§x2"¦éøÅx{FØ7%Mÿm±Ø–Ø©ÿn‚kšp;èXW5ûÝ^ d<¤füaYn0[Í›ëN†ä’ãUöª÷àHÞ9vl7‹YÄï–GÍçÕ¯ ƒ ÎøãäfÜí2ÕDiÁdZuÆ ˜ÿL˜ƒuÂ=¼©–XÓ^±iªþ.&Î(á¾a8zŸUc—)ÃáDª/U~f@mI*óHŠÇŠÆÕj( I’@Ðp­%B¡j`²ߙ֭­|õP =4M6ÎîS%¾Š e¬6æ+·¯’ÿ_”c±È§cãÞª)&Š‚2ÀEWÄ ã>ü°,Ý\=f4ƨuHªÀ)ÔcÇ¥£@E橳Kêþº,šJãy¿qV­ï]CÞI l¥Ôl4É-…x}æ¸ô¼G)éÅ#‚G‘|x§v- ÿ•`ÃíhÉÆoŸî?p!yE9×äÈ®¸\ŠÚVrzVµý3é’†ðÎ}Ö*øx©(úk;ãõ£üémñ¤%ã}iQ-eu³¹'x "(?>úîXCЫ c­¦³`—V’Fö¯¤9í£!Ófö‡ÄºOr(ðª‰Õ€ %¼C1΋ô]±!É­oÑŠ½ó¶x@SÖ-ªz¿¦æ ¯gÏ­Ðp†ð‘f¥•ÁUlL%Æ ‘*äÝz ä¹Ñ‚¯««Rä1Gâ¬@l‚ꀄþûfÕÐȤÔô¾ªvcZÅÜ«r¼ÚoÀGÆ!¾@ç—ly0Àb,€<¦DòÆ‘ûÀ ¥=Ô³Œ9«ãBûù3¨ª R}aí=e•*ÚðÓÇE¾›%×v-›¼ƒ4¹¸öP¼y7ªÎõ'\óµôn7òQ)¤,1ÇÛó 9ü÷Ý/…Ù—â’¢1,Y‚L%´Èã[¿J‹+û¶[×´by‡æt¸ŒÎ¸õå[Ã/c` ²A•J÷ù¸ÛoË ²-M_йáp¨:øúÜéûLÏ Y4×x¼¦±TŠƒœÞåÕU› @‘„)AËáS|'¬¾ôÜ){AúT‚¼¶¯œQÃ}Àa×Þ¾EMΩÊDŽná ¼X)tÓ.æ_ÆÉrádáÐ(È=µ›ž.ÈHm^,u.k+ÓÅQõ¬Ââþ&ÿüP`A@¼”G/‡ÊÇôÁ »KÅõµé€1!Œ |ãJE»øÆÚç©§Ñ„c0¿…èï/}TÎYõÒ/¾ªÿáA$³oháòdô<ïTÃqœkA\$ ÷ÿKIŸ£Ñ{|¸ ¿[Žèb’ªäšØGT9쪧,×¢•ž¾‰óÙç“Þm«¯×ň8fó Œ9H΋H\-+r·¹0ÖGLVDcå)î$ú$Í §+î"#¼wœ›‹~é°ýÒ¼Ýfl3©bU6ìvÞ€Ç@Å-*nã8Í/ö< «ñšy¸Ùû!. ’‘ÈçpP£ÚƒÇ…cƒC&®#~Š•ž)ì¨:oeþ]|fLc‡6Eé¨Ï×Ñ Ä;…¡$þ_ZôqB›GŸ=Þ|]'¼žGÛfÐøâ˜’Pv~dìHÃ5ÈLöE¾8gé÷…óOÉcþ’©^x xù³}ï€5ÜñçÊÿÂi'ÜÂäoÚV¦”†`dŒ=?D¥ÄÖºÅBs±ßf$é¦,SlØSüÊšC~q®ÚFë<>°õß}½¼Øþ °­YowZyQ‹*‰´xÑý´y½øN‡f×oäLÒ8I¡(¡ëôÖÌ\sfĘ6L¹Z¼¯BŽÆ"ü‰éƒw’»êZ4ýö#5Ï£è:Ã×íGPcQO ¢ü}rýLûóSIáÁÑ7UOjÇîÅÁØ<^öøºbî^o¥„—>ˆ6G›’ @iˆù|j6kT=nM¶¦g¹Û¨!PA^5\'žGOÇ›Š´LÏ{0IÍ–Q>fÊ¥ÛpxÎënPs¬nqÿ­÷ñ1Å&§©8ŒÜàVUðõN‘¥¬â,¡/H) ¹1òëhsU4ëDÑR“ŒO!471Ñ ywvç›Áúí[Aqº_۞Ƽ ƒš–|>hM`ƒèH¼Õ›;‚òäÍ2ÔURœ5ô¿‡ê+O6š&Áï¸n Y±û–ºÅ°5§‹^}ÂíwÑC°E Ö ~î»þFŸ¢[æžâÈâØjŠ:ñÜFù‡…_ô+~´/ïÏßù–+2=q‹¹é駃œVêÊÅaÊÍÅTV„;²Ý å+Ò\J§]OË› ÍfV¶¦¯9µØ}^;–8p+i'ô5«wÑP×ßæÊ†-ù:â2]ä#ªH™üë`?G½fÏ®kÔ!Io˜*¯ƒ¹ªËe{2*™’Ö]%ŒÊZl¾]ÅÉŒ¾Ï3Cg”ñdÄah(KÏÛ•ú;º]âöVäP$õ¼•,š»ÛX!µ/F6§™qÕërçh”í¶í’ÄÁð€§)úœ' ³=Ú¦o5Ì\¾ŸûN…áva^ÐÉ*²N$š$oÄWþà N˜!†eë%j¸j…ñXP´YÛ© ÎáB’³4•ÝIýgò4£=ý±ö»RœrO«£«B‘Ñã™™ãUá‡/Jÿ„aYŒõîŠ öe4¯JPd e¤™î¹cµ$$¾ÏMæ‚vžyßÈ«d^xºÆdq\$…{ÌóìDcEE ;ÅHCŠLŒ={‰*GîÚW–kâH%­×N´€×ýIŸd^ ·o03•¶äâú¯ñÕgL,ó—ü͆«ÙþF Ýi3&íºf,^ï™E"›5÷ö_½lâžò!|¾°¦-±¬ð…çB9bii­3õŸÞöJî‹Øíü8ímo¢ž#”ÖŒïÌ)ª=Z¿A üœvx8ƒgbæ•k”Óp†›ïßc—Ü·gÙg€[ïgû¦n} ª³ýæÂ‡¦éæØƒq²œÜl ;LäÈ[æ^ò.Aàý˜¸Æ #ûúoOªßh» ½íº¾pÝÐyüó…ò¯rÞ K¿Å÷߸Ÿ¾¸ðìTã)u¢k ¼›J¥áb˜µ‡ÄÁf©ÓŒí«n©ºyzÕåÝ©ÉÔäpi‰íhó€,½)ÿÃØ‡üd7E‡g—™ Ö“åòWRK;Ö¢ÚÖ>õà.WÀ/d^ —5”9锑Ƶcøt“oVß©z%Ó¨(ƒŸ{Q¡×ló=¬cì[w±h k–G8ðž_t­Àp²¡ (Ý?Þ¤ô¹•gª‚¦…Ð1HÙÐfÜüSqÅâNn)ÆÐżÅ Ò å~V8©¦¥Š|ÿ!ЦDvæK3ÞÆ›0Šg¼MðêcCœÀtÓ(ÈØ,ù(ÒFcwÝa #jßä'î}~_Ký£ƒGærg„Ỉù8ÕOWîÞVÖ³ò!Z[ÂæƒÝ",!J Œ‡ãDí–»lЮzµj ´WòÜòˆõ–2©Q±6wÑŹB»¦ÛرvÖÍ9LVž¤DËs¾mfPArUoëF½§Ìœ‚‹Aæ9£9ÒîV%ž—6ÓÈ–ÙïÔðò,^/B"¬Fâߤ”k‡ÏõÐç¡Í‰…]HŸ‚‰îVôf4™E\Yš.¿Í´¨´)®¼mí”…’Å'àÝky÷èÎwHvu˼õ¬B,™LÞÞMz>G~ÍBNL‰?VVGa¢'¼–ö/eâ–1= “£¾v7Mu*k É] l ¦<¼ÄQõåÖ~X©ÕÄDáSq¸Ïx¤g‰@¨‰Ü$>&F•Ô"ûZÜ|péäœíúC“ƒ£SÊ\cÛ¿±‡ãgûAÕë«Ê©Œfï<'/(WGc’o©%‹Üª9R ECMŒ75¡1njqe™U”ØD>Á}÷öcÆ÷¥FzdèêsO矱ÿØú€Ç\¬JàTeG:=iMOÔøU­•öOïŸý(À¾üjX!TiýÎ_ÊÖ¾§ï×4ˆOÐL4J/y]PÓ:ï,0ƒ-/“·¸-¾·Å­½Sé ;]˜ù–œ¦#íø'Ù”UÄÔ¬ÀjbÃdøÜÑmæžÓþÆ‹»BᘠõY} Æ~9·üîB¶ó`sì—ac¼ý‰ÆÄ‚ÅÊ» Ü«c’7©Ì‚DÉWZ bä¾[Öwn‚aòÜ ŸxïÇ(S’Sñ»<•”Üœ¶·åºEˆ#&z†—“¼Þü ÆË¯ÉaWáÑÏ Y>8ðñœRÑ ù,1"ãh$¸Zên €ž)9VeòLšBZF ÊŠÈ“)NŽÖÙß‚¢o‰¥c† ¹tcÁ2>#ê;*ˆyлÖUtBWT‘íU#dŒTáU+Ÿ¾l-r­å I±”ÿâ˜CÁ`‰&2ǽ“†é{öj<ŠÛg­Cå©¡öM‚ô¦åk²^í4ÿPú¬¤Å“uµr­–mÍŸŸ Xn·s½ñZùx>@’’3r.Ò{¼ÚóíâÝc;‹ã¥• ½UÇ“Åv zF€&}“ʇªŒ›Ä’r ©êˆÕSÞ»ÉX¬ÀÅ ›‚öz=¢I£%Ãõ£Vj꣞RË_á‡Ý? N—?V˜:N?=!NN:þ~¸AåÿN†?.~‘œ…›=ÆöAŠ?¾¬L1Ù+aÿ¨ãA‰cÂQl>Àêç/ª%bá³MšZ¾5kæôÅ?‰&=E_~!Ì\Í@éF«9;“×{̪.>CÏ€¢·öŸFpÛ#ÃŒæš÷6ý;Yþ‚ ÉÊpÁõýÌ͹—¾i•´PëV˜ñÏSQJ‹)Áx î+Î¿ÎøuþrcT†zŒëHÄ]ø”KÞÜìÓŒ'#%žüZÀS3¸Uctïܨ5ŒŒ ú È eÓl¸ˆc¡ˆÍ¤„÷Ä9àðïm»Ò;Ò»…€¢ÈÊê¤×îlÕ"czO\;Nwf —g¸Âÿ.à@hªÔ®F6Ðg ¯~ë(ðÍœ¼ÿƒ©sf¦’ óâK)Äš)@MšÌù2ûûÚ×Á±Z»Mn ½¨ÿÿ³¼O®³ÖäŠÚŸ¿HiC#ÁjyÆâéF&SŒQœ:†+à< :—@˜mŽ)%”ÓÂ'…2GÖÂb Ò%rþº €Š¨íÆ·aÒ›µ/¡#$Çë>•¹ª}¾$Þ(s8´Õz¡k÷ÍŸ´ÂÍbY‰_©陳FÌQ€¦øÆŹø²&c$¦) ùùA·-—€&y›6‰'5¯™\ÈG’c£•(«rùßJåÖì¦rgtöŠ'yÿ÷ü|ãß9]+À³åôEfè´dÑCGñáΊ„ð–^¼xø€ñË– áÈf˜ŽV‘z/‡‡mcâòý umBñÝð¿l{ò÷szþQÎr'»¹9%çÄ<ã E«Û ñçªùDzûûÁ¡v9ï\m  ´‹ÈUI¯1>ç^zöŽºwÀ¯ñv/­øó*^_‹× ­ QVý"ͯÄÜ´ñé×ÇŒÈ6>Õ®ú?ÍŸºÍ»ëKÇ¡ÿ.<«`./¾‘żDÁØ-%LÕ.LMmíÍÝîC:ðÍjŒI4þiFž¥[1×ÖîÛÆ™!A}zñt›Ü„oƒrþ=‘[o#ÿP}ÿvÛžxPåšà+’S)) 倆XÊ…•åªnÞŽCÝI6DAUÈ#H–”Q›9ò1»ë¾¦Û“AëFÆÀK¯qv- é׬À°ßæÊó©Š7Oíõ (7Àv5òi_÷b;å4Ø8 ¿R“º‹Eµ0€×ÇîùkZ é$ÌÕ ÈkQzÇŠøš3ô‰˜ØÇôr%ƘœÙí­¥LI9yì±¼ X¡ù=ÁhÛ[ü¥MÍiØã'?â[ȘXz¬/VÈ÷£Ä½ŽOù t:»ñHViþôÞß«OŒFXÔ-„ÞÒ8¬;”;1Ÿ¾D· £±$Jn®³¹‡(<åEÜk]1«×9h_xÚZó’Ëå±ü'išÑkAxPñ¸‹y;]öóЗUÛªYP¤HÉϾšáv‘ˆX,Vb¼VeÀ…Zæ Ÿÿ¿Ýÿ‘iÄËä¹Ä‹•9›G šó³¾8¢mÖš‰‘4ffÆÆ´£oÌŠz¨>Wœ2ŠÈ R ì&-E§¸¿0Éü«×µÿOG,ñ ã/€4ˆþß‘$’„­mÃÆØ±ù)q$da¥ðl ‰·€C<ïc¬j½±ð©Jž 4!æ»h¼+‚¦gPÚ˜mmpLUèos¦Y‰òݧѡÁÆ+d›˜þne²/™møÛ¬SHžUb„ÂÀã<—XØ[eÎ=—4F?÷x€6û³ Ìô¼½^º˜çׇ å³$6é~K;Ÿ¬áÃã=Ç”ñøÎ¿ÿ‰â/L¢‘ë2‘àœh<•$Í$Qþ’yÎK™×=|¶ñ7ãW}äQÂíÛ¿€r¼Õ‡³s'¹‰: É¦¯ áª}Á±bâŽÐÜØ!ÿ¯ö<ÿl«FÝôyFaæPo½¿üù°–øœ,ˆê}†e¢wWƒ€´€æœ1­ó‡ŸÁªv»*¬—†˜DB—Œ‡£¸a×MÒ[3…)ÁwúT8ßø(uH¿×ô(mÁ]vñ¸= £t`llÉÍ#<ûSagò‚ Aøy¤±(+©™`jΔäÎÌ8GV휻{ê§öI&aÄÚÒ‡£¨Ó_·Œ'ï\ó)S¶þ ¨Ò¥»¹ “FI9ÜUSX7+JæÝš MÛ+Ô}~ƒS‡¼Ø@{}ƒà!å}x¢Øsªø¢âoµOçgrI!uUH€VÁÓ3ú]¾T½Ñ$s¤Í ÿÇó¡ð90@2oKÏqz<6?m®ÍüzøÀ•_‚vç¡Ø·†ÇŒåU>SsOkcb§Þÿ?ü‰NÜ¡,Dc `Ó¥ÛÄ’QѺ¹Wýþïó»âc¨ó¡/^Œ‘»¿~퓲ýO6ò/M·qŽi»”áíÖ;bÚîïI¢!kJaÕ•Ä[ÜÍÄ9µÝ¦ã~Ðs¶+X?'Èø*VÏ7Ö^þ»R7fò¤yÈ/+[_±MÓceôtØÿÕÖ.|^„aÝ·4¤!59âw#:ÿ\½Ïò xM]L«\è“Î(*ìà])$üöIÓ2áà¼^wƒpf—t)ls›ˆÀâí¨heG’¶^–ãÁ [7Œvé½ÈŠ,:Æé±ÃÀ*õª"š7)¥ {5™BsÐ+//n — vZ»ôiˆ­ÐDV49ø²чú\ÀG{ƒñ鲕¢þÌ•µŸô~„³1¥q$ aà’?mùˆ|T%õÊukìÚåðØŠ+¡b••”~—Ž_ªå4È5·úXÙ)ȪP0yHùm,‰<³[²@|DM´økI —I©A þ±>$JIAK•N›$ºõ#Gù,¼© 23}ÝÌËŒ1Înö1_9uûø¼-ÄñŠpBËõöhŸ9-¦ê×Ì!àê­¿€zÐ<æßcýÍÓÖHÈ4cÁ6³âÓþ»Úôöy‚×K›ÚÒõvoöNÝz€õDßl@CãÊQ·f1ã©åÙñ_›Œeï?¸#¨©‹PNu½hý« EýÏL&jÚÂâz²-Þ©Êñª:S×yyú.à'®hV»¨Ù~dx”%\~L8 #…íÐ7ƒUpwyeáò¥³ŸX»ÝE"ß"P>ò|—ÍŸøÁ”$$z_Ñ€nZèÊ0(Lw?¶\rÅ×hò‘Ç_@}xPµÖ«4|ËÆM¼E¯åÉ_¦xD1ùQk r‡MrJŽA°¦ïÜ3u òv.«ýU‘Å11†x€5쨪üæ›È±-å¨ò·MäUH!¨ÅòçóÔsHºo}Ôà!Z&ý˜æ5R„«­îGñòÍQHp÷‰~Œâs®:#U&Óýï)Zêvü7ÚÂíŸ'Êx0DµÚTbM˜§zqzÜœueÎÄu…é¬væÓ1ޖñï›2”5BÄ¿ð½Þ`œhwê_@ƒè7›MÓ¬É}€’@C·î!ïÅxÎeÂÓ¨[µ"[6!ÓKÔƒ“² „[«Ï, 3‚xŠIW¥$ÿýÇI;?øZÇ]ã=Ê-1rË>ûÕ¹X^ÂtîÀ„¿úͺ'‡ U«ÞÀ@Û5âŸ6yÏ·2 Q´ 2ˆ£à¦|>Äçb­ìÜN8 0È[`f¯Ç÷öó&NRLˇjÂ,ƒi‚1† :‘=·µ¸éÝ%ž†&S´«9)9»qò¢‡†™V@‡‚}ÜJ(^T욇{i {˜6”[$Þ¹HÏÒ[Õ ç4S³ e”Oj—;˺õÂå¼¾.×pâZ¯‡ÿ`/a]QìUëü Iã6Ï x¿1ÓÊ•[æOêž>„|éûí|çWü—L¿õߺêîŸ}:®WÔ› ·zAŽsLöȽScØ\9–ÝEW|‡Í½KqæíÎyQæhɆ¹§1þlŸŽ/GUâêÍ£¤îA~ËGu !˜ãǸ„fÈ„ÖJTc=™vµ©/n È€þ¾¶­LE…Woå w’¢ë€ŸCñÔ +“Ut “¨&ŸÊƒAî¶Øí¬_ÆsrÍ ‹³HI›NŽd¡§Tº¢s…=òU`,#ɽ«YÆgá¹µ§}Êß4‹2jÜPe ™þ¸ÒËÃ'{B#9™uöîòãP™%E4Ú!G™ó¼)©7£íHuÙ«–p0~¢»š¢Žƒ£5ŒõMo ŒR‘ ÉóŽeøU37Tl¼ÅÏV M¥$””*)Ç©Z &ÿø÷ûP7ê¥_¡ R¥Ô(Ä¢ÉáÞêH7L<¤Îpš+Þì6ÅÞ;<¿ôÙÞ¦ý+»ÔÚ»‘xXpã×dk–[¡rhIèí1‰r›¥I‹/lHÍ_a“—Äk1õ’«µAÚ¶'xæm‘HÓ¦ü—£tñU2EÊL¥ÓÜ¥Až0CëžmŸßë_Êì0>põ÷÷]¯Kœn ô—á"œã3Ÿ«hu…y]L²ÆÛ$Cqà²ä—)ðUr®˜sã“& á›.–’ÔWŠJ¯cž³ä´"uÞÄUJ‡ÚFÙíÍ8'•½vn«OR_è?Š΋´$ ¨Ož™T‘¢¡sÙ8Í‘QŠ‘\è{å±Åß™ÇW¬L)q5ª5—Cm©#Âûb§PÆf:¼ÒÇݯÃ|ÅE½ã]™ì†½ï©úºÙÜýÕ]êÕ ËLl¦Ž´Ããršn¦"±JAÐ9Çó`ïÄÌų,F l³ãñuÐNõÀ;¼}¼¢ªŒ&UÌâ„ßnÖqÃc48äØìàZ:(âYXQ»ãpÓÞw¾úH6ÚYWnNã>ÕºØzAñ¤ ~÷ú㽓><‰8-i_W¢êÖÏÇy o­ÔšõTÓÝó˜·,5Å#BW©Ê¨ÍŽf $ßÿ#&…IžUØ6ƒ!§’07G,¤÷–³ˆ¸p7®nÉš»ddöuæðTÑ&ÛlªõÏÝ5ÉgÌcZÞš7~•ÿ ? ¯ÕHJÊA \€Šº\ƒ÷³3g^V¿´Á‘8Jÿ:͈¨I“l$‹ˆ ܧ~Dç{ݵî%ù{ÒºÝds¿.³¨Õ¨$”…dš|=zXydq~ÒcÙ”4$Èt×S_ü1/ <óþÝ蜎ÑG…™t­»=(Iò(Êë5(’“”‡s\/× ¹`\?ÇR5ƒ!y %²ÍÁ+¹Š \è#HP-Yš‹Îo[Äež&nÆ6Žû 4§BoÂ5;§Åi´M©éÜ9ª=Q¬$ÌB­ÞÐ ý§œø[GßWü¯Ù<zz3DÿvøÀpžXZ2í¼—ƒ-mŒ³ŸË`%lºü²†Æ°…Ãe‰³2µ²ÉÂðwà¨9]I]û©¸ëoƒ8󟱟·Æs~éËÁï[ù†Çß¡W÷Ÿxe+LbÖid™Gµ–4G"N¢#X߬-È=™|¨Ëš‘‚Í4‰Fl£!s×nó m†Rß™6IÞ=vÖz”õ„ÿƇk¯½|>}•Æa^©s!W³Õ²–´|qòâÇÜ¡0wZ°å„®3Ô¹oiòƒÏ)t$žÙ‹Én\Û¤,:ä¤â¬Iþ/ögë²Mû$Y½‚O²ÕÖ5Û¹¦`q*õB¤uHÔû_å¨g×ÜQ![ÎRÑ”ïhª;fÃ"€ñ€Pè¥@‹0˜é}†Zÿ 4”©?LAäWcØ' Ó¬§/ÞÐ|Í´>K̦ū0ña4¹„Rèß5zï‹ßtl;S8«Ì.4>?·Í×_ÒP K—þ™&1ty%™åáêS}Éz\*ñ*÷Ô MÅ "o‹û†û•.(MZ|ã§ï6àAXÌÜ*4æsgÚbs‘kvRn-ë‰u´ˆ}Qy²¡ß@¹Ö¼å!±Åé3YçoÉ×™Sl¾lákH…†mJÓþKmkîÌ( MœMOÂâp9ĉÊÚ~> Èø08î}Ÿ ’}š¡k Ô…ºéÉfÉ ¥wFClíì©å]€Û±u˜ïÐ\‰ëÍÖŽýê'Qu“å£^ë²/ t^;ÃÆ¹o׿ÿAų97P¼Ùiû¾Øä¨2ØD‚ïrŒ6(Ùå×X¾gyHâ?**©ŸÊ‹ÿ•«dÉîÄmAjrÙû`ÁϘ]¯bÈ•Ù$޼:«uû.ËŒ~§þ¤1ÀŠ-PŸZ3¾øŽÎËt%5©ÓÁÒ¼ÛßUò¾Íö’€ a³>fßÖ‘BW…¨Ö“›Aaµj´ÃfÈ»MùE~Xò_žëh®&*±œ™¼í¬¼„¦)*¥Í5î;bEE0Nv Y]¯f, ä>KYzlí¦DVJǰÔHiª(¢%Ýúð.i3“u ‘»?"LÖ¼íò>½J¸Eù4‚µ(3ýk¤ß’@Oâí©·*¾OjuÔ´¾˜{ØÕËø¯.â¦O-è¼—ÖìÏ~Lã]¡Õoyë¦\HèÆnO]Yi)¨‹qH†Ò<§;“ñ|Ñ^OÙµä!*ÛÆ¢S×Ñÿ{ÿ¾2¾ÃJ‡’ybá5œùËFéïE–eƧ»+?QžY¼ûP#ºùƒë"‡óF‘á OM°„ÿ¹es¡óÊô[/›»­š uÀG†.È@íË@±ºåTQõ¶DÊJÊÎ óãWÙ+5w!Ä9Tœ6n¶=‰x”0-Î?±×M򥌴 v.«3•ÐRïÊØö¼·õMh›˜Ø%)‹DC<9þà‚ŽŒ(¹Ï©/wŒ$ª2ŽözÚÂ5n­LÁjzXÖöJõâpº‡ÁjüÖÇ[¢½‰s’†4æyŽÀµ°iquÐ㬼Áj†•j•î(ÏÓú¯éjï=ï³8e¤)–뼿"Ýœm²\íá{åSýe2ƒÁKcNXÓ°Þ¥…!úš¬s>²…g·ˆª­zçMgégèú˜z븨ú'lø,±ìÂÒÝK‡´€€ Kw#.ÝH§ÊÒ4KJ*©€tèJ‡HŠ„ )­ ¾p?üžçý>gÏœ™¹æúÆ\#ÆG×HšŒÔ˜°aiY¨JÍ(™úÈ+¢9cI¥‘-çjy•qØì £¿£ôëÏ÷güÂl ™Ÿ2?{•$\®m U-]ñ<Ô+Á4…àˆõo²›/#èÃØµŸßx¨žnaâúþ›+·\8'aï Z§ $ÅTÏž¢Ñ²æ­Üv#Šká‰^'à¸LC N $SOÌbú΋êË+ì…m/{ À'Ó†B×?§qh– Jƒ¢GÆ¿“S¨G:.Ì•~µ…°¯ ¯ÁvÒôiªwùR-„KZÅ©ÞÃuAä}ÇÂ,âHU)1~ ¼x4rÐÏ^®ªkŽÈÓ ÍBÅ•Š1êòaó*oOŠÃ[MêÏï«D©û=ޝéÞHfŒ»—“-Ç~s€× _Þ½…â»\¢ìœà:íǪEŽð ÿˆÂª“eçDCŒÖÀÏ—ÈÅóÌKsÄpQ÷˜_ `#HÔˆ…Œ”ïH\¦€[À½Ž ²“ÆM×€½°¥+VÔ½÷»GS¨“'iyÚŸ¬çF·Ñ&W!öV,—x|ÿî·{ì}~=29Åл¾U‚V4 áºrô…b³ÖfA+zd@8@äÔ€óT°MÒ'ú<ÒºVD¬ÔãæPö)ôŠûd@µ{s>Ò”M‘jõÎW˲ÝCùUƒ|¾"óK.š¼Ç綉V*Šƒ6b—gWm.Ød\äf._Ÿ4¿ž«xàúZ{nÑcP—ŸúIñ=^¬%æ¾)P6/‹ÜeJ(r1ÿwP…¯JÏJÊÙ€Å6üDhðã(ó=^ðª©$î“­9Hx½"d¯«=7ñóM/±×/ÁØ6~ND}VÖôQÙ·þº¾úÈ…ðïXà¯8ó}ÔrÞ!Ò-møêÁmu^zw†Ø1X²$íÞÅçaÆélÉ{ ®¿ñP ³yÎ&ƒHpgÚÀËMª±êEÏ¢Ü*Ž )'J¸ß»¾;)§Žp=b©`8IbXÌ!îY¾E#õY*þẟݹdƒH¹ -˨?B'À$)EB¹°Î¨yAÙw ÐèI˜lp$£cùõåÕ»ÃÌ…˜Ÿs‡C¿¥5¹Vü¥Ïý¤¤î“B3ü7G:N*‰?±åß›r¡®·¸5ÉîÎ)Åßn•ÊAgÙpšÖç <Í 6@kïòë[lErÎx{Á è{Ïø…&o jbžoÛ¾¢> ‘Nð¸¡ßõ¦ì­ÙcÈòÇ¡&3½¶Êì{¥FKåïT^Š•Qõ—L¿o}DíŠ_çGVîñÕ›:ÛkʵéôàÿAõ0Ë+J'›aýž]'_ë(óÜ“â#™óW´ ü,–`âä`|2w7ÒõìB KŽVTãPÐÚi¹-"Ê]Pª;eÛQúV‚iÓ¢·miŒë.ó­?ÅÓ q[|§´Üd*šø%ªa ™½¡úˆZÝW\€YóÍ‚_<™z=z }³‹UO9ÏæÃÐX'röÜà¯INŽeΈ'WÔõÁ-‡ìu åk~zÅê„xéNšÑ˜¶¤lÂ}\¡¡»nBüõ‚iÕ Z¿ÌY;›ÃªØ…+¶T:C£E{ô]ÁÖHd›@‚ÿ…ÉéY¸Ç‚û0‹ä‹RS½è Ke%Åã•ÀW…wµÞÞÉÒWs —óáumòu²þoºÛA¤;3M­ ÇV¾]_sÆ+Xô¶ #SßT·‹°—wÓÃmû½ ç“–\è–MÞ#Apv…Sß(’¼ä±˜ˆ¥ÐãíÖ¨³Þ”" »ëäX‡‰‹Ûù Yî^¦X´ aë€ÿýñLjmˆ¦³®þ¬¥ d±N½‰ªè‰XûkïÇÆJ‰Ôœ¼Æ9¯cFÞÔœÙ7KÉ¿ta-*p‚ƒxÜÒyaÅ¢dÐÁL•˜|Bæt†¯FÎt2Íqm–ªõáá`××\Ÿ—  †%~¦y®ÓT쿤ªîÒr ­Uß á^4lùUìêÊÊëÛZRxÑýC¤y>jP€>rK=[ ( zTA]"Úû3¨'Øé9>ì`¬·¸Á WRGÄ@vØJêø0ûwÍü:3=É9‡†8»zH ·HÙ/öý×Ýñ‡«|uÓNÐ1ÊÊ'ëÊÆÓMcŠº1(¡rÙTIãu¡OEùÍ ÈXé©40Ý©ýƒ—ŠòËl‚NÒ£/Y½^†8øÇïO7Þó’âåß…APS±}¾áQê³–4}ߋЂ6fmVWÌÊRîçRYÇ[(t±Ø‘“ÚÏNqÇû…'²¤5žrÕЖƒÊ©¾J‡Ó2ØÈÈqIM³Ý¾S©#b]A1eËÒúåcÚ/fWF~ßáeæ†9u@EQÞöL ð©èæ–fÞY¨Rã®IÒI?ÒGgOµŒ´Ž‘×:ìÕFÆ:ëïƒ]"FPâVàH‰BYÞ¡}'÷ b?­ þ{èD_8ötµ_¦ÑŠÍ¼Iô‹~™û^¶½ òžµRWžóYï =©i"ôLmþôuyþIÎtqªJXÀAGÜ…b)ô#G°¤ox¼ã6o”±zèÍrvù0ìlñë+ršâpCéÑ»ƒGù¹õ([*+v1ÇCB#ôîx•žõž£¡EQÊ_|àâÄàËßPœƒËrL^iXZ:CⲞY×4l9í«Ç»ŒXüV{1-¨ºG6ÆßtB¯«]mßͶLxHið+„ð,)uHõ¸Ôlf°C\ ¶z'ôo#ö.Í™)r(NbS8* QhÒ§°!&h…ÅmÖ( Nm÷¾&„[Æ yå!.¦áŒâÀMÇ“z)ä²[u„V‰¼Š¿ÿwµ>¥ò„sÙú×ÍÉ;–9FØ•AÅyw®V¬ðw-¸:ò¸zð8Ýjç¿!ÀA­N×±ý :}[Õe.Qáq"¹—¯ÔÁÓ¼>£úO ?_'À£pE˜˜ÌÔ"”§ e|.XÓ‘`ÃÞÖßUkU…GF']›ö@ŸþÖýÐo•Eôé_.ͼÈ. ã+&`á_/ÿV„'Œ{îÚ4ÊØSJA€ìÀPï\jïë2ÔÅ5!ŽJ.,Ú‘I»VŒin^ýÃÓ3-LO.W÷?œ.ò¯úת>Ý#Iœ¶R0k·º (\pK¯ (’iåÿcÕ/¾Òó5°çµd“µs„bÚül½ÁíÇ8Õ¡ÂL¡Ø…—(PšØ¢h³wBªÕÙàLæ— ”„×hñ΄úŽÜ„ 2÷~Á[üVï¨LAe=2w»òÔ±õÜh‡Ù…^#ýÂzGÖ®“–:+cÄåqTôyÒϪӻݱ?íðS¢‚õânCJ\—`„bh¯"ù!‘œ ßÂt(âÅæ¹Rî? cñÚᲓ›‹$Õ´óŒPòA–≾îÕÏM°Å¯chmiòî%˘TµzþXB µÅnª$åµj»ið¶[Ôgߪòç1 ÀSôÈJYðS'1_0UÏiñaQLê¡$q6}€PÇ¢¶ú‘ ÿUïòo {ße^FœìŸo§ŽŒžf©v2² ùo/ l‰åÓkÿ¥¦6Åj€"DÑòWvDÒ¤RBË+6žAÇ?ÎÉÑf€-ì² *Žxê(K2ÍÊ2Ê›:ÔÁ5ÇfÐc.ÁYåVé¶Ûì쌎ÚU:áÌqʵ'fb8 éÈBî¼}²/Í$ä`R:þºÚ+j4Ÿóm™²€yµ‘´”âB*9¦?¬¡@¢ÑHõï 1Jý¥\×¥[Gåë5*HJ¥»®H;7x.å'Éäq$u±÷…`fâÃ3Iʹ;BÔgO ~ß&)à-±!ºxÀ_¢ÁXÇhP«Ã’³‡÷ê62?Lz™_˜>8*xº4‰Ú8Ó83†q$+¸XÉFÞÔFo1~•Cl!üœ=W!ãz->]yB—Wÿ¢È†q ç7È—į̈1m’?s³I";ší|%où÷a›ëãEÕwHb3;+ÞV²/? ìŒ¶%°ß=ŸExSˆXþ½¿ì±À NáÊ'ªù´¬'š²ÉÙhPóì¥þ«Ãòæsh­ þiÕ"Ç{æ!&ÜJÃ[ŠôØN À;¥ª)&Ô×åS9Æ5¼ˆðãRxÄHo+¾ëKqÖpž#˜žNSã¾íŽ«ÂJaÊl#3.Ç.E€—nã&àŒŒ€ðcNÑ+|^æ>;"T,vIbsЙ âϳ1æ÷ JoËælº8¼¦’ì‰3NèÙõ=ßbÒ©ƒ¼öÓ`´+‰¯÷ÌÞKq}U,{Rì‹í ±„ìcCª)™§nT¿Ò#Ï'„²iSƒÉ©ðPÍDi©¬Š !_¢úïö·ŒD2{enù¤ ‹ŒÜ*/'ýÑ",²ð9ðž8ÐáÞ8‰škm ã¨ô"¼)¬&Œ¤úݬ\úäö8UþY˜juáq{œ=hrÒœ±iU¡â|jI¬‰ìZ7Ÿcç½ÌÎU¦õÖ•âI ¼1J6mìPDÆ+>t2Pt¯ä0^Vþ¨O’…˜ñþ3$䇸zГ­®äHíÓÿêüm_±"_½ûjä[îåŸÛÝë#ÏΩ"µwô„ØèœKÞàÈÅžò`·†ì‹‹bÍZ'ÙÞIÖ‚2©u'ùsKÎËšT‹´º6Íèl{LÝ )98ã¶;Ù¿¤óQ˜²Ê]÷þtÖbê-ò#p£;B£ûÖN|µ]ŸOªý~úki¿*9ÇZâmè½Ê¾øåô€®¦X:äôË/+8º‡$Èoâš§Ë[ªW‰é> céþ¢:È "³Kjµ¸Í R²Ñxiq80¯Bœ(ݽªËZŸ™:ê=éUú5þM—ï7e~]•ÆÆl…Ÿ&¦ !>ŽÒ'y` y4øR™:feäCE È{ïЋ.àªI_£Ò¹v¸ÛMõa&Ç0²Ý—à¡ p½nŽªÂœ–¥&¶ü²ÖG‘iÑ)þ’&í– Nëž¼ >VäöÌZ >¿jÿfo¡^¶b­Á(‰i¦âˆ¢<Óµ_¤hÎíêæûžV€y€»ûp ÿm"óôš¯t½9}°˜2ò}¦Eÿ/2‹ »:U|•.I”†¹å§m·Yê F­JWôÄ-IŒQÅrõ×ð]– †ÔÀø´>àÖnjáÅ©0W(×ÞäÐËÜ”Á”Åz*ÇÁMÀ`³'¢Ž ×0õ$¢£ÙsºÿB$c’ÇVË¥¾ÀŒ¿ƒu(ñ:¨Ó=bᡵ0=My—‡6û¼ðˆí™ÐüÎmÞWÁùóî¾@ 7÷öf”ÁæûúC% ý釔˜(U©«ÎQØCéÐ>þó[(’È4Å\U5žXj½Ý6NÁ*¯5’¾g‡n à-‚²("á ø„²"ÁôLÉi/žÞÂb¯xÏ~ó¬Ñè"±´ SY~äf+¸ƒyÞ€Á”9lg\v›[å8äÊCWÔ‡àÖú ý-®€èX”^Ml~ïÙnLÖ—»ºò÷]:Û¿Û‘#k8é¶Å |ž û†âË’82¬åõ@Š$L6jjtú]š#õª?ÇA@†=Y" jSÑ ø(ï´×Ðko h$›a¯&‹è Öê´'µyIÈ ·´kâ·ÙX]ðļáZ1Èö.d™óÀ^Ê¥WÊeynÆ"öÒµ ¬]ÛF£ŽçÁÛ¿ç  »É¡&f³k½ 8Û|u7x0Àiïj=SÃÛ›ˆ5~ô¹’*œ¡^çàð4ö}¼ÓílŸÏ–΀–õ3fž·1|šq©9^KD§<}IcLíØ†¬üÞS^ì×…8€"k~!M@¯J‚J¥_a'ù›r›ÎÈ'®wdkúŠJ3ß«ÕßFmZ‰DáUîsTZ£@¶pÜÙ4üñÛò‡…IìCÜÔåirÝà‰C˜´`—eðùƒa¼Ì8¥o މ¬zÞÿê«)#”BéjÅ*à î4s•ïGo%þF£“Ôª]*´¹/ „hŸÐÍ»)¥ït¹Ò’@û ”/ýFm bögÞ^Ïpé 1逜|^ÊÜQ ¢ þ|™À™Øýw¸V:™wt-x ÊׂªSbø¿Þå˜ÐàcuyίÝg,"ÖˆÖcÃ:nÁù‹eaÆñ¼KN²Œ5@£ hu ñ³YÁ^”H5Õ5·ß½yÞè†ÞÊ÷ǃ×¹›¦¸7Ôç%½ýý »uð™l?78VÛn³îÊ ¨]µ:ô05U™¹ù_¥Î—ow¶„¢>þycO¯Å·Z®6›ÇÇÁ¹zã>_uân|/Vs¸{ŸÞœ*œN}žÛ‘s.€°<,c÷cA¼ñkò§È›»'íQ‡|úŸ5ŒÅ¿ý¼ .:#æ6®¯“ÙPã™Ú¥êÐ"8 S§IYa µ›Ð¦AF“Utï‡%)$\ìx5ò?±— )>y¿ñî,ä=¬¹9*¦5Í#º2¤±&»Í ~"í¬Zg·OàÒM—[tH–kdNIÏhiìÝ>Îüèéòo÷Ê}"æé"ÀÚźóü¬éÊ$:€Z6RŽwLÓ;”_Ô”¥˜×Å ž;·¨à¹*ïð{µm®jûTT þ/%^AúŽ·SÔ¾$D~ð[g&á4•PLm¼{Ù{™@†pKåÿaÞ`Xv¯˜u(0â{Ü`| w¤zç;’ÇO*®*‘ vÁwˆè,)¦ËKãÆ 2ø—<" =PÕ¹ð«zd«%¢ „ýç¡Ü·ËÅÛ)A*Ë{]ǧCeGU°1qLL´NÈbyr?Rn8q«™ê)õÄ{Ç"x)H–wÜœ·”„Z‰v"_A2Y¯*?ëm]Ÿüîµ­dkÌÝ Z8XZtŠxú1žÝ‹,qÌðE]“š„ûcv³ù$$DÄžj`ÏCñí6–Ö+܆6/ »ÑÙOAċҥmXg°€Ë°™G9 *9<èŠXæó| ª ØnƒÏ2Pè±Ïo_«m÷>²qcR…‡Æ¸ôÅÔ  37ŽñÙ5àà'UoéƒÛäc« ìÇOŸ—™{ºD ê}ðz ñ UU@RtWp†ß]º*Î{ùÉ븮•Á¥NSŽ­ZEáßÅ.$.ÕOàø¾ñHÄp¤ÑÅ?»5útáŸLîsþ,û…œGÄÙáÑ£!æc©*QW¶¨x|²xçÙÖ  q>S¥Ó¸¢´@õ¤ A²[Ûª:… WÔ߀B?­¹!”~uÎ/MA“¶×’µ[×ú¦ÃÐ)_¦Ê^Õ×~3«6OjYJjKûØÙžõÏr@FRÛ#DùS–a‹ôLcÈÜeø•“ØpëlHzXª?Ù¡‚bžø;•FeœÜú\…åú¹…gqÑb´Æ^\¿üHC‹X’³§¦l]ËòB°o|4ž?†.àeIØ3ï‹‘fN|iµÃŠ‘I÷~H 6 à/!’ýEþG…—;VÔ3ÄúaË´à£×6jÄq{ì§G&7°=@gÒ!@?È ÎM@á°wFáï9Å¢e鈖¸~ëÏóPu+®#™”ÂuÁ=^ÙÕ9šÏ}þÞfó«˜B™¤#©MWûçLžÂ3å³u„+ƒÝ6±rïæH,`¬TÐ7o]µû5À¢iÓð×LŠ;<ÿ¥_Zí-N­8ë·š21¢$ŽÚ£®ÏŸ¥€ðp%ÿ\=•÷âñr‘ëI O"ŽÝ|xp»\Ȱ®ÌÙöÌUßk,ü“”rSX{ég¯ÕXŠ]¦äb9Á_8j•]OÁs…œæ§ ŠjYa<5Ø’šÝôSs›ì›îŠœº·Ó½óŠ—Î)ªÊo’Ì~úÔ†~þ*4ðPê0ec†œçrY?¢*|"^êš‚tŸÖ¶6 ¼ÚÔìÏ=0—*¬)ÚähÍPšÑqŠ.Ê7Ž~Îr{¢©”È^ µÅ£:öºU1ß1p5—N±‘é‹ y ré‡Þé4Á`cåbÝýf ¦GÛBdxPKdÏurÔ_ò`WKð¢sBÙ~ •NG·NUx0þ¾¯M,ºDDé>…t&IrAA¶šÖÓ®Qe{wc¥—RS®núj³çvï èü+`Æ&½Ðå.#Ÿ,fÊ€-™?‡|Yzÿ¹ ;ŽórÁ¥ï<ô¥Â¥ËþÓ]'£è6Ͱ‰Ÿ­×—ë\ùDg:×u:J¡’DÊ;Ž,ˆïh9FAøn5/ V> +Œ6Úõ3mÐó±ÀSÁ>½?MrUÞpÃPì²€Øm‡”b¢.Ü7úSܦ¸¦,òñ§¢¶Ü{Ó½UxHôžø «@TÈë¬.ªœ÷þп“O‰fw=nùø°É¦gfAúÅçòèý3U`ý… çÜ[¥ó¬´ ¥¡zMµhƒ#CBkà¸7‡Ÿ³ÄG(^x¢çî%È"P¯O$REÈöh"ÉtR´" o}É?îZBŽË—¥ºñœhöÜ›q–ë#ö:èÖp6‹]ÜüôrEGÖTeÎ/~¡UóF?c–)ƒr]4†×-x¬Ë;rá*ÓrZûrœ˜(W¿hº0¼š²$­Ò7|k_—UÇïóÉù#ðÂ6 ÛÄøhêG¯,­Ð 3xBϱ²0/ý‡uŸŠæ\ß ÜÅÜEr¹ŒA|;Ü›#Häù¨ÞÆÅßJ„s’„P°Ë’}.oY$E]@èÍA© 3Cï/¬·f*kýˆ<}†p(°Øe'?)Ðï'®±1d9Ö‚_]rÌÐç| À½ÇØe‚¯³ÿr9¨$¿ÿ¸…bJüÇôÝl ‹²¶RàºGjûHGHtô-ñãÄœa£æ¾±œï"V6LŸ "$*P‹âÚIŸþ×.ÅÓ?Þ_~l´‹àþH&®fá„ÐÓé†.4ŠýTõ+bêõÊwÃØÇTn™jU*†/Þ½©ÝÌp|No:•(»s­×JÕýꀩh#½¹×_oà©E¹ â³Ù—›)ý®Å›" ¯=œžµ_Aƈ{ìK¨L4þÆ |zCÃ+ƒàò;‹r¶Üà:k5÷eG*fWü86§ÿ•ÈWâ‰’Š­ÖÝ„d²©•í¶3šf<Å&vÉE¶èÙÃUíƒ+,Â}‹ý@`œ‚'±öÎÖ}0éê—e¾ÿV˜®[œe›ÜÎôÌ01®4}yÚ+á%—€{æœ)¦~î¬EÅiBr¨&)YhCÐ"¡kR+Ç(ÀóªTã &zš L(T”Æ­ù©!5Î'Q¤¡ØÑt«¤Ú!òg­î&\/ÁW!§Cj4%@/"P\o‹ËŸb¦«ÍéÔAwüÊWìÝ¥À±„)D£±<ärVh‡©Z ƒ!dQì¢ _?‰˜ŸÖœ¡Ù€[>„Ä šU¦Á^b¼Ÿíæti´Æ”›Ì*ê²Ý›û ùrªPvÇ|±Ñ·¨Ã£Q÷F­W]œnßBG‘{s“¹K>§V—¯på'‘¶SåãžÓ„²yy¸Ì(ˆ£ÇÁ)qœZùªô)èaì¦ä¦ÚÑŒh§ÈøçÞ|µ;(„ ÿï8…ÔpJWTŠUA£ë:ä¶T µky¯(—ÊhXJo5ýü7‚ñ]‘4ª;¶ñô«õþ$ú@(H§ó%_­ðîûxŒ\ìŸB|™ÎhÒKÞQ{¹k¦f+é2”è㊼Ç÷ç°àTB›Z {ZŒKêýXH`X€äІMÊäy}S½~ÁN…Àl#ömuÎ!Ñ󽟛¨ì€ ÷@·¬ü9n)ªLòÄ\1ù›lc ¢Ic:"$žüW@ kkC*‘ZœézƒrÃp#F7 =¸up¼õõŠõ¾–‡œæ)¾se]ŠY,Äzx{ÑnZ˜Ç„Ͻ‘p)»!÷QÏð"Q¡Qª•ÇM@¢‰W¬KOo\†[]6N¦¿wTW„,ÿø9LÔ¼à`äd×8žH4”Z@ŒqAè›.½ÝúC“’Åê%‘‚ÄJ —;¢ŠêŽfµ¤M—-ß®ˆ.ÁU¾ËÈdPWý5GéëØ§ÿë#<¿5¸¡Í Ñp›¤gã“Ò%ðpr `ì|}4 ©?< Ñi7³Øü2FÐY¹+ßÔM}Úƒ,ò„.¶`*0ÆPǽS•÷Yô«ùœèI}E‘TDÝsD¿ ÃDm–Þ/ä1Ûô&Ë·z:<‚ΞsL­°5_ "êÈWµ¢É\ÔS:ÿ!Ǥרvqk7Ïâ£`þ[žŸ"ûpûPÀ–bä œà—Œ¼x nº"àâO˜­e X7Eùïwr]ú=>oÀD»a#\•\„44‡g¤ÖÛ¼4Hàî{*qU‡ ûXl$BÖ„Dä™Ä’Òÿ0Ö€ñ1=†¥XÃÄz•“O]ýΉÜá=MíÆcΣëÉÏ‘yøãD`Þ—íæœ?>?ɤ¸)£hb |9¯ÊL‡äÅ5(S ó+«âÈ]Üu€EÒ£bn DQì7ÏÓè§É‡)iCr©)çxiv½h8Aì~åo6`¹Ž‹]0ÙÞmç”_äd{(¢ïåºQü¸úNôŒ" ª¨Ds\ª‡®]Îc?¾s“<¤ âÏv¯Y$Ž¢ê’3>Šß…&Z}FÝ+¢€Ù ¾¦/Ë©¸w®†Eloý£RƒÌxÈxxœ×õ)ÚØh'Ћ32¹ý“î~ó,0‰¢¦ÈSã.wo+.6U×úK0P´ùòʼnÆê-"<òI¡çßR@þ N8¿ªÉ¬Ù[É"å¤!+S¥¡'V¬ª™3²–<8H§þN×\4y_ýoÆ„”e“‚^Øíþ>Óömúa–âa~“”1-ƒ¼¥E“+è‚{1Ï lÞ½D…þ›à—´S†Âô6ëù§rkÜà[•ýeU *ÆEüè ¸J]D3¡”ÁÜÓöï²"”à4ʦëv½éë­\*3>rØ› hº«oÉz+¤Såd™cÁâþI¦°ƒe(„‡å‡ˆ%ÌíZ;µ…‘½˜,á.W7A £ÃN²Wúälú€ó W˜uÀGyÈlb—ÃìHÉЫ€Î£¡¹_=Ý;½@$«4ö €_¿=Çþ3`3–‰cv›9;q¥¦@Œ‹†DÍà0YBP üÑrË€Eš’ý‰øÎ^&.Íp¤lBQæÝTÂJ,ßm¨ÜùoAÙàeS^(u.ÈÚGÏ¢Æñ¬|o­¿"šq¶ý ˆ˜³ÌhÂw‡ïxÞâö«Zé4WCîí—y··$Ô ƒ¾+Ë8$‰+–ыҸœøÞ †ÜYtnÏ4ž¦ŠŸ”ß÷“Y”¨Õ˜ ½i+Üõßmþfx³zA¬Ïh*-ƺ2ïrruö†Jx<Þ®!¤gµðçi:™AÔ er½v`þÃT\ ®>n¬”wørþ¯ƒ`>`Z®Ã‹‰–†ÜvÍÛFj¢$,læöGÑüÃÛš4语ãý%)ì¯B±6±ý÷±X³Æ§W¯ð¦ù¿&ãœÿÛêxŠý†:0$]²ß: Ïe·7ÎF˜:âñããÄât‰‚£”UXX‚bÆÛ¥ÇŠCgðà` $dWZ·Ó‰!øq,ðŸN€ÿ&ŸðAàÆVýÄnâ»aøµ 0”¹A>½öCǧæ³É÷—ÃáË„Ør;Äw¡Ñç¯Ü\E?$9£[sßð~U¼¶EV[•á¾×2÷ÛqÁŒÅ–{œÝºLétmøˆQ׋„YÜ#Ký)ó$÷åøó€œÙÿ5gK4ˆêáôGøj诘¢ä÷(iðÃä½|[׌ÿ»H‚@hª%ë0úAD^^?8Ö"ˆ'ÖîŒç¾Î™¨ç̪Sõþ&$Þãêñ׌"dh_¥°+i.QUÓoT¶_X»Ìiï§¶âŒS餯¢ìmÑ™bÇü«K[oŠþ®På&QÛbWð£m/ ê–¹Z"pÒ#¤a줿ªINÄEBͺ6Z‡Çþþ\Í—)7Œ­¢Æ˜_Ê>RÏ(ã$©{8·U[¡<†=)Åný÷VWN¼|—¿úÀQ!÷Ÿºœ ” ý¶CÎKØu&f§À_¦+­Ã ýñ„Å©bõxa1·ìçÊpqšhõ,£só©¡²0Žh‰67 ;÷^iŽ[¤Û­/î¼3o^›Ï›ùäb µIœ³o]Õo ½H|ŒÅ>šÂbkJmø`)+6 †ÏiSZmÞ 1lc=ˆËÊ †®>´Làv4ã+:×âc°¯t«žñy$ùÛ-N]wo½þ?MÊMp6ŠKP$=nbLœã,«Ãɼ¶Ó­º›Nðj¨%ß&Y3b÷Z8,eö’NîQ»~;QmõþÑ›þ,¯9ƒ+L¤Q0©ì¬^ª¹Œ„·ò‹€Ô×3§ÿ7±/ü96Á*‹±j„Ì^²À+cã¾Gµbç1¢†!èúž{Ò‚«GÒ¨D8i¥Ëk ªãËUœÖsÅF+*ÓH?ìoþ«ü«û_oôûß7 Q‰'L€WçnNÉÎ_ü›Æb,„ÒìwÊYUU·émÿ¦Ë ÊoÎ䃌¨gÈ…J¢ ºåýÚ×:݃OHe®WÔðI\¨E.ÊXöÆñYsËÿ_ÑA'¸Î4.äÃW¬iØ¢‘rtÙÙ•÷ßM?¸½,ìCÁ¶ì²-Ü’Ú"xJ”ö¥Êòî†&®õaù²‘õ3!y¶|æ´ZÏ·_EÐvñ #JÅé Àª;’èt¥qÁ®dÛ82óGÿ2ÈèÈÕÊ+–£[Åp©ïy%†õ'¨Ç7^†å@ÕwÉ*€‘x(þG6ß~&Tp„àDmOm¦øýÉÔÿÏ€OYüÐ"!@Ž¨ì‹ ‡?á>x¾øII±["Ãja[Å8ßÿz`;—WKW¹ >•S}³*¾¿ê:trµ$ˆ;Šofj6êá·Ý‹GWoz „á e˜+ˆ]=MXØRŽ4‚³ðRJÒÞ—Û“Ë'rÄ0qs62ßBX…(õè4Æ«e qéÒÞÍãîØ¿ž8½‹ÅÎf=«#“ùoèC< ”Ft'¤ÇT×â9á€íX=Êjޱ‚e^eŠÛÄ4Ⱦ¼; ñì9>èâÕ;5]Þ±µ¨F½SÒ|ýÙ qöĘA¸„¼ú?ˆ99×’ 6 ¤7»9p^5Ýš-·|޽xôíúÍñ1á™WèËhòɾ…ï¨A£â8ïÒ5k.ƒ³eQ¥Gé¹Î·DéÛÀ4LßGÆn/Ì*t"KϱÔãeÌþksúÿ¾é®)d<щ€†‘™°O ÌtÒº®]”=!´F>H\¢Æ¥1Et* ÃH¡Õ$±¯N™…› ÀýËd½HNÝ,™»^ñJ þ• ZïWY¶Š4'äø¹Ç‚üŠ.õ&“ê%çÿaÙ—ý 5Ã0“TôCT¤!®]¯'ªªûŽL~nÔ/"pyQ`ïC›} ’ùü‰Y ûþ·c÷ã‰ÿg€ÿ{¿*@‡FI0!#4½I!xiQo/?xÚ+Ùx´¹%µò\T€žà-;m“ÑÑw3& ØH©$jð$:Âý¢…Ä ahè~D !¸›+ÑÛ¿>Üò¦Ï(tvбÆà眪½ËeæÕ¯maw b©Ϋ¥‹tªé‘§Ö]I)ç5¥ì4 ±ÑÅ-1Êâ?³/½Å…3håsÍ=§yYô]ѾQßã-éÕ­ åiEo=ˆ?{=ËþB 2…œÝ5­ÞÙ—bµå.Oež¿7È/b²ÕÚÁ”'IƒHÄøâB V™Z5Ÿë¼[›7£b”¹6¨ò åÈ—¬9èiÈâ ÝTà2fž:„Α۱j¬/‚ž ..îýùŸzv «k#Iç$OM>&êÜIî+è °Þi#ÞB£ {t ðü´–¤í·²ÌX¯àÉ«…yd Âw²Kœ'GFY>tM¦Êµ„!;;:QB?¯»øßÖ#q®–ò³¾R vQ…'–£ÄEGp_Èß_=5YüI ?ºà8 ?>„gØVV ”ÝB8§†{#÷Ê·ËêQ Àk‰ÐÑ-çu]kÆDòð íŠ\ÜË|ahÙ°ñú™ÞÁ4 0‘|±&nµ½ëÃ¶Š„éâo¯j-¶aLÐ}(VÔ½{ÆUQ#3MþälæéÇ ê£ª’Þáá7|¶ºCïå׈ ëÊk,5+³Œ$lÙ·9ªªäþQF“küàLª¸|ŽýýDd®S¥ „EFNølÖLöV²ObT â­3!¥Ø&ÿ&¸TEØ rbò8Ø=§Äµî»6¨ÂPÏãBé1ÌlÕl¢Ü1±ö.¯Ðª@,X@/#]™ób4øAw:AÏ~´ëȆòJýªáÊ_ñÙøÏUȆÜQÖk— áj…ɦ°·vÊö½%Rkà…ÿ¥†¯¬îÖK0ŸÎXLÜ#6ytTwþÊTL±ð]æpÿ ë”3;ܲvZŽ¢Æƒãè¶Ýª«d_\ Nå½×[¥¥U½4P°»kÜQcMÑÉY\*w…ãë÷FmÞtÛ|!±TÿN.E¿’À&‡ËM€pw€qªѱ5ë^±Ë8‡8¼Ue¸S~)Ó<”âFá÷ RÑ9ëÆs Ø¥½~}þìÅñôûŒ„ ÓƒüTÞŽµ ¢ˆ}6Oã£Fk÷^Ìf¤Ç'üojò«;¼4¯ñ/6©Þgi[ð=¼¿ßΠ(eTçMðËû½EÅî,n“‘Åðê”›Cñ¸ºi/.&UêÁh‰:øäí}òăï—W›UU–ȳ‡˜·o*Û á±Ûݶ7»XÌêk zl‚®ðP®§œÇ‚Ý€:´áwÕ¤àÆËÌ F"©5Š”°Õ¡:{z í]ùHŽãPìej:ÂìC<ܾ„‚Çó˜‚Î ]’Ê_$Uÿtò(ñÂßHI%ò³Þú¥º×m’=CóÕœ©u Êã„û¤©¹£ÂKFîÏBóx;äE Iü;¶÷êÁ®}õ@T«ôDÖ`K¤øpøÝMª½ñ”6ÜwÊv»ø Õ.ýVJß1ÇÁëF­„iø_ƒW1é.T^„Õ:ãà{Ø”9#¡nFljË1çüÇM.1œR¾œDY³B]ŠL{ JþŽ¡²¸éÖ¬C§=Ýçâ±tŠ /ÁN´,Dz¶Ôó¡&–ç ¿Y„ØgÆ|(±»d°*\[¸LUÙ&é];l VƒOz¾ºãeìmzRçFC–Þù_"êÞ‚ý½\$…!Bã/°gï/‹àL W!µÈSO¼Ýpøßø)ýê]ü„¦^ÆzVìïÊx+ÿOwòhг–;Ê7gƽ´óé¸W9´¼À%ÊAÎWüo qB|-ç‡ØeÆü&Ÿª ø@&"eÔ%eDQ_š,á!+ïôääD‚Y"T÷~Ô¹~‘a‚µl`CžïA9?¹\Çõ”Y;¸/ Ù„j¨íx=vyjºYòK“·.$»¸šTjø]]2xØT1|àB§LdhÐQ{•B36Gþ×ßnqyD iÌ¢²}&gaò-Î€ŽØè¾I dUŸ8mõ#c¼,rr·äf“äÝlŒúz—Z”] \à6¯ŽŒ ¬ûÆ¢]( Ko­“%ˆÎm&•™¢´©ßfµU߬¶Š“Ðz2ü0ãäþŒ%#eOáesv㱨ˆ1ÙÖ‰/¯ß„“ç˜Z¯Ky0q>‘|ÍU!)%"g(5p÷Å2Zý]:œZ:²íÝêzɵ¬Ä§,Ôüû‹€áÁɬÅäô¶œLˆ/‰`î¹{^\\ý5tRlHbæëêYÛ(&ýÌ9æ›Ã‡rZÓÒëm¬@vœ‘ê¦Z¤Ž ‰®1í‰E3,}§ÌŠþضÇÉ!¬áÊB?ï©ÆCmcŸAbðëŽuW{ðã$ô²> °ÿ¥Y}§¼ç$!íc émý µfází6]?·Òâ-ý6¡La‹·áÂòÍä jï­ÅìKòQ©D5$üÝ’SžáÃìiyÇ­6Í&œg5Mo§:¦rçK~¼swë ‹¤eS¦wÆ|`2õ•Z0‚ÐtD\KA¦–<æoÑ (”’›FðÑcàá Q\)Uºt· gdÞÞò[Hê>¨}:x¶Â).ÌÓ½&OEX)ˆøŠ‰Tu©L“z†ÿà|ÔYjª8I_cæ£7ˆ*Ç7L D˜(Ý„\ÍlÄUae-±P)•R a×÷ÐqÝŒÞ&ªFWJ¼úd1opðúžeÿÙ‘Zdz'À¿¥¿V¹*ïÝÔn6 ‚@QÖµ$}ޏÁLìÔŒäøA#C*Þg"þMpºÃáA;©Šol¢s,ÎÓCÅB~«Lèï þ{ÿ6'/%T\Õ)kÜÓ3šàjªRXÝQÜv¼sMì$ß wÓdÐlRWM,öŽ©pÂGԜΞeøìn™²@>ð“6"ÿi“†ÿ[ûßÈé$ó”0Q&"@GŠ€7 à%ž:2×ÍÔŸNí‘åŒsÃ=nöÛìˆú0gÝ j á¦Ö½ÆR[St«Î …ó¤ïë’à¯&¼!J’Vÿ„¼/ÿ'•ä~î•~¢£3A—JœRgn4o¬ø«„Ší|TB/õLìÍ?Ÿ†oø=дºÃ_JçÔ$t,4B¥]ð¶êçç]2v*|4®sض¥xrœï†—QôÇ­>¸;¹Â. )d >÷æ–[½ù—ò*Yo ú@ñ%BXÃÎH#Ð-E@åãu=.7,z¯Ÿ Í–ÛiZÉw×00ÑJ>t,nÎöâ—Zû H¥ê —?L?¤ýºI^Y:yrm9¢´ØÊ— 9fT_bb`þQ|²k÷»ö^4eÚ^õ]­ïüâ,³/"SY4õõœ{±§!•z뢣¥bi¥ü6Ùö oBB±g‘ì¸p_j’_ó¶º)9W´­`ìÐu犌¢_ýÕ±¡ÚòúT¢PC zroiÌ ?é{Ymˆ¨9W¥À1›êȈ+”kLDÉ÷j1òÛ“˜ø5ÙYeäe®(·g²ž{*»–?­XÐË\vÂ{HI/ëXêy{ ÙAz*I':éœL~Gáööñ\ @Ò›‡„ÕÉù!®ZU¦Ï¶d)‹=÷·Ã‡‹¥7þIwF‡ ôãz²¨e†|b™µ{ÎÏ¢<<Irù°bOjœ¢½a9¶=68ù)Ýç5Û«aDðñ¸§Y˜‘ÕH:QâªÞœ>TqXH_w}²þ’í‘ut@¿B j±Ë¼‚2M/ûùM%qàõ1Úét^%ì¤$ ¼ƒËñ3Û6V2ßÞ@*Ųò Ћb­OFû »˜›©d¶`±ßΰ ¿ÃB/ŒPÂÉ«;‰R¨†òTö¹Ç#åb¼î—è·Ÿ ¼{‡s"kSûë/—×EŸjƾ…ž],C @\—›^wË“‡ÞŽJ^Ö/qÂGÚÜïz×µðƒý‡gÞjoáúÙÁvSXk)çÈ·E1ll‚œ°ŸkE’ਈolš›ëùAfÉà B¢ÕŽ“Eu=V—ü (S·‚µÏÞ‰$¤ŒýbLY7`Ö(ÐRâ‚´ß!£’ÑJàóßó$yÕ ÌRA œåŠTì‡t;¼Þ{Ðé§â¼Æw<ÝAF!ò=ÍÓ>ÈP5¾´>‰ã3¦*'Eš„ðuQýá\ßCÉ ðz y=^Î-[§›ÎÞ¦eNæÆÜcðüs‘—6xw0hÞžrO‰øcó£VħŒ\•‡¥!Õ]ñ=½¬+D2y]6ßói‰™kµCœ~ÚO8´¯—j›fõ~7Ïù>d<ý¨TR%E‡‰)7±Õ QBº×¤ O|ÁË"妓/þù[l°ÿ Sã1σ1èÑpÖ8 ¨$œµDzŸwQGEè"(ªT]Z8µœíÓÒËêüæʮær3Ù^h—ÜŸõ¢¶Ý¾çQ†<•~-[ÇI„éù"´öúëö‹Ž… tmŒžõ,¸ãÓqƒŒŸáSC~ºÔ)I½SYÅŸ}^îq‹„S3€&OÏÇž¢W¶?ùÈxyq¶ôgÿ8¶+8WòƒÏG>û©p3­×¡¼®h• YK€d[ºcÊIJ2R;-ùYo˜B…y:”~Þ=<.»*EOu(sF>ÙN3ÐÃä¼¾Á¹ªÈÍç‹°zg!áòßð‡œ*X(Uˆ:“FÅ®‹2¼ÊV ›z•žjü쳋¶/³•›­ªk?g+ì&ñâñ3|D|ÍÛ7“‰m©ÙU>}\˜0ïZÆ»IŸ ^«Î•v.Š©/™™!¶ËÀ9šÏ¥; oZt»dðµ fÌã½"sÞÓ_}¸ªºâ©æÛ ¯Ç®×µEÛPó‚DŒƒïa²{ÉM 1Ïç)LYÙr—e·¹U™Ò‹œÕ\¢«1Çhô÷–Þfå! 5æ–žIM·Â»«f%t5Ê~ê‘§§á˜uOÈ1:²Ä­ SéxÉ\3¢î”ÓŒ9à‹U×wÌxO+¸_ÛZEc‹w©Òîåƒâ óƒŸk§žš8 Ÿš<àJp‘ßËy=Ó17¸œOÉèMñÖã‹Í“ Q2?^«9ss-êŽ_Oo¥¶›2qflÐÚæ¯}T9Tcqo¬ý™AÄóî:PÞ Ü;–ý †+ƒªÆå¾s«Œû8i1©ë])ìILAæS$5"ƒb6½,fêuš‹ü¾)#y›‘¥8Õ½ðp3d#àŠŠìùžÒ‹Ñ¶•xNÕ­Wwp»eÁüMv¦v¤ÎèÃó5Ä­ MwкCk²lAý©Æƒ¶áÜ9/^RUÕBim]'ɦ/Èb6žQV³Âµ¬ d +ŠÍËMO·_“/ÅtŠy…V 5ù†=#ëB‚¤½ïIe¤¹SÚM%Ÿhd•çÌìgÏì=ÏÌŠÏ~ñXG·ÛññîI¢ÖyÏ‘!“·‹8ØãéÒ å;9n¬t±èºÞFI} UUkú\‚ËFJgްÛ+ñðCë_hqqîU½0œªá Ýr4o®ù…áëÞÙÑÜ=ªªÅñ¨j;/EÿŠ[‡¬|Õ{±)ª¨:zw€ö}HÔMãúV!møÐEˆ3øtåÛ•DîaûŒV|náÛUÛªž¹«Ú˜àí)%¯rà›ÙPÿ­¨C)Š[׊¾|þtkúÚ<Ø"÷£ÓÕ´)©ñË…æLµ%ûËýÍœº§ü«éOD€Dd¦:‰g(\‚}þkE9ÛI*)“á•ä ¶Þ.ε®¶©Ñu‚“ñh©Œ´¢`vÞ‚w\ªwu¿0½M7x&ºßâ¢cï]ÍìÚ÷ñÀOvÀ(°”i$¤>£T6êX¬~çr63Ë͑ſí—'®Ep±Ö÷³À€ÏMZÆ'ZV/ ¶ Ú‘:Oƺ üRmßžHñÜ,TëM"~«0ç•é°‚¿«Ó’ôñ9Þµ4›ðô¹©YDÑÒûN:·ÝV"âÓz²Ø|3i‡éx 6ÕÁD¶çIÜÁi¥+…Ž—ªˆ%û ZC_­lgÁp·™¾lÜàýŸtõÒÝc„'ÒJµ¿cdŠF;é8Ò©RZÌáÑêEðIÀ†ùu#<‹×cÄþØ1w÷k>™Îµw™ë,YþÄ&…~r?*;Ày ûîD#ß"ü¥Ås´œ:tƒM:²jD›ÞôŦa Í<Œ­ÜáµÞU ËÎu¦&[Íôx¤„©+&&Nª'G%» ±&—u,£yC}É?ȘjòÙ*W=Z3a»ÆÉ4ÿ ¼ª8¬]¿ž»œÂ‘’R‹Ý×q ©ƒ I÷ó¦X’£ÕÖü™kÀgLyðe?õÊNØj¨CûÎÙ‰ÛÍGÂÁéŸÍ`8FßÌ7ÏM€Þ¤ñsë"{â\ÀÈ_\³0óò§¿ñâs‡£käH*Æ–· y"1b50€j'#ú~¹[œ Ðäè+J«Wrs7wýOÚ¯ûWí'|çeÃ6+¢Kø(xhþb©oFÎèè+û²MëiçIñ2‰´­xX‡gëç’‘¿R;í••€^²Ï Ñ¡¹–*ñók!âì=®.¡‘[kYÚÅ|h*q•ÉVËW®Âá ÑN~›—5<>Õþ}÷áFÖ½¯>/¤ï/Ã+XB\Âè¦kcm‘)¸3WÑIñ·‰à 醦›cµJ—ÄËJFBä¯E‹E"ÊÕëWÚ—Ö:2‘æ·¾ç­ަ>Ó£QO¤A7ôq8` é”° ìxõW"i­Ì®HùÈŸãÍÁ‹$O^·W?ÏÝG@[g}PL°Ÿ·8¯^.Õ¸PN·!f:)èÐÅIÂB[€æW{÷rgA?è&ꌶ]sm™qh¸ÝD-=£¿ìþˆoDkÂØEƒ±ð«òCÞiÀÝV8[¸×cnå´VÜÝÎ57ØþŽË'½øƒz%¯'™¨ÃVjyµŽÝ•_Hãòœ1œ1w pŠ\6NÖz£O›¥Ç0Iʼn µ~/©æÌÒ¢´ötE ´AüO¥XW° ½)ôT½6{}ˆà‹ö· X@G©¥ Ù(’öõNC°úŠÇÚ¨nпþè“å9í0wÍø9ËáÃ\Îe¬á¤µ,û°¥Y'{ž‘GbºÏR1Ü”Ocå3zš|í›ÔIKrÊ9\éȃnI³ŽÛ2 ,—ãU—‰U¿3Ç}ù4ë¡éq˰«Ü%œ ˆ+‘ƒcˆƒ­»©ò†é—@†ŸÙê?Ñv10Ç=Ù¾úb0d›h3)ÍÆg¿ëÃàQ hñ4üáž:íðàŠ=í»Æ¸À¡ñ´›ÿD9—Tzõ,GV¶¶~[â¤ÍÀc õ“/N»Èg ©%%X#-—{äâ¦öç3㢈·Î»ú½áˆn½R¾{$Dé6òã8ÇÊ^ÚÄ;¾ˆ ¦BØhÂG&jÖÆ.Ÿz˜Ö’0³†Èû²¬Íc[3¹iuO¡éÝÛþ Ðã¶hr"kªhâzFñ†1ô¢»ßàßâÓ.+ÜÎú{æ Îõ42Ú×·Y6G”¾¿ì¯&ž{b¡‘7É>™öÛ(Þ/ðñÚpbûvÔûs«î¹£ãÚDÎ0xtù!_ÜíòäçSÛu*‘"ãL·$´CÜ´÷(–âÄ<É'4Ù~„M¶p³¤†q¿¼wÌËUàÒ½šC€nÎN×mÀ¢¬eâ1·¢ŸõkÇÌÜ^7‰T£³pt'ÂÅÓ­ÎÍ?G” ðñ˜÷?ÓIct{R×_ÛM ÐT ÝêÎ௮̈êÀQ‘åLé¥/$62Ð4Í«ãk^°!P‘=B<ÅÇ´I´ƒ, º4¼?¥¡Œ‡‹í‚Q/òx2®§ý¤²¾Ø†žóή±š³w×¼WŠçÀ«ØèK¼Œ‹Ã¨Ä•ç úÔÐä:£mbI%$Þ¤Öņ#3þÄÇÙør_¸wÛ]u”evš†žüEÁŽâ͆:šB…ë±ÔŒOç 4Š Ч¯³à¥å€HvCÄ <3¦ÀÀQ¤Ú;²ÚÁ%(; ó~ûà†ëy?•öý$ë ìF5iîrËí5®¯fÛÇ+G +”ÆÍDVÄTí°¦7=ß*ð–Çó3yׄ;p’Ç3u ˜6Ø Í;fgv[GTm¡;Öž\êcž)¼æì![UËA«DÝ_"«B ¢ûñ8É4r:$³5ÿò¾Ì¯°ÀµŠá‡ë… mcU¿«ïÙ|ðvVüx÷øpP­öXnã®Ô X\õq í@‹êb×õx}s%©ëгK€ð?bOÃdìÒ3ݽ3§¶úPO3j$2íòy_´ô\u‹´+qÉ%ùïÓºI˜ŽuÄÙÆ¼Ö¨¯‘ųõT¢¡ì‹×ÐH…B)™T=ê:”i°}é\Në`¶ ¹‹54@kvh¡RÓ£”ÄOÂèv–ÛÞ…ˆÄï—§¯¯I¿ü±÷ñûGù™=3 æFr&Þv“,”DotPqK¦å’•@ÈzU`ßQ”jgœ=Ç÷ÄÚAÇo—¬\ºnc.3R|>"šð{6å6"ŽéN} %-Ëœ5ø¢—¼Á U¦=+PxX%=Vf¾~ØBIÖL}~ù¯¤Ç‹» W7!/[gKcX¡#ê‘äxh%‚$óöûÇL!9«%GwM½ÝêÙ²8#-ÄÝXõ_Éq^wõ›¸àjækÏhx^'“óÝtÕ€+O2ÛÄ|2(¸§ùQø‡á,JSu[WñV³~tzb)išÚéØD2ºdX r«¥Í«>èZkz³QˇµV`x±ñºÁÄ·°¦ÄŸ &¿Ns…-·®igF^yYLC¿E1¸¾fê  EéÛC{íÔ#òšßdYVKR}·{³T÷FsµÌÃbÁ惷!ód/þ¦P•Z Rwq,×Äa_?ËJ¬È$#‘Э¶ç,/B|û¬óј·ÊPßݘ²!’Uˆ&_QòFH†ç‘ÿOnÍ=!†ßn²*'fXÈõ]]¹U¼` { &ýËQáÍ w ÚߤÄõ’Ý%6bÔò;i %l« c(<ŒyöÚ¥òö¦¯Ä—9ã²qÿvéª~òj"m2¥·'¶xpuϦÜPÿZp[dž^ðŠ<)”ÖÇžo8wõˆqaÝ à~C üñ'¢°ÌØŽ”psdº8–{Î`ÆF!„çå®ÁÚmñC«¢ÿµXÖôG¿À¿ÎÊmîàš ~5âÜ‘Ÿ¯s]w ‘Þ­šG|ŽŒ™Ÿ¡Àü€d# úC;cëý4‰fF4ôatÈ#¢\å^by÷ÌýNÒÔÏ3VJmpožjÐd¾T£üä€TWÎõ´7.Ç ÜÀ2¨Œì`d«_À<à±N£í–ùêI|Û[;Âòïôž~/;¹‚¥œ¯ëˆj¤á$«`UìÙ½~°Œþïü|˜2~^woeïŽtF`cE(cYp ‚¥õÔm—ˆ:?/Ë l¿*b¼}©KiÇÓð¯$V³pÊÖ­ì…afÆDB ñ0Þ$³÷}ce%ó‰³wuN8)õ^æ’¸¹Ý:ȪeÑ·`¦ƒQñ ¬?]Ö?T¬hæÌÔú=TA‰¼b½!úžéÝ-úzHhn±Ó–(òû½§ª¯DhÂÊaÚT‡ÙÜYú!¯Âj×S⛎پš¸ì—Ýo¬Ò‡]eÛ#.\®—×üêY:IJœP@B5ÎǶ#"!µ‚û¸ô&fÛß?':¦Çfß;4h•ì§Ä;ÀJ»w0kæj‰wï|^B€FbP• Uó}¯\¢âÌöæBj×ìT–hWÍ»Óù¼äQ$d†Ÿ3aÀÝ[˜ŽŠ¸Úýn}öèÑ·Ÿñ²¼•­Ãîï"ŒcCöwƒÓ—¼¯—˜ˆ6†WØD (óåWmÒDkË ïlÿäSÃõսƜ÷ú œ÷!M.YP+ÐR8°¹8ôéá5gƒ±š#ì Yíå4qWmÜ_ôáÏh›}?×óG…äñTÜŽk¶~‰Y˜ïPe—À¯(úQ7¨OíZFëŅ캯J Û ”¬…Œ!Y&bÚ¬—*F˜^MRßÚùû½fªÆå9æãF¶UÙÙ‚6Ÿ…ù€œjÝÔ Ü·4«˜QØÇS*¸Ãq¨(èÈÃÅû­$Zþ•Ó{£Ó„p¼ Îàð"52œTq±õ¨õSçOM·jö>~Ì™NÙé˜ %i¯¼ Mq¾r‘>4ñ˜³¥9«R,ƒ*ÍÑçjí.xˆD·UDìÞˆ™o7PzºÏ¢ƒYÃ0Þr¬¸Þ–ºœ]<’Á¥ jík/ÓX ¶8n ¢k¤ß> ]©†'sÚ*?V€™ÞiDêaWçÝQø·ƒWRé-:;¢&­è)ùE1}Ó<^k?Šóç$sÛ¤bÊ1I/\¼*ª1>"ïþ´`™  NRœ“7¢T±¸ÅÌW—=ËIµ£0Ž=3ÏP×¼·(Ö¯ _/vÿS½ÛÅ¥3Ÿ 8¿Õ·"QŠBjþÕ0¿.á,-ZµC«SÔñé7}ÐŒ*^½*ó¦»=õG‰5#êfت®¨Äî¡©7ÆÇ^¸–‚^¦µ)$–$L [¦Û3HÝ“ÿeYoç”Q|j½¤Î&!!S$gyÐÊÙ×¥SÉò_èʱdÝý:‹0ó§§ø8Ï*dê]ËmýkȪ¼HˆªÕþFâá J*ôzNãu¼¢Ÿ;9B³l^=y²–X¼&˜Cxúâ«–uºšv£3`‹„â5,=$^~0Üì‹R†ÚŽ¡b&ÊœvÙ3þ–˜Ù¥É²2#‘†õ–Ðê¬fOêÃÃg'©‘[‘6[%m,ÆG/F5Pñ+É´›¢jì G§…ˆXG)¢‰wy4ÍK¬L]<é¦Ý§o­yMô%>í#kØ¡õà7UÍŽzïùHqŽ,àƒïÍÚ]A 0$öÐÛNô‹Gq_Ï~!ø¬Jü6a©ÏØ–å¦@£®@.HaœÑ|F;ȹ¬Ûh·ŽÔBúÛ¸—ëØ†o î±§P¶×ôK±é‰`¥t1b#?‹\`E“ѰöxYožŠ ®óq0yáBr}T¿ÓC^éÏ%‚®–s"·1_µîIçxƒ¼ǼG½e‰%¶ sæÈ|kҜ٥vü6hïðOªÝ Ѽ«”L/++”#­óäe4p6O‚d÷qhû{û;BÌ‘æAe9]œñ—Ń7÷b Åx,ˆ·»‘% ä%ûßœtÁ‘B'Çd¡ÎY>¤¢ð\‰÷ÌBW´=”¢ñÑ1®N¹ìéšÛBxÿ¬ov w&¶‰4f&Ë›b†[¹¯ŠHîÙß\$î'5KÏ-Z$"Ûe#mqŽžÜwdîØï­ë‰OV<ä{WÕqÉYñÒ¶X£s¯Bnõ) }öùÛH¯+Á ëTµXÝÚ®þméuU=ÝŠdB ×”%ì°ù?Â~Ëå  ü¹ØòÁˆþ]eZ  pÃXbcj Zl¡`p!ÁS$Æ,$§_§( ÙnèH > ×)ªÉA^Xèè#ÇP—Ÿä|ãŠË’õ#RnS6¯8†z`2oUŒ·O ʇûU;þ¢|> Òá"Õ|d,j1°o7lü˜TÈ–í7ƒ§Ä´íÉß5<ŒþF8ec½“ò@Üx[)UyŒƒê|ž–nbHXV{~Ûè0À”¯fðME䆳JѪ̧¦M)ddS$™[ã¡v|–䫊ȡ˼º}ÁËp-jF0õè1`D ,?ïÆV IÓ_™&—»°5Ñ ŽV ѵ㑃"ï¢Ü%œ Xål\òÒc¾K¬7V9tØW#]ªsÆö&Þ¯<¥ô Lü¤›P|w §R&D*õ‹%ß"JK¿Æ͈=³i¢¨Þ‹ÇÙ“Y:>}pƒð›}m–Jú‡,RÞˆH‡¸Ê^j6» #{½]ó„õb†20-ÔlMZÌ«™‘p,%`vé¹'Äi|Õ‚+˜_™dýæ¢ò ‹**’Pc}’×@zà¥cíôh·uŒ¸`¹›\c›th±ù=;^9(: å.ªƒJ€¸PÆáÒŸ@mât¡Žƒw­ÉÒ$ñõéö¥Ú+ì)Pgî!ĉ¶ß•\½þzªZÚˆG÷E©M—÷oèÚô4ÝØc¡ƒÍ°’,9¾;æÐî–`aÇ[‘g`h&ö<³˜X,œu9Zö%MG¶Ø6!)üÀuf÷ÅQÊT²?Ç.Ij¸ ÏÁí:êÏûÿMª©z*‘˜ØÕîh\~´§ò“¼8jSp“Ïèúm¢ 7=¢;0 M¡ßÁýpls\+^ #æÂBâ:}Û*Ǫ4==äÄ%íIÀ/'Ÿœ°…PøÁefm*w&Y×ýÑX[—Z2À4æ V ¤ù´ûTà±pÅö©lÍ÷¯‘ôck/bpÕŸ>±¦`+ ÀÒP»4@¢ôh(”õÕ‰¿T†nÞ®®E³n·â‡Ù'˜¿^¿Ó*­êõöb<Ô27š-MÍaÑkç€$1RõTÔAE;S²£{Ó}(5,3 M^ãŒ=0!ÏdسÙ6Œ/é [kKhóÝòfò<ç)éô¡—ãé”°5Ó«¢;_®QN–ø–g?¹ÉO tW+燑vEYèÊE±NdWIåę𳱑Fú)ýžøzPÁÓ‘wí{Óú¯8•-Ž_NxEM/ÓbGÕ¢´f¦ 6³¤–ÀYuözôL4Ù`âq–¶»Ëäó*yIþË1žñ·ü´’ˆQ<tØY(‡6Br:ýPd§ã©Ûuí½ýrϨÏ>©ðWF¾Xn ‹Ê LÕ‡#âwòÚò“§zÚ=&Õ==îD䇉#´`¼ÍèéY*ðP 2ަ'bMcÞ!Ï»ƒhLi­Páaî];‹ß>ýúe°¦ÅNœ&q[ÿŠê­pûnñÞ'µ÷Òµo }9OWÙ~qÇË ïIyÉø•Ah‰.Xn”éMašžÓ®£é¼Õ×V˜´Ç WT(¤’";;f'ÅnRNÿ¦`ˆ qy3[Uë¥çëŸP ч8xfv|(§(uW=1;A!¨ç=Z#¸]“­Uáñé";eŒ>öíè7Ä}%B›­xøø·9Ú=MðOçn±K 4X‰žc¥ Ž:¤-‚li ¥†  ©GjÝìL«|¸‚èç[çAóÈÁœÙ‹´RÌ+\ñ8ç NðhÀ'ƒ¯µ(é3¬ÏR#§„h§tûù¹rú,R¸IófÂ/ÂC:ç)qT‘ò¨×ž@ï¬?†á*mÚÕMYIâ!!ŸçøéUü Ôæ,ŸÝÕé¸ù¤F¨n°#ˆà àtΞžëò¾(žê‚á¹¥·/9ÞL¢éѧyF';hñ0â{/M¾Œ›…=bXNy]QkY¯ŸPÓ½w9=åÒƒ{¤û%…D©ÔÏzÈ¢×/,ÔË¥KïNg ––(“ƒ.9zHTañ×#’—T—ñÕ‹)ˆ#–·—4ñmŒx´'“9Ï J!Ч]¦Jeä\šõ¤Ç¤ E£b›!Ž%‚‚Q¦*ÍÔüß+·†'ŒÅ®†…èbÒ'»Nçvê´/—Ü&¦©¸žkd· ¡ÿ—Äï,ÕhÈ à³Õ±ŒÁ”±VíP} iúÆ[³]â¿‘×¶Ô{t]ÿ·ºñBÛn×κ!ß#Z:ÄëúUNCZƒÇ4 4$#?6¢A„ÿç“FØgáÂ]æ*ñ•¡”£p ʸ¥ZÔD[Nm•62…Ñ\“&öÀ²ü†Þqè}Ýù{'ÿµÿQ¼4fÕmz0Øz`5×5¾áI3Ön}A~ÀçB¡HûE2­«Héȹ¯ªªSÈw—ZvÊÍÑÖ!Ý\‡m—[Œ®pHI…D0Öß-ZlÞÉ ˆq1xþÕñäë^ù ¡ðGþœÓ¦xš:?Ɇa´ü²Ë­(+ZøP˜´À(µ¥ïéí/‡< ‹¶¿4ÅÒî8¥åŽgÕ>[·’X‰$ Sh[²”øQGœ*â- ~(–”Oì?Yë‚Ü]Ãë…ÿ¾£r‘³HžªCŽüÔ%}£@³½ÜU.–’6‰ì‰qpJŒª³ÔÍû¸ó”ôž„\¹šJ(Ý|õhñÄ_³Ä"­ê#OL§3Âdn¨Ò›@®ÀÁc"áÅââ¶™”Kú'cÅ‚­?ºF±…\¶1c ƒé „=–p,ΉÜñs€ik^;í³ÇòŠrV£´!¶PЏ¼†Û Q± Qùpd!Ë5ê¼:±Ð„iG·ÿ‡à@*«3ûôÛ7€ô¹·,€%.{="ÎZT^›Þ"´WRÊqh=`Ò>ÒyuÌ”GK˜_ÿ»ÝOÊ4g·ÚR~óàÊîAÂlåù˜ìÓzQÊØU<`B´‡Ýܵ¡7Uøï2¿øêÓ»12àfMMvÿŠsÕ?m;” ³ÑI`©:—K¼ hq„•ÛÛºG‰KðÃt4‚½úÕ凊%ÓiE-3D7ìÌdòïVž|š?ýDØ¿ÐbnæM‚ùÅ€ªž®ŒzÍzr*ÝT–ðgšÜ€8ýyÕg´Y…y5;üGŸ¸…>‹dõc…®÷›Ò»³Ïé®ç¼2-=Ë…‚™´îÓ ÁKp˜Þ`ÜÛ¬U§/c•ˆÒo¨”½p£ðñ“Ü+ißôP4Ÿßûùü40¥ÎY…>´‹:Ë´xìH0¬‡NÓOÒ“$ÙïMâÙìK«ÓŽ'CÉ«'Œ˜< lŽÏþ¿á´ØŽT !!%‘ T¹Òqº¸*¹ į˨AžAX1#;I¦é@_.]ì;51cœ‹¡Y”?*MÝ(m?üÙ?çªZ£Ãr…0‹•ÔH´?ø$¿SDQ ¿=Þà•M¬ÇÿŠÆ$´x‘'NbbÉN®vps$†Z°€Õ»×tç`ëSÙ¹hQÅUèºGùÉ..ǼZ‹tà×ôƒòžYȼ½âÓa9s›h´¨¹HlÒ­G˜ûD½”(ÄNÍ;z Â%ÔÝE@3ë´¬vƒwe;¨Aˆ·dú’ô‘Û4û‰¼Äœùáµó%‹D§,\Ïæœ £¸ëÜ_]ïCÂÄÓÏcÝ™a©si{jLVTJU_ý}eyÕ„í¿‰0“Ï&Š'þ¶«ëG„ Áº¾7½5¥W|e@W(¸ŠXÙJ×4!dŒÿ5c»‹y’\>_:s9@kUžìŒðˆÜ‘@Æë4JÐ5 ±éÈ“[|®è6±ßhޤñxCšM‹4ìJ²’±a°ÚJ áôÙÉù 7[»0EÖ¢@ߤ¥G°ÑQ£Áí„×ùcÝû´µ<äDe³´ñðÉ×R(~Qoµ±Õ¤—HÃÛÿ1I× †p>y‹¬*‹¡xŒ‘ò>XDÒ¢P=Ì´ìù›âNO5}çÈCmÓ#XäVÇ„”"¶Øj¨*ŸG—ëBÛîM·¨I;Ⱦª! –ƒÂ®¹ ”÷áˆjÂxŽ¦ÖŽeÿüжI3çyß›¢ÅÒªÔ<Àæ(K¼œM TWÐ9÷ˆ/ª gBÔÌ÷Yè¤ÌaßÊòR‚üï¼Û:M'º„Ë!å}Êöë0Ô¨Òë¸\ä‡}y¤ò›S¬eMñUiG‡ƒÀp ºåqoЦÿRŠêE ^IcùO±†Ú”âृNzc*q:(7Øv7~é­œ |´N\Ä÷`Ém‹ç>Ú4ýR[¿NÕvTÀWVv FG‹û…¤ÓPò ‰82ÁW‚²e«u¤ $Xí6¾F™%Z&2V,Š|±ÌbgcyòÛV´4S¬4ÑÄÈ=>“T6 DQ ¹ýK%ÙæÙR›OÎèà`U¥Á¸±-g/RÀ$ØÇ#ƒùëL:‹ûªPKßâ÷DA¤¿=¯fÜ×<æ }ª‹³íAˤ3@l¨y„h/vÝ…¤Üˆ†¸£)Òß–îíl 1;øFÞh«J·Y@ÔÞr—ÛgÞÁæÝÍï„ÓäGHÅ”·àè2åz ûÇl ËõoëÞ*7pþ~÷m»ø0ÄÏg$ù^šÕ˜CuŸÞËbYD¯KGŒãIÞr˜‡©mTef´yÖÍÁa¥q/ŒJ`€c/1 ;ðWÏö`r•  Ì2)œÉ}Àª°×º³Xm[¡VÿÓú¦dÀ'§Yþ`˜w-ªæýO3çõϱ NòyÚ-I „½Ÿb¯‰IhXÌÕÖ?Æ}¬/9ómÀ4‡áøÈè‚PTS23ëÐ’n~üãtAóÕ_î7ÒA¶Ñ7!Ó * Ü:ìÙ>)7^Œ²ex¼GF+*g:æ[< ugv²cúÑÐË£±aXçHƒ› :@>2r¬s oš‘TQÐÞŸ¬j4YMbó¬S~ˆfö†-ëXgqJUK ’¤\qÓÁFõª'ò@£é,§~£Ÿ¦ 0ú<¬:t(R¬:$ÿ“ñí¿ÍíXPËl©$¡âF£Ä„H(¹Ô÷á‹âÝ=Š%5ƒG èvue/mýctãFhZ†‘aÓ³:Å°ÐØSë”%ROæQ‡L~zG™ŸÞµöIò©å7㉭„¹îlÉz‰kU£QcªêÑ©¸2&·-鉢Œ®È×N®õêL4H/kªnÝæ=\ËÍ÷þá[ψ—D)Gû"$f²¯,kOصV2ùŠO”G$‰W*è.ŽI(í×ÙÓ "¿19µs’ î˜|²èâY¾8ôégž%:ÄkÏHòÊA~8üÓêÆnâYp;cÛNVzxcn4(f<®mòêúóÓ$âzjKºvO5{¶F$tî9u-×K\X)*â-Z²D½ò©Ã¯;œ¦ýTž UãnkeÂÙÎ{mihõ†ÒèÖ]«ŠMtmÎòa|Ë$¥h¿­G~ÿ!R“¬8äí€$7 2—úl½(°˜‹gi¾I›üÿpÊ™²ëLøð¾_† ÷LÙX˜70"~\&¾XB¡T³ë:ÈR7à\×nøo&86ÞÕ—¼„ˆžå‰b|{jáçÂÌY®’´ÍÓýQþ8}2û, `}æ@ý8—z¹w]¹žCÁ¥ñœÓü+ÉToƒ¦Ç£ƒ.UýHÖ~–KuW”ø›ŒŒ~Fþ4UÃá9ÑFJÉ{/‚¦bZ#©Ê5uvêuËžjPØôÙ½ §íŸùø„ 2{¬O¥‘SÓLoƒ!¡’ìêgúUÝ5NCô»FM¡Ã8æ4C¹iãcBâÎðîã…Ëes-4ð²š#?[þP╃"Ã]Ê]Q‰±[À>üM‰¡õG˜ÊÍ&Ü1ކìèæå lÃa‰ Ê2Õ„§kœN›4"×ÜÑØD ެ¥Ïx•Ù«¸âó°Øõ»‚ï%V™è\ô-jÔ#¶묆æ)1wwA>‰Ìèò¼ÃÄÕÊ×´™}}ïÓ»Ü^yEÛã¥^eõì¥ödRø´q³ÃŒ{ 1ÐGAÂ_Ô½(OñHÐûë»»(HxŽÏ¾+ÀîºÕ Tªx‡kú.ú]´Ã-É)à<òZªé!QÑ“¡»j§n ðòA5È=Ûhsîd"TЇ…)qOŸ¾ó£Ë_I ˆ8e•dõY‘t¶»Ñq[3û%»7b‰Onâã åÒÙÝŸ‹áµM&$û4"åO¦ãô( ‚hBˆžÐ(ÅÊY‘ºZ·:97nßóIá(æÐN€e\±×íÅÙB]´MÄ x.,ôŽeV„â|jûAÅ~Á4ÏsYnt¬(°‹Ã} µÔ(6ÊõZ}•Ÿûö¦L—  –>˜1'­—h?)Ï?6‘PÅB½èéúX*äsI8eBÚúÂÖ•Jž¨ R+ß6<#‘^ãæ¾¯6e#÷Öd¬fŠ  Éž“ÏÊpè“æ»Æ+¬d^a]˜¬õŽoöÈÑU8:…•-”;“ÇE}`Ù’ðOžÎò“ÐÑçÄuP9:5‡¼”h]*®Võ¶Ä0áå)ï\Ü·rþkàÁÕcœOhN¾í(z¶†<£Ýgšq†¥§äým_¾U´}ïX»Ë:’Ëê%ÃCNZü'ލ ù(ÈàÙì”2·¡P–µ_ F€Þ´tt]¦µ‹ Mƒl[þM{{pšHFøË7X/…‹ú½ã{r;|+ááå‚í—lT¿Ì_Ô"·´&Þ§T´{j‘l?ÿ~Šƒ sT{^Òë2÷ì:­Ò·äd$íÉö S$„_³(ìÊ'ý¥ÔÅî¤é˜Ö Rhc´ ?§í’?´ìüÐWŒÎ¸=ïH’¿2ao KWIœ¼ÿÒªî8åÁ¨‰›“\¡ŠA×üŸmKáE9T¸4˜ý1ññÆßõ%….þ[LJ_&E‹nEô•fl…õµ:d¢L|–~¯²+ë'Ĝ܆ÃßÐX?æÕŽd¶ ?¸r¹8êÙdºÿÀèÝ–I¤—¸ÚÒÃ*.Öò™Èý”°ŒêS€'ùIöÞçá j&ö߈2†-NV„¥hv{57\Ô]´ÑÚòžåňöòCqþ­3Rs_iIÆ­ˆ#¯ÂùÝ…1†þáÑ&Õ®¥‘W›QAï‹]úsŒ ¸î¹wÆøFí@¦A+ »%æžµÓLviäP×'ÅòwõÊÉOÜhT'j> {ûmáslÑÝÐÝ?ÓaÍ< 0ïÁ¡åùM=[¸¢ôÍÅIpË<ËY:ÄÝcùCq@ZtÛýN –'J|H3ÌðYÿ–sÓf»Ýˆvò]Y–ÇÛ5ù–„“{$&*´è—£IRb’OŸúJ_áåÔ,^ayLËõúáî/yц_ó'¤ÄŠì²b™Öäú¥|ßm ?Sê¶…>Ûvd¼³p}û@5ˆ“$:½a{ý±rµôÙ)´š€¦ˆ!ZáDxD(¹„NåZ"xr½„`å âdáô‡Õ„©¦¦LÀ!yƒ$Ð"š÷Ûk\r¨Ü¾.ÉÃ¥’’Œå‡ZgxkR¸ÚæÄ=Áî•çϽû³ah…ñ˜>µŸÁ;êÞ»ß'íyHucC‚ѯΈJ;Þês0l‰ë5]0=7Êí’­+N[LJÌå‚XA !êŽtCÐ@€ ™îŒg#¬„žRÌDÙpL RBCQ|Ñåac}ƒÉŸÁ7¿wn§]%ºÖAw+\Y\Ç8®š+igòD¶.¸ÚPšÎ4HDGDª}„Ñ5}Õ–1âΟÆÈ‰Oõê2M–Ü/Š±Ê¸¬ÞGÑ¡¹KE@J|r±Ù·|5YœØ8wÛ>§/3³ ¤íœÚ(hŠ&TÃýÉô˜6Ú—êõ:Œ¤wXýmF¾CóÚði÷@HúsóÉô•”özüR¬¶Ï!uä‹Hn ޲ˆ>µâ|Q„%Ù£šTúL]/í¸I‘B™õˆÔfžÎ4ºËÀ"U#óèörV .ɲ!^ûβ þ›Fá´Ï„ó¸á#Ñ’%Ѭ`†z¦‚Ìá¿Û”F”_|u^Œ•$¤xÆrÖ­zgDpŒ¨v_rxð(X¢–M²TC´4ßvý=3E›¤Y¦n‚ê3Ë.úÚDбø{‚ÆkÅb$‘¿"T#²¯h¤•IŸ]­Gƒ?ö®iÓ«î™)™«×Þð>6Fì…|(b¢˜o°ø¨Öäãi$x?šÉÇÃÅ ez)E.›šiÌâecž=g)ûy5ž+QîûNƒû"Ì|Z‘N5k!ÇJeRnm!‹ì+ó^máÒÿÔ6]–´«¬æœª¬?ΧúÑ„aÜÏÖPt˺/×b¨üB³µï/ÇÏûfÂ9ÌÍsbÈÄ^÷jYÏüZˆy¨¨bI"ˆ¸äK¤çU‹²æu bg=.‰º›_\'œ–Ì0hD\­È­d¡’›_Åjý# C­ÊÇ$ÇtJðBªe=¥¶³Ä8ï-yŒÚÞ©ÌTcÍ™%T)ìš™ãéÃ=\±W®Üù¹'¨œ¬ÆSóNiìóSßUrÂ>ÄÊdww 9Sc]•íøŸ8…Ù’v>ȹ|¼«xFÛûáwÏCŸ»07üm àž‹x­íII”¤{‹Û¦UÿúBñä³Q‘«?‘{à2ŒŒ­$Þ'0¬n³å^ ¸?j»—æqËîÅR}YÑ}ä¥'h®žcö'z µDËŠõëFÿºS¾VM”Þ¶¢F(ËgueÕ-nØãˆx¬Üur©tGvO>Cfÿ¡c "¢úè,èëaJ”7C³nºY[ÚD áêÉnþ:VŒ:d8ÕæëEYQEÁµœóð5Vsn°³ÄYÂ*xÉeT ¹„‚=dY*@Úb”ÆÖRž¯žx=y:./I¶xô•úÓ]ÉݺG³Ÿ.u¨j¨ ØÝTŠ“@ԲΊR Ö*¿çŠñOl·'Þ¸ƒ]ÈhãŒJ¬È}–¯²³c8‡,êJäÏ|{€¤Ô®èaäê±[½Î_$nþrÑwœžù€¬žÌøÕrCÚ·¯!";'9 gK|;ëù)2„LŸ‘âfPÏ•bT,gB˜ŒmR¿š¿`¹z6ó, øYèS³t¾±î;íCΈ°xwí=Øg™ÊQã TÑ'‹‡í—qŠ©™‘SéAC87£6ÓÊ{µºrí9&¾PûCýDç¼6%‹­aéNùŠ /;Ø¿¯N ¿.¡É•W¼…Ùþ ûS‰¦r3?=*ÞlÀ«¹ÅOSÛUŠ´MÈó 2ÃI‚„ÛR¶,Š„ö.Ÿ€¬ü…%€Q§ð¬ÄaöâñvEQ~–C+³p!HÝóVÝó¯Í-·²Ø¹õësM#âíá.÷ˆr¾ —â.)X9¯»pwÅ8; zCܰ¿pù ½ÌÛ-ú“Ý•Á7†¾Î˜+¦Êȼ8ù°7=þª®Â)l‘_Z.è^üo=y’ï¥Ñ˜Ý2oÏ÷êœÕx0[ëø€šÝ\¦+ÉŠIMƒtý =勸”éü†üÜè¯G2>^•c!)˜¥ÒN@ÈÜ–=£2yÞÒM–v$ðñçÅñù\…Lto’ÌέÑ`²'¯¦=°þÁ.¥è"Êã´€¯³¢y»ñvg€Êï¬"qZö=\ºÔ€Õhv¬W,ì`ùm¥NKÛz”ö…’ñåÔ¬pj¢mæ)YÊä³÷}z=zΉÆY)D¬–—0ÚöxÓg yÆ2sè_liÓÆjjS_­±»M&Ž’‘»67.ºqàp'}ð…{q«ö¤¼´`“«ÉqÆÜ'miÑÚP8ngpP]«Æ|ì_–¬^3:´Y(Š·&œK?#¼žÚ齤ä ?/Xî‰À<ü «åy7»~Íì(Ì·lW—TÒ-äŲcõÊAgÎ;^ß©‰—~¾7(ƒJÒ©zÇ3£pNÚàš‰ SÑ+õßy2¼üñØq{ªª©ÍŒþ˜S¥ Ðm¹®" @àÒÜ|Ö†ö}Ši"Ð\^"wi~LÇ¥®ò/ÝÚ}©cGôtý›cÙ›—>µœ|? év¢¥5(Ì*­@Ëf<.#è¿YÍ%¥zôܰ…9©ð¤éÓµ=,Ùq}ÃõßN61]˸òŒ¿Þ€29ÖÏRp>»z¥u~¨mÔÝóЧ€ÄíV§ÆÐî7¤6Ø÷:¯ú¨Ç"Á«t¶üËåFÜ¢ÃÓ°¼£Å¼éÛ'(/Ó!ËNÆØH—t…´A›h¬¿”L¡ß@‡è6kê†ñÝÃkú½Æ-_-ƒÊcü «Î%GÊi ¢( z0ƒƒšÇF…Í7Lk²®†¤wsEé~oõò(33s|¦Y[Ð È}Á·•º¥À3LÖ÷ îÑfˆC·³úìn×üãlÌsôè1墿9~›QC[O¿`øå_:ýyQ°»ïw×ó)ç1ÿ[ïÕd´u ? $„z‡BèH—ª¡w¤ Ò{GšÒ%ôªt  Ò« EÑЋ 4¥ª HG)Š%7œ—ó½wÜñ1ò1’¬¬µçšëÙ{+ÚGPq¶ÅK m4ª±)üo»ºâßøpQD÷fKDÅTŠfüº‚¥€ØÁƃ™3ëj«»Þe¦òÏÒè[è¡VtÙ<ç–ŽÀ€O(¡c[œ̺¯¯[‰é$°åâæuõQæ×Ç×ä’ìŒÝ(©·ÒeOöůœ: ¶3ÿöù `$Hô{Zª[ii™IÜ(À"‡ÐÄ={Eø7W꿲ìvŸ×•Õ9›žò _¬¡>Ö…NbÉñòR ‹ñ1B}] ”=d{çöPêZ’‹ õáÕžëákÖ…ð ÷œâ•6aî–BÅ2›~z. 9?ŒdDŸ~Ïz”TrÕ¬ä¬w¥*¬/ ìtÔûö"«q6ÏÕûàš:©M_Ã8Ý—Î+Æ YÞø¼æîÿ”¢›1èo„:ñ]5øC©è¿®vl~˜ÄZ†¨Ñóñùl%nAE¥ko|°Ói®Ï/+zúì–[újû3Z@ç`…^K1YÀMº×õbzJ¿0CN7Æ[6¶îô­µ~“Xrž7“Dq)Ì•Í;¥º·7ÿsÆ åºõU<¢Nͪ%S™°iÍ8êÖ¡(Á½)ôIñˆz~}':ëäÁÞØž†o&ep\ÛÓW Ó` @Uô·±“¼ <5%nòqáJa½C¯Õà£Þ>ënÕÏB3–XÚj=òDª pxä8:’½»æÿ y…Dï«|Xéd²`8ÌJÊ\Ëùî5‘û‹¢þ™ç¯é»=T5¢« íL¡’Û_Ù­«uƒnIh-CW"ÛN„ÖC’K +§YpQÆG2 K'¼æ?”Æj£u7×–:KiÌUß½ ½ÎÚ \Úš5£Z;÷ç´ò䲿 aò­$ü0>Ù1wì_øo..U Zˆñ¿èyú«³¢-@|1Sk»»=4ÊË9§ÜîÔ(Q9Dë³ü—„\; Y­ìæêÓ»æO”:]ލ]Ù lM S¯þÀòMQN¯gÓåYµ=·‘«¹(¹JîÉìV|ª6T’Ñ?.ç& 5äuª÷q+ƒ¹ÚCwÿ\^å†ô7šR0G¨ó/à¿5 A)µj¾©°†M©¦|óäbIýÅâ×knøÃ”%yö.øÂM¿÷«ÏûZY›ÍlP]œ_%>)¸ïŽ-r^aT7Òi°Øaé)ùáë[~sÛð­|•zÑ$^Ìįv±Á,L :&&iX/€Ó£½öÆ;kóϘjšÜôäJÚ«\)@ïèüTgØZåó˰]J7_DÎ6ÆÛ›Î~>ÉDûœ³ítHýÝd\–MzÁÀŽ:í×þRµé¬2ô,JŽK’ÆŠÔ ÿÔÈA‘Ôpûû¥¥‚³µ/ôµe–,¾‰_Uzè†áqéÜlò÷ŒŸZ›&+|ºƒ~ágþ€xàóW׫ɵIMWn,RyN ±†Y‘ðò¶Œ„¦þøŸf£·—|%ýÖœÚßwñnw˜½ž4Þš{õÏ2Ѽ?«üyáçKr§œG ðÒ¯1ÇìPÝíb ÙQ-°íêÊ õÊÜÖå¡)Ñ®DØNOÙBe•aôäéà›,žÅ=ƒ…Y¼¸‰/˜À¤±,|I>Á¥ÅÀæÍÕ i0Àaì©”?œ=kd¡`q–ÔˆðÅü“Y󻊩J×ÌC Ž~À: ä4¸74L&ðÝr²ú‘QÁøB×= v½éÄÎoÝ1P< ÒÏmNç¡ÆŒ#µPquLûÉ}Í¿Ïò¢ü+ÔÆ¯M­?6i™ÒûòS¼–á‘Ñ&á,ÖÜèM’Øð—âΦU¾ÈkzªûT¡<`O`¾G'T+õµÑ!R챜-oåM²tc 6KYŸ—1Æé@5H)´Ôwýmð@HÍ­µ¶Ü.€’ ½rã}¹Â¼\Éתû=¿ívûÁXtYì©Kš{/e$õ“gþF¾Kõ–oy_ž}vvûÖ<ßéë“ÃpRòµøþg2É–˜3†°ˆm·„«Ž‰ºË:UàKKêaV~V¡iÕCªXËÈê|ÌhþÛ\"üä«õ OKI<yxr-ðëEä’cˆ^E•xF(ÎÅÙ£Bˆ‚øh&¡r(]â^(:J.Ü8ä|| ùÄ_ÀÚ€í„2/+°j@ŸÚÖ‹úGëè æãÓ=µãØÚÂh¶|\š_´¤†ÆüÐvÙBlaóL7ác·_Ǥ9¥»âÆ%À]øöЇ aãûϺí¢çÌk²<ëʯM¤=ñ0&ÖEakÚ™Èo ‚]i~ Ë7 .eÊ™ e¹ÍƒÎƒÉw;G xäŠn”‚vý“Ž5/ñ…‹ü3åˆ5NIø|ÏXYßÑWÂC0†ÔGçg| UÇO"³-‡b'|¸UÛêÙê¥íj ¹ ûÖD묤d1AZ—3íÒV~ª¡I[ROç Ãó¾f_!凇(ƒZz? Õ¾)%øü ~cå Zæ æ^˜¦±6åþ÷fJçªìz³ÙE!°Ÿ:&žÎË'ð ³=ÿð* ;M™£ôÝÏ”Õ­ÜœŠƒÔÓQ‘öñäÑ× D~>ÿK¼ï‘H5lÒB¡´6~,îÚÅ)gWæëÒ´DPx,¼å´.¯)¡~.ž$‹| Ž÷C¬ÝCÙ©U-Dª 7œgV3)þ\~BÖ÷ELÁVŒsõÒ0¬3_wˆQ&y$aT£rw쾜²­ÃØ}‚izÑßgvµV:È,ë*OËÍíѥі*¹•× )²ž{ÌÜ¡¾W£s×MuS€ŽN‡n_|Bf'Ü•i²M·%Èñ¿TbÝ ªÚ¹ãnñ/¢Œ‘Ò~ÂÆ{íê7ª¦ã–Akî^€B!Ï “]z+®²´§x4TÞÚG»T ñLÆåFÙǦRV’òs.…I¿w¯Óf–¹,ç´šG7R·o™àGʾÏô(AÏÂF¯Uç¸& -Ж­C®åk½â_'ä媖ZËO¡ ò(šR|¿êé°×áA†«*¼ÐÖ>ÿJj—l•GÔnœ:û©ÕÂ~SFLXr;bó_˜Õ‘EíãW.û˜ò$©@ÛD€´(©«l…‰h‡Œr÷’]Ú ƒÿ¯ òÑý÷©|®›VrÕ{cNe}îöê“–TGœ‡pañL O–VP ƒO^Û²Ù+íè3?ÿ¶¹/1.ÕÛ§k?vZÔÛ@ ÒèÕ©ÁðQbƒ?Tsˆ¨OP4‚‰Ó°¨´%ÆÄ¨9Çxל' ½™íÇ()Ù2SÚáÙ…YŽÁ$äM« Û{;ÖϺªh^Õ!Ž#Ä ˜Ëú’ýŽB”^²uyÒ9 ¬¿Õ'ïÒ•¥9`(UJmãב`ÙNÃ*&›Ãi,ûðb|Hd³šÚ"ÂvÙXßùSŸM%[_IÔJL¢[kÖ¸ŠDŸúE¿{ß’â_ÕÆJµÛ\­ˆþ6¶ð:Á î4Óú‘9).µ¡»Ôr¦¾Î!Ádw}Úô„2èëòÖÑѬŠj]ù°Ùm¦ÀQ÷Ž9XÞ}ƒTcÈtÌäC¹Ú}ggÈõý¼ žˆåûdø^”(w0­ì``#à·ö($tpÓ×ýÂÇ 5æ—:=)R¯y iWbȵ¦ úæÆGûaãƒ@³ôÅ€×ÌqƒJuŒû›]bƒZá`ODz’Ïæ n(±¦ó/ôrõÓ{Xl¤$®Cñîï?÷âya¹S‡Ðz®Ð˜žg€ B³ ¨þ8sä¿+l¢7âwÛëÕ<›{ØgÆ2€´³1Çžª,x üP«8#7¹ôÂDÊ\ºü–VÛG 4}ÕÁÊ/yeÆ:a• ²VÍ-§T(§Ò«]€¼`GLºg(#(A# ’ë压Lðþvõæ„øOj¥ŽŽÏ±U¨Ò’æå êÓÂdYt‰ ÏU¶Xê´†¶]»á«<ŒH€‰†f¬Ø¬sðæ¥àAØÀ”ð+ÎÕ™!éèˆ —b¶±Š?‡C A£%¨EΡât{ýŠ ¬VR?«1!g?@î†ÂÁ7~÷ñôd¾Ÿº­µ|i;¼™sûãäÈØ›P5lç}ºÙ^€{Ýý«ñŠ_¿­]Ýî& Ã|Û·($[ðÂõY<ïý|EU&ˆÕ#kAÚÆ!.‚¶ïÚ/iÅ΀ýýuqb{ìÏ$ý§Ù |Dý½†ÏRãŽ]R‘ŒCCš8îa;*A¤øÎ$7"kfZÎ2ôIÓšF¥¦rЬJ©>S(Öå3_˜wK¸ÅàØ:¦¤Ì×âø°,WŸN2­(ëøþú+™ç:“6 F"üÏÈoÔþ „ß0|““ݤ5õ9ô¤a¸ž³¤2zu xšàFoNšÀ¢ö†Aµÿ(TàŒ˜Ógßñ&L™^ —£ÇÁF\¢*bí»Å+å; ðOøæ¤‹î–Vް)»> ûï…†ÜV30v+n¤ˆJ]^ë(ÚÖ÷…®#6Ñ{ä´"m_ZAÃ,üZ›\êXHd›åŽJ'œï4šÜ€¡ì{^ë³K´ðy¿[²/ìqc0ÈÔ*×{f2¢ê%\F/;øå­ s~ŸòÁ?g‚§d\BÆÔMšÜ÷ZX´ÅI‘y>:‘pU<ùe¯h²éÞ=·³éÝ­ƒÆ?¼€eF"áeæMsÃùºRT ce/ÉÈ4{³Ê˹%ªìéahˆü3õ(¶N™/Å‚A7bóòدŸ›‚ó‚êŸx?UìwUPøˆø=™`Fõ|’Ê»ì‹ÃÎBGê‚ùÔÂïÿŽKJäõ5"l]U¾¤ë½ ,à}µùZ™6Œ‡El¬ÇAô(GúLF¿Yd3xýý¨ YÏ|8(*ßpÜ·.™ù±ŸHíåÛ,";oòžb¿Óc£óµš7K`5þìÈT@ÇTãÀgÃ&“DŽÚë‰Ç°Äã3¸³$‡µ{Cw}blçi>VÆNDuU´5ï^”ÜäõnòóËË"²Ü¶ÐZ!1ŽçRðÄÄ]Á£ œà:$jzà`8õùàwRM9ùµ6aÉË<E4¥ñú*-es·Ê§Á »%¿.uw3Y?¤„2ûÔ§¸Æ©ÝzhíÏHôú‘9—`8®(EÝ@æi\aø°Þß…Yy†ä•­ç墣á÷;Mpžó. Ƚ«›C ÜÀaëßà°Î™JÌ?WéöÔ¡ª„È2 ß'`í‘tl^}mâ3¹ ”«d´ä eëã[õÎq[G‘‘úXíÙ6–ÄG¦§Û"Ë¡øÀZo¶ÔlŸÇ$hŽjAd8•¿-s ¾MÛá$B6ºUæ¸Soàç‚#‡°ô]Ôqëžúpmã%2±Tx…³ç©É èö+âèË&-™“Ž -¾PæI˜PçÕŰ6ü9|_Œ\_) ûÒ ö¸†ØÊ+«I3ŠvÇ©¿±ÛÆ×‡r>ú“¾·ø+`d‚ËžU,™+x¹YÚ¯£—4/a¸C¨ÉñyÅîüü_+ô >Íq ÏÝGÑ¥Ü'-½©åûÂOnk¡ZåmEõˆ¯ò‡Z/çyIõ¦+TÇ©N㽚Ëü÷`ÀåÓ±D ©‰ÄEµ+S™ˆI xÿz:¯;³ûÕG•wû^ðe·_3ýíÇÞÑT±…|ôÅü¥¼¨ ¹îuKû€ ƒ*×Ň‚쥼ST V ×ÂwŒ_Â侓“],ï<{ž“ÊÜç®Ýw®¯{Ü<¤4«Í·Ÿ¬Xþ#N¶ °!pðsMd¼õBeŸ>W‚‹’,J;!õ ÖZDª2<çO¨>‡L9^Uј {Vá·ãøgÌ4v;@¨+¨Ä@”ü:R6Óe,†›Ÿ7i`Ão|•Sv_Èí«W‡Uíºluê¾\`ƒh>á;x\/…C¸§-ìšÚKß=sKÊO•á’pbðÞiû,›õ{ye¯mƒóïþ) C¤æ´± ,;>ßÝs/1ä(>$P¢ø~Ñ[ƒÒ+«%[‡Ù(‹H愈-Î2)%êÿÛÀÃÂMˆ‡PSTᓇLªb|UÈ€ÚôÍ壔Uß‚/±÷ÿtÓÖç(Y]•/+/¾£=ÙfžyÀÝ šÖ~E|c’âH¿æ;B.…¨¯…Wš“ì˜èfÏ>pm•¶ˆ‹O¯è›þ öÇÆ­JÏh˜J<ÆI¿!rïÝ'Üüfÿ÷ß?œ òy¨hûN;z.ÎëÃM·öé𢫣nëhȬ¬¼jäajçQÆŠ“OcŽÉâ…éMŸ”"Áƒ™ ÷Œ&oëÛô¯ÀãwáÉÖ¼/Cà†cÓïA¤!˜üR 6ï{KS]¦Ø“[©„74-‡àÚMÂ6ÙÑ$§4¹bÝðK&ú™ê5O@½€vlÝã5m1:\“è-g.Ý(]i1k‹Æ%¦<¾Ù—Îý ‚ªéÛ>ÞÔTößœø@~PkœóÐÝJD3†¸M¦% ºÕyèaý¡cžC›Û#Œw‹g¨6ç{ÖJÿ0.ºB‡Íª ~Œ£9—Oy„sÞ2Sø ¯î]¹ußùý£v€Â ¨`f6äÑ·Aš@1lE)3Õ ]<Tû™ Pò€ Óº7†U½r°?ˆ‹[[{§82éð\øEE mzèÏ«þN øÛ¤ßqÙ0§üf¬#9\þ<ðS 6ÛÔú寫¦—q4µ>Üï+iWd^³H ðÉ¿¡•—é—¨J¾ P¯SÊŠE96ñ ¿éIAñˆwWÉÍW²/6/3ÕqÑR]S³€Xx€g<Ä ÓSᨆÁ¯»r¯3A9òø÷ÒQq=)%ÀÇÜ×ãL Fø @í¥_ð »J—¶ŠsÀ‹€ƒy®í“'!EÒ¨Å3Ù+@ÍÅsÆN¶É¢ó€TÙNUâÉW¯ø;¹âƒ!Å?X³D®vYm+XÀ\µÅõ|¦=Hs¼ù{ŒØÔ^ˆ–-h| $[ÿȯCƒˆlì&–Ý€uƒÁ䃉°ñ‰¤i~«Ç</{bµ™ä2c—¨…€›€ w‚RÐÓ+NnhW°m¥7m ÑHÙÖÉÑõ]‘ADìDo"DJ-†Ûf˜øïÇ¿­åVˆ¡•}”.`Æ«wÉ(ÿøè̳\ö½€íxZcŽL] %5òüPQyM*!]ÃX|º`í³<"t°.¯‹HN^QyŠêU«Ùåbþ7”mJ'ûŠb0'æ#¥âÆHß“¯d•ÜoˆŸ³`ù†v“––2]¿$BVãÕfŠ&FŒ¶k禔ջª¥“ºŸ"NW¾ãÕ™z;i°ëüôe œ9àÿ€ÈöˆÈâ*—âš ƒéBÒ–š_DqÉ~s§éü‰³º9µ¡ƒAùŸÀå;D‚CŒžßŒ…©@—h[oÒÉ9驸­£ œB˜½ælDàóŒì˘qô‘ž_3ó$‹O½_Yû³Z³ùQÖë,—Èv6îƒ÷J‰I)K5•)OQ#-VkZ¹º”¢29/.’8ù1l²¬Ûˆ¤jÿì¼6-›F—’è*knbö:Óˆó“ñ+Í®/¯D¿ CÓo̽ùêG,AðÉ<Ð…„T€UF²H~ÐUá¿:çÜT'S­%¡O/(>ÃÞpÊÇ '|ȸ˜óÖè͹=¦ Ò¢¸¦d ‰R-ö#¶(¿J£[ž\íUE…šügªD´Œ¾GœŒ¸aDÞHÃHqµvÝ}=ŠÑÒ=ú^»üfh•Ë7ÆšK'ÿìDáýÜŸ§¹Þ|”²W¢šˆÓyÕ3¿Ùý³¸ŠîŽGíd¦Ûü¬AÞ§½Ùä¨Zkí—¤«0e°ûŠ˜Â—À‚Ù/›vþ=‘D¦˜»$>Úzu[þ¨zöâQ¨“dó‘˜e¶qb[£(+ôɪBòD¿]>X1O± FC%Q¶>ÁÞ­û^›hˆ ’lCóÀH9 ]›Ÿ±r;T8jÏ‹~\k÷õíøî×Ç]G¯ä–_¨cÏ«‘JõøäšœVÅËE›9Ä%Ê`Ïwè'»,œ jºÓŠÈ®ôOS•¦4€‹²—dMúBIZTƒ”¨¢ ¸KŒ·JÙ,¡L”¥d1²ÆpçqP\®‘úò¡Ç£¨_Ûñg1^iFǯÎlž^ûçÒÙ·ÿo›ýyÞX1X~‘(^Lí—·ÛyMC´Á m &£R79ã3`ÍÅn7#Ú( ™„äÏYVZ4 ~QÐ,›I '‘¸‹G0§Ý5†ºæŽSræ„·t*††ø0^þ7C«ñ—Eèvôã0PÉLU¿@·»a“Â÷º³ôf«Ú\jÄÝ£ÌzÂÝ?þ:y}sDI=eÄzxî?ßàe"Šÿ-¡zc%J'È@®Zƒ_nëñ© Î'ögwg„“ÿùÂg‹}RŒ9Ù#‹ºy°xµq 1 `¥+“ˆª “‘¤¢-Kudµ_ùn—›Þ#»E8$| ü#%aÛe.©ó€ìp£½îº‰^/å~FhSLy#Âñ6Äo-;#«ä‚¿wPé¸MI Íi-Úx§Ã<²éî9ž•< +îM«ôQò- ¤:Žf–¿Äb®àbhf)¶}gÿ<° {Ž""ð½µNXç÷š÷âÊdÈHÆo=šO¸'ël!¯éx™t«ãôGðŒìŸÞ¹gƒŒJ„ÓÈ«ÿkœû;\¸­H`öÏ WìœÕ_¾üÈ å¾ô{Mü< }t‡aÅ+Žm„_ô¶†ÂՃνK½ý+ú©²ªuh€WÿòriŽg•8i-·‡Óæí|)d$‡ƒ\§†›ñÿ¾R¬Ûýzu=øÕïW„“¯6)U#>L˜% èÈMUþ¦jʠײŸUÎà(€ß‚‘µuâ WÃWPuótŸ¾lÝ{¾ï æ»íVÿ&<ù_:ýöóà 6Í á¦+§•Bб×F×4¾Èë¥gЪ¯µˆú¦Ë¡+ñ|•ž,ßküÏ8 ,(‹æ“n<ǪO8g j`r ó¼’¾¡r2p·x¿;.æMõ5&%Ãó(e7P—LÍ‚b^m+ä·_9ᯣ‘ ±eЦÉch$›‰•¯*óçáà.Rl)6_«=6idÓl´#t¼¼¶uc8Wq8aÇPùßËü߯þ^ý—•+D¿îhñ¾ÓQt£eÊß}¢hç*Ÿˆ9t¼4]‹ÑƒÄÆéÅJ²Þué#…3Š·Hº*¿08îL+KŸéþÎØ *'u˜Ü•€qÄrô@ÀŒš!Úáh*m„O|Ss9•Ž6á÷¥ÁÿÚ34*™ˆÄ†J5Y&J-zŶ¥âÿÆÎ¤Ïžä‹KïôÀÆHÒ)¨£¨FY 4%3@¦O,ó›Í£ûŸ€$¡ÔLh¢“ª[o¾Oçr¯v×$Ùý C­–t.oWga&í ^Az[ æaš¸Ì+?›JÒþ%ü'yŸˆ?$had|Ð Ô+êékw^yuú÷;鳟ä…å‘|ÔYw„q ^7²!é5š"ù*Žþäb›D‚é·5J‰¡uu‰-ž¾Ø0œŽBÅd·‘¡øÔG1¥®µîl¡|ï$­ÿãs½=lHÌü5hR1E„DÁ¿yâ÷7íh,DëAà¹*\+˜\DQ´ñˆ¢ô¹ãyã$Zµ¦ÐÝ$ 9­®'ükÉ­}æJ\uœÊט®Q@•f”_VáÑ,%51âb2FÂÓ~K¨»EÅ z «y%övðy@aXP©£§<Œ-¶ÞJ¢ Õ` åkvÆXƒÅQ¼8ЯsJì·¼Ì6¤ü"jûÿîÚþÎÅTHõ4W¸ÌMˆæ=¬Ý’"žk>ãX­–ZŒsߪĘ;£- 3,Qµ”9*u(iTL‚IÝJwîØN¿^H^ÍÈ åeá×'DZ¥Ì×O<ÿäi^ð“Y+§BÖ"-+“*cÁ{‚%,Ö]/ÿýßí´Sä:«&ñ÷8zuŒœŒü?Òv,ÈœtÅ­ÃÊ£Ú݈êGk–ªÆ–Sy âüø8a×T?¿µû,ÄOw†¶³Öÿ£#¼-5(fú™ŽA§ˆ†+ÂHävå°hMî=·d‰Ÿ¶ÆE"8µ¼¦ˆàof»»znŒæA à dL")&´J™?¯JÇ+å–¤hP9L·ùi¨va02…S»ŸCþ.ì¢ •I¤_?˜Ýÿ8J¨¾N,õý#JÕ˜_XNZ7ÀšÕñŠe‚S§þx([;K¨KQêÞ'kµày@ùX<Ä^G@‚•±SÌÙO¥’ */uŇ“|CåRéèŠ@IÕq±ð5eÅÎs _iÙk·9Sç3J‡ùo¹Åtÿ}U¿N ŒÂØ`2íIFî—tfòÌÀøÏe½Ÿû%nð€uÁ5³Û°´ð"]öt¿ ôQÑÄÊýÌàÁ¥éãc2ÂvýÞÿâÚìí¹²à»‚í”æ«,§5»D¬úàeaU“”ø¯ôbV_ y=±ô¥èËÄ HÇscF‚îiºOkþG‚W€,àç¦àŽK¬jôš’ÑI¬®+AIâ®Ù8öõ–Q…^·‡}ñ8É¥‡zƒÒëìoì"ÇN ¤@B%qZ"##Ï';È¥0¢lŠ˜¶ÕÈ<{'û* “N™êìepœ&3áGIï @~ŒX€UŽi{WoÙM?‹&^#99_~¿éë…Ái)ÀMéwlȬ†løÿå —ž¹5”®›üýÚ¼!/2™àœíISÓ4Ät²ª :|þR ÷UJ–ìb¯–ô“×.1C˜ Vuz¨«¬?YÅ>Œto¾—*‹ÎLmŽŒ\й¶¿·{nÑNühaùoÌ›h ¤@a½st´)Œ¬T’³öÜy±3ˆ>tçG"¼êÝD…œñ ªò„ƒ°(ˆ§‰®V[0€Uß0èÜ]ÜN•}#h¦öiw‡pt'ó’ôްuàJC&ÁýË)‘œb‘ZÿéÊãöuZ@¥Áûcœü†H¤É$Xú .)µê2£G²Óˆdz¹ ç?<âœÂìàKl¬ˆß%¬Ä’ó¨pÅFÄ7º†dè>õRýÓ›å’<újª‹"ssž ^gõà.pèŽ<’Û'ü>>ÃgÑ%Ti^‘¾zU‰ 7/e¦ž1¤;–3~ä5urÚ³«÷>4Ó½k=†ErÃ0Z¼Žã¶žÝÊJZY6…ñ­$åeŸ;¾1{y(wï¿‹!¼Ãpè, €›LʸÒÊôB Ê«âûNÇH™ëìwJ¥ÀX_¯ë£'´#†}s¹Šc}*ŒkW5KÎê@¯éoœ#@JÖÊê(my%o*”+>&Š Z1Ñs5çÑg^ù£—X›þ"פ¬„ºj@‡ùq@‡ÈxåãjÙ\‰¬ ^Yt}2V|ħ„-.õŽ¢U±$Ò‚00¯"Î÷NQLYbiZSo@ ÆQRg‘²õµ/ùÊïջn£^)£]o½ìaýD¨ÿ+¡-Ïc©£¶ èXtÏצWÅ„ TVû¹@SH¹5Þ*±>ÆSPf"‘:bÄo!ØÕª§ñ]……$¶à˜Êø;ˆ$^ùšŸâ(Zý/»añ»€^]³µñ>]ŠïFNIx¤˜áŠ=¨uÍ´ó b›rž;‰ù{vr?öáÄP¤ƒOY-”é¡T`~ÇN}ßô¯¦>¥ÐZ1=3™ÎÍý‹Ûþž‰× ¢¸ôíò¬ûÓÊ„/ÄîJâQÎ"üç»)!†žhÔ0™üŸ’ýزßèÌßWÇÂÀµ"Ý[øãžWð yƒS§í™Ùû´—Ÿ,IS.mhÈ7׫ZR>Pjã›-añl™m1Ë8#œAœ¯Ðcù€ïŽwšW{gäMž[ÞÄY*²BåS˜/ûþМ¬ ÐìwéÓâ+Gs=;½9wÖÆ·ò Ò; ,0öÓL*—¼õ¼KyÍÒ©®òóKq𤀫_V°ÝÈ)ó4ò—ØtêÊes.ò±[ ©vœK85=´Æ”ØÜ ¢,(6þ:'R3M‘5N„1Ï2„ƒ 8Ù8–'¿]!´ûÅ<«¶"NdNi*gáã‚e’Àö&É-¬1O@ì"Å¡ì«#þ˜Ÿ\‰Å†B¸nùÒ/”úVÜY•M`Ô*Üvtƒå—Ô(Ɇ6½ð:¢fò›ÅÀÞYàúbÒL® küÇ”³µtùÔ¡—ÙjNfˆESLÛÆ[æW?AŒê—-ØŒëª*ÿ»Ç°HN,9Äc%¸ ‰<´ÔÍ•J¸ԀùÁŠ»‡Ž£ja_û[:tm?àÕRRzDN¥u?áóÚ†I£ÐêßµòÜUÙòð*Ñ9¸¦d2Ž¿a\ÍHX©‘–ÿk*¶ù»’®PÓ#5Å«[«$m!¢ ä£)ö¦N¬Ó³EW {¾7a¹R-ûÇI…m×ÑzU´ÙÏ0Œ0m1à€9K{¿ä6ˆcMÙ³eñˆÞbfÎ(ÙïèÁ°b„|0Ï^cj’Øñ+žº¢äWl)tùâüä¦ „k³”Rªþ6·ß/?øÜ‚²íœKº…AŽùøóÛxë'>4™A¸·Ê NÖ°’Q¸øºÄuNØÓÓ#„5¼–ûoB\d}Ï%©òóZBê-õÓFŸoU±I#X '«X†þ§C•‰bÞÕÐ_‰/ƒhQtŽõKt”]6Ï2™$«¥¦åe,&ÛŽµÅ 3È?óo÷»¿¿ëʸë*Q"ü÷æöèù—øå^ª¡xa‚ƒ`‡êv-’cAß·µœ3~IÀÙvÀ Ÿ[¯Zá™ój~ºôŒd÷fè?¨Å¾^?¸ÈŽÓ†nÞ˜/¶8x-Ç»ŠJ‹‡sÜíÕ…uøE|W\¨BöJyAó§<›Ù9“^wþûeÑ¡3Ûôµ <.^ÊØJŸ¼é¥TÔØŸeh%o„A=oí”N dö¼²k$_Ïš¿ ƒ´Ë(jÍ+¶€r8\»öŽ›ƒ¯g†“Tj¥a“*Ÿx?5lº0ÕŽ0™_5Lµœ›O~¤ÁÒD½}LKµ2z:cQÙ4OfÁûU8‚Ú‘ü2Ž]í*¶ô¯ðTT[üâ I«ƒW<Û²·žî< b†*¼±d¾ç·45îÒ7wv°¢ ÀÞ™=aORk!µ$‰ÚtYÈÙ¢ä-<×%$£IÍiK·5;Ò»égk7{:oS{-jÇÎò¯Ibj|™ûMÉc¸…Ó .×ùªÙû:ƒTF“Pb>ÕŠ•­è”ªG§Âoºgï¶F"’¡Ì­¹²^ˆ³bUO‰H‚J†ÓªYzê@xR!Løò-ÊÀ7ò”\*e³&ßWÅóÆ.ÑKò¡¡TfÞÃÄÆú Y”7‡sücœ;Œø §û8qûÞWQ_]nvßùöHh”\C?ùýÄos†ž¹×Ìf÷r Õ·¡£<®lr¯U±Y¯¿Oóýчë~Æ^ÎÑ­’ta­9ú1C+†÷>s^…-ÿ+bú2'CÉ¢G)ø›¾š¦’íŠ|«áˆÔO)!À¯Ç?oÖ½àšß`Hïøù¹z¯ç–f̵.G5È3ÎL~»˜÷Ï8þÒúuÃ_É8ñ+ãî Év¿¼ @œ©¡K»“­j”†V”ÜNŽ:9©ß––u:—ÈCß–®¨¾{ýŒ† _[ ·,ÞzPÁ¬Ç•¦‡“~C*ÒÛ±Žk¼;ÇçæØ_'*»ÂàÖ­y[Á‰‚ï•h@¡ýš¼R‰IpÖT׸Ø21$ï?aëá_3åY‹=ˆÑþ}†-ä ÅÅ*g²eK%f”RD'êž°°äÝ”~ªÆ÷…4ù‚·=#ŒÌ<ljÿ,t7 ÅtEJTBÊN••Vw³õ¯\ÖIÍJ n @ޜי _H,ãàPï”Äx÷$ðøaî£r\Ýá¢>¼¨­ÚÝîp袊¡gaè0ÍÆøµ`áÜ›f¿çt¿ÿê3·1Ã{23;O˜*m­eH¹*f¯Çá?pÞ¾Ï2UkÉWûï—lŽ\}¡‡ ä`I²@'eû¸U+µê¢äú‘7rÏ­`xmÐ*|(mÒØp-R/ǘx1Á`œN¡ÀÄ]•¤uNÝdDH¦ˆªœ‡,kÍ%:&“‘ïÚ%4 o—·¶C•Wk@D›î°¢ ÷YDvÑNéëÚW@Ç*¬6ï¬z§ çÈ­H©r°Žk¨k°úͨ?'OÇ=Þ^ú7ºqS~3Ot¼ìÉŒ«.I¦Sh‘gëÆU÷.%eùìÊ ^ôs’ši³…¯fÛ^=ÖćbXò ‰W Ì‰¿òfof7?¾Ø4n¥[:—‚ó€#ΩO[°§/¶#’wðG8ÆË+"ßü&ìYU?øö$ú“ê Æâ#Uœ›*ÝÅÝE†–ñ-Yf°“œ*YGÛ3Íí€/gm1‚±ž_=À"‰@¸ñû{÷‘ö¶k-L3=J¡úr˜¿,"ÀüU!ŽÞ—™Éø€Q ü(ïÚq€jI$ŸÆŒH±ÔB¥0Ú¤¼¸€Œæ°¥·'/ûk[«HRm±ýäíDª{ÉåF S/¸Üób@\½K‚’ñhèÏ[þ8]Çhˆ¯ÆŠœ÷I—œï\r¸eéƒËÎØÚ²Ý™Æ©Ým•>Ækc0«Ã_§!Ñ ý\˜Ìò‚‹"›èSÖ0ŠcRÃô] Í'Wàø(ÎGŽ{ÑXrð8k'P+WÆÿ[T²ŒŒh„KWlË—¾²Ü -ÍDs[ HAX¢¶¯Ã§Wê²Q,6eP¨y¹Öñ‡,Ñ×9çßw z›²ûò‰XG5°xç«ßþ/R”¦¢\³.ÖP b‰ØX aI4 šeãí‹:çr»VÇ)…O,§¹#uÓ.+ 9XMŽÒõ€ÜX^xQŠ™%ÁüÈÑ´®†³B´Ø^ ÝÂàïÞd2¿¡vƽ‘ó€òé¡JÞÂ_ÀáŸuIiú`ã÷Ýõ;(üRRª¨ÝÇœcx°¥¯šo;ß§çÞïnãͪáG×€±¥˜‡LªêPy#:/Î^޹ôPçwÜÂwŠ,„£´¯ìO•õ0Ї‰;„ÿúC-›¬Ó[!ë­žßõµ©íëQáˆOÁžVà&„FÑWÝŸ6ùvÂ²Ûæ=õ³Ò±µ‘Å=©ï.Y9fF=f÷û 7V>Ü“·ãÝ-ž–¾LÄÙîäßý¥n®‘m~ö3Xã¦nÍZ¥g©<½D1g:[øð|Ë=¶ËŒUîv÷¦zÝÞ_~—U?xuã—²•}úõa¹—Î>}™+‰­ñkv¡öQzAˆ.G0y¼­a&«y>«Q¤sòJÕ¾ò¶Ëùì½âÙ­xA6l*‚(¨o¸³v….&ƒL´¸Ÿ·t½(wm˜óaÛU¨¶tça²ßFŸ/]5ª¨D½G¯PXæ¥Y¡ŽBB»@.§˜3o°@ÖœÃ+—ÒëÕ8‹åå“R»­µÜwP`È^Ę—*˨ÌßeÐ)%g£oÆi9RvÛõ΄ŤYö^¨ÅÓ×¶zp6 º–tí³½ µ­¨Q…k_m­í×êïïÕãªF$68½Ú% X‘³B½.÷â¹p;*Å…ÿo&×Ý>±ä>G¬8ÅËC5‚ÿs?DL’È1C±^4 Êtõ_‹.qþãüq]XE¾õÛã+øaŽÃä÷퓎K1Pð¬TYqˆ­ ˜« ×Ùh=_Ô÷ñHÎÉ/L„cÒÆŽ¥‘Q!D²c­Óõù Cf~)ŸŠìtÓ½gûA…oö"ž‹VVúäè ÷€µ³½¯GÀ(—›D}‚5¬xÔ )8‡æ½XµqW8®Y¹wÒú] `È?œ.c3ž‰w¼–enäì9W}Õ n°í°[¡c·ñçžq:ñ~Z]Ç‚à·ZkÁ体ʑM2B0O±òX.Ϋ %{ð¸½TÁÉZ¸c5¦2C{ˆøò÷q¢ã…È«#Þ=ý1šüáÓÕ¨Ù¨`ÉÇ?‚0ŒÛS½9Õ7ŒÊ&Fh8mi–[Ç öíõ§ë‘–Æ9zš–%§IšúÅ>A_žìˆnUþÞ©Jf}¿×òa#±:ÂëÌGä½cŸøû&“¿p¿ç×äµ³–7²ˆÏ{%ÝðÊP Ù[ÿ¹ï|~ ŽF¢»Gƒ.&–¬~0¡áAn ûkQ¡8Yqcú{Kî}“‘o¢™Àì!j‚;Œ)~ýÂ×¶’Öƒl=`޵ô2¥RI¥±þ²'×êý[§›ÐpÙ¯cö÷eVÚÓ•Týã‡ú\¾ÂŽ•$:ö ñ¥<˃»¦›_É— N«É£–ììVÓɮіq 2 <ÿ÷,£G{áó }E"R£ J=.¤Våaû[´••ƒ¤$Í&]é—ÆqÍf ܸxèS˵<•Ènů–†wJ’'SVñ1@ lFCëUš ÃÝë ©ôM5 ^|É0»?4ïA“@¹ ÓÍ‘ÆÂxÂåß#KJ:øWƒÎš”ØUîák…8^¦äاüzóöåéfe`¹ÈÇŸTžÖÙµé+m /Zñˆš»#²˜ Ú¦!ƽþ z+ƒõêò Rÿz÷ÍÓO§Ÿ¨€Ò@°WÂr ÒëƒgÈX ñHÃê<Ã?êrÏ” @Õ}Òñ9Bª×Œµ¨rJbþ¢¯Ö°,ä’KÛÐÙªS::âà~n>#”±ºzzmy„Ë®ò0SOV–®ÓU´S9Т*ã…²ÙÝØ4Ù0€ýáe¶/8V’ÁöÇfÜë/E8.f…RtRv5çwèšf]B’bصîÔ`ìmì™%yÛéI”;S²X›˜¾ç¤¯Næ®~DMj+´üýn „êÒ ªû>_@RxÛÝ¥kEb__çÑ÷¥·ÿíö „øü)$äñÏ]u#µ{+7/k Vç^=§±I§4 tS»™˜!Ø.ì(ceò¦s@ijš£F¯T“{5úê8‘þ/D}×Äë,À÷AøPoL:ežºÃSbùØÜ.ö²»O_§³ã4iæÖá@ð4_ {ÏÇ(²ÝU2óf/sCFÍö/ݾD3:ö´âÈ{ÃèÉ&Ob¡Bß÷4ÉcñÉ_×gí›òu“{ŸòÕË¿Oã‰Ðp‚/PÜ Pþó#+µIŸÏÙÑ\rÍ'¨aÓŸÝrÎElDöþW›‚°™úB¤r±;B*P44KÚÓWÂu%*q'?‰µpèó=ž¾I/ Ž«ßBÚ²i§[[r}SŸ«ÒÅ7ª«Ó0ö¸zßÒí”æï¤¶ér8ÁeÖ¸[äç€ÇqÆ&½±ë{;^~ÕheD\`[.Ÿ/fÜ”Ví…7'ø ù(*{­NvÖ5ðŠ›öuè‚]ñŠüÇùîôßW,`_…E“rc¤0ø=_\ÃuÞŽ@ÙzDdšèÞõçŸ1`€â\{—Êa\m!â»ñë"CÝT J´ÖŠÜ½Þ«N[¨¡£èsi»c"¬”œ±’aj¨,}ì®GÚ÷Ò©$àNØÔfD^^Î *øu×HÜ_ΑÅKÓI4^º"ïô·Kêî= =êâ+Ú Lýt%˜y?*fíEÏœ‰ u‘k<™¸À?ÀíKü—™ú5è0]¦î®¦Fž*Rk¤m)¿¼¹KRúß!¦Ï*ö n•ÀÇË’^ýH§‚.áÏu‹ùžŽÀzÝëCú%½Ç~øxæ‹ µòÜà€‰Âêö¹+#éêA,¹,²µ£R\pM²‡´×‰Ò’;dȯަUã;Ïyà©×+”(àÍúÄö¹U™¯œS¼Òþo7È¢²-ŠÄŸ+·LÐ8p]ʨnîéJ<)eÂå:t=X´\gÔÿ‘¢YH§š9ÍìŽS†FiwW&“¡S¸!„4äŽ8¿ËôÒ(ŒnÕŽ³êOe¯ÄR}s ‰p<ö‘j|Ót”ˆJYFY.C½|?:Éô·%Oª½Ø£´ºÒ¯Ëï±5ÎŒ›€RäE•pÙœ£ßšB#‘X¡þIÚ]ì}²š¨„²\ΓX!÷àˆ¤¼F‚c¶cdÖ¿/âŠä¿Ý½Ýé—dÛ¥|"(¬/P²¤ê¥Dôá?¶\E’JÞºrUO·ÐªO)B}¾Këú¤Öz5Q’ô}Š¡ýŽBèÏ ²éÕÓnš¼oüTNìj¯ÙnBó‡8!Í’™ž¯Šæ¿És¥ 5¢‘#´GýðãKgkëã”öÑS³½õ¯ïËÌ@f—’þ¼Û4Ä é* @] .DP8 ò0óÀF$yW¦®ŽèA¤/{{–¸dñ_ŸiÊYvÅ6ZpSŸ%dø‘ߦ¥*ó”•0÷2Õ €X °9Ó†WiPä(Ð+*?™/®R8ŸïÇÿÚ¡ +OÏ|†4ÞYž%CxnÌÊäÍ̪>7~7O3ºÕÀ[Ìc»˜Ä<1ÿñxéE@PS†Jàü×â¿`×(”ÕLñVâa1¥×­¶$ÆvÆŸ·ÞËÓì:gÕ"VÙÙk6&®³þ7¶Íoù@ fÅã¨(rþ(ø¡‘óž¤"‚t¯j 5·GÙˆàíÉH¦º»‰c kjö& <¿®1§7µXd‘ýõÓñßkÇ]$àç4.·}“%@XJ¢æmípzJƒ¬\$•?þí%<4mhFåª Æ„˜ÒƒSïý*áÇõ¼´0õÁ– 35U¸8À,Kt$cçdÞxE9®F~8Óe >»a@ÂÈ^<…ámÔ[uÞŸ—ïqMá$im³ Óúé:Å2Ç=ÿ} ^è¦Ó•çE*ÇÀ´æoûh§êºß‰«³;L½?MjAçK¶ìT¥rõæ0yr‘µÀ&ù›c™/?å2¿`PŸ”äœ|»§Sj@M”;@…âå ûá-2ó¼1v¡mlôO‰~UÔ§-sFÃYâ½cªg†ÿŸ»ABñ”<I2ðeìtØ“K³ ®°z#¥o¾[‰Å–”Ufà¼Éâ$sopU>¼æ6 ¤{|qÓ5Ïï½:› þ-eñôp üôxUwV%&\dè³5ÃW”çªÒ&2~Æáÿ¶'‰·ô¥®D€QïžêñçŸhÛNšgS(K|›fp‹æ^±³Â MWtöˆÿÅBÑ€ˆ2¸7¸Õ©\ ê‰2I÷éñ­ÙoÚÔ VÞ·]‡ÖvɇŽßœ(¯¾ìÂë&L½:ùúëÃM/{ìÀ?ºDão»µO™/Õºšßáîs”*A¸2} †T³%'Ó>éì¤g)üy¿bß["¤Äí_,ÝfMtÿŽ1ý‰ùqÑC Tl#\8Qv)W84ëÚ oedoxÜnZljnH곯Ü`Ë>ƒªo:yöÿŒ•]k€ËYèŸ.­"Ç_üÅžRy„¢ËfDãÕµ›²dÙjŒÉ4lhz®Ð3ôÎleRkÐOµÔ+ ¾‚‘s÷ϳ]fKJÞàïnÚŠcbƒû“«~ŽåÛL‹aY̲müŠXu3]Dè5â4Ôô€ƒöÞ﹓S:ìWeO1d‚†­íØIÚFr®pLÛK ¼‹[0+n5½#)~ùøÄ í\]÷th*劓 Æy16¥zO;<³?ç_‡‹È$ý“£¦œ#Ü9Ù¨ž ù‰e¥”¼‘”QÀrŸ…Êþg3ÈÉoH4¿õçFÈA“_9ÀÔ¶ä»_L_µ`fŸÐR²+ìn)Á{ ~+˜ª(}÷’ôÃÛY"¡j%š#ÞyNPÆðmÍG]a ˆ`¨Œ¹îT]RÊŒ·˜7~bpQKsKk€êàê¼b ë<Å’sN!™²ÔOïðš²îb±šqqj›aŒ/ªæçŒGÜ´s݉ñbçg$uÌŠ¿9ÊJ…Üy;ŽzU%gXÈÏÎ.Ò…ué"Œ~ 7Å@ßðî¢eäl`XÏ $cŸ©Iêh‚üpÂk…4 é@5@â Ay«’ô&åw¼ôè³8të(aì„n2”iËdœ(yôß Ò€Ø‰%çð·E°Þ«®e1†lè‘èx…R¯=H¥líÕ”–º‘Ñ`ª¾ŸOç«0¶ü¾ÁIH:-ã*ƒÔ‹’«æZèåMÁ!+·ósÆ@R‚'1CyëÉGýQ^õû ßü+¡(Õhtï„~G"ú]4©ÊMj䀄µSêÝâ™_Rî–…²õm(‡¿µë‡rW4¯×°ýpc2c¹lÀÚÄ)fž–Ô†ÅJšÀt¢“Á¡€¼w{໕™Á„K{$Úõˆó¾¥2Õ€š£QfI'ä÷ 8§>Óô÷%Áýäòj³Èá±b¸‘ˆçDÆ×=[ ¶àmÒÊ¢È×Y®úoYŽe>ï+ÃTó[9Fjeéø¹Á ‘þÿÄ 1–’4ñÊÓù=¦ÿÄÙÖ¾]«d÷dŠ==&Uœª£¿?©¶ÙlÔ ´Ý÷…)¶¾šÌŸÚúë÷ÕÞŒ³s ‡á¡÷;-6¥+WïpþTQ¿®NÕ¡K¿*’¼Üã-«x/!Ž™M&e•Õ­æG¦?d€‡HÜœ=+K$²*¬ázš‘¬áƧ­!KÚ»…ªÛK޹ýÛk‰Iq•èXÁ‰7ÁlÞ M…M(—Á´põ+Qœ‚’ßž«ísƒgnˆ;ÐúC'êÜÐ ÛI@žÆôZ#W¨·+Ì•܃GõÓc5‡)S†¸˜Ô\òJçžh¨½aÅÀàkòë?úóH®“Y¡ÖÎ0àëgGïÐWSP©VôgÌQ $±hó¼K™ìÓdøvJ®–=^ÞF^…Éäü7&/_Ra8’¾pxw‡ž,ÉuIaÐU$uA³ìÀT?•§‘anž±²_yŽ'â‚wf¢’Ú_Ìì…ô€/šQŽ“·fJy]0\ÖuO¹_kpœ›+œ’%\ßBi‹uÔ!,:UxK^VfÑ?‡³±\‘=©Ø¯Xzñyÿãù]Iz9¿bJúÎZÐiuÂÝpHÝñ³øxãßé! Ÿ¿ À„OqE<ÜV]çÊñ2xtÑN-ûÍÂØºÞšªÞÓËKFØ3æË+Þ±rZ”™ÜýüŽžªNé\·òØ@'¤Ìt†ü7sï\G ‡|mþ÷ú7`H4ElQîœn¬ªÍeV 3-˜ž¿rÞ§(.Ň$ƒÛ»î!ÝQP‘b@n·ÍêM©Ë*´ïùžÕ }já" ­æ½©)]Û¨äÎÖSÕmyß?þáJÈÊÇEâ¸i\‚Æ~™ý¨`¥ŸeŽþßZÆA"’…Ý^°”)†ƒj]G²o•Aì¶²€éø÷ÏtífÑ÷÷\Æ-Ë·âpFùUû,:•Dò¼:}<Ú3‹Ün;‘Zuûj¼ô>Jø-µI àûªµZÉ\ Ð~c·ë·mÏżf«nj)î(ve¸Ö„‹ãÿ.€ÔN!1ªuµŸØô=Å·®t;· JÉø)¨P¸õ-—í !CVìŽÓ­ÝÚ¸‚+² 9£í\z~Ov÷=­z… ·ÿ´?‘T±ËáЕɦ¼.¸«{ùï!¯×Xh• Ê'[ݳSä.Í<§dÂðÍößêéûzã=E —ÚTI£Ov‡MòMâè#«ŽêbDvaŠŽù îcÉßú.€ íêð0´øVÖ¾ÑEÕs¾+¸ÄnÅÙ×Õ§/HFŸà¼Çª‹ Ž÷Ú:LÌ5xL 1³+ôâðYŽ8®§ÓI¸=Hs£àEw¥ÕÉpҔż8 C§”$Ì },Îb$ý©Ü“L4û…Òy”š†vƒ†ÿœî·³ªºÆizó¢ì–æÂ•ÆËÂ+…&e»/©ÙOìtŠü3?\åÓL§Êè˾—V–îÜKµEÉ›må<¦+ÜSôzfE’ŽjBÊÚµZId!S.GN¨…MúdqäùQpZÅú̪ý*|¤°]Ã9_p¾§ªp¬„b5í¼•´YdÞÁGÔ¹aêZÏnôzÔñXÙ¡Ð0·nm•4Ž–E¥ÿSJÀdÒNbš½ €rˆpà_ƒ¹ßÉ^‘dY¥ªhYqŠÂ¥ó‹‚M˜æFŲ¢ÝV/ KÀr)Qï›é6x$¶&G—×ÇÌÝÎ| VÄ]•ó LïôIÞ'£‘iØeylg¨&Äûwe8DÈy$Ùv°uÕîå›íqOº€„þQÛ.}ŒÆ.ëÄÆþɱ6sÍwCÙmÅ sÊÛH­™ '¤‡{L|íÖu®BwìSäM× g|Ž¥`ªôÓš¼`WÖ ³#YÄÜÀè° žé‚&Ta|äNV¿Ñ Q2úå\ÛD›ÕGÊ€rsï±ÚØùz ± y~)ßUp?š‘3³°æç¶qãvÞ;¥}kR)Õ·[=Þ¨¢ç3‘0=¯¢&±ö’@ Si—ÝQä«Änê´.3ÛÇ×fuáWÞ™qœa÷—ÔÐ"ëö!fm¼Ç0Â%²ƒÛƒC ·oxKz`ñ=Ôaâ}oiŸmí4ýÃÖr¡¦:$ds&ë¹ö¡#¬‘±º*I¢ÓgÙú¾k„(“»ŠyÒâÄNÆP• TIÍFâ>:u¿ŽC~6éÑþz‰X¢ƒó„¼ác¼áð´ïPõmõ^sÎêûâô¯—›Šm9â*"ÿ¾N‹‰çNG<ÏþH rÄ:9Ûõ¸"5UiÚ9йw‚OD̓Çå%_â!£þ ŽÔˆ«÷¡z™‹’ó‚[Om± p;.ۂЕÛ7öºØ˜„º`"(Xfà:—_á”þPññúb×EÓÙñ}¶PÉŒ´°ÐÞ<5dž”€'ž½(ز?À)/‡D‰@ÔM[¼Ù†HËb_F‹œ¿j»yê[E•<äàºY.À9~{ð¶ëïg¤°mÄOX&}6yÌ%@ûô—×;¡‡F§[ÐO þ_røS»:% à­«Á>‰'ŒÕmj<Sˆ ~>· ÇÕAI¤ÿÛïêgœW$òתB1N™°;ÏPHœhêanF\âŽÔöØÏñ¬‚‚›}¸Þ¨{_öJ°7tÔ{§åh(§ÅMéud/°è¸ fT÷Êqß±öÆ(LêÖÙ'¤ÆK¥UðËܲþ ás\-š¤®O½KÒ{r§—ýÙTãÀUâïC†¼þðþ/N±ãœH­PTKjPÞØÝPYñ‡è#HU2ý=©·3¾­÷iŠ¢ÃõŒLˉ!鉵mX(‘k®]ÔEmÁa¤+ÏÕ§¨Ì¹†„žè»Ô)¹¡"ÈëZ¾§®Ü¸¿z%-–zŸÏj¦¼„©‰b¨TKÑÕEe55B ˆ&&v| [® ¸±€!%}Kõa+ÂD‡–/SkæW™Ø]í)ßFm±Þï%;É„ ¥ö—Ô]¾3…š¾…ëÛÀ=ŸWiOdm'1U4pú«]r"Gцf÷…ˆð ðÁ1g˜O•6Tb¥LW«ýycŽ*éÒ?‚ O}‡z“tÝèN²cïEÉu±ÌïÒ1Œð¬t+K ÀȨ켉Zîn¼÷áu®äìF§O…ìg)óÖÃÌSžð Qs™'6áRµª×üñ2¯'ÖêS»ìÀÒÚ½Ù˜ÇgR””¾È¸gHøÓ%èj-KÖ²m”Éíå•a¥È Å»Cn«Tý6j¾ƒ>ý9O]Z^XHº‡^¥0“±’óÀ|«e|9R“{{™×в†X1J)Ì ª[G4õ~îñ©ñѺPÕgšÃÉèHï»_€B‹Õ¹ôáÆu œþ1r8§¡$»‡G¬:µ:‰> Yr©ºR¬ŽØ)G [å‰7©—Ÿí»' µpÄ2YÙaë)µmYËñq€rä:è»)¼dt ©Qᨠ¤¶2©~ÇI¡úúy/ñ§nÚ÷ÎlLt‡h3\´^[De8R­uëkYjA¨[—>8i2‘‚ëUÍÿlÙÆPSè2‘S£¬:ÑŸ¹SÚEü.ÜòÁ—¿wk~ÈÙ ,9g IJ°1w‰f‡T$:_(…AnKa¢cÅÕÒ(ó jhZí5 #îŠÚ$fÄIºð¦zÎKë„ß8gµ{+z”æ³ò«-rG¸GÊ—çoDû¿¯0‰¼<È1!Q™f=>D9ì$².¼Pë_7e±‡®rLhD`X¹ÿÇ È‰ÎÛt{5½©àWššœÂ·j¾Z†LÞ²œíýíþP0Ñ”!w¨ ßzÍKNZžÓV\×Ó«}âÈ„ô7rÁHÎe]%ÍøQÛÖ6Š µ8^ó"÷"C,ou‰%Ç«¯¬ÔÔbuqª#ŠÓ2OÝœÜ<ÊEº%dM’+Ç„ŸýßRÿ¨j¦dÓRZÖ;k/³Õ|«Zël»ŽfÐr—%¼<¸´Z’ÿÇ×ê;¦ö¨jêå –RQ~_Ó( ék¬ìãà “oè’ûfcëš/-œtê¢Ks…T*S~µi'ʧX2[¯®i—DÉUòŸßfÀÔô›ìHO{úð3©Ù‰ëüø´+gî·òp‚‹)ضÜ"!!€íÆèw]¨íçð9ŽKÂc< ÏßJCH¨ÎÊ[™ ‘C.<ú|…ærÝÃé¹äµ9ÿ-–}÷º§Zøoñϼ=›#¤º¿gU ·Z}ººÏUˆfŒl%D(­ ¿%BW˜BÕn)™Ê·jª^´qcaèZèA¦Žë‚V}ù+ŒŒ;Œ³ŸÆß¾îŽ#yÌŸGË÷BB8{Y1ÝK_YT[íÉúó2%b'(Vþö+Zd“^>æ:²Iå×:ú+ìübÝm²hB¬ŽM…júž2Î›Š± ¢RÄÏà}³·ðVªDD&z¦®Êi"Å«¯.9Ž$;u¿"ÑÙ€7W¦E˜ða§s$ާ‰ˆj±0iy®\YµËçø¦/ ±`Ò¦¬¶;P‹¢Qq¿;Ff¾ð)›A°n£?¥À¯²wÝž]<»ýœäg¶ŽùrE—qyÏvÐX"q{À¸JZhûk4•¸_W\çÚî4@ª<Ì O%¼æÃ‡´‚ã›R÷×5¼Bƒãáÿ–¢,ZŽIA/÷ü7.ÇlÎÈ*5§JÌÐ&:ïgãCÔráñu-‡©y|1!˜×ù²ã"IiϘ ˜ õ“ˆ]˜’‘ìzëÂwylƒ—ÏÞõü¬ï€U8øçš±mvn5‹fîΗÇëæÅO€|z¼ßÍæ|Y"`ÒÏÐËL{óÝõªŸÒu¶_d K¥MôžÍ×Ï~þðñPƒ\ïÆÐ¾!m¶%z‰‚ΒѰôu›€}~Q›À£féc¶þ¯.Xš%ŸõÄ¥1ÿQpóE†"Y,8è„G‹EºˆÒ‡L,Àn_ìœXëPÔHŠÐÇÕïŽeÛè‹R÷¼<îí$¯–fToúgeµN‘‘ þ4©àq= DRïb\k’Üž蔸qôpþ]ÙËèØw*/‰ÿP¿dëoBBs¹¯ÉɘҮhG©ºYçÉÏÍìcã,ÕF‘5áÀÄÌלðOðH¤Ã2¨~”XÀ« !E·JgΣåÅTu/÷0Dû\wªÑú[ßk|VãÛ¿¯/¥ðy‘¡^V+E1†1n^›cåx$™Øœ’.öVb]ðwò•©ãöºwúŽSÛ´™¶ëë§Ú¶¦~—–îŽmòÆ\—Ù„³P&Ú¤”ïÿk€¾ôõœÉ1:à^ƒë]9…)•,}©-ïvÎ%ãYÏ|úË à$NPˆ}{X„x “N\—̸l±ËË¿wż¼iXõ®YêF{Uu›ä6‰IÂûç÷2`™ÖÊ=Ö¸Ð*£6¥-˜f™Á¯C½ÆÖ÷@ø½wf¦©“ßÕèO[ £j’.<g¬·³¹Ñjdà’àÔð{o‰¢ògÅBa$Lô ð”N¡¯ÓƒX1iî<ûT+¢níÏ4Á2§¶ÅÝgRÌX¸@¹.ËsÇÊUìY‚ÛD’„`÷žk¬hÕq.&ÖÓ[m­©íŸÖ¼¿[šAÙfu£NRžñAšþ«øÁjò-‘±§:xàš,Qæð&f®O®°ÛÜ¡‹ìb¡¾Ú)g±¡™= û>ƒeâ—iíõìÞÀÕ>8šô<`]÷Èòä I}êjwð{=º31Îûß­Ó·¾&̭҃i÷aßà~ð(1¯)ñªÊ÷º{åÕÖ3SìŠ×~°]ç¬,A(wJÂt›ñ¿Åzø»îKD¥²ÁãöÐ-'ì^ƒ"(¦®å W§]²†¬pS[‘àÎ4úp²xú³êO¿Î—f‹º${ì=—Ú}ÃM8££JB™ï€’lo¾ò¬¬ÄXë7Ü`©ç•›Ø•ÀoXý©m`G™ìˆq]·c¨ñ3jLaçίvÛ6Ìé6DDIXÑËAóØÜbþÛxK·™,p“_ÌÚ=­ªuJ5G—7TÐÂ"*ü‘Ä5X¯Éué.ÒFÄK¬·>Œçæ#pÝ£îêdš{Kw¾ê“ü[™_Šr2P¬J‡îP$Ôå÷ŽÐö}{ø:Ǹ°ÞíHš§óFÈoûKUS ·Aˆà)XË¿³€D/0…ÒÈ·îõ_F·üÑ‘±¨f0–vù A {”lé5©½<û·4ì«ûN” ìÃÇ—ùZRXOõž‘©§·´Nü !bBp§ÁÞAØ vë‡0±½Àw>ü*ʽZnΩPól¨“\ð†”&J®8êÞzç­¢ÿ¦Ñwöª’Ôîëw¹@¹V®w—`D žï>%cŠu#öPJœÇËBd&ÕT Ê£'MÐBúc÷fÍÆš:ò˜QRæ°‘œÑÖp ^u°•)%@JHÖ!žy³ɤéVUïÈ™×æ æA–>õÝæ ÔÃñ_ÑÆ| `Ú¼ç/èB ®[HD܊Ϋ6WpG¨‰KcBFõ,Ô9C˜ˆ@â[€Õ:IäYêp…T•ÊÒ(»&¦>› Ë¢b H9´¶ß2{ûßõe¸ÈP1Ç;Eb†øUm*pIH¨†0Ö[I¸/¢›P–›"5oz Y†Lj.IÛ4ïÁhºÉ¾±ÏO¼‹ûì›Þwß\ôâ\¡|"*‘•–ϲC(¯ïÝÍÜ骖„¶k-Ú·'U–ÏËóøh3õ¤®bжgúþ€,ÅԆɭ[âŽâ:\Öš=%Ž_ª<‡eÌ´Þ|›¡KÌþIÌ@çbLSJz$à‘áu‚‘ã{Ú–F»ñOèC»9!jÂ¥ˆúÎÛQ#kŽÄš˜õ¹.æÿâ,§¾²¬v:QKÎãÆž¤6â>d·å‘¡+Ë‘-à´|Rå^s|su#ø@=_^a«‚}9@¡s„Ï™úGWRßg´k²©Ð§yJæKÙ_;sPc¿ÒÝÞ¬ ÂÎ>½bÍ¡±K`©è¾Ž®Þh4D8×ðfJ­Â¾~§òb(_Õ×(”CŒó]Ø¿áu÷I¸ëãsw°ÿ p”ü¹ V\`ñ_-¹åt¸lˆ)wÑ?Yòsœkk[W%!‹±Ç2_`Âc~Ën˜or´ V™¦ƒ¤">Q,x€|ECý„¥W9ŽÔß§cBBQøÎK)&}ݯç¶ôo§½¹ýÖò ’äü\¾sZ*0“3â¢õâ…u³–ré»XJ)qÞ%Ÿ¶\.(gÒ—".gNV÷Ìðû€…öÜ™ýf§'çY­eÛ$Z±äŠÖ¦ÛT`°õýþÓÈç§D9 ýÂI p˜Ñ=Häûö»8·ÙQºdR×tæçåÃÒÔÉ¢ðå#w! ðE@-ËóU,îÕZqeA2rU«ýsÚP[u˜˜[BÕ™ô†_Ãðí‡èý{®"§úÃäŒíwIïØY`/4¿†<äê9>ûý¨·,+¬ÊY'±b÷žˆûNq$夯V¸~Üu¿„ç‘Püç_%üÜi%8½¨’@ ·Ó!¼h0¥ü‘…$±Ié÷|&ã%¨ùŸ€G·àÁß¶Þ>SÁ’¹R+–—Oe³kÑ{d¯ûÔEÞúŽ{ý š6ОPËu‹Ê¹á~P¥é%¶óÙ¥¢P€ZZø`ÝÈoLj–é¨ÉÐW#óЦ0ÛÛú ·?†³Ô‡ Ò?‡q4g]•MáfµfN¬6ŸX$VÝ U)HO[•ÒKD4>Ú\çIOÂlÆÂ“?m—à¹QTù¦_%u™8+a™Ÿò[,àɛϬ×CKmé+l [•Ã/ïÃÊ eZûcìnŠm?ò1Ÿx€Š¥ßwÍÞ8§*Ëg%¶ô‚‡ ë¡RÜÕ+x~¯®RÿcyÒTD~r£´³V8n\~'n]PmlæCÌÐ-’Z»ã]GµïøÖy~ǰá³Ë Që•iªEãPov• Û|ž›q¤ S[çÆŸ¦ÅT‰aJ¸mî  m…Wª—l?Žš€´Ÿ-’`H³L-«Ãü^—ž»K=_ Utóϳ¯ØMn¸`Zak¨Z="lLjU¢¯ÞLg[GüXÅáª×"lƒ ›ZOf3ä×í P'œ}$8¢º>Ó…×óÑ›SX_ø»A–Y+¶.ÐXÑk}3¶Ù#:ðÒÝ­ƒÔÜØg$Ž&âvj}I0Q.U7áœî˜--’,Í"g—Ìuò¥ÎD Mõ Ü®^Ik´VÑ%?HáG‰o4üñ5Ü/#[E€ Æšq2±nº*Öö^L{«ü)(I n1›Ë“€¦ þ¶—Ó+­3 ×§q´»´ñ'cãt¬ê|=û¬*ΡIú8ð\#EÐGLÕËšuGÛÖk:à w'ˆ*ŽFnu¢†;p~瘰ܺ–¤_T¸Â†Þ™ã±¹ŠŠÅ˜h¾‹*`{KÅ0Â×—\Jì!2H­A×ýv¼iBn~£n/YfQôuç€Va¢+x>Le豪`ç ~–DE‚“öf„Ò,‚ˆyB K=ìúëKþç’уyAÖ†{åÕ‘ªz@=|ëÔÏ?& døæùÓ™Ö–kMR+¯ÈhXc˜§}?„þJ l3Ûv‹‘`aB÷fàØ¹ÇØæ+ÜþP@@ç¤I_s$Ù$­ÕoÆKlQºGû,¸q þýM34mX‘÷-¡Cèr±ùE@Æw¦D¡µ“G º¡hkðLcånœ(êˆ3c-*N›ú;MÅÉQ€CÎJÙ| ¹ŒšyEþ”«Ø;DÍw®Äi^Ö… ì/ðò¶NvÒ‘iJ³Îµ¨â£ r ÒoÛ6É­@FO ùÛñé‰D[¼÷0iŠï)|¹dgkRÛóìW2¹æ ç:ò£öŸx@äq÷²$t£ "VŒ\à¤Éì‘ù¨|LNro‹Ãk?…öÔ˜ û¶y°ÖÄxÚo–ׄ Ø.§7ï¾Ä0‚èS#º芽ýyEÇyZ'”ÝÏ#ˆáRØîÁÔ¨÷ô£5¤¿üV‘`ÓПÎHöÛ–Ðïþ‘u÷æ‰/Èîr`ÛªKÚUdrïo°^G LN1Þ¹¡ó!49L  ÷iF2Â/ÿÈ”ÁlÝ…sNäø€ ¬ª}d§Ÿèe6$þÎ{9üëhÆ}ZH8Þ(Œ¬"]cà:áôŒzØúÒÁ^mÑtwÝç[K^†‘»OWÎwžê3Ma‰ÿm7±˜Å6zœF9¦UuÍb‡Ü“Ժê:ÉM€&Š­uÊÂÖFŸ·¡d>O…å¾ ‡Ä†¨<9N­ê×Ì´oבúrp=DCÆ ŒOeŒ7z*ü£¬ÃÿbwýõŒ4QhvÞ:õ]¾§®ÎÌK0ù±•vq ÎSb@F cQ”‹Êñp­E{C¥Á•`¨Xð÷Ô\®Šæ~±ªÞÂÂIŒµÅÆwޏU¸¼F4eDŸ]on(b“>RÖ“õvÒG (z°û°B·æhõð(Qq»¥¡ù .iâF‚©’*,?¼KmO¸žzÇÀƒÚ ë ¨¥ÜŠG¿®g&]ĹÜXü&™/G/qÓè—ÀzD¶g@ J*æƒè‘A¨O®Høá2•éup3ÅÚ Ïí€íU[Ûªºú3þ¿-Ö n‹·ºì6<Àξ2?LëºÕ>QœF’y÷Qçfr¿ÿ°UpÊÖd9pwlQ-j~òþi~¦¡ ^ºh&!dÕ:y:^åà-ß%FDÏ7ƒËÅXÿ“dxƒXÛ†ÕHøO÷ ’öçsË4¬“3܈«ŽsÕƒIËËwè Œ›å:ÉÔ>Ðe&´¼¢·|W)²¯Í TWßDUšï/asÏÞçò5}—Rkú:9·Æ¥û(µbJ(r!¤ZÒîvv^ûùà§«»XA'÷Vy€PS‰­Îwó{¿-*ÎïíF}"Pò ñNù¦„’•~ÖQÒþáÄk™wc èãÙWìø(Ç·lMõ¢äÃæÞ^báU­í jmHÃöJ$Ù^ð`jîšIµIP¯Y¤Á]³¦Y·³–?ù¦‚K›³LÙ¢*݆Ú¯‹b}·? —js.¨hZ'€¡;i<»xëïýh1Aÿè/³¶fÔ™ºR¹‚ûÒ±¤ÂøEBeùŽÖõxj=g=e^á+{á>“òº[Wv‹¶o|wf €A—ìÏ€€F&õ5x“¦wùkU$“ú§AŠ&D”ƒ°= P”år™[õýwR€ÝÒ”‚a„¿xñýùtÙ¼‡‰R%"*zW6 ƒÊȽæ$P8±•Ac£žÒ!_ZøQÇ:WáÊ"˜Ž¾w´óLðpšèü)öOV±»$æ v:Ž®ÅCüS®¨{¶÷QKv²{ˆ´j þøbÉÁ’_^*‚/Ug½º$gUS‰ó¾L]¢½Ù—¹¢Š[Ï]ÉÑàæBCx‡ÁÐÙÎ @ W:î¨Mß¿7KJß\nîñóð*ÂÓUB_.uÍàX õkºÈP¯…"ÌŠŸ·f_iMZvåºËÆHLÌîáa®ŽÃ|õ¦ƒ¦¦V*S@[ÒÁì •«¦˜ï8íÌœ—&^^j )˜ßj[ÉÀ4YÂå$³ÈýLÚo…wç9èäìû ¼šl^—“œ'a‚Ð;£eÀ-'4úµmi÷íö»xmO½ÛŠ»R9¸Å”y%®p¢Ölmíw@}ÜèêI âõÔ[ÆkVã(²:q2ZPçÞçÌó_Òöl)P[õ!OJʽ‡ÿ 4>€Í\bã+Þù{¾,·qÍH¬+!±^[ǹ˜O¥š§Õü(þÜŽL™=šº]Ï[X7*z5±mš7ÃжÞ{Èê¢üó¬Sõ+3QIòû™!àJF—*Ì äúh&]B¡ºªBR›Ö2ÕO©àQÞ‘gø±*ÓM:ÂkÞ½ª™··Eëö$í½~~ªª7½N£ÐoÑ ¤Ó¤%QÅÓÕj5åV£µžr¢öØÍñ{G1Ïq®UDej0, -ï4É"'£C]Œœv3Ìrø±õò¨ê=À­!ÉÐ8«ÿ9Ö8¢ÚNÍÀý¾"6´îæö¶4B| ÉW*Ýð«åy>wÇTZúÔ%éÁh­md/ ça¬¦YÄ!k’ªø&ÇTã XX°5]IÛ:>¥®ÚÙ§‘Ä¡ƒM]C eø¶ Zþ"ÎF:•×à]øË¯[C"Gˆ¯ãÓLAá-4…¢Ù÷ð%»Ó3€ 0s.Ƈª"¹IÐgtó4ÀêÄ€ñžÛ ‰¹¯2 ZÑ´Å×J.¹é’?aqëMa3¾·OaI­$Vn½úåÙ1°èê8ôÆ•±·€¨33]9‰a¾²ùƇW;=[)Û¤Çê.”~[æ\ÕjT%ÿÂlmñ®åæ;Æ÷ã>;6{—Ê©£¯hôÓË+dw·fi«I–¤ÖŠ*VϨK—y~%^ÄB  \Qè`ûüBN»O(…'‘(Êt:Ÿœ‘ ƒ7ÁjÎa%5Æ­ªðð\m7(Zø(ÇnÅŠ°åäfØeÂo‘;ñ¢ï<Ÿ xV ‡ù„í[øã„A”€;/WÌ“ï§ØA‘06@… çã.U)!í°²šÖÚò–³»¥cbëS&²"Å‚+ÕâÑdE·¾ÖÖUÕI„ÝýYþ׬žûïê1)a!G¼œ”>œµå‡Çl$®kB©2yÛײ [|@°M×^.ùKËÔ&J…ÇxeG‹ðÈÅFd¹û>·|aòÕ`°ò‚!ÓV'Œ˜&)ƒ} ù¸…VH0‰&ÑÖþ‰¾MUr³ñ}xT—ïæ+A~™ˆ¸_æxÕãù ‚äbd­ ³°¸y¡åšYg Œˆ=†>?œ²rãƒÛèŽÛÕåæŽ’S ãAÒ´4¿´² G¾crWuKrù$”¿"ž´$á×*¨d$íoy ™ÃÜ¡h Â¢Ižü"Í%AÅq©Õ‘ˆ°ê`5‘Ëôv׺´Ýâñ@2¨Æk€¸U÷„œ©õçñÃ<ãk ÷›õ-wåWI1Y¬ é*DTÀܪ$ jŒšsҔߕJŸDr$yI¹O½0†øµÝÎ>pê»%ëפ^^€B-Ë»·çïÿv»A‡éC,¼t±¡qq9e™‘WÔ¥:µ—.¹¾ä<<› x£Á˜œTíUþºgäØ/äàë ,@Bü£USn@²:{?Øç È,nePï”ê-Þkg,‰¼úü¾†q1¦µP¦Pn‰D4Àü!#¬Kãl]Êñ» §ZÜ·e&'VÙºLºÛ³ÕQtÜpÞ•°.JF…c'cÙ“³rPOúm“&Êz°Õ ,p*ýà0Ž2¼ÒÏýW颇Z`³ÝbDqŠËu"&÷2%:VT4©Ç§„Ü pÉCúéG–?—o÷|n ×tÚŠ˜“ñŽ(c¡dR[}“¨·©­®™ ®!±b¢à\ ŒƒŠ] ¦¹ÊVÔÇŽ7HåeX¯ÜÁ$ºwç–g×Á¨V’jM&ºù`¹Ú›Ó¥â;_Åì— `y÷Œc—@Ÿ®G©’ Ò3Û »}-@õh¬Ìr * Ïýk§‘&ŒqÇ©ò2ò_UØÑQùص­0$<­|‹ DHpüwù|ö-Û¢X¤· ‡¾±7ÛWªDÅ‘z¼"d¥éËHªÈÁž/XÒDzr3µƒ^ b]I¾}R™Ò%"#¯‰Ì |£›íg+˜ýðÑ ?noê!W,¬u÷‘S^ÎórRñ¶EǯÚô-ÞCîŽbCæ‡ë °ðXzÝ-š… öIRÝ'Kµ/G›'Þ|ò!{Ä7uó߸¹—𿯹 Þ ã˜,^`3Mꎒm,=B£N-üz¶æò£êwögdQ¯ ,ßûÆÆtPÜœCžm¡šv£Ôš0´=_Sˆ…Ôl'Œ£3øAÑåô.`^Ì_<ÎWSûšööwh{Ñ …l|ªòL™üÄgfs°#g+üÄËòÚ¿†‡‹`j(?Ø…> ¨Ñó©ï`K‚O w,Myb¶Õoî*JZ.‡ï-‹» Ƭç+U ¶*Oýë„Ìè_µÿ@ÒlW@ _ÂN‰3ã~̺u r/„¡Røu¦Ñ_4àñ±µR—ÊK)@ç÷EÉMÿ?q¬ÚàηXe®a|VcGÂb=Sÿ 1z%‚³ !ƒð§JäFªB(¥P3f(Yâ˜øZEè$Ѫ¯é%™‡åÏ0<à*œÑ ޹¥1wa¦3|ÖwâÿŒìé©w§O¦)«‚TGŒ£«4¾`…™³ ¨?`@;×gä!¥?¶¾L`Nª»QÝêÑã¾^\~IPDµÞ~MÉ T¾îö’”þ^€bÝr¬ÁLIY2L1›n‹1€ÄÇKÙw•´œ¢Lûþ3xtf~º’\8ÏLÜgdü›KDb\ ÝI‹gͼäì÷ê7®N‰Uï„v—/èÌ# {l[àãµ+©ÑŸ¼e¾ü¢ö`@ž… DGXJX½‰ØgÄ‘P^· ¬yZRRnë£ÖûL×WÞKOXù†‰vÍq¹쇢Nôá°S®ó4f½~hV†ù~H…hÖ˜šÊQúóàZé. ²g•K:!ws¿Í­!ÿ\©© ±âaô«¨37–&’…¾³Ï€„Õ™•JÈõSÍ)IÉóD‰Üt‚µF&>Ä’ ­AþaÅШѓãjÜ}õ<&i¤Rž¿µézMøCU4­ÍÊtÂCKÀ—òìëQ+ˆŸ}À:û'À}…áªD>:HïKƒXÛã,@Ä–ß—² ³µÖê*[RvfÎ73„G©¶g¼E}oërÏæÜÝæ£X‹ ^7¯}J/ªYó zR€Äa´J)ßœùÙÝ H¨Ð¼b<ÐŒœ&VûúLLS‡Ìì _¼6ú¹ÿm‚ëž—ÜØì< ÛàšÂãgä”Hù.%UïRð Ř}·Ki_®»ª.t‘€àNüŸ6^R~u|¸kô7–°P’L)6Ù4vã¸W [§SRO-Sﮉ@W‰þ» BZwX«gäSò²–åº kŽæ÷–Ø¥ÿW.Ըǡ{›yrè Ç\]Û/‹ƒ?ñDTnFy™ÉÜ9ªóX®êßt•›X?wc¶!† Pô=x“NÐ}ï½`27µ"Ä›Â%I´fûÏ<°AZÔq*&2.®Q"tU©Qs ¾üâRá‹%Ù†ÛIM´¸«Ó¢() “ƒmµ×²*’»¼OŸô^nì°þU>|³VÛÀìØ”˜âz}DtŸîÇ‹K¶À}›=8ŒUðy’.àòS Öb²xÌ8“øÖïQxñ³†îO-ï/«(¾ù€ì‰vXFhÌéŒÕŸü§DúË$«Õ÷RÏqóíóÙ\ësïíÝOC†‹’{Á1ûö|¡1Š}ÿüýß/KC%mÄòÝ–ƒÄ> _ƒHÃ`Xä sRg«ÛW½åþ‚{È~>“Òa2N,Ž¡$°½ØÁ"›èMÈÄVhš’µñà\oyJ8omS÷mwè³__‚”Pó¥0'ìÇxI ãY"?³ž¿Lû³uökm]áE.&³†Â+éëcÒœq ë~ns1/9V 6ñY&îëgQ?g€®UЮ»ÿ”ôõua=8~z·þ|XuÖoo”–Pÿ·%É`þÖê¶)ã‰=¹lmðlp+,Ϋå01ã-rð•Evãô&¦m콄ϺxUmÝáÀ#AÖ—”îCN§Ê"öÿ`€vÏŠ£6  <;š@UEYw+¬ŸèÞøÉjêƒ@í>Mzcjí†;| l¼°ì¦Î¨¾ ™yRYÏEfY3_Ÿ7•—ŸFÛÆ‘ÆÙ¬¯©ZÇ ˜-` ×ÒN£—¨"oqG±Â×3"s[ßì(ÙE¶¥£¶Ï¨Õo—‡KÖÄ/P®“~n÷Òy@Éï±ý‚Ð?~û’n¨ÈNÕqîýc.ë½o¡èk\ŸÆ_&åÕ§žÕÝYÈ~Fø#ŠãèÿÓÙÍuŸ™Á2ºÃJI†¸ ÊûTÊßâTîd¿Ç“Ï# g¯óRž?‰tÔ¶[›È›£ŽwÏ¢Œe{HIA-N\i h.¢‹³>ÝyýUñ‘3žû’ÜwwÏßÐ ;" h^`!y² Ô.ðÖ½+RÉ©†¦õi›Ÿ˜¤æF­ú*Ð=ÔÀ<û–èXyEÞ+9ÊC[Œ, ‘D?Dâù3žU·œA»KÅçØF®Ì7ótÒ«åº=û%¬MÍáG½’'Mä®_BkšÃf㙦A#Qr‹7ðê±vï)7ê@~ér û¨Q6⺘&§óãµ$å·btP¶`Ò<:±§V-c‡ù&= ŽŸžU#6Â2·'ÓT›V¾¶›ás‘6‰\\/ƒ5¦•¥ß:æŸj| Ê61(½DJ .±ëœ¥q¨cýµÄkíþÎâ¶0¥;ßÏÇáÖãÿ¨Ú”3/²Ož‹-õWöüöF½>]šæùå8äu`滼ÌU“ï!ü/_}ù ±Dĸ0‡óÉÁ^eV>J£/Ïw VÕᣚ’-–ÖVðc½ÿ•ŒobäRb_ TÌ5U¡Ê*¸'}ê~ØÉh¶PÕ›úlR>+wkb¹f(˜‘^•âj&WGªA“ýS»ËyVŽÈe bÖ_³N!?—‡:bó†ÃÃ.z¨ïÄ*ÍÕ—Œ!ªmèIˆÕ¾¤ö6©'ENj&È|¤SœùJZûK‘u«îQ·²øN)n+•;‚ÕýªêŸô¤ö>Z4gß{W|Ihõ­<^mã©Å)êâ²È̃ôЇG3,6|*ô¯*®“ÛM¥SÛ!гÀäòô’rîSŽ˜änµl n‰ÍüÊzŸþãü™oþwä§'=ðµÖcÉ&äPva·8r`Ï¿WU¾]|­ÔhzqFXÎâü½=Q¢ì XÎ(C¿¼ÈP«9ÑqáRhþ7r*knˆCnEÆ‹'æ¢.™¼i’úvæŸi$0Á2wœ¿åô$Î[bÞpWùŠuÀ°QzÇ«âh‚¿Â;I-ftî7kr] ?7ÿ 玻z©Ÿ†Fœ›äV Â\ªx °ï†¬ÑM|ûÁ z®ƒÂ¸Ö‡œgžt L5ùù·»©)å;™n/þbAè´÷‘ —l"s ÷†œf÷{.$.%+èA7±µØ‰¬ªy™>+Mj,Yzá‡zØ-LÏa{5yG"HÆiñYqC„‘n'%äæNAÂëË]’òo†¾œåº¬l¥œ×LPöa§z"/)Ð}È1¬°µ©·õõ@Î[”Ç}q•váÞM^Þczñã»­ÐŽ½wf2³TÀÚí6lÓ†¤hUÊŸš—F´áïƒÏO#áwÝý#+R‚^º*¨U²Î ' óüµ4°&x¹dTIÕ7—›ù¥Ó6ÍõhÀçþ6 »)Ø—É7µ–EÀL_áR'E iU.U•èmË—ll×m÷tÎc{ƒ+uÄ<>‹YMÉü½b¼çïR|àŒÎ`sïÌáåôôsW´nrŒ/­µcžùm@ÏQŽõàEMÈÉŒâaý´r¼…ÍüœXùxmòχ±N, ÜwveŽÈóbÕ$…œ7Ö\LãÿÞ+ª$·ZÈ_Aó…Ž = ¦LÒN ­0`ÑÔÑx*-ë"“&—ûh-®µëõ+ÝÓ^ß)æ§¶ÁpŠÐCqÍ>Ãl6¤;ý+¿_³/I¿ä¹ZOÍ!wbeAKçV2ÞÉ'ïÔOë*œøÙ’ZØ[ þÙC§ óï„£LŸ>ɯ¼ÓÕ¥ÔúGm›aLySFÒøÿ&Ijÿ¯½ï€jjÝÖ]¡„$4é†z1 Mé¤w•@BïìîЋ¨€H•.]@DDÔЫ bAT EÅ‚‚¢b+ö¾ç¾½Ï{÷ÜûÞ;û¾±çŒ‘,þ•üßüæœÿ7“­ \õ·£@@]î`Q°˜Ðw±÷ëgíƒ>[ð·jÂ\„»ŠÄfƒ†Ç†WF—ÏG.( :‘ü¶y6ÍËÜvèÔ‡gÅ8XñƒPÕ„÷K‹´ùôBÔiÄÚÖ-co&RÒuãSO÷ [Àõ].ù[I­Ô÷¦[çv© ¯Ÿêß6}à4é}GV;5b8úñlºµÛÏÉFrϪ‚Eèÿ}L):ÅXžÚ^o­Ý¸­¹Êv.׆rtfHŒÏç1åð¼!¨d»eP“‹0È\’äC²ÅZˆ{í”ÐçéENå#-ùueÒûÝ.‰ì>¹K÷õe··Ç-¨‰65Oœ¯¹Íñ}i[) l•(ì'‹<‰Ò±~XøKÈV1& •¼p* ÷&iô‘Š*¹T¯Ë™fezhÕ™oó(÷ØE)k¢(z[HÒN~ñ*W½é®‹ jTòyo‡"tmÇO@ hCûZ~œif• #SÕŽˆCß>ôœ9ØI*+t¤@ÊœlVuNãzZç,uª ú8O% WIQ¾b%ô|2êð˜Ô“‰åŸ´ A-c0Q€“@ÈM*†Õ¶[“EH2 f†¹é¯?"|›œÒ\s2y’M:Ú*tñK /¨ÐA8@D¿¤¬ߣ¢ž÷ú¥ðVä·¦NˆëÈ#Ên:ŠÒÌd˜õÿüý_R,év™CÆ]§h Šh좠ÌH~©ü±Ê*7c:kˆ°ÜÆeõXOçM—§È@V¼¿X¼[5‘¬®¼ê?qJ `à`©2;ÚgøEÝœo¥M¿=)+jûËݧx?€kS|›l"?qd"O™Ó"ñž§Ûµ!ÙUÉѤ†žZ.>ˆo~Zd®u®»WÿÒøe¼þgºÀ‰sa3§#SsÑÈ€ÏB¿>~¢œÇáêF#IP' ‘µ÷ð«ârzœåF6ÖÕ!±;ìª-iìíGyŽ…®ÐØŸ+Çs¼ I·J†ª—Á×7»~Ð];øåÆê\ë¦è^‹8J-}ÇEI¹†é¡(kkÄìYÄ4ËG·s.ÃÅ•¶óX\_Z“”ŒO9ññ–ÂÝåÁdI_¬\‡4Õ,)]ìJb^:W[ÐDHküå‘©’iqö·RʇܚU¹¢NJ&§ÜfÀVÁÞqº =u3•ev"F€u½Ÿ°Gù{‚›øË÷E1ée§S6^L±Qä˜(wö§²”¬QCypRñ×Õ²ÄTÕÒe9N~HJœ³vIÄ·Û×úü¯{æ³C½G9ºŽ¥l5²1?Vù¡k–½?Ó„$¡-@WÎÄH['½æÃ†(ôk#Í œßÁ‚ô#¢_ñÔIqXÑ&ñÞ”=ªú6À¼]Vv ¤ã£:šï¦v“%VFšö…*“VQ¿s©;³ ¶¤¬¯1Lɨ”œûNëêFÑI5B(Òû»SF]r\v4urúJô£grüºÕçÜ&·“v£²ÉQç"ÐF÷»&¼ÔJƒå´ÜBžÆ‹í¼ñì“­eºáÅŒô}1ˆjŠ’Åk¥-d‡9Ã}W«:¾¼Â†S°[ò)ds¾‰‡¥J½ß¸Ü~8_Wì›ãf‡Nf•6@04»P{:×)ZihÃõ‹Ÿ–#ÒÜÊãÃÞ4ã£}7IïËu9´ólg&P7l€“|«ƒ«Ï€m¢CU ‰b­×jÁŠmø¡ã BcE´oišµS¿qG’Û’îúÖ P»ÃE¬¥¨MÑ8j¥­ìóĆýRºÔLòjëÏ«ÍÞ%TÐ|Ÿ}%¼‹­ñk•‹CÃÚï}QA#çÇCœ‰ÁÌËê Š|Gßc´;n¢øµ?žÝÚ{OØØÅ[™†(6Myu`o†´½ƒš7…æ¢Å| ¿î½lÿË»ÏùrbÈgÍæo ú“KÊÓ©]—Ï93€o‚§ÑåªÖÐ%¹Á3iTï/de ø1µý`ÉÙñ¡cñµ'^Ê ½Qä:DïœÜ.1*±É£<ŦKÇ{ÙYûE§¼àM¯Ê»´iüFòk­V©,´õe€Â䓯7>-ùsnÄ]Œ«3apšÐ×f¯ÎÃ@;äø-tÚád«ÃÊ|qÏÞÕ4ù FuçÍ¿¹¦Ê‡(6 òâ>Ó¨I G’Ä;'rîôyì š´°PÑ)P×1 evsùî¤)œ’ë:ÌþÉSákà¬ã™™¥FvyÜs”9§~è°Æ«Š¶ÀÏ5èŠJ …%.láh½‘CÃ2w¦T$=ÑåpvÎCÚë ñÛÇ¥FúXåt¨$”¿vÍW~¾mIåìòÝWw·}à“€ÊÔ‘6âW©Ðw]l0l…õZ„43!ût88ØhoX‡\G¤´×Ë—§¿É`qÇÚÿt±"+óh¬¸œQV’Æ#þ’ëY‡Ê¼üÎöR#øqurQdˆ¬êžáœ”õâÝ·@‚Ä>‚ˆbÇ_m›µ)Ô’“Õ8zôÃÅØ$Óçnž`ï2ôj¬kdLÇF•»,s×El‡zôê Ÿb¡ýú,kÒËöµR+ñw€4-ÆãMõ}®õÈËöî³nîŠOl>í8]°·oŒÏ÷ÛËK`K â ¬Ú+îž}IÛMƒž oû\Åó-á*à°¹/óATu«K-Ú$ßX®0?¨U‰b^ è?XI nDÝ2êz^°Cò ÷8¿4íðÖAJ½p€èÒÊ~¿ Sëƒ<Œ=©e·¦²¿9†”~yûƒ] ¯|èXªõå}(ù·«XÁ»&}GßNÒsó¼Þð¹ˆÅÄÇePùL¹¶–Qt 'kÓri•žØ.HŸ ¿Zô„®bÐøaµ7­WÑR½üü7ÐðÐCìíKMíp‘aÝŒ†Éþ"iÆÖóÑWÈÚCƒ`ðp×<‹4ãôGÀsŠé|›;é#Â*ÙâÏ^ŠLÀ9XšÁ+ßNÓªpèÛ†ÜçíÎvG ¹Æð›eÜ嬀èðû­œ_˜K矮W~ǨGìXsŸ²Õð¡<‰VÞ`¨ 9e!£Ñeƒ§B.?·ËqÚT<7åxï9˜×G4SæqVP½rù]·ûƒ–ò^MÑz“=bwÁ]‡‚<#e%AÇ+?@ºo¥¡žUTN¯k_ÙRþØÈføAÚÜ0Ìé#£´l>ä=**5DÜ’^®Õ·Hô¢VKû¼÷ƒšä?„žù8uèþs°ñÇ=Ð[`œœ¥í;¤­W<ËåªwÞ Õy½„ÞúË9+—ˆ¦N÷É+ÊšÊC)bGÍÔ-zgÊšý9£äu¼¢ˆÅ’Ë®Æb%tûë¡–œ`áÝP%®™æ*>çêG×¹R6ZžÝ–ÊsZ.Û”÷øžÖ*™ÐŠ‹_¶æ›šÙ×– šÊÙзi™ÓO shžÄ¯nÿA8µ—ÉçჭѧœÝŸQ‚Fc{ï0ʬ÷Ä“­*Ôò”XMõ«—é‡V»½´lì+Z¥øŒ*¶ÿâpìåZ¼é\IÑûìäwM\®Ÿ±ÌÏK꩞ öÕCC·É–v.~Bï|ÕÑësóí“ÖBŽÒå6NA¼ØtCG0‡–f4¿Ë`á3çÎx*ók÷ÞÖlºàp©¹øÕ™—¿|@?3 ¡ˆ}IxKÛrLß \Ò£i7ªh¥ª®YúÝjx~ödîöÝÛozÈ~3áê݇þ]{Í¢CC•Ugz•9ù·d.˜Úé+µ-øDûôš38‰a‚<¬¡Ó•¦ÓfžIÓ·Ä]+¸ö\Õg“¿/cBc„ñmÛý;ºb–“+mì/BËM TåáZÖ`µÀiu?« @`;.¬Ã›{T»(K"¯(®Ë¸³èý©ªÏÓ³s&#`BϽ{ Z©™“û2ž˜¤tÍÇÖKÄžÌâ“Óõ•«$g?‡Ù™[6üàìá•â$á ¸ºÁÊzùÎ/wJ- ¾©0dyê®ß„.–‘8Üw%uɃWú¤Ïl`XS2‘°å IÑnï»ø±Y,JynôûݶK €‘O¿eñb§µÜZ36–a¼Ò’¬ñšw7®ïØæç E˜ãÞe'Sô*» @çÑw¤ì$½e8B+)Idt˜—]‹¥ò®´ô²sKÉœépÕbŒÓÑÐ0ˆkTkdk‡e~Ä®ÑõºgÞN·¼Ynéç&”Åæò8Ó L ÑKå•[öÃ%Bhˆ_^8€ÎLèóˆ~{—¸%>€ºo»6¢,ÀëRpó½ç£÷¯U5ïè}âY:”¾3*TP’+Ž}·‘,àzc¦³Ÿ÷𢶟55ÆUsèWa½-â—Iì}$cMyNùÙ2ÞR Ô¯ßH^ÛäÆÖr›ýUS*È<Ê!®ì«X÷qÕ¤W9»X{¦§p‹ôô]¢ì9*æìMyEoÿ°¿ÿ¨ŸHÛBÂ¥5†8ÇuÔ¤CH6w¼áiéÙ„X;t÷GoÌ,µf¼Øø ¸äm½û°¼Ç¹—b\nf\çá5¾ÐPq¾-N:²`›,>†¯ýY!GÁŽÕÁ‘»ûVv¶ìƒÀµàKܹ¼9zf‰¹>ø9ˆ—Uy°aà—Ï”È,PÝ \•°Â´F%Ö˜uA!Sd£lWI¸I±7c1fF)Ï„ 9Ç\ë¬ý%‡©¤WY yF²ôÓ#í"hv¤tz! OŒ”ºnnÖ‰¦¿ßâô}Ú1Ôsrôo½…!õSKoñ™ßß=7Ì¢O¶…ïrÏ5•Ý«ÆÞÞÄþDÁúç’¢n™Pý€Ä„›ls«w‰ƒØ’þ¶‡jÒ^­÷jÍh"×ï¿=~D]ÅKª$ò2ûÖ›ZâÐâmlðKf«/Ì^]Ç @p-¹‚Ø}ðEÈÝé¿]Ýþ‚q&cL¹{ƒ¡L1w—-¨ay=·rZ£¡‡½AÿƒWõ}Jë*mSÝyst4ÙQj;SIŸo"×y½ðéY'ao™8/qÙKúâj*°¡Ÿ&ç›õûÚ¶êp´p$¿Nz±ù‘žA ØÑÊxüèXuÑž˜KÉ·š,/½—+“<ÌX[ 9™þàÀºL’áíæÍXû¸ñ)ÍO±@9XMèÔ=6bznªîÊ:™y¶o#¦¤¸7¼Ü=›ÊPõ¡ð”óVÅ;ëRDjÑâ´BÒÝ…WbTÑ8K.JlX}œì ‚ÐiÜj¤µ¢\ñˆ f£„øõ¬b‡ÚsùŸr’GëNçÊ0WÖ‚x Ç×c›Á‚K$b“O¾Ö:acdx*ãàPV’àtÒ 9P¢„‚¸ Úƒ-Åß—œàR›…u©©OúÂæ’™|бB-%ÛzX¸˜Pÿ0›Šaß·,]I\¤±*£~/Ÿ2NaÐæòâƒÌOQX„I ±3ì½ÛüHwnަ ÕvÒ6>Ú>vàŠ¨a9½ †la`Íþ$™R÷¨ÑÀñžŠA_WåïÏ ‹õ[ø÷â„ä=÷¶c¶®¶LŒßß—ÿñU ¤î *úêA^—§—v¡£µã„.tLe Âß ¥‡!`ùÇuª|Eé£K æ\vªæM]«•¿ç”gSsè Œáƒd©Ã×ob@ o¹ƒé\d‹^õ=NíåÊiùf¨á(6^^¡ÛWçȯ9ìhîè˜Fc2ë0ëU®_ÂU* \XÑ3× Ÿ A±Ænv-AÊG¹Uì±9£°ÚÄÎíÖ},%ׯ8ßœGóŽý2h£%=¯¹9Ú9[:è)ÎŽ-:Á°Dn¥¤<×MsÞi; —Q{‘ ð@ö·)c?~¬ü¯HƒÇć]4"SÂ¥É-ŸEgÆ]¯”9&ëÒŸœ…ª^z= ŠRÎ3¿üøJ-~¢y™ÕîƒpëXâäí|Ý)m©¢<ò(ìŦë8@ó` ®°Ô4˜£ýz3¶MÎSÛ%zÑr%G(òŠæExK;VÿpSÊ’V£tŽ_Žl¥qç[ÚNËEŠX‚ãÄ> nÄ™ÂNEc5°í+66lã“Ìué–Öº|i«Måï#™Y®aÜZwj»ÊR÷•Ⱦ_@.ïH£ŸFÝÎþ¦W áÌË|¬éoÇšG²t¹ ´÷/ݬö ×[P´÷i:pq}ç¢.ò®õ„¾›õàü§œÕÇèÖõ9ÛŒM »Ì`똷Fv¨Kä¿qy»5NÁ®aÈIæ~¸ËØœHQŽ/,rb”g’„9r/èK}?~¢Í%¶3/ÎKPÿÄG°± ‹`÷ë¬Y6Ö<‘5=Ò[… Êé¯Àîã+G –p÷ˆ]½åç½5‡ã!¨ÉRBD•ÑUUwÁB{$w Í‹MŸ ¼£¬hÅ ž{-~`äí]X,/øªð  \w‘—°ë©òÀ¢-(rGk^±ú™õ°³ñ–*g.‡ˆÑÊWO‰¯Æ„W_Ú.›µÑö xV®[ßÀÂÉÿVؾÓcÎÄA™ ù¿ËXÜ´-o]¦êãÅpU­>Ý7Ú‘ €›Ä¸9Öu‡0õr‘sÌÁh o>éÉ_ï©ÕM„}£n™Í0B˜à”µ³RQ@4ëù¸ÖòÓüìÁ÷/.ÞžÒjÐÝ=·Ù ÿê öÞö7 Kûh O“-|6 qpÙ"ÁT«¸?J s3(:v–@e¶’J2‚%x#øE‚®£w§‚2S09‘äáÚÂÜÙÍÐì9 á}¡úK¿±éb³iÞÀR–ÍÁ¦¸´GÓÃÒág\´ËhaFÑ¿&Χ‡_ñC}þ¹†˜̃øÁ›ûËJl²só£É£aìßptØÜÙž–“q’*è\·£Àífßõöéº3nAþ^ ©’z‚>QF¿ŠÕ‰œ”×JäÓÂò€Ü$Àuˆ©–¨[OYÀš»:íŠ,spÚ‘‹sßòO›Šº[ø>ßTOOÞfT~ðè5èœHðO%«8“<†‚7‹êÌ æê©Sè'¾J»g0#µ³•!>¸Ö™V”Ãé ˆ X źœó·+^½Û[?(NKp?ÇéÜù8–ïåuS™®•ù÷ÑgÓ€ç ètWdâ‹}vüB͹eŽ:¶{¾¨¯`2dÎÈ'åfæå|õ|Gဠ-‚o8kÜ7g~ÆÉ¢Œ¿äW@¢al@&*] 8å&ﱫ§VŸŸÍâë”ßàÈâÊõ®B«‚MùÂàË2R¶¿ÓGP½¥"ÔS+gtÜ3Ñ?¦ªûfl‹ à$1qâ¯Æí" cá-mÅ"u¦%»aÁý6‰üÕr£…ÁL'FÌ眥è@-Û:}kM]j‘°@Ap~™ñeî4ë©>èÛ]™âÎ}ƒ1Ì„t¿Åí?Ú<¨àÊ jxôhn¦èh¹¢ P±‡Û±sHm^%”}ù™¦:Þ$Þœþäy)¬XX¦µ®­ÜQo»â­{¤«eÉ”£B—BÂ"ŒWâÖWP>“õÉ™G$Dgp!§›à•«ÅÁÕe¨‚±o´êŠ ÿžñ¨à–EMˆ!Ѱ3 ˆMI.ø^¾²ºš“×ÇÔ|”±É.×ê‚öžh¯…€:Š£3‹£µÆ¹W_¥Ð´ÊSýíbwõ.HE?HÄé{3¼ë”ßGÊ®ñCnõ$ÛËUê²ÒÇEÜÖ…Õ«nýý²8Å»»ýCS¹Zø=GÝð«E¸ÇSb¯;ó2Ä¥“ÔÈFg›ï7íªŸ ŽOû@W@Ùh7C†¦ó­Í÷J³H\¦“\p$ŸœÊ ¶¬U&B™¶îÎåè†Ç#e]òõ{Š%ý¡{zp(iJZjj¤ûj£vâ‹&nÁƒEaú]”Ìí©#iw%e¸>}>ñbw‘ç>Ó³}wÕMä4„™Iþ’ý[÷J`ŒKtT¬Sòe2­ó`R½HeÒÝxdŰß)»Â‹Ž¡9µ§§jÅ›o.5óé_Mï5þl‚Uæå´É¢´&»$3Ò,¹®à¤o«J$• ¿¨ËúzäÞÃ\(û6ÑA²Åë³­êKîn…þd/  ¹œ(„"wŠ9’ßïP­HìÆ%ðw¿;{däÖbͳç8Gëè:ô ºhÄ`ù Ö—1t5H®V>+ëê­[ZNWö¤PÊ•`†æ­¯ÅÂÞ«0Úî´Še¿‹Y³hÃIÞß¾ýš#îº*„Ö¯ª/*³Y¸¦¼ëŽb$ ùCÝ×~;J–ãmnPÓèÍ©éBHõ#‚ÅE6á) ×b‘™s² ø›\­5Ÿä±Ÿn¯÷·Ÿ·ü2ì21¸ å×èKæ¼Mu c_ÛnÔ @lû“=)8ÕòÎè0¡*K6 Ò´òž+¸"8‡£+?ãbƒ%uÖ}8 Û2[Y*õýÜ“O©ëŠv¼ƒz9—Š‹åðD—Õ'3­”“<Î)ì³v̰õV6–¾T•'£Øß`ßæBKà ±“ަXÅ;_¶Jkùàèçï€ýÚ›^uÑÃÁ"\`¿÷%âjô/«™…’Ž÷‘¹'³UE:[ÐsfÅvA¡[/‡IZ›©›\M8O™šõ<`”x}2G·'·¢ßH‘c$ÿb"ÃÔ2„êãÜãÅÔ4^wŒÛ¢ÈÍ4‡ñSÒ‹…F‹ÈݵB^PÉ““{kWðFF5Ú™&9éä$™^ª5²Ö<Åɱµo„¹_޳D-Ö¹žL:zü¼ŸÁ^¸¹Ÿˆ*üôf,f/'ÛRƒõ´éËG¶c\$ÝÛ´]3iÒÇiœÌTÞ‰c‡œŸ>”ÍP´¬, *¶Ö›yò6ivÎcZrŸÏèM>vÿP‰pt÷3c§·y„R—dÆ[¥Ì)w>”"$·W ˜0¤ï<ú½°èóéŒÞþ Œ9%—¬«AÊbš,z ;9YWôrÈ"ß{­òtBí=œ49) çVsó•šN«¾¤ëÐ’Œ«]ë†æÕ‰,l_ÓÑJi§Ì‘2†™ßæJQBçt„AÃ-¹^ØÔé_¼ïÿ\X” 熌Žâ%s§hq°jJóKì–.²]6¼®v º]|ôˆFÉ [©æm+‹6OššY 1mK~²†Å6Iw¶¥>:Úê;tȧùävÃxß2&dH(ÜH,ÜA®SåYÚ˜fÇ{ÚÕàTßè͹#ÿ*l騏jû®U‹s6n‚Å@î:…¿8„c]î¬~rś»Ù(ñb@û;Ü¿»ò‹u\Q+’÷3†T3˜ô²ïiü¦;år™4Ž{õ¨é'?b@Ìz8u)8Ê::JEÑ ·0½–rm*ÃM÷‡HŒ]?µÚ zøü|ï«ÝSϺwûÜ|mÉ7û­7˜Ï“gIÝ çˆØã´48\ç®·ýEEÇkf6Ýy6>S0÷æUUñ—?6Ç_âVLåL.! ïÆ™L¦ôz®ú³äT‡öø©5Ê­¿È¶…09/R$Ô âKmó>œÕUÈSZ#4£nôÝ6il•ݸo{³ß*uŸ×_:•ì’høÖ™–+¶7ëi¾ê:îb`DïœKqR‡""áï!­ºCÕí}%^ßl˜‰iœ/õ#{:Y;–w”C¤òBÕ È”ôóÜN‘µ%…}Ï7Ö!ê2rL…ÄtFXF¯ ÚnÊx”ØXÆÚsW¨ñÐCn[wN<ïò¶Ò‚ó3†÷ô&ÝF_a0‘±€8¶âzæíÐÛ{˹Ž]®ˆ-Õ‰ äa“ã^GÇV? 3y+jym&Â=òÒ›nOë<®¯¶ï[1XÔûÑg“ÖI*̯¿Ù5ž¯ßªjc^“¥Éón n6i˜,²Ls}ßz± ýÑàøR{£{ßnÝñU@wd ÝNQäÌ¿NŠï=Ï”?b’kÿã‹#[ËÑPzɺv•sd‹Ói½W Cí `È…îÝs¶¿×İ‘ç{KA1 ²Owü&áðÇ].xÑaþK¨@âH'ŒÛŽ ð…†‹ ¥È¶ˆVOÉcÖxIKË©R.ŽlÓM«ÙaʇШ’‰‘E‹¡¡å0~꣔oçíeíÖMÖ*ir a˜#Ë4Ù®àö#哹ɸɌÑÓ9[xÝbHïŠÐNÛ”UùKh%Žõ¦ånƒQÖªn½`à7PÚÆaÙÓTDð×ë¤éõ¹,·4?ïüúJmcFz­zѹâ_vªGÔÆ…2‘Hïcä<£Ãœ⫇ÛšŸ;Þ°ÇÛ døòÍãÒUIÇ:Ǥ| <…$3%òY$m2Ÿ="”}•íL„Z·m„œm¯\¿{g h$K¥p‹+ñ«†(jI Â}‡µ+o0d—¡ÞMè0P(´X̳•OM†obc)K.ã¬ÐÚ÷^r~W¾ÛW Yß´òI™ªp»¦ó„•«O³_d$‡ˆñã.y‰HL¾®NÊÂ<ÔNy瘼;•kâÖ.&©Æ™3FÇy+¾_Bõ<àçª÷§gK±löÝäAf=1y£ï~|ûén z®¶¶ÀÊou ¹²ÐrYᨱQ{õ!’& 5cQåöîžÖ½L1£«Ï/Ú^aœTØ|üß+)¶3R][ÉÂÓÇîåöÒ8k˜™Ú!ìrbg£øj‘磱ÕMÂ<¾3k'òš‰wq7sjr\ºô²ÍB?á¡ëuWâëA ûϺI^9õé´^ÝÁ/Og“Šb€’·Œò§Ö(œ·ýžèŒìîüÑ%ýï/e› ›'ÖÂcæÕf.çuïô×o™ž“e –ß‚æ©ìPº²(Öu±•0P(YÌòS”€ é>‰ÝÝÅ'9Žëé±ø”8-“×1HlbᲉL™ÙŠ‘Ih­”ýàŒµÓ3¹µËn+ÍåN´ˆ©€ÅùÏr9«T9e©rñÚõKýòè|ÄTÜ»hÌ)·Ñê·®¤I#“{¾`*ň³áœMd¶€žQoÙY§~Oi}ø´óR¸söGÕª#æqZ~'´Ë†S.kŽÒFq½ N@ íX6Ÿ‰@Vj.W¾¨@g¸E¡áQ3k**-sCùh€Ø!Gù°2ÄmµõáÏu5ídb£A‘\¦êBÎ ÄÇÑ8ô+Köž§½Ø(ýe}{S9ÃÕzv†ÚdŽž |!tWƒÃÎêvßÀ…`÷tUgy¬v±§×¹Å$ðΡAçC'ÖŠ²êÞ'jØvOª"_‰è »û™ pÆ­lÑ9Ùè|\ùv®))÷ìäiŽª#O¼ú2}êis:_§Bõ|>lâ®,o6\ªd{¿ÄĸäXЮ´´fï·€òéê}®C¶uNî ?…[ù\×UœŠ\  \Ýz ,3 ú Tu¢ùI66¤-@ŽNÖB0IµÒUø ,ëÝËUÅ$ž*Pîè8,Úã]m̤6­yKK—ŽP"PB+ÉÛ”U&]†ù¾˜šïˆ7tåVƒXnµ6áOÂw;õ³>‰x“RxBîyŸñʆ´×…G³wüg ¨€ “Åuq²si+´WŠœÓ¤Y„!–y ͧ§[ôëØ'°»|¼ƒ¬EÍy‚±·®Oò“¸#³¯sT0ÔhSr…J(6<µÿ‚^är®\®bg„…¨H‘(´\ýs³TýÑ~Ûv<¤"d,Ð2Ô«Cioë‘ ÿ…iÿ¯MƒsEè$ â Ò”Ž• ENœæ,OwÿpÔ§'=û7@T,=Þù-«ýžLíùZÔIuzÅ WÙÓ%;ó*œ×óíÅ,¸ÒÈžs$/pe•ýÇSéÜxúÀúÈ.ÁußàÑâÆŠ+´7"ÓhÐ|†CòÉžÂë_Dz€óT4âS´$:æó{ÌàðRj³ŸX‹æJ”ž™!&ÉÝíc {kœ°ÕΡüNú}Ráíÿ'@þÐØÉ]L|æW!Z®½ByŽåÀ¢g¹ªæ3œ’ô¤Xý:ö!1-Ú0 ÚâuùK…bBýýÚt®KY¡‘†«Tv©$öH¦º½f¹"]ÿŸ‚ø@{`:‰uä2¤ÑÓël!Ⱥô,×)Œ‘iŠs­Ýé×±y¼âæ&®ÍŸ±tÞ‡0»—Zq¯. PB?wæÎ¨ìÄšÄߨý—!Ù° @‘<:ŒA«æÓƒçBÆã  bŒ‰SŠy»ý7†Næc< ·-j¤R÷`t Ú©ÉáÔ²‹“FÿÂùÿÎ6íù“sø€»+ÒÃBÆ~²³œˆ^#¥¤Ìõßr¨é™ôGÓMªÊŸs-g¾¿¾ú¯œø?² @6<r¸^#P€D\vÈî5RäxÀ¤”þÆSéÇ·ö—÷>¡¿U-|ÿWNûÛ "È2‡=¸Â%/°¤g!\&F›’¥˜èŒßЏì1ÿüBbêë¿rÆÿÛ¤€ \,è Š€Y ` &ò߯îþ—ÍòŸ° @Xd8Yb+\`tüßúoa€$@†ÐÀ@Ù:ÊÉ1 0Éúï b?eüd´Ÿ qÿmúÐß6€ó_0§ÿ’ýèÏnú³Û_€þìö ?»ýèÏnú³Û_€þìö ?»ýèÏnú³Û_€þìö ?»ýèÏnÿß‚Ãi !q!Q‘‘ñþ´X=4žwŒŠÖˆŠ¤Ó"éá´È z0xœ@†›þÁ1¸-ƒÇ%DêQâéÁQ±pw´6<4."„ þ‹üó?T 'èÀ 8^§¥'ºâtôºzD‚&‡#ˆÞàhŸ£Ã£‚þ6˜B¥†D¡é´8:| :0*-×&“táŽÎÛ]4ÌÌàp‡(*M#šÂžP\¼-–gû¬-QáTZìððÆ#öÑÀpšfõoç……DRõÐìC{N  ƒgë¡Á÷†»ÒöÐóCUK­ó×ÁëÐh42O HÚÔ@<ÑŸˆÓ ëêèþûSâ‚)x=´.ÑŸD‡tü©$m‘DÑ&ë’hZ8m •DÑ%à)Z8\ Ö?p;îß¿æ¯Ç‰Ú¿cƒ¤ ÿ;·È£­h2—ÿí1|üÛ"ü?é;:8¡ßöÏ90€D ¤µ(þD2Žê¯‹Ó!ˆx-M›èˆÇáÿÈd-EGH $àt©:º$mmm"‰ä¯K£êj“ÉZ8-m-‘ôÏ9„ÿµðïÀ`¼æ¿¹LÐü7'ƒ‰šïÅß'Ñ?šÌ<‰´à•òÇ9DÐÀéjÈ®8¢¬G"iâ´pDmíßåùäQGO†ÿ“Hí?™,d- )€ CÁáHx]ÿ@]]™€#ýµüýÿˆk¢V˜ÚäE;BÕ ÐÄëPI4<)P—¤E h82íŸäšô{®Iß…FCÓéÑqz[¶ìÞ½[3–F‰¤iFÅm ‰‹‹§Åmùé³­šH÷?J^âïߘ}ìèÆ³ùŽ ‰Óô§„Ói”Èø?fž¨'hH®8v¼Ž ‰'èêjéüŽy"ܘJEÛ¸üdkƒtÐÿ:šÿáÊ¥÷Ÿ¡LFŠ?ÞŸ åÓ!êR DS•H$ø“üµH„?¢H&u( status: locked sharing: 'none' wiki_page_title: ECookBookV1 versions_003: created_on: 2006-07-19 21:00:33 +02:00 name: "2.0" project_id: 1 updated_on: 2006-07-19 21:00:33 +02:00 id: 3 description: Future version effective_date: status: open sharing: 'none' versions_004: created_on: 2006-07-19 21:00:33 +02:00 name: "2.0" project_id: 3 updated_on: 2006-07-19 21:00:33 +02:00 id: 4 description: Future version on subproject effective_date: status: open sharing: 'tree' versions_005: created_on: 2006-07-19 21:00:07 +02:00 name: "Alpha" project_id: 2 updated_on: 2006-07-19 21:00:07 +02:00 id: 5 description: Private Alpha effective_date: 2006-07-01 status: open sharing: 'none' versions_006: created_on: 2006-07-19 21:00:07 +02:00 name: "Private Version of public subproject" project_id: 5 updated_on: 2006-07-19 21:00:07 +02:00 id: 6 description: "Should be done any day now..." effective_date: status: open sharing: 'tree' versions_007: created_on: 2006-07-19 21:00:07 +02:00 name: "Systemwide visible version" project_id: 2 updated_on: 2006-07-19 21:00:07 +02:00 id: 7 description: effective_date: status: open sharing: 'system' redmine-6.0.5/test/fixtures/views/000077500000000000000000000000001500112024600171215ustar00rootroot00000000000000redmine-6.0.5/test/fixtures/views/_partial.html.erb000066400000000000000000000000151500112024600223450ustar00rootroot00000000000000partial html redmine-6.0.5/test/fixtures/watchers.yml000066400000000000000000000004351500112024600203310ustar00rootroot00000000000000--- watchers_001: watchable_type: Issue watchable_id: 2 user_id: 3 watchers_002: watchable_type: Message watchable_id: 1 user_id: 1 watchers_003: watchable_type: Issue watchable_id: 2 user_id: 1 watchers_004: watchable_type: WikiPage watchable_id: 1 user_id: 1 redmine-6.0.5/test/fixtures/wiki_content_versions.yml000066400000000000000000000046051500112024600231410ustar00rootroot00000000000000--- wiki_content_versions_001: updated_on: 2007-03-07 00:08:07 +01:00 page_id: 1 id: 1 version: 1 author_id: 2 comments: Page creation wiki_content_id: 1 compression: "" data: |- h1. CookBook documentation v1 Line from v1 Some [[documentation]] here... wiki_content_versions_002: updated_on: 2007-03-07 00:08:34 +01:00 page_id: 1 id: 2 version: 2 author_id: 1 comments: Small update wiki_content_id: 1 compression: "" data: |- h1. CookBook documentation v2 Line from v1 Some updated [[documentation]] here... wiki_content_versions_003: updated_on: 2007-03-07 00:10:51 +01:00 page_id: 1 id: 3 version: 3 author_id: 1 comments: "" wiki_content_id: 1 compression: "" data: |- h1. CookBook documentation v3 Some updated [[documentation]] here... wiki_content_versions_004: data: |- h1. Another page This is a link to a ticket: #2 updated_on: 2007-03-08 00:18:07 +01:00 page_id: 2 wiki_content_id: 2 id: 4 version: 1 author_id: 1 comments: wiki_content_versions_005: data: |- h1. Title Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sed libero. h2. Heading 1 @WHATEVER@ Maecenas sed elit sit amet mi accumsan vestibulum non nec velit. Proin porta tincidunt lorem, consequat rhoncus dolor fermentum in. Cras ipsum felis, ultrices at porttitor vel, faucibus eu nunc. h2. Heading 2 Morbi facilisis accumsan orci non pharetra. updated_on: 2007-03-08 00:16:07 +01:00 page_id: 11 wiki_content_id: 11 id: 5 version: 2 author_id: 1 comments: wiki_content_versions_006: data: |- h1. Title Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sed libero. h2. Heading 1 @WHATEVER@ Maecenas sed elit sit amet mi accumsan vestibulum non nec velit. Proin porta tincidunt lorem, consequat rhoncus dolor fermentum in. h2. Heading 2 Morbi facilisis accumsan orci non pharetra. updated_on: 2007-03-08 00:18:07 +01:00 page_id: 11 wiki_content_id: 11 id: 6 version: 3 author_id: 1 comments: wiki_content_versions_007: data: |- h1. Page with an inline image This is an inline image: !logo.gif! updated_on: 2007-03-08 00:18:07 +01:00 page_id: 4 wiki_content_id: 4 id: 7 version: 1 author_id: 1 comments: redmine-6.0.5/test/fixtures/wiki_contents.yml000066400000000000000000000051601500112024600213710ustar00rootroot00000000000000--- wiki_contents_001: text: |- h1. CookBook documentation {{child_pages}} Some updated [[documentation]] here with gzipped history updated_on: 2007-03-07 00:10:51 +01:00 page_id: 1 id: 1 version: 3 author_id: 1 comments: Gzip compression activated wiki_contents_002: text: |- h1. Another page This is a link to a ticket: #2 And this is an included page: {{include(Page with an inline image)}} updated_on: 2007-03-08 00:18:07 +01:00 page_id: 2 id: 2 version: 1 author_id: 1 comments: wiki_contents_003: text: |- h1. Start page E-commerce web site start page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 3 id: 3 version: 1 author_id: 1 comments: wiki_contents_004: text: |- h1. Page with an inline image This is an inline image: !logo.gif! updated_on: 2007-03-08 00:18:07 +01:00 page_id: 4 id: 4 version: 1 author_id: 1 comments: wiki_contents_005: text: |- h1. Child page 1 This is a child page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 5 id: 5 version: 1 author_id: 1 comments: wiki_contents_006: text: |- h1. Child page 2 This is a child page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 6 id: 6 version: 1 author_id: 1 comments: wiki_contents_007: text: This is a child page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 7 id: 7 version: 1 author_id: 1 comments: wiki_contents_008: text: This is a parent page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 8 id: 8 version: 1 author_id: 1 comments: wiki_contents_009: text: This is a child page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 9 id: 9 version: 1 author_id: 1 comments: wiki_contents_010: text: Page with cyrillic title updated_on: 2007-03-08 00:18:07 +01:00 page_id: 10 id: 10 version: 1 author_id: 1 comments: wiki_contents_011: text: |- h1. Title Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sed libero. h2. Heading 1 @WHATEVER@ Maecenas sed elit sit amet mi accumsan vestibulum non nec velit. Proin porta tincidunt lorem, consequat rhoncus dolor fermentum in. Cras ipsum felis, ultrices at porttitor vel, faucibus eu nunc. h2. Heading 2 Morbi facilisis accumsan orci non pharetra. updated_on: 2007-03-08 00:18:07 +01:00 page_id: 11 id: 11 version: 3 author_id: 1 comments: wiki_contents_012: text: This is a grandchild page updated_on: 2007-03-08 00:18:07 +01:00 page_id: 12 id: 12 version: 1 author_id: 1 comments: redmine-6.0.5/test/fixtures/wiki_pages.yml000066400000000000000000000031671500112024600206400ustar00rootroot00000000000000--- wiki_pages_001: created_on: 2007-03-07 00:08:07 +01:00 title: CookBook_documentation id: 1 wiki_id: 1 protected: true parent_id: wiki_pages_002: created_on: 2007-03-08 00:18:07 +01:00 title: Another_page id: 2 wiki_id: 1 protected: false parent_id: wiki_pages_003: created_on: 2007-03-08 00:18:07 +01:00 title: Start_page id: 3 wiki_id: 2 protected: false parent_id: wiki_pages_004: created_on: 2007-03-08 00:18:07 +01:00 title: Page_with_an_inline_image id: 4 wiki_id: 1 protected: false parent_id: 1 wiki_pages_005: created_on: 2007-03-08 00:18:07 +01:00 title: Child_1 id: 5 wiki_id: 1 protected: false parent_id: 2 wiki_pages_006: created_on: 2007-03-08 00:18:07 +01:00 title: Child_2 id: 6 wiki_id: 1 protected: false parent_id: 2 wiki_pages_007: created_on: 2007-03-08 00:18:07 +01:00 title: Child_page_1 id: 7 wiki_id: 2 protected: false parent_id: 8 wiki_pages_008: created_on: 2007-03-08 00:18:07 +01:00 title: Parent_page id: 8 wiki_id: 2 protected: false parent_id: wiki_pages_009: created_on: 2007-03-08 00:18:07 +01:00 title: Child_page_2 id: 9 wiki_id: 2 protected: false parent_id: 8 wiki_pages_010: created_on: 2007-03-08 00:18:07 +01:00 title: Этика_менеджмента id: 10 wiki_id: 1 protected: false parent_id: wiki_pages_011: created_on: 2007-03-08 00:18:07 +01:00 title: Page_with_sections id: 11 wiki_id: 1 protected: false parent_id: wiki_pages_012: created_on: 2007-03-08 00:18:07 +01:00 title: Child_1_1 id: 12 wiki_id: 1 protected: false parent_id: 5 redmine-6.0.5/test/fixtures/wikis.yml000066400000000000000000000003451500112024600176370ustar00rootroot00000000000000--- wikis_001: status: 1 start_page: CookBook documentation project_id: 1 id: 1 wikis_002: status: 1 start_page: Start page project_id: 2 id: 2 wikis_005: status: 1 start_page: Wiki project_id: 5 id: 5 redmine-6.0.5/test/fixtures/workflows.yml000066400000000000000000001052551500112024600205540ustar00rootroot00000000000000--- WorkflowTransitions_189: new_status_id: 5 role_id: 1 old_status_id: 2 id: 189 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_001: new_status_id: 2 role_id: 1 old_status_id: 1 id: 1 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_002: new_status_id: 3 role_id: 1 old_status_id: 1 id: 2 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_003: new_status_id: 4 role_id: 1 old_status_id: 1 id: 3 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_110: new_status_id: 6 role_id: 1 old_status_id: 4 id: 110 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_004: new_status_id: 5 role_id: 1 old_status_id: 1 id: 4 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_030: new_status_id: 5 role_id: 1 old_status_id: 6 id: 30 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_111: new_status_id: 1 role_id: 1 old_status_id: 5 id: 111 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_005: new_status_id: 6 role_id: 1 old_status_id: 1 id: 5 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_031: new_status_id: 2 role_id: 2 old_status_id: 1 id: 31 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_112: new_status_id: 2 role_id: 1 old_status_id: 5 id: 112 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_006: new_status_id: 1 role_id: 1 old_status_id: 2 id: 6 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_032: new_status_id: 3 role_id: 2 old_status_id: 1 id: 32 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_113: new_status_id: 3 role_id: 1 old_status_id: 5 id: 113 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_220: new_status_id: 6 role_id: 2 old_status_id: 2 id: 220 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_007: new_status_id: 3 role_id: 1 old_status_id: 2 id: 7 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_033: new_status_id: 4 role_id: 2 old_status_id: 1 id: 33 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_060: new_status_id: 5 role_id: 2 old_status_id: 6 id: 60 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_114: new_status_id: 4 role_id: 1 old_status_id: 5 id: 114 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_140: new_status_id: 6 role_id: 2 old_status_id: 4 id: 140 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_221: new_status_id: 1 role_id: 2 old_status_id: 3 id: 221 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_008: new_status_id: 4 role_id: 1 old_status_id: 2 id: 8 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_034: new_status_id: 5 role_id: 2 old_status_id: 1 id: 34 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_115: new_status_id: 6 role_id: 1 old_status_id: 5 id: 115 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_141: new_status_id: 1 role_id: 2 old_status_id: 5 id: 141 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_222: new_status_id: 2 role_id: 2 old_status_id: 3 id: 222 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_223: new_status_id: 4 role_id: 2 old_status_id: 3 id: 223 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_009: new_status_id: 5 role_id: 1 old_status_id: 2 id: 9 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_035: new_status_id: 6 role_id: 2 old_status_id: 1 id: 35 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_061: new_status_id: 2 role_id: 3 old_status_id: 1 id: 61 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_116: new_status_id: 1 role_id: 1 old_status_id: 6 id: 116 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_142: new_status_id: 2 role_id: 2 old_status_id: 5 id: 142 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_250: new_status_id: 6 role_id: 3 old_status_id: 2 id: 250 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_224: new_status_id: 5 role_id: 2 old_status_id: 3 id: 224 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_036: new_status_id: 1 role_id: 2 old_status_id: 2 id: 36 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_062: new_status_id: 3 role_id: 3 old_status_id: 1 id: 62 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_117: new_status_id: 2 role_id: 1 old_status_id: 6 id: 117 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_143: new_status_id: 3 role_id: 2 old_status_id: 5 id: 143 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_170: new_status_id: 6 role_id: 3 old_status_id: 4 id: 170 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_251: new_status_id: 1 role_id: 3 old_status_id: 3 id: 251 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_225: new_status_id: 6 role_id: 2 old_status_id: 3 id: 225 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_063: new_status_id: 4 role_id: 3 old_status_id: 1 id: 63 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_090: new_status_id: 5 role_id: 3 old_status_id: 6 id: 90 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_118: new_status_id: 3 role_id: 1 old_status_id: 6 id: 118 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_144: new_status_id: 4 role_id: 2 old_status_id: 5 id: 144 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_252: new_status_id: 2 role_id: 3 old_status_id: 3 id: 252 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_226: new_status_id: 1 role_id: 2 old_status_id: 4 id: 226 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_038: new_status_id: 4 role_id: 2 old_status_id: 2 id: 38 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_064: new_status_id: 5 role_id: 3 old_status_id: 1 id: 64 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_091: new_status_id: 2 role_id: 1 old_status_id: 1 id: 91 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_119: new_status_id: 4 role_id: 1 old_status_id: 6 id: 119 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_145: new_status_id: 6 role_id: 2 old_status_id: 5 id: 145 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_171: new_status_id: 1 role_id: 3 old_status_id: 5 id: 171 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_253: new_status_id: 4 role_id: 3 old_status_id: 3 id: 253 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_227: new_status_id: 2 role_id: 2 old_status_id: 4 id: 227 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_039: new_status_id: 5 role_id: 2 old_status_id: 2 id: 39 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_065: new_status_id: 6 role_id: 3 old_status_id: 1 id: 65 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_092: new_status_id: 3 role_id: 1 old_status_id: 1 id: 92 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_146: new_status_id: 1 role_id: 2 old_status_id: 6 id: 146 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_172: new_status_id: 2 role_id: 3 old_status_id: 5 id: 172 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_254: new_status_id: 5 role_id: 3 old_status_id: 3 id: 254 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_228: new_status_id: 3 role_id: 2 old_status_id: 4 id: 228 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_066: new_status_id: 1 role_id: 3 old_status_id: 2 id: 66 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_093: new_status_id: 4 role_id: 1 old_status_id: 1 id: 93 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_147: new_status_id: 2 role_id: 2 old_status_id: 6 id: 147 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_173: new_status_id: 3 role_id: 3 old_status_id: 5 id: 173 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_255: new_status_id: 6 role_id: 3 old_status_id: 3 id: 255 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_229: new_status_id: 5 role_id: 2 old_status_id: 4 id: 229 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_067: new_status_id: 3 role_id: 3 old_status_id: 2 id: 67 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_148: new_status_id: 3 role_id: 2 old_status_id: 6 id: 148 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_174: new_status_id: 4 role_id: 3 old_status_id: 5 id: 174 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_256: new_status_id: 1 role_id: 3 old_status_id: 4 id: 256 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_068: new_status_id: 4 role_id: 3 old_status_id: 2 id: 68 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_094: new_status_id: 5 role_id: 1 old_status_id: 1 id: 94 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_149: new_status_id: 4 role_id: 2 old_status_id: 6 id: 149 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_175: new_status_id: 6 role_id: 3 old_status_id: 5 id: 175 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_257: new_status_id: 2 role_id: 3 old_status_id: 4 id: 257 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_069: new_status_id: 5 role_id: 3 old_status_id: 2 id: 69 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_095: new_status_id: 6 role_id: 1 old_status_id: 1 id: 95 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_176: new_status_id: 1 role_id: 3 old_status_id: 6 id: 176 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_258: new_status_id: 3 role_id: 3 old_status_id: 4 id: 258 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_096: new_status_id: 1 role_id: 1 old_status_id: 2 id: 96 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_177: new_status_id: 2 role_id: 3 old_status_id: 6 id: 177 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_259: new_status_id: 5 role_id: 3 old_status_id: 4 id: 259 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_097: new_status_id: 3 role_id: 1 old_status_id: 2 id: 97 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_178: new_status_id: 3 role_id: 3 old_status_id: 6 id: 178 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_098: new_status_id: 4 role_id: 1 old_status_id: 2 id: 98 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_179: new_status_id: 4 role_id: 3 old_status_id: 6 id: 179 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_099: new_status_id: 5 role_id: 1 old_status_id: 2 id: 99 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_100: new_status_id: 6 role_id: 1 old_status_id: 2 id: 100 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_020: new_status_id: 6 role_id: 1 old_status_id: 4 id: 20 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_101: new_status_id: 1 role_id: 1 old_status_id: 3 id: 101 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_021: new_status_id: 1 role_id: 1 old_status_id: 5 id: 21 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_102: new_status_id: 2 role_id: 1 old_status_id: 3 id: 102 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_210: new_status_id: 5 role_id: 1 old_status_id: 6 id: 210 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_022: new_status_id: 2 role_id: 1 old_status_id: 5 id: 22 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_103: new_status_id: 4 role_id: 1 old_status_id: 3 id: 103 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_023: new_status_id: 3 role_id: 1 old_status_id: 5 id: 23 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_104: new_status_id: 5 role_id: 1 old_status_id: 3 id: 104 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_130: new_status_id: 6 role_id: 2 old_status_id: 2 id: 130 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_211: new_status_id: 2 role_id: 2 old_status_id: 1 id: 211 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_024: new_status_id: 4 role_id: 1 old_status_id: 5 id: 24 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_050: new_status_id: 6 role_id: 2 old_status_id: 4 id: 50 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_105: new_status_id: 6 role_id: 1 old_status_id: 3 id: 105 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_131: new_status_id: 1 role_id: 2 old_status_id: 3 id: 131 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_212: new_status_id: 3 role_id: 2 old_status_id: 1 id: 212 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_025: new_status_id: 6 role_id: 1 old_status_id: 5 id: 25 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_051: new_status_id: 1 role_id: 2 old_status_id: 5 id: 51 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_106: new_status_id: 1 role_id: 1 old_status_id: 4 id: 106 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_132: new_status_id: 2 role_id: 2 old_status_id: 3 id: 132 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_213: new_status_id: 4 role_id: 2 old_status_id: 1 id: 213 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_240: new_status_id: 5 role_id: 2 old_status_id: 6 id: 240 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_026: new_status_id: 1 role_id: 1 old_status_id: 6 id: 26 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_052: new_status_id: 2 role_id: 2 old_status_id: 5 id: 52 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_107: new_status_id: 2 role_id: 1 old_status_id: 4 id: 107 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_133: new_status_id: 4 role_id: 2 old_status_id: 3 id: 133 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_214: new_status_id: 5 role_id: 2 old_status_id: 1 id: 214 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_241: new_status_id: 2 role_id: 3 old_status_id: 1 id: 241 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_027: new_status_id: 2 role_id: 1 old_status_id: 6 id: 27 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_053: new_status_id: 3 role_id: 2 old_status_id: 5 id: 53 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_080: new_status_id: 6 role_id: 3 old_status_id: 4 id: 80 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_108: new_status_id: 3 role_id: 1 old_status_id: 4 id: 108 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_134: new_status_id: 5 role_id: 2 old_status_id: 3 id: 134 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_160: new_status_id: 6 role_id: 3 old_status_id: 2 id: 160 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_215: new_status_id: 6 role_id: 2 old_status_id: 1 id: 215 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_242: new_status_id: 3 role_id: 3 old_status_id: 1 id: 242 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_028: new_status_id: 3 role_id: 1 old_status_id: 6 id: 28 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_054: new_status_id: 4 role_id: 2 old_status_id: 5 id: 54 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_081: new_status_id: 1 role_id: 3 old_status_id: 5 id: 81 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_109: new_status_id: 5 role_id: 1 old_status_id: 4 id: 109 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_135: new_status_id: 6 role_id: 2 old_status_id: 3 id: 135 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_161: new_status_id: 1 role_id: 3 old_status_id: 3 id: 161 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_216: new_status_id: 1 role_id: 2 old_status_id: 2 id: 216 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_243: new_status_id: 4 role_id: 3 old_status_id: 1 id: 243 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_029: new_status_id: 4 role_id: 1 old_status_id: 6 id: 29 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_055: new_status_id: 6 role_id: 2 old_status_id: 5 id: 55 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_082: new_status_id: 2 role_id: 3 old_status_id: 5 id: 82 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_136: new_status_id: 1 role_id: 2 old_status_id: 4 id: 136 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_162: new_status_id: 2 role_id: 3 old_status_id: 3 id: 162 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_217: new_status_id: 3 role_id: 2 old_status_id: 2 id: 217 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_270: new_status_id: 5 role_id: 3 old_status_id: 6 id: 270 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_244: new_status_id: 5 role_id: 3 old_status_id: 1 id: 244 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_056: new_status_id: 1 role_id: 2 old_status_id: 6 id: 56 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_137: new_status_id: 2 role_id: 2 old_status_id: 4 id: 137 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_163: new_status_id: 4 role_id: 3 old_status_id: 3 id: 163 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_190: new_status_id: 6 role_id: 1 old_status_id: 2 id: 190 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_218: new_status_id: 4 role_id: 2 old_status_id: 2 id: 218 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_245: new_status_id: 6 role_id: 3 old_status_id: 1 id: 245 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_057: new_status_id: 2 role_id: 2 old_status_id: 6 id: 57 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_083: new_status_id: 3 role_id: 3 old_status_id: 5 id: 83 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_138: new_status_id: 3 role_id: 2 old_status_id: 4 id: 138 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_164: new_status_id: 5 role_id: 3 old_status_id: 3 id: 164 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_191: new_status_id: 1 role_id: 1 old_status_id: 3 id: 191 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_219: new_status_id: 5 role_id: 2 old_status_id: 2 id: 219 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_246: new_status_id: 1 role_id: 3 old_status_id: 2 id: 246 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_058: new_status_id: 3 role_id: 2 old_status_id: 6 id: 58 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_084: new_status_id: 4 role_id: 3 old_status_id: 5 id: 84 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_139: new_status_id: 5 role_id: 2 old_status_id: 4 id: 139 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_165: new_status_id: 6 role_id: 3 old_status_id: 3 id: 165 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_192: new_status_id: 2 role_id: 1 old_status_id: 3 id: 192 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_247: new_status_id: 3 role_id: 3 old_status_id: 2 id: 247 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_059: new_status_id: 4 role_id: 2 old_status_id: 6 id: 59 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_085: new_status_id: 6 role_id: 3 old_status_id: 5 id: 85 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_166: new_status_id: 1 role_id: 3 old_status_id: 4 id: 166 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_248: new_status_id: 4 role_id: 3 old_status_id: 2 id: 248 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_086: new_status_id: 1 role_id: 3 old_status_id: 6 id: 86 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_167: new_status_id: 2 role_id: 3 old_status_id: 4 id: 167 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_193: new_status_id: 4 role_id: 1 old_status_id: 3 id: 193 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_249: new_status_id: 5 role_id: 3 old_status_id: 2 id: 249 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_087: new_status_id: 2 role_id: 3 old_status_id: 6 id: 87 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_168: new_status_id: 3 role_id: 3 old_status_id: 4 id: 168 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_194: new_status_id: 5 role_id: 1 old_status_id: 3 id: 194 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_088: new_status_id: 3 role_id: 3 old_status_id: 6 id: 88 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_169: new_status_id: 5 role_id: 3 old_status_id: 4 id: 169 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_195: new_status_id: 6 role_id: 1 old_status_id: 3 id: 195 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_089: new_status_id: 4 role_id: 3 old_status_id: 6 id: 89 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_196: new_status_id: 1 role_id: 1 old_status_id: 4 id: 196 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_197: new_status_id: 2 role_id: 1 old_status_id: 4 id: 197 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_198: new_status_id: 3 role_id: 1 old_status_id: 4 id: 198 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_199: new_status_id: 5 role_id: 1 old_status_id: 4 id: 199 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_010: new_status_id: 6 role_id: 1 old_status_id: 2 id: 10 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_011: new_status_id: 1 role_id: 1 old_status_id: 3 id: 11 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_012: new_status_id: 2 role_id: 1 old_status_id: 3 id: 12 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_200: new_status_id: 6 role_id: 1 old_status_id: 4 id: 200 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_013: new_status_id: 4 role_id: 1 old_status_id: 3 id: 13 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_120: new_status_id: 5 role_id: 1 old_status_id: 6 id: 120 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_201: new_status_id: 1 role_id: 1 old_status_id: 5 id: 201 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_040: new_status_id: 6 role_id: 2 old_status_id: 2 id: 40 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_121: new_status_id: 2 role_id: 2 old_status_id: 1 id: 121 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_202: new_status_id: 2 role_id: 1 old_status_id: 5 id: 202 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_014: new_status_id: 5 role_id: 1 old_status_id: 3 id: 14 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_041: new_status_id: 1 role_id: 2 old_status_id: 3 id: 41 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_122: new_status_id: 3 role_id: 2 old_status_id: 1 id: 122 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_203: new_status_id: 3 role_id: 1 old_status_id: 5 id: 203 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_015: new_status_id: 6 role_id: 1 old_status_id: 3 id: 15 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_230: new_status_id: 6 role_id: 2 old_status_id: 4 id: 230 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_123: new_status_id: 4 role_id: 2 old_status_id: 1 id: 123 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_204: new_status_id: 4 role_id: 1 old_status_id: 5 id: 204 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_016: new_status_id: 1 role_id: 1 old_status_id: 4 id: 16 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_042: new_status_id: 2 role_id: 2 old_status_id: 3 id: 42 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_231: new_status_id: 1 role_id: 2 old_status_id: 5 id: 231 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_070: new_status_id: 6 role_id: 3 old_status_id: 2 id: 70 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_124: new_status_id: 5 role_id: 2 old_status_id: 1 id: 124 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_150: new_status_id: 5 role_id: 2 old_status_id: 6 id: 150 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_205: new_status_id: 6 role_id: 1 old_status_id: 5 id: 205 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_017: new_status_id: 2 role_id: 1 old_status_id: 4 id: 17 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_043: new_status_id: 4 role_id: 2 old_status_id: 3 id: 43 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_232: new_status_id: 2 role_id: 2 old_status_id: 5 id: 232 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_125: new_status_id: 6 role_id: 2 old_status_id: 1 id: 125 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_151: new_status_id: 2 role_id: 3 old_status_id: 1 id: 151 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_206: new_status_id: 1 role_id: 1 old_status_id: 6 id: 206 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_018: new_status_id: 3 role_id: 1 old_status_id: 4 id: 18 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_044: new_status_id: 5 role_id: 2 old_status_id: 3 id: 44 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_071: new_status_id: 1 role_id: 3 old_status_id: 3 id: 71 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_233: new_status_id: 3 role_id: 2 old_status_id: 5 id: 233 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_126: new_status_id: 1 role_id: 2 old_status_id: 2 id: 126 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_152: new_status_id: 3 role_id: 3 old_status_id: 1 id: 152 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_207: new_status_id: 2 role_id: 1 old_status_id: 6 id: 207 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_019: new_status_id: 5 role_id: 1 old_status_id: 4 id: 19 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_045: new_status_id: 6 role_id: 2 old_status_id: 3 id: 45 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_260: new_status_id: 6 role_id: 3 old_status_id: 4 id: 260 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_234: new_status_id: 4 role_id: 2 old_status_id: 5 id: 234 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_127: new_status_id: 3 role_id: 2 old_status_id: 2 id: 127 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_153: new_status_id: 4 role_id: 3 old_status_id: 1 id: 153 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_180: new_status_id: 5 role_id: 3 old_status_id: 6 id: 180 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_208: new_status_id: 3 role_id: 1 old_status_id: 6 id: 208 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_046: new_status_id: 1 role_id: 2 old_status_id: 4 id: 46 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_072: new_status_id: 2 role_id: 3 old_status_id: 3 id: 72 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_261: new_status_id: 1 role_id: 3 old_status_id: 5 id: 261 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_235: new_status_id: 6 role_id: 2 old_status_id: 5 id: 235 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_154: new_status_id: 5 role_id: 3 old_status_id: 1 id: 154 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_181: new_status_id: 2 role_id: 1 old_status_id: 1 id: 181 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_209: new_status_id: 4 role_id: 1 old_status_id: 6 id: 209 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_047: new_status_id: 2 role_id: 2 old_status_id: 4 id: 47 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_073: new_status_id: 4 role_id: 3 old_status_id: 3 id: 73 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_128: new_status_id: 4 role_id: 2 old_status_id: 2 id: 128 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_262: new_status_id: 2 role_id: 3 old_status_id: 5 id: 262 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_236: new_status_id: 1 role_id: 2 old_status_id: 6 id: 236 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_155: new_status_id: 6 role_id: 3 old_status_id: 1 id: 155 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_048: new_status_id: 3 role_id: 2 old_status_id: 4 id: 48 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_074: new_status_id: 5 role_id: 3 old_status_id: 3 id: 74 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_129: new_status_id: 5 role_id: 2 old_status_id: 2 id: 129 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_263: new_status_id: 3 role_id: 3 old_status_id: 5 id: 263 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_237: new_status_id: 2 role_id: 2 old_status_id: 6 id: 237 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_182: new_status_id: 3 role_id: 1 old_status_id: 1 id: 182 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_049: new_status_id: 5 role_id: 2 old_status_id: 4 id: 49 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_075: new_status_id: 6 role_id: 3 old_status_id: 3 id: 75 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_156: new_status_id: 1 role_id: 3 old_status_id: 2 id: 156 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_264: new_status_id: 4 role_id: 3 old_status_id: 5 id: 264 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_238: new_status_id: 3 role_id: 2 old_status_id: 6 id: 238 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_183: new_status_id: 4 role_id: 1 old_status_id: 1 id: 183 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_076: new_status_id: 1 role_id: 3 old_status_id: 4 id: 76 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_157: new_status_id: 3 role_id: 3 old_status_id: 2 id: 157 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_265: new_status_id: 6 role_id: 3 old_status_id: 5 id: 265 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_239: new_status_id: 4 role_id: 2 old_status_id: 6 id: 239 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_077: new_status_id: 2 role_id: 3 old_status_id: 4 id: 77 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_158: new_status_id: 4 role_id: 3 old_status_id: 2 id: 158 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_184: new_status_id: 5 role_id: 1 old_status_id: 1 id: 184 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_266: new_status_id: 1 role_id: 3 old_status_id: 6 id: 266 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_078: new_status_id: 3 role_id: 3 old_status_id: 4 id: 78 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_159: new_status_id: 5 role_id: 3 old_status_id: 2 id: 159 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_185: new_status_id: 6 role_id: 1 old_status_id: 1 id: 185 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_267: new_status_id: 2 role_id: 3 old_status_id: 6 id: 267 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_079: new_status_id: 5 role_id: 3 old_status_id: 4 id: 79 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_186: new_status_id: 1 role_id: 1 old_status_id: 2 id: 186 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_268: new_status_id: 3 role_id: 3 old_status_id: 6 id: 268 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_187: new_status_id: 3 role_id: 1 old_status_id: 2 id: 187 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_269: new_status_id: 4 role_id: 3 old_status_id: 6 id: 269 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_188: new_status_id: 4 role_id: 1 old_status_id: 2 id: 188 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_271: new_status_id: 3 role_id: 1 old_status_id: 0 id: 271 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_272: new_status_id: 3 role_id: 2 old_status_id: 0 id: 272 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_273: new_status_id: 2 role_id: 1 old_status_id: 0 id: 273 tracker_id: 3 type: WorkflowTransition WorkflowTransitions_274: new_status_id: 2 role_id: 1 old_status_id: 0 id: 274 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_275: new_status_id: 1 role_id: 1 old_status_id: 0 id: 275 tracker_id: 1 type: WorkflowTransition WorkflowTransitions_276: new_status_id: 1 role_id: 1 old_status_id: 0 id: 276 tracker_id: 2 type: WorkflowTransition WorkflowTransitions_277: new_status_id: 1 role_id: 2 old_status_id: 0 id: 277 tracker_id: 1 type: WorkflowTransition redmine-6.0.5/test/functional/000077500000000000000000000000001500112024600162555ustar00rootroot00000000000000redmine-6.0.5/test/functional/account_controller_test.rb000066400000000000000000000467471500112024600235620ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AccountControllerTest < Redmine::ControllerTest def setup User.current = nil end def test_get_login get :login assert_response :success assert_select 'input[name=username][autocomplete=username]' assert_select 'input[name=password][autocomplete=current-password]' end def test_get_login_while_logged_in_should_redirect_to_back_url_if_present @request.session[:user_id] = 2 @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1' get( :login, :params => { :back_url => 'http://test.host/issues/show/1' } ) assert_redirected_to '/issues/show/1' assert_equal 2, @request.session[:user_id] end def test_get_login_while_logged_in_should_redirect_to_referer_without_back_url @request.session[:user_id] = 2 @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1' get :login assert_redirected_to '/issues/show/1' assert_equal 2, @request.session[:user_id] end def test_get_login_while_logged_in_should_redirect_to_home_by_default @request.session[:user_id] = 2 get :login assert_redirected_to '/' assert_equal 2, @request.session[:user_id] end def test_login_should_redirect_to_back_url_param # request.uri is "test.host" in test environment back_urls = [ 'http://test.host/issues/show/1', 'http://test.host/', '/' ] back_urls.each do |back_url| post( :login, :params => { :username => 'jsmith', :password => 'jsmith', :back_url => back_url } ) assert_redirected_to back_url end end def test_login_with_suburi_should_redirect_to_back_url_param @relative_url_root = Redmine::Utils.relative_url_root Redmine::Utils.relative_url_root = '/redmine' back_urls = [ 'http://test.host/redmine/issues/show/1', '/redmine' ] back_urls.each do |back_url| post( :login, :params => { :username => 'jsmith', :password => 'jsmith', :back_url => back_url } ) assert_redirected_to back_url end ensure Redmine::Utils.relative_url_root = @relative_url_root end def test_login_should_not_redirect_to_another_host back_urls = [ 'http://test.foo/fake', '//test.foo/fake' ] back_urls.each do |back_url| post( :login, :params => { :username => 'jsmith', :password => 'jsmith', :back_url => back_url } ) assert_redirected_to '/my/page' end end def test_login_with_suburi_should_not_redirect_to_another_suburi @relative_url_root = Redmine::Utils.relative_url_root Redmine::Utils.relative_url_root = '/redmine' back_urls = [ 'http://test.host/', 'http://test.host/fake', 'http://test.host/fake/issues', 'http://test.host/redmine/../fake', 'http://test.host/redmine/../fake/issues', 'http://test.host/redmine/%2e%2e/fake', '//test.foo/fake', 'http://test.host//fake', 'http://test.host/\n//fake', '//bar@test.foo', '//test.foo', '////test.foo', '@test.foo', 'fake@test.foo', '.test.foo' ] back_urls.each do |back_url| post( :login, :params => { :username => 'jsmith', :password => 'jsmith', :back_url => back_url } ) assert_redirected_to '/my/page' end ensure Redmine::Utils.relative_url_root = @relative_url_root end def test_login_with_wrong_password post( :login, :params => { :username => 'admin', :password => 'bad' } ) assert_response :success assert_select 'div.flash.error', :text => /Invalid user or password/ assert_select 'input[name=username][value=admin]' assert_select 'input[name=password]' assert_select 'input[name=password][value]', 0 end def test_login_with_locked_account_should_fail User.find(2).update_attribute :status, User::STATUS_LOCKED post( :login, :params => { :username => 'jsmith', :password => 'jsmith' } ) assert_redirected_to '/login' assert_include 'locked', flash[:error] assert_nil @request.session[:user_id] end def test_login_as_registered_user_with_manual_activation_should_inform_user User.find(2).update_attribute :status, User::STATUS_REGISTERED with_settings :self_registration => '2', :default_language => 'en' do post( :login, :params => { :username => 'jsmith', :password => 'jsmith' } ) assert_redirected_to '/login' assert_include 'pending administrator approval', flash[:error] end end def test_login_as_registered_user_with_email_activation_should_propose_new_activation_email User.find(2).update_attribute :status, User::STATUS_REGISTERED with_settings :self_registration => '1', :default_language => 'en' do post( :login, :params => { :username => 'jsmith', :password => 'jsmith' } ) assert_redirected_to '/login' assert_equal 2, @request.session[:registered_user_id] assert_include 'new activation email', flash[:error] end end def test_login_should_rescue_auth_source_exception source = AuthSource.create!(:name => 'Test') User.find(2).update_attribute :auth_source_id, source.id AuthSource.any_instance.stubs(:authenticate).raises(AuthSourceException.new("Something wrong")) post( :login, :params => { :username => 'jsmith', :password => 'jsmith' } ) assert_response :internal_server_error assert_select_error /Something wrong/ end def test_login_should_reset_session @controller.expects(:reset_session).once post( :login, :params => { :username => 'jsmith', :password => 'jsmith' } ) assert_response :found end def test_login_should_strip_whitespaces_from_user_name post( :login, :params => { :username => ' jsmith ', :password => 'jsmith' } ) assert_response :found assert_equal 2, @request.session[:user_id] end def test_get_logout_should_not_logout @request.session[:user_id] = 2 get :logout assert_response :success assert_equal 2, @request.session[:user_id] end def test_get_logout_with_anonymous_should_redirect get :logout assert_redirected_to '/' end def test_logout @request.session[:user_id] = 2 post :logout assert_redirected_to '/' assert_nil @request.session[:user_id] end def test_logout_should_reset_session @controller.expects(:reset_session).once @request.session[:user_id] = 2 post :logout assert_response :found end def test_get_register_with_registration_on with_settings :self_registration => '3' do get :register assert_response :success assert_select 'input[name=?]', 'user[password]' assert_select 'input[name=?]', 'user[password_confirmation]' end end def test_get_register_should_detect_user_language with_settings :self_registration => '3' do @request.env['HTTP_ACCEPT_LANGUAGE'] = 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' get :register assert_response :success assert_select 'select[name=?]', 'user[language]' do assert_select 'option[value=fr][selected=selected]' end end end def test_get_register_with_registration_off_should_redirect with_settings :self_registration => '0' do get :register assert_redirected_to '/' end end def test_get_register_should_show_hide_mail_preference get :register assert_select 'input[name=?][checked=checked]', 'pref[hide_mail]' end def test_get_register_should_show_hide_mail_preference_with_setting_turned_off with_settings :default_users_hide_mail => '0' do get :register assert_select 'input[name=?]:not([checked=checked])', 'pref[hide_mail]' end end # See integration/account_test.rb for the full test def test_post_register_with_registration_on with_settings :self_registration => '3' do assert_difference 'User.count' do post( :register, :params => { :user => { :login => 'register', :password => 'secret123', :password_confirmation => 'secret123', :firstname => 'John', :lastname => 'Doe', :mail => 'register@example.com' } } ) assert_redirected_to '/my/account' end user = User.order('id DESC').first assert_equal 'register', user.login assert_equal 'John', user.firstname assert_equal 'Doe', user.lastname assert_equal 'register@example.com', user.mail assert user.check_password?('secret123') assert user.active? end end def test_post_register_with_registration_off_should_redirect with_settings :self_registration => '0' do assert_no_difference 'User.count' do post( :register, :params => { :user => { :login => 'register', :password => 'test', :password_confirmation => 'test', :firstname => 'John', :lastname => 'Doe', :mail => 'register@example.com' } } ) assert_redirected_to '/' end end end def test_post_register_should_create_user_with_hide_mail_preference with_settings :default_users_hide_mail => '0' do user = new_record(User) do post( :register, :params => { :user => { :login => 'register', :password => 'secret123', :password_confirmation => 'secret123', :firstname => 'John', :lastname => 'Doe', :mail => 'register@example.com' }, :pref => { :hide_mail => '1' } } ) end assert_equal true, user.pref.hide_mail end end def test_get_lost_password_should_display_lost_password_form get :lost_password assert_response :success assert_select 'input[name=mail]' end def test_lost_password_for_active_user_should_create_a_token Token.delete_all ActionMailer::Base.deliveries.clear assert_difference 'ActionMailer::Base.deliveries.size' do assert_difference 'Token.count' do post( :lost_password, :params => { :mail => 'JSmith@somenet.foo' } ) assert_redirected_to '/login' end end token = Token.order('id DESC').first assert_equal User.find(2), token.user assert_equal 'recovery', token.action assert_select_email do assert_select "a[href=?]", "http://localhost:3000/account/lost_password?token=#{token.value}" end end def test_lost_password_with_whitespace_should_send_email_to_the_address Token.delete_all assert_difference 'ActionMailer::Base.deliveries.size' do assert_difference 'Token.count' do post( :lost_password, :params => { :mail => ' JSmith@somenet.foo ' } ) assert_redirected_to '/login' end end mail = ActionMailer::Base.deliveries.last assert_equal ['jsmith@somenet.foo'], mail.to end def test_lost_password_using_additional_email_address_should_send_email_to_the_address EmailAddress.create!(:user_id => 2, :address => 'anotherAddress@foo.bar') Token.delete_all assert_difference 'ActionMailer::Base.deliveries.size' do assert_difference 'Token.count' do post( :lost_password, :params => { :mail => 'ANOTHERaddress@foo.bar' } ) assert_redirected_to '/login' end end mail = ActionMailer::Base.deliveries.last assert_equal ['anotherAddress@foo.bar'], mail.to end def test_lost_password_for_unknown_user_should_fail Token.delete_all assert_no_difference 'Token.count' do post( :lost_password, :params => { :mail => 'invalid@somenet.foo' } ) assert_response :success assert_equal I18n.t(:notice_account_lost_email_sent), flash[:notice] end end def test_lost_password_for_non_active_user_should_fail Token.delete_all assert User.find(2).lock! assert_no_difference 'Token.count' do post( :lost_password, :params => { :mail => 'JSmith@somenet.foo' } ) assert_redirected_to '/account/lost_password' end end def test_lost_password_for_user_who_cannot_change_password_should_fail User.any_instance.stubs(:change_password_allowed?).returns(false) assert_no_difference 'Token.count' do post( :lost_password, :params => { :mail => 'JSmith@somenet.foo' } ) assert_response :success end end def test_get_lost_password_with_token_should_redirect_with_token_in_session user = User.find(2) token = Token.create!(:action => 'recovery', :user => user) get(:lost_password, :params => {:token => token.value}) assert_redirected_to '/account/lost_password' assert_equal token.value, request.session[:password_recovery_token] end def test_get_lost_password_with_token_in_session_should_display_the_password_recovery_form user = User.find(2) token = Token.create!(:action => 'recovery', :user => user) request.session[:password_recovery_token] = token.value get :lost_password assert_response :success assert_select 'input[type=hidden][name=token][value=?]', token.value end def test_get_lost_password_with_invalid_token_should_redirect get(:lost_password, :params => {:token => "abcdef"}) assert_redirected_to '/' end def test_post_lost_password_with_token_should_change_the_user_password ActionMailer::Base.deliveries.clear user = User.find(2) token = Token.create!(:action => 'recovery', :user => user) post( :lost_password, :params => { :token => token.value, :new_password => 'newpass123', :new_password_confirmation => 'newpass123' } ) assert_redirected_to '/login' user.reload assert user.check_password?('newpass123') assert_nil Token.find_by_id(token.id), "Token was not deleted" assert_not_nil ActionMailer::Base.deliveries.last assert_select_email do assert_select 'a[href^=?]', 'http://localhost:3000/my/password', :text => 'Change password' end end def test_post_lost_password_with_token_for_non_active_user_should_fail user = User.find(2) token = Token.create!(:action => 'recovery', :user => user) user.lock! post( :lost_password, :params => { :token => token.value, :new_password => 'newpass123', :new_password_confirmation => 'newpass123' } ) assert_redirected_to '/' assert ! user.check_password?('newpass123') end def test_post_lost_password_with_token_and_password_confirmation_failure_should_redisplay_the_form user = User.find(2) token = Token.create!(:action => 'recovery', :user => user) post( :lost_password, :params => { :token => token.value, :new_password => 'newpass', :new_password_confirmation => 'wrongpass' } ) assert_response :success assert_not_nil Token.find_by_id(token.id), "Token was deleted" assert_select 'input[type=hidden][name=token][value=?]', token.value end def test_post_lost_password_with_token_should_not_accept_same_password_if_user_must_change_password user = User.find(2) user.password = "originalpassword" user.must_change_passwd = true user.save! token = Token.create!(:action => 'recovery', :user => user) post( :lost_password, :params => { :token => token.value, :new_password => 'originalpassword', :new_password_confirmation => 'originalpassword' } ) assert_response :success assert_not_nil Token.find_by_id(token.id), "Token was deleted" assert_select '.flash', :text => /The new password must be different/ assert_select 'input[type=hidden][name=token][value=?]', token.value end def test_post_lost_password_with_token_should_reset_must_change_password user = User.find(2) user.password = "originalpassword" user.must_change_passwd = true user.save! token = Token.create!(:action => 'recovery', :user => user) post( :lost_password, :params => { :token => token.value, :new_password => 'newpassword', :new_password_confirmation => 'newpassword' } ) assert_redirected_to '/login' assert_equal false, user.reload.must_change_passwd end def test_post_lost_password_with_invalid_token_should_redirect post( :lost_password, :params => { :token => "abcdef", :new_password => 'newpass', :new_password_confirmation => 'newpass' } ) assert_redirected_to '/' end def test_activation_email_should_send_an_activation_email User.find(2).update_attribute :status, User::STATUS_REGISTERED @request.session[:registered_user_id] = 2 with_settings :self_registration => '1' do assert_difference 'ActionMailer::Base.deliveries.size' do get :activation_email assert_redirected_to '/login' end end end def test_activation_email_without_session_data_should_fail User.find(2).update_attribute :status, User::STATUS_REGISTERED with_settings :self_registration => '1' do assert_no_difference 'ActionMailer::Base.deliveries.size' do get :activation_email assert_redirected_to '/' end end end def test_validate_back_url request.host = 'example.com' assert_equal '/admin', @controller.send(:validate_back_url, 'http://example.com/admin') assert_equal '/admin', @controller.send(:validate_back_url, 'http://dlopper:foo@example.com/admin') assert_equal '/issues?query_id=1#top', @controller.send(:validate_back_url, 'http://example.com/issues?query_id=1#top') assert_equal false, @controller.send(:validate_back_url, 'http://invalid.example.com/issues') end def test_validate_back_url_with_port request.host = 'example.com:3000' assert_equal '/admin', @controller.send(:validate_back_url, 'http://example.com:3000/admin') assert_equal '/admin', @controller.send(:validate_back_url, 'http://dlopper:foo@example.com:3000/admin') assert_equal '/issues?query_id=1#top', @controller.send(:validate_back_url, 'http://example.com:3000/issues?query_id=1#top') assert_equal false, @controller.send(:validate_back_url, 'http://invalid.example.com:3000/issues') end end redmine-6.0.5/test/functional/activities_controller_test.rb000066400000000000000000000202161500112024600242510ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class ActivitiesControllerTest < Redmine::ControllerTest def test_project_index get( :index, :params => { :id => 1, :with_subprojects => 0 } ) assert_response :success assert_select 'h3', :text => /#{2.days.ago.to_date.day}/ assert_select 'dl dt.issue-edit a', :text => /(#{IssueStatus.find(2).name})/ end def test_index_subproject_checkbox_should_check_descendants_visibility @request.session[:user_id] = 2 get( :index, :params => { :id => 5, } ) assert_response :success assert_select '#sidebar input#with_subprojects' project = Project.find(6) project.is_public = false project.save get( :index, :params => { :id => 5, } ) assert_response :success assert_select '#sidebar input#with_subprojects', :count => 0 end def test_project_index_with_invalid_project_id_should_respond_404 get(:index, :params => {:id => 299}) assert_response :not_found end def test_previous_project_index @request.session[:user_id] = 1 get( :index, :params => { :id => 1, :from => 2.days.ago.to_date } ) assert_response :success assert_select 'h3', :text => /#{User.current.time_to_date(3.days.ago).day}/ assert_select 'dl dt.issue a', :text => /Cannot print recipes/ end def test_global_index @request.session[:user_id] = 1 get :index assert_response :success i5 = Issue.find(5) d5 = User.find(1).time_to_date(i5.created_on) assert_select 'h3', :text => /#{d5.day}/ assert_select 'dl dt.issue a', :text => /Subproject issue/ end def test_user_index @request.session[:user_id] = 1 get( :index, :params => { :user_id => 2 } ) assert_response :success assert_select 'h2 a[href="/users/2"]', :text => 'John Smith' assert_select '#sidebar select#user_id option[value="2"][selected=selected]' i1 = Issue.find(1) d1 = User.find(1).time_to_date(i1.created_on) assert_select 'h3', :text => /#{d1.day}/ assert_select 'dl dt.issue a', :text => /Cannot print recipes/ end def test_user_index_with_invalid_user_id_should_respond_404 get( :index, :params => { :user_id => 299 } ) assert_response :not_found end def test_user_index_with_non_visible_user_id_should_respond_404 Role.anonymous.update! :users_visibility => 'members_of_visible_projects' user = User.generate! @request.session[:user_id] = nil get :index, :params => { :user_id => user.id } assert_response :not_found end def test_index_atom_feed get( :index, :params => { :format => 'atom', :with_subprojects => 0 } ) assert_response :success assert_select 'feed' do assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?with_subprojects=0' assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?with_subprojects=0' assert_select 'entry' do assert_select 'link[href=?]', 'http://test.host/issues/11' end end end def test_index_atom_feed_should_respect_feeds_limit_setting with_settings :feeds_limit => '20' do get( :index, :params => { :format => 'atom' } ) end assert_response :success assert_select 'feed' do assert_select 'entry', :count => 20 end end def test_index_atom_feed_with_explicit_selection get( :index, :params => { :format => 'atom', :with_subprojects => 0, :show_changesets => 1, :show_documents => 1, :show_files => 1, :show_issues => 1, :show_messages => 1, :show_news => 1, :show_time_entries => 1, :show_wiki_edits => 1 } ) assert_response :success assert_select 'feed' do assert_select 'link[rel=self][href=?]', 'http://test.host/activity.atom?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0' assert_select 'link[rel=alternate][href=?]', 'http://test.host/activity?show_changesets=1&show_documents=1&show_files=1&show_issues=1&show_messages=1&show_news=1&show_time_entries=1&show_wiki_edits=1&with_subprojects=0' assert_select 'entry' do assert_select 'link[href=?]', 'http://test.host/issues/11' end end end def test_index_atom_feed_with_one_item_type with_settings :default_language => 'en' do get( :index, :params => { :format => 'atom', :show_issues => '1' } ) assert_response :success assert_select 'title', :text => /Issues/ end end def test_index_atom_feed_with_user get( :index, :params => { :user_id => 2, :format => 'atom' } ) assert_response :success assert_select 'title', :text => "Redmine: #{User.find(2).name}" end def test_index_atom_feed_with_subprojects get( :index, :params => { :format => 'atom', :id => 'ecookbook', :with_subprojects => 1, :show_issues => 1 } ) assert_response :success assert_select 'feed' do # eCookbook assert_select 'title', text: 'Bug #1: Cannot print recipes' # eCookbook Subproject 1 assert_select 'title', text: 'eCookbook Subproject 1 - Bug #5 (New): Subproject issue' end end def test_index_should_show_private_notes_with_permission_only journal = Journal.create!(:journalized => Issue.find(2), :notes => 'Private notes', :private_notes => true) @request.session[:user_id] = 2 get :index assert_response :success assert_select 'dl', :text => /Private notes/ Role.find(1).remove_permission! :view_private_notes get :index assert_response :success assert_select 'dl', :text => /Private notes/, :count => 0 end def test_index_with_submitted_scope_should_save_as_preference @request.session[:user_id] = 2 get( :index, :params => { :show_issues => '1', :show_messages => '1', :submit => 'Apply' } ) assert_response :success assert_equal %w(issues messages), User.find(2).pref.activity_scope.sort end def test_index_scope_should_default_to_user_preference pref = User.find(2).pref pref.activity_scope = %w(issues news) pref.save! @request.session[:user_id] = 2 get :index assert_response :success assert_select '#activity_scope_form' do assert_select 'input[checked=checked]', 2 assert_select 'input[name=show_issues][checked=checked]' assert_select 'input[name=show_news][checked=checked]' end end def test_index_should_not_show_next_page_link @request.session[:user_id] = 2 get :index assert_response :success assert_select '.pagination a', :text => /Previous/ assert_select '.pagination a', :text => /Next/, :count => 0 end def test_index_up_to_yesterday_should_show_next_page_link @request.session[:user_id] = 2 get( :index, :params => { :from => (User.find(2).today - 1) } ) assert_response :success assert_select '.pagination a', :text => /Previous/ assert_select '.pagination a', :text => /Next/ end end redmine-6.0.5/test/functional/admin_controller_test.rb000066400000000000000000000126461500112024600232050ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AdminControllerTest < Redmine::ControllerTest def setup User.current = nil @request.session[:user_id] = 1 # admin end def test_index get :index assert_select 'div.nodata', 0 end def test_index_with_no_configuration_data delete_configuration_data get :index assert_select 'div.nodata' end def test_projects_should_show_only_active_projects_by_default p = Project.find(1) p.update_column :status, 5 get :projects assert_response :success assert_select 'tr.project.closed', 0 assert_select 'tr.project', 5 assert_select 'tr.project td.name', :text => 'OnlineStore' assert_select 'tr.project td.name', :text => p.name, :count => 0 end def test_projects_with_status_filter p = Project.find(1) p.update_column :status, 5 get( :projects, :params => { 'set_filter' => '1', 'f' => ['status'], 'op' => {'status' => '='}, 'v' => {'status' => ['5']} } ) assert_response :success assert_select 'tr.project', 1 assert_select 'tr.project td.name a', :text => p.name end def test_projects_with_name_filter get( :projects, :params => { 'set_filter' => '1', 'f' => ['status', 'name'], 'op' => {'status' => '=', 'name' => '~'}, 'v' => {'status' => ['1'], 'name' => ['store']} } ) assert_response :success assert_select 'tr.project td.name', :text => 'OnlineStore' assert_select 'tr.project', 1 end def test_load_default_configuration_data delete_configuration_data post( :default_configuration, :params => { :lang => 'fr' } ) assert_response :redirect assert_nil flash[:error] assert IssueStatus.find_by_name('Nouveau') end def test_load_default_configuration_data_should_rescue_error delete_configuration_data Redmine::DefaultData::Loader.stubs(:load).raises(StandardError.new("Something went wrong")) post( :default_configuration, :params => { :lang => 'fr' } ) assert_response :redirect assert_not_nil flash[:error] assert_match /Something went wrong/, flash[:error] end def test_test_email user = User.find(1) user.pref.no_self_notified = '1' user.pref.save! ActionMailer::Base.deliveries.clear post :test_email assert_redirected_to '/settings?tab=notifications' mail = ActionMailer::Base.deliveries.last assert_not_nil mail user = User.find(1) assert_equal [user.mail], mail.to end def test_test_email_failure_should_display_the_error Mailer.stubs(:test_email).raises(StandardError, 'Some error message') post :test_email assert_redirected_to '/settings?tab=notifications' assert_match /Some error message/, flash[:error] end def test_no_plugins Redmine::Plugin.stubs(:registered_plugins).returns({}) get :plugins assert_response :success assert_select '.nodata' end def test_plugins # Register a few plugins Redmine::Plugin.register :foo do name 'Foo plugin' author 'John Smith' description 'This is a test plugin' version '0.0.1' settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'foo/settings' directory 'test/fixtures/plugins/foo_plugin' end Redmine::Plugin.register :other do directory 'test/fixtures/plugins/other_plugin' end get :plugins assert_response :success assert_select 'th:nth-of-type(1)', :text => 'Name / Description' assert_select 'th:nth-of-type(2)', :text => 'Author' assert_select 'th:nth-of-type(3)', :text => 'Version' assert_select 'tr#plugin-foo' do assert_select 'td span.name', :text => 'Foo plugin' assert_select 'td.configure a[href="/settings/plugin/foo"]' end assert_select 'tr#plugin-other' do assert_select 'td span.name', :text => 'Other' assert_select 'td.configure a', 0 end end def test_info get :info assert_response :success end def test_admin_menu_plugin_extension Redmine::MenuManager.map :admin_menu do |menu| menu.push :test_admin_menu_plugin_extension, '/foo/bar', :caption => 'Test' end get :index assert_response :success assert_select 'div#admin-menu a[href="/foo/bar"]', :text => 'Test' Redmine::MenuManager.map :admin_menu do |menu| menu.delete :test_admin_menu_plugin_extension end end private def delete_configuration_data Role.where('builtin = 0').delete_all Tracker.delete_all IssueStatus.delete_all Enumeration.delete_all Query.delete_all end end redmine-6.0.5/test/functional/attachments_controller_test.rb000066400000000000000000000535601500112024600244300ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AttachmentsControllerTest < Redmine::ControllerTest def setup User.current = nil set_fixtures_attachments_directory end def teardown set_tmp_attachments_directory end def test_show_diff ['inline', 'sbs'].each do |dt| # 060719210727_changeset_utf8.diff get( :show, :params => { :id => 14, :type => dt } ) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'th.filename', :text => /issues_controller.rb\t\(révision 1484\)/ assert_select 'td.line-code', :text => /Demande créée avec succès/ end end def test_show_diff_replace_cannot_convert_content with_settings :repositories_encodings => 'UTF-8' do ['inline', 'sbs'].each do |dt| # 060719210727_changeset_iso8859-1.diff get( :show, :params => { :id => 5, :type => dt } ) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'th.filename', :text => /issues_controller.rb\t\(r\?vision 1484\)/ assert_select 'td.line-code', :text => /Demande cr\?\?e avec succ\?s/ end end end def test_show_diff_latin_1 with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do ['inline', 'sbs'].each do |dt| # 060719210727_changeset_iso8859-1.diff get( :show, :params => { :id => 5, :type => dt } ) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'th.filename', :text => /issues_controller.rb\t\(révision 1484\)/ assert_select 'td.line-code', :text => /Demande créée avec succès/ end end end def test_show_should_save_diff_type_as_user_preference user1 = User.find(1) user1.pref[:diff_type] = nil user1.preference.save user = User.find(1) assert_nil user.pref[:diff_type] @request.session[:user_id] = 1 # admin get( :show, :params => { :id => 5 } ) assert_response :success user.reload assert_equal "inline", user.pref[:diff_type] get( :show, :params => { :id => 5, :type => 'sbs' } ) assert_response :success user.reload assert_equal "sbs", user.pref[:diff_type] end def test_diff_show_filename_in_mercurial_export set_tmp_attachments_directory a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file("hg-export.diff", "text/plain"), :author => User.find(1)) assert a.save assert_equal 'hg-export.diff', a.filename get( :show, :params => { :id => a.id, :type => 'inline' } ) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'th.filename', :text => 'test1.txt' end def test_show_text_file get(:show, :params => {:id => 4}) assert_response :success assert_equal 'text/html', @response.media_type end def test_show_text_file_utf_8 set_tmp_attachments_directory a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file("japanese-utf-8.txt", "text/plain"), :author => User.find(1)) assert a.save assert_equal 'japanese-utf-8.txt', a.filename get(:show, :params => {:id => a.id}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'tr#L1' do assert_select 'th.line-num a[data-txt=?]', '1' assert_select 'td', :text => /日本語/ end end def test_show_text_file_replace_cannot_convert_content set_tmp_attachments_directory with_settings :repositories_encodings => 'UTF-8' do a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file("iso8859-1.txt", "text/plain"), :author => User.find(1)) assert a.save assert_equal 'iso8859-1.txt', a.filename get(:show, :params => {:id => a.id}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'tr#L7' do assert_select 'th.line-num a[data-txt=?]', '7' assert_select 'td', :text => /Demande cr\?\?e avec succ\?s/ end end end def test_show_text_file_latin_1 set_tmp_attachments_directory with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file("iso8859-1.txt", "text/plain"), :author => User.find(1)) assert a.save assert_equal 'iso8859-1.txt', a.filename get(:show, :params => {:id => a.id}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'tr#L7' do assert_select 'th.line-num a[data-txt=?]', '7' assert_select 'td', :text => /Demande créée avec succès/ end end end def test_show_text_file_should_show_other_if_too_big @request.session[:user_id] = 2 with_settings :file_max_size_displayed => 512 do Attachment.find(4).update_attribute :filesize, 754.kilobytes get(:show, :params => {:id => 4}) assert_response :success assert_equal 'text/html', @response.media_type assert_select '.nodata', :text => 'No preview available. Download the file instead.' end end def test_show_text_file_formatted_markdown set_tmp_attachments_directory a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file('testfile.md', 'text/plain'), :author => User.find(1)) assert a.save assert_equal 'testfile.md', a.filename get(:show, :params => {:id => a.id}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'div.wiki', :html => "

    Header 1

    \n

    Header 2

    \n

    Header 3

    " end def test_show_text_file_formatted_textile set_tmp_attachments_directory a = Attachment.new(:container => Issue.find(1), :file => uploaded_test_file('testfile.textile', 'text/plain'), :author => User.find(1)) assert a.save assert_equal 'testfile.textile', a.filename get(:show, :params => {:id => a.id}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'div.wiki', :html => "

    Header 1

    \n\n\n\t

    Header 2

    \n\n\n\t

    Header 3

    " end def test_show_image @request.session[:user_id] = 2 get(:show, :params => {:id => 16}) assert_response :success assert_equal 'text/html', @response.media_type assert_select 'img.filecontent', :src => attachments(:attachments_010).filename end def test_show_other_with_no_preview @request.session[:user_id] = 2 get(:show, :params => {:id => 6}) assert_equal 'text/html', @response.media_type assert_select '.nodata', :text => 'No preview available. Download the file instead.' end def test_show_file_from_private_issue_without_permission get(:show, :params => {:id => 15}) assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2F15' end def test_show_file_from_private_issue_with_permission @request.session[:user_id] = 2 get(:show, :params => {:id => 15}) assert_response :success assert_select 'h2', :text => /private.diff/ end def test_show_file_without_container_should_be_allowed_to_author set_tmp_attachments_directory attachment = Attachment.create!(:file => uploaded_test_file("testfile.txt", "text/plain"), :author_id => 2) @request.session[:user_id] = 2 get(:show, :params => {:id => attachment.id}) assert_response :ok end def test_show_file_without_container_should_be_denied_to_other_users set_tmp_attachments_directory attachment = Attachment.create!(:file => uploaded_test_file("testfile.txt", "text/plain"), :author_id => 2) @request.session[:user_id] = 3 get(:show, :params => {:id => attachment.id}) assert_response :forbidden end def test_show_issue_attachment_should_highlight_issues_menu_item get(:show, :params => {:id => 4}) assert_response :success assert_select '#main-menu a.issues.selected' end def test_show_invalid_should_respond_with_404 get(:show, :params => {:id => 999}) assert_response :not_found end def test_show_renders_pagination get(:show, :params => {:id => 5, :type => 'inline'}) assert_response :success assert_select 'ul.pages li.next', :text => /next/i assert_select 'ul.pages li.previous', :text => /previous/i end def test_download_text_file get(:download, :params => {:id => 4}) assert_response :success assert_equal 'application/x-ruby', @response.media_type etag = @response.etag assert_not_nil etag @request.env["HTTP_IF_NONE_MATCH"] = etag get(:download, :params => {:id => 4}) assert_response :not_modified end def test_download_js_file set_tmp_attachments_directory attachment = Attachment.create!( :file => mock_file_with_options(:original_filename => "hello.js", :content_type => "text/javascript"), :author_id => 2, :container => Issue.find(1) ) get(:download, :params => {:id => attachment.id}) assert_response :success assert_equal 'text/javascript', @response.media_type end def test_download_version_file_with_issue_tracking_disabled Project.find(1).disable_module! :issue_tracking get(:download, :params => {:id => 9}) assert_response :success end def test_download_should_assign_content_type_if_blank Attachment.find(4).update_attribute(:content_type, '') get(:download, :params => {:id => 4}) assert_response :success assert_equal 'text/x-ruby', @response.media_type end def test_download_should_assign_better_content_type_than_application_octet_stream Attachment.find(4).update! :content_type => "application/octet-stream" get(:download, :params => {:id => 4}) assert_response :success assert_equal 'text/x-ruby', @response.media_type end def test_download_should_assign_application_octet_stream_if_content_type_is_not_determined get(:download, :params => {:id => 22}) assert_response :success assert_nil Redmine::MimeType.of(attachments(:attachments_022).filename) assert_equal 'application/octet-stream', @response.media_type end def test_download_missing_file get(:download, :params => {:id => 2}) assert_response :not_found end def test_download_should_be_denied_without_permission get(:download, :params => {:id => 7}) assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fdownload%2F7' end if convert_installed? def test_thumbnail Attachment.clear_thumbnails @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 16 } ) assert_response :success assert_equal 'image/png', response.media_type etag = @response.etag assert_not_nil etag @request.env["HTTP_IF_NONE_MATCH"] = etag get( :thumbnail, :params => { :id => 16 } ) assert_response :not_modified end def test_thumbnail_should_not_exceed_maximum_size Redmine::Thumbnail.expects(:generate).with {|source, target, size| size == 800} @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 16, :size => 2000 } ) end def test_thumbnail_should_round_size Redmine::Thumbnail.expects(:generate).with {|source, target, size| size == 300} @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 16, :size => 260 } ) end def test_thumbnail_should_return_404_for_non_image_attachment @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 15 } ) assert_response :not_found end def test_thumbnail_should_return_404_if_thumbnail_generation_failed Attachment.any_instance.stubs(:thumbnail).returns(nil) @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 16 } ) assert_response :not_found end def test_thumbnail_should_be_denied_without_permission get( :thumbnail, :params => { :id => 16 } ) assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fthumbnail%2F16' end else puts '(ImageMagick convert not available)' end if gs_installed? def test_thumbnail_for_pdf_should_be_png skip unless convert_installed? Attachment.clear_thumbnails @request.session[:user_id] = 2 get( :thumbnail, :params => { :id => 23 # ecookbook-gantt.pdf } ) assert_response :success assert_equal 'image/png', response.media_type end else puts '(GhostScript convert not available)' end def test_edit_all @request.session[:user_id] = 2 get( :edit_all, :params => { :object_type => 'issues', :object_id => '2' } ) assert_response :success assert_select 'form[action=?]', '/attachments/issues/2' do Issue.find(2).attachments.each do |attachment| assert_select "tr#attachment-#{attachment.id}" end assert_select 'tr#attachment-4' do assert_select 'input[name=?][value=?]', 'attachments[4][filename]', 'source.rb' assert_select 'input[name=?][value=?]', 'attachments[4][description]', 'This is a Ruby source file' end end # Link to the container in heading assert_select 'h2 a', :text => "Feature request #2" end def test_edit_all_with_invalid_object_should_return_404 get( :edit_all, :params => { :object_type => 'issues', :object_id => '999' } ) assert_response :not_found end def test_edit_all_for_object_that_is_not_visible_should_return_403 get( :edit_all, :params => { :object_type => 'issues', :object_id => '4' } ) assert_response :forbidden end def test_edit_all_issue_attachment_by_user_without_edit_issue_permission_on_tracker_should_return_404 role = Role.find(2) role.set_permission_trackers 'edit_issues', [2, 3] role.save! @request.session[:user_id] = 2 get( :edit_all, :params => { :object_type => 'issues', :object_id => '4' } ) assert_response :not_found end def test_update_all @request.session[:user_id] = 2 patch( :update_all, :params => { :object_type => 'issues', :object_id => '2', :attachments => { '1' => { :filename => 'newname.text', :description => '' }, '4' => { :filename => 'newname.rb', :description => 'Renamed' }, } } ) assert_response :found attachment = Attachment.find(4) assert_equal 'newname.rb', attachment.filename assert_equal 'Renamed', attachment.description end def test_update_all_with_failure @request.session[:user_id] = 2 patch( :update_all, :params => { :object_type => 'issues', :object_id => '3', :attachments => { '1' => { :filename => '', :description => '' }, '4' => { :filename => 'newname.rb', :description => 'Renamed' }, } } ) assert_response :success assert_select_error /file cannot be blank/i # The other attachment should not be updated attachment = Attachment.find(4) assert_equal 'source.rb', attachment.filename assert_equal 'This is a Ruby source file', attachment.description end def test_download_all_with_valid_container @request.session[:user_id] = 2 get( :download_all, :params => { :object_type => 'issues', :object_id => '2' } ) assert_response :ok assert_equal response.headers['Content-Type'], 'application/zip' assert_match /issue-2-attachments.zip/, response.headers['Content-Disposition'] assert_not_includes Dir.entries(Rails.root.join('tmp')), /attachments_zip/ end def test_download_all_with_invalid_container @request.session[:user_id] = 2 get( :download_all, :params => { :object_type => 'issues', :object_id => '999' } ) assert_response :not_found end def test_download_all_without_readable_attachments @request.session[:user_id] = 2 get( :download_all, :params => { :object_type => 'issues', :object_id => '1' } ) assert_equal Issue.find(1).attachments, [] assert_response :not_found end def test_download_all_with_invisible_journal Project.find(1).update_column :is_public, false Member.delete_all @request.session[:user_id] = 2 User.current = User.find(2) assert_not Journal.find(3).journalized.visible? get( :download_all, :params => { :object_type => 'journals', :object_id => '3' } ) assert_response :forbidden end def test_download_all_with_maximum_bulk_download_size_larger_than_attachments with_settings :bulk_download_max_size => 0 do @request.session[:user_id] = 2 get( :download_all, :params => { :object_type => 'issues', :object_id => '2', :back_url => '/issues/123' } ) assert_redirected_to '/issues/123' assert_equal flash[:error], 'These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (0 Bytes)' end end def test_download_all_redirects_to_container_url_on_error with_settings :bulk_download_max_size => 0 do @request.session[:user_id] = 2 get( :download_all, :params => { :object_type => 'issues', :object_id => '2', :back_url => 'https://example.com' } ) assert_redirected_to '/issues/2' assert_equal flash[:error], 'These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (0 Bytes)' end end def test_destroy_issue_attachment set_tmp_attachments_directory issue = Issue.find(3) @request.session[:user_id] = 2 assert_difference 'issue.attachments.count', -1 do assert_difference 'Journal.count' do delete( :destroy, :params => { :id => 1 } ) assert_redirected_to '/projects/ecookbook' end end assert_nil Attachment.find_by_id(1) j = Journal.order('id DESC').first assert_equal issue, j.journalized assert_equal 'attachment', j.details.first.property assert_equal '1', j.details.first.prop_key assert_equal 'error281.txt', j.details.first.old_value assert_equal User.find(2), j.user end def test_destroy_wiki_page_attachment set_tmp_attachments_directory @request.session[:user_id] = 2 assert_difference 'Attachment.count', -1 do delete( :destroy, :params => { :id => 3 } ) assert_response :found end end def test_destroy_project_attachment set_tmp_attachments_directory @request.session[:user_id] = 2 assert_difference 'Attachment.count', -1 do delete( :destroy, :params => { :id => 8 } ) assert_response :found end end def test_destroy_version_attachment set_tmp_attachments_directory @request.session[:user_id] = 2 assert_difference 'Attachment.count', -1 do delete( :destroy, :params => { :id => 9 } ) assert_response :found end end def test_destroy_version_attachment_with_issue_tracking_disabled Project.find(1).disable_module! :issue_tracking set_tmp_attachments_directory @request.session[:user_id] = 2 assert_difference 'Attachment.count', -1 do delete( :destroy, :params => { :id => 9 } ) assert_response :found end end def test_destroy_without_permission set_tmp_attachments_directory assert_no_difference 'Attachment.count' do delete( :destroy, :params => { :id => 3 } ) end assert_response :found assert Attachment.find_by_id(3) end def test_destroy_issue_attachment_by_user_without_edit_issue_permission_on_tracker role = Role.find(2) role.set_permission_trackers 'edit_issues', [2, 3] role.save! @request.session[:user_id] = 2 set_tmp_attachments_directory assert_no_difference 'Attachment.count' do delete( :destroy, :params => { :id => 7 } ) end assert_response :forbidden assert Attachment.find_by_id(7) end end redmine-6.0.5/test/functional/attachments_visibility_test.rb000066400000000000000000000035751500112024600244350ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AttachmentsVisibilityTest < Redmine::ControllerTest tests AttachmentsController def setup User.current = nil set_tmp_attachments_directory @field = IssueCustomField.generate!(:field_format => 'attachment', :visible => true) @attachment = new_record(Attachment) do issue = Issue.generate issue.custom_field_values = {@field.id => {:file => mock_file}} issue.save! end end def test_attachment_should_be_visible @request.session[:user_id] = 2 # manager get :show, :params => {:id => @attachment.id} assert_response :success @field.update!(:visible => false, :role_ids => [1]) get :show, :params => {:id => @attachment.id} assert_response :success end def test_attachment_should_be_visible_with_permission @request.session[:user_id] = 3 # developer get :show, :params => {:id => @attachment.id} assert_response :success @field.update!(:visible => false, :role_ids => [1]) get :show, :params => {:id => @attachment.id} assert_response :forbidden end end redmine-6.0.5/test/functional/auth_sources_controller_test.rb000066400000000000000000000136121500112024600246130ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AuthSourcesControllerTest < Redmine::ControllerTest def setup @request.session[:user_id] = 1 end def test_index get :index assert_response :success end def test_new get :new assert_response :success assert_select 'form#auth_source_form' do assert_select 'input[name=type][value=AuthSourceLdap]' assert_select 'input[name=?]', 'auth_source[host]' end end def test_new_with_invalid_type_should_respond_with_404 get( :new, :params => { :type => 'foo' } ) assert_response :not_found end def test_create assert_difference 'AuthSourceLdap.count' do post( :create, :params => { :type => 'AuthSourceLdap', :auth_source => { :name => 'Test', :host => '127.0.0.1', :port => '389', :attr_login => 'cn' } } ) assert_redirected_to '/auth_sources' end source = AuthSourceLdap.order('id DESC').first assert_equal 'Test', source.name assert_equal '127.0.0.1', source.host assert_equal 389, source.port assert_equal 'cn', source.attr_login end def test_create_with_failure assert_no_difference 'AuthSourceLdap.count' do post( :create, :params => { :type => 'AuthSourceLdap', :auth_source => { :name => 'Test', :host => '', :port => '389', :attr_login => 'cn' } } ) assert_response :success end assert_select_error /host cannot be blank/i end def test_edit get( :edit, :params => { :id => 1 } ) assert_response :success assert_select 'form#auth_source_form' do assert_select 'input[name=?]', 'auth_source[host]' end end def test_edit_should_not_contain_password AuthSource.find(1).update_column :account_password, 'secret' get( :edit, :params => { :id => 1 } ) assert_response :success assert_select 'input[value=secret]', 0 assert_select 'input[name=dummy_password][value^=xxxxxx]' end def test_edit_invalid_should_respond_with_404 get( :edit, :params => { :id => 99 } ) assert_response :not_found end def test_update put( :update, :params => { :id => 1, :auth_source => { :name => 'Renamed', :host => '192.168.0.10', :port => '389', :attr_login => 'uid' } } ) assert_redirected_to '/auth_sources' source = AuthSourceLdap.find(1) assert_equal 'Renamed', source.name assert_equal '192.168.0.10', source.host end def test_update_with_failure put( :update, :params => { :id => 1, :auth_source => { :name => 'Renamed', :host => '', :port => '389', :attr_login => 'uid' } } ) assert_response :success assert_select_error /host cannot be blank/i end def test_destroy assert_difference 'AuthSourceLdap.count', -1 do delete( :destroy, :params => { :id => 1 } ) assert_redirected_to '/auth_sources' end end def test_destroy_auth_source_in_use User.find(2).update_attribute :auth_source_id, 1 assert_no_difference 'AuthSourceLdap.count' do delete( :destroy, :params => { :id => 1 } ) assert_redirected_to '/auth_sources' assert_equal 'This authentication mode is in use and cannot be deleted.', flash[:error] end end def test_test_connection AuthSourceLdap.any_instance.stubs(:test_connection).returns(true) get( :test_connection, :params => { :id => 1 } ) assert_redirected_to '/auth_sources' assert_not_nil flash[:notice] assert_match /successful/i, flash[:notice] end def test_test_connection_with_failure AuthSourceLdap.any_instance.stubs(:initialize_ldap_con).raises(Net::LDAP::Error.new("Something went wrong")) get( :test_connection, :params => { :id => 1 } ) assert_redirected_to '/auth_sources' assert_not_nil flash[:error] assert_include 'Something went wrong', flash[:error] end def test_autocomplete_for_new_user AuthSource.expects(:search).with('foo').returns( [ {:login => 'foo1', :firstname => 'John', :lastname => 'Smith', :mail => 'foo1@example.net', :auth_source_id => 1}, {:login => 'Smith', :firstname => 'John', :lastname => 'Doe', :mail => 'foo2@example.net', :auth_source_id => 1} ] ) get( :autocomplete_for_new_user, :params => { :term => 'foo' } ) assert_response :success assert_equal 'application/json', response.media_type json = ActiveSupport::JSON.decode(response.body) assert_kind_of Array, json assert_equal 2, json.size assert_equal 'foo1', json.first['value'] assert_equal 'foo1 (John Smith)', json.first['label'] end end redmine-6.0.5/test/functional/auto_completes_controller_test.rb000066400000000000000000000155271500112024600251410ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class AutoCompletesControllerTest < Redmine::ControllerTest def test_issues_should_not_be_case_sensitive get( :issues, :params => { :project_id => 'ecookbook', :q => 'ReCiPe' } ) assert_response :success assert_include "recipe", response.body end def test_issues_should_accept_term_param get( :issues, :params => { :project_id => 'ecookbook', :term => 'ReCiPe' } ) assert_response :success assert_include "recipe", response.body end def test_issues_should_return_issue_with_given_id get( :issues, :params => { :project_id => 'subproject1', :q => '13' } ) assert_response :success assert_include "Bug #13", response.body end def test_issues_should_return_issue_with_given_id_preceded_with_hash get( :issues, :params => { :project_id => 'subproject1', :q => '#13' } ) assert_response :success assert_include "Bug #13", response.body end def test_issues_with_scope_all_should_search_other_projects get( :issues, :params => { :project_id => 'ecookbook', :q => '13', :scope => 'all' } ) assert_response :success assert_include "Bug #13", response.body end def test_issues_without_project_should_search_all_projects get(:issues, :params => {:q => '13'}) assert_response :success assert_include "Bug #13", response.body end def test_issues_without_scope_all_should_not_search_other_projects get( :issues, :params => { :project_id => 'ecookbook', :q => '13' } ) assert_response :success assert_not_include "Bug #13", response.body end def test_issues_should_return_json get( :issues, :params => { :project_id => 'subproject1', :q => '13' } ) assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_kind_of Array, json issue = json.first assert_kind_of Hash, issue assert_equal 13, issue['id'] assert_equal 13, issue['value'] assert_equal 'Bug #13: Subproject issue two', issue['label'] end def test_issues_with_status_o_should_return_open_issues_only get( :issues, :params => { :project_id => 'ecookbook', :q => 'issue', :status => 'o' } ) assert_response :success assert_include "Issue due today", response.body assert_not_include "closed", response.body end def test_issues_with_status_c_should_return_closed_issues_only get( :issues, :params => { :project_id => 'ecookbook', :q => 'issue', :status => 'c' } ) assert_response :success assert_include "closed", response.body assert_not_include "Issue due today", response.body end def test_issues_with_issue_id_should_not_return_that_issue get( :issues, :params => { :project_id => 'ecookbook', :q => 'issue', :issue_id => '12' } ) assert_response :success assert_include "issue", response.body assert_not_include "Bug #12: Closed issue on a locked version", response.body end def test_auto_complete_should_return_json_content_type_response get( :issues, :params => { :project_id => 'subproject1', :q => '#13' } ) assert_response :success assert_include 'application/json', response.headers['Content-Type'] end def test_issue_without_term_should_return_last_10_issues # There are 9 issues generated by fixtures # and we need two more to test the 10 limit %w(1..2).each do Issue.generate! end get :issues assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_equal 10, json.count assert_equal Issue.last.id, json.first['id'].to_i end def test_wiki_pages_should_not_be_case_sensitive get( :wiki_pages, params: { project_id: 'ecookbook', q: 'pAgE' } ) assert_response :success assert_include 'Page_with_an_inline_image', response.body end def test_wiki_pages_should_return_json get( :wiki_pages, params: { project_id: 'ecookbook', q: 'Page_with_an_inline_image' } ) assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_kind_of Array, json issue = json.first assert_kind_of Hash, issue assert_equal 4, issue['id'] assert_equal 'Page_with_an_inline_image', issue['value'] assert_equal 'Page_with_an_inline_image', issue['label'] end def test_wiki_pages_without_view_wiki_pages_permission_should_not_return_pages Role.anonymous.remove_permission! :view_wiki_pages get :wiki_pages, params: { project_id: 'ecookbook', q: 'Page_with_an_inline_image' } assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_equal 0, json.count end def test_wiki_pages_without_project_id_params_should_not_return_pages get :wiki_pages, params: { project_id: '' } assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_equal 0, json.count end def test_wiki_pages_should_return_json_content_type_response get( :wiki_pages, params: { project_id: 'ecookbook', q: 'Page_with_an_inline_image' } ) assert_response :success assert_include 'application/json', response.headers['Content-Type'] end def test_wiki_pages_without_q_params_should_return_last_10_pages # There are 8 pages generated by fixtures # and we need three more to test the 10 limit wiki = Wiki.find_by(project: Project.first) 3.times do |n| WikiPage.create(wiki: wiki, title: "test#{n}") end get :wiki_pages, params: { project_id: 'ecookbook' } assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_equal 10, json.count assert_equal wiki.pages[-2].id, json.first['id'].to_i end end redmine-6.0.5/test/functional/boards_controller_test.rb000066400000000000000000000174241500112024600233660ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class BoardsControllerTest < Redmine::ControllerTest def setup User.current = nil end def test_index get( :index, :params => { :project_id => 1 } ) assert_response :success assert_select 'table.boards' end def test_index_not_found get( :index, :params => { :project_id => 97 } ) assert_response :not_found end def test_index_should_show_messages_if_only_one_board Project.find(1).boards.to_a.slice(1..-1).each(&:destroy) get( :index, :params => { :project_id => 1 } ) assert_response :success assert_select 'table.boards', 0 assert_select 'table.messages' end def test_show get( :show, :params => { :project_id => 1, :id => 1 } ) assert_response :success assert_select 'table.messages tbody' do assert_select 'tr', Board.find(1).topics.count end end def test_show_should_display_sticky_messages_first Message.update_all(:sticky => 0) Message.where({:id => 1}).update_all({:sticky => 1}) get( :show, :params => { :project_id => 1, :id => 1 } ) assert_response :success assert_select 'table.messages tbody' do # row is here... assert_select 'tr.sticky' # ...and in first position assert_select 'tr.sticky:first-child' end end def test_show_should_display_message_with_last_reply_first Message.update_all(:sticky => 0) # Reply to an old topic old_topic = Message.where(:board_id => 1, :parent_id => nil).order('created_on ASC').first reply = Message.new(:board_id => 1, :subject => 'New reply', :content => 'New reply', :author_id => 2) old_topic.children << reply get( :show, :params => { :project_id => 1, :id => 1 } ) assert_response :success assert_select 'table.messages tbody' do assert_select "tr#message-#{old_topic.id}" assert_select "tr#message-#{old_topic.id}:first-child" end end def test_show_with_permission_should_display_the_new_message_form @request.session[:user_id] = 2 get( :show, :params => { :project_id => 1, :id => 1 } ) assert_response :success assert_select 'form#message-form' do assert_select 'input[name=?]', 'message[subject]' end end def test_show_atom get( :show, :params => { :project_id => 1, :id => 1, :format => 'atom' } ) assert_response :success assert_select 'feed > entry > title', :text => 'Help: RE: post 2' end def test_show_not_found get( :index, :params => { :project_id => 1, :id => 97 } ) assert_response :not_found end def test_new @request.session[:user_id] = 2 get( :new, :params => { :project_id => 1 } ) assert_response :success assert_select 'select[name=?]', 'board[parent_id]' do assert_select 'option', (Project.find(1).boards.size + 1) assert_select 'option[value=""]' assert_select 'option[value="1"]', :text => 'Help' end end def test_new_without_project_boards Project.find(1).boards.delete_all @request.session[:user_id] = 2 get( :new, :params => { :project_id => 1 } ) assert_response :success assert_select 'select[name=?]', 'board[parent_id]', 0 end def test_create @request.session[:user_id] = 2 assert_difference 'Board.count' do post( :create, :params => { :project_id => 1, :board => { :name => 'Testing', :description => 'Testing board creation' } } ) end assert_redirected_to '/projects/ecookbook/settings/boards' board = Board.order('id DESC').first assert_equal 'Testing', board.name assert_equal 'Testing board creation', board.description end def test_create_with_parent @request.session[:user_id] = 2 assert_difference 'Board.count' do post( :create, :params => { :project_id => 1, :board => { :name => 'Testing', :description => 'Testing', :parent_id => 2 } } ) end assert_redirected_to '/projects/ecookbook/settings/boards' board = Board.order('id DESC').first assert_equal Board.find(2), board.parent end def test_create_with_failure @request.session[:user_id] = 2 assert_no_difference 'Board.count' do post( :create, :params => { :project_id => 1, :board => { :name => '', :description => 'Testing board creation' } } ) end assert_response :success assert_select_error /Name cannot be blank/ end def test_edit @request.session[:user_id] = 2 get( :edit, :params => { :project_id => 1, :id => 2 } ) assert_response :success assert_select 'input[name=?][value=?]', 'board[name]', 'Discussion' end def test_edit_with_parent board = Board.generate!(:project_id => 1, :parent_id => 2) @request.session[:user_id] = 2 get( :edit, :params => { :project_id => 1, :id => board.id } ) assert_response :success assert_select 'select[name=?]', 'board[parent_id]' do assert_select 'option[value="2"][selected=selected]' end end def test_update @request.session[:user_id] = 2 assert_no_difference 'Board.count' do put( :update, :params => { :project_id => 1, :id => 2, :board => { :name => 'Testing', :description => 'Testing board update' } } ) end assert_redirected_to '/projects/ecookbook/settings/boards' assert_equal 'Testing', Board.find(2).name end def test_update_position @request.session[:user_id] = 2 put( :update, :params => { :project_id => 1, :id => 2, :board => { :position => 1 } } ) assert_redirected_to '/projects/ecookbook/settings/boards' board = Board.find(2) assert_equal 1, board.position end def test_update_with_failure @request.session[:user_id] = 2 put( :update, :params => { :project_id => 1, :id => 2, :board => { :name => '', :description => 'Testing board update' } } ) assert_response :success assert_select_error /Name cannot be blank/ end def test_destroy @request.session[:user_id] = 2 assert_difference 'Board.count', -1 do delete( :destroy, :params => { :project_id => 1, :id => 2 } ) end assert_redirected_to '/projects/ecookbook/settings/boards' assert_nil Board.find_by_id(2) end end redmine-6.0.5/test/functional/calendars_controller_test.rb000066400000000000000000000170571500112024600240520ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class CalendarsControllerTest < Redmine::ControllerTest def test_show # Ensure that an issue to which a user is assigned is in the current # month's calendar in order to test Gravatar travel_to issues(:issues_002).start_date with_settings :gravatar_enabled => '1' do get( :show, :params => { :project_id => 1 } ) end assert_response :success # query form assert_select 'form#query_form' do assert_select 'div#query_form_with_buttons.hide-when-print' do assert_select 'div#query_form_content' do assert_select 'fieldset#filters.collapsible' end assert_select 'span.contextual.pagination' assert_select 'p.buttons' end end # Assert context menu on issues assert_select 'form[data-cm-url=?]', '/issues/context_menu' assert_select 'ul.cal' do assert_select 'li' do assert_select( 'div.issue.hascontextmenu.tooltip.starting', :text => /Add ingredients categories/ ) do assert_select 'a.issue[href=?]', '/issues/2', :text => 'Feature request #2' assert_select 'span.tip' do assert_select 'img[class="gravatar"]' end assert_select 'input[name=?][type=?][value=?]', 'ids[]', 'checkbox', '2' end end end end def test_show_issue_due_date travel_to issues(:issues_001).due_date get(:show, :params => {:project_id => 1}) assert_response :success assert_select 'ul.cal' do assert_select 'li' do assert_select( 'div.issue.hascontextmenu.tooltip.ending', :text => /Cannot print recipes/ ) do assert_select 'a.issue[href=?]', '/issues/1', :text => 'Bug #1' assert_select 'input[name=?][type=?][value=?]', 'ids[]', 'checkbox', '1' end end end end test "show issue of start and due dates are same" do subject = 'start and due dates are same' issue = Issue.generate!(:start_date => '2012-10-06', :due_date => '2012-10-06', :project_id => 1, :tracker_id => 1, :subject => subject) get( :show, :params => { :project_id => 1, :month => '10', :year => '2012' } ) assert_response :success assert_select 'ul.cal' do assert_select 'li' do assert_select( 'div.issue.hascontextmenu.tooltip.starting.ending', :text => /#{subject}/ ) do assert_select( 'a.issue[href=?]', "/issues/#{issue.id}", :text => "Bug ##{issue.id}" ) assert_select( 'input[name=?][type=?][value=?]', 'ids[]', 'checkbox', issue.id.to_s ) end end end end def test_show_version travel_to versions(:versions_002).effective_date get(:show, :params => {:project_id => 1}) assert_response :success assert_select 'ul.cal' do assert_select 'li' do assert_select( 'span.icon.icon-package' ) do assert_select 'a[href=?]', '/versions/2', :text => '1.0' end end end end def test_show_should_run_custom_queries query = IssueQuery.create!(:name => 'Calendar Query', :description => 'Description for Calendar Query', :visibility => IssueQuery::VISIBILITY_PUBLIC) get( :show, :params => { :query_id => query.id } ) assert_response :success assert_select 'h2', :text => query.name assert_select '#sidebar a.query.selected[title=?]', query.description, :text => query.name end def test_cross_project_calendar travel_to issues(:issues_002).start_date get :show assert_response :success assert_select 'ul.cal' do assert_select 'li' do assert_select( 'div.issue.hascontextmenu.tooltip.starting', :text => /eCookbook.*Add ingredients categories/m ) do assert_select 'a.issue[href=?]', '/issues/2', :text => 'Feature request #2' assert_select 'input[name=?][type=?][value=?]', 'ids[]', 'checkbox', '2' end end end end def test_cross_project_calendar_version travel_to versions(:versions_002).effective_date get :show assert_response :success assert_select 'ul.cal' do assert_select 'li' do assert_select( 'span.icon.icon-package' ) do assert_select( 'a[href=?]', '/versions/2', :text => 'eCookbook - 1.0' ) end end end end def test_week_number_calculation with_settings :start_of_week => 7 do get( :show, :params => { :month => '1', :year => '2010' } ) assert_response :success end assert_select 'ul' do assert_select 'li.week-number:nth-of-type(2)', :text => /53$/ assert_select 'li.other-month', :text => /^27/ assert_select 'li.this-month', :text => /^2/ end assert_select 'ul' do assert_select 'li.week-number', :text => /1$/ assert_select 'li.other-month', :text => /^3/ assert_select 'li.this-month', :text => /^9/ end with_settings :start_of_week => 1 do get( :show, :params => { :month => '1', :year => '2010' } ) assert_response :success end assert_select 'ul' do assert_select 'li.week-number:nth-of-type(2)', :text => /53$/ assert_select 'li.this-month', :text => /^28/ assert_select 'li.this-month', :text => /^3/ end assert_select 'ul' do assert_select 'li.week-number', :text => /1$/ assert_select 'li.this-month', :text => /^4/ assert_select 'li.this-month', :text => /^10/ end end def test_show_custom_query_with_multiple_sort_criteria get( :show, :params => { :query_id => 5 } ) assert_response :success assert_select 'h2', :text => 'Open issues by priority and tracker' end def test_show_custom_query_with_group_by_option get( :show, :params => { :query_id => 6 } ) assert_response :success assert_select 'h2', :text => 'Open issues grouped by tracker' end def test_show_calendar_day_css_classes get( :show, :params => { :month => '12', :year => '2016' } ) assert_response :success assert_select 'ul' do assert_select 'li.week-number:nth-of-type(2)', :text => /48$/ # non working days should have "nwday" CSS class assert_select 'li.nwday', 10 assert_select 'li.nwday', :text => /^4/ assert_select 'li.nwday', :text => /^10/ end end end redmine-6.0.5/test/functional/comments_controller_test.rb000066400000000000000000000047361500112024600237430ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class CommentsControllerTest < Redmine::ControllerTest def setup User.current = nil end def test_add_comment @request.session[:user_id] = 2 post( :create, :params => { :id => 1, :comment => { :comments => 'This is a test comment' } } ) assert_redirected_to '/news/1' comment = News.find(1).comments.last assert_not_nil comment assert_equal 'This is a test comment', comment.comments assert_equal User.find(2), comment.author end def test_empty_comment_should_not_be_added @request.session[:user_id] = 2 assert_no_difference 'Comment.count' do post( :create, :params => { :id => 1, :comment => { :comments => '' } } ) assert_response :redirect assert_redirected_to '/news/1' end end def test_create_should_be_denied_if_news_is_not_commentable News.any_instance.stubs(:commentable?).returns(false) @request.session[:user_id] = 2 assert_no_difference 'Comment.count' do post( :create, :params => { :id => 1, :comment => { :comments => 'This is a test comment' } } ) assert_response :forbidden end end def test_destroy_comment comments_count = News.find(1).comments.size @request.session[:user_id] = 2 delete( :destroy, :params => { :id => 1, :comment_id => 2 } ) assert_redirected_to '/news/1' assert_nil Comment.find_by_id(2) assert_equal comments_count - 1, News.find(1).comments.size end end redmine-6.0.5/test/functional/context_menus_controller_test.rb000066400000000000000000000400751500112024600250050ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class ContextMenusControllerTest < Redmine::ControllerTest def test_context_menu_one_issue_should_link_to_issue_path @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_response :success assert_select 'a.icon-edit[href=?]', '/issues/1/edit', :text => 'Edit' assert_select 'a.icon-copy-link[data-clipboard-text=?]', 'http://test.host/issues/1', :text => 'Copy link' assert_select 'a.icon-copy[href=?]', '/projects/ecookbook/issues/1/copy', :text => 'Copy' assert_select 'a.icon-del[href=?]', '/issues?ids%5B%5D=1', :text => 'Delete issue' # Statuses assert_select 'a[href=?][data-method="patch"]', '/issues/1?ids%5B%5D=1&issue%5Bstatus_id%5D=5', :text => 'Closed' assert_select 'a[href=?][data-method="patch"]', '/issues/1?ids%5B%5D=1&issue%5Bpriority_id%5D=8', :text => 'Immediate' # No inactive priorities assert_select 'a', :text => /Inactive Priority/, :count => 0 # Versions assert_select 'a[href=?][data-method="patch"]', '/issues/1?ids%5B%5D=1&issue%5Bfixed_version_id%5D=3', :text => '2.0' assert_select 'a[href=?][data-method="patch"]', '/issues/1?ids%5B%5D=1&issue%5Bfixed_version_id%5D=4', :text => 'eCookbook Subproject 1 - 2.0' # Assignees assert_select 'a[href=?][data-method="patch"]', '/issues/1?ids%5B%5D=1&issue%5Bassigned_to_id%5D=3', :text => 'Dave Lopper' end def test_context_menu_multiple_issues_should_link_to_bulk_update_issues_path @request.session[:user_id] = 2 get :issues, :params => { :ids => [1, 2] } assert_response :success assert_select 'a.icon-edit[href=?]', '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2', :text => 'Bulk edit' assert_select 'a.icon-copy[href=?]', '/issues/bulk_edit?copy=1&ids%5B%5D=1&ids%5B%5D=2', :text => 'Copy' assert_select 'a.icon-del[href=?]', '/issues?ids%5B%5D=1&ids%5B%5D=2', :text => 'Delete issues' # Statuses assert_select 'a[href=?][data-method="patch"]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bstatus_id%5D=5', :text => 'Closed' assert_select 'a[href=?][data-method="patch"]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bpriority_id%5D=8', :text => 'Immediate' # No inactive priorities assert_select 'a', :text => /Inactive Priority/, :count => 0 # Versions assert_select 'a[href=?][data-method="patch"]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bfixed_version_id%5D=3', :text => '2.0' assert_select 'a[href=?][data-method="patch"]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bfixed_version_id%5D=4', :text => 'eCookbook Subproject 1 - 2.0' # Assignees assert_select 'a[href=?][data-method="patch"]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=3', :text => 'Dave Lopper' end def test_context_menu_one_issue_by_anonymous with_settings :default_language => 'en' do get( :issues, :params => { :ids => [1] } ) assert_response :success assert_select 'a.icon-del.disabled[href="#"]', :text => 'Delete issue' end end def test_context_menu_multiple_issues_of_same_project @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2] } ) assert_response :success ids = [1, 2].map {|i| "ids%5B%5D=#{i}"}.join('&') assert_select 'a.icon-edit[href=?]', "/issues/bulk_edit?#{ids}", :text => 'Bulk edit' # issue_id: '1,2', set_filter: 1, status_id: '*' assert_select 'a.icon-copy-link[data-clipboard-text=?]', "http://test.host/projects/ecookbook/issues?issue_id=1%2C2&set_filter=1&status_id=%2A", :text => 'Copy link' assert_select 'a.icon-copy[href=?]', "/issues/bulk_edit?copy=1&#{ids}", :text => 'Copy' assert_select 'a.icon-del[href=?]', "/issues?#{ids}", :text => 'Delete issues' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bstatus_id%5D=5", :text => 'Closed' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bpriority_id%5D=8", :text => 'Immediate' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bassigned_to_id%5D=3", :text => 'Dave Lopper' end def test_context_menu_multiple_issues_of_different_projects @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2, 6] } ) assert_response :success ids = [1, 2, 6].map {|i| "ids%5B%5D=#{i}"}.join('&') assert_select 'a.icon-edit[href=?]', "/issues/bulk_edit?#{ids}", :text => 'Bulk edit' # issue_id: '1,2,6', set_filter: 1, status_id: '*' assert_select 'a.icon-copy-link[data-clipboard-text=?]', "http://test.host/issues?issue_id=1%2C2%2C6&set_filter=1&status_id=%2A", :text => 'Copy link' assert_select 'a.icon-del[href=?]', "/issues?#{ids}", :text => 'Delete issues' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bstatus_id%5D=5", :text => 'Closed' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bpriority_id%5D=8", :text => 'Immediate' assert_select 'a[href=?]', "/issues/bulk_update?#{ids}&issue%5Bassigned_to_id%5D=2", :text => 'John Smith' end def test_context_menu_should_include_list_custom_fields field = IssueCustomField.create!(:name => 'List', :field_format => 'list', :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'List' assert_select 'ul' do assert_select 'a', 3 assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo", :text => 'Foo' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_context_menu_multiple_issues_should_include_list_custom_fields field = IssueCustomField.create!(:name => 'List', :field_format => 'list', :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'List' assert_select 'ul' do assert_select 'a', 3 assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=Foo", :text => 'Foo' assert_select 'a[href=?]', "/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_context_menu_should_not_include_null_value_for_required_custom_fields field = IssueCustomField.create!(:name => 'List', :is_required => true, :field_format => 'list', :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'List' assert_select 'ul' do assert_select 'a', 2 assert_select 'a', :text => 'none', :count => 0 end end end def test_context_menu_on_single_issue_should_select_current_custom_field_value field = IssueCustomField.create!(:name => 'List', :field_format => 'list', :possible_values => ['Foo', 'Bar'], :is_for_all => true, :tracker_ids => [1, 2, 3]) issue = Issue.find(1) issue.custom_field_values = {field.id => 'Bar'} issue.save! @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'List' assert_select 'ul' do assert_select 'a', 3 assert_select 'a.icon', :text => 'Bar' end end end def test_context_menu_should_include_bool_custom_fields field = IssueCustomField.create!(:name => 'Bool', :field_format => 'bool', :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'Bool' assert_select 'ul' do assert_select 'a', 3 assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=0", :text => 'No' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=1", :text => 'Yes' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_context_menu_should_include_user_custom_fields field = IssueCustomField.create!(:name => 'User', :field_format => 'user', :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'User' assert_select 'ul' do assert_select 'a', Project.find(1).members.count + 2 # users + 'none' + 'me' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=2", :text => 'John Smith' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_context_menu_should_include_version_custom_fields field = IssueCustomField.create!(:name => 'Version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1, 2, 3]) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => 'Version' assert_select 'ul' do assert_select 'a', Project.find(1).shared_versions.count + 1 assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=3", :text => '2.0' assert_select 'a[href=?]', "/issues/1?ids%5B%5D=1&issue%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_context_menu_should_show_enabled_custom_fields_for_the_role_only enabled_cf = IssueCustomField.generate!( :field_format => 'bool', :is_for_all => true, :tracker_ids => [1], :visible => false, :role_ids => [1, 2] ) disabled_cf = IssueCustomField.generate!( :field_format => 'bool', :is_for_all => true, :tracker_ids => [1], :visible => false, :role_ids => [2] ) issue = Issue.generate!(:project_id => 1, :tracker_id => 1) @request.session[:user_id] = 2 get( :issues, :params => { :ids => [issue.id] } ) assert_select "li.cf_#{enabled_cf.id}" assert_select "li.cf_#{disabled_cf.id}", 0 end def test_context_menu_by_assignable_user_should_include_assigned_to_me_link @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2] } ) assert_response :success assert_select 'a[href=?]', '/issues/bulk_update?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=2', :text => / me / end def test_context_menu_should_propose_shared_versions_for_issues_from_different_projects @request.session[:user_id] = 2 version = Version.create!(:name => 'Shared', :sharing => 'system', :project_id => 1) get( :issues, :params => { :ids => [1, 4] } ) assert_response :success assert_select 'a', :text => 'eCookbook - Shared' end def test_context_menu_should_include_add_subtask_link @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1] } ) assert_response :success assert_select 'a.icon-add[href=?]', '/projects/ecookbook/issues/new?issue%5Bparent_issue_id%5D=1&issue%5Btracker_id%5D=1', :text => 'Add subtask' end def test_context_menu_with_closed_issue_should_not_include_add_subtask_link @request.session[:user_id] = 2 get( :issues, :params => { :ids => [8] } ) assert_response :success assert_select 'a.icon-add', :text => 'Add subtask', :count => 0 end def test_context_menu_multiple_issues_should_not_include_add_subtask_link @request.session[:user_id] = 2 get( :issues, :params => { :ids => [1, 2] } ) assert_response :success assert_select 'a.icon-add', :text => 'Add subtask', :count => 0 end def test_context_menu_with_issue_that_is_not_visible_should_fail get( :issues, :params => { :ids => [1, 4] # issue 4 is not visible } ) assert_response :found end def test_should_respond_with_404_without_ids get :issues assert_response :not_found end def test_time_entries_context_menu @request.session[:user_id] = 2 get( :time_entries, :params => { :ids => [1, 2] } ) assert_response :success assert_select 'a:not(.disabled)', :text => 'Bulk edit' end def test_context_menu_for_one_time_entry @request.session[:user_id] = 2 get( :time_entries, :params => { :ids => [1] } ) assert_response :success assert_select 'a:not(.disabled)', :text => 'Edit' end def test_time_entries_context_menu_should_include_custom_fields field = TimeEntryCustomField.generate!(:name => "Field", :field_format => "list", :possible_values => ["foo", "bar"]) @request.session[:user_id] = 2 get( :time_entries, :params => { :ids => [1, 2] } ) assert_response :success assert_select "li.cf_#{field.id}" do assert_select 'a[href="#"]', :text => "Field" assert_select 'ul' do assert_select 'a', 3 assert_select 'a[href=?]', "/time_entries/bulk_update?ids%5B%5D=1&ids%5B%5D=2&time_entry%5Bcustom_field_values%5D%5B#{field.id}%5D=foo", :text => 'foo' assert_select 'a[href=?]', "/time_entries/bulk_update?ids%5B%5D=1&ids%5B%5D=2&time_entry%5Bcustom_field_values%5D%5B#{field.id}%5D=bar", :text => 'bar' assert_select 'a[href=?]', "/time_entries/bulk_update?ids%5B%5D=1&ids%5B%5D=2&time_entry%5Bcustom_field_values%5D%5B#{field.id}%5D=__none__", :text => 'none' end end end def test_time_entries_context_menu_with_edit_own_time_entries_permission @request.session[:user_id] = 2 Role.find_by_name('Manager').remove_permission! :edit_time_entries Role.find_by_name('Manager').add_permission! :edit_own_time_entries ids = (0..1).map {TimeEntry.generate!(:user => User.find(2)).id} get( :time_entries, :params => { :ids => ids } ) assert_response :success assert_select 'a:not(.disabled)', :text => 'Bulk edit' end def test_time_entries_context_menu_without_edit_permission @request.session[:user_id] = 2 Role.find_by_name('Manager').remove_permission! :edit_time_entries get( :time_entries, :params => { :ids => [1, 2] } ) assert_response :success assert_select 'a.disabled', :text => 'Bulk edit' end end redmine-6.0.5/test/functional/custom_field_enumerations_controller_test.rb000066400000000000000000000106371500112024600273610ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class CustomFieldEnumerationsControllerTest < Redmine::ControllerTest def setup @request.session[:user_id] = 1 @field = GroupCustomField.create!(:name => 'List', :field_format => 'enumeration', :is_required => false) @foo = CustomFieldEnumeration.new(:name => 'Foo') @bar = CustomFieldEnumeration.new(:name => 'Bar') @field.enumerations << @foo @field.enumerations << @bar end def test_index get( :index, :params => { :custom_field_id => @field.id } ) assert_response :success assert_select 'ul#custom_field_enumerations' do assert_select 'li', 2 end end def test_create assert_difference 'CustomFieldEnumeration.count' do post( :create, :params => { :custom_field_id => @field.id, :custom_field_enumeration => { :name => 'Baz' } } ) assert_redirected_to "/custom_fields/#{@field.id}/enumerations" end assert_equal 3, @field.reload.enumerations.count enum = @field.enumerations.last assert_equal 'Baz', enum.name assert_equal true, enum.active assert_equal 3, enum.position end def test_create_xhr assert_difference 'CustomFieldEnumeration.count' do post( :create, :params => { :custom_field_id => @field.id, :custom_field_enumeration => { :name => 'Baz' } }, :xhr => true ) assert_response :success end end def test_update_each put( :update_each, :params => { :custom_field_id => @field.id, :custom_field_enumerations => { @bar.id.to_s => { :position => "1", :name => "Baz", :active => "1" }, @foo.id.to_s => { :position => "2", :name => "Foo", :active => "0" } } } ) assert_response :found @bar.reload assert_equal "Baz", @bar.name assert_equal true, @bar.active assert_equal 1, @bar.position @foo.reload assert_equal "Foo", @foo.name assert_equal false, @foo.active assert_equal 2, @foo.position end def test_destroy assert_difference 'CustomFieldEnumeration.count', -1 do delete( :destroy, :params => { :custom_field_id => @field.id, :id => @foo.id } ) assert_redirected_to "/custom_fields/#{@field.id}/enumerations" end assert_equal 1, @field.reload.enumerations.count enum = @field.enumerations.last assert_equal 'Bar', enum.name end def test_destroy_enumeration_in_use_should_display_destroy_form group = Group.generate! group.custom_field_values = {@field.id.to_s => @foo.id.to_s} group.save! assert_no_difference 'CustomFieldEnumeration.count' do delete( :destroy, :params => { :custom_field_id => @field.id, :id => @foo.id } ) assert_response :success assert_select 'select[name=?]', 'reassign_to_id' end end def test_destroy_enumeration_in_use_should_destroy_and_reassign_values group = Group.generate! group.custom_field_values = {@field.id.to_s => @foo.id.to_s} group.save! assert_difference 'CustomFieldEnumeration.count', -1 do delete( :destroy, :params => { :custom_field_id => @field.id, :id => @foo.id, :reassign_to_id => @bar.id } ) assert_response :found end assert_equal @bar.id.to_s, group.reload.custom_field_value(@field) end end redmine-6.0.5/test/functional/custom_fields_controller_test.rb000066400000000000000000000401371500112024600247510ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../test_helper' class CustomFieldsControllerTest < Redmine::ControllerTest def setup @request.session[:user_id] = 1 end def test_index get :index assert_response :success assert_select 'table.custom_fields' end def test_new_without_type_should_render_select_type get :new assert_response :success assert_select 'input[name=type]', CustomFieldsHelper::CUSTOM_FIELDS_TABS.size assert_select 'input[name=type][checked=checked]', 1 end def test_new_should_work_for_each_customized_class_and_format custom_field_classes.each do |klass| Redmine::FieldFormat.formats_for_custom_field_class(klass).each do |format| get( :new, :params => { :type => klass.name, :custom_field => { :field_format => format.name } } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'select[name=?]', 'custom_field[field_format]' do assert_select 'option[value=?][selected=selected]', format.name end assert_select 'input[type=hidden][name=type][value=?]', klass.name end end end end def test_new_should_have_string_default_format get( :new, :params => { :type => 'IssueCustomField' } ) assert_response :success assert_select 'select[name=?]', 'custom_field[field_format]' do assert_select 'option[value=?][selected=selected]', 'string' end end def test_new_issue_custom_field get( :new, :params => { :type => 'IssueCustomField' } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'select#custom_field_field_format[name=?]', 'custom_field[field_format]' do assert_select 'option[value=user]', :text => 'User' assert_select 'option[value=version]', :text => 'Version' end # Visibility assert_select 'input[type=radio][name=?]', 'custom_field[visible]', 2 assert_select 'input[type=checkbox][name=?]', 'custom_field[role_ids][]', 3 assert_select 'input[type=checkbox][name=?]', 'custom_field[project_ids][]', Project.count assert_select 'input[type=hidden][name=?]', 'custom_field[project_ids][]', 1 assert_select 'input[type=hidden][name=type][value=IssueCustomField]' end end def test_new_time_entry_custom_field get( :new, :params => { :type => 'TimeEntryCustomField' } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'select#custom_field_field_format[name=?]', 'custom_field[field_format]' do assert_select 'option[value=user]', :text => 'User' assert_select 'option[value=version]', :text => 'Version' end # Visibility assert_select 'input[type=radio][name=?]', 'custom_field[visible]', 2 assert_select 'input[type=checkbox][name=?]', 'custom_field[role_ids][]', 3 assert_select 'input[type=hidden][name=type][value=TimeEntryCustomField]' end end def test_new_project_custom_field get( :new, :params => { :type => 'ProjectCustomField' } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'select#custom_field_field_format[name=?]', 'custom_field[field_format]' do assert_select 'option[value=user]', :text => 'User' assert_select 'option[value=version]', :text => 'Version' end # Visibility assert_select 'input[type=radio][name=?]', 'custom_field[visible]', 2 assert_select 'input[type=checkbox][name=?]', 'custom_field[role_ids][]', 3 assert_select 'input[type=hidden][name=type][value=ProjectCustomField]' end end def test_new_version_custom_field get( :new, :params => { :type => 'VersionCustomField' } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'select#custom_field_field_format[name=?]', 'custom_field[field_format]' do assert_select 'option[value=user]', :text => 'User' assert_select 'option[value=version]', :text => 'Version' end # Visibility assert_select 'input[type=radio][name=?]', 'custom_field[visible]', 2 assert_select 'input[type=checkbox][name=?]', 'custom_field[role_ids][]', 3 assert_select 'input[type=hidden][name=type][value=VersionCustomField]' end end def test_new_time_entry_custom_field_should_not_show_trackers_and_projects get( :new, :params => { :type => 'TimeEntryCustomField' } ) assert_response :success assert_select 'form#custom_field_form' do assert_select 'input[name=?]', 'custom_field[tracker_ids][]', 0 assert_select 'input[name=?]', 'custom_field[project_ids][]', 0 end end def test_default_value_should_be_an_input_for_string_custom_field get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'string' } } ) assert_response :success assert_select 'input[name=?]', 'custom_field[default_value]' end def test_default_value_should_be_a_textarea_for_text_custom_field get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'text' } } ) assert_response :success assert_select 'textarea[name=?]', 'custom_field[default_value]' end def test_default_value_should_be_a_checkbox_for_bool_custom_field get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'bool' } } ) assert_response :success assert_select 'select[name=?]', 'custom_field[default_value]' do assert_select 'option', 3 end end def test_default_value_should_not_be_present_for_user_custom_field get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'user' } } ) assert_response :success assert_select '[name=?]', 'custom_field[default_value]', 0 end def test_setting_full_width_layout_shoul_be_present_only_for_long_text_issue_custom_field get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'text' } } ) assert_response :success assert_select '[name=?]', 'custom_field[full_width_layout]' get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'list' } } ) assert_response :success assert_select '[name=?]', 'custom_field[full_width_layout]', 0 get( :new, :params => { :type => 'TimeEntryCustomField', :custom_field => { :field_format => 'text' } } ) assert_response :success assert_select '[name=?]', 'custom_field[full_width_layout]', 0 end def test_new_js get( :new, :params => { :type => 'IssueCustomField', :custom_field => { :field_format => 'list' }, :format => 'js' }, :xhr => true ) assert_response :success assert_equal 'text/javascript', response.media_type assert_include '
    Cell
    ' assert_equal '
    Cell
    ', format(text) end def test_should_remove_unsafe_uris [ ['', ''], ['click me', '

    click me

    '], ].each do |text, html| assert_equal html, format(text) end end def test_should_escape_unwanted_tags [ [ %[

    sit
    amet <style>.foo { color: #fff; }</style> <script>alert("hello world");</script>

    ], %[sit
    amet ] ] ].each do |expected, input| assert_equal expected, format(input) end end def test_should_support_task_list text = <<~STR Task list: * [ ] Task 1 * [x] Task 2 STR expected = <<~EXPECTED

    Task list:

    • Task 1
    • Task 2
    EXPECTED assert_equal expected.gsub(%r{[\r\n\t]}, ''), format(text).gsub(%r{[\r\n\t]}, '').rstrip end private def assert_section_with_hash(expected, text, index) result = @formatter.new(text).get_section(index) assert_kind_of Array, result assert_equal 2, result.size assert_equal expected, result.first, "section content did not match" assert_equal ActiveSupport::Digest.hexdigest(expected), result.last, "section hash did not match" end end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/common_mark/markdown_filter_test.rb000066400000000000000000000025361500112024600315430ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../../test_helper' if Object.const_defined?(:CommonMarker) require 'redmine/wiki_formatting/common_mark/markdown_filter' class Redmine::WikiFormatting::CommonMark::MarkdownFilterTest < ActiveSupport::TestCase def filter(markdown) Redmine::WikiFormatting::CommonMark::MarkdownFilter.to_html(markdown) end # just a basic sanity test. more formatting tests in the formatter_test def test_should_render_markdown assert_equal "

    bold

    ", filter("**bold**") end end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/common_mark/sanitization_filter_test.rb000066400000000000000000000200011500112024600324200ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../../test_helper' if Object.const_defined?(:CommonMarker) require 'redmine/wiki_formatting/common_mark/sanitization_filter' class Redmine::WikiFormatting::CommonMark::SanitizationFilterTest < ActiveSupport::TestCase def filter(html) Redmine::WikiFormatting::CommonMark::SanitizationFilter.to_html(html, @options) end def setup @options = { } end def test_should_filter_tags input = %( dont blink) assert_equal %(foo dont blink), filter(input) end def test_should_sanitize_attributes input = %(link) assert_equal %(link), filter(input) end def test_should_allow_relative_links input = %(foo/bar) assert_equal input, filter(input) end def test_should_support_footnotes input = %(foo) assert_equal input, filter(input) input = %(
    1. footnote
    ) assert_equal input, filter(input) end def test_should_remove_invalid_ids input = %(foo) assert_equal %(foo), filter(input) input = %(
    1. footnote
    ) assert_equal %(
    1. footnote
    ), filter(input) end def test_should_allow_class_on_code_only input = %(

    bar

    ) assert_equal %(

    bar

    ), filter(input) input = %(foo) assert_equal input, filter(input) input = %(foo) assert_equal %(foo), filter(input) end def test_should_allow_links_with_safe_url_schemes %w(http https ftp ssh foo).each do |scheme| input = %(foo) assert_equal input, filter(input) end end def test_should_allow_mailto_links input = %(bar) assert_equal input, filter(input) end def test_should_remove_empty_link input = %(bar) assert_equal %(bar), filter(input) input = %(bar) assert_equal %(bar), filter(input) end # samples taken from the Sanitize test suite # rubocop:disable Layout/LineLength STRINGS = [ [ 'hello"', 'hello"' ], [ '', '' ], [ 'Lorem ipsum dolor sit
    amet ', 'Lorem ipsum dolor sit
    amet .foo { color: #fff; } ' ], [ 'Lorem
    dolor sit
    amet ', 'Lorem ipsum dolor sit
    amet <script>alert("hello world");' ] ] # rubocop:enable Layout/LineLength def test_should_sanitize_html_strings STRINGS.each do |input, expected| assert_equal expected, filter(input) end end # samples taken from the Sanitize test suite PROTOCOLS = { 'protocol-based JS injection: simple, no spaces' => [ 'foo', 'foo' ], 'protocol-based JS injection: simple, spaces before' => [ 'foo', 'foo' ], 'protocol-based JS injection: simple, spaces after' => [ 'foo', 'foo' ], 'protocol-based JS injection: simple, spaces before and after' => [ 'foo', 'foo' ], 'protocol-based JS injection: preceding colon' => [ 'foo', 'foo' ], 'protocol-based JS injection: UTF-8 encoding' => [ 'foo', 'foo' ], 'protocol-based JS injection: long UTF-8 encoding' => [ 'foo', 'foo' ], # rubocop:disable Layout/LineLength 'protocol-based JS injection: long UTF-8 encoding without semicolons' => [ 'foo', 'foo' ], # rubocop:enable Layout/LineLength 'protocol-based JS injection: hex encoding' => [ 'foo', 'foo' ], 'protocol-based JS injection: long hex encoding' => [ 'foo', 'foo' ], 'protocol-based JS injection: hex encoding without semicolons' => [ 'foo', 'foo' ], 'protocol-based JS injection: null char' => [ "", '' # '' ], 'protocol-based JS injection: invalid URL char' => [ '', '' ], 'protocol-based JS injection: spaces and entities' => [ '', '' # '' ], 'protocol whitespace' => [ '', '' ], 'data images sources' => [ '', '' ], 'data URIs' => [ 'XSS', 'XSS' ], 'vbscript URIs' => [ 'XSS', 'XSS' ], } PROTOCOLS.each do |name, strings| test "should not allow #{name}" do input, expected = *strings assert_equal expected, filter(input) end end end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/common_mark/syntax_highlight_filter_test.rb000066400000000000000000000051271500112024600332750ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../../test_helper' if Object.const_defined?(:CommonMarker) require 'redmine/wiki_formatting/common_mark/syntax_highlight_filter' class Redmine::WikiFormatting::CommonMark::SyntaxHighlightFilterTest < ActiveSupport::TestCase def filter(html) Redmine::WikiFormatting::CommonMark::SyntaxHighlightFilter.to_html(html, @options) end def setup @options = { } end def test_should_highlight_supported_language input = <<~HTML
    
            def foo
            end
            
    HTML expected = <<~HTML
    
            def foo
            end
            
    HTML assert_equal expected, filter(input) end def test_should_highlight_supported_language_with_special_chars input = <<~HTML
    
            int i;
            
    HTML expected = <<~HTML
    
            int i;
            
    HTML assert_equal expected, filter(input) end def test_should_strip_code_class_and_preserve_data_language_attr_for_unknown_language input = <<~HTML
    
            def foo
            end
            
    HTML expected = <<~HTML
    
            def foo
            end
            
    HTML assert_equal expected, filter(input) end def test_should_ignore_code_without_class input = <<~HTML
    
            def foo
            end
            
    HTML assert_equal input, filter(input) end end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/html_parser_test.rb000066400000000000000000000044321500112024600263670ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../test_helper' class Redmine::WikiFormatting::HtmlParserTest < ActiveSupport::TestCase def setup @parser = Redmine::WikiFormatting::HtmlParser end def test_convert_line_breaks assert_equal( "A html snippet with\na new line.", @parser.to_text('

    A html snippet with
    a new line.

    ') ) end def test_should_remove_style_tags_from_body assert_equal( "Text", @parser.to_text('Text') ) end def test_should_remove_preceding_whitespaces to_test = { "
    blocks with
    \n

    \n preceding whitespaces\n

    " => "blocks with\n\npreceding whitespaces", "
    blocks without
    \n

    \npreceding whitespaces\n

    " => "blocks without\n\npreceding whitespaces", " span with\n preceding whitespaces" => "span with preceding whitespaces", "span without\npreceding whitespaces" => "span without preceding whitespaces" } to_test.each do |html, expected| assert_equal expected, @parser.to_text(html) end end def test_should_remove_space_of_beginning_of_line str = <<~HTML
    th1 th2
    td1 td2
    HTML assert_equal( "th1\n\nth2\n\ntd1\n\ntd2", @parser.to_text(str) ) end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/html_sanitizer_test.rb000066400000000000000000000027361500112024600271100ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../test_helper' class Redmine::WikiFormatting::HtmlSanitizerTest < ActiveSupport::TestCase def setup @sanitizer = Redmine::WikiFormatting::HtmlSanitizer end def test_should_allow_links_with_safe_url_schemes_and_append_external_class %w(http https ftp ssh foo).each do |scheme| input = %(foo) assert_equal %(foo), @sanitizer.call(input) end end def test_should_reject_links_with_unsafe_url_schemes input = %(foo) assert_equal "foo", @sanitizer.call(input) end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/macros_test.rb000066400000000000000000000440441500112024600253360ustar00rootroot00000000000000# frozen_string_literal: true # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../test_helper' class Redmine::WikiFormatting::MacrosTest < Redmine::HelperTest include ActionView::Helpers::TextHelper include ActionView::Helpers::SanitizeHelper include ERB::Util extend ActionView::Helpers::SanitizeHelper::ClassMethods def setup super @project = nil end def teardown end def test_macro_registration Redmine::WikiFormatting::Macros.register do macro :foo do |obj, args| "Foo: #{args.size} (#{args.join(',')}) (#{args.class.name})" end end with_settings :text_formatting => 'textile' do assert_equal '

    Foo: 0 () (Array)

    ', textilizable('{{foo}}') assert_equal '

    Foo: 0 () (Array)

    ', textilizable('{{foo()}}') assert_equal '

    Foo: 1 (arg1) (Array)

    ', textilizable('{{foo(arg1)}}') assert_equal '

    Foo: 2 (arg1,arg2) (Array)

    ', textilizable('{{foo(arg1, arg2)}}') end end def test_macro_registration_parse_args_set_to_false_should_disable_arguments_parsing Redmine::WikiFormatting::Macros.register do macro :bar, :parse_args => false do |obj, args| "Bar: (#{args}) (#{args.class.name})" end end with_settings :text_formatting => 'textile' do assert_equal '

    Bar: (args, more args) (String)

    ', textilizable('{{bar(args, more args)}}') assert_equal '

    Bar: () (String)

    ', textilizable('{{bar}}') assert_equal '

    Bar: () (String)

    ', textilizable('{{bar()}}') end end def test_macro_registration_with_3_args_should_receive_text_argument Redmine::WikiFormatting::Macros.register do macro :baz do |obj, args, text| "Baz: (#{args.join(',')}) (#{text.class.name}) (#{text})" end end with_settings :text_formatting => 'textile' do assert_equal '

    Baz: () (NilClass) ()

    ', textilizable('{{baz}}') assert_equal '

    Baz: () (NilClass) ()

    ', textilizable('{{baz()}}') assert_equal "

    Baz: () (String) (line1\nline2)

    ", textilizable("{{baz()\nline1\nline2\n}}") assert_equal "

    Baz: (arg1,arg2) (String) (line1\nline2)

    ", textilizable("{{baz(arg1, arg2)\nline1\nline2\n}}") end end def test_macro_name_with_upper_case with_settings :text_formatting => 'textile' do Redmine::WikiFormatting::Macros.macro(:UpperCase) {|obj, args| 'Upper'} assert_equal '

    Upper

    ', textilizable('{{UpperCase}}') end end def test_multiple_macros_on_the_same_line Redmine::WikiFormatting::Macros.macro :foo do |obj, args| args.any? ? "args: #{args.join(',')}" : "no args" end with_settings :text_formatting => 'textile' do assert_equal '

    no args no args

    ', textilizable('{{foo}} {{foo}}') assert_equal '

    args: a,b no args

    ', textilizable('{{foo(a,b)}} {{foo}}') assert_equal '

    args: a,b args: c,d

    ', textilizable('{{foo(a,b)}} {{foo(c,d)}}') assert_equal '

    no args args: c,d

    ', textilizable('{{foo}} {{foo(c,d)}}') end end def test_macro_should_receive_the_object_as_argument_when_with_object_and_attribute issue = Issue.find(1) issue.description = "{{hello_world}}" with_settings :text_formatting => 'textile' do assert_equal( '

    Hello world! Object: Issue, Called with no argument and no block of text.

    ', textilizable(issue, :description) ) end end def test_macro_should_receive_the_object_as_argument_when_called_with_object_option with_settings :text_formatting => 'textile' do text = '{{hello_world}}' assert_equal( '

    Hello world! Object: Issue, Called with no argument and no block of text.

    ', textilizable(text, :object => Issue.find(1)) ) end end def test_extract_macro_options_should_with_args options = extract_macro_options(["arg1", "arg2"], :foo, :size) assert_equal([["arg1", "arg2"], {}], options) end def test_extract_macro_options_should_with_options options = extract_macro_options(["foo=bar", "size=2"], :foo, :size) assert_equal([[], {:foo => "bar", :size => "2"}], options) end def test_extract_macro_options_should_with_args_and_options options = extract_macro_options(["arg1", "arg2", "foo=bar", "size=2"], :foo, :size) assert_equal([["arg1", "arg2"], {:foo => "bar", :size => "2"}], options) end def test_extract_macro_options_should_parse_options_lazily options = extract_macro_options(["params=x=1&y=2"], :params) assert_equal([[], {:params => "x=1&y=2"}], options) end def test_macro_exception_should_be_displayed Redmine::WikiFormatting::Macros.macro :exception do |obj, args| raise "My exception's message" end text = "{{exception}}" assert_include( '
    Error executing the exception macro (My exception's message)
    ', textilizable(text) ) end def test_macro_arguments_should_not_be_parsed_by_formatters text = '{{hello_world(http://www.redmine.org, #1)}}' assert_include 'Arguments: http://www.redmine.org, #1', textilizable(text) end def test_exclamation_mark_should_not_run_macros with_settings :text_formatting => 'textile' do text = '!{{hello_world}}' assert_equal '

    {{hello_world}}

    ', textilizable(text) end end def test_exclamation_mark_should_escape_macros with_settings :text_formatting => 'textile' do text = '!{{hello_world()}}' assert_equal '

    {{hello_world(<tag>)}}

    ', textilizable(text) end end def test_unknown_macros_should_not_be_replaced with_settings :text_formatting => 'textile' do text = '{{unknown}}' assert_equal '

    {{unknown}}

    ', textilizable(text) end end def test_unknown_macros_should_parsed_as_text with_settings :text_formatting => 'textile' do text = '{{unknown(*test*)}}' assert_equal '

    {{unknown(test)}}

    ', textilizable(text) end end def test_unknown_macros_should_be_escaped with_settings :text_formatting => 'textile' do text = '{{unknown()}}' assert_equal '

    {{unknown(<tag>)}}

    ', textilizable(text) end end def test_html_safe_macro_output_should_not_be_escaped with_settings :text_formatting => 'textile' do Redmine::WikiFormatting::Macros.macro :safe_macro do |obj, args| ''.html_safe end assert_equal '

    ', textilizable('{{safe_macro}}') end end def test_macro_hello_world text = "{{hello_world}}" assert textilizable(text).include?('Hello world!') end def test_macro_hello_world_should_escape_arguments text = "{{hello_world()}}" assert_include 'Arguments: <tag>', textilizable(text) end def test_macro_macro_list text = "{{macro_list}}" assert_match %r{hello_world}, textilizable(text) end def test_macro_include @project = Project.find(1) # include a page of the current project wiki text = "{{include(Another page)}}" assert_include 'This is a link to a ticket', textilizable(text) @project = nil # include a page of a specific project wiki text = "{{include(ecookbook:Another page)}}" assert_include 'This is a link to a ticket', textilizable(text) text = "{{include(ecookbook:)}}" assert_include 'CookBook documentation', textilizable(text) text = "{{include(unknowidentifier:somepage)}}" assert_include 'Page not found', textilizable(text) end def test_macro_collapse text = "{{collapse\n*Collapsed* block of text\n}}" with_locale 'en' do with_settings :text_formatting => 'textile' do result = textilizable(text) assert_select_in result, 'div.collapsed-text' assert_select_in result, 'strong', :text => 'Collapsed' assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show' assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide' end end end def test_macro_collapse_with_one_arg text = "{{collapse(Example)\n*Collapsed* block of text\n}}" with_settings :text_formatting => 'textile' do result = textilizable(text) assert_select_in result, 'div.collapsed-text' assert_select_in result, 'strong', :text => 'Collapsed' assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Example' assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Example' end end def test_macro_collapse_with_two_args text = "{{collapse(Show example, Hide example)\n*Collapsed* block of text\n}}" with_settings :text_formatting => 'textile' do result = textilizable(text) assert_select_in result, 'div.collapsed-text' assert_select_in result, 'strong', :text => 'Collapsed' assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Show example' assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide example' end end def test_macro_collapse_with_arg_contains_comma text = %|{{collapse("Click here, to see the example", Hide example)\n*Collapsed* block of text\n}}| result = textilizable(text) assert_select_in result, 'a.collapsible.icon-collapsed', :text => 'Click here, to see the example' assert_select_in result, 'a.collapsible.icon-expanded', :text => 'Hide example' end def test_macro_collapse_should_not_break_toc set_language_if_valid 'en' text = <<~RAW {{toc}} h1. Title {{collapse(Show example, Hide example) h2. Heading }}" RAW expected_toc = '' with_settings :text_formatting => 'textile' do assert_include expected_toc, textilizable(text).gsub(/[\r\n]/, '') end end def test_macro_child_pages expected = "

    \n

    " @project = Project.find(1) with_settings :text_formatting => 'textile' do # child pages of the current wiki page assert_equal expected, textilizable('{{child_pages}}', :object => WikiPage.find(2).content) # child pages of another page assert_equal expected, textilizable('{{child_pages(Another_page)}}', :object => WikiPage.find(1).content) @project = Project.find(2) assert_equal expected, textilizable('{{child_pages(ecookbook:Another_page)}}', :object => WikiPage.find(1).content) end end def test_macro_child_pages_with_parent_option expected = "

    \n

    " @project = Project.find(1) with_settings :text_formatting => 'textile' do # child pages of the current wiki page assert_equal expected, textilizable('{{child_pages(parent=1)}}', :object => WikiPage.find(2).content) # child pages of another page assert_equal( expected, textilizable('{{child_pages(Another_page, parent=1)}}', :object => WikiPage.find(1).content) ) @project = Project.find(2) assert_equal( expected, textilizable('{{child_pages(ecookbook:Another_page, parent=1)}}', :object => WikiPage.find(1).content) ) end end def test_macro_child_pages_with_depth_option expected = "

    \n

    " @project = Project.find(1) with_settings :text_formatting => 'textile' do assert_equal expected, textilizable("{{child_pages(depth=1)}}", :object => WikiPage.find(2).content) end end def test_macro_child_pages_without_wiki_page_should_fail assert_match /can be called from wiki pages only/, textilizable("{{child_pages}}") end def test_macro_thumbnail with_settings :text_formatting => 'textile' do link = link_to('testfile.PNG'.html_safe, '/attachments/17', :class => 'thumbnail', :title => 'testfile.PNG') assert_equal "

    #{link}

    ", textilizable('{{thumbnail(testfile.png)}}', :object => Issue.find(14)) end end def test_macro_thumbnail_with_full_path with_settings :text_formatting => 'textile' do link = link_to('testfile.PNG'.html_safe, 'http://test.host/attachments/17', :class => 'thumbnail', :title => 'testfile.PNG') assert_equal "

    #{link}

    ", textilizable('{{thumbnail(testfile.png)}}', :object => Issue.find(14), :only_path => false) end end def test_macro_thumbnail_with_size with_settings :text_formatting => 'textile' do link = link_to('testfile.PNG'.html_safe, '/attachments/17', :class => 'thumbnail', :title => 'testfile.PNG') assert_equal "

    #{link}

    ", textilizable('{{thumbnail(testfile.png, size=400)}}', :object => Issue.find(14)) end end def test_macro_thumbnail_with_title with_settings :text_formatting => 'textile' do link = link_to('testfile.PNG'.html_safe, '/attachments/17', :class => 'thumbnail', :title => 'Cool image') assert_equal "

    #{link}

    ", textilizable('{{thumbnail(testfile.png, title=Cool image)}}', :object => Issue.find(14)) end end def test_macro_thumbnail_with_invalid_filename_should_fail assert_include 'test.png not found', textilizable("{{thumbnail(test.png)}}", :object => Issue.find(14)) end def test_macros_should_not_be_executed_in_pre_tags text = <<~RAW {{hello_world(foo)}}
          {{hello_world(pre)}}
          !{{hello_world(pre)}}
          
    {{hello_world(bar)}} RAW expected = <<~EXPECTED

    Hello world! Object: NilClass, Arguments: foo and no block of text.

          {{hello_world(pre)}}
          !{{hello_world(pre)}}
          

    Hello world! Object: NilClass, Arguments: bar and no block of text.

    EXPECTED with_settings :text_formatting => 'textile' do assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(text).gsub(%r{[\r\n\t]}, '') end end def test_macros_should_be_escaped_in_pre_tags with_settings :text_formatting => 'textile' do text = '
    {{hello_world()}}
    ' assert_equal '
    {{hello_world(<tag>)}}
    ', textilizable(text) end end def test_macros_should_not_mangle_next_macros_outputs with_settings :text_formatting => 'textile' do text = '{{macro(2)}} !{{macro(2)}} {{hello_world(foo)}}' assert_equal( '

    {{macro(2)}} {{macro(2)}} Hello world! Object: NilClass, Arguments: foo and no block of text.

    ', textilizable(text) ) end end def test_macros_with_text_should_not_mangle_following_macros text = <<~RAW {{hello_world Line of text }} {{hello_world Another line of text }} RAW expected = <<~EXPECTED

    Hello world! Object: NilClass, Called with no argument and a 12 bytes long block of text.

    Hello world! Object: NilClass, Called with no argument and a 20 bytes long block of text.

    EXPECTED assert_equal expected.gsub(%r{[\r\n\t]}, ''), textilizable(text).gsub(%r{[\r\n\t]}, '') end def test_macro_should_support_phrase_modifiers with_settings :text_formatting => 'textile' do text = '*{{hello_world}}*' assert_match %r|\A

    Hello world!.*

    \z|, textilizable(text) end end def test_issue_macro_should_not_render_link_if_not_visible with_settings :text_formatting => 'textile' do assert_equal '

    #123

    ', textilizable('{{issue(123)}}') end end def test_issue_macro_should_render_link_to_issue issue = Issue.find(1) with_settings :text_formatting => 'textile' do assert_equal( %{

    Bug #1: #{issue.subject}

    }, textilizable('{{issue(1)}}') ) assert_equal( %{

    eCookbook - } + %{Bug #1: #{issue.subject}

    }, textilizable('{{issue(1, project=true)}}') ) end end end redmine-6.0.5/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb000066400000000000000000000602001500112024600276030ustar00rootroot00000000000000# frozen_string_literal: true # # Redmine - project management software # Copyright (C) 2006- Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../test_helper' class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase def setup @formatter = Redmine::WikiFormatting::Textile::Formatter end MODIFIERS = { "*" => 'strong', # bold "_" => 'em', # italic "+" => 'ins', # underline "-" => 'del', # deleted "^" => 'sup', # superscript "~" => 'sub' # subscript } def test_modifiers assert_html_output( '*bold*' => 'bold', 'before *bold*' => 'before bold', '*bold* after' => 'bold after', '*two words*' => 'two words', '*two*words*' => 'two*words', '*two * words*' => 'two * words', '*two* *words*' => 'two words', '*(two)* *(words)*' => '(two) (words)' ) end def test_modifiers_combination MODIFIERS.each do |m1, tag1| MODIFIERS.each do |m2, tag2| next if m1 == m2 text = "#{m2}#{m1}Phrase modifiers#{m1}#{m2}" html = "<#{tag2}><#{tag1}>Phrase modifiers" assert_html_output text => html end end end def test_modifier_should_work_with_one_non_ascii_character assert_html_output "*Ä*" => "Ä" end def test_styles # single style assert_html_output( { 'p{color:red}. text' => '

    text

    ', 'p{color:red;}. text' => '

    text

    ', 'p{color: red}. text' => '

    text

    ', 'p{color:#f00}. text' => '

    text

    ', 'p{color:#ff0000}. text' => '

    text

    ', 'p{border:10px}. text' => '

    text

    ', 'p{border:10}. text' => '

    text

    ', 'p{border:10%}. text' => '

    text

    ', 'p{border:10em}. text' => '

    text

    ', 'p{border:1.5em}. text' => '

    text

    ', 'p{border-left:1px}. text' => '

    text

    ', 'p{border-right:1px}. text' => '

    text

    ', 'p{border-top:1px}. text' => '

    text

    ', 'p{border-bottom:1px}. text' => '

    text

    ', 'p{width:50px}. text' => '

    text

    ', 'p{max-width:100px}. text' => '

    text

    ', 'p{height:40px}. text' => '

    text

    ', 'p{max-height:80px}. text' => '

    text

    ', }, false ) # multiple styles assert_html_output( { 'p{color:red; border-top:1px}. text' => '

    text

    ', 'p{color:red ; border-top:1px}. text' => '

    text

    ', 'p{color:red;border-top:1px}. text' => '

    text

    ', }, false ) # styles with multiple values assert_html_output( { 'p{border:1px solid red;}. text' => '

    text

    ', 'p{border-top-left-radius: 10px 5px;}. text' => '

    text

    ', }, false ) end def test_invalid_styles_should_be_filtered assert_html_output( { 'p{invalid}. text' => '

    text

    ', 'p{invalid:red}. text' => '

    text

    ', 'p{color:(red)}. text' => '

    text

    ', 'p{color:red;invalid:blue}. text' => '

    text

    ', 'p{invalid:blue;color:red}. text' => '

    text

    ', 'p{color:"}. text' => '

    p{color:"}. text

    ', }, false ) end def test_inline_code assert_html_output( 'this is @some code@' => 'this is some code', '@@' => '<Location /redmine>' ) end def test_lang_attribute assert_html_output( '*[fr]French*' => 'French', '*[fr-fr]French*' => 'French', '*[fr_fr]French*' => 'French' ) end def test_lang_attribute_should_ignore_invalid_value assert_html_output( '*[fr3]French*' => '[fr3]French' ) end def test_nested_lists raw = <<~RAW # Item 1 # Item 2 ** Item 2a ** Item 2b # Item 3 ** Item 3a RAW expected = <<~EXPECTED
    1. Item 1
    2. Item 2
      • Item 2a
      • Item 2b
    3. Item 3
      • Item 3a
    EXPECTED assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '') raw = <<~RAW * Item-1 * Item-1a * Item-1b RAW expected = <<~EXPECTED
    • Item-1
      • Item-1a
      • Item-1b
    EXPECTED assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '') end def test_escaping assert_html_output( 'this is a