<?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>61345</bug_id>
          
          <creation_ts>2011-05-23 23:21:07 -0700</creation_ts>
          <short_desc>lazily init ResourceResponse suggested filename.</short_desc>
          <delta_ts>2011-05-26 18:41:09 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>61445</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephanie Lewis">slewis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>ggaren</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408675</commentid>
    <comment_count>0</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-23 23:21:07 -0700</bug_when>
    <thetext>lazily init ResourceResponse suggested filename.   Reading it in causes us to read in and parse a plist so put off setting it until we need it.  Part of &lt;rdar://problem/8675177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408680</commentid>
    <comment_count>1</comment_count>
      <attachid>94572</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-23 23:31:48 -0700</bug_when>
    <thetext>Created attachment 94572
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408683</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-23 23:34:11 -0700</bug_when>
    <thetext>Attachment 94572 did not pass style-queue:

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

Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:136:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 6 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>409199</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 14:17:38 -0700</bug_when>
    <thetext>Stephanie, why did you r- this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409244</commentid>
    <comment_count>4</comment_count>
      <attachid>94700</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-24 15:08:48 -0700</bug_when>
    <thetext>Created attachment 94700
patch

Bad window copy/paste.  New patch attached</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409252</commentid>
    <comment_count>5</comment_count>
      <attachid>94700</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-05-24 15:13:50 -0700</bug_when>
    <thetext>Comment on attachment 94700
patch

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

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:136
&gt;          Uninitialized,
&gt;          CommonFieldsOnly,
&gt; -        AllFields
&gt; +        AllHeaderFields,
&gt; +        SuggestedFilename

If I understand the patch correctly, SuggestedFilename actually initializes everything. I think that it should be named accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409260</commentid>
    <comment_count>6</comment_count>
      <attachid>94700</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-24 15:21:41 -0700</bug_when>
    <thetext>Comment on attachment 94700
patch

I agree with ap -- better names would help indicate that each successive level of the enum is inclusive of previous levels. I&apos;d suggest:

        CommonFields,
        CommonAndUncommonFields,
        AllFields

r=me with that change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409308</commentid>
    <comment_count>7</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-24 16:48:21 -0700</bug_when>
    <thetext>committed http://trac.webkit.org/changeset/87229 with suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409310</commentid>
    <comment_count>8</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-24 16:52:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/9497562&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409647</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-25 08:13:47 -0700</bug_when>
    <thetext>This caused lots of tests to start crashing on Windows. See bug 61439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409813</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-25 12:09:38 -0700</bug_when>
    <thetext>Should we roll out the change, or is there a better way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409827</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-25 12:23:42 -0700</bug_when>
    <thetext>I rolled out the change in r87301, since fixing the bug correctly seems a little tricky. See bug 61439 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410615</commentid>
    <comment_count>12</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-26 11:13:55 -0700</bug_when>
    <thetext>Copying some comments over from the bug about the crashes

