<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>71976</bug_id>
          
          <creation_ts>2011-11-09 17:39:39 -0800</creation_ts>
          <short_desc>Add a tool to list authors and reviewers contributed to a given file or directory</short_desc>
          <delta_ts>2011-11-17 18:47:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72090</dependson>
          <blocked>26533</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>leandro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499523</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-09 17:39:39 -0800</bug_when>
    <thetext>This is a spin-off from https://bugs.webkit.org/show_bug.cgi?id=71957. It seems useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499525</commentid>
    <comment_count>1</comment_count>
      <attachid>114406</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-09 17:40:57 -0800</bug_when>
    <thetext>Created attachment 114406
Initial implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499531</commentid>
    <comment_count>2</comment_count>
      <attachid>114408</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-09 17:42:29 -0800</bug_when>
    <thetext>Created attachment 114408
Add an change log entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499551</commentid>
    <comment_count>3</comment_count>
      <attachid>114406</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-09 17:56:42 -0800</bug_when>
    <thetext>Comment on attachment 114406
Initial implementation

View in context: https://bugs.webkit.org/attachment.cgi?id=114406&amp;action=review

Free functions are bad-news bears.  Eventually you&apos;ll want those on an object so they can be tested and mocked.

Why not make this a webkit-patch Command?

&gt; Tools/Scripts/list-contributors-for-file:73
&gt; +    dir = os.path.dirname(changelog_path)

Sad times.  Without a FilesSystem object it&apos;s very hard to test this sort of function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499552</commentid>
    <comment_count>4</comment_count>
      <attachid>114408</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-09 17:57:27 -0800</bug_when>
    <thetext>Comment on attachment 114408
Add an change log entry

Testing. :(  I would recommend makign this a Command subclass and adding it to webkit-patch instead.  We can make it a separate script too if you&apos;d like, but building on the webkitpy infrastructure will make this much easier for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500530</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-10 22:31:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 114408 [details])
&gt; Testing. :(  I would recommend makign this a Command subclass and adding it to webkit-patch instead.  We can make it a separate script too if you&apos;d like, but building on the webkitpy infrastructure will make this much easier for you.

Oops, I didn&apos;t mean to set r? flag for this one yet. I mainly developed this as a tool to diagnose ChangeLogEntry class. It has been super useful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505421</commentid>
    <comment_count>6</comment_count>
      <attachid>115723</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 18:45:53 -0800</bug_when>
    <thetext>Created attachment 115723
updated to work on ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505422</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 18:47:17 -0800</bug_when>
    <thetext>The latest version supports different modes of operations per command line flag. e.g. --parse-reviewer-names will list all reviewer names that are &quot;invalid&quot; as follows (0:5 means take the first 5 change logs):

list-contributors-for-file Source/WebCore/ --parse-reviewer-names 0:5
Parsing /Volumes/Data/webkit4/Source/WebCore/ChangeLog...
                   Geoff Garen (11) matched with [&apos;&quot;Geoffrey Garen&quot; &lt;ggaren@apple.com&gt;&apos;] (3)
          Kenneth Christiansen (20) matched with [&apos;&quot;Kenneth Rohde Christiansen&quot; &lt;kenneth@webkit.org&gt;&apos;] (6)
                   Geoff Garen (11) matched with [&apos;&quot;Geoffrey Garen&quot; &lt;ggaren@apple.com&gt;&apos;] (3)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)

Parsing /Volumes/Data/webkit4/Source/WebCore/ChangeLog-2011-10-19...
             Nikolas Zimmerman (17) matched with [&apos;&quot;Nikolas Zimmermann&quot; &lt;zimmermann@kde.org&gt;&apos;] (1)
                   Dave Kilzer (11) matched with [&apos;&quot;David Kilzer&quot; &lt;ddkilzer@webkit.org&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)
                    Dave Hyatt (10) matched with [&apos;&quot;David Hyatt&quot; &lt;hyatt@apple.com&gt;&apos;] (2)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114406</attachid>
            <date>2011-11-09 17:40:57 -0800</date>
            <delta_ts>2011-11-09 17:56:42 -0800</delta_ts>
            <desc>Initial implementation</desc>
            <filename>fix71976</filename>
            <type>text/plain</type>
            <size>5174</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5NzkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTEgQEAKKzIwMTEtMTEtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMv
