Back-End Python Developer (Django)- Chicago, IL or Reston, VA- ONSITE (4 days a week)
Hackajob
Software Engineering
Chicago, IL, USA
Posted on Mar 10, 2026
hackajob is collaborating with Comcast to connect them with exceptional professionals for this role.
PHA+RnJlZVdoZWVsLCBhIENvbWNhc3QgY29tcGFueSwgcHJvdmlkZXMgY29tcHJlaGVuc2l2ZSBhZCBwbGF0Zm9ybXMgZm9yIHB1Ymxpc2hlcnMsIGFkdmVydGlzZXJzLCBhbmQgbWVkaWEgYnV5ZXJzLiBQb3dlcmVkIGJ5IHByZW1pdW0gdmlkZW8gY29udGVudCwgcm9idXN0IGRhdGEsIGFuZCBhZHZhbmNlZCB0ZWNobm9sb2d5LCB3ZSZyc3F1bztyZSBtYWtpbmcgaXQgZWFzaWVyIGZvciBidXllcnMgYW5kIHNlbGxlcnMgdG8gdHJhbnNhY3QgYWNyb3NzIGFsbCBzY3JlZW5zLCBkYXRhIHR5cGVzLCBhbmQgc2FsZXMgY2hhbm5lbHMuIEFzIGEgZ2xvYmFsIGNvbXBhbnksIHdlIGhhdmUgb2ZmaWNlcyBpbiBuaW5lIGNvdW50cmllcyBhbmQgY2FuIGluc2VydCBhZHZlcnRpc2VtZW50cyBhcm91bmQgdGhlIHdvcmxkLjwvcD4KPHA+PHN0cm9uZz5Kb2IgU3VtbWFyeTwvc3Ryb25nPjwvcD4KPHA+VGhpcyBvcHBvcnR1bml0eSBpcyBhdCBGcmVlV2hlZWwsIGEgQ29tY2FzdCBDb21wYW55LiBXaXRoaW4gQ29tY2FzdCBBZHZlcnRpc2luZywgdGhlIEJlZXN3YXggb3JnYW5pemF0aW9uIGlzIGJ1aWxkaW5nIGFuIGVhc3kgdG8gdXNlLCBtYXNzaXZlIHNjYWxlIGFuZCBoaWdoIGF2YWlsYWJpbGl0eSBhZHZlcnRpc2luZyBwbGF0Zm9ybS4gV2Ugb2ZmZXIgb3VyIGN1c3RvbWVycyB0aGUgbW9zdCBleHRlbnNpYmxlIGFuZCB0cmFuc3BhcmVudCBhZHZlcnRpc2luZyBzeXN0ZW0gaW4gdGhlIHdvcmxkIGFuZCBwcm9jZXNzIG1pbGxpb25zIG9mIHRyYW5zYWN0aW9ucyBwZXIgc2Vjb25kLiBUbyBtYW5hZ2UgdGhlIGZpcmVob3NlIG9mIGRhdGEgY29taW5nIGluLCB3ZSBleHBsb3JlIGNvbXBsZXggdHJhZGVvZmZzIGFuZCBjYXJlZnVsbHkgYXJjaGl0ZWN0IGhpZ2ggcGVyZm9ybWFuY2UgZGlzdHJpYnV0ZWQgc3lzdGVtcy4gVGhvc2UgaW4gdHVybiByZXF1aXJlIGVsZWdhbnQgYW5kIHRob3VnaHRmdWxseSBkZXNpZ25lZCBBUEkgY29udHJhY3RzIHRvIGNvbmZpZ3VyZSB0aGUgc3lzdGVtcyBhY2Nlc3NpYmxlIHRvIGJvdGggb3VyIHRlYW0gYW5kIG91ciBjdXN0b21lcnMuIFdlIGFyZSBsb29raW5nIGZvciBhIEJhY2tlbmQgUHl0aG9uIERldmVsb3BlciB0byBqb2luIG91ciBjb2xsYWJvcmF0aXZlIGNyb3NzLWZ1bmN0aW9uYWwgcHJvZHVjdCB0ZWFtIGJ1aWxkaW5nIHRoZSB3ZWIgYXBwbGljYXRpb24gdGhhdCBlbXBvd2VycyBjdXN0b21lcnMgdG8gY29uZmlndXJlIHRoZWlyIG51YW5jZWQgYWR2ZXJ0aXNpbmcgc3RyYXRlZ3kuPC9wPgo8cD48c3Ryb25nPkpvYiBEZXNjcmlwdGlvbjwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz5SZXF1aXJlZCBTa2lsbHM6PC9zdHJvbmc+PC9wPgo8dWw+CjxsaT5Qcm9mZXNzaW9uYWwgZXhwZXJpZW5jZSB3aXRoIFB5dGhvbiBkZXZlbG9wbWVudCBhbmQgY3JlYXRpbmcvZGV2ZWxvcGluZyBSRVNUZnVsIEFQSSZyc3F1bztzIHVzaW5nIERqYW5nby48L2xpPgo8bGk+MisgWWVhcnMgb2YgZXhwZXJpZW5jZSB3b3JraW5nIHdpdGggYW55IGJhY2tlbmQgcmVsYXRlZCB0ZWNobm9sb2d5LjwvbGk+CjxsaT5CYWNoZWxvcidzIGRlZ3JlZSBpbiBjb21wdXRlciBzY2llbmNlIG9yIGEgcmVsYXRhYmxlIHRlY2huaWNhbCBmaWVsZCBvciBleHBlcmllbmNlIGVxdWl2YWxlbnQuPC9saT4KPC91bD4KPHA+PHN0cm9uZz5Db3JlIFJlc3BvbnNpYmlsaXRpZXM8L3N0cm9uZz48L3A+Cjx1bD4KPGxpPkNvbGxhYm9yYXRlcyB3aXRoIHByb2plY3Qgc3Rha2Vob2xkZXJzIHRvIGlkZW50aWZ5IHByb2R1Y3QgYW5kIHRlY2huaWNhbCByZXF1aXJlbWVudHMuIENvbmR1Y3RzIGFuYWx5c2lzIHRvIGRldGVybWluZSBpbnRlZ3JhdGlvbiBuZWVkcy4mbmJzcDs8L2xpPgo8bGk+RGVzaWducyBuZXcgc29mdHdhcmUgYW5kIHdlYiBhcHBsaWNhdGlvbnMsIHN1cHBvcnRzIGFwcGxpY2F0aW9ucyB1bmRlciBkZXZlbG9wbWVudCBhbmQgY3VzdG9taXplcyBjdXJyZW50IGFwcGxpY2F0aW9ucy4gRGV2ZWxvcHMgc29mdHdhcmUgdXBkYXRlIHByb2Nlc3NlcyBmb3IgZXhpc3RpbmcgYXBwbGljYXRpb25zLiBBc3Npc3RzIGluIHRoZSByb2xsLW91dCBvZiBzb2Z0d2FyZSByZWxlYXNlcy4mbmJzcDs8L2xpPgo8bGk+VHJhaW5zIGp1bmlvciBTb2Z0d2FyZSBEZXZlbG9wbWVudCBFbmdpbmVlcnMgb24gaW50ZXJuYWxseSBkZXZlbG9wZWQgc29mdHdhcmUgYXBwbGljYXRpb25zLiZuYnNwOzwvbGk+CjxsaT5PdmVyc2VlcyB0aGUgcmVzZWFyY2hpbmcsIHdyaXRpbmcgYW5kIGVkaXRpbmcgb2YgZG9jdW1lbnRhdGlvbiBhbmQgdGVjaG5pY2FsIHJlcXVpcmVtZW50cywgaW5jbHVkaW5nIHNvZnR3YXJlIGRlc2lnbnMsIGV2YWx1YXRpb24gcGxhbnMsIHRlc3QgcmVzdWx0cywgdGVjaG5pY2FsIG1hbnVhbHMgYW5kIGZvcm1hbCByZWNvbW1lbmRhdGlvbnMgYW5kIHJlcG9ydHMuJm5ic3A7PC9saT4KPGxpPktlZXBzIGN1cnJlbnQgd2l0aCB0ZWNobm9sb2dpY2FsIGRldmVsb3BtZW50cyB3aXRoaW4gdGhlIGluZHVzdHJ5LiBNb25pdG9ycyBhbmQgZXZhbHVhdGVzIGNvbXBldGl0aXZlIGFwcGxpY2F0aW9ucyBhbmQgcHJvZHVjdHMuIFJldmlld3MgbGl0ZXJhdHVyZSwgcGF0ZW50cyBhbmQgY3VycmVudCBwcmFjdGljZXMgcmVsZXZhbnQgdG8gdGhlIHNvbHV0aW9uIG9mIGFzc2lnbmVkIHByb2plY3RzLiZuYnNwOzwvbGk+CjxsaT5Xb3JrcyB3aXRoIFF1YWxpdHkgQXNzdXJhbmNlIHRlYW0gdG8gZGV0ZXJtaW5lIGlmIGFwcGxpY2F0aW9ucyBmaXQgc3BlY2lmaWNhdGlvbiBhbmQgdGVjaG5pY2FsIHJlcXVpcmVtZW50cy4gVGVzdHMgYW5kIGV2YWx1YXRlcyBzeXN0ZW1zLCBzdWJzeXN0ZW1zIGFuZCBjb21wb25lbnRzLiZuYnNwOzwvbGk+CjxsaT5SZWd1bGFyLCBjb25zaXN0ZW50IGFuZCBwdW5jdHVhbCBhdHRlbmRhbmNlLiBNdXN0IGJlIGFibGUgdG8gd29yayBuaWdodHMgYW5kIHdlZWtlbmRzLCB2YXJpYWJsZSBzY2hlZHVsZShzKSBhbmQgb3ZlcnRpbWUgYXMgbmVjZXNzYXJ5LiZuYnNwOzwvbGk+CjxsaT5PdGhlciBkdXRpZXMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgYXMgYXNzaWduZWQuJm5ic3A7PC9saT4KPC91bD4KPHA+PHN0cm9uZz5FbXBsb3llZXMgYXQgYWxsIGxldmVscyBhcmUgZXhwZWN0ZWQgdG86PC9zdHJvbmc+PC9wPgo8dWw+CjxsaT5VbmRlcnN0YW5kIG91ciBPcGVyYXRpbmcgUHJpbmNpcGxlczsgbWFrZSB0aGVtIHRoZSBndWlkZWxpbmVzIGZvciBob3cgeW91IGRvIHlvdXIgam9iLjwvbGk+CjxsaT5Pd24gdGhlIGN1c3RvbWVyIGV4cGVyaWVuY2UgLSB0aGluayBhbmQgYWN0IGluIHdheXMgdGhhdCBwdXQgb3VyIGN1c3RvbWVycyBmaXJzdCwgZ2l2ZSB0aGVtIHNlYW1sZXNzIGRpZ2l0YWwgb3B0aW9ucyBhdCBldmVyeSB0b3VjaHBvaW50LCBhbmQgbWFrZSB0aGVtIHByb21vdGVycyBvZiBvdXIgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLjwvbGk+CjxsaT5Lbm93IHlvdXIgc3R1ZmYgLSBiZSBlbnRodXNpYXN0aWMgbGVhcm5lcnMsIHVzZXJzIGFuZCBhZHZvY2F0ZXMgb2Ygb3VyIGdhbWUtY2hhbmdpbmcgdGVjaG5vbG9neSwgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLCBlc3BlY2lhbGx5IG91ciBkaWdpdGFsIHRvb2xzIGFuZCBleHBlcmllbmNlcy48L2xpPgo8bGk+V2luIGFzIGEgdGVhbSAtIG1ha2UgYmlnIHRoaW5ncyBoYXBwZW4gYnkgd29ya2luZyB0b2dldGhlciBhbmQgYmVpbmcgb3BlbiB0byBuZXcgaWRlYXMuPC9saT4KPGxpPkJlIGFuIGFjdGl2ZSBwYXJ0IG9mIHRoZSBOZXQgUHJvbW90ZXIgU3lzdGVtIC0gYSB3YXkgb2Ygd29ya2luZyB0aGF0IGJyaW5ncyBtb3JlIGVtcGxveWVlIGFuZCBjdXN0b21lciBmZWVkYmFjayBpbnRvIHRoZSBjb21wYW55IC0gYnkgam9pbmluZyBodWRkbGVzLCBtYWtpbmcgY2FsbCBiYWNrcyBhbmQgaGVscGluZyB1cyBlbGV2YXRlIG9wcG9ydHVuaXRpZXMgdG8gZG8gYmV0dGVyIGZvciBvdXIgY3VzdG9tZXJzLjwvbGk+CjxsaT5Ecml2ZSByZXN1bHRzIGFuZCBncm93dGguPC9saT4KPGxpPlN1cHBvcnQgYSBjdWx0dXJlIG9mIGluY2x1c2lvbiBpbiBob3cgeW91IHdvcmsgYW5kIGxlYWQuPC9saT4KPGxpPkRvIHdoYXQncyByaWdodCBmb3IgZWFjaCBvdGhlciwgb3VyIGN1c3RvbWVycywgaW52ZXN0b3JzIGFuZCBvdXIgY29tbXVuaXRpZXMuPC9saT4KPC91bD4KPHA+PGJyPjxzdHJvbmc+RGlzY2xhaW1lcjo8L3N0cm9uZz48YnI+VGhpcyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBkZXNpZ25lZCB0byBpbmRpY2F0ZSB0aGUgZ2VuZXJhbCBuYXR1cmUgYW5kIGxldmVsIG9mIHdvcmsgcGVyZm9ybWVkIGJ5IGVtcGxveWVlcyBpbiB0aGlzIHJvbGUuIEl0IGlzIG5vdCBkZXNpZ25lZCB0byBjb250YWluIG9yIGJlIGludGVycHJldGVkIGFzIGEgY29tcHJlaGVuc2l2ZSBpbnZlbnRvcnkgb2YgYWxsIGR1dGllcywgcmVzcG9uc2liaWxpdGllcyBhbmQgcXVhbGlmaWNhdGlvbnMuPC9wPgo8cD5Db21jYXN0IGlzIGFuIGVxdWFsIG9wcG9ydHVuaXR5IHdvcmtwbGFjZS4gV2Ugd2lsbCBjb25zaWRlciBhbGwgcXVhbGlmaWVkIGFwcGxpY2FudHMgZm9yIGVtcGxveW1lbnQgd2l0aG91dCByZWdhcmQgdG8gcmFjZSwgY29sb3IsIHJlbGlnaW9uLCBhZ2UsIHNleCwgc2V4dWFsIG9yaWVudGF0aW9uLCBnZW5kZXIgaWRlbnRpdHksIG5hdGlvbmFsIG9yaWdpbiwgZGlzYWJpbGl0eSwgdmV0ZXJhbiBzdGF0dXMsIGdlbmV0aWMgaW5mb3JtYXRpb24sIG9yIGFueSBvdGhlciBiYXNpcyBwcm90ZWN0ZWQgYnkgYXBwbGljYWJsZSBsYXcuPC9wPgo8cD48c3Ryb25nPlNraWxsczo8L3N0cm9uZz48L3A+CjxwPkFwcGxpY2F0aW9ucyBQcm9ncmFtbWluZzsgQmFjay1FbmQgRGV2ZWxvcG1lbnQ7IFNvZnR3YXJlIERldmVsb3BtZW50PC9wPgo8cD4mbmJzcDs8L3A+CjxwPjxzdHJvbmc+U2FsYXJ5Ojwvc3Ryb25nPjwvcD4KPHA+UHJpbWFyeSBMb2NhdGlvbiBQYXkgUmFuZ2U6ICQxMDcsNDQ4LjA2IC0gJDE2MSwxNzIuMDk8L3A+CjxwPkNvbWNhc3QgaW50ZW5kcyB0byBvZmZlciB0aGUgc2VsZWN0ZWQgY2FuZGlkYXRlIGJhc2UgcGF5IHdpdGhpbiB0aGlzIHJhbmdlLCBkZXBlbmRlbnQgb24gam9iLXJlbGF0ZWQsIG5vbi1kaXNjcmltaW5hdG9yeSBmYWN0b3JzIHN1Y2ggYXMgZXhwZXJpZW5jZS4gVGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyAzMCBkYXlzIGZyb20gdGhlIGRhdGUgam9iIGlzIHBvc3RlZCwgdW5sZXNzIHRoZSBudW1iZXIgb2YgYXBwbGljYW50cyByZXF1aXJlcyBpdCB0byBjbG9zZSBzb29uZXIgb3IgbGF0ZXIuPC9wPgo8cD4mbmJzcDs8L3A+CjxwPkJhc2UgcGF5IGlzIG9uZSBwYXJ0IG9mIHRoZSBUb3RhbCBSZXdhcmRzIHRoYXQgQ29tY2FzdCBwcm92aWRlcyB0byBjb21wZW5zYXRlIGFuZCByZWNvZ25pemUgZW1wbG95ZWVzIGZvciB0aGVpciB3b3JrLiBNb3N0IHNhbGVzIHBvc2l0aW9ucyBhcmUgZWxpZ2libGUgZm9yIGEgQ29tbWlzc2lvbiB1bmRlciB0aGUgdGVybXMgb2YgYW4gYXBwbGljYWJsZSBwbGFuLCB3aGlsZSBtb3N0IG5vbi1zYWxlcyBwb3NpdGlvbnMgYXJlIGVsaWdpYmxlIGZvciBhIEJvbnVzLiBBZGRpdGlvbmFsbHksIENvbWNhc3QgcHJvdmlkZXMgYmVzdC1pbi1jbGFzcyBCZW5lZml0cyB0byBlbGlnaWJsZSBlbXBsb3llZXMuIFdlIGJlbGlldmUgdGhhdCBiZW5lZml0cyBzaG91bGQgY29ubmVjdCB5b3UgdG8gdGhlIHN1cHBvcnQgeW91IG5lZWQgd2hlbiBpdCBtYXR0ZXJzIG1vc3QsIGFuZCBzaG91bGQgaGVscCB5b3UgY2FyZSBmb3IgdGhvc2Ugd2hvIG1hdHRlciBtb3N0LiBUaGF0JnJzcXVvO3Mgd2h5IHdlIHByb3ZpZGUgYW4gYXJyYXkgb2Ygb3B0aW9ucywgZXhwZXJ0IGd1aWRhbmNlIGFuZCBhbHdheXMtb24gdG9vbHMsIHRoYXQgYXJlIHBlcnNvbmFsaXplZCB0byBtZWV0IHRoZSBuZWVkcyBvZiB5b3VyIHJlYWxpdHkgJm5kYXNoOyB0byBoZWxwIHN1cHBvcnQgeW91IHBoeXNpY2FsbHksIGZpbmFuY2lhbGx5IGFuZCBlbW90aW9uYWxseSB0aHJvdWdoIHRoZSBiaWcgbWlsZXN0b25lcyBhbmQgaW4geW91ciBldmVyeWRheSBsaWZlLiBQbGVhc2UgdmlzaXQgdGhlIGNvbXBlbnNhdGlvbiBhbmQgYmVuZWZpdHMgc3VtbWFyeSBvbiBvdXIgY2FyZWVycyBzaXRlIGZvciBtb3JlIGRldGFpbHMuPC9wPgo8cD4mbmJzcDs8L3A+CjxwPjxzdHJvbmc+RWR1Y2F0aW9uPC9zdHJvbmc+PC9wPgo8cD5CYWNoZWxvcidzIERlZ3JlZTwvcD4KPHA+V2hpbGUgcG9zc2Vzc2luZyB0aGUgc3RhdGVkIGRlZ3JlZSBpcyBwcmVmZXJyZWQsIENvbWNhc3QgYWxzbyBtYXkgY29uc2lkZXIgYXBwbGljYW50cyB3aG8gaG9sZCBzb21lIGNvbWJpbmF0aW9uIG9mIGNvdXJzZXdvcmsgYW5kIGV4cGVyaWVuY2UsIG9yIHdobyBoYXZlIGV4dGVuc2l2ZSByZWxhdGVkIHByb2Zlc3Npb25hbCBleHBlcmllbmNlLjwvcD4KPHA+PHN0cm9uZz5SZWxldmFudCBXb3JrIEV4cGVyaWVuY2U8L3N0cm9uZz48L3A+CjxwPjUtNyBZZWFyczwvcD4=
PHA+RnJlZVdoZWVsLCBhIENvbWNhc3QgY29tcGFueSwgcHJvdmlkZXMgY29tcHJlaGVuc2l2ZSBhZCBwbGF0Zm9ybXMgZm9yIHB1Ymxpc2hlcnMsIGFkdmVydGlzZXJzLCBhbmQgbWVkaWEgYnV5ZXJzLiBQb3dlcmVkIGJ5IHByZW1pdW0gdmlkZW8gY29udGVudCwgcm9idXN0IGRhdGEsIGFuZCBhZHZhbmNlZCB0ZWNobm9sb2d5LCB3ZSZyc3F1bztyZSBtYWtpbmcgaXQgZWFzaWVyIGZvciBidXllcnMgYW5kIHNlbGxlcnMgdG8gdHJhbnNhY3QgYWNyb3NzIGFsbCBzY3JlZW5zLCBkYXRhIHR5cGVzLCBhbmQgc2FsZXMgY2hhbm5lbHMuIEFzIGEgZ2xvYmFsIGNvbXBhbnksIHdlIGhhdmUgb2ZmaWNlcyBpbiBuaW5lIGNvdW50cmllcyBhbmQgY2FuIGluc2VydCBhZHZlcnRpc2VtZW50cyBhcm91bmQgdGhlIHdvcmxkLjwvcD4KPHA+PHN0cm9uZz5Kb2IgU3VtbWFyeTwvc3Ryb25nPjwvcD4KPHA+VGhpcyBvcHBvcnR1bml0eSBpcyBhdCBGcmVlV2hlZWwsIGEgQ29tY2FzdCBDb21wYW55LiBXaXRoaW4gQ29tY2FzdCBBZHZlcnRpc2luZywgdGhlIEJlZXN3YXggb3JnYW5pemF0aW9uIGlzIGJ1aWxkaW5nIGFuIGVhc3kgdG8gdXNlLCBtYXNzaXZlIHNjYWxlIGFuZCBoaWdoIGF2YWlsYWJpbGl0eSBhZHZlcnRpc2luZyBwbGF0Zm9ybS4gV2Ugb2ZmZXIgb3VyIGN1c3RvbWVycyB0aGUgbW9zdCBleHRlbnNpYmxlIGFuZCB0cmFuc3BhcmVudCBhZHZlcnRpc2luZyBzeXN0ZW0gaW4gdGhlIHdvcmxkIGFuZCBwcm9jZXNzIG1pbGxpb25zIG9mIHRyYW5zYWN0aW9ucyBwZXIgc2Vjb25kLiBUbyBtYW5hZ2UgdGhlIGZpcmVob3NlIG9mIGRhdGEgY29taW5nIGluLCB3ZSBleHBsb3JlIGNvbXBsZXggdHJhZGVvZmZzIGFuZCBjYXJlZnVsbHkgYXJjaGl0ZWN0IGhpZ2ggcGVyZm9ybWFuY2UgZGlzdHJpYnV0ZWQgc3lzdGVtcy4gVGhvc2UgaW4gdHVybiByZXF1aXJlIGVsZWdhbnQgYW5kIHRob3VnaHRmdWxseSBkZXNpZ25lZCBBUEkgY29udHJhY3RzIHRvIGNvbmZpZ3VyZSB0aGUgc3lzdGVtcyBhY2Nlc3NpYmxlIHRvIGJvdGggb3VyIHRlYW0gYW5kIG91ciBjdXN0b21lcnMuIFdlIGFyZSBsb29raW5nIGZvciBhIEJhY2tlbmQgUHl0aG9uIERldmVsb3BlciB0byBqb2luIG91ciBjb2xsYWJvcmF0aXZlIGNyb3NzLWZ1bmN0aW9uYWwgcHJvZHVjdCB0ZWFtIGJ1aWxkaW5nIHRoZSB3ZWIgYXBwbGljYXRpb24gdGhhdCBlbXBvd2VycyBjdXN0b21lcnMgdG8gY29uZmlndXJlIHRoZWlyIG51YW5jZWQgYWR2ZXJ0aXNpbmcgc3RyYXRlZ3kuPC9wPgo8cD48c3Ryb25nPkpvYiBEZXNjcmlwdGlvbjwvc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz5SZXF1aXJlZCBTa2lsbHM6PC9zdHJvbmc+PC9wPgo8dWw+CjxsaT5Qcm9mZXNzaW9uYWwgZXhwZXJpZW5jZSB3aXRoIFB5dGhvbiBkZXZlbG9wbWVudCBhbmQgY3JlYXRpbmcvZGV2ZWxvcGluZyBSRVNUZnVsIEFQSSZyc3F1bztzIHVzaW5nIERqYW5nby48L2xpPgo8bGk+MisgWWVhcnMgb2YgZXhwZXJpZW5jZSB3b3JraW5nIHdpdGggYW55IGJhY2tlbmQgcmVsYXRlZCB0ZWNobm9sb2d5LjwvbGk+CjxsaT5CYWNoZWxvcidzIGRlZ3JlZSBpbiBjb21wdXRlciBzY2llbmNlIG9yIGEgcmVsYXRhYmxlIHRlY2huaWNhbCBmaWVsZCBvciBleHBlcmllbmNlIGVxdWl2YWxlbnQuPC9saT4KPC91bD4KPHA+PHN0cm9uZz5Db3JlIFJlc3BvbnNpYmlsaXRpZXM8L3N0cm9uZz48L3A+Cjx1bD4KPGxpPkNvbGxhYm9yYXRlcyB3aXRoIHByb2plY3Qgc3Rha2Vob2xkZXJzIHRvIGlkZW50aWZ5IHByb2R1Y3QgYW5kIHRlY2huaWNhbCByZXF1aXJlbWVudHMuIENvbmR1Y3RzIGFuYWx5c2lzIHRvIGRldGVybWluZSBpbnRlZ3JhdGlvbiBuZWVkcy4mbmJzcDs8L2xpPgo8bGk+RGVzaWducyBuZXcgc29mdHdhcmUgYW5kIHdlYiBhcHBsaWNhdGlvbnMsIHN1cHBvcnRzIGFwcGxpY2F0aW9ucyB1bmRlciBkZXZlbG9wbWVudCBhbmQgY3VzdG9taXplcyBjdXJyZW50IGFwcGxpY2F0aW9ucy4gRGV2ZWxvcHMgc29mdHdhcmUgdXBkYXRlIHByb2Nlc3NlcyBmb3IgZXhpc3RpbmcgYXBwbGljYXRpb25zLiBBc3Npc3RzIGluIHRoZSByb2xsLW91dCBvZiBzb2Z0d2FyZSByZWxlYXNlcy4mbmJzcDs8L2xpPgo8bGk+VHJhaW5zIGp1bmlvciBTb2Z0d2FyZSBEZXZlbG9wbWVudCBFbmdpbmVlcnMgb24gaW50ZXJuYWxseSBkZXZlbG9wZWQgc29mdHdhcmUgYXBwbGljYXRpb25zLiZuYnNwOzwvbGk+CjxsaT5PdmVyc2VlcyB0aGUgcmVzZWFyY2hpbmcsIHdyaXRpbmcgYW5kIGVkaXRpbmcgb2YgZG9jdW1lbnRhdGlvbiBhbmQgdGVjaG5pY2FsIHJlcXVpcmVtZW50cywgaW5jbHVkaW5nIHNvZnR3YXJlIGRlc2lnbnMsIGV2YWx1YXRpb24gcGxhbnMsIHRlc3QgcmVzdWx0cywgdGVjaG5pY2FsIG1hbnVhbHMgYW5kIGZvcm1hbCByZWNvbW1lbmRhdGlvbnMgYW5kIHJlcG9ydHMuJm5ic3A7PC9saT4KPGxpPktlZXBzIGN1cnJlbnQgd2l0aCB0ZWNobm9sb2dpY2FsIGRldmVsb3BtZW50cyB3aXRoaW4gdGhlIGluZHVzdHJ5LiBNb25pdG9ycyBhbmQgZXZhbHVhdGVzIGNvbXBldGl0aXZlIGFwcGxpY2F0aW9ucyBhbmQgcHJvZHVjdHMuIFJldmlld3MgbGl0ZXJhdHVyZSwgcGF0ZW50cyBhbmQgY3VycmVudCBwcmFjdGljZXMgcmVsZXZhbnQgdG8gdGhlIHNvbHV0aW9uIG9mIGFzc2lnbmVkIHByb2plY3RzLiZuYnNwOzwvbGk+CjxsaT5Xb3JrcyB3aXRoIFF1YWxpdHkgQXNzdXJhbmNlIHRlYW0gdG8gZGV0ZXJtaW5lIGlmIGFwcGxpY2F0aW9ucyBmaXQgc3BlY2lmaWNhdGlvbiBhbmQgdGVjaG5pY2FsIHJlcXVpcmVtZW50cy4gVGVzdHMgYW5kIGV2YWx1YXRlcyBzeXN0ZW1zLCBzdWJzeXN0ZW1zIGFuZCBjb21wb25lbnRzLiZuYnNwOzwvbGk+CjxsaT5SZWd1bGFyLCBjb25zaXN0ZW50IGFuZCBwdW5jdHVhbCBhdHRlbmRhbmNlLiBNdXN0IGJlIGFibGUgdG8gd29yayBuaWdodHMgYW5kIHdlZWtlbmRzLCB2YXJpYWJsZSBzY2hlZHVsZShzKSBhbmQgb3ZlcnRpbWUgYXMgbmVjZXNzYXJ5LiZuYnNwOzwvbGk+CjxsaT5PdGhlciBkdXRpZXMgYW5kIHJlc3BvbnNpYmlsaXRpZXMgYXMgYXNzaWduZWQuJm5ic3A7PC9saT4KPC91bD4KPHA+PHN0cm9uZz5FbXBsb3llZXMgYXQgYWxsIGxldmVscyBhcmUgZXhwZWN0ZWQgdG86PC9zdHJvbmc+PC9wPgo8dWw+CjxsaT5VbmRlcnN0YW5kIG91ciBPcGVyYXRpbmcgUHJpbmNpcGxlczsgbWFrZSB0aGVtIHRoZSBndWlkZWxpbmVzIGZvciBob3cgeW91IGRvIHlvdXIgam9iLjwvbGk+CjxsaT5Pd24gdGhlIGN1c3RvbWVyIGV4cGVyaWVuY2UgLSB0aGluayBhbmQgYWN0IGluIHdheXMgdGhhdCBwdXQgb3VyIGN1c3RvbWVycyBmaXJzdCwgZ2l2ZSB0aGVtIHNlYW1sZXNzIGRpZ2l0YWwgb3B0aW9ucyBhdCBldmVyeSB0b3VjaHBvaW50LCBhbmQgbWFrZSB0aGVtIHByb21vdGVycyBvZiBvdXIgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLjwvbGk+CjxsaT5Lbm93IHlvdXIgc3R1ZmYgLSBiZSBlbnRodXNpYXN0aWMgbGVhcm5lcnMsIHVzZXJzIGFuZCBhZHZvY2F0ZXMgb2Ygb3VyIGdhbWUtY2hhbmdpbmcgdGVjaG5vbG9neSwgcHJvZHVjdHMgYW5kIHNlcnZpY2VzLCBlc3BlY2lhbGx5IG91ciBkaWdpdGFsIHRvb2xzIGFuZCBleHBlcmllbmNlcy48L2xpPgo8bGk+V2luIGFzIGEgdGVhbSAtIG1ha2UgYmlnIHRoaW5ncyBoYXBwZW4gYnkgd29ya2luZyB0b2dldGhlciBhbmQgYmVpbmcgb3BlbiB0byBuZXcgaWRlYXMuPC9saT4KPGxpPkJlIGFuIGFjdGl2ZSBwYXJ0IG9mIHRoZSBOZXQgUHJvbW90ZXIgU3lzdGVtIC0gYSB3YXkgb2Ygd29ya2luZyB0aGF0IGJyaW5ncyBtb3JlIGVtcGxveWVlIGFuZCBjdXN0b21lciBmZWVkYmFjayBpbnRvIHRoZSBjb21wYW55IC0gYnkgam9pbmluZyBodWRkbGVzLCBtYWtpbmcgY2FsbCBiYWNrcyBhbmQgaGVscGluZyB1cyBlbGV2YXRlIG9wcG9ydHVuaXRpZXMgdG8gZG8gYmV0dGVyIGZvciBvdXIgY3VzdG9tZXJzLjwvbGk+CjxsaT5Ecml2ZSByZXN1bHRzIGFuZCBncm93dGguPC9saT4KPGxpPlN1cHBvcnQgYSBjdWx0dXJlIG9mIGluY2x1c2lvbiBpbiBob3cgeW91IHdvcmsgYW5kIGxlYWQuPC9saT4KPGxpPkRvIHdoYXQncyByaWdodCBmb3IgZWFjaCBvdGhlciwgb3VyIGN1c3RvbWVycywgaW52ZXN0b3JzIGFuZCBvdXIgY29tbXVuaXRpZXMuPC9saT4KPC91bD4KPHA+PGJyPjxzdHJvbmc+RGlzY2xhaW1lcjo8L3N0cm9uZz48YnI+VGhpcyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBkZXNpZ25lZCB0byBpbmRpY2F0ZSB0aGUgZ2VuZXJhbCBuYXR1cmUgYW5kIGxldmVsIG9mIHdvcmsgcGVyZm9ybWVkIGJ5IGVtcGxveWVlcyBpbiB0aGlzIHJvbGUuIEl0IGlzIG5vdCBkZXNpZ25lZCB0byBjb250YWluIG9yIGJlIGludGVycHJldGVkIGFzIGEgY29tcHJlaGVuc2l2ZSBpbnZlbnRvcnkgb2YgYWxsIGR1dGllcywgcmVzcG9uc2liaWxpdGllcyBhbmQgcXVhbGlmaWNhdGlvbnMuPC9wPgo8cD5Db21jYXN0IGlzIGFuIGVxdWFsIG9wcG9ydHVuaXR5IHdvcmtwbGFjZS4gV2Ugd2lsbCBjb25zaWRlciBhbGwgcXVhbGlmaWVkIGFwcGxpY2FudHMgZm9yIGVtcGxveW1lbnQgd2l0aG91dCByZWdhcmQgdG8gcmFjZSwgY29sb3IsIHJlbGlnaW9uLCBhZ2UsIHNleCwgc2V4dWFsIG9yaWVudGF0aW9uLCBnZW5kZXIgaWRlbnRpdHksIG5hdGlvbmFsIG9yaWdpbiwgZGlzYWJpbGl0eSwgdmV0ZXJhbiBzdGF0dXMsIGdlbmV0aWMgaW5mb3JtYXRpb24sIG9yIGFueSBvdGhlciBiYXNpcyBwcm90ZWN0ZWQgYnkgYXBwbGljYWJsZSBsYXcuPC9wPgo8cD48c3Ryb25nPlNraWxsczo8L3N0cm9uZz48L3A+CjxwPkFwcGxpY2F0aW9ucyBQcm9ncmFtbWluZzsgQmFjay1FbmQgRGV2ZWxvcG1lbnQ7IFNvZnR3YXJlIERldmVsb3BtZW50PC9wPgo8cD4mbmJzcDs8L3A+CjxwPjxzdHJvbmc+U2FsYXJ5Ojwvc3Ryb25nPjwvcD4KPHA+UHJpbWFyeSBMb2NhdGlvbiBQYXkgUmFuZ2U6ICQxMDcsNDQ4LjA2IC0gJDE2MSwxNzIuMDk8L3A+CjxwPkNvbWNhc3QgaW50ZW5kcyB0byBvZmZlciB0aGUgc2VsZWN0ZWQgY2FuZGlkYXRlIGJhc2UgcGF5IHdpdGhpbiB0aGlzIHJhbmdlLCBkZXBlbmRlbnQgb24gam9iLXJlbGF0ZWQsIG5vbi1kaXNjcmltaW5hdG9yeSBmYWN0b3JzIHN1Y2ggYXMgZXhwZXJpZW5jZS4gVGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyAzMCBkYXlzIGZyb20gdGhlIGRhdGUgam9iIGlzIHBvc3RlZCwgdW5sZXNzIHRoZSBudW1iZXIgb2YgYXBwbGljYW50cyByZXF1aXJlcyBpdCB0byBjbG9zZSBzb29uZXIgb3IgbGF0ZXIuPC9wPgo8cD4mbmJzcDs8L3A+CjxwPkJhc2UgcGF5IGlzIG9uZSBwYXJ0IG9mIHRoZSBUb3RhbCBSZXdhcmRzIHRoYXQgQ29tY2FzdCBwcm92aWRlcyB0byBjb21wZW5zYXRlIGFuZCByZWNvZ25pemUgZW1wbG95ZWVzIGZvciB0aGVpciB3b3JrLiBNb3N0IHNhbGVzIHBvc2l0aW9ucyBhcmUgZWxpZ2libGUgZm9yIGEgQ29tbWlzc2lvbiB1bmRlciB0aGUgdGVybXMgb2YgYW4gYXBwbGljYWJsZSBwbGFuLCB3aGlsZSBtb3N0IG5vbi1zYWxlcyBwb3NpdGlvbnMgYXJlIGVsaWdpYmxlIGZvciBhIEJvbnVzLiBBZGRpdGlvbmFsbHksIENvbWNhc3QgcHJvdmlkZXMgYmVzdC1pbi1jbGFzcyBCZW5lZml0cyB0byBlbGlnaWJsZSBlbXBsb3llZXMuIFdlIGJlbGlldmUgdGhhdCBiZW5lZml0cyBzaG91bGQgY29ubmVjdCB5b3UgdG8gdGhlIHN1cHBvcnQgeW91IG5lZWQgd2hlbiBpdCBtYXR0ZXJzIG1vc3QsIGFuZCBzaG91bGQgaGVscCB5b3UgY2FyZSBmb3IgdGhvc2Ugd2hvIG1hdHRlciBtb3N0LiBUaGF0JnJzcXVvO3Mgd2h5IHdlIHByb3ZpZGUgYW4gYXJyYXkgb2Ygb3B0aW9ucywgZXhwZXJ0IGd1aWRhbmNlIGFuZCBhbHdheXMtb24gdG9vbHMsIHRoYXQgYXJlIHBlcnNvbmFsaXplZCB0byBtZWV0IHRoZSBuZWVkcyBvZiB5b3VyIHJlYWxpdHkgJm5kYXNoOyB0byBoZWxwIHN1cHBvcnQgeW91IHBoeXNpY2FsbHksIGZpbmFuY2lhbGx5IGFuZCBlbW90aW9uYWxseSB0aHJvdWdoIHRoZSBiaWcgbWlsZXN0b25lcyBhbmQgaW4geW91ciBldmVyeWRheSBsaWZlLiBQbGVhc2UgdmlzaXQgdGhlIGNvbXBlbnNhdGlvbiBhbmQgYmVuZWZpdHMgc3VtbWFyeSBvbiBvdXIgY2FyZWVycyBzaXRlIGZvciBtb3JlIGRldGFpbHMuPC9wPgo8cD4mbmJzcDs8L3A+CjxwPjxzdHJvbmc+RWR1Y2F0aW9uPC9zdHJvbmc+PC9wPgo8cD5CYWNoZWxvcidzIERlZ3JlZTwvcD4KPHA+V2hpbGUgcG9zc2Vzc2luZyB0aGUgc3RhdGVkIGRlZ3JlZSBpcyBwcmVmZXJyZWQsIENvbWNhc3QgYWxzbyBtYXkgY29uc2lkZXIgYXBwbGljYW50cyB3aG8gaG9sZCBzb21lIGNvbWJpbmF0aW9uIG9mIGNvdXJzZXdvcmsgYW5kIGV4cGVyaWVuY2UsIG9yIHdobyBoYXZlIGV4dGVuc2l2ZSByZWxhdGVkIHByb2Zlc3Npb25hbCBleHBlcmllbmNlLjwvcD4KPHA+PHN0cm9uZz5SZWxldmFudCBXb3JrIEV4cGVyaWVuY2U8L3N0cm9uZz48L3A+CjxwPjUtNyBZZWFyczwvcD4=