From 7676691ab15114fd00a80251d6f76936bf659c74 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 13 Jan 2025 15:18:48 +0100 Subject: [PATCH 01/10] chore: add SPDX compliant licenses --- .github/workflows/reuse-compliance.yml | 15 ++ CODE_OF_CONDUCT.md | 5 + LICENSE | 4 +- LICENSES/Apache-2.0.txt | 202 +++++++++++++++++++++++++ LICENSES/CC-BY-4.0.txt | 156 +++++++++++++++++++ LICENSES/CC0-1.0.txt | 121 +++++++++++++++ README.md | 24 ++- 7 files changed, 511 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/reuse-compliance.yml create mode 100644 LICENSES/Apache-2.0.txt create mode 100644 LICENSES/CC-BY-4.0.txt create mode 100644 LICENSES/CC0-1.0.txt diff --git a/.github/workflows/reuse-compliance.yml b/.github/workflows/reuse-compliance.yml new file mode 100644 index 00000000..9df5e71a --- /dev/null +++ b/.github/workflows/reuse-compliance.yml @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2022 Free Software Foundation Europe e.V. +# +# SPDX-License-Identifier: CC0-1.0 + +name: REUSE Compliance Check + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: REUSE Compliance Check + uses: fsfe/reuse-action@v4 \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 94841c18..6e38f42c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,3 +1,8 @@ + # Contributor Covenant Code of Conduct diff --git a/LICENSE b/LICENSE index 9ee80f10..111ebf8a 100644 --- a/LICENSE +++ b/LICENSE @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 Maximilian Schubert, Deutsche Telekom IT GmbH + Copyright 2025 Deutsche Telekom IT GmbH Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -199,4 +199,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file + limitations under the License. diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 00000000..40df35cb --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 Maximilian Schubert, Deutsche Telekom IT GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 00000000..13ca539f --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,156 @@ +Creative Commons Attribution 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 00000000..0e259d42 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md index 89aaf7c7..25b58d7a 100644 --- a/README.md +++ b/README.md @@ -37,9 +37,10 @@ - [Traceroute Prometheus Metrics](#traceroute-prometheus-metrics) - [Traceroute API Metrics](#traceroute-api-metrics) - [API](#api) -- [Metrics](#metrics) +- [Metrics, Telemetry \& Dashboards](#metrics-telemetry--dashboards) - [Prometheus Integration](#prometheus-integration) - [Traces](#traces) + - [Grafana Dashboards](#grafana-dashboards) - [Code of Conduct](#code-of-conduct) - [Working Language](#working-language) - [Support and Feedback](#support-and-feedback) @@ -696,6 +697,8 @@ This project has adopted the [Contributor Covenant](https://www.contributor-cove conduct. Please see the details in our [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). All contributors must abide by the code of conduct. +By participating in this project, you agree to abide by its [Code of Conduct](CODE_OF_CONDUCT.md) at all times. + ## Working Language We decided to apply *English* as the primary project language. @@ -710,9 +713,9 @@ The application itself and all end-user facing content will be made available in The following channels are available for discussions, feedback, and support requests: -| Type | Channel | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Issues** | Issues | +| Type | Channel | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Issues** | Issues | ## How to Contribute @@ -723,13 +726,6 @@ participating in this project, you agree to abide by its [Code of Conduct](./COD ## Licensing -Copyright (c) 2023 Deutsche Telekom IT GmbH. - -Licensed under the **Apache License, Version 2.0** (the "License"); you may not use this file except in compliance with -the License. - -You may obtain a copy of the License at . - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an " -AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the [LICENSE](./LICENSE) for -the specific language governing permissions and limitations under the License. +This project follows the [REUSE standard for software licensing](https://reuse.software/). +Each file contains copyright and license information, and license texts can be found in the [./LICENSES](./LICENSES) folder. For more information visit https://reuse.software/. +You can find a guide for developers at [Reuse Template Docs](https://telekom.github.io/reuse-template/). From 7f51e93f239993ef0bfa97ad18eceda95ce06d55 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 13 Jan 2025 15:19:27 +0100 Subject: [PATCH 02/10] chore: rm img --- docs/img/sparrow.png | Bin 101088 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/img/sparrow.png diff --git a/docs/img/sparrow.png b/docs/img/sparrow.png deleted file mode 100644 index 7e720bbf6723d9d3f3fa5c3a696fb7c5e500b8c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101088 zcmeFYWmH|ywl4_5o!~BkV8PwpH8=!!cL)&NLU4Bt76`$EySux?#@!t@z4)K=&b{}I z_n}Akw;s&^_FijM%~dt)H>KvB74}(C3I&k>5ds1NMMhd&1p?w7@bw)8JS^~W?J@HR zd_cOWNQpv}j}aXJ7tk)EGHUR^k2k#O58xWXQCiyt0s^(??GG~P6DlFlCfG_%%T-H3 zp4Y^|j?u`}!Ptz^!_EGvoSh2TQITk@bEA(vof)=G5{?YTs-YvjXW6a zT_^wwh-ClJ5I1u%akg@FwQ{g0d!uP&?BM1qKuwKE_HWW6uCC5j#{Z#i@4{&G&mFh7 zE{wpWnT$+bm{=H@--bm-#{aMOydtJ9Z~?KNtVHvbFl>O^!y+E@o<;j%EVX zDrPPYZq6oV|4?}A^lu_!&SplgW~PFy%&cq-EUXO7to%&>+oQL4{8tAF4_6seL2h;< zV`eiWBL+@W79Iw66LU5OV^%g}25x3nb2A=OW*$=(qyG^4SC{`uM$#Cd!okYH%E`gQ z!p_3Q!@#{GaXB9NbJS-=-q?UjzKFd;hfMXL{qVt<}Gn^3TP;x$+;v|6ruZWwgrGvAeq_dH|4Vj#+ zgPDz)Gyhw=|Mdirf`8WH{}I0dG5rt2|HnW)j2!=)L;%fr|3R{Yvzmj0t)Q5Z{Z{~g z|NHI#<52!JIzZ3?k!SjkVgN4wqgu@D0e#{OD2|mBk~s(nG6)%Q5jBs@<5u@n-F~-U zFLSNLRL1_D{vBi%{s;le$cBmHamKMU+R58wiyGCMHf8QvcU7h~nnzK$7CJU^)rGb6 zHf2fl;W7m@yO}Z&&~YxP393qWt?D-~PGajM5R~RcUMe|vo*mKZcdlF=F24^m*Oh(S z#y`LZlEI6rZ${Qb0$&2jA_XuY{<($y0n-2Nh8p?*f8&is|KH|EJb?ogv*{zst+Dc{_b&H&%bARmtheqUeoir8+smB$Bu7^YCJRK8y}1ylG_XhDyoZ<_knV|QIO9O$SF#zNt>IJo&KY7 zNKh109~MYP2H-Q22dXv8HH%kvey|((kW^ZBYEmLL%dN0!Q6R)rIY4F`)9Lt|=8`H{ znsiWuJ2Ar=T9iC@!Kr}$8xa8l`e&dk5ub2>SkPZmA@RMcAlGc}o(iSr)hli zOs*Jw7aUfXG12rr`U20f4^xZjZ+(j>0g(_*<90JeqeeR}INA4IiXkm{+K#*6w37Y2 z&YrN#gOs}1lzN3zzR?o$Nyegj%PyHr{u?C(dhq+)mv_`?r=XqyJ)-sYEY(o=Ew7LZ z&Qj}C9(R@++;ZbFkot&rb-Jxxw?_sgd;%&k%uS+mM9=86<)KNRWo|b^++Weh_znrd z&1?|WOj!yKmTi~b zwDY$cy>4r^_EmCJJx?Gr`CDTQqU9$}ICtCaiLt2bx*R+QmtfYlTi-p^w+;oARk*m`>3D=Z10z*S<%!U&vAp?6ukFQAdo$g) zOeBKG1IBZL%-H|O=t?a5^}^k}=AGP{VNg&}YS%Ja0)G=V zYI+DI08W2|t*#9aY|j|lXkt{P3(1h(YG91c=u;?kTE!}nhlN=GWav$L@?^PX;zL^2 zy1_%tpEG^~=L7fXg+Fo=e|Bc#m}?<>nr&)rt?j*;L~r1ZQiEGY;NSxN(^wjUOrFP^ zX}pbrsphKo7mugqyhjGx2i97*8IG~swyLxxtLYL4>ms8sY;FppGjkmAWjT^{5q<|@q@p^2Qt35abL{bA)uc#7;@~nSTU3;c zUxUk9!{K<#wnuN=ml?8UHy51y>jclPA9cdlRw%0q7j^Z!Flv&hC|-s;p2Su zVReROD&t8^$Y2DpC;B1Ph?(P?c8fcnQ^;w5+nKz@yQQzsk2SNMOV8~^)d5(WiSoomrXu4H3~Ma1(7@Yvx&!NAXAv8^7;r9B)2u*@crK6Cywa%k*yQWh`8- zh!HK<+qEc!l{na%&jp%g)*JFLASJVSZ4SLj+LW&==`Yl?&F#+BO#YUPwdjN`I~Dn9 z&nqpLQ9F8rcB2-B_rWfbZ*#AF8nsw_eip;b>(=Mh5d+?t+72?_Ez^|~OR$BCfolYl zL?5q>#OXOWx!xrs#93-BPxQc?HHOS;uE=hQz$iX;}%oO zz_!O=wpNXl)@~e?_+8=iQq1Yzz$pXKT5T96+}FrbKpQ4wr|6FN&aY8Lg#{zLu`8HD zXkxs`;>_Y{I3`Btdqc)p<^A)pR>LF4E@Sf#dArqy1@cJb_Sn6JwlbonsyH7V{XFJW zLN1-;vc_~ddoVl-n|V|QN}wYZAUIUW`sCxw<3c0JxFlV}XweThst3qdnq?*j5@$w} zFeyLCrT z@7Zt6p04{j$wte0G6~QXBwR`O(?>`q<8gW!i%)aIL@VH>)HCFU686&ahP2xGRS^Zf ztyFy-^zVSjz+7(Yx5L6I=t$-Qe?9Vv%IVuEv zS~pdE#-?2;UGGu2LV+q~dqB)0k(#*##xr7GJ>+j5evN0354jO)HJw^pA7%6%H+A*& z52HC79+e(@oRqL6#f;6&Royo6@w^V*4V@-1@4gYBebcTFPwis!cu7~YGaS{Xqw0Tj z+XDbpnm8*MIZw}fhG#kOk7h?PP0R~$LR!E4HD~l$@7JokJ!EOjCi4fFfj7DA6qrH^ z77YDrOO$XlYS5Uhp0Y|=rWc~@WV^2MwGDioO8kB#vpKlb{#D(4)PR#}9`pAba>GF= zyB;rLq%|jnIWdDb8v0);Y$}??*q1`8_ zg$c=g7;3KV}t_l;PD z8~3qk$>XRobOAhMg55fn*;~4JzBwMAm;0IXt!G#E==jy8QoEAiyk?cno3XAXJT*K> zFQxm6B7#Q?<)df&?GPLe`woEBN3PXTiTO2+DjWFOAb``w`$yJWi(cUDt*1}(+4W{? zDs%dNDW=z&@8`a#Il}$v{qC37FJ56()tBwN{^bvcq1^hfygS3rR7W};=d63*Ye5@w zr}i1th@rX9HHPFvZjk$DCx%-IcU4!l)Sqr&-bQnD25w2LL(CTiG(nH8&&7LvzhkL; zeKUgFzl=ONwe#yTM^i|jSYOq;zeK1UX07>iz?S;_nakyvo7Xbwz>7SCQJl2=^Q%hI z#9PSQ05peJ+4)pf!IBNf+fbVw!@-+54tD}K|6>nczkbPo5^p@lt}FGvHPtb4u6W{f zqsfpK1sXJ;_k^%V%Hw3l&`0oxg$613PMOZToPFZ+h3=%C$9noi_C5hleR;HJ&J)8I z`zOP}`PKQ=zCP+xv-ym1wOu%BX^fWbzGkQC4<9IzNdcf4O}kyfkFQ)Y06M31;Q31P zkJ*a?X_495RQQMxZ556Hv;Wu*a}d=23K=JtKM7vXHXL&!KNZ)HvAxO%{<>HxG}wBo zoc?X3R8f*G+|NrrsEY)c+z#t-c7d}DRE`rr6C#Q8YCql@GSGBr(c^@4iB=BPg@cB8 ziHzw*yp6YLKm0l>-uLy$a@2>2L^VgzT-me@(9;lM$5BM{KgN4L8+Ed5ya}Rz&RQ4P z8U|qLv2{UOV{wIq-RRvNscn0IZjoAZ{~SKTB(Dd6=zDKn3h7Q^j&H>W7bP33ope6G zD8Ql6H1*x27cX6N+_9~d`O~0Kxx~SHzV`*L)JRn~3GUOTqb_?4i<6^~Tjg+W*Iu9# zj*VNxmSNX}9iGR+`4XpZ1%f+v;A+4GNj^(cgNZ+?=Eav#7w8I;K$eS_^DBw3Fjo)2 zdbyLlYgXV_dIsM=!rFKsv5T?FyFue)3FRo8zI+5*7aw{!OD zA+d{7Lbpy>bC2xq7_ya*D9w*r#2(uDtEo1*uEC_wLg6+oK?- z(3Roho}yW`u3P^v?Y7(WxBd)o{o^!AA0TzI{fdvTvg-|D=2vcxnB?Rgn$z|_2ArJzTlx$-Edns=n_%*Xw(K!CZ@x9A{NmzqCs zdvRloLFkm07KOQwp?&6*+=OUAppq`Rp%zMYEU|denby|l5r7#rR$F!!K$_iaLu`Kk z)O+l+j#m9#8(j+jht%|b%d_*T)iH7}#NtYD?y7S>Aph3qyp>F| z8A+-ECyoul8Ha|Rml$YzZpcuU^NjsP=*DJ)+w3K)KQP~GefPnuUGMgG0obCfoL~5L z|M8sCmF6Y}q-=Vj<^U$U{fy7Dy=BLzl(9W*cQ9kCdvjSvh{G?Oa?}cV2&2i-c1R z@_YVxkUY37ym!<8nl!4kZgA_#lvSxi=LQaP6OVA9Rbp3_2i26&viT@7Zie=KPY`(3^_=MNwtV& zAHJVOL?itmvP_+U>)p%0gXZP-J4k%9=F*JEZh@1 zbv&8|PHdX1;F9W5YI(p@C{{rX;>o`6G;py!TQ z*F6LuZpv%FQaCq>l@i*jNH%CG;+-f07FfNYNI^;=Z>p2HLSPW-?lq@+G^M0$t2O7D z*qrH`1+9tEAvvUQ65yF}l01P8HgGS^(khJl=NgNi)bNbz)L+UmdLe<1A6_vf}^ zI;1Rq(J~>m3D<+&vU}>;!~cCin#3Tvt`H{amxyEtx|kE+yQ3PQ{qYTRp_ogg#9maF zj=SI;l&~2qJ$O~fv@eP)>c!xP^2GGlNNV4EH{KXhy5-DypKT;n(Ht>ucYv)QZrg4! zlwS88hB?xGKmpV!l$W{5`%pC^P?yuL&lkw5bwH zSY?5Xa%wT|H!$~rG6Eba<-6}Pe##~0&uz@;NJ6Eug{e+kUL|_f1ye$P5*{~uLWaXG zJF15**RAbj>U`?K&=BffgfXw5GKMIb`<4qRSlFJ`gad+X_J#sq$I&c$D&!E3as# zzhW?G4?rOW+iLG(P;mlyfmC|g_p3Q8OBrU>bUFH958h6(wEW$&^hKt5vEler)eE7S zQ|PBT52VHdU3x7ENu9we8l`Gm`YPv0*%38kj&OWdMtVE8$srzIo$sKpUYEY?oQwu+ zA6*tL&Fmvox;pn_z*acJYu~e-sD-31TuSn?Cc|4y_sEU9W6u~KQNwi(2kkuMzV*rD zcsqHsfkLJS(XOwy(c1Ov3fATdahiDJN4uiM+5dS+=3vpZZ) zH^e!N!@7I&ppiMM)6gl;kIS=FCTfFDld(OALfY;6D*gK24*WR;ACw4ZOZuB(tOuUB zyIaJ{Sqgjw?PW41nqso+#rmm9OXHhA=3KGMtj4q4j+`m!*KeoyjvqJBR$uK>$jh&J zgGe|9-5j)ct$7_t>U|&4O6)A@hP}Ib#NPSS${M&63O)6|N;*7+DUa_IvFhH%jn~|F z4G$Zpk-;Zz@2}N+9=`gt(s$_t;gptF)plwXf=CSW&<@C5AoJ@%IkK1Ey^cz5o+ z*`b1hocnv1Xas+Y9bKYT9^I`-5Vu7--%wu+A#|G7w2-}Y0mp*zbnZTyegUc$d;nK@uQhWJ<1?!||GZFnNn z1?vSWURYSgza9)Ap78kg;FC~_1KlktgkYmV{enh=cp9sSLDPuUax}i(UJifvMyKDuf#yaO_ypo_(Bp` zJJI<;3jXVpin#HcDC=xBs$nm`gZ1gA?PpePs+La{Lv5tLk(mD`3n@xcDr+jSObeyY zFLgL9fws0Ydnvn%yK*ft!?pZr>{Bt*za`Rm zxml05&wgfYJdwJ+1QdEjH9aaIo$V%@hjK%PNz7}~5X><9yq>{1zE48R11OQ!*-d@; z-W#gzN(q$D@Owkj(NujVa;rGQu6yRi^Elf8eUQ_e^re5D#tt>hiShWCO?ZAfxt^<=9~o&N5KMBv zn-k6Zb1xjtI}oX&tyW$GA%D{r(N`>sYOvo)l&m+nPU|p*ytMX5vVc#G$?MwdFFhY1vbN6ERjt-Aq9#e2t$!!fDNU@z+LdN!#q}Xc9UFpP2Z(s1OnYoMzxt?M0nTl` zBT-7BO*vhHS(g?WA4I~B&H#Oq`#wz|)6wA;$$J`z%TvQp21@ru}dgBZe=K5@3BfD!tccT z33+yk34}A4ADA0761VYMsMFA59WObZ>`4dlRTsy62MwwCj`)+od#|#q)n?euYaVa$ z#?bbwy=%7^{&gCi<&LcO2X%s?`ou}rpP7K12hd7US7Zo1@X_lEG-jklBJlncA~nBQ z)`}4v7>MCrOftO=jdHRT-4aA^M$n8yfFqI_kJk!G7k42pRnRTRsrcq5DiSkLMa_DM zx%k*S)iO|`D(@l3J=(zQKgB9wMw7fNVdkuCte@Iy@Woyl#2ePf0l^L4UTk@{tO`>^`vl=VTM7K zPD(0*+|~?{wAM&i4hk~N>c|bqUu+UNa_zLLQ{mU-)ikU?uoAsgl3}?_^sRr|&yCGj zzj~>|-qF%KmOM{)sAv>VAJL={=K?Y!JH5c3afxWi? z39B}xJkEDmbV`l&UJAGjk8&C!wH61bBf`%K#qY-^yrGJZA5Ngx5U@*2eyV;yaC`sfBk*~L7OG5W9)#^KVRLf#djuibh7 zIWt1^v?XtFKnfA|AGl)Hha?Pp{~$QWWZ3#SLr9B7?&W{g0thZKQ!ZcSMMx10?&a-S z_#NX~HJNvN_z`zO|Ezz3M)N*W8r*vXhVe*vX1*FlN|&$RWeLd1yUF?4z8Akcv&+V| z_v20v45WK`Huj%@r)ov1$_^L^KX9mZf}B?`IF(X`T}gy`l-jRyq-OoLA7j8p#W0Fw zz@n0EyS(t9k5)`9J305bNCz{>L(9ru3Y${RlFVS4Y(cqHF>P9XhAH~;z zxi?vq8Qy;s?Gu2?3x8*;tN#9@72SLxI51+Mt}gm4g;NFyUdI5AfQ@AZGl<9j{xw-9Jogl*^Ws=T_5|Cj?JiEsA%NxQ4 zAS|9d`Qhi3mPw^PWWuA}Fi zjwXvi;R6wM;pQl0y?|L>w1wiD#+zC9P9J1gszp9R{c1=NHkHc@BySN=HQx9;Tw(g)_u!CppZ1GB z)ZHF5=?6BTAX%T88X`8hr#q0Z1F+jI@y_4LeEvx3YQ<-rXc>5x@PK#5<(%k!Vw_QVe8XhSawnMwMj0wmfn(@t?20kIAVwMtKXxFyu>g zIRe-v;_-CE6?zGMWd~hMTa52TkNbusicbbQeq9qm9{8{mn7^4M1rDjt@$=}}n%8yb zOKH0^G5afxhdPC9nYn*vzc+anVCzkXA3i-|veHl8NJT&Jqvv-|t8!tJ71I0J;!%3wc_ zTXXwDb|k1WCr5W`1*H-C0ugwGcM`-wV<(sN3>tzYUVcw3*28H{Or#V10wZtgZtC!? z9npxUTrSLS;Yw^{rQ00cnDf9-mqgG`>V@I-%GDk@5duSj}L5DHoOdB9;Fl^71$`Rr>EeW8KG9p?QyQ1p^P5hUct%MIJ#-)llC>7 zU!;yI8&&(6sfA;13S8R-_G6Re9Di}$&oDHfi*}&MK+AkM*j@CUKa2Sl8`|Zgi4f7n zJ+S+yAD)j8&0y}8Nkr*W6ktR_9)7a@0Ld~0?uTtgR9+Nit(wHjiRhzMy9XQNfAH5a zP_kb7TlKnA_R^Mogo#(C#BSmupO2mqI2fwXhO*_k95SJ(OlMkIA0 zQiH?iQ)@bzC}!pVCxoAS-3 z7~i%L4Fs_`h}^Dg_xh`Z_6M;RQD5<`iq<18EvJJUvpU&S$3&XtkSH7Z)C<&Nd8%T) z3f4Sd$UXYG1R68;FK|=6MlwcK;w+PtH2AKIQ?el#9HLUnY<`gC$6Z-$KvJOb&f%2; z4F9_BzSZA00E#H5sZkfjpmi=|R(jrWkUV})sc6>7^sCLCu~M{WKV3tm4dBCtBjCVd z{V5iij$jlBem6$|Ka3t!-Qy_Ly`LNRc|o4$P|vV?$+wWB?~27J=)+Nn59%{$OnRb6 zI{&2-Kkf`hip+N=n1;seZyQ`2B<78rG&{ZQ5YkZ(i`@2rT$?H(7EbZhnVj)+#pXDf~}BfwWkXXD2pQ);&_GbIAuEgj>DpsSJSN(J2DKVozVopabW z<7Frk_OeaOAJg}G?3^)0Ih}$?WD}p`-Oj554e}@qs&U%3J&Y_Z1Z+S@y>_8d44h*! z_EFR@p?SJ6ddOIyr%lEHR@kEqV`hvxWJbMN+@M4<(yo}^P-cSX;$@(YS?DwRUth{^ zSTKBr@5BRgW5Y6_dYj&DD!KOQ#cjI`;&jU@*W1F_mvO&tIvEtFreotH1`*($bnXpQB4F|3j-MhM?*5NC`Iuk8?3rFRH)H z;(GCk6Ad8|F~j}_yjUn7jq>L})M&oQIYXbsggo#wlH(C!--(NYdHL%;?)~8WD?F1B z_iA@yJy9^AH#3zjr2DXjx&a|D zd}xXrOsxktWMlK$^feNJM39MTzkILjDM-BD;)*9eA++6AU%DgTlTnOP)BP^rd=uuYkCeQ%Gj3 za52GwyzbP;sTO&r4ctNNI5iLX+kBWGceFdO*j^MSsR--NdsVyztX~M**9}4Av7h-O zlTht!+gYgg@wf{}NNpEFl#+az!~!8dv}Z_X@-uYCk#|aRYZm-6{3D``ZBS3iEIp!4 zP+1)RkY`ASXdK=tbMGDqvawhAKBx2o%izB9u^AEJtriFD;O!}HvR9!y{N(!}l(?98 zDDf3yNZii>?kyVx2rsKc3HPgvXl(0gh^)T|Z4Scl5va*+9VzoC?r#Wd($dykB_Fje z+}i6}BMmPtIHj2`F4qoD=RYzJ8`2UJI9W}Tu-LqQm~{_PYq(}x{nkOee-5~?hQYQh z=wX?z$J=>yknkj>Q^9@Q=qk`Kd!OGGt2x1tv??Wy zy*CKTd-)|0-S;U_m?oQx&XaQO4^8Xy0qPnP77dXQiFZo5*VpCJ$TSyRmq9=>qTUlF zk*qa_y*RWFfsmLg{LN-Vp&`sbKsuA{L+>Z9tj(gB*JVU4O0{=8O*Hc%wkWDQeg|UM z@Iex`4GD2tlae}zy-7Zm%|=lS>WdM81JjZpx8jSors>VNCaQGI-ZMWDwi;;p>m!Sw zlV-1>g7NY?a$}UBfm%7UtxTv^b+Rl*qm7z5Trpd3S>y`b2 zUhDOZs(&FRL!cq@b1SZ}bh5oH#ZA^-mMcEbbLYR=ny}fQZEd)eFZdPc>`fO)60N@D zP~%8T@JHfTghJBjYCy3{6v7iUy7hGibKJzEpc7dxloUSKQ5do7X8~cA?sduN`CQjT zX*_OFv5`_HaYeU_M_Itn#V4b8o3U3H;<#B;(AF;?e7Nn4B(qrLa?$hU}28GZQ*O^I_tsw`He~mfd?}V z-X@h~SF8j7f^`zzP_sf!_~WNEx3kQg#xxSCMAa!F^Yube!q}bS%TE8N=lCSS-b+cE zHg{=fL-ZABNQK{4P28`v(k557Z=P7o+HlO?bf`gZe^8v5ZeI#IS+(*n5n`gB zTBTby62wRd&2Yb6)A0$*yW^^>5JufdAKu+P-;g4Et=wvoSlpO#v6_r^A!>2d0^1vC zTkl7GAfWPHzoi|MUxd2#NiB6TP_x2q}c6efhoA0f-VUt;JXfx%T{ssgsh|sYji!2m;h;% zZm!f|!+<~z%D&w?1}ZEo`^~Ja8-bD(EyxI<)*G(SENn|iiK7OncH?&F3^$57I^yq* z)+DX)mr%t8gbudi`S>;3a%HF9TXaY*crZ%ARfuSci;VF_&b9B;WN$q}qpprO8Ull# z^fi>U>i2Bi zeb##t&Kb)Nq;x_2_29wKPTjt{treKReOZE8AqLMFi=J2gw|D8=x=)+qku>Dzqd>jY z!y`%q?fVE`TuKOTDMgZ{-k-#Tp#t`g#}D!M)M`XJG=@HCSxknP4;?%bA0$FVX(YFe zUfvaL{A?B7Xz)fmfEYCEcQ33sRx<%cI6~Hua)-3$dDug@2XrE6;jXzF8Ui;U1lcWCf_6iNnMz_2@ql^ih8Ns!pPd;3Pg8`9A!6bOEL_y%b8Y-x2 zE(g8oszwzwWa@Z$xV{>I;uP$}>C+NF8#dSHo9nor@*8hSl-$GNJ`+LxeG(_$c((_P zJUJ=NhwrjK?n#!eghTD(U&tWBpyDjSmc3;!#-Bk?0jxjI&`NM7KFat`QrC+KmZ}{7 zS(kGjZYyALbY63OZVo|L-U%u!cGx$sK4X>T#yoPkXKr5iNcJvw(Awe@c!B^*X|$VQ zvY~*%LIHt^ysd=*qZpmKT>|qloi6}%Hi!lpbYbM3%lC(kPNbe=X|Q0;^@}> zfT8{K8}oE&VIfda`&^BZI+;<%&1HTO=}reZpwOz5lI+=FG14L8si|D$guREPY`W}K zLTSV);bJ91NjtpzZ5rU;9wMheaMDr(KnCD{1AhVQNKhpGL zg-;Au&a({6pR_O15a*077uy2eBnh$>T7Fxr*p-s#W7rbs<9zqjf>HHgkUquSf87vDY5dXf5=*&|(I;4g-=>=Q}i@r>lZj$<~S!&=2NEslba0n1< z0o{CDQI%Y*<@dqauJ}J+MZJL}{A-Fpz z8=Aoh;~A9ScTfXLWcZ50W?r8G7$+)F-Eyw^y14XhPWRJCnyw!50fg&88o8lKQwz>1 zeizxgM*;L}3TgK+nnp)n z32-RE0;mGl`%6l!ZzJpPHoq<*JLDUD(INRti+ylW)zBu1a%=QAR5{!e_fOtWPO-xo zqqVlz=3|fR*PoBk`L;rgf^#(Vh*GpfMD&d4@Q10EF&*C*A;ZW5&TCE2WBSl?R z&~q@jIN7kx@Ol;ZiCreX3u%eW@}7J>DGXZsl?*GJwJ86EMOhQ5y=vTg%7l#2R` z-stm2^zpj+e~^%wz#hU~{qfKOHPZVtYy(FoG6bHlJK zT<-4ASU#-MMDq;~D*p{x$l6z1J&Kvx_%atutMWn?yAm6rp=8omHmLqJ*x3*hej?q! z`5iYGS;$`stCqSaVG=W>3ONKxXrL5x33C6UX_%Bn$Dk&DWMsk$j&mM_k1vIT`?h$o zlz?4nen|n@fxo~X=sT0P#H*q2>;v-$D72?woJG4^MuDBsvKeqAE^082n%5oeY9oi*9DpY|*Gn7Vi@e_K5p66Qe0Kv7wb&j2iwf_fX9t*_uF8Hr*V(cL zD=T60NVK^xMA*{vefUp(-3$CfA=rpSJpGq}3vdJUv*zq@lKH&5}c(tl^+-z=yh$^`<4B`F&3Z(+u@BpMi`u} zRdfDR+(T0Cq(-@Sl-hQVY_!jHn8!YcPOg50i}>0^{N9Lv|BmH8c~IB7X-A(ebp4HT za9m3-g-SDgd+rA%WayITKzr<-#3qL?{$t_Piaj+Mg9W(l7^NB7Al>m%xx&KKn zR@FZd6EXjn+aL@Oy7V8z4E@ewKa7M{vkm(6$#iyG{42!w%B!2r9PF|t5LI=p%AMa> zaF(%LY!-;kBtgNp%jMO){Dj>_OyFh#wuvEK)EUBkE-ED2g#Iv zz#rM4KA#m4>*vUqQ@f^NSbd|3nFJKu_L!;MA98mr6 zhPV%q!hx$9*@ViY`@QokUm$IYm{BiOn58k;v_=}z*^QKo*u5AxS=19f(P-F<`C)d9 z_!Wj^@>NNE$DNkkTYCR$qj1woe9WQwR%u(XpeW*ylhl^F(s5(KqvJMW9A~d<^Y~tmT(HoGW%eg{!qKPyQ zLDo@G`5FvzpNujyBTkAfl^8Edu?T^xC+wYVkxl=wyu;VDNnR+S6V?qa>vRH{d7ha< ze(Pt{DPk{a(q-}a-F}|OE~xFbZx}AtXwj#=se-ziCS@@yBGkMuBkOcCTlyUW>UNCLhTV<;w$&gTE`Cg5D}UKRf3! zzG0adZ&GJ1qAjG<4&E`}(BEX_X^WYu>1ib;2ccRwhM5Ax$}>veQ!+&ZCJy^(*!kSr zVX&P;Zq3bo8hctY4o+EX{2UVJ#>{x<75|hy;-6l1L_3A5tz0tXAZ*}Fl}!xTQS005 z(kI~f&z_b~?gy9b0#d~-5gezixC|0O?J%D zf-UH|`3pj3zPccekoOqOks&r7j3kdRq7AtTgOyam4J`Nh(A5lw<>4-8g3VbM0S%V- zpTONkHfH;Y{r)OgO#$z3JwKk-za#6q}!;a<}9tB`5($nm^}hv z&$vfR^wU*>v??%nwx!M3hbFld)5o@mTfq0K&(CnLDdpX8GPHz5cf}j`)JyNtgX1a> z!!y1Mm;(Z>*%3b&1`XlQm1=UfiwiiZH%S;0(a<(1U(i6@o-1mQCa{p0neRLV z2h%JlH$7b`%)~a_POJB1=OqJQeRP5-99;eDbH;)6By#Gak)}-WrQ0tR3jrGl7>-xiJ^~- zy{f?Ty-|1Qmr*2I(T234BE^6}r+l@lI6rle|Ewbv6;jGn5-Xt^Vw~MnyJ@|K_a`U+ z^SJSg7lXA01cgt2cn}cCA9s8 z$?bKoEB2n1xB4rVz78RAMVoB-TyMF($!%|~$L|0vZGM;nZ2a|iof_`7dB_DsaAE{@ zSjlP=1#nTdB>3!eyEM!LhEFU@Yra9c^W==$^{`wSMHQ`4r_qWN-^21-j4Y z$Y59cG~4g4RDcJYmQEky9njPVdq{ZXq>CHzQ7H9SeGS|tESFxtzoLmvdP&+GV#ybk z19NG!l6>JTRxI6+j6vt?33399+KCljH0q3A5eXS`6YwgcYS3)T`bg)A1FFr)+9;Fr zj$OOFf}TmppL8NMABc&srcA4L{lLB#sEE|)NH0;WOmx@7O*o>k`&LpPeo9=Cw}L!+ zQ~_t_ltn+s?Xd|fTwu4iKxZpofhE{E*V09vPyB}!FN0!dx2g_pd0ugEmmzbdHR|Ao zb~mRTe!cd-QNIa|r00>~$R<6#NLf`Uq6%jx^C3bl8i;DsTHiM_+Ve^jnG?tc+;V8` zTb+q|0cPjSis)Ce?QhurGLb^U3+tn*MS{PzmYPPoK^a4zgSrQy;EHW53(CLZ+^gSb zAex!2g>%esjTW>w`)F+ewjN{8;Gqpsn}etL5yB8SrGw%%l83~YU)NUhZcd&hkF$!h z`Vrf*lqH(V!I|brMfIG!@!?~pE%E3ulVmB?lsy#h4s1j>ogf7#qVA4AteuZH;>JzB zJl8{8g6rA3T=cIO=Koa-upFIb>Xt1LVXn+p6PJiI#57Uo$EDwvVM`aJEXa{Yzm%G5 zOr{*7>@0wpXh~P-NCY>2<*0{i=QDxRuhq1~ON0E4dq|?0pr3ap;n#!@o*5#0c0Ky~ zsEXs^g^hW<%XGsWMaJboajwWjSa)cuj;5Gh9XUNB!|6L|lpoBxW9^{UmfQVT!nssE z!kmgnh}=UL2;fAa?}AA|@V2fD(ON&^S5#orVrAK}&2cmL(e7#{gQSVGU3fk2q+lAx z+X8(DCB94i_oe#5dn`mv8`dR?LO4eS+^^@r`2fLDa6d_|&+w6ajz;$iQt~9T3v2`G zgQ!sd?J3#%v?A|FvoI|?&JM3gyFc4LW61<0pW-=*iTpEBpGv~e#Ps6mhH$hiFSh+S zjc~qvG{I`fv={R}RVtsns$RBhUmh!MH3~|B4Qs*Sq4fN$|C}qaK=j-iz89>z!vJ+; za8e3N`+FTAW_9hB{TndXp}$cfP)|G(x(w~LOy15^7Za+xVVHaN2Xcs1c-ZM$6J-3X zOU}IQypUlLZe1R}P^d7x5}-j$O_WrH_nOe8MvTx9-=T&e*v68W53TnoQ@7a<6+TS<2b=Tbz=;U4U;m@cs+$R;r72$ zq|<4zmXu1<)7{PBzyKLHh1CWyIDVj0U{VU@YO=O~JJ>_Vo~`s8-A-$bM{CMsn&VMh z@hayLV86>y$ZBD-N2o2sgre%A{ zrt3+kvt%2Zu(dVRPiw&T=kNw|SZgrWqQhXou_6sE43CwU-Z1Pjd)^qn512|+Z2;gG z^6Y>6)nSiYw(gn=STjXY!49!fDT2Rhp|f!`J`OF*SJT~_qt7c~jKU6flg;`}ug!7v z&8N_|4_z=o3grck!Nm=n^a9w;-7$<}87_?)sjtR;N zT!V5gR+%6WP+*h|UJsu~8LZW$6l7eN!Tw&1=i%5eEz<_-fyzevJVE)UG7fk?*}SHn zJ_b(iV&B`ZQ0rQ1QfZp%rh`+1t*=AZrl`$=$>kuQ#|?LSjJ2V-kszEqbC+H??5zI& z-VRP2*ij*iCO%dBuWavI!x#RUv-o_`{T~KO1C4wKbMb|= zb>uMA;iRGW=n-1xPsiqtacuKTWZXR3`nXOyaGgC(mB$qkM5&;+4%g=sG$?>^ieaTj&w}}nWmYjX-$w) zm{1UKLjHWhq+!|mYll5%*9dlkrwUaY0PG$?_Wz0z{N<{8q7@?=@Bo94i$g75dOE9a zyq$r34ZS@c1><1*J=(YLW#*Du6prlR#O9}P{7#I@qcMTwQEnIjl(ZEbzt1=WDeLLNt1R0{H^PSUw$JG!$A-}pGG z6rR>t3)(j*YjDwEf`Gv_3Rf!}&teOjLcya@@Gw4cf2KfzksuEM8)!BZJUkQ1_8N*w$tjZ;Wb zm&&63LE3ijqpR&CP72b#CF`bwwmzI4Ku^1 zgE%CeRXCY6nYtS4rZu2km$aLrb0CMc4%Sg%z`>$SA;|7fK|g_%%HTLPcz6_)2gb*B z4YiIUQ}9Te9Nh=sV&_9H7k%ir@Y9Nvo28&Ul$!~T60Aa+Lkgo|#+-#TwX_aP+r=;B zIk5FL7F|$%|9^MC{3n0>r{itJShIWMvmDv=*09Dbx%f(!t-ZQJ7EMv2)xQeb)mjV= z4vtNc$KqIvb_S?*b98Ro4h0WC`XazV9+W0t*Q!L+eRG5dM0_U$SsZ5HR+8XK`8mOyppti1_ zOeO;kc-lv6O<}M=UvEG8!8|F)WuT`&bjS*8Eh)l&4$7e2G}=*k+C`J4-~iJy7}w$( zA7fR}T~Jw4u1nX^PJE}4`nmr?B#H%*Sf48kCG zqjS9Z#P9q3$GHt)NRgf%Ztu+-uHXM^PIv{9vaIoCy|tQ3qkJ6 z9UtHTdxOa{mao0Fr!`XQ`!WEyFG~RP7hc`-ng^adNdNB{0`7>tDTE6EL2lDBC@=%; z$_?sAnnWLZn0A)Y+Zhn&8A3TW=jXAV0W(JrGraa1Tj#!kU>j>_QHErV^;f@%h?kf>S)&>_OqNqvhm;;R%hSkXg0dE2EZSIvG5FF)x>8!%76z9aiXBnhCoEHqT0_#isdPsGmLSw2) ztyM<_-iUfxVlu<((o)%L;L6>POq_av!UYID zMk1>0=qj73Bh4js-)Hfa?=ZOWCWHw?lOn7_?KS}1)vIuT1H2cUeEj2kUbFD_-hINo zfcvflkS8&#H!tpKO<1Wjcjk$Gvgm%muBLstYnPtHx)if{gKzvF{}W>;n>_r{AE4M; zqQ9}k_WBNa)leJv*|~C))+1**adw8q%ja2nA?DEIe+{MT0vQ!WEdVQo3 zD4}smVvQtl;1w391i5tNMS(kXn4=Fq!1$R5ut?Uf-{8uHd783G8X5d*gsWDlR?gyb z$DrFIu<-mhe}hj>Lv!Y7ve9EmI|s%hL@97|fCIc2R2$>Wo_vIr8yDX7n$j;^V&=rd z`)Jww5BFUFuyA>Aq7eWmAN$xoSaQE%cMPyp`co!l&|f2v1I%)dw|;+zqoWMUUNUzhQ6z~oz5LS(TzhX4;@wrg-0zNfXG;X<1NOf#^@JAu!3xP z2RZ5RWXks2U7E)qWbVW%)>qb;|Hi*!_VK3}fAk3)RmdZZuA+q7%>$IbIs>BMdmaGn zG9ZgPoe07?tkj62pdiQB1&c4gKtpa5wk8m9K_LV|5YS&)X8GoIJX4^A##oDXvUK>q zrmzO#KnsZ{6|S(Q1J#O3tAcB`==BD4Iz2q2(XnB0V+#`m9RAqj#GW9rmZFz4xV6r3 zVTqmX4SG8Qikt814*E)*vX5N|8v(FcXYD@Gys;eu}MnokU8E%t%d-Lmz*N zs6I|8J?wgq7ysy0E-Wt5oH))?Pkflxu@;%{kt;dB4AUWLQT7jDJ&GKx3~`}kb*;_(v#)UC=_l}; zV+2zXW3#8p&vxmrFS2p#7MmLzbT->mt%uAtfv2$)I3y{W+R5WgKlNb-l^QnFIIXbK z(DIv1n;M;SJ-+w{U*fCJzRJpQh)4_4;yIrB#GCx`KmJ8bZip%^(kx}i#&nCzR78Ub zZ;FaHR+cZc$3Y{&0p2TusK%k=5ABKMr{CVBy}m?i`p7<7_Wr_s6#y(=c>_~qds=h+ zkssJ6Ywm4WxXs~jOIKWy^+;Ey>WxCwnoON}nEqQmavXlWhE@u@y+ax&DCOZ0^t(f3 zk!34LI@vWz)4p&2;LP5 zIOz~>egtRjkFdbr|Zm|JdRn}qJQ%`ovZUS0!@*o2JP%W3s6f%2Y|`FxWQoDk<<7U)=^-67 zn`87g)`+v1*@w?^?Br>-msVK6@G|kv7Kfhv7~%La90AH{1d;-alDpFZr6M7)Z_fYr zIa^oOu?1v#MyMsZPKlSU5^pSX_(+R9-^6n{y>^$)`31~ifEQ}4Ez2a^POOIiiY3ZGt*U{JINP_0!V zY+|w@;kY2EOj4a3r!{?ur8h1h`W8QvI8QKl_7Sq6!aysm)M)3S3xnS;xY^#KUA6qe zulyr6{2kWZHjRPf^yCSidEf|L`5;S0LFP%USHL(?GEe7GUJD@ zp3l*Tp4=yE?k~8KiH5Q+@2~=d^-(j&kmHkNgB^lONM;Ij) zjF9x>j1UjsRZs=^frn`bDyKt^jg4{Z>SZ=A%rkTN2>ziXY)cOp)lgBDiVd+FTd1H) zb0*-}v7>AZSDD!8(|Yp;mFrtnRvbwyz<=ZrM?Z9$QW3IX7-^zh5Ls|(K_CJKgAQVA zgUQJ`?1&Z6?q-sVK^|}e9N=A|)|zB|_Bh)s^Y41i=F$z~L5HZ?+(*maKe%rKfcE+l z$*{MlHFF2fe_vpM!a20nsKyMfV-FC&^>zHnM@T{8+^D17(%EbyMd`Yw6PPq(Yk7sn z*f>%OR(6ri<`x%MSE<$mre<6G%^&(SpZclK5j8A1F-~gI z!jPx}Cln&<6Zo3QmD0aX3R2~vCZ-vLKFx_1mDVBZwK~HnBx+0$M0Ii{(WxQD5Cat% z(HdkN>S)YYt`NR?i~jsgZj4F%qC)LboAk9d5B@tp%6hF}+aJ=d7Fd&0^FoRYB2SU` zyJTL6s5yp{l#>raprjlHk_R}zyTggI&+I7x09d(pfm82+OW=cu`-Tbd`uXSf%>MVp zXZ|{4hvxRlqI(+-Zu7ZYA#fvl+S2jrvM)d?Oi|$LoW*m`Qwe>7AjDdOwT8g=0Y{P~ zc%H--IZ7!^Zb`BfsRN|d#Jx7kIqJ=ECZ;FQ%F8Neg;w zZTjsYX{CaHc$$ZP@S}*?Svt8u>2dyx|Mq|8*Z!aXmv*swvUU%tT60xT4ALncR8N+z)0$0lOna$T1^U16SgMM zK?8wCxKiUGE@FIPiIR-z*rHyz#>Oib7#?XMfA%M7{M1iipLmkOM#R_G5eq9cPL7d; z83VsSg%SPD9!ocu*jienz1e1cVU5&b+=*raNYuy8?06cEVdZZyL^Gx(FR4lmtNtS&wdgw^wA^7zgrGCzyaP3T8HMS zwI=DeH{bP|z0wGOka6E+0G|EA=dsrO{~tKQ^szHM{E;8tM~m)lh}~ay)Ay9SVIj&i zyp$HLBv^qb6k>de<=4+qsa6T3LkfvSqMSkp5$Pa7At|iE35SysYYigHv2l#Xp|XPB z`VL;LhHNxwjZYIA!}7&9Nw!w0k5`et##)PUyIti9ky!*5=PW`f9Im7)M%;-H{t~ZK z%I?T=Jz06MQKOCrgQCmMn_s~U78sjoVS7V1uieB)Q{bUQN#Co4!*>QuiWZQkmYvOQ zK$6*rsmDG_>*F71)jEv5V`uIFcc;Jao5Ja{8GwOYU`yv3?xOJ6F zFMWMaYtDT5(+Bha`vfT@4uf^0PJCgg)k6kbtHjHzgmn*5WFua9fl%NnNx$F2Q{G59 zt`q>0LSTx5B#BWur+^+V$cUEaH160k;(!F zXAGWHWNE?X`VI&f0An9IOZD+bS*4&(1c zk;EtxeACCqZKNC$#Xjy&u2OsW41aw7n|$%t{ux1iNW&j;{rt;x&#&_2M?X$@VhV9} z9-h5O(5#Z5Y|!=#x}L=PK2a1g%q26N$-^i2$)fiU?u&Vv_ma{% zeELKCV95ah%!rR(3W3xLgpZXK4nOq?hAv__D3C&;ox=$O7@~SatzMCo+6ufJST=*~dF=z;A`0SWs4{ry zbozjzFJb)b8LA(Cgr!iBOHIWoT1i3Fs-ObNbP$pL%Rj;U-S1#U%9i9?p5C zo^ow#gWhj`hx~u|T_!SxFb=I8(&l&tfRAw=$^~U(q)5rdfLvx2c;sRN;l@z5fwUEb z@zJ(|Z|Vq|c*P-9ze#;Kjv0g$M`!r*7oOv9{@s7b(Z)%14~_=o%zyI*e)m^CkFJd& zf8+^@#Nht)B8QjO3B?XhX6)n{R5a6b$IwxYW>{hI;@b?{ZImp_HXlsKsL70v5E0IK zSR93p5oV3mm%qlsx4w!>24tqdjZ_zRare&$*gIxV?fqH4d~NR~;}0V4iwwZ4U;Awa zovl5s`Q%Uk+&)=zfbs$Ea86)Hja}9XqFRHUtqleX3xxFmjRj#4!eMbJrODzHMqK}e zDS7b);B4urZ3an}p|!*eh75XLDr0q&r>IO$psZ!}?YGeaYUAS=p+J-)c1mapW07*V zH(=NK@8U0xm&@q_hZJ@+T_6$0U`3DZbKj&jqan-KT37;GV1yk7K?-aEPLI0(A&*l! z{Q-%PcvDl%J@F*{u)#otDCyI5iiybvhJh4WGbh27WM7Qj`c$U`0+Y3anBfDp*$q=V6_~ zp+E#Ud~iOvD*dD&775YT0#UcmiyK!6#27#GE5FRKlaI3YC$A%yyVQz;Yj0fRiJ$m4 z2#$@h{_M+)uXT~zOVmzHVMLAf3yZ8@yTR6K2aKlKnji=QvUo^TsUQRY_C2)w`XH15 z1P&=m5-ej4&_)(FSibOWHlKTm_1E8~K0QnA$WbW7C=qk#eBRIJ_I`)osw|!(*TNxAxJh_XqBa48UI5ppKk*e4i{i05GDk1trUBuC?G~NFnN+`uJz)x`3U2 zj@1f>K{`i)MTb6K5RerGLQ15Rc%Fw40#E5ODHvNQo!mKp#`TTE{m z;tisDjp241m#3rZf+9_{vk*hz*#z|qH^!i7!z%%_$5H0v$IRErK7 zVu$rto~85F zn`~Zx8*LLVzw#P8i_0ig1~eapz~+O3*;9|~>G(7r?0J0fgNS=R09d-Zx6wa!{`ie=tO}w{Y8wxXl~b?gEjC(WZ`#AE25aXL(+*eq$SF6$3LQvt72M9dcP< zBgf5WUqhuD`{YrKc4)tjeR-Mw8}l^68kHhsHW;TB*4f_NLPZ*{5z*F#XbxsRN? zlc3p8AL;J?;jRn+7i8vlZ-;UebaWp{C}f6meY|9etKaw?HZQ!w&edBClMGw0FpLLW zed9dwu=D4>3(5(I1H3o9muLFQ^}VSHeh_ibj{$BjUf=VYy+(@%*c-|kr!86CtVKvw zcHQR%#`zri)Th|Ed4cxUO~ww_QKWcoG)+(sQGEr8#R>t|5rq}71uo0TghXi#I0B(a z2Qe$@8nx*rzUi_2);VfNk5M}`$H~*jSzBD;^4I@>!_R!0+RP~oMVZ0x{EG?A zM}O>x_z(Zle?`Sa^d@IH{C9qm&aeI^-s?-q&z)dB%&40Hk;i!6klZ#9u7WfgQM3{H zIz_sPm#z~O378$6?SRdYZU_iGQN_3>GW03D9uFrgES=lnkN?wOrjz9q>wU)80$fvb z-OIVTy+D?>@hau0qUrXD{@UYsKX8W4*wT(HwyN>GI@%>{FU@oG*hySaC65z|L5yFk zmd=&393=KN0{GWm@jv_X9T*4RC>>Ndff54Y43Zu$S!emh?;x&RL9VV7Z)_p_2C~vX z*J=#oHY=Ck=EUPqV?A9q54sVb#DO@{d&Z&nAoIJvbd7s`D|pWb0PBla_jJ4;MvTuM z-zRGh03ayGF|Clu5kZi&2B$1qYMiNX^3$K0QC>=o2PA74lkSrAB{!1w8=IYJ0> z>+pOJD?vDmu?AZdD5a4~ArYi;Lib8a>qv{)P|?43nZd>;GY>w*?3p?A>L%A;{36Fb z{#nKjKTe)n0_kI9fmRZ0)6s^noJE&+J@dUI=Rne5n`?`V?tF7DOC*;0#4jWq^m@Y_VN)=&YcTTLNM{7b5=f5+ZeM9;$Nm z$w&F+|MHh{8@HIO^q5QF(Ty5ce&Z|rljT+ZlmGF5p;a9x`{+mMedks5x6U#Cku$Ud zO)LaWBZ;NPNrMzVX+J{@wovIUTzUb;3n;mP&^g90dmSVOFO^sXB$9YiQhUnr3lowx zWoV!O9g<50QLgbiKDm{2wPUKtaqN)0Au`SJP8}!x@ei@p^w>y-Y%NGcDoZc>?fiu;ue2Lwf`q$^OiJAKD&b=>Wo(Nl1kM#W5o3o- zT=~}TQC-}mf8_?-+l$DkfvSyB)LS?kHyYwJ`OmzX(z6rB$ z%+8W^+bmsrlgX1OnVM@+s3A9B_$u;AN#n?)6ciN3qHL+c=bSDbwzD{FDOp>d4OXhr zPlnRUlGV=@29u&v+jJaLKIfl*j+eju zM||jS|1D~j28TZR3D$r8pEKU+P;W-GrKIc4P>r{7wd?HU9pa(pSo{X#@t5e==aCbR zFs!4!Q#d(+BOcKm7kKFwp6wG1wz2J)U|MrBxA1VvhhxofDPjFB!ykUt$6H7UTLDt| z46m$G2^{>$VYbH&aXLX&M<^C(WXsgT7NK_nZ|ouBETNjDv?j*LogI~rxiSVh8A0rQ2 zSgEOdAxbGW7Z<5Ds#GT?Fr%g!>3C=Kd4N4(`uN@gfPQukO9GKU|UxZb+}QQy&AZF&RC(Njlog8^$--e!F6 z7}GO{@O7W{*Pg@0DUFAoL0X?eglH!bQgNs7Yi`fSv&-NIBWhfS6AmE-CM&Q8OkyCl zC|Q;!tS!$$NQE&5EfwjYLqSd~LykZE2z>%_p_!=FFnLN{mo5jVs9H__>RUv^0mI1W z!KXjP=YRW4JoChpeD>e_8|2A=fBNd%#GRWclXIdr#y7wA6(0YY9|s!|J@GK<{{_W% z2XWX(gaNtBam2WxK=qcGNaykLuVSLhM3Zya<|&-?DQJLb;7AcB$GRahnjpuZ!YyPo zMaBsxTSE*xxSk>K4RdpnzxQ#)C$IR}${Mo&TO=3$h}xkeWJf>EO+TWg*YLaJ==>;{ z8ZOt!S`QVh6X4P5^oXh+wHMf2n8$2yL)9ZQK3;tW5lkU;NrZ%uI0;HZdwl~xj8N6;LGu5*fT_9D zdtS4(bc4AE?_EaNdpZEvSiH99HIs9v_Q8?^yaQsCwsnk{_d=}juqX~6JIv}gR_LBv zi39{bEkc>VYPkp51G=6C}k9nM+8YDki%ln&KW6a}8A%bk)`<%pp(SZnb-50_h_ zFk*5tVByvR@vzSW51+=jj;*(^Qp-}NPM)T!`doeE>l_y;%~Ovfn8EWRGFzY}qkzTj zb~1vKIKe0*@J@$dtfg?4JWjAhj?;3ak5G<4Dy1>TV2XnFMxO-9#DgaY##;0XNmPwM z2PEE*$T$*Dk|mbLz%V$si0}gPn!=xHapmIM{NN*}P?5%H&7%*V;o=)NNTkJ23f_F< zO?H--@J>HW#nuTPo+EB|5KI#phjW|cK}NCFqM2NxlKu`}brm;NLj^wGa0{|69GeK` za717&+Bi^>!W$=$vl#yn$ruEjr5G;ZTG#Q0877O-L665~Anv`1y>f-A*#TnwF#T4O zoEn+CMNzY~{Q}R{@bYo2?Gl9Rcz%_{w%F-xGhT`CDq-n|h1h?3U?=V(gfjf=YyahY ziz82aRAh|j_t-f10;?~6o2pCLxN@1iw@s=7kPR}whMYPA;UrE*_`U)m2z(#qOVVV> zpxvPnRYv>}2QNe%GloBB%MPU#q zl(kd?#q8`fo15EQI(Lba51n9qtVO)E#tw?s+$;~Bn&QTr-(Z*ym^u4nm`tOzEa`%U z!&-q9Wlh)$Mms^uoxh{pks=VfR2(pQj-@31aZVs)+0bQ7j*^l=KOvVMMb+cTBM;Fj zVu&LAR)n#p>=#H2j9;MrhLP_R9 z*6!1J{R)SUKZwfBQbdb$ z{ZXa^CV4YWUlt^Xjd)`4UZ=`T{O4N!r@Hwos46f$`WrT=#h7Y|eL z5puhL3|}HwJLK}?r12Ck^iYu@44N1`lEDBk@Bnq2E%Li`W0nwq?oHXrFG^yl@?$}H zR|%{uM?tM{U@bwAk!~z7xbiyb>UC;%$nu2?m|-7ZNh}q%MIC?oIHq-oTzOQ22uF_g zRmqeo1it5!#zT@`hoIg7c_4=TS3$KoL0GBpNfq|JY$88MxTgbv%{^Yc#>5O>810ia z2e<<<@|h!zK;f`bP~;Fbrg`WyKg^}y|1D}^KzC&wtYvm~iq-WsgtIipn&pFEmZOB8 z*0{nW&oU~N3O08LrEsHEtq>Afc2Z%BoJO^RbFjI!&CM$dhzB&)dPHa821U|l{PY~B zPfl}l{xX}U$<&jdq9`2BSgh1|I-2zYAAR1UP~4HKEcJd2f_BC~L^hg4AW1 zLLo^83AqpilQSs4igk`K2ubq{7Z1tO7%vLTsR?IMOWWv9iVGZBC_rg)V_4tZgvI3rgJH~-`D>ij<;b6^*AU$`T#OsDV6K~_9NmMw8!AGhUL}!P*1JYT9SfSSb z0*85>Uf_|VspNt}Rj{gy6Ct9Q#^eSWjS*;p5d}6YP@de!)c;+(d;zyvAxB9bfkX>P zg+*A4a*Dj@6M2H+(lt7lU&GHf*uHg*oh#SSMUEDNOhjZt(-@yZ*2XX*M0*M$K`9TV z0i{sNE1Os)m^6cm#mReqYJ1-?b@Vj1F2DY+k6*j>_C8wk{l`6hM{Vvw00Lm@$lhy2 z2iQA=9i=iw83<@635+0c3Tr}IkN*I*6KBYcM28_sw@o}85_%DXUP^nrjjz4Zu?s27{GVR8Z&m zp+l^ne~y)N-$u$FPC7gZc@`r>zpO)Bai^c*c1OBEI0$rzABCjD0kTY3lnvyD{vs60Q z7#sX5lkEj&*B_xWoI|-D#(SGo#bmAtDkrE|!fF+y<~AkJU(VFLhZ~c-GW%t7AFfR6 z-~QN@(;x*Bmu83}#}frvzKL(QXlnTFnM|oUyX7%KBQHqLB3Fx9Bdc zA|sEJj~yjlILFqd*ANt#qCiTIycqHLi@TfyWdI?R8seP6I)U9xiHLB*&}E0NTcN^bD*0t(;IPUADX?gq)x5Lj zU7j0GzT=PH;XtLqSpkKIH5yaoVAm;<8x*#KtOv+3g{?@WD^Nvvc;EO~o_WPP5X*rB2mLJvIUql7?jwT3%8<7f)M%Nr9aRLU$rY7(_j{xw}l;!K!P)bp))v!k5yb8)_R4>6U ztRf3riXkPI-p(2y`N5A+69MxIzSZyW+FF}G?sRx*U|BFR*4NCPdVoXe0 zGyH)?4f@!mi$-3*jc^E>c!{qi!F98yw1%RUu5IP4f4W}YE5PZ znHA{P1T!a3VN8r2ZgZ%vIdgc7qO*!DVmzgg%ER+CT5F_M2q_WDLn(Q{1MpqI)X_70 zUbD5fun(5JKXA|X0JJw2_q^s{0^oatLRhpbXQ-W%?9N!5{yf8r7s$N|_0wlL`Kh1e ztsBcE-Rp!C0Zzc!kg-j zHD#k*-TDmsT~-zsk7>B@QPKk+cu)nOP?%hu7u*Rc(S_RPrt2`~;R-N?y`JDr=1dL8X9G0rHcu?|;Q zFkn*!sYT`jm6sVAs|-R*oVFORk8}bGfm8w~HBM?G(dR_RwWaHG)XWyZ0~fK89$EG8sU{HnNp2jo*p%~ z+Ix7*_Pv20M%2cp=ouMArG2#M`-^+_c53hOqP3=v?2{!2__MfEH7|EqMhH@+ ziPu-S{FUF}?Js_wH-GcjiF-p%e&$o8PNA)bGY-ERQEk=`613-yzE5I}q1Wv(7z{~9 zih*gIA}M#QRyqnfY%S$U1gFab4VEM*P@?Ju{UghYi z6Rf=PJZ}3YmOjp8DCdD0NePdni%W*TGQd&wF`Ni+(ns#jtd~aP3WF^SS}VrKn%p}7 z8dqL^fm%J_=$WHrUOD>ZNrlD{sD$`iuVDHqMIum%$3$$Y|L#{gI#%N|KlP(*cKQe< zNveuL;6dThw~CK_{2A&;$EoK&oIi)O8SZdEM|lv-?Q@BskzPF1uHa)jb zmK@;EL*Q=H=gK?D)r|9afkRh(nqy6d@ck_;ir@j#p`N4Dfhg^y7wLP~0tDveqlDFuVxfa?p3r2Uji z3hS4yktT+qR$=DOcp6(bB*oIWoT9jyb4Ns2%8~0YjpqB z@9~Sj@DKR(k9-8rT0XoOa&}cRVL(hb`0UUB6kV5~*Ls*QeT&Mc&yq|8#8ML#Jt~78 z1YiS;lO>svlMWQ`$P?ZU0`BT~&^gFNA$L63f}-zmnZTjQ@&F@3iqNA_1-X)>sUX>Q zq#K5G-H>lf?9eY84lU)spN2|po{D*$BW8`UfkS4hOgO-8Dd1fj_P+Zcorj=wu7DG= z9KoX;@v~0BsOGN_SkXu1Yjn@Q$YARlH9KVK&DVMR+2>eazC~_xJgqU-QCNf48m|)2 z?RRK2svJ8ui#2_UB1T9LgwIC1LxRHiKK(&L9;bLZz)6AjLzL%@lrO&*Y=`#;TGNO3 zbbNPnWuGkh{^Oo40ra-l_H_I~2H^XFvMXOYfpS2lf>s_{cEF{`qTsD>e}mI!PqL|? zo5d)t5eO=^3e~tq9%pzuz+xB<6Vf!MTCI}jIZ{dngCSCCgeSq3bL-Yxv>rKXR}%IJ zB#l}PV3!etUZ3r(RmG}evDr<|boX>mYZh4}%Ua^G zWCVeg#7bbl3X(Shf&}o3e1LqGya?bR4q!NN1lWo!#gazq(P&1~v-RF=Hn(D}r_O$! zRQ*ISk6EbZXeDU+xVV_l+ zQkE5VUZZS=!VxzMHvYx$P#?~*_l_y=9g+QDA9eqXa|j6P2VT$32j+uu>P zcF2!xL1OLY5G2SIxJB!Bs2hoj3Z%ye(6VB68^$BW!AQVdQI8cWr0w`bfz%Bmv521K z>XmJDZ;Tn9LRaC{jB5D-$?zA6(%>G1GPQ{DJX7H@?>y0xF(3VjdLp-h7>tJGYT_iT153q6!U0ScF#8u_iT^&tHEIlP9=phS3fg z6fRh9-8-aAhL9IHspw0~V!Wj2J2KlrDBY3(6SMx`a)D0*gG-Np*c%_+dn)&cr?LPz zJ9vE3#?$!bepc~O&Xxca5e5T7YVeCCGHCL=WLi6J{P0J-_|i2F@84#3YllTuf{bi# zZE|q;0OuT1X>?+l&gX1wZXmQGwT37a`-k`0-rgcj6MU%K*}L;CVQn2qq@qMCK`+nn zO`z6-{ksRq!m_t}ndRXrIyK~12V8n~lX&Yc_kQpyFa7H0shlOKh&7T}RVb0PJ^(QQ z2D`C^Kkzu=0NuJ4TFYXwBu!J&ykLB~z*)i8^<5Ttmh%N-5m72bbrYO-td!++Bcr;q z&G0LGY&8LW=CNi*=NZEq7gJsLDp3S^AT z=M%acTW#2pYPbCm!p}$b@SgyNALFxre7yfu?h#LC0q`+M8^cRa-<$hc#iJi%0#Gp` zLPX~S#HA~U>WribRLz1c>w$^fd+QyHQp}P$DsN9jL_yK%u$nFLz9GvJy!T9}GkU!) z5J^+Z-ri-#;}Ib^vOH*?+|lO zcWcPt$}Z)5r+o0;KjP|_e-kGLxS&u3ln97u5Jn@M!EWwx>O6^#5F%P@ymMrEMz7Oj zI-4PDhuPae<`z+V^rA%DgrX=|MMq;bjYvqPLa#iDGnBEy8%OfXFTt00$=-Sy{`4-* z|M?y2|NAx4-5wMLX&Gsb$4rxw;s5w+xUX*E(RjYfQjo6|YVDxumx;-$?2BA7K9POOy_ zAFl(@-aZdYQ5hp5dPHmpvLX68Za%`D9OGwGI&sC~;0Et}|2vG2r?|32=>)&>Xf(^v zmPop(F&iB&@9vRxbHIal7$NY^Q!U~BJ9k*bF5RtXh-!#;mb^&X*kCPjbG9@57x-E5XtEltMRUlcL-Op) z9Nv1Dfhv*8G0ZdUAZN8SjE^SB$%0GZ#$~**2w4+cK*=`ZHOuoh(zvNnDD1G05R!X0 z@3A|4mNc~p6RA|7)B^22TVmpoIYFL` zh<%CtrI#rF{uf#72^uvcaUDcynEDc>CiG$;lpseQkqA(0xngL;i=vEe7?A_fL_{sn zwIuik?F6h0&39|$w<7KhiQUVQzp{xcYQ%KJ3maWFjp5$?6KdI|@fs;}WMddq6_FJ3 zgvO2_ouM;}mM_q0JcZ6#jhCFA-e<72@reM%Ksvw7!p}JjJn+|#2;qs;sB+3;|9#^8 zh=h`QcEa7a-s1lIZ_=!mD4(OeLm=RD*wBJ zr?LPTKPGFl{}i@%KGTTu+)@ot2pmz(h|#hA{Fk`hex zNTwM{Ve!I4Ch2Sx%tm9GgWdXG_45rtK}>)SfIYsO!3w;>mR{I|gJBC^$G+{_C$&^q-@%`xP1$Fi~TI zpf(a^6`APL?Oh?xZ-G?=?@+>n5xBM5Y!oM4D>Aj37YOU`Vp&`=Xng#Ckfa=~Y zl%A2K6(?`M!NF@kWHCA;`c{$QeMN`@qZKiP4H{>pZdwoE@An zIT*2&nx*cN6$82(dn{FfwL`2;F-Bm7L@7(aVX-VHQIDAJ~#vky`ASswzu)iDN%rr8sQCnzS(ZMS~8K)6+9LgAQApL&j%EsKcDz&Mt%PZI+9QJFoo_FMPc~6_=@HhExI_ zB~cj=UF z{nnOwK4sX8ytq^F?u`=`%N@MleD? zz)|!vD!1a~}-lr7AYl3k`iNJbUI>lV-uwWN-3JA0nR%BtqD;$ zw+j|+08AtjLrrgxvno$W62a_OEYGslf|u6Upa}oxI2H_9ZGA38}<24&x$L z2)tS+;L&bqLP%s3cp{Ci+sp%0TgbE~zGw$QBnTl}B>@qSWI3zx%*dG_7X^x!(4Vu! ze}Ba6ofE`%APgfL!-SAHd{)C!a(c_r8)vLeBD%_vGDFT3vJnX7KrabOA*DeSn~1j# z2$xdWj@YW9ssjT&fA8fjK6vAZo8vKy?d#~RmyzN!nHhr7cok5p!DN=ic4>TxX%+)-hS`!{cqNP`jyP1Qi~Xx-jJQqUR_34vCU#eB+*cV}%jgfxiIAVNSZFgn2zD5FC3 zH|bn{7Dtbm4oH(>>riPN7?2iJqA|uIr9!FJ-y(*Vl=&e8h70^m_&A)eaycW-yH8*> zpB|pN0-z~ZxaRRP0D2ocPiQq4`0LU7s-OQ>V2~n52~7;1-B-TE``_8c&+ZVN!}}Fc zw&6Y^2#Q{h5F$tS57^qigwz_7rbID8OU+`j!iUxsu-EG|pD*b2i}ePf+jhUJ+6;m9 z8qN`+9T7x{_nyJ9%jxNqUa!l+y#w-ohDjAksyVrPhi8YI1SPq8{W|ZxbBlwwzQd(g zev=sU)!6TvvQ6oeH(XX2-0w>#UMiT=n3LFBjBrz^=u12mJI-w#RN8bFyKW3L3T>App zf7%egX^?;3M}D`DM^N|2fWv!5Kgp<_Cv6gh*HBl8APCAK64y4>gF=cxRePjNF|SW> zI~#aA!B#185z*y{7hmY(k2F6jGdlSz^y(LIK1a!tn4LhYa=IR~_kk|BV$3adOGPe3wl!07==Z<}QE62fjG z!~m^2Xkk#gRYOP>F-oJQZe^=VBBX48oDkOq@C808bcS1x{hH-ubWs3&*0GqJKK5%m zgUu(fk_-G~h_$v{0SO3!kPx#DyD$7A_x|z-89mNd=%hWx`SmF%FAA3P1(VYegN+T0 zG1xRE)Phx6kt8|Zdzz*u5}1q^^m<*CmN?fSrD|Kl;=`JRmKG3DN+XcyRFmg5i@9Sk z=y7!aly0xXFiG*N6{j~pVDs7MC^k0O+8Q%?<290e$j0+uBapWaa!8^o=v=+d>F6FZ zy7t38IAV0Im9e(ewIj+_niv|7m*Apa^9lkc0-{00h*?YXqHN7fkf1J(GXQlNCHY(WNDCI<7L}bQB9AqED>*kcz%cok|-KNxkTMR<%QinI!VT; zc^$HXmELZh^dtl&kxF1xB*`(@ci)Hkgftaw3^Z{(;nu5fbN`*2EGKhDtBN`}VqH^cO~2@)Bq$|miGpo$;k|#* zdC)ecX==0pBiF=28EK@VR9#~CbLdOgAk9EpWYVWddq^cQ>#l;(0);*$gd&ItF`#wM zr7wPs;~##PYIeY4v0$USLESi%XxZ8}wd`Kr<^HX^5JwCzZ6TFv+rqI;29z=qNhnt( zr?Yu=N{XXKYSntL5PuluSZ#qP{Oj9%s4$BqZ3WuD_9&I zWBPqezr)_uZSH>W2KT@94f2fv$;QhBCy7$xy(PW;9PS6Np?rf93Sx~?4s8O<*#c=( z7NNuohYJe3=9nVIy8v1eqa#L;L}IKVcpNL-=sssRen>sO z$L6IW`F5XXe8%lR{!89@?R!KA^ZAP9sw4zYuiK^9DM%7c6uz~qioTVN5<#>vy+Q_J zlr+xMxJa648dtXw$y(yjB>hXo&8t-TF50A|nI&q2Pzk~Yqyj4yD237~%2>3qXlsy4 zW2{B4y#V}$7r-Zm&hXM>zh*Ic`eK2fx&q*1bpSrb&2WLA1?K@kVx1+wKHUU}vIZ~d zT)ximrLQsi=6|4Cu5fjQRvAPGQW1y%*Inr_YVotqhx|onsQZ>W&#mCskLlu z3>c3m?C&43y}e0Ovp)T|Q)JeR@F?Wkwii&bl@SUUcsIC}3k&A4GpXISCTv7)XGx84i%pRZ6`?L3-vg!_6<`lSy3trGu!iN6&PQ-x?0 zYMBw8B1TP&Zas>K5G(}I7AmH~L_rw@>U0XvObL30j00F{lq%uu2s#rsh8@NxN68n^ zs)vdiujgo4wk>m;p>s=!f#_C6VzlA$HK*pM)quF@w z5|jNy?tJ^NIJtS3(cv-GY>BVi{D#6NqNc-I zX_^2k>)@)I%BEzSmq`a#C~bi@nvjAvAQKSEgOLcU!5XwNt?$24Xl>9YK^Q~Snz$|i z)LOQBflmf`cgS*f_ESIq;~XwO>v-x4fZ6!*sg%|k*9t@|@uETr zi;^9l|KDI%T+((!_{Xf)Lt|!tSt3RW9(gYabJiZnwkP*^DgjuG_Q{ zr371BTQp6>$;k;@mo`vJAkK%Y=LvA zm8M*-*#E(gxTX{Kwl1?8FL9K374fnqo(W}I3trhq#0D>MZb1xSiP-2c(NWIN813(~ zfBQa%x9?IP9Wo3x8$zR_#Ys!KY5)y&m)Xq))h$Oi4~U^8jsA(>{HJxj>k)ys=`Rfj3G-5-EKjQzLf{AC54gL8XY~jZ`;$qi-F)8eACb= zI)J2(FrSy${wC?p6-56MwMghD5}}urHY3jrUOTLjpf%XGOM^8CYY=ArB{kL>q>?|A z+0h05W)%I6$0`6m&f)U2j;F2wc-%LsxS0QcN)T%wmUS+m0D(uvfS2HFgC1Vt%GZ8{ z559R1KOK{21*V&~ZTl$Oz#8G`54)Tko+5>T7zx3lRAfG%)9ZHdKD6$8K9FT8F%H&} zz}8VPew1B(t|MoiG#CO}X|}dDI669`m-m>Bmz*ArDDulF9he>7r#Bpsbqj`9cR0O& z#L?StAhus*xc3sI?MAtM`FYM>`U*$y{slXmJ%R{iS`(DTRe{a4!|G_pTmSE$GT6Ps z@bc#{-7X}OXdxKYS{H{lsxSITa1mEK%IS<*Su#65;_PUjYBt6#<_HH`D*9S6^p=h> zBt?hA`3fZh(OGO%B&!Zb-y5TMEb5sRNoFCJG({lJ0%Ed6^}s%x!mlL6Q;-KW;c!Jf z@~GMpYK3b8!c_zjhzMfpkp-}=h+RP(C_+~tQc0ts2|J9>E)&KtVe)5~k8ASX703#u zdT6-;Vt_*;D3L&v3Y}?WfNFX`Il9aA)(wm+$%dBX`Ax!n#L>HNFuQS|@r^^KGtaaP zoQ)S`R@2K0q=q6*=oKlxsSpaHZwaSTwn{%KBq2mZXs=`A9F1#eh!nj}t27V_jG@!* z!PYKvu!XlhjL-ykMygUwnnJ8elA@InS_M`kj7C}epbH?CLfJM4Ks>_!ix)M(CyLH+ zi{raDe(L8h#-k^=nokE$VFB=XZ_>wMgI?g1gAgrST>w!Sbkx+M6{{f(JHPZR+nF!p3k&XS;)GDh_YmVDIHu$aZ!}#|uPVG5&+! zNB@&ZcKM40T~H~@^?&qV@mDv0h&w$c-|bT+8I4?^j3oM!BnFH&ly~3f;NCsZ3Wuk3 zCC&#z6a??_zQHxFrBp;g;~MY|1xV3aEEh_XqzaK3j5Tyr+r~beozX;3FoKvUn#$nV zra7Im@h#0DLf;1g#XVsoK+a zIFEB~?-hXn4;q6+(UgwHIkYtx)w2Jq5E0gr53f*cZj)sS)B-3Wrrg^NLKtx3p7UMl$dO}dpz05OT`#SIZyZ@a&k-B!|SpuPL!3ODx2>QbwC*_FN^38)3 zbbDROs>CK{t?`dI-(ZZwd*2@Ng-6DA`&aQ{0dPL|ZG&-SyLsVBi-fXvNF=Le$!ywS zx&fPjo1HN`I$-nJ7wBwm;g645niEd`Z{LExjnd5Lq1Mg*ewcps2jBVt?JNTsk@ijlJQ zJ222hPaPwR*$QnE`kNUiXJ^c-8gDI&T9EsU_urcEN>`D1huTbuiAJ~uK?FoDQK{9YgH6dAT*#PK?PVe$eF;^t;ABAjM1XU?a?;N#S6Ipi!|C`a)}X| z+1VU3%n^x47E4U-ka0ylI%D*~4VL4(4119)T|*rl4LV!xq#-fbI*rX)@T7yjz zgte`l@nZ9TV(1PYkNdTlUUUFH^Qf!kV?DofQ2>0p_|WH@$47w{2@*+&8mW6+{=(O| z^PO){p6pYfoblYXU7$e<5U~ySQ3gz&(9COM6vXK1bPG;TM^trvr>3O5uFd z#=^E||A(i4&g+HPDiuORh=31}rU}NDcwZx>V*lQK(vC%KrDy?*qeHsA4U(-c_2C_| zR5Cuf$?ZS-w_N%9@8I<|kZ|Q|U+3QI-y)qJQ|%v-CmCAR1m7wnVrWTyQ7=!>7+cgWnE?lH|;D8sUrfFIWWTd1hatwmnH;AZEO+#WGPI+vz!@<3j zq&MMO;z&e=*@*|J z?u?&fWWLIB>z4>=N~T97YJ!#$m09GZq_8`P2~6)Cz~T^5&FD%=VH@hvl*3zRxaA!1 z%*S)a$79Ch6=f9}ogLv;k$$I(j*%E0z2Sf&O9;WYHqfGN`D?8Rv6T_ZwUQ*ph*F9O zES5`TRHU7PC_P?9Op$Ws@)mhNM`($PQz)k>75@+8BgVm?S}3)5=8o_;JS<_{qq7kI(EP)r09KDz0N6Bt zLMyqzPXoa^79hr!L5{>>+PzmQ2o=Ki_{u;1ANbDy^}nIYLq-St40d{Gnc*spKoO*) zH{9fOai17KN`?0|yKx2dod~ta9x#CuQp=FCd0U zjDcRS!*X$i(T3@K!s*d5o$elu1zoNGT0>*K|Pf<~(Llq-=~o3NZOh^`?xC>fybChxv;i@G}FtN#FEToH$gXj%(pAvFTM zcBpF*N@A2Gy3mR`C5Rvp3xgj=;y8kbXj0Cm3HQdE%>2vD>=!6I*N{3VWlB%X7}|tH zdqOj(KD)=^_&pLG$z??~J;1GIjF$nTM+HxAQv9mqgAeXfJE$ADyMIbkH*`A%MMpzu zNb;0kx3iX!w$~vN9=HdJwaxCi%+9$6V>HfrR*MxvDUu?^-$Ckv>3Bju>?4u_B_v8|bdt35e`^t1gM2vmzu5er z9P&>8v0qcIE((CpEMo9K`AHwaMFH?BAU>kIKX0=}u}1?)^^r;kI@#JBvh-`2~voNl#E^7KHARs#Ih$}c>ahFlC7QZqetJSV*`|MKm&wt6wASo& zBzIo@eX`z=!7u+8NMG>Gmw%1<>#sBU(O+OgT+0&WgMaIMQwr-rNj%R_5+KDo>_))3 z`K^rd+{y?q)+g}?#nt+S>z^scNFb1=mLktsEN5tC2(hMY1j=r5|K1Y5G3Ui!C`fiI zWG}X4zBIH(JH``b)}E$AKr|q{Cawbh4CJgKHU?E+Vm3D1Iw`2)9;@t2gzQULnNr9V z{p=7Kr`YJws|BvEF~*^q5>0?+#b`A~>j1(dP#9x~&T{YeDQEZ2XoO<4m@_&ZVRXu{ zmxFg$73p+3WQ9eE&~{QDysfcygN|+CDW$}__7Yi>vRbWh&XFWJDlr5b*x1=%YiA3L zq!tlEgAod1WPG;ZX#bd|43x%FJo7AZc%3r6O0Yw69YF_{vl&Hy6Pss1XixphkfbS| zi%tLMg|yRq?AMgbIlZT-Y5Y_b0N%UDeoc}UPhce%_(^#1A@`5~uy(eK?MXNWL|pRb zpZo`oZokImmtW+{7q4^t#ujqiu$)vBxRS6vRq+I zr){l=^Nk=rGG`S(zCPNt060IGd7SqQ23@N1gd$IwP3J6Tb5_%wBsFxbW_;%kyRW=L z-s|G$3v4H0u$XY;5C08UmnGMJ{lBE1d#?S)Z}HyUw{d6H!zFx#hxcZs5(Pbnm7wor<(E2l=n|_%4dI_ba(|@TmjWZF^Bp4Fg~K_ zDng^$w7w=HRE>;H8}1|pnUDmT(1ccVKRcUqw0}yyij>}RaC9FZJbBh@Q}w(fwU%MG zKu8F##u3_%P7Leo8Xnl|$GA38UOPjsRwYg2NYg}T>!SbwAOJ~3K~w~5ESo!<6gxdk z-tq*TZ^tgxvSc=yvzRTJmky7?WtMDr2fCMV$p*q~Vv_+<%*l&@ua?xa8AZ21+60tF z+k`0O+MZf`=$*U3lR;c5dCak3k9# zlvJZz$kQ9#`^KBhZ$8UQ|M2U4>;L#y40Fq3vZA+@;EAoZFOjU%!Auvpy1{#o6av?j z^t%N|M@Qs&-rBmJClWqb%!jwokIr7(@x4#S&7z?>14vjpo_IFDb7#k zOh+dScdjy8+#+NSsiq9wiueBAza~vPZ2iV>A*%r*q#wRK>y~r~;jg`X4^@kg7A_wq zt^Fj#2b*2QT1|g2K*TwV#R6+UNlnvqsbtD>o-=+m(CIraU2|Odd?4>ikb!BWCA0xj zr}$+;J+>UayQk(+e4`~zInA;F}u5@@eN8T>c-<&HLffX0Zd*{M+k{z zdv6z?Sz>B&S`v*%s*2RK+=3)YC|7e<%Q;)at9Tz#iN%Mt>)^%a|8s+}2~A!7)Xy)M z^C!5PpFf_m0^spG0QRB-@TnlKjdvdX0FF@-UCX+6G2pG^%JX}?aW|lwInAASxmVYG z`4|5l_uhD$<+MbnW72*H?_*1Vvzja~7?-Cgt%$)Rg(UjG#>NI`r>FFXL$pzkoCH6z zajs)u;m7}qwRA87d7d$!Es+Xlvl+|Df~?;~XoVJr#oc4JpZ@|upODImx|b5}AFwmn z;hjJFJ?eUfT-1ywr*t0ah&&ttv=7M$UaZ{-A1>qJ_8(drD&=VNH%cQx&?9C((9==Z(c(O=4eVWHekF8c01;A$( zA7=z$)9eYXUfhQ1TAmG<0<29-7 z!H2PUaB@6%F4RWQ?Was9OA?!KaB@Pv)hD--XeIT0N;N(v$t2~hCM!}Vi6vB1vRHER z$Nv@~1Szg1@~yAQxeooowOOy{Lz_MytxXBM?SnY=+DO zrmgIt|)LKK) z%a8(^rlBfJMAT@}hA`E>9lvC~9vhc;NxOzTl~nbFw9XhEPbe3L=IV3M@8YE-&Dzi_ zr43psma{1~vFJ3#g+LI0T`6~gCxxu&Gkcr@;GzTY*~P~h0Vr*sz)CLglkg#;(}RQ0 z`3CjSgeTqDW$=YBQ~uTalrEAmYDX){cxclT4Y?a@Y<7PAj=XKi<*dMSyqfkV~RoX zKxTG&|32M8pIXM&Ax|4bL%WIi5)nb69+}#IECdg) z@Wb}^L)~L&GZqviT9ahv!8k&M^}ptQduo;%=WBuor4!DkGtQ=0b>%X(lMP(2_j;&Buy-X zd`LSaY0aa&k4$EB@;qtjm}@ztEi(45JWDbd5))0JVpYwsLbIGKI62rS-+rFyd_gjd zWLbg`0-L6-k&xCz?U_cPdEe9A3faV{@dOAH^F;qV|LL5H@KkU}72E2GrP5~AX4GGkFz zNNLvJPoPtc6{5ZNA>!7CO3`_Q)(nOlEayv(_K%sJE$L<*I!Ve~KX`-TrA@M|pj+g~fgYSpF$7DWe@D4dAoS
Hd!wxNKGSaLa4B^P3t>4F1fRRO1gQC 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 HM*jZ;<;=S& From a1173b3ab4b9ee3ef38914a94b402b90ff1dc178 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 13 Jan 2025 16:44:46 +0100 Subject: [PATCH 03/10] chore: add reuse config & licensing --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 ++++ .github/ISSUE_TEMPLATE/feature_request.yml | 4 ++++ .github/dependabot.yml | 4 ++++ .github/pull_request_template.md | 6 ++++++ .github/workflows/ci.yml | 4 ++++ .github/workflows/e2e_checks.yml | 4 ++++ .github/workflows/end2end.yml | 4 ++++ .github/workflows/pre-commit.yml | 4 ++++ .github/workflows/prune.yml | 4 ++++ .github/workflows/release.yml | 4 ++++ .github/workflows/test_sast.yml | 4 ++++ .github/workflows/test_unit.yml | 4 ++++ .gitignore | 4 ++++ .golangci.yaml | 4 ++++ .goreleaser-ci.yaml | 4 ++++ .goreleaser.yaml | 4 ++++ .pre-commit-config.yaml | 4 ++++ CODEOWNERS | 4 ++++ CONTRIBUTING.md | 6 ++++++ Dockerfile | 4 ++++ LICENSES/Apache-2.0.txt | 2 +- NOTICE | 4 +++- README.md | 6 ++++++ REUSE.toml | 18 +++++++++++++++++ chart/Chart.yaml | 4 ++++ chart/REUSE.toml | 12 +++++++++++ chart/values.yaml | 4 ++++ cmd/flag.go | 18 ++--------------- cmd/root.go | 18 ++--------------- cmd/run.go | 18 ++--------------- docs/sparrow.md | 1 + docs/sparrow_completion.md | 6 ++++++ docs/sparrow_completion_bash.md | 6 ++++++ docs/sparrow_completion_fish.md | 6 ++++++ docs/sparrow_completion_powershell.md | 6 ++++++ docs/sparrow_completion_zsh.md | 6 ++++++ docs/sparrow_run.md | 1 + e2e/traceroute/lab.conf.license | 3 +++ e2e/traceroute/pc1.startup.license | 3 +++ e2e/traceroute/pc2.startup.license | 3 +++ e2e/traceroute/r1.startup.license | 3 +++ e2e/traceroute/r2.startup.license | 3 +++ e2e/traceroute/shared/config.yaml | 4 ++++ e2e/traceroute/shared/get_api.sh | 4 ++++ e2e/traceroute/test.sh | 4 ++++ examples/dashboard.json.license | 3 +++ examples/dashboard.png.license | 3 +++ go.mod | 4 ++++ internal/helper/retry.go | 18 ++--------------- internal/helper/retry_test.go | 18 ++--------------- internal/logger/logger.go | 18 ++--------------- internal/logger/logger_test.go | 18 ++--------------- main.go | 18 ++--------------- pkg/api/api.go | 18 ++--------------- pkg/api/api_test.go | 18 ++--------------- pkg/api/errors.go | 18 ++--------------- pkg/checks/base.go | 18 ++--------------- pkg/checks/dns/config.go | 18 ++--------------- pkg/checks/dns/config_test.go | 18 ++--------------- pkg/checks/dns/dns.go | 18 ++--------------- pkg/checks/dns/dns_test.go | 18 ++--------------- pkg/checks/dns/metrics.go | 18 ++--------------- pkg/checks/dns/metrics_test.go | 18 ++--------------- pkg/checks/dns/resolver.go | 18 ++--------------- pkg/checks/errors.go | 18 ++--------------- pkg/checks/health/config.go | 18 ++--------------- pkg/checks/health/config_test.go | 18 ++--------------- pkg/checks/health/health.go | 18 ++--------------- pkg/checks/health/health_test.go | 18 ++--------------- pkg/checks/health/metrics.go | 18 ++--------------- pkg/checks/latency/config.go | 18 ++--------------- pkg/checks/latency/config_test.go | 18 ++--------------- pkg/checks/latency/latency.go | 18 ++--------------- pkg/checks/latency/latency_test.go | 18 ++--------------- pkg/checks/latency/metrics.go | 18 ++--------------- pkg/checks/oapi.go | 18 ++--------------- pkg/checks/oapi_test.go | 18 ++--------------- pkg/checks/runtime/checks.go | 18 ++--------------- pkg/checks/runtime/config.go | 18 ++--------------- pkg/checks/traceroute/check.go | 18 ++--------------- pkg/checks/traceroute/check_test.go | 18 ++--------------- pkg/checks/traceroute/config.go | 18 ++--------------- pkg/checks/traceroute/metrics.go | 18 ++--------------- pkg/checks/traceroute/test-lab/.gitignore | 4 ++++ pkg/checks/traceroute/test-lab/how-to-test.md | 6 ++++++ .../traceroute/test-lab/lab.conf.license | 3 +++ .../traceroute/test-lab/pc1.startup.license | 3 +++ .../traceroute/test-lab/pc2.startup.license | 3 +++ .../traceroute/test-lab/r1.startup.license | 3 +++ .../traceroute/test-lab/r2.startup.license | 3 +++ pkg/checks/traceroute/traceroute.go | 18 ++--------------- pkg/checks/traceroute/traceroute_test.go | 18 ++--------------- pkg/config/config.go | 18 ++--------------- pkg/config/errors.go | 18 ++--------------- pkg/config/file.go | 18 ++--------------- pkg/config/file_test.go | 18 ++--------------- pkg/config/http.go | 18 ++--------------- pkg/config/http_test.go | 18 ++--------------- pkg/config/loader.go | 18 ++--------------- pkg/config/test/data/config.yaml | 6 +++++- pkg/config/test/filesystem.go | 18 ++--------------- pkg/config/validate.go | 18 ++--------------- pkg/config/validate_test.go | 18 ++--------------- pkg/db/db.go | 18 ++--------------- pkg/db/db_test.go | 18 ++--------------- pkg/factory/factory.go | 18 ++--------------- pkg/factory/factory_test.go | 18 ++--------------- pkg/sparrow/controller.go | 18 ++--------------- pkg/sparrow/controller_errors.go | 18 ++--------------- pkg/sparrow/controller_test.go | 18 ++--------------- pkg/sparrow/handlers.go | 18 ++--------------- pkg/sparrow/handlers_test.go | 18 ++--------------- pkg/sparrow/metrics/config.go | 18 ++--------------- pkg/sparrow/metrics/exporter.go | 18 ++--------------- pkg/sparrow/metrics/metrics.go | 18 ++--------------- pkg/sparrow/metrics/metrics_test.go | 18 ++--------------- pkg/sparrow/run.go | 18 ++--------------- pkg/sparrow/run_errors.go | 18 ++--------------- pkg/sparrow/run_test.go | 18 ++--------------- pkg/sparrow/targets/errors.go | 18 ++--------------- pkg/sparrow/targets/interactor/config.go | 18 ++--------------- pkg/sparrow/targets/manager.go | 18 ++--------------- pkg/sparrow/targets/manager_test.go | 18 ++--------------- pkg/sparrow/targets/remote/gitlab/gitlab.go | 18 ++--------------- .../targets/remote/gitlab/gitlab_test.go | 18 ++--------------- .../targets/remote/gitlab/pagination.go | 18 ++--------------- .../targets/remote/gitlab/pagination_test.go | 18 ++--------------- pkg/sparrow/targets/remote/remote.go | 18 ++--------------- pkg/sparrow/targets/remote/test/remotemock.go | 18 ++--------------- pkg/sparrow/targets/targetmanager.go | 18 ++--------------- pkg/sparrow/targets/targetmanager_test.go | 18 ++--------------- pkg/sparrow/targets/test/managermock.go | 18 ++--------------- scripts/debug-elevated.sh | 4 ++++ scripts/gen-docs/gen-docs.go | 20 +++---------------- scripts/run_e2e_tests.sh | 4 ++++ 135 files changed, 400 insertions(+), 1284 deletions(-) create mode 100644 REUSE.toml create mode 100644 chart/REUSE.toml create mode 100644 e2e/traceroute/lab.conf.license create mode 100644 e2e/traceroute/pc1.startup.license create mode 100644 e2e/traceroute/pc2.startup.license create mode 100644 e2e/traceroute/r1.startup.license create mode 100644 e2e/traceroute/r2.startup.license create mode 100644 examples/dashboard.json.license create mode 100644 examples/dashboard.png.license create mode 100644 pkg/checks/traceroute/test-lab/lab.conf.license create mode 100644 pkg/checks/traceroute/test-lab/pc1.startup.license create mode 100644 pkg/checks/traceroute/test-lab/pc2.startup.license create mode 100644 pkg/checks/traceroute/test-lab/r1.startup.license create mode 100644 pkg/checks/traceroute/test-lab/r2.startup.license diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 38d59e11..8bb16dfe 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: CC-BY-4.0 + name: Bug report description: File a bug/issue title: "Bug: " diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index a1a8d654..3c49b4ae 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: CC-BY-4.0 + name: Feature request description: Suggest an idea for this project title: "Feature: " diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3dd84da7..8c743cc3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: CC-BY-4.0 + version: 2 updates: - package-ecosystem: "gomod" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index cf287ef2..fc07dd1b 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,3 +1,9 @@ + + ## Motivation diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 740a5b56..0daaaa89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: Continuous Integration on: diff --git a/.github/workflows/e2e_checks.yml b/.github/workflows/e2e_checks.yml index d26f3b56..69c51384 100644 --- a/.github/workflows/e2e_checks.yml +++ b/.github/workflows/e2e_checks.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: E2E - Test checks on: diff --git a/.github/workflows/end2end.yml b/.github/workflows/end2end.yml index 38ecbf12..063de2d7 100644 --- a/.github/workflows/end2end.yml +++ b/.github/workflows/end2end.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # This workflow installs 1 instance of sparrow and # verify the API output diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index bc19f374..b8ae74d7 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: pre-commit.ci on: [pull_request] diff --git a/.github/workflows/prune.yml b/.github/workflows/prune.yml index 98eb770c..cceb945d 100644 --- a/.github/workflows/prune.yml +++ b/.github/workflows/prune.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: Prune GHCR on: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ca399963..24796517 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: Release on: diff --git a/.github/workflows/test_sast.yml b/.github/workflows/test_sast.yml index 811828f3..f6fdc1d2 100644 --- a/.github/workflows/test_sast.yml +++ b/.github/workflows/test_sast.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: Test - SAST on: diff --git a/.github/workflows/test_unit.yml b/.github/workflows/test_unit.yml index 5a77885f..2add418c 100644 --- a/.github/workflows/test_unit.yml +++ b/.github/workflows/test_unit.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + name: Test - Unit on: diff --git a/.gitignore b/.gitignore index 22485668..553dcc89 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # diff --git a/.golangci.yaml b/.golangci.yaml index 44d1ae2b..e3c5efda 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # yaml-language-server: $schema=https://golangci-lint.run/jsonschema/golangci.jsonschema.json linters-settings: depguard: diff --git a/.goreleaser-ci.yaml b/.goreleaser-ci.yaml index bda07c53..a6e0c9d0 100644 --- a/.goreleaser-ci.yaml +++ b/.goreleaser-ci.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + project_name: sparrow snapshot: name_template: "commit-{{ .ShortCommit }}" diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 359b91fd..db46cbad 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + project_name: sparrow builds: - env: [CGO_ENABLED=0] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9f542987..551fc96c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + repos: - repo: local hooks: diff --git a/CODEOWNERS b/CODEOWNERS index 06f7c0a9..9b1a7b00 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1,5 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + * @y-eight @NiklasTreml @puffitos @lvlcn-t \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46a39665..f2dd6a36 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,9 @@ + + # Contributing ## Code of conduct diff --git a/Dockerfile b/Dockerfile index 4da0f3c7..a9438b98 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + FROM alpine:3.21 as prep RUN apk add --no-cache ca-certificates diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt index 40df35cb..111ebf8a 100644 --- a/LICENSES/Apache-2.0.txt +++ b/LICENSES/Apache-2.0.txt @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2025 Maximilian Schubert, Deutsche Telekom IT GmbH + Copyright 2025 Deutsche Telekom IT GmbH Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/NOTICE b/NOTICE index 1810455d..e0f69fad 100644 --- a/NOTICE +++ b/NOTICE @@ -1,4 +1,6 @@ -Copyright (c) 2024 Deutsche Telekom IT GmbH. +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +// +// SPDX-License-Identifier: Apache-2.0 This project is licensed under Apache License, Version 2.0; you may not use them except in compliance with the License. diff --git a/README.md b/README.md index 25b58d7a..368ecfd4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ + + # Sparrow - Infrastructure Monitoring diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..877420a7 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2024 Deutsche Telekom AG +# +# SPDX-License-Identifier: CC0-1.0 + +# See https://reuse.software/spec-3.2/#reusetoml for specification +version = 1 + +[[annotations]] +path = [ + ".idea/**", + ".vscode/**", + "**moq.go", + "docs/**", + "go.sum" +] +precedence = "aggregate" +SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" +SPDX-License-Identifier = "Apache-2.0" \ No newline at end of file diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 600ef2cb..1b5f9d98 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v2 name: sparrow description: A Helm chart to install Sparrow diff --git a/chart/REUSE.toml b/chart/REUSE.toml new file mode 100644 index 00000000..8e03efb9 --- /dev/null +++ b/chart/REUSE.toml @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2024 Deutsche Telekom AG +# +# SPDX-License-Identifier: CC0-1.0 + +# See https://reuse.software/spec-3.2/#reusetoml for specification +version = 1 + +[[annotations]] +path = ["templates/**", "README.md"] +precedence = "aggregate" +SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" +SPDX-License-Identifier = "Apache-2.0" \ No newline at end of file diff --git a/chart/values.yaml b/chart/values.yaml index 21bfa8cd..121d2706 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # Default values for sparrow. # This is a YAML-formatted file. # Declare variables to be passed into your templates. diff --git a/cmd/flag.go b/cmd/flag.go index 35da16b0..3c8b0771 100644 --- a/cmd/flag.go +++ b/cmd/flag.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package cmd diff --git a/cmd/root.go b/cmd/root.go index 61d35c54..492970b0 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package cmd diff --git a/cmd/run.go b/cmd/run.go index 1c1bffd0..03c3501c 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package cmd diff --git a/docs/sparrow.md b/docs/sparrow.md index 4c73c543..f5aa5769 100644 --- a/docs/sparrow.md +++ b/docs/sparrow.md @@ -18,3 +18,4 @@ The check results are exposed via an API. * [sparrow run](sparrow_run.md) - Run sparrow +###### Auto generated by spf13/cobra on 13-Jan-2025 diff --git a/docs/sparrow_completion.md b/docs/sparrow_completion.md index d9dc60fc..32c1405b 100644 --- a/docs/sparrow_completion.md +++ b/docs/sparrow_completion.md @@ -1,3 +1,9 @@ + + ## sparrow completion Generate the autocompletion script for the specified shell diff --git a/docs/sparrow_completion_bash.md b/docs/sparrow_completion_bash.md index 5902fce3..7618d6e2 100644 --- a/docs/sparrow_completion_bash.md +++ b/docs/sparrow_completion_bash.md @@ -1,3 +1,9 @@ + + ## sparrow completion bash Generate the autocompletion script for bash diff --git a/docs/sparrow_completion_fish.md b/docs/sparrow_completion_fish.md index 04ce0583..d42a7be8 100644 --- a/docs/sparrow_completion_fish.md +++ b/docs/sparrow_completion_fish.md @@ -1,3 +1,9 @@ + + ## sparrow completion fish Generate the autocompletion script for fish diff --git a/docs/sparrow_completion_powershell.md b/docs/sparrow_completion_powershell.md index 6eefddb4..d180ce03 100644 --- a/docs/sparrow_completion_powershell.md +++ b/docs/sparrow_completion_powershell.md @@ -1,3 +1,9 @@ + + ## sparrow completion powershell Generate the autocompletion script for powershell diff --git a/docs/sparrow_completion_zsh.md b/docs/sparrow_completion_zsh.md index 311b02c4..41702c49 100644 --- a/docs/sparrow_completion_zsh.md +++ b/docs/sparrow_completion_zsh.md @@ -1,3 +1,9 @@ + + ## sparrow completion zsh Generate the autocompletion script for zsh diff --git a/docs/sparrow_run.md b/docs/sparrow_run.md index ae454c0d..3752af28 100644 --- a/docs/sparrow_run.md +++ b/docs/sparrow_run.md @@ -36,3 +36,4 @@ sparrow run [flags] * [sparrow](sparrow.md) - Sparrow, the infrastructure monitoring agent +###### Auto generated by spf13/cobra on 13-Jan-2025 diff --git a/e2e/traceroute/lab.conf.license b/e2e/traceroute/lab.conf.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/e2e/traceroute/lab.conf.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/e2e/traceroute/pc1.startup.license b/e2e/traceroute/pc1.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/e2e/traceroute/pc1.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/e2e/traceroute/pc2.startup.license b/e2e/traceroute/pc2.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/e2e/traceroute/pc2.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/e2e/traceroute/r1.startup.license b/e2e/traceroute/r1.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/e2e/traceroute/r1.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/e2e/traceroute/r2.startup.license b/e2e/traceroute/r2.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/e2e/traceroute/r2.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/e2e/traceroute/shared/config.yaml b/e2e/traceroute/shared/config.yaml index 0d9d815b..2a617ad5 100644 --- a/e2e/traceroute/shared/config.yaml +++ b/e2e/traceroute/shared/config.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # DNS sparrow is exposed on name: sparrow.caas-t21.telekom.de diff --git a/e2e/traceroute/shared/get_api.sh b/e2e/traceroute/shared/get_api.sh index c1abf290..337867ce 100644 --- a/e2e/traceroute/shared/get_api.sh +++ b/e2e/traceroute/shared/get_api.sh @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + curl -s localhost:8080/v1/metrics/traceroute > /shared/api.json curl -s localhost:8080/metrics > /shared/prometheus.txt \ No newline at end of file diff --git a/e2e/traceroute/test.sh b/e2e/traceroute/test.sh index 59caf669..8f13278b 100755 --- a/e2e/traceroute/test.sh +++ b/e2e/traceroute/test.sh @@ -1,5 +1,9 @@ #!/bin/bash +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + EXIT_CODE=0 function cleanup() diff --git a/examples/dashboard.json.license b/examples/dashboard.json.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/examples/dashboard.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/examples/dashboard.png.license b/examples/dashboard.png.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/examples/dashboard.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/go.mod b/go.mod index f90b5fcc..b4dc2d86 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +// +// SPDX-License-Identifier: Apache-2.0 + module github.com/caas-team/sparrow go 1.23 diff --git a/internal/helper/retry.go b/internal/helper/retry.go index d1086716..e882aac1 100644 --- a/internal/helper/retry.go +++ b/internal/helper/retry.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package helper diff --git a/internal/helper/retry_test.go b/internal/helper/retry_test.go index 28230d6c..06890695 100644 --- a/internal/helper/retry_test.go +++ b/internal/helper/retry_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package helper diff --git a/internal/logger/logger.go b/internal/logger/logger.go index 2b306c56..31f82f00 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package logger diff --git a/internal/logger/logger_test.go b/internal/logger/logger_test.go index 6707f435..71d48ee5 100644 --- a/internal/logger/logger_test.go +++ b/internal/logger/logger_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package logger diff --git a/main.go b/main.go index ba7422e4..8bd51640 100644 --- a/main.go +++ b/main.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package main diff --git a/pkg/api/api.go b/pkg/api/api.go index ccaac8b0..d5e5b1b3 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package api diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index 1637e16e..8b997aaa 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package api diff --git a/pkg/api/errors.go b/pkg/api/errors.go index fe952687..df3ee0cf 100644 --- a/pkg/api/errors.go +++ b/pkg/api/errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package api diff --git a/pkg/checks/base.go b/pkg/checks/base.go index c9f45604..bfc37b47 100644 --- a/pkg/checks/base.go +++ b/pkg/checks/base.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package checks diff --git a/pkg/checks/dns/config.go b/pkg/checks/dns/config.go index 6fc97d31..de65e69e 100644 --- a/pkg/checks/dns/config.go +++ b/pkg/checks/dns/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/config_test.go b/pkg/checks/dns/config_test.go index 5cbc2767..4e4ac86f 100644 --- a/pkg/checks/dns/config_test.go +++ b/pkg/checks/dns/config_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/dns.go b/pkg/checks/dns/dns.go index ad33ba23..338fd54d 100644 --- a/pkg/checks/dns/dns.go +++ b/pkg/checks/dns/dns.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/dns_test.go b/pkg/checks/dns/dns_test.go index bcf7cc81..0ad0a21c 100644 --- a/pkg/checks/dns/dns_test.go +++ b/pkg/checks/dns/dns_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/metrics.go b/pkg/checks/dns/metrics.go index 1b5725e1..c7d45f25 100644 --- a/pkg/checks/dns/metrics.go +++ b/pkg/checks/dns/metrics.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/metrics_test.go b/pkg/checks/dns/metrics_test.go index e3930088..085e7d49 100644 --- a/pkg/checks/dns/metrics_test.go +++ b/pkg/checks/dns/metrics_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/dns/resolver.go b/pkg/checks/dns/resolver.go index 63cd1ea9..9ebcf1f3 100644 --- a/pkg/checks/dns/resolver.go +++ b/pkg/checks/dns/resolver.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package dns diff --git a/pkg/checks/errors.go b/pkg/checks/errors.go index 1ab7e17a..2335900c 100644 --- a/pkg/checks/errors.go +++ b/pkg/checks/errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package checks diff --git a/pkg/checks/health/config.go b/pkg/checks/health/config.go index d0053936..420cb1c9 100644 --- a/pkg/checks/health/config.go +++ b/pkg/checks/health/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package health diff --git a/pkg/checks/health/config_test.go b/pkg/checks/health/config_test.go index 2e7d1199..a8979159 100644 --- a/pkg/checks/health/config_test.go +++ b/pkg/checks/health/config_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package health diff --git a/pkg/checks/health/health.go b/pkg/checks/health/health.go index 08bcdc6a..5730551f 100644 --- a/pkg/checks/health/health.go +++ b/pkg/checks/health/health.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package health diff --git a/pkg/checks/health/health_test.go b/pkg/checks/health/health_test.go index 77c91c97..239379ae 100644 --- a/pkg/checks/health/health_test.go +++ b/pkg/checks/health/health_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package health diff --git a/pkg/checks/health/metrics.go b/pkg/checks/health/metrics.go index 6684d3d0..2d8eff54 100644 --- a/pkg/checks/health/metrics.go +++ b/pkg/checks/health/metrics.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package health diff --git a/pkg/checks/latency/config.go b/pkg/checks/latency/config.go index e0202154..0c01f6d2 100644 --- a/pkg/checks/latency/config.go +++ b/pkg/checks/latency/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package latency diff --git a/pkg/checks/latency/config_test.go b/pkg/checks/latency/config_test.go index 4deb128f..22c7b9fa 100644 --- a/pkg/checks/latency/config_test.go +++ b/pkg/checks/latency/config_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package latency diff --git a/pkg/checks/latency/latency.go b/pkg/checks/latency/latency.go index da21b435..5fd7ef87 100644 --- a/pkg/checks/latency/latency.go +++ b/pkg/checks/latency/latency.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package latency diff --git a/pkg/checks/latency/latency_test.go b/pkg/checks/latency/latency_test.go index 78a7a58c..a4647ae9 100644 --- a/pkg/checks/latency/latency_test.go +++ b/pkg/checks/latency/latency_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package latency diff --git a/pkg/checks/latency/metrics.go b/pkg/checks/latency/metrics.go index 8115e801..a744168f 100644 --- a/pkg/checks/latency/metrics.go +++ b/pkg/checks/latency/metrics.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package latency diff --git a/pkg/checks/oapi.go b/pkg/checks/oapi.go index 74bad943..e0c8b4b3 100644 --- a/pkg/checks/oapi.go +++ b/pkg/checks/oapi.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package checks diff --git a/pkg/checks/oapi_test.go b/pkg/checks/oapi_test.go index 3085f2ed..4f543a75 100644 --- a/pkg/checks/oapi_test.go +++ b/pkg/checks/oapi_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package checks diff --git a/pkg/checks/runtime/checks.go b/pkg/checks/runtime/checks.go index 8b432446..9997788f 100644 --- a/pkg/checks/runtime/checks.go +++ b/pkg/checks/runtime/checks.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package runtime diff --git a/pkg/checks/runtime/config.go b/pkg/checks/runtime/config.go index d922441f..99fbf624 100644 --- a/pkg/checks/runtime/config.go +++ b/pkg/checks/runtime/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package runtime diff --git a/pkg/checks/traceroute/check.go b/pkg/checks/traceroute/check.go index b6c00155..fa3ad4ad 100644 --- a/pkg/checks/traceroute/check.go +++ b/pkg/checks/traceroute/check.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/checks/traceroute/check_test.go b/pkg/checks/traceroute/check_test.go index 89ff9911..acd21e5f 100644 --- a/pkg/checks/traceroute/check_test.go +++ b/pkg/checks/traceroute/check_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/checks/traceroute/config.go b/pkg/checks/traceroute/config.go index 9b8bb1b7..78a2c447 100644 --- a/pkg/checks/traceroute/config.go +++ b/pkg/checks/traceroute/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/checks/traceroute/metrics.go b/pkg/checks/traceroute/metrics.go index ddc30d8b..0ccdb8a2 100644 --- a/pkg/checks/traceroute/metrics.go +++ b/pkg/checks/traceroute/metrics.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/checks/traceroute/test-lab/.gitignore b/pkg/checks/traceroute/test-lab/.gitignore index d1d584b3..1a7a8875 100644 --- a/pkg/checks/traceroute/test-lab/.gitignore +++ b/pkg/checks/traceroute/test-lab/.gitignore @@ -1 +1,5 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: CC-BY-4.0 + shared/ diff --git a/pkg/checks/traceroute/test-lab/how-to-test.md b/pkg/checks/traceroute/test-lab/how-to-test.md index 1bd1947a..e5c1dc78 100644 --- a/pkg/checks/traceroute/test-lab/how-to-test.md +++ b/pkg/checks/traceroute/test-lab/how-to-test.md @@ -1,3 +1,9 @@ + + # How to test the traceroute check - [About this tool](#about-this-tool) diff --git a/pkg/checks/traceroute/test-lab/lab.conf.license b/pkg/checks/traceroute/test-lab/lab.conf.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/pkg/checks/traceroute/test-lab/lab.conf.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/pkg/checks/traceroute/test-lab/pc1.startup.license b/pkg/checks/traceroute/test-lab/pc1.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/pkg/checks/traceroute/test-lab/pc1.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/pkg/checks/traceroute/test-lab/pc2.startup.license b/pkg/checks/traceroute/test-lab/pc2.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/pkg/checks/traceroute/test-lab/pc2.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/pkg/checks/traceroute/test-lab/r1.startup.license b/pkg/checks/traceroute/test-lab/r1.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/pkg/checks/traceroute/test-lab/r1.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/pkg/checks/traceroute/test-lab/r2.startup.license b/pkg/checks/traceroute/test-lab/r2.startup.license new file mode 100644 index 00000000..991f9b51 --- /dev/null +++ b/pkg/checks/traceroute/test-lab/r2.startup.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH + +SPDX-License-Identifier: Apache-2.0 diff --git a/pkg/checks/traceroute/traceroute.go b/pkg/checks/traceroute/traceroute.go index 7a2314f1..824e8b16 100644 --- a/pkg/checks/traceroute/traceroute.go +++ b/pkg/checks/traceroute/traceroute.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/checks/traceroute/traceroute_test.go b/pkg/checks/traceroute/traceroute_test.go index 2b6f3bb9..44ede291 100644 --- a/pkg/checks/traceroute/traceroute_test.go +++ b/pkg/checks/traceroute/traceroute_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package traceroute diff --git a/pkg/config/config.go b/pkg/config/config.go index f1c4b81c..960658cc 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/errors.go b/pkg/config/errors.go index a2724d54..a54a64ca 100644 --- a/pkg/config/errors.go +++ b/pkg/config/errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/file.go b/pkg/config/file.go index 7093c844..b8aa54c3 100644 --- a/pkg/config/file.go +++ b/pkg/config/file.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/file_test.go b/pkg/config/file_test.go index 77b78ec1..f232e011 100644 --- a/pkg/config/file_test.go +++ b/pkg/config/file_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/http.go b/pkg/config/http.go index aeaffbd8..316d4b9b 100644 --- a/pkg/config/http.go +++ b/pkg/config/http.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/http_test.go b/pkg/config/http_test.go index 4ab62ce7..91561495 100644 --- a/pkg/config/http_test.go +++ b/pkg/config/http_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/loader.go b/pkg/config/loader.go index 2583bb16..24a6dedf 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/test/data/config.yaml b/pkg/config/test/data/config.yaml index 11335c5b..b9867775 100644 --- a/pkg/config/test/data/config.yaml +++ b/pkg/config/test/data/config.yaml @@ -1,5 +1,9 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + health: targets: - - http://localhost:8080/health + - http://localhost:8080/health interval: 1s timeout: 1s diff --git a/pkg/config/test/filesystem.go b/pkg/config/test/filesystem.go index 439bd07a..ba293ff2 100644 --- a/pkg/config/test/filesystem.go +++ b/pkg/config/test/filesystem.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package test diff --git a/pkg/config/validate.go b/pkg/config/validate.go index d467e0f4..1e9e0eeb 100644 --- a/pkg/config/validate.go +++ b/pkg/config/validate.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/config/validate_test.go b/pkg/config/validate_test.go index 398e66a9..8b318c77 100644 --- a/pkg/config/validate_test.go +++ b/pkg/config/validate_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package config diff --git a/pkg/db/db.go b/pkg/db/db.go index 0fb0c425..147ef0f1 100644 --- a/pkg/db/db.go +++ b/pkg/db/db.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package db diff --git a/pkg/db/db_test.go b/pkg/db/db_test.go index 120d0414..98386b64 100644 --- a/pkg/db/db_test.go +++ b/pkg/db/db_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package db diff --git a/pkg/factory/factory.go b/pkg/factory/factory.go index 181272cb..2a280929 100644 --- a/pkg/factory/factory.go +++ b/pkg/factory/factory.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package factory diff --git a/pkg/factory/factory_test.go b/pkg/factory/factory_test.go index ea403146..6dcf0aae 100644 --- a/pkg/factory/factory_test.go +++ b/pkg/factory/factory_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package factory diff --git a/pkg/sparrow/controller.go b/pkg/sparrow/controller.go index 461ae605..7e1cae56 100644 --- a/pkg/sparrow/controller.go +++ b/pkg/sparrow/controller.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/controller_errors.go b/pkg/sparrow/controller_errors.go index 2dd61092..0cfcb1c6 100644 --- a/pkg/sparrow/controller_errors.go +++ b/pkg/sparrow/controller_errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/controller_test.go b/pkg/sparrow/controller_test.go index f68887db..fd09e689 100644 --- a/pkg/sparrow/controller_test.go +++ b/pkg/sparrow/controller_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/handlers.go b/pkg/sparrow/handlers.go index 8a774ef0..86837178 100644 --- a/pkg/sparrow/handlers.go +++ b/pkg/sparrow/handlers.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/handlers_test.go b/pkg/sparrow/handlers_test.go index e1f7a9c0..17826ea8 100644 --- a/pkg/sparrow/handlers_test.go +++ b/pkg/sparrow/handlers_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/metrics/config.go b/pkg/sparrow/metrics/config.go index bd2cb407..7d1094ad 100644 --- a/pkg/sparrow/metrics/config.go +++ b/pkg/sparrow/metrics/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package metrics diff --git a/pkg/sparrow/metrics/exporter.go b/pkg/sparrow/metrics/exporter.go index e6eefa90..438aac1d 100644 --- a/pkg/sparrow/metrics/exporter.go +++ b/pkg/sparrow/metrics/exporter.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package metrics diff --git a/pkg/sparrow/metrics/metrics.go b/pkg/sparrow/metrics/metrics.go index 3c42084e..d527d104 100644 --- a/pkg/sparrow/metrics/metrics.go +++ b/pkg/sparrow/metrics/metrics.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package metrics diff --git a/pkg/sparrow/metrics/metrics_test.go b/pkg/sparrow/metrics/metrics_test.go index 80c0f566..28b6c2ab 100644 --- a/pkg/sparrow/metrics/metrics_test.go +++ b/pkg/sparrow/metrics/metrics_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package metrics diff --git a/pkg/sparrow/run.go b/pkg/sparrow/run.go index 4ef56c68..9a093a3c 100644 --- a/pkg/sparrow/run.go +++ b/pkg/sparrow/run.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/run_errors.go b/pkg/sparrow/run_errors.go index e1f983ba..93dbfc5b 100644 --- a/pkg/sparrow/run_errors.go +++ b/pkg/sparrow/run_errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/run_test.go b/pkg/sparrow/run_test.go index a004db2a..5c764484 100644 --- a/pkg/sparrow/run_test.go +++ b/pkg/sparrow/run_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package sparrow diff --git a/pkg/sparrow/targets/errors.go b/pkg/sparrow/targets/errors.go index 83e22a42..255939ed 100644 --- a/pkg/sparrow/targets/errors.go +++ b/pkg/sparrow/targets/errors.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package targets diff --git a/pkg/sparrow/targets/interactor/config.go b/pkg/sparrow/targets/interactor/config.go index 57a8373b..d3fc6276 100644 --- a/pkg/sparrow/targets/interactor/config.go +++ b/pkg/sparrow/targets/interactor/config.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package interactor diff --git a/pkg/sparrow/targets/manager.go b/pkg/sparrow/targets/manager.go index 67e6c01f..c00bd3d2 100644 --- a/pkg/sparrow/targets/manager.go +++ b/pkg/sparrow/targets/manager.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package targets diff --git a/pkg/sparrow/targets/manager_test.go b/pkg/sparrow/targets/manager_test.go index 435be1bb..736ffe29 100644 --- a/pkg/sparrow/targets/manager_test.go +++ b/pkg/sparrow/targets/manager_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package targets diff --git a/pkg/sparrow/targets/remote/gitlab/gitlab.go b/pkg/sparrow/targets/remote/gitlab/gitlab.go index 73963ee3..7a2f5e0d 100644 --- a/pkg/sparrow/targets/remote/gitlab/gitlab.go +++ b/pkg/sparrow/targets/remote/gitlab/gitlab.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package gitlab diff --git a/pkg/sparrow/targets/remote/gitlab/gitlab_test.go b/pkg/sparrow/targets/remote/gitlab/gitlab_test.go index a99b4bac..18629146 100644 --- a/pkg/sparrow/targets/remote/gitlab/gitlab_test.go +++ b/pkg/sparrow/targets/remote/gitlab/gitlab_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package gitlab diff --git a/pkg/sparrow/targets/remote/gitlab/pagination.go b/pkg/sparrow/targets/remote/gitlab/pagination.go index a9c6e44f..ecac8446 100644 --- a/pkg/sparrow/targets/remote/gitlab/pagination.go +++ b/pkg/sparrow/targets/remote/gitlab/pagination.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package gitlab diff --git a/pkg/sparrow/targets/remote/gitlab/pagination_test.go b/pkg/sparrow/targets/remote/gitlab/pagination_test.go index 4fbc7b3f..a7c32cb8 100644 --- a/pkg/sparrow/targets/remote/gitlab/pagination_test.go +++ b/pkg/sparrow/targets/remote/gitlab/pagination_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package gitlab diff --git a/pkg/sparrow/targets/remote/remote.go b/pkg/sparrow/targets/remote/remote.go index 8147d255..1153aacc 100644 --- a/pkg/sparrow/targets/remote/remote.go +++ b/pkg/sparrow/targets/remote/remote.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package remote diff --git a/pkg/sparrow/targets/remote/test/remotemock.go b/pkg/sparrow/targets/remote/test/remotemock.go index f3d1015d..fd47a736 100644 --- a/pkg/sparrow/targets/remote/test/remotemock.go +++ b/pkg/sparrow/targets/remote/test/remotemock.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package remotemock diff --git a/pkg/sparrow/targets/targetmanager.go b/pkg/sparrow/targets/targetmanager.go index 594640eb..1d56ab21 100644 --- a/pkg/sparrow/targets/targetmanager.go +++ b/pkg/sparrow/targets/targetmanager.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package targets diff --git a/pkg/sparrow/targets/targetmanager_test.go b/pkg/sparrow/targets/targetmanager_test.go index 324b8204..dcc0f68e 100644 --- a/pkg/sparrow/targets/targetmanager_test.go +++ b/pkg/sparrow/targets/targetmanager_test.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package targets diff --git a/pkg/sparrow/targets/test/managermock.go b/pkg/sparrow/targets/test/managermock.go index 57a89938..9cf6a022 100644 --- a/pkg/sparrow/targets/test/managermock.go +++ b/pkg/sparrow/targets/test/managermock.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2024, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package managermock diff --git a/scripts/debug-elevated.sh b/scripts/debug-elevated.sh index e3af8168..104e6a8f 100644 --- a/scripts/debug-elevated.sh +++ b/scripts/debug-elevated.sh @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + # Description: Debug the application with elevated privileges # This is only necessary when debugging issues with the traceroute check, # as it requires elevated privileges diff --git a/scripts/gen-docs/gen-docs.go b/scripts/gen-docs/gen-docs.go index b50eabc8..7a92f414 100644 --- a/scripts/gen-docs/gen-docs.go +++ b/scripts/gen-docs/gen-docs.go @@ -1,20 +1,6 @@ -// sparrow -// (C) 2023, Deutsche Telekom IT GmbH +// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// Deutsche Telekom IT GmbH and all other contributors / -// copyright owners license this file to you under the Apache -// License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. +// SPDX-License-Identifier: Apache-2.0 package main @@ -65,7 +51,7 @@ func NewCmdGenDocs() *cobra.Command { // runGenDocs generates the markdown files for the flag documentation func runGenDocs(path *string) func(cmd *cobra.Command, args []string) error { c := sparrowcmd.BuildCmd("") - c.DisableAutoGenTag = true + c.DisableAutoGenTag = false return func(_ *cobra.Command, _ []string) error { if err := doc.GenMarkdownTree(c, *path); err != nil { return fmt.Errorf("failed to generate docs: %w", err) diff --git a/scripts/run_e2e_tests.sh b/scripts/run_e2e_tests.sh index f8387baf..740e94e8 100755 --- a/scripts/run_e2e_tests.sh +++ b/scripts/run_e2e_tests.sh @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH +# +# SPDX-License-Identifier: Apache-2.0 + root=$(pwd) export SPARROW_BIN=$(realpath ./dist/sparrow_linux_amd64_v1/sparrow) From e71c899fcd85cac235b9d24727d832ae9380c05e Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Fri, 17 Jan 2025 16:22:47 +0100 Subject: [PATCH 04/10] chore: sw docs to CC-BY-4.0 license --- .github/dependabot.yml | 2 +- .gitignore | 2 +- CODEOWNERS | 2 +- NOTICE | 2 +- REUSE.toml | 13 ++++++++++--- chart/REUSE.toml | 13 +++++++++---- docs/sparrow.md | 2 +- docs/sparrow_completion.md | 2 +- docs/sparrow_completion_bash.md | 2 +- docs/sparrow_completion_fish.md | 2 +- docs/sparrow_completion_powershell.md | 2 +- docs/sparrow_completion_zsh.md | 2 +- docs/sparrow_run.md | 2 +- examples/dashboard.png.license | 2 +- 14 files changed, 31 insertions(+), 19 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8c743cc3..fe73e3de 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,6 +1,6 @@ # SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH # -# SPDX-License-Identifier: CC-BY-4.0 +# SPDX-License-Identifier: Apache-2.0 version: 2 updates: diff --git a/.gitignore b/.gitignore index 553dcc89..07b36539 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH # -# SPDX-License-Identifier: Apache-2.0 +# SPDX-License-Identifier: CC-BY-4.0 # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore diff --git a/CODEOWNERS b/CODEOWNERS index 9b1a7b00..180fc701 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,5 +1,5 @@ # SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH # -# SPDX-License-Identifier: Apache-2.0 +# SPDX-License-Identifier: CC-BY-4.0 * @y-eight @NiklasTreml @puffitos @lvlcn-t \ No newline at end of file diff --git a/NOTICE b/NOTICE index e0f69fad..24232456 100644 --- a/NOTICE +++ b/NOTICE @@ -1,6 +1,6 @@ // SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH // -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: CC-BY-4.0 This project is licensed under Apache License, Version 2.0; you may not use them except in compliance with the License. diff --git a/REUSE.toml b/REUSE.toml index 877420a7..36365942 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -1,8 +1,7 @@ # SPDX-FileCopyrightText: 2024 Deutsche Telekom AG # -# SPDX-License-Identifier: CC0-1.0 +# SPDX-License-Identifier: CC0-1.0 -# See https://reuse.software/spec-3.2/#reusetoml for specification version = 1 [[annotations]] @@ -15,4 +14,12 @@ path = [ ] precedence = "aggregate" SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" -SPDX-License-Identifier = "Apache-2.0" \ No newline at end of file +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = [ + "docs/**" +] +precedence = "aggregate" +SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" +SPDX-License-Identifier = "CC-BY-4.0" \ No newline at end of file diff --git a/chart/REUSE.toml b/chart/REUSE.toml index 8e03efb9..9fab385a 100644 --- a/chart/REUSE.toml +++ b/chart/REUSE.toml @@ -1,12 +1,17 @@ # SPDX-FileCopyrightText: 2024 Deutsche Telekom AG # -# SPDX-License-Identifier: CC0-1.0 +# SPDX-License-Identifier: CC0-1.0 -# See https://reuse.software/spec-3.2/#reusetoml for specification version = 1 [[annotations]] -path = ["templates/**", "README.md"] +path = ["templates/**"] precedence = "aggregate" SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" -SPDX-License-Identifier = "Apache-2.0" \ No newline at end of file +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = ["README.md"] +precedence = "aggregate" +SPDX-FileCopyrightText = "Deutsche Telekom IT GmbH" +SPDX-License-Identifier = "CC-BY-4.0" \ No newline at end of file diff --git a/docs/sparrow.md b/docs/sparrow.md index f5aa5769..0dff7cd1 100644 --- a/docs/sparrow.md +++ b/docs/sparrow.md @@ -18,4 +18,4 @@ The check results are exposed via an API. * [sparrow run](sparrow_run.md) - Run sparrow -###### Auto generated by spf13/cobra on 13-Jan-2025 +###### Auto generated by spf13/cobra on 17-Jan-2025 diff --git a/docs/sparrow_completion.md b/docs/sparrow_completion.md index 32c1405b..4fd092f5 100644 --- a/docs/sparrow_completion.md +++ b/docs/sparrow_completion.md @@ -1,7 +1,7 @@ ## sparrow completion diff --git a/docs/sparrow_completion_bash.md b/docs/sparrow_completion_bash.md index 7618d6e2..36c004a3 100644 --- a/docs/sparrow_completion_bash.md +++ b/docs/sparrow_completion_bash.md @@ -1,7 +1,7 @@ ## sparrow completion bash diff --git a/docs/sparrow_completion_fish.md b/docs/sparrow_completion_fish.md index d42a7be8..73e82752 100644 --- a/docs/sparrow_completion_fish.md +++ b/docs/sparrow_completion_fish.md @@ -1,7 +1,7 @@ ## sparrow completion fish diff --git a/docs/sparrow_completion_powershell.md b/docs/sparrow_completion_powershell.md index d180ce03..867abab1 100644 --- a/docs/sparrow_completion_powershell.md +++ b/docs/sparrow_completion_powershell.md @@ -1,7 +1,7 @@ ## sparrow completion powershell diff --git a/docs/sparrow_completion_zsh.md b/docs/sparrow_completion_zsh.md index 41702c49..f5e7df68 100644 --- a/docs/sparrow_completion_zsh.md +++ b/docs/sparrow_completion_zsh.md @@ -1,7 +1,7 @@ ## sparrow completion zsh diff --git a/docs/sparrow_run.md b/docs/sparrow_run.md index 3752af28..b84269a5 100644 --- a/docs/sparrow_run.md +++ b/docs/sparrow_run.md @@ -36,4 +36,4 @@ sparrow run [flags] * [sparrow](sparrow.md) - Sparrow, the infrastructure monitoring agent -###### Auto generated by spf13/cobra on 13-Jan-2025 +###### Auto generated by spf13/cobra on 17-Jan-2025 diff --git a/examples/dashboard.png.license b/examples/dashboard.png.license index 991f9b51..8bef2c36 100644 --- a/examples/dashboard.png.license +++ b/examples/dashboard.png.license @@ -1,3 +1,3 @@ SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC-BY-4.0 From 35e4ce7c43c33207be297c09f2990411057fc3c3 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 20 Jan 2025 16:54:35 +0100 Subject: [PATCH 05/10] chore: disable auto gen print in docs again --- docs/sparrow.md | 1 - docs/sparrow_run.md | 1 - scripts/gen-docs/gen-docs.go | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/sparrow.md b/docs/sparrow.md index e6753d6a..4c73c543 100644 --- a/docs/sparrow.md +++ b/docs/sparrow.md @@ -18,4 +18,3 @@ The check results are exposed via an API. * [sparrow run](sparrow_run.md) - Run sparrow -###### Auto generated by spf13/cobra on 20-Jan-2025 diff --git a/docs/sparrow_run.md b/docs/sparrow_run.md index baee366e..ae454c0d 100644 --- a/docs/sparrow_run.md +++ b/docs/sparrow_run.md @@ -36,4 +36,3 @@ sparrow run [flags] * [sparrow](sparrow.md) - Sparrow, the infrastructure monitoring agent -###### Auto generated by spf13/cobra on 20-Jan-2025 diff --git a/scripts/gen-docs/gen-docs.go b/scripts/gen-docs/gen-docs.go index 61e184ef..77df87f9 100644 --- a/scripts/gen-docs/gen-docs.go +++ b/scripts/gen-docs/gen-docs.go @@ -51,7 +51,7 @@ func NewCmdGenDocs() *cobra.Command { // runGenDocs generates the markdown files for the flag documentation func runGenDocs(path *string) func(cmd *cobra.Command, args []string) error { c := sparrowcmd.BuildCmd("") - c.DisableAutoGenTag = false + c.DisableAutoGenTag = true return func(_ *cobra.Command, _ []string) error { if err := doc.GenMarkdownTree(c, *path); err != nil { return fmt.Errorf("failed to generate docs: %w", err) From 253755057506d872f986c2684061aaee8d4dcf9d Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 20 Jan 2025 17:00:38 +0100 Subject: [PATCH 06/10] chore: fix licence header & workflow --- .github/workflows/reuse-compliance.yml | 2 +- CONTRIBUTING.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reuse-compliance.yml b/.github/workflows/reuse-compliance.yml index 9df5e71a..4ed822ee 100644 --- a/.github/workflows/reuse-compliance.yml +++ b/.github/workflows/reuse-compliance.yml @@ -4,7 +4,7 @@ name: REUSE Compliance Check -on: [push, pull_request] +on: [push] jobs: test: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f2dd6a36..2c1a1ee7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,5 @@ From 7c9d3fdfb88b6fb5a171d233453ed46ce460fa3c Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 20 Jan 2025 17:08:44 +0100 Subject: [PATCH 07/10] chore: add reuse pre-commit hook --- .pre-commit-config.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 551fc96c..ba2c4f11 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -36,3 +36,8 @@ repos: - id: helm-docs-built args: - --chart-search-root=chart + + - repo: https://github.com/fsfe/reuse-tool + rev: v5.0.2 + hooks: + - id: reuse From fb7f38dcd876fdf7e8434e75975212fdb7796bab Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Tue, 21 Jan 2025 08:34:52 +0100 Subject: [PATCH 08/10] docs: add reuse docu --- docs/dev.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 docs/dev.md diff --git a/docs/dev.md b/docs/dev.md new file mode 100644 index 00000000..94fc8a97 --- /dev/null +++ b/docs/dev.md @@ -0,0 +1,46 @@ + + +# Developer Documentation + +- [Using `reuse` for license handling](#using-reuse-for-license-handling) + - [Install](#install) + - [CLI Usage](#cli-usage) + - [`REUSE.toml`](#reusetoml) + +## Using `reuse` for license handling + +`reuse` is a [cli tool](https://reuse.readthedocs.io/en/latest/index.html) to handle licenses with [SPDX standard](https://spdx.dev/use/overview/) in a repository. + +How `reuse` is setup and used is explained in the [Telekom Org documentation](https://telekom.github.io/reuse-template/using-the-template/setup-reuse). + +For details about license handling with `reuse` checkout this [page](https://telekom.github.io/reuse-template/using-the-template/setup-license). + +### Install + +Install `reuse` following the [official instructions](https://reuse.readthedocs.io/en/latest/readme.html#install). + +`reuse` is embedded as a pre-commit hook. Install `pre-commit install` to use it. The hook is checking the repository to stay compliant in terms of licenses. + +### CLI Usage + +> `reuse lint` + +Verify the compliance of the repository. + +> `reuse annotate -c "Deutsche Telekom IT GmbH" -l "Apache-2.0" --recursive --skip-existing --fallback-dot-license ` + +Annotate a file or directory with the `Apache-2.0` SPDX license header. In case the tool is not able to append a header, a `.license` file is created. + +> `reuse annotate -c "Deutsche Telekom IT GmbH" -l "CC-BY-4.0" --recursive --skip-existing --fallback-dot-license ./docs/*.md` + +Use the `CC-BY-4.0` SPDX license header for documentation (eg. `.md`) files. + +### `REUSE.toml` + +In case a license header is not suitable for a file or directory (eg. auto-generated files) the `REUSE.toml` configuration file can be used. + +Add the file path to the `REUSE.toml` or create a new `[[annotations]]` section (see `./REUSE.toml` for an example). From d696196d50dbe308e9db095cd7346255ca7e2c08 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Tue, 21 Jan 2025 14:32:08 +0100 Subject: [PATCH 09/10] chore: rm img form chart --- chart/Chart.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 4e269938..eeff8427 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -10,7 +10,6 @@ keywords: - monitoring version: 0.0.4 appVersion: "v0.5.0" -icon: https://github.com/telekom/sparrow/blob/main/docs/img/sparrow.png sources: - https://github.com/telekom/sparrow maintainers: From 863122200e1c370a60673e04f5c26e94513e5340 Mon Sep 17 00:00:00 2001 From: "maximilian.schubert@telekom.de" Date: Mon, 27 Jan 2025 08:17:16 +0100 Subject: [PATCH 10/10] chore: use cc license for docs only --- REUSE.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/REUSE.toml b/REUSE.toml index 36365942..8b21c0df 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -9,7 +9,6 @@ path = [ ".idea/**", ".vscode/**", "**moq.go", - "docs/**", "go.sum" ] precedence = "aggregate"