<?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>36681</bug_id>
          
          <creation_ts>2010-03-26 15:18:52 -0700</creation_ts>
          <short_desc>&quot;new Audio()&quot; doesn&apos;t work with plug-in backed media engine</short_desc>
          <delta_ts>2010-03-26 18:22:54 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204827</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 15:18:52 -0700</bug_when>
    <thetext>&lt;audio&gt; and &lt;video&gt; elements in WebKit with plug-in backed media engine (PLUGIN_PROXY_FOR_VIDEO) don&apos;t work until the element has been inserted into the DOM, because plug-ins don&apos;t work when not in the DOM. This means that &quot;new Audio()&quot; will create an audio element, but the plug-in that implements the media engine won&apos;t be instantiated unless the element is inserted into the DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204829</commentid>
    <comment_count>1</comment_count>
      <attachid>51786</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 15:24:49 -0700</bug_when>
    <thetext>Created attachment 51786
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204830</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-26 15:26:19 -0700</bug_when>
    <thetext>Attachment 51786 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/rendering/RenderLayerCompositor.cpp:50:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/html/HTMLMediaElement.cpp:1965:  One space before end of line comments  [whitespace/comments] [5]
WebCore/loader/FrameLoader.cpp:1434:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 3 in 11 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>204842</commentid>
    <comment_count>3</comment_count>
      <attachid>51790</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 15:57:17 -0700</bug_when>
    <thetext>Created attachment 51790
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204846</commentid>
    <comment_count>4</comment_count>
      <attachid>51790</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-26 16:07:19 -0700</bug_when>
    <thetext>Comment on attachment 51790
Revised patch




&gt; Index: WebCore/html/HTMLMediaElement.cpp
&gt; ===================================================================

&gt; +    if (m_proxyWidget)
&gt; +        mediaRenderer-&gt;setWidget(m_proxyWidget);

I&apos;d like to see a comment that explains why you hold onto the m_proxyWidget like this.

&gt; +void HTMLMediaElement::allocateMediaPlayerIfNecessary()

I&apos;d prefer a name like &quot;ensureMediaPlayer()&quot; for a method like this.

