<?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>59245</bug_id>
          
          <creation_ts>2011-04-22 15:10:58 -0700</creation_ts>
          <short_desc>Add infrastructure to parse an SVN authorization file</short_desc>
          <delta_ts>2011-05-22 12:09:41 -0700</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>PC</rep_platform>
          <op_sys>All</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>
          
          <blocked>59242</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>391123</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 15:10:58 -0700</bug_when>
    <thetext>Towards the fix for bug #59242, we need to add infrastructure to parse an SVN authorization file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391140</commentid>
    <comment_count>1</comment_count>
      <attachid>90778</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 15:24:31 -0700</bug_when>
    <thetext>Created attachment 90778
Patch and unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391142</commentid>
    <comment_count>2</comment_count>
      <attachid>90779</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 15:25:54 -0700</bug_when>
    <thetext>Created attachment 90779
Patch and unit test

Updated change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391143</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 15:27:21 -0700</bug_when>
    <thetext>Attachment 90778 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:7:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:12:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:18:  expected 2 blank lines, found 1  [pep8/E302] [5]
Tools/Scripts/webkitpy/common/checkout/scm_unittest.py:712:  whitespace before &apos;}&apos;  [pep8/E202] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391145</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 15:28:00 -0700</bug_when>
    <thetext>Attachment 90779 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:7:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:12:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/assert_dictionaries_equal_mixin.py:18:  expected 2 blank lines, found 1  [pep8/E302] [5]
Tools/Scripts/webkitpy/common/checkout/scm_unittest.py:712:  whitespace before &apos;}&apos;  [pep8/E202] [5]
Total errors found: 4 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391151</commentid>
    <comment_count>5</comment_count>
      <attachid>90782</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 15:32:21 -0700</bug_when>
    <thetext>Created attachment 90782
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391154</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 15:34:25 -0700</bug_when>
    <thetext>Attachment 90782 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/checkout/scm_unittest.py:712:  whitespace before &apos;}&apos;  [pep8/E202] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391230</commentid>
    <comment_count>7</comment_count>
      <attachid>90802</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 16:47:47 -0700</bug_when>
    <thetext>Created attachment 90802
Patch and unit tests

Updated patch so that it applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391233</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 16:49:29 -0700</bug_when>
    <thetext>Attachment 90802 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/checkout/scm_unittest.py:764:  whitespace before &apos;}&apos;  [pep8/E202] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391242</commentid>
    <comment_count>9</comment_count>
      <attachid>90804</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 16:57:17 -0700</bug_when>
    <thetext>Created attachment 90804
Patch and unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>391247</commentid>
    <comment_count>10</comment_count>
      <attachid>90806</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-22 17:01:43 -0700</bug_when>
    <thetext>Created attachment 90806
Patch and unit test</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90778</attachid>
            <date>2011-04-22 15:24:31 -0700</date>
            <delta_ts>2011-04-22 15:25:54 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug59245.patch</filename>
            <type>text/plain</type>
            <size>9720</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0Njg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCk7IFRoaXMgbWV0aG9kIAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weToKKyAgICAgICAgICAtIEFkZGVkIHRlc3Rf
cGFyc2Vfc3ZuX2F1dGhvcml6YXRpb25fY3JlZGVudGlhbHMoKS4KKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHk6IEV4dHJh
Y3QgCisgICAgICAgICAgX2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoKSBpbnRvIGFzc2VydF9k
aWN0aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkKKyAgICAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSB1
c2VkIGluIGJvdGggYnVnemlsbGFfdW5pdHRlc3QucHkgYW5kIHNjbV91bml0dGVzdC5weS4KKwog
MjAxMS0wNC0yMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbi5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsX21p
eGluLnB5CShyZXZpc2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNz
ZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbi5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisj
IAorIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMgCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
IyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworIyBBIG1peGluIGZvciB1bml0dGVzdC5UZXN0Q2Fz
ZQorY2xhc3MgQXNzZXJ0RGljdGlvbmFyaWVzRXF1YWxNaXhpbjoKKyAgICBkZWYgYXNzZXJ0X2Rp
Y3Rpb25hcmllc19lcXVhbChzZWxmLCBhY3R1YWwsIGV4cGVjdGVkKToKKyAgICAgICAgIyBNYWtl
IHN1cmUgd2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBsZXNzIHRoYW4gd2UgZXhwZWN0CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlZChhY3R1YWwua2V5cygpKSwgc29ydGVkKGV4cGVj
dGVkLmtleXMoKSkpCisKKyAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUgaW4gZXhwZWN0
ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFjdHVhbFtrZXldLCBl
eHBlY3RlZF92YWx1ZSwgKCJGYWlsdXJlIGZvciBrZXk6ICVzOiBBY3R1YWw9JyVzJyBFeHBlY3Rl
ZD0nJXMnIiAlIChrZXksIGFjdHVhbFtrZXldLCBleHBlY3RlZF92YWx1ZSkpKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQkocmV2aXNpb24g
ODQ2MjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAjIENvcHlyaWdodCAoYykgMjAwOSwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDExIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyAKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTM4Niw2ICszODcsMzkgQEAgY2xhc3MgU1ZOKFNDTSwgU1ZO
UmVwb3NpdG9yeSk6CiAgICAgZGVmIGNvbW1pdF9zdWNjZXNzX3JlZ2V4cCgpOgogICAgICAgICBy
ZXR1cm4gIl5Db21taXR0ZWQgcmV2aXNpb24gKD9QPHN2bl9yZXZpc2lvbj5cZCspXC4kIgogCisg
ICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcGFyc2Vfc3ZuX2F1dGhvcml6YXRpb25fY3JlZGVu
dGlhbHMoYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyk6CisgICAgICAgIEtFWV9IRUFERVJfU1RB
VEUgPSAxIDw8IDAKKyAgICAgICAgS0VZX1NUQVRFID0gMSA8PCAxCisgICAgICAgIFZBTFVFX0hF
QURFUl9TVEFURSA9IDEgPDwgMgorICAgICAgICBWQUxVRV9TVEFURSA9IDEgPDwgMworCisgICAg
ICAgIGtleV9oZWFkZXJfcmVnZXggPSByZS5jb21waWxlKHIiXksgKFswLTldKykkIikKKyAgICAg
ICAgdmFsdWVfaGVhZGVyX3JlZ2V4ID0gcmUuY29tcGlsZShyIl5WIChbMC05XSspJCIpCisKKyAg
ICAgICAga2V5ID0gTm9uZQorICAgICAgICBzdGF0ZSA9IEtFWV9IRUFERVJfU1RBVEUKKyAgICAg
ICAgY3JlZGVudGlhbHMgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBhdXRob3JpemF0aW9uX2Ny
ZWRlbnRpYWxzOgorICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCJcbiIpCisgICAgICAg
ICAgICBpZiBsaW5lID09ICJFTkQiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ICBpZiAoc3RhdGUgPT0gS0VZX0hFQURFUl9TVEFURSBhbmQga2V5X2hlYWRlcl9yZWdleC5tYXRj
aChsaW5lKSk6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBLRVlfU1RBVEUKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKHN0YXRlID09IEtFWV9TVEFURSk6CisgICAg
ICAgICAgICAgICAga2V5ID0gbGluZQorICAgICAgICAgICAgICAgIHN0YXRlID0gVkFMVUVfSEVB
REVSX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIChzdGF0
ZSA9PSBWQUxVRV9IRUFERVJfU1RBVEUgYW5kIHZhbHVlX2hlYWRlcl9yZWdleC5tYXRjaChsaW5l
KSk6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRV9TVEFURQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gVkFMVUVfU1RBVEUpOgorICAgICAg
ICAgICAgICAgIGNyZWRlbnRpYWxzW2tleV0gPSBsaW5lCisgICAgICAgICAgICAgICAgc3RhdGUg
PSBLRVlfSEVBREVSX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0
dXJuIGNyZWRlbnRpYWxzCisKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ3N2bicsICctLXZlcnNpb24nLCAnLS1xdWll
dCddKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbV91bml0dGVzdC5weQkocmV2aXNpb24gODQ2MjYpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00NCw2ICs0NSw3IEBAIGltcG9ydCB1cmxsaWIKIGltcG9ydCBzaHV0aWwKIAogZnJvbSBk
YXRldGltZSBpbXBvcnQgZGF0ZQorZnJvbSB3ZWJraXRweS5jb21tb24uYXNzZXJ0X2RpY3Rpb25h
cmllc19lcXVhbF9taXhpbiBpbXBvcnQgQXNzZXJ0RGljdGlvbmFyaWVzRXF1YWxNaXhpbgogZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuYXBpIGltcG9ydCBDaGVja291dAogZnJvbSB3ZWJr
aXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgU0NNLCBT
Vk4sIEdpdCwgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhl
bnRpY2F0aW9uRXJyb3IsIEFtYmlndW91c0NvbW1pdEVycm9yLCBmaW5kX2NoZWNrb3V0X3Jvb3Qs
IGRlZmF1bHRfc2NtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBv
cnQgQ29tbWl0dGVyICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCkBAIC00NTgs
NyArNDYwLDcgQEAgT2NtWWV4JnJlRCQ7c084KkY5TClCCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgiYWRkZWRfZGlyL2FkZGVkX2ZpbGUiIGluIHNlbGYuc2NtLmFkZGVkX2ZpbGVzKCkpCiAKIAot
Y2xhc3MgU1ZOVGVzdChTQ01UZXN0KToKK2NsYXNzIFNWTlRlc3QoU0NNVGVzdCwgQXNzZXJ0RGlj
dGlvbmFyaWVzRXF1YWxNaXhpbik6CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9zZXRf
ZGF0ZV9hbmRfcmV2aWV3ZXIoY2hhbmdlbG9nX2VudHJ5KToKQEAgLTY4OCw2ICs2OTAsMzEgQEAg
UTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQgogICAgICAgICBvcy5ybWRp
cihzdm5fY29uZmlnX2Rpcl9wYXRoKQogICAgICAgICBvcy5ybWRpcihmYWtlX2hvbWVfZGlyKQog
CisgICAgZGVmIHRlc3RfcGFyc2Vfc3ZuX2F1dGhvcml6YXRpb25fY3JlZGVudGlhbHMoc2VsZik6
CisgICAgICAgIGNyZWRlbnRpYWxzID0gIiIiCitLIDgKK3Bhc3N0eXBlCitWIDgKK2tleWNoYWlu
CitLIDE1Citzdm46cmVhbG1zdHJpbmcKK1YgMzkKKzxodHRwOi8vc3ZuLndlYmtpdC5vcmc6ODA+
IE1hYyBPUyBGb3JnZQorSyA4Cit1c2VybmFtZQorViAxNworZGJhdGVzQHdlYmtpdC5vcmcKK0VO
RAorIiIiCisgICAgICAgIGV4cGVjdGVkX2F1dGhvcml6YXRpb25fcGFyc2luZyA9IHsKKyAgICAg
ICAgICAgICJwYXNzdHlwZSIgOiAia2V5Y2hhaW4iLAorICAgICAgICAgICAgInN2bjpyZWFsbXN0
cmluZyIgOiAiPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4MD4gTWFjIE9TIEZvcmdlIiwKKyAgICAg
ICAgICAgICJ1c2VybmFtZSIgOiAiZGJhdGVzQHdlYmtpdC5vcmciCisgICAgICAgIH0KKworICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLnN2bl9jaGVja291dF9wYXRoKQorICAg
ICAgICBzZWxmLmFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoc2NtLl9wYXJzZV9zdm5fYXV0aG9y
aXphdGlvbl9jcmVkZW50aWFscyhjcmVkZW50aWFscy5zcGxpdGxpbmVzKCkpLCBleHBlY3RlZF9h
dXRob3JpemF0aW9uX3BhcnNpbmcpCisKICAgICBkZWYgdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6
CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigpCiAKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemls
bGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHJldmlzaW9uIDg0NjI2KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTQgQEAgaW1wb3J0IFN0cmluZ0lPCiAKIGZyb20gLmJ1
Z3ppbGxhIGltcG9ydCBCdWd6aWxsYSwgQnVnemlsbGFRdWVyaWVzLCBwYXJzZV9idWdfaWQsIHBh
cnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZwogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5hc3NlcnRf
ZGljdGlvbmFyaWVzX2VxdWFsX21peGluIGltcG9ydCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1p
eGluCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrQnJvd3Nl
cgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0
cHkudGhpcmRwYXJ0eS5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCiAKIAotY2xh
c3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJ1Z3ppbGxhVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSwgQXNzZXJ0RGljdGlvbmFyaWVzRXF1YWxNaXhpbik6CiAgICAgX2V4
YW1wbGVfYXR0YWNobWVudCA9ICcnJwogICAgICAgICA8YXR0YWNobWVudAogICAgICAgICAgIGlz
b2Jzb2xldGU9IjEiCkBAIC0yMzcsMTggKzIzOCw5IEBAIFpFWnBibWx6YUV4dllXUlhhWFJvVW1W
aGMyOXVPbkpsWVhOdmJsMDcKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg1NzU2OSwgcGFy
c2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKGNvbW1pdF90ZXh0KSkKIAotCi0gICAgIyBGSVhNRTog
VGhpcyBzaG91bGQgbW92ZSB0byBhIGNlbnRyYWwgbG9jYXRpb24gYW5kIGJlIHNoYXJlZCBieSBt
b3JlIHVuaXQgdGVzdHMuCi0gICAgZGVmIF9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKHNlbGYs
IGFjdHVhbCwgZXhwZWN0ZWQpOgotICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhcmVuJ3QgcGFyc2lu
ZyBtb3JlIG9yIGxlc3MgdGhhbiB3ZSBleHBlY3QKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
c29ydGVkKGFjdHVhbC5rZXlzKCkpLCBzb3J0ZWQoZXhwZWN0ZWQua2V5cygpKSkKLQotICAgICAg
ICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoYWN0dWFsW2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkZhaWx1
cmUgZm9yIGtleTogJXM6IEFjdHVhbD0nJXMnIEV4cGVjdGVkPSclcyciICUgKGtleSwgYWN0dWFs
W2tleV0sIGV4cGVjdGVkX3ZhbHVlKSkpCi0KICAgICBkZWYgdGVzdF9wYXJzZV9idWdfZGljdGlv
bmFyeV9mcm9tX3htbChzZWxmKToKICAgICAgICAgYnVnID0gQnVnemlsbGEoKS5fcGFyc2VfYnVn
X2RpY3Rpb25hcnlfZnJvbV94bWwoc2VsZi5fc2luZ2xlX2J1Z194bWwpCi0gICAgICAgIHNlbGYu
X2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoYnVnLCBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2J1
Z19wYXJzaW5nKQorICAgICAgICBzZWxmLmFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoYnVnLCBz
ZWxmLl9leHBlY3RlZF9leGFtcGxlX2J1Z19wYXJzaW5nKQogCiAgICAgX3NhbXBsZV9tdWx0aV9i
dWdfeG1sID0gIiIiCiA8YnVnemlsbGEgdmVyc2lvbj0iMy4yLjMiIHVybGJhc2U9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnLyIgbWFpbnRhaW5lcj0iYWRtaW5Ad2Via2l0Lm9yZyIgZXhwb3J0ZXI9
ImVyaWNAd2Via2l0Lm9yZyI+CkBAIC0yNzIsNyArMjY0LDcgQEAgWkVacGJtbHphRXh2WVdSWGFY
Um9VbVZoYzI5dU9uSmxZWE52YmwwNwogICAgICAgICBhdHRhY2htZW50X2VsZW1lbnQgPSBzb3Vw
LmZpbmQoImF0dGFjaG1lbnQiKQogICAgICAgICBhdHRhY2htZW50ID0gYnVnemlsbGEuX3BhcnNl
X2F0dGFjaG1lbnRfZWxlbWVudChhdHRhY2htZW50X2VsZW1lbnQsIHNlbGYuX2V4cGVjdGVkX2V4
YW1wbGVfYXR0YWNobWVudF9wYXJzaW5nWydidWdfaWQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGF0dGFjaG1lbnQpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwo
YXR0YWNobWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50X3BhcnNpbmcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChhdHRhY2htZW50LCBzZWxmLl9l
eHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZykKIAogICAgIF9zYW1wbGVfYXR0YWNo
bWVudF9kZXRhaWxfcGFnZSA9ICIiIgogPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RU
RCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90779</attachid>
            <date>2011-04-22 15:25:54 -0700</date>
            <delta_ts>2011-04-22 15:32:21 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug59245.patch</filename>
            <type>text/plain</type>
            <size>9707</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0Njg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdF9wYXJzZV9zdm5fYXV0
