<?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>122043</bug_id>
          
          <creation_ts>2013-09-27 17:13:32 -0700</creation_ts>
          <short_desc>[Mac] Add AudioTrack support to MediaPlayerPrivateAVFObC.</short_desc>
          <delta_ts>2013-09-30 08:17:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122049</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934154</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-27 17:13:32 -0700</bug_when>
    <thetext>[Mac] Add AudioTrack support to MediaPlayerPrivateAVFObC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934157</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-27 17:14:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/15103997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934158</commentid>
    <comment_count>2</comment_count>
      <attachid>212858</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-27 17:16:20 -0700</bug_when>
    <thetext>Created attachment 212858
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934162</commentid>
    <comment_count>3</comment_count>
      <attachid>212859</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-27 17:32:30 -0700</bug_when>
    <thetext>Created attachment 212859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934318</commentid>
    <comment_count>4</comment_count>
      <attachid>212859</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-28 13:27:12 -0700</bug_when>
    <thetext>Comment on attachment 212859
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm:93
&gt; +    for (AVMetadataItem* item in [assetTrack commonMetadata]) {
&gt; +        if ([item.key isEqual:AVMetadataCommonKeyTitle]) {
&gt; +             setLabel((NSString*)item.value);
&gt; +            break;
&gt; +        }
&gt; +    }

It would be good to return the label in the user&apos;s preferred language if possible. See InbandTextTrackPrivateLegacyAVFObjC::label.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm:95
&gt; +    setLanguage([assetTrack extendedLanguageTag]);

This will miss a language stored as a QuickTime 5-bit packed code. See MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:220
&gt; +    Vector&lt;RefPtr&lt;AudioTrackPrivateAVFObjC&gt; &gt; m_audioTracks;

We don&apos;t need a space in &quot;&gt; &gt;&quot; any more.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1060
&gt; +        typedef Vector&lt;RefPtr&lt;AudioTrackPrivateAVFObjC&gt; &gt; AudioTrackVector;

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1073
&gt; +                player()-&gt;removeAudioTrack(i-&gt;get());

It would probably be safer to so this after the m_audioTracks.swap, so the new track configuration is already set up.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1081
&gt; +            player()-&gt;addAudioTrack(newTrack.get());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934591</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-30 08:17:05 -0700</bug_when>
    <thetext>Committed r156652: &lt;http://trac.webkit.org/changeset/156652&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212858</attachid>
            <date>2013-09-27 17:16:20 -0700</date>
            <delta_ts>2013-09-27 17:32:29 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-122043-20130927171622.patch</filename>
            <type>text/plain</type>
            <size>22630</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUwYjIzN2NmMGVmZDQx