bGlzdC1jb250cmlidXRvcnMtZm9yLWZpbGU6IEFkZGVkLgorCiAyMDExLTExLTA5ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIGNvbmNlcHQgb2Yg
cGxhdGZvcm0tZGVwZW5kZW50IHVuaXR0ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy9saXN0LWNv
bnRyaWJ1dG9ycy1mb3ItZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2xpc3QtY29u
dHJpYnV0b3JzLWZvci1maWxlCShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy9saXN0LWNv
bnRyaWJ1dG9ycy1mb3ItZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIldyYXBwZXIgYXJvdW5kIHdl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IiIiCitpbXBvcnQgY29kZWNz
CitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2cKKworZGVmIHBhcmVudF9kaXIocGF0
aCk6CisgICAgbmV4dF9wYXRoLCB1bnVzZWQgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgaWYg
cGF0aCA9PSBuZXh0X3BhdGg6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIG5leHRf
cGF0aAorCitkZWYgcGF0aF9jb250YWlucyhjb250YWluZXIsIHBhdGgpOgorICAgIHdoaWxlIHBh
dGggYW5kIGxlbihjb250YWluZXIpIGFuZCBsZW4oY29udGFpbmVyKSA8PSBsZW4ocGF0aCk6Cisg
ICAgICAgIGlmIGNvbnRhaW5lciA9PSBwYXRoOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgcGF0aCA9IHBhcmVudF9kaXIocGF0aCkKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGZp
bmRfZGlyX3dpdGhfY2hhbmdlbG9nKGRpcl9wYXRoKToKKyAgICB3aGlsZSBkaXJfcGF0aCBhbmQg
bGVuKGRpcl9wYXRoKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBvcy5wYXRoLmpvaW4oZGly
X3BhdGgsICdDaGFuZ2VMb2cnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjaGFuZ2Vsb2df
cGF0aCk6CisgICAgICAgICAgICByZXR1cm4gY2hhbmdlbG9nX3BhdGgKKyAgICAgICAgZGlyX3Bh
dGggPSBwYXJlbnRfZGlyKGRpcl9wYXRoKQorICAgIHJldHVybiBOb25lCisKK2RlZiBwYXJzZV9j
aGFuZ2Vsb2coY2hhbmdlbG9nX3BhdGgpOgorICAgIHByaW50ICdQYXJzaW5nJywgY2hhbmdlbG9n
X3BhdGggKyAnLi4uJworICAgIGNoYW5nZWxvZ19maWxlID0gY29kZWNzLm9wZW4oY2hhbmdlbG9n
X3BhdGgsICJyIiwgInV0Zi04IikKKyAgICBlbnRyaWVzID0gQ2hhbmdlTG9nLnBhcnNlX2VudHJp
ZXNfZnJvbV9maWxlKGNoYW5nZWxvZ19maWxlKQorCisgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6
CisgICAgICAgIHJlbGF0aXZlX3BhdGhzID0gZW50cnkudG91Y2hlZF9maWxlcygpCisgICAgICAg
IGZvciBwYXRoIGluIHJlbGF0aXZlX3BhdGhzOgorICAgICAgICAgICAgaWYgcGF0aF9jb250YWlu
cyhrZXlfcGF0aCwgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjaGFuZ2Vsb2dfcGF0aCks
IHBhdGgpKToKKyAgICAgICAgICAgICAgICBhdXRob3IsIHJldmlld2VyID0gZW50cnkuYXV0aG9y
X25hbWUoKSwgZW50cnkucmV2aWV3ZXJfdGV4dCgpCisgICAgICAgICAgICAgICAgYXV0aG9yc1th
dXRob3JdID0gYXV0aG9ycy5nZXQoYXV0aG9yLCAwKSArIDEKKyAgICAgICAgICAgICAgICByZXZp
ZXdlcnNbcmV2aWV3ZXJdID0gcmV2aWV3ZXJzLmdldChyZXZpZXdlciwgMCkgKyAxCisgICAgICAg
ICAgICAgICAgYnJlYWsKKworZGVmIGZpbmRfYWxsX2NoYW5nZWxvZ3MoY2hhbmdlbG9nX3BhdGgp
OgorICAgIGRpciA9IG9zLnBhdGguZGlybmFtZShjaGFuZ2Vsb2dfcGF0aCkKKyAgICBmaWxlc19p
bl9jaGFuZ2Vsb2dfZGlyID0gb3MubGlzdGRpcihkaXIpCisgICAgc29ydGVkX2NoYW5nZWxvZ19w
YXRocyA9IHNvcnRlZChbb3MucGF0aC5qb2luKGRpciwgcGF0aCkgZm9yIHBhdGggaW4gZmlsZXNf
aW5fY2hhbmdlbG9nX2RpciBpZiByZS5tYXRjaChyJ0NoYW5nZUxvZy1cZHs0fS1cZHsyfS1cZHsy
fScsIHBhdGgpXSwgcmV2ZXJzZT1UcnVlKQorICAgIHJldHVybiBbY2hhbmdlbG9nX3BhdGhdICsg
c29ydGVkX2NoYW5nZWxvZ19wYXRocworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg
IGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAgcHJpbnQgJ1BsZWFzZSBzcGVjaWZ5IGEg
ZmlsZSBuYW1lJworICAgICAgICBzeXMuZXhpdCgxKQorCisgICAga2V5X3BhdGggPSBvcy5wYXRo
LmFic3BhdGgoc3lzLmFyZ3ZbMV0pCisgICAgY2hhbmdlbG9nX3BhdGggPSBmaW5kX2Rpcl93aXRo
X2NoYW5nZWxvZyhrZXlfcGF0aCkKKyAgICBpZiBub3QgY2hhbmdlbG9nX3BhdGg6CisgICAgICAg
IHByaW50ICdDb3VsZCBub3QgZmluZCBhIENoYW5nZUxvZycKKyAgICAgICAgc3lzLmV4aXQoMSkK
KworICAgIGNoYW5nZWxvZ19wYXRocyA9IGZpbmRfYWxsX2NoYW5nZWxvZ3MoY2hhbmdlbG9nX3Bh
dGgpCisKKyAgICBsaW1pdCA9IDMgIyBGSVhNRTogbWFrZSB0aGlzIGFuIG9wdGlvbgorICAgIGF1
dGhvcnMgPSB7fQorICAgIHJldmlld2VycyA9IHt9CisgICAgZm9yIHBhdGggaW4gY2hhbmdlbG9n
X3BhdGhzWzA6bGltaXRdOgorICAgICAgICBwYXJzZV9jaGFuZ2Vsb2cocGF0aCkKKworICAgIHBy
aW50ICdSZXZpZXdlcnM6JworICAgIGZvciByZXZpZXdlciBpbiBzb3J0ZWQocmV2aWV3ZXJzLCBr
ZXk9cmV2aWV3ZXJzLl9fZ2V0aXRlbV9fLCByZXZlcnNlPVRydWUpOgorICAgICAgICBwcmludCBy
ZXZpZXdlciwgJygnICsgc3RyKHJldmlld2Vyc1tyZXZpZXdlcl0pICsgJyknLAorICAgIHByaW50
CisKKyAgICBwcmludCAnQXV0aG9yczonCisgICAgZm9yIGF1dGhvciBpbiBzb3J0ZWQoYXV0aG9y
cywga2V5PWF1dGhvcnMuX19nZXRpdGVtX18sIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgIHByaW50
IGF1dGhvciwgJygnICsgc3RyKGF1dGhvcnNbYXV0aG9yXSkgKyAnKScsCisgICAgcHJpbnQKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMvbGlzdC1jb250cmlidXRvcnMtZm9yLWZp
bGUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114408</attachid>
            <date>2011-11-09 17:42:29 -0800</date>
            <delta_ts>2011-11-17 18:45:53 -0800</delta_ts>
            <desc>Add an change log entry</desc>
            <filename>fix71976b</filename>
            <type>text/plain</type>
            <size>5445</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5NzkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTEtMTEtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWRkIGEgdG9vbCB0byBsaXN0IGF1dGhvcnMgYW5kIHJldmlld2VycyBjb250cmli
