public override void FromOSD(OSDMap v)
        {
            OSDMap values = (OSDMap) v;
            EstateID = (uint) values["EstateID"].AsInteger();
            EstateName = values["EstateName"].AsString();
            AbuseEmailToEstateOwner = values["AbuseEmailToEstateOwner"].AsBoolean();
            DenyAnonymous = values["DenyAnonymous"].AsBoolean();
            ResetHomeOnTeleport = values["ResetHomeOnTeleport"].AsBoolean();
            FixedSun = values["FixedSun"].AsBoolean();
            DenyTransacted = values["DenyTransacted"].AsBoolean();
            BlockDwell = values["BlockDwell"].AsBoolean();
            DenyIdentified = values["DenyIdentified"].AsBoolean();
            AllowVoice = values["AllowVoice"].AsBoolean();
            UseGlobalTime = values["UseGlobalTime"].AsBoolean();
            PricePerMeter = values["PricePerMeter"].AsInteger();
            TaxFree = values["TaxFree"].AsBoolean();
            AllowDirectTeleport = values["AllowDirectTeleport"].AsBoolean();
            ParentEstateID = (uint) values["ParentEstateID"].AsInteger();
            SunPosition = values["SunPosition"].AsReal();
            EstateSkipScripts = values["EstateSkipScripts"].AsBoolean();
            BillableFactor = (float) values["BillableFactor"].AsReal();
            PublicAccess = values["PublicAccess"].AsBoolean();
            AbuseEmail = values["AbuseEmail"].AsString();
            EstateOwner = values["EstateOwner"].AsUUID();
            AllowLandmark = values["AllowLandmark"].AsBoolean();
            AllowParcelChanges = values["AllowParcelChanges"].AsBoolean();
            AllowSetHome = values["AllowSetHome"].AsBoolean();
            DenyMinors = values["DenyMinors"].AsBoolean();

            OSDArray Managers = values["EstateManagers"] as OSDArray;
            if (Managers != null)
                EstateManagers = Managers.ConvertAll<UUID>((o) => o);

            OSDArray Ban = values["EstateBans"] as OSDArray;
            if (Ban != null)
                EstateBans = Ban.ConvertAll<EstateBan>((o) =>
                                                           {
                                                               EstateBan ban = new EstateBan();
                                                               ban.FromOSD(o);
                                                               return ban;
                                                           });

            OSDArray Access = values["EstateAccess"] as OSDArray;
            if (Access != null)
                EstateAccess = Access.ConvertAll<UUID>((o) => o);

            OSDArray Groups = values["EstateGroups"] as OSDArray;
            if (Groups != null)
                EstateGroups = Groups.ConvertAll<UUID>((o) => o);
        }