From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nilesh Subject: port forwarding form IP range Date: Sat, 11 Mar 2006 04:24:37 -0800 (PST) Message-ID: <20060311122437.15645.qmail@web50511.mail.yahoo.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1482415610-1142079877=:15348" Content-Transfer-Encoding: 8bit Return-path: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: netfilter-bounces@lists.netfilter.org Errors-To: netfilter-bounces@lists.netfilter.org To: iptables Cc: iptables@linuxguruz.com --0-1482415610-1142079877=:15348 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Id: Content-Disposition: inline Dear all, I have two squid proxy servers and two ISP=20 1) 192.168.0.1 port 3128 2) 192.168.0.3 port 3128 We have around 70 comps assigned IP=92s between 192.168.0.4 to 192.168.0.250 The default proxy we are using is 192.168.0.1 which is on the ISP 1. Now I have configured 192.168.0.3 squid proxy server on ISP 2 line. Both ISP 1 and ISP 2 are landing (connected) on the same Switch. Now I want setup the request coming from IP range (192.168.0.10 to 192.168.0.20) for the=20 192.168.0.1:3128=20 Will be forward to 192.168.0.3:3128 So the users from this IP range will access only 192.168.0.3 proxy server. Could any one please help me which rules should I use in IPTABLES . I have attached herewith my rc.firewall file. Please help me. Regards Nilesh. __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around=20 http://mail.yahoo.com=20 __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around=20 http://mail.yahoo.com=20 --0-1482415610-1142079877=:15348 Content-Type: application/octet-stream; name="rc.firewall" Content-Transfer-Encoding: base64 Content-Description: 543152633-rc.firewall Content-Disposition: attachment; filename="rc.firewall" IyEvYmluL3NoCiMKIyByYy5maXJld2FsbC0yLjQtc3Ryb25nZXIKIwpGV1ZF Uj0wLjgwcwoKIyAgICAgICAgICBBbiBleGFtcGxlIG9mIGEgc3Ryb25nZXIg SVBUQUJMRVMgZmlyZXdhbGwgd2l0aCBJUCBNYXNxdWVyYWRlIAojICAgICAg ICAgIHN1cHBvcnQgZm9yIDIuNC54IGtlcm5lbHMuICAKIwojIExvZzoKIwoj ICAgMC44MHMgLSBBZGRlZCBhIERJU0FCTEVEIGlwX25hdF9pcmMga2VybmVs IG1vZHVsZSBzZWN0aW9uLCBjaGFuZ2VkIHRoZQojICAgICAgICAgICBkZWZh dWx0IG9mIHRoZSBpcF9jb25udHJhY2tfaXJjIHRvIE5PVCBsb2FkIGJ5IGRl ZmF1bHQsIGFuZCAKIyAgICAgICAgICAgYWRkZWQgYWRkaXRpb25hbCBrZXJu ZWwgbW9kdWxlIGNvbW1lbnRzCiMgICAwLjc5cyAtIHJ1bGVzZXQgbm93IHVz ZXMgbW9kcHJvYmUgaW5zdGVhZCBvZiBpbnNtb2QKIyAgIDAuNzhzIC0gUkVK RUNUIGlzIG5vdCBhIGxlZ2FsIHBvbGljeSB5ZXQ7IGJhY2sgdG8gRFJPUAoj ICAgMC43N3MgLSBDaGFuZ2VkIHRoZSBkZWZhdWx0IGJsb2NrIGJlaGF2aW9y IHRvIFJFSkVDVCBub3QgRFJPUAojICAgMC43NnMgLSBBZGRlZCBhIGNvbW1l bnQgYWJvdXQgdGhlIE9QVElPTkFMIFdXVyBydWxlc2V0IGFuZCBhIGNvbW1l bnQKIyAgICAgICAgICAgd2hlcmUgdG8gcHV0IG9wdGlvbmFsIFBPUlRGVyBj b21tYW5kcwojICAgMC43NXMgLSBBZGRlZCBjbGFyaWZpY2F0aW9uIHRoYXQg UFBQb0UgdXNlcnMgbmVlZCB0byB1c2UKIyAgICAgICAgICAgInBwcDAiIGlu c3RlYWQgb2YgImV0aDAiIGZvciB0aGVpciBleHRlcm5hbCBpbnRlcmZhY2UK IyAgIDAuNzRzIC0gQ2hhbmdlZCB0aGUgRVhUSVAgY29tbWFuZCB0byB3b3Jr IG9uIE5PTi1FbmdsaXNoIGRpc3Ryb3MKIyAgIDAuNzNzIC0gQWRkZWQgY29t bWVudHMgaW4gdGhlIG91dHB1dCBzZWN0aW9uIHRoYXQgREhDUGQgaXMgb3B0 aW9uYWwKIyAgICAgICAgICAgYW5kIGNoYW5nZWQgdGhlIGRlZmF1bHQgc2V0 dGluZ3MgdG8gZGlzYWJsZWQKIyAgIDAuNzJzIC0gQ2hhbmdlZCB0aGUgZmls dGVyIGZyb20gdGhlIElOVE5FVCB0byB0aGUgSU5USVAgdG8gYmUKIyAgICAg ICAgICAgc3RhdGVmdWw7IG1vdmVkIHRoZSBjb21tYW5kIFZBUnMgdG8gdGhl IHRvcCBhbmQgbWFkZSB0aGUKIyAgICAgICAgICAgcmVzdCBvZiB0aGUgc2Ny aXB0IHRvIHVzZSB0aGVtCiMgICAwLjcwcyAtIEFkZGVkIGEgZGlzYWJsZWQg ZXhhbXBsZXMgZm9yIGFsbG93aW5nIGludGVybmFsIERIQ1AgIAojICAgICAg ICAgICBhbmQgZXh0ZXJuYWwgV1dXIGFjY2VzcyB0byB0aGUgc2VydmVyCiMg ICAwLjYzcyAtIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJUkMgbW9kdWxlCiMg ICAwLjYycyAtIEluaXRpYWwgdmVyc2lvbiBiYXNlZCB1cG9uIHRoZSBiYXNp YyAyLjQueCByYy5maXJld2FsbAoKCmVjaG8gLWUgIlxuTG9hZGluZyBTVFJP TkdFUiByYy5maXJld2FsbCAtIHZlcnNpb24gJEZXVkVSLi5cbiIKCgojIFRo ZSBsb2NhdGlvbiBvZiB2YXJpb3VzIGlwdGFibGVzIGFuZCBvdGhlciBzaGVs bCBwcm9ncmFtcwojCiMgICBJZiB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbiBj YW1lIHdpdGggYSBjb3B5IG9mIGlwdGFibGVzLCBtb3N0CiMgICBsaWtlbHkg aXQgaXMgbG9jYXRlZCBpbiAvc2Jpbi4gIElmIHlvdSBtYW51YWxseSBjb21w aWxlZCAKIyAgIGlwdGFibGVzLCB0aGUgZGVmYXVsdCBsb2NhdGlvbiBpcyBp biAvdXNyL2xvY2FsL3NiaW4KIwojICoqIFBsZWFzZSB1c2UgdGhlICJ3aGVy ZWlzIGlwdGFibGVzIiBjb21tYW5kIHRvIGZpZ3VyZSBvdXQgCiMgKiogd2hl cmUgeW91ciBjb3B5IGlzIGFuZCBjaGFuZ2UgdGhlIHBhdGggYmVsb3cgdG8g cmVmbGVjdCAKIyAqKiB5b3VyIHNldHVwCiMKSVBUQUJMRVM9L3NiaW4vaXB0 YWJsZXMKI0lQVEFCTEVTPS91c3IvbG9jYWwvc2Jpbi9pcHRhYmxlcwojCkxT TU9EPS9zYmluL2xzbW9kCkRFUE1PRD0vc2Jpbi9kZXBtb2QKTU9EUFJPQkU9 L3NiaW4vbW9kcHJvYmUKR1JFUD0vYmluL2dyZXAKQVdLPS9iaW4vYXdrClNF RD0vYmluL3NlZApJRkNPTkZJRz0vc2Jpbi9pZmNvbmZpZwoKCiNTZXR0aW5n IHRoZSBFWFRFUk5BTCBhbmQgSU5URVJOQUwgaW50ZXJmYWNlcyBmb3IgdGhl IG5ldHdvcmsKIwojICBFYWNoIElQIE1hc3F1ZXJhZGUgbmV0d29yayBuZWVk cyB0byBoYXZlIGF0IGxlYXN0IG9uZQojICBleHRlcm5hbCBhbmQgb25lIGlu dGVybmFsIG5ldHdvcmsuICBUaGUgZXh0ZXJuYWwgbmV0d29yawojICBpcyB3 aGVyZSB0aGUgbmF0dGluZyB3aWxsIG9jY3VyIGFuZCB0aGUgaW50ZXJuYWwg bmV0d29yawojICBzaG91bGQgcHJlZmVyYWJseSBiZSBhZGRyZXNzZWQgd2l0 aCBhIFJGQzE5MTggcHJpdmF0ZSBhZGRyZXNzCiMgIHNjaGVtZS4KIwojICBG b3IgdGhpcyBleGFtcGxlLCAiZXRoMCIgaXMgZXh0ZXJuYWwgYW5kICJldGgx IiBpcyBpbnRlcm5hbCIKIwojICBOT1RFOiAgSWYgdGhpcyBkb2VzbnQgRVhB Q1RMWSBmaXQgeW91ciBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCAKIyAgICAg ICAgIGNoYW5nZSB0aGUgRVhUSUYgb3IgSU5USUYgdmFyaWFibGVzIGFib3Zl LiBGb3IgZXhhbXBsZTogCiMKIyAgICAgICAgICAgIElmIHlvdSBhcmUgYSBQ UFBvRSBvciBhbmFsb2cgbW9kZW0gdXNlcjoKIwojICAgICAgICAgICAgICAg RVhUSUY9InBwcDAiIAojCkVYVElGPSJwcHAwIgpJTlRJRj0iZXRoMSIKZWNo byAiICBFeHRlcm5hbCBJbnRlcmZhY2U6ICAkRVhUSUYiCmVjaG8gIiAgSW50 ZXJuYWwgSW50ZXJmYWNlOiAgJElOVElGIgplY2hvICIgIC0tLSIKCiMgU3Bl Y2lmeSB5b3VyIFN0YXRpYyBJUCBhZGRyZXNzIGhlcmUgb3IgbGV0IHRoZSBz Y3JpcHQgdGFrZSBjYXJlIG9mIGl0IAojIGZvciB5b3UuCiMKIyAgIElmIHlv dSBwcmVmZXIgdG8gdXNlIFNUQVRJQyBhZGRyZXNzZXMgaW4geW91ciBmaXJl d2FsbHMsIHVuLSMgb3V0IHRoZQojICAgc3RhdGljIGV4YW1wbGUgYmVsb3cg YW5kICMgb3V0IHRoZSBkeW5hbWljIGxpbmUuICBJZiB5b3UgZG9uJ3QgY2Fy ZSwKIyAgIGp1c3QgbGVhdmUgdGhpcyBzZWN0aW9uIGFsb25lLgojCiMgICBJ ZiB5b3UgaGF2ZSBhIERZTkFNSUMgSVAgYWRkcmVzcywgdGhlIHJ1bGVzZXQg YWxyZWFkeSB0YWtlcyBjYXJlIG9mCiMgICB0aGlzIGZvciB5b3UuICBQbGVh c2Ugbm90ZSB0aGF0IHRoZSBkaWZmZXJlbnQgc2luZ2xlIGFuZCBkb3VibGUg cXVvdGUgCiMgICBjaGFyYWN0ZXJzIGFuZCB0aGUgc2NyaXB0IE1BVFRFUi4K IwojCiMgICBESENQIHVzZXJzOgojICAgLS0tLS0tLS0tLS0KIyAgIElmIHlv dSBnZXQgeW91ciBUQ1AvSVAgYWRkcmVzcyB2aWEgREhDUCwgKip5b3Ugd2ls bCBuZWVkICoqIHRvIGVuYWJsZSB0aGUgCiMgICAjZWQgb3V0IGNvbW1hbmQg YmVsb3cgdW5kZXJuZWF0aCB0aGUgUFBQIHNlY3Rpb24gQU5EIHJlcGxhY2Ug dGhlIHdvcmQgCiMgICAiZXRoMCIgd2l0aCB0aGUgbmFtZSBvZiB5b3VyIEVY VEVSTkFMIEludGVybmV0IGNvbm5lY3Rpb24gKHBwcDAsIGlwcHAwLCAKIyAg IGV0Yykgb24gdGhlIGxpbmVzIGZvciAicHBwLWlwIiBhbmQgImV4dGlwIi4g IFlvdSBzaG91bGQgYWxzbyBub3RlIHRoYXQgdGhlIAojICAgREhDUCBzZXJ2 ZXIgY2FuIGFuZCB3aWxsIGNoYW5nZSBJUCBhZGRyZXNzZXMgb24geW91LiAg VG8gZGVhbCB3aXRoIHRoaXMsIAojICAgdXNlcnMgc2hvdWxkIGNvbmZpZ3Vy ZSB0aGVpciBESENQIGNsaWVudCB0byByZS1ydW4gdGhlIHJjLmZpcmV3YWxs IHJ1bGVzZXQgCiMgICBldmVyeXRpbWUgdGhlIERIQ1AgbGVhc2UgaXMgcmVu ZXdlZC4KIwojICAgICBOT1RFICMxOiAgU29tZSBESENQIGNsaWVudHMgbGlr ZSB0aGUgb3JpZ2luYWwgInB1bXAiICh0aGUgbmV3ZXIKIyAgICAgICAgICAg ICAgIHZlcnNpb25zIGhhdmUgYmVlbiBmaXhlZCkgZGlkIE5PVCBoYXZlIHRo ZSBhYmlsaXR5IHRvIHJ1biAKIyAgICAgICAgICAgICAgIHNjcmlwdHMgYWZ0 ZXIgYSBsZWFzZS1yZW5ldy4gIEJlY2F1c2Ugb2YgdGhpcywgeW91IG5lZWQg dG8gCiMgICAgICAgICAgICAgICByZXBsYWNlIGl0IHdpdGggc29tZXRoaW5n IGxpa2UgImRoY3BjZCIgb3IgImRoY2xpZW50Ii4KIwojICAgICBOT1RFICMy OiAgVGhlIHN5bnRheCBmb3IgImRoY3BjZCIgaGFzIGNoYW5nZWQgaW4gcmVj ZW50IHZlcnNpb25zLgojCiMgICAgICAgICAgICAgICBPbGRlciB2ZXJzaW9u cyB1c2VkIHN5bnRheCBsaWtlOgojICAgICAgICAgICAgICAgICAgICAgICAg IGRoY3BjZCAtYyAvZXRjL3JjLmQvcmMuZmlyZXdhbGwgZXRoMAojCiMgICAg ICAgICAgICAgICBOZXdlciB2ZXJzaW9ucyBleGVjdXRlIGEgZmlsZSBjYWxs ZWQgL2V0Yy9kaGNwYy9kaGNwY2QtZXRoMC5leGUKIwojICAgICBOT1RFICMz OiAgRm9yIFB1bXAgdXNlcnMsIHB1dCB0aGUgZm9sbG93aW5nIGxpbmUgaW4g L2V0Yy9wdW1wLmNvbmY6CiMKIyAgICAgICAgICAgICAgICAgICBzY3JpcHQg L2V0Yy9yYy5kL3JjLmZpcmV3YWxsCiMKIyAgIFBQUCB1c2VyczoKIyAgIC0t LS0tLS0tLS0KIyAgIElmIHlvdSBhcmVuJ3QgYWxyZWFkeSBhd2FyZSwgdGhl IC9ldGMvcHBwL2lwLXVwIHNjcmlwdCBpcyBhbHdheXMgcnVuIHdoZW4gCiMg ICBhIFBQUCBjb25uZWN0aW9uIGNvbWVzIHVwLiAgQmVjYXVzZSBvZiB0aGlz LCB3ZSBjYW4gbWFrZSB0aGUgcnVsZXNldCBnbyBhbmQgCiMgICBnZXQgdGhl IG5ldyBQUFAgSVAgYWRkcmVzcyBhbmQgdXBkYXRlIHRoZSBzdHJvbmcgZmly ZXdhbGwgcnVsZXNldC4KIwojICAgSWYgdGhlIC9ldGMvcHBwL2lwLXVwIGZp bGUgYWxyZWFkeSBleGlzdHMsIHlvdSBzaG91bGQgZWRpdCBpdCBhbmQgYWRk IGEgbGluZQojICAgY29udGFpbmluZyAiL2V0Yy9yYy5kL3JjLmZpcmV3YWxs IiBuZWFyIHRoZSBlbmQgb2YgdGhlIGZpbGUuCiMKIyAgIElmIHlvdSBkb24n dCBhbHJlYWR5IGhhdmUgYSAvZXRjL3BwcC9pcC11cCBzY2NyaXB0LCB5b3Ug bmVlZCB0byBjcmVhdGUgdGhlIAojICAgZm9sbG93aW5nIGxpbmsgdG8gcnVu IHRoZSAvZXRjL3JjLmQvcmMuZmlyZXdhbGwgc2NyaXB0LgojCiMgICAgICAg bG4gLXMgL2V0Yy9yYy5kL3JjLmZpcmV3YWxsIC9ldGMvcHBwL2lwLXVwCiMK IyAgICogWW91IHRoZW4gd2FudCB0byBlbmFibGUgdGhlICNlZCBvdXQgc2hl bGwgY29tbWFuZCBiZWxvdyAqCiMKIwojIERldGVybWluZSB0aGUgZXh0ZXJu YWwgSVAgYXV0b21hdGljYWxseToKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiMKIyAgVGhlIGZvbGxvd2luZyBsaW5lIHdp bGwgZGV0ZXJtaW5lIHlvdXIgZXh0ZXJuYWwgSVAgYWRkcmVzcy4gIFRoaXMK IyAgbGluZSBpcyBzb21ld2hhdCBjb21wbGV4IGFuZCBjb25mdXNpbmcgYnV0 IGl0IHdpbGwgYWxzbyB3b3JrIGZvcgojICBhbGwgTk9OLUVuZ2xpc2ggTGlu dXggZGlzdHJpYnV0aW9uczoKIwpFWFRJUD0iYCRJRkNPTkZJRyAkRVhUSUYg fCAkQVdLIFwKIC8kRVhUSUYvJ3tuZXh0fS8ve3NwbGl0KCQwLGEsIjoiKTtz cGxpdChhWzJdLGEsIiAiKTtwcmludCBhWzFdO2V4aXR9J2AiCgoKIyBGb3Ig dXNlcnMgd2hvIHdpc2ggdG8gdXNlIFNUQVRJQyBJUCBhZGRyZXNzZXM6CiMK IyAgIyBvdXQgdGhlIEVYVElQIGxpbmUgYWJvdmUgYW5kIHVuLSMgb3V0IHRo ZSBFWFRJUCBsaW5lIGJlbG93CiMKI0VYVElQPSJ5b3VyLnN0YXRpYy5QUFAu YWRkcmVzcyIKI0VYVElQPSIyMDMuMTI5LjIyNC4xNDkiCmVjaG8gIiAgRXh0 ZXJuYWwgSVA6ICRFWFRJUCIKZWNobyAiICAtLS0iCgoKIyBBc3NpZ24gdGhl IGludGVybmFsIFRDUC9JUCBuZXR3b3JrIGFuZCBJUCBhZGRyZXNzCklOVE5F VD0iMTkyLjE2OC4wLjAvMjQiCklOVElQPSIxOTIuMTY4LjAuMS8yNCIKZWNo byAiICBJbnRlcm5hbCBOZXR3b3JrOiAkSU5UTkVUIgplY2hvICIgIEludGVy bmFsIElQOiAgICAgICRJTlRJUCIKZWNobyAiICAtLS0iCgoKCgojIFNldHRp bmcgYSBmZXcgb3RoZXIgbG9jYWwgdmFyaWFibGVzCiMKVU5JVkVSU0U9IjAu MC4wLjAvMCIKCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiM9PSBObyBl ZGl0aW5nIGJleW9uZCB0aGlzIGxpbmUgaXMgcmVxdWlyZWQgZm9yIGluaXRp YWwgTUFTUSB0ZXN0aW5nID09CgojIE5lZWQgdG8gdmVyaWZ5IHRoYXQgYWxs IG1vZHVsZXMgaGF2ZSBhbGwgcmVxdWlyZWQgZGVwZW5kZW5jaWVzCiMKZWNo byAiICAtIFZlcmlmeWluZyB0aGF0IGFsbCBrZXJuZWwgbW9kdWxlcyBhcmUg b2siCiRERVBNT0QgLWEKCmVjaG8gLWVuICIgICAgTG9hZGluZyBrZXJuZWwg bW9kdWxlczogIgoKIyBXaXRoIHRoZSBuZXcgSVBUQUJMRVMgY29kZSwgdGhl IGNvcmUgTUFTUSBmdW5jdGlvbmFsaXR5IGlzIG5vdyBlaXRoZXIKIyBtb2R1 bGFyIG9yIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gIFRoaXMgSE9XVE8g c2hvd3MgQUxMIElQVEFCTEVTCiMgb3B0aW9ucyBhcyBNT0RVTEVTLiAgSWYg eW91ciBrZXJuZWwgaXMgY29tcGlsZWQgY29ycmVjdGx5LCB0aGVyZSBpcwoj IE5PIG5lZWQgdG8gbG9hZCB0aGUga2VybmVsIG1vZHVsZXMgbWFudWFsbHku ICAKIwojICBOT1RFOiBUaGUgZm9sbG93aW5nIGl0ZW1zIGFyZSBsaXN0ZWQg T05MWSBmb3IgaW5mb3JtYXRpb25hbCByZWFzb25zLgojICAgICAgICBUaGVy ZSBpcyBubyByZWFzb24gdG8gbWFudWFsIGxvYWQgdGhlc2UgbW9kdWxlcyB1 bmxlc3MgeW91cgojICAgICAgICBrZXJuZWwgaXMgZWl0aGVyIG1pcy1jb25m aWd1cmVkIG9yIHlvdSBpbnRlbnRpb25hbGx5IGRpc2FibGVkCiMgICAgICAg IHRoZSBrZXJuZWwgbW9kdWxlIGF1dG9sb2FkZXIuCiMKCiMgVXBvbiB0aGUg Y29tbWFuZHMgb2Ygc3RhcnRpbmcgdXAgSVAgTWFzcSBvbiB0aGUgc2VydmVy LCB0aGUKIyBmb2xsb3dpbmcga2VybmVsIG1vZHVsZXMgd2lsbCBiZSBhdXRv bWF0aWNhbGx5IGxvYWRlZDoKIwojIE5PVEU6ICBPbmx5IGxvYWQgdGhlIElQ IE1BU1EgbW9kdWxlcyB5b3UgbmVlZC4gIEFsbCBjdXJyZW50IElQIE1BU1Eg CiMgICAgICAgIG1vZHVsZXMgYXJlIHNob3duIGJlbG93IGJ1dCBhcmUgY29t bWVudGVkIG91dCBmcm9tIGxvYWRpbmcuCiMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgojTG9hZCB0aGUgbWFpbiBib2R5IG9mIHRoZSBJUFRBQkxFUyBtb2R1bGUg LSAiaXBfdGFibGVzIgojICAtIExvYWRlZCBhdXRvbWF0aWNhbGx5IHdoZW4g dGhlICJpcHRhYmxlcyIgY29tbWFuZCBpcyBpbnZva2VkCiMKIyAgLSBMb2Fk ZWQgbWFudWFsbHkgdG8gY2xlYW4gdXAga2VybmVsIGF1dG8tbG9hZGluZyB0 aW1pbmcgaXNzdWVzCiMKZWNobyAtZW4gImlwX3RhYmxlcywgIgojCiNWZXJp ZnkgdGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBp dAojCmlmIFsgLXogImAgJExTTU9EIHwgJEdSRVAgaXBfdGFibGVzIHwgJEFX SyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgogICAkTU9EUFJPQkUgaXBfdGFi bGVzCmZpCgoKI0xvYWQgdGhlIElQVEFCTEVTIGZpbHRlcmluZyBtb2R1bGUg LSAiaXB0YWJsZV9maWx0ZXIiIAojCiMgIC0gTG9hZGVkIGF1dG9tYXRpY2Fs bHkgd2hlbiBmaWx0ZXIgcG9saWNpZXMgYXJlIGFjdGl2YXRlZAoKCiNMb2Fk IHRoZSBzdGF0ZWZ1bCBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yayAt ICJpcF9jb25udHJhY2siCiMKIyBUaGUgY29ubnRyYWNrICBtb2R1bGUgaW4g aXRzZWxmIGRvZXMgbm90aGluZyB3aXRob3V0IG90aGVyIHNwZWNpZmljIAoj IGNvbm50cmFjayBtb2R1bGVzIGJlaW5nIGxvYWRlZCBhZnRlcndhcmRzIHN1 Y2ggYXMgdGhlICJpcF9jb25udHJhY2tfZnRwIgojIG1vZHVsZQojCiMgIC0g VGhpcyBtb2R1bGUgaXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBNQVNR IGZ1bmN0aW9uYWxpdHkgaXMgCiMgICAgZW5hYmxlZCAKIwojICAtIExvYWRl ZCBtYW51YWxseSB0byBjbGVhbiB1cCBrZXJuZWwgYXV0by1sb2FkaW5nIHRp bWluZyBpc3N1ZXMKIwplY2hvIC1lbiAiaXBfY29ubnRyYWNrLCAiCiMKI1Zl cmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRlZC4gIElmIGl0IGlzLCBza2lw IGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9jb25udHJhY2sg fCAkQVdLIHsncHJpbnQgJDEnfSBgIiBdOyB0aGVuCiAgICRNT0RQUk9CRSBp cF9jb25udHJhY2sKZmkKCgojTG9hZCB0aGUgRlRQIHRyYWNraW5nIG1lY2hh bmlzbSBmb3IgZnVsbCBGVFAgdHJhY2tpbmcKIwojIEVuYWJsZWQgYnkgZGVm YXVsdCAtLSBpbnNlcnQgYSAiIyIgb24gdGhlIG5leHQgbGluZSB0byBkZWFj dGl2YXRlCiMKZWNobyAtZSAiaXBfY29ubnRyYWNrX2Z0cCwgIgojCiNWZXJp ZnkgdGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBp dAojCmlmIFsgLXogImAgJExTTU9EIHwgJEdSRVAgaXBfY29ubnRyYWNrX2Z0 cCB8ICRBV0sgeydwcmludCAkMSd9IGAiIF07IHRoZW4KICAgJE1PRFBST0JF IGlwX2Nvbm50cmFja19mdHAKZmkKCgojTG9hZCB0aGUgSVJDIHRyYWNraW5n IG1lY2hhbmlzbSBmb3IgZnVsbCBJUkMgdHJhY2tpbmcKIwojIERpc2FibGVk IGJ5IGRlZmF1bHQgLS0gaW5zZXJ0IGEgIiMiIG9uIHRoZSBuZXh0IGZldyBs aW5lcyB0byBhY3RpdmF0ZQojCiMgZWNobyAtZW4gIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXBfY29ubnRyYWNrX2lyYywgIgojCiNWZXJpZnkg dGhlIG1vZHVsZSBpc24ndCBsb2FkZWQuICBJZiBpdCBpcywgc2tpcCBpdAoj CiMgaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9jb25udHJhY2tfaXJj IHwgJEFXSyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgojICAgICRNT0RQUk9C RSBpcF9jb25udHJhY2tfaXJjCiMgZmkKCgojTG9hZCB0aGUgZ2VuZXJhbCBJ UFRBQkxFUyBOQVQgY29kZSAtICJpcHRhYmxlX25hdCIKIyAgLSBMb2FkZWQg YXV0b21hdGljYWxseSB3aGVuIE1BU1EgZnVuY3Rpb25hbGl0eSBpcyB0dXJu ZWQgb24KIyAKIyAgLSBMb2FkZWQgbWFudWFsbHkgdG8gY2xlYW4gdXAga2Vy bmVsIGF1dG8tbG9hZGluZyB0aW1pbmcgaXNzdWVzCiMKZWNobyAtZW4gImlw dGFibGVfbmF0LCAiCiMKI1ZlcmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRl ZC4gIElmIGl0IGlzLCBza2lwIGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAk R1JFUCBpcHRhYmxlX25hdCB8ICRBV0sgeydwcmludCAkMSd9IGAiIF07IHRo ZW4KICAgJE1PRFBST0JFIGlwdGFibGVfbmF0CmZpCgoKI0xvYWRzIHRoZSBG VFAgTkFUIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgY29yZSBJUFRBQkxFUyBj b2RlCiMgUmVxdWlyZWQgdG8gc3VwcG9ydCBub24tUEFTViBGVFAuCiMKIyBF bmFibGVkIGJ5IGRlZmF1bHQgLS0gaW5zZXJ0IGEgIiMiIG9uIHRoZSBuZXh0 IGxpbmUgdG8gZGVhY3RpdmF0ZQojCmVjaG8gLWUgImlwX25hdF9mdHAiCiMK I1ZlcmlmeSB0aGUgbW9kdWxlIGlzbid0IGxvYWRlZC4gIElmIGl0IGlzLCBz a2lwIGl0CiMKaWYgWyAteiAiYCAkTFNNT0QgfCAkR1JFUCBpcF9uYXRfZnRw IHwgJEFXSyB7J3ByaW50ICQxJ30gYCIgXTsgdGhlbgogICAkTU9EUFJPQkUg aXBfbmF0X2Z0cApmaQoKCiNMb2FkcyB0aGUgSVJDIE5BVCBmdW5jdGlvbmFs aXR5IChmb3IgRENDKSBpbnRvIHRoZSBjb3JlIElQVEFCTEVTIGNvZGUKIwoj IERJU0FCTEVEIGJ5IGRlZmF1bHQgLS0gZGVsZXRlIHRoZSAiIyIgb24gdGhl IG5leHQgZmV3IGxpbmVzIHRvIGFjdGl2YXRlCiMKZWNobyAtZSAiaXBfbmF0 X2lyYyIKIwojVmVyaWZ5IHRoZSBtb2R1bGUgaXNuJ3QgbG9hZGVkLiAgSWYg aXQgaXMsIHNraXAgaXQKIwppZiBbIC16ICJgICRMU01PRCB8ICRHUkVQIGlw X25hdF9pcmMgfCAkQVdLIHsncHJpbnQgJDEnfSBgIiBdOyB0aGVuCiAgICAk TU9EUFJPQkUgaXBfbmF0X2lyYwpmaQoKCmVjaG8gIiAgLS0tIgoKIyBKdXN0 IHRvIGJlIGNvbXBsZXRlLCBoZXJlIGlzIGEgcGFydGlhbCBsaXN0IG9mIHNv bWUgb2YgdGhlIG90aGVyICAKIyBJUFRBQkxFUyBrZXJuZWwgbW9kdWxlcyBh bmQgdGhlaXIgZnVuY3Rpb24uICBQbGVhc2Ugbm90ZSB0aGF0IG1vc3QgCiMg b2YgdGhlc2UgbW9kdWxlcyAodGhlIGlwdCBvbmVzKSBhcmUgYXV0b21hdGlj YWxseSBsb2FkZWQgYnkgdGhlIAojIG1hc3RlciBrZXJuZWwgbW9kdWxlIGZv ciBwcm9wZXIgb3BlcmF0aW9uIGFuZCBkb24ndCBuZWVkIHRvIGJlIAojIG1h bnVhbGx5IGxvYWRlZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMg ICAgaXBfbmF0X3NubXBfYmFzaWMgLSB0aGlzIG1vZHVsZSBhbGxvd3MgZm9y IHByb3BlciBOQVRpbmcgb2Ygc29tZSAKIyAgICAgICAgICAgICAgICAgICAg ICAgIFNOTVAgdHJhZmZpYwojCiMgICAgaXB0YWJsZV9tYW5nbGUgICAgLSB0 aGlzIHRhcmdldCBhbGxvd3MgZm9yIHBhY2tldHMgdG8gYmUgCiMgICAgICAg ICAgICAgICAgICAgICAgICBtYW5pcHVsYXRlZCBmb3IgdGhpbmdzIGxpa2Ug dGhlIFRDUE1TUyAKIyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwg ZXRjLgojCiMgLS0KIwojICAgIGlwdF9tYXJrICAgICAgIC0gdGhpcyB0YXJn ZXQgbWFya3MgYSBnaXZlbiBwYWNrZXQgZm9yIGZ1dHVyZSBhY3Rpb24uCiMg ICAgICAgICAgICAgICAgICAgICBUaGlzIGF1dG9tYXRpY2FsbHkgbG9hZHMg dGhlIGlwdF9NQVJLIG1vZHVsZQojCiMgICAgaXB0X3RjcG1zcyAgICAgLSB0 aGlzIHRhcmdldCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSB0aGUgVENQIE1TUwoj ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGZvciBicmFpbmRlYWQgcmVt b3RlIGZpcmV3YWxscy4KIyAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXV0 b21hdGljYWxseSBsb2FkcyB0aGUgaXB0X1RDUE1TUyBtb2R1bGUKIwojICAg IGlwdF9saW1pdCAgICAgIC0gdGhpcyB0YXJnZXQgYWxsb3dzIGZvciBwYWNr ZXRzIHRvIGJlIGxpbWl0ZWQgdG8KIyAgICAgICAgICAgICAgICAgICAgIHRv IG1hbnkgaGl0cyBwZXIgc2VjL21pbi9ocgojCiMgICAgaXB0X211bHRpcG9y dCAgLSB0aGlzIG1hdGNoIGFsbG93cyBmb3IgdGFyZ2V0cyB3aXRoaW4gYSBy YW5nZQojICAgICAgICAgICAgICAgICAgICAgb2YgcG9ydCBudW1iZXJzIHZz LiBsaXN0aW5nIGVhY2ggcG9ydCBpbmRpdmlkdWFsbHkKIwojICAgIGlwdF9z dGF0ZSAgICAgIC0gdGhpcyBtYXRjaCBhbGxvd3MgdG8gY2F0Y2ggcGFja2V0 cyB3aXRoIHZhcmlvdXMKIyAgICAgICAgICAgICAgICAgICAgIElQIGFuZCBU Q1AgZmxhZ3Mgc2V0L3Vuc2V0CiMKIyAgICBpcHRfdW5jbGVhbiAgICAtIHRo aXMgbWF0Y2ggYWxsb3dzIHRvIGNhdGNoIHBhY2tldHMgdGhhdCBoYXZlIGlu dmFsaWQKIyAgICAgICAgICAgICAgICAgICAgIElQL1RDUCBmbGFncyBzZXQK IwojICAgIGlwdGFibGVfZmlsdGVyIC0gdGhpcyBtb2R1bGUgYWxsb3dzIGZv ciBwYWNrZXRzIHRvIGJlIERST1BwZWQsIAojICAgICAgICAgICAgICAgICAg ICAgUkVKRUNUZWQsIG9yIExPR2dlZC4gIFRoaXMgbW9kdWxlIGF1dG9tYXRp Y2FsbHkgCiMgICAgICAgICAgICAgICAgICAgICBsb2FkcyB0aGUgZm9sbG93 aW5nIG1vZHVsZXM6CiMKIyAgICAgICAgICAgICAgICAgICAgIGlwdF9MT0cg LSB0aGlzIHRhcmdldCBhbGxvd3MgZm9yIHBhY2tldHMgdG8gYmUgCiMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VkCiMKIyAgICAgICAg ICAgICAgICAgICAgIGlwdF9SRUpFQ1QgLSB0aGlzIHRhcmdldCBEUk9QcyB0 aGUgcGFja2V0IGFuZCByZXR1cm5zIAojICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGEgY29uZmlndXJhYmxlIElDTVAgcGFja2V0IGJhY2sg dG8gdGhlIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bmRlci4KCgojQ1JJVElDQUw6ICBFbmFibGUgSVAgZm9yd2FyZGluZyBzaW5j ZSBpdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IHNpbmNlCiMKIyAgICAgICAg ICAgUmVkaGF0IFVzZXJzOiAgeW91IG1heSB0cnkgY2hhbmdpbmcgdGhlIG9w dGlvbnMgaW4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgL2V0Yy9zeXNj b25maWcvbmV0d29yayBmcm9tOgojCiMgICAgICAgICAgICAgICAgICAgICAg IEZPUldBUkRfSVBWND1mYWxzZQojICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0bwojICAgICAgICAgICAgICAgICAgICAgICBGT1JXQVJEX0lQVjQ9 dHJ1ZQojCmVjaG8gIiAgRW5hYmxpbmcgZm9yd2FyZGluZy4uIgplY2hvICIx IiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9mb3J3YXJkCgoKIyBEeW5hbWlj IElQIHVzZXJzOgojCiMgICBJZiB5b3UgZ2V0IHlvdXIgSVAgYWRkcmVzcyBk eW5hbWljYWxseSBmcm9tIFNMSVAsIFBQUCwgb3IgREhDUCwgCiMgICBlbmFi bGUgdGhlIGZvbGxvd2luZyBvcHRpb24uICBUaGlzIGVuYWJsZXMgZHluYW1p Yy1hZGRyZXNzIGhhY2tpbmcKIyAgIHdoaWNoIG1ha2VzIHRoZSBsaWZlIHdp dGggRGlhbGQgYW5kIHNpbWlsYXIgcHJvZ3JhbXMgbXVjaCBlYXNpZXIuCiMK ZWNobyAiICBFbmFibGluZyBEeW5hbWljQWRkci4uIgplY2hvICIxIiA+IC9w cm9jL3N5cy9uZXQvaXB2NC9pcF9keW5hZGRyCgplY2hvICIgIC0tLSIKCiMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBFbmFibGUgU3Ry b25nZXIgSVAgZm9yd2FyZGluZyBhbmQgTWFzcXVlcmFkaW5nCiMKIyAgTk9U RTogIEluIElQVEFCTEVTIHNwZWFrLCBJUCBNYXNxdWVyYWRpbmcgaXMgYSBm b3JtIG9mIFNvdXJjZU5BVCBvciBTTkFULgojCiMgIE5PVEUgIzI6ICBUaGUg Zm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZm9yIGFuIGludGVybmFsIExBTiBh ZGRyZXNzIGluIHRoZQojICAgICAgICAgICAgMTkyLjE2OC4xLnggbmV0d29y ayB3aXRoIGEgMjU1LjI1NS4yNTUuMCBvciBhICIyNCIgYml0IHN1Ym5ldCAK IyAgICAgICAgICAgIG1hc2sgY29ubmVjdGluZyB0byB0aGUgSW50ZXJuZXQg b24gZXh0ZXJuYWwgaW50ZXJmYWNlICJldGgwIi4gIAojICAgICAgICAgICAg VGhpcyBleGFtcGxlIHdpbGwgTUFTUSBpbnRlcm5hbCB0cmFmZmljIG91dCB0 byB0aGUgSW50ZXJuZXQgCiMgICAgICAgICAgICBidXQgbm90IGFsbG93IG5v bi1pbml0aWF0ZWQgdHJhZmZpYyBpbnRvIHlvdXIgaW50ZXJuYWwgbmV0d29y ay4KIwojICAgICAgICAgICAgCiMgICAgICAgICAqKiBQbGVhc2UgY2hhbmdl IHRoZSBhYm92ZSBuZXR3b3JrIG51bWJlcnMsIHN1Ym5ldCBtYXNrLCBhbmQg eW91ciAKIyAgICAgICAgICoqKiBJbnRlcm5ldCBjb25uZWN0aW9uIGludGVy ZmFjZSBuYW1lIHRvIG1hdGNoIHlvdXIgc2V0dXAKIyAgICAgICAgIAoKI0Ns ZWFyaW5nIGFueSBwcmV2aW91cyBjb25maWd1cmF0aW9uCiMKIyAgVW5sZXNz IHNwZWNpZmllZCwgdGhlIGRlZmF1bHRzIGZvciBJTlBVVCwgT1VUUFVULCBh bmQgRk9SV0FSRCB0byBEUk9QCiMKIyAgICBZb3UgQ0FOTk9UIGNoYW5nZSB0 aGlzIHRvIFJFSkVDVCBhcyBpdCBpc24ndCBhIHZhaWxkIHBvbGljeSBzZXR0 aW5nLgojICAgIElmIHlvdSB3YW50IFJFSkVDVCwgeW91IG11c3QgZXhwbGlj dGx5IFJFSkVDVCBhdCB0aGUgZW5kIG9mIGEgZ2l2aW5nIAojICAgIElOUFVU LCBPVVRQVVQsIG9yIEZPUldBUkQgY2hhaW4KIwplY2hvICIgIENsZWFyaW5n IGFueSBleGlzdGluZyBydWxlcyBhbmQgc2V0dGluZyBkZWZhdWx0IHBvbGlj eSB0byBEUk9QLi4iCiRJUFRBQkxFUyAtUCBJTlBVVCBEUk9QCiRJUFRBQkxF UyAtRiBJTlBVVCAKJElQVEFCTEVTIC1QIE9VVFBVVCBEUk9QCiRJUFRBQkxF UyAtRiBPVVRQVVQgCiRJUFRBQkxFUyAtUCBGT1JXQVJEIERST1AKJElQVEFC TEVTIC1GIEZPUldBUkQgCiRJUFRBQkxFUyAtRiAtdCBuYXQKCiNOb3QgbmVl ZGVkIGFuZCBpdCB3aWxsIG9ubHkgbG9hZCB0aGUgdW5uZWVkZWQga2VybmVs IG1vZHVsZQokSVBUQUJMRVMgLUYgLXQgbWFuZ2xlCiMKIyBGbHVzaCB0aGUg dXNlciBjaGFpbi4uIGlmIGl0IGV4aXN0cwppZiBbIC1uICJgJElQVEFCTEVT IC1MIHwgJEdSRVAgZHJvcC1hbmQtbG9nLWl0YCIgXTsgdGhlbgogICAkSVBU QUJMRVMgLUYgZHJvcC1hbmQtbG9nLWl0CmZpCiMKIyBEZWxldGUgYWxsIFVz ZXItc3BlY2lmaWVkIGNoYWlucwokSVBUQUJMRVMgLVgKIwojIFJlc2V0IGFs bCBJUFRBQkxFUyBjb3VudGVycwokSVBUQUJMRVMgLVoKCgojQ29uZmlndXJp bmcgc3BlY2lmaWMgQ0hBSU5TIGZvciBsYXRlciB1c2UgaW4gdGhlIHJ1bGVz ZXQKIwojICBOT1RFOiAgU29tZSB1c2VycyBwcmVmZXIgdG8gaGF2ZSB0aGVp ciBmaXJld2FsbCBzaWxlbnRseQojICAgICAgICAgIkRST1AiIHBhY2tldHMg d2hpbGUgb3RoZXJzIHByZWZlciB0byB1c2UgIlJFSkVDVCIKIyAgICAgICAg IHRvIHNlbmQgSUNNUCBlcnJvciBtZXNzYWdlcyBiYWNrIHRvIHRoZSByZW1v dGUgCiMgICAgICAgICBtYWNoaW5lLiAgVGhlIGRlZmF1bHQgaXMgIlJFSkVD VCIgYnV0IGZlZWwgZnJlZSB0bwojICAgICAgICAgY2hhbmdlIHRoaXMgYmVs b3cuCiMKIyBOT1RFOiBXaXRob3V0IHRoZSAtLWxvZy1sZXZlbCBzZXQgdG8g ImluZm8iLCBldmVyeSBzaW5nbGUKIyAgICAgICBmaXJld2FsbCBoaXQgd2ls bCBnb3RvIEFMTCB2dHlzLiAgVGhpcyBpcyBhIHZlcnkgYmlnCiMgICAgICAg cGFpbi4KIwplY2hvICIgIENyZWF0aW5nIGEgRFJPUCBjaGFpbi4uIgokSVBU QUJMRVMgLU4gZHJvcC1hbmQtbG9nLWl0CiRJUFRBQkxFUyAtQSBkcm9wLWFu ZC1sb2ctaXQgLWogTE9HIC0tbG9nLWxldmVsIGluZm8gCiRJUFRBQkxFUyAt QSBkcm9wLWFuZC1sb2ctaXQgLWogUkVKRUNUCgplY2hvIC1lICJcbiAgIC0g TG9hZGluZyBJTlBVVCBydWxlc2V0cyIKCgojIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwojIElOUFVUOiBJbmNvbWluZyB0cmFmZmljIGZyb20gdmFyaW91 cyBpbnRlcmZhY2VzLiAgQWxsIHJ1bGVzZXRzIGFyZSAKIyAgICAgICAgYWxy ZWFkeSBmbHVzaGVkIGFuZCBzZXQgdG8gYSBkZWZhdWx0IHBvbGljeSBvZiBE Uk9QLiAKIwoKIyBsb29wYmFjayBpbnRlcmZhY2VzIGFyZSB2YWxpZC4KIwok SVBUQUJMRVMgLUEgSU5QVVQgLWkgbG8gLXMgJFVOSVZFUlNFIC1kICRVTklW RVJTRSAtaiBBQ0NFUFQKCgojIGxvY2FsIGludGVyZmFjZSwgbG9jYWwgbWFj aGluZXMsIGdvaW5nIGFueXdoZXJlIGlzIHZhbGlkCiMKJElQVEFCTEVTIC1B IElOUFVUIC1pICRJTlRJRiAtcyAkSU5UTkVUIC1kICRVTklWRVJTRSAtaiBB Q0NFUFQKCiMgcmVtb3RlIGludGVyZmFjZSwgY2xhaW1pbmcgdG8gYmUgbG9j YWwgbWFjaGluZXMsIElQIHNwb29maW5nLCBnZXQgbG9zdAojCiRJUFRBQkxF UyAtQSBJTlBVVCAtaSAkRVhUSUYgLXMgJElOVE5FVCAtZCAkVU5JVkVSU0Ug LWogZHJvcC1hbmQtbG9nLWl0CgoKIyBleHRlcm5hbCBpbnRlcmZhY2UsIGZy b20gYW55IHNvdXJjZSwgZm9yIElDTVAgdHJhZmZpYyBpcyB2YWxpZAojCiMg IElmIHlvdSB3b3VsZCBsaWtlIHlvdXIgbWFjaGluZSB0byAicGluZyIgZnJv bSB0aGUgSW50ZXJuZXQsIAojICBlbmFibGUgdGhpcyBuZXh0IGxpbmUKIwoj JElQVEFCTEVTIC1BIElOUFVUIC1pICRFWFRJRiAtcCBJQ01QIC1zICRVTklW RVJTRSAtZCAkRVhUSVAgLWogQUNDRVBUCgoKIyByZW1vdGUgaW50ZXJmYWNl LCBhbnkgc291cmNlLCBnb2luZyB0byBwZXJtYW5lbnQgUFBQIGFkZHJlc3Mg aXMgdmFsaWQKIwokSVBUQUJMRVMgLUEgSU5QVVQgLWkgJEVYVElGIC1zICRV TklWRVJTRSAtZCAkRVhUSVAgLWogQUNDRVBUCgoKIyBBbGxvdyBhbnkgcmVs YXRlZCB0cmFmZmljIGNvbWluZyBiYWNrIHRvIHRoZSBNQVNRIHNlcnZlciBp bgojCiRJUFRBQkxFUyAtQSBJTlBVVCAtaSAkRVhUSUYgLXMgJFVOSVZFUlNF IC1kICRFWFRJUCAtbSBzdGF0ZSAtLXN0YXRlIFwKIEVTVEFCTElTSEVELFJF TEFURUQgLWogQUNDRVBUCgoKIyAtLS0tLSBCZWdpbiBPUFRJT05BTCBJTlBV VCBTZWN0aW9uIC0tLS0tCiMKCiMgREhDUGQgLSBFbmFibGUgdGhlIGZvbGxv d2luZyBsaW5lcyBpZiB5b3UgcnVuIGFuIElOVEVSTkFMIERIQ1BkIHNlcnZl cgojCiMkSVBUQUJMRVMgLUEgSU5QVVQgLWkgJElOVElGIC1wIHRjcCAtLXNw b3J0IDY4IC0tZHBvcnQgNjcgLWogQUNDRVBUCiMkSVBUQUJMRVMgLUEgSU5Q VVQgLWkgJElOVElGIC1wIHVkcCAtLXNwb3J0IDY4IC0tZHBvcnQgNjcgLWog QUNDRVBUCgojIEhUVFBkIC0gRW5hYmxlIHRoZSBmb2xsb3dpbmcgbGluZXMg aWYgeW91IHJ1biBhbiBFWFRFUk5BTCBXV1cgc2VydmVyCiMKIyAgICBOT1RF OiAgVGhpcyBpcyBOT1QgbmVlZGVkIGZvciBzaW1wbHkgZW5hYmxpbmcgUE9S VEZXLiAgVGhpcyBpcyBPTkxZIAojICAgICAgICAgICBmb3IgdXNlcnMgdGhh dCBwbGFuIG9uIHJ1bm5pbmcgQXBhY2hlIG9uIHRoZSBNQVNRIHNlcnZlciBp dHNlbGYKIwojZWNobyAtZSAiICAgICAgLSBBbGxvd2luZyBFWFRFUk5BTCBh Y2Nlc3MgdG8gdGhlIFdXVyBzZXJ2ZXIiCiMkSVBUQUJMRVMgLUEgSU5QVVQg LWkgJEVYVElGIC1tIHN0YXRlIC0tc3RhdGUgTkVXLEVTVEFCTElTSEVELFJF TEFURUQgXAojIC1wIHRjcCAtcyAkVU5JVkVSU0UgLWQgJEVYVElQIC0tZHBv cnQgODAgLWogQUNDRVBUCgojCiMgLS0tLS0gRW5kIE9QVElPTkFMIElOUFVU IFNlY3Rpb24gLS0tLS0KCgoKIyBDYXRjaCBhbGwgcnVsZSwgYWxsIG90aGVy IGluY29taW5nIGlzIGRlbmllZCBhbmQgbG9nZ2VkLiAKIwokSVBUQUJMRVMg LUEgSU5QVVQgLXMgJFVOSVZFUlNFIC1kICRVTklWRVJTRSAtaiBkcm9wLWFu ZC1sb2ctaXQKCgplY2hvIC1lICIgICAtIExvYWRpbmcgT1VUUFVUIHJ1bGVz ZXRzIgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPVVRQVVQ6IE91 dGdvaW5nIHRyYWZmaWMgZnJvbSB2YXJpb3VzIGludGVyZmFjZXMuICBBbGwg cnVsZXNldHMgYXJlIAojICAgICAgICAgYWxyZWFkeSBmbHVzaGVkIGFuZCBz ZXQgdG8gYSBkZWZhdWx0IHBvbGljeSBvZiBEUk9QLiAKIwoKIyBsb29wYmFj ayBpbnRlcmZhY2UgaXMgdmFsaWQuCiMKJElQVEFCTEVTIC1BIE9VVFBVVCAt byBsbyAtcyAkVU5JVkVSU0UgLWQgJFVOSVZFUlNFIC1qIEFDQ0VQVAoKCiMg bG9jYWwgaW50ZXJmYWNlcywgYW55IHNvdXJjZSBnb2luZyB0byBsb2NhbCBu ZXQgaXMgdmFsaWQKIwokSVBUQUJMRVMgLUEgT1VUUFVUIC1vICRJTlRJRiAt cyAkRVhUSVAgLWQgJElOVE5FVCAtaiBBQ0NFUFQKCgojIGxvY2FsIGludGVy ZmFjZSwgYW55IHNvdXJjZSBnb2luZyB0byBsb2NhbCBuZXQgaXMgdmFsaWQK IwokSVBUQUJMRVMgLUEgT1VUUFVUIC1vICRJTlRJRiAtcyAkSU5USVAgLWQg JElOVE5FVCAtaiBBQ0NFUFQKCgojIG91dGdvaW5nIHRvIGxvY2FsIG5ldCBv biByZW1vdGUgaW50ZXJmYWNlLCBzdHVmZmVkIHJvdXRpbmcsIGRlbnkKIwok SVBUQUJMRVMgLUEgT1VUUFVUIC1vICRFWFRJRiAtcyAkVU5JVkVSU0UgLWQg JElOVE5FVCAtaiBkcm9wLWFuZC1sb2ctaXQKCgojIGFueXRoaW5nIGVsc2Ug b3V0Z29pbmcgb24gcmVtb3RlIGludGVyZmFjZSBpcyB2YWxpZAojCiRJUFRB QkxFUyAtQSBPVVRQVVQgLW8gJEVYVElGIC1zICRFWFRJUCAtZCAkVU5JVkVS U0UgLWogQUNDRVBUCgoKIyAtLS0tLSBCZWdpbiBPUFRJT05BTCBPVVRQVVQg U2VjdGlvbiAtLS0tLQojCgojIERIQ1BkIC0gRW5hYmxlIHRoZSBmb2xsb3dp bmcgbGluZXMgaWYgeW91IHJ1biBhbiBJTlRFUk5BTCBESENQZCBzZXJ2ZXIK IyAgICAgICAgIC0gUmVtb3ZlIEJPVEggI3MgYWxsIHRoZSAjcyBpZiB5b3Ug bmVlZCB0aGlzIGZ1bmN0aW9uYWxpdHkuCiMKIyRJUFRBQkxFUyAtQSBPVVRQ VVQgLW8gJElOVElGIC1wIHRjcCAtcyAkSU5USVAgLS1zcG9ydCA2NyBcCiMg LWQgMjU1LjI1NS4yNTUuMjU1IC0tZHBvcnQgNjggLWogQUNDRVBUCiMkSVBU QUJMRVMgLUEgT1VUUFVUIC1vICRJTlRJRiAtcCB1ZHAgLXMgJElOVElQIC0t c3BvcnQgNjcgXAojIC1kIDI1NS4yNTUuMjU1LjI1NSAtLWRwb3J0IDY4IC1q IEFDQ0VQVAoKIwojIC0tLS0tIEVuZCBPUFRJT05BTCBPVVRQVVQgU2VjdGlv biAtLS0tLQoKCiMgQ2F0Y2ggYWxsIHJ1bGUsIGFsbCBvdGhlciBvdXRnb2lu ZyBpcyBkZW5pZWQgYW5kIGxvZ2dlZC4gCiMKJElQVEFCTEVTIC1BIE9VVFBV VCAtcyAkVU5JVkVSU0UgLWQgJFVOSVZFUlNFIC1qIGRyb3AtYW5kLWxvZy1p dAoKCmVjaG8gLWUgIiAgIC0gTG9hZGluZyBGT1JXQVJEIHJ1bGVzZXRzIgoK IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBGT1JXQVJEOiBFbmFibGUg Rm9yd2FyZGluZyBhbmQgdGh1cyBJUE1BU1EKIwoKIy0gLS0tLS0gQmVnaW4g T1BUSU9OQUwgRk9SV0FSRCBTZWN0aW9uIC0tLS0tCiMKIyAtLS0tLSBFbmQg T1BUSU9OQUwgRk9SV0FSRCBTZWN0aW9uIC0tLS0tCgoKZWNobyAiICAgICAt IEZXRDogQWxsb3cgYWxsIGNvbm5lY3Rpb25zIE9VVCBhbmQgb25seSBleGlz dGluZy9yZWxhdGVkIElOIgokSVBUQUJMRVMgLUEgRk9SV0FSRCAtaSAkRVhU SUYgLW8gJElOVElGIC1tIHN0YXRlIC0tc3RhdGUgRVNUQUJMSVNIRUQsUkVM QVRFRCBcCiAtaiBBQ0NFUFQKJElQVEFCTEVTIC1BIEZPUldBUkQgLWkgJElO VElGIC1vICRFWFRJRiAtaiBBQ0NFUFQKCiMgQ2F0Y2ggYWxsIHJ1bGUsIGFs bCBvdGhlciBmb3J3YXJkaW5nIGlzIGRlbmllZCBhbmQgbG9nZ2VkLiAKIwok SVBUQUJMRVMgLUEgRk9SV0FSRCAtaiBkcm9wLWFuZC1sb2ctaXQKCgojZWNo byAiICAgICAtIE5BVDogRW5hYmxpbmcgU05BVCAoTUFTUVVFUkFERSkgZnVu Y3Rpb25hbGl0eSBvbiAkRVhUSUYiCiMKI01vcmUgbGliZXJhbCBmb3JtCiMk SVBUQUJMRVMgLXQgbmF0IC1BIFBPU1RST1VUSU5HIC1vICRFWFRJRiAtaiBN QVNRVUVSQURFCiMKI1N0cmljdGVyIGZvcm0KIyRJUFRBQkxFUyAtdCBuYXQg LUEgUFJFUk9VVElORyAtbyAkRVhUSUYgLWogU05BVCAtLXRvICRFWFRJUAok SVBUQUJMRVMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMSAtcCB0Y3Ag LS1kcG9ydCA4MCAtaiBSRURJUkVDVCAtLXRvLXBvcnRzIDE5Mi4xNjguMC4x OjMxMjgKIyRJUFRBQkxFUyAtdCBuYXQgLUEgUFJFUk9VVElORyAtaSBldGgx IC1wIHRjcCAtLWRwb3J0IDgwIC1qIEROQVQgLS10byAxOTIuMTY4LjAuMToz MTI4IC1zICEgMTkyLjE2OC4wLjAvMjQKJElQVEFCTEVTIC1BIE9VVFBVVCAt aiBBQ0NFUFQgLW0gc3RhdGUgLS1zdGF0ZSBORVcgLW8gZXRoMCAtcCB0Y3Ag LS1kcG9ydCA4MAokSVBUQUJMRVMgLXQgbmF0IC1BIFBPU1RST1VUSU5HIC1v ICRFWFRJRiAtaiBTTkFUIC0tdG8tc291cmNlICRFWFRJUAoKIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKZWNobyAtZSAiXG5TdHJvbmdlciByYy5maXJl d2FsbC0yLjQgJEZXVkVSIGRvbmUuXG4iCg== --0-1482415610-1142079877=:15348--