aG9yaXphdGlvbl9jcmVkZW50aWFscygpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogRXh0cmFjdCAKKyAgICAgICAg
ICBfYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbCgpIGludG8gYXNzZXJ0X2RpY3Rpb25hcmllc19l
cXVhbF9taXhpbi5weQorICAgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYm90aCBi
dWd6aWxsYV91bml0dGVzdC5weSBhbmQgc2NtX3VuaXR0ZXN0LnB5LgorCiAyMDExLTA0LTIyICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hc3NlcnRf
ZGljdGlvbmFyaWVzX2VxdWFsX21peGluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkJKHJldmlz
aW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hc3NlcnRfZGljdGlvbmFy
aWVzX2VxdWFsX21peGluLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorIyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorCisjIEEgbWl4aW4gZm9yIHVuaXR0ZXN0LlRlc3RDYXNlCitjbGFzcyBBc3Nl
cnREaWN0aW9uYXJpZXNFcXVhbE1peGluOgorICAgIGRlZiBhc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhcmVu
J3QgcGFyc2luZyBtb3JlIG9yIGxlc3MgdGhhbiB3ZSBleHBlY3QKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc29ydGVkKGFjdHVhbC5rZXlzKCkpLCBzb3J0ZWQoZXhwZWN0ZWQua2V5cygpKSkK
KworICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYWN0dWFsW2tleV0sIGV4cGVjdGVkX3ZhbHVl
LCAoIkZhaWx1cmUgZm9yIGtleTogJXM6IEFjdHVhbD0nJXMnIEV4cGVjdGVkPSclcyciICUgKGtl
eSwgYWN0dWFsW2tleV0sIGV4cGVjdGVkX3ZhbHVlKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CShyZXZpc2lvbiA4NDYyNikKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzg2LDYgKzM4NywzOSBAQCBjbGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToK
ICAgICBkZWYgY29tbWl0X3N1Y2Nlc3NfcmVnZXhwKCk6CiAgICAgICAgIHJldHVybiAiXkNvbW1p
dHRlZCByZXZpc2lvbiAoP1A8c3ZuX3JldmlzaW9uPlxkKylcLiQiCiAKKyAgICBAc3RhdGljbWV0
aG9kCisgICAgZGVmIF9wYXJzZV9zdm5fYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyhhdXRob3Jp
emF0aW9uX2NyZWRlbnRpYWxzKToKKyAgICAgICAgS0VZX0hFQURFUl9TVEFURSA9IDEgPDwgMAor
ICAgICAgICBLRVlfU1RBVEUgPSAxIDw8IDEKKyAgICAgICAgVkFMVUVfSEVBREVSX1NUQVRFID0g
MSA8PCAyCisgICAgICAgIFZBTFVFX1NUQVRFID0gMSA8PCAzCisKKyAgICAgICAga2V5X2hlYWRl
cl9yZWdleCA9IHJlLmNvbXBpbGUociJeSyAoWzAtOV0rKSQiKQorICAgICAgICB2YWx1ZV9oZWFk
ZXJfcmVnZXggPSByZS5jb21waWxlKHIiXlYgKFswLTldKykkIikKKworICAgICAgICBrZXkgPSBO
b25lCisgICAgICAgIHN0YXRlID0gS0VZX0hFQURFUl9TVEFURQorICAgICAgICBjcmVkZW50aWFs
cyA9IHt9CisgICAgICAgIGZvciBsaW5lIGluIGF1dGhvcml6YXRpb25fY3JlZGVudGlhbHM6Cisg
ICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoIlxuIikKKyAgICAgICAgICAgIGlmIGxpbmUg
PT0gIkVORCI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9
PSBLRVlfSEVBREVSX1NUQVRFIGFuZCBrZXlfaGVhZGVyX3JlZ2V4Lm1hdGNoKGxpbmUpKToKKyAg
ICAgICAgICAgICAgICBzdGF0ZSA9IEtFWV9TVEFURQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gS0VZX1NUQVRFKToKKyAgICAgICAgICAgICAgICBr
ZXkgPSBsaW5lCisgICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRV9IRUFERVJfU1RBVEUKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKHN0YXRlID09IFZBTFVFX0hF
QURFUl9TVEFURSBhbmQgdmFsdWVfaGVhZGVyX3JlZ2V4Lm1hdGNoKGxpbmUpKToKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFZBTFVFX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIChzdGF0ZSA9PSBWQUxVRV9TVEFURSk6CisgICAgICAgICAgICAgICAgY3Jl
ZGVudGlhbHNba2V5XSA9IGxpbmUKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IEtFWV9IRUFERVJf
U1RBVEUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICByZXR1cm4gY3JlZGVudGlh
bHMKKwogICAgIEBtZW1vaXplZAogICAgIGRlZiBzdm5fdmVyc2lvbihzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuKFsnc3ZuJywgJy0tdmVyc2lvbicsICctLXF1aWV0J10pCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiA4NDYyNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ0LDYgKzQ1
LDcgQEAgaW1wb3J0IHVybGxpYgogaW1wb3J0IHNodXRpbAogCiBmcm9tIGRhdGV0aW1lIGltcG9y
dCBkYXRlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsX21p
eGluIGltcG9ydCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGluCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNWTiwgR2l0LCBDaGVj
a291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJv
ciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IsIGZpbmRfY2hlY2tvdXRfcm9vdCwgZGVmYXVsdF9zY20K
IGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXIg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKQEAgLTQ1OCw3ICs0NjAsNyBAQCBP
Y21ZZXgmcmVEJDtzTzgqRjlMKUIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJhZGRlZF9kaXIv
YWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKIAogCi1jbGFzcyBTVk5UZXN0
KFNDTVRlc3QpOgorY2xhc3MgU1ZOVGVzdChTQ01UZXN0LCBBc3NlcnREaWN0aW9uYXJpZXNFcXVh
bE1peGluKToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3NldF9kYXRlX2FuZF9yZXZp
ZXdlcihjaGFuZ2Vsb2dfZW50cnkpOgpAQCAtNjg4LDYgKzY5MCwzMSBAQCBRMWRUQngwQUFBQjQy
aXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCCiAgICAgICAgIG9zLnJtZGlyKHN2bl9jb25maWdf
ZGlyX3BhdGgpCiAgICAgICAgIG9zLnJtZGlyKGZha2VfaG9tZV9kaXIpCiAKKyAgICBkZWYgdGVz
dF9wYXJzZV9zdm5fYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgY3Jl
ZGVudGlhbHMgPSAiIiIKK0sgOAorcGFzc3R5cGUKK1YgOAora2V5Y2hhaW4KK0sgMTUKK3N2bjpy
ZWFsbXN0cmluZworViAzOQorPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4MD4gTWFjIE9TIEZvcmdl
CitLIDgKK3VzZXJuYW1lCitWIDE3CitkYmF0ZXNAd2Via2l0Lm9yZworRU5ECisiIiIKKyAgICAg
ICAgZXhwZWN0ZWRfYXV0aG9yaXphdGlvbl9wYXJzaW5nID0geworICAgICAgICAgICAgInBhc3N0
eXBlIiA6ICJrZXljaGFpbiIsCisgICAgICAgICAgICAic3ZuOnJlYWxtc3RyaW5nIiA6ICI8aHR0
cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UiLAorICAgICAgICAgICAgInVzZXJu
YW1lIiA6ICJkYmF0ZXNAd2Via2l0Lm9yZyIKKyAgICAgICAgfQorCisgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2RpY3Rpb25hcmllc19lcXVhbChzY20uX3BhcnNlX3N2bl9hdXRob3JpemF0aW9uX2NyZWRl
bnRpYWxzKGNyZWRlbnRpYWxzLnNwbGl0bGluZXMoKSksIGV4cGVjdGVkX2F1dGhvcml6YXRpb25f
cGFyc2luZykKKwogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91
bml0dGVzdC5weQkocmV2aXNpb24gODQ2MjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEzICszMiwxNCBAQCBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSAuYnVnemlsbGEgaW1wb3J0
IEJ1Z3ppbGxhLCBCdWd6aWxsYVF1ZXJpZXMsIHBhcnNlX2J1Z19pZCwgcGFyc2VfYnVnX2lkX2Zy
b21fY2hhbmdlbG9nCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmFzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWxfbWl4aW4gaW1wb3J0IEFzc2VydERpY3Rpb25hcmllc0VxdWFsTWl4aW4KIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBm
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogCi1jbGFzcyBCdWd6aWxsYVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlLCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGluKToKICAgICBfZXhhbXBsZV9hdHRhY2ht
ZW50ID0gJycnCiAgICAgICAgIDxhdHRhY2htZW50CiAgICAgICAgICAgaXNvYnNvbGV0ZT0iMSIK
QEAgLTIzNywxOCArMjM4LDkgQEAgWkVacGJtbHphRXh2WVdSWGFYUm9VbVZoYzI5dU9uSmxZWE52
YmwwNwogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDU3NTY5LCBwYXJzZV9idWdfaWRfZnJv
bV9jaGFuZ2Vsb2coY29tbWl0X3RleHQpKQogCi0KLSAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBt
b3ZlIHRvIGEgY2VudHJhbCBsb2NhdGlvbiBhbmQgYmUgc2hhcmVkIGJ5IG1vcmUgdW5pdCB0ZXN0
cy4KLSAgICBkZWYgX2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoc2VsZiwgYWN0dWFsLCBleHBl
Y3RlZCk6Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIGFyZW4ndCBwYXJzaW5nIG1vcmUgb3IgbGVz
cyB0aGFuIHdlIGV4cGVjdAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZWQoYWN0dWFs
LmtleXMoKSksIHNvcnRlZChleHBlY3RlZC5rZXlzKCkpKQotCi0gICAgICAgIGZvciBrZXksIGV4
cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUsICgiRmFpbHVyZSBmb3Iga2V5OiAl
czogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoa2V5LCBhY3R1YWxba2V5XSwgZXhwZWN0
ZWRfdmFsdWUpKSkKLQogICAgIGRlZiB0ZXN0X3BhcnNlX2J1Z19kaWN0aW9uYXJ5X2Zyb21feG1s
KHNlbGYpOgogICAgICAgICBidWcgPSBCdWd6aWxsYSgpLl9wYXJzZV9idWdfZGljdGlvbmFyeV9m
cm9tX3htbChzZWxmLl9zaW5nbGVfYnVnX3htbCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2RpY3Rp
b25hcmllc19lcXVhbChidWcsIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVfYnVnX3BhcnNpbmcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChidWcsIHNlbGYuX2V4cGVjdGVk
X2V4YW1wbGVfYnVnX3BhcnNpbmcpCiAKICAgICBfc2FtcGxlX211bHRpX2J1Z194bWwgPSAiIiIK
IDxidWd6aWxsYSB2ZXJzaW9uPSIzLjIuMyIgdXJsYmFzZT0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIiBtYWludGFpbmVyPSJhZG1pbkB3ZWJraXQub3JnIiBleHBvcnRlcj0iZXJpY0B3ZWJraXQu
b3JnIj4KQEAgLTI3Miw3ICsyNjQsNyBAQCBaRVpwYm1semFFeHZZV1JYYVhSb1VtVmhjMjl1T25K
bFlYTnZibDA3CiAgICAgICAgIGF0dGFjaG1lbnRfZWxlbWVudCA9IHNvdXAuZmluZCgiYXR0YWNo
bWVudCIpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBidWd6aWxsYS5fcGFyc2VfYXR0YWNobWVudF9l
bGVtZW50KGF0dGFjaG1lbnRfZWxlbWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2ht
ZW50X3BhcnNpbmdbJ2J1Z19pZCddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0YWNobWVu
dCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChhdHRhY2htZW50LCBz
ZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZykKKyAgICAgICAgc2VsZi5h
c3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGF0dGFjaG1lbnQsIHNlbGYuX2V4cGVjdGVkX2V4YW1w
bGVfYXR0YWNobWVudF9wYXJzaW5nKQogCiAgICAgX3NhbXBsZV9hdHRhY2htZW50X2RldGFpbF9w
YWdlID0gIiIiCiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90782</attachid>
            <date>2011-04-22 15:32:21 -0700</date>
            <delta_ts>2011-04-22 16:47:47 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug59245.patch</filename>
            <type>text/plain</type>
            <size>9707</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0Njg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdF9wYXJzZV9zdm5fYXV0
