Donnie Berkholz's Story of Data

Oracle v Google could drive a new era of open-source APIs

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

The question of whether APIs are copyrightable has a huge bearing on implementers and users of those APIs. Today, the US Court of Appeals for the Federal Circuit released its decision in the Oracle v Google case around (1) whether a set of 37 Java API packages were copyrightable and (2) whether Google infringed those copyrights in Android and its Dalvik VM. It said that APIs are definitely copyrightable, but it called for a new trial on whether Google’s actions qualified as fair use. Also on the bright side, copyright (unlike patent) isn’t solely owned by the Federal Circuit, so this isn’t a nationally binding decision. That allows for other circuit courts to disagree, leaving more room for a potential appeal to the Supreme Court.

One specific point the court made was (p. 39):

It is undisputed that—other than perhaps as to the three core packages—Google did not need to copy the structure, sequence, and organization of the Java API packages to write programs in the Java language.

And it elsewhere went on to discuss Google’s use of those APIs as clear techniques to subordinate developers familiar with them rather than something that was necessary to write Java.

But most importantly, the appeals court sent the question of whether Google’s actions constituted fair use (i.e., they infringed but it wasn’t enough to count) back to the lower court for a new trial. The court said (p. 61):

We find this [function and interoperability as part of a fair use defense] particularly true with respect to those core packages which it seems may be necessary for anyone to copy if they are to write programs in the Java language. And, it may be that others of the packages were similarly essential components of any Java language-based program.

What are the implications?

APIs may be copyrightable as a consequence of this decision, but that leaves a lot of gray area in terms of how they can be used, while opening up a whole new arena of how their licensing affects API re-implementers as well as consumers.

Before you make any decisions based on this news and what you think it means to you, I’d advise asking a lawyer, because I’m not one. I will, however, run through a series of questions raised by this decision that need answers.

Sam Ramji also pointed to the EFF’s filing for this case as a useful summary of some of the impacts of copyrightable APIs in areas such as Unix, network protocols, and the cloud.

For API consumption

It’s less concerning for those who are only consuming an API, because in many cases these users are already subject to terms of service that may already satisfy the API provider’s desires. One implication of this ruling is that if APIs are copyrightable, however, then the license applying to the rest of the software also applies to the API as an integral component of the software.

Since I’m not a lawyer, I can’t speak specifically to any legal precedent for code that uses an API, as far as whether it’s considered a derivative work (subject to copyright) [LWN writeup], a transformational work (fair use exception to copyright), a separate work with no copyright relationship at all, etc. However, lawyers such as Larry Rosen seem to lean toward the idea that implementing programs against a library API is not creating a derivative work.

If all software using APIs were derivative work of the providers, it would create very interesting situations of asymmetric power for Microsoft Windows and other OS providers as well as for web APIs. The provider would be able to exert license control over every consumer of the API, and it could go so far as to individually curate (i.e., pick and choose) users of its APIs. This would dramatically shift the balance of power toward the API provider and away from individual developers, particularly in the non-web case because of the popularity of ToS, API keys, and additional restrictions in the latter.

For API compatibility

Even if the new trial holds up fair use as a defense, the biggest problem for the rest of us is that fair use applies on an individual level. In other words, every single time an API is copied, it’s sufficiently different from every other time that the owners of the original API could sue for infringement and you’d have to hire lawyers for a fair-use defense.

This judgment greatly changes the risk assessment for whether to support any given API. It may not end up going to trial, but even the legal effort and expense alone will create significant difficulty for many startups and open-source projects. This will have a serious chilling effect on the creation and growth of new implementations because of greatly increased switching costs for whatever API users are currently doing. Low barriers to entry may encourage more users to move through the funnel, but the flip side of the coin is that increased barriers to exit will similarly discourage developers and other customers who see it as a form of lock-in. People are much more willing to invest time and money when they perceive that their effort is portable than when it’s tied to a single proprietary platform.

This is going to create a lot of difficulty for everyone reimplementing S3 APIs, for example, such as OpenStack and others, with the exception of Eucalyptus because of its Amazon partnership.

A new opportunity to go beyond open APIs to open-source APIs

The “open API” movement has thus far been rather amorphous in terms of structure and definition. But generally, open APIs are perceived to use open protocols and formats including REST, JSON, and (less popular these days) XML. In other words, it’s open in terms of the standards used, and not necessarily open in terms of anyone’s ability to register for it.