&gt; +void HTMLMediaElement::getPluginProxyParams(KURL&amp; url, Vector&lt;String&gt;&amp; names, Vector&lt;String&gt;&amp; values)
&gt;  {
&gt; -    KURL initialSrc = document()-&gt;completeURL(getAttribute(srcAttr));
&gt; -    
&gt; -    if (!initialSrc.isValid())
&gt; -        initialSrc = selectNextSourceChild(0, DoNothing);
&gt; +    Frame* frame = document()-&gt;frame();
&gt; +    FrameLoader* loader = frame ? frame-&gt;loader() : 0;
&gt;  
&gt; -    m_currentSrc = initialSrc.string();
&gt; +    if (isVideo()) {
&gt; +        String poster = static_cast&lt;HTMLVideoElement*&gt;(this)-&gt;poster();

I don&apos;t really like seeing casts to the subclass here; it suggests that the code would be better in a virtual method.

&gt; +                names.append(&quot;_media_element_poster_&quot;);

Are these magic strings documented anywhere, or could they be shared in a header? Who reads them?

&gt; Index: WebCore/html/HTMLMediaElement.h
&gt; ===================================================================

&gt; +    void deliverNotification(MediaPlayerProxyNotificationType notification);
&gt; +    void setMediaPlayerProxy(WebMediaPlayerProxy* proxy);

No need for the parameter names here.

&gt; +    void getPluginProxyParams(KURL&amp; url, Vector&lt;String&gt;&amp; names, Vector&lt;String&gt;&amp; values);

&apos;url&apos; is not necessary.

&gt; Index: WebCore/rendering/RenderVideo.h
&gt; ===================================================================
&gt; --- WebCore/rendering/RenderVideo.h	(revision 56397)
&gt; +++ WebCore/rendering/RenderVideo.h	(working copy)
&gt; @@ -42,7 +42,9 @@ public:
&gt;  
&gt;      void videoSizeChanged();
&gt;      IntRect videoBox() const;
&gt; -    
&gt; +
&gt; +    static IntSize defaultSize();

Can this method be private?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204893</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 18:22:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; +
&gt; &gt; +    static IntSize defaultSize();
&gt; 
&gt; Can this method be private?
&gt; 
No, it is called by FrameLoader::loadMediaPlayerProxyPlugin.

&gt; r=me
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204894</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-26 18:22:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/56650</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51786</attachid>
            <date>2010-03-26 15:24:49 -0700</date>
            <delta_ts>2010-03-26 15:57:17 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch_1.txt</filename>
            <type>text/plain</type>
            <size>20593</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjY0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDMtMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMjA1ODQ+IAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2ODEKKyAgICAgICAgIm5l
dyBBdWRpbygpIiBkb2Vzbid0IHdvcmsgd2l0aCBwbHVnLWluIGJhY2tlZCBtZWRpYSBlbmdpbmUu
CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBwbHVnLWluIGJhY2tlZCA8dmlkZW8+IGFuZCA8YXVk
aW8+IGVsZW1lbnRzIHRvIGJlIGluIHRoZSBkb2N1bWVudCB0byBwbGF5LgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIG1fcHJveHlXaWRnZXQKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogU2V0IHJlbmRl
cmVyIHdpZGdldCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuCisgICAgICAgIGFsbG9jYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6IENhbGwgY3Jl
YXRlTWVkaWFQbGF5ZXJQcm94eSB0byBtYWtlIHN1cmUgd2UKKyAgICAgICAgaGF2ZSBhIHBsdWct
aW4gcHJveHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3Vy
Y2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFsbG9jYXRl
TWVkaWFQbGF5ZXJJZk5lY2Vzc2FyeSk6IEFsbG9jYXRlIG1lZGlhIHBsYXllci4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxheWVyUHJveHkpOiBDYWxsIGFs
bG9jYXRlTWVkaWFQbGF5ZXJJZk5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKTogTmV3LCByZXR1cm4gdGhlIHVybCBhbmQg
cGFyYW1zIHZlY3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4pOiBDYWxsIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5KTogTmV3
LCBhbGxvY2F0ZSB0aGUgcHJveHkgd2lkZ2V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxh
eWVyUHJveHlQbHVnaW4pOiBBZGQgZGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9QbHVnSW5FbGVtZW50KTogRG9uJ3Qg
YWxsb3cgYW4gYXVkaW8gb3IgdmlkZW8gZWxlbWVudCB0byBiZSBjYXN0IHRvIGEgcGx1Zy1pbiBl
bGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKTog
TmV3LCBhbGxvY2F0ZSBhIG1lZGlhIHBsYXllciBwcm94eSBwbHVnLWluLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6IERlY2xhcmUgbG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4u
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDogRGVjbGFyZSBjcmVhdGVN
ZWRpYVBsYXllclByb3h5UGx1Z2luLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1
cGRhdGVXaWRnZXQpOiBDYWxsIGxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luIHdoZW4gcGFzc2Vk
IGFuCisgICAgICAgIGF1ZGlvIG9yIHZpZGVvIG5vZGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKToKKworICAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVv
OjpSZW5kZXJWaWRlbyk6IEdldCBkZWZhdWx0IHdpZHRoIGFuZCBoZWlnaHQgZnJvbSBkZWZhdWx0
U2l6ZS4KKyAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6ZGVmYXVsdFNpemUpOiBOZXcs
IHJldHVybiB0aGUgc3BlYyBkZWZpbmVkIGRlZmF1bHQgd2lkdGggYW5kIGhlaWdodC4KKyAgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTAtMDMtMjYgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5
YXR0LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTYzOTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw2ICsxMDEsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAg
ICAgLCBtX2xvYWRTdGF0ZShXYWl0aW5nRm9yU291cmNlKQogICAgICwgbV9jdXJyZW50U291cmNl
Tm9kZSgwKQogICAgICwgbV9wbGF5ZXIoMCkKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKKyAgICAsIG1fcHJveHlXaWRnZXQoMCkKKyNlbmRpZgogICAgICwgbV9yZXN0cmljdGlv
bnMoTm9SZXN0cmljdGlvbnMpCiAgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5ZXI6OkF1dG8pCiAg
ICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC0yNzUsNyArMjc4LDEwIEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKIFJlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlckVtYmVkZGVkT2JqZWN0KHRoaXMpOworICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBt
ZWRpYVJlbmRlcmVyID0gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRkZWRPYmplY3QodGhpcyk7Cisg
ICAgaWYgKG1fcHJveHlXaWRnZXQpCisgICAgICAgIG1lZGlhUmVuZGVyZXItPnNldFdpZGdldCht
X3Byb3h5V2lkZ2V0KTsKKyAgICByZXR1cm4gbWVkaWFSZW5kZXJlcjsKICNlbHNlCiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhKHRoaXMpOwogI2VuZGlmCkBAIC0zMjEsNiArMzI3
LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGUKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogeworI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQorICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKKyNlbmRpZgorCiAg
ICAgaWYgKG1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBwcmVw
YXJlRm9yTG9hZCgpOwpAQCAtNjEzLDggKzYyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bG9hZFJlc291cmNlKGNvbnMKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAg
ICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwogI2Vsc2UKLSAgICBpZiAo
IW1fcGxheWVyKQotICAgICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhpcyk7
CisgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgpOwogI2VuZGlmCiAKICAgICBpZiAoIWF1dG9w
bGF5KCkpCkBAIC0xODY4LDYgKzE4NzcsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9j
ZXNzaW5nVXNlckdlcwogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YWxsb2NhdGVNZWRpYVBsYXllcklmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVh
dGUodGhpcyk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVsaXZlck5vdGlmaWNhdGlv
bihNZWRpYVBsYXllclByb3h5Tm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb24pCiB7CiAgICAg
aWYgKG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvblBsYXlQYXVzZUJ1dHRv
blByZXNzZWQpIHsKQEAgLTE4ODEsMzQgKzE4OTYsNzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkZWxpdmVyTm90aWZpY2F0aQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxh
eWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpCiB7Ci0gICAgaWYgKG1fcGxheWVy
KQotICAgICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94eShwcm94eSk7CisgICAgYWxs
b2NhdGVNZWRpYVBsYXllcklmTmVjZXNzYXJ5KCk7CisgICAgbV9wbGF5ZXItPnNldE1lZGlhUGxh
eWVyUHJveHkocHJveHkpOwogfQogCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6aW5pdGlhbFVS
TCgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKEtVUkwmIHVy
bCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgdmFsdWVzKQogewotICAg
IEtVUkwgaW5pdGlhbFNyYyA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShz
cmNBdHRyKSk7Ci0gICAgCi0gICAgaWYgKCFpbml0aWFsU3JjLmlzVmFsaWQoKSkKLSAgICAgICAg
aW5pdGlhbFNyYyA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgwLCBEb05vdGhpbmcpOworICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGZyYW1lID8gZnJhbWUtPmxvYWRlcigpIDogMDsKIAotICAgIG1fY3VycmVudFNyYyA9IGlu
aXRpYWxTcmMuc3RyaW5nKCk7CisgICAgaWYgKGlzVmlkZW8oKSkgeworICAgICAgICBTdHJpbmcg
cG9zdGVyID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpLT5wb3N0ZXIoKTsK
KyAgICAgICAgaWYgKCFwb3N0ZXIuaXNFbXB0eSgpICYmIGxvYWRlcikgeworICAgICAgICAgICAg
S1VSTCBwb3N0ZXJVUkwgPSBsb2FkZXItPmNvbXBsZXRlVVJMKHBvc3Rlcik7CisgICAgICAgICAg
ICBpZiAocG9zdGVyVVJMLmlzVmFsaWQoKSAmJiBsb2FkZXItPndpbGxMb2FkTWVkaWFFbGVtZW50
VVJMKHBvc3RlclVSTCkpIHsKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoIl9tZWRpYV9l
bGVtZW50X3Bvc3Rlcl8iKTsKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHBvc3RlclVS
TC5zdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1
cm4gaW5pdGlhbFNyYzsKKyAgICBpZiAoY29udHJvbHMoKSkgeworICAgICAgICBuYW1lcy5hcHBl
bmQoIl9tZWRpYV9lbGVtZW50X2NvbnRyb2xzXyIpOworICAgICAgICB2YWx1ZXMuYXBwZW5kKCJ0
cnVlIik7CisgICAgfQorCisgICAgdXJsID0gc3JjKCk7CisgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICFpc1NhZmVUb0xvYWRVUkwodXJsLCBDb21wbGFpbikpCisgICAgICAgIHVybCA9IHNlbGVj
dE5leHRTb3VyY2VDaGlsZCgwLCBEb05vdGhpbmcpOworCisgICAgbV9jdXJyZW50U3JjID0gdXJs
LnN0cmluZygpOworICAgIGlmICh1cmwuaXNWYWxpZCgpICYmIGxvYWRlciAmJiBsb2FkZXItPndp
bGxMb2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5kKCJfbWVk
aWFfZWxlbWVudF9zcmNfIik7CisgICAgICAgIHZhbHVlcy5hcHBlbmQobV9jdXJyZW50U3JjKTsK
KyAgICB9CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKIHsKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgaWYg
KCFtX3BsYXllcikKLSAgICAgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMp
OwotICAgIAogICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICBpZiAo
bV9uZWVkV2lkZ2V0VXBkYXRlICYmIHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyRW1iZWRk
ZWRPYmplY3QocmVuZGVyZXIoKSktPnVwZGF0ZVdpZGdldCh0cnVlKTsKKyAgICBjcmVhdGVNZWRp
YVBsYXllclByb3h5KCk7CiB9CiAKLSNlbmRpZgordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5KCkKK3sKKyAgICBhbGxvY2F0ZU1lZGlhUGxheWVySWZOZWNlc3Nh
cnkoKTsKKworICAgIGlmICghaW5Eb2N1bWVudCgpICYmIG1fcHJveHlXaWRnZXQpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX25lZWRXaWRnZXRVcGRhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CisgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lID8gZnJhbWUtPmxvYWRlcigpIDogMDsK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmw7CisgICAg
VmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVl
czsKKworICAgIGdldFBsdWdpblByb3h5UGFyYW1zKHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMpOworICAgIG1fcHJveHlXaWRnZXQgPSBsb2FkZXItPmxvYWRNZWRpYVBsYXllclByb3h5UGx1
Z2luKHRoaXMsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOworICAgIGlmIChtX3Byb3h5
V2lkZ2V0KQorICAgICAgICBtX25lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsKK30KKyNlbmRpZiAg
Ly8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2
aXNpb24gNTYzOTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKKyNpbmNsdWRlICJNZWRpYVBsYXllclByb3h5LmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKQEAgLTM5LDYgKzQzLDkgQEAgY2xhc3Mg
SFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKIGNsYXNz
IFRpbWVSYW5nZXM7CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCitjbGFzcyBX
aWRnZXQ7CisjZW5kaWYKIAogLy8gRklYTUU6IFRoZSBpbmhlcml0YW5jZSBmcm9tIE1lZGlhUGxh
eWVyQ2xpZW50IGhlcmUgc2hvdWxkIGJlIHByaXZhdGUgaW5oZXJpdGFuY2UuCiAvLyBCdXQgaXQg
Y2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVtIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCBjbGFz
cyBpcyBmaXhlZCBzbyBpdApAQCAtMTM5LDExICsxNDYsMTMgQEAgcHVibGljOgogICAgIGZsb2F0
IHBlcmNlbnRMb2FkZWQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQorICAgIHZvaWQgYWxsb2NhdGVNZWRpYVBsYXllcklmTmVjZXNzYXJ5KCk7CiAgICAgdm9p
ZCBzZXROZWVkV2lkZ2V0VXBkYXRlKGJvb2wgbmVlZFdpZGdldFVwZGF0ZSkgeyBtX25lZWRXaWRn
ZXRVcGRhdGUgPSBuZWVkV2lkZ2V0VXBkYXRlOyB9Ci0gICAgdm9pZCBkZWxpdmVyTm90aWZpY2F0
aW9uKE1lZGlhUGxheWVyUHJveHlOb3RpZmljYXRpb25UeXBlKTsKLSAgICB2b2lkIHNldE1lZGlh
UGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSopOwotICAgIFN0cmluZyBpbml0aWFsVVJM
KCk7CisgICAgdm9pZCBkZWxpdmVyTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJveHlOb3RpZmlj
YXRpb25UeXBlIG5vdGlmaWNhdGlvbik7CisgICAgdm9pZCBzZXRNZWRpYVBsYXllclByb3h5KFdl
Yk1lZGlhUGxheWVyUHJveHkqIHByb3h5KTsKKyAgICB2b2lkIGdldFBsdWdpblByb3h5UGFyYW1z
KEtVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgdmFsdWVz
KTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgdm9pZCBj
cmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1Np
bmdsZVNlY3VyaXR5T3JpZ2luKCk7IH0KQEAgLTMwNyw2ICszMTYsOSBAQCBwcml2YXRlOgogICAg
IEhUTUxTb3VyY2VFbGVtZW50KiBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIAogICAgIE93blB0
cjxNZWRpYVBsYXllcj4gbV9wbGF5ZXI7CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCisgICAgUmVmUHRyPFdpZGdldD4gbV9wcm94eVdpZGdldDsKKyNlbmRpZgogCiAgICAgQmVo
YXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnM7CiAgICAgCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAkocmV2aXNpb24gNTYzOTcpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpIHsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4gMDsgfQorI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1l
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgogCiAgICAgdmlydHVh
bCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJikgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw5IEBACiAjaW5jbHVk
ZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2VuZGlmCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgpAQCAtODIsNiArODUsOSBAQAogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaCIKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyNpbmNsdWRl
ICJSZW5kZXJWaWRlby5oIgorI2VuZGlmCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0x
MzQzLDE0ICsxMzQ5LDggQEAgc3RhdGljIEhUTUxQbHVnSW5FbGVtZW50KiB0b1BsdWdJbkVsZW1l
bgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKLSAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcp
IHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIAotICAgICAgICB8fCBub2RlLT5oYXNUYWdO
YW1lKHZpZGVvVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKQotICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykpOwotI2Vsc2UKICAgICBBU1NFUlQobm9kZS0+aGFz
VGFnTmFtZShvYmplY3RUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIAogICAgICAg
ICB8fCBub2RlLT5oYXNUYWdOYW1lKGFwcGxldFRhZykpOwotI2VuZGlmCiAKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQqPihub2RlKTsKIH0KQEAgLTEzNzYsNiArMTM3
NiwxMCBAQCBib29sIEZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKFJlbmRlckVtYmVkCiAgICAgICAg
IGlmICh3aWRnZXQpIHsKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRXaWRnZXQod2lkZ2V0KTsK
ICAgICAgICAgICAgIG1fY29udGFpbnNQbHVnSW5zID0gdHJ1ZTsKKworI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQorICAgICAgICAgICAgcmVuZGVyZXItPm5vZGUoKS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisjZW5kaWYKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0U2hvd3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9y
KHRydWUpOwogICAgIH0KQEAgLTEzODMsNiArMTM4Nyw0OCBAQCBib29sIEZyYW1lTG9hZGVyOjps
b2FkUGx1Z2luKFJlbmRlckVtYmVkCiAgICAgcmV0dXJuIHdpZGdldCAhPSAwOwogfQogCisjaWYg
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVM
b2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
IHVybCwgCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK3sKKyAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShhdWRpb1RhZykpOworCisgICAgaWYgKCFtX2Zy
YW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5jYW5Mb2FkT2JqZWN0KHVybC5zdHJpbmcoKSkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgS1VSTCBjb21wbGV0ZWRVUkw7CisgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKQorICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwor
CisgICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6Y2FuTG9hZChjb21wbGV0ZWRVUkwsIFN0cmluZygp
LCBmcmFtZSgpLT5kb2N1bWVudCgpKSkgeworICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9j
YWxMb2FkRmFpbGVkKG1fZnJhbWUsIGNvbXBsZXRlZFVSTC5zdHJpbmcoKSk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBSZW5kZXJQYXJ0KiByZW5k
ZXJlciA9IHRvUmVuZGVyUGFydChub2RlLT5yZW5kZXJlcigpKTsKKyAgICBJbnRTaXplIHNpemU7
CisKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIHNpemUgPSBJbnRTaXplKHJlbmRlcmVyLT5j
b250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSk7CisgICAgZWxzZSBpZiAo
bWVkaWFFbGVtZW50LT5pc1ZpZGVvKCkpCisgICAgICAgIHNpemUgPSBSZW5kZXJWaWRlbzo6ZGVm
YXVsdFNpemUoKTsKKworICAgIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMKTsKKworICAgIFJlZlB0cjxX
aWRnZXQ+IHdpZGdldCA9IG1fY2xpZW50LT5jcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKHNp
emUsIG1lZGlhRWxlbWVudCwgY29tcGxldGVkVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gt
bWVkaWEtZWxlbWVudC1wcm94eS1wbHVnaW4iKTsKKworICAgIGlmICh3aWRnZXQgJiYgcmVuZGVy
ZXIpIHsKKyAgICAgICAgcmVuZGVyZXItPnNldFdpZGdldCh3aWRnZXQpOworICAgICAgICBtX2Nv
bnRhaW5zUGx1Z0lucyA9IHRydWU7CisgICAgICAgIHJlbmRlcmVyLT5ub2RlKCktPnNldE5lZWRz
U3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgIH0KKworICAgIHJldHVybiB3
aWRnZXQgPyB3aWRnZXQucmVsZWFzZSgpIDogMDsKK30KKyNlbmRpZiAgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCisKIFN0cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdSZWZlcnJl
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3V0Z29pbmdSZWZlcnJlcjsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gNTYzOTcpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw5IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVy
RWxlbWVudDsKIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgTmF2aWdh
dGlvbkFjdGlvbjsKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKK2NsYXNzIE5v
ZGU7CisjZW5kaWYKIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0OwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwpAQCAtMzIwLDYgKzMyMywxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIG9wZW4oQ2FjaGVkRnJhbWVCYXNlJik7CiAKKyNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKKyAgICBQYXNzUmVmUHRyPFdpZGdldD4gbG9hZE1lZGlhUGxheWVy
UHJveHlQbHVnaW4oTm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKKyNlbmRpZgorCiAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGVzZSByZWFsbHkgYmUgcHVibGljPwogICAgIHZvaWQgY29t
cGxldGVkKCk7CiAgICAgYm9vbCBhbGxBbmNlc3RvcnNBcmVDb21wbGV0ZSgpIGNvbnN0OyAvLyBp
bmNsdWRpbmcgdGhpcwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA1NjM5NykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDYgKzU1LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhpc3RvcnlJdGVtOwogICAgIGNsYXNzIEhU
TUxBcHBsZXRFbGVtZW50OwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKKyNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OworI2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAgY2xhc3MgSW50U2l6
ZTsKICAgICBjbGFzcyBLVVJMOwpAQCAtMjI2LDYgKzIyOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyopIGNvbnN0IHsgfQorI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVk
aWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSA9IDA7CisjZW5kaWYKIAogICAgICAgICB2aXJ0
dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBvdmVy
cmlkZU1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsMjcgKzMy
MywxMSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1cGRhdGVXaWRnZXQoCiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pICAgICAgICAKICAgICBlbHNlIGlmIChub2RlKCkt
Pmhhc1RhZ05hbWUodmlkZW9UYWcpIHx8IG5vZGUoKS0+aGFzVGFnTmFtZShhdWRpb1RhZykpIHsK
ICAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRN
TE1lZGlhRWxlbWVudCo+KG5vZGUoKSk7CisgICAgICAgIEtVUkwga3VybDsKIAorICAgICAgICBt
ZWRpYUVsZW1lbnQtPmdldFBsdWdpblByb3h5UGFyYW1zKGt1cmwsIHBhcmFtTmFtZXMsIHBhcmFt
VmFsdWVzKTsKICAgICAgICAgbWVkaWFFbGVtZW50LT5zZXROZWVkV2lkZ2V0VXBkYXRlKGZhbHNl
KTsKLSAgICAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZSh2aWRlb1RhZykpIHsKLSAgICAgICAg
ICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZCA9IHN0YXRpY19jYXN0PEhUTUxWaWRlb0VsZW1lbnQq
Pihub2RlKCkpOwotICAgICAgICAgICAgU3RyaW5nIHBvc3RlciA9IHZpZC0+cG9zdGVyKCk7Ci0g
ICAgICAgICAgICBpZiAoIXBvc3Rlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBwYXJh
bU5hbWVzLmFwcGVuZCgiX21lZGlhX2VsZW1lbnRfcG9zdGVyXyIpOwotICAgICAgICAgICAgICAg
IHBhcmFtVmFsdWVzLmFwcGVuZChwb3N0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgdXJsID0gbWVkaWFFbGVtZW50LT5pbml0aWFsVVJMKCk7Ci0gICAgICAgIGlmICgh
dXJsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcGFyYW1OYW1lcy5hcHBlbmQoIl9tZWRpYV9l
bGVtZW50X3NyY18iKTsKLSAgICAgICAgICAgIHBhcmFtVmFsdWVzLmFwcGVuZCh1cmwpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc2VydmljZVR5cGUgPSAiYXBwbGljYXRpb24veC1tZWRpYS1lbGVt
ZW50LXByb3h5LXBsdWdpbiI7Ci0gICAgICAgIAotICAgICAgICBpZiAobWVkaWFFbGVtZW50LT5k
aXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwpKQotICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigp
LT5yZXF1ZXN0T2JqZWN0KHRoaXMsIHVybCwgbnVsbEF0b20sIHNlcnZpY2VUeXBlLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcyk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZE1lZGlhUGxh
eWVyUHJveHlQbHVnaW4obm9kZSgpLCBrdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAg
ICAgfQogI2VuZGlmCiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAJKHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTEgQEAKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAorI2lmIFBMQVRG
T1JNKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2VuZGlmCisKICNpZiBQUk9GSUxFX0xBWUVSX1JF
QlVJTEQKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNlbmRpZgpAQCAtMTAzMiw2ICsx
MDM3LDE5IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICAg
ICAgUmVuZGVyVmlkZW8qIHZpZGVvID0gdG9SZW5kZXJWaWRlbyhyZW5kZXJlcik7CiAgICAgICAg
IHJldHVybiBjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcodmlkZW8pOwogICAgIH0KKyNpZiBQ
TEFURk9STShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5p
c1JlbmRlclBhcnQoKSkgeworICAgICAgICBpZiAoIW1faGFzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBOb2RlKiBub2RlID0gcmVu
ZGVyZXItPm5vZGUoKTsKKyAgICAgICAgaWYgKCFub2RlIHx8ICghbm9kZS0+aGFzVGFnTmFtZShI
VE1MTmFtZXM6OnZpZGVvVGFnKSAmJiAhbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmF1ZGlv
VGFnKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUp
OworICAgICAgICByZXR1cm4gbWVkaWFFbGVtZW50LT5wbGF5ZXIoKSA/IG1lZGlhRWxlbWVudC0+
cGxheWVyKCktPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSA6IGZhbHNlOworICAgIH0K
KyNlbmRpZiAvLyBQTEFURk9STShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocmVuZGVyZXIpOwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uY3BwCShyZXZpc2lvbiA1NjM5NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBpbnQgY0RlZmF1
bHRXaWR0aCA9IDMwMDsKLXN0YXRpYyBjb25zdCBpbnQgY0RlZmF1bHRIZWlnaHQgPSAxNTA7Ci0K
IFJlbmRlclZpZGVvOjpSZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50KiB2aWRlbykKICAgICA6
IFJlbmRlck1lZGlhKHZpZGVvKQogewpAQCAtNjcsMTAgKzY0LDEwIEBAIFJlbmRlclZpZGVvOjpS
ZW5kZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgICAgIC8vIHNpemUgc2luY2UgdGhl
eSBhbHNvIGhhdmUgYXVkaW8gdGhyb3duIGF0IHRoZW0uIEJ5IHNldHRpbmcgdGhlIGludHJpbnNp
YwogICAgICAgICAgICAgLy8gc2l6ZSB0byAzMDB4MSB0aGUgdmlkZW8gd2lsbCByZXNpemUgaXRz
ZWxmIGluIHRoZXNlIGNhc2VzLCBhbmQgYXVkaW8gd2lsbAogICAgICAgICAgICAgLy8gaGF2ZSB0
aGUgY29ycmVjdCBoZWlnaHQgKGl0IG5lZWRzIHRvIGJlID4gMCBmb3IgY29udHJvbHMgdG8gcmVu
ZGVyIHByb3Blcmx5KS4KLSAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZShjRGVm
YXVsdFdpZHRoLCAxKSk7CisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKEludFNpemUoZGVm
YXVsdFNpemUoKS53aWR0aCgpLCAxKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVp
Z2h0KSk7CisgICAgICAgICAgICBzZXRJbnRyaW5zaWNTaXplKGRlZmF1bHRTaXplKCkpOwogICAg
IH0KIH0KIApAQCAtODIsNiArNzksMTUgQEAgUmVuZGVyVmlkZW86On5SZW5kZXJWaWRlbygpCiAg
ICAgfQogfQogCitJbnRTaXplIFJlbmRlclZpZGVvOjpkZWZhdWx0U2l6ZSgpCit7CisgICAgLy8g
VGhlc2UgdmFsdWVzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIHNwZWMuCisgICAgc3RhdGljIGNvbnN0
IGludCBjRGVmYXVsdFdpZHRoID0gMzAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgY0RlZmF1bHRI
ZWlnaHQgPSAxNTA7CisKKyAgICByZXR1cm4gSW50U2l6ZShjRGVmYXVsdFdpZHRoLCBjRGVmYXVs
dEhlaWdodCk7Cit9CisKIHZvaWQgUmVuZGVyVmlkZW86OmludHJpbnNpY1NpemVDaGFuZ2VkKCkK
IHsKICAgICBpZiAodmlkZW9FbGVtZW50KCktPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCShyZXZpc2lvbiA1NjM5NykKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZGVvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDkgQEAg
cHVibGljOgogCiAgICAgdm9pZCB2aWRlb1NpemVDaGFuZ2VkKCk7CiAgICAgSW50UmVjdCB2aWRl
b0JveCgpIGNvbnN0OwotICAgIAorCisgICAgc3RhdGljIEludFNpemUgZGVmYXVsdFNpemUoKTsK
KwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBib29sIHN1cHBvcnRzQWNj
ZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdDsKICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5n
U3RhdGVDaGFuZ2VkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51790</attachid>
            <date>2010-03-26 15:57:17 -0700</date>
            <delta_ts>2010-03-26 16:07:19 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>patch_2.txt</filename>
            <type>text/plain</type>
            <size>20643</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjY0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTAtMDMtMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczMjA1ODQ+IAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2ODEKKyAgICAgICAgIm5l
dyBBdWRpbygpIiBkb2Vzbid0IHdvcmsgd2l0aCBwbHVnLWluIGJhY2tlZCBtZWRpYSBlbmdpbmUu
CisKKyAgICAgICAgRG9uJ3QgcmVxdWlyZSBwbHVnLWluIGJhY2tlZCA8dmlkZW8+IGFuZCA8YXVk
aW8+IGVsZW1lbnRzIHRvIGJlIGluIHRoZSBkb2N1bWVudCB0byBwbGF5LgorCisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOiBJbml0aWFsaXplIG1fcHJveHlXaWRnZXQKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogU2V0IHJlbmRl
cmVyIHdpZGdldCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuCisgICAgICAgIGFsbG9jYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6IENhbGwgY3Jl
YXRlTWVkaWFQbGF5ZXJQcm94eSB0byBtYWtlIHN1cmUgd2UKKyAgICAgICAgaGF2ZSBhIHBsdWct
aW4gcHJveHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3Vy
Y2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFsbG9jYXRl
TWVkaWFQbGF5ZXJJZk5lY2Vzc2FyeSk6IEFsbG9jYXRlIG1lZGlhIHBsYXllci4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxheWVyUHJveHkpOiBDYWxsIGFs
bG9jYXRlTWVkaWFQbGF5ZXJJZk5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKTogTmV3LCByZXR1cm4gdGhlIHVybCBhbmQg
cGFyYW1zIHZlY3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbGRyZW4pOiBDYWxsIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5KTogTmV3
LCBhbGxvY2F0ZSB0aGUgcHJveHkgd2lkZ2V0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxh
eWVyUHJveHlQbHVnaW4pOiBBZGQgZGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9QbHVnSW5FbGVtZW50KTogRG9uJ3Qg
YWxsb3cgYW4gYXVkaW8gb3IgdmlkZW8gZWxlbWVudCB0byBiZSBjYXN0IHRvIGEgcGx1Zy1pbiBl
bGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKTog
TmV3LCBhbGxvY2F0ZSBhIG1lZGlhIHBsYXllciBwcm94eSBwbHVnLWluLgorCisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6IERlY2xhcmUgbG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4u
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDogRGVjbGFyZSBjcmVhdGVN
ZWRpYVBsYXllclByb3h5UGx1Z2luLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1
cGRhdGVXaWRnZXQpOiBDYWxsIGxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luIHdoZW4gcGFzc2Vk
IGFuCisgICAgICAgIGF1ZGlvIG9yIHZpZGVvIG5vZGUuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKToKKworICAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVv
OjpSZW5kZXJWaWRlbyk6IEdldCBkZWZhdWx0IHdpZHRoIGFuZCBoZWlnaHQgZnJvbSBkZWZhdWx0
U2l6ZS4KKyAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6ZGVmYXVsdFNpemUpOiBOZXcs
IHJldHVybiB0aGUgc3BlYyBkZWZpbmVkIGRlZmF1bHQgd2lkdGggYW5kIGhlaWdodC4KKyAgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmg6CisKIDIwMTAtMDMtMjYgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5
YXR0LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTYzOTcpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw2ICsxMDEsOSBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAg
ICAgLCBtX2xvYWRTdGF0ZShXYWl0aW5nRm9yU291cmNlKQogICAgICwgbV9jdXJyZW50U291cmNl
Tm9kZSgwKQogICAgICwgbV9wbGF5ZXIoMCkKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKKyAgICAsIG1fcHJveHlXaWRnZXQoMCkKKyNlbmRpZgogICAgICwgbV9yZXN0cmljdGlv
bnMoTm9SZXN0cmljdGlvbnMpCiAgICAgLCBtX3ByZWxvYWQoTWVkaWFQbGF5ZXI6OkF1dG8pCiAg
ICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC0yNzUsNyArMjc4LDEwIEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKIFJlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlckVtYmVkZGVkT2JqZWN0KHRoaXMpOworICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBt
ZWRpYVJlbmRlcmVyID0gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRkZWRPYmplY3QodGhpcyk7Cisg
ICAgaWYgKG1fcHJveHlXaWRnZXQpCisgICAgICAgIG1lZGlhUmVuZGVyZXItPnNldFdpZGdldCht
X3Byb3h5V2lkZ2V0KTsKKyAgICByZXR1cm4gbWVkaWFSZW5kZXJlcjsKICNlbHNlCiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhKHRoaXMpOwogI2VuZGlmCkBAIC0zMjEsNiArMzI3
LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGUKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogeworI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQorICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKKyNlbmRpZgorCiAg
ICAgaWYgKG1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBwcmVw
YXJlRm9yTG9hZCgpOwpAQCAtNjEzLDggKzYyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bG9hZFJlc291cmNlKGNvbnMKICNpZiAhRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAg
ICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMpOwogI2Vsc2UKLSAgICBpZiAo
IW1fcGxheWVyKQotICAgICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVhdGUodGhpcyk7
CisgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgpOwogI2VuZGlmCiAKICAgICBpZiAoIWF1dG9w
bGF5KCkpCkBAIC0xODY4LDYgKzE4NzcsMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9j
ZXNzaW5nVXNlckdlcwogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YWxsb2NhdGVNZWRpYVBsYXllcklmTmVjZXNzYXJ5KCkKK3sK
KyAgICBpZiAoIW1fcGxheWVyKQorICAgICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVh
dGUodGhpcyk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVsaXZlck5vdGlmaWNhdGlv
bihNZWRpYVBsYXllclByb3h5Tm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb24pCiB7CiAgICAg
aWYgKG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvblBsYXlQYXVzZUJ1dHRv
blByZXNzZWQpIHsKQEAgLTE4ODEsMzQgKzE4OTYsNzMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkZWxpdmVyTm90aWZpY2F0aQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxh
eWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpCiB7Ci0gICAgaWYgKG1fcGxheWVy
KQotICAgICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94eShwcm94eSk7CisgICAgYWxs
b2NhdGVNZWRpYVBsYXllcklmTmVjZXNzYXJ5KCk7CisgICAgbV9wbGF5ZXItPnNldE1lZGlhUGxh
eWVyUHJveHkocHJveHkpOwogfQogCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6aW5pdGlhbFVS
TCgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKEtVUkwmIHVy
bCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgdmFsdWVzKQogewotICAg
IEtVUkwgaW5pdGlhbFNyYyA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShz
cmNBdHRyKSk7Ci0gICAgCi0gICAgaWYgKCFpbml0aWFsU3JjLmlzVmFsaWQoKSkKLSAgICAgICAg
aW5pdGlhbFNyYyA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgwLCBEb05vdGhpbmcpOworICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGZyYW1lID8gZnJhbWUtPmxvYWRlcigpIDogMDsKIAotICAgIG1fY3VycmVudFNyYyA9IGlu
aXRpYWxTcmMuc3RyaW5nKCk7CisgICAgaWYgKGlzVmlkZW8oKSkgeworICAgICAgICBTdHJpbmcg
cG9zdGVyID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRoaXMpLT5wb3N0ZXIoKTsK
KyAgICAgICAgaWYgKCFwb3N0ZXIuaXNFbXB0eSgpICYmIGxvYWRlcikgeworICAgICAgICAgICAg
S1VSTCBwb3N0ZXJVUkwgPSBsb2FkZXItPmNvbXBsZXRlVVJMKHBvc3Rlcik7CisgICAgICAgICAg
ICBpZiAocG9zdGVyVVJMLmlzVmFsaWQoKSAmJiBsb2FkZXItPndpbGxMb2FkTWVkaWFFbGVtZW50
VVJMKHBvc3RlclVSTCkpIHsKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoIl9tZWRpYV9l
bGVtZW50X3Bvc3Rlcl8iKTsKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHBvc3RlclVS
TC5zdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1
cm4gaW5pdGlhbFNyYzsKKyAgICBpZiAoY29udHJvbHMoKSkgeworICAgICAgICBuYW1lcy5hcHBl
bmQoIl9tZWRpYV9lbGVtZW50X2NvbnRyb2xzXyIpOworICAgICAgICB2YWx1ZXMuYXBwZW5kKCJ0
cnVlIik7CisgICAgfQorCisgICAgdXJsID0gc3JjKCk7CisgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICFpc1NhZmVUb0xvYWRVUkwodXJsLCBDb21wbGFpbikpCisgICAgICAgIHVybCA9IHNlbGVj
dE5leHRTb3VyY2VDaGlsZCgwLCBEb05vdGhpbmcpOworCisgICAgbV9jdXJyZW50U3JjID0gdXJs
LnN0cmluZygpOworICAgIGlmICh1cmwuaXNWYWxpZCgpICYmIGxvYWRlciAmJiBsb2FkZXItPndp
bGxMb2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5kKCJfbWVk
aWFfZWxlbWVudF9zcmNfIik7CisgICAgICAgIHZhbHVlcy5hcHBlbmQobV9jdXJyZW50U3JjKTsK
KyAgICB9CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKIHsKICAgICBIVE1MRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgaWYg
KCFtX3BsYXllcikKLSAgICAgICAgbV9wbGF5ZXIgPSBNZWRpYVBsYXllcjo6Y3JlYXRlKHRoaXMp
OwotICAgIAogICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICBpZiAo
bV9uZWVkV2lkZ2V0VXBkYXRlICYmIHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyRW1iZWRk
ZWRPYmplY3QocmVuZGVyZXIoKSktPnVwZGF0ZVdpZGdldCh0cnVlKTsKKyAgICBjcmVhdGVNZWRp
YVBsYXllclByb3h5KCk7CiB9CiAKLSNlbmRpZgordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5KCkKK3sKKyAgICBhbGxvY2F0ZU1lZGlhUGxheWVySWZOZWNlc3Nh
cnkoKTsKKworICAgIGlmICghaW5Eb2N1bWVudCgpICYmIG1fcHJveHlXaWRnZXQpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoaW5Eb2N1bWVudCgpICYmICFtX25lZWRXaWRnZXRVcGRhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CisgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IGZyYW1lID8gZnJhbWUtPmxvYWRlcigpIDogMDsK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgS1VSTCB1cmw7CisgICAg
VmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVl
czsKKworICAgIGdldFBsdWdpblByb3h5UGFyYW1zKHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMpOworICAgIG1fcHJveHlXaWRnZXQgPSBsb2FkZXItPmxvYWRNZWRpYVBsYXllclByb3h5UGx1
Z2luKHRoaXMsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOworICAgIGlmIChtX3Byb3h5
V2lkZ2V0KQorICAgICAgICBtX25lZWRXaWRnZXRVcGRhdGUgPSBmYWxzZTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjplbnRlckZ1bGxzY3JlZW4oKQogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZp
c2lvbiA1NjM5NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKIAorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50OwpAQCAtMzksNiArNDMsOSBAQCBjbGFzcyBI
VE1MU291cmNlRWxlbWVudDsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOwogY2xhc3Mg
VGltZVJhbmdlczsKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKK2NsYXNzIFdp
ZGdldDsKKyNlbmRpZgogCiAvLyBGSVhNRTogVGhlIGluaGVyaXRhbmNlIGZyb20gTWVkaWFQbGF5
ZXJDbGllbnQgaGVyZSBzaG91bGQgYmUgcHJpdmF0ZSBpbmhlcml0YW5jZS4KIC8vIEJ1dCBpdCBj
YW4ndCBiZSB1bnRpbCB0aGUgQ2hyb21pdW0gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGNsYXNz
IGlzIGZpeGVkIHNvIGl0CkBAIC0xMzksMTEgKzE0NiwxMyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
cGVyY2VudExvYWRlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCisgICAgdm9pZCBhbGxvY2F0ZU1lZGlhUGxheWVySWZOZWNlc3NhcnkoKTsKICAgICB2b2lk
IHNldE5lZWRXaWRnZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdl
dFVwZGF0ZSA9IG5lZWRXaWRnZXRVcGRhdGU7IH0KLSAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRp
b24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUpOwotICAgIHZvaWQgc2V0TWVkaWFQ
bGF5ZXJQcm94eShXZWJNZWRpYVBsYXllclByb3h5Kik7Ci0gICAgU3RyaW5nIGluaXRpYWxVUkwo
KTsKKyAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNh
dGlvblR5cGUgbm90aWZpY2F0aW9uKTsKKyAgICB2b2lkIHNldE1lZGlhUGxheWVyUHJveHkoV2Vi
TWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMo
S1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMp
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2b2lkIGNy
ZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKICNlbmRpZgogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKTsgfQpAQCAtMzA3LDYgKzMxNiw5IEBAIHByaXZhdGU6CiAgICAg
SFRNTFNvdXJjZUVsZW1lbnQqIG1fY3VycmVudFNvdXJjZU5vZGU7CiAgICAgCiAgICAgT3duUHRy
PE1lZGlhUGxheWVyPiBtX3BsYXllcjsKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURF
TykKKyAgICBSZWZQdHI8V2lkZ2V0PiBtX3Byb3h5V2lkZ2V0OworI2VuZGlmCiAKICAgICBCZWhh
dmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKICAgICAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCShyZXZpc2lvbiA1NjM5NykKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNiArMjk5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkgeyB9CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50
U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IHJldHVybiAwOyB9CisjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVu
dCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgU3RyaW5nJikgeyByZXR1cm4gMDsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFs
IE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKSB7IHJldHVybiBPYmplY3RDb250ZW50VHlwZSgpOyB9CiAgICAgdmlydHVhbCBTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNTYzOTcpCisrKyBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDkgQEAKICNpbmNsdWRl
ICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjZW5kaWYKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
VFBQYXJzZXJzLmgiCkBAIC04Miw2ICs4NSw5IEBACiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRl
ZE9iamVjdC5oIgorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorI2luY2x1ZGUg
IlJlbmRlclZpZGVvLmgiCisjZW5kaWYKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTEz
NDMsMTQgKzEzNDksOCBAQCBzdGF0aWMgSFRNTFBsdWdJbkVsZW1lbnQqIHRvUGx1Z0luRWxlbWVu
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQotICAgIEFTU0VSVChub2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZShlbWJlZFRhZykgCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05h
bWUodmlkZW9UYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoYXVkaW9UYWcpCi0gICAgICAgIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSk7Ci0jZWxzZQogICAgIEFTU0VSVChub2RlLT5oYXNU
YWdOYW1lKG9iamVjdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShlbWJlZFRhZykgCiAgICAgICAg
IHx8IG5vZGUtPmhhc1RhZ05hbWUoYXBwbGV0VGFnKSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG5vZGUpOwogfQpAQCAtMTM3Niw2ICsxMzc2
LDEwIEBAIGJvb2wgRnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oUmVuZGVyRW1iZWQKICAgICAgICAg
aWYgKHdpZGdldCkgewogICAgICAgICAgICAgcmVuZGVyZXItPnNldFdpZGdldCh3aWRnZXQpOwog
ICAgICAgICAgICAgbV9jb250YWluc1BsdWdJbnMgPSB0cnVlOworCisjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCisgICAgICAgICAgICByZW5kZXJlci0+bm9kZSgpLT5zZXROZWVk
c1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyNlbmRpZgogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTaG93c01pc3NpbmdQbHVnaW5JbmRpY2F0b3Io
dHJ1ZSk7CiAgICAgfQpAQCAtMTM4Myw2ICsxMzg3LDQ4IEBAIGJvb2wgRnJhbWVMb2FkZXI6Omxv
YWRQbHVnaW4oUmVuZGVyRW1iZWQKICAgICByZXR1cm4gd2lkZ2V0ICE9IDA7CiB9CiAKKyNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgS1VSTCYg
dXJsLCAKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKQoreworICAgIEFTU0VSVChub2RlLT5oYXNUYWdOYW1lKHZp
ZGVvVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSk7CisKKyAgICBpZiAoIW1fZnJh
bWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCktPmNhbkxvYWRPYmplY3QodXJsLnN0cmluZygpKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBpZiAoIXVy
bC5pc0VtcHR5KCkpCisgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7CisK
KyAgICBpZiAoIVNlY3VyaXR5T3JpZ2luOjpjYW5Mb2FkKGNvbXBsZXRlZFVSTCwgU3RyaW5nKCks
IGZyYW1lKCktPmRvY3VtZW50KCkpKSB7CisgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2Nh
bExvYWRGYWlsZWQobV9mcmFtZSwgY29tcGxldGVkVVJMLnN0cmluZygpKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG5vZGUpOworICAgIFJlbmRlclBhcnQqIHJlbmRl
cmVyID0gdG9SZW5kZXJQYXJ0KG5vZGUtPnJlbmRlcmVyKCkpOworICAgIEludFNpemUgc2l6ZTsK
KworICAgIGlmIChyZW5kZXJlcikKKyAgICAgICAgc2l6ZSA9IEludFNpemUocmVuZGVyZXItPmNv
bnRlbnRXaWR0aCgpLCByZW5kZXJlci0+Y29udGVudEhlaWdodCgpKTsKKyAgICBlbHNlIGlmICht
ZWRpYUVsZW1lbnQtPmlzVmlkZW8oKSkKKyAgICAgICAgc2l6ZSA9IFJlbmRlclZpZGVvOjpkZWZh
dWx0U2l6ZSgpOworCisgICAgY2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwpOworCisgICAgUmVmUHRyPFdp
ZGdldD4gd2lkZ2V0ID0gbV9jbGllbnQtPmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oc2l6
ZSwgbWVkaWFFbGVtZW50LCBjb21wbGV0ZWRVUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1t
ZWRpYS1lbGVtZW50LXByb3h5LXBsdWdpbiIpOworCisgICAgaWYgKHdpZGdldCAmJiByZW5kZXJl
cikgeworICAgICAgICByZW5kZXJlci0+c2V0V2lkZ2V0KHdpZGdldCk7CisgICAgICAgIG1fY29u
dGFpbnNQbHVnSW5zID0gdHJ1ZTsKKyAgICAgICAgcmVuZGVyZXItPm5vZGUoKS0+c2V0TmVlZHNT
dHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgfQorCisgICAgcmV0dXJuIHdp
ZGdldCA/IHdpZGdldC5yZWxlYXNlKCkgOiAwOworfQorI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQorCiBTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIo
KSBjb25zdAogewogICAgIHJldHVybiBtX291dGdvaW5nUmVmZXJyZXI7CkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgJKHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ7CiBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIE5hdmlnYXRp
b25BY3Rpb247CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCitjbGFzcyBOb2Rl
OworI2VuZGlmCiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdDsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAgLTMyMCw2ICszMjMsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwogCisjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCisgICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRNZWRpYVBsYXllclBy
b3h5UGx1Z2luKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisjZW5kaWYKKwogICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhlc2UgcmVhbGx5IGJlIHB1YmxpYz8KICAgICB2b2lkIGNvbXBs
ZXRlZCgpOwogICAgIGJvb2wgYWxsQW5jZXN0b3JzQXJlQ29tcGxldGUoKSBjb25zdDsgLy8gaW5j
bHVkaW5nIHRoaXMKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NTYzOTcpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw2ICs1NSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIaXN0b3J5SXRlbTsKICAgICBjbGFzcyBIVE1M
QXBwbGV0RWxlbWVudDsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CisjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisgICAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsK
KyNlbmRpZgogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7
CiAgICAgY2xhc3MgS1VSTDsKQEAgLTIyNiw2ICsyMjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVS
TCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcykgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqKSBjb25zdCB7IH0KKyNpZiBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdl
dD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlh
RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOworI2VuZGlmCiAKICAgICAgICAgdmlydHVh
bCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJp
ZGVNZWRpYVR5cGUoKSBjb25zdCA9IDA7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiA1NjM5NykKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDI3ICszMjMs
MTEgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6dXBkYXRlV2lkZ2V0KAogI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAgICAgICAgCiAgICAgZWxzZSBpZiAobm9kZSgpLT5o
YXNUYWdOYW1lKHZpZGVvVGFnKSB8fCBub2RlKCktPmhhc1RhZ05hbWUoYXVkaW9UYWcpKSB7CiAg
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihub2RlKCkpOworICAgICAgICBLVVJMIGt1cmw7CiAKKyAgICAgICAgbWVk
aWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZh
bHVlcyk7CiAgICAgICAgIG1lZGlhRWxlbWVudC0+c2V0TmVlZFdpZGdldFVwZGF0ZShmYWxzZSk7
Ci0gICAgICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcpKSB7Ci0gICAgICAgICAg
ICBIVE1MVmlkZW9FbGVtZW50KiB2aWQgPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4o
bm9kZSgpKTsKLSAgICAgICAgICAgIFN0cmluZyBwb3N0ZXIgPSB2aWQtPnBvc3RlcigpOwotICAg
ICAgICAgICAgaWYgKCFwb3N0ZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1O
YW1lcy5hcHBlbmQoIl9tZWRpYV9lbGVtZW50X3Bvc3Rlcl8iKTsKLSAgICAgICAgICAgICAgICBw
YXJhbVZhbHVlcy5hcHBlbmQocG9zdGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIHVybCA9IG1lZGlhRWxlbWVudC0+aW5pdGlhbFVSTCgpOwotICAgICAgICBpZiAoIXVy
bC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKCJfbWVkaWFfZWxl
bWVudF9zcmNfIik7Ci0gICAgICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQodXJsKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHNlcnZpY2VUeXBlID0gImFwcGxpY2F0aW9uL3gtbWVkaWEtZWxlbWVu
dC1wcm94eS1wbHVnaW4iOwotICAgICAgICAKLSAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+ZGlz
cGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJsKSkKLSAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
cmVxdWVzdE9iamVjdCh0aGlzLCB1cmwsIG51bGxBdG9tLCBzZXJ2aWNlVHlwZSwgcGFyYW1OYW1l
cywgcGFyYW1WYWx1ZXMpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRNZWRpYVBsYXll
clByb3h5UGx1Z2luKG5vZGUoKSwga3VybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogICAg
IH0KICNlbmRpZgogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCShyZXZpc2lvbiA1NjM5NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNlbmRpZgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgpAQCAtMTAzMiw2ICsxMDM2
LDE5IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICAgICAg
UmVuZGVyVmlkZW8qIHZpZGVvID0gdG9SZW5kZXJWaWRlbyhyZW5kZXJlcik7CiAgICAgICAgIHJl
dHVybiBjYW5BY2NlbGVyYXRlVmlkZW9SZW5kZXJpbmcodmlkZW8pOwogICAgIH0KKyNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNSZW5k
ZXJQYXJ0KCkpIHsKKyAgICAgICAgaWYgKCFtX2hhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVy
LT5ub2RlKCk7CisgICAgICAgIGlmICghbm9kZSB8fCAoIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp2aWRlb1RhZykgJiYgIW5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZykp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAg
ICAgICAgcmV0dXJuIG1lZGlhRWxlbWVudC0+cGxheWVyKCkgPyBtZWRpYUVsZW1lbnQtPnBsYXll
cigpLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgOiBmYWxzZTsKKyAgICB9CisjZW5k
aWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShyZW5kZXJlcik7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJ
KHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIGNvbnN0IGludCBjRGVmYXVsdFdpZHRo
ID0gMzAwOwotc3RhdGljIGNvbnN0IGludCBjRGVmYXVsdEhlaWdodCA9IDE1MDsKLQogUmVuZGVy
VmlkZW86OlJlbmRlclZpZGVvKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogICAgIDogUmVuZGVy
TWVkaWEodmlkZW8pCiB7CkBAIC02NywxMCArNjQsMTAgQEAgUmVuZGVyVmlkZW86OlJlbmRlclZp
ZGVvKEhUTUxWaWRlb0VsZW1lbgogICAgICAgICAgICAgLy8gc2l6ZSBzaW5jZSB0aGV5IGFsc28g
aGF2ZSBhdWRpbyB0aHJvd24gYXQgdGhlbS4gQnkgc2V0dGluZyB0aGUgaW50cmluc2ljCiAgICAg
ICAgICAgICAvLyBzaXplIHRvIDMwMHgxIHRoZSB2aWRlbyB3aWxsIHJlc2l6ZSBpdHNlbGYgaW4g
dGhlc2UgY2FzZXMsIGFuZCBhdWRpbyB3aWxsCiAgICAgICAgICAgICAvLyBoYXZlIHRoZSBjb3Jy
ZWN0IGhlaWdodCAoaXQgbmVlZHMgdG8gYmUgPiAwIGZvciBjb250cm9scyB0byByZW5kZXIgcHJv
cGVybHkpLgotICAgICAgICAgICAgc2V0SW50cmluc2ljU2l6ZShJbnRTaXplKGNEZWZhdWx0V2lk
dGgsIDEpKTsKKyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUoSW50U2l6ZShkZWZhdWx0U2l6
ZSgpLndpZHRoKCksIDEpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
ZXRJbnRyaW5zaWNTaXplKEludFNpemUoY0RlZmF1bHRXaWR0aCwgY0RlZmF1bHRIZWlnaHQpKTsK
KyAgICAgICAgICAgIHNldEludHJpbnNpY1NpemUoZGVmYXVsdFNpemUoKSk7CiAgICAgfQogfQog
CkBAIC04Miw2ICs3OSwxNSBAQCBSZW5kZXJWaWRlbzo6flJlbmRlclZpZGVvKCkKICAgICB9CiB9
CiAKK0ludFNpemUgUmVuZGVyVmlkZW86OmRlZmF1bHRTaXplKCkKK3sKKyAgICAvLyBUaGVzZSB2
YWx1ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgc3BlYy4KKyAgICBzdGF0aWMgY29uc3QgaW50IGNE
ZWZhdWx0V2lkdGggPSAzMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBjRGVmYXVsdEhlaWdodCA9
IDE1MDsKKworICAgIHJldHVybiBJbnRTaXplKGNEZWZhdWx0V2lkdGgsIGNEZWZhdWx0SGVpZ2h0
KTsKK30KKwogdm9pZCBSZW5kZXJWaWRlbzo6aW50cmluc2ljU2l6ZUNoYW5nZWQoKQogewogICAg
IGlmICh2aWRlb0VsZW1lbnQoKS0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmgJKHJldmlzaW9uIDU2Mzk3KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHZpZGVvU2l6ZUNoYW5nZWQoKTsKICAgICBJbnRSZWN0IHZpZGVvQm94KCkg
Y29uc3Q7Ci0gICAgCisKKyAgICBzdGF0aWMgSW50U2l6ZSBkZWZhdWx0U2l6ZSgpOworCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRl
ZFJlbmRlcmluZygpIGNvbnN0OwogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQoKTsK
</data>
<flag name="review"
          id="35139"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>