aG9yaXphdGlvbl9jcmVkZW50aWFscygpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogRXh0cmFjdCAKKyAgICAgICAg
ICBfYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbCgpIGludG8gYXNzZXJ0X2RpY3Rpb25hcmllc19l
cXVhbF9taXhpbi5weQorICAgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYm90aCBi
dWd6aWxsYV91bml0dGVzdC5weSBhbmQgc2NtX3VuaXR0ZXN0LnB5LgorCiAyMDExLTA0LTIyICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hc3NlcnRf
ZGljdGlvbmFyaWVzX2VxdWFsX21peGluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkJKHJldmlz
aW9uIDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9hc3NlcnRfZGljdGlvbmFy
aWVzX2VxdWFsX21peGluLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisj
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKworCisjIEEgbWl4aW4gZm9yIHVuaXR0ZXN0LlRlc3RDYXNlCitjbGFzcyBBc3Nl
cnREaWN0aW9uYXJpZXNFcXVhbE1peGluOgorICAgIGRlZiBhc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhcmVu
J3QgcGFyc2luZyBtb3JlIG9yIGxlc3MgdGhhbiB3ZSBleHBlY3QKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc29ydGVkKGFjdHVhbC5rZXlzKCkpLCBzb3J0ZWQoZXhwZWN0ZWQua2V5cygpKSkK
KworICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYWN0dWFsW2tleV0sIGV4cGVjdGVkX3ZhbHVl
LCAoIkZhaWx1cmUgZm9yIGtleTogJXM6IEFjdHVhbD0nJXMnIEV4cGVjdGVkPSclcyciICUgKGtl
eSwgYWN0dWFsW2tleV0sIGV4cGVjdGVkX3ZhbHVlKSkpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CShyZXZpc2lvbiA4NDYyNikKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzg2LDYgKzM4NywzOSBAQCBjbGFzcyBTVk4oU0NNLCBTVk5SZXBvc2l0b3J5KToK
ICAgICBkZWYgY29tbWl0X3N1Y2Nlc3NfcmVnZXhwKCk6CiAgICAgICAgIHJldHVybiAiXkNvbW1p
dHRlZCByZXZpc2lvbiAoP1A8c3ZuX3JldmlzaW9uPlxkKylcLiQiCiAKKyAgICBAc3RhdGljbWV0
aG9kCisgICAgZGVmIF9wYXJzZV9zdm5fYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyhhdXRob3Jp
emF0aW9uX2NyZWRlbnRpYWxzKToKKyAgICAgICAgS0VZX0hFQURFUl9TVEFURSA9IDEgPDwgMAor
ICAgICAgICBLRVlfU1RBVEUgPSAxIDw8IDEKKyAgICAgICAgVkFMVUVfSEVBREVSX1NUQVRFID0g
MSA8PCAyCisgICAgICAgIFZBTFVFX1NUQVRFID0gMSA8PCAzCisKKyAgICAgICAga2V5X2hlYWRl
cl9yZWdleCA9IHJlLmNvbXBpbGUociJeSyAoWzAtOV0rKSQiKQorICAgICAgICB2YWx1ZV9oZWFk
ZXJfcmVnZXggPSByZS5jb21waWxlKHIiXlYgKFswLTldKykkIikKKworICAgICAgICBrZXkgPSBO
b25lCisgICAgICAgIHN0YXRlID0gS0VZX0hFQURFUl9TVEFURQorICAgICAgICBjcmVkZW50aWFs
cyA9IHt9CisgICAgICAgIGZvciBsaW5lIGluIGF1dGhvcml6YXRpb25fY3JlZGVudGlhbHM6Cisg
ICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoIlxuIikKKyAgICAgICAgICAgIGlmIGxpbmUg
PT0gIkVORCI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9
PSBLRVlfSEVBREVSX1NUQVRFIGFuZCBrZXlfaGVhZGVyX3JlZ2V4Lm1hdGNoKGxpbmUpKToKKyAg
ICAgICAgICAgICAgICBzdGF0ZSA9IEtFWV9TVEFURQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gS0VZX1NUQVRFKToKKyAgICAgICAgICAgICAgICBr
ZXkgPSBsaW5lCisgICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRV9IRUFERVJfU1RBVEUKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKHN0YXRlID09IFZBTFVFX0hF
QURFUl9TVEFURSBhbmQgdmFsdWVfaGVhZGVyX3JlZ2V4Lm1hdGNoKGxpbmUpKToKKyAgICAgICAg
ICAgICAgICBzdGF0ZSA9IFZBTFVFX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIChzdGF0ZSA9PSBWQUxVRV9TVEFURSk6CisgICAgICAgICAgICAgICAgY3Jl
ZGVudGlhbHNba2V5XSA9IGxpbmUKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IEtFWV9IRUFERVJf
U1RBVEUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICByZXR1cm4gY3JlZGVudGlh
bHMKKwogICAgIEBtZW1vaXplZAogICAgIGRlZiBzdm5fdmVyc2lvbihzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYucnVuKFsnc3ZuJywgJy0tdmVyc2lvbicsICctLXF1aWV0J10pCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiA4NDYyNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ0LDYgKzQ1
LDcgQEAgaW1wb3J0IHVybGxpYgogaW1wb3J0IHNodXRpbAogCiBmcm9tIGRhdGV0aW1lIGltcG9y
dCBkYXRlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsX21p
eGluIGltcG9ydCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGluCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENoZWNrb3V0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5j
aGVja291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNWTiwgR2l0LCBDaGVj
a291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJv
ciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IsIGZpbmRfY2hlY2tvdXRfcm9vdCwgZGVmYXVsdF9zY20K
IGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXIg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKQEAgLTQ1OCw3ICs0NjAsNyBAQCBP
Y21ZZXgmcmVEJDtzTzgqRjlMKUIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJhZGRlZF9kaXIv
YWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkKIAogCi1jbGFzcyBTVk5UZXN0
KFNDTVRlc3QpOgorY2xhc3MgU1ZOVGVzdChTQ01UZXN0LCBBc3NlcnREaWN0aW9uYXJpZXNFcXVh
bE1peGluKToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3NldF9kYXRlX2FuZF9yZXZp
ZXdlcihjaGFuZ2Vsb2dfZW50cnkpOgpAQCAtNjg4LDYgKzY5MCwzMSBAQCBRMWRUQngwQUFBQjQy
aXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCCiAgICAgICAgIG9zLnJtZGlyKHN2bl9jb25maWdf
ZGlyX3BhdGgpCiAgICAgICAgIG9zLnJtZGlyKGZha2VfaG9tZV9kaXIpCiAKKyAgICBkZWYgdGVz
dF9wYXJzZV9zdm5fYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyhzZWxmKToKKyAgICAgICAgY3Jl
ZGVudGlhbHMgPSAiIiIKK0sgOAorcGFzc3R5cGUKK1YgOAora2V5Y2hhaW4KK0sgMTUKK3N2bjpy
ZWFsbXN0cmluZworViAzOQorPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4MD4gTWFjIE9TIEZvcmdl
CitLIDgKK3VzZXJuYW1lCitWIDE3CitkYmF0ZXNAd2Via2l0Lm9yZworRU5ECisiIiIKKyAgICAg
ICAgZXhwZWN0ZWRfYXV0aG9yaXphdGlvbl9wYXJzaW5nID0geworICAgICAgICAgICAgInBhc3N0
eXBlIiA6ICJrZXljaGFpbiIsCisgICAgICAgICAgICAic3ZuOnJlYWxtc3RyaW5nIiA6ICI8aHR0
cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UiLAorICAgICAgICAgICAgInVzZXJu
YW1lIiA6ICJkYmF0ZXNAd2Via2l0Lm9yZyIKKyAgICAgICAgfQorCisgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2RpY3Rpb25hcmllc19lcXVhbChzY20uX3BhcnNlX3N2bl9hdXRob3JpemF0aW9uX2NyZWRl
bnRpYWxzKGNyZWRlbnRpYWxzLnNwbGl0bGluZXMoKSksIGV4cGVjdGVkX2F1dGhvcml6YXRpb25f
cGFyc2luZykKKwogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91
bml0dGVzdC5weQkocmV2aXNpb24gODQ2MjYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEzICszMiwxNCBAQCBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSAuYnVnemlsbGEgaW1wb3J0
IEJ1Z3ppbGxhLCBCdWd6aWxsYVF1ZXJpZXMsIHBhcnNlX2J1Z19pZCwgcGFyc2VfYnVnX2lkX2Zy
b21fY2hhbmdlbG9nCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmFzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWxfbWl4aW4gaW1wb3J0IEFzc2VydERpY3Rpb25hcmllc0VxdWFsTWl4aW4KIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBm
cm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogCi1jbGFzcyBCdWd6aWxsYVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlLCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGluKToKICAgICBfZXhhbXBsZV9hdHRhY2ht
ZW50ID0gJycnCiAgICAgICAgIDxhdHRhY2htZW50CiAgICAgICAgICAgaXNvYnNvbGV0ZT0iMSIK
QEAgLTIzNywxOCArMjM4LDkgQEAgWkVacGJtbHphRXh2WVdSWGFYUm9VbVZoYzI5dU9uSmxZWE52
YmwwNwogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDU3NTY5LCBwYXJzZV9idWdfaWRfZnJv
bV9jaGFuZ2Vsb2coY29tbWl0X3RleHQpKQogCi0KLSAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBt
b3ZlIHRvIGEgY2VudHJhbCBsb2NhdGlvbiBhbmQgYmUgc2hhcmVkIGJ5IG1vcmUgdW5pdCB0ZXN0
cy4KLSAgICBkZWYgX2Fzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwoc2VsZiwgYWN0dWFsLCBleHBl
Y3RlZCk6Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIGFyZW4ndCBwYXJzaW5nIG1vcmUgb3IgbGVz
cyB0aGFuIHdlIGV4cGVjdAotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZWQoYWN0dWFs
LmtleXMoKSksIHNvcnRlZChleHBlY3RlZC5rZXlzKCkpKQotCi0gICAgICAgIGZvciBrZXksIGV4
cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUsICgiRmFpbHVyZSBmb3Iga2V5OiAl
czogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoa2V5LCBhY3R1YWxba2V5XSwgZXhwZWN0
ZWRfdmFsdWUpKSkKLQogICAgIGRlZiB0ZXN0X3BhcnNlX2J1Z19kaWN0aW9uYXJ5X2Zyb21feG1s
KHNlbGYpOgogICAgICAgICBidWcgPSBCdWd6aWxsYSgpLl9wYXJzZV9idWdfZGljdGlvbmFyeV9m
cm9tX3htbChzZWxmLl9zaW5nbGVfYnVnX3htbCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2RpY3Rp
b25hcmllc19lcXVhbChidWcsIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVfYnVnX3BhcnNpbmcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChidWcsIHNlbGYuX2V4cGVjdGVk
X2V4YW1wbGVfYnVnX3BhcnNpbmcpCiAKICAgICBfc2FtcGxlX211bHRpX2J1Z194bWwgPSAiIiIK
IDxidWd6aWxsYSB2ZXJzaW9uPSIzLjIuMyIgdXJsYmFzZT0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIiBtYWludGFpbmVyPSJhZG1pbkB3ZWJraXQub3JnIiBleHBvcnRlcj0iZXJpY0B3ZWJraXQu
b3JnIj4KQEAgLTI3Miw3ICsyNjQsNyBAQCBaRVpwYm1semFFeHZZV1JYYVhSb1VtVmhjMjl1T25K
bFlYTnZibDA3CiAgICAgICAgIGF0dGFjaG1lbnRfZWxlbWVudCA9IHNvdXAuZmluZCgiYXR0YWNo
bWVudCIpCiAgICAgICAgIGF0dGFjaG1lbnQgPSBidWd6aWxsYS5fcGFyc2VfYXR0YWNobWVudF9l
bGVtZW50KGF0dGFjaG1lbnRfZWxlbWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2ht
ZW50X3BhcnNpbmdbJ2J1Z19pZCddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0YWNobWVu
dCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChhdHRhY2htZW50LCBz
ZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZykKKyAgICAgICAgc2VsZi5h
c3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGF0dGFjaG1lbnQsIHNlbGYuX2V4cGVjdGVkX2V4YW1w
bGVfYXR0YWNobWVudF9wYXJzaW5nKQogCiAgICAgX3NhbXBsZV9hdHRhY2htZW50X2RldGFpbF9w
YWdlID0gIiIiCiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90802</attachid>
            <date>2011-04-22 16:47:47 -0700</date>
            <delta_ts>2011-04-22 16:57:10 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug59245_1.patch</filename>
            <type>text/plain</type>
            <size>9745</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0NzA1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdF9wYXJzZV9zdm5fYXV0