This ruling creates an opportunity for API providers to put their APIs under open-source licenses, be it permissive or copyleft. This can apply, particularly with permissive licenses, even if the non-API components of the source code are proprietary. That would provide users with the comfort of knowing that they have the freedom to leave, which lowers resistance to initially commit to a technology, precisely because the API is open source and so it could be reimplemented elsewhere. Unfortunately, it also means that the idea of “open APIs” will become even cloudier because it add open source into an already confusing mixture of usage.

If nothing changes legally, we may end up with the equivalent of FRAND patent terms in copyright licenses as well, along with additional usage of standards bodies to support them. Unfortunately FRAND does not always mean open-source friendly, so we may see some of the same battles all over again with copyrights as we saw with patents.

Disclosures: I am not a lawyer. Google and Oracle are not clients, but Sun was. Microsoft and Eucalyptus have been clients. The OpenStack Foundation is not, but a variety of OpenStack vendors are.

by-sa

7 comments

  1. There may be a very simple answer to this, but I’m not totally clear on what putting APIs “under an open source license” means exactly–at least in the absence of putting an actual reference implementation of the API out under an open source license. (And maybe not even then unless one actually used the code in the reference implementation.)

    1. The court’s decision means specifically that the naming and structure of an API is itself copyrightable, without even resorting to how that API is implemented. So Google’s clean-room implementation of code that fulfills an API can still violate Oracle’s copyright purely because the entry points into that code are identical.

      In other words, what the functions and parameters are named, and how they’re organized within libraries, is something that is sufficiently creative to be copyrightable and therefore can be licensed. A specific example mentioned in the decision was “java.lang.Math.max” versus “Math.maximum” or “Arith.larger”.

      1. شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض http://www.stanica.org شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض http://coasttocoastamforum.com شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض http://buildyouruniverse.com شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض http://www.onapps.net شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة تنظيف فلل بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض http://sn.vimaru.edu.vn شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض http://www.architexa.com شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض

        1. شركة
          تخزين عفش بالرياض
          شركة
          نقل عفش بالرياض
          شركة
          تنظيف واجهات حجر بالرياض
          شركة
          نظافة بالرياض
          شركة
          تنظيف شقق بالرياض
          شركة تنظيف
          بيوت بالرياض
          شركة نقل اثاث
          بالرياض
          شركة
          جلي بلاط بالرياض
          شركة
          تنظيف مسابح بالرياض
          شركة تنظيف
          خزانات بالرياض
          شركة
          عزل خزانات بالرياض
          شركة
          تسليك مجارى بالرياض
          شركة
          تنظيف موكيت بالرياض
          شركة
          تنظيف منازل بالرياض
          شركة
          تنظيف واجهات زجاج بالرياض
          شركة
          تنظيف مجالس بالرياض
          ترميم
          البيت
          شركة
          شفط بيارات بالرياض
          شركة
          تنظيف بالرياض
          عزل
          الاسطح
          شركة
          تنظيف بيارات بالرياض
          ‪شركة رش
          مبيدات بالرياض
          شركة مكافحة حشرات
          بالرياض
          شركة تنظيف
          مساجد بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة تنظيف فلل
          بالرياض
          http://rekar.biz
          شركة
          تنظيف بالرياض
          شركة تنظيف
          بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة تنظيف
          بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة تنظيف
          بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة تنظيف
          بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة تنظيف
          بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة
          تنظيف بالرياض
          شركة تنظيف
          خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة تنظيف
          خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة تنظيف
          خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة تنظيف
          خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة تنظيف خزانات بالرياض شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف خزانات بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة تنظيف فلل
          بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض
          شركة
          تنظيف فلل بالرياض

          1. شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة كشف تسربات المياه بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض http://wiki.fos.be http://www.lavrsen.dk http://wiki.dreamhost.com شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض شركة نقل اثاث بالرياض http://perl.org.br https://panda-wiki.gsi.de https://panda-wiki.gsi.de http://mojomojo.org http://parry.org http://www.xwiki.org http://www.redbourn.org.uk http://osswiki.dbc.dk https://wiki.c2sm.ethz.ch/ https://wikiring.com/ https://wiki.apache.org http://www.redbourn.org.uk http://external.opengeospatial.org http://wiki.iqworks.org https://www.psychoutcomes.org http://info.grafen.ippt.gov.pl https://htu.at https://nustar-wiki.gsi.de http://www.girardgibbs.com http://server.effectiva.cz http://twiki.org https://www.colivre.coop.br https://wiki.sonologic.net http://wiki.doebe.li https://wiki.wineme.fb5.uni-siegen.de http://www.openfst.org http://www.turnkeylinux.org http://gse8.soe.berkeley.edu http://www.plapl.com http://www.d3m-fny.com http://www.shatharat.net http://external.opengeospatial.org شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض http://aspedia.pl شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض comercioeletronico.org.br شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة نقل اثاث بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض https://wiki.softwarelivre.org شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض شركة مكافحة حشرات بالرياض http://urbanpedia.es

          2. شركة عزل اسطح بالرياض الصفرات شركة تنظيف خزانات بالرياض شركة تنظيف واجهات زجاج بالرياض الصفرات شركة كشف تسربات المياه بالرياض الخيول السريعة شركة تخزين اثاث بالرياض الصفرات شركة نقل اثاث بالرياض الصفرات شركة تنظيف فلل بالرياض الصفرات شركة تخزين عفش بالرياض شركة نقل عفش بالرياض الصفرات شركة تنظيف موكيت بالرياض الصفرات شركة تنظيف مجالس بالرياض الصفرات شركة تنظيف شقق بالرياض الصفرات شركة تنظيف بيوت بالرياض الصفرات شركة تنظيف منازل بالرياض الصفرات شركة تنظيف بيارات بالرياض الصفرات شركة رش مبيدات بالرياض شركة مكافحة حشرات بالرياض شركة عزل خزانات بالرياض الصفرات شركة عزل اسطح بالرياض الخيول السريعة شركة تسليك مجارى بالرياض الصفرات شركة تنظيف خزانات بالرياض شركة كشف تسربات المياه بالرياض الصفرات شركة كشف تسربات المياه بالرياض الخيول السريعة شركة تخزين اثاث بالرياض الخيول السريعة شركة تنظيف فلل بالرياض الصفرات شركة تنظيف مدارس بالرياض شركة لاعمال الجبس بالرياض شركة تنظيف موكيت بالرياض الصفرات شركة تنظيف مجالس بالرياض الصفرات شركة تنظيف شقق بالرياض الصفرات شركة نقل اثاث بالرياض الصفرات شركة تسليك مجارى بالرياض الصفرات شركة رش مبيدات الصفرات شركة مكافحة حشرات بالرياض الصفرات شركة عزل خزانات بالرياض الصفرات شركة تسليك مجارى بالرياض الخيول السريعة شركة تنظيف خزانات بالرياض الصفرات شركة نقل اثاث بالرياض الصفرات شركة نقل اثاث بالرياض الخيول السريعة شركة نقل اثاث بالرياض الامجاد شركة نقل اثاث بالرياض المثلث شركة نقل اثاث بالرياض ضفاف الخليج شركة نقل اثاث بالرياض عمالة فلبينية شركة نقل اثاث بالرياض 300 ريال شركة نقل اثاث بالرياض رخيصه شركة نقل اثاث بالرياض فيس بوك شركة ماسا لمكافحة الحشرات بالرياض شركة سامس لمكافحة الحشرات بالرياض شركة تراب لمكافحة الحشرات بالرياض شركة رش مبيدات بالرياض شركة الهدى شركة رش مبيدات بالرياض الصفرات شركة تنظيف منازل بالرياض الصفرات شركة تنظيف منازل بالرياض عمالة فلبينية شركة تنظيف منازل بالرياض رخيصه شركة تنظيف منازل بالرياض فيس بوك شركة ماسا لمكافحة الحشرات بالرياض شركة سامس لمكافحة الحشرات بالرياض شركة تراب لمكافحة الحشرات بالرياض شركة تنظيف فلل بالمدينة المنورة شركة تنظيف خزانات بالمدينة المنورة شركة تنظيف منازل بالمدينة المنورة شركة مكافحة حشرات بالمدينة المنورة شركة تنظيف شقق بالمدينة المنورة شركة تنظيف بالمدينة المنورة شركة رش مبيدات بالمدينة المنورة

Leave a Reply

Your email address will not be published. Required fields are marked *