Hello everyone. My name is Ohtem and welcome to the Open Source Summit, Latin America. In today's talk I'll present you the building secure by design pipeline with an open source stack. I would like to walk you through the process of building an end to end security pipeline.  We'll take a deep dive on how secure code and configuration the pipeline itself and its integration and our Kubernetes deployment to ensure we have continuous visibility with the right monitoring controls right in place. I will demonstrate it all with the common open source tool, of course, and a bit of coding interface. So before we start, a few points about me. I'm a developer for the past 14 years or so. In the past five years, I'm in the DevOps industry, especially Kubernetes expert. And in my free time, my hobbies are yoga and watching my favorite basketball team. So that's all about me. I'm working currently in ARMO, which are the maintainers and builders of CubeScape, which is an open source end to end Kubernetes security solution. We were founded in 2019, and we based in Jerusalem in Tel Aviv, Israel.  So basically, a word without CITD is a chaos, as we're talking today. DevOps and modern engineering have enabled us to provide higher quality code at the greatest speed by introducing guidelines and checking to automate this continuous CITD processes. However, with the security becoming a more pressing matter and more critical zero-day traits arise and misconfiguration is basically introduced through production system and the same time application and development processes are moving fast forward right in the CITD process It's becoming critical matter, critical point for enforcing security during the CITD pipeline and not just, you know, at the end and the deploy in our clusters in our dev production environment. So I think we're all pretty familiar with this diagram, right? But as we are familiar, I'll go through in this talk about all the phases and try to connect the security guide in there. But speaking of that, Darian, that you all very much familiar, do we really know what's the CITD goal? So I checked a bit and I found that the CITD pipeline goal is to reduce the risk involved in deploying software and plan our problems ahead. What does it mean to plan our problems ahead? Okay, that means we will have problems, but we need to find that out in early stage of the pipe, in early stage of the deployment, in the planning, in the coding and not when it's getting into production and that talk will focus on this topic mainly. And of course, reducing the risk. Okay, I don't want to, that the risk will be higher as I'm going to production. Okay, we want to reduce the risk as the early steps are involved. So let's go on to our CICD pipe steps with some examples of which solution there are within those specific steps, although one by one and explain them. So source code, what do we have there? So there are basically two directions of source code. The first one is the applicative code, the application code that we are writing and the second one is the infrastructure as code. Okay, I combine them in this step together, but we'll talk about it separately. As you see here in the icons, we have Golang, Terraform, which is infrastructure as code, the YAML manifest file that we're deploying in our Kubernetes cluster, Helm. We're writing in the visual studio code and any other IDs. And then we're going through and pairing our code to some kind of a repository, GitHub, GitLab, BitPacket, you name it. And then we're stepping ahead to the CICD server. Okay, I just presented here the Jenkins and the GitHub actions. There are a lot more, I will focus on those in this talk. So I'm building my application, okay, in the CICD server, I'm building and wrapping it as an image or docker image or any kind of image that I want to wrap that. I want to put in some place that I can just pull it from there when I need and, you know, I'll save there the history if I want that or not. So I want to put it in a repository, in a registry of artifacts of all my images, there are lots of examples here. We have it for the Microsoft one, we have it for the Amazon one, Docker have Harbor, there are many, many, many registries that we can dive into them. And then we're getting to the deploy phase. The deploy phase is basically the phase that we're putting this image inside our deployment environment, right, when we want to take this image and deploy it in the cluster, in the Kubernetes cluster if we're talking Kubernetes wise. We are deploying it with several tools, of course, we have the Terraform that helps us to deploy that, also the Argo CD, Ansible, and many more tools that are helping us to do so. And essentially what you want to understand is, is my application okay, right, is it alive, is it increased RAM or CPU, or any other metrics that we want to monitor. And that is why we're using Prometheus and Grafana as its visualizer to monitor application, most of the application has their own Prometheus exporter, and that's why that's how we're monitoring it. So what we're seeing here is basically a type, right, that helps the developer to rapidly deploy, right, they're just, you know, pushing their source code and that's it, automatically, right, it's right there in the production I can trace it and see, you know, how my application is going, right. In a few minutes I can see my application in production, even not in dev environment. So what developers are doing is basically shifting right as we're going from the code to the, to the deploy part to the monitoring even part. But if I want to drill down a bit more I will present the, you know, the detailed pipeline that I created here. It's just, you know, a user flow that I created in, and we will talk about this user flow basically the entire talk we will focus on each and every one of those sections, and see how can I have the security inside this, you know, it's not a small pipe so I want to have security in most of it, or part of it, if you say. So, the developer right here is sitting and developing his code, and then he develops it in go or, or creating any manifest or deployment files to support his application. And PR in this code to his application repo, and, and PR in infrastructure is put to, to that repo. After that, the application, the PR is approved. And then it's one to the CI CD server, right, I can see here the GitHub action and Jenkins, I'm building my application, and I'm making all kind of tests if you want, and then I want to push this image this new image to the container registry. And from container registry and from the infrastructure is code is combined with going on just presenting here I go. Sorry, I'm just presenting here I go but basically it's automatically deploying taking the images taking my manifest and my terraforms and deploying it in my Kubernetes clusters. Okay, one many, it doesn't matter. And eventually, the user wants to see in the Grafana, the, the metrics about his cluster security metrics or any other metrics. So, basically, I think that nothing can go wrong, right, not a lot can go wrong. We're talking now on security matter. So what can possibly go wrong in this case. So, again, there are a lot of, there are a lot of points of security pain points that we can find in, in each and every one of the stages I've shown before, called misconfiguration zero day CVE is dependencies management And of course, when we have kind of a collision third parties that we're not familiar or just importing it and we don't know which CV is right. I'm not very familiar with that. Warnings. Does anyone pay attention to warnings, even grammar warnings, we're not paying attention right there are many of us that are not paying attention even to grammar warning so security ones. Third party object as we talked and our configuration violation, etc, etc. And of course there are many more that this paper can can show. We don't want you to panic in when showing those pain points of security and I'm basically here to calm down a bit and to show you exactly where should I put the security guidelines and security guards in this pipeline and to keep me safe, as much as we can of course. So, do we have a real solution. I think we're very close to there. Okay, but basically our solution is here to minimize the risk remember what's the CICD goal to minimize to reduce the risk. So, let's drill down and see how we're going to do that. Shifting left. Okay, again, it's like a bad word now in all the DevOps industry. So shifting left is shifting left term is the effort of a DevOps team to guarantee application security at the earliest stage in the development life cycle as part of an organizational pattern, known as DevOps. If we saw before that developers are rapidly shifting right, then security is shifting left, because we want to find our security issues in the early stage, the early stage of our coding of our planning right there. So, why shifting left. I think most of us are very familiar with this with this graph this graph represents the software development life cycle. And it says that detecting bugs in a software life cycle costs less as much as it's in early stage. Right. So, the cost is getting higher when it's in the, in the last stage of deployment. That's exactly the same pattern in, in security. Okay, when we're finding security or misconfiguration issues in the right side of the map right in the, in the cluster, it costs us a lot more. In 10 days of fixes, check all the pipe from deploy to the code and see where to fix it. Then if you would fix it in the early stage, right, early stage coding right there I want to catch as much as I can, of course, okay as much as I can I want to catch it in the early stage of development, the, the featured application, the infrastructure is code. So now I'm going back to my diagram that the user flow that we talked about before. And because we're shifting left, let's start from the right. Okay, we'll start from the right from the deployment section from my Kubernetes clusters that you're seeing right here. So the deploy phase within the cluster. How can we discover what's in it, what's the security inside my cluster. So we have two major points here. The first one is the vulnerabilities in cluster scanners. Okay, we can install and deploy the in cluster component that's recognized which vulnerabilities are standing in the, in the cluster using as bomb and combining it together for example, I just run. In a mini cluster we just read this. The vulnerability scanner of anchor, and that's what I got. There are many CV is there. Some of them can be fixed some of them, some of them won't. And that's for another talk about how to prioritize the CV, but that's like the first thing about about vulnerabilities in scanner. And the second part of the deployment phase about the cluster is the misconfiguration. Again, we need to check it inside the cluster. So I'll present here keepscape, which also checks for vulnerability and misconfiguration. I'll check, I'll just show you the, the result I just scanned my mini cube cluster. This is my simple keepscape scan. And now I see that my cluster was scanned. Those are all the controls, basically all the tests that I've seen in my classroom. If I put here a minus V, then I can see it very in very detailed view I can see exactly that my resource has failed on which misconfiguration, what is the system, what is remediation, how can I fix it, let's say I don't have CPU limits in my deployment so I'm going and fixing that, or I want to check the network mapping spaces without any service account, sort of things that are that can harm me in sort of ways in, in my cluster. So here it is, we wait in a minute, it will run. And in two minutes, we will have the data live demo. Okay, so what I'm seeing here is, for example, I see here that the resource kind service account and the name is replica set controller of the system name space has failed misconfigured of data destruction. And what I see here is exact path of its failure. Okay, that's the basically the path of the ammo they related object rules, resources, etc, etc. So I see here all of that there are many, many controls in my mini cube that failed and again in by the end I can see the, the summary of all the resources that failed and where the risk, which risks are standing so I'm like, in good shape. So that's a misconfiguration check in my class I ran it inside my class and my mini cube. So if we'll go back, we talked about the vulnerability in cluster scanner and they are also tools that are doing that such as Claire and for trivia and the misconfiguration also the tree and cake kit and of course a cube bench by Aqua. So, there are tools that are doing that. So, I recommend of using that I showed you keep keep one of course you can choose. So, from deployment we're shifting left to the container registry. And what can I do in container registry I can basically just scan this registry as I told you before, we have the docker have the harbor the CR, etc, etc. And what I want to do here is to scan this registry before I'm taking this image into the deployment into my class and see whether this image after I build it right after it's after I have this image with all these dependencies is not vulnerable. I don't have the any CV is or minority of CV is so that's in the artifact section the registry one. Again, there are some tools that are doing that. I'm trying to put here some tools that are only open source one. So we can use it. And now let's move on to the CI CD server. Here I'm mentioning the GitHub actions and the Jenkins the process is well known. Okay, we're getting the, the, the code we're fetching the code from the repo we're building it, eventually making some tests and then putting the image in the container registry. So, what we have here, we have the GitHub action and the Jenkins job. So, focus on the GitHub actions here. We made it also with CubeScape also Jenkins flagging. Okay, we made a workflow for adding workflow and to, to the GitHub actions workflows that I'm running. So I'm setting up the job. I'm pulling the GCHR checking out installing CubeScape I'm standing the file and then I'm publishing and getting the results by the end. Okay, so that's for the, for the GitHub actions of you. Also for Jenkins. Okay, it's just an example for for that flow. And now we're really in the shifting left side, right. Now we will focus in code. So as I said before we have two branches, right, we have the applicative branch, and we have the infrastructure code branch. So in the applicative one. So let's say I'm using the visual studio code, and I'm writing in goal line so it needs to find some way to scan my code and see that there are no any vulnerabilities inside. So if I'm talking about the infrastructure is code then I have my yaml's. For example on my ham charts, and I want to scan that and understand that there isn't any issues in my in my call any misconfiguration. So there are two ways of looking at it. We can look at that at the source code security plugins that I'm embedding in the ID. I'm going to get repo scanner. Okay, when I'm firing my, when I'm going to PR my code, then I want to check that I don't have any, any issues in this repo before we're going to merge it and going into the whole pack. So one step before. So in the secure source code security plugins, I want to show you Chiefscape plugin, which basically it's a YAML file of some kind of our application. And what we're seeing here is I install the plugin Chiefscape plugin and what I see is on the fly by saving this file. And you can see if I have misconfiguration in the file. I can see here which, which control is it. It's the NSA test. And the reason that it's marked it is that there are no CPU and memory limits defined the container. And that tells me exactly what should I do. Okay, what's what basically the description and what should I do with that and if I'm catching it that early stage, then it's not inside my repo. So I'm catching it in a very, very basic early stage. It takes nothing to change it. In this stage, I want to catch it. Okay, the infrastructure. When I'm talking about infrastructure is called that the stage I want to, I want to do that and, and for get reference scanners, I want to scan the code. Right. So I want to scan that my goal language. If I'm scanning the applicative code, I want to scan it. What I wrote in Go is okay, no CV is in that. And the other hand, if I want to scan the repo, okay, of my IAC, then I want to put my repo in GitHub like Chiefscape scan, Chiefscape repo or helm repo and then scan that and get the results. So those are two steps that are pretty much aligned. I'm calling that as the source code, both of them because we're at the early stage and that's the stage that is for your, for your the commit and the push and that's the stage where it's a lot healthier to have our security checks. And here it won't cost us much. So, there's just another one that we missed, which is the permit is exported. So, when I want to monitor my application. Okay. There are many, many, many exporter available for the cluster inside and basically they are, we provide here the security exporter that checks the cluster in after basically the deploy phase right we're always checking if I still have the same resources the risk is still low or it's got higher and then I can see some kind of a drift in the Grafana view and see maybe where I'm getting higher and when I'm getting lower okay according to the resources applied in my cluster. So, we're getting into the end and I want to summarize that and show you that in each and every step of the way we can have security gates and the security gate stands in all of those stages. So, really check different things. Why do I need all those security gates because I'm not alone in the world, right, like if I'm pushing a code, or I'm writing my code, I, and my friend is writing and we're emerging to the same branch and I'm not sure he, you know he plugins of the visual studio code and so and so his code can be, you know, vulnerable. So, I want to check it in that stage okay I want to check the repo after I pushed it. I want to check it in the test because they have some more third party that are combined inside after I'm building I'm building with some third parties that are not part of my code. And then I want to stand and in the container registry to see if the image as a whole is secure and it's not vulnerable. Of course as much as we can. At the end, I still want to know in each and every time what's the status of my cluster. So, is it secure isn't.  So, the gate there is still a persist and we need to check it every time and for me to use exporter helps us with that, because we can just rerun it all the time that mitches exporter runs all the time and says okay those are the metrics this is the trend of your risk in your cluster. So, I hope I didn't scared you. I hope I gave you the tools for putting your security gates in your CI CD pipeline again we're talking here all about open source tools so use that just put it one and then you'll be safe, you know, you can go to sleep very carefully without thinking anymore security. So, thanks a lot for having me here. You can just contact me each and every one of those medias, Twitter, this board, GitHub. You can scan the QR code and just reach right out to me. Thank you very much. And I hope you enjoyed this session.