aG9yaXphdGlvbl9jcmVkZW50aWFscygpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogRXh0cmFjdAorICAgICAgICAg
IF9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKCkgaW50byBhc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsX21peGluLnB5CisgICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBib3RoIGJ1
Z3ppbGxhX3VuaXR0ZXN0LnB5IGFuZCBzY21fdW5pdHRlc3QucHkuCisKIDIwMTEtMDQtMjIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0
aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbi5weQkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWxfbWl4aW4ucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorCisKKyMgQSBtaXhpbiBmb3IgdW5pdHRlc3QuVGVzdENhc2UKK2NsYXNzIEFzc2VydERp
Y3Rpb25hcmllc0VxdWFsTWl4aW46CisgICAgZGVmIGFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwo
c2VsZiwgYWN0dWFsLCBleHBlY3RlZCk6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGFyZW4ndCBw
YXJzaW5nIG1vcmUgb3IgbGVzcyB0aGFuIHdlIGV4cGVjdAorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzb3J0ZWQoYWN0dWFsLmtleXMoKSksIHNvcnRlZChleHBlY3RlZC5rZXlzKCkpKQorCisg
ICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUsICgi
RmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoa2V5LCBh
Y3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkJKHJldmlzaW9uIDg0NzAwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zOTQsNiArMzk1LDM5IEBAIGNsYXNzIFNWTihTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAg
IGRlZiBjb21taXRfc3VjY2Vzc19yZWdleHAoKToKICAgICAgICAgcmV0dXJuICJeQ29tbWl0dGVk
IHJldmlzaW9uICg/UDxzdm5fcmV2aXNpb24+XGQrKVwuJCIKIAorICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9uX2NyZWRlbnRpYWxzKGF1dGhvcml6YXRp
b25fY3JlZGVudGlhbHMpOgorICAgICAgICBLRVlfSEVBREVSX1NUQVRFID0gMSA8PCAwCisgICAg
ICAgIEtFWV9TVEFURSA9IDEgPDwgMQorICAgICAgICBWQUxVRV9IRUFERVJfU1RBVEUgPSAxIDw8
IDIKKyAgICAgICAgVkFMVUVfU1RBVEUgPSAxIDw8IDMKKworICAgICAgICBrZXlfaGVhZGVyX3Jl
Z2V4ID0gcmUuY29tcGlsZShyIl5LIChbMC05XSspJCIpCisgICAgICAgIHZhbHVlX2hlYWRlcl9y
ZWdleCA9IHJlLmNvbXBpbGUociJeViAoWzAtOV0rKSQiKQorCisgICAgICAgIGtleSA9IE5vbmUK
KyAgICAgICAgc3RhdGUgPSBLRVlfSEVBREVSX1NUQVRFCisgICAgICAgIGNyZWRlbnRpYWxzID0g
e30KKyAgICAgICAgZm9yIGxpbmUgaW4gYXV0aG9yaXphdGlvbl9jcmVkZW50aWFsczoKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgiXG4iKQorICAgICAgICAgICAgaWYgbGluZSA9PSAi
RU5EIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgKHN0YXRlID09IEtF
WV9IRUFERVJfU1RBVEUgYW5kIGtleV9oZWFkZXJfcmVnZXgubWF0Y2gobGluZSkpOgorICAgICAg
ICAgICAgICAgIHN0YXRlID0gS0VZX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIChzdGF0ZSA9PSBLRVlfU1RBVEUpOgorICAgICAgICAgICAgICAgIGtleSA9
IGxpbmUKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFZBTFVFX0hFQURFUl9TVEFURQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gVkFMVUVfSEVBREVS
X1NUQVRFIGFuZCB2YWx1ZV9oZWFkZXJfcmVnZXgubWF0Y2gobGluZSkpOgorICAgICAgICAgICAg
ICAgIHN0YXRlID0gVkFMVUVfU1RBVEUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgaWYgKHN0YXRlID09IFZBTFVFX1NUQVRFKToKKyAgICAgICAgICAgICAgICBjcmVkZW50
aWFsc1trZXldID0gbGluZQorICAgICAgICAgICAgICAgIHN0YXRlID0gS0VZX0hFQURFUl9TVEFU
RQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBjcmVkZW50aWFscwor
CiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHN2bl92ZXJzaW9uKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5ydW4oWydzdm4nLCAnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRl
c3QucHkJKHJldmlzaW9uIDg0NzAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMg
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29w
eXJpZ2h0IChDKSAyMDExIERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQ1LDYgKzQ2LDcgQEAgaW1wb3J0IHVybGxpYgogaW1wb3J0IHNodXRpbAogCiBm
cm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5hc3NlcnRfZGlj
dGlvbmFyaWVzX2VxdWFsX21peGluIGltcG9ydCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGlu
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENoZWNrb3V0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBT
Q00sIFNWTiwgR2l0LCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwg
QXV0aGVudGljYXRpb25FcnJvciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IsIGZpbmRfY2hlY2tvdXRf
cm9vdCwgZGVmYXVsdF9zY20KIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJz
IGltcG9ydCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKQEAg
LTQ1OSw3ICs0NjEsNyBAQCBPY21ZZXgmcmVEJDtzTzgqRjlMKUIKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkK
IAogCi1jbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgorY2xhc3MgU1ZOVGVzdChTQ01UZXN0LCBBc3Nl
cnREaWN0aW9uYXJpZXNFcXVhbE1peGluKToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
X3NldF9kYXRlX2FuZF9yZXZpZXdlcihjaGFuZ2Vsb2dfZW50cnkpOgpAQCAtNzQwLDYgKzc0Miwz
MSBAQCBFTkQKICAgICAgICAgb3Mucm1kaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKICAgICAgICAg
b3Mucm1kaXIoZmFrZV9ob21lX2RpcikKIAorICAgIGRlZiB0ZXN0X3BhcnNlX3N2bl9hdXRob3Jp
emF0aW9uX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICBjcmVkZW50aWFscyA9ICIiIgorSyA4
CitwYXNzdHlwZQorViA4CitrZXljaGFpbgorSyAxNQorc3ZuOnJlYWxtc3RyaW5nCitWIDM5Cis8
aHR0cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UKK0sgOAordXNlcm5hbWUKK1Yg
MTcKK2RiYXRlc0B3ZWJraXQub3JnCitFTkQKKyIiIgorICAgICAgICBleHBlY3RlZF9hdXRob3Jp
emF0aW9uX3BhcnNpbmcgPSB7CisgICAgICAgICAgICAicGFzc3R5cGUiIDogImtleWNoYWluIiwK
KyAgICAgICAgICAgICJzdm46cmVhbG1zdHJpbmciIDogIjxodHRwOi8vc3ZuLndlYmtpdC5vcmc6
ODA+IE1hYyBPUyBGb3JnZSIsCisgICAgICAgICAgICAidXNlcm5hbWUiIDogImRiYXRlc0B3ZWJr
aXQub3JnIgorICAgICAgICB9CisKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5zdm5fY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsKHNjbS5fcGFyc2Vfc3ZuX2F1dGhvcml6YXRpb25fY3JlZGVudGlhbHMoY3JlZGVudGlhbHMu
c3BsaXRsaW5lcygpKSwgZXhwZWN0ZWRfYXV0aG9yaXphdGlvbl9wYXJzaW5nKQorCiAgICAgZGVm
IHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9yZXZl
cnNlX2RpZmYoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biA4NDcwMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9i
dWd6aWxsYV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDE0IEBAIGlt
cG9ydCBTdHJpbmdJTwogCiBmcm9tIC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEsIEJ1Z3ppbGxh
UXVlcmllcywgcGFyc2VfYnVnX2lkLCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cKIAorZnJv
bSB3ZWJraXRweS5jb21tb24uYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbiBpbXBvcnQg
QXNzZXJ0RGljdGlvbmFyaWVzRXF1YWxNaXhpbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
Lm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja0Jyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2Nr
IGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBv
cnQgQmVhdXRpZnVsU291cAogCiAKLWNsYXNzIEJ1Z3ppbGxhVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CitjbGFzcyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVzdENhc2UsIEFzc2VydERpY3Rpb25h
cmllc0VxdWFsTWl4aW4pOgogICAgIF9leGFtcGxlX2F0dGFjaG1lbnQgPSAnJycKICAgICAgICAg
PGF0dGFjaG1lbnQKICAgICAgICAgICBpc29ic29sZXRlPSIxIgpAQCAtMjM3LDE4ICsyMzgsOSBA
QCBaRVpwYm1semFFeHZZV1JYYVhSb1VtVmhjMjl1T25KbFlYTnZibDA3CiAKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoNTc1NjksIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyhjb21taXRf
dGV4dCkpCiAKLQotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gYSBjZW50cmFsIGxv
Y2F0aW9uIGFuZCBiZSBzaGFyZWQgYnkgbW9yZSB1bml0IHRlc3RzLgotICAgIGRlZiBfYXNzZXJ0
X2RpY3Rpb25hcmllc19lcXVhbChzZWxmLCBhY3R1YWwsIGV4cGVjdGVkKToKLSAgICAgICAgIyBN
YWtlIHN1cmUgd2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBsZXNzIHRoYW4gd2UgZXhwZWN0Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlZChhY3R1YWwua2V5cygpKSwgc29ydGVkKGV4
cGVjdGVkLmtleXMoKSkpCi0KLSAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUgaW4gZXhw
ZWN0ZWQuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFjdHVhbFtrZXld
LCBleHBlY3RlZF92YWx1ZSwgKCJGYWlsdXJlIGZvciBrZXk6ICVzOiBBY3R1YWw9JyVzJyBFeHBl
Y3RlZD0nJXMnIiAlIChrZXksIGFjdHVhbFtrZXldLCBleHBlY3RlZF92YWx1ZSkpKQotCiAgICAg
ZGVmIHRlc3RfcGFyc2VfYnVnX2RpY3Rpb25hcnlfZnJvbV94bWwoc2VsZik6CiAgICAgICAgIGJ1
ZyA9IEJ1Z3ppbGxhKCkuX3BhcnNlX2J1Z19kaWN0aW9uYXJ5X2Zyb21feG1sKHNlbGYuX3Npbmds
ZV9idWdfeG1sKQotICAgICAgICBzZWxmLl9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGJ1Zywg
c2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9idWdfcGFyc2luZykKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZGljdGlvbmFyaWVzX2VxdWFsKGJ1Zywgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9idWdfcGFyc2lu
ZykKIAogICAgIF9zYW1wbGVfbXVsdGlfYnVnX3htbCA9ICIiIgogPGJ1Z3ppbGxhIHZlcnNpb249
IjMuMi4zIiB1cmxiYXNlPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iIG1haW50YWluZXI9ImFk
bWluQHdlYmtpdC5vcmciIGV4cG9ydGVyPSJlcmljQHdlYmtpdC5vcmciPgpAQCAtMjcyLDcgKzI2
NCw3IEBAIFpFWnBibWx6YUV4dllXUlhhWFJvVW1WaGMyOXVPbkpsWVhOdmJsMDcKICAgICAgICAg
YXR0YWNobWVudF9lbGVtZW50ID0gc291cC5maW5kKCJhdHRhY2htZW50IikKICAgICAgICAgYXR0
YWNobWVudCA9IGJ1Z3ppbGxhLl9wYXJzZV9hdHRhY2htZW50X2VsZW1lbnQoYXR0YWNobWVudF9l
bGVtZW50LCBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZ1snYnVnX2lk
J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRhY2htZW50KQotICAgICAgICBzZWxmLl9h
c3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGF0dGFjaG1lbnQsIHNlbGYuX2V4cGVjdGVkX2V4YW1w
bGVfYXR0YWNobWVudF9wYXJzaW5nKQorICAgICAgICBzZWxmLmFzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWwoYXR0YWNobWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50X3BhcnNp
bmcpCiAKICAgICBfc2FtcGxlX2F0dGFjaG1lbnRfZGV0YWlsX3BhZ2UgPSAiIiIKIDwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90804</attachid>
            <date>2011-04-22 16:57:17 -0700</date>
            <delta_ts>2011-04-22 17:01:38 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug-59245-20110422165716.patch</filename>
            <type>text/plain</type>
            <size>9743</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0NzA1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdF9wYXJzZV9zdm5fYXV0
