<?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>74381</bug_id>
          
          <creation_ts>2011-12-12 22:47:42 -0800</creation_ts>
          <short_desc>Upstream 3 files into WebCore/platform/blackberry</short_desc>
          <delta_ts>2011-12-13 21:23:08 -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>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mary Wu">mawu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519875</commentid>
    <comment_count>0</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-12 22:47:42 -0800</bug_when>
    <thetext>Upstream 3 files into WebCore/platform/blackberry:
ClipboardBlackBerry.cpp/h, PasteboardBlackBerry.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519880</commentid>
    <comment_count>1</comment_count>
      <attachid>118958</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-12 23:10:10 -0800</bug_when>
    <thetext>Created attachment 118958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520318</commentid>
    <comment_count>2</comment_count>
      <attachid>118958</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-13 13:10:20 -0800</bug_when>
    <thetext>Comment on attachment 118958
Patch

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

Looks very good, can be cleaned up a bit more I think.

&gt; Source/WebCore/platform/blackberry/ClipboardBlackBerry.cpp:2
&gt; + * Copyright (C) 2010 Research In Motion Limited. All rights reserved.

This was touched in 2011, may as well update that fact.

&gt; Source/WebCore/platform/blackberry/PasteboardBlackBerry.cpp:2
&gt; + * Copyright (C) 2009 Research In Motion Limited. All rights reserved.

This was touched in 2011, may as well update that fact.

&gt; Source/WebCore/platform/blackberry/PasteboardBlackBerry.cpp:91
&gt; +    String html = String::fromUTF8(BlackBerry::Platform::Clipboard::readHTML().c_str());

RefPtr&lt;DocumentFragment&gt; fragment could be declared here.

&gt; Source/WebCore/platform/blackberry/PasteboardBlackBerry.cpp:96
&gt; +        if (fragment)

Can write this like if (fragment = createFragmentFromMarkup(frame-&gt;document(), html, url, FragmentScriptingNotAllowed))

