<?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>79600</bug_id>
          
          <creation_ts>2012-02-25 23:42:51 -0800</creation_ts>
          <short_desc>Implement the basis of KURLWTFURL</short_desc>
          <delta_ts>2012-03-03 19:49:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565124</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-25 23:42:51 -0800</bug_when>
    <thetext>Make a not-optimized, working KURL based on WTFURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565125</commentid>
    <comment_count>1</comment_count>
      <attachid>128907</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-02-25 23:52:17 -0800</bug_when>
    <thetext>Created attachment 128907
Patch

Partial Implementation, no time to finish today</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570182</commentid>
    <comment_count>2</comment_count>
      <attachid>130010</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-03 16:37:00 -0800</bug_when>
    <thetext>Created attachment 130010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570185</commentid>
    <comment_count>3</comment_count>
      <attachid>130010</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-03 17:05:48 -0800</bug_when>
    <thetext>Comment on attachment 130010
Patch

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

&gt; Source/WebCore/platform/KURLWTFURL.cpp:103
&gt; +        DEFINE_STATIC_LOCAL(const String, nullString, ());

This shouldn&apos;t really be needed.  A null string is just a value type anyway.

&gt; Source/WebCore/platform/KURLWTFURL.cpp:219
&gt; +    return WebCore::protocolIs(protocol(), testProtocol);

Part of the point of this function is to avoid the malloc.  This implementation keeps the malloc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570189</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-03 17:13:33 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/KURLWTFURL.cpp:103
&gt; &gt; +        DEFINE_STATIC_LOCAL(const String, nullString, ());
&gt; 
&gt; This shouldn&apos;t really be needed.  A null string is just a value type anyway.

