Set up a Firewall with UFW

Set up a Firewall with UFW

simplify secured firewall

                        PHA+VW5jb21wbGljYXRlZCBGaXJld2FsbCAoVUZXKSBpcyBhIHNpbXBsaWZpZWQgZmlyZXdhbGwgbWFuYWdlbWVudCBpbnRlcmZhY2UgdGhhdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBsb3dlci1sZXZlbCBwYWNrZXQgZmlsdGVyaW5nIHRlY2hub2xvZ2llcyBzdWNoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmlwdGFibGVzPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+dWZ0YWJsZXM8L2NvZGU+LiBMZXTigJlzIGxlYXJuIGhvdyB0byBzZXQgdXAgYSBmaXJld2FsbCB3aXRoIFVGVyBvbiBVYnVudHUgc2VydmVyLjwvcD4KCjxoMiBpZD0idXNpbmctaXB2Ni13aXRoLXVmdyI+VXNpbmcgSVB2NiB3aXRoIFVGVzwvaDI+Cgo8cD5JZiB5b3VyIFVidW50dSBzZXJ2ZXIgaGFzIElQdjYgZW5hYmxlZCwgZW5zdXJlIHRoYXQgVUZXIGlzIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCBJUHY2IHNvIHRoYXQgaXQgd2lsbCBtYW5hZ2UgZmlyZXdhbGwgcnVsZXMgZm9yIElQdjYgaW4gYWRkaXRpb24gdG8gSVB2NC4gVG8gZG8gdGhpcywgb3BlbiB0aGUgVUZXIGNvbmZpZ3VyYXRpb24gd2l0aCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5uYW5vPC9jb2RlPiBvciB5b3VyIGZhdm91cml0ZSBlZGl0b3I6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPm5hbm8gL2V0Yy9kZWZhdWx0L3Vmdwo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGVuIG1ha2Ugc3VyZSB0aGUgdmFsdWUgb2YgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+SVBWNjwvY29kZT4gaXMgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+eWVzPC9jb2RlPi4gSXQgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLWNvbmYgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibiI+SVBWNjwvc3Bhbj49PHNwYW4gY2xhc3M9Im4iPnllczwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+U2F2ZSBhbmQgY2xvc2UgdGhlIGZpbGUuIE5vdywgd2hlbiBVRlcgaXMgZW5hYmxlZCwgaXQgd2lsbCBiZSBjb25maWd1cmVkIHRvIHdyaXRlIGJvdGggSVB2NCAmYW1wOyBJUHY2IGZpcmV3YWxsIHJ1bGVzLiBIb3dldmVyLCBiZWZvcmUgZW5hYmxpbmcgVUZXLCB3ZSB3aWxsIHdhbnQgdG8gZW5zdXJlIHRoYXQgeW91ciBmaXJld2FsbCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHlvdSB0byBjb25uZWN0IDxlbT52aWE8L2VtPiBTU0guIExldOKAmXMgc3RhcnQgd2l0aCBzZXR0aW5nIHRoZSBkZWZhdWx0IHBvbGljaWVzLjwvcD4KCjxoMiBpZD0ic2V0dGluZy11cC1kZWZhdWx0LXBvbGljaWVzIj5TZXR0aW5nIHVwIGRlZmF1bHQgcG9saWNpZXM8L2gyPgoKPHA+QnkgZGVmYXVsdCwgVUZXIGlzIHNldCB0byBkZW55IGFsbCBpbmNvbWluZyBjb25uZWN0aW9ucyBhbmQgYWxsb3cgYWxsIG91dGdvaW5nIGNvbm5lY3Rpb25zLiBUaGlzIG1lYW5zIGFueW9uZSB0cnlpbmcgdG8gcmVhY2ggeW91ciBzZXJ2ZXIgd291bGQgbm90IGJlIGFibGUgdG8gY29ubmVjdCwgd2hpbGUgYW55IGFwcGxpY2F0aW9uIHdpdGhpbiB0aGUgc2VydmVyIHdvdWxkIGJlIGFibGUgdG8gcmVhY2ggdGhlIG91dHNpZGUgd29ybGQuPC9wPgoKPHA+SWYgeW91IGhhdmUgYWxyZWFkeSBlZGl0ZWQgVUZXLCB5b3UgY2FuIHNldCB0aGUgZGVmYXVsdHMgdXNlZCBieSBVRlcsIHVzZSB0aGVzZSBjb21tYW5kczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlZmF1bHQgZGVueSBpbmNvbWluZwo8c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkZWZhdWx0IGFsbG93IG91dGdvaW5nCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoZXNlIGZpcmV3YWxsIGRlZmF1bHRzIGFsb25lIG1pZ2h0IHN1ZmZpY2UgZm9yIGEgcGVyc29uYWwgY29tcHV0ZXIsIGJ1dCBzZXJ2ZXJzIHR5cGljYWxseSBuZWVkIHRvIHJlc3BvbmQgdG8gaW5jb21pbmcgcmVxdWVzdHMgZnJvbSBvdXRzaWRlIHVzZXJzLjwvcD4KCjxoMiBpZD0iYWxsb3dpbmctc3NoLWNvbm5lY3Rpb25zIj5BbGxvd2luZyBTU0ggY29ubmVjdGlvbnM8L2gyPgoKPHA+SWYgeW914oCZcmUgdXNpbmcgYSBjbG91ZCBzZXJ2ZXIsIHlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gYWxsb3cgaW5jb21pbmcgU1NIIGNvbm5lY3Rpb25zIHNvIHlvdSBjYW4gY29ubmVjdCB0byBhbmQgbWFuYWdlIHlvdXIgc2VydmVyLjwvcD4KCjxwPlRvIGNvbmZpZ3VyZSB5b3VyIHNlcnZlciB0byBhbGxvdyBpbmNvbWluZyBTU0ggY29ubmVjdGlvbnMsIHlvdSBjYW4gdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IHNzaAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGlzIHdpbGwgY3JlYXRlIGZpcmV3YWxsIHJ1bGVzIHRoYXQgd2lsbCBhbGxvdyBhbGwgY29ubmVjdGlvbnMgb24gcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMjwvY29kZT4sIHdoaWNoIGlzIHRoZSBwb3J0IHRoYXQgdGhlIFNTSCBkYWVtb24gbGlzdGVucyBvbiBieSBkZWZhdWx0LiBVRlcga25vd3Mgd2hhdCBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmFsbG93IHNzaDwvY29kZT4gbWVhbnMgYmVjYXVzZSBpdOKAmXMgbGlzdGVkIGFzIGEgc2VydmljZSBpbiB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+L2V0Yy9zZXJ2aWNlczwvY29kZT5maWxlLjwvcD4KCjxwPkhvd2V2ZXIsIHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZXF1aXZhbGVudCBydWxlIGJ5IHNwZWNpZnlpbmcgdGhlIHBvcnQgaW5zdGVhZCBvZiB0aGUgc2VydmljZSBuYW1lLiBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIHdvcmtzIHRoZSBzYW1lIGFzIHRoZSBvbmUgYWJvdmU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyAyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5JZiB5b3UgY29uZmlndXJlZCB5b3UgU1NIIGRhZW1vbiB0byB1c2UgYSBkaWZmZXJlbnQgcG9ydCwgeW91IHdpbGwgaGF2ZSB0byBzcGVjaWZ5IHRoZSBhcHByb3ByaWF0ZSBwb3J0LiBGb3IgZXhhbXBsZSwgaWYgeW91ciBTU0ggc2VydmVyIGlzIGxpc3RlbmluZyBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIyMjI8L2NvZGU+LCB5b3UgY2FuIHVzZSB0aGlzIGNvbW1hbmQgdG8gYWxsb3cgY29ubmVjdGlvbnMgb24gdGhhdCBwb3J0OjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgMjIyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Ob3cgdGhhdCB5b3VyIGZpcmV3YWxsIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgaW5jb21pbmcgU1NIIGNvbm5lY3Rpb25zLCB3ZSBjYW4gZW5hYmxlIGl0LjwvcD4KCjxoMiBpZD0iZW5hYmxpbmctdWZ3Ij5FbmFibGluZyBVRlc8L2gyPgoKPHA+VG8gZW5hYmxlIFVGVywgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IDxzcGFuIGNsYXNzPSJuYiI+ZW5hYmxlPC9zcGFuPgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Zb3Ugd2lsbCByZWNlaXZlIGEgd2FybmluZyB0aGF0IHNheXMgdGhlIGNvbW1hbmQgbWF5IGRpc3J1cHQgZXhpc3RpbmcgU1NIIGNvbm5lY3Rpb25zLiBXZSBhbHJlYWR5IHNldCB1cCBhIGZpcmV3YWxsIHJ1bGUgdGhhdCBhbGxvd3MgU1NIIGNvbm5lY3Rpb25zLCBzbyBpdCBzaG91bGQgYmUgZmluZSB0byBjb250aW51ZS4gUmVzcG9uZCB0byB0aGUgcHJvbXB0IHdpdGggPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+eTwvY29kZT4gYW5kIGhpdCA8a2JkPkVOVEVSPC9rYmQ+LjwvcD4KCjxwPlRoZSBmaXJld2FsbCBpcyBub3cgYWN0aXZlLiBSdW4gdGhlIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IHN0YXR1cyB2ZXJib3NlPC9jb2RlPiBjb21tYW5kIHRvIHNlZSB0aGUgcnVsZXMgdGhhdCBhcmUgc2V0LjwvcD4KCjxoMiBpZD0iYWxsb3dpbmctb3RoZXItY29ubmVjdGlvbnMiPkFsbG93aW5nIG90aGVyIGNvbm5lY3Rpb25zPC9oMj4KCjxwPkF0IHRoaXMgcG9pbnQsIHlvdSBzaG91bGQgYWxsb3cgYWxsIG9mIHRoZSBvdGhlciBjb25uZWN0aW9ucyB0aGF0IHlvdXIgc2VydmVyIG5lZWRzIHRvIHJlc3BvbmQgdG8uIFRoZSBjb25uZWN0aW9ucyB0aGF0IHlvdSBzaG91bGQgYWxsb3cgZGVwZW5kcyBvbiB5b3VyIHNwZWNpZmljIG5lZWRzLiBMdWNraWx5LCB5b3UgYWxyZWFkeSBrbm93IGhvdyB0byB3cml0ZSBydWxlcyB0aGF0IGFsbG93IGNvbm5lY3Rpb25zIGJhc2VkIG9uIGEgc2VydmljZSBuYW1lIG9yIHBvcnQ7IHdlIGFscmVhZHkgZGlkIHRoaXMgZm9yIFNTSCBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIyPC9jb2RlPi4gWW91IGNhbiBhbHNvIGRvIHRoaXMgZm9yOjwvcD4KCjx1bD4KICA8bGk+SFRUUCBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjgwPC9jb2RlPiwgdXNpbmc6IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IGh0dHA8L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IDgwPC9jb2RlPjwvbGk+CiAgPGxpPkhUVFBTIG9uIHBvcnQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+NDQzPC9jb2RlPiwgdXNpbmcgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+c3VkbyB1ZncgYWxsb3cgaHR0cHM8L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnN1ZG8gdWZ3IGFsbG93IDQ0MzwvY29kZT48L2xpPgo8L3VsPgoKPHA+VGhlcmUgYXJlIHNldmVyYWwgb3RoZXJzIHdheXMgdG8gYWxsb3cgb3RoZXIgY29ubmVjdGlvbnMsIGFzaWRlIGZyb20gc3BlY2lmeWluZyBhIHBvcnQgb3Iga25vd24gc2VydmljZS48L3A+Cgo8aDMgaWQ9InNwZWNpZmljLXBvcnQtcmFuZ2VzIj5TcGVjaWZpYyBwb3J0IHJhbmdlczwvaDM+Cgo8cD5Zb3UgY2FuIHNwZWNpZnkgcG9ydCByYW5nZXMgd2l0aCBVRlcuIFNvbWUgYXBwbGljYXRpb25zIHVzZSBtdWx0aXBsZSBwb3J0cywgaW5zdGVhZCBvZiBhIHNpbmdsZSBwb3J0LjwvcD4KCjxwPkZvciBleGFtcGxlLCB0byBhbGxvdyBYMTEgY29ubmVjdGlvbnMsIHdoaWNoIHVzZSBwb3J0cyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj42MDAwPC9jb2RlPi08Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj42MDA3PC9jb2RlPiwgdXNlIHRoZXNlIGNvbW1hbmRzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgNjAwMDo2MDA3L3RjcAo8c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyA2MDAwOjYwMDcvdWRwCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPldoZW4gc3BlY2lmeWluZyBwb3J0IHJhbmdlcyB3aXRoIFVGVywgeW91IG11c3Qgc3BlY2lmeSB0aGUgcHJvdG9jb2wgKDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnRjcDwvY29kZT4gb3IgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+dWRwPC9jb2RlPikgdGhhdCB0aGUgcnVsZXMgc2hvdWxkIGFwcGx5IHRvLiBXZSBoYXZlbuKAmXQgbWVudGlvbmVkIHRoaXMgYmVmb3JlIGJlY2F1c2Ugbm90IHNwZWNpZnlpbmcgdGhlIHByb3RvY29sIGF1dG9tYXRpY2FsbHkgYWxsb3dzIGJvdGggcHJvdG9jb2xzLCB3aGljaCBpcyBPSyBpbiBtb3N0IGNhc2VzLjwvcD4KCjxoMyBpZD0ic3BlY2lmaWMtaXAtYWRkcmVzc2VzIj5TcGVjaWZpYyBJUCBhZGRyZXNzZXM8L2gzPgoKPHA+V2hlbiB3b3JraW5nIHdpdGggVUZXLCB5b3UgY2FuIGFsc28gc3BlY2lmeSBJUCBhZGRyZXNzZXMuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhbGxvdyBjb25uZWN0aW9ucyBmcm9tIGEgc3BlY2lmaWMgSVAgYWRkcmVzcywgc3VjaCBhcyBhIHdvcmsgb3IgaG9tZSBJUCBhZGRyZXNzIG9mIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIwMS4yMDIuMjAzLjIwNDwvY29kZT4sIHlvdSBuZWVkIHRvIHNwZWNpZnkgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZnJvbTwvY29kZT4sIHRoZW4gdGhlIElQIGFkZHJlc3M6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyBmcm9tIDIwMS4yMDIuMjAzLjIwNAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5Zb3UgY2FuIGFsc28gc3BlY2lmeSBhIHNwZWNpZmljIHBvcnQgdGhhdCB0aGUgSVAgYWRkcmVzcyBpcyBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gYnkgYWRkaW5nIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPnRvIGFueSBwb3J0PC9jb2RlPiBmb2xsb3dlZCBieSB0aGUgcG9ydCBudW1iZXIuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBhbGxvdyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMDEuMjAyLjIwMy4yMDQ8L2NvZGU+IHRvIGNvbm5lY3QgdG8gcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMjwvY29kZT4sIHVzZSB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyBmcm9tIDIwMS4yMDIuMjAzLjIwNCB0byBhbnkgcG9ydCAyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8aDMgaWQ9InN1Ym5ldHMiPlN1Ym5ldHM8L2gzPgoKPHA+SWYgeW91IHdhbnQgdG8gYWxsb3cgYSBzdWJuZXQgb2YgSVAgYWRkcmVzc2VzLCB5b3UgY2FuIGRvIHNvIHVzaW5nIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhIG5ldCBtYXNrLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gYWxsb3cgYWxsIG90IHRoZSBJUCBhZGRyZXNzZXMgcmFuZ2luZyBmcm9tIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjIwMi4wLjExMC4xPC9jb2RlPiB0byA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMDIuMC4xMTAuMjU0PC9jb2RlPiB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDIwMi4wLjExMC4wLzI0CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPkxpa2V3aXNlLCB5b3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgZGVzdGluYXRpb24gcG9ydCB0aGF0IHRoZSBzdWJuZXQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MjAyLjAuMTEwLjAvMjQ8L2NvZGU+IGlzIGFsbG93ZWQgdG8gY29ubmVjdCB0by4gQWdhaW4sIHdl4oCZbGwgdXNlIHBvcnQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MjI8L2NvZGU+IGFzIGFuIGV4YW1wbGU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyBmcm9tIDIwMi4wLjExMC4wLzI0IHRvIGFueSBwb3J0IDIyCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxoMyBpZD0iY29ubmVjdGlvbi10by1hLXNwZWNpZmljLW5ldHdvcmstaW50ZXJmYWNlIj5Db25uZWN0aW9uIHRvIGEgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U8L2gzPgoKPHA+SWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgZmlyZXdhbGwgcnVsZSB0aGF0IG9ubHkgYXBwbGllcyB0byBhIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgY2FuIGRvIHNvIGJ5IHNwZWNpZnlpbmcgPGVtPuKAnGFsbG93IGluIG9u4oCdPC9lbT4gZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLjwvcD4KCjxwPllvdSBtYXkgd2FudCB0byBsb29rIHVwIHlvdXIgbmV0d29yayBpbnRlcmZhY2VzIGJlZm9yZSBjb250aW51aW5nLiBUbyBkbyBzbywgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPmlwIGFkZHIKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWVzLiBUaGV5IGFyZSB0eXBpY2FsbHkgbmFtZWQgc29tZXRoaW5nIGxpa2UgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZXRoMDwvY29kZT4gb3IgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZW5zMzwvY29kZT4uPC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+MjogZXRoMDogJmx0O0JST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVAmZ3Q7IG10dSAxNTAwIHFkaXNjIHBmaWZvX2Zhc3Qgc3RhdGUKLiAuIC4KMzogZXRoMTogJmx0O0JST0FEQ0FTVCxNVUxUSUNBU1QmZ3Q7IG10dSAxNTAwIHFkaXNjIG5vb3Agc3RhdGUgRE9XTiBncm91cCBkZWZhdWx0Ci4gLiAuCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlNvLCBpZiB5b3VyIHNlcnZlciBoYXMgYSBwdWJsaWMgbmV0d29yayBpbnRlcmZhY2UgY2FsbGVkIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPmV0aDA8L2NvZGU+LCB5b3UgY291bGQgYWxsb3cgSFRUUCB0cmFmZmljIChwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjgwPC9jb2RlPikgdG8gaXQgd2l0aCB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyA8c3BhbiBjbGFzcz0iayI+aW4gPC9zcGFuPm9uIGV0aDAgdG8gYW55IHBvcnQgODAKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+RG9pbmcgc28gd291bGQgYWxsb3cgeW91ciBzZXJ2ZXIgdG8gcmVjZWl2ZSBIVFRQIHJlcXVlc3RzIGZyb20gdGhlIHB1YmxpYyBpbnRlcm5ldC48L3A+Cgo8cD5PciwgaWYgeW91IHdhbnQgeW91ciBNeVNRTCBkYXRhYmFzZSBzZXJ2ZXIgKHBvcnQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+MzMwNjwvY29kZT4pIHRvIGxpc3RlbiBmb3IgY29ubmVjdGlvbnMgb24gdGhlIHByaXZhdGUgbmV0d29yayBpbnRlcmZhY2UgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+ZXRoMTwvY29kZT4sIGZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDxzcGFuIGNsYXNzPSJrIj5pbiA8L3NwYW4+b24gZXRoMSB0byBhbnkgcG9ydCAzMzA2CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoaXMgd291bGQgYWxsb3cgb3RoZXIgc2VydmVycyBvbiB5b3UgcHJpdmF0ZSBuZXR3b3JrIHRvIGNvbm5lY3QgeW91ciBNeVNRTCBkYXRhYmFzZS48L3A+Cgo8aDIgaWQ9ImRlbnlpbmctY29ubmVjdGlvbnMiPkRlbnlpbmcgY29ubmVjdGlvbnM8L2gyPgoKPHA+SWYgeW91IGhhdmVu4oCZdCBjaGFuZ2VkIHRoZSBkZWZhdWx0IHBvbGljeSBmb3IgaW5jb21pbmcgY29ubmVjdGlvbnMsIFVGVyBpcyBjb25maWd1cmVkIHRvIGRlbnkgYWxsIGluY29taW5nIGNvbm5lY3Rpb25zLiBHZW5lcmFsbHksIHRoaXMgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIHNlY3VyZSBmaXJld2FsbCBwb2xpY3kgYnkgcmVxdWlyaW5nIHlvdSB0byBjcmVhdGUgcnVsZXMgdGhhdCBleHBsaWNpdGx5IGFsbG93IHNwZWNpZmljIHBvcnRzIGFuZCBJUCBhZGRyZXNzZXMgdGhyb3VnaC48L3A+Cgo8cD5Ib3dldmVyLCBzb21ldGltZXMgeW91IHdpbGwgd2FudCB0byBkZW55IHNwZWNpZmljIGNvbm5lY3Rpb25zIGJhc2VkIG9uIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyBvciBzdWJuZXQsIHBlcmhhcHMgYmVjYXVzZSB5b3Uga25vdyB0aGF0IHlvdXIgc2VydmVyIGlzIGJlaW5nIGF0dGFja2VkIGZyb20gdGhlcmUuIEFsc28sIGlmIHlvdSB3YW50IHRvIGNoYW5nZSB5b3VyIGRlZmF1bHQgaW5jb21pbmcgcG9saWN5IHRvIDxzdHJvbmc+YWxsb3c8L3N0cm9uZz4gKHdoaWNoIGlzIG5vdCByZWNvbW1lbmRlZCksIHlvdSB3b3VsZCBuZWVkIHRvIGNyZWF0ZSA8c3Ryb25nPmRlbnk8L3N0cm9uZz4gcnVsZXMgZm9yIGFueSBzZXJ2aWNlcyBvciBJUCBhZGRyZXNzZXMgdGhhdCB5b3UgZG9u4oCZdCB3YW50IHRvIGFsbG93IGNvbm5lY3Rpb25zIGZvci48L3A+Cgo8cD5Gb3IgZXhhbXBsZSwgdG8gZGVueSBIVFRQIGNvbm5lY3Rpb25zLCB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlbnkgaHR0cAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5PciwgaWYgeW91IHdhbnQgdG8gZGVueSBhbGwgY29ubmVjdGlvbnMgZnJvbSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj4yMDEuMjAyLjIwMy4yMDQ8L2NvZGU+IHlvdSBjb3VsZCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgZGVueSBmcm9tIDIwMS4yMDIuMjAzLjIwNAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8aDIgaWQ9ImRlbGV0aW5nLXJ1bGVzIj5EZWxldGluZyBydWxlczwvaDI+Cgo8cD5Lbm93aW5nIGhvdyB0byBkZWxldGUgZmlyZXdhbGwgcnVsZXMgaXMganVzdCBhcyBpbXBvcnRhbnQgYXMga25vd2luZyBob3cgdG8gY3JlYXRlIHRoZW0uIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHdheXMgdG8gc3BlY2lmeSB3aGljaCBydWxlcyBkZSBkZWxldGU6IGJ5IHJ1bGUgbnVtYmVyIG9yIGJ5IHRoZSBhY3R1YWwgcnVsZS48L3A+Cgo8aDMgaWQ9ImJ5LXJ1bGUtbnVtYmVyIj5CeSBydWxlIG51bWJlcjwvaDM+Cgo8cD5JZiB5b3XigJlyZSB1c2luZyB0aGUgcnVsZSBudW1iZXIgdG8gZGVsZXRlIGZpcmV3YWxsIHJ1bGVzLCB0aGUgZmlyc3QgdGhpbmcgeW914oCZbGwgd2FudCB0byBkbyBpcyBnZXQgYSBsaXN0IG9mIHlvdXIgZmlyZXdhbGwgcnVsZXMuIFRoZSBVRlcgc3RhdHVzIGNvbW1hbmQgaGFzIGFuIG9wdGlvbiB0byBkaXNwbGF5IG51bWJlcnMgbmV4dCB0byBlYWNoIHJ1bGUsIGFzIGRlbW9uc3RyYXRlZCBoZXJlOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51Zncgc3RhdHVzIG51bWJlcmVkCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPlN0YXR1czogYWN0aXZlCgogICAgIFRvICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgIEZyb20KICAgICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0gICAgICAtLS0tClsgMV0gMjIgICAgICAgICAgICAgICAgICAgICAgICAgQUxMT1cgSU4gICAgMTUuMTUuMTUuMC8yNApbIDJdIDgwICAgICAgICAgICAgICAgICAgICAgICAgIEFMTE9XIElOICAgIEFueXdoZXJlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPklmIHdlIGRlY2lkZSB0aGF0IHdlIHdhbnQgdG8gZGVsZXRlIHJ1bGUgMiwgdGhlIG9uZSB0aGF0IGFsbG93cyBwb3J0IDgwIGNvbm5lY3Rpb25zLCB3ZSBjYW4gc3BlY2lmeSBpdCBpbiBhIFVGVyBkZWxldGUgY29tbWFuZCBsaWtlIHRoaXM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkZWxldGUgMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGlzIHdvdWxkIHNob3cgYSBjb25maXJtYXRpb24gcHJvbXB0IHRoZW4gZGVsZXRlIHJ1bGUgMiwgd2hpY2ggYWxsb3dzIEhUVFAgY29ubmVjdGlvbnMuIE5vdGUgdGhhdCBpZiB5b3UgaGF2ZSBJUHY2IGVuYWJsZWQsIHlvdSB3b3VsZCB3YW50IHRvIGRlbGV0ZSB0aGUgY29ycmVzcG9uZGluZyBJUHY2IHJ1bGUgYXMgd2VsbC48L3A+Cgo8aDIgaWQ9ImNoZWNraW5nLXVmdy1zdGF0dXMtYW5kLXJ1bGVzIj5DaGVja2luZyBVRlcgc3RhdHVzIGFuZCBydWxlczwvaDI+Cgo8cD5BdCBhbnkgdGltZSwgeW91IGNhbiBjaGVjayB0aGUgc3RhdHVzIG9mIFVGVyB3aXRoIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IHN0YXR1cyB2ZXJib3NlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPklmIFVGVyBpcyBkaXNhYmxlZCwgd2hpY2ggaXQgaXMgYnkgZGVmYXVsdCwgeW914oCZbGwgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+U3RhdHVzOiBpbmFjdGl2ZQo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5JZiBVRlcgaXMgYWN0aXZlLCB0aGUgb3V0cHV0IG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1wbGFpbnRleHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT5TdGF0dXM6IGFjdGl2ZQpMb2dnaW5nOiBvbiAobG93KQpEZWZhdWx0OiBkZW55IChpbmNvbWluZyksIGFsbG93IChvdXRnb2luZyksIGRpc2FibGVkIChyb3V0ZWQpCk5ldyBwcm9maWxlczogc2tpcAoKVG8gICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgRnJvbQotLSAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0gICAgICAtLS0tCjIyL3RjcCAgICAgICAgICAgICAgICAgICAgIEFMTE9XIElOICAgIEFueXdoZXJlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlVzZSB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLXBsYWludGV4dCBoaWdobGlnaHRlci1yb3VnZSI+c3RhdHVzPC9jb2RlPiBjb21tYW5kIGlmIHlvdSB3YW50IHRvIGNoZWNrIGhvdyBVRlcgaGFzIGNvbmZpZ3VyZWQgdGhlIGZpcmV3YWxsLjwvcD4KCjxoMiBpZD0iZGlzYWJsaW5nLW9yLXJlc2V0dGluZy11ZnciPkRpc2FibGluZyBvciByZXNldHRpbmcgVUZXPC9oMj4KCjxwPklmIHlvdSBkZWNpZGUgdG8gZGlzYWJsZSBVRlcsIGRvaW5nIHNvIHdpdGggdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgZGlzYWJsZQo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5BbnkgcnVsZXMgdGhhdCB5b3UgY3JlYXRlZCB3aXRoIFVGVyB3aWxsIG5vIGxvbmdlciBiZSBhY3RpdmUuIFlvdSBjYW4gYWx3YXlzIHJ1biA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtcGxhaW50ZXh0IGhpZ2hsaWdodGVyLXJvdWdlIj5zdWRvIHVmdyBlbmFibGU8L2NvZGU+IGlmIHlvdSBuZWVkIHRvIGFjdGl2YXRlIGl0IGxhdGVyLjwvcD4KCjxwPklmIHlvdSBhbHJlYWR5IGhhdmUgVUZXIHJ1bGVzIGNvbmZpZ3VyZWQgYnV0IHlvdSBkZWNpZGUgdGhhdCB5b3Ugd2FudCB0byBzdGFydCBvdmVyLCB5b3UgY2FuIHVzZSB0aGUgcmVzZXQgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IHJlc2V0CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoaXMgd2lsbCBkaXNhYmxlIFVGVyBhbmQgZGVsZXRlIGFueSBydWxlcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZWZpbmVkLiBLZWVwIGluIG1pbmQgdGhhdCB0aGUgZGVmYXVsdCBwb2xpY2llcyB3b27igJl0IGNoYW5nZSB0byB0aGVpciBvcmlnaW5hbCBzZXR0aW5ncywgaWYgeW91IG1vZGlmaWVkIHRoZW0gYXQgYW55IHBvaW50LiBUaGlzIHNob3VsZCBnaXZlIHlvdSBhIGZyZXNoIHN0YXJ0IHdpdGggVUZXLjwvcD4KCjxoMiBpZD0iY29uY2x1c2lvbiI+Q29uY2x1c2lvbjwvaDI+Cgo8cD5Zb3VyIGZpcmV3YWxsIGlzIG5vdyBjb25maWd1cmVkIHRvIGFsbG93IHNwZWNpZmljIGNvbm5lY3Rpb25zLiBCZSBzdXJlIHRvIGFsbG93IGFueSBvdGhlciBpbmNvbWluZyBjb25uZWN0aW9ucyB0aGF0IHlvdXIgc2VydmVyIG5lZWRzLCB3aGlsZSBsaW1pdGluZyBhbnkgdW5uZWNlc3NhcnkgY29ubmVjdGlvbnMsIHNvIHlvdXIgc2VydmVyIHdpbGwgYmUgZnVuY3Rpb25hbCBhbmQgc2VjdXJlLjwvcD4K
                        
Ads by Google

林宏

Frank Lin

Hey, there! This is Frank Lin (@flinhong), one of the 1.4 billion 🇨🇳. This 'inDev. Journal' site holds the exploration of my quirky thoughts and random adventures through life. Hope you enjoy reading and perusing my posts.

YOU MAY ALSO LIKE

Setup an IKEv2 server with StrongSwan

Tutorials

2020.01.09

Setup an IKEv2 server with StrongSwan

IKEv2, or Internet Key Exchange v2, is a protocol that allows for direct IPSec tunneling between the server and client. In IKEv2 implementations, IPSec provides encryption for the network traffic. IKEv2 is natively supported on some platforms (OS X 10.11+, iOS 9.1+, and Windows 10) with no additional applications necessary, and it handles client hiccups quite smoothly.

Using Liquid in Jekyll - Live with Demos

Web Notes

2016.08.20

Using Liquid in Jekyll - Live with Demos

Liquid is a simple templating language that Jekyll uses to process pages on your site. With Liquid you can output an modify variables, have logic statements inside your pages and loop over content.