aG9yaXphdGlvbl9jcmVkZW50aWFscygpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogRXh0cmFjdAorICAgICAgICAg
IF9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKCkgaW50byBhc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsX21peGluLnB5CisgICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBib3RoIGJ1
Z3ppbGxhX3VuaXR0ZXN0LnB5IGFuZCBzY21fdW5pdHRlc3QucHkuCisKIDIwMTEtMDQtMjIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0
aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbi5weQkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWxfbWl4aW4ucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorCisKKyMgQSBtaXhpbiBmb3IgdW5pdHRlc3QuVGVzdENhc2UKK2NsYXNzIEFzc2VydERp
Y3Rpb25hcmllc0VxdWFsTWl4aW46CisgICAgZGVmIGFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwo
c2VsZiwgYWN0dWFsLCBleHBlY3RlZCk6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGFyZW4ndCBw
YXJzaW5nIG1vcmUgb3IgbGVzcyB0aGFuIHdlIGV4cGVjdAorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzb3J0ZWQoYWN0dWFsLmtleXMoKSksIHNvcnRlZChleHBlY3RlZC5rZXlzKCkpKQorCisg
ICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUsICgi
RmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoa2V5LCBh
Y3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkJKHJldmlzaW9uIDg0NzAwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zOTQsNiArMzk1LDM5IEBAIGNsYXNzIFNWTihTQ00sIFNWTlJlcG9zaXRvcnkpOgogICAg
IGRlZiBjb21taXRfc3VjY2Vzc19yZWdleHAoKToKICAgICAgICAgcmV0dXJuICJeQ29tbWl0dGVk
IHJldmlzaW9uICg/UDxzdm5fcmV2aXNpb24+XGQrKVwuJCIKIAorICAgIEBzdGF0aWNtZXRob2QK
KyAgICBkZWYgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9uX2NyZWRlbnRpYWxzKGF1dGhvcml6YXRp
b25fY3JlZGVudGlhbHMpOgorICAgICAgICBLRVlfSEVBREVSX1NUQVRFID0gMSA8PCAwCisgICAg
ICAgIEtFWV9TVEFURSA9IDEgPDwgMQorICAgICAgICBWQUxVRV9IRUFERVJfU1RBVEUgPSAxIDw8
IDIKKyAgICAgICAgVkFMVUVfU1RBVEUgPSAxIDw8IDMKKworICAgICAgICBrZXlfaGVhZGVyX3Jl
Z2V4ID0gcmUuY29tcGlsZShyIl5LIChbMC05XSspJCIpCisgICAgICAgIHZhbHVlX2hlYWRlcl9y
ZWdleCA9IHJlLmNvbXBpbGUociJeViAoWzAtOV0rKSQiKQorCisgICAgICAgIGtleSA9IE5vbmUK
KyAgICAgICAgc3RhdGUgPSBLRVlfSEVBREVSX1NUQVRFCisgICAgICAgIGNyZWRlbnRpYWxzID0g
e30KKyAgICAgICAgZm9yIGxpbmUgaW4gYXV0aG9yaXphdGlvbl9jcmVkZW50aWFsczoKKyAgICAg
ICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgiXG4iKQorICAgICAgICAgICAgaWYgbGluZSA9PSAi
RU5EIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgKHN0YXRlID09IEtF
WV9IRUFERVJfU1RBVEUgYW5kIGtleV9oZWFkZXJfcmVnZXgubWF0Y2gobGluZSkpOgorICAgICAg
ICAgICAgICAgIHN0YXRlID0gS0VZX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIGlmIChzdGF0ZSA9PSBLRVlfU1RBVEUpOgorICAgICAgICAgICAgICAgIGtleSA9
IGxpbmUKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFZBTFVFX0hFQURFUl9TVEFURQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gVkFMVUVfSEVBREVS
X1NUQVRFIGFuZCB2YWx1ZV9oZWFkZXJfcmVnZXgubWF0Y2gobGluZSkpOgorICAgICAgICAgICAg
ICAgIHN0YXRlID0gVkFMVUVfU1RBVEUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgaWYgKHN0YXRlID09IFZBTFVFX1NUQVRFKToKKyAgICAgICAgICAgICAgICBjcmVkZW50
aWFsc1trZXldID0gbGluZQorICAgICAgICAgICAgICAgIHN0YXRlID0gS0VZX0hFQURFUl9TVEFU
RQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBjcmVkZW50aWFscwor
CiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHN2bl92ZXJzaW9uKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5ydW4oWydzdm4nLCAnLS12ZXJzaW9uJywgJy0tcXVpZXQnXSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRl
c3QucHkJKHJldmlzaW9uIDg0NzAwKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMg
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29w
eXJpZ2h0IChDKSAyMDExIERhbmllbCBCYXRlcyAoZGJhdGVzQGludHVkYXRhLmNvbSkuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQ1LDYgKzQ2LDcgQEAgaW1wb3J0IHVybGxpYgogaW1wb3J0IHNodXRpbAogCiBm
cm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5hc3NlcnRfZGlj
dGlvbmFyaWVzX2VxdWFsX21peGluIGltcG9ydCBBc3NlcnREaWN0aW9uYXJpZXNFcXVhbE1peGlu
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENoZWNrb3V0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBT
Q00sIFNWTiwgR2l0LCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwg
QXV0aGVudGljYXRpb25FcnJvciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IsIGZpbmRfY2hlY2tvdXRf
cm9vdCwgZGVmYXVsdF9zY20KIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJz
IGltcG9ydCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKQEAg
LTQ1OSw3ICs0NjEsNyBAQCBPY21ZZXgmcmVEJDtzTzgqRjlMKUIKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCJhZGRlZF9kaXIvYWRkZWRfZmlsZSIgaW4gc2VsZi5zY20uYWRkZWRfZmlsZXMoKSkK
IAogCi1jbGFzcyBTVk5UZXN0KFNDTVRlc3QpOgorY2xhc3MgU1ZOVGVzdChTQ01UZXN0LCBBc3Nl
cnREaWN0aW9uYXJpZXNFcXVhbE1peGluKToKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYg
X3NldF9kYXRlX2FuZF9yZXZpZXdlcihjaGFuZ2Vsb2dfZW50cnkpOgpAQCAtNzQwLDYgKzc0Miwz
MSBAQCBFTkQKICAgICAgICAgb3Mucm1kaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKICAgICAgICAg
b3Mucm1kaXIoZmFrZV9ob21lX2RpcikKIAorICAgIGRlZiB0ZXN0X3BhcnNlX3N2bl9hdXRob3Jp
emF0aW9uX2NyZWRlbnRpYWxzKHNlbGYpOgorICAgICAgICBjcmVkZW50aWFscyA9ICIiIgorSyA4
CitwYXNzdHlwZQorViA4CitrZXljaGFpbgorSyAxNQorc3ZuOnJlYWxtc3RyaW5nCitWIDM5Cis8
aHR0cDovL3N2bi53ZWJraXQub3JnOjgwPiBNYWMgT1MgRm9yZ2UKK0sgOAordXNlcm5hbWUKK1Yg
MTcKK2RiYXRlc0B3ZWJraXQub3JnCitFTkQKKyIiIgorICAgICAgICBleHBlY3RlZF9hdXRob3Jp
emF0aW9uX3BhcnNpbmcgPSB7CisgICAgICAgICAgICAicGFzc3R5cGUiOiAia2V5Y2hhaW4iLAor
ICAgICAgICAgICAgInN2bjpyZWFsbXN0cmluZyI6ICI8aHR0cDovL3N2bi53ZWJraXQub3JnOjgw
PiBNYWMgT1MgRm9yZ2UiLAorICAgICAgICAgICAgInVzZXJuYW1lIjogImRiYXRlc0B3ZWJraXQu
b3JnIiwKKyAgICAgICAgfQorCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
c3ZuX2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bChzY20uX3BhcnNlX3N2bl9hdXRob3JpemF0aW9uX2NyZWRlbnRpYWxzKGNyZWRlbnRpYWxzLnNw
bGl0bGluZXMoKSksIGV4cGVjdGVkX2F1dGhvcml6YXRpb25fcGFyc2luZykKKwogICAgIGRlZiB0
ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJz
ZV9kaWZmKCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQkocmV2aXNpb24g
ODQ3MDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
emlsbGFfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBpbXBv
cnQgU3RyaW5nSU8KIAogZnJvbSAuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhLCBCdWd6aWxsYVF1
ZXJpZXMsIHBhcnNlX2J1Z19pZCwgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nCiAKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWxfbWl4aW4gaW1wb3J0IEFz
c2VydERpY3Rpb25hcmllc0VxdWFsTWl4aW4KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBp
bXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0
IEJlYXV0aWZ1bFNvdXAKIAogCi1jbGFzcyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgorY2xhc3MgQnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBBc3NlcnREaWN0aW9uYXJp
ZXNFcXVhbE1peGluKToKICAgICBfZXhhbXBsZV9hdHRhY2htZW50ID0gJycnCiAgICAgICAgIDxh
dHRhY2htZW50CiAgICAgICAgICAgaXNvYnNvbGV0ZT0iMSIKQEAgLTIzNywxOCArMjM4LDkgQEAg
WkVacGJtbHphRXh2WVdSWGFYUm9VbVZoYzI5dU9uSmxZWE52YmwwNwogCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDU3NTY5LCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2coY29tbWl0X3Rl
eHQpKQogCi0KLSAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBtb3ZlIHRvIGEgY2VudHJhbCBsb2Nh
dGlvbiBhbmQgYmUgc2hhcmVkIGJ5IG1vcmUgdW5pdCB0ZXN0cy4KLSAgICBkZWYgX2Fzc2VydF9k
aWN0aW9uYXJpZXNfZXF1YWwoc2VsZiwgYWN0dWFsLCBleHBlY3RlZCk6Ci0gICAgICAgICMgTWFr
ZSBzdXJlIHdlIGFyZW4ndCBwYXJzaW5nIG1vcmUgb3IgbGVzcyB0aGFuIHdlIGV4cGVjdAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZWQoYWN0dWFsLmtleXMoKSksIHNvcnRlZChleHBl
Y3RlZC5rZXlzKCkpKQotCi0gICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVj
dGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxba2V5XSwg
ZXhwZWN0ZWRfdmFsdWUsICgiRmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0
ZWQ9JyVzJyIgJSAoa2V5LCBhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUpKSkKLQogICAgIGRl
ZiB0ZXN0X3BhcnNlX2J1Z19kaWN0aW9uYXJ5X2Zyb21feG1sKHNlbGYpOgogICAgICAgICBidWcg
PSBCdWd6aWxsYSgpLl9wYXJzZV9idWdfZGljdGlvbmFyeV9mcm9tX3htbChzZWxmLl9zaW5nbGVf
YnVnX3htbCkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChidWcsIHNl
bGYuX2V4cGVjdGVkX2V4YW1wbGVfYnVnX3BhcnNpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Rp
Y3Rpb25hcmllc19lcXVhbChidWcsIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVfYnVnX3BhcnNpbmcp
CiAKICAgICBfc2FtcGxlX211bHRpX2J1Z194bWwgPSAiIiIKIDxidWd6aWxsYSB2ZXJzaW9uPSIz
LjIuMyIgdXJsYmFzZT0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIiBtYWludGFpbmVyPSJhZG1p
bkB3ZWJraXQub3JnIiBleHBvcnRlcj0iZXJpY0B3ZWJraXQub3JnIj4KQEAgLTI3Miw3ICsyNjQs
NyBAQCBaRVpwYm1semFFeHZZV1JYYVhSb1VtVmhjMjl1T25KbFlYTnZibDA3CiAgICAgICAgIGF0
dGFjaG1lbnRfZWxlbWVudCA9IHNvdXAuZmluZCgiYXR0YWNobWVudCIpCiAgICAgICAgIGF0dGFj
aG1lbnQgPSBidWd6aWxsYS5fcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KGF0dGFjaG1lbnRfZWxl
bWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50X3BhcnNpbmdbJ2J1Z19pZCdd
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0YWNobWVudCkKLSAgICAgICAgc2VsZi5fYXNz
ZXJ0X2RpY3Rpb25hcmllc19lcXVhbChhdHRhY2htZW50LCBzZWxmLl9leHBlY3RlZF9leGFtcGxl
X2F0dGFjaG1lbnRfcGFyc2luZykKKyAgICAgICAgc2VsZi5hc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsKGF0dGFjaG1lbnQsIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVfYXR0YWNobWVudF9wYXJzaW5n
KQogCiAgICAgX3NhbXBsZV9hdHRhY2htZW50X2RldGFpbF9wYWdlID0gIiIiCiA8IURPQ1RZUEUg
aHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90806</attachid>
            <date>2011-04-22 17:01:43 -0700</date>
            <delta_ts>2011-05-22 12:09:41 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug-59245-20110422170141.patch</filename>
            <type>text/plain</type>
            <size>9751</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg0NzA1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDQtMjIgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0