The trouble is this function return a reference (for now) :(

&gt; &gt; Source/WebCore/platform/KURLWTFURL.cpp:219
&gt; &gt; +    return WebCore::protocolIs(protocol(), testProtocol);
&gt; 
&gt; Part of the point of this function is to avoid the malloc.  This implementation keeps the malloc...

This is the case for many functions here (all the hasFooBar() for example). I just went for the easiest implementation and will optimize later.

Thanks for the review Adam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570204</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-03 19:49:30 -0800</bug_when>
    <thetext>Committed r109671: &lt;http://trac.webkit.org/changeset/109671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128907</attachid>
            <date>2012-02-25 23:52:17 -0800</date>
            <delta_ts>2012-03-03 16:36:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79600-20120225235216.patch</filename>
            <type>text/plain</type>
            <size>10901</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjU1OWYyNmQ5Nzk5YmY0ZTJmMmI5YmVhMjlmYTY5Y2ViNzA3NjE2Li40N2U3ZDNhN2JjZWE1ZGIw
YmM3MTYxZWJmN2U1MWM0OGZmYmMwNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMi0wMi0yNSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBiYXNpcyBvZiBLVVJMV1RGVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTYwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3VybC9hcGkv
UGFyc2VkVVJMLmNwcDoKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpQYXJzZWRVUkwpOgorICAg
ICAgICAoV1RGOjpQYXJzZWRVUkw6OmJhc2VBc1N0cmluZyk6CisgICAgICAgIChXVEYpOgorICAg
ICAgICAoV1RGOjpQYXJzZWRVUkw6OnNlZ21lbnQpOgorICAgICAgICAqIHd0Zi91cmwvYXBpL1Bh
cnNlZFVSTC5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpQYXJz
ZWRVUkwpOgorICAgICAgICAoUGFyc2VkVVJMKToKKyAgICAgICAgKFdURjo6UGFyc2VkVVJMOjpp
c1ZhbGlkKToKKwogMjAxMi0wMi0yNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIExMSW50IGFzc2VtYmx5IGZpbGUgc2hvdWxkIGJlIHNwbGl0IGludG8gMzItYml0
IGFuZCA2NC1iaXQgcGFydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MDBhNmZlMjcxYWZlNTRjNzdjMjUyMTU4
NTliMGZiZDM3ZDE2ODljLi5mODczNmM1NGU0NTRjYzg1ZTQyZjdhZTM3MDBmYTEwY2MyOTE5OTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDItMjUgIEJlbmphbWluIFBvdWxh
aW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgYmFzaXMg
b2YgS1VSTFdURlVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk2MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZV
UkwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpzdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpoYXNQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OktVUkw6OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6dXNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpwYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6Omhhc1BhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjps
YXN0UGF0aENvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpxdWVyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpLVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6
OmJhc2VBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwcm90b2NvbElzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCk6CisKIDIwMTItMDIt
MjUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIHdlYnNv
Y2tldHMgdG8gTW9kdWxlcy93ZWJzb2NrZXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdXJsL2FwaS9QYXJzZWRVUkwuY3BwCmluZGV4IDNjMTUxOTEzNjIzOWFmNTgwNzA0YTJiODU5
NjQ0MTI5ZTYwNmRiNzcuLmQyMDBkYzE2NmYzZDg0N2YyYmI3OWQ0NDRlZGFjNWVkYmE0MDM1Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuY3Bw
CkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLVBhcnNlZFVSTDo6UGFy
c2VkVVJMKGNvbnN0IFVSTFN0cmluZyYgc3BlYykKLSAgICA6IG1fc3BlYyhzcGVjKQorUGFyc2Vk
VVJMOjpQYXJzZWRVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCisgICAgOiBtX3NwZWModXJs
U3RyaW5nKQogewogICAgIC8vIEZJWE1FOiBIYW5kbGUgbm9uLXN0YW5kYXJkIFVSTHMuCi0gICAg
aWYgKHNwZWMuc3RyaW5nKCkuaXNFbXB0eSgpKQorICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgVVJMUGFyc2VyPFVDaGFyPjo6cGFyc2VTdGFuZGFyZFVS
TChzcGVjLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgc3BlYy5zdHJpbmcoKS5sZW5ndGgoKSwgbV9z
ZWdtZW50cyk7CisgICAgVVJMUGFyc2VyPFVDaGFyPjo6cGFyc2VTdGFuZGFyZFVSTCh1cmxTdHJp
bmcuY2hhcmFjdGVycygpLCB1cmxTdHJpbmcubGVuZ3RoKCksIG1fc2VnbWVudHMpOwogfQogCiBT
dHJpbmcgUGFyc2VkVVJMOjpzY2hlbWUoKSBjb25zdApAQCAtODIsMTEgKzgyLDIyIEBAIFN0cmlu
ZyBQYXJzZWRVUkw6OmZyYWdtZW50KCkgY29uc3QKICAgICByZXR1cm4gc2VnbWVudChtX3NlZ21l
bnRzLmZyYWdtZW50KTsKIH0KIAorU3RyaW5nIFBhcnNlZFVSTDo6YmFzZUFzU3RyaW5nKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBQYXJzZWRVUkw6OnNlZ21lbnQoY29uc3QgVVJMQ29t
cG9uZW50JiBjb21wb25lbnQpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFtX3NwZWMuc3RyaW5nKCku
aXNFbXB0eSgpKTsKKwogICAgIGlmICghY29tcG9uZW50LmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX3NwZWMuc3RyaW5nKCkuc3Vic3RyaW5nKGNvbXBv
bmVudC5iZWdpbigpLCBjb21wb25lbnQubGVuZ3RoKCkpOworCisgICAgU3RyaW5nIHNlZ21lbnQg
PSBtX3NwZWMuc3RyaW5nKCkuc3Vic3RyaW5nKGNvbXBvbmVudC5iZWdpbigpLCBjb21wb25lbnQu
bGVuZ3RoKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlZ21lbnQuaXNFbXB0eSgpLCAi
QSB2YWxpZCBVUkwgY29tcG9uZW50IHNob3VsZCBub3QgYmUgZW1wdHkuIik7CisgICAgcmV0dXJu
IHNlZ21lbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dXJsL2FwaS9QYXJzZWRVUkwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdXJsL2FwaS9Q
YXJzZWRVUkwuaAppbmRleCAwMjM1ODk1NjRhYjk4NDAwODdmOWJlYWE0YzI1YTQ2OTM5ZWI3M2M4
Li5jOWQ3ODAzODRkYjBhZjVhMWQ1MTY3NjczMDE2NDM1NGZmYjMwOThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5oCkBAIC0zNSwyMCArMzUsMjcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFVSTENvbXBvbmVudDsKIAorLy8gUGFyc2VkVVJM
IHJlcHJlc2VudHMgYSB2YWxpZCBVUkwgZGVjb21wb3NlZCBieSBjb21wb25lbnRzLgorLy8gQSBQ
YXJzZWRVUkwgY3JlYXRlZCB3aXRoIGEgU3RyaW5nIHJlcHJlc2VudGluZyBhbiBpbnZhbGlkIFVS
TCByZXN1bHQgaW4gYSBpbnZhbGlkIFBhcnNlZFVSTC4KIGNsYXNzIFBhcnNlZFVSTCB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgUGFyc2VkVVJMKGNvbnN0IFVSTFN0cmluZyYpOwotCiAgICAgLy8g
RklYTUU6IEFkZCBhIG1ldGhvZCBmb3IgcGFyc2luZyBub24tY2Fub25pY2FsaXplZCBVUkxzLgor
ICAgIFBhcnNlZFVSTCgpIHsgfTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgUGFy
c2VkVVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gIW1fc3BlYy5zdHJpbmcoKS5pc0VtcHR5KCk7IH0KKworICAgIC8vIFJldHVybiBhIFVSTCBj
b21wb25lbnQgb3IgYSBudWxsIFN0cmluZyBpZiB0aGUgY29tcG9uZW50IGlzIHVuZGVmaW5lZCBm
b3IgdGhlIFVSTC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHNjaGVtZSgpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFN0cmluZyBob3N0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBwb3J0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoKCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgZnJhZ21lbnQoKSBjb25zdDsKIAotICAgIFN0cmlu
ZyBzY2hlbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICBTdHJp
bmcgcGFzc3dvcmQoKSBjb25zdDsKLSAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIFN0cmlu
ZyBwb3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgcXVl
cnkoKSBjb25zdDsKLSAgICBTdHJpbmcgZnJhZ21lbnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgU3RyaW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OwogCiAgICAgVVJMU3RyaW5nIHNw
ZWMoKSB7IHJldHVybiBtX3NwZWM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTFdURlVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJM
LmNwcAppbmRleCA0NDcxOWE2NDNjMWM1MzUxNDFjZDkzZjBlNjczNDRjNjE4NDhhZWU2Li44YWVl
MzdiMDBlYWM1NDljYmIwMmNkNmJkMjMxZDdkY2VjNjJlZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMV1RGVVJMLmNwcApAQCAtMjgsMTEgKzI4LDE4IEBACiAKICNpZiBVU0UoV1RGVVJM
KQogCit1c2luZyBuYW1lc3BhY2UgV1RGOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUtVUkw6
OktVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmKQorc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heGltdW1WYWxpZFBvcnROdW1iZXIgPSAweEZGRkU7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7CisKK0tVUkw6OktVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKKyAgICA6IG1fdXJsSW1wbChhZG9w
dFJlZihuZXcgS1VSTFdURlVSTEltcGwoKSkpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwg
SW1wbGVtZW50YXRpb24uCisgICAgbV91cmxJbXBsLT5tX3BhcnNlZFVSTCA9IFBhcnNlZFVSTCh1
cmxTdHJpbmcpOworICAgIEFTU0VSVChtX3VybEltcGwtPm1fcGFyc2VkVVJMLmlzVmFsaWQoKSk7
CiB9CiAKIEtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCkBAIC01NiwxMDEg
KzYzLDEyNyBAQCBib29sIEtVUkw6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX3VybElt
cGw7CiB9CiAKKy8vIEZJWE1FOiBDYW4gd2UgZ2V0IHJpZCBvZiB0aGUgY29uY2VwdCBvZiBFbXB0
eVVSTD8gQ2FuIGFuIG51bGwgVVJMIGJlIGVub3VnaD8KKy8vIElmIHdlIGNhbm5vdCBnZXQgcmlk
IG9mIHRoZSBjb25jZXB0LCB3ZSBzaG91bGQgbWFrZSBhIHNoYXJlZCBlbXB0eSBVUkwuCiBib29s
IEtVUkw6OmlzRW1wdHkoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxl
bWVudGF0aW9uLgotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhbV91cmxJbXBsCisgICAg
ICAgICAgIHx8ICghbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5pc1ZhbGlkKCkgJiYgbV91cmxJbXBs
LT5tX2ludmFsaWRVcmxTdHJpbmcuaXNFbXB0eSgpKTsKIH0KIAogYm9vbCBLVVJMOjppc1ZhbGlk
KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX3VybEltcGwgJiYgbV91cmxJbXBsLT5tX2ludmFsaWRVcmxTdHJpbmcuaXNO
dWxsKCk7CiB9CiAKIGNvbnN0IFN0cmluZyAmS1VSTDo6c3RyaW5nKCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICBBU1NFUlQobV91cmxJbXBs
KTsKLSAgICByZXR1cm4gbV91cmxJbXBsLT5tX2ludmFsaWRVcmxTdHJpbmc7CisgICAgaWYgKGlz
TnVsbCgpKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBudWxs
U3RyaW5nLCAoKSk7CisgICAgICAgIHJldHVybiBudWxsU3RyaW5nOworICAgIH0KKworICAgIGlm
ICghbV91cmxJbXBsLT5tX2ludmFsaWRVcmxTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgQVNT
RVJUKCFpc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gbV91cmxJbXBsLT5tX2ludmFsaWRVcmxT
dHJpbmc7CisgICAgfQorCisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuIG1fdXJs
SW1wbC0+bV9wYXJzZWRVUkwuc3BlYygpLnN0cmluZygpOwogfQogCiBTdHJpbmcgS1VSTDo6cHJv
dG9jb2woKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9u
LgotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1
cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5zY2hlbWUoKTsKIH0KIAogU3RyaW5nIEtVUkw6Omhv
c3QoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4g
bV91cmxJbXBsLT5tX3BhcnNlZFVSTC5ob3N0KCk7CiB9CiAKLXVuc2lnbmVkIHNob3J0IEtVUkw6
OnBvcnQoKSBjb25zdAorYm9vbCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhN
RTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKKyAgICByZXR1cm4gIW1fdXJsSW1wbC0+bV9wYXJzZWRVUkwucG9ydCgpLmlz
TnVsbCgpOwogfQogCi1ib29sIEtVUkw6Omhhc1BvcnQoKSBjb25zdAordW5zaWduZWQgc2hvcnQg
S1VSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50
YXRpb24uCi0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCisgICAg
U3RyaW5nIHBvcnRTdHJpbmcgPSBtX3VybEltcGwtPm1fcGFyc2VkVVJMLnBvcnQoKTsKKyAgICBi
b29sIG9rID0gZmFsc2U7CisgICAgdW5zaWduZWQgcG9ydFZhbHVlID0gcG9ydFN0cmluZy50b1VJ
bnRTdHJpY3QoJm9rKTsKKworICAgIGlmICghb2sgfHwgcG9ydFZhbHVlID4gbWF4aW11bVZhbGlk
UG9ydE51bWJlcikKKyAgICAgICAgcmV0dXJuIGludmFsaWRQb3J0TnVtYmVyOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pihwb3J0VmFsdWUpOwogfQogCiBTdHJpbmcg
S1VSTDo6dXNlcigpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50
YXRpb24uCi0gICAgcmV0dXJuIFN0cmluZygpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAg
IHJldHVybiBtX3VybEltcGwtPm1fcGFyc2VkVVJMLnVzZXJuYW1lKCk7CiB9CiAKIFN0cmluZyBL
VVJMOjpwYXNzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAg
cmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwucGFzc3dvcmQoKTsKK30KKworYm9vbCBLVVJM
OjpoYXNQYXRoKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4g
IXBhdGgoKS5pc051bGwoKTsKIH0KIAogU3RyaW5nIEtVUkw6OnBhdGgoKSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNl
ZFVSTC5wYXRoKCk7CiB9CiAKIFN0cmluZyBLVVJMOjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJu
IFN0cmluZygpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCisgICAgU3RyaW5nIHBhdGhTdHJp
bmcgPSBwYXRoKCk7CisgICAgc2l6ZV90IGluZGV4ID0gcGF0aFN0cmluZy5yZXZlcnNlRmluZCgn
LycpOworCisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gcGF0aFN0
cmluZzsKKworICAgIHJldHVybiBwYXRoU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDEpOwogfQog
CiBTdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJM
IEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxp
ZCgpKTsKKyAgICByZXR1cm4gbV91cmxJbXBsLT5tX3BhcnNlZFVSTC5xdWVyeSgpOwogfQogCi1T
dHJpbmcgS1VSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKK2Jvb2wgS1VSTDo6aGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBs
ZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgcmV0dXJuICFmcmFnbWVudElkZW50aWZpZXIoKS5pc051bGwoKTsKIH0KIAotYm9vbCBL
VVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAorU3RyaW5nIEtVUkw6OmZyYWdtZW50
SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50
YXRpb24uCi0gICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIHJl
dHVybiBtX3VybEltcGwtPm1fcGFyc2VkVVJMLmZyYWdtZW50KCk7CiB9CiAKKy8vIEZJWE1FOiB0
cmFjayBhbiBmaXggdGhlIGJhZCB1c2Ugb2YgdGhpcyBtZXRob2QuCiBTdHJpbmcgS1VSTDo6YmFz
ZUFzU3RyaW5nKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAg
cmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuYmFzZUFzU3RyaW5nKCk7CiB9CiAKIFN0cmlu
ZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0CkBAIC0xNjEsNiArMTk0LDcgQEAgU3RyaW5n
IEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKIAogYm9vbCBLVVJMOjpwcm90b2NvbElzKGNv
bnN0IGNoYXIqKSBjb25zdAogeworICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAgIC8vIEZJWE1F
OiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTI4
MCwxMCArMzE0LDE0IEBAIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25z
dCBLVVJMJiwgY29uc3QgS1VSTCYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIHByb3Rv
Y29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpCitib29sIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQog
ewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWEuaXNWYWxpZCgpIHx8ICFiLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGEucHJvdG9jb2woKSA9PSBiLnByb3RvY29sKCkgCisg
ICAgICAgICAgICYmIGEuaG9zdCgpID09IGIuaG9zdCgpCisgICAgICAgICAgICYmIGEucG9ydCgp
ID09IGIucG9ydCgpOwogfQogCiBTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhj
b25zdCBTdHJpbmcmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130010</attachid>
            <date>2012-03-03 16:37:00 -0800</date>
            <delta_ts>2012-03-03 17:05:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79600-20120303163659.patch</filename>
            <type>text/plain</type>
            <size>15536</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY0OTk2NWM1Nzk2ZjVlN2UyZWZlYmZkODE0Y2I2ZDNiY2Q4MjRmLi4zMWY1Y2Y2ODQ5ZWU4MDA4
OTY1MGQwMjMyZDI4YTY5ODcyN2U1MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0wMy0wMyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBiYXNpcyBvZiBLVVJMV1RGVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTYwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdG8g
a25vdyBpZiBhIFBhcnNlZFVSTCBpcyB2YWxpZC4KKworICAgICAgICAqIHd0Zi91cmwvYXBpL1Bh
cnNlZFVSTC5jcHA6CisgICAgICAgIChXVEY6OlBhcnNlZFVSTDo6UGFyc2VkVVJMKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChXVEY6OlBhcnNlZFVSTDo6aXNvbGF0ZWRDb3B5KTogVGhpcyBp
cyBuZWVkZWQgYnkgQVBJcyBtb3ZpbmcgVVJMIG9iamVjdHMgYmV0d2VlbiB0aHJlYWQKKyAgICAg
ICAgYW5kIGJ5IEtVUkwncyBkZXRhY2goKSBvbiB3cml0ZS4KKyAgICAgICAgKFdURjo6UGFyc2Vk
VVJMOjpiYXNlQXNTdHJpbmcpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OnNlZ21lbnQpOgor
ICAgICAgICBBZGQgYSBzdHJvbmdlciBjb25zdHJhaW50IG9uIGFjY2Vzc29yczogdGhlIGNsaWVu
dCBvZiB0aGlzIEFQSSBzaG91bGQgbmV2ZXIgYXNrIGZvciB0aGUgc2VnbWVudHMKKyAgICAgICAg
b24gYW4gaW52YWxpZCBVUkwuCisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmg6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OlBhcnNlZFVSTCk6CisgICAg
ICAgIChQYXJzZWRVUkwpOgorICAgICAgICAoV1RGOjpQYXJzZWRVUkw6OmlzVmFsaWQpOgorCiAy
MDEyLTAzLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2hl
biBnZXR0aW5nIHRoZSBsaW5lIG51bWJlciBvZiBhIGNhbGwgaW50byBhIGNhbGwgZnJhbWUgd2l0
aCBubyBjb2RlIGJsb2NrLCBpdCdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3NjhkOGM3MjQxZWFhZjcwNzhj
MWQ2OGZlNDRmYTkzODcwNTQwOC4uYWNmMGI2ODYyNDY5NGVlZGQ4YjkwYWUxMmI1MWIxZDc3Y2Uy
MjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAzLTAzICBCZW5qYW1pbiBQ
b3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGJh
c2lzIG9mIEtVUkxXVEZVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc5NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgc2ltcGxlLCBub24tb3B0aW1pemVkLCBpbXBsZW1lbnRhdGlvbiBmb3Ig
dGhlIG1haW4gbWV0aG9kcyBvZiBLVVJMIGJhc2VkCisgICAgICAgIG9uIFBhcnNlZFVSTC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6S1VSTCk6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6
OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aXNWYWxpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpzdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cHJvdG9jb2wp
OgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJM
OjpoYXNQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnBvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6dXNlcik6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwYXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OktVUkw6Omhhc1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpsYXN0UGF0aENvbXBvbmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpLVVJMOjpxdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpoYXNGcmFn
bWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6ZnJhZ21lbnRJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmJhc2VBc1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpmaWxlU3lzdGVtUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpw
cm90b2NvbElzKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1p
bHkpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpyZW1vdmVQb3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0VXNlcik6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpzZXRQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OktV
Ukw6OnNldFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c2V0UXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6S1VSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OktVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxXVEZV
UkxJbXBsLmg6CisgICAgICAgIChLVVJMV1RGVVJMSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpL
VVJMV1RGVVJMSW1wbDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMy0wMyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWls
ZCB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIGNsYW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmNwcAppbmRleCAzYzE1MTkxMzYyMzlhZjU4MDcwNGEy
Yjg1OTY0NDEyOWU2MDZkYjc3Li5mNjkxNjJhNjc4Mjg5MTUzZDZjZjc2OWQyMDE1Y2EzYmQ0NDI4
MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2Vk
VVJMLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJM
LmNwcApAQCAtMzMsMTMgKzMzLDIxIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1QYXJzZWRVUkw6
OlBhcnNlZFVSTChjb25zdCBVUkxTdHJpbmcmIHNwZWMpCi0gICAgOiBtX3NwZWMoc3BlYykKK1Bh
cnNlZFVSTDo6UGFyc2VkVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorICAgIDogbV9zcGVj
KHVybFN0cmluZykKIHsKICAgICAvLyBGSVhNRTogSGFuZGxlIG5vbi1zdGFuZGFyZCBVUkxzLgot
ICAgIGlmIChzcGVjLnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICBpZiAodXJsU3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFVSTFBhcnNlcjxVQ2hhcj46OnBhcnNlU3RhbmRh
cmRVUkwoc3BlYy5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIHNwZWMuc3RyaW5nKCkubGVuZ3RoKCks
IG1fc2VnbWVudHMpOworICAgIFVSTFBhcnNlcjxVQ2hhcj46OnBhcnNlU3RhbmRhcmRVUkwodXJs
U3RyaW5nLmNoYXJhY3RlcnMoKSwgdXJsU3RyaW5nLmxlbmd0aCgpLCBtX3NlZ21lbnRzKTsKK30K
KworUGFyc2VkVVJMIFBhcnNlZFVSTDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBQYXJz
ZWRVUkwgY29weTsKKyAgICBjb3B5Lm1fc2VnbWVudHMgPSB0aGlzLT5tX3NlZ21lbnRzOworICAg
IGNvcHkubV9zcGVjID0gVVJMU3RyaW5nKHRoaXMtPm1fc3BlYy5zdHJpbmcoKS5pc29sYXRlZENv
cHkoKSk7CisgICAgcmV0dXJuIGNvcHk7CiB9CiAKIFN0cmluZyBQYXJzZWRVUkw6OnNjaGVtZSgp
IGNvbnN0CkBAIC04MiwxMSArOTAsMjIgQEAgU3RyaW5nIFBhcnNlZFVSTDo6ZnJhZ21lbnQoKSBj
b25zdAogICAgIHJldHVybiBzZWdtZW50KG1fc2VnbWVudHMuZnJhZ21lbnQpOwogfQogCitTdHJp
bmcgUGFyc2VkVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBZGQg
V1RGVVJMIEltcGxlbWVudGF0aW9uLgorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogU3RyaW5n
IFBhcnNlZFVSTDo6c2VnbWVudChjb25zdCBVUkxDb21wb25lbnQmIGNvbXBvbmVudCkgY29uc3QK
IHsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKwogICAgIGlmICghY29tcG9uZW50LmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX3NwZWMuc3RyaW5nKCku
c3Vic3RyaW5nKGNvbXBvbmVudC5iZWdpbigpLCBjb21wb25lbnQubGVuZ3RoKCkpOworCisgICAg
U3RyaW5nIHNlZ21lbnQgPSBtX3NwZWMuc3RyaW5nKCkuc3Vic3RyaW5nKGNvbXBvbmVudC5iZWdp
bigpLCBjb21wb25lbnQubGVuZ3RoKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXNlZ21l
bnQuaXNFbXB0eSgpLCAiQSB2YWxpZCBVUkwgY29tcG9uZW50IHNob3VsZCBub3QgYmUgZW1wdHku
Iik7CisgICAgcmV0dXJuIHNlZ21lbnQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaAppbmRleCAwMjM1ODk1NjRhYjk4NDAwODdmOWJlYWE0
YzI1YTQ2OTM5ZWI3M2M4Li5mZTJmMmQwNzAzMDU0OTZlZGE5YzhlYzMyOTY4MmEzN2RiOTRhNjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VybC9hcGkvUGFyc2VkVVJM
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91cmwvYXBpL1BhcnNlZFVSTC5oCkBA
IC0zNSwyMCArMzUsMjggQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFVSTENvbXBvbmVudDsK
IAorLy8gUGFyc2VkVVJMIHJlcHJlc2VudHMgYSB2YWxpZCBVUkwgZGVjb21wb3NlZCBieSBjb21w
b25lbnRzLgogY2xhc3MgUGFyc2VkVVJMIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQYXJzZWRV
UkwoY29uc3QgVVJMU3RyaW5nJik7Ci0KICAgICAvLyBGSVhNRTogQWRkIGEgbWV0aG9kIGZvciBw
YXJzaW5nIG5vbi1jYW5vbmljYWxpemVkIFVSTHMuCisgICAgUGFyc2VkVVJMKCkgeyB9OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBQYXJzZWRVUkwoY29uc3QgU3RyaW5nJik7CisK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUGFyc2VkVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1fc3BlYy5zdHJpbmcoKS5pc0Vt
cHR5KCk7IH0KKworICAgIC8vIFJldHVybiBhIFVSTCBjb21wb25lbnQgb3IgYSBudWxsIFN0cmlu
ZyBpZiB0aGUgY29tcG9uZW50IGlzIHVuZGVmaW5lZCBmb3IgdGhlIFVSTC4KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHNjaGVtZSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHBhc3N3b3JkKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBob3N0KCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgZnJhZ21lbnQoKSBjb25zdDsKIAotICAgIFN0cmluZyBzY2hlbWUoKSBjb25zdDsKLSAgICBT
dHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzc3dvcmQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJpbmcg
ZnJhZ21lbnQoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJhc2VBc1N0
cmluZygpIGNvbnN0OwogCiAgICAgVVJMU3RyaW5nIHNwZWMoKSB7IHJldHVybiBtX3NwZWM7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMLmNwcAppbmRleCA0NDcxOWE2NDNjMWM1
MzUxNDFjZDkzZjBlNjczNDRjNjE4NDhhZWU2Li40ZmYxM2Q5NDhhODdjNWNlMjNlMjNmMTBmZGM0
ZDE4NWM0ZmEyMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RG
VVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMLmNwcApAQCAt
MjgsMTEgKzI4LDI5IEBACiAKICNpZiBVU0UoV1RGVVJMKQogCit1c2luZyBuYW1lc3BhY2UgV1RG
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUtVUkw6OktVUkwoUGFyc2VkVVJMU3RyaW5nVGFn
LCBjb25zdCBTdHJpbmcmKQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxpZFBvcnRO
dW1iZXIgPSAweEZGRkU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIg
PSAweEZGRkY7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZXRhY2goUmVmUHRyPEtVUkxXVEZVUkxJ
bXBsPiYgdXJsSW1wbCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlv
bi4KKyAgICBpZiAoIXVybEltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh1cmxJbXBs
LT5oYXNPbmVSZWYoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXJsSW1wbCA9IHVybEltcGwt
PmNvcHkoKTsKK30KKworS1VSTDo6S1VSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQorICAgIDogbV91cmxJbXBsKGFkb3B0UmVmKG5ldyBLVVJMV1RGVVJMSW1w
bCgpKSkKK3sKKyAgICBtX3VybEltcGwtPm1fcGFyc2VkVVJMID0gUGFyc2VkVVJMKHVybFN0cmlu
Zyk7CisgICAgQVNTRVJUKG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxpZCgpKTsKIH0KIAog
S1VSTDo6S1VSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKQEAgLTQ3LDggKzY1LDEwIEBA
IEtVUkw6OktVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGlu
ZyYpCiAKIEtVUkwgS1VSTDo6Y29weSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZV
UkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICBLVVJMIG90aGVyOwor
ICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIG90aGVyLm1fdXJsSW1wbCA9IG1fdXJsSW1wbC0+
Y29weSgpOworICAgIHJldHVybiBvdGhlcjsKIH0KIAogYm9vbCBLVVJMOjppc051bGwoKSBjb25z
dApAQCAtNTYsMTc0ICs3NiwyMTggQEAgYm9vbCBLVVJMOjppc051bGwoKSBjb25zdAogICAgIHJl
dHVybiAhbV91cmxJbXBsOwogfQogCisvLyBGSVhNRTogQ2FuIHdlIGdldCByaWQgb2YgdGhlIGNv
bmNlcHQgb2YgRW1wdHlVUkw/IENhbiBhbiBudWxsIFVSTCBiZSBlbm91Z2g/CisvLyBJZiB3ZSBj
YW5ub3QgZ2V0IHJpZCBvZiB0aGUgY29uY2VwdCwgd2Ugc2hvdWxkIG1ha2UgYSBzaGFyZWQgZW1w
dHkgVVJMLgogYm9vbCBLVVJMOjppc0VtcHR5KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRk
IFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIW1f
dXJsSW1wbAorICAgICAgICAgICB8fCAoIW1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxpZCgp
ICYmIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nLmlzRW1wdHkoKSk7CiB9CiAKIGJvb2wg
S1VSTDo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVt
ZW50YXRpb24uCi0gICAgcmV0dXJuIGZhbHNlOwotfQorICAgIGlmICghbV91cmxJbXBsKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLWJvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIGJvb2wgaXNQYXJzZWRVUkxWYWxpZCA9IG1fdXJsSW1wbC0+bV9wYXJzZWRVUkwuaXNWYWxp
ZCgpOworI2lmbmRlZiBOREVCVUcKKyAgICBpZiAoaXNQYXJzZWRVUkxWYWxpZCkKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShtX3VybEltcGwtPm1faW52YWxpZFVybFN0cmluZy5pc051bGwo
KSwgIkEgdmFsaWQgVVJMIHNob3VsZCBuZXZlciBoYXZlIGEgdmFsaWQgaW52YWxpZFVybFN0cmlu
Zy4iKTsKKyNlbmRpZgorICAgIHJldHVybiBpc1BhcnNlZFVSTFZhbGlkOwogfQogCiBjb25zdCBT
dHJpbmcgJktVUkw6OnN0cmluZygpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwg
SW1wbGVtZW50YXRpb24uCi0gICAgQVNTRVJUKG1fdXJsSW1wbCk7Ci0gICAgcmV0dXJuIG1fdXJs
SW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nOworICAgIGlmIChpc051bGwoKSkgeworICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbnVsbFN0cmluZywgKCkpOworICAgICAg
ICByZXR1cm4gbnVsbFN0cmluZzsKKyAgICB9CisKKyAgICBpZiAoIW1fdXJsSW1wbC0+bV9pbnZh
bGlkVXJsU3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9pbnZhbGlkVXJsU3RyaW5nOworICAgIH0KKworICAg
IEFTU0VSVChpc1ZhbGlkKCkpOworICAgIHJldHVybiBtX3VybEltcGwtPm1fcGFyc2VkVVJMLnNw
ZWMoKS5zdHJpbmcoKTsKIH0KIAogU3RyaW5nIEtVUkw6OnByb3RvY29sKCkgY29uc3QKIHsKLSAg
ICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJz
ZWRVUkwuc2NoZW1lKCk7CiB9CiAKIFN0cmluZyBLVVJMOjpob3N0KCkgY29uc3QKIHsKLSAgICAv
LyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9wYXJzZWRV
UkwuaG9zdCgpOwogfQogCi11bnNpZ25lZCBzaG9ydCBLVVJMOjpwb3J0KCkgY29uc3QKK2Jvb2wg
S1VSTDo6aGFzUG9ydCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVt
ZW50YXRpb24uCi0gICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0
dXJuICFtX3VybEltcGwtPm1fcGFyc2VkVVJMLnBvcnQoKS5pc051bGwoKTsKIH0KIAotYm9vbCBL
VVJMOjpoYXNQb3J0KCkgY29uc3QKK3Vuc2lnbmVkIHNob3J0IEtVUkw6OnBvcnQoKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBm
YWxzZTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKworICAgIFN0cmluZyBwb3J0U3RyaW5nID0g
bV91cmxJbXBsLT5tX3BhcnNlZFVSTC5wb3J0KCk7CisgICAgYm9vbCBvayA9IGZhbHNlOworICAg
IHVuc2lnbmVkIHBvcnRWYWx1ZSA9IHBvcnRTdHJpbmcudG9VSW50U3RyaWN0KCZvayk7CisKKyAg
ICBpZiAoIW9rIHx8IHBvcnRWYWx1ZSA+IG1heGltdW1WYWxpZFBvcnROdW1iZXIpCisgICAgICAg
IHJldHVybiBpbnZhbGlkUG9ydE51bWJlcjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBzaG9ydD4ocG9ydFZhbHVlKTsKIH0KIAogU3RyaW5nIEtVUkw6OnVzZXIoKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gbV91cmxJbXBsLT5t
X3BhcnNlZFVSTC51c2VybmFtZSgpOwogfQogCiBTdHJpbmcgS1VSTDo6cGFzcygpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIFN0
cmluZygpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIHJldHVybiBtX3VybEltcGwtPm1f
cGFyc2VkVVJMLnBhc3N3b3JkKCk7Cit9CisKK2Jvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuICFwYXRoKCkuaXNFbXB0eSgpOwog
fQogCiBTdHJpbmcgS1VSTDo6cGF0aCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZV
UkwgSW1wbGVtZW50YXRpb24uCi0gICAgcmV0dXJuIFN0cmluZygpOworICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworICAgIHJldHVybiBtX3VybEltcGwtPm1fcGFyc2VkVVJMLnBhdGgoKTsKIH0KIAog
U3RyaW5nIEtVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTog
QWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgQVNT
RVJUKGlzVmFsaWQoKSk7CisKKyAgICBTdHJpbmcgcGF0aFN0cmluZyA9IHBhdGgoKTsKKyAgICBz
aXplX3QgaW5kZXggPSBwYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJyk7CisKKyAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBwYXRoU3RyaW5nOworCisgICAgcmV0dXJu
IHBhdGhTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7CiB9CiAKIFN0cmluZyBLVVJMOjpxdWVy
eSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCi0g
ICAgcmV0dXJuIFN0cmluZygpOworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworICAgIHJldHVybiBt
X3VybEltcGwtPm1fcGFyc2VkVVJMLnF1ZXJ5KCk7CiB9CiAKLVN0cmluZyBLVVJMOjpmcmFnbWVu
dElkZW50aWZpZXIoKSBjb25zdAorYm9vbCBLVVJMOjpoYXNGcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJl
dHVybiBTdHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gIWZyYWdt
ZW50SWRlbnRpZmllcigpLmlzTnVsbCgpOwogfQogCi1ib29sIEtVUkw6Omhhc0ZyYWdtZW50SWRl
bnRpZmllcigpIGNvbnN0CitTdHJpbmcgS1VSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuIG1fdXJsSW1wbC0+bV9w
YXJzZWRVUkwuZnJhZ21lbnQoKTsKIH0KIAorLy8gRklYTUU6IHRyYWNrIGFuIGZpeCB0aGUgYmFk
IHVzZSBvZiB0aGlzIG1ldGhvZC4KIFN0cmluZyBLVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICByZXR1cm4gbV91cmxJbXBsLT5t
X3BhcnNlZFVSTC5iYXNlQXNTdHJpbmcoKTsKIH0KIAorLy8gRklYTUU6IEdldCByaWQgb2YgdGhp
cyBmdW5jdGlvbiBmcm9tIEtVUkwuCiBTdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIEltcGxlbWVudGF0aW9uLgogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotYm9vbCBLVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqKSBjb25z
dAorYm9vbCBLVVJMOjpwcm90b2NvbElzKGNvbnN0IGNoYXIqIHRlc3RQcm90b2NvbCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByb3Rv
Y29sSXMocHJvdG9jb2woKSwgdGVzdFByb3RvY29sKTsKIH0KIAogYm9vbCBLVVJMOjpwcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBs
ZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImh0
dHAiKSB8fCBwcm90b2NvbElzKCJodHRwcyIpOwogfQogCiBib29sIEtVUkw6OnNldFByb3RvY29s
KGNvbnN0IFN0cmluZyYpCiB7CisgICAgZGV0YWNoKG1fdXJsSW1wbCk7CiAgICAgLy8gRklYTUU6
IEFkZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lk
IEtVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJikKIHsKKyAgICBkZXRhY2gobV91cmxJbXBsKTsK
ICAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KIH0KIAogdm9pZCBLVVJM
OjpyZW1vdmVQb3J0KCkKIHsKKyAgICBkZXRhY2gobV91cmxJbXBsKTsKICAgICAvLyBGSVhNRTog
QWRkIFdURlVSTCBJbXBsZW1lbnRhdGlvbi4KIH0KIAogdm9pZCBLVVJMOjpzZXRQb3J0KHVuc2ln
bmVkIHNob3J0KQogeworICAgIGRldGFjaChtX3VybEltcGwpOwogICAgIC8vIEZJWE1FOiBBZGQg
V1RGVVJMIEltcGxlbWVudGF0aW9uLgogfQogCiB2b2lkIEtVUkw6OnNldEhvc3RBbmRQb3J0KGNv
bnN0IFN0cmluZyYpCiB7CisgICAgZGV0YWNoKG1fdXJsSW1wbCk7CiAgICAgLy8gRklYTUU6IEFk
ZCBXVEZVUkwgSW1wbGVtZW50YXRpb24uCiB9CiAKIHZvaWQgS1VSTDo6c2V0VXNlcihjb25zdCBT
dHJpbmcmKQogeworICAgIGRldGFjaChtX3VybEltcGwpOwogICAgIC8vIEZJWE1FOiBBZGQgV1RG
VVJMIEltcGxlbWVudGF0aW9uLgogfQogCiB2b2lkIEtVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5n
JikKIHsKKyAgICBkZXRhY2gobV91cmxJbXBsKTsKICAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJ
bXBsZW1lbnRhdGlvbi4KIH0KIAogdm9pZCBLVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYpCiB7
CisgICAgZGV0YWNoKG1fdXJsSW1wbCk7CiAgICAgLy8gRklYTUU6IEFkZCBXVEZVUkwgSW1wbGVt
ZW50YXRpb24uCiB9CiAKIHZvaWQgS1VSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJikKIHsKKyAg
ICBkZXRhY2gobV91cmxJbXBsKTsKICAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBsZW1lbnRh
dGlvbi4KIH0KIAogdm9pZCBLVVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JikKIHsKKyAgICBkZXRhY2gobV91cmxJbXBsKTsKICAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJ
bXBsZW1lbnRhdGlvbi4KIH0KIAogdm9pZCBLVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KQogeworICAgIGRldGFjaChtX3VybEltcGwpOwogICAgIC8vIEZJWE1FOiBBZGQgV1RGVVJMIElt
cGxlbWVudGF0aW9uLgogfQogCkBAIC0yODAsMTAgKzM0NCwxNCBAQCBib29sIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmKQorYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3Qg
S1VSTCYgYSwgY29uc3QgS1VSTCYgYikKIHsKLSAgICAvLyBGSVhNRTogQWRkIFdURlVSTCBJbXBs
ZW1lbnRhdGlvbi4KLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhLmlzVmFsaWQoKSB8fCAh
Yi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBhLnByb3Rv
Y29sKCkgPT0gYi5wcm90b2NvbCgpCisgICAgICAgICAgICYmIGEuaG9zdCgpID09IGIuaG9zdCgp
CisgICAgICAgICAgICYmIGEucG9ydCgpID09IGIucG9ydCgpOwogfQogCiBTdHJpbmcgZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkxXVEZVUkxJbXBsLmgKaW5kZXggOTExNDFlNzQ2M2M0M2RhNzFmMzJiZGQzNzZiYzk1
ZWFjYjk2MGFmYS4uNWQzODA2NWZlMmE1ODhiZjVlMDVlNWYzNzljYjI4NWMyYjI0NjdiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMSW1wbC5oCkBAIC0yOCw3ICsyOCw5IEBA
CiAKICNpZiBVU0UoV1RGVVJMKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdXJsL1BhcnNlZFVSTC5oPgog
CkBAIC0zOCw4ICs0MCwxOCBAQCBjbGFzcyBLVVJMV1RGVVJMSW1wbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEtVUkxXVEZVUkxJbXBsPiB7CiBwdWJsaWM6CiAgICAgV1RGOjpQYXJzZWRVUkwgbV9wYXJz
ZWRVUkw7CiAgICAgU3RyaW5nIG1faW52YWxpZFVybFN0cmluZzsKKworICAgIFBhc3NSZWZQdHI8
S1VSTFdURlVSTEltcGw+IGNvcHkoKSBjb25zdDsKIH07CiAKK2lubGluZSBQYXNzUmVmUHRyPEtV
UkxXVEZVUkxJbXBsPiBLVVJMV1RGVVJMSW1wbDo6Y29weSgpIGNvbnN0Cit7CisgICAgUmVmUHRy
PEtVUkxXVEZVUkxJbXBsPiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBLVVJMV1RGVVJMSW1wbCk7Cisg
ICAgY2xvbmUtPm1fcGFyc2VkVVJMID0gbV9wYXJzZWRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAg
Y2xvbmUtPm1faW52YWxpZFVybFN0cmluZyA9IG1faW52YWxpZFVybFN0cmluZy5pc29sYXRlZENv
cHkoKTsKKyAgICByZXR1cm4gY2xvbmUucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoV1RGVVJMKQo=
</data>
<flag name="review"
          id="132879"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>