------ art_39197_11042111.1176726100043 Content-Type: multipart/alternative; boundary --- art_39198_28755430.1176726100043" ------ art_39198_28755430.1176726100043 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline First time submitting a patch so forgive any missteps on my part. This is a new feature proposal for ruby's CGI class. The basic idea is to support an array value for 'class' in the attributes for the helper HTML generation helper methods. My proposed change is more generic than simply supporting an Array: if the value responds to the "join" method then it is invoked to produce the final attribute value string. So: cgi GI.new("html4") cgi.td('class' 'first', 'second']) { "hey there" } would be rendered as <TD classirst second">hey there</TD> My motivation is simple. I often want to build up the attributes in multiple methods or classes which are then passed into the HTML helper method for final rendering, and I like to use multiple CSS class values for different aspects of the final page. It's handy to be able to manage the various CSS classes as a list rather than one big string. I couldn't find any existing test cases for cgi.rb so I started my own. They cover (minimally) the before and after behaviour around this change but I'm happy to flesh them out further based on feedback. Regards James Greenfield ---------------------- ChangeLog: Mon Apr 16 21:01:02 2007 James Greenfield < james.greenfield / gmail.com> * lib/cgi.rb: support for multiple CSS class values specified as an array. Patch with testcases: Index: lib/cgi.rb --- lib/cgi.rb (revision 12182) +++ lib/cgi.rb (working copy) @@ -1305,7 +1305,11 @@ if true value "" else - ' + CGI::escapeHTML(value) + '"' + if name 'class' + ' + CGI::escapeHTML( value.respond_to?(:join) ? value.join(' ') : value) + '"' + else + ' + CGI::escapeHTML(value) + '"' + end end }.join + ">" END Index: test/cgi/test_cgi.rb --- test/cgi/test_cgi.rb (revision 0) +++ test/cgi/test_cgi.rb (revision 0) @@ -0,0 +1,75 @@ +require 'test/unit' + +require 'cgi' + +module CGITestSupport + def d(data) + data + end +end + + +class TestCGI < Test::Unit::TestCase + include CGITestSupport + + class << self + include CGITestSupport + end + +public + + def setup + end + + def teardown + end + + #### CSV::Reader unit test + + def test_without_attributes + ENV['REQUEST_METHOD'] POST' + ENV['CONTENT_LENGTH'] 0' + cgi GI.new('html4') + + test_each_tag(cgi) + end + + def test_css_class_as_string + ENV['REQUEST_METHOD'] POST' + ENV['CONTENT_LENGTH'] 0' + cgi GI.new('html4') + + test_each_tag(cgi, 'class' stringvalue') { |fragment, elt| assert_equal(fragment, "<#{elt} class stringvalue\">content</#{elt}>") } + end + + def test_css_class_as_array + ENV['REQUEST_METHOD'] POST' + ENV['CONTENT_LENGTH'] 0' + cgi GI.new('html4') + + test_each_tag(cgi, 'class' 'string1', 'string2']) { |fragment, elt| assert_equal(fragment, "<#{elt} class string1 string2\">content</#{elt}>") } + end + + private + + def test_each_tag(cgi, attrs ) + # This is not a complete list of elements, just the ones that + # behave in a "predictable" way (i.e. don't have default attributes). + # In an ideal world we'd test every possible tag. + tags w[ TT I B BIG SMALL SUB SUP EM STRONG + DFN CODE SAMP KBD VAR CITE ADDRESS DIV MAP + PRE DL OL UL SELECT table TITLE + STYLE SCRIPT H1 H2 H3 H4 H5 H6 BLOCKQUOTE + CAPTION ] + %w[HEAD BODY P DT DD LI OPTION tr th td] + tags.each do |tag| + elt ag.upcase + if (attrs.empty?) + fragment gi.send(tag.downcase) { "content" } + assert_equal(fragment, "<#{elt}>content</#{elt}>") + else + fragment gi.send(tag.downcase, attrs) { "content" } + yield(fragment, elt) + end + end + end +end ------ art_39198_28755430.1176726100043 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline <span class mail_quote"></span><span class mail_quote"></span>First time submitting a patch so forgive any missteps on my part. This is a new feature proposal for ruby's CGI class. The basic idea is to support an array value for 'class' in the attributes for the helper HTML generation helper methods. My proposed change is more generic than simply supporting an Array: if the value responds to the "join" method then it is invoked to produce the final attribute value string. <br><div><span class¡Ö ¡¬¥¢¥¢¥¢¥ª¥¨¥¥¥¯¥¦¥¦¡¬¡¼¡Ö¥»¥·¥»¥â¥³¥·¥»¥·¥» ¥Ì¥Î¥ç¥£¥ò¥µ¥¨¥ò¥µ¥¥¥·¥»¥ç¥£¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ ¥µ¥í¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ¥ã ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ¥ó¥¥ ¥ò¥µ ¥ò¥µ ¥·¥»¥·¥» ¥·¥» ¥·¥»¥ò¥µ¥ä¥È ¥µ ¥ò¥µ¥ò¥µ ¥ò¥µ¥Ã¥ä¥È¥ò¥µ ¥·¥»¥·¥»¥Ø ¥ç ¥Î ¥Í¥ä¥Ø¥Õ ¥ã ¥Î ¥Æ¥â¥â ¥ç ¥Î¥ò¡×¥¦¥±¥µ ¥Æ¥â¥â ¥ç ¥·¥»¥·¥»¥Î ¥ò¡×¥¦¥±¥µ ¥ç ¥Î ¥ç ¥ä ¥£¥¥ ¥Î¥ò¡×¥¦¥±¥µ ¥ç¥·¥» ¥·¥»¥á¥·¥»¥Ï ¥Ì¥·¥»¥·¥»¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥å¥·¥»¥·¥»¥Æ¥Õ¥³¥·¥»¥Ø ¥Á ¥¢¥« ¥¤¥¢¥³¡¼¥¢¥³¡¼¥¤ ¥¤¡¼¡¼¥¥ò¥µ ¥Ï ¥Ì¥ò¥µ ¥ò¥µ¥· ¥³¥ç¥¿¥ç¡Ö ¡Ö ¥ç¥ç¥Þ¥Ê¥Õ¥£¥ã¥ã¥¥¡Ö¥» ¥ç¥¿¥ç¥·¥Ã¥»¥ò¥µ¥·¥»¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥§ ¥Ã¥ç¥³ ¥Æ¥â¥â ¥ç ¥·¥»¥·¥»¥ß ¥³¥·¥»¥·¥»¥Î¥³ ¥Ã¥ç¥·¥» ¥»¥å¥å¥å ¥Ã¥ç¥ò¥µ ¥£ ¥¢¥¤¥¢¥¯¥¤¥¥¥·¥»¥©¥©¥© ¥Ã¥ç¥ò¥µ ¥£ ¥¥¥·¥»¥¿¥¿ ¥å¥¢¥¦¡¼¥ª¥ã¥ ¥©¥¢¥¦¡¼¥ª¥ã¥¢¥¢ ¥¿¥¿ ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ò¥µ¥ò¥µ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥å¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ò¡×¥¦¥±¥µ ¥µ¥ò¡×¥¦¥±¥µ ¥© ¥Æ¥Ì¥Î¥³¥³¥Í¥ä¥Ø¥Õ¥£¥¥ ¥© ¥ò¡×¥¦¥±¥µ¥ò¥µ¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ò¡×¥¦¥±¥µ ¥µ¥ò¡×¥¦¥±¥µ ¥© ¥Æ¥Ì¥Î¥³¥³¥Í¥ä¥Ø¥Õ¥£ ¥ç¡¬¥½¥£¥³¥¥ ¥½ ¥ç¥£¥ò¡×¥¦¥±¥µ ¥ò¡×¥¦¥±¥µ¥¥ ¥³ ¥¥ ¥© ¥ò¡×¥¦¥±¥µ¥ò¥µ¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ò¡×¥¦¥±¥µ ¥µ¥ò¡×¥¦¥±¥µ ¥© ¥Æ¥Ì¥Î¥³¥³¥Í¥ä¥Ø¥Õ¥£¥¥ ¥© ¥ò¡×¥¦¥±¥µ¥ò¥µ¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ç ¥© ¥ò¥µ¥ò¥µ¥ò¥µ¥·¥»¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥È¥·¥»¥Î¥³ ¥Ã¥Ã¡¬¥ç¥·¥» ¥»¥å¥å¥å ¥Ã¥Ã¡¬¥ç¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥£ ¡¼¥¥¥·¥»¥©¥©¥© ¥Ã¥Ã¡¬¥ç¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥£ ¡¼¥¥ ¥·¥»¥¿¥¿ ¥å¡¼¥ã¡¼ ¥©¥¢¥ã¥¥ª ¥¿¥¿¥·¥»¥© ¥ò¡×¥¦¥±¥µ¥Ã¥ò¡×¥¦¥±¥µ¥·¥»¥©¥·¥»¥© ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ¥·¥»¥©¥·¥»¥© ¥Æ¥Ì¥Î¥ä¥â¥·¥»¥©¥ò¥µ ¥£¥¥¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥·¥»¥©¥·¥»¥© ¥ä¥Æ¥Ì¥Î ¥ò¥µ ¥ä¥³¥³¥æ¥³¥³¥ä¥Æ¥·¥» ¥©¥ò¥µ ¥Æ¥Ì¥Î¥ä¥â¥·¥»¥©¥·¥»¥©¥ò¥µ ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Æ¥Ì¥Î¥ä¥â¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥·¥»¥©¥·¥»¥©¥ò¥µ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¡×¡×¡×¡× ¥Æ¥â¥è¥³¥³¥á ¥·¥» ¥© ¥·¥»¥©¥ò¥µ ¡¬¡¬¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥á¥Ê¥à¥æ¥Ê¥â¥ä¡¬¥Ø¥Ê¥ä¥Í¥Þ¥È¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¥ß¥Þ¥â¥ä¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥Æ¥Þ¥Û¥ä¥Ê¥Û¥ä¡¬¥Õ¥Ê¥Û¥Ì¥ä¥Í¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¡¼¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ì¥Î¥ç¥£¥ò¡×¥¦¥±¥µ¥¨¥ò¡×¥¦¥±¥µ¥¥¥·¥»¥©¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡¬¡¬¥£¥¥¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¡¬¡¬¡¬¡¬¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥á¥Ê¥à¥æ¥Ê¥â¥ä¡¬¥Ø¥Ê¥ä¥Í¥Þ¥È¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¥ß¥Þ¥â¥ä¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥Æ¥Þ¥Û¥ä¥Ê¥Û¥ä¡¬¥Õ¥Ê¥Û¥Ì¥ä¥Í¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¡¼¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ì¥Î¥ç¥£¥ò¡×¥¦¥±¥µ¥¨¥ò¡×¥¦¥±¥µ¥¥¥·¥»¥©¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡¬¡¬¥£¥ã ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ ¥µ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ¥¥ ¥ã ¡¬¥£¥ã ¥ò¥µ¥ò¥µ¡× ¥µ¥ï¥ò¥µ¥ò¥µ¥ò¥µ¥Ã¡×¥ò¥µ¥ò¥µ¥¥ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¡¬¡¬¡¬¡¬¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥á¥Ê¥à¥æ¥Ê¥â¥ä¡¬¥Ø¥Ê¥ä¥Í¥Þ¥È¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¥ß¥Þ¥â¥ä¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ê¥Û¥è¥í¥ò¡×¥¦¥±¥µ¥Æ¥Þ¥Û¥ä¥Ê¥Û¥ä¡¬¥Õ¥Ê¥Û¥Ì¥ä¥Í¥ò¡×¥¦¥±¥µ¥ó ¡×¥¦¥±¥µ¡¼¥ò¡×¥¦¥±¥µ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥Ì¥Î¥ç¥£¥ò¡×¥¦¥±¥µ¥¨¥ò¡×¥¦¥±¥µ¥¥¥·¥»¥©¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡¬¡¬¥£¥ã ¥ò¡×¥¦¥±¥µ¥ò¡×¥¦¥±¥µ ¥µ¥í¥ò¡×¥¦¥±¥µ¥¢¥ò¡×¥¦¥±¥µ¥ã ¥ò¡×¥¦¥±¥µ¥¤¥ò¡×¥¦¥±¥µ¥ó¥¥ ¥ã ¡¬¥£¥ã ¥ò¥µ¥ò¥µ¡× ¥µ¥¢ ¥¤¥ï¥ò¥µ¥ò¥µ¥ò¥µ¥Ã¡×¥ò¥µ¥ò¥µ¥¥ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥©¥ò¥µ ¡¬¡¬¥£¥ã ¥¥¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡× ¥ä ¥ã ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡× ¥ò¥µ¥ò¥µ ¥£¥ç¥ç ¥ò¡×¥¦¥±¥µ ¥¥¥ç ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¡× ¥Î ¥ò¡×¥¦¥±¥µ ¥ç¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥í ¥ä¥ä ¥Î ¥Ä ¥Ä¥Î¥Ì ¥â¥Ø¥Á¥Õ¥Õ ¥â¥æ¥Ä ¥â¥æ¥ß ¥Ê¥Ø ¥â¥ä¥á¥Þ¥Û¥Ì¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥È¥Ë¥Û ¥Æ¥Þ¥È¥Ê ¥â¥Á¥Ø¥ß ¥Ò¥Ä¥È ¥è¥Á¥á ¥Æ¥Î¥ä¥Ê ¥Á¥È¥È¥á¥Ê¥â¥â ¥È¥Î¥è ¥Ø¥Á¥ß¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ß¥á¥Ê ¥È¥Õ ¥Þ¥Õ ¥æ¥Õ ¥â¥Ê¥Õ¥Ê¥Æ¥ä ¥ä¥Î¥ä¥Õ¥Ê¥·¥» ¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥â¥ä¥ë¥Õ¥Ê ¥â¥Æ¥á¥Î¥ß¥ä ¥Í¥¢ ¥Í¥¤ ¥Í¥¦ ¥Í¥¨ ¥Í¥ª ¥Í¥« ¥Ä¥Õ¥Þ¥Æ¥Ò¥à¥æ¥Þ¥ä¥Ê¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥Æ¥Á¥ß¥ä¥Î¥Þ¥Û ¥ó ¥© ¡¦¥í¥Í¥Ê¥Á¥È ¥Ä¥Þ¥È¥ë ¥ß ¥È¥ä ¥È¥È ¥Õ¥Î ¥Þ¥ß¥ä¥Î¥Þ¥Û ¥ó¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥ç ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ç¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥£¥ç¥½¥¥¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ç¥£¥ç¥¥ ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¡¬¥£¥ã ¥ò¥µ¥ò¥µ¡×¥ò¥µ¥ò¥µ¥Ã¡×¥ò¥µ¥ò¥µ¥¥¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥ç¥£¥ç¥ã ¥¥ ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥£¥ã ¥¥¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ¥ò¥µ¥ò¥µ ¥·¥»¥©¥ò¥µ ¥·¥»¥©¥·¥»¥·¥»¥·¥»¥·¥»¥·¥»¥·¥» ¥· ¡Ö¥» ¥·¥Ã¥»¥·¥Ã¥»¥· ¡Ö¥» ¥å¥å¥å¥å¥å¥å ¡¬¥¦¥±¥¢¥±¥¯¡¬¥¤¥¯¥¥ª¥ª¥¨¥¦¡¼¥ç¥¢¥¢¥¥«¥¥¤¥«¥¢¡¼¡¼¡¼¥¨¥¦¥å¥å ¥å¥å¥å¥å¥å¥å ¡¬¥¦¥±¥¢¥±¥¡¬¥¢¥¢¡¼¥¨¥¤¥¢¥¢¥¢¥ç¥¢¥¢¥¥«¥¥¤¥«¥¢¡¼¡¼¡¼¥¨¥¦ ¥Æ¥å¥ä¥³ ¥Ã¥å¥µ ¥¹¡¬¡¬¡¬¡¬¡¬¥ç¥µ ӥΡ¬¥ê¥¦¥ç¥¨¥å¥¢¥±¥«¥¨Â ¥Æ¥å¥ä¥å¥Ê¥³ ¥«¥¨ ¥ê¥å¥Á¥å¥Î¥³ ¡¬¡¼ ¥Æ¥å¥È¥³ ¥µ ¥¹¡Ö¡¬¡¬¡¬¡¬¡¬¥ç¡Ö ¥â¥é¥ª¥ì¥ê¥«¥Î¥Ì¥ë¥±¥ì¥¤¥Î¥Ò¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥± ¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥à¥Õ¥â¡¼¥Ì¥Õ¥¤¥Û¥â¥ª¥ë¥è¥¤¥ê¥Û¥¤¥¨¥Ø¥ä¥Î ¥Þ¥È¥Î¥Æ¥Ò¥Ä¥é¥Î¥ë¥¤¥Õ¥Ï¥Æ¥â¥¦¥¦¥Ï¥é¥ª¥Î¥Ì¥Û¥Í¥Æ¥Ä¥Á¥Î¥Æ¡¼¥Ø¥Á¥¢¥Õ¥È¥Ò¥Ê¥Ø¥È¥æ¥Ø¥ä¥Ê¥à¥Ê¥Á¥Ò ¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Ì¥Î¥Í¥á¥é¥æ¥ß¥ä¡¼¥Ë¥é¥æ¥Ò¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Î¥Ò¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á ¥Î¥Æ¥Á¥Î¥Ì¥è¥¤¥æ¥Ò¥Õ¥â¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Ï¡¼¥Ï¥Á¥Î¥Ê¥Û¥Í¥â¥ä¥«¥ì¥ê¥Û¥ë¥ê¥Ä¥â¥Ë¥á¥Û¥ä¥Æ¥¤¥ë¥é¥¢¥ì¥â¥Ò¥Á ¥Î¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥é¥ë¥Ë¥ì¥â¥Á¥±¥ß¥â¥Á¥ë¥¤¥¦¥Ø¥Æ¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Ï¡¼ ¥Ï¥Á¥Î¥Ê¥Û¥Í¥â¥ä¥«¥ì¥ê¥Û¥ë¥ê¥Ä¥â¥Ë¥á¥Û¥ä¥Æ¥¤¥ë¥é¥¢¥ì¥â¥ª¥ì¥ê¥Û¥¤¥ª¥ê¥¦¥á¥ß¥«¥±¥ß¥Ä¥¤¥ë¥é¥¢¥ì¥â¥ª¥¤ ¥Ò¥Æ¥Ï¥Þ¥Ä¥¤¥ë¥é¥¢¥ì¥â¥Ò¥Á¥Î¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥ì¥é¥ì¥à¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á ¥Î¥Æ¥±¥Î¥Ò¥Ä¥È¥á¡¼¥«¥Þ¥è¥ë¥¤¥Ë¥ì¥æ¥æ¥ä¥æ¥Ë¥é¥æ¥Î¥Æ¥Ï¥Î¥Æ¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Ì¥è¥ì¥Á ¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥ì¥é¥ª¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥â¥ª¥¤¥Î¥Æ¥Î¥¨¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Ä¥Ë¥ä¥à¥Ò¥â¥é¥ª¥ì¥ê¥« ¥Î¥Í¥á¥¦¥à¥ë¥¤¥Õ¥¦¥á¥¦¥á¥ë¥¤¥Õ¥Ï¥Æ¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥± ¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥±¥ß¥ä¡¼¥Ò¥Õ¥â¡¼¥Î¥Í¥á¥¦¥à¥ë¥¤¥Õ¥¦¥á¥¦¥á¥ë¥¤¥Õ¥Ï ¥Æ¥â¥ì¥ê¥ì¥¤¥Á¥Ò¥à¥Ò¥Ì¥è¥Æ¥±¥ì¥¤¥Ì¥è¥Ë¥±¥ì¥¤¥Î¥Ï¥Ò¥Í¥Ï¥é¥±¥Î¥È¥Á¥Æ¥Ä¥Á¥Î¥Æ¡¼ ¥Õ¥È¥Á¥Ò¥Ê¥Û¥æ¥à¥Ê¥Á¥Ò¥Ò¥¦¥Ï¥ê¥è¥æ¥Ï¥¦¥á¥¦¥à¥é¥ª¥Æ¥Ò¥Ò¥è¥é¥ì¥â¥Á¥ë¥¤¥Ï¥Æ¥¤¥á¥¢ ¥Ì¥æ¥à¡¼¥Ï¥è¥Ì¥è¥Ë¥Û¥¢¥Í¥Ä¥à¥Ò¥Ò¥Á¥ì¥Ì¥è¥Î¥Ì¥à¥ì¥Ì¥Ë¡¼¥ë¥â¥Ò¥Ò¥Á¥Î¥Æ¥Ä¥ë¥ê¥á¥Æ¥Î¥Ì¥è¥ì¥Á¥ì¥é¥ª¥Æ¥Ò ¥Ò¥ë¥¤¥¦¥Ø¥è¥Ì¥è¥Ê¥Û¥Í¥â¥â¥Á¥¯¥Î¥Ë¥á¥¦¥à¥«¥Þ¥è¥ê¥à¥«¥Þ¥á¥¦¥á¥È¥ë¥ê¥Û¥Æ¥Î¥Ì¥ë¥¤¥¢¥ì¥Ì¥æ¥à¡¼¥Ï¥è¥Ì¥è ¥Ë¥Û¥¢¥Í¥Ä¥à¥Ò¥Ò¥Î¥Æ¥Ä¥Ì¥Ë¥Á¥¯¥ß¥Æ¥Ä¥ì¥é¥Æ¥Î¥Æ¥Á¥é¥ª¥Í¥è¥ì¥â¥Ä¥È¥á¡¼¥æ¥ì¥ê¥Û¡¼¥æ¥¦¥è¥Ì¥±¥Á ¥Î¥Æ¥Ä¥à¥Ò¥Ò¥Í¥è¥Ì¥Æ¥Ò¥Ò¥Á¥ì¥Ì¥è¥Î¥Í¥Û¥Í¥è¥Æ¥Î¥Ì¥è¥ì¥Á¥Æ¥Î¥Ì¥á¥ì¥Ä¡¼¥ì¥é¥Ë¥ì¥Ì¥±¥¦ ¥Î¥Æ¥Ä¥à¥Ò¥Ò¥Î¥Æ¥Á¥Î¥Ø¥Î¥Ê¥Û¥ä¥è¥«¥æ¥è¥ì¥Ì¥è¥Î¥Í¥è¥ê¥à¥Ì¥è¥Á¥Î¥Æ¥Á¥Ò¥Ò¥Á¥ì¥Ì¥è¥Î¥Í¥á¥¦¥á¥¤¡¼ ¥Ì¥±¥¢¥Ë¥±¥Í¥á¥é¥Ï¥¢¥Ì¥è¥Æ¥Î¥Æ¥Á¥á¥æ¥ª¥é¥é¥â¥á¥è¥Ë¥è¥á¥è¥Û¥æ¥ê¡¼¥¢¥Ë¥è¥Ê¥ß¥á¥Æ¥Î¥È¡¼¥Ï¥¢¥Ä¥ß¥æ¥¢¥à¥Æ¥Î¥Æ¥Á ¥á¥æ¥ª¥é¥é¥È¥ä¡¼¥ª¥æ¥á¥æ¥ª¥æ¥ê¡¼¥Ë¥ä¥æ¥â¥Æ¥Î¥È¡¼¥Ï¥Á¥Æ¥Î¥Æ¥Á¥ë¥¤¥Î¥È¡¼¥à¡¼¥Ï¥Õ¥ª¥Í¥á¥È¥à¥Ò¥à ¥Æ¥Î¥Æ¥Á¥Ì¥è¥Ë¥±¥ë¥é¥Û¥ê¥¦¥á¥ì¥ì¥¤¥Æ¥Î¥Ì¥è¥ì¥Á¥Æ¥Î¥Ì¥á¥ì¥Ä¡¼¥ì¥ê¥Û¡¼¥ê¥¤¥Û¥¢¥±¥Ì¥Ë¥¢¥± ¥¢¥±¥Í¥Ï¥Ò¥Ò¥Á¥Î¥Æ¥Ä¥Ë¥ä¥ì¥Ï¥¢¥Ï¥Ë¥æ¥è¥è¥Ë¥æ¥¢¥á¥ä¥æ¥è¥æ¥â¥Ê¥±¥Ê¥Ï¥¢¡¼¥ß¥â¥Á¥æ¥Ê¥±¥ä¥è¥Æ¥Ò¥Ò¥Á¥Î¥Æ¥Ä¥Ë¥ä¥ì¥Ï¡¼¥Û¥ß ¥ä¥á¥Ë¥ä¥á¥ä¥Ê¥è¥Þ¥á¥¢¥á¥Î¥Ï¥¢¡¼¥ß¥â¥Á¥Ø¥Æ¥Ò¥Ò¥Á¥Î¥Æ¥Ä¥ì¥¤¥ß¥â¥Ä¥È¥á¡¼¥è¥¦¥Ò¥Æ¥Ì¥¢¥Û¥Æ¥Æ¥Ò¥Ò¥Á¥Î¥Æ¥Ä¡¼ ¥ì¥ê¥Û¡¼¥ê¥¤¥è¥ë¥¤¥Ì¥Ë¥Ò¥Ì¥Û¥â¥Ï¥¤¥Û¥ë¥ê¥Û¥Ï¡¼¥©¥Ï¥¦¥Û¡¼¥ì¥¦¥ì¥Í¥è¥Ï¥Ä¥¯¥ì¥Ï¥ì¥¤¥¢¥à¥Î¥Ì¥è ¥Í¥ë¥ê¥Û¥ì¥ê¥Ï¡¼¥ê¥¤¥è¥é¥Ë¥Ò¥Ì¥ì¥ë¥é¥ì¥é¥ª¡¼¥Õ¥Æ¥Á¥ß¥Æ¥Û¥¥ì¥é¡¼¥â¥Ä¥Ì¥Ë¥¢¥Î¥Û¡¼¥ì¥¦¥ì¥Í¥è¥ê¥Æ¥Î¥© ¥ë¥¤¥±¥Ì¥è¥È¥Î¥¦¥Í¥á¥±¥ß¥Î¥Î¥Í¡¼¥Ò¥Ò¥Á¥ì¥é¥ª¥Æ¥Ò¥Ò¥Á¥ì¥Ì¥è¥Î¥Í¥á¥¦¥á¥ë¥¦¥Û¥ê¥¤¥Û¥ë¥ê¥Û¥ê¥¤¥Ë¥ê¥¤¥Ë ¥Ë¥ª¥Æ¥Î¥Æ¥Á¥á¥æ¥ª¥é¥é¥â¥á¥è¥Ë¥è¥á¥è¥Û¥æ¥ê¡¼¥¢¥Ë¥è¥Ê¥ß¥á¥Æ¥Î¥È¡¼¥Ï¥¢¥Ä¥ß¥æ¥¢¥à¥Æ¥Î¥Æ¥Á¥á¥æ¥ª¥é¥é¥È¥ä¡¼¥ª¥æ¥á¥æ¥ª¥æ ¥ê¡¼¥Ë¥ä¥æ¥â¥Æ¥Î¥È¡¼¥Ï¥Á¥Æ¥Î¥Æ¥Á¥ë¥¤¥Î¥È¡¼¥à¡¼¥Ï¥Õ¥ª¥Í¥á¥È¥à¥Ò¥à¥Æ¥Î¥Æ¥Á¥Ì¥è¥Ë¥± ¥ë¥é¥Û¥ê¥¦¥á¥ì¥ì¥¤¥Î¥Æ¥Ì¥Ë¥±¥ß¥¦¥á¥é¥ª¥Ø¥â¥Î¥Æ¥Í¥Ï¥Ï¥¢¡¼¥Î¥Í¥Ì¥ì¥ë¥é¥ì¥é¥ª¡¼ ¥Õ¥Æ¥Ä¥Í¥á¥¯¥Î¥Ì¥Ë¥¤¥è¥Ë¥±¥ê¥è¥Æ¥Ë¥é¥è¥Æ¥Î¥¤¥è¥Í¡¼¥ë¥¤¥¦¥Ø¥±¥ê¥Æ¥Ï¥Í¥Ï¥Î¥Í¥Û¡¼ ¥ì¥Ï¥Î¥ª¥¤¥ª¡¼¥ì¥é¥ª¡¼¥ß¥Æ¥¯¥¤¥è¥Í¡¼¥©¥Î¥à¥Î¥Æ¥Ä¥à¥Ò¥Ò¥Î¥Æ¥Ä¥¤¥ë¥ê¥á¥Æ¥Ò¥Ò¥Á¥ì¥Ì¥è ¥Î¥Í¥á¥¦¥á¥ì¥é¥Ë¥Ë¥±¡¼¥ë¥é¥ë¥¤¥Õ¥Æ¥Ä¥Í¥á¥¢¥¥â¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Ë¥á¥ê¥Ø¥ê¥Ø¥±¡¼¥Î¥Ì¥Ê¥ë¥¤¥±¥Ì ¥Ì¥æ¥Ì¥Æ¥Ä¥ì¥Ä¥Ì¥è¥ì¥é¥ª¡¼¥è¥Æ¥Ä¡¼¥Ì¥æ¥¤¥ª¥Ä¡¼¥Ì¥Ë¡¼¥Æ¥Î¥Æ¥Á¥Î¥Ä¥ì¥é¥æ¥é¥¨ ¥ë¥â¥Á¥Í¥Ï¥ì¥Ì¥Ì¥Ë¥Ì¥æ¥Î¥Í¥â¥Á¥â¥ª¥Õ¥Ä¥¤¥¨¥Æ¥Ä¥ë¥ê¥ì¥Î¥Ì¥á¥ì¥Ë¥¢¥Í¥à¥ë¥ê¥á¡¼¥ê¥á ¥Î¥Á¥Î¥Æ¥Á¥Î¥Æ¥Ø¥â¥é¥¨¥ë¥é¥¨¥é¥á¥ë¥é¥¤¥±¥Ì¥à¥¤¥æ¥ì¥Æ¥Ä¡¼¥ì¥ê¥Û¡¼¥Î¥Ì¥è¥¤¥ì¥ê¥Ï¥ª¥Î¥Í¥Ä¥¦¥Û¥ë¥Î¥Í¥á¥ì¥¨¥Ò ¥Ò¥Á¥Î¥Æ¥Ä¡¼¥ë¥é¥Î¥È¡¼¥Ï¥ê¥Î¥Ë¥á¥æ¥Î¥Ê¥à¥Ä¥Æ¥â¥æ¥æ¡¼¥¢¥Ä¥ä¥Ê¥æ¥¢¥è¥Æ¥Î¥Ë¥Û¥è¥æ¥Æ¥Ä¥Ë¥ä¥â¥Ä¥ä¥è¥Ë¥Ï¥ß¥ä¥Ò¥Ò¥Á¥Î¥Æ¥Á ¥Î¥Æ¥Á¥Î¥Æ¥Ä¥Ê¥á¥¨¥à¡¼¥±¥Ê¥á¥â¥Ä¥ä¥à¥æ¥¢¥à¥Î¥Ê¥Æ¥á¥Æ¥Ä¥é¥à¥è¥Î¥à¡¼¥æ¥á¥â¥Ä¥Ä¥á¥Ê¥á¥â¥á¥è¥Û¥ä¥Î¥Ê¥á¥Ï¥è¥Ä¥Û¥à¥è¥Á¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á ¥Î¥Æ¥Ä¥à¥æ¥æ¥á¥Ê¥ä¡¼¥è¥æ¥æ¡¼¥è¥Ø¥á¥æ¥Û¥æ¥Î¥Í¥á¥ë¥Î¥Ë¥á¥Ï¥è¥Ê¥Ë¥Æ¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥æ¥¢¥á¥ì¥ä¥Ê¥æ¥æ¡¼¥Û¥â¥â¥è¥Ä¥æ ¥Î¥Ê¥Î¥Ê¥Î¥Ê¥Î¥Ê¡¼¥Î¥Ê¥¢¥Î¥Ê¥¤¥Î¥Ê¥Ï¥Ø¥ä¡¼¥Û¥Õ¥æ¥è¥è¥ß¥è¥Ê¥æ¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Ä¥È¥à¥è¥Ä¥æ¥â¥æ¥±¥Þ¥Î¥Ë¡¼¥Ò¥Á¥¢¥Î ¥á¥æ¥Ë¥Ê¥Î¥Ê¥Ï¥ß¥á¥Ë¥æ¥Æ¥Ä¥Ê¥è¥Æ¥Ä¥Ê¥á¥Æ¥Ä¥Ø¥â¥â¥Ä¥ß¥æ¥Ë¥á¥Ï¥ä¡¼¥¨¥Í¥Î¥Ì¥Ì¥á¥Æ¥Î¥Æ¥Á¥Ì¥Ë¥ª¥ë¥é¥Û¥Î¥Ì¥á¥Î¥Í¡¼ ¥ë¥é¥¯¥Æ¥Î¥Æ¥Á¥Î¥Æ¥Ä¥Í¥à¥ß¥â¥Ä¡¼¥ë¥é¥ê¥Ä¥ë¥ê¥Û¥Æ¥Î¥Æ¥Á¥Î¥Æ¥Ä¥ì¥Á¥ë¥ê¥á¡¼¥Ø¥ì¥é¥¢¥Í¥Ã¥Ò¥à¥Î¥Æ¥Á ¥Î¥Æ¥Á¥Î¥Æ¥Ä¥Ë¥é¥è¥Æ¥Á¥±¥Î¥Ì¥Û¥â¥ª¥ì¥é¥ª¥Ò¥Í¥á¥ì¥ª¥¦¥ë¥¤¥Ë¥ì¥â¥Á¥ë¥¤¥±¥Ì¥è¥Æ¥Î¥à¥Î¥Æ¥Á ¥Î¥Æ¥Á¥Î¥Æ¥Ä¥¦¥Û¥á¥ì¥ê¥Ë¥¢¥ë¥é¥ì¥Ï¥ì¥¤¥¢¥à¥Î¥Æ¥Î¥¯¥Î¥¦¥Í¥á¥±¥ß¥Û¥á¥à¥¯¥Õ¥Û¥¥ì¥é¡¼¥ä¥¨¥Ò¥à ¥Î¥Æ¥Á¥Î¥Æ¥Á¥ì¥é¥ì¥à¥Î¥Æ¥Á¥Î¥Æ¥Á¥Î¥Æ¥Ä¥Ë¥é¥è¥Æ¥Á¥±¥Î¥Ì¥Û¥â¥ª¥ì¥é¥ª¥Ò¥Í¥á¥ì¥ª¥¦¥ë¥¤¥Ë¥ì¥â¥ë¥ê¥á¡¼ ¥Ø¥Î¥Í¥Î¥Û¥á¥à¥Î¥Í¡¼¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Æ¥Á¥é¥Ì¥à¥ì¥Ï¥ì¥¤¥¢¥à¥Î¥Ì¥è¥Æ¥Ò¥Ò¥Á¥Î¥Æ¥Á¥Î¥Ì¥è ¥ì¥Á¥Î¥Æ¥Á¥Î¥Ì¥è¥ì¥Á¥Î¥Æ¥Ä¥à¥Ò¥Ò¥¤¥è¥ì¥Á¥å¥å¥å¥å¥å¥å ¡¬¥¦¥±¥¢¥±¥¡¬¥¢¥¢¡¼¥¨¥¤¥¢¥¢¥¢¥ç¥¢¥¢¥¥«¥¥¤¥«¥¢¡¼¡¼¡¼¥¨¥¦¥å¥å