cnVjdHVyZSB0byBwYXJzZSBhbiBTVk4gYXV0aG9yaXphdGlvbiBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI0NQorCisgICAgICAgIEltcGxl
bWVudCBzdXBwb3J0IGZvciBwYXJzaW5nIGFuIFNWTiBhdXRob3JpemF0aW9uIGZpbGUuCisKKyAg
ICAgICAgV2UgYXJlbid0IHVzaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB5ZXQsIGJ1dCB3ZSB3aWxs
IHNvb24gYXMgd2UKKyAgICAgICAgbW92ZSB0b3dhcmRzIGZpeGluZyBidWcgIzU5MjQyLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVh
bF9taXhpbi5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtLnB5OgorICAgICAgICAgIC0gQWRkZWQgX3BhcnNlX3N2bl9hdXRob3JpemF0aW9u
X2NyZWRlbnRpYWxzKCkuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdF9wYXJzZV9zdm5fYXV0
aG9yaXphdGlvbl9jcmVkZW50aWFscygpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weTogRXh0cmFjdAorICAgICAgICAg
IF9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKCkgaW50byBhc3NlcnRfZGljdGlvbmFyaWVzX2Vx
dWFsX21peGluLnB5CisgICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBib3RoIGJ1
Z3ppbGxhX3VuaXR0ZXN0LnB5IGFuZCBzY21fdW5pdHRlc3QucHkuCisKIDIwMTEtMDQtMjIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0
aW9uYXJpZXNfZXF1YWxfbWl4aW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbi5weQkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2Fzc2VydF9kaWN0aW9uYXJpZXNf
ZXF1YWxfbWl4aW4ucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorCisKKyMgQSBtaXhpbiBmb3IgdW5pdHRlc3QuVGVzdENhc2UKK2NsYXNzIEFzc2VydERp
Y3Rpb25hcmllc0VxdWFsTWl4aW46CisgICAgZGVmIGFzc2VydF9kaWN0aW9uYXJpZXNfZXF1YWwo
c2VsZiwgYWN0dWFsLCBleHBlY3RlZCk6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGFyZW4ndCBw
YXJzaW5nIG1vcmUgb3IgbGVzcyB0aGFuIHdlIGV4cGVjdAorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzb3J0ZWQoYWN0dWFsLmtleXMoKSksIHNvcnRlZChleHBlY3RlZC5rZXlzKCkpKQorCisg
ICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhY3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUsICgi
RmFpbHVyZSBmb3Iga2V5OiAlczogQWN0dWFsPSclcycgRXhwZWN0ZWQ9JyVzJyIgJSAoa2V5LCBh
Y3R1YWxba2V5XSwgZXhwZWN0ZWRfdmFsdWUpKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkJKHJldmlzaW9uIDg0NzAwKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zMzgsNiArMzM5LDM5IEBAIGNsYXNzIFNWTlJlcG9zaXRvcnk6CiAgICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5ydW4oWyJncmVwIiwgInBhc3N0eXBlIiwg
ZmluZF9vdXRwdXRdLCBjd2Q9aG9tZV9kaXJlY3RvcnksIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkg
PT0gMAogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfcGFyc2Vfc3ZuX2F1dGhvcml6YXRp
b25fY3JlZGVudGlhbHMoYXV0aG9yaXphdGlvbl9jcmVkZW50aWFscyk6CisgICAgICAgIEtFWV9I
RUFERVJfU1RBVEUgPSAxIDw8IDAKKyAgICAgICAgS0VZX1NUQVRFID0gMSA8PCAxCisgICAgICAg
IFZBTFVFX0hFQURFUl9TVEFURSA9IDEgPDwgMgorICAgICAgICBWQUxVRV9TVEFURSA9IDEgPDwg
MworCisgICAgICAgIGtleV9oZWFkZXJfcmVnZXggPSByZS5jb21waWxlKHIiXksgKFswLTldKykk
IikKKyAgICAgICAgdmFsdWVfaGVhZGVyX3JlZ2V4ID0gcmUuY29tcGlsZShyIl5WIChbMC05XSsp
JCIpCisKKyAgICAgICAga2V5ID0gTm9uZQorICAgICAgICBzdGF0ZSA9IEtFWV9IRUFERVJfU1RB
VEUKKyAgICAgICAgY3JlZGVudGlhbHMgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBhdXRob3Jp
emF0aW9uX2NyZWRlbnRpYWxzOgorICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCJcbiIp
CisgICAgICAgICAgICBpZiBsaW5lID09ICJFTkQiOgorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBpZiAoc3RhdGUgPT0gS0VZX0hFQURFUl9TVEFURSBhbmQga2V5X2hlYWRlcl9y
ZWdleC5tYXRjaChsaW5lKSk6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBLRVlfU1RBVEUKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKHN0YXRlID09IEtFWV9TVEFU
RSk6CisgICAgICAgICAgICAgICAga2V5ID0gbGluZQorICAgICAgICAgICAgICAgIHN0YXRlID0g
VkFMVUVfSEVBREVSX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGlmIChzdGF0ZSA9PSBWQUxVRV9IRUFERVJfU1RBVEUgYW5kIHZhbHVlX2hlYWRlcl9yZWdleC5t
YXRjaChsaW5lKSk6CisgICAgICAgICAgICAgICAgc3RhdGUgPSBWQUxVRV9TVEFURQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gVkFMVUVfU1RBVEUp
OgorICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzW2tleV0gPSBsaW5lCisgICAgICAgICAgICAg
ICAgc3RhdGUgPSBLRVlfSEVBREVSX1NUQVRFCisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzCisKIAogY2xhc3MgU1ZOKFNDTSwgU1ZOUmVwb3NpdG9y
eSk6CiAgICAgIyBGSVhNRTogVGhlc2UgYmVsb25nIGluIGNvbW1vbi5jb25maWcudXJscwpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bV91bml0dGVzdC5weQkocmV2aXNpb24gODQ3MDApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgRGFuaWVsIEJhdGVzIChkYmF0ZXNAaW50dWRhdGEuY29t
KS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtNDUsNiArNDYsNyBAQCBpbXBvcnQgdXJsbGliCiBpbXBvcnQgc2h1
dGlsCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKK2Zyb20gd2Via2l0cHkuY29tbW9uLmFz
c2VydF9kaWN0aW9uYXJpZXNfZXF1YWxfbWl4aW4gaW1wb3J0IEFzc2VydERpY3Rpb25hcmllc0Vx
dWFsTWl4aW4KIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmFwaSBpbXBvcnQgQ2hlY2tv
dXQKIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9z
eXN0ZW0sIFNDTSwgU1ZOLCBHaXQsIENoZWNrb3V0TmVlZHNVcGRhdGUsIGNvbW1pdF9lcnJvcl9o
YW5kbGVyLCBBdXRoZW50aWNhdGlvbkVycm9yLCBBbWJpZ3VvdXNDb21taXRFcnJvciwgZmluZF9j
aGVja291dF9yb290LCBkZWZhdWx0X3NjbQogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNv
bW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5l
ZWRlZApAQCAtNDU5LDcgKzQ2MSw3IEBAIE9jbVlleCZyZUQkO3NPOCpGOUwpQgogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoImFkZGVkX2Rpci9hZGRlZF9maWxlIiBpbiBzZWxmLnNjbS5hZGRlZF9m
aWxlcygpKQogCiAKLWNsYXNzIFNWTlRlc3QoU0NNVGVzdCk6CitjbGFzcyBTVk5UZXN0KFNDTVRl
c3QsIEFzc2VydERpY3Rpb25hcmllc0VxdWFsTWl4aW4pOgogCiAgICAgQHN0YXRpY21ldGhvZAog
ICAgIGRlZiBfc2V0X2RhdGVfYW5kX3Jldmlld2VyKGNoYW5nZWxvZ19lbnRyeSk6CkBAIC03NDAs
NiArNzQyLDMxIEBAIEVORAogICAgICAgICBvcy5ybWRpcihzdm5fY29uZmlnX2Rpcl9wYXRoKQog
ICAgICAgICBvcy5ybWRpcihmYWtlX2hvbWVfZGlyKQogCisgICAgZGVmIHRlc3RfcGFyc2Vfc3Zu
X2F1dGhvcml6YXRpb25fY3JlZGVudGlhbHMoc2VsZik6CisgICAgICAgIGNyZWRlbnRpYWxzID0g
IiIiCitLIDgKK3Bhc3N0eXBlCitWIDgKK2tleWNoYWluCitLIDE1Citzdm46cmVhbG1zdHJpbmcK
K1YgMzkKKzxodHRwOi8vc3ZuLndlYmtpdC5vcmc6ODA+IE1hYyBPUyBGb3JnZQorSyA4Cit1c2Vy
bmFtZQorViAxNworZGJhdGVzQHdlYmtpdC5vcmcKK0VORAorIiIiCisgICAgICAgIGV4cGVjdGVk
X2F1dGhvcml6YXRpb25fcGFyc2luZyA9IHsKKyAgICAgICAgICAgICJwYXNzdHlwZSI6ICJrZXlj
aGFpbiIsCisgICAgICAgICAgICAic3ZuOnJlYWxtc3RyaW5nIjogIjxodHRwOi8vc3ZuLndlYmtp
dC5vcmc6ODA+IE1hYyBPUyBGb3JnZSIsCisgICAgICAgICAgICAidXNlcm5hbWUiOiAiZGJhdGVz
QHdlYmtpdC5vcmciLAorICAgICAgICB9CisKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZGljdGlvbmFy
aWVzX2VxdWFsKHNjbS5fcGFyc2Vfc3ZuX2F1dGhvcml6YXRpb25fY3JlZGVudGlhbHMoY3JlZGVu
dGlhbHMuc3BsaXRsaW5lcygpKSwgZXhwZWN0ZWRfYXV0aG9yaXphdGlvbl9wYXJzaW5nKQorCiAg
ICAgZGVmIHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVz
dF9yZXZlcnNlX2RpZmYoKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5CShy
ZXZpc2lvbiA4NDcwMCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDE0
IEBAIGltcG9ydCBTdHJpbmdJTwogCiBmcm9tIC5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEsIEJ1
Z3ppbGxhUXVlcmllcywgcGFyc2VfYnVnX2lkLCBwYXJzZV9idWdfaWRfZnJvbV9jaGFuZ2Vsb2cK
IAorZnJvbSB3ZWJraXRweS5jb21tb24uYXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbF9taXhpbiBp
bXBvcnQgQXNzZXJ0RGljdGlvbmFyaWVzRXF1YWxNaXhpbgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHku
dG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0Jyb3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0
eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291
cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiAKLWNsYXNzIEJ1Z3ppbGxhVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CitjbGFzcyBCdWd6aWxsYVRlc3QodW5pdHRlc3QuVGVzdENhc2UsIEFzc2VydERp
Y3Rpb25hcmllc0VxdWFsTWl4aW4pOgogICAgIF9leGFtcGxlX2F0dGFjaG1lbnQgPSAnJycKICAg
ICAgICAgPGF0dGFjaG1lbnQKICAgICAgICAgICBpc29ic29sZXRlPSIxIgpAQCAtMjM3LDE4ICsy
MzgsOSBAQCBaRVpwYm1semFFeHZZV1JYYVhSb1VtVmhjMjl1T25KbFlYTnZibDA3CiAKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoNTc1NjksIHBhcnNlX2J1Z19pZF9mcm9tX2NoYW5nZWxvZyhj
b21taXRfdGV4dCkpCiAKLQotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gYSBjZW50
cmFsIGxvY2F0aW9uIGFuZCBiZSBzaGFyZWQgYnkgbW9yZSB1bml0IHRlc3RzLgotICAgIGRlZiBf
YXNzZXJ0X2RpY3Rpb25hcmllc19lcXVhbChzZWxmLCBhY3R1YWwsIGV4cGVjdGVkKToKLSAgICAg
ICAgIyBNYWtlIHN1cmUgd2UgYXJlbid0IHBhcnNpbmcgbW9yZSBvciBsZXNzIHRoYW4gd2UgZXhw
ZWN0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNvcnRlZChhY3R1YWwua2V5cygpKSwgc29y
dGVkKGV4cGVjdGVkLmtleXMoKSkpCi0KLSAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUg
aW4gZXhwZWN0ZWQuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGFjdHVh
bFtrZXldLCBleHBlY3RlZF92YWx1ZSwgKCJGYWlsdXJlIGZvciBrZXk6ICVzOiBBY3R1YWw9JyVz
JyBFeHBlY3RlZD0nJXMnIiAlIChrZXksIGFjdHVhbFtrZXldLCBleHBlY3RlZF92YWx1ZSkpKQot
CiAgICAgZGVmIHRlc3RfcGFyc2VfYnVnX2RpY3Rpb25hcnlfZnJvbV94bWwoc2VsZik6CiAgICAg
ICAgIGJ1ZyA9IEJ1Z3ppbGxhKCkuX3BhcnNlX2J1Z19kaWN0aW9uYXJ5X2Zyb21feG1sKHNlbGYu
X3NpbmdsZV9idWdfeG1sKQotICAgICAgICBzZWxmLl9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFs
KGJ1Zywgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9idWdfcGFyc2luZykKKyAgICAgICAgc2VsZi5h
c3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGJ1Zywgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9idWdf
cGFyc2luZykKIAogICAgIF9zYW1wbGVfbXVsdGlfYnVnX3htbCA9ICIiIgogPGJ1Z3ppbGxhIHZl
cnNpb249IjMuMi4zIiB1cmxiYXNlPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy8iIG1haW50YWlu
ZXI9ImFkbWluQHdlYmtpdC5vcmciIGV4cG9ydGVyPSJlcmljQHdlYmtpdC5vcmciPgpAQCAtMjcy
LDcgKzI2NCw3IEBAIFpFWnBibWx6YUV4dllXUlhhWFJvVW1WaGMyOXVPbkpsWVhOdmJsMDcKICAg
ICAgICAgYXR0YWNobWVudF9lbGVtZW50ID0gc291cC5maW5kKCJhdHRhY2htZW50IikKICAgICAg
ICAgYXR0YWNobWVudCA9IGJ1Z3ppbGxhLl9wYXJzZV9hdHRhY2htZW50X2VsZW1lbnQoYXR0YWNo
bWVudF9lbGVtZW50LCBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZ1sn
YnVnX2lkJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRhY2htZW50KQotICAgICAgICBz
ZWxmLl9hc3NlcnRfZGljdGlvbmFyaWVzX2VxdWFsKGF0dGFjaG1lbnQsIHNlbGYuX2V4cGVjdGVk
X2V4YW1wbGVfYXR0YWNobWVudF9wYXJzaW5nKQorICAgICAgICBzZWxmLmFzc2VydF9kaWN0aW9u
YXJpZXNfZXF1YWwoYXR0YWNobWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50
X3BhcnNpbmcpCiAKICAgICBfc2FtcGxlX2F0dGFjaG1lbnRfZGV0YWlsX3BhZ2UgPSAiIiIKIDwh
RE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8v
RU4iCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>