MDBmZTEzZWQzZGE2YjQwMjY4MDgxYTYwZS4uYmZhMmQyZDkzOTk0ZGUyZGFjNGM4MWI1MGFlNzA2
OGI1Y2VkNDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEzLTA5LTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNYWNdIEFkZCBBdWRpb1Ry
YWNrIHN1cHBvcnQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlQVZGT2JDLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2s6
OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1RyYWNrUHJpdmF0ZUFWRi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGOjpraW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6bGFiZWwp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkY6Omxhbmd1YWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRLaW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6c2V0TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVBVkY6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlQVZGOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJ
dGVtVHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zy
b21UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNl
dFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakM6OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzQ2hhbmdlZCk6CisKKzIwMTMtMDktMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihyMTU2NTQ2KTog
bWVkaWEvdmlkZW8tcnRsLmh0bWwgaXMgZmFpbGluZy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjAyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGNhMjY0MTFmOTM1YmZiZmFh
NjI3YWQ1NTY0YjgyZTRjZWM1ZGM4YS4uMzZiYjNmYzhhMWEzNjk3OWRiNDJiNWE2ZWI0NGI2MDYx
ODlhY2FhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTM4NCw2ICs1Mzg0LDkgQEAKIAkJQ0RDNjlEREExNjM3MUZENDAwN0Mz
OERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3QzM4REYg
LyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYg
LyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyog
V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gKi87IH07CiAJCUNERDUyNUQ3MTQ1
QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRD
N0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CisJCUNERTNBODU0MTdG
NUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVCRTIwIC8q
IEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CisJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUy
MCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OworCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAg
LyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmggKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQ
bGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYw
QUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CiAJCUNERUE3NjM1MTQ2MEI3
MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9
OwpAQCAtMTIzNDQsNiArMTIzNDcsOSBAQAogCQlDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyog
V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDRTVDRDAxNDYzM0JDOTAwRDQ3Q0NBIC8q
IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudFRhcmdl
dEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDFFNTI1MTY3QkE1
NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1By
aXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9UcmFja1By
aXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFM0E4NTUxN0Y2MDIw
NDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbTsgcGF0
aCA9IG9iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQy5oOyBwYXRoID0gb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFNjU2MEUxN0NBNkU3NjAwNTI2QkE3IC8qIG1l
ZGlhQ29udHJvbHNBcHBsZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1lZGlhQ29udHJvbHNB
cHBsZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAw
OEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2Nr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFG
MSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzNDg5LDYgKzEzNDk1LDcgQEAKIAkJCQkwN0I0NDJENTE2NkM3MEIwMDA1NTZDQUQgLyogSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJCTA3NkYwRDA5MTJCODE5MjcwMEMyNkFB
NCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovLAogCQkJCTA3NkYwRDBB
MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLywK
KwkJCQlDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gYXZmb3VuZGF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTIwMTAxLDYgKzIwMTA4LDggQEAKIAkJCQlERjlBRkQ3MTEzRkMzMUQ4MDAxNUZF
QjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSAqLywKIAkJCQlDRDdF
MDUyMDE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggKi8sCiAJ
CQkJQ0Q3RTA1MjExNjUxQTg0MTAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bSAqLywKKwkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tICovLAorCQkJCUNERTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gb2JqYzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yMTU4Niw2ICsyMTU5NSw3IEBACiAJCQkJQ0UwOEMzRDIxNTJC
NTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDNFMTJCMDI2NzYwMEMxQTM1OSAvKiBB
bmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNERTNBODU4MTdGNjAyMDQwMEM1QkUy
MCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MDcw
N0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjQyNTAsNiArMjQyNjAsNyBAQAogCQkJCTY1NjU4MUZFMDlEMTUwOEQw
MDBFNjFENyAvKiBTVkdFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
QkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5QkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNERTNBODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxQUE4REExMTExMjM3RTAwMkFC
MDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzAw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzlDMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3NDA2LDYgKzI3NDE3LDcgQEAKIAkJCQlCMjIyNzlBNzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHQ3Vyc29yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBRDBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRGVmc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5QjAwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Rlc2NFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlCMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
RG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI4QzZBMjcwRDAwQzQ0ODAwMzM0QUE0
IC8qIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlC
NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCmluZGV4IGRiNTFkZDhlZDA1MTQxNWE4
ZWNjZjQ5OTBjYWY3ZDdhZGM4NDUyMjguLjFlMTQ0YThmZGEzN2JhYzkwYmNmMmU0YWMzZGIxMTE5
OGUzMjBiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmNwcApAQCAt
MTQ2LDYgKzE0Niw4IEBAIHZvaWQgQXVkaW9UcmFjazo6c2V0RW5hYmxlZChjb25zdCBib29sIGVu
YWJsZWQpCiAKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCisgICAgbV9wcml2YXRlLT5zZXRF
bmFibGVkKGVuYWJsZWQpOworCiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
YXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvVHJhY2tQcml2YXRlQVZG
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9U
cmFja1ByaXZhdGVBVkYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWY2NDA0YTQ4MTI3YTZlZjdkNmE5NjNmNmMz
NmNmMTY4NmU1ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvVHJhY2tQcml2YXRlQVZGLmgKQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXVkaW9UcmFja1ByaXZhdGVBVkZfaAorI2RlZmlu
ZSBBdWRpb1RyYWNrUHJpdmF0ZUFWRl9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEF1ZGlvVHJhY2tQcml2YXRlQVZGIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZUFWRikKK3B1YmxpYzoKKwor
ICAgIHZpcnR1YWwgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xhbmd1YWdlOyB9
CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHNldEtpbmQoS2luZCBraW5kKSB7IG1fa2luZCA9IGtp
bmQ7IH0KKyAgICB2b2lkIHNldElkKEF0b21pY1N0cmluZyBuZXdJZCkgeyBtX2lkID0gbmV3SWQ7
IH0KKyAgICB2b2lkIHNldExhYmVsKEF0b21pY1N0cmluZyBsYWJlbCkgeyBtX2xhYmVsID0gbGFi
ZWw7IH0KKyAgICB2b2lkIHNldExhbmd1YWdlKEF0b21pY1N0cmluZyBsYW5ndWFnZSkgeyBtX2xh
bmd1YWdlID0gbGFuZ3VhZ2U7IH0KKworICAgIEtpbmQgbV9raW5kOworICAgIEF0b21pY1N0cmlu
ZyBtX2lkOworICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOworICAgIEF0b21pY1N0cmluZyBtX2xh
bmd1YWdlOworCisgICAgQXVkaW9UcmFja1ByaXZhdGVBVkYoKQorICAgIDogbV9raW5kKE5vbmUp
CisgICAgeworICAgIH0KK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykK
KworI2VuZGlmIC8vIEF1ZGlvVHJhY2tQcml2YXRlQVZGX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3Mzg4NGFj
MzhmNjI1Yjc4ODkwZThkNWQ4ZTVjZWFmNGQ4NWY3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQ19oCisjZGVmaW5lIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Q19oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJp
dmF0ZUFWRi5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBBVlBs
YXllckl0ZW1UcmFjazsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZhdGVBVkYgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQykKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQz4gY3JlYXRlKEFWUGxheWVySXRl
bVRyYWNrKiB0cmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDKHRyYWNrKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNl
dEVuYWJsZWQoYm9vbCk7CisKKyAgICB2b2lkIHNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0
ZW1UcmFjayopOworICAgIEFWUGxheWVySXRlbVRyYWNrKiBwbGF5ZXJJdGVtVHJhY2soKSB7IHJl
dHVybiBtX3BsYXllckl0ZW1UcmFjay5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayopOworCisgICAgdm9pZCByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKKworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1UcmFjaz4g
bV9wbGF5ZXJJdGVtVHJhY2s7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJB
Q0spCisKKworI2VuZGlmIC8vIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQ19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODZmZGJlN2I0ZGM1MTQxNTU5NDI5NGVmZDc2Mjc0NjZhMDhmMDAwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgi
CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0
VHJhY2suaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1UcmFjay5oPgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+CisKK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVkFzc2V0VHJhY2spCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0
ZW1UcmFjaykKKworU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lO
VEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JB
Y2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9u
LCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5z
Y3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxlLCBOU1N0cmlu
ZyAqKQorCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50
IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkKKyNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5IGdldEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSgpCisjZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCBnZXRBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNo
YXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKyNk
ZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGdldEFWTWV0YWRhdGFDb21tb25LZXlUaXRs
ZSgpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQorICAgIDog
bV9wbGF5ZXJJdGVtVHJhY2sodHJhY2spCit7CisgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7Cit9CisKK3ZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKQoreworICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFjayA9IFttX3BsYXllckl0
ZW1UcmFjay5nZXQoKSBhc3NldFRyYWNrXTsKKyAgICBpZiAoIWFzc2V0VHJhY2spIHsKKyAgICAg
ICAgc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIHNldEtpbmQoTm9uZSk7CisgICAgICAgIHNl
dElkKGVtcHR5QXRvbSk7CisgICAgICAgIHNldExhYmVsKGVtcHR5QXRvbSk7CisgICAgICAgIHNl
dExhbmd1YWdlKGVtcHR5QXRvbSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZXRF
bmFibGVkKFttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBpc0VuYWJsZWRdKTsKKyAgICBzZXRJZChT
dHJpbmc6OmZvcm1hdCgiJWQiLCBbYXNzZXRUcmFjayB0cmFja0lEXSkpOworCisgICAgaWYgKFth
c3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVz
Y3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgc2V0S2luZChEZXNjcmlwdGlv
bik7CisgICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHld
KQorICAgICAgICBzZXRLaW5kKFRyYW5zbGF0aW9uKTsKKyAgICBlbHNlIGlmIChbYXNzZXRUcmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5
Q29udGVudF0pCisgICAgICAgIHNldEtpbmQoQWx0ZXJuYXRpdmUpOworICAgIGVsc2UgaWYgKFth
c3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNN
YWluUHJvZ3JhbUNvbnRlbnRdKQorICAgICAgICBzZXRLaW5kKE1haW4pOworICAgIGVsc2UKKyAg
ICAgICAgc2V0S2luZChOb25lKTsKKworICAgIGZvciAoQVZNZXRhZGF0YUl0ZW0qIGl0ZW0gaW4g
W2Fzc2V0VHJhY2sgY29tbW9uTWV0YWRhdGFdKSB7CisgICAgICAgIGlmIChbaXRlbS5rZXkgaXNF
cXVhbDpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGVdKSB7CisgICAgICAgICAgICAgc2V0TGFiZWwo
KE5TU3RyaW5nKilpdGVtLnZhbHVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2V0TGFuZ3VhZ2UoW2Fzc2V0VHJhY2sgZXh0ZW5kZWRMYW5ndWFnZVRhZ10p
OworfQorCit2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNr
KEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKK3sKKyAgICBtX3BsYXllckl0ZW1UcmFjayA9IHRy
YWNrOworICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOworfQorCit2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgQXVkaW9U
cmFja1ByaXZhdGVBVkY6OnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgW21fcGxheWVySXRlbVRy
YWNrLmdldCgpIHNldEVuYWJsZWQ6ZW5hYmxlZF07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAppbmRleCBhYjQ4ZDNkOGMwMzU3Y2Y1ZDQ2MGQwYmI2MGU2OWY5ZWYzNTY2
YWM1Li4yNmE3OGQ0ODllNWQ3MDIwY2YzODJhYjNiYmEzMDNiYzIzYjc4ZTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRk9iakM7CitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM7CiAKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uIHsKIHB1YmxpYzoKQEAgLTIxNCw3ICsyMTUsMTEgQEAgcHJpdmF0ZToKICNp
ZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VO
REFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCiAgICAgUmV0YWluUHRyPEFWUGxheWVySXRl
bUxlZ2libGVPdXRwdXQ+IG1fbGVnaWJsZU91dHB1dDsKICNlbmRpZgotICAgIAorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDPiA+IG1fYXVkaW9UcmFja3M7CisjZW5kaWYKKwogICAgIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYqIG1fY3VycmVudFRyYWNrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
NGFiMGQ3ZGU0MDgzZGUzYjk2NzMxM2RlYTlkOGMzNTM3NDVlNGNmMS4uMzQzYTUwZTkyNDQ0NWJk
MjZlNDA3M2IxMmUwYzc3OTVhYjE3Zjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaCIKIAorI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJC
bG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgog
I2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCkBAIC0xMDQ4LDYgKzEwNDksMzkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3NDaGFuZ2VkKCkKICAgICAg
ICAgfQogICAgICAgICBzZXRIYXNWaWRlbyhoYXNWaWRlbyk7CiAgICAgICAgIHNldEhhc0F1ZGlv
KGhhc0F1ZGlvKTsKKworCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICBSZXRhaW5Q
dHI8TlNTZXQ+IGF1ZGlvVHJhY2tzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aEFy
cmF5Olt0cmFja3Mgb2JqZWN0c0F0SW5kZXhlczpbdHJhY2tzIGluZGV4ZXNPZk9iamVjdHNQYXNz
aW5nVGVzdDpeKGlkIHRyYWNrLCBOU1VJbnRlZ2VyLCBCT09MKil7CisgICAgICAgICAgICByZXR1
cm4gW1tbdHJhY2sgYXNzZXRUcmFja10gbWVkaWFUeXBlXSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRp
YVR5cGVBdWRpb107CisgICAgICAgIH1dXV0pOworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
U2V0PiBvbGRBdWRpb1RyYWNrcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRX
aXRoQ2FwYWNpdHk6bV9hdWRpb1RyYWNrcy5zaXplKCldKTsKKworICAgICAgICB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDPiA+IEF1ZGlvVHJhY2tWZWN0b3I7
CisgICAgICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IG1fYXVkaW9UcmFj
a3MuYmVnaW4oKTsgaSAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyArK2kpCisgICAgICAgICAgICBb
b2xkQXVkaW9UcmFja3MuZ2V0KCkgYWRkT2JqZWN0OigqaSktPnBsYXllckl0ZW1UcmFjaygpXTsK
KworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiByZW1vdmVkQXVkaW9UcmFja3MgPSBh
ZG9wdE5TKFtvbGRBdWRpb1RyYWNrcy5nZXQoKSBtdXRhYmxlQ29weV0pOworICAgICAgICBbcmVt
b3ZlZEF1ZGlvVHJhY2tzLmdldCgpIG1pbnVzU2V0OmF1ZGlvVHJhY2tzLmdldCgpXTsKKworICAg
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBhZGRlZEF1ZGlvVHJhY2tzID0gYWRvcHROUyhb
YXVkaW9UcmFja3MuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgW2FkZGVkQXVkaW9UcmFj
a3MuZ2V0KCkgbWludXNTZXQ6b2xkQXVkaW9UcmFja3MuZ2V0KCldOworCisgICAgICAgIEF1ZGlv
VHJhY2tWZWN0b3IgbmV3QXVkaW9UcmFja3M7CisgICAgICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rv
cjo6aXRlcmF0b3IgaSA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaSAhPSBtX2F1ZGlvVHJhY2tz
LmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChbcmVtb3ZlZEF1ZGlvVHJhY2tzIGNvbnRh
aW5zT2JqZWN0OigqaSktPnBsYXllckl0ZW1UcmFjaygpXSkKKyAgICAgICAgICAgICAgICBwbGF5
ZXIoKS0+cmVtb3ZlQXVkaW9UcmFjayhpLT5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgbmV3QXVkaW9UcmFja3MuYXBwZW5kKCppKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoQVZQbGF5ZXJJdGVtVHJhY2sqIHBsYXllckl0ZW1UcmFjayBpbiBhZGRlZEF1ZGlv
VHJhY2tzLmdldCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDPiBuZXdUcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRlKHBsYXllckl0
ZW1UcmFjayk7CisgICAgICAgICAgICBuZXdBdWRpb1RyYWNrcy5hcHBlbmQobmV3VHJhY2spOwor
ICAgICAgICAgICAgcGxheWVyKCktPmFkZEF1ZGlvVHJhY2sobmV3VHJhY2suZ2V0KCkpOworICAg
ICAgICB9CisgICAgICAgIG1fYXVkaW9UcmFja3Muc3dhcChuZXdBdWRpb1RyYWNrcyk7CisjZW5k
aWYKICAgICB9CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVAp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212859</attachid>
            <date>2013-09-27 17:32:30 -0700</date>
            <delta_ts>2013-09-28 13:27:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122043-20130927173232.patch</filename>
            <type>text/plain</type>
            <size>26784</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWUwYjIzN2NmMGVmZDQx