All right, so Shlomo, we continue with the third lecture today. OK, so let me remind you where we ended the hour and a half ago. So we are discussing the reduction of E-string theory from six dimensions to four dimensions. And the thing that we mentioned about E-string is that it is some 6-D SCFT that has an E8 symmetry. The 6-D symmetry is E8. And we mentioned that upon compactification to 5D, this theory has a description, an effective description, as an SU2 theory plus 8 hypermultiplets. And from this, we did use that we might have punctures in this theory when we compactify the E-string theory on a Riemann surface with the punctures. The punctures will carry a symmetry, which is the 5D gauge symmetry, which is frozen on this boundary, which will be SU2. So the way we did in our general discussion when we discussed punctures, we said that this flavor symmetry arises because we freeze, we put boundary conditions, Dirichlet boundary conditions on the boundary for the gauge fields of the 5D gauge theory. And we need to specify some boundary conditions for other fields. So again, there are some variety of boundary conditions that one can consider. And there is a useful boundary condition here where you do this Dirichlet boundary condition for the vector fields. And you also do Dirichlet for eight chirals. So you can think of the eight hypermultiplets in the four-dimensional n-equal-1 languages being eight, like every hyper is built from two chirals, like Leonardo was discussing. And then we put Neumann boundary condition for other octet of chirals. So all in all, we have 16 chiral fields. And we put Dirichlet boundary condition for eight of them and Neumann boundary condition for others. And then you need to do something for the fermions. So the claim is that there is such a boundary condition which preserves supersymmetry. Now, what is interesting about these boundary conditions when you put some of these boundary conditions, they break some of the symmetry of the 5D theory explicitly. So as we discussed, the 6D symmetry is E8. Once we turn on certain holonomy which breaks E8 to SO14 times C1, we expect to get an SO14 times C1 symmetry in five dimensions. In this case, we get actually a symmetry which is SO16 times C1, which comes from the instantons. And these types of boundary conditions break this SO16 farther to SU8 times C1. So there are various ways we can break different symmetries in these compactifications. One of them is the choice of flux that we will in a moment discuss. When we go to five dimensions, there are these holonomies that can break symmetries. And also, the boundary conditions that the punctures can break symmetry. So in presence of these type of punctures, which we'll call maximal, the expected symmetry of the four-dimensional theory, once we continue compactifying this theory down to four dimensions, is expected to be at most SU8 times C1 symmetry. So next, what we will do is discuss, go back to six dimensions, and discuss what type of fluxes can we turn on for the global symmetry, for the E8 global symmetry that we have in six dimensions. Yes. So this will be making this. So you basically frozen the field. So the field is frozen on the boundary. Now you need to make it dynamical. So you need to integrate over it in the past integral. So that's what you do. So you can introduce. There is some freedom in defining these punctures. There is a rich story there. You can do it in a various way. For example, you can choose in some sense what modes live on the boundary. There is some choice of what you can do. What happens is that when you glue two punctures together, these modes, whatever you introduced on a puncture, should be such that once you identify the gauge fields of the two theories, these edge modes should disappear. For example, if you introduce some fields, some chiral fields that live on this boundary, they should become massive when you glue things together. Maybe when we will discuss a very concrete example of what kind of theory you will get in four dimensions. What is the theory on the domain wall? And on this cylinder, you will see how it comes about. But ask me again if that answer will not be good enough. So now we will do some group theory exercise. So we need to understand. We have a 6D theory. We put it on a Riemann surface. And we want to turn on some flux on this Riemann surface. So what are the allowed choices of fluxes? So this turns out to be a very rich question to ask. As we discussed yesterday, different choices of fluxes might lead to different theories. So what are the different choices of fluxes here? So let me give first an example of a simpler group than the eight. I don't think many people have intuition about the eight. I certainly don't have an intuition about the eight. But we have intuition about smaller groups. So for example, let's say the symmetry was SU4, something simpler that we can understand. And then you can ask, say you want to choose some U1 inside this SU4 and turn on the flux for this U1. What type of inequivalent choices you can have? And even for this simple group, you have some inequivalent choices. For example, you can choose a U1 in such a way that SU4 breaks into SU3 times U1. This is one choice that you can make. In this choice, for example, a fundamental of SU4 will be a fundamental of SU3 with some charge under this U1 and then a singlet with some other charge under this U1. There are other choices, however, that you can entertain. For example, you can take an SU4 and break it to SU2 times SU2 times U1. This is another thing you can do. It is inequivalent breaking. The groups after you choose this U1 are different. And in this choice, you take a four and then you break it to something like a singlet of one SU2, a doublet of another. And this will have charge plus 1. And then you will have 2, 1, charge minus 1. So it's a different breaking. So if you turn on flux in this U1 or in this U1, the symmetry that will be preserved by the choice of flux will be different. Here, the symmetry will be SU3 times U1. Here, it will be SU2 times SU2 times U1. This would be the expected symmetry of the four-dimensional theory. And it is different. And again, there are other things which can break the symmetry. For example, choices of punctures. But just the flux can give you a very rich variety of behaviors. And there is a neat way to understand these different patterns of breaking of symmetry using Dinkin diagram. So let me draw it here. For example, the Dinkin diagram of SU4 is something like that. And then a choice of U1 inside SU4 and is given by choosing a node in this Dinkin diagram. So for example, this corresponds to choosing the last node or the first node. And then this is the Dinkin diagram of SU3. That is what remains after you choose the U1. Or you can do the node in the center. And then the commutant group will be two SU2s in this U1. So let us now do this analysis of possible fluxes that you can have for the E8 group. And the E8 group is much richer group than SU4. And you have a very wide variety of fluxes that you can turn on. So what is the Dinkin diagram of E8? This is this monstrosity. Again, some people might not call it a monstrosity. And then we can classify all the possible in equivalent choices of U1's embedded in E8. And they would correspond to choosing a node on this Dinkin diagram. For example, choosing the first node, we will have a flux which breaks the 8 to E7 times U1. The E7 is what we are left with. And then we can continue. Choosing this node, we will get E6 times SU2 times U1. Then choosing the next node, we will get an SO10 times SU3 times U1. And we can continue. There are many choices. There are basically eight choices. So we will discuss in detail these two choices as well as another one where we will get an SO14 times U1. And this corresponds, the SO14 times U1 corresponds to choosing this node in the Dinkin diagram. So there is a very wide varieties of groups that you can break to. And these groups are expected to be the symmetry groups of the four-dimensional theory. So we start with a single theory in six dimensions, which has an E8 symmetry. And then upon choosing fluxes in different subgroups of this E8, different embeddings of U1 inside this E8, we can get different groups in four dimensions. And then, of course, on top of this, we can start turning fluxes in more than one U1. And we can start breaking the symmetries which are listed here to further to much richer set of symmetries. And in the end, we can get a lot of different theories with different symmetry properties in four dimensions. Is this clear? OK. Now, there was a question. So now what we can do, as I also mentioned to you in the end of last lecture, don't know just the symmetry of this theory. We also know that Hooft anomalies, which can be packaged in the eight-form anomaly polynomial. So now by turning on the flux and compactifying on the Riemann surface, we also can predict what will be the anomalies, the Hooft anomalies of the 4D theory. And the computation is very simple. To compute the 4D anomaly polynomial, which is some six-form. So it's the anomaly polynomial in 4D. The only thing that you need to do is to take your 6D anomaly polynomial and date for an anomaly polynomial in 6D and integrate it over the Riemann surface in presence of the flux that you have turned on. So remember that I've written down this anomaly polynomial in terms of some characteristic So you need to turn on this background gauge fields that are supported on this Riemann surface and integrate over the choice of your Riemann surface. So in this talk and also tomorrow, we will only consider the Riemann surface, which will be a torus. But this procedure is completely generic. And the computation is rather straightforward. You need to be well versed in all these types of group theories and manipulating characteristic classes. But it's basically something you can just feed to Mathematica or find a graduate student who can feed it to Mathematica. And forget about it once and for all. It's rather simple computation. And let me just outline two couple of important ingredients which go into it. And in particular, how these choices of flux, different embeddings of the U1s inside the 8, enter in this type of computation. So there are various characteristic classes which appear there. For example, there appear this C2 of E8 inside this anomaly polynomial that I have written down. And the moment you have broken the symmetry, you have explicitly turned on some flux for some U1. In this E8, you need to specify how these characteristic class breaks into characteristic classes of groups which remain after the breaking. For example, E6 times SU2 times U1 and so on. So this is a group theory exercise that you can do. And you can find that this is given by the following. So there is some, for every choice of U1, so A levels the choice of U1. So here we have these choices of U1s. You will get the following group theoretical result that you get some characteristic class of this U1 multiplied by some number given by the choice of that U1, which I will soon write. And then you sum over the groups which appear in the commutant of this U1. These are the GJs, different factors here, except for these factors, all of the factors will appear in this decomposition. And what I need to specify to you is what are these values of psi A for different choices of the groups? So this psi A is equal to one, for example, when the commutant is equal to a seven, it's equal to two when the commutant is equal to a six times SU2. And I don't remember the others by heart. So in case of SO10 you get a six. And in case of SO14 you get, sorry, here you get a three, here you get a two. So it's some group theory computation that you need to perform. After doing this, you just declare that you turn on some flux for the U1 that you have chosen. And to do so, you find some form, some two form, which some canonical form, which is supported on this Riemann surface. And you demand that it integrates to one with proper normalization. And you define that this characteristic class for the U1 that you have chosen, this U1A, is just given by your choice of flux, which is the number now times this two form, plus the following thing, plus C1 of U1F, whereby U1F, I call the symmetry, this U1 symmetry, which remains in four dimension. So you have this U1 symmetry to which you turn on the flux. And these flux, they can have support on this two dimensional Riemann surface. This is given here. But also you can turn on background gauge fields, which are supporting in four dimensions. And this part, which is supporting in four dimensions, I call it like that. So once you have done that, and you know how to decompose different characteristic classes which appear in the anomaly polynomial, again, you'll find a graduate student or your friend in your case and ask them to feed it into Mathematica. They feed it into Mathematica and compute this integral, and which speeds out the anomaly polynomial of the four dimensional theories. So now what you know is what are the symmetries of the theories you obtain in these compactifications, and what are the anomalies? What are the two anomalies? So this is a rather, it's rather technical and often subtle group theoretically computation to perform, but it's completely straightforward. Okay, so once you have obtained the anomaly polynomial in four dimensions, you have gotten all of the two anomalies. You can ask interesting questions. For example, you can ask what are these conformal anomalies, A and C, that Leonardo has mentioned in the previous hour of these four dimensional theories that you obtain. So how would you compute this conformal anomalies? So you started in six dimensions from some theory which had this global symmetry, but it also was a supersymmetric theory, so it had some r-symmetry. And then you go down to four dimensions, you get a theory which has an n equal one r-symmetry in four dimensions, n equal one supersymmetry in four dimensions, which has an r-symmetry. And this six dimensional r-symmetry reduces to the r-symmetry in four dimensions, but because you have the one, the global symmetry has been broken from this non-Abelian group E8 down to some non-Abelian factors and a U1, this U1 to which you gave a flux to can now mix with the r-symmetry, the six dimensional r-symmetry, which you get the r-symmetry in four dimensions, which you get directly from the r-symmetry in six dimensions. And as also appeared in Leonardo's lectures, the r-symmetry is very important. It appears, it is part of the super conformal algebra. So there is a question of what is exactly the r-symmetry which appears in the super conformal algebra. And that r-symmetry will be some mixing of this 6D U1 r-symmetry, let me call it 6D U1 r, plus some coefficient, some parameter times the symmetry, the U1 symmetry that you get in this compactification. And you need to fix this epsilon. There was a question, yes. Fluxes, so the flux that we are talking about which parameterize the compactification is a flux supported on the Riemann surface. Then you can turn on anything you want. You can consider the four dimensional manifold to be whatever you want and you can put whatever classical gauge configurations that you want on that four dimensional space. You don't compactify it. So you just keep it generic. And then your anomaly polynomial in 4D will be a function of those fluxes. The fluxes that you turned on the Riemann surface will parameterize different choices of theories. Those fluxes are just parameterizing different. There are some parameters in the anomaly polynomial and from expanding this anomaly polynomial, in these characteristic classes, you can rid off the different poofed anomalies in the standard. So now the question is how you fix this epsilon. And this epsilon is famously fixed by what is called a maximization procedure. So let me just remind you what it is. So the a maximization of interleagator and weft, what you do, you write, you use a very neat relation between this anomalies A and C and super conformal asymmetries. So again, as Leonardo was mentioning in the previous talk, all these quantities, all these different charges talk to each other, different concert currents live in the same multiplets and these anomalies appear in some correlation functions of stress energy tensor. So there are some neat relations between these anomalies and R symmetries. For example, the A anomaly satisfies the following relation. It is given simply by three over 32 times thrice the cubic anomaly of the R symmetry minus trace of R, the linear anomaly in R and the C is given by one over 32 times nine trace R cubed minus five trace R. And so what you do, what interleagator and weft tell us to do, so this holds only for the super conformal R symmetry. So what you do, you choose to parameterize your R symmetry by your naive guess, which is here naturally given by the 6D R symmetry and you add mixed to it arbitrarily, this U1F that you get, you get some expression for this A anomaly which depends on this parameter epsilon and you maximize it. And your super conformal R symmetry assignment is whatever you get by this maximization. There are several assumptions in this procedure. For example, this procedure only works if you identified all your symmetries correctly. So if you know all that you want symmetries, then you can do this procedure. As we are discussing emergence of symmetries and phenomena like that, it can be that we have some symmetries which existence of which we expect from this compactification procedure, but once we go to four dimensions, some accidental U1 symmetries appear. And then this procedure of getting super conformal A and Cs by using the same maximization will be wrong because we need to add mix here all the possible U1s. Nevertheless, in the case that I'm discussing, there is no actually interesting U1s that appear and you can do this computation. So I will just give you the final result.  And in this particular case where you take an E string on a torus with flux to a single U1, the answer is very simple. For example, the A anomaly is given by twice square root of psi times the value of flux, absolute value of flux. And the C anomaly is five halves square root of psi times the value of flux. Very simple result. Maybe I should stress that you, because of this issue that you might worry about accidental, you want that it will appear, you don't have to compute this anomaly. You simply can look for theories in four dimensions which will reproduce the full anomaly polynomial, the four dimensional anomaly polynomial. But these numbers are very easy to remember and very easy to compare. So the next thing we will need to do is to try to find four dimensional theories which have these anomalies and more generally the anomaly polynomial, exactly the same anomaly polynomial that we will deduce from six dimensions and the same symmetries that we would deduce from six dimensions, okay? So these are predictions from six dimensions that we can have, very, very simple predictions following just by knowing the symmetry and the anomaly polynomial of the six dimensional theory.  So the group theory exercise I want to tell you about is a nice parametrization of fluxes for more general choices. So say you have many, you choose many you want inside DC-8 and you turn on arbitrary fluxes for them. So what is the nice choice of you wants that nice basis of you wants in terms of which you can work, in terms of which you can specify the fluxes. There are many different choices. So this is a rank eight group. You can choose many combination of the eight you wants which appear in the carton of DC-8. There is one particularly nice parametrization and it uses the fact that E-8 has a maximal subgroup, maximal subgroup which is SO-16. And although we don't, most of us don't have nice intuition about E-8, most of us do have intuition about SO-16. This is a very simple group. It is also a rank eight group. This is a maximal subgroup of E-8. So we can parametrize the different choices of fluxes as fluxes for the carton generators of these SO-16s. In particular, for example, a flux in our normalization, a flux which will be of the four, four, zero, zero, zero, there will be seven zeros here. Okay, this will be a vector of fluxes for the eight different carton generators of this SO-16. This flux breaks SO-16 symmetry to SO-14 times U1, okay? And this is easy to understand.  There are other equivalent choices different but equivalent choices of fluxes. For example, you can use while symmetry of SO-16 to turn on flux which is of the four, zero, four, zero, so on. This is also breaking the E8 symmetry down to SO-14 times U1. This is rather simple to understand. What is less simple to understand is that you can use while symmetry, while of E8, okay? To generate these types of permutations, we use while symmetry of SO-16 which we intuitively understand to get equivalent values of fluxes but using the while symmetry of E8 which is rather less intuitive, one can show that also such choices of fluxes corresponds to breaking the symmetry down to SO-14 times U1, okay? And this, I don't know how to explain intuitively, maybe somebody else can, okay? And let me mention what in this basis what are the fluxes which correspond to breaking the symmetry to other groups that we will later use in four dimensions. So for example, if you want to break the symmetry to U1 times C7, this is a simple flux which has the form one, one, just all eight values being one. Then we can, there is an equivalent choice of flux again by using the while symmetry of E8 which will give two non-zero values and then rest being zeros. And for E6 times SU2, you get the vector of flux which will be one, one, six, once and two zeros. And you can generate other choices by playing these while symmetry games but we will not use it later on. And finally in terms of these choices of fluxes, so let me call these eight numbers to call them to be FI, then turning on the general value for these fluxes, the A and C anomaly take the very simple form. So A is equal twice times square root of two sum of I equals one till eight FI over FI squared, FI over four squared, okay? And C is equal to five halves sum over two, sum of I from one to eight, FI over four squared. So these are all the predictions we will use from six dimensions to try to find four dimensional theories. Okay, so now we will move to deriving these four dimensional theories. So any questions about that? So the next step in our program after we understood what the fluxes we can turn on and made some generic predictions about what type of numbers we can get in four dimensions, what type of symmetries and what type of anomalies, the next step would be to go to five dimensions and to understand the domain walls which correspond to these different values of flux. Okay, so I remind you we are going to five dimensions and we're engineering the flux in five dimensions as some kind of a domain wall which interpolates between two different theories on the left and on the right, two different holonomies and two different, different, and these two different holonomies, like the exact relation between the olonomy on the left and the olonomy on the right should give us some very particular value of flux. So figuring out this problem, given the flux, what is the domain wall? It's very, very hard problem to do. I don't know how to do it algorithmically. For example, you would think that taking 2.0 theory and which has more supersymmetry and trying to understand these domain walls for 2.0 will be a simple problem, but it's actually a hard problem except for the A1 2.0 theory, I don't know what these domain wall theories are. So in general, these domain wall theories can be complicated. So the way to go is usually you go about things when you do physics and encounter complicated problems. You make an educated guess. You make an educated guess and then you check it in all the possible ways. So we are going to make this educated guess and I will tell you what are types of checks that one can perform. So the claim is that if you take a flux to be the E7 flux and in the normalization I used there, the flux is such that all these entries are a half, then what you get on the domain wall with particular choice of punctures is a very simple theory. So the theory looks like that. On the domain wall, you have just a collection of free fields which I will denote like that. So on the left, we have an SU2 gauge symmetry and we have an SU2 gauge symmetry on the right. So let's call it A and B. So on the domain wall leaves a simple theory which is a theory of free chiral fields. It's a four dimensional theory. We have bifoundamental fields that I will denote by Q. So these are the bifoundamental fields and another field that I will denote by X and it will see the quiver notation, the graphic notation will be just crossing the corresponding line. This X is a chiral field which is a singlet under both of these SU2 symmetries and there is a super potential coupling them. So these are bifoundamental fields of two SU2s. So we have a super potential which is of the form epsilon ij, epsilon ab, qia, qjb times X, okay? Where i and a, the two indices are indices under this SU2 and this SU2, okay? These are just free fields that you get. So the claim is that this is the theory on the domain wall. It's an extremely simple theory and this theory couples to the theory on the left, to the gauge fields on the left. This is the symmetry which is gauge on the left and this is the symmetry of which is gauged on the right and it couples also to the matter that we have on the left and on the right. Remember that on the left and on the right we have these hyper-multiplots and the claim is that the theory you obtain by taking this system of this domain wall theory coupled to the matter fields on the left and on the right is this Vesumino model. So you add an octet of fields. These are the eight chiral fields to which we gave Neumann boundary conditions when we defined the puncture on the left and octet of fields which got Neumann boundary condition on the right and once you are down to four dimensions the theory that you get is this extremely simple Vesumino model. So let's call this field phi left and this phi right. So there is an additional term in the super potential which is phi left, phi right times this field Q, this bifundamental field Q. So as usual, if you have a quiver theory you can read off a super potential term from it by going over the phase over of the quiver. And I need to specify to you different charges of the fields. So for example, the R charges of these fields are one, these are the six dimensional charges. R charges you did use from six dimensions and Q has R charges zero and X has R charges two. And there is an additional U1 that you have here and under that U1, this is charged plus one, this is charged plus one, Q is charged minus two and X is charged four, okay? And the symmetry that you see this theory has there is another U1 which is accidental but this U1 and this SU8 are the important symmetries and these are exactly the symmetries we expect a tube like that to have. Remember that the boundary conditions have broken the symmetry down to SU8 times U1. So this is the SU8 and the yellow charges here denote charge assignments under the U1 symmetry. So this is a conjecture. This is an educated guess. Why is it an educated guess? What went into guessing this thing? What went into guessing this thing was comparing anomalies of these theories to this theory and theories that one can build from it as we will discuss now to the anomalies predicted from six dimensions and making a very wide varieties of checks that I will discuss today and tomorrow, okay? So we are finally in four dimensions. We have a conjecture for a theory which corresponds to compactifications on a very, very simple surface with very particular value of flux and now we need to check whether the theories would build from this very simple theory. For example, gluing these theories together to form a torus with arbitrary values of flux and we will see how one can build arbitrary theories with arbitrary values of flux from this very simple building block whether they reproduce the anomalies that are predicted from six dimensions and symmetry properties that are predicted in six dimensions. So these are the anomalies we need to reproduce and then there are these really funny symmetries that we need to get. Sometimes the symmetry we would expect will be SO 14. Sometimes the symmetry we expect will be seven depending on the value of the total flux when we combine these pieces together. So is seven is six times SU two times U one. There will be many different things. The building block has very simple symmetry SU A times U one and if what we are saying is correct the theories that we will build have to have this enhanced symmetry which is a highly non-trivial check of the proposal and this is exactly how we discussed yesterday. This emergence of symmetry could be predicted and engineered in these types of constructions. Any questions? Okay, so to build theories from this building block I need to tell you how I glue these theories together. How I combine them together. So geometrically as we discussed what we say we understand one building block with some flux F and another building block with another flux F prime. Geometrically what we need to do is just glue these two tubes together. And I indicated that what you need to do when you glue these things together in field theory is to gauge the symmetry which corresponds to the puncture. Identify symmetries of two tubes and gauge them together. And reintroduce whatever fields you gave Dirichlet boundary conditions to. So let us do it for this tube. So let us take two tubes, SU2 and SU2, and then we have an SU8 here. So this is one tube like that with that value of flux and we'll put next to it another tube, the same type of tube, okay? And we ask ourselves how should we glue these things together? Okay, so the symmetry which corresponds to the puncture is this SU2, this is the symmetry corresponding to this puncture, this is SU2 corresponding to this puncture, this SU2 corresponds to the puncture on the left and this SU2 corresponds to the puncture on the right here. So what we are instructed to do is to take these flavor SU2 symmetries and make them dynamical, take the diagonal combination of these SU2 and gauge them, okay? So we identify these two SU2s and we gauge them. Another thing we need to do, we need to reintroduce the chiral fields to which we gave Dirichlet boundary conditions to. Remember that we gave Neumann boundary conditions to one octet and Dirichlet boundary conditions to the other octet in the hypermultiplet. So we need to reintroduce another octet of fields, of fundamental fields when we are doing this gauging. However, here since we have Dirichlet fields which had Neumann boundary conditions on the left and on the right, we have two copies of them but originally we had only one copy. We need to get rid of one of the two copies and that we do by turning on some super potential. So let's call for this bifundamental of this SU2 times SU8 a field phi. So the super potential that we turn which identifies between this field to this field is a term of the form w equals phi times this phi right one times phi left two. So this is phi right one and this is phi, sorry, not like that, phi left two. So this is the super potential plus not times. And then by chiral ring relations, by equations of this phi, we set to zero one combinations of these two fields phi and only one remains, okay? And by explicitly writing this gauge theory that you obtained, you get that this theory is equal just to two. Then this one of the SU2 in the middle became a dynamical SU2. Then you have an SU2 here and then the quiver looks like that, okay? So something like that, okay? And with an x here, okay? So this is the theory you will obtain by gluing together two tubes. You started with two tubes which have this flux. So this theory that we obtained by gluing two theories together, two tubes together should have flux which is equal to sum of fluxes. So this tube should have flux which is one and like all the entries are one, okay? And again what we need to do is check whether these statements, the statement that this theory should correspond to a tube with this value of flux meets all the requirements of symmetry enhancement and whether it reproduces the anomalies, okay? I did not tell you how to compute anomalies of theories with punctures. So what is the prediction for anomalies of theories of punctures? I only told you what are the predictions for theory theories which correspond to compactifications on the torus. So to compare to these types of results, I need to take many such tubes and glue them together to form a torus, okay? So how will such a theory look like? It will have the following form taking two f tubes of this form and gluing them together to form a torus, you will obtain a quiver theory which looks like that. So you have many SU2 gauge groups, okay? You have such a circle of SU2 gauge groups and then you have bifundamental fields of this SUA times SU2 and the number of the gauge groups is two f where f is the value of flux for day seven. So if our predictions are correct, what this theory should have, it should have these types of anomalies where for f is, you put the right value of the flux and it should have symmetry which is any seventh symmetry. The explicit symmetry that you see in this quiver theory is again only SU8 times SU1. So this is the SU8 that they have written down and there is another nonanomalous SU1 that you can find moving around. Again, under that you want, these fields are charged plus one, all of them and these fields are charged minus two. Okay, so first thing we need to do is to compute the A and C anomalies of this theory. Now this is extremely simple thing to do. So what you need to find first is what is the choice of the super conformal r symmetry for this quiver. Now look on each gauge node. Each gauge node has 12 chiral, 12 fundamental chiral fields. The way it goes that you have two coming from here, two fundamentals coming from here and an octet of fundamentals coming from here. So all in all, you have 12 fundamental fields. So in terms of this classification of SUN theories with the numbers of flavors, so what we have is an SU2 theory with six flavors. The way you count the flavors, you have enough fundamentals and enough anti-fundamentals. Here there is no difference between fundamentals and anti-fundamentals. So you have six flavors, which means you have six, 12 fundamentals in total. You might know that this particular theory, the super conformal r symmetry that you can assign if you just look at this theory on a single node, then the anomaly free r symmetry which doesn't break any of the symmetry that this theory has is equal to two thirds. It's a free r symmetry. And if you look on a single node in this gauge theory, every single node is a free node. The one Lou Betta function vanishes and actually it is believed that every single node in isolation is an IR free theory. It's just a free theory. With the super conformal r symmetries being given by two thirds. However, when you combine these gauge groups together with these super potentials, you can show and I will not do it today, maybe I will do it tomorrow. This theory actually has a conformal manifold. It's not a free theory. Conformal manifold of the type that Leonardo has mentioned, which passes through zero coupling. So it's a theory which is basically conformal like n equals four theory is conformal. N equals four theory passes through zero coupling, but it has a conformal manifold. This theory also has such a conformal manifold. Now, using this assignment of charges r equals to two third, using the relation between A and C and super conformal r symmetry that I have mentioned, it is very easy to compute. And I encourage you to do that, that the A anomaly of this theory is simply given by twice the value of the flux, okay? And the value of the flux is given here, the number of gauge groups is twice the value of the flux. So that's how the flux enters into this liver description. And the value of the C anomaly is precisely five halves times f, okay? So exactly as was predicted from six dimensions that the theory with any seven flux should have, okay? So this is a very non-trivial check of this proposal, the first check that I discussed. So again, this was an educated guess. This is the first check of that educated guess. When we combine these theories together, we get the right anomalies for the flux that we claimed that this type of a tube should have. However, if we have any seven flux, the theory should have any seven symmetry, okay? It's seven times u1 symmetry. This theory has only su8 times u1 symmetry, okay? So what is happening here, okay? What you can do is you can study what are the gauge invariant, say, protected operators that you have in this theory, okay? This is a very nice set of operators that you can discuss. So the simplest operators are just gauge singlet fields that you can build from these fields, which I called phi. Basically take these fields phi, i, a, phi, i, b, and anti-symmetrize i and j indices here. These are the su2 indices. And then you need to anti-symmetrize the a and b indices which are the su8 indices. So these are some operators, gauge invariant operators that you can build from a single field here. These are the simplest gauge invariant operators that you can build. And one of these, you see this, there are two types of operators depending on the arrow. So there are fundamentals or anti-fundamentals. So one of them will give you something which is in 28 dimensional representation of this su8. The other one will give you 28 bar, okay? And then the number of such fields, such operators that you have, you have f operators of this type and f operators of this type because you have f lines of one type and f lines of the other type. So all in all what you have that the simplest say protected operators that you have, the number of, you can think of them as f copies of something which transforms in 28 plus 28 bar dimensional representation of su8. And if you think of e7 in terms of its su8 subgroup, 28 plus 28 bar is the decomposition of simplest representation of e7, which is called, which is a 56 dimensional representation. And if you look now on any protected operators that this theory has, you will always find that these operators sit in these seven representations, okay? So what this hints is that maybe you don't see the e7 symmetry appearing for this theory at weak coupling at the origin of this model of this conformal manifold, but it is, one can entertain the possibility that somewhere on this conformal manifold maybe in some strongly coupled regime, the e7 symmetry appears, it enhances, okay? So this is how the e7 symmetry appears here and this is how the anomalies are consistent with the 6D prediction, okay? Any questions? Yes, say it again. So we can divide it into arbitrary number of parts. So the building block that I have defined is a building block for a flux, which is given by this vector of fluxes, half, half and half, all of the entries, halfs. So if we want a flux which is F, we need to take two F such blocks and glue them together. So if you wish, we started from a torus which has two F, a flux two F and we divided, sorry, flux F and we divided it into two F pieces. And you could divide it just into two pieces, but then I didn't tell you what the theory corresponding to those pieces would be and then you would need to continue dividing until you get the building block that you know what it is, okay? So this is a very simple example of a theory which we believe has a symmetry enhancement. It is kind of not very impressive in the sense that you don't really see the e7 symmetry. You only see an SUA symmetry. You can make various claims about plausibility of e7 symmetry appearing on the conformal manifold of this theory. Tomorrow we will see much more impressive appearance of enhanced symmetry where literally the theory that we will see will have, it will not be a conformal theory like that. It will be a theory which flows to something and in the UV you will have small symmetry and in the IR you will have a much bigger symmetry and the conformal manifold in the IR will be just a point. There won't be a conformal manifold. So there will be no choice but for symmetry to be enhanced relative to what you see in the UV. Okay, but before we get to that example we can do a huge variety of other checks. From this particular theory we can now start constructing theories which would correspond to any value of these fluxes. In particular we will need to reproduce the anomalies and again symmetry enhancements. Yes, yes. They don't run. This is a conformal theory. That's right. It's like n equals four or n equal two Lagrangians that Leonardo have mentioned. It doesn't run. It is a conformal theory by itself. And you don't see the symmetry property in that particular point of the conformal manifold but somewhere on the conformal manifold it might appear. I think in this case is eight if I remember correctly. It's not a small conformal manifold. So the dimension of conformal manifold as I mentioned I think yesterday can also be predicted from this type of considerations. It's a very rough prediction. And in this particular case again if I remember correctly the expectation is actually nine that like this rough prediction would predict that the dimension of conformal manifold is nine. The eight of these nine correspond to holonomies for this cartons of E8 that you can turn on. You compactify on a torus. So you can turn on holonomies for this cartons of this E8. So these are eight parameters which will parameterize an eight dimensional subspace. And an additional one you expect is the complex structure moduli on eight grounds and that actually seems to be missing in this description. And I, yes. No, it's, I mean, can I tell you like there are many exactly marginal differences. There are many super potential terms. There are gauge coupling. So you need to do the counting properly. It's not hard. Just, you know, these are free R charges.  Yes, it's probably a point because again in this holonomy picture, what the way you should think about it is that say you compactify with this value of flux but you don't turn on any holonomies. Then you should get any seven theory. The moment you turn on holonomies, you are moving on the conformal manifold but you're explicitly breaking this seven symmetry. So you expect a point but nobody guaranteed that this point will be at weak coupling. It might be a strong coupling. So it's not, it's not a proof. I don't have a proof that this theory has any seven symmetry but it is consistent with it being there somewhere on the conformal manifold. And again, if we will engineer an example of such a construction where the conformal manifold is a point, the symmetry better be there. Otherwise there is something inconsistent and we will see such an example later. Okay, so let me now consider building more generic theories. How much time do I have? How much? Three minutes. Three minutes. So let me just give you the rules of the game and we will build things later on tomorrow. So one thing I told you is what is the theory corresponding to this value of flux, to a positive value of flux. So to build other values of flux, this is a vector. If we just add it to itself, we will only get products of this vector. So we need to do something more sophisticated. So the first thing and maybe the only that I will manage to do in these three minutes is tell you what is the theory corresponding to all entries being a minus a half. This is just a choice of flux which has opposite sign. So in terms of the seven flux, this thing has a flux which is minus a half. That theory has flux half. This one has minus a half. Nothing is holy about the sign of the flux. Nothing is interesting about the sign of the flux. So the theory should be just the same theory. It's just what we call plus and what we call minus. So the difference will be a little bit subtle. So let me rewrite the theory which we associate to positive value of the flux here. So this is the theory which we associate say to the positive value of the flux. The theory that we will associate to the negative value of the flux will be exactly the same theory but complex conjugated, okay? So in particular, I will switch all the arrows. I didn't do that. So I will switch all the arrows in this quiver. And in particular, there was this U1 symmetry for which we assign charges plus one to these guys and minus two to these guys. Here the assignment of charges will be opposite. Again, if you look on a single theory like that, this is just a choice. It's meaningless, okay? This choice, whether to call this charge plus one or a minus one is just a choice. Whether to call this fundamental or anti-fundamental, it's just a choice. But the moment we will start combining these theories together, this will play a role, okay? So this is a theory with flux plus a half. This is a theory with flux minus a half. But now when I have two theories like that with opposite orientation of these lines, I need to modify how I glue these theories together. I changed basically the definition of the puncture. The types of fields which I gave Neumann boundary condition to are now different. Before I glue punctures of the same type, I gave the Neumann boundary condition to the same octets of fields. So I needed to reintroduce the other octets of fields and then remove some linear combinations of the two that I had before. Here, I already have the fields I need. There is a Neumann field which got Neumann boundary condition from here. Field which got Neumann boundary condition from here. So just this matter content will give me the matter content I want in five dimensions. So let me call this phi, this field phi R1 and this field phi left two, okay? So now these fields have exactly opposite charges under this U1 symmetry. And these are the fields that I want to get in five dimensions. So what I do now, if I want to combine these theories together, I just gauge this SU2 symmetry and I turn on a super potential which is just phi right one times phi left two. I don't introduce any field. This field, the motivation of introducing this field was to reintroduce the matter content of the five-dimensional theory. If I glue two such punctures together, the matter content is already there. I don't need to reintroduce anything. And again, people who know the class S business, how things are working in class S, these two types of combining together things should strike a familiar note, okay? And this is related to the question you were asking before, how you're gluing things together, so you need to be careful. You need to glue things in such a way that the matter content will be the five-dimensional matter content in the end. Okay, so with this I will stop today and what we will do tomorrow, we will use these two ways of combining the basic building blocks to engineer theories which have arbitrary fluxes, okay? Correspond to compactifications of arbitrary fluxes and we will see how other symmetry types of symmetries like SO 14 and E6 times SU2 appear in this business. Thank you.