dXRlZCB0byBhIGdpdmVuIGZpbGUgb3IgZGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTk3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRvb2wgdG8gcGFyc2UgY2hhbmdlIGxvZ3Mg
YW5kIHRlbGwgd2hvIGNvbnRyaWJ1dGVkIHRvIGEgZ2l2ZW4gZmlsZSBvciBkaXJlY3RvcnkuCisg
ICAgICAgIFVzYWdlOgorICAgICAgICAgICAgbGlzdC1jb250cmlidXRvcnMtZm9yLWZpbGUgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nCisKKyAgICAgICAgKiBTY3JpcHRzL2xpc3QtY29udHJpYnV0
b3JzLWZvci1maWxlOiBBZGRlZC4KKwogMjAxMS0xMS0wOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBjb25jZXB0IG9mIHBsYXRmb3JtLWRlcGVu
ZGVudCB1bml0dGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlzdC1jb250cmlidXRvcnMtZm9y
LWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9saXN0LWNvbnRyaWJ1dG9ycy1mb3It
ZmlsZQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvbGlzdC1jb250cmlidXRvcnMtZm9y
LWZpbGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisjIS91c3IvYmluL2VudiBweXRo
b24KKyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSIiIgoraW1wb3J0IGNvZGVjcworaW1wb3J0IG9zCitp
bXBvcnQgcmUKK2ltcG9ydCBzeXMKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5n
ZWxvZyBpbXBvcnQgQ2hhbmdlTG9nCisKK2RlZiBwYXJlbnRfZGlyKHBhdGgpOgorICAgIG5leHRf
cGF0aCwgdW51c2VkID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgIGlmIHBhdGggPT0gbmV4dF9w
YXRoOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBuZXh0X3BhdGgKKworZGVmIHBh
dGhfY29udGFpbnMoY29udGFpbmVyLCBwYXRoKToKKyAgICB3aGlsZSBwYXRoIGFuZCBsZW4oY29u
dGFpbmVyKSBhbmQgbGVuKGNvbnRhaW5lcikgPD0gbGVuKHBhdGgpOgorICAgICAgICBpZiBjb250
YWluZXIgPT0gcGF0aDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHBhdGggPSBw
YXJlbnRfZGlyKHBhdGgpCisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiBmaW5kX2Rpcl93aXRoX2No
YW5nZWxvZyhkaXJfcGF0aCk6CisgICAgd2hpbGUgZGlyX3BhdGggYW5kIGxlbihkaXJfcGF0aCk6
CisgICAgICAgIGNoYW5nZWxvZ19wYXRoID0gb3MucGF0aC5qb2luKGRpcl9wYXRoLCAnQ2hhbmdl
TG9nJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY2hhbmdlbG9nX3BhdGgpOgorICAgICAg
ICAgICAgcmV0dXJuIGNoYW5nZWxvZ19wYXRoCisgICAgICAgIGRpcl9wYXRoID0gcGFyZW50X2Rp
cihkaXJfcGF0aCkKKyAgICByZXR1cm4gTm9uZQorCitkZWYgcGFyc2VfY2hhbmdlbG9nKGNoYW5n
ZWxvZ19wYXRoKToKKyAgICBwcmludCAnUGFyc2luZycsIGNoYW5nZWxvZ19wYXRoICsgJy4uLicK
KyAgICBjaGFuZ2Vsb2dfZmlsZSA9IGNvZGVjcy5vcGVuKGNoYW5nZWxvZ19wYXRoLCAiciIsICJ1
dGYtOCIpCisgICAgZW50cmllcyA9IENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZShj
aGFuZ2Vsb2dfZmlsZSkKKworICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICByZWxh
dGl2ZV9wYXRocyA9IGVudHJ5LnRvdWNoZWRfZmlsZXMoKQorICAgICAgICBmb3IgcGF0aCBpbiBy
ZWxhdGl2ZV9wYXRoczoKKyAgICAgICAgICAgIGlmIHBhdGhfY29udGFpbnMoa2V5X3BhdGgsIG9z
LnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY2hhbmdlbG9nX3BhdGgpLCBwYXRoKSk6CisgICAg
ICAgICAgICAgICAgYXV0aG9yLCByZXZpZXdlciA9IGVudHJ5LmF1dGhvcl9uYW1lKCksIGVudHJ5
LnJldmlld2VyX3RleHQoKQorICAgICAgICAgICAgICAgIGF1dGhvcnNbYXV0aG9yXSA9IGF1dGhv
cnMuZ2V0KGF1dGhvciwgMCkgKyAxCisgICAgICAgICAgICAgICAgcmV2aWV3ZXJzW3Jldmlld2Vy
XSA9IHJldmlld2Vycy5nZXQocmV2aWV3ZXIsIDApICsgMQorICAgICAgICAgICAgICAgIGJyZWFr
CisKK2RlZiBmaW5kX2FsbF9jaGFuZ2Vsb2dzKGNoYW5nZWxvZ19wYXRoKToKKyAgICBkaXIgPSBv
cy5wYXRoLmRpcm5hbWUoY2hhbmdlbG9nX3BhdGgpCisgICAgZmlsZXNfaW5fY2hhbmdlbG9nX2Rp
ciA9IG9zLmxpc3RkaXIoZGlyKQorICAgIHNvcnRlZF9jaGFuZ2Vsb2dfcGF0aHMgPSBzb3J0ZWQo
W29zLnBhdGguam9pbihkaXIsIHBhdGgpIGZvciBwYXRoIGluIGZpbGVzX2luX2NoYW5nZWxvZ19k
aXIgaWYgcmUubWF0Y2gocidDaGFuZ2VMb2ctXGR7NH0tXGR7Mn0tXGR7Mn0nLCBwYXRoKV0sIHJl
dmVyc2U9VHJ1ZSkKKyAgICByZXR1cm4gW2NoYW5nZWxvZ19wYXRoXSArIHNvcnRlZF9jaGFuZ2Vs
b2dfcGF0aHMKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpZiBsZW4oc3lzLmFy
Z3YpIDw9IDE6CisgICAgICAgIHByaW50ICdQbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZScKKyAg
ICAgICAgc3lzLmV4aXQoMSkKKworICAgIGtleV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKHN5cy5h
cmd2WzFdKQorICAgIGNoYW5nZWxvZ19wYXRoID0gZmluZF9kaXJfd2l0aF9jaGFuZ2Vsb2coa2V5
X3BhdGgpCisgICAgaWYgbm90IGNoYW5nZWxvZ19wYXRoOgorICAgICAgICBwcmludCAnQ291bGQg
bm90IGZpbmQgYSBDaGFuZ2VMb2cnCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBjaGFuZ2Vs
b2dfcGF0aHMgPSBmaW5kX2FsbF9jaGFuZ2Vsb2dzKGNoYW5nZWxvZ19wYXRoKQorCisgICAgbGlt
aXQgPSAzICMgRklYTUU6IG1ha2UgdGhpcyBhbiBvcHRpb24KKyAgICBhdXRob3JzID0ge30KKyAg
ICByZXZpZXdlcnMgPSB7fQorICAgIGZvciBwYXRoIGluIGNoYW5nZWxvZ19wYXRoc1swOmxpbWl0
XToKKyAgICAgICAgcGFyc2VfY2hhbmdlbG9nKHBhdGgpCisKKyAgICBwcmludCAnUmV2aWV3ZXJz
OicKKyAgICBmb3IgcmV2aWV3ZXIgaW4gc29ydGVkKHJldmlld2Vycywga2V5PXJldmlld2Vycy5f
X2dldGl0ZW1fXywgcmV2ZXJzZT1UcnVlKToKKyAgICAgICAgcHJpbnQgcmV2aWV3ZXIsICcoJyAr
IHN0cihyZXZpZXdlcnNbcmV2aWV3ZXJdKSArICcpJywKKyAgICBwcmludAorCisgICAgcHJpbnQg
J0F1dGhvcnM6JworICAgIGZvciBhdXRob3IgaW4gc29ydGVkKGF1dGhvcnMsIGtleT1hdXRob3Jz
Ll9fZ2V0aXRlbV9fLCByZXZlcnNlPVRydWUpOgorICAgICAgICBwcmludCBhdXRob3IsICcoJyAr
IHN0cihhdXRob3JzW2F1dGhvcl0pICsgJyknLAorICAgIHByaW50CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9TY3JpcHRzL2xpc3QtY29udHJpYnV0b3JzLWZvci1maWxlCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>
<flag name="review"
          id="113043"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115723</attachid>
            <date>2011-11-17 18:45:53 -0800</date>
            <delta_ts>2011-11-17 18:49:12 -0800</delta_ts>
            <desc>updated to work on ToT</desc>
            <filename>wip71976</filename>
            <type>text/plain</type>
            <size>7212</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvbGlzdC1jb250cmlidXRvcnMtZm9yLWZpbGUKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9saXN0LWNvbnRyaWJ1dG9ycy1mb3ItZmlsZQkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1NjcmlwdHMvbGlzdC1jb250cmlidXRvcnMtZm9yLWZpbGUJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTYzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weSIiIgoraW1wb3J0IGNvZGVjcworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9y
dCBzeXMKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dC5jaGFuZ2Vsb2cgaW1wb3J0IENoYW5nZUxvZworZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKKworZGVmIHBhcmVudF9kaXIocGF0
aCk6CisgICAgbmV4dF9wYXRoLCB1bnVzZWQgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgaWYg
cGF0aCA9PSBuZXh0X3BhdGg6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIG5leHRf
cGF0aAorCitkZWYgcGF0aF9jb250YWlucyhjb250YWluZXIsIHBhdGgpOgorICAgIHdoaWxlIHBh
dGggYW5kIGxlbihjb250YWluZXIpIGFuZCBsZW4oY29udGFpbmVyKSA8PSBsZW4ocGF0aCk6Cisg
ICAgICAgIGlmIGNvbnRhaW5lciA9PSBwYXRoOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgcGF0aCA9IHBhcmVudF9kaXIocGF0aCkKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGZp
bmRfZGlyX3dpdGhfY2hhbmdlbG9nKGRpcl9wYXRoKToKKyAgICB3aGlsZSBkaXJfcGF0aCBhbmQg
bGVuKGRpcl9wYXRoKToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGggPSBvcy5wYXRoLmpvaW4oZGly
X3BhdGgsICdDaGFuZ2VMb2cnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjaGFuZ2Vsb2df
cGF0aCk6CisgICAgICAgICAgICByZXR1cm4gY2hhbmdlbG9nX3BhdGgKKyAgICAgICAgZGlyX3Bh
dGggPSBwYXJlbnRfZGlyKGRpcl9wYXRoKQorICAgIHJldHVybiBOb25lCisKK2RlZiBhbmFseXpl
X3Jldmlld2VyX25hbWUoZW50cnksIHJldmlld2VyX2ZpbHRlcj1Ob25lKToKKyAgICBpZiBlbnRy
eS5fcmV2aWV3ZXJzX3RleHRfbGlzdDoKKyAgICAgICAgaWYgbGVuKGVudHJ5LnJldmlld2Vycygp
KSA9PSBsZW4oZW50cnkuX3Jldmlld2Vyc190ZXh0X2xpc3QpIGFuZCBlbnRyeS5oYXNfdmFsaWRf
cmV2aWV3ZXIoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBmb3IgcmV2aWV3ZXIgaW4g
ZW50cnkuX3Jldmlld2Vyc190ZXh0X2xpc3Q6CisgICAgICAgICAgICBpZiByZXZpZXdlcl9maWx0
ZXIgYW5kIGxlbihyZXZpZXdlcl9maWx0ZXIpIGFuZCByZXZpZXdlciBub3QgaW4gcmV2aWV3ZXJf
ZmlsdGVyOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtYXRjaGVzLCBk
aXN0YW5jZSA9IGNvbW1pdHRlcnMuY29udHJpYnV0b3JzX2J5X2Z1enp5X21hdGNoKHJldmlld2Vy
KQorICAgICAgICAgICAgcHJpbnQgJyUzMHMgKCUwMmQpIG1hdGNoZWQgd2l0aCAlcyAoJWQpJyAl
IChyZXZpZXdlciwgbGVuKHJldmlld2VyKSwgW3N0cihyZXZpZXdlcikgZm9yIHJldmlld2VyIGlu
IG1hdGNoZXNdLCBkaXN0YW5jZSkKKyAgICBlbGlmIGVudHJ5LnJldmlld2VyX3RleHQoKSBhbmQg
bm90IGVudHJ5Ll9yZXZpZXdlcnNfdGV4dF9saXN0OgorICAgICAgICByZXZpZXdlciA9IGVudHJ5
LnJldmlld2VyX3RleHQoKQorICAgICAgICBpZiBub3QgcmV2aWV3ZXJfZmlsdGVyIG9yIHJldmll
d2VyIGluIHJldmlld2VyX2ZpbHRlcjoKKyAgICAgICAgICAgIHByaW50ICclc1xuICAgIHdpdGgg
bm8gbGlzdCcgJSAocmV2aWV3ZXIpCisgICAgICAgICAgICBwcmludCBlbnRyeS5fY29udGVudHMK
KworZGVmIHBhcnNlX2NoYW5nZWxvZyhjaGFuZ2Vsb2dfcGF0aCwgcmV2aWV3ZXJfZmlsdGVyKToK
KyAgICBwcmludCAnUGFyc2luZycsIGNoYW5nZWxvZ19wYXRoICsgJy4uLicKKyAgICBjaGFuZ2Vs
b2dfZmlsZSA9IGNvZGVjcy5vcGVuKGNoYW5nZWxvZ19wYXRoLCAiciIsICJ1dGYtOCIpCisgICAg
ZW50cmllcyA9IENoYW5nZUxvZy5wYXJzZV9lbnRyaWVzX2Zyb21fZmlsZShjaGFuZ2Vsb2dfZmls
ZSkKKworICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICByZWxhdGl2ZV9wYXRocyA9
IGVudHJ5LnRvdWNoZWRfZmlsZXMoKQorICAgICAgICBmb3IgcGF0aCBpbiByZWxhdGl2ZV9wYXRo
czoKKyAgICAgICAgICAgIGlmIGlnbm9yZVVucmV2aWV3ZWRBbmRCdWlsZEZpeCBhbmQgcmUuc2Vh
cmNoKCdidWlsZFxzKmZpeHxmaXhccysoXHcrXHMrKSpidWlsZHxub3QgcmV2aWV3ZWR8dW5yZXZp
ZXdlZCcsIGVudHJ5Ll9jb250ZW50cywgcmUuSUdOT1JFQ0FTRSk6CisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgIGlmIHBhdGhfY29udGFpbnMoa2V5X3BhdGgsIG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoY2hhbmdlbG9nX3BhdGgpLCBwYXRoKSk6CisgICAgICAgICAg
ICAgICAgYXV0aG9yID0gZW50cnkuYXV0aG9yX25hbWUoKQorICAgICAgICAgICAgICAgIGF1dGhv
ciA9IGF1dGhvci5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgaWYg
bGlzdEVudHJpZXNXaXRob3V0UmV2aWV3ZXJzIGFuZCBub3QgbGVuKGVudHJ5LnJldmlld2Vycygp
KToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgZW50cnkuX2NvbnRlbnRzLmVuY29kZSgnYXNj
aWknLCAnaWdub3JlJykKKyAgICAgICAgICAgICAgICBpZiBwYXJzZVJldmlld2VyTmFtZXM6Cisg
ICAgICAgICAgICAgICAgICAgIGFuYWx5emVfcmV2aWV3ZXJfbmFtZShlbnRyeSwgcmV2aWV3ZXJf
ZmlsdGVyKQorICAgICAgICAgICAgICAgIGF1dGhvcnNbYXV0aG9yXSA9IGF1dGhvcnMuZ2V0KGF1
dGhvciwgMCkgKyAxCisgICAgICAgICAgICAgICAgZm9yIHJldmlld2VyIGluIGVudHJ5LnJldmll
d2VycygpOgorICAgICAgICAgICAgICAgICAgICByZXZpZXdlcnNbcmV2aWV3ZXJdID0gcmV2aWV3
ZXJzLmdldChyZXZpZXdlciwgMCkgKyAxCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGlm
IHBhcnNlUmV2aWV3ZXJOYW1lczoKKyAgICAgICAgcHJpbnQKKworZGVmIGZpbmRfYWxsX2NoYW5n
ZWxvZ3MoY2hhbmdlbG9nX3BhdGgpOgorICAgIGRpciA9IG9zLnBhdGguZGlybmFtZShjaGFuZ2Vs
b2dfcGF0aCkKKyAgICBmaWxlc19pbl9jaGFuZ2Vsb2dfZGlyID0gb3MubGlzdGRpcihkaXIpCisg
ICAgc29ydGVkX2NoYW5nZWxvZ19wYXRocyA9IHNvcnRlZChbb3MucGF0aC5qb2luKGRpciwgcGF0
aCkgZm9yIHBhdGggaW4gZmlsZXNfaW5fY2hhbmdlbG9nX2RpciBpZiByZS5tYXRjaChyJ0NoYW5n
ZUxvZy1cZHs0fS1cZHsyfS1cZHsyfScsIHBhdGgpXSwgcmV2ZXJzZT1UcnVlKQorICAgIHJldHVy
biBbY2hhbmdlbG9nX3BhdGhdICsgc29ydGVkX2NoYW5nZWxvZ19wYXRocworCitjb21taXR0ZXJz
ID0gQ29tbWl0dGVyTGlzdCgpCitwYXJzZVJldmlld2VyTmFtZXMgPSBGYWxzZQorCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAg
cHJpbnQgJ1BsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lJworICAgICAgICBzeXMuZXhpdCgxKQor
CisgICAga2V5X3BhdGggPSBvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMV0pCisgICAgY2hhbmdl
bG9nX3BhdGggPSBmaW5kX2Rpcl93aXRoX2NoYW5nZWxvZyhrZXlfcGF0aCkKKyAgICBpZiBub3Qg
Y2hhbmdlbG9nX3BhdGg6CisgICAgICAgIHByaW50ICdDb3VsZCBub3QgZmluZCBhIENoYW5nZUxv
ZycKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGxpc3RSZXZpZXdlcnMgPSBGYWxzZQorICAg
IGxpc3RBdXRob3JzID0gRmFsc2UKKyAgICBsaXN0RW50cmllc1dpdGhvdXRSZXZpZXdlcnMgPSBG
YWxzZQorICAgIGlnbm9yZVVucmV2aWV3ZWRBbmRCdWlsZEZpeCA9IEZhbHNlCisgICAgcGFyYW1l
dGVycyA9IFtdCisgICAgc3RhcnQgPSAwCisgICAgbGltaXQgPSAxCisgICAgZm9yIG1vZGUgaW4g
c3lzLmFyZ3ZbMjpdOgorICAgICAgICBpZiBtb2RlID09ICctLXBhcnNlLXJldmlld2VyLW5hbWVz
JzoKKyAgICAgICAgICAgIHBhcnNlUmV2aWV3ZXJOYW1lcyA9IFRydWUKKyAgICAgICAgZWxpZiBt
b2RlID09ICctLWxpc3QtcmV2aWV3ZXJzJzoKKyAgICAgICAgICAgIGxpc3RSZXZpZXdlcnMgPSBU
cnVlCisgICAgICAgIGVsaWYgbW9kZSA9PSAnLS1saXN0LXJldmlld2Vycyc6CisgICAgICAgICAg
ICBsaXN0QXV0aG9ycyA9IFRydWUKKyAgICAgICAgZWxpZiBtb2RlID09ICctLWxpc3QtZW50cmll
cy13aXRob3V0LXJldmlld2Vycyc6CisgICAgICAgICAgICBsaXN0RW50cmllc1dpdGhvdXRSZXZp
ZXdlcnMgPSBUcnVlCisgICAgICAgIGVsaWYgbW9kZSA9PSAnLS1pZ25vcmUtdW5yZXZpZXdlZCc6
CisgICAgICAgICAgICBpZ25vcmVVbnJldmlld2VkQW5kQnVpbGRGaXggPSBUcnVlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCcoXGQrKTooXGQrKScsIG1vZGUp
CisgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICBzdGFydCA9IGludChtYXRj
aC5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICBsaW1pdCA9IGludChtYXRjaC5ncm91cCgyKSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQobW9k
ZSkKKworICAgIGNoYW5nZWxvZ19wYXRocyA9IGZpbmRfYWxsX2NoYW5nZWxvZ3MoY2hhbmdlbG9n
X3BhdGgpCisKKyAgICBhdXRob3JzID0ge30KKyAgICByZXZpZXdlcnMgPSB7fQorICAgIGZvciBw
YXRoIGluIGNoYW5nZWxvZ19wYXRoc1tzdGFydDpsaW1pdF06CisgICAgICAgIHBhcnNlX2NoYW5n
ZWxvZyhwYXRoLCBwYXJhbWV0ZXJzKQorCisgICAgaWYgbGlzdFJldmlld2VyczoKKyAgICAgICAg
cHJpbnQgJ1Jldmlld2VyczonCisgICAgICAgIGZvciByZXZpZXdlciBpbiBzb3J0ZWQocmV2aWV3
ZXJzLCBrZXk9cmV2aWV3ZXJzLl9fZ2V0aXRlbV9fLCByZXZlcnNlPVRydWUpOgorICAgICAgICAg
ICAgcHJpbnQgJyVzICglZCknICUgKHJldmlld2VyLCByZXZpZXdlcnNbcmV2aWV3ZXJdKQorICAg
ICAgICBwcmludAorCisgICAgaWYgbGlzdEF1dGhvcnM6CisgICAgICAgIHByaW50ICdBdXRob3Jz
OicKKyAgICAgICAgZm9yIGF1dGhvciBpbiBzb3J0ZWQoYXV0aG9ycywga2V5PWF1dGhvcnMuX19n
ZXRpdGVtX18sIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICBwcmludCAiJXMgKCVkKSIgJSAo
YXV0aG9yLCBhdXRob3JzW2F1dGhvcl0pCisgICAgICAgIHByaW50CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9TY3JpcHRzL2xpc3QtY29udHJpYnV0b3JzLWZvci1maWxlCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>