Comment #7 From Brady Eidson 2011-05-25 08:47:29 PST (-) [reply]
(In reply to comment #6)
&gt; m_isNull was added in &lt;http://trac.webkit.org/changeset/18586&gt;. At that point it seemed to represent whether the underlying NSURLResponse was null.
&gt; 
&gt; &lt;http://trac.webkit.org/changeset/24372&gt; seems to have introduced the other meaning, where it was possible for m_isNull to be false even though there was no underlying NSURLResponse.

24372&apos;s change seems like a mistake.  The original purpose of &quot;m_isNull&quot; is to track whether the platform response is null, and it&apos;s somewhat apparent the class most uses it that way internally - except for this exception.

When this is fixed, the patch should take the opportunity to rename m_isNull to m_isPlatformResponseNull so that type of mistake would be more obvious in the future.


Comment #10 From Stephanie Lewis 2011-05-25 15:48:51 PST (-) [reply]
I agree with Brady in ResourceResponseBase m_inNull means some fields have been initialized.  In ResourceResponseCFNet and ResourceResponseMac m_isNull means that the platform is null.  Unfortunately ResourceResponseBase exposes m_isNull to other places with an isNull() call so the first definition has spread. 

It seems like it would be easier to make ResourceResponse adopt ResourceResponseBase&apos;s idea of isNull than to revert back to the original meaning, or we could add a flag to ResourceResponse to stand for platform is null.


Comment #11 From Stephanie Lewis 2011-05-25 16:25:07 PST (-) [reply]
m_isNull is only used in the platform sense in 4 places 
a) and b) when initializing a ResourceResponse.  I think it is Ok to set a ResourceResponse as not null if it has a platform base so nothing changes
c)  when returning the platform response.  This already checks whether the platform response exists so no change
d) when initializing.  Where I got into trouble.  There is even an ASSERT here that says if we are null we should also not have a response.  If it had gone the other way I would have caught the crash earlier :( (if we aren&apos;t null, do we have a platform response?)  Either way,  adding a check here for the platform response should fix the bug.

Working up a patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410628</commentid>
    <comment_count>13</comment_count>
      <attachid>95009</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-26 11:27:28 -0700</bug_when>
    <thetext>Created attachment 95009
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410935</commentid>
    <comment_count>14</comment_count>
      <attachid>95009</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-26 15:42:08 -0700</bug_when>
    <thetext>Comment on attachment 95009
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411059</commentid>
    <comment_count>15</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-05-26 18:41:09 -0700</bug_when>
    <thetext>committed http://trac.webkit.org/projects/webkit/changeset/87460</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94572</attachid>
            <date>2011-05-23 23:31:48 -0700</date>
            <delta_ts>2011-05-24 15:08:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>suggestedFilename.patch</filename>
            <type>text/plain</type>
            <size>14184</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MTIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDUtMjMgIFN0ZXBoYW5p
ZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxMzQ1CisgICAgICAgIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzg2NzUxNzc+CisgICAg
ICAgIERvbid0IGluaXRpYWxpemUgUmVzb3VyY2VSZXNwb25zZS5tX3N1Z2dlc3RlZEZpbGVuYW1l
IHVudGlsIHdlIHdhbnQgdG8gdXNlIGl0LiAgSW5pdGlhbGl6aW5nIGl0IHJlcXVpcmVzIHJlYWRp
bmcgaW4gYW5kIHBhcnNpbmcgYSBwbGlzdC4gIAorICAgICAgICBSZW5hbWUgQWxsRmllbGRzIHRv
IEFsbEhlYWRlckZpZWxkcyB0byBiZXR0ZXIgbWF0Y2ggdGhlIHByb2dyYW0gZmxvdy4KKyAgICAg
ICAgQWRkICJDb250ZW50LVR5cGUiIHRvIGNvbW1vbiBoZWFkZXJzIHNpbmNlIGl0IGlzIHRvdWNo
ZWQgYnkgZXZlcnkgQ1NTIHNoZWV0IGxvYWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgZnVuY3Rpb25hbGl0eSBoYXMgbm90IGNoYW5nZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RNb2RpZmllZERhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZERhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Ondhc0NhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGlvblJldXNlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvblJl
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGlv
bklEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRDb25uZWN0
aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNl
TG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
UmVzb3VyY2VMb2FkVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpS
ZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdCk6CisKIDIwMTEtMDUtMjMgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiA4NzAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNyArMTA4LDcgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJl
cwogICAgIHJlc3BvbnNlLT5zZXRIVFRQU3RhdHVzQ29kZShkYXRhLT5tX2h0dHBTdGF0dXNDb2Rl
KTsKICAgICByZXNwb25zZS0+c2V0SFRUUFN0YXR1c1RleHQoZGF0YS0+bV9odHRwU3RhdHVzVGV4
dCk7CiAKLSAgICByZXNwb25zZS0+bGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICByZXNwb25zZS0+
bGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmll
bGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsKICAgICByZXNwb25zZS0+
c2V0TGFzdE1vZGlmaWVkRGF0ZShkYXRhLT5tX2xhc3RNb2RpZmllZERhdGUpOwogICAgIHJlc3Bv
bnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcucmVs
ZWFzZSgpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNldFRleHRFbmNvZGkKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQog
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdAogewotICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOworICAgIGxhenlJbml0KFN1
Z2dlc3RlZEZpbGVuYW1lKTsKIAogICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7Ci0gICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7
CisgICAgbGF6eUluaXQoU3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIG1faXNOdWxsID0gZmFsc2U7
CiAKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkTmFtZTsgCkBAIC0yMzQsMTQg
KzIzNCwxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzCiAKIGNv
bnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNUZXh0KCkgY29uc3Qg
CiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVs
ZHMpOwogCiAgICAgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IAogfQogCiB2b2lkIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQp
IAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVhZGVyRmll
bGRzKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQgPSBzdGF0dXNUZXh0OyAKIH0KQEAgLTI1NSw3
ICsyNTUsNyBAQCBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGCiAgICAg
aWYgKCF2YWx1ZS5pc0VtcHR5KCkpICAgICAgICAKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0g
ICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwog
CiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7IAogfQpAQCAtMjY5LDE0
ICsyNjksMTQgQEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRgogICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBsYXp5
SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZpZWxkcyk7CiAKICAgICBy
ZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBs
YXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGFnZUhlYWRlciwgKCJhZ2UiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhY2hlQ29udHJvbEhlYWRlciwgKCJjYWNoZS1jb250
cm9sIikpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNl
dEhUVFBIZWFkZXIKIAogY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6
Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7Cisg
ICAgbGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHM7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpsYXN0TW9kaWZpZQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQo
KSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVh
ZGVyRmllbGRzKTsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBoZWFkZXJOYW1lLCAoImNvbnRlbnQtZGlzcG9zaXRpb24iKSk7CiAgICAgU3RyaW5nIHZhbHVl
ID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChoZWFkZXJOYW1lKTsKQEAgLTQ3OCwyMSArNDc4LDIx
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgKICAgCiB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0TW9kaWZp
ZWREYXRlKQogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVh
ZGVyRmllbGRzKTsKIAogICAgIG1fbGFzdE1vZGlmaWVkRGF0ZSA9IGxhc3RNb2RpZmllZERhdGU7
CiB9CiAKIHRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNv
bnN0CiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJG
aWVsZHMpOwogCiAgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAogYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6d2FzQ2FjaGVkKCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxG
aWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV93
YXNDYWNoZWQ7CiB9CkBAIC01MDQsNTYgKzUwNCw1NiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpzZXRXYXNDYWNoZWQoCiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rp
b25SZXVzZWQoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUlu
aXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2Nvbm5lY3Rpb25SZXVzZWQ7CiB9
CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb25SZXVzZWQoYm9vbCBj
b25uZWN0aW9uUmV1c2VkKQogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUlu
aXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIG1fY29ubmVjdGlvblJldXNlZCA9IGNvbm5lY3Rp
b25SZXVzZWQ7CiB9CiAKIHVuc2lnbmVkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9u
SUQoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxs
SGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2Nvbm5lY3Rpb25JRDsKIH0KIAogdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkIGNvbm5lY3Rpb25J
RCkKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZp
ZWxkcyk7CiAKICAgICBtX2Nvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25JRDsKIH0KIAogUmVzb3Vy
Y2VMb2FkVGltaW5nKiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRl
ckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRUaW1pbmcuZ2V0KCk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhQYXNzUmVm
UHRyPFJlc291cmNlTG9hZFRpbWluZz4gcmVzb3VyY2VMb2FkVGltaW5nKQogewotICAgIGxhenlJ
bml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIG1f
cmVzb3VyY2VMb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nOwogfQogCiBQYXNzUmVmUHRy
PFJlc291cmNlTG9hZEluZm8+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRJbmZv
KCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhl
YWRlckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRJbmZvLmdldCgpOwogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRJbmZvKFBhc3NSZWZQ
dHI8UmVzb3VyY2VMb2FkSW5mbz4gbG9hZEluZm8pCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwogCiAgICAgbV9yZXNvdXJjZUxvYWRJ
bmZvID0gbG9hZEluZm87CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiA4NzAyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw4IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIElu
aXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAgICAgIENvbW1vbkZpZWxkc09u
bHksCi0gICAgICAgIEFsbEZpZWxkcworICAgICAgICBBbGxIZWFkZXJGaWVsZHMsCisgICAgICAg
IFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAgfTsKIAogICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gODcwMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDog
cHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKCkKLSAgICAgICAgOiBtX2luaXRMZXZlbChBbGxGaWVsZHMpCisgICAgICAgIDogbV9pbml0
TGV2ZWwoQWxsSGVhZGVyRmllbGRzKQogICAgIHsKICAgICB9CiAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogCiAgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291
cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2Rp
bmdOYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgLCBtX2luaXRMZXZlbChBbGxGaWVsZHMpCisgICAg
ICAgICwgbV9pbml0TGV2ZWwoQWxsSGVhZGVyRmllbGRzKQogICAgIHsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDg3MDI4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNb
XSA9IHsKLSAgICBDRlNUUigiQWdlIiksIENGU1RSKCJDYWNoZS1Db250cm9sIiksIENGU1RSKCJE
YXRlIiksIENGU1RSKCJFdGFnIiksIENGU1RSKCJFeHBpcmVzIiksIENGU1RSKCJMYXN0LU1vZGlm
aWVkIiksIENGU1RSKCJQcmFnbWEiKQorICAgIENGU1RSKCJBZ2UiKSwgQ0ZTVFIoIkNhY2hlLUNv
bnRyb2wiKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBDRlNUUigiRGF0ZSIpLCBDRlNUUigiRXRh
ZyIpLCBDRlNUUigiRXhwaXJlcyIpLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiUHJh
Z21hIikKIH07CiBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1vbkhlYWRlckZpZWxkcyA9IHNpemVv
Zihjb21tb25IZWFkZXJGaWVsZHMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKTsKIApAQCAtOTksNyAr
OTksNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgICAg
IG1fbGFzdE1vZGlmaWVkRGF0ZSA9IHRvVGltZVQoQ0ZVUkxSZXNwb25zZUdldExhc3RNb2RpZmll
ZERhdGUobV9jZlJlc3BvbnNlLmdldCgpKSk7CiAKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdWdnZXN0ZWRGaWxlbmFtZShBZG9wdENGLCBDRlVSTFJlc3BvbnNlQ29weVN1Z2dlc3Rl
ZEZpbGVuYW1lKG1fY2ZSZXNwb25zZS5nZXQoKSkpOwotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVu
YW1lID0gc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCk7CiAKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJl
ZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKG1fY2ZSZXNwb25z
ZS5nZXQoKSk7CiAgICAgICAgIGlmIChodHRwUmVzcG9uc2UpIHsKQEAgLTExNiw3ICsxMTUsNyBA
QCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgICAgICAgICBt
X2h0dHBTdGF0dXNDb2RlID0gMDsKICAgICB9CiAKLSAgICBpZiAobV9pbml0TGV2ZWwgPCBBbGxG
aWVsZHMgJiYgaW5pdExldmVsID49IEFsbEZpZWxkcykgeworICAgIGlmIChtX2luaXRMZXZlbCA8
IEFsbEhlYWRlckZpZWxkcyAmJiBpbml0TGV2ZWwgPj0gQWxsSGVhZGVyRmllbGRzKSB7CiAgICAg
ICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBS
ZXNwb25zZShtX2NmUmVzcG9uc2UuZ2V0KCkpOwogICAgICAgICBpZiAoaHR0cFJlc3BvbnNlKSB7
CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0YXR1c0xpbmUoQWRvcHRDRiwg
Q0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoaHR0cFJlc3BvbnNlKSk7CkBAIC0x
MzEsNiArMTMwLDEwIEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgK
ICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlz
W2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKICAgICAgICAgfQogICAgIH0KKyAgICAKKyAg
ICBpZiAobV9pbml0TGV2ZWwgPCBTdWdnZXN0ZWRGaWxlbmFtZSAmJiBpbml0TGV2ZWwgPj0gU3Vn
Z2VzdGVkRmlsZW5hbWUpIHsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3Rl
ZEZpbGVuYW1lLmdldCgpOworICAgIH0KIAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNw
b25zZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiA4NzAyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoTlNUaW1lSW50ZXJ2YWwpX2NhbGN1bGF0ZWRF
eHBpcmF0aW9uOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0
IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewotICAgIEAiQWdlIiwgQCJDYWNoZS1Db250cm9sIiwg
QCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEi
CisgICAgQCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIs
IEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAiTGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgogfTsKIHN0
YXRpYyBjb25zdCBpbnQgbnVtQ29tbW9uSGVhZGVyRmllbGRzID0gc2l6ZW9mKGNvbW1vbkhlYWRl
ckZpZWxkcykgLyBzaXplb2YoQXRvbWljU3RyaW5nKik7CiAKQEAgLTg4LDggKzg4LDYgQEAgdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgICAgICBpZiAodGV4dEVu
Y29kaW5nTmFtZUxlbmd0aCA+PSAyICYmIG1fdGV4dEVuY29kaW5nTmFtZVswVV0gPT0gJyInICYm
IG1fdGV4dEVuY29kaW5nTmFtZVt0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMV0gPT0gJyInKQog
ICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gbV90ZXh0RW5jb2RpbmdOYW1lLnN1YnN0
cmluZygxLCB0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMik7CiAKLSAgICAgICAgbV9zdWdnZXN0
ZWRGaWxlbmFtZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwotCiAg
ICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJl
c3BvbnNlIGNsYXNzXV0pIHsKICAgICAgICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVz
cG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7CiAKQEAgLTEw
NywyMyArMTA1LDI5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgK
ICAgICAgICAgW3Bvb2wgZHJhaW5dOwogICAgIH0KIAotICAgIGlmIChtX2luaXRMZXZlbCA8IEFs
bEZpZWxkcyAmJiBpbml0TGV2ZWwgPj0gQWxsRmllbGRzICYmIFttX25zUmVzcG9uc2UuZ2V0KCkg
aXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewotICAgICAgICBOU0F1
dG9yZWxlYXNlUG9vbCogcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwor
ICAgIGlmIChtX2luaXRMZXZlbCA8IEFsbEhlYWRlckZpZWxkcyAmJiBpbml0TGV2ZWwgPj0gQWxs
SGVhZGVyRmllbGRzKSB7CisgICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9m
Q2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIE5TQXV0b3Jl
bGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CiAKLSAg
ICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25z
ZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKKyAgICAgICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpo
dHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7CiAK
LSAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBodHRwU3RhdHVzTGluZShBZG9wdE5TLCB3a0Nv
cHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZShtX25zUmVzcG9uc2UuZ2V0KCkpKTsKLSAgICAgICAg
aWYgKGh0dHBTdGF0dXNMaW5lKQotICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4dCA9IGV4dHJh
Y3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUuZ2V0KCkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gIk9LIjsKKyAgICAg
ICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gaHR0cFN0YXR1c0xpbmUoQWRvcHROUywgd2tDb3B5
TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUobV9uc1Jlc3BvbnNlLmdldCgpKSk7CisgICAgICAgICAg
ICBpZiAoaHR0cFN0YXR1c0xpbmUpCisgICAgICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4dCA9
IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUuZ2V0
KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faHR0cFN0YXR1c1RleHQg
PSAiT0siOwogCi0gICAgICAgIE5TRGljdGlvbmFyeSAqaGVhZGVycyA9IFtodHRwUmVzcG9uc2Ug
YWxsSGVhZGVyRmllbGRzXTsKLSAgICAgICAgTlNFbnVtZXJhdG9yICplID0gW2hlYWRlcnMga2V5
RW51bWVyYXRvcl07Ci0gICAgICAgIHdoaWxlIChOU1N0cmluZyAqbmFtZSA9IFtlIG5leHRPYmpl
Y3RdKQotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCBbaGVhZGVycyBv
YmplY3RGb3JLZXk6bmFtZV0pOwotICAgICAgICAKLSAgICAgICAgW3Bvb2wgZHJhaW5dOworICAg
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJzID0gW2h0dHBSZXNwb25zZSBhbGxIZWFkZXJG
aWVsZHNdOworICAgICAgICAgICAgTlNFbnVtZXJhdG9yICplID0gW2hlYWRlcnMga2V5RW51bWVy
YXRvcl07CisgICAgICAgICAgICB3aGlsZSAoTlNTdHJpbmcgKm5hbWUgPSBbZSBuZXh0T2JqZWN0
XSkKKyAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KG5hbWUsIFtoZWFkZXJz
IG9iamVjdEZvcktleTpuYW1lXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFtwb29sIGRy
YWluXTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgCisgICAgaWYgKG1faW5pdExldmVsIDwgU3Vn
Z2VzdGVkRmlsZW5hbWUgJiYgaW5pdExldmVsID49IFN1Z2dlc3RlZEZpbGVuYW1lKSB7CisgICAg
ICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIHN1Z2dlc3RlZEZp
bGVuYW1lXTsKICAgICB9CiAKICAgICBtX2luaXRMZXZlbCA9IGluaXRMZXZlbDsK
</data>
<flag name="review"
          id="87885"
          type_id="1"
          status="-"
          setter="slewis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94700</attachid>
            <date>2011-05-24 15:08:48 -0700</date>
            <delta_ts>2011-05-26 11:27:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>suggestedFilename.patch</filename>
            <type>text/plain</type>
            <size>14384</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MTIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDUtMjMgIFN0ZXBoYW5p
ZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxMzQ1CisgICAgICAgIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzg2NzUxNzc+CisgICAg
ICAgIERvbid0IGluaXRpYWxpemUgUmVzb3VyY2VSZXNwb25zZS5tX3N1Z2dlc3RlZEZpbGVuYW1l
IHVudGlsIHdlIHdhbnQgdG8gdXNlIGl0LiAgSW5pdGlhbGl6aW5nIGl0IHJlcXVpcmVzIHJlYWRp
bmcgaW4gYW5kIHBhcnNpbmcgYSBwbGlzdC4gIAorICAgICAgICBSZW5hbWUgQWxsRmllbGRzIHRv
IEFsbEhlYWRlckZpZWxkcyB0byBiZXR0ZXIgbWF0Y2ggdGhlIHByb2dyYW0gZmxvdy4KKyAgICAg
ICAgQWRkICJDb250ZW50LVR5cGUiIHRvIGNvbW1vbiBoZWFkZXJzIHNpbmNlIGl0IGlzIHRvdWNo
ZWQgYnkgZXZlcnkgQ1NTIHNoZWV0IGxvYWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1
c2UgZnVuY3Rpb25hbGl0eSBoYXMgbm90IGNoYW5nZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RNb2RpZmllZERhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZERhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Ondhc0NhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGlvblJldXNlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvblJl
dXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29ubmVjdGlv
bklEKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRDb25uZWN0
aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNl
TG9hZFRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0
UmVzb3VyY2VMb2FkVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjpyZXNvdXJjZUxvYWRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpS
ZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdCk6CisKIDIwMTEtMDUtMjMgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lvbiA4NzAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDgsNyArMTA4LDcgQEAgUGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJl
cwogICAgIHJlc3BvbnNlLT5zZXRIVFRQU3RhdHVzQ29kZShkYXRhLT5tX2h0dHBTdGF0dXNDb2Rl
KTsKICAgICByZXNwb25zZS0+c2V0SFRUUFN0YXR1c1RleHQoZGF0YS0+bV9odHRwU3RhdHVzVGV4
dCk7CiAKLSAgICByZXNwb25zZS0+bGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICByZXNwb25zZS0+
bGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKICAgICByZXNwb25zZS0+bV9odHRwSGVhZGVyRmll
bGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsKICAgICByZXNwb25zZS0+
c2V0TGFzdE1vZGlmaWVkRGF0ZShkYXRhLT5tX2xhc3RNb2RpZmllZERhdGUpOwogICAgIHJlc3Bv
bnNlLT5zZXRSZXNvdXJjZUxvYWRUaW1pbmcoZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmcucmVs
ZWFzZSgpKTsKQEAgLTIwNSwxNCArMjA1LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNldFRleHRFbmNvZGkKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQog
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdAogewotICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOworICAgIGxhenlJbml0KFN1
Z2dlc3RlZEZpbGVuYW1lKTsKIAogICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUpCiB7Ci0gICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7
CisgICAgbGF6eUluaXQoU3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIG1faXNOdWxsID0gZmFsc2U7
CiAKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkTmFtZTsgCkBAIC0yMzQsMTQg
KzIzNCwxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzCiAKIGNv
bnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNUZXh0KCkgY29uc3Qg
CiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVs
ZHMpOwogCiAgICAgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IAogfQogCiB2b2lkIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQp
IAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVhZGVyRmll
bGRzKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQgPSBzdGF0dXNUZXh0OyAKIH0KQEAgLTI1NSw3
ICsyNTUsNyBAQCBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGCiAgICAg
aWYgKCF2YWx1ZS5pc0VtcHR5KCkpICAgICAgICAKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0g
ICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwog
CiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7IAogfQpAQCAtMjY5LDE0
ICsyNjksMTQgQEAgU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRgogICAg
IGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBsYXp5
SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZpZWxkcyk7CiAKICAgICBy
ZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBs
YXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwogCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIGFnZUhlYWRlciwgKCJhZ2UiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNhY2hlQ29udHJvbEhlYWRlciwgKCJjYWNoZS1jb250
cm9sIikpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNl
dEhUVFBIZWFkZXIKIAogY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6
Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7Cisg
ICAgbGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJG
aWVsZHM7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpsYXN0TW9kaWZpZQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQo
KSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVh
ZGVyRmllbGRzKTsKIAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5n
LCBoZWFkZXJOYW1lLCAoImNvbnRlbnQtZGlzcG9zaXRpb24iKSk7CiAgICAgU3RyaW5nIHZhbHVl
ID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChoZWFkZXJOYW1lKTsKQEAgLTQ3OCwyMSArNDc4LDIx
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgKICAgCiB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0TW9kaWZp
ZWREYXRlKQogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVh
ZGVyRmllbGRzKTsKIAogICAgIG1fbGFzdE1vZGlmaWVkRGF0ZSA9IGxhc3RNb2RpZmllZERhdGU7
CiB9CiAKIHRpbWVfdCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkRGF0ZSgpIGNv
bnN0CiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJG
aWVsZHMpOwogCiAgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAogYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6d2FzQ2FjaGVkKCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxG
aWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV93
YXNDYWNoZWQ7CiB9CkBAIC01MDQsNTYgKzUwNCw1NiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpzZXRXYXNDYWNoZWQoCiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rp
b25SZXVzZWQoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUlu
aXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2Nvbm5lY3Rpb25SZXVzZWQ7CiB9
CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldENvbm5lY3Rpb25SZXVzZWQoYm9vbCBj
b25uZWN0aW9uUmV1c2VkKQogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUlu
aXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIG1fY29ubmVjdGlvblJldXNlZCA9IGNvbm5lY3Rp
b25SZXVzZWQ7CiB9CiAKIHVuc2lnbmVkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb25uZWN0aW9u
SUQoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxs
SGVhZGVyRmllbGRzKTsKIAogICAgIHJldHVybiBtX2Nvbm5lY3Rpb25JRDsKIH0KIAogdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbklEKHVuc2lnbmVkIGNvbm5lY3Rpb25J
RCkKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRlckZp
ZWxkcyk7CiAKICAgICBtX2Nvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb25JRDsKIH0KIAogUmVzb3Vy
Y2VMb2FkVGltaW5nKiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKCkg
Y29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhlYWRl
ckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRUaW1pbmcuZ2V0KCk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZFRpbWluZyhQYXNzUmVm
UHRyPFJlc291cmNlTG9hZFRpbWluZz4gcmVzb3VyY2VMb2FkVGltaW5nKQogewotICAgIGxhenlJ
bml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQWxsSGVhZGVyRmllbGRzKTsKIAogICAgIG1f
cmVzb3VyY2VMb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nOwogfQogCiBQYXNzUmVmUHRy
PFJlc291cmNlTG9hZEluZm8+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRJbmZv
KCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KEFsbEhl
YWRlckZpZWxkcyk7CiAKICAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRJbmZvLmdldCgpOwogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRJbmZvKFBhc3NSZWZQ
dHI8UmVzb3VyY2VMb2FkSW5mbz4gbG9hZEluZm8pCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRz
KTsKKyAgICBsYXp5SW5pdChBbGxIZWFkZXJGaWVsZHMpOwogCiAgICAgbV9yZXNvdXJjZUxvYWRJ
bmZvID0gbG9hZEluZm87CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiA4NzAyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw4IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIElu
aXRMZXZlbCB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAgICAgIENvbW1vbkZpZWxkc09u
bHksCi0gICAgICAgIEFsbEZpZWxkcworICAgICAgICBBbGxIZWFkZXJGaWVsZHMsCisgICAgICAg
IFN1Z2dlc3RlZEZpbGVuYW1lCiAgICAgfTsKIAogICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gODcwMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDog
cHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKCkKLSAgICAgICAgOiBtX2luaXRMZXZlbChBbGxGaWVsZHMpCisgICAgICAgIDogbV9pbml0
TGV2ZWwoQWxsSGVhZGVyRmllbGRzKQogICAgIHsKICAgICB9CiAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogCiAgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291
cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2Rp
bmdOYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgLCBtX2luaXRMZXZlbChBbGxGaWVsZHMpCisgICAg
ICAgICwgbV9pbml0TGV2ZWwoQWxsSGVhZGVyRmllbGRzKQogICAgIHsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDg3MDI4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBDRlN0cmluZ1JlZiBjb25zdCBjb21tb25IZWFkZXJGaWVsZHNb
XSA9IHsKLSAgICBDRlNUUigiQWdlIiksIENGU1RSKCJDYWNoZS1Db250cm9sIiksIENGU1RSKCJE
YXRlIiksIENGU1RSKCJFdGFnIiksIENGU1RSKCJFeHBpcmVzIiksIENGU1RSKCJMYXN0LU1vZGlm
aWVkIiksIENGU1RSKCJQcmFnbWEiKQorICAgIENGU1RSKCJBZ2UiKSwgQ0ZTVFIoIkNhY2hlLUNv
bnRyb2wiKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBDRlNUUigiRGF0ZSIpLCBDRlNUUigiRXRh
ZyIpLCBDRlNUUigiRXhwaXJlcyIpLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiUHJh
Z21hIikKIH07CiBzdGF0aWMgY29uc3QgaW50IG51bUNvbW1vbkhlYWRlckZpZWxkcyA9IHNpemVv
Zihjb21tb25IZWFkZXJGaWVsZHMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKTsKIApAQCAtOTgsOSAr
OTgsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAKICAgICAg
ICAgbV9sYXN0TW9kaWZpZWREYXRlID0gdG9UaW1lVChDRlVSTFJlc3BvbnNlR2V0TGFzdE1vZGlm
aWVkRGF0ZShtX2NmUmVzcG9uc2UuZ2V0KCkpKTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHN1Z2dlc3RlZEZpbGVuYW1lKEFkb3B0Q0YsIENGVVJMUmVzcG9uc2VDb3B5U3VnZ2Vz
dGVkRmlsZW5hbWUobV9jZlJlc3BvbnNlLmdldCgpKSk7Ci0gICAgICAgIG1fc3VnZ2VzdGVkRmls
ZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKTsKLQogICAgICAgICBDRkhUVFBNZXNzYWdl
UmVmIGh0dHBSZXNwb25zZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UobV9jZlJlc3Bv
bnNlLmdldCgpKTsKICAgICAgICAgaWYgKGh0dHBSZXNwb25zZSkgewogICAgICAgICAgICAgbV9o
dHRwU3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cFJl
c3BvbnNlKTsKQEAgLTExNiw3ICsxMTMsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoCiAgICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2RlID0gMDsKICAgICB9CiAK
LSAgICBpZiAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMgJiYgaW5pdExldmVsID49IEFsbEZpZWxk
cykgeworICAgIGlmIChtX2luaXRMZXZlbCA8IEFsbEhlYWRlckZpZWxkcyAmJiBpbml0TGV2ZWwg
Pj0gQWxsSGVhZGVyRmllbGRzKSB7CiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3Bv
bnNlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShtX2NmUmVzcG9uc2UuZ2V0KCkpOwog
ICAgICAgICBpZiAoaHR0cFJlc3BvbnNlKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHN0YXR1c0xpbmUoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1
c0xpbmUoaHR0cFJlc3BvbnNlKSk7CkBAIC0xMzEsNiArMTI4LDExIEBAIHZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsK
ICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBTdWdnZXN0ZWRG
aWxlbmFtZSAmJiBpbml0TGV2ZWwgPj0gU3VnZ2VzdGVkRmlsZW5hbWUpIHsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBzdWdnZXN0ZWRGaWxlbmFtZShBZG9wdENGLCBDRlVSTFJlc3Bv
bnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKG1fY2ZSZXNwb25zZS5nZXQoKSkpOworICAgICAgICBt
X3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCk7CisgICAgfQogCiAg
ICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0J
KHJldmlzaW9uIDg3MDI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCAt
IChOU1RpbWVJbnRlcnZhbClfY2FsY3VsYXRlZEV4cGlyYXRpb247CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBOU1N0cmluZyogY29uc3QgY29tbW9uSGVhZGVyRmllbGRzW10gPSB7Ci0g
ICAgQCJBZ2UiLCBAIkNhY2hlLUNvbnRyb2wiLCBAIkRhdGUiLCBAIkV0YWciLCBAIkV4cGlyZXMi
LCBAIkxhc3QtTW9kaWZpZWQiLCBAIlByYWdtYSIKKyAgICBAIkFnZSIsIEAiQ2FjaGUtQ29udHJv
bCIsIEAiQ29udGVudC1UeXBlIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBpcmVzIiwgQCJMYXN0
LU1vZGlmaWVkIiwgQCJQcmFnbWEiCiB9Owogc3RhdGljIGNvbnN0IGludCBudW1Db21tb25IZWFk
ZXJGaWVsZHMgPSBzaXplb2YoY29tbW9uSGVhZGVyRmllbGRzKSAvIHNpemVvZihBdG9taWNTdHJp
bmcqKTsKIApAQCAtODgsOCArODgsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQoCiAgICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoID49IDIgJiYgbV90
ZXh0RW5jb2RpbmdOYW1lWzBVXSA9PSAnIicgJiYgbV90ZXh0RW5jb2RpbmdOYW1lW3RleHRFbmNv
ZGluZ05hbWVMZW5ndGggLSAxXSA9PSAnIicpCiAgICAgICAgICAgICBtX3RleHRFbmNvZGluZ05h
bWUgPSBtX3RleHRFbmNvZGluZ05hbWUuc3Vic3RyaW5nKDEsIHRleHRFbmNvZGluZ05hbWVMZW5n
dGggLSAyKTsKIAotICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gW21fbnNSZXNwb25zZS5n
ZXQoKSBzdWdnZXN0ZWRGaWxlbmFtZV07Ci0KICAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0
KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewogICAgICAgICAg
ICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAq
KW1fbnNSZXNwb25zZS5nZXQoKTsKIApAQCAtMTA3LDIzICsxMDUsMjkgQEAgdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgICAgICBbcG9vbCBkcmFpbl07CiAgICAg
fQogCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRMZXZlbCA+PSBBbGxG
aWVsZHMgJiYgW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNw
b25zZSBjbGFzc11dKSB7Ci0gICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1
dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgaWYgKG1faW5pdExldmVsIDwgQWxsSGVh
ZGVyRmllbGRzICYmIGluaXRMZXZlbCA+PSBBbGxIZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgaWYg
KFttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xh
c3NdXSkgeworICAgICAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3Jl
bGVhc2VQb29sIGFsbG9jXSBpbml0XTsKIAotICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0
cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpOworICAg
ICAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNw
b25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IGh0dHBTdGF0dXNMaW5lKEFkb3B0TlMsIHdrQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKG1f
bnNSZXNwb25zZS5nZXQoKSkpOwotICAgICAgICBpZiAoaHR0cFN0YXR1c0xpbmUpCi0gICAgICAg
ICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVz
TGluZShodHRwU3RhdHVzTGluZS5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
aHR0cFN0YXR1c1RleHQgPSAiT0siOworICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBo
dHRwU3RhdHVzTGluZShBZG9wdE5TLCB3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZShtX25z
UmVzcG9uc2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChodHRwU3RhdHVzTGluZSkKKyAgICAg
ICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQ
U3RhdHVzTGluZShodHRwU3RhdHVzTGluZS5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4dCA9ICJPSyI7CiAKLSAgICAgICAgTlNEaWN0aW9u
YXJ5ICpoZWFkZXJzID0gW2h0dHBSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdOwotICAgICAgICBO
U0VudW1lcmF0b3IgKmUgPSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKLSAgICAgICAgd2hpbGUg
KE5TU3RyaW5nICpuYW1lID0gW2UgbmV4dE9iamVjdF0pCi0gICAgICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KG5hbWUsIFtoZWFkZXJzIG9iamVjdEZvcktleTpuYW1lXSk7Ci0gICAgICAg
IAotICAgICAgICBbcG9vbCBkcmFpbl07CisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmhlYWRl
cnMgPSBbaHR0cFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc107CisgICAgICAgICAgICBOU0VudW1l
cmF0b3IgKmUgPSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKKyAgICAgICAgICAgIHdoaWxlIChO
U1N0cmluZyAqbmFtZSA9IFtlIG5leHRPYmplY3RdKQorICAgICAgICAgICAgICAgIG1faHR0cEhl
YWRlckZpZWxkcy5zZXQobmFtZSwgW2hlYWRlcnMgb2JqZWN0Rm9yS2V5Om5hbWVdKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgW3Bvb2wgZHJhaW5dOworICAgICAgICB9CisgICAgfQorICAg
ICAKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBTdWdnZXN0ZWRGaWxlbmFtZSAmJiBpbml0TGV2ZWwg
Pj0gU3VnZ2VzdGVkRmlsZW5hbWUpIHsKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IFtt
X25zUmVzcG9uc2UuZ2V0KCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwogICAgIH0KIAogICAgIG1faW5p
dExldmVsID0gaW5pdExldmVsOwo=
</data>
<flag name="review"
          id="88040"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95009</attachid>
            <date>2011-05-26 11:27:28 -0700</date>
            <delta_ts>2011-05-26 15:42:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>suggested_filename2.patch</filename>
            <type>text/plain</type>
            <size>15847</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NDAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDUtMjYgIFN0ZXBoYW5p
ZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxMzQ1CisgICAgICAgIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzg2NzUxNzc+CisgICAg
ICAgIFJvbGwgYmFjayBpbiBub3cgdGhhdCB0aGUgQ3Jhc2hlcyBhcmUgZml4ZWQuICBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSBhbmQgUmVzb3VyY2VSZXNwb25zZSBoYWQgdHdvIGRpZmZlcmVudCBkZWZp
bml0aW9ucworICAgICAgICBmb3IgbV9pc051bGwuICBSZXNvdXJjZVJlc3BvbnNlIHRyZWF0cyBt
X2lzTnVsbCBhcyBtZWFuaW5nIHRoZXJlIGlzbid0IGFueSBwbGF0Zm9ybSBSZXNvdXJjZVJlc3Bv
bnNlLiAKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UgdHJlYXRzIG1faXNOdWxsIGFzIG1l
YW5pbmcgbm8gZmllbGRzIGhhdmUgYmVlbiBpbml0aWFsaXplZC4gIENvbnNvbGlkYXRlIGNhbGxz
IGludG8gUmVzb3VyY2VSZXNwb25zZUJhc2UgbWVhbmluZy4gCisKKyAgICAgICAgRG9uJ3QgaW5p
dGlhbGl6ZSBSZXNvdXJjZVJlc3BvbnNlLm1fc3VnZ2VzdGVkRmlsZW5hbWUgdW50aWwgd2Ugd2Fu
dCB0byB1c2UgaXQuICBJbml0aWFsaXppbmcgaXQgcmVxdWlyZXMgcmVhZGluZyBpbiBhbmQgcGFy
c2luZyBhIHBsaXN0LiAgCisgICAgICAgIEFkZCBuZXcgaW5pdGlhbGl6YXRpb24gc3RhdGUgQ29t
bW9uQW5kVW5jb21tb25GaWVsZHMgdG8gUmVzb3VyY2VSZXNwb25zZS4gIFRoaXMgd2lsbCBiZSBm
b3IgYWxsIHRoZSBoZWFkZXIgZmllbGRzLgorICAgICAgICBNb3ZlIHN1Z2dlc3RlZEZpbGVuYW1l
IGluaXRpYWxpemF0aW9uIHRvIEFsbEZpZWxkcyBzbyBpdCBpcyBuZXZlciBpbml0aWFsaXplZCB1
bmxlc3Mgd2UgYXNrIGZvciBpdC4gCisgICAgICAgIEFkZCAiQ29udGVudC1UeXBlIiB0byBjb21t
b24gaGVhZGVycyBzaW5jZSBpdCBpcyBsb29rZWQgZm9yIGJ5IGV2ZXJ5IENTUyBzaGVldCBsb2Fk
LgorCisgICAgICAgIE5vIG5ldyBmdW5jdGlvbmFsaXR5IHNvIG5vIG5ldyB0ZXN0cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQSGVhZGVy
RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFk
ZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TGFz
dE1vZGlmaWVkRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
bGFzdE1vZGlmaWVkRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6d2FzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpj
b25uZWN0aW9uUmV1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRDb25uZWN0aW9uUmV1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpjb25uZWN0aW9uSUQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldENvbm5lY3Rpb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6cmVzb3VyY2VMb2FkVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnJlc291cmNlTG9hZEluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZEluZm8pOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KToKKwogMjAxMS0wNS0yNiAgQW5kcmV5IEtv
c3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZm9sbG93
LXVwIHRvIHI4NzM5NSwgYWRkZWQgY2hlY2tzIHRvIGF2b2lkIGFjY2Vzc2luZyB1bmRlZmluZWQg
bWVtYmVyIGZvciBjZXJ0YWluIHRpbWVsaW5lIGV2ZW50cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
CShyZXZpc2lvbiA4NzMzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAg
UGFzc093blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNvdXJjZVJlcwogICAgIHJlc3BvbnNlLT5z
ZXRIVFRQU3RhdHVzQ29kZShkYXRhLT5tX2h0dHBTdGF0dXNDb2RlKTsKICAgICByZXNwb25zZS0+
c2V0SFRUUFN0YXR1c1RleHQoZGF0YS0+bV9odHRwU3RhdHVzVGV4dCk7CiAKLSAgICByZXNwb25z
ZS0+bGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICByZXNwb25zZS0+bGF6eUluaXQoQ29tbW9uQW5k
VW5jb21tb25GaWVsZHMpOwogICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQo
ZGF0YS0+bV9odHRwSGVhZGVycy5yZWxlYXNlKCkpOwogICAgIHJlc3BvbnNlLT5zZXRMYXN0TW9k
aWZpZWREYXRlKGRhdGEtPm1fbGFzdE1vZGlmaWVkRGF0ZSk7CiAgICAgcmVzcG9uc2UtPnNldFJl
c291cmNlTG9hZFRpbWluZyhkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZy5yZWxlYXNlKCkpOwpA
QCAtMjA1LDE0ICsyMDUsMTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VGV4dEVu
Y29kaQogLy8gRklYTUUgc2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUgZmx5CiBjb25zdCBTdHJp
bmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7Ci0g
ICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CisgICAgbGF6eUluaXQoQWxsRmllbGRzKTsK
IAogICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQogCiB2b2lkIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUpCiB7Ci0gICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CisgICAgbGF6eUluaXQoQWxs
RmllbGRzKTsKICAgICBtX2lzTnVsbCA9IGZhbHNlOwogCiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFt
ZSA9IHN1Z2dlc3RlZE5hbWU7IApAQCAtMjM0LDE0ICsyMzQsMTQgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1cwogCiBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0IAogewotICAgIGxhenlJbml0KEFsbEZpZWxk
cyk7CisgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCiAgICAgcmV0dXJu
IG1faHR0cFN0YXR1c1RleHQ7IAogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRI
VFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAogewotICAgIGxhenlJbml0
KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCiAg
ICAgbV9odHRwU3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7IAogfQpAQCAtMjU1LDcgKzI1NSw3IEBA
IFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckYKICAgICBpZiAoIXZhbHVl
LmlzRW1wdHkoKSkgICAgICAgIAogICAgICAgICByZXR1cm4gdmFsdWU7CiAKLSAgICBsYXp5SW5p
dChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAog
ICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KG5hbWUpOyAKIH0KQEAgLTI2OSwxNCAr
MjY5LDE0IEBAIFN0cmluZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckYKICAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgbGF6eUlu
aXQoQWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAK
ICAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChuYW1lKTsgCiB9CiAKIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsK
KyAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYWdlSGVhZGVyLCAoImFnZSIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY2FjaGVDb250cm9sSGVhZGVy
LCAoImNhY2hlLWNvbnRyb2wiKSk7CkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0SFRUUEhlYWRlcgogCiBjb25zdCBIVFRQSGVhZGVyTWFwJiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcygpIGNvbnN0CiB7Ci0gICAgbGF6eUluaXQo
QWxsRmllbGRzKTsKKyAgICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKICAg
ICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIGRvdWJs
ZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWUKIAogYm9vbCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMp
OworICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBoZWFkZXJOYW1lLCAoImNvbnRlbnQtZGlz
cG9zaXRpb24iKSk7CiAgICAgU3RyaW5nIHZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldCho
ZWFkZXJOYW1lKTsKQEAgLTQ3OCwyMSArNDc4LDIxIEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmlzQXR0YWNobWVudCgKICAgCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRMYXN0
TW9kaWZpZWREYXRlKHRpbWVfdCBsYXN0TW9kaWZpZWREYXRlKQogewotICAgIGxhenlJbml0KEFs
bEZpZWxkcyk7CisgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCiAgICAg
bV9sYXN0TW9kaWZpZWREYXRlID0gbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAogdGltZV90IFJlc291
cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIHsKLSAgICBsYXp5SW5p
dChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAog
ICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6Ondhc0NhY2hlZCgpIGNvbnN0CiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAg
ICBsYXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKICAgICByZXR1cm4gbV93YXND
YWNoZWQ7CiB9CkBAIC01MDQsNTYgKzUwNCw1NiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRXYXNDYWNoZWQoCiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbm5lY3Rpb25S
ZXVzZWQoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZpZWxkcyk7CisgICAgbGF6eUluaXQo
Q29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCiAgICAgcmV0dXJuIG1fY29ubmVjdGlvblJldXNl
ZDsKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvblJldXNlZChi
b29sIGNvbm5lY3Rpb25SZXVzZWQpCiB7Ci0gICAgbGF6eUluaXQoQWxsRmllbGRzKTsKKyAgICBs
YXp5SW5pdChDb21tb25BbmRVbmNvbW1vbkZpZWxkcyk7CiAKICAgICBtX2Nvbm5lY3Rpb25SZXVz
ZWQgPSBjb25uZWN0aW9uUmV1c2VkOwogfQogCiB1bnNpZ25lZCBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y29ubmVjdGlvbklEKCkgY29uc3QKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAg
IGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAogICAgIHJldHVybiBtX2Nvbm5l
Y3Rpb25JRDsKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0Q29ubmVjdGlvbklE
KHVuc2lnbmVkIGNvbm5lY3Rpb25JRCkKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAg
IGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAogICAgIG1fY29ubmVjdGlvbklE
ID0gY29ubmVjdGlvbklEOwogfQogCiBSZXNvdXJjZUxvYWRUaW1pbmcqIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpyZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdAogewotICAgIGxhenlJbml0KEFsbEZp
ZWxkcyk7CisgICAgbGF6eUluaXQoQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpOwogCiAgICAgcmV0
dXJuIG1fcmVzb3VyY2VMb2FkVGltaW5nLmdldCgpOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRSZXNvdXJjZUxvYWRUaW1pbmcoUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1p
bmc+IHJlc291cmNlTG9hZFRpbWluZykKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAg
IGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAogICAgIG1fcmVzb3VyY2VMb2Fk
VGltaW5nID0gcmVzb3VyY2VMb2FkVGltaW5nOwogfQogCiBQYXNzUmVmUHRyPFJlc291cmNlTG9h
ZEluZm8+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXNvdXJjZUxvYWRJbmZvKCkgY29uc3QKIHsK
LSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOworICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9u
RmllbGRzKTsKIAogICAgIHJldHVybiBtX3Jlc291cmNlTG9hZEluZm8uZ2V0KCk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFJlc291cmNlTG9hZEluZm8oUGFzc1JlZlB0cjxS
ZXNvdXJjZUxvYWRJbmZvPiBsb2FkSW5mbykKIHsKLSAgICBsYXp5SW5pdChBbGxGaWVsZHMpOwor
ICAgIGxhenlJbml0KENvbW1vbkFuZFVuY29tbW9uRmllbGRzKTsKIAogICAgIG1fcmVzb3VyY2VM
b2FkSW5mbyA9IGxvYWRJbmZvOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gODczMzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZW51
bSBJbml0TGV2ZWwgewogICAgICAgICBVbmluaXRpYWxpemVkLAogICAgICAgICBDb21tb25GaWVs
ZHNPbmx5LAorICAgICAgICBDb21tb25BbmRVbmNvbW1vbkZpZWxkcywKICAgICAgICAgQWxsRmll
bGRzCiAgICAgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDg3MzMyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJsaWM6CiAgICAg
UmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogbV9pbml0TGV2ZWwoQWxsRmllbGRzKQorICAg
ICAgICA6IG1faW5pdExldmVsKENvbW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgIHsKICAgICB9
CiAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgUmVzb3VyY2VSZXNwb25zZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExl
bmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVj
dGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgLCBtX2luaXRM
ZXZlbChBbGxGaWVsZHMpCisgICAgICAgICwgbV9pbml0TGV2ZWwoQ29tbW9uQW5kVW5jb21tb25G
aWVsZHMpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2
aXNpb24gODczMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIENGU3RyaW5n
UmVmIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0gewotICAgIENGU1RSKCJBZ2UiKSwgQ0ZT
VFIoIkNhY2hlLUNvbnRyb2wiKSwgQ0ZTVFIoIkRhdGUiKSwgQ0ZTVFIoIkV0YWciKSwgQ0ZTVFIo
IkV4cGlyZXMiKSwgQ0ZTVFIoIkxhc3QtTW9kaWZpZWQiKSwgQ0ZTVFIoIlByYWdtYSIpCisgICAg
Q0ZTVFIoIkFnZSIpLCBDRlNUUigiQ2FjaGUtQ29udHJvbCIpLCBDRlNUUigiQ29udGVudC1UeXBl
IiksIENGU1RSKCJEYXRlIiksIENGU1RSKCJFdGFnIiksIENGU1RSKCJFeHBpcmVzIiksIENGU1RS
KCJMYXN0LU1vZGlmaWVkIiksIENGU1RSKCJQcmFnbWEiKQogfTsKIHN0YXRpYyBjb25zdCBpbnQg
bnVtQ29tbW9uSGVhZGVyRmllbGRzID0gc2l6ZW9mKGNvbW1vbkhlYWRlckZpZWxkcykgLyBzaXpl
b2YoQ0ZTdHJpbmdSZWYpOwogCkBAIC04MCwxMCArODAsOCBAQCB2b2lkIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoCiAgICAgaWYgKG1faW5pdExldmVsID4gaW5pdExldmVsKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFt
X2NmUmVzcG9uc2UuZ2V0KCkpOworICAgIGlmIChtX2lzTnVsbCB8fCAhbV9jZlJlc3BvbnNlLmdl
dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKG1faW5pdExldmVsIDwgQ29t
bW9uRmllbGRzT25seSAmJiBpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgewogICAgICAg
ICBtX3VybCA9IENGVVJMUmVzcG9uc2VHZXRVUkwobV9jZlJlc3BvbnNlLmdldCgpKTsKQEAgLTk4
LDkgKzk2LDYgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogCiAg
ICAgICAgIG1fbGFzdE1vZGlmaWVkRGF0ZSA9IHRvVGltZVQoQ0ZVUkxSZXNwb25zZUdldExhc3RN
b2RpZmllZERhdGUobV9jZlJlc3BvbnNlLmdldCgpKSk7CiAKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzdWdnZXN0ZWRGaWxlbmFtZShBZG9wdENGLCBDRlVSTFJlc3BvbnNlQ29weVN1
Z2dlc3RlZEZpbGVuYW1lKG1fY2ZSZXNwb25zZS5nZXQoKSkpOwotICAgICAgICBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCk7Ci0KICAgICAgICAgQ0ZIVFRQTWVz
c2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKG1fY2ZS
ZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIGlmIChodHRwUmVzcG9uc2UpIHsKICAgICAgICAgICAg
IG1faHR0cFN0YXR1c0NvZGUgPSBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0
dHBSZXNwb25zZSk7CkBAIC0xMTYsNyArMTExLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUxhenlJbml0KAogICAgICAgICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IDA7CiAgICAg
fQogCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRMZXZlbCA+PSBBbGxG
aWVsZHMpIHsKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25BbmRVbmNvbW1vbkZpZWxkcyAm
JiBpbml0TGV2ZWwgPj0gQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpIHsKICAgICAgICAgQ0ZIVFRQ
TWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKG1f
Y2ZSZXNwb25zZS5nZXQoKSk7CiAgICAgICAgIGlmIChodHRwUmVzcG9uc2UpIHsKICAgICAgICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RhdHVzTGluZShBZG9wdENGLCBDRkhUVFBNZXNz
YWdlQ29weVJlc3BvbnNlU3RhdHVzTGluZShodHRwUmVzcG9uc2UpKTsKQEAgLTEzMSw2ICsxMjYs
MTEgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KAogICAgICAgICAg
ICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0
cmluZ1JlZil2YWx1ZXNbaV0pOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIGlmIChtX2lu
aXRMZXZlbCA8IEFsbEZpZWxkcyAmJiBpbml0TGV2ZWwgPj0gQWxsRmllbGRzKSB7CisgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVkRmlsZW5hbWUoQWRvcHRDRiwgQ0ZVUkxS
ZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShtX2NmUmVzcG9uc2UuZ2V0KCkpKTsKKyAgICAg
ICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lLmdldCgpOworICAgIH0K
IAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFj
Lm1tCShyZXZpc2lvbiA4NzMzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgLSAoTlNUaW1lSW50ZXJ2YWwpX2NhbGN1bGF0ZWRFeHBpcmF0aW9uOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IGNvbW1vbkhlYWRlckZpZWxkc1tdID0g
ewotICAgIEAiQWdlIiwgQCJDYWNoZS1Db250cm9sIiwgQCJEYXRlIiwgQCJFdGFnIiwgQCJFeHBp
cmVzIiwgQCJMYXN0LU1vZGlmaWVkIiwgQCJQcmFnbWEiCisgICAgQCJBZ2UiLCBAIkNhY2hlLUNv
bnRyb2wiLCBAIkNvbnRlbnQtVHlwZSIsIEAiRGF0ZSIsIEAiRXRhZyIsIEAiRXhwaXJlcyIsIEAi
TGFzdC1Nb2RpZmllZCIsIEAiUHJhZ21hIgogfTsKIHN0YXRpYyBjb25zdCBpbnQgbnVtQ29tbW9u
SGVhZGVyRmllbGRzID0gc2l6ZW9mKGNvbW1vbkhlYWRlckZpZWxkcykgLyBzaXplb2YoQXRvbWlj
U3RyaW5nKik7CiAKQEAgLTY5LDExICs2OSw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdCgKICAgICBpZiAobV9pbml0TGV2ZWwgPj0gaW5pdExldmVsKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9pc051bGwpIHsKLSAgICAgICAgQVNTRVJUKCFtX25zUmVz
cG9uc2UpOworICAgIGlmIChtX2lzTnVsbCB8fCAhbV9uc1Jlc3BvbnNlKQogICAgICAgICByZXR1
cm47Ci0gICAgfQotCisgICAgCiAgICAgaWYgKG1faW5pdExldmVsIDwgQ29tbW9uRmllbGRzT25s
eSAmJiBpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgewogICAgICAgICBOU0F1dG9yZWxl
YXNlUG9vbCogcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogCkBAIC04
OCw4ICs4Niw2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgKICAg
ICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWVMZW5ndGggPj0gMiAmJiBtX3RleHRFbmNvZGluZ05h
bWVbMFVdID09ICciJyAmJiBtX3RleHRFbmNvZGluZ05hbWVbdGV4dEVuY29kaW5nTmFtZUxlbmd0
aCAtIDFdID09ICciJykKICAgICAgICAgICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IG1fdGV4dEVu
Y29kaW5nTmFtZS5zdWJzdHJpbmcoMSwgdGV4dEVuY29kaW5nTmFtZUxlbmd0aCAtIDIpOwogCi0g
ICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIHN1Z2dlc3Rl
ZEZpbGVuYW1lXTsKLQogICAgICAgICBpZiAoW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNs
YXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKSB7CiAgICAgICAgICAgICBOU0hUVFBVUkxS
ZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNl
LmdldCgpOwogCkBAIC0xMDcsMjQgKzEwMywyOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtTGF6eUluaXQoCiAgICAgICAgIFtwb29sIGRyYWluXTsKICAgICB9CiAKLSAgICBpZiAo
bV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMgJiYgaW5pdExldmVsID49IEFsbEZpZWxkcyAmJiBbbV9u
c1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0p
IHsKLSAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25BbmRVbmNvbW1vbkZp
ZWxkcyAmJiBpbml0TGV2ZWwgPj0gQ29tbW9uQW5kVW5jb21tb25GaWVsZHMpIHsKKyAgICAgICAg
aWYgKFttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2Ug
Y2xhc3NdXSkgeworICAgICAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0
b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKIAotICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAq
aHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpOwor
ICAgICAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxS
ZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKIAotICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGh0dHBTdGF0dXNMaW5lKEFkb3B0TlMsIHdrQ29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5l
KG1fbnNSZXNwb25zZS5nZXQoKSkpOwotICAgICAgICBpZiAoaHR0cFN0YXR1c0xpbmUpCi0gICAg
ICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3Rh
dHVzTGluZShodHRwU3RhdHVzTGluZS5nZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1faHR0cFN0YXR1c1RleHQgPSAiT0siOworICAgICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBodHRwU3RhdHVzTGluZShBZG9wdE5TLCB3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSht
X25zUmVzcG9uc2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlmIChodHRwU3RhdHVzTGluZSkKKyAg
ICAgICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdFJlYXNvblBocmFzZUZyb21I
VFRQU3RhdHVzTGluZShodHRwU3RhdHVzTGluZS5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4dCA9ICJPSyI7CiAKLSAgICAgICAgTlNEaWN0
aW9uYXJ5ICpoZWFkZXJzID0gW2h0dHBSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdOwotICAgICAg
ICBOU0VudW1lcmF0b3IgKmUgPSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKLSAgICAgICAgd2hp
bGUgKE5TU3RyaW5nICpuYW1lID0gW2UgbmV4dE9iamVjdF0pCi0gICAgICAgICAgICBtX2h0dHBI
ZWFkZXJGaWVsZHMuc2V0KG5hbWUsIFtoZWFkZXJzIG9iamVjdEZvcktleTpuYW1lXSk7Ci0gICAg
ICAgIAotICAgICAgICBbcG9vbCBkcmFpbl07CisgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmhl
YWRlcnMgPSBbaHR0cFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc107CisgICAgICAgICAgICBOU0Vu
dW1lcmF0b3IgKmUgPSBbaGVhZGVycyBrZXlFbnVtZXJhdG9yXTsKKyAgICAgICAgICAgIHdoaWxl
IChOU1N0cmluZyAqbmFtZSA9IFtlIG5leHRPYmplY3RdKQorICAgICAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQobmFtZSwgW2hlYWRlcnMgb2JqZWN0Rm9yS2V5Om5hbWVdKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgW3Bvb2wgZHJhaW5dOworICAgICAgICB9CiAgICAgfQor
ICAgICAKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMgJiYgaW5pdExldmVsID49IEFs
bEZpZWxkcykKKyAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IFttX25zUmVzcG9uc2UuZ2V0
KCkgc3VnZ2VzdGVkRmlsZW5hbWVdOwogCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CiB9
Cg==
</data>
<flag name="review"
          id="88422"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>