&gt; Source/WebCore/platform/blackberry/PasteboardBlackBerry.cpp:106
&gt; +    if (fragment) {

Can write this like if (fragment = createFragmentFromText(context.get(), text))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520600</commentid>
    <comment_count>3</comment_count>
      <attachid>119136</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-13 19:02:54 -0800</bug_when>
    <thetext>Created attachment 119136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520608</commentid>
    <comment_count>4</comment_count>
      <attachid>119136</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-13 19:21:58 -0800</bug_when>
    <thetext>Comment on attachment 119136
Patch

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520666</commentid>
    <comment_count>5</comment_count>
      <attachid>119136</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 21:23:02 -0800</bug_when>
    <thetext>Comment on attachment 119136
Patch

Clearing flags on attachment: 119136

Committed r102739: &lt;http://trac.webkit.org/changeset/102739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520667</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 21:23:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118958</attachid>
            <date>2011-12-12 23:10:10 -0800</date>
            <delta_ts>2011-12-13 19:02:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74381-20111213151006.patch</filename>
            <type>text/plain</type>
            <size>11680</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uOTgzNTQ2Y2Q2MDA4NWMxMTk1ODNlMWQzZTVkZWY2
MzgxZDQwMjVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTEyICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gMyBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeSwKKyAgICAgICAgQ2xpcGJvYXJk
QmxhY2tCZXJyeS5jcHAvaCwgUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yOgorICAg
ICAgICBNaWtlIEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CisKKyAgICAgICAgSW5pdGlhbCB1
cHN0cmVhbSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9D
bGlwYm9hcmRCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxhY2ti
ZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Js
YWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKwogMjAxMS0xMi0xMiAg
RXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQ29kZUdl
bmVyYXRvclY4LnBtIGRvZXMgbm90IGNvcnJlY3RseSB3b3JrIHdpdGggaW5oZXJpdGVkIEhhc0lu
ZGV4R2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0NsaXBib2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTdlYjhmOTYxZmUzNDdj
MzEwMjlkOTk0ZGMyYjM2MjQ3MjBjZjU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsx
LDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkQmxhY2tCZXJyeS5oIgorCisjaW5jbHVk
ZSAiRmlsZUxpc3QuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtQ2xpcGJvYXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxDbGlwYm9hcmRCbGFja0JlcnJ5PiBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjcmVh
dGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRU
eXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkQmxhY2tCZXJyeShwb2xp
Y3ksIGNsaXBib2FyZFR5cGUpKTsKK30KKworUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBib2Fy
ZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiwgRnJhbWUq
KQoreworICAgIHJldHVybiBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjcmVhdGUocG9saWN5LCBEcmFn
QW5kRHJvcCk7Cit9CisKK0NsaXBib2FyZEJsYWNrQmVycnk6OkNsaXBib2FyZEJsYWNrQmVycnko
Q2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSB0eXBlKQorOiBDbGlw
Ym9hcmQocG9saWN5LCB0eXBlKQoreworfQorCitDbGlwYm9hcmRCbGFja0JlcnJ5Ojp+Q2xpcGJv
YXJkQmxhY2tCZXJyeSgpCit7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xlYXJE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xp
cGJvYXJkOjpjbGVhckNsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpOworfQorCit2
b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyQWxsRGF0YSgpCit7CisgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xlYXJDbGlwYm9hcmQoKTsKK30KKworU3RyaW5nIENs
aXBib2FyZEJsYWNrQmVycnk6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNj
ZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OnJlYWRDbGlwYm9hcmRCeVR5
cGUodHlwZS51dGY4KCkuZGF0YSgpKS5jX3N0cigpKTsKK30KKworYm9vbCBDbGlwYm9hcmRCbGFj
a0JlcnJ5OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQor
eworICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dC51dGY4KCkuZGF0YSgpKTsKKyAg
ICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZUhUTUwodGV4dC51dGY4KCkuZGF0YSgpKTsKKyAgICBlbHNl
IGlmICh0eXBlID09ICJ0ZXh0L3VybCIpCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGlwYm9hcmQ6OndyaXRlVVJMKHRleHQudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0hhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRCbGFja0JlcnJ5Ojp0eXBlcygpIGNvbnN0
Cit7CisgICAgLy8gV2UgdXNlIGhhcmRjb2RlZCBsaXN0IGhlcmUgc2luY2UgdGhlcmUgc2VlbXMg
dG8gYmUgbm8gQVBJIHRvIGdldCB0aGUgbGlzdC4KKyAgICBIYXNoU2V0PFN0cmluZz4gcmV0Owor
ICAgIHJldC5hZGQoInRleHQvcGxhaW4iKTsKKyAgICByZXQuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAg
ICByZXQuYWRkKCJ0ZXh0L3VybCIpOworICAgIHJldHVybiByZXQ7Cit9CisKK1Bhc3NSZWZQdHI8
RmlsZUxpc3Q+IENsaXBib2FyZEJsYWNrQmVycnk6OmZpbGVzKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJk
QmxhY2tCZXJyeTo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JikgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIENsaXBib2FyZEJsYWNrQmVy
cnk6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYsIEZyYW1lKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENs
aXBib2FyZEJsYWNrQmVycnk6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiwgRnJhbWUqKQoreworICAgIEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVVUkwodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworfQorCit2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlUmFuZ2UoUmFuZ2UqLCBG
cmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDbGlwYm9hcmRCbGFj
a0JlcnJ5Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dC51dGY4KCkuZGF0
YSgpKTsKK30KKworYm9vbCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpoYXNEYXRhKCkKK3sKKyAgICBy
ZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6aGFzUGxhaW5UZXh0KCkgfHwg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6aGFzSFRNTCgpCisgICAgICAgIHx8IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6Omhhc1VSTCgpOworfQorCit2b2lkIENsaXBi
b2FyZEJsYWNrQmVycnk6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIGNvbnN0IEludFBvaW50
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENsaXBib2FyZEJsYWNrQmVy
cnk6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVycnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tCZXJy
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJmMzlmNDY1ZTBmZDFkYTZkYjYwZDg2YjI3ZGI2MmE1YmZiZDA2MWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Ns
aXBib2FyZEJsYWNrQmVycnkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgQ2xpcGJvYXJkQmxhY2tCZXJyeV9oCisjZGVm
aW5lIENsaXBib2FyZEJsYWNrQmVycnlfaAorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGll
bnQuaCIKKyNpbmNsdWRlICJDbGlwYm9hcmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBDbGlwYm9hcmRCbGFja0JlcnJ5IDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEJsYWNrQmVycnk+IGNyZWF0ZShDbGlwYm9hcmRB
Y2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUgPSBDb3B5QW5kUGFzdGUpOworICAgIHZpcnR1YWwg
fkNsaXBib2FyZEJsYWNrQmVycnkoKTsKKworICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKKyAgICBTdHJpbmcgZ2V0RGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgIGJvb2wgc2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisKKyAgICAvLyBleHRl
bnNpb25zIGJleW9uZCBJRSdzIEFQSQorICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5cGVz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygpIGNvbnN0
OworICAgIHZpcnR1YWwgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSopOworICAgIHZpcnR1YWwg
dm9pZCB3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKik7CisgICAgdmlydHVhbCB2b2lk
IHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGhhc0Rh
dGEoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBjb25z
dCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2VFbGVtZW50KE5vZGUq
LCBjb25zdCBJbnRQb2ludCYpOworCitwcml2YXRlOgorICAgIENsaXBib2FyZEJsYWNrQmVycnko
Q2xpcGJvYXJkQWNjZXNzUG9saWN5LCBDbGlwYm9hcmRUeXBlKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENsaXBib2FyZEJsYWNrQmVycnlfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFj
a0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWU0ZDYwYzNjNDQ5NWRiNTc0OGYyZjY4NDAzYTY5N2Zj
OGExMTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCisKKyNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGlwYm9hcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpCit7CisgICAg
c3RhdGljIFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQgPSBuZXcgUGFzdGVib2FyZCgpOworICAgIHJl
dHVybiBwYXN0ZWJvYXJkOworfQorCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKK3sKK30KKwor
Ym9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKK3sK
KyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBib2FyZCgpOwor
fQorCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIEtVUkwgY29uc3QmLCBTdHJp
bmcgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZyYW1lKiBmcmFt
ZSkKK3sKKyAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHQoKS51dGY4KCkuZGF0YSgpOworICAgIHN0ZDo6c3RyaW5nIGh0bWwgPSBjcmVhdGVNYXJrdXAo
c2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkudXRmOCgpLmRhdGEoKTsK
KyAgICBzdGQ6OnN0cmluZyB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKTsKKworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6Ondy
aXRlKHRleHQsIGh0bWwsIHVybCk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoS1VS
TCBjb25zdCYgdXJsLCBTdHJpbmcgY29uc3QmLCBGcmFtZSopCit7CisgICAgQVNTRVJUKCF1cmwu
aXNFbXB0eSgpKTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZVVS
TCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDbGlwYm9hcmQ6OndyaXRlUGxhaW5UZXh0KHRleHQudXRmOCgpLmRhdGEoKSk7Cit9CisK
K1N0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqKQoreworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OnJlYWRQbGFpblRl
eHQoKS5jX3N0cigpKTsKK30KKworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQYXN0ZWJv
YXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxSYW5nZT4gY29u
dGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCit7CisgICAg
Y2hvc2VQbGFpblRleHQgPSBmYWxzZTsKKworICAgIC8vIE5vdGU6IFdlIGFyZSBhYmxlIHRvIGNo
ZWNrIGlmIHRoZSBmb3JtYXQgZXhpc3RzIHByaW9yIHRvIHJlYWRpbmcgYnV0IHRoZSBjaGVjayAm
IHRoZSBlYXJseSByZXR1cm4KKyAgICAvLyBwYXRoIG9mIGdldF9jbGlwYm9hcmRfZGF0YSBhcmUg
dGhlIGV4YWN0IHNhbWUsIHNvIGp1c3QgdXNlIGdldF9jbGlwYm9hcmRfZGF0YSBhbmQgdmFsaWRh
dGUgdGhlCisgICAgLy8gcmV0dXJuIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgZGF0YSB3YXMg
cHJlc2VudC4KKyAgICBTdHJpbmcgaHRtbCA9IFN0cmluZzo6ZnJvbVVURjgoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaXBib2FyZDo6cmVhZEhUTUwoKS5jX3N0cigpKTsKKyAgICBpZiAoIWh0bWwu
aXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyB1cmwgPSBTdHJpbmc6OmZyb21VVEY4KEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OnJlYWRVUkwoKS5jX3N0cigpKTsKKyAgICAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwKGZyYW1lLT5kb2N1bWVudCgpLCBodG1sLCB1cmwsIEZyYWdtZW50U2NyaXB0aW5nTm90QWxs
b3dlZCk7CisKKyAgICAgICAgaWYgKGZyYWdtZW50KQorICAgICAgICAgICAgcmV0dXJuIGZyYWdt
ZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFN0cmluZyB0ZXh0ID0gU3RyaW5nOjpmcm9tVVRGOChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpyZWFkUGxhaW5UZXh0KCkuY19zdHIoKSk7CisgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChjb250ZXh0LmdldCgpLCB0ZXh0KTsKKworICAgIGlmIChmcmFnbWVudCkgeworICAgICAgICBj
aG9zZVBsYWluVGV4dCA9IHRydWU7CisgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119136</attachid>
            <date>2011-12-13 19:02:54 -0800</date>
            <delta_ts>2011-12-13 21:23:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74381-20111214110249.patch</filename>
            <type>text/plain</type>
            <size>11641</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uZTRmMTBlNGFlMjYxNDA0NTY4OGU5MjBiM2NmNGUx
MzU4YmE1M2YwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTEzICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gMyBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBDbGlwYm9hcmRC
bGFja0JlcnJ5LmNwcC9oLCBQYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzgxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFpbiBjb250cmlidXRvcjoKKyAgICAg
ICAgTWlrZSBGZW50b24gPG1pZmVudG9uQHJpbS5jb20+CisKKyAgICAgICAgSW5pdGlhbCB1cHN0
cmVhbSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlw
Ym9hcmRCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUGFzdGVib2FyZEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKwogMjAxMS0xMi0xMiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQ29kZUdlbmVy
YXRvclY4LnBtIGRvZXMgbm90IGNvcnJlY3RseSB3b3JrIHdpdGggaW5oZXJpdGVkIEhhc0luZGV4
R2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Ns
aXBib2FyZEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjEyNzM3NmU2ZWIxZDI1ZTlh
YzZkY2JhNGJmMDQ4YWRmMjdiMjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9DbGlwYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDEz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkQmxhY2tCZXJyeS5oIgorCisjaW5j
bHVkZSAiRmlsZUxpc3QuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpcGJvYXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxDbGlwYm9hcmRCbGFja0JlcnJ5PiBDbGlwYm9hcmRCbGFja0JlcnJ5Ojpj
cmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkQmxhY2tCZXJyeShw
b2xpY3ksIGNsaXBib2FyZFR5cGUpKTsKK30KKworUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IENsaXBi
b2FyZDo6Y3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIERyYWdEYXRhKiwgRnJh
bWUqKQoreworICAgIHJldHVybiBDbGlwYm9hcmRCbGFja0JlcnJ5OjpjcmVhdGUocG9saWN5LCBE
cmFnQW5kRHJvcCk7Cit9CisKK0NsaXBib2FyZEJsYWNrQmVycnk6OkNsaXBib2FyZEJsYWNrQmVy
cnkoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgQ2xpcGJvYXJkVHlwZSB0eXBlKQorOiBD
bGlwYm9hcmQocG9saWN5LCB0eXBlKQoreworfQorCitDbGlwYm9hcmRCbGFja0JlcnJ5Ojp+Q2xp
cGJvYXJkQmxhY2tCZXJyeSgpCit7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkQmxhY2tCZXJyeTo6Y2xl
YXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q2xpcGJvYXJkOjpjbGVhckNsaXBib2FyZEJ5VHlwZSh0eXBlLnV0ZjgoKS5kYXRhKCkpOworfQor
Cit2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OmNsZWFyQWxsRGF0YSgpCit7CisgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xlYXJDbGlwYm9hcmQoKTsKK30KKworU3RyaW5n
IENsaXBib2FyZEJsYWNrQmVycnk6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBz
dWNjZXNzKSBjb25zdAoreworICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OnJlYWRDbGlwYm9hcmRC
eVR5cGUodHlwZS51dGY4KCkuZGF0YSgpKS5jX3N0cigpKTsKK30KKworYm9vbCBDbGlwYm9hcmRC
bGFja0JlcnJ5OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
KQoreworICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dC51dGY4KCkuZGF0YSgpKTsK
KyAgICBlbHNlIGlmICh0eXBlID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q2xpcGJvYXJkOjp3cml0ZUhUTUwodGV4dC51dGY4KCkuZGF0YSgpKTsKKyAgICBl
bHNlIGlmICh0eXBlID09ICJ0ZXh0L3VybCIpCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpDbGlwYm9hcmQ6OndyaXRlVVJMKHRleHQudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0hhc2hTZXQ8U3RyaW5nPiBDbGlwYm9hcmRCbGFja0JlcnJ5Ojp0eXBlcygpIGNv
bnN0Cit7CisgICAgLy8gV2UgdXNlIGhhcmRjb2RlZCBsaXN0IGhlcmUgc2luY2UgdGhlcmUgc2Vl
bXMgdG8gYmUgbm8gQVBJIHRvIGdldCB0aGUgbGlzdC4KKyAgICBIYXNoU2V0PFN0cmluZz4gcmV0
OworICAgIHJldC5hZGQoInRleHQvcGxhaW4iKTsKKyAgICByZXQuYWRkKCJ0ZXh0L2h0bWwiKTsK
KyAgICByZXQuYWRkKCJ0ZXh0L3VybCIpOworICAgIHJldHVybiByZXQ7Cit9CisKK1Bhc3NSZWZQ
dHI8RmlsZUxpc3Q+IENsaXBib2FyZEJsYWNrQmVycnk6OmZpbGVzKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitEcmFnSW1hZ2VSZWYgQ2xpcGJv
YXJkQmxhY2tCZXJyeTo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JikgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIENsaXBib2FyZEJsYWNr
QmVycnk6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIEZyYW1lKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IENsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiwgRnJhbWUqKQoreworICAgIEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7CisgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVVUkwodXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworfQorCit2b2lkIENsaXBib2FyZEJsYWNrQmVycnk6OndyaXRlUmFuZ2UoUmFuZ2Uq
LCBGcmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBDbGlwYm9hcmRC
bGFja0JlcnJ5Ojp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6d3JpdGVQbGFpblRleHQodGV4dC51dGY4KCku
ZGF0YSgpKTsKK30KKworYm9vbCBDbGlwYm9hcmRCbGFja0JlcnJ5OjpoYXNEYXRhKCkKK3sKKyAg
ICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6aGFzUGxhaW5UZXh0KCkg
fHwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6aGFzSFRNTCgpCisgICAgICAgIHx8
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6Omhhc1VSTCgpOworfQorCit2b2lkIENs
aXBib2FyZEJsYWNrQmVycnk6OnNldERyYWdJbWFnZShDYWNoZWRJbWFnZSosIGNvbnN0IEludFBv
aW50JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENsaXBib2FyZEJsYWNr
QmVycnk6OnNldERyYWdJbWFnZUVsZW1lbnQoTm9kZSosIGNvbnN0IEludFBvaW50JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0NsaXBib2FyZEJsYWNrQmVy
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ2xpcGJvYXJkQmxhY2tC
ZXJyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJmMzlmNDY1ZTBmZDFkYTZkYjYwZDg2YjI3ZGI2MmE1YmZiZDA2
MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0NsaXBib2FyZEJsYWNrQmVycnkuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgQ2xpcGJvYXJkQmxhY2tCZXJyeV9oCisj
ZGVmaW5lIENsaXBib2FyZEJsYWNrQmVycnlfaAorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaCIKKyNpbmNsdWRlICJDbGlwYm9hcmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDbGlwYm9hcmRCbGFja0JlcnJ5IDogcHVibGljIENsaXBib2FyZCwgcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50IHsKK1dURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEJsYWNrQmVycnk+IGNyZWF0ZShDbGlwYm9h
cmRBY2Nlc3NQb2xpY3ksIENsaXBib2FyZFR5cGUgPSBDb3B5QW5kUGFzdGUpOworICAgIHZpcnR1
YWwgfkNsaXBib2FyZEJsYWNrQmVycnkoKTsKKworICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSk7CisgICAgdm9pZCBjbGVhckFsbERhdGEoKTsKKyAgICBTdHJpbmcgZ2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0OworICAgIGJvb2wgc2V0
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CisKKyAgICAvLyBl
eHRlbnNpb25zIGJleW9uZCBJRSdzIEFQSQorICAgIHZpcnR1YWwgSGFzaFNldDxTdHJpbmc+IHR5
cGVzKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlcygpIGNv
bnN0OworICAgIHZpcnR1YWwgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVu
dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGcmFtZSopOworICAgIHZpcnR1
YWwgdm9pZCB3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKik7CisgICAgdmlydHVhbCB2
b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIGhh
c0RhdGEoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoQ2FjaGVkSW1hZ2UqLCBj
b25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2VFbGVtZW50KE5v
ZGUqLCBjb25zdCBJbnRQb2ludCYpOworCitwcml2YXRlOgorICAgIENsaXBib2FyZEJsYWNrQmVy
cnkoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBDbGlwYm9hcmRUeXBlKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENsaXBib2FyZEJsYWNrQmVycnlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tC
ZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRC
bGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzY1YTZjNDM1Yzg3YjA5OGZiZjQ3NjYxNWViNzI2
YzZlMDdiOTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAibWFya3VwLmgi
CisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGlwYm9hcmQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgp
Cit7CisgICAgc3RhdGljIFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQgPSBuZXcgUGFzdGVib2FyZCgp
OworICAgIHJldHVybiBwYXN0ZWJvYXJkOworfQorCitQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkK
K3sKK30KKworYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OmNs
ZWFyKCkKK3sKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBi
b2FyZCgpOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIEtVUkwgY29u
c3QmLCBTdHJpbmcgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wsIEZy
YW1lKiBmcmFtZSkKK3sKKyAgICBzdGQ6OnN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3RlZFRleHQoKS51dGY4KCkuZGF0YSgpOworICAgIHN0ZDo6c3RyaW5nIGh0bWwgPSBjcmVh
dGVNYXJrdXAoc2VsZWN0ZWRSYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkudXRmOCgp
LmRhdGEoKTsKKyAgICBzdGQ6OnN0cmluZyB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKKworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlw
Ym9hcmQ6OndyaXRlKHRleHQsIGh0bWwsIHVybCk7Cit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVVUkwoS1VSTCBjb25zdCYgdXJsLCBTdHJpbmcgY29uc3QmLCBGcmFtZSopCit7CisgICAgQVNT
RVJUKCF1cmwuaXNFbXB0eSgpKTsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJk
Ojp3cml0ZVVSTCh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OndyaXRlUGxhaW5UZXh0KHRleHQudXRmOCgpLmRhdGEo
KSk7Cit9CisKK1N0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqKQoreworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGlwYm9hcmQ6OnJl
YWRQbGFpblRleHQoKS5jX3N0cigpKTsKK30KKworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxS
YW5nZT4gY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
Cit7CisgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKKworICAgIC8vIE5vdGU6IFdlIGFyZSBh
YmxlIHRvIGNoZWNrIGlmIHRoZSBmb3JtYXQgZXhpc3RzIHByaW9yIHRvIHJlYWRpbmcgYnV0IHRo
ZSBjaGVjayAmIHRoZSBlYXJseSByZXR1cm4KKyAgICAvLyBwYXRoIG9mIGdldF9jbGlwYm9hcmRf
ZGF0YSBhcmUgdGhlIGV4YWN0IHNhbWUsIHNvIGp1c3QgdXNlIGdldF9jbGlwYm9hcmRfZGF0YSBh
bmQgdmFsaWRhdGUgdGhlCisgICAgLy8gcmV0dXJuIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUg
ZGF0YSB3YXMgcHJlc2VudC4KKyAgICBTdHJpbmcgaHRtbCA9IFN0cmluZzo6ZnJvbVVURjgoQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6cmVhZEhUTUwoKS5jX3N0cigpKTsKKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQ7CisgICAgaWYgKCFodG1sLmlzRW1wdHko
KSkgeworICAgICAgICBTdHJpbmcgdXJsID0gU3RyaW5nOjpmcm9tVVRGOChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q2xpcGJvYXJkOjpyZWFkVVJMKCkuY19zdHIoKSk7CisgICAgICAgIGlmIChmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS0+ZG9jdW1lbnQoKSwgaHRtbCwg
dXJsLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZy
YWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFN0cmluZyB0ZXh0ID0gU3RyaW5nOjpmcm9tVVRGOChCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpyZWFkUGxhaW5UZXh0KCkuY19zdHIoKSk7Cisg
ICAgaWYgKGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LmdldCgpLCB0
ZXh0KSkgeworICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7CisgICAgICAgIHJldHVybiBm
cmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>