<?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>122156</bug_id>
          
          <creation_ts>2013-10-01 05:13:26 -0700</creation_ts>
          <short_desc>[Tools] Add the check to style-checker for reporting use of static_cast on typename objects.</short_desc>
          <delta_ts>2016-04-25 20:15:49 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ravi Kasibhatla">r.kasibhatla</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>r.kasibhatla</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934987</commentid>
    <comment_count>0</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 05:13:26 -0700</bug_when>
    <thetext>As part of new changes (added by Kling/Gyuyoung et. all), WebKit is migrating to new syntax of calling toFoo() instead of doing static_cast on Foo objects and more and more classes are being changed to add toFoo helper functions. There should be a way to ensure that the added helpers are actually *used* in the code. Currently, there is no enforcement to use the added toFoo functions nor we exert pressure on the dev to add new toFoo() if required in some new module. We should add this check to style checker and try to *enforce* rigidly the use/addition of toFoo().
For now we can keep the change under *disabled* filter and once all the codebase is changed to use toFoo() we should report a style error if the uploaded patch contains static_cast on any object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934995</commentid>
    <comment_count>1</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 05:51:21 -0700</bug_when>
    <thetext>I have committed the patch which addresses this change in blink under the CL (https://src.chromium.org/viewvc/blink?view=rev&amp;revision=158628).

My logic for checking the error is simple:
- In the patch, I check for any line which contains regex static_cast&lt;Foo*&gt;.
- If line does contain it, I pick the regex part Foo and search for Foo.h in the codebase.
- In Foo.h, I check for toFoo signature and if it is present, I ask the user to use it. If the signature is not present, I throw the message of adding the toFoo() and using it.
- In cases, where Foo.h is not found, I don&apos;t report any error (which I plan to look in future for more refining).

I do need to modify the patch for WebKit to accommodate the use of macros (while checking for presence of toFoo() in the header file) like ELEMENT_TYPE_CASTS and CSS_VALUE_TYPE_CASTS which are used to generate toFoo at compilation times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934996</commentid>
    <comment_count>2</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 05:52:10 -0700</bug_when>
    <thetext>[Merging from Blink]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935000</commentid>
    <comment_count>3</comment_count>
      <attachid>213079</attachid>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 06:46:13 -0700</bug_when>
    <thetext>Created attachment 213079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935066</commentid>
    <comment_count>4</comment_count>
      <attachid>213079</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-01 09:52:12 -0700</bug_when>
    <thetext>Comment on attachment 213079
Patch

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

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:780
&gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Use toFoo defined in Foo.h.&apos;

This message is not clear. What are &quot;class objects&quot;?

&gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:789
&gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Add toFoo in Foo.h and use it instead.&apos;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935718</commentid>
    <comment_count>5</comment_count>
      <attachid>213230</attachid>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-02 23:33:31 -0700</bug_when>
    <thetext>Created attachment 213230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935724</commentid>
    <comment_count>6</comment_count>
      <attachid>213232</attachid>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-02 23:54:24 -0700</bug_when>
    <thetext>Created attachment 213232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935725</commentid>
    <comment_count>7</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-02 23:55:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 213079 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213079&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:780
&gt; &gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Use toFoo defined in Foo.h.&apos;
&gt; 
&gt; This message is not clear. What are &quot;class objects&quot;?
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:789
&gt; &gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Add toFoo in Foo.h and use it instead.&apos;
&gt; 
&gt; Ditto.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937125</commentid>
    <comment_count>8</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-07 10:36:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 213079 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213079&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:780
&gt; &gt; &gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Use toFoo defined in Foo.h.&apos;
&gt; &gt; 
&gt; &gt; This message is not clear. What are &quot;class objects&quot;?
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py:789
&gt; &gt; &gt; +        self.assertEqual(message, &apos;static_cast of class objects is not allowed. Add toFoo in Foo.h and use it instead.&apos;
&gt; &gt; 
&gt; &gt; Ditto.
&gt; Done.
Thoughts on the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937263</commentid>
    <comment_count>9</comment_count>
      <attachid>213232</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-07 16:03:32 -0700</bug_when>
    <thetext>Comment on attachment 213232
Patch

The rule this patch enforces might be too strict. I can’t tell by reading the code. When you run this check across existing code, do you get any false positives, errors on lines of code that are not incorrect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937264</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-07 16:03:53 -0700</bug_when>
    <thetext>Maybe you could upload the list of failures this finds when run on our current code so we can try to spot false positives?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187193</commentid>
    <comment_count>11</comment_count>
      <attachid>213232</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-04-25 20:12:58 -0700</bug_when>
    <thetext>Comment on attachment 213232
Patch

Thank you Ravi for the patch. As it turns out we now use downcast&lt;X&gt;() to downcast a type instead of static_cast&lt;X&gt;() or toX(). It would be nice if style checker could suggest using downcast&lt;X&gt;() instead of static_cast&lt;X&gt;(). This is likely non-trivial to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187194</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-04-25 20:15:24 -0700</bug_when>
    <thetext>I am marking this Resolved/Invalid because we prefer using downcast&lt;X&gt;() instead of static_cast&lt;X&gt;() to toX(). If there is interest in teaching the style checker to suggest use of downcast&lt;X&gt;() then I suggest we file a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187195</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-04-25 20:15:49 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I am marking this Resolved/Invalid because we prefer using downcast&lt;X&gt;()
&gt; instead of static_cast&lt;X&gt;() to toX()

*instead of static_cast&lt;X&gt;() or toX()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213079</attachid>
            <date>2013-10-01 06:46:13 -0700</date>
            <delta_ts>2013-10-02 23:33:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122156-20131001192255.patch</filename>
            <type>text/plain</type>
            <size>12853</size>
            <attacher name="Ravi Kasibhatla">r.kasibhatla</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDc0MGI3MTY3NmM2MTNmYjE0MjNlMTBkZTVkMjI5YTAz
ODMyZTU4YS4uYWQ5MzFhNmQzY2ZiOTg0M2ZiODUyMzdmNzQ1YmUzNTdhZTNiMGE3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTEwLTAxICBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHIua2FzaWJoYXRs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgdGhlIHN0eWxlIGNoZWNrIGZvciB1c2Ugb2Yg
c3RhdGljX2Nhc3Qgb24gb2JqZWN0cyBpbiBTdHlsZQorICAgICAgICBDaGVja2VyLiAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBtaWdyYXRp
bmcgdG8gbmV3IHN5bnRheCBvZiBjYWxsaW5nIHRvRm9vKCkgaW5zdGVhZCBvZiBkb2luZworICAg
ICAgICBzdGF0aWNfY2FzdCBvbiBGb28gb2JqZWN0cyBhbmQgbW9yZSBhbmQgbW9yZSBjbGFzc2Vz
IGFyZSBiZWluZyBjaGFuZ2VkCisgICAgICAgIHRvIGFkZCB0b0ZvbyBoZWxwZXIgZnVuY3Rpb25z
LiBFbnN1cmUgdGhhdCB0aGUgYWRkZWQgaGVscGVycyBhcmUgYWN0dWFsbHkKKyAgICAgICAgKnVz
ZWQqIGluIHRoZSBjb2RlIGJ5IGFkZGluZyB0aGUgc3R5bGUgdG8gc3R5bGUtY2hlY2tlci4gSXQg
d291bGQgKmZvcmNlKgorICAgICAgICB0byBhZG9wdCB0byBuZXcgc3R5bGUgYW5kIHN0YXJ0IGRl
cHJlY2F0aW5nIHRoZSBvbGRlciBzdGF0aWNfY2FzdCB1c2UuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2xhbmd1YWdl
KToKKyAgICAgICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6CisgICAg
ICAgIChjaGVja19mb3JfdG9Gb29fZGVmaW5pdGlvbik6CisgICAgICAgIChjaGVja19mb3JfdG9G
b29fZGVmaW5pdGlvbi5nZXRfYWJzX2ZpbGVwYXRoKToKKyAgICAgICAgKGNoZWNrX2Zvcl90b0Zv
b19kZWZpbml0aW9uLmdyZXApOgorICAgICAgICAoY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24u
Y2hlY2tfaW5fbW9ja19oZWFkZXIpOgorICAgICAgICAoY2hlY2tfZm9yX29iamVjdF9zdGF0aWNf
Y2FzdCk6CisgICAgICAgIChjaGVja19mb3Jfb2JqZWN0X3N0YXRpY19jYXN0Lm9iamVjdHMpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5
OgorICAgICAgICAoQ3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2F2b2lkX3N0YXRpY19jYXN0X29m
X29iamVjdHMpOgorICAgICAgICAoQ3BwU3R5bGVUZXN0KToKKyAgICAgICAgKENwcFN0eWxlVGVz
dC50ZXN0X3N0YXRpY19jYXN0X29uX29iamVjdHNfd2l0aF90b0Zvbyk6CisgICAgICAgIChDcHBT
dHlsZVRlc3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhfdG9Gb28ub2JqZWN0cyk6
CisgICAgICAgIChDcHBTdHlsZVRlc3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhv
dXRfdG9Gb28pOgorICAgICAgICAoQ3BwU3R5bGVUZXN0LnRlc3Rfc3RhdGljX2Nhc3Rfb25fb2Jq
ZWN0c193aXRob3V0X3RvRm9vLm9iamVjdHMpOgorCiAyMDEzLTA5LTI3ICBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGZv
cmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDcxZTA3YzhiYmVmYjc4NGUxYTI3ZDE4
OTg1MmUzZmE5MjViOTFlMDYuLjY3ZmIzN2MwNjlhYjNhYjM4NjZmZDBhNDQ1MTczOWZkNTA0ZGEy
NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBA
IC00Nyw2ICs0Nyw3IEBAIGltcG9ydCB1bmljb2RlZGF0YQogCiBmcm9tIGNvbW1vbiBpbXBvcnQg
bWF0Y2gsIHNlYXJjaCwgc3ViLCBzdWJuCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBp
bXBvcnQgbWVtb2l6ZWQKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGlt
cG9ydCBGaWxlU3lzdGVtCiAKICMgVGhlIGtleSB0byB1c2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRv
IGZha2UgbG9hZGluZyBhIGhlYWRlciBmaWxlLgogSU5DTFVERV9JT19JTkpFQ1RJT05fS0VZID0g
J2luY2x1ZGVfaGVhZGVyX2lvJwpAQCAtMzA5MCwxMSArMzA5MSw5IEBAIGRlZiBjaGVja19sYW5n
dWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwg
aW5jbHVkZV9zCiAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS91bnNpZ25lZCcs
IDEsCiAgICAgICAgICAgICAgICdPbWl0IGludCB3aGVuIHVzaW5nIHVuc2lnbmVkJykKIAotICAg
ICMgQ2hlY2sgdGhhdCB3ZSdyZSBub3QgdXNpbmcgc3RhdGljX2Nhc3Q8VGV4dCo+LgotICAgIGlm
IHNlYXJjaChyJ1xic3RhdGljX2Nhc3Q8VGV4dFwqPicsIGxpbmUpOgotICAgICAgICBlcnJvcihs
aW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2NoZWNrJywgNCwKLSAgICAgICAgICAgICAgJ0NvbnNp
ZGVyIHVzaW5nIHRvVGV4dCBoZWxwZXIgZnVuY3Rpb24gaW4gV2ViQ29yZS9kb20vVGV4dC5oICcK
LSAgICAgICAgICAgICAgJ2luc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VGV4dCo+JykKKyAgICAjIENo
ZWNrIGZvciB1c2FnZSBvZiBzdGF0aWNfY2FzdDxDbGFzc25hbWUqPi4KKyAgICBjaGVja19mb3Jf
b2JqZWN0X3N0YXRpY19jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZXJyb3IpCisK
IAogZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsIGxpbmUsIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAiIiJDaGVja3MgaWYgaWRl
bnRpZmllciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KQEAgLTMyMjcsNiArMzIyNiwx
NTIgQEAgZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwg
bGluZV9udW1iZXIsIGxpbmUsIGZpbGVfc3RhdGUKICAgICAgICAgbnVtYmVyX29mX2lkZW50aWZp
ZXJzICs9IDEKICAgICAgICAgbGluZSA9IGxpbmVbbWF0Y2hlZC5lbmQoKTpdCiAKKworZGVmIGNo
ZWNrX2Zvcl90b0Zvb19kZWZpbml0aW9uKGZpbGVuYW1lLCBwYXR0ZXJuLCBjbGFzc19uYW1lLCBl
cnJvcik6CisgICAgIiIiIFJlcG9ydHMgZm9yIHVzaW5nIHN0YXRpY19jYXN0IGluc3RlYWQgb2Yg
dG9Gb28gY29udmVuaWVuY2UgZnVuY3Rpb24uCisKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgb3V0
cHV0IHdhcm5pbmdzIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGFjdHVhbGx5IHVzaW5nCisgICAgdGhl
IGFkZGVkIHRvRm9vIGNvbnZlcnNpb24gZnVuY3Rpb25zIHJhdGhlciB0aGFuIGRpcmVjdGx5IGhh
cmQgY29kaW5nCisgICAgdGhlIHN0YXRpY19jYXN0PENsYXNzbmFtZSo+IGNhbGwuIEZvciBleGFt
cGxlLCB5b3Ugc2hvdWxkIHRvSFRNTEVMZW1lbnQoTm9kZSopCisgICAgdG8gY29udmVydCBOb2Rl
KiB0byBIVE1MRWxlbWVudCosIGluc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihO
b2RlKikKKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGhlYWRl
ciBmaWxlIGluIHdoaWNoIHRvIGNoZWNrIGZvciB0b0ZvbyBkZWZpbml0aW9uLgorICAgICAgcGF0
dGVybjogVGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gc2lnbmF0dXJlIHBhdHRlcm4gdG8gZ3JlcCBm
b3IuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgorICAgICIiIgorICAgIGRlZiBnZXRfYWJzX2ZpbGVwYXRoKGZpbGVuYW1lKToKKyAgICAg
ICAgZmlsZVN5c3RlbSA9IEZpbGVTeXN0ZW0oKQorICAgICAgICBiYXNlX2RpciA9IGZpbGVTeXN0
ZW0ucGF0aF90b19tb2R1bGUoRmlsZVN5c3RlbS5fX21vZHVsZV9fKS5zcGxpdCgnVG9vbHMnLCAx
KVswXQorICAgICAgICBiYXNlX2RpciA9ICcnLmpvaW4oKGJhc2VfZGlyLCAnU291cmNlJykpCisg
ICAgICAgIGZvciByb290LCBkaXJzLCBuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKKyAgICAg
ICAgICAgIGlmIGZpbGVuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5w
YXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYg
Z3JlcChsaW5lcywgcGF0dGVybiwgY2xhc3NfbmFtZSwgZXJyb3IpOgorICAgICAgICBtYXRjaGVz
ID0gW10KKyAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lX251
bWJlciBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgbGluZSA9IChs
aW5lcy5lbGlkZWRbbGluZV9udW1iZXJdKS5yc3RyaXAoKQorICAgICAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocidcdytfVFlQRV9DQVNUUy4oJXMpLicgJSAo
Y2xhc3NfbmFtZSksIGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAg
ICAgICAgICAgICAgIyBGSVhNRTogRm91bmQgdGhlIG1hY3JvIHdoaWNoIGV4cGFuZHMgdG8gdG9G
b28gdmFyaWFudHMsIGJ1dCB3ZSBkb24ndAorICAgICAgICAgICAgICAgICAgICAjIGtub3cgaG93
IG1hbnkgbGluZXMgdGhlIG1hY3JvIHdvdWxkIGV4cGFuZCB0by4gU28sIGtlZXBpbmcgc2FtZSBs
aW5lCisgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIGZvciBzdGFydCAmIGVuZC4gQnV0IGlz
IHRoaXMgYmVoYXZpb3IgY29ycmVjdD8KKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBl
bmQoW2xpbmUsIGxpbmVfbnVtYmVyLCBsaW5lX251bWJlcl0pCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0dGVybiBpbiBsaW5lOgorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IGZ1bmN0aW9uX3N0YXRlOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uX3N0YXRlID0gX0Z1bmN0aW9uU3RhdGUoMSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRldGVjdF9mdW5jdGlvbnMobGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9z
dGF0ZSwgZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAjIEV4Y2x1ZGUgdGhlIG1hdGNo
IG9mIGR1bW15IGNvbnZlcnNpb24gZnVuY3Rpb24uIER1bW15IGZ1bmN0aW9uIGlzIGp1c3QgdG8K
KyAgICAgICAgICAgICAgICAgICAgICAgICMgY2F0Y2ggaW52YWxpZCBjb252ZXJzaW9ucyBhbmQg
c2hvdWxkbid0IGJlIHBhcnQgb2YgcG9zc2libGUgYWx0ZXJuYXRpdmVzLgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gc2VhcmNoKHInJXMoXHMrKSVzJyAlICgidm9pZCIsIHBhdHRl
cm4pLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChbbGluZSwgZnVuY3Rpb25fc3Rh
dGUuYm9keV9zdGFydF9wb3NpdGlvbi5yb3csIGZ1bmN0aW9uX3N0YXRlLmVuZF9wb3NpdGlvbi5y
b3cgKyAxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IE5v
bmUKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAg
ICAgIyBUaGVyZSB3b3VsZCBiZSBubyBub24tYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgY29kZWJh
c2UgZXZlci4gVGhlIG9ubHkgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBj
b21tZW50cy9jb3B5cmlnaHQgdGV4dCB3aGljaCBtaWdodCBoYXZlIG5vbi1hc2NpaSBjaGFyYWN0
ZXJzLiBIZW5jZSwKKyAgICAgICAgICAgICAgICAjIGl0IGlzIHBlcmZlY3RseSBzYWZlIHRvIGNh
dGNoIHRoZSBVbmljb2RlRGVjb2RlRXJyb3IgYW5kIGp1c3QgcGFzcyB0aGUgbGluZS4KKyAgICAg
ICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJuIG1hdGNoZXMKKworICAgIGRlZiBjaGVj
a19pbl9tb2NrX2hlYWRlcihmaWxlbmFtZSwgbWF0Y2hlcz1Ob25lLCBpbz1jb2RlY3MpOgorICAg
ICAgICBpZiBub3QgZmlsZW5hbWUgPT0gJ0Zvby5oJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgICAgIGlvID0gX3VuaXRfdGVzdF9jb25maWcuZ2V0KElOQ0xVREVfSU9fSU5KRUNU
SU9OX0tFWSwgY29kZWNzKQorICAgICAgICBoZWFkZXJfZmlsZSA9IE5vbmUKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgaGVhZGVyX2ZpbGUgPSBpby5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4
JywgJ3JlcGxhY2UnKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHJldHVy
biBGYWxzZQorICAgICAgICBsaW5lX251bWJlciA9IDAKKyAgICAgICAgZm9yIGxpbmUgaW4gaGVh
ZGVyX2ZpbGU6CisgICAgICAgICAgICBsaW5lX251bWJlciArPSAxCisgICAgICAgICAgICBtYXRj
aGVkID0gcmUuc2VhcmNoKHInXGJ0b0Zvb1xiJywgbGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNo
ZWQ6CisgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoWyd0b0ZvbycsIGxpbmVfbnVtYmVy
LCBsaW5lX251bWJlciArIDNdKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgIyBGb3IgdW5p
dCB0ZXN0aW5nIG9ubHksIGF2b2lkIGhlYWRlciBzZWFyY2ggYW5kIGxvb2t1cCBsb2NhbGx5Lgor
ICAgIG1hdGNoZXMgPSBbXQorICAgIG1vY2tfZGVmX2ZvdW5kID0gY2hlY2tfaW5fbW9ja19oZWFk
ZXIoZmlsZW5hbWUsIG1hdGNoZXMpCisgICAgaWYgbW9ja19kZWZfZm91bmQ6CisgICAgICAgIHJl
dHVybiBtYXRjaGVzCisKKyAgICAjIFJlZ3VsYXIgc3R5bGUgY2hlY2sgZmxvdy4gU2VhcmNoIGZv
ciBhY3R1YWwgaGVhZGVyIGZpbGUgJiBkZWZzLgorICAgIGZpbGVfcGF0aCA9IGdldF9hYnNfZmls
ZXBhdGgoZmlsZW5hbWUpCisgICAgaWYgbm90IGZpbGVfcGF0aDoKKyAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICB0cnk6CisgICAgICAgIGYgPSBvcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgY2xlYW5f
bGluZXMgPSBDbGVhbnNlZExpbmVzKGYucmVhZGxpbmVzKCkpCisgICAgZmluYWxseToKKyAgICAg
ICAgZi5jbG9zZSgpCisKKyAgICAjIE1ha2UgYSBsaXN0IG9mIGFsbCBnZW51aW5lIGFsdGVybmF0
aXZlcyB0byBzdGF0aWNfY2FzdC4KKyAgICBtYXRjaGVzID0gZ3JlcChjbGVhbl9saW5lcywgcGF0
dGVybiwgY2xhc3NfbmFtZSwgZXJyb3IpCisgICAgcmV0dXJuIG1hdGNoZXMKKworCitkZWYgY2hl
Y2tfZm9yX29iamVjdF9zdGF0aWNfY2FzdChwcm9jZXNzaW5nX2ZpbGUsIGxpbmVfbnVtYmVyLCBs
aW5lLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciBhIENwcC1zdHlsZSBzdGF0aWMgY2FzdCBv
biBvYmplY3RzIGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0ZXJuLgorCisgICAgQXJnczoKKyAgICAg
IHByb2Nlc3NpbmdfZmlsZTogVGhlIG5hbWUgb2YgdGhlIHByb2Nlc3NpbmcgZmlsZS4KKyAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgbGlu
ZTogVGhlIGxpbmUgb2YgY29kZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24g
dG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbWF0Y2hlZCA9IHNl
YXJjaChyJ1xic3RhdGljX2Nhc3Q8KFxzKlx3Kjo/Oj9cdytccypcKitccyopPicsIGxpbmUpCisg
ICAgaWYgbm90IG1hdGNoZWQ6CisgICAgICAgIHJldHVybgorCisgICAgY2xhc3NfbmFtZSA9IHJl
LnN1YignW1wqXScsICcnLCBtYXRjaGVkLmdyb3VwKDEpKQorICAgIGNsYXNzX25hbWUgPSBjbGFz
c19uYW1lLnN0cmlwKCkKKyAgICAjIElnbm9yZSAoZm9yIG5vdykgd2hlbiB0aGUgY2FzdGluZyBp
cyB0byB2b2lkKiwKKyAgICBpZiBjbGFzc19uYW1lID09ICd2b2lkJzoKKyAgICAgICAgcmV0dXJu
CisKKyAgICBuYW1lc3BhY2VfcG9zID0gY2xhc3NfbmFtZS5maW5kKCc6JykKKyAgICBpZiBub3Qg
bmFtZXNwYWNlX3BvcyA9PSAtMToKKyAgICAgICAgY2xhc3NfbmFtZSA9IGNsYXNzX25hbWVbbmFt
ZXNwYWNlX3BvcyArIDI6XQorCisgICAgaGVhZGVyX2ZpbGUgPSAnJy5qb2luKChjbGFzc19uYW1l
LCAnLmgnKSkKKyAgICBtYXRjaGVzID0gY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24oaGVhZGVy
X2ZpbGUsICcnLmpvaW4oKCd0bycsIGNsYXNzX25hbWUpKSwgY2xhc3NfbmFtZSwgZXJyb3IpCisg
ICAgIyBJZ25vcmUgKGZvciBub3cpIGlmIG5vdCBhYmxlIHRvIGZpbmQgdGhlIGhlYWRlciB3aGVy
ZSB0b0ZvbyBtaWdodCBiZSBkZWZpbmVkLgorICAgICMgVE9ETzogSGFuZGxlIGNhc2VzIHdoZXJl
IENsYXNzbmFtZSBtaWdodCBiZSBkZWZpbmVkIGluIHNvbWUgb3RoZXIgaGVhZGVyIG9yIGNwcCBm
aWxlLgorICAgIGlmIG1hdGNoZXMgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXBv
cnRfZXJyb3IgPSBUcnVlCisgICAgIyBFbnN1cmUgZm91bmQgc3RhdGljX2Nhc3QgaW5zdGFuY2Ug
aXMgbm90IGZyb20gd2l0aGluIHRvRm9vIGRlZmluaXRpb24gaXRzZWxmLgorICAgIGlmIChvcy5w
YXRoLmJhc2VuYW1lKHByb2Nlc3NpbmdfZmlsZSkgPT0gaGVhZGVyX2ZpbGUpOgorICAgICAgICBm
b3IgaXRlbSBpbiBtYXRjaGVzOgorICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4gcmFuZ2Uo
aXRlbVsxXSwgaXRlbVsyXSk6CisgICAgICAgICAgICAgICAgcmVwb3J0X2Vycm9yID0gRmFsc2UK
KyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgcmVwb3J0X2Vycm9yOgorICAgICAgICBp
ZiBsZW4obWF0Y2hlcyk6CisgICAgICAgICAgICAjIHRvRm9vIGlzIGRlZmluZWQgLSBlbmZvcmNl
IHVzaW5nIGl0LgorICAgICAgICAgICAgIyBUT0RPOiBTdWdnZXN0IGFuIGFwcHJvcHJpYXRlIHRv
Rm9vIGZyb20gdGhlIGFsdGVybmF0aXZlcyBwcmVzZW50IGluIG1hdGNoZXMuCisgICAgICAgICAg
ICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvY2FzdGluZycsIDQsCisgICAgICAgICAgICAg
ICAgICAnc3RhdGljX2Nhc3Qgb2YgY2xhc3Mgb2JqZWN0cyBpcyBub3QgYWxsb3dlZC4gVXNlIHRv
JXMgZGVmaW5lZCBpbiAlcy4nICUKKyAgICAgICAgICAgICAgICAgIChjbGFzc19uYW1lLCBoZWFk
ZXJfZmlsZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vIHRvRm9vIGRlZmluZWQg
LSBlbmZvcmNlIGRlZmluaXRpb24gJiB1c2FnZS4KKyAgICAgICAgICAgICMgVE9ETzogQXV0b21h
dGUgdGhlIGdlbmVyYXRpb24gb2YgdG9Gb28oKSB0byBhdm9pZCBhbnkgc2xpcHBhZ2VzIGV2ZXIu
CisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUvY2FzdGluZycsIDQsCisg
ICAgICAgICAgICAgICAgICAnc3RhdGljX2Nhc3Qgb2YgY2xhc3Mgb2JqZWN0cyBpcyBub3QgYWxs
b3dlZC4gQWRkIHRvJXMgaW4gJXMgYW5kIHVzZSBpdCBpbnN0ZWFkLicgJQorICAgICAgICAgICAg
ICAgICAgKGNsYXNzX25hbWUsIGhlYWRlcl9maWxlKSkKKworCiBkZWYgY2hlY2tfY19zdHlsZV9j
YXN0KGxpbmVfbnVtYmVyLCBsaW5lLCByYXdfbGluZSwgY2FzdF90eXBlLCBwYXR0ZXJuLAogICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcik6CiAgICAgIiIiQ2hlY2tzIGZvciBhIEMtc3R5bGUg
Y2FzdCBieSBsb29raW5nIGZvciB0aGUgcGF0dGVybi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggOGQ5ZDRmY2Mz
MjU2MWM0NjhlMjEzOTc2ZTAyYzc0OTc5ODdkMWNjMC4uNGQ2NWY3ODc2ZjgzYTExNjdiN2NjYTFi
ZGIxMzI3MmYzNmM3YTMxYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTMxMCw2ICszMTAsMTIgQEAgY2xhc3Mg
Q3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHVuaXRfdGVzdF9j
b25maWcgPSB7Y3BwX3N0eWxlLklOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWTogaW99CiAgICAgICAg
IHJldHVybiBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVs
ZXMsIHVuaXRfdGVzdF9jb25maWcpCiAKKyAgICBkZWYgcGVyZm9ybV9hdm9pZF9zdGF0aWNfY2Fz
dF9vZl9vYmplY3RzKHNlbGYsIGNvZGUsIGZpbGVuYW1lPSdmb28uY3BwJywgaW89Y29kZWNzKToK
KyAgICAgICAgYmFzaWNfZXJyb3JfcnVsZXMgPSAoJy0nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnK3J1bnRpbWUvY2FzdGluZycpCisgICAgICAgIHVuaXRfdGVzdF9jb25maWcgPSB7
Y3BwX3N0eWxlLklOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWTogaW99CisgICAgICAgIHJldHVybiBz
ZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVsZXMsIHVuaXRf
dGVzdF9jb25maWcpCisKICAgICAjIFBlcmZvcm0gbGludCBhbmQgY29tcGFyZSB0aGUgZXJyb3Ig
bWVzc2FnZSB3aXRoICJleHBlY3RlZF9tZXNzYWdlIi4KICAgICBkZWYgYXNzZXJ0X2xpbnQoc2Vs
ZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSwgZmlsZV9uYW1lPSdmb28uY3BwJyk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX3NpbmdsZV9s
aW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKQEAgLTc2NCwxMyArNzcwLDI0IEBAIGNsYXNzIENw
cFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLCBzdGF0ZW1lbnQsIGVycm9yX21lc3NhZ2UpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsIHN0YXRlbWVudCwg
ZXJyb3JfbWVzc2FnZSkKIAotICAgICMgVGVzdCBmb3Igc3RhdGljX2Nhc3QgcmVhZGFiaWxpdHku
Ci0gICAgZGVmIHRlc3Rfc3RhdGljX2Nhc3RfcmVhZGFiaWxpdHkoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnVGV4dCogeCA9IHN0YXRpY19jYXN0PFRleHQq
Pihmb28pOycsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgdG9UZXh0IGhlbHBlciBmdW5j
dGlvbiBpbiBXZWJDb3JlL2RvbS9UZXh0LmggJwotICAgICAgICAgICAgJ2luc3RlYWQgb2Ygc3Rh
dGljX2Nhc3Q8VGV4dCo+JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbNF0n
KQorICAgICMgVGVzdHMgZm9yIHN0YXRpY19jYXN0IHJlYWRhYmlsaXR5LgorICAgIGRlZiB0ZXN0
X3N0YXRpY19jYXN0X29uX29iamVjdHNfd2l0aF90b0ZvbyhzZWxmKToKKyAgICAgICAgbW9ja19o
ZWFkZXJfY29udGVudHMgPSBbJ2lubGluZSBGb28qIHRvRm9vKEJhciogYmFyKSddCisgICAgICAg
IG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1fYXZvaWRfc3RhdGljX2Nhc3Rfb2Zfb2JqZWN0cygKKyAg
ICAgICAgICAgICdGb28qIHggPSBzdGF0aWNfY2FzdDxGb28qPihiYXIpOycsCisgICAgICAgICAg
ICBmaWxlbmFtZT0nY2FzdGluZy5jcHAnLAorICAgICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVh
ZGVyX2NvbnRlbnRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlLCAnc3RhdGlj
X2Nhc3Qgb2YgY2xhc3Mgb2JqZWN0cyBpcyBub3QgYWxsb3dlZC4gVXNlIHRvRm9vIGRlZmluZWQg
aW4gRm9vLmguJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1l
L2Nhc3RpbmddIFs0XScpCisKKyAgICBkZWYgdGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dp
dGhvdXRfdG9Gb28oc2VsZik6CisgICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWydpbmxp
bmUgRm9vQmFyKiB0b0Zvb0JhcihCYXIqIGJhciknXQorICAgICAgICBtZXNzYWdlID0gc2VsZi5w
ZXJmb3JtX2F2b2lkX3N0YXRpY19jYXN0X29mX29iamVjdHMoCisgICAgICAgICAgICAnRm9vKiB4
ID0gc3RhdGljX2Nhc3Q8Rm9vKj4oYmFyKTsnLAorICAgICAgICAgICAgZmlsZW5hbWU9J2Nhc3Rp
bmcuY3BwJywKKyAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZSwgJ3N0YXRpY19jYXN0IG9mIGNsYXNzIG9i
amVjdHMgaXMgbm90IGFsbG93ZWQuIEFkZCB0b0ZvbyBpbiBGb28uaCBhbmQgdXNlIGl0IGluc3Rl
YWQuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3Rp
bmddIFs0XScpCiAKICAgICAjIFdlIGNhbm5vdCB0ZXN0IHRoaXMgZnVuY3Rpb25hbGl0eSBiZWNh
dXNlIG9mIGRpZmZlcmVuY2Ugb2YKICAgICAjIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgQW55d2F5
LCB3ZSBtYXkgbmV2ZXIgZW5hYmxlIHRoaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213230</attachid>
            <date>2013-10-02 23:33:31 -0700</date>
            <delta_ts>2013-10-02 23:54:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122156-20131003121010.patch</filename>
            <type>text/plain</type>
            <size>12923</size>
            <attacher name="Ravi Kasibhatla">r.kasibhatla</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDc0MGI3MTY3NmM2MTNmYjE0MjNlMTBkZTVkMjI5YTAz
ODMyZTU4YS4uOTI5NjRmMGZhZDUyNTI0NTg4ZjczYTdkMDc5YzYzYTc2OGEzNmUxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTEwLTAxICBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHIua2FzaWJoYXRs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNoZWNrIGZvciByZXBvcnRpbmcgdXNl
IG9mIHN0YXRpY19jYXN0IG9uIHR5cGUgb2JqZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBtaWdyYXRpbmcgdG8gbmV3IHN5bnRheCBv
ZiBjYWxsaW5nIHRvRm9vKCkgaW5zdGVhZCBvZiBkb2luZworICAgICAgICBzdGF0aWNfY2FzdCBv
biBGb28gb2JqZWN0cyAmIG1vcmUgY2xhc3NlcyBhcmUgYmVpbmcgY2hhbmdlZCB0byBhZGQKKyAg
ICAgICAgdG9Gb28gaGVscGVyIGZ1bmN0aW9ucy4gRW5zdXJlIHRoYXQgdGhlIGFkZGVkIGhlbHBl
cnMgYXJlIGFjdHVhbGx5CisgICAgICAgICp1c2VkKiBpbiB0aGUgY29kZSBieSBhZGRpbmcgdGhp
cyBjaGVjayB0byBzdHlsZS1jaGVja2VyLiBJdCB3b3VsZAorICAgICAgICAqZm9yY2UqIGRldnMg
dG8gYWRvcHQgdG8gbmV3IHN0eWxlIGFuZCBkZXByZWNhdGUgb2xkZXIgc3RhdGljX2Nhc3QKKyAg
ICAgICAgdXNlIG9mIHR5cGVuYW1lIG9iamVjdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2xhbmd1YWdlKToKKyAg
ICAgICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6CisgICAgICAgIChj
aGVja19mb3JfdG9Gb29fZGVmaW5pdGlvbik6CisgICAgICAgIChjaGVja19mb3JfdG9Gb29fZGVm
aW5pdGlvbi5nZXRfYWJzX2ZpbGVwYXRoKToKKyAgICAgICAgKGNoZWNrX2Zvcl90b0Zvb19kZWZp
bml0aW9uLmdyZXApOgorICAgICAgICAoY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24uY2hlY2tf
aW5fbW9ja19oZWFkZXIpOgorICAgICAgICAoY2hlY2tfZm9yX29iamVjdF9zdGF0aWNfY2FzdCk6
CisgICAgICAgIChjaGVja19mb3Jfb2JqZWN0X3N0YXRpY19jYXN0Lm9iamVjdHMpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoQ3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2F2b2lkX3N0YXRpY19jYXN0X29mX29iamVj
dHMpOgorICAgICAgICAoQ3BwU3R5bGVUZXN0KToKKyAgICAgICAgKENwcFN0eWxlVGVzdC50ZXN0
X3N0YXRpY19jYXN0X29uX29iamVjdHNfd2l0aF90b0Zvbyk6CisgICAgICAgIChDcHBTdHlsZVRl
c3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhfdG9Gb28ub2JqZWN0cyk6CisgICAg
ICAgIChDcHBTdHlsZVRlc3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhvdXRfdG9G
b28pOgorICAgICAgICAoQ3BwU3R5bGVUZXN0LnRlc3Rfc3RhdGljX2Nhc3Rfb25fb2JqZWN0c193
aXRob3V0X3RvRm9vLm9iamVjdHMpOgorCiAyMDEzLTA5LTI3ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGZvcmNlX3N0
YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDcxZTA3YzhiYmVmYjc4NGUxYTI3ZDE4OTg1MmUz
ZmE5MjViOTFlMDYuLjY1YTdlZjFkMmI4MGI1NDhkOGFhNTMwMDAyYjU2YzliMDlkNjkzNzcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC00Nyw2
ICs0Nyw3IEBAIGltcG9ydCB1bmljb2RlZGF0YQogCiBmcm9tIGNvbW1vbiBpbXBvcnQgbWF0Y2gs
IHNlYXJjaCwgc3ViLCBzdWJuCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQg
bWVtb2l6ZWQKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCiAKICMgVGhlIGtleSB0byB1c2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRvIGZha2Ug
bG9hZGluZyBhIGhlYWRlciBmaWxlLgogSU5DTFVERV9JT19JTkpFQ1RJT05fS0VZID0gJ2luY2x1
ZGVfaGVhZGVyX2lvJwpAQCAtMzA5MCwxMSArMzA5MSw5IEBAIGRlZiBjaGVja19sYW5ndWFnZShm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVk
ZV9zCiAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS91bnNpZ25lZCcsIDEsCiAg
ICAgICAgICAgICAgICdPbWl0IGludCB3aGVuIHVzaW5nIHVuc2lnbmVkJykKIAotICAgICMgQ2hl
Y2sgdGhhdCB3ZSdyZSBub3QgdXNpbmcgc3RhdGljX2Nhc3Q8VGV4dCo+LgotICAgIGlmIHNlYXJj
aChyJ1xic3RhdGljX2Nhc3Q8VGV4dFwqPicsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L2NoZWNrJywgNCwKLSAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIHRvVGV4dCBoZWxwZXIgZnVuY3Rpb24gaW4gV2ViQ29yZS9kb20vVGV4dC5oICcKLSAgICAg
ICAgICAgICAgJ2luc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VGV4dCo+JykKKyAgICAjIENoZWNrIGZv
ciB1c2FnZSBvZiBzdGF0aWNfY2FzdDxDbGFzc25hbWUqPi4KKyAgICBjaGVja19mb3Jfb2JqZWN0
X3N0YXRpY19jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZXJyb3IpCisKIAogZGVm
IGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIGxpbmUsIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAiIiJDaGVja3MgaWYgaWRlbnRpZmll
ciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KQEAgLTMyMjcsNiArMzIyNiwxNTIgQEAg
ZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsIGxpbmUsIGZpbGVfc3RhdGUKICAgICAgICAgbnVtYmVyX29mX2lkZW50aWZpZXJzICs9
IDEKICAgICAgICAgbGluZSA9IGxpbmVbbWF0Y2hlZC5lbmQoKTpdCiAKKworZGVmIGNoZWNrX2Zv
cl90b0Zvb19kZWZpbml0aW9uKGZpbGVuYW1lLCBwYXR0ZXJuLCBjbGFzc19uYW1lLCBlcnJvcik6
CisgICAgIiIiIFJlcG9ydHMgZm9yIHVzaW5nIHN0YXRpY19jYXN0IGluc3RlYWQgb2YgdG9Gb28g
Y29udmVuaWVuY2UgZnVuY3Rpb24uCisKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgb3V0cHV0IHdh
cm5pbmdzIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGFjdHVhbGx5IHVzaW5nCisgICAgdGhlIGFkZGVk
IHRvRm9vIGNvbnZlcnNpb24gZnVuY3Rpb25zIHJhdGhlciB0aGFuIGRpcmVjdGx5IGhhcmQgY29k
aW5nCisgICAgdGhlIHN0YXRpY19jYXN0PENsYXNzbmFtZSo+IGNhbGwuIEZvciBleGFtcGxlLCB5
b3Ugc2hvdWxkIHRvSFRNTEVMZW1lbnQoTm9kZSopCisgICAgdG8gY29udmVydCBOb2RlKiB0byBI
VE1MRWxlbWVudCosIGluc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihOb2RlKikK
KworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGhlYWRlciBmaWxl
IGluIHdoaWNoIHRvIGNoZWNrIGZvciB0b0ZvbyBkZWZpbml0aW9uLgorICAgICAgcGF0dGVybjog
VGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gc2lnbmF0dXJlIHBhdHRlcm4gdG8gZ3JlcCBmb3IuCisg
ICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgor
ICAgICIiIgorICAgIGRlZiBnZXRfYWJzX2ZpbGVwYXRoKGZpbGVuYW1lKToKKyAgICAgICAgZmls
ZVN5c3RlbSA9IEZpbGVTeXN0ZW0oKQorICAgICAgICBiYXNlX2RpciA9IGZpbGVTeXN0ZW0ucGF0
aF90b19tb2R1bGUoRmlsZVN5c3RlbS5fX21vZHVsZV9fKS5zcGxpdCgnVG9vbHMnLCAxKVswXQor
ICAgICAgICBiYXNlX2RpciA9ICcnLmpvaW4oKGJhc2VfZGlyLCAnU291cmNlJykpCisgICAgICAg
IGZvciByb290LCBkaXJzLCBuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKKyAgICAgICAgICAg
IGlmIGZpbGVuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ3JlcChs
aW5lcywgcGF0dGVybiwgY2xhc3NfbmFtZSwgZXJyb3IpOgorICAgICAgICBtYXRjaGVzID0gW10K
KyAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lX251bWJlciBp
biB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgbGluZSA9IChsaW5lcy5l
bGlkZWRbbGluZV9udW1iZXJdKS5yc3RyaXAoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocidcdytfVFlQRV9DQVNUUy4oJXMpLicgJSAoY2xhc3Nf
bmFtZSksIGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogRm91bmQgdGhlIG1hY3JvIHdoaWNoIGV4cGFuZHMgdG8gdG9Gb28gdmFy
aWFudHMsIGJ1dCB3ZSBkb24ndAorICAgICAgICAgICAgICAgICAgICAjIGtub3cgaG93IG1hbnkg
bGluZXMgdGhlIG1hY3JvIHdvdWxkIGV4cGFuZCB0by4gU28sIGtlZXBpbmcgc2FtZSBsaW5lCisg
ICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIGZvciBzdGFydCAmIGVuZC4gQnV0IGlzIHRoaXMg
YmVoYXZpb3IgY29ycmVjdD8KKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoW2xp
bmUsIGxpbmVfbnVtYmVyLCBsaW5lX251bWJlcl0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgaWYgcGF0dGVybiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbm90IGZ1bmN0aW9uX3N0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uX3N0YXRlID0gX0Z1bmN0aW9uU3RhdGUoMSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRldGVjdF9mdW5jdGlvbnMobGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9zdGF0ZSwg
ZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAjIEV4Y2x1ZGUgdGhlIG1hdGNoIG9mIGR1
bW15IGNvbnZlcnNpb24gZnVuY3Rpb24uIER1bW15IGZ1bmN0aW9uIGlzIGp1c3QgdG8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgY2F0Y2ggaW52YWxpZCBjb252ZXJzaW9ucyBhbmQgc2hvdWxk
bid0IGJlIHBhcnQgb2YgcG9zc2libGUgYWx0ZXJuYXRpdmVzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc2VhcmNoKHInJXMoXHMrKSVzJyAlICgidm9pZCIsIHBhdHRlcm4pLCBs
aW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChbbGluZSwgZnVuY3Rpb25fc3RhdGUuYm9k
eV9zdGFydF9wb3NpdGlvbi5yb3csIGZ1bmN0aW9uX3N0YXRlLmVuZF9wb3NpdGlvbi5yb3cgKyAx
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IE5vbmUKKyAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBU
aGVyZSB3b3VsZCBiZSBubyBub24tYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgY29kZWJhc2UgZXZl
ci4gVGhlIG9ubHkgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBjb21tZW50
cy9jb3B5cmlnaHQgdGV4dCB3aGljaCBtaWdodCBoYXZlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLiBI
ZW5jZSwKKyAgICAgICAgICAgICAgICAjIGl0IGlzIHBlcmZlY3RseSBzYWZlIHRvIGNhdGNoIHRo
ZSBVbmljb2RlRGVjb2RlRXJyb3IgYW5kIGp1c3QgcGFzcyB0aGUgbGluZS4KKyAgICAgICAgICAg
ICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJuIG1hdGNoZXMKKworICAgIGRlZiBjaGVja19pbl9t
b2NrX2hlYWRlcihmaWxlbmFtZSwgbWF0Y2hlcz1Ob25lLCBpbz1jb2RlY3MpOgorICAgICAgICBp
ZiBub3QgZmlsZW5hbWUgPT0gJ0Zvby5oJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgICAgIGlvID0gX3VuaXRfdGVzdF9jb25maWcuZ2V0KElOQ0xVREVfSU9fSU5KRUNUSU9OX0tF
WSwgY29kZWNzKQorICAgICAgICBoZWFkZXJfZmlsZSA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgaGVhZGVyX2ZpbGUgPSBpby5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3Jl
cGxhY2UnKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBsaW5lX251bWJlciA9IDAKKyAgICAgICAgZm9yIGxpbmUgaW4gaGVhZGVyX2Zp
bGU6CisgICAgICAgICAgICBsaW5lX251bWJlciArPSAxCisgICAgICAgICAgICBtYXRjaGVkID0g
cmUuc2VhcmNoKHInXGJ0b0Zvb1xiJywgbGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoZWQ6Cisg
ICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoWyd0b0ZvbycsIGxpbmVfbnVtYmVyLCBsaW5l
X251bWJlciArIDNdKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgIyBGb3IgdW5pdCB0ZXN0
aW5nIG9ubHksIGF2b2lkIGhlYWRlciBzZWFyY2ggYW5kIGxvb2t1cCBsb2NhbGx5LgorICAgIG1h
dGNoZXMgPSBbXQorICAgIG1vY2tfZGVmX2ZvdW5kID0gY2hlY2tfaW5fbW9ja19oZWFkZXIoZmls
ZW5hbWUsIG1hdGNoZXMpCisgICAgaWYgbW9ja19kZWZfZm91bmQ6CisgICAgICAgIHJldHVybiBt
YXRjaGVzCisKKyAgICAjIFJlZ3VsYXIgc3R5bGUgY2hlY2sgZmxvdy4gU2VhcmNoIGZvciBhY3R1
YWwgaGVhZGVyIGZpbGUgJiBkZWZzLgorICAgIGZpbGVfcGF0aCA9IGdldF9hYnNfZmlsZXBhdGgo
ZmlsZW5hbWUpCisgICAgaWYgbm90IGZpbGVfcGF0aDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICB0cnk6CisgICAgICAgIGYgPSBvcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgY2xlYW5fbGluZXMg
PSBDbGVhbnNlZExpbmVzKGYucmVhZGxpbmVzKCkpCisgICAgZmluYWxseToKKyAgICAgICAgZi5j
bG9zZSgpCisKKyAgICAjIE1ha2UgYSBsaXN0IG9mIGFsbCBnZW51aW5lIGFsdGVybmF0aXZlcyB0
byBzdGF0aWNfY2FzdC4KKyAgICBtYXRjaGVzID0gZ3JlcChjbGVhbl9saW5lcywgcGF0dGVybiwg
Y2xhc3NfbmFtZSwgZXJyb3IpCisgICAgcmV0dXJuIG1hdGNoZXMKKworCitkZWYgY2hlY2tfZm9y
X29iamVjdF9zdGF0aWNfY2FzdChwcm9jZXNzaW5nX2ZpbGUsIGxpbmVfbnVtYmVyLCBsaW5lLCBl
cnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciBhIENwcC1zdHlsZSBzdGF0aWMgY2FzdCBvbiBvYmpl
Y3RzIGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0ZXJuLgorCisgICAgQXJnczoKKyAgICAgIHByb2Nl
c3NpbmdfZmlsZTogVGhlIG5hbWUgb2YgdGhlIHByb2Nlc3NpbmcgZmlsZS4KKyAgICAgIGxpbmVf
bnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgbGluZTogVGhl
IGxpbmUgb2YgY29kZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbWF0Y2hlZCA9IHNlYXJjaChy
J1xic3RhdGljX2Nhc3Q8KFxzKlx3Kjo/Oj9cdytccypcKitccyopPicsIGxpbmUpCisgICAgaWYg
bm90IG1hdGNoZWQ6CisgICAgICAgIHJldHVybgorCisgICAgY2xhc3NfbmFtZSA9IHJlLnN1Yign
W1wqXScsICcnLCBtYXRjaGVkLmdyb3VwKDEpKQorICAgIGNsYXNzX25hbWUgPSBjbGFzc19uYW1l
LnN0cmlwKCkKKyAgICAjIElnbm9yZSAoZm9yIG5vdykgd2hlbiB0aGUgY2FzdGluZyBpcyB0byB2
b2lkKiwKKyAgICBpZiBjbGFzc19uYW1lID09ICd2b2lkJzoKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBuYW1lc3BhY2VfcG9zID0gY2xhc3NfbmFtZS5maW5kKCc6JykKKyAgICBpZiBub3QgbmFtZXNw
YWNlX3BvcyA9PSAtMToKKyAgICAgICAgY2xhc3NfbmFtZSA9IGNsYXNzX25hbWVbbmFtZXNwYWNl
X3BvcyArIDI6XQorCisgICAgaGVhZGVyX2ZpbGUgPSAnJy5qb2luKChjbGFzc19uYW1lLCAnLmgn
KSkKKyAgICBtYXRjaGVzID0gY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24oaGVhZGVyX2ZpbGUs
ICcnLmpvaW4oKCd0bycsIGNsYXNzX25hbWUpKSwgY2xhc3NfbmFtZSwgZXJyb3IpCisgICAgIyBJ
Z25vcmUgKGZvciBub3cpIGlmIG5vdCBhYmxlIHRvIGZpbmQgdGhlIGhlYWRlciB3aGVyZSB0b0Zv
byBtaWdodCBiZSBkZWZpbmVkLgorICAgICMgVE9ETzogSGFuZGxlIGNhc2VzIHdoZXJlIENsYXNz
bmFtZSBtaWdodCBiZSBkZWZpbmVkIGluIHNvbWUgb3RoZXIgaGVhZGVyIG9yIGNwcCBmaWxlLgor
ICAgIGlmIG1hdGNoZXMgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXBvcnRfZXJy
b3IgPSBUcnVlCisgICAgIyBFbnN1cmUgZm91bmQgc3RhdGljX2Nhc3QgaW5zdGFuY2UgaXMgbm90
IGZyb20gd2l0aGluIHRvRm9vIGRlZmluaXRpb24gaXRzZWxmLgorICAgIGlmIChvcy5wYXRoLmJh
c2VuYW1lKHByb2Nlc3NpbmdfZmlsZSkgPT0gaGVhZGVyX2ZpbGUpOgorICAgICAgICBmb3IgaXRl
bSBpbiBtYXRjaGVzOgorICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4gcmFuZ2UoaXRlbVsx
XSwgaXRlbVsyXSk6CisgICAgICAgICAgICAgICAgcmVwb3J0X2Vycm9yID0gRmFsc2UKKyAgICAg
ICAgICAgICAgICBicmVhaworCisgICAgaWYgcmVwb3J0X2Vycm9yOgorICAgICAgICBpZiBsZW4o
bWF0Y2hlcyk6CisgICAgICAgICAgICAjIHRvRm9vIGlzIGRlZmluZWQgLSBlbmZvcmNlIHVzaW5n
IGl0LgorICAgICAgICAgICAgIyBUT0RPOiBTdWdnZXN0IGFuIGFwcHJvcHJpYXRlIHRvRm9vIGZy
b20gdGhlIGFsdGVybmF0aXZlcyBwcmVzZW50IGluIG1hdGNoZXMuCisgICAgICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ3J1bnRpbWUvY2FzdGluZycsIDQsCisgICAgICAgICAgICAgICAgICAn
RGlyZWN0IGNhc3Rpbmcgb2YgYW4gb2JqZWN0IHRvIHJlbGF0ZWQgdHlwZW5hbWUgaXMgbm90IGFs
bG93ZWQuIFVzZSB0byVzIGRlZmluZWQgaW4gJXMuJyAlCisgICAgICAgICAgICAgICAgICAoY2xh
c3NfbmFtZSwgaGVhZGVyX2ZpbGUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBObyB0
b0ZvbyBkZWZpbmVkIC0gZW5mb3JjZSBkZWZpbml0aW9uICYgdXNhZ2UuCisgICAgICAgICAgICAj
IFRPRE86IEF1dG9tYXRlIHRoZSBnZW5lcmF0aW9uIG9mIHRvRm9vKCkgdG8gYXZvaWQgYW55IHNs
aXBwYWdlcyBldmVyLgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdydW50aW1lL2Nh
c3RpbmcnLCA0LAorICAgICAgICAgICAgICAgICAgJ0RpcmVjdCBjYXN0aW5nIG9mIGFuIG9iamVj
dCB0byByZWxhdGVkIHR5cGVuYW1lIGlzIG5vdCBhbGxvd2VkLiBBZGQgdG8lcyBpbiAlcyBhbmQg
dXNlIGl0IGluc3RlYWQuJyAlCisgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgaGVhZGVy
X2ZpbGUpKQorCisKIGRlZiBjaGVja19jX3N0eWxlX2Nhc3QobGluZV9udW1iZXIsIGxpbmUsIHJh
d19saW5lLCBjYXN0X3R5cGUsIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y
KToKICAgICAiIiJDaGVja3MgZm9yIGEgQy1zdHlsZSBjYXN0IGJ5IGxvb2tpbmcgZm9yIHRoZSBw
YXR0ZXJuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcF91bml0dGVzdC5weQppbmRleCA4ZDlkNGZjYzMyNTYxYzQ2OGUyMTM5NzZlMDJjNzQ5Nzk4
N2QxY2MwLi45MTdjODUxMjdmZDlmYTBlNjNkMzczMjEyYWZmNjU1ZDdkYmNlNjg3IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVz
dC5weQpAQCAtMzEwLDYgKzMxMCwxMiBAQCBjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgdW5pdF90ZXN0X2NvbmZpZyA9IHtjcHBfc3R5bGUuSU5DTFVE
RV9JT19JTkpFQ1RJT05fS0VZOiBpb30KICAgICAgICAgcmV0dXJuIHNlbGYucGVyZm9ybV9saW50
KGNvZGUsIGZpbGVuYW1lLCBiYXNpY19lcnJvcl9ydWxlcywgdW5pdF90ZXN0X2NvbmZpZykKIAor
ICAgIGRlZiBwZXJmb3JtX2F2b2lkX3N0YXRpY19jYXN0X29mX29iamVjdHMoc2VsZiwgY29kZSwg
ZmlsZW5hbWU9J2Zvby5jcHAnLCBpbz1jb2RlY3MpOgorICAgICAgICBiYXNpY19lcnJvcl9ydWxl
cyA9ICgnLScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcrcnVudGltZS9jYXN0aW5n
JykKKyAgICAgICAgdW5pdF90ZXN0X2NvbmZpZyA9IHtjcHBfc3R5bGUuSU5DTFVERV9JT19JTkpF
Q1RJT05fS0VZOiBpb30KKyAgICAgICAgcmV0dXJuIHNlbGYucGVyZm9ybV9saW50KGNvZGUsIGZp
bGVuYW1lLCBiYXNpY19lcnJvcl9ydWxlcywgdW5pdF90ZXN0X2NvbmZpZykKKwogICAgICMgUGVy
Zm9ybSBsaW50IGFuZCBjb21wYXJlIHRoZSBlcnJvciBtZXNzYWdlIHdpdGggImV4cGVjdGVkX21l
c3NhZ2UiLgogICAgIGRlZiBhc3NlcnRfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdl
LCBmaWxlX25hbWU9J2Zvby5jcHAnKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF9tZXNzYWdlLCBzZWxmLnBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChjb2RlLCBmaWxlX25hbWUp
KQpAQCAtNzY0LDEzICs3NzAsMjQgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcs
IHN0YXRlbWVudCwgZXJyb3JfbWVzc2FnZSkKICAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2Vf
cnVsZXNfY2hlY2soJ2Zvby5oJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdlKQogCi0gICAgIyBU
ZXN0IGZvciBzdGF0aWNfY2FzdCByZWFkYWJpbGl0eS4KLSAgICBkZWYgdGVzdF9zdGF0aWNfY2Fz
dF9yZWFkYWJpbGl0eShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAg
ICAgICdUZXh0KiB4ID0gc3RhdGljX2Nhc3Q8VGV4dCo+KGZvbyk7JywKLSAgICAgICAgICAgICdD
b25zaWRlciB1c2luZyB0b1RleHQgaGVscGVyIGZ1bmN0aW9uIGluIFdlYkNvcmUvZG9tL1RleHQu
aCAnCi0gICAgICAgICAgICAnaW5zdGVhZCBvZiBzdGF0aWNfY2FzdDxUZXh0Kj4nCi0gICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFs0XScpCisgICAgIyBUZXN0cyBmb3Igc3RhdGlj
X2Nhc3QgcmVhZGFiaWxpdHkuCisgICAgZGVmIHRlc3Rfc3RhdGljX2Nhc3Rfb25fb2JqZWN0c193
aXRoX3RvRm9vKHNlbGYpOgorICAgICAgICBtb2NrX2hlYWRlcl9jb250ZW50cyA9IFsnaW5saW5l
IEZvbyogdG9Gb28oQmFyKiBiYXIpJ10KKyAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9h
dm9pZF9zdGF0aWNfY2FzdF9vZl9vYmplY3RzKAorICAgICAgICAgICAgJ0ZvbyogeCA9IHN0YXRp
Y19jYXN0PEZvbyo+KGJhcik7JywKKyAgICAgICAgICAgIGZpbGVuYW1lPSdjYXN0aW5nLmNwcCcs
CisgICAgICAgICAgICBpbz1Nb2NrSW8obW9ja19oZWFkZXJfY29udGVudHMpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2UsICdEaXJlY3QgY2FzdGluZyBvZiBhbiBvYmplY3QgdG8g
cmVsYXRlZCB0eXBlbmFtZSBpcyBub3QgYWxsb3dlZC4gVXNlIHRvRm9vIGRlZmluZWQgaW4gRm9v
LmguJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3Rp
bmddIFs0XScpCisKKyAgICBkZWYgdGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhvdXRf
dG9Gb28oc2VsZik6CisgICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWydpbmxpbmUgRm9v
QmFyKiB0b0Zvb0JhcihCYXIqIGJhciknXQorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3Jt
X2F2b2lkX3N0YXRpY19jYXN0X29mX29iamVjdHMoCisgICAgICAgICAgICAnRm9vKiB4ID0gc3Rh
dGljX2Nhc3Q8Rm9vKj4oYmFyKTsnLAorICAgICAgICAgICAgZmlsZW5hbWU9J2Nhc3RpbmcuY3Bw
JywKKyAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZSwgJ0RpcmVjdCBjYXN0aW5nIG9mIGFuIG9iamVjdCB0
byByZWxhdGVkIHR5cGVuYW1lIGlzIG5vdCBhbGxvd2VkLiBBZGQgdG9Gb28gaW4gRm9vLmggYW5k
IHVzZSBpdCBpbnN0ZWFkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
cnVudGltZS9jYXN0aW5nXSBbNF0nKQogCiAgICAgIyBXZSBjYW5ub3QgdGVzdCB0aGlzIGZ1bmN0
aW9uYWxpdHkgYmVjYXVzZSBvZiBkaWZmZXJlbmNlIG9mCiAgICAgIyBmdW5jdGlvbiBkZWZpbml0
aW9ucy4gIEFueXdheSwgd2UgbWF5IG5ldmVyIGVuYWJsZSB0aGlzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213232</attachid>
            <date>2013-10-02 23:54:24 -0700</date>
            <delta_ts>2016-04-25 20:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122156-20131003123106.patch</filename>
            <type>text/plain</type>
            <size>12979</size>
            <attacher name="Ravi Kasibhatla">r.kasibhatla</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDc0MGI3MTY3NmM2MTNmYjE0MjNlMTBkZTVkMjI5YTAz
ODMyZTU4YS4uOTI5NjRmMGZhZDUyNTI0NTg4ZjczYTdkMDc5YzYzYTc2OGEzNmUxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEzLTEwLTAxICBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHIua2FzaWJoYXRs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgdGhlIGNoZWNrIGZvciByZXBvcnRpbmcgdXNl
IG9mIHN0YXRpY19jYXN0IG9uIHR5cGUgb2JqZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFyZSBtaWdyYXRpbmcgdG8gbmV3IHN5bnRheCBv
ZiBjYWxsaW5nIHRvRm9vKCkgaW5zdGVhZCBvZiBkb2luZworICAgICAgICBzdGF0aWNfY2FzdCBv
biBGb28gb2JqZWN0cyAmIG1vcmUgY2xhc3NlcyBhcmUgYmVpbmcgY2hhbmdlZCB0byBhZGQKKyAg
ICAgICAgdG9Gb28gaGVscGVyIGZ1bmN0aW9ucy4gRW5zdXJlIHRoYXQgdGhlIGFkZGVkIGhlbHBl
cnMgYXJlIGFjdHVhbGx5CisgICAgICAgICp1c2VkKiBpbiB0aGUgY29kZSBieSBhZGRpbmcgdGhp
cyBjaGVjayB0byBzdHlsZS1jaGVja2VyLiBJdCB3b3VsZAorICAgICAgICAqZm9yY2UqIGRldnMg
dG8gYWRvcHQgdG8gbmV3IHN0eWxlIGFuZCBkZXByZWNhdGUgb2xkZXIgc3RhdGljX2Nhc3QKKyAg
ICAgICAgdXNlIG9mIHR5cGVuYW1lIG9iamVjdHMuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2xhbmd1YWdlKToKKyAg
ICAgICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6CisgICAgICAgIChj
aGVja19mb3JfdG9Gb29fZGVmaW5pdGlvbik6CisgICAgICAgIChjaGVja19mb3JfdG9Gb29fZGVm
aW5pdGlvbi5nZXRfYWJzX2ZpbGVwYXRoKToKKyAgICAgICAgKGNoZWNrX2Zvcl90b0Zvb19kZWZp
bml0aW9uLmdyZXApOgorICAgICAgICAoY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24uY2hlY2tf
aW5fbW9ja19oZWFkZXIpOgorICAgICAgICAoY2hlY2tfZm9yX29iamVjdF9zdGF0aWNfY2FzdCk6
CisgICAgICAgIChjaGVja19mb3Jfb2JqZWN0X3N0YXRpY19jYXN0Lm9iamVjdHMpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoQ3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2F2b2lkX3N0YXRpY19jYXN0X29mX29iamVj
dHMpOgorICAgICAgICAoQ3BwU3R5bGVUZXN0KToKKyAgICAgICAgKENwcFN0eWxlVGVzdC50ZXN0
X3N0YXRpY19jYXN0X29uX29iamVjdHNfd2l0aF90b0Zvbyk6CisgICAgICAgIChDcHBTdHlsZVRl
c3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhfdG9Gb28ub2JqZWN0cyk6CisgICAg
ICAgIChDcHBTdHlsZVRlc3QudGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhvdXRfdG9G
b28pOgorICAgICAgICAoQ3BwU3R5bGVUZXN0LnRlc3Rfc3RhdGljX2Nhc3Rfb25fb2JqZWN0c193
aXRob3V0X3RvRm9vLm9iamVjdHMpOgorCiAyMDEzLTA5LTI3ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGZvcmNlX3N0
YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDcxZTA3YzhiYmVmYjc4NGUxYTI3ZDE4OTg1MmUz
ZmE5MjViOTFlMDYuLjk1NTNmYTYxNmE1NGNkMjUwM2ExNDU3YTM2OGY5YTllZjNjZmM1ZTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC00Nyw2
ICs0Nyw3IEBAIGltcG9ydCB1bmljb2RlZGF0YQogCiBmcm9tIGNvbW1vbiBpbXBvcnQgbWF0Y2gs
IHNlYXJjaCwgc3ViLCBzdWJuCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQg
bWVtb2l6ZWQKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCiAKICMgVGhlIGtleSB0byB1c2UgdG8gcHJvdmlkZSBhIGNsYXNzIHRvIGZha2Ug
bG9hZGluZyBhIGhlYWRlciBmaWxlLgogSU5DTFVERV9JT19JTkpFQ1RJT05fS0VZID0gJ2luY2x1
ZGVfaGVhZGVyX2lvJwpAQCAtMzA5MCwxMSArMzA5MSw5IEBAIGRlZiBjaGVja19sYW5ndWFnZShm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVk
ZV9zCiAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncnVudGltZS91bnNpZ25lZCcsIDEsCiAg
ICAgICAgICAgICAgICdPbWl0IGludCB3aGVuIHVzaW5nIHVuc2lnbmVkJykKIAotICAgICMgQ2hl
Y2sgdGhhdCB3ZSdyZSBub3QgdXNpbmcgc3RhdGljX2Nhc3Q8VGV4dCo+LgotICAgIGlmIHNlYXJj
aChyJ1xic3RhdGljX2Nhc3Q8VGV4dFwqPicsIGxpbmUpOgotICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L2NoZWNrJywgNCwKLSAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIHRvVGV4dCBoZWxwZXIgZnVuY3Rpb24gaW4gV2ViQ29yZS9kb20vVGV4dC5oICcKLSAgICAg
ICAgICAgICAgJ2luc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8VGV4dCo+JykKKyAgICAjIENoZWNrIGZv
ciB1c2FnZSBvZiBzdGF0aWNfY2FzdDxDbGFzc25hbWUqPi4KKyAgICBjaGVja19mb3Jfb2JqZWN0
X3N0YXRpY19jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZXJyb3IpCisKIAogZGVm
IGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIGxpbmUsIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAiIiJDaGVja3MgaWYgaWRlbnRpZmll
ciBuYW1lcyBjb250YWluIGFueSB1bmRlcnNjb3Jlcy4KQEAgLTMyMjcsNiArMzIyNiwxNTIgQEAg
ZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsIGxpbmUsIGZpbGVfc3RhdGUKICAgICAgICAgbnVtYmVyX29mX2lkZW50aWZpZXJzICs9
IDEKICAgICAgICAgbGluZSA9IGxpbmVbbWF0Y2hlZC5lbmQoKTpdCiAKKworZGVmIGNoZWNrX2Zv
cl90b0Zvb19kZWZpbml0aW9uKGZpbGVuYW1lLCBwYXR0ZXJuLCBjbGFzc19uYW1lLCBlcnJvcik6
CisgICAgIiIiIFJlcG9ydHMgZm9yIHVzaW5nIHN0YXRpY19jYXN0IGluc3RlYWQgb2YgdG9Gb28g
Y29udmVuaWVuY2UgZnVuY3Rpb24uCisKKyAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgb3V0cHV0IHdh
cm5pbmdzIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIGFjdHVhbGx5IHVzaW5nCisgICAgdGhlIGFkZGVk
IHRvRm9vIGNvbnZlcnNpb24gZnVuY3Rpb25zIHJhdGhlciB0aGFuIGRpcmVjdGx5IGhhcmQgY29k
aW5nCisgICAgdGhlIHN0YXRpY19jYXN0PENsYXNzbmFtZSo+IGNhbGwuIEZvciBleGFtcGxlLCB5
b3Ugc2hvdWxkIHRvSFRNTEVMZW1lbnQoTm9kZSopCisgICAgdG8gY29udmVydCBOb2RlKiB0byBI
VE1MRWxlbWVudCosIGluc3RlYWQgb2Ygc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihOb2RlKikK
KworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGhlYWRlciBmaWxl
IGluIHdoaWNoIHRvIGNoZWNrIGZvciB0b0ZvbyBkZWZpbml0aW9uLgorICAgICAgcGF0dGVybjog
VGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gc2lnbmF0dXJlIHBhdHRlcm4gdG8gZ3JlcCBmb3IuCisg
ICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgor
ICAgICIiIgorICAgIGRlZiBnZXRfYWJzX2ZpbGVwYXRoKGZpbGVuYW1lKToKKyAgICAgICAgZmls
ZVN5c3RlbSA9IEZpbGVTeXN0ZW0oKQorICAgICAgICBiYXNlX2RpciA9IGZpbGVTeXN0ZW0ucGF0
aF90b19tb2R1bGUoRmlsZVN5c3RlbS5fX21vZHVsZV9fKS5zcGxpdCgnVG9vbHMnLCAxKVswXQor
ICAgICAgICBiYXNlX2RpciA9ICcnLmpvaW4oKGJhc2VfZGlyLCAnU291cmNlJykpCisgICAgICAg
IGZvciByb290LCBkaXJzLCBuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKKyAgICAgICAgICAg
IGlmIGZpbGVuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4ocm9vdCwgZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ3JlcChs
aW5lcywgcGF0dGVybiwgY2xhc3NfbmFtZSwgZXJyb3IpOgorICAgICAgICBtYXRjaGVzID0gW10K
KyAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBOb25lCisgICAgICAgIGZvciBsaW5lX251bWJlciBp
biB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgbGluZSA9IChsaW5lcy5l
bGlkZWRbbGluZV9udW1iZXJdKS5yc3RyaXAoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIG1hdGNoZWQgPSBzZWFyY2gocidcdytfVFlQRV9DQVNUUy4oJXMpLicgJSAoY2xhc3Nf
bmFtZSksIGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogRm91bmQgdGhlIG1hY3JvIHdoaWNoIGV4cGFuZHMgdG8gdG9Gb28gdmFy
aWFudHMsIGJ1dCB3ZSBkb24ndAorICAgICAgICAgICAgICAgICAgICAjIGtub3cgaG93IG1hbnkg
bGluZXMgdGhlIG1hY3JvIHdvdWxkIGV4cGFuZCB0by4gU28sIGtlZXBpbmcgc2FtZSBsaW5lCisg
ICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIGZvciBzdGFydCAmIGVuZC4gQnV0IGlzIHRoaXMg
YmVoYXZpb3IgY29ycmVjdD8KKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoW2xp
bmUsIGxpbmVfbnVtYmVyLCBsaW5lX251bWJlcl0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgaWYgcGF0dGVybiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgbm90IGZ1bmN0aW9uX3N0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uX3N0YXRlID0gX0Z1bmN0aW9uU3RhdGUoMSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRldGVjdF9mdW5jdGlvbnMobGluZXMsIGxpbmVfbnVtYmVyLCBmdW5jdGlvbl9zdGF0ZSwg
ZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAjIEV4Y2x1ZGUgdGhlIG1hdGNoIG9mIGR1
bW15IGNvbnZlcnNpb24gZnVuY3Rpb24uIER1bW15IGZ1bmN0aW9uIGlzIGp1c3QgdG8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgY2F0Y2ggaW52YWxpZCBjb252ZXJzaW9ucyBhbmQgc2hvdWxk
bid0IGJlIHBhcnQgb2YgcG9zc2libGUgYWx0ZXJuYXRpdmVzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gc2VhcmNoKHInJXMoXHMrKSVzJyAlICgidm9pZCIsIHBhdHRlcm4pLCBs
aW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChbbGluZSwgZnVuY3Rpb25fc3RhdGUuYm9k
eV9zdGFydF9wb3NpdGlvbi5yb3csIGZ1bmN0aW9uX3N0YXRlLmVuZF9wb3NpdGlvbi5yb3cgKyAx
XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IE5vbmUKKyAg
ICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBU
aGVyZSB3b3VsZCBiZSBubyBub24tYXNjaWkgY2hhcmFjdGVycyBpbiB0aGUgY29kZWJhc2UgZXZl
ci4gVGhlIG9ubHkgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBjb21tZW50
cy9jb3B5cmlnaHQgdGV4dCB3aGljaCBtaWdodCBoYXZlIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLiBI
ZW5jZSwKKyAgICAgICAgICAgICAgICAjIGl0IGlzIHBlcmZlY3RseSBzYWZlIHRvIGNhdGNoIHRo
ZSBVbmljb2RlRGVjb2RlRXJyb3IgYW5kIGp1c3QgcGFzcyB0aGUgbGluZS4KKyAgICAgICAgICAg
ICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJuIG1hdGNoZXMKKworICAgIGRlZiBjaGVja19pbl9t
b2NrX2hlYWRlcihmaWxlbmFtZSwgbWF0Y2hlcz1Ob25lLCBpbz1jb2RlY3MpOgorICAgICAgICBp
ZiBub3QgZmlsZW5hbWUgPT0gJ0Zvby5oJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg
ICAgICAgIGlvID0gX3VuaXRfdGVzdF9jb25maWcuZ2V0KElOQ0xVREVfSU9fSU5KRUNUSU9OX0tF
WSwgY29kZWNzKQorICAgICAgICBoZWFkZXJfZmlsZSA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgaGVhZGVyX2ZpbGUgPSBpby5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3Jl
cGxhY2UnKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICBsaW5lX251bWJlciA9IDAKKyAgICAgICAgZm9yIGxpbmUgaW4gaGVhZGVyX2Zp
bGU6CisgICAgICAgICAgICBsaW5lX251bWJlciArPSAxCisgICAgICAgICAgICBtYXRjaGVkID0g
cmUuc2VhcmNoKHInXGJ0b0Zvb1xiJywgbGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoZWQ6Cisg
ICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoWyd0b0ZvbycsIGxpbmVfbnVtYmVyLCBsaW5l
X251bWJlciArIDNdKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgIyBGb3IgdW5pdCB0ZXN0
aW5nIG9ubHksIGF2b2lkIGhlYWRlciBzZWFyY2ggYW5kIGxvb2t1cCBsb2NhbGx5LgorICAgIG1h
dGNoZXMgPSBbXQorICAgIG1vY2tfZGVmX2ZvdW5kID0gY2hlY2tfaW5fbW9ja19oZWFkZXIoZmls
ZW5hbWUsIG1hdGNoZXMpCisgICAgaWYgbW9ja19kZWZfZm91bmQ6CisgICAgICAgIHJldHVybiBt
YXRjaGVzCisKKyAgICAjIFJlZ3VsYXIgc3R5bGUgY2hlY2sgZmxvdy4gU2VhcmNoIGZvciBhY3R1
YWwgaGVhZGVyIGZpbGUgJiBkZWZzLgorICAgIGZpbGVfcGF0aCA9IGdldF9hYnNfZmlsZXBhdGgo
ZmlsZW5hbWUpCisgICAgaWYgbm90IGZpbGVfcGF0aDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICB0cnk6CisgICAgICAgIGYgPSBvcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgY2xlYW5fbGluZXMg
PSBDbGVhbnNlZExpbmVzKGYucmVhZGxpbmVzKCkpCisgICAgZmluYWxseToKKyAgICAgICAgZi5j
bG9zZSgpCisKKyAgICAjIE1ha2UgYSBsaXN0IG9mIGFsbCBnZW51aW5lIGFsdGVybmF0aXZlcyB0
byBzdGF0aWNfY2FzdC4KKyAgICBtYXRjaGVzID0gZ3JlcChjbGVhbl9saW5lcywgcGF0dGVybiwg
Y2xhc3NfbmFtZSwgZXJyb3IpCisgICAgcmV0dXJuIG1hdGNoZXMKKworCitkZWYgY2hlY2tfZm9y
X29iamVjdF9zdGF0aWNfY2FzdChwcm9jZXNzaW5nX2ZpbGUsIGxpbmVfbnVtYmVyLCBsaW5lLCBl
cnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciBhIENwcC1zdHlsZSBzdGF0aWMgY2FzdCBvbiBvYmpl
Y3RzIGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0ZXJuLgorCisgICAgQXJnczoKKyAgICAgIHByb2Nl
c3NpbmdfZmlsZTogVGhlIG5hbWUgb2YgdGhlIHByb2Nlc3NpbmcgZmlsZS4KKyAgICAgIGxpbmVf
bnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgbGluZTogVGhl
IGxpbmUgb2YgY29kZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbWF0Y2hlZCA9IHNlYXJjaChy
J1xic3RhdGljX2Nhc3Q8KFxzKlx3Kjo/Oj9cdytccypcKitccyopPicsIGxpbmUpCisgICAgaWYg
bm90IG1hdGNoZWQ6CisgICAgICAgIHJldHVybgorCisgICAgY2xhc3NfbmFtZSA9IHJlLnN1Yign
W1wqXScsICcnLCBtYXRjaGVkLmdyb3VwKDEpKQorICAgIGNsYXNzX25hbWUgPSBjbGFzc19uYW1l
LnN0cmlwKCkKKyAgICAjIElnbm9yZSAoZm9yIG5vdykgd2hlbiB0aGUgY2FzdGluZyBpcyB0byB2
b2lkKiwKKyAgICBpZiBjbGFzc19uYW1lID09ICd2b2lkJzoKKyAgICAgICAgcmV0dXJuCisKKyAg
ICBuYW1lc3BhY2VfcG9zID0gY2xhc3NfbmFtZS5maW5kKCc6JykKKyAgICBpZiBub3QgbmFtZXNw
YWNlX3BvcyA9PSAtMToKKyAgICAgICAgY2xhc3NfbmFtZSA9IGNsYXNzX25hbWVbbmFtZXNwYWNl
X3BvcyArIDI6XQorCisgICAgaGVhZGVyX2ZpbGUgPSAnJy5qb2luKChjbGFzc19uYW1lLCAnLmgn
KSkKKyAgICBtYXRjaGVzID0gY2hlY2tfZm9yX3RvRm9vX2RlZmluaXRpb24oaGVhZGVyX2ZpbGUs
ICcnLmpvaW4oKCd0bycsIGNsYXNzX25hbWUpKSwgY2xhc3NfbmFtZSwgZXJyb3IpCisgICAgIyBJ
Z25vcmUgKGZvciBub3cpIGlmIG5vdCBhYmxlIHRvIGZpbmQgdGhlIGhlYWRlciB3aGVyZSB0b0Zv
byBtaWdodCBiZSBkZWZpbmVkLgorICAgICMgVE9ETzogSGFuZGxlIGNhc2VzIHdoZXJlIENsYXNz
bmFtZSBtaWdodCBiZSBkZWZpbmVkIGluIHNvbWUgb3RoZXIgaGVhZGVyIG9yIGNwcCBmaWxlLgor
ICAgIGlmIG1hdGNoZXMgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXBvcnRfZXJy
b3IgPSBUcnVlCisgICAgIyBFbnN1cmUgZm91bmQgc3RhdGljX2Nhc3QgaW5zdGFuY2UgaXMgbm90
IGZyb20gd2l0aGluIHRvRm9vIGRlZmluaXRpb24gaXRzZWxmLgorICAgIGlmIChvcy5wYXRoLmJh
c2VuYW1lKHByb2Nlc3NpbmdfZmlsZSkgPT0gaGVhZGVyX2ZpbGUpOgorICAgICAgICBmb3IgaXRl
bSBpbiBtYXRjaGVzOgorICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4gcmFuZ2UoaXRlbVsx
XSwgaXRlbVsyXSk6CisgICAgICAgICAgICAgICAgcmVwb3J0X2Vycm9yID0gRmFsc2UKKyAgICAg
ICAgICAgICAgICBicmVhaworCisgICAgaWYgcmVwb3J0X2Vycm9yOgorICAgICAgICBpZiBsZW4o
bWF0Y2hlcyk6CisgICAgICAgICAgICAjIHRvRm9vIGlzIGRlZmluZWQgLSBlbmZvcmNlIHVzaW5n
IGl0LgorICAgICAgICAgICAgIyBUT0RPOiBTdWdnZXN0IGFuIGFwcHJvcHJpYXRlIHRvRm9vIGZy
b20gdGhlIGFsdGVybmF0aXZlcyBwcmVzZW50IGluIG1hdGNoZXMuCisgICAgICAgICAgICBlcnJv
cihsaW5lX251bWJlciwgJ3J1bnRpbWUvY2FzdGluZycsIDQsCisgICAgICAgICAgICAgICAgICAn
Q2FzdGluZyBvZiBhbiBvYmplY3QgdG8gaXRzIHJlbGF0ZWQgdHlwZW5hbWUgdXNpbmcgc3RhdGlj
X2Nhc3QgaXMgcHJvaGliaXRlZC4gVXNlIHRvJXMgZGVmaW5lZCBpbiAlcy4nICUKKyAgICAgICAg
ICAgICAgICAgIChjbGFzc19uYW1lLCBoZWFkZXJfZmlsZSkpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAjIE5vIHRvRm9vIGRlZmluZWQgLSBlbmZvcmNlIGRlZmluaXRpb24gJiB1c2FnZS4K
KyAgICAgICAgICAgICMgVE9ETzogQXV0b21hdGUgdGhlIGdlbmVyYXRpb24gb2YgdG9Gb28oKSB0
byBhdm9pZCBhbnkgc2xpcHBhZ2VzIGV2ZXIuCisgICAgICAgICAgICBlcnJvcihsaW5lX251bWJl
ciwgJ3J1bnRpbWUvY2FzdGluZycsIDQsCisgICAgICAgICAgICAgICAgICAnQ2FzdGluZyBvZiBh
biBvYmplY3QgdG8gaXRzIHJlbGF0ZWQgdHlwZW5hbWUgdXNpbmcgc3RhdGljX2Nhc3QgaXMgcHJv
aGliaXRlZC4gQWRkIHRvJXMgaW4gJXMgYW5kIHVzZSBpdCBpbnN0ZWFkLicgJQorICAgICAgICAg
ICAgICAgICAgKGNsYXNzX25hbWUsIGhlYWRlcl9maWxlKSkKKworCiBkZWYgY2hlY2tfY19zdHls
ZV9jYXN0KGxpbmVfbnVtYmVyLCBsaW5lLCByYXdfbGluZSwgY2FzdF90eXBlLCBwYXR0ZXJuLAog
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcik6CiAgICAgIiIiQ2hlY2tzIGZvciBhIEMtc3R5
bGUgY2FzdCBieSBsb29raW5nIGZvciB0aGUgcGF0dGVybi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggOGQ5ZDRm
Y2MzMjU2MWM0NjhlMjEzOTc2ZTAyYzc0OTc5ODdkMWNjMC4uZThlZmQzZTk4NTZiZWYwOWI4YzA3
NzE3NWQwMTEzMjM4ZmZjODgwOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTMxMCw2ICszMTAsMTIgQEAgY2xh
c3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHVuaXRfdGVz
dF9jb25maWcgPSB7Y3BwX3N0eWxlLklOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWTogaW99CiAgICAg
ICAgIHJldHVybiBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3Jf
cnVsZXMsIHVuaXRfdGVzdF9jb25maWcpCiAKKyAgICBkZWYgcGVyZm9ybV9hdm9pZF9zdGF0aWNf
Y2FzdF9vZl9vYmplY3RzKHNlbGYsIGNvZGUsIGZpbGVuYW1lPSdmb28uY3BwJywgaW89Y29kZWNz
KToKKyAgICAgICAgYmFzaWNfZXJyb3JfcnVsZXMgPSAoJy0nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnK3J1bnRpbWUvY2FzdGluZycpCisgICAgICAgIHVuaXRfdGVzdF9jb25maWcg
PSB7Y3BwX3N0eWxlLklOQ0xVREVfSU9fSU5KRUNUSU9OX0tFWTogaW99CisgICAgICAgIHJldHVy
biBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVsZXMsIHVu
aXRfdGVzdF9jb25maWcpCisKICAgICAjIFBlcmZvcm0gbGludCBhbmQgY29tcGFyZSB0aGUgZXJy
b3IgbWVzc2FnZSB3aXRoICJleHBlY3RlZF9tZXNzYWdlIi4KICAgICBkZWYgYXNzZXJ0X2xpbnQo
c2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSwgZmlsZV9uYW1lPSdmb28uY3BwJyk6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX3Npbmds
ZV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKQEAgLTc2NCwxMyArNzcwLDI0IEBAIGNsYXNz
IENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGFu
Z3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLCBzdGF0ZW1lbnQsIGVycm9yX21lc3NhZ2UpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsIHN0YXRlbWVu
dCwgZXJyb3JfbWVzc2FnZSkKIAotICAgICMgVGVzdCBmb3Igc3RhdGljX2Nhc3QgcmVhZGFiaWxp
dHkuCi0gICAgZGVmIHRlc3Rfc3RhdGljX2Nhc3RfcmVhZGFiaWxpdHkoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnVGV4dCogeCA9IHN0YXRpY19jYXN0PFRl
eHQqPihmb28pOycsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgdG9UZXh0IGhlbHBlciBm
dW5jdGlvbiBpbiBXZWJDb3JlL2RvbS9UZXh0LmggJwotICAgICAgICAgICAgJ2luc3RlYWQgb2Yg
c3RhdGljX2Nhc3Q8VGV4dCo+JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBb
NF0nKQorICAgICMgVGVzdHMgZm9yIHN0YXRpY19jYXN0IHJlYWRhYmlsaXR5LgorICAgIGRlZiB0
ZXN0X3N0YXRpY19jYXN0X29uX29iamVjdHNfd2l0aF90b0ZvbyhzZWxmKToKKyAgICAgICAgbW9j
a19oZWFkZXJfY29udGVudHMgPSBbJ2lubGluZSBGb28qIHRvRm9vKEJhciogYmFyKSddCisgICAg
ICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1fYXZvaWRfc3RhdGljX2Nhc3Rfb2Zfb2JqZWN0cygK
KyAgICAgICAgICAgICdGb28qIHggPSBzdGF0aWNfY2FzdDxGb28qPihiYXIpOycsCisgICAgICAg
ICAgICBmaWxlbmFtZT0nY2FzdGluZy5jcHAnLAorICAgICAgICAgICAgaW89TW9ja0lvKG1vY2tf
aGVhZGVyX2NvbnRlbnRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlLCAnQ2Fz
dGluZyBvZiBhbiBvYmplY3QgdG8gaXRzIHJlbGF0ZWQgdHlwZW5hbWUgdXNpbmcgc3RhdGljX2Nh
c3QgaXMgcHJvaGliaXRlZC4gVXNlIHRvRm9vIGRlZmluZWQgaW4gRm9vLmguJworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScpCisKKyAg
ICBkZWYgdGVzdF9zdGF0aWNfY2FzdF9vbl9vYmplY3RzX3dpdGhvdXRfdG9Gb28oc2VsZik6Cisg
ICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWydpbmxpbmUgRm9vQmFyKiB0b0Zvb0JhcihC
YXIqIGJhciknXQorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2F2b2lkX3N0YXRpY19j
YXN0X29mX29iamVjdHMoCisgICAgICAgICAgICAnRm9vKiB4ID0gc3RhdGljX2Nhc3Q8Rm9vKj4o
YmFyKTsnLAorICAgICAgICAgICAgZmlsZW5hbWU9J2Nhc3RpbmcuY3BwJywKKyAgICAgICAgICAg
IGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9jb250ZW50cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobWVzc2FnZSwgJ0Nhc3Rpbmcgb2YgYW4gb2JqZWN0IHRvIGl0cyByZWxhdGVkIHR5cGVuYW1l
IHVzaW5nIHN0YXRpY19jYXN0IGlzIHByb2hpYml0ZWQuIEFkZCB0b0ZvbyBpbiBGb28uaCBhbmQg
dXNlIGl0IGluc3RlYWQuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIFty
dW50aW1lL2Nhc3RpbmddIFs0XScpCiAKICAgICAjIFdlIGNhbm5vdCB0ZXN0IHRoaXMgZnVuY3Rp
b25hbGl0eSBiZWNhdXNlIG9mIGRpZmZlcmVuY2Ugb2YKICAgICAjIGZ1bmN0aW9uIGRlZmluaXRp
b25zLiAgQW55d2F5LCB3ZSBtYXkgbmV2ZXIgZW5hYmxlIHRoaXMuCg==
</data>
<flag name="review"
          id="235568"
          type_id="1"
          status="-"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>