MDBmZTEzZWQzZGE2YjQwMjY4MDgxYTYwZS4uMDRhMjNmNzM3NzBhYTE5OGNhOGJkNmE2YjgxODky
ZmQ0MTc1ZTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDEzLTA5LTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtNYWNdIEFkZCBBdWRpb1Ry
YWNrIHN1cHBvcnQgdG8gTWVkaWFQbGF5ZXJQcml2YXRlQVZGT2JDLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svYXVkaW8t
dHJhY2suaHRtbAorCisgICAgICAgIEFkZCBhIG5ldyBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFW
RiBhbmQgc3ViY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDCisgICAgICAgIHdoaWNoIGFy
ZSBiYWNrZWQgYnkgYSBBVlBsYXllckl0ZW1UcmFjay4gQ3JlYXRlIG9uZSBvZiB0aGVzZSB0cmFj
a3Mgd2hlbgorICAgICAgICB3ZSBhcmUgbm90aWZpZWQgdGhhdCB0aGUgbGlzdCBvZiBhdmFpbGFi
bGUgdHJhY2tzIGhhcyBjaGFuZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvdHJhY2svQXVkaW9UcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrOjpzZXRFbmFibGVkKTogUGFzcyB0aHJvdWdoIHRvIHRo
ZSBBdWRpb1RyYWNrUHJpdmF0ZQorICAgICAgICAgICAgc28gdGhhdCB0aGUgdW5kZXJseWluZyBt
ZWRpYSB0cmFjayBjYW4gYmUgKGRpc3xlbilhYmxlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQXVkaW9UcmFja1ByaXZhdGVBVkYuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6a2luZCk6IFNpbXBsZSBnZXR0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6aWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGOjpsYWJlbCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkY6Omxhbmd1YWdlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6c2V0S2luZCk6IFNpbXBsZSBTZXR0
ZXIuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6c2V0SWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRMYWJlbCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkY6OnNldExhbmd1YWdl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRjo6QXVkaW9U
cmFja1ByaXZhdGVBVkYpOiBTaW1wbGUgY29uc3RydWN0b3IuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUp
OiBTaW1wbGUgZmFjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQzo6cGxheWVySXRlbVRyYWNrKTogU2ltcGxlIGdldHRlci4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW06
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMpOiBDYWxsIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVz
RnJvbVRyYWNrKTogRmlsbCBvdXQgdGhlIHZhbHVlcyBmcm9tIAorICAgICAgICAgICAgdGhlIGFz
c29jaWF0ZWQgQVZQbGF5ZXJJdGVtVHJhY2sgYW5kIGl0cyBBVkFzc2V0VHJhY2suCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6
IENhbGwgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpzZXRFbmFibGVkKTogKEVufERpcylhYmxlIHRoZSBBVlBsYXll
ckl0ZW1UcmFjay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnRyYWNrc0NoYW5nZWQpOiBEZXRlcm1pbmUgd2hpY2ggdHJhY2tzCisgICAgICAg
ICAgICBoYXZlIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCBhbmQgbm90aWZ5IHRoZSBjbGllbnRzIGFj
Y29yZGluZ2x5LgorCisyMDEzLTA5LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCiAgICAgICAgIFJFR1JFU1NJT04ocjE1NjU0Nik6IG1lZGlhL3ZpZGVvLXJ0bC5odG1sIGlz
IGZhaWxpbmcuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjIwMjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDRjYTI2NDExZjkzNWJmYmZhYTYyN2FkNTU2NGI4MmU0Y2VjNWRjOGEu
LjM2YmIzZmM4YTFhMzY5NzlkYjQyYjVhNmViNDRiNjA2MTg5YWNhYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzODQsNiAr
NTM4NCw5IEBACiAJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RDNjlEREIxNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDNjlERDkxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3Lm1tICovOyB9OwogCQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1M
TWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1l
bnRDdXN0b20uY3BwICovOyB9OworCQlDREUzQTg1NDE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9U
cmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERTNBODUyMTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5o
ICovOyB9OworCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAq
LzsgfTsKKwkJQ0RFM0E4NTgxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
M0E4NTYxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9
OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0
REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBC
NTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dl
bmVyaWMuY3BwICovOyB9OwogCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzMx
NDYwQjQ2MjAwOEIzMUYxIC8qIENsb2NrLmNwcCAqLzsgfTsKQEAgLTEyMzQ0LDYgKzEyMzQ3LDkg
QEAKIAkJQ0RDNjlERDkxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDREQxRTUyNTE2N0JBNTY0MDBDRTgyMEIgLyogVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFM0E4
NTIxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTNBODU1MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW07IHBhdGggPSBvYmpjL0F1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFM0E4NTYxN0Y2
MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaDsgcGF0aCA9IG9i
amMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNERTY1NjBFMTdDQTZFNzYwMDUyNkJBNyAvKiBtZWRpYUNvbnRyb2xzQXBwbGUuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBtZWRpYUNvbnRyb2xzQXBwbGUuanM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUE3NjJDMTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ4OSw2ICsxMzQ5NSw3IEBACiAJ
CQkJMDdCNDQyRDUxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
aCAqLywKIAkJCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcCAqLywKIAkJCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCisJCQkJQ0RFM0E4NTIxN0Y1RkNFNjAw
QzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGF2
Zm91bmRhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDEwMSw2ICsyMDEw
OCw4IEBACiAJCQkJREY5QUZENzExM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gKi8sCiAJCQkJQ0Q3RTA1MjAxNjUxQTg0MTAwQzEyMDFGIC8q
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUNEN0UwNTIxMTY1MUE4NDEwMEMx
MjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gKi8sCisJCQkJQ0RFM0E4NTUxN0Y2
MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKKwkJCQlDREUz
QTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IG9iamM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE1
ODYsNiArMjE1OTUsNyBAQAogCQkJCUNFMDhDM0QyMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTdCMkRCMzE1ODZBQkFE
MDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjAzRTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTA3MDdFNzEyMTlDMDQzMDBEOTBFNTEgLyog
QU5HTEVXZWJLaXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMkFCMEVGQUM5MDYw
MDlEMENBRiAvKiBBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTEyMEU2RTFE
QTcwMEJGNjA4OCAvKiBBbmltYXRpb25CYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MjUwLDYg
KzI0MjYwLDcgQEAKIAkJCQk2NTY1ODFGRTA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHRWxlbWVudEZh
Y3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUJBMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdFbGVtZW50SW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUJEMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REUzQTg1NDE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA4MUFBOERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdF
bGxpcHNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5QzIwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0V4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQwNiw2ICsyNzQxNyw3
IEBACiAJCQkJQjIyMjc5QTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0N1cnNvckVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RlZnNF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3OUIwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdEZXNjRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREUzQTg1NzE3RjYwMjA0
MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjc5QjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RvY3VtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyOEM2QTI3MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5QjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRp
b1RyYWNrLmNwcAppbmRleCBkYjUxZGQ4ZWQwNTE0MTVhOGVjY2Y0OTkwY2FmN2Q3YWRjODQ1MjI4
Li4xZTE0NGE4ZmRhMzdiYWM5MGJjZjJlNGFjM2RiMTExOThlMzIwYjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svQXVkaW9UcmFjay5jcHAKQEAgLTE0Niw2ICsxNDYsOCBAQCB2b2lkIEF1
ZGlvVHJhY2s6OnNldEVuYWJsZWQoY29uc3QgYm9vbCBlbmFibGVkKQogCiAgICAgbV9lbmFibGVk
ID0gZW5hYmxlZDsKIAorICAgIG1fcHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsKKwogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdl
ZCh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvVHJhY2tQcml2YXRlQVZGLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWFmNjQwNGE0ODEyN2E2ZWY3ZDZhOTYzZjZjMzZjZjE2ODZlNWU3ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1RyYWNrUHJpdmF0ZUFWRi5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEF1ZGlvVHJhY2tQcml2YXRlQVZGX2gKKyNkZWZpbmUgQXVkaW9UcmFja1ByaXZhdGVBVkZf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZh
dGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZUFW
RiA6IHB1YmxpYyBBdWRpb1RyYWNrUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXVkaW9UcmFja1ByaXZhdGVBVkYpCitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIEtpbmQga2luZCgp
IGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkg
Y29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBzZXRLaW5kKEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CisgICAgdm9pZCBzZXRJZChB
dG9taWNTdHJpbmcgbmV3SWQpIHsgbV9pZCA9IG5ld0lkOyB9CisgICAgdm9pZCBzZXRMYWJlbChB
dG9taWNTdHJpbmcgbGFiZWwpIHsgbV9sYWJlbCA9IGxhYmVsOyB9CisgICAgdm9pZCBzZXRMYW5n
dWFnZShBdG9taWNTdHJpbmcgbGFuZ3VhZ2UpIHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9CisK
KyAgICBLaW5kIG1fa2luZDsKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9taWNTdHJp
bmcgbV9sYWJlbDsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5ndWFnZTsKKworICAgIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGKCkKKyAgICA6IG1fa2luZChOb25lKQorICAgIHsKKyAgICB9Cit9OworCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNlbmRpZiAvLyBBdWRpb1RyYWNr
UHJpdmF0ZUFWRl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NzM4ODRhYzM4ZjYyNWI3ODg5MGU4ZDVkOGU1Y2Vh
ZjRkODVmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakNf
aAorI2RlZmluZSBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakNfaAorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVBVkYuaCIKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVHJhY2s7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDIDogcHVibGlj
IEF1ZGlvVHJhY2tQcml2YXRlQVZGIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMpCitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyh0cmFj
aykpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworCisgICAg
dm9pZCBzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sqKTsKKyAgICBBVlBsYXll
ckl0ZW1UcmFjayogcGxheWVySXRlbVRyYWNrKCkgeyByZXR1cm4gbV9wbGF5ZXJJdGVtVHJhY2su
Z2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5
ZXJJdGVtVHJhY2sqKTsKKworICAgIHZvaWQgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CisK
KyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVHJhY2s+IG1fcGxheWVySXRlbVRyYWNrOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQorCisKKyNlbmRpZiAvLyBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZmRiZTdiNGRjNTE0MTU1OTQy
OTRlZmQ3NjI3NDY2YTA4ZjAwMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akMubW0KQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldFRyYWNrLmg+CisjaW1wb3J0IDxBVkZv
dW5kYXRpb24vQVZQbGF5ZXJJdGVtVHJhY2suaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk1l
dGFkYXRhSXRlbS5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlv
bikKKworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFRyYWNrKQorU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtVHJhY2spCisKK1NPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNv
bnRlbnQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNBdXhpbGlhcnlDb250ZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFj
Y2Vzc2liaWxpdHksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNJc01haW5Qcm9ncmFtQ29udGVudCgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNj
cmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNJc0F1eGlsaWFyeUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlD
b250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5E
aWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVz
U3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCisjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25L
ZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
KEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKKyAgICA6IG1fcGxheWVySXRlbVRyYWNrKHRyYWNr
KQoreworICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOworfQorCit2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKK3sKKyAgICBBVkFz
c2V0VHJhY2sqIGFzc2V0VHJhY2sgPSBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFj
a107CisgICAgaWYgKCFhc3NldFRyYWNrKSB7CisgICAgICAgIHNldEVuYWJsZWQoZmFsc2UpOwor
ICAgICAgICBzZXRLaW5kKE5vbmUpOworICAgICAgICBzZXRJZChlbXB0eUF0b20pOworICAgICAg
ICBzZXRMYWJlbChlbXB0eUF0b20pOworICAgICAgICBzZXRMYW5ndWFnZShlbXB0eUF0b20pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0RW5hYmxlZChbbV9wbGF5ZXJJdGVtVHJh
Y2suZ2V0KCkgaXNFbmFibGVkXSk7CisgICAgc2V0SWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgW2Fz
c2V0VHJhY2sgdHJhY2tJRF0pKTsKKworICAgIGlmIChbYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJp
bGl0eV0pCisgICAgICAgIHNldEtpbmQoRGVzY3JpcHRpb24pOworICAgIGVsc2UgaWYgKFthc3Nl
dFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNj
cmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgc2V0S2luZChUcmFu
c2xhdGlvbik7CisgICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnRdKQorICAgICAgICBzZXRL
aW5kKEFsdGVybmF0aXZlKTsKKyAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKKyAg
ICAgICAgc2V0S2luZChNYWluKTsKKyAgICBlbHNlCisgICAgICAgIHNldEtpbmQoTm9uZSk7CisK
KyAgICBmb3IgKEFWTWV0YWRhdGFJdGVtKiBpdGVtIGluIFthc3NldFRyYWNrIGNvbW1vbk1ldGFk
YXRhXSkgeworICAgICAgICBpZiAoW2l0ZW0ua2V5IGlzRXF1YWw6QVZNZXRhZGF0YUNvbW1vbktl
eVRpdGxlXSkgeworICAgICAgICAgICAgIHNldExhYmVsKChOU1N0cmluZyopaXRlbS52YWx1ZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNldExhbmd1YWdl
KFthc3NldFRyYWNrIGV4dGVuZGVkTGFuZ3VhZ2VUYWddKTsKK30KKwordm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJh
Y2spCit7CisgICAgbV9wbGF5ZXJJdGVtVHJhY2sgPSB0cmFjazsKKyAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKK30KKwordm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIEF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRFbmFi
bGVkKGVuYWJsZWQpOworICAgIFttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBzZXRFbmFibGVkOmVu
YWJsZWRdOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYWI0
OGQzZDhjMDM1N2NmNWQ0NjBkMGJiNjBlNjlmOWVmMzU2NmFjNS4uMjZhNzhkNDg5ZTVkNzAyMGNm
MzgyYWIzYmJhMzAzYmMyM2I3OGU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNTksNiAr
NTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDOworY2xhc3MgQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiB7CiBwdWJsaWM6
CkBAIC0yMTQsNyArMjE1LDExIEBAIHByaXZhdGU6CiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVE
SUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9T
VVBQT1JUKQogICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0PiBtX2xlZ2li
bGVPdXRwdXQ7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBW
ZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQz4gPiBtX2F1ZGlvVHJhY2tzOwor
I2VuZGlmCisKICAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBtX2N1cnJlbnRUcmFjazsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDRhYjBkN2RlNDA4M2RlM2I5NjczMTNk
ZWE5ZDhjMzUzNzQ1ZTRjZjEuLjM0M2E1MGU5MjQ0NDViZDI2ZTQwNzNiMTJlMGM3Nzk1YWIxN2Y3
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCiAKKyNpbXBvcnQgIkF1ZGlv
VHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgpAQCAtMTA0OCw2ICsxMDQ5LDM5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dHJhY2tzQ2hhbmdlZCgpCiAgICAgICAgIH0KICAgICAgICAgc2V0SGFzVmlk
ZW8oaGFzVmlkZW8pOwogICAgICAgICBzZXRIYXNBdWRpbyhoYXNBdWRpbyk7CisKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyAgICAgICAgUmV0YWluUHRyPE5TU2V0PiBhdWRpb1RyYWNrcyA9
IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhBcnJheTpbdHJhY2tzIG9iamVjdHNBdElu
ZGV4ZXM6W3RyYWNrcyBpbmRleGVzT2ZPYmplY3RzUGFzc2luZ1Rlc3Q6XihpZCB0cmFjaywgTlNV
SW50ZWdlciwgQk9PTCopeworICAgICAgICAgICAgcmV0dXJuIFtbW3RyYWNrIGFzc2V0VHJhY2td
IG1lZGlhVHlwZV0gaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlQXVkaW9dOworICAgICAgICB9
XV1dKTsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gb2xkQXVkaW9UcmFja3MgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om1fYXVkaW9UcmFj
a3Muc2l6ZSgpXSk7CisKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQz4gPiBBdWRpb1RyYWNrVmVjdG9yOworICAgICAgICBmb3IgKEF1ZGlvVHJh
Y2tWZWN0b3I6Oml0ZXJhdG9yIGkgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGkgIT0gbV9hdWRp
b1RyYWNrcy5lbmQoKTsgKytpKQorICAgICAgICAgICAgW29sZEF1ZGlvVHJhY2tzLmdldCgpIGFk
ZE9iamVjdDooKmkpLT5wbGF5ZXJJdGVtVHJhY2soKV07CisKKyAgICAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZVNldD4gcmVtb3ZlZEF1ZGlvVHJhY2tzID0gYWRvcHROUyhbb2xkQXVkaW9UcmFja3Mu
Z2V0KCkgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgW3JlbW92ZWRBdWRpb1RyYWNrcy5nZXQoKSBt
aW51c1NldDphdWRpb1RyYWNrcy5nZXQoKV07CisKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVNldD4gYWRkZWRBdWRpb1RyYWNrcyA9IGFkb3B0TlMoW2F1ZGlvVHJhY2tzLmdldCgpIG11dGFi
bGVDb3B5XSk7CisgICAgICAgIFthZGRlZEF1ZGlvVHJhY2tzLmdldCgpIG1pbnVzU2V0Om9sZEF1
ZGlvVHJhY2tzLmdldCgpXTsKKworICAgICAgICBBdWRpb1RyYWNrVmVjdG9yIG5ld0F1ZGlvVHJh
Y2tzOworICAgICAgICBmb3IgKEF1ZGlvVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGkgPSBtX2F1ZGlv
VHJhY2tzLmJlZ2luKCk7IGkgIT0gbV9hdWRpb1RyYWNrcy5lbmQoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoW3JlbW92ZWRBdWRpb1RyYWNrcyBjb250YWluc09iamVjdDooKmkpLT5wbGF5ZXJJ
dGVtVHJhY2soKV0pCisgICAgICAgICAgICAgICAgcGxheWVyKCktPnJlbW92ZUF1ZGlvVHJhY2so
aS0+Z2V0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0F1ZGlvVHJh
Y2tzLmFwcGVuZCgqaSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEFWUGxheWVySXRlbVRy
YWNrKiBwbGF5ZXJJdGVtVHJhY2sgaW4gYWRkZWRBdWRpb1RyYWNrcy5nZXQoKSkgeworICAgICAg
ICAgICAgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQz4gbmV3VHJhY2sgPSBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShwbGF5ZXJJdGVtVHJhY2spOworICAgICAgICAgICAg
bmV3QXVkaW9UcmFja3MuYXBwZW5kKG5ld1RyYWNrKTsKKyAgICAgICAgICAgIHBsYXllcigpLT5h
ZGRBdWRpb1RyYWNrKG5ld1RyYWNrLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBtX2F1ZGlv
VHJhY2tzLnN3YXAobmV3QXVkaW9UcmFja3MpOworI2VuZGlmCiAgICAgfQogCiAjaWYgSEFWRShB
VkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ1OTIyZmMwMTAzOGQ3
YjNiODg1NDMzMjk1ODA5NDg3Y2ZhYjlkOWUuLjRjNDZhMDRlYmU4YjZlYTEwOTZkZmZhYjRmMTM3
ODBhN2FjMTBiNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxMy0wOS0yNyAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAorICAgICAgICBbTWFjXSBBZGQgQXVkaW9UcmFjayBz
dXBwb3J0IHRvIE1lZGlhUGxheWVyUHJpdmF0ZUFWRk9iQy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svYXVkaW8tdHJhY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9hdWRpby10cmFjay5odG1s
OiBBZGRlZC4KKworMjAxMy0wOS0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KwogICAgICAgICBSRUdSRVNTSU9OKHIxNTY1NDYpOiAxNyBtZWRpYSB0ZXN0cyBicm9rZW4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjAyMQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9hdWRpby10cmFjay1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9hdWRpby10cmFjay1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWRlMTllMGU5ZTdkZTgyM2FhMDgzNzE2ZTQwNDZiZGJmYjAyYjBlOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2F1ZGlvLXRyYWNrLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE2IEBACitJbi1iYW5kIGF1ZGlvIHRyYWNrcy4KKworRVZFTlQoYWRk
dHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudHJhY2sgPT0gJ3ZpZGVvLmF1ZGlvVHJhY2tzWzBdJykg
T0sKKworRVZFTlQoY2FucGxheXRocm91Z2gpCisKKyoqIENoZWNrIGluaXRpYWwgaW4tYmFuZCB0
cmFjayBzdGF0ZXMKK0VYUEVDVEVEICh2aWRlby5hdWRpb1RyYWNrcy5sZW5ndGggPT0gJzEnKSBP
SworCisqKiBVbmxvYWQgdmlkZW8gZmlsZSwgY2hlY2sgdHJhY2sgY291bnQKK1JVTih2aWRlby5z
cmMgPSAnJykKK0VYUEVDVEVEICh2aWRlby5hdWRpb1RyYWNrcy5sZW5ndGggPT0gJzAnKSBPSwor
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9hdWRp
by10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svYXVkaW8tdHJhY2suaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNzU1NGM4ZjA3ODg2Mjg3ZGMzZWIxNmExNTBiZGEzZDA1MjcxZjY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svYXVkaW8tdHJhY2suaHRtbApA
QCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpz
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorCisgICAgICAgICAgICB2YXIgYWRkdHJhY2tFdmVudENvdW50
ID0gMDsKKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tBZGRlZChldmVudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudC50eXBl
ICsgIikiKTsKKyAgICAgICAgICAgICAgICBjb21wYXJlVHJhY2tzKCJldmVudC50cmFjayIsICJ2
aWRlby5hdWRpb1RyYWNrc1siICsgYWRkdHJhY2tFdmVudENvdW50ICsgIl0iKTsKKyAgICAgICAg
ICAgICAgICArK2FkZHRyYWNrRXZlbnRDb3VudDsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjb21wYXJlVHJh
Y2tzKHRyYWNrMSwgdHJhY2syKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBl
cXVhbCA9IChldmFsKHRyYWNrMSkgPT0gZXZhbCh0cmFjazIpKTsKKyAgICAgICAgICAgICAgICBy
ZXBvcnRFeHBlY3RlZChlcXVhbCwgdHJhY2sxLCAiPT0iLCB0cmFjazIsIHRyYWNrMSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj48aT4qKiBDaGVjayBp
bml0aWFsIGluLWJhbmQgdHJhY2sgc3RhdGVzPCIgKyAiL2k+Iik7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby5hdWRpb1RyYWNrcy5sZW5ndGgiLCAxKTsKKworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPioqIFVubG9hZCB2aWRlbyBmaWxlLCBjaGVjayB0
cmFjayBjb3VudDwiICsgIi9pPiIpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uc3JjID0g
JyciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLmF1ZGlvVHJhY2tzLmxl
bmd0aCIsIDApOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHNldHVwKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50
KCk7CisgICAgICAgICAgICAgICAgdmlkZW8uYXVkaW9UcmFja3MuYWRkRXZlbnRMaXN0ZW5lcigi
YWRkdHJhY2siLCB0cmFja0FkZGVkKTsKKyAgICAgICAgICAgICAgICB2aWRlby5zcmMgPSBmaW5k
TWVkaWFGaWxlKCdhdWRpbycsICcuLi9jb250ZW50L3NpbGVuY2UnKTsKKyAgICAgICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAg
ICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9InNldHVwKCkiPgorICAgICAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICAgICAg
PHA+SW4tYmFuZCBhdWRpbyB0cmFja3